From 7884c5e3f0c26d056be5a18c07363e852b94a307 Mon Sep 17 00:00:00 2001 From: Andrea Bianco <andrea.bianco@xcally.com> Date: Fri, 20 Oct 2017 16:08:10 +0200 Subject: [PATCH] Built motion from commit 16fa73b36.|1.0.29 --- package.json | 4 +- public/app/60ca30a4.app.js | 93 ++++++++++++++++++++ public/app/b7d73a56.app.js | 93 -------------------- public/assets/plugins/jscripty/js/Actions.js | 2 +- public/assets/plugins/jscripty/js/Dialogs.js | 2 +- public/assets/plugins/jscripty/js/Editor.js | 2 +- public/assets/plugins/jscripty/js/EditorUi.js | 2 +- public/assets/plugins/jscripty/js/Graph.js | 2 +- public/assets/plugins/jscripty/js/Menus.js | 2 +- public/assets/plugins/jscripty/js/Shapes.js | 2 +- public/assets/plugins/jscripty/js/Sidebar.js | 2 +- public/assets/plugins/jscripty/js/Toolbar.js | 2 +- public/assets/plugins/jscripty/js/custom.js | 2 +- public/assets/plugins/mxgraph/js/mxClient.js | 2 +- public/assets/plugins/square/js/Actions.js | 2 +- public/assets/plugins/square/js/Dialogs.js | 2 +- public/assets/plugins/square/js/Editor.js | 2 +- public/assets/plugins/square/js/EditorUi.js | 2 +- public/assets/plugins/square/js/Graph.js | 2 +- public/assets/plugins/square/js/Menus.js | 2 +- public/assets/plugins/square/js/Shapes.js | 2 +- public/assets/plugins/square/js/Sidebar.js | 2 +- public/assets/plugins/square/js/Toolbar.js | 2 +- public/assets/plugins/square/js/custom.js | 2 +- public/index.html | 2 +- server/api/_apidoc.js | 2 +- server/api/action/action.controller.js | 2 +- server/api/action/action.events.js | 2 +- server/api/action/action.socket.js | 2 +- server/api/action/index.js | 2 +- server/api/agent/agent.controller.js | 2 +- server/api/agent/agent.events.js | 2 +- server/api/agent/agent.socket.js | 2 +- server/api/agent/index.js | 2 +- server/api/automation/automation.controller.js | 2 +- server/api/automation/automation.events.js | 2 +- server/api/automation/automation.socket.js | 2 +- server/api/automation/index.js | 2 +- .../api/canned_answer/canned_answer.controller.js | 2 +- server/api/canned_answer/canned_answer.events.js | 2 +- server/api/canned_answer/canned_answer.socket.js | 2 +- server/api/canned_answer/index.js | 2 +- server/api/chanspy/chanspy.controller.js | 2 +- server/api/chanspy/chanspy.events.js | 2 +- server/api/chanspy/chanspy.socket.js | 2 +- server/api/chanspy/index.js | 2 +- .../chat_application.controller.js | 2 +- .../chat_application/chat_application.events.js | 2 +- .../chat_application/chat_application.socket.js | 2 +- server/api/chat_application/index.js | 2 +- .../chat_disposition.controller.js | 2 +- .../chat_disposition/chat_disposition.events.js | 2 +- .../chat_disposition/chat_disposition.socket.js | 2 +- server/api/chat_disposition/index.js | 2 +- server/api/chat_enquiry/enquiry.controller.js | 2 +- server/api/chat_enquiry/enquiry.events.js | 2 +- server/api/chat_enquiry/enquiry.socket.js | 2 +- server/api/chat_enquiry/index.js | 2 +- server/api/chat_message/chat_message.controller.js | 2 +- server/api/chat_message/chat_message.events.js | 2 +- server/api/chat_message/chat_message.socket.js | 2 +- server/api/chat_message/index.js | 2 +- .../chat_proactive_action.controller.js | 2 +- .../chat_proactive_action.events.js | 2 +- .../chat_proactive_action.socket.js | 2 +- server/api/chat_proactive_action/index.js | 2 +- server/api/chat_queue/chat_queue.controller.js | 2 +- server/api/chat_queue/chat_queue.events.js | 2 +- server/api/chat_queue/chat_queue.socket.js | 2 +- server/api/chat_queue/index.js | 2 +- server/api/chat_room/chat_room.controller.js | 2 +- server/api/chat_room/chat_room.events.js | 2 +- server/api/chat_room/chat_room.socket.js | 2 +- server/api/chat_room/index.js | 2 +- server/api/chat_visitor/chat_visitor.controller.js | 2 +- server/api/chat_visitor/chat_visitor.events.js | 2 +- server/api/chat_visitor/chat_visitor.socket.js | 2 +- server/api/chat_visitor/index.js | 2 +- server/api/chat_website/chat_website.controller.js | 2 +- server/api/chat_website/chat_website.events.js | 2 +- server/api/chat_website/chat_website.socket.js | 2 +- server/api/chat_website/index.js | 2 +- .../chat_websites_field.controller.js | 2 +- .../chat_websites_field.events.js | 2 +- .../chat_websites_field.socket.js | 2 +- server/api/chat_websites_field/index.js | 2 +- server/api/company/company.controller.js | 2 +- server/api/company/company.events.js | 2 +- server/api/company/company.socket.js | 2 +- server/api/company/index.js | 2 +- .../contact_manager/contact_manager.controller.js | 2 +- .../api/contact_manager/contact_manager.events.js | 2 +- .../api/contact_manager/contact_manager.socket.js | 2 +- server/api/contact_manager/index.js | 2 +- server/api/custom_field/custom_field.controller.js | 2 +- server/api/custom_field/custom_field.events.js | 2 +- server/api/custom_field/custom_field.socket.js | 2 +- server/api/custom_field/index.js | 2 +- .../api/custom_report/custom_report.controller.js | 2 +- server/api/custom_report/custom_report.events.js | 2 +- server/api/custom_report/custom_report.socket.js | 2 +- server/api/custom_report/index.js | 2 +- server/api/dashboard/dashboard.controller.js | 2 +- server/api/dashboard/dashboard.events.js | 2 +- server/api/dashboard/dashboard.socket.js | 2 +- server/api/dashboard/index.js | 2 +- .../default_metric/default_metric.controller.js | 2 +- server/api/default_metric/index.js | 2 +- .../default_report/default_report.controller.js | 2 +- server/api/default_report/default_report.events.js | 2 +- server/api/default_report/default_report.socket.js | 2 +- server/api/default_report/index.js | 2 +- server/api/desk_account/desk_account.controller.js | 2 +- server/api/desk_account/desk_account.events.js | 2 +- server/api/desk_account/desk_account.socket.js | 2 +- server/api/desk_account/index.js | 2 +- .../desk_configuration.controller.js | 2 +- .../desk_configuration.events.js | 2 +- .../desk_configuration.socket.js | 2 +- server/api/desk_configuration/index.js | 2 +- server/api/desk_field/desk_field.controller.js | 2 +- server/api/desk_field/desk_field.events.js | 2 +- server/api/desk_field/desk_field.socket.js | 2 +- server/api/desk_field/index.js | 2 +- .../extracted_report.controller.js | 2 +- .../extracted_report/extracted_report.events.js | 2 +- .../extracted_report/extracted_report.socket.js | 2 +- server/api/extracted_report/index.js | 2 +- server/api/fax_account/fax_account.controller.js | 2 +- server/api/fax_account/fax_account.events.js | 2 +- server/api/fax_account/fax_account.socket.js | 2 +- server/api/fax_account/index.js | 2 +- .../fax_application/fax_application.controller.js | 2 +- .../api/fax_application/fax_application.events.js | 2 +- .../api/fax_application/fax_application.socket.js | 2 +- server/api/fax_application/index.js | 2 +- .../fax_attachment/fax_attachment.controller.js | 2 +- server/api/fax_attachment/fax_attachment.events.js | 2 +- server/api/fax_attachment/fax_attachment.socket.js | 2 +- server/api/fax_attachment/index.js | 2 +- .../fax_disposition/fax_disposition.controller.js | 2 +- .../api/fax_disposition/fax_disposition.events.js | 2 +- .../api/fax_disposition/fax_disposition.socket.js | 2 +- server/api/fax_disposition/index.js | 2 +- server/api/fax_message/fax_message.ami.js | 2 +- server/api/fax_message/fax_message.controller.js | 2 +- server/api/fax_message/fax_message.events.js | 2 +- server/api/fax_message/fax_message.socket.js | 2 +- server/api/fax_message/index.js | 2 +- server/api/fax_queue/fax_queue.controller.js | 2 +- server/api/fax_queue/fax_queue.events.js | 2 +- server/api/fax_queue/fax_queue.socket.js | 2 +- server/api/fax_queue/index.js | 2 +- server/api/fax_room/fax_room.controller.js | 2 +- server/api/fax_room/fax_room.events.js | 2 +- server/api/fax_room/fax_room.socket.js | 2 +- server/api/fax_room/index.js | 2 +- .../freshdesk_account.controller.js | 2 +- .../freshdesk_account/freshdesk_account.events.js | 2 +- .../freshdesk_account/freshdesk_account.socket.js | 2 +- server/api/freshdesk_account/index.js | 2 +- .../freshdesk_configuration.controller.js | 2 +- .../freshdesk_configuration.events.js | 2 +- .../freshdesk_configuration.socket.js | 2 +- server/api/freshdesk_configuration/index.js | 2 +- .../freshdesk_field/freshdesk_field.controller.js | 2 +- .../api/freshdesk_field/freshdesk_field.events.js | 2 +- .../api/freshdesk_field/freshdesk_field.socket.js | 2 +- server/api/freshdesk_field/index.js | 2 +- server/api/integration/index.js | 2 +- server/api/integration/integration.controller.js | 2 +- server/api/integration/integration.events.js | 2 +- server/api/integration/integration.socket.js | 2 +- server/api/interval/index.js | 2 +- server/api/interval/interval.controller.js | 2 +- server/api/interval/interval.events.js | 2 +- server/api/interval/interval.socket.js | 2 +- server/api/jscripty_project/index.js | 2 +- .../jscripty_project.controller.js | 2 +- .../jscripty_project/jscripty_project.events.js | 2 +- .../jscripty_project/jscripty_project.socket.js | 2 +- server/api/license/index.js | 2 +- server/api/license/license.controller.js | 2 +- server/api/list/index.js | 2 +- server/api/list/list.controller.js | 2 +- server/api/list/list.events.js | 2 +- server/api/list/list.socket.js | 2 +- server/api/mail_account/index.js | 2 +- server/api/mail_account/mail_account.controller.js | 2 +- server/api/mail_account/mail_account.events.js | 2 +- server/api/mail_account/mail_account.socket.js | 2 +- server/api/mail_application/index.js | 2 +- .../mail_application.controller.js | 2 +- .../mail_application/mail_application.events.js | 2 +- .../mail_application/mail_application.socket.js | 2 +- server/api/mail_attachment/index.js | 2 +- .../mail_attachment/mail_attachment.controller.js | 2 +- .../api/mail_attachment/mail_attachment.events.js | 2 +- .../api/mail_attachment/mail_attachment.socket.js | 2 +- server/api/mail_disposition/index.js | 2 +- .../mail_disposition.controller.js | 2 +- .../mail_disposition/mail_disposition.events.js | 2 +- .../mail_disposition/mail_disposition.socket.js | 2 +- server/api/mail_message/index.js | 2 +- server/api/mail_message/mail_message.controller.js | 2 +- server/api/mail_message/mail_message.events.js | 2 +- server/api/mail_message/mail_message.socket.js | 2 +- server/api/mail_queue/index.js | 2 +- server/api/mail_queue/mail_queue.controller.js | 2 +- server/api/mail_queue/mail_queue.events.js | 2 +- server/api/mail_queue/mail_queue.socket.js | 2 +- server/api/mail_room/index.js | 2 +- server/api/mail_room/mail_room.controller.js | 2 +- server/api/mail_room/mail_room.events.js | 2 +- server/api/mail_room/mail_room.socket.js | 2 +- server/api/mail_server_in/index.js | 2 +- .../mail_server_in/mail_server_in.controller.js | 2 +- server/api/mail_server_in/mail_server_in.events.js | 2 +- server/api/mail_server_in/mail_server_in.socket.js | 2 +- server/api/mail_server_out/index.js | 2 +- .../mail_server_out/mail_server_out.controller.js | 2 +- .../api/mail_server_out/mail_server_out.events.js | 2 +- .../api/mail_server_out/mail_server_out.socket.js | 2 +- server/api/metric/index.js | 2 +- server/api/metric/metric.controller.js | 2 +- server/api/metric/metric.events.js | 2 +- server/api/metric/metric.socket.js | 2 +- server/api/module/index.js | 2 +- server/api/module/module.controller.js | 2 +- server/api/module/module.events.js | 2 +- server/api/module/module.socket.js | 2 +- server/api/motionbar/index.js | 2 +- server/api/motionbar/motionbar.controller.js | 2 +- server/api/motionbar/motionbar.events.js | 2 +- server/api/motionbar/motionbar.socket.js | 2 +- server/api/network_externip/index.js | 2 +- .../network_externip.controller.js | 2 +- .../network_externip/network_externip.events.js | 2 +- .../network_externip/network_externip.socket.js | 2 +- server/api/network_localnet/index.js | 2 +- .../network_localnet.controller.js | 2 +- .../network_localnet/network_localnet.events.js | 2 +- .../network_localnet/network_localnet.socket.js | 2 +- server/api/openchannel_account/index.js | 2 +- .../openchannel_account.controller.js | 2 +- .../openchannel_account.events.js | 2 +- .../openchannel_account.socket.js | 2 +- server/api/openchannel_application/index.js | 2 +- .../openchannel_application.controller.js | 2 +- .../openchannel_application.events.js | 2 +- .../openchannel_application.socket.js | 2 +- server/api/openchannel_disposition/index.js | 2 +- .../openchannel_disposition.controller.js | 2 +- .../openchannel_disposition.events.js | 2 +- .../openchannel_disposition.socket.js | 2 +- server/api/openchannel_message/index.js | 2 +- .../openchannel_message.controller.js | 2 +- .../openchannel_message.events.js | 2 +- .../openchannel_message.socket.js | 2 +- server/api/openchannel_queue/index.js | 2 +- .../openchannel_queue.controller.js | 2 +- .../openchannel_queue/openchannel_queue.events.js | 2 +- .../openchannel_queue/openchannel_queue.socket.js | 2 +- server/api/openchannel_room/index.js | 2 +- .../openchannel_room.controller.js | 2 +- .../openchannel_room/openchannel_room.events.js | 2 +- .../openchannel_room/openchannel_room.socket.js | 2 +- server/api/pause/index.js | 2 +- server/api/pause/pause.controller.js | 2 +- server/api/pause/pause.events.js | 2 +- server/api/pause/pause.socket.js | 2 +- server/api/report_agent/index.js | 2 +- server/api/report_agent/report_agent.controller.js | 2 +- server/api/report_agent/report_agent.events.js | 2 +- server/api/report_agent/report_agent.socket.js | 2 +- server/api/report_call/index.js | 2 +- server/api/report_call/report_call.controller.js | 2 +- server/api/report_call/report_call.events.js | 2 +- server/api/report_call/report_call.socket.js | 2 +- server/api/report_chat/index.js | 2 +- server/api/report_chat/report_chat.controller.js | 2 +- server/api/report_chat/report_chat.events.js | 2 +- server/api/report_chat/report_chat.socket.js | 2 +- server/api/report_chat_session/index.js | 2 +- .../report_chat_session.controller.js | 2 +- .../report_chat_session.events.js | 2 +- .../report_chat_session.socket.js | 2 +- server/api/report_dial/index.js | 2 +- server/api/report_dial/report_dial.controller.js | 2 +- server/api/report_dial/report_dial.events.js | 2 +- server/api/report_dial/report_dial.socket.js | 2 +- server/api/report_fax/index.js | 2 +- server/api/report_fax/report_fax.controller.js | 2 +- server/api/report_fax/report_fax.events.js | 2 +- server/api/report_fax/report_fax.socket.js | 2 +- server/api/report_fax_session/index.js | 2 +- .../report_fax_session.controller.js | 2 +- .../report_fax_session.events.js | 2 +- .../report_fax_session.socket.js | 2 +- server/api/report_integration/index.js | 2 +- .../report_integration.controller.js | 2 +- .../report_integration.events.js | 2 +- .../report_integration.socket.js | 2 +- server/api/report_mail/index.js | 2 +- server/api/report_mail/report_mail.controller.js | 2 +- server/api/report_mail/report_mail.events.js | 2 +- server/api/report_mail/report_mail.socket.js | 2 +- server/api/report_mail_session/index.js | 2 +- .../report_mail_session.controller.js | 2 +- .../report_mail_session.events.js | 2 +- .../report_mail_session.socket.js | 2 +- server/api/report_member/index.js | 2 +- .../api/report_member/report_member.controller.js | 2 +- server/api/report_member/report_member.events.js | 2 +- server/api/report_member/report_member.socket.js | 2 +- server/api/report_openchannel/index.js | 2 +- .../report_openchannel.controller.js | 2 +- .../report_openchannel.events.js | 2 +- .../report_openchannel.socket.js | 2 +- server/api/report_openchannel_session/index.js | 2 +- .../report_openchannel_session.controller.js | 2 +- .../report_openchannel_session.events.js | 2 +- .../report_openchannel_session.socket.js | 2 +- server/api/report_queue/index.js | 2 +- server/api/report_queue/report_queue.controller.js | 2 +- server/api/report_queue/report_queue.events.js | 2 +- server/api/report_queue/report_queue.socket.js | 2 +- server/api/report_sms/index.js | 2 +- server/api/report_sms/report_sms.controller.js | 2 +- server/api/report_sms/report_sms.events.js | 2 +- server/api/report_sms/report_sms.socket.js | 2 +- server/api/report_sms_session/index.js | 2 +- .../report_sms_session.controller.js | 2 +- .../report_sms_session.events.js | 2 +- .../report_sms_session.socket.js | 2 +- server/api/report_square/index.js | 2 +- .../api/report_square/report_square.controller.js | 2 +- server/api/report_square/report_square.events.js | 2 +- server/api/report_square/report_square.socket.js | 2 +- server/api/report_square_detail/index.js | 2 +- .../report_square_detail.controller.js | 2 +- .../report_square_detail.events.js | 2 +- .../report_square_detail.socket.js | 2 +- server/api/report_tiger_dial/index.js | 2 +- .../report_tiger_dial.controller.js | 2 +- .../report_tiger_dial/report_tiger_dial.events.js | 2 +- .../report_tiger_dial/report_tiger_dial.socket.js | 2 +- server/api/report_tree/index.js | 2 +- server/api/report_tree/report_tree.controller.js | 2 +- server/api/report_tree/report_tree.events.js | 2 +- server/api/report_tree/report_tree.socket.js | 2 +- server/api/salesforce_account/index.js | 2 +- .../salesforce_account.controller.js | 2 +- .../salesforce_account.events.js | 2 +- .../salesforce_account.socket.js | 2 +- server/api/salesforce_configuration/index.js | 2 +- .../salesforce_configuration.controller.js | 2 +- .../salesforce_configuration.events.js | 2 +- .../salesforce_configuration.socket.js | 2 +- server/api/salesforce_field/index.js | 2 +- .../salesforce_field.controller.js | 2 +- .../salesforce_field/salesforce_field.events.js | 2 +- .../salesforce_field/salesforce_field.socket.js | 2 +- server/api/scheduler/index.js | 2 +- server/api/scheduler/scheduler.controller.js | 2 +- server/api/scheduler/scheduler.events.js | 2 +- server/api/scheduler/scheduler.socket.js | 2 +- server/api/setting/index.js | 2 +- server/api/setting/setting.controller.js | 2 +- server/api/setting/setting.events.js | 2 +- server/api/setting/setting.socket.js | 2 +- server/api/sms_account/index.js | 2 +- server/api/sms_account/sms_account.controller.js | 2 +- server/api/sms_account/sms_account.events.js | 2 +- server/api/sms_account/sms_account.socket.js | 2 +- server/api/sms_application/index.js | 2 +- .../sms_application/sms_application.controller.js | 2 +- .../api/sms_application/sms_application.events.js | 2 +- .../api/sms_application/sms_application.socket.js | 2 +- server/api/sms_disposition/index.js | 2 +- .../sms_disposition/sms_disposition.controller.js | 2 +- .../api/sms_disposition/sms_disposition.events.js | 2 +- .../api/sms_disposition/sms_disposition.socket.js | 2 +- server/api/sms_message/index.js | 2 +- server/api/sms_message/sms_message.controller.js | 2 +- server/api/sms_message/sms_message.events.js | 2 +- server/api/sms_message/sms_message.socket.js | 2 +- server/api/sms_queue/index.js | 2 +- server/api/sms_queue/sms_queue.controller.js | 2 +- server/api/sms_queue/sms_queue.events.js | 2 +- server/api/sms_queue/sms_queue.socket.js | 2 +- server/api/sms_room/index.js | 2 +- server/api/sms_room/sms_room.controller.js | 2 +- server/api/sms_room/sms_room.events.js | 2 +- server/api/sms_room/sms_room.socket.js | 2 +- server/api/sound/index.js | 2 +- server/api/sound/sound.controller.js | 2 +- server/api/sound/sound.events.js | 2 +- server/api/sound/sound.socket.js | 2 +- server/api/square_odbc/index.js | 2 +- server/api/square_odbc/square_odbc.controller.js | 2 +- server/api/square_odbc/square_odbc.events.js | 2 +- server/api/square_odbc/square_odbc.socket.js | 2 +- server/api/square_project/index.js | 2 +- .../square_project/square_project.controller.js | 2 +- server/api/square_project/square_project.events.js | 2 +- server/api/square_project/square_project.socket.js | 2 +- server/api/square_recording/index.js | 2 +- .../square_recording.controller.js | 2 +- .../square_recording/square_recording.events.js | 2 +- .../square_recording/square_recording.socket.js | 2 +- server/api/sugarcrm_account/index.js | 2 +- .../sugarcrm_account.controller.js | 2 +- .../sugarcrm_account/sugarcrm_account.events.js | 2 +- .../sugarcrm_account/sugarcrm_account.socket.js | 2 +- server/api/sugarcrm_configuration/index.js | 2 +- .../sugarcrm_configuration.controller.js | 2 +- .../sugarcrm_configuration.events.js | 2 +- .../sugarcrm_configuration.socket.js | 2 +- server/api/sugarcrm_field/index.js | 2 +- .../sugarcrm_field/sugarcrm_field.controller.js | 2 +- server/api/sugarcrm_field/sugarcrm_field.events.js | 2 +- server/api/sugarcrm_field/sugarcrm_field.socket.js | 2 +- server/api/tag/index.js | 2 +- server/api/tag/tag.controller.js | 2 +- server/api/tag/tag.events.js | 2 +- server/api/tag/tag.socket.js | 2 +- server/api/team/index.js | 2 +- server/api/team/team.controller.js | 2 +- server/api/team/team.events.js | 2 +- server/api/team/team.socket.js | 2 +- server/api/telephone/index.js | 2 +- server/api/telephone/telephone.controller.js | 2 +- server/api/telephone/telephone.events.js | 2 +- server/api/telephone/telephone.socket.js | 2 +- server/api/template/index.js | 2 +- server/api/template/template.controller.js | 2 +- server/api/template/template.events.js | 2 +- server/api/template/template.socket.js | 2 +- server/api/trigger/index.js | 2 +- server/api/trigger/trigger.controller.js | 2 +- server/api/trigger/trigger.events.js | 2 +- server/api/trigger/trigger.socket.js | 2 +- server/api/trunk/index.js | 2 +- server/api/trunk/trunk.controller.js | 2 +- server/api/trunk/trunk.events.js | 2 +- server/api/trunk/trunk.socket.js | 2 +- server/api/update/index.js | 2 +- server/api/update/update.controller.js | 2 +- server/api/user/index.js | 2 +- server/api/user/user.controller.js | 2 +- server/api/user/user.events.js | 2 +- server/api/user/user.socket.js | 2 +- server/api/user_has_chat_queue/index.js | 2 +- .../user_has_chat_queue.controller.js | 2 +- .../user_has_chat_queue.events.js | 2 +- .../user_has_chat_queue.socket.js | 2 +- .../user_has_chat_queue_permit.events.js | 2 +- .../user_has_chat_queue_permit.socket.js | 2 +- server/api/user_has_chat_room/index.js | 2 +- .../user_has_chat_room.controller.js | 2 +- .../user_has_chat_room.events.js | 2 +- .../user_has_chat_room.socket.js | 2 +- server/api/user_has_fax_queue/index.js | 2 +- .../user_has_fax_queue.controller.js | 2 +- .../user_has_fax_queue.events.js | 2 +- .../user_has_fax_queue.socket.js | 2 +- .../user_has_fax_queue_permit.events.js | 2 +- .../user_has_fax_queue_permit.socket.js | 2 +- server/api/user_has_list/index.js | 2 +- .../api/user_has_list/user_has_list.controller.js | 2 +- server/api/user_has_list/user_has_list.events.js | 2 +- server/api/user_has_list/user_has_list.socket.js | 2 +- server/api/user_has_mail_queue/index.js | 2 +- .../user_has_mail_queue.controller.js | 2 +- .../user_has_mail_queue.events.js | 2 +- .../user_has_mail_queue.socket.js | 2 +- .../user_has_mail_queue_permit.events.js | 2 +- .../user_has_mail_queue_permit.socket.js | 2 +- server/api/user_has_openchannel_queue/index.js | 2 +- .../user_has_openchannel_queue.controller.js | 2 +- .../user_has_openchannel_queue.events.js | 2 +- .../user_has_openchannel_queue.socket.js | 2 +- .../user_has_openchannel_queue_permit.events.js | 2 +- .../user_has_openchannel_queue_permit.socket.js | 2 +- server/api/user_has_sms_queue/index.js | 2 +- .../user_has_sms_queue.controller.js | 2 +- .../user_has_sms_queue.events.js | 2 +- .../user_has_sms_queue.socket.js | 2 +- .../user_has_sms_queue_permit.events.js | 2 +- .../user_has_sms_queue_permit.socket.js | 2 +- server/api/user_has_team/index.js | 2 +- .../api/user_has_team/user_has_team.controller.js | 2 +- server/api/user_has_team/user_has_team.events.js | 2 +- server/api/user_has_team/user_has_team.socket.js | 2 +- server/api/user_has_voice_queue/index.js | 2 +- .../user_has_voice_queue.controller.js | 2 +- .../user_has_voice_queue.events.js | 2 +- .../user_has_voice_queue.socket.js | 2 +- .../user_has_voice_queue_permit.events.js | 2 +- .../user_has_voice_queue_permit.socket.js | 2 +- server/api/variable/index.js | 2 +- server/api/variable/variable.controller.js | 2 +- server/api/variable/variable.events.js | 2 +- server/api/variable/variable.socket.js | 2 +- server/api/version/index.js | 2 +- server/api/version/version.controller.js | 2 +- server/api/voice_context/index.js | 2 +- .../api/voice_context/voice_context.controller.js | 2 +- server/api/voice_context/voice_context.events.js | 2 +- server/api/voice_context/voice_context.socket.js | 2 +- server/api/voice_disposition/index.js | 2 +- .../voice_disposition.controller.js | 2 +- .../voice_disposition/voice_disposition.events.js | 2 +- .../voice_disposition/voice_disposition.socket.js | 2 +- server/api/voice_extension/index.js | 2 +- .../voice_extension/voice_extension.controller.js | 2 +- .../api/voice_extension/voice_extension.events.js | 2 +- .../api/voice_extension/voice_extension.socket.js | 2 +- server/api/voice_musiconhold/index.js | 2 +- .../voice_musiconhold.controller.js | 2 +- .../voice_musiconhold/voice_musiconhold.events.js | 2 +- .../voice_musiconhold/voice_musiconhold.socket.js | 2 +- server/api/voice_queue/index.js | 2 +- server/api/voice_queue/voice_queue.controller.js | 2 +- server/api/voice_queue/voice_queue.events.js | 2 +- server/api/voice_queue/voice_queue.socket.js | 2 +- server/api/voice_recording/index.js | 2 +- .../voice_recording/voice_recording.controller.js | 2 +- .../api/voice_recording/voice_recording.events.js | 2 +- .../api/voice_recording/voice_recording.socket.js | 2 +- server/api/voice_voicemail/index.js | 2 +- .../voice_voicemail/voice_voicemail.controller.js | 2 +- .../api/voice_voicemail/voice_voicemail.events.js | 2 +- .../api/voice_voicemail/voice_voicemail.socket.js | 2 +- server/api/voice_voicemail_messages/index.js | 2 +- .../voice_voicemail_messages.controller.js | 2 +- .../voice_voicemail_messages.events.js | 2 +- .../voice_voicemail_messages.socket.js | 2 +- server/api/widget/index.js | 2 +- server/api/widget/widget.controller.js | 2 +- server/api/xchatty/index.js | 2 +- server/api/xchatty/xchatty.controller.js | 2 +- server/api/zendesk_account/index.js | 2 +- .../zendesk_account/zendesk_account.controller.js | 2 +- .../api/zendesk_account/zendesk_account.events.js | 2 +- .../api/zendesk_account/zendesk_account.socket.js | 2 +- server/api/zendesk_configuration/index.js | 2 +- .../zendesk_configuration.controller.js | 2 +- .../zendesk_configuration.events.js | 2 +- .../zendesk_configuration.socket.js | 2 +- server/api/zendesk_field/index.js | 2 +- .../api/zendesk_field/zendesk_field.controller.js | 2 +- server/api/zendesk_field/zendesk_field.events.js | 2 +- server/api/zendesk_field/zendesk_field.socket.js | 2 +- server/app.js | 2 +- server/auth/auth.service.js | 2 +- server/auth/facebook/index.js | 2 +- server/auth/facebook/passport.js | 2 +- server/auth/google/index.js | 2 +- server/auth/google/passport.js | 2 +- server/auth/index.js | 2 +- server/auth/local/index.js | 2 +- server/auth/local/local.ami.js | 2 +- server/auth/local/passport.js | 2 +- server/auth/twitter/index.js | 2 +- server/auth/twitter/passport.js | 2 +- server/config/agi/agi.js | 2 +- server/config/agi/events.js | 2 +- server/config/agi/index.js | 2 +- server/config/agi/lib/channel.js | 2 +- server/config/agi/lib/connection.js | 2 +- server/config/agi/lib/reply.js | 2 +- server/config/agi/lib/rpc/index.js | 2 +- server/config/agi/lib/scripts/index.js | 2 +- server/config/agi/lib/server.js | 2 +- server/config/agi/lib/square.js | 2 +- server/config/agi/lib/vertices.js | 2 +- server/config/ami/acw.js | 2 +- server/config/ami/ami.js | 2 +- server/config/ami/db/fax.js | 2 +- server/config/ami/db/memberReport.js | 2 +- server/config/ami/db/trunk.js | 2 +- server/config/ami/db/user.js | 2 +- server/config/ami/db/userHasQueue.js | 2 +- server/config/ami/db/voiceAgentReport.js | 2 +- server/config/ami/db/voiceCallReport.js | 2 +- server/config/ami/db/voiceDialReport.js | 2 +- server/config/ami/db/voiceQueueReport.js | 2 +- server/config/ami/db/voiceRecording.js | 2 +- server/config/ami/db/voiceTransferReport.js | 2 +- server/config/ami/events.js | 2 +- server/config/ami/index.js | 2 +- server/config/ami/properties.js | 2 +- server/config/ami/socket.js | 2 +- server/config/ami/utils.js | 2 +- server/config/autodialer/index.js | 2 +- server/config/autodialer/process.js | 2 +- server/config/automations/chat.js | 2 +- server/config/automations/fax.js | 2 +- server/config/automations/mail.js | 2 +- server/config/chat.js | 2 +- server/config/dashboard/dashboard.js | 2 +- server/config/dashboard/index.js | 2 +- server/config/express.js | 2 +- server/config/forked_routing/chat/agent.js | 2 +- server/config/forked_routing/chat/index.js | 2 +- server/config/forked_routing/chat/queue.js | 2 +- server/config/forked_routing/chat/sendmail.js | 2 +- server/config/forked_routing/chat/sendsms.js | 2 +- server/config/forked_routing/fax/agent.js | 2 +- server/config/forked_routing/fax/index.js | 2 +- server/config/forked_routing/fax/queue.js | 2 +- server/config/forked_routing/fax/sendmail.js | 2 +- server/config/forked_routing/fax/sendsms.js | 2 +- server/config/forked_routing/mail/agent.js | 2 +- server/config/forked_routing/mail/index.js | 2 +- server/config/forked_routing/mail/queue.js | 2 +- server/config/forked_routing/mail/replymail.js | 2 +- server/config/forked_routing/mail/sendmail.js | 2 +- server/config/forked_routing/mail/sendsms.js | 2 +- server/config/forked_routing/openchannel/agent.js | 2 +- server/config/forked_routing/openchannel/index.js | 2 +- server/config/forked_routing/openchannel/queue.js | 2 +- .../config/forked_routing/openchannel/sendmail.js | 2 +- .../config/forked_routing/openchannel/sendsms.js | 2 +- server/config/forked_routing/sms/agent.js | 2 +- server/config/forked_routing/sms/index.js | 2 +- server/config/forked_routing/sms/queue.js | 2 +- server/config/forked_routing/sms/sendmail.js | 2 +- server/config/forked_routing/sms/sendsms.js | 2 +- server/config/history/history.js | 2 +- server/config/history/reportMove.js | 2 +- server/config/imap/imap.js | 2 +- server/config/imap/index.js | 2 +- server/config/integrations/freshdesk.js | 2 +- server/config/integrations/index.js | 2 +- server/config/integrations/motionbar.js | 2 +- server/config/integrations/salesforce.js | 2 +- server/config/integrations/sugarcrm.js | 2 +- server/config/integrations/zendesk.js | 2 +- server/config/interval/index.js | 2 +- server/config/license/hardware.js | 2 +- server/config/license/index.js | 2 +- server/config/license/license.service.js | 2 +- server/config/local.env.sample.js | 2 +- server/config/logger.js | 2 +- server/config/logger/index.js | 2 +- server/config/openchannel/custom.js | 2 +- server/config/openchannel/index.js | 2 +- server/config/routing/agent.js | 2 +- server/config/routing/fidelity.js | 2 +- server/config/routing/queue.js | 2 +- server/config/routing/replyMail.js | 2 +- server/config/routing/scheduler.js | 2 +- server/config/routing/sendMail.js | 2 +- server/config/routing/sendSms.js | 2 +- server/config/routing/structure.js | 2 +- server/config/rpc/client.js | 2 +- server/config/rpc/index.js | 2 +- server/config/rpc/rpc.js | 2 +- server/config/scheduler/index.js | 2 +- server/config/scheduler/reports.js | 2 +- server/config/seed.js | 2 +- server/config/seedp.js | 2 +- server/config/sms/index.js | 2 +- server/config/sms/skebby.js | 2 +- server/config/sms/sms.js | 2 +- server/config/sms/twilio.js | 2 +- server/config/smtp/index.js | 2 +- server/config/smtp/smtp.js | 2 +- server/config/socketio.js | 2 +- server/config/tools/channelSpy.js | 2 +- server/config/tools/chatRoom.js | 2 +- server/config/tools/dashboard.js | 2 +- server/config/tools/faxAccount.js | 2 +- server/config/tools/faxRoom.js | 2 +- server/config/tools/index.js | 2 +- server/config/tools/interval.js | 2 +- server/config/tools/mailAccount.js | 2 +- server/config/tools/mailRoom.js | 2 +- server/config/tools/openchannelRoom.js | 2 +- server/config/tools/smsRoom.js | 2 +- server/config/tools/system.js | 2 +- server/config/tools/user.js | 2 +- server/config/triggers/chat.js | 2 +- server/config/triggers/cm.js | 2 +- server/config/triggers/fax.js | 2 +- server/config/triggers/index.js | 2 +- server/config/triggers/jscripty.js | 2 +- server/config/triggers/mail.js | 2 +- server/config/triggers/openchannel.js | 2 +- server/config/triggers/sms.js | 2 +- server/config/triggers/urlForward.js | 2 +- server/config/triggers/util.js | 2 +- server/config/triggers/voice.js | 2 +- server/config/util/error.js | 2 +- server/config/util/index.js | 2 +- .../20160801125118-placeholder.js | 2 +- .../20160916135658-report-session.js | 2 +- .../20160920170835-report_tdial.js | 2 +- .../20161005162141-report_tdial_history.js | 2 +- .../20161102092931-report_member.js | 2 +- .../20161103154020-report_square_history.js | 2 +- .../20161104110653-report_square_history.js | 2 +- .../20161130151446-report_integration_history.js | 2 +- .../20161206170443-report_agent_history.js | 2 +- .../20161209084712-report_sourceid.js | 2 +- .../20161209140411-report_history.js | 2 +- .../20161209171025-report_sourceid_index.js | 2 +- ...20170126094809-report_square_details_history.js | 2 +- .../20170206131527-report_call.js | 2 +- .../20170207170653-report_call.js | 2 +- .../20170217111336-report_call_history.js | 2 +- .../20170217153419-report_square_detail_history.js | 2 +- .../20170315164841-report_queue.js | 2 +- .../migrations-history/20170404155959-indexes.js | 2 +- .../20170601132818-history_latin_to_utf8.js | 2 +- server/migrations/20171019084200-users.js | 19 ++++ server/migrations/20171019090019-voicemail.js | 21 +++++ server/models/voice_voicemail.js | 2 +- server/routes.js | 2 +- server/utils/report_build.js | 2 +- server/utils/report_extraction.js | 2 +- server/utils/voice_extension.js | 2 +- 725 files changed, 855 insertions(+), 815 deletions(-) create mode 100644 public/app/60ca30a4.app.js delete mode 100644 public/app/b7d73a56.app.js create mode 100644 server/migrations/20171019084200-users.js create mode 100644 server/migrations/20171019090019-voicemail.js diff --git a/package.json b/package.json index 3544658..0de6761 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "motion", - "version": "1.0.28", + "version": "1.0.29", "main": "server/app.js", "dependencies": { "accept-language-parser": "^1.0.2", @@ -34,7 +34,7 @@ "geoip-lite": "^1.1.6", "google-tts-api": "0.0.1", "html-pdf": "^1.4.0", - "html-to-text": "^1.6.2", + "html-to-text": "^3.3.0", "iconv": "^2.3.0", "ipaddr.js": "^1.0.4", "jayson": "^2.0.3", diff --git a/public/app/60ca30a4.app.js b/public/app/60ca30a4.app.js new file mode 100644 index 0000000..e2ab488 --- /dev/null +++ b/public/app/60ca30a4.app.js @@ -0,0 +1,93 @@ +"use strict";angular.module("xCallyShuttleApp",["adf","adf.structures.base","adf.widget.clock","adf.widget.iframe","adf.widget.counter","adf.widget.pie-chart","angular-md5","angular.filter","angularFileUpload","ngLetterAvatar","vAccordion","btford.socket-io","chart.js","checklist-model","colorpicker.module","frapontillo.bootstrap-switch","LocalStorageModule","mgo-angular-wizard","ng-slide-down","ngAnimate","ngBootstrap","ngCookies","ngCsv","ngFileSaver","ngJsTree","ngMap","ngPapaParse","ngResource","ngSanitize","notification","oc.lazyLoad","pascalprecht.translate","remoteValidation","smart-table","sprintf","timer","toastr","permission","ui-notification","ui.bootstrap.modal","ui.bootstrap.dropdown","ui.bootstrap.popover","ui.bootstrap.timepicker","ui.bootstrap.tooltip","ui.bootstrap.tpls","ui.bootstrap.accordion","ui.bootstrap.progressbar","ui.bootstrap.buttons","ui.bootstrap.typeahead","ui.grid","ui.grid.autoResize","ui.grid.draggable-rows","ui.grid.exporter","ui.grid.grouping","ui.grid.moveColumns","ui.grid.pagination","ui.grid.treeView","ui.grid.selection","ui.grid.exporter","ui.grid.resizeColumns","ui.router","ui.navbar","ui.select","ui.sortable","xeditable","ngAudio","truncate","ngScrollbars","ngEmoticons","angularSpinner","builder","builder.components","validator","angular-clipboard","ng-code-mirror","angularMoment","jsonFormatter","ui.bootstrap-slider","ui.bootstrap.datepicker","prettyBytes","bootstrapLightbox","rzModule","ckeditor","ngTagsInput","ngJoyRide","adf.widget.linklist"]).constant("CKEDITOR_BASEPATH","assets/plugins/ckeditor/").config(["$stateProvider","$urlRouterProvider","$locationProvider","$httpProvider","$translateProvider","localStorageServiceProvider","dashboardProvider","ScrollBarsProvider","tagsInputConfigProvider",function(a,b,c,d,e,f,g,h,i){i.setActiveInterpolation("tagsInput",{placeholder:!0}),b.otherwise(function(a){var b=a.get("$state");b.go("landing")}),e.useStaticFilesLoader({prefix:"assets/languages/locale-",suffix:".json"}),e.preferredLanguage("en_EN"),e.fallbackLanguage("en_EN"),e.useLocalStorage(),e.useSanitizeValueStrategy(null),c.html5Mode(!0),d.interceptors.push("authInterceptor"),g.structure("4-4-4",{rows:[{columns:[{styleClass:"col-md-4"},{styleClass:"col-md-4"},{styleClass:"col-md-4"}]}]}).structure("3-3-3-3",{rows:[{columns:[{styleClass:"col-md-3"},{styleClass:"col-md-3"},{styleClass:"col-md-3"},{styleClass:"col-md-3"}]}]}),f.setPrefix("motion"),h.defaults={scrollButtons:{scrollAmount:"auto",enable:!0},axis:"y"}}]).factory("authInterceptor",["$rootScope","$q","$cookieStore","$location",function(a,b,c,d){return{request:function(a){return a.headers=a.headers||{},c.get("token")?a.headers.Authorization="Bearer "+c.get("token"):d.path().match(/\/reset\/.[0-9]*/)||d.path("/login"),a}}}]).run(["$rootScope","$location","$state","$stateParams","$window","$q","Auth","RoleStore","editableThemes","editableOptions","License","User","PermissionStore","localStorageService","xAlert","$http",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){a.$state=c,a.$stateParams=d,i.bs3.inputClass="input-sm",i.bs3.buttonsClass="btn-xs",j.theme="bs3",a.$on("$stateChangeStart",function(a,c){g.isLoggedInAsync(function(a){!c.authenticate||a||b.path().match(/\/reset\/.[0-9]*/)||b.path("/login")})}),a.updateTableConfig=function(a,b){var c=_.find(a,{name:"All"});c&&(c.value=b)},a.settings={patternName:"[A-Za-z0-9._\\+*!\\-\\[\\]]+",simplePatternName:"[A-Za-z0-9._]+",patternPassword:"^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@#$%^&\\-_=+\\[\\{\\]\\}.])[0-9a-zA-Z~!@#$%^&\\-_=+\\[\\{\\]\\}.]{8,}$",patternPasswordLight:"^.{6,}$",patternGateway:"^(?:yes|no|[0-9]+)$",patternFaxdetect:"^(?:yes|no|t38|cng|[0-9]+)$",layout:{pageSidebarClosed:n.get("sidebarClosed")||!1,pageQuickSidebarOpened:!1,pageBodySolid:!1,pageAutoScrollOnLoad:1e3}},k.get().$promise.then(function(b){a.license=b.license,a.settings.soundPath=b.soundPath||"/var/opt/motion/server/files/sounds/converted",a.settings.footerWhiteLabel=b.footerWhiteLabel,a.settings.defaultFooterWhiteLabel=b.defaultFooterWhiteLabel,a.settings.logoutOnWindowClose=b.logoutOnWindowClose,m.definePermission("hasCm",function(){return a.license.cm}),m.definePermission("hasChat",function(){return a.license.chat}),m.definePermission("hasMail",function(){return a.license.mail}),m.definePermission("hasFax",function(){return a.license.fax}),m.definePermission("hasSms",function(){return a.license.messaging}),m.definePermission("hasDialer",function(){return a.license.dialer}),m.definePermission("hasJscripty",function(){return a.license.jscripty}),m.definePermission("hasUpdate",function(){return a.license.update}),m.definePermission("hasCustom",function(){return a.license.custom}),m.definePermission("hasOpenChannel",function(){return a.license.openchannel}),m.definePermission("hasPreferred",function(){return a.license.preferred})})["catch"](function(a){o.error(a)}),m.definePermission("agent",function(){return g.isAgent()}),m.definePermission("admin",function(){return g.isAdmin()}),m.definePermission("user",function(a,b){var c=f.defer(),d=g.getCurrentUser().$promise;return d?d.then(function(a){_.includes(_.map(a.Modules,"id"),b.toState.data.permissions.id)&&"user"===a.role?c.resolve():c.reject()})["catch"](function(){c.reject()}):c.resolve(),c.promise})}]),angular.module("xCallyShuttleApp").controller("AdminResetCtrl",["$scope","Auth","User","xAlert","$translate","$location","Setting","$rootScope",function(a,b,c,d,e,f,g,h){a.getInfo=function(){return g.get({controller:"info"}).$promise.then(function(b){return a.info=b,g.get({id:1}).$promise}).then(function(b){a.setting=b,!b.firstLogin&&f.path("/landing")})["catch"](function(a){console.error(a)})},h.bodyLayout="login",a.updatePassword=function(){var h={newPassword:a.user.password,id:b.getCurrentUser().id};return c.changePassword(h).$promise.then(function(){return g.update({id:1,firstLogin:!1}).$promise}).then(function(){d.show(e.instant("MESSAGE_WELL_DONE"),"success"),f.path("/landing")})["catch"](function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("adminreset",{url:"/adminreset",templateUrl:"app/adminreset/adminreset.html",controller:"AdminResetCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/login.css"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.analytics",{url:"/analytics",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:17}}})}]),angular.module("xCallyShuttleApp").factory("Extracted",["$resource",function(a){return a("/api/analytics/extracted/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.analytics.extracted",{url:"/extracted",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("AnalyticExtractedListCtrl",["$scope","$translate","gridOptions","Extracted","uiGridConstants",function(a,b,c,d,e){a.moment=moment,a.Extracted=d,a.initView=function(){var b={exporterCsvFilename:"ExtractedReports.csv",columnDefs:[{name:"name"},{name:"createdAt",displayName:"APPLICATION_RUN_DATE",filterHeaderTemplate:'<div class="ui-grid-filter-container row"><div ng-repeat="colFilter in col.filters" class="col-md-6 col-md-offset-0 col-sm-5 col-sm-offset-0 col-xs-5 col-xs-offset-0"><div custom-grid-date-filter-header></div></div></div>',filters:[{name:"From",condition:e.filter.GREATER_THAN_OR_EQUAL,hasTime:!0},{name:"To",condition:e.filter.LESS_THAN_OR_EQUAL,hasTime:!0}]},{name:"startDate",displayName:"APPLICATION_START_DATE",filterHeaderTemplate:'<div class="ui-grid-filter-container row"><div ng-repeat="colFilter in col.filters" class="col-md-6 col-md-offset-0 col-sm-5 col-sm-offset-0 col-xs-5 col-xs-offset-0"><div custom-grid-date-filter-header></div></div></div>',filters:[{name:"From",condition:e.filter.GREATER_THAN_OR_EQUAL,hasTime:!0},{name:"To",condition:e.filter.LESS_THAN_OR_EQUAL,hasTime:!0}],sort:{direction:e.DESC,priority:0}},{name:"endDate",displayName:"APPLICATION_END_DATE",filterHeaderTemplate:'<div class="ui-grid-filter-container row"><div ng-repeat="colFilter in col.filters" class="col-md-6 col-md-offset-0 col-sm-5 col-sm-offset-0 col-xs-5 col-xs-offset-0"><div custom-grid-date-filter-header></div></div></div>',filters:[{name:"From",condition:e.filter.GREATER_THAN_OR_EQUAL,hasTime:!0},{name:"To",condition:e.filter.LESS_THAN_OR_EQUAL,hasTime:!0}]},{name:"output"},{name:"type"},{name:"status"},{name:"action",width:140,buttons:[{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"},{directive:"<motion-file-download data-ng-show=\"row.entity.status == 'completed'\" resource=\"grid.appScope.Extracted\" params=\"{id:row.entity.id,controller:'download'}\" mimetype=\"'application/'+row.entity.output.toLowerCase()\" filename=\"row.entity.name+'_'+row.entity.startDate.toString()+'_'+row.entity.endDate.toString()+'.'+row.entity.output.toLowerCase()\"></motion-file-download>"}]}]};a.gridOptions=c.gridOptions(d,b,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.analytics.extracted.list",{url:"/list",templateUrl:"app/analytic/extracted/list/list.html",controller:"AnalyticExtractedListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").factory("DefaultMetric",["$resource",function(a){return a("/api/analytics/metrics/default/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("AnalyticMetricListCreateModalCtrl",["$scope","$uibModalInstance","Metric","xAlert","$translate","report",function(a,b,c,d,e,f){a.forms={dashboard:void 0},a.item={},a.tables=f.tables,a.ok=function(){return c.save(a.item).$promise.then(function(){b.close()})["catch"](function(a){d.error(a)})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("AnalyticMetricListCtrl",["$scope","xAlert","Modal","$uibModal","$log","gridOptions","Metric","DefaultMetric","$translate",function(a,b,c,d,e,f,g,h,i){a.$translate=i,a.initView=function(){var b={exporterCsvFilename:"Metrics.csv",columnDefs:[{name:"name"},{name:"table",cellTemplate:"<div style=\"padding:5px\">{{'APPLICATION_'+row.entity.table.toUpperCase() | translate}}</div>"},{name:"description"},{name:"action",width:125,buttons:[{"class":"blue-hoki",href:"/analytics/metrics/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=f.gridOptions(g,b,a)},a.showMetric=function(a){d.open({animation:!0,templateUrl:"app/analytic/metric/list/view.modal.html",controller:"AnalyticMetricListViewModalCtrl",resolve:{metric:a}})},a.cloneMetric=function(c){return h.get({id:c,controller:"clone"}).$promise.then(function(){b.show(i.instant("MESSAGE_WELL_DONE"),"success"),a.gridOptions.getPage()})["catch"](function(a){b.error(a)})},a.create=function(){var c=d.open({animation:!0,templateUrl:"app/analytic/metric/list/create.modal.html",controller:"AnalyticMetricListCreateModalCtrl"});c.result.then(function(){b.show(i.instant("MESSAGE_WELL_DONE")+"!","success"),a.gridOptions.getPage()},function(){e.info("Modal dismissed at: "+new Date)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.analytics.metrics.list",{url:"/list",templateUrl:"app/analytic/metric/list/list.html",controller:"AnalyticMetricListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("AnalyticMetricListViewModalCtrl",["$scope","$uibModalInstance","metric","xAlert","$translate","report",function(a,b,c,d,e,f){a.item=c,a.tables=f.tables,a.close=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").factory("Metric",["$resource",function(a){return a("/api/analytics/metrics/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.analytics.metrics",{url:"/metrics",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("AnalyticMetricViewCtrl",["$scope","xAlert","$translate","$stateParams","$location","Metric","report",function(a,b,c,d,e,f,g){a.tables=g.tables,a.getMetric=function(){return f.get({id:d.id}).$promise.then(function(b){a.metric=b})["catch"](function(a){e.path("/analytics/metrics/list")})},a.updateMetric=function(){return f.update({id:d.id},a.metric).$promise.then(function(){b.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){b.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.analytics.metrics.view",{url:"/view/:id",templateUrl:"app/analytic/metric/view/view.html",controller:"AnalyticMetricViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.analytics.metrics.view.settings",{url:"/settings",templateUrl:"app/analytic/metric/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").factory("CustomReport",["$resource",function(a){return a("/api/analytics/reports/custom/:precontroller/:id/:controller/:action",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("DefaultReport",["$resource",function(a){return a("/api/analytics/reports/default/:id/:controller/:action",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("ReportListCopyModalCtrl",["$scope","$uibModalInstance","$log","customTreeData",function(a,b,c,d){a.customTreeData=d,a.forms={dashboard:void 0},a.customTreeConfig={multiple:!1,animation:!0,core:{error:function(a){c.error("treeCtrl: error from js tree - "+angular.toJson(a))},check_callback:!0}},a.ac=function(){return!0},a.initCustomScopeTree=function(){a.customTree=a.customTreeInstance.jstree(!0),a.customTree.deselect_all(),a.customTree.open_all()},a.ok=function(){a.customTree.get_selected(!0).length?b.close({parent:a.customTree.get_selected(!0).pop().id}):a.showAlert=!0},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("ReportListCreateModalCtrl",["$scope","$uibModalInstance","path",function(a,b,c){a.path=c,a.forms={dashboard:void 0},a.item={},a.ok=function(){a.item.model=JSON.stringify({title:a.item.name}),b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("ReportListExtractModalCtrl",["$scope","$uibModalInstance","$translate",function(a,b,c){a.daily=!1,a.dailySwitch={onText:c.instant("APPLICATION_TODAY"),offText:c.instant("APPLICATION_RANGE"),isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"primary"},a.dates={startDate:moment().subtract(1,"days").startOf("day"),endDate:moment().subtract(1,"days").endOf("day")},a.ranges={},a.ranges[c.instant("APPLICATION_YESTERDAY")]=[moment().subtract(1,"days").startOf("day"),moment().subtract(1,"days").endOf("day")],a.ranges[c.instant("APPLICATION_LAST_SEVEN_DAYS")]=[moment().subtract("days",7).startOf("day"),moment().subtract(1,"days").endOf("day")],a.ranges[c.instant("APPLICATION_LAST_THIRTY_DAYS")]=[moment().subtract("days",30),moment()],a.ranges[c.instant("APPLICATION_LAST_MONTH")]=[moment().subtract(1,"months").startOf("month"),moment().subtract(1,"months").endOf("month")],a.timepicker={timePickerIncrement:1,timePicker12Hour:!1},a.dailyTime={start:moment("00:00","HH:mm"),end:moment("23:59","HH:mm")},a.maxdate=moment().subtract(1,"days").endOf("day").format("YYYY-MM-DD HH:mm"),a.extract=function(c){var d={startDate:moment(a.dates.startDate).format("YYYY-MM-DD"),endDate:moment(a.dates.endDate).format("YYYY-MM-DD"),startTime:a.daily?moment(a.dailyTime.start).format("HH:mm"):moment(a.dates.startDate).format("HH:mm"),endTime:a.daily?moment(a.dailyTime.end).format("HH:mm"):moment(a.dates.endDate).format("HH:mm"),daily:a.daily,action:c};b.close(d)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("AnalyticReportListCtrl",["$scope","xAlert","$translate","$location","$log","Modal","$uibModal","FileSaver","Blob","gridOptions","CustomReport","DefaultReport","ReportTree","localStorageService",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){function o(){var b=n.get("lastMotionReportNode")||!1,c=n.get("lastMotionReportTree")||!1;return b&&c?(a[c+"Tree"].open_node({id:b}),a[c+"Tree"].select_node({id:b}),!0):!1}function p(b,c){var d={parent:c.id};a.selectedNode=b?a.defaultTree.get_path(c," / "):a.customTree.get_path(c," / "),a.gridOptions?a.gridOptions.getPage({parent:c.id},b?l:k):a.gridOptions=j.gridOptions(b?l:k,q,a,d)}var q={exporterCsvFilename:"reports.csv",columnDefs:[{name:"name"},{name:"description"},{name:"manage",width:120,buttons:[{"class":"{{grid.appScope.defaultTreeActive ? 'display-none' : 'blue-hoki'}}",href:"/analytics/reports/view/{{row.entity.id}}/settings",title:c.instant("APPLICATION_SETTINGS"),name:"settings"},{"class":"{{grid.appScope.defaultTreeActive ? 'display-none' : 'red-sunglo'}}",title:c.instant("APPLICATION_DELETE"),name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"},{"class":"green",title:c.instant("APPLICATION_COPY"),name:"copy",onClick:"grid.appScope.copy(row.entity.id)"},{"class":"purple",title:c.instant("APPLICATION_EXPORT"),name:"export",onClick:"grid.appScope.export(row.entity.id)"}]},{name:"actions",width:60,buttons:[{"class":"yellow",name:"preview",title:c.instant("APPLICATION_PREVIEW"),onClick:"grid.appScope.preview(row.entity.id)"},{"class":"green-turquoise",name:"run",title:c.instant("APPLICATION_RUN"),onClick:"grid.appScope.extract(row.entity.id)"}]}]};a.searchField="",a.ac=function(){return!0},a.initDefaultScopeTree=function(){a.defaultTree=a.defaultTreeInstance.jstree(!0),a.defaultTree.deselect_all(),a.defaultTree.close_all(),a.defaultTreeReady=!0,a.defaultTreeActive=!0,a.previousDefaultNode=""},a.initCustomScopeTree=function(){a.customTree=a.customTreeInstance.jstree(!0),a.customTree.deselect_all(),a.customTree.close_all(),a.customTreeReady=!0,a.previousCustomNode=""},a.$watchGroup(["defaultTreeReady","customTreeReady"],function(b,c,d){b[0]&&b[1]&&(o()||(a.defaultTree.open_node({id:1}),a.customTree.open_node({id:1}),a.defaultTree.select_node({id:"1"})))}),a.updateCustomTree=function(){var c={tree:angular.toJson(a.customTree.get_json("#",{flat:!0}))};return m.update({id:2},c).$promise.then(function(a){console.log("Custom Tree Updated")})["catch"](function(a){b.error(a)})},a.configTrees=function(){a.defaultTreeConfig={multiple:!1,animation:!0,core:{error:function(a){e.error("treeCtrl: error from js tree - "+angular.toJson(a))},check_callback:!0,themes:{name:"default",url:"../../../assets/css/jstree-metronic/style.css"}},plugins:["search"]},a.customTreeConfig={multiple:!1,animation:!0,core:{error:function(a){e.error("treeCtrl: error from js tree - "+angular.toJson(a))},check_callback:function(a,b,c,d,e){return console.log(a),!0},themes:{name:"default",url:"../../../assets/css/jstree-metronic/style.css"}},plugins:["contextmenu","dnd","search"],contextmenu:{items:function(b,d){var e={create:{label:c.instant("APPLICATION_CREATE"),action:function(c){a.customTree.create_node(b),a.customTree.open_node(b)}},rename:{label:c.instant("APPLICATION_RENAME"),action:function(c){a.customTree.edit(b)}},remove:{label:c.instant("APPLICATION_REMOVE"),action:function(c){a.deleteNode(b)}}};return"#"===b.parent&&(delete e.rename,delete e.remove),d(e),e}}}},a.deleteNode=function(d){var f=g.open({animation:!0,templateUrl:"app/analytic/report/list/deleteNode.modal.html",controller:["$scope","$uibModalInstance","node",function(a,b,c){a.node=c,a.ok=function(){b.close()},a.cancel=function(){b.dismiss("cancel")}}],resolve:{node:function(){return d.text}}});f.result.then(function(){return k["delete"]({precontroller:"node",id:d.id}).$promise.then(function(){b.show(c.instant("MESSAGE_WELL_DONE"),"success"),a.customTree.delete_node(d),a.previousCustomNode==d.id&&a.customTree.select_node({id:d.parent})})["catch"](function(a){b.error(a)})},function(){e.info("Modal dismissed at: "+new Date)})},a.searchTrees=function(){a.defaultTree.search(a.searchField),a.customTree.search(a.searchField)},a.selectDefaultNode=function(){if(a.customTreeReady){a.previousCustomNode="";var b=a.defaultTree.get_selected(!0),c=b.pop();if(a.defaultTree.deselect_node(b[0],!0),a.customTree.deselect_all(),a.defaultTree.select_node(c,!0),c.id===a.previousDefaultNode)return void console.log("def");a.previousDefaultNode=c.id,n.set("lastMotionReportNode",c.id),n.set("lastMotionReportTree","default"),a.defaultTreeActive=!0,p(!0,c)}},a.selectCustomNode=function(){if(a.defaultTreeReady){a.previousDefaultNode="";var b=a.customTree.get_selected(!0),c=b.pop();if(a.customTree.deselect_node(b[0],!0),a.defaultTree.deselect_all(),a.customTree.select_node(c,!0),c.id===a.previousCustomNode)return void console.log("cus");a.previousCustomNode=c.id,n.set("lastMotionReportNode",c.id),n.set("lastMotionReportTree","custom"),a.defaultTreeActive=!1,p(!1,c)}},a.getTrees=function(){return m.query().$promise.then(function(b){a.defaultTreeData=JSON.parse(b[0].tree),a.customTreeData=JSON.parse(b[1].tree),a.configTrees()})["catch"](function(a){b.error(a)})},a.create=function(){var c=g.open({animation:!0,templateUrl:"app/analytic/report/list/create.modal.html",controller:"ReportListCreateModalCtrl",resolve:{path:function(){return a.selectedNode}}});c.result.then(function(c){return c.parent=a.previousCustomNode,k.save(c).$promise.then(function(a){d.path("/analytics/reports/view/"+a.id+"/settings")})["catch"](function(a){b.error(a)})},function(){e.info("Modal dismissed at: "+new Date)})},a.copy=function(d){var f=a.defaultTreeActive?l:k,h=g.open({animation:!0,templateUrl:"app/analytic/report/list/copy.modal.html",controller:"ReportListCopyModalCtrl",resolve:{customTreeData:function(){return a.customTree.get_json("#",{flat:!0})}}});h.result.then(function(e){return f.save({id:d,controller:"copy"},e).$promise.then(function(){a.gridOptions.getPage(),b.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){b.error(a)})},function(){e.info("Modal dismissed at: "+new Date)})},a["export"]=function(c){var d=a.defaultTreeActive?l:k;return d.get({id:c,controller:"export"}).$promise.then(function(a){var b=new i([angular.toJson(a)],{type:"application/json;charset=utf-8"});h.saveAs(b,a.name+".json")})["catch"](function(a){b.error(a)})},a["import"]=function(d){var e=JSON.parse(d);e.parent=a.previousCustomNode;var f=!(!e.name||!e.parent),g=!0;return _.forEach(e.Fields,function(a){a.field&&a.alias||(g=!1)}),f&&g?k.save({controller:"import"},e).$promise.then(function(){a.gridOptions.getPage(),b.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){b.error(a)}):void b.show(c.instant("MESSAGE_INVALID_JSON"),"danger")},a.preview=function(b){g.open({animation:!0,templateUrl:"app/analytic/report/list/preview.modal.html",controller:"ReportListPreviewModalCtrl",size:"full",resolve:{report:function(){return{id:b,tree:a.defaultTreeActive?"default":"custom"}}}})},a.extract=function(d){var f=g.open({animation:!0,templateUrl:"app/analytic/report/list/extract.modal.html",controller:"ReportListExtractModalCtrl",size:"md",resolve:{report:function(){return{id:d,tree:a.defaultTreeActive?"default":"custom"}}}});f.result.then(function(e){e.daily||delete e.daily;var f=a.defaultTreeActive?l:k;return f.get(_.merge({id:d,controller:"extract"},e)).$promise.then(function(){b.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){b.error(a)})},function(){e.info("Modal dismissed at: "+new Date)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.analytics.reports.list",{url:"/list",templateUrl:"app/analytic/report/list/list.html",controller:"AnalyticReportListCtrl"})}]),angular.module("xCallyShuttleApp").controller("ReportListPreviewModalCtrl",["$scope","$uibModalInstance","report","xAlert","$translate","$timeout","CustomReport","DefaultReport",function(a,b,c,d,e,f,g,h){a.daily=!1,a.dailySwitch={onText:e.instant("APPLICATION_TODAY"),offText:e.instant("APPLICATION_RANGE"),isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"primary"},a.dates={startDate:moment().subtract(1,"days").startOf("day"),endDate:moment().subtract(1,"days").endOf("day")},a.ranges={},a.ranges[e.instant("APPLICATION_YESTERDAY")]=[moment().subtract(1,"days").startOf("day"),moment().subtract(1,"days").endOf("day")],a.ranges[e.instant("APPLICATION_LAST_SEVEN_DAYS")]=[moment().subtract("days",7).startOf("day"),moment().subtract(1,"days").endOf("day")],a.ranges[e.instant("APPLICATION_LAST_THIRTY_DAYS")]=[moment().subtract("days",30),moment()],a.ranges[e.instant("APPLICATION_LAST_MONTH")]=[moment().subtract(1,"months").startOf("month"),moment().subtract(1,"months").endOf("month")],a.timepicker={timePickerIncrement:1,timePicker12Hour:!1},a.dailyTime={start:moment("00:00","HH:mm"),end:moment("23:59","HH:mm")},a.maxdate=moment().subtract(1,"days").endOf("day").format("YYYY-MM-DD HH:mm");var i={offset:0,limit:25,sort:null,where:{},order:{}};a.gridOptions={paginationPageSizes:[10,25,50],paginationPageSize:25,useExternalPagination:!0,enableSorting:!1,enableFiltering:!0,useExternalFiltering:!0,enableGrouping:!1,enableColumnMenus:!1,treeRowHeaderAlwaysVisible:!1,gridMenuShowHideColumns:!1,enableGridMenu:!1,onRegisterApi:function(b){a.gridApi=b,b.pagination.on.paginationChanged(a,function(b,c){i.offset=(b-1)*c,i.limit=c,a.getPage()}),b.core.on.filterChanged(a,function(){var b=this.grid,c={};b.columns.forEach(function(a){a.filters[0].term&&(c[a.field]=a.filters[0].term)}),i.where=c,a.getPage()})}},a.getPage=function(){var b={offset:i.offset,limit:i.limit,startDate:moment(a.dates.startDate).format("YYYY-MM-DD"),endDate:moment(a.dates.endDate).format("YYYY-MM-DD"),startTime:a.daily?moment(a.dailyTime.start).format("HH:mm"):moment(a.dates.startDate).format("HH:mm"),endTime:a.daily?moment(a.dailyTime.end).format("HH:mm"):moment(a.dates.endDate).format("HH:mm"),daily:a.daily};_.forOwn(i.where,function(a,c){b[c]=a});var e="custom"===c.tree?g:h;return e.get(_.merge({id:c.id,controller:"preview"},b)).$promise.then(function(b){a.gridOptions.totalItems=b.count,a.gridOptions.paginationPageSizes[3]=b.count,a.gridOptions.data=b.rows,a.showResult=!0})["catch"](function(a){d.error(a)})},a.cancel=function(){b.dismiss("cancel")},f(function(){a.getPage()})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.analytics.reports",{url:"/reports",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").factory("ReportAgent",["$resource",function(a){return a("/api/report/agents/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("ReportIntegration",["$resource",function(a){return a("/api/report/integrations/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("ReportMember",["$resource",function(a){return a("/api/report/members/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("ReportTree",["$resource",function(a){return a("/api/analytics/reports/trees/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("AnalyticReportViewCtrl",["$scope","xAlert","$translate","$stateParams","$location","ReportAgent","ReportCall","ReportMailSession","ReportSmsSession","ReportMember","ReportQueue","ReportIntegration","ReportChatSession","DefaultReport","CustomReport","Metric","report",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){function r(c){var d=_.find(a.tables,{value:c}).resource;d.get({controller:"describe"}).$promise.then(function(b){a.tableFields=_.map(b,function(a,b){return"$promise"!==b&&"$resolved"!==b?{name:b,value:b}:void 0})})["catch"](function(a){b.error(a)})["finally"](function(){s(c)})}function s(c){return p.get({controller:"table",table:c}).$promise.then(function(b){_.forEach(b.rows,function(b){a.tableFields.push({name:"<strong>Metric.</strong>"+b.name,alias:b.name,value:b.metric,MetricId:b.id})})})["catch"](function(a){b.error(a)})}function t(a){return String(a).replace(/</g,"<").replace(/>/g,">")}function u(a){if(!a)return"";for(var b="(",c=0;c<a.rules.length;c++)if(c>0&&(b+=" <strong>"+a.operator+"</strong> "),a.rules[c].group)b+=u(a.rules[c].group);else switch(b+=a.rules[c].field,a.rules[c].condition){case"IS NULL":case"IS NOT NULL":b+=" "+t(a.rules[c].condition);break;case"IS EMPTY":b+=" = ''";break;case"IS NOT EMPTY":b+=" != ''";break;default:b+=" "+t(a.rules[c].condition)+" "+a.rules[c].value}return b+")"}a.$translate=c,a.tempReport={},a.tables=q.tables;var v={group:{operator:"AND",rules:[]}};a.getReport=function(){return a.firstLoad=!0,o.get({id:d.id}).$promise.then(function(b){a.report=b,_.forEach(a.report.Fields,function(a){delete a.id}),a.report.conditions=a.report.conditions?JSON.parse(a.report.conditions):_.clone(v,!0),a.report.Fields.length&&a.getPreview()})["catch"](function(a){console.error(a),e.path("/analytics/reports/list")})},a.randomName=function(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")},a.$watch("report.table",function(b,c){b&&(r(b),c&&(a.tempReport[c]={conditions:a.report.conditions,fields:a.report.Fields}),a.firstLoad?a.firstLoad=!1:a.tempReport[b]?(a.report.Fields=a.tempReport[b].fields,a.report.conditions=a.tempReport[b].conditions):(a.report.Fields=[],a.report.conditions=_.clone(v,!0)))},!0),a.setMetricId=function(b,c){a.report.Fields[c].MetricId=b.MetricId?b.MetricId:null,a.report.Fields[c].alias=b.MetricId?b.alias:b.name},a.groupByField=[{name:"APPLICATION_YES",value:!0},{name:"APPLICATION_NO",value:!1}],a.functions=[{name:"Sum",value:"SUM"},{name:"Count",value:"COUNT"},{name:"Count Distinct",value:"COUNT DISTINCT"},{name:"Maximum",value:"MAX"},{name:"Minimum",value:"MIN"},{name:"Average",value:"AVG"},{name:"Group Concat",value:"GROUP_CONCAT"},{name:"Group Concat(asc)",value:"GROUP_CONCAT ASC"},{name:"Group Concat(desc)",value:"GROUP_CONCAT DESC"}],a.formatFunctions=[{name:"Sec To Time",value:"SEC_TO_TIME"},{name:"Date",value:"DATE"},{name:"Hour",value:"HOUR"},{name:"Round",value:"ROUND"},{name:"Unix TimeStamp",value:"UNIX_TIMESTAMP"}],a.addField=function(){a.report.Fields.push({groupBy:!1,custom:!1})},a.removeField=function(b){a.report.Fields.splice(b,1)},a.sortableOptions={"ui-floating":!0,cancel:".unsortable",handle:".report-field-handle",axis:"y"},a.toggleCustom=function(b){b.custom=!b.custom,b.custom||_.find(a.tableFields,{value:b.field})||(b.field=null)},a.updateReport=function(){if(a.report.Fields.length){var e=angular.copy(a.report);return console.log(e.conditions),e.conditions=angular.toJson(e.conditions),_.forEach(e.Fields,function(a){a.custom&&delete a.MetricId}),o.update({id:d.id},e).$promise.then(function(){b.show(c.instant("MESSAGE_WELL_DONE")+"!","success"),a.getPreview()})["catch"](function(a){b.error(a)})}b.show(c.instant("MESSAGE_SELECT_A_FIELD"),"danger")},a.$watch("report.conditions",function(b){a.output=b?u(b.group):"()"},!0),a.getPreview=function(){return a.gridOptions=null,o.get({id:d.id,controller:"preview",limit:20}).$promise.then(function(b){a.gridOptions={enableFiltering:!0,treeRowHeaderAlwaysVisible:!1,enableGridMenu:!0, +data:b.rows}})["catch"](function(a){console.log(a),b.show(c.instant(a.message||"MESSAGE_QUERY_NOT_VALID"),"warning")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.analytics.reports.view",{url:"/view/:id",templateUrl:"app/analytic/report/view/view.html",controller:"AnalyticReportViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.analytics.reports.view.settings",{url:"/settings",templateUrl:"app/analytic/report/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels",{url:"/channels",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:6}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat",{url:"/chat",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:8}}})}]),angular.module("xCallyShuttleApp").factory("ChatEnquiry",["$resource",function(a){return a("/api/chat/enquiries/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("ChatReport",["$resource",function(a){return a("/api/report/chats/:id/:controller1/:controller2",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("ChatVisitor",["$resource",function(a){return a("/api/chat/visitors/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("ChatMessage",["$resource",function(a){return a("/api/chat/messages/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("ChatRoom",["$resource",function(a){return a("/api/chat/rooms/:id/:controller",{id:"@id"},{me:{method:"GET",isArray:!0,params:{id:"me"}},users:{method:"GET",params:{id:"users"}},externals:{method:"GET",isArray:!0,params:{id:"type",controller:"external"}},groups:{method:"GET",isArray:!0,params:{id:"groups"}},update:{method:"PUT"},patch:{method:"PATCH"}})}]),angular.module("xCallyShuttleApp").controller("ChatOfflineListCtrl",["$scope","ChatEnquiry","gridOptions","uiGridConstants",function(a,b,c,d){a.initView=function(){var e={exporterCsvFilename:"chat_offline_messages.csv",columnDefs:[{name:"username",cellClass:"text-center"},{name:"email",cellClass:"text-center"},{name:"ChatWebsite.name",displayName:"Website",cellClass:"text-center"},{name:"createdAt",displayName:"createdAt",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span am-time-ago="row.entity.createdAt"></span></div>',field:"createdAt",sort:{direction:d.DESC,priority:0}},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/channels/chat/offline/view/{{row.entity.id}}",name:"detail"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.fullname, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,e,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.offline.list",{url:"/list",templateUrl:"app/channels/chat/offline/list/list.html",controller:"ChatOfflineListCtrl"})}]),angular.module("xCallyShuttleApp").directive("enquiryMessage",["$rootScope","$translate","MailMessage","List","xAlert",function(a,b,c,d,e){return{restrict:"E",scope:{message:"=",listId:"="},templateUrl:"app/channels/chat/offline/message/message.directive.html",link:function(c){c.openContact=function(f){return c.listId?d.save({listId:c.listId,controller:"contacts"},{email:f}).$promise.then(function(b){var c=_.find(a.$root.workspaces,{contactID:b.id});c?c.active=!0:a.$root.workspaces.push({active:!0,"class":"icon-user",contactID:b.id,name:b.email,type:"contact"})})["catch"](function(a){e.error(a)}):void e.show(b.instant("MESSAGE_NO_LIST_CONFIGURED"),"info")}}}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.offline",{url:"/offline",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:32}}})}]),angular.module("xCallyShuttleApp").controller("ChatOfflineViewCtrl",["$scope","$stateParams","$translate","$rootScope","ChatEnquiry","List","xAlert",function(a,b,c,d,e,f,g){a.initView=function(){return e.get({id:b.id}).$promise.then(function(b){a.enquiry=b})["catch"](function(a){g.error(a)})},a.openContact=function(b){return a.enquiry.ChatWebsite.ListId?f.save({listId:a.enquiry.ChatWebsite.ListId,controller:"contacts"},{email:b}).$promise.then(function(a){var b=_.find(d.$root.workspaces,{contactID:a.id});b?b.active=!0:d.$root.workspaces.push({active:!0,"class":"icon-user",contactID:a.id,name:a.email,type:"contact"})})["catch"](function(a){g.error(a)}):void g.show(c.instant("MESSAGE_NO_LIST_CONFIGURED"),"info")}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.offline.view",{url:"/view/:id",templateUrl:"app/channels/chat/offline/view/view.html",controller:"ChatOfflineViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("ChatOnlineListCtrl",["$scope","ChatRoom","gridOptions",function(a,b,c){a.initView=function(){var d={exporterCsvFilename:"chat_online_messages.csv",columnDefs:[{name:"ChatVisitor.fullname",displayName:"APPLICATION_FULLNAME",cellClass:"text-center"},{name:"ChatVisitor.email",displayName:"APPLICATION_EMAIL",cellClass:"text-center"},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/channels/chat/online/view/{{row.entity.id}}/detail",name:"detail"}]}]};a.gridOptions=c.gridOptions(b,d,a,{id:"online"})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.online.list",{url:"/list",templateUrl:"app/channels/chat/online/list/list.html",controller:"ChatOnlineListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.online",{url:"/online",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:8}}})}]),angular.module("xCallyShuttleApp").controller("ChatOnlineViewCtrl",["$scope","$stateParams","ChatRoom",function(a,b,c){a.initView=function(){return a.config={autoHideScrollbar:!1,theme:"light",advanced:{updateOnContentResize:!0},setHeight:400,scrollInertia:0},c.get({id:b.id}).$promise.then(function(b){a.chatRoom=b})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.online.view",{url:"/view/:id",templateUrl:"app/channels/chat/online/view/view.html",controller:"ChatOnlineViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.chat.online.view.detail",{url:"/detail",templateUrl:"app/channels/chat/online/view/view.detail.html",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/news.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("PreviewCtrl",["$scope",function(a){a.message="Hello"}]),angular.module("xCallyShuttleApp").directive("preview",["$rootScope",function(a){return{templateUrl:"app/channels/chat/preview/preview.html",restrict:"EA",link:function(a,b,c){}}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("preview",{url:"/preview",templateUrl:"app/channels/chat/preview/preview.html",controller:"PreviewCtrl",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:8}}})}]),angular.module("xCallyShuttleApp").factory("ChatQueue",["$resource",function(a){return a("/api/chat/queues/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("ChatQueueListCtrl",["$scope","ChatQueue","gridOptions","Auth","$uibModal",function(a,b,c,d,e){a.initView=function(){a.Auth=d;var e={exporterCsvFilename:"chat_queues.csv",columnDefs:[{name:"name"},{name:"description"},{name:"strategy"},{name:"timeout"},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/channels/chat/queues/view/{{row.entity.id}}/settings",name:"settings"},{"class":"green-meadow",href:"/channels/chat/queues/view/{{row.entity.id}}/agents",name:"agents",hide:"user"===d.getCurrentUser().role},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,e,a)},a.createItem=function(){var b=e.open({animation:!0,templateUrl:"app/channels/chat/queue/list/list.create.modal.html",controller:"ChatQueueListCreateCtrl",size:"lg"});b.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("ChatQueueListCreateCtrl",["$scope","$uibModalInstance","$translate","xAlert","ChatQueue","Team","strategies",function(a,b,c,d,e,f,g){a.form={},a.strategies=g,a.item={penalty:0,agents:[]},a.getTeams=function(){return f.get({controller:"associations"}).$promise.then(function(b){a.teams=b.rows}).then(function(){ComponentsDropdowns.bindQueue(a.teams,[],function(){return{select:function(b){a.item.agents=_.union(a.item.agents,b)},deselect:function(b){a.item.agents=_.difference(a.item.agents,b)}}})})["catch"](function(a){console.error(a)})},a.save=function(){return e.save(a.item).$promise.then(function(a){d.show(c.instant("MESSAGE_WELL_DONE"),"success"),b.close(a)})["catch"](function(a){d.error(a)})},a.cancel=function(){b.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.queues.list",{url:"/list",templateUrl:"app/channels/chat/queue/list/list.html",controller:"ChatQueueListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.queues",{url:"/queues",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:30}}})}]),angular.module("xCallyShuttleApp").controller("ChatQueueViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","ChatQueue","Team","Auth","strategies",function(a,b,c,d,e,f,g,h,i){a.Auth=h,a.strategies=i;var j=function(){return{select:function(b){return f.save({id:a.queue.id,controller:"agents"},{agents:b,penalty:a.queue.penalty}).$promise.then(function(){a.getTeams()})["catch"](function(a){console.log(a)})},deselect:function(b){return f["delete"]({id:a.queue.id,controller:"agents",agents:b}).$promise.then(function(){a.getTeams()})["catch"](function(a){console.log(a)})}}};a.getQueue=function(){b.get("/api/chat/queues/"+e.id).success(function(b){b.penalty=0,a.queue=b}).error(function(a){console.error(a)})},a.updateChatQueue=function(){var f=angular.copy(a.queue);b.put("/api/chat/queues/"+e.id,f).success(function(){c.show(d.instant("MESSAGE_WELL_DONE")+"!","success")}).error(function(b){a.queue=f,b.errors.forEach(function(a){c.error(err)})})},a.getTeams=function(){return g.get({controller:"associations"}).$promise.then(function(b){return a.teams=b.rows,f.get({id:e.id,controller:"agents"}).$promise}).then(function(b){ComponentsDropdowns.bindChatQueue(a.teams,_.map(b.rows,function(a){return{id:a.id,penalty:a.UserHasChatQueue.penalty}}),j)})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.queues.view",{url:"/view/:id",templateUrl:"app/channels/chat/queue/view/view.html",controller:"ChatQueueViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.chat.queues.view.settings",{url:"/settings",templateUrl:"app/channels/chat/queue/view/view.settings.html"}).state("main.channels.chat.queues.view.agents",{url:"/agents",templateUrl:"app/channels/chat/queue/view/view.agents.html",cache:!1,serie:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.realtime",{url:"/realtime",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:33}}})}]),angular.module("xCallyShuttleApp").controller("ChatRealtimeViewAgentCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","Agent","Pause","Action","ChatQueue","usSpinnerService","$q","uiGridConstants","Auth","$timeout",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){function p(){return k.spin("grid-spinner"),g.get(u).$promise.then(function(b){a.gridOptions.totalItems=b.count,a.gridOptions.data=[],b.rows.forEach(function(a){r(a)})})["catch"](function(a){f.error(a)})["finally"](function(){k.stop("grid-spinner")})}function q(){e.socket.on("agent:save",function(b){b=b.newValues||b;var c=_.find(a.gridOptions.data,{agentId:b.id,isAgent:!0});c&&(c.online=_.has(b,"online")?b.online:c.online,c.lastLoginAt=_.has(b,"lastLoginAt")?b.lastLoginAt:c.lastLoginAt,c.pause=_.has(b,"chatPause")?b.chatPause:c.chatPause,c.pauseType=_.has(b,"pauseType")?b.pauseType:c.pauseType,c.lastPauseAt=_.has(b,"lastPauseAt")?b.lastPauseAt:c.lastPauseAt,c.ipaddr=_.has(b,"ipaddr")?b.ipaddr:c.ipaddr,c.port=_.has(b,"port")?b.port:c.port,c.fullcontact=_.has(b,"fullcontact")?b.fullcontact:c.fullcontact,c.useragent=_.has(b,"useragent")?b.useragent:c.useragent,c.lastms=_.has(b,"lastms")?b.lastms:c.lastms,c.internal=_.has(b,"internal")?b.internal:c.internal,_.map(a.gridOptions.data,function(a){a.isAgent||a.agentId!==b.id||(a.online=_.has(b,"online")?b.online:a.online)}))}),e.socket.on("agent:remove",function(b){_.remove(a.gridOptions.data,{agentId:b.id})}),e.socket.on("user_has_chat_queue:save",function(b){var c=_.includes(_.map(a.CurrentUser.PChatQueues,"id"),b.ChatQueueId)||n.isAdmin();if(c){var d=_.find(a.gridOptions.data,{agentId:b.UserId,isAgent:!0});if(d){var e=a.gridOptions.data.indexOf(d);a.gridOptions.data.splice(e+1,0,{isAgent:!1,agentId:b.UserId,queue:b.queue,queueId:b.ChatQueueId,agent:b.membername,online:d.online})}}}),e.socket.on("user_has_chat_queue:remove",function(b){_.remove(a.gridOptions.data,{agentId:b.UserId,queueId:b.ChatQueueId})})}function r(b){a.gridOptions.data.push({isAgent:!0,agentId:b.id,agent:b.name,online:b.online,lastLoginAt:b.lastLoginAt,lastPauseAt:b.lastPauseAt,pause:b.chatPause,pauseType:b.pauseType,ipaddr:b.ipaddr,port:b.port,fullcontact:b.fullcontact,useragent:b.useragent,lastms:b.lastms,internal:b.internal,$$treeLevel:0}),b.ChatQueues&&b.ChatQueues.forEach(function(c){a.gridOptions.data.push({isAgent:!1,agentId:b.id,queue:c.name,queueId:c.id,agent:b.name,online:b.online})})}function s(){return h.get().$promise.then(function(b){a.pauses=b.rows,e.syncUpdates("pause",a.pauses)})["catch"](function(a){f.error(a)})}function t(){return j.get().$promise.then(function(b){a.chatQueues=b.rows,e.syncUpdates("chat_queue",a.chatQueues)})["catch"](function(a){f.error(a)})}a.chatQueues=[];var u={controller:"realtime",controller1:"chat",offset:0,limit:10};a.moment=moment,a.initAgents=function(){a.gridOptions={enableGridMenu:!0,headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,useExternalPagination:!0,useExternalSorting:!0,useExternalFiltering:!0,multiSelect:!0,showTreeExpandNoChildren:!0,columnDefs:[{name:"name",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.isAgent">{{row.entity.agent}} <{{row.entity.internal}}></div>'},{name:"online",displayName:"APPLICATION_ONLINE",width:150,headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.online != null && row.entity.isAgent"><i class="fa" data-ng-class="{\'font-green\':row.entity.online, \'font-red\':!row.entity.online,\'fa-user\':row.entity.online,\'fa-user-times\':!row.entity.online}"></i> <i data-ng-if="row.entity.online" class="fa fa-sign-out font-red pointer-cursor" title="logout" data-ng-click="grid.appScope.agentLogout(row.entity.agent,row.entity.agentId)"></i> <span data-ng-if="row.entity.online && grid.appScope.showTimers" class="left-margin"><css-timer start-time="row.entity.lastLoginAt"></css-timer></span></div>',filter:{type:m.filter.SELECT,selectOptions:[{value:"true",label:"ONLINE"},{value:"false",label:"OFFLINE"}]}},{name:"chatPause",displayName:"APPLICATION_PAUSE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'</div><div data-ng-if="row.entity.pause != null && row.entity.online" class="ui-grid-vcenter"><i data-ng-if="row.entity.pause" data-ng-click="grid.appScope.pause(row.entity,\'unpause\')" class="fa fa-play font-green pointer-cursor left-margin" title="{{\'APPLICATION_RESUME\' | translate}}"></i><i class="fa fa-pause font-yellow pointer-cursor" data-ng-click="grid.appScope.pause(row.entity,\'pause\',\'DEFAULT PAUSE\')" title="{{\'APPLICATION_DEFAULT_PAUSE\' | translate}}"></i><select data-ng-if="grid.appScope.pauses.length" class="pause-select pointer-cursor" data-ng-model="grid.appScope.pauseType" data-ng-change="grid.appScope.pause(row.entity,\'pause\',grid.appScope.pauseType)"><option class="pointer-cursor" data-ng-repeat="pause in grid.appScope.pauses">{{pause.name}}</option></select> <span data-ng-if="row.entity.pause">({{row.entity.pauseType}})</span><span data-ng-if="row.entity.pause && grid.appScope.showTimers" class="left-margin"><css-timer start-time="row.entity.lastPauseAt"></css-timer></span></div>',filter:{type:m.filter.SELECT,selectOptions:[{value:"true",label:"PAUSED"},{value:"false",label:"NOT PAUSED"}]},enableSorting:!1,enableColumnMenu:!1},{name:"queue",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"action",displayName:"",width:170,cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><button data-ng-if="row.entity.queueId" class="btn btn-xs red-sunglo" data-ng-click="grid.appScope.leaveQueue(row.entity.agentId,row.entity.queueId)"><i class="icon-ban"></i> {{\'APPLICATION_LEAVE\' | translate}}</button><button data-ng-if="row.entity.isAgent && row.treeNode.children.length < grid.appScope.chatQueues.length" class="btn btn-xs blue-hoki" data-ng-click="grid.appScope.joinQueue(row.entity.agentId)"><i class="icon-plus"></i> {{\'APPLICATION_JOIN_QUEUE\' | translate}}</button><div>',enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1}],data:[],gridMenuTitleFilter:function(a){var b=l.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){v(a.gridApi.core.getVisibleRows(a.gridApi.grid).length)}),a.gridApi.treeBase.on.rowExpanded(a,function(b){v(a.gridApi.core.getVisibleRows(a.gridApi.grid).length+b.treeNode.children.length)}),a.gridApi.treeBase.on.rowCollapsed(a,function(b){v(a.gridApi.core.getVisibleRows(a.gridApi.grid).length-b.treeNode.children.length)}),a.gridApi.core.on.sortChanged(a,function(a,b){0===b.length?u.order=null:u.order=b[0].name+" "+b[0].sort.direction.toUpperCase(),p()}),a.gridApi.pagination.on.paginationChanged(a,function(a,b){u.offset=(a-1)*b,u.limit=b,p()}),a.gridApi.core.on.filterChanged(a,function(){var a=this.grid;a.columns.forEach(function(a){a.filters[0].term?u[a.name]=a.filters[0].term:delete u[a.name]}),p()})}},p(),s(),t(),o(function(){q()})};var v=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("agent"),e.unsyncUpdates("user_has_chat_queue")}),a.pause=function(b,c,e){return e&&(a.pauseType=null),i.save({name:c,agent:b.agentId,data2:b.agent,type:e||"DEFAULT PAUSE",data4:e||"DEFAULT PAUSE",channel:"chat"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.joinQueue=function(e){var g=c.open({animation:!0,templateUrl:"app/channels/chat/realtime/view/agent/queue.modal.add.html",controller:"ChatRealtimeViewAgentQueueModalCtrl",resolve:{queues:function(){return _.reject(a.chatQueues,function(b){return!!_.find(a.gridOptions.data,{queue:b.name,isAgent:!1,agentId:e})})}}});g.result.then(function(b){return i.save({name:"QueueAdd",agent:e,queues:_.filter(a.chatQueues,function(a){return _.includes(b.queues,a.id)}),channel:"chat",data1:e,data3:b.queues.join(","),data4:"chat"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},function(){b.info("Modal dismissed at: "+new Date)})},a.leaveQueue=function(a,b){return i.save({name:"QueueRemove",agent:a,queueId:b,channel:"chat",data1:a,data3:b,data4:"chat"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.showInfo=function(a){c.open({animation:!0,templateUrl:"app/channels/chat/realtime/view/agent/agent.modal.info.html",controller:"ChatRealtimeViewAgentInfoModalCtrl",resolve:{agent:a}})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.realtime.view.agents",{url:"/agents",templateUrl:"app/channels/chat/realtime/view/agent/agent.html",controller:"ChatRealtimeViewAgentCtrl"})}]),angular.module("xCallyShuttleApp").controller("ChatRealtimeViewAgentInfoModalCtrl",["$scope","$uibModalInstance","$http","agent",function(a,b,c,d){a.agent=d,a.close=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("ChatRealtimeViewAgentQueueModalCtrl",["$scope","$uibModalInstance","$http","queues",function(a,b,c,d){a.queues=d,a.item={},a.save=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("ChatRealtimeViewApplicationCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","ReportChatSession","usSpinnerService","$q","uiGridConstants","$timeout",function(a,b,c,d,e,f,g,h,i,j,k){function l(){return h.spin("spinner-grid"),g.get({controller:"waiting",controller2:"applications"}).$promise.then(function(b){a.gridOptions.data=b.rows})["catch"](function(a){f.error(a)})["finally"](function(){m(),h.stop("spinner-grid")})}function m(){e.socket.on("report_chat_session:save",function(b){var c=_.find(a.gridOptions.data,{id:b.id});c?(_.merge(c,b),b.leaveAt&&k(function(){_.remove(a.gridOptions.data,{id:b.id})},1e4)):b.leaveAt||a.gridOptions.data.push(b)}),e.socket.on("report_chat_session:remove",function(b){_.remove(a.gridOptions.data,{id:b.id})})}a.moment=moment,a.initApplications=function(){a.gridOptions={headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,columnDefs:[{name:"uniqueid",displayName:"APPLICATION_UNIQUEID",headerCellFilter:"translate"},{name:"websitename",displayName:"APPLICATION_WEBSITE",headerCellFilter:"translate"},{name:"application",displayName:"APPLICATION_APPLICATION",headerCellFilter:"translate"},{name:"status",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span data-ng-if="!row.entity.leaveAt">{{\'APPLICATION_QUEUESTATUS_WAITING\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.abandon">{{\'APPLICATION_QUEUESTATUS_ABANDON\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.complete">{{\'APPLICATION_QUEUESTATUS_COMPLETE\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.timeout">{{\'APPLICATION_TIMEOUT\' | translate}}</span> <span data-ng-if="!row.entity.leaveAt && grid.appScope.showTimers"><css-timer start-time="row.entity.updatedAt"></css-timer></span></div>',enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1},{name:"membername",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.membername || ''}}</span></div>"},{name:"queuename",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.queuename || ''}}</span></div>"}],data:[],gridMenuTitleFilter:function(a){var b=i.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){n(a.gridOptions.data.length)})}},l()};var n=function(a){var b=a?30*a+60:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("report_chat_session")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.realtime.view.applications",{url:"/applications",templateUrl:"app/channels/chat/realtime/view/application/application.html",controller:"ChatRealtimeViewApplicationCtrl"})}]),angular.module("xCallyShuttleApp").controller("ChatRealtimeViewCtrl",["$scope",function(a){a.agents=[{name:"Queues",link:"main.chat.realtime.view.agent.queues"},{name:"Timeline",link:"main.chat.realtime.view.agent.timeline"}],a.sessions=[{name:"Sessions",link:"main.chat.realtime.view.sessions"}],a.timerSwitch={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"primary"},a.showTimers=!1}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.realtime.view",{url:"/view",templateUrl:"app/channels/chat/realtime/view/view.html",controller:"ChatRealtimeViewCtrl"})}]),angular.module("xCallyShuttleApp").factory("ReportChatSession",["$resource",function(a){return a("/api/report/chat/sessions/:id/:controller/:controller2",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.room.external",{url:"/external",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("ChatRoomExternalListCtrl",["$scope","$timeout","socket","Auth","ChatRoom","usSpinnerService","Tag","$uibModal","uibButtonConfig","uiGridConstants",function(a,b,c,d,e,f,g,h,i,j){function k(){return g.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a)})}a.openChat=function(b){return e.get({id:b.id}).$promise.then(function(b){var c=_.find(a.workspaces,{id:b.id,type:"chatRoom"});c?c.active=!0:a.workspaces.push({id:b.id,name:b.ChatVisitor.fullname,type:"chatRoom","class":"icon-bubble",active:!0})})["catch"](function(a){console.error(a)})},a.initView=function(){i.activeClass="green-haze",a.id=[],a.query={status:"OPEN",tags:[]},a.gridOptions={enableGridMenu:!1,enableFiltering:!0,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,flatEntityAccess:!0,showGridFooter:!0,fastWatch:!0,columnDefs:[{name:"tags",displayName:"",headerCellTemplate:'<i class="icon-tag" style="margin-top: 8px; margin-left: 8px;"></i>',cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><i data-ng-class=\"row.entity.tags.length ? 'icon-tag' : ''\" title=\"{{row.entity.tags}}\"></i></div>",width:30,enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"id",displayName:"ID",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><span>#{{row.entity.id}}</span></div>",width:75,enableSorting:!0,enableFiltering:!0,enableColumnMenu:!1},{name:"userpic",displayName:"",width:35,cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div> <ng-letter-avatar height="20" width="20" fontsize="12" data="{{row.entity.ChatVisitor.fullname}}" avatarcustombgcolor="#B0B0B0" charCount="2" avatarcustomborder="border:2px solid #EA4C61" shape="round"></ng-letter-avatar> </div>',enableColumnMenu:!1,enableSorting:!1,enableFiltering:!1},{name:"agent",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span style="padding-left: 5px;" class="pull-left">{{row.entity.Users[0].fullname}}</span></div>',enableSorting:!0,enableFiltering:!0,enableColumnMenu:!0},{name:"fullname",displayName:"APPLICATION_CUSTOMER_NAME",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span style="padding-left: 5px;" class="pull-left">{{row.entity.ChatVisitor.fullname}}</span></div>',enableSorting:!0,enableFiltering:!0,enableColumnMenu:!0},{name:"contact",displayName:"APPLICATION_CUSTOMER_EMAIL",headerCellFilter:"translate"},{name:"website",displayName:"APPLICATION_WEBSITE",headerCellFilter:"translate",cellClass:"text-center"},{name:"disposition",displayName:"APPLICATION_DISPOSITION",headerCellFilter:"translate"},{name:"createdAt",displayName:"APPLICATION_CREATED_AT",headerCellFilter:"translate",cellFilter:"date:'dd/MM/yyyy HH:mm'",width:120,enableFiltering:!1,sort:{direction:j.DESC}},{name:"action",displayName:"APPLICATION_ACTION",headerCellFilter:"translate",cellTemplate:'<div><a class="btn btn-xs green-meadow" href="#" data-ng-click="grid.appScope.openChat(row.entity)"><i class="icon-bubble"></i></a></div>',cellClass:"ui-grid-vcenter",width:75,enableFiltering:!1,enableSorting:!1,enableColumnMenu:!1}],data:[],onRegisterApi:function(b){a.gridApi=b,a.gridApi.selection&&(a.gridApi.selection.on.rowSelectionChanged(a,function(b){b.isSelected?a.id.push(a.gridApi.grid.options.primaryKey?b.entity[a.gridApi.grid.options.primaryKey]:b.entity.id):_.pull(a.id,a.gridApi.grid.options.primaryKey?b.entity[a.gridApi.grid.options.primaryKey]:b.entity.id)}),a.gridApi.selection.on.rowSelectionChangedBatch(a,function(b){b[0].isSelected?a.id=_.union(a.id,_.map(b,a.gridApi.grid.options.primaryKey?"entity."+a.gridApi.grid.options.primaryKey:"entity.id")):_.map(b,a.gridApi.grid.options.primaryKey?"entity."+a.gridApi.grid.options.primaryKey:"entity.id").forEach(function(b){_.pull(a.id,b)})}))}},a.getPage(),k()},a.tagItems=function(){h.open({animation:!0,templateUrl:"app/channels/chat/room/view.tags.modal.html",controller:"ChatRoomViewModalTagCtrl",resolve:{id:function(){return a.id}}}).result.then(function(){a.gridApi.selection.clearSelectedRows(),a.id=[]})},a.onChanged=function(){a.getPage()},a.$watch("query.status",function(){a.getPage()},!0),a.getPage=function(){return f.spin("spinner-grid"),e.get(_.merge({id:"externals"},a.query)).$promise.then(function(b){a.gridOptions.data=b.rows})["catch"](function(a){console.error(a)})["finally"](function(){f.stop("spinner-grid")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.room.external.list",{url:"/list",templateUrl:"app/channels/chat/room/external/list/list.html",controller:"ChatRoomExternalListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.room.group",{url:"/group",template:"<div ui-view></div>", +"abstract":!0})}]),angular.module("xCallyShuttleApp").controller("ChatRoomGroupListCtrl",["$scope","$timeout","Auth","ChatRoom","usSpinnerService","Tag","uibButtonConfig","uiGridConstants","$uibModal",function(a,b,c,d,e,f,g,h,i){function j(){return f.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a)})}a.getFullnames=function(a){var b=_.without(_.map(a.Users,"fullname"),c.getCurrentUser().fullname);return a.ChatVisitor&&b.unshift(a.ChatVisitor.fullname),b.join(", ")},a.openChat=function(b){return d.get({id:b.id}).$promise.then(function(c){var d=_.find(a.workspaces,{id:c.id,type:"chatRoom"});d?d.active=!0:a.workspaces.push({id:c.id,data:b,name:a.getFullnames(c),type:"chatRoom","class":"icon-bubble",active:!0})})["catch"](function(a){console.error(a)})},a.initView=function(){g.activeClass="green-haze",a.id=[],a.query={status:"OPEN",tags:[]},a.currentUser=c.getCurrentUser(),a.gridOptions={enableGridMenu:!1,enableColumnResizing:!0,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,flatEntityAccess:!0,showGridFooter:!0,fastWatch:!0,columnDefs:[{name:"tags",displayName:"",headerCellTemplate:'<i class="icon-tag" style="margin-top: 8px; margin-left: 8px;"></i>',cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><i data-ng-class=\"row.entity.tags.length ? 'icon-tag' : ''\" title=\"{{row.entity.tags}}\"></i></div>",width:30,enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"id",displayName:"ID",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><span>#{{row.entity.id}}</span></div>",width:75,enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"userpic",displayName:"",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div> <ng-letter-avatar data-ng-if="row.entity.ChatVisitor" height="20" width="20" fontsize="12" data="{{row.entity.ChatVisitor.fullname}}" avatarcustombgcolor="#B0B0B0" charCount="2" avatarcustomborder="border:2px solid #EA4C61" shape="round"></ng-letter-avatar> <ng-letter-avatar data-ng-repeat="user in row.entity.Users | filter:{ id: \'!\' + grid.appScope.currentUser.id} track by user.id" style="margin-right: 3px;" height="20" width="20" fontsize="12" data="{{user.fullname}}" avatarcustombgcolor="#B0B0B0" charCount="2" avatarcustomborder="border:2px solid #3399CC" shape="round"></ng-letter-avatar> </div>',enableColumnMenu:!1,enableSorting:!1,enableFiltering:!1},{name:"Users",displayName:"APPLICATION_MEMBERS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{grid.appScope.getFullnames(row.entity)}}</div>",enableSorting:!0,enableFiltering:!0,enableColumnMenu:!0},{name:"contact",displayName:"APPLICATION_CUSTOMER_EMAIL",headerCellFilter:"translate"},{name:"website",displayName:"APPLICATION_WEBSITE",headerCellFilter:"translate",cellClass:"text-center"},{name:"disposition",displayName:"APPLICATION_DISPOSITION",headerCellFilter:"translate"},{name:"createdAt",displayName:"APPLICATION_CREATED_AT",headerCellFilter:"translate",cellFilter:"date:'dd/MM/yyyy HH:mm'",width:120,enableFiltering:!1,sort:{direction:h.DESC}},{name:"action",displayName:"APPLICATION_ACTION",headerCellFilter:"translate",cellTemplate:'<div><a class="btn btn-xs green-meadow" href="#" data-ng-click="grid.appScope.openChat(row.entity)"><i class="icon-bubble"></i></a></div>',cellClass:"ui-grid-vcenter",width:75,enableFiltering:!1,enableSorting:!1,enableColumnMenu:!1}],data:[]},a.getPage(),j()},a.tagItems=function(){i.open({animation:!0,templateUrl:"app/channels/chat/room/view.tags.modal.html",controller:"ChatRoomViewModalTagCtrl",resolve:{id:function(){return a.id}}}).result.then(function(){a.gridApi.selection.clearSelectedRows(),a.id=[]})},a.onChanged=function(){a.getPage()},a.$watch("query.status",function(){a.getPage()},!0),a.getPage=function(){return e.spin("spinner-grid"),d.get(_.merge({id:"groups"},a.query)).$promise.then(function(b){a.gridOptions.data=b.rows})["catch"](function(a){console.error(a)})["finally"](function(){e.stop("spinner-grid")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.room.group.list",{url:"/list",templateUrl:"app/channels/chat/room/group/list/list.html",controller:"ChatRoomGroupListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.room.internal",{url:"/internal",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("ChatRoomInternalListCtrl",["$scope","$timeout","socket","Auth","ChatRoom","usSpinnerService",function(a,b,c,d,e,f){a.openChat=function(b){return e.users({users:[d.getCurrentUser().id,b.id]}).$promise.then(function(c){var d=_.find(a.workspaces,{id:c.id,type:"chatRoom"});d?d.active=!0:a.workspaces.push({id:c.id,name:b.fullname,type:"chatRoom","class":"icon-bubble",active:!0})})["catch"](function(a){console.error(a)})},a.initView=function(){a.gridOptions={enableGridMenu:!1,enableFiltering:!0,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,flatEntityAccess:!0,showGridFooter:!0,fastWatch:!0,columnDefs:[{name:"userpic",displayName:"",width:35,cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div> <ng-letter-avatar height="20" width="20" fontsize="12" data="{{row.entity.fullname}}" avatarcustombgcolor="#B0B0B0" charCount="2" avatarcustomborder="border:2px solid #3399CC" shape="round"></ng-letter-avatar> </div>',enableColumnMenu:!1,enableSorting:!1,enableFiltering:!1},{name:"fullname",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",enableSorting:!0,enableFiltering:!0,enableColumnMenu:!0},{name:"action",cellTemplate:'<div><a class="btn btn-xs green-meadow" href="#" data-ng-click="grid.appScope.openChat(row.entity)"><i class="icon-bubble"></i></a></div>',cellClass:"ui-grid-vcenter",width:75,enableFiltering:!1,enableSorting:!1,enableColumnMenu:!1}],data:[]},c.socket.on("user:save",function(b){if(b.online&&d.getCurrentUser().id!==b.id){var c=_.find(a.gridOptions.data,{id:b.id});c?_.merge(c,b):a.gridOptions.data.push(b)}else _.remove(a.gridOptions.data,{id:b.id})}),b(function(){c.socket.on("agent:save",function(b){if(b.online&&d.getCurrentUser().id!==b.id){var c=_.find(a.gridOptions.data,{id:b.id});c?_.merge(c,b):a.gridOptions.data.push(b)}else _.remove(a.gridOptions.data,{id:b.id})})}),e.get({id:"agents"}).$promise.then(function(b){a.gridOptions.data=b.rows})["catch"](function(a){console.error(a)})["finally"](function(){f.stop("spinner-grid")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.room.internal.list",{url:"/list",templateUrl:"app/channels/chat/room/internal/list/list.html",controller:"ChatRoomInternalListCtrl"})}]),angular.module("xCallyShuttleApp").controller("ChatRoomAddCtrl",["$scope","$uibModalInstance","Agent","items",function(a,b,c,d){a.items=d,a.agents=c.get(function(b){a.agents=b,a.items.forEach(function(b){_.remove(a.agents.rows,{id:b.id})})}),a.selected={items:[]},a.ok=function(){b.close(_.union(_.map(a.selected.items,"id"),_.map(a.items,"id")))},a.cancel=function(){b.dismiss()}}]),angular.module("xCallyShuttleApp").controller("ChatRoomCloseCtrl",["$scope","$uibModalInstance","closed","ChatWebsite","websiteId",function(a,b,c,d,e){a.modal={title:"APPLICATION_CONFIRM_CLOSE",text:"MESSAGE_ARE_YOU_SURE_YOU_WANT_TO_CLOSE_THE_CHAT"},a.initDisposition=function(){return d.get({websiteId:e,controller:"dispositions"}).$promise.then(function(b){a.dispositions=b.rows})["catch"](function(a){console.error(a)})},a.item={},a.closed=c,a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss()}}]),angular.module("xCallyShuttleApp").directive("chatRoom",["$interval","$rootScope","$uibModal","$notification","$window","socket","Auth","ChatRoom","ngAudio","xAlert","Tag","CannedAnswer","List","$translate",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){return{restrict:"E",scope:{workspace:"="},templateUrl:"app/channels/chat/room/room.directive.html",link:function(a){a.user=g.getCurrentUser(),a.ChatRoom=h,a.message={body:""},a.openContact=function(c){return a.chatRoom.ChatWebsite.List?m.save({listId:a.chatRoom.ChatWebsite.List.id,controller:"contacts"},{email:c}).$promise.then(function(a){var c=_.find(b.$root.workspaces,{contactID:a.id});c?c.active=!0:b.$root.workspaces.push({active:!0,"class":"icon-user",contactID:a.id,name:a.email,type:"contact"})})["catch"](function(a){console.error(a)}):void j.show(n.instant("MESSAGE_NO_LIST_CONFIGURED"),"info")},a.modelOptions={debounce:{"default":500,blur:250},getterSetter:!0},a.form={},a.panelLeft="col-md-4",a.panelRight="col-md-8",a.onSelect=function(){a.message.body=a.modelOptions.selectedAnswer,delete a.modelOptions.selectedAnswer},a.togglePanelLeft=function(){a.panelLeft?(a.panelLeft=null,a.panelRight="col-md-12"):(a.panelLeft="col-md-4",a.panelRight="col-md-8")},a.options={link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},code:{highlight:!0,lineNumbers:!1},basicVideo:!0},a.getAnswers=function(a){return l.get({key:a}).$promise.then(function(a){return console.log(a),_.map(a.rows,"value")})},a.isMyRoom=function(b){return!!_.find(b,{id:a.user.id})},h.get({id:a.workspace.id}).$promise.then(function(c){a.chatRoom=c,a.form.tags=c.tags,a.chatRoom.ChatVisitor&&(a.chatRoom.ChatVisitors=[],a.chatRoom.ChatVisitors.push(a.chatRoom.ChatVisitor)),f.socket.on("chat_room:save",function(b){a.chatRoom.id===b.id&&_.merge(a.chatRoom,b)}),f.socket.on("user_has_chat_room:save",function(b){return b.UserId!=a.user.id&&b.ChatRoomId==a.chatRoom.id?h.get({id:"agents",controller:b.UserId}).$promise.then(function(b){var c=_.map(a.chatRoom.Users,"fullname");a.chatRoom.ChatVisitor&&c.unshift(a.chatRoom.ChatVisitor.fullname),a.chatRoom.Users.push(b),a.workspace.name=_.without(c,g.getCurrentUser().fullname).join(", ")})["catch"](function(a){console.error(a)}):void 0}),f.socket.on("chat_message:save",function(c){a.chatRoom.id==c.ChatRoomId&&(a.user.id!=c.UserId&&a.chatRoom.ChatMessages.push(c),c.UserId?c.UserId!==g.getCurrentUser().id&&!b.settings.layout.onFocus&&e.Notification&&_.includes(c.userids,g.getCurrentUser().id)&&d("CHAT CHANNEL",{icon:"assets/images/media/channels/chat64.png",body:"NEW Chat Message!",delay:5e3}):!b.settings.layout.onFocus&&e.Notification&&_.includes(c.userids,g.getCurrentUser().id)&&d("CHAT CHANNEL",{icon:"assets/images/media/channels/chat64.png",body:"NEW Chat Message!",delay:5e3}),a.workspace.active||(i.load("api/xchatty/assets?resource=notification/xc_blubb.mp3").play(),a.workspace.unread++))})})["catch"](function(a){console.error(a)}),k.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a)}),a.closeRoom=function(b){return c.open({animation:!0,templateUrl:"app/channels/chat/room/room.close.html",controller:"ChatRoomCloseCtrl",resolve:{closed:function(){return"CLOSED"===a.chatRoom.status},websiteId:function(){return a.chatRoom.ChatWebsiteId}}}).result.then(function(a){var c={id:b,status:"CLOSED",completeReason:"agent"};return a.disposition&&(c.disposition=a.disposition),h.update(c).$promise["catch"](function(a){j.error(a)})})},a.onChanged=function(b){return h.update({id:b},{tags:a.form.tags}).$promise["catch"](function(a){console.error(a)})},a.addAgent=function(b){c.open({animation:!0,templateUrl:"app/channels/chat/room/room.add.html",controller:"ChatRoomAddCtrl",resolve:{items:function(){return _.map(a.chatRoom.Users||[],function(a){return{id:a.id,fullname:a.fullname}})}}}).result.then(function(a){return h.update({id:b,controller:"users"},{users:a}).$promise["catch"](function(a){j.error(a)})})},a.sendMessage=function(){var b={body:angular.copy(a.message.body),createdAt:moment().format(),UserId:a.user.id,User:{fullname:a.user.fullname}};return a.message.body.trim().length?(a.chatRoom.ChatMessages.push(b),a.message.body="",h.save({id:a.chatRoom.id,controller:"messages"},{body:b.body}).$promise["catch"](function(a){console.error(a)})):void 0}}}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.room",{url:"/room",templateUrl:"app/channels/chat/room/room.html",data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:31}},resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/inbox.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("ChatRoomViewModalTagCtrl",["$scope","$uibModalInstance","$translate","$stateParams","Tag","ChatRoom","xAlert","id",function(a,b,c,d,e,f,g,h){a.initModal=function(){return a.tags=[],a.item={tags:[]},a.modal={dismissable:!0,title:"APPLICATION_MESSAGE_SEND_RETRY",text:"MESSAGE_MESSAGE_SEND_RETRY",buttons:[{"class":"btn-success",text:"APPLICATION_TAG",click:function(){var d={status:!0};return f.patch({id:h},{tags:a.item.tags}).$promise["catch"](function(){d.status=!1,g.show(c.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})["finally"](function(){b.close(d)})}},{"class":"default",text:"APPLICATION_CANCEL",click:function(a){b.dismiss(a)}}]},e.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").controller("ChatVisitorListCtrl",["$scope","ChatVisitor","gridOptions","$uibModal",function(a,b,c,d){a.initView=function(){var d={exporterCsvFilename:"chat_visitors.csv",columnDefs:[{name:"fullname",cellClass:"text-center"},{name:"email",cellClass:"text-center"},{name:"origin",cellClass:"text-center"},{name:"createdAt",displayName:"createdAt",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span am-time-ago="row.entity.createdAt"></span></div>'},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/channels/chat/visitors/view/{{row.entity.id}}/profile",name:"profile"}]}]};a.gridOptions=c.gridOptions(b,d,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.visitors.list",{url:"/list",templateUrl:"app/channels/chat/visitor/list/list.html",controller:"ChatVisitorListCtrl"})}]),angular.module("xCallyShuttleApp").controller("ChatVisitorViewCtrl",["$scope","$stateParams","ChatVisitor",function(a,b,c){a.initView=function(){return c.get({id:b.id}).$promise.then(function(b){a.chatVisitor=b})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.visitors.view",{url:"/view/:id",templateUrl:"app/channels/chat/visitor/view/view.html",controller:"ChatVisitorViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.chat.visitors.view.profile",{url:"/profile",templateUrl:"app/channels/chat/visitor/view/view.profile.html"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.visitors",{url:"/visitors",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:8}}})}]),angular.module("xCallyShuttleApp").factory("ChatApplication",["$resource",function(a){return a("/api/chat/applications/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("ChatWebsite",["$resource",function(a){return a("/api/chat/websites/:websiteId/:controller/:id",{id:"@websiteId"},{update:{method:"PUT"},updateFields:{method:"PUT",isArray:!0}})}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteListCtrl",["$scope","gridOptions","ChatWebsite",function(a,b,c){a.initView=function(){var d={exporterCsvFilename:"chat_websites.csv",columnDefs:[{name:"name"},{name:"description"},{name:"address"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/channels/chat/websites/view/{{row.entity.id}}/embedding/view",name:"embedding"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=b.gridOptions(c,d,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.list",{url:"/list",templateUrl:"app/channels/chat/website/list/list.html",controller:"ChatWebsiteListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.actions",{url:"/actions",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteViewActionListCtrl",["$scope","gridOptions","ChatWebsite","$http","$translate","$stateParams","socket","xAlert","Modal",function(a,b,c,d,e,f,g,h,i){a.initActons=function(){var d={draggable:!0,exporterCsvFilename:"chat_applications.csv",enableSorting:!1,enableFiltering:!1,columnDefs:[{name:"app",cellClass:"text-center"},{name:"name",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><span>{{row.entity.ChatQueue ? row.entity.ChatQueue.name : row.entity.User.name}}</span></div>"},{name:"timeout",cellClass:"text-center"},{name:"interval",displayName:"APPLICATION_TIME_INTERVAL",cellClass:"text-center",cellTemplate:"<div><span>{{row.entity.Interval ? row.entity.Interval.name : row.entity.interval}}</span></div>"},{name:"action",width:125,buttons:[{"class":"blue-hoki",href:"/channels/chat/websites/view/{{row.entity.ChatWebsiteId}}/actions/view/{{row.entity.id}}",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.app, row.entity.id)"}]}]};a.gridOptions=b.gridOptions(c,d,a,{websiteId:f.websiteId,controller:"applications"})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.actions.list",{url:"/list",templateUrl:"app/channels/chat/website/view/action/list/list.html",controller:"ChatWebsiteViewActionListCtrl"})}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteViewActionViewCtrl",["$scope","$http","$stateParams","$translate","$location","xAlert","WizardHandler","socket","application","interval","ChatWebsite","ChatQueue","Agent","Interval","Template","MailAccount","SmsAccount",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initAction=function(){return a.$application=i.application,a.$stateParams=c,a.$interval=j.interval,a.forms={},a.apps=[{name:"Queue",value:"queue"},{name:"Agent",value:"agent"},{name:"SendMail",value:"sendMail"},{name:"SendSMS",value:"sendSms"}],k.get({websiteId:c.websiteId,controller:"applications",id:c.actionId}).$promise.then(function(b){if(a.application=b,a.application.alwaysTime=!1,a.application.IntervalId)a.application.intType="list";else switch(a.application.interval){case"*,*,*,*":a.application.intType="always";break;default:a.application.intType="custom"}if("always"===a.application.intType||"custom"===a.application.intType){var c=a.application.interval.split(",");"*"===c[0]?a.application.alwaysTime=!0:(a.application.t_from=moment(new Date),a.application.t_to=moment(new Date),a.application.t_from.hour(c[0].split("-")[0].split(":")[0]),a.application.t_from.minute(c[0].split("-")[0].split(":")[1]),a.application.t_to.hour(c[0].split("-")[1].split(":")[0]),a.application.t_to.minute(c[0].split("-")[1].split(":")[1])),"*"===c[1]?(a.application.wd_from="always",a.application.wd_to="always"):(a.application.wd_from=c[1].split("-")[0],a.application.wd_to=c[1].split("-")[1]),"*"===c[2]?(a.application.md_from="always",a.application.md_to="always"):(a.application.md_from=c[2].split("-")[0],a.application.md_to=c[2].split("-")[1]),"*"===c[3]?(a.application.m_from="always",a.application.m_to="always"):(a.application.m_from=c[3].split("-")[0],a.application.m_to=c[3].split("-")[1])}a.$watch("application.t_from",function(b){a.application.t_from_hm=moment(b).format("HH:mm")}),a.$watch("application.t_to",function(b){a.application.t_to_hm=moment(b).format("HH:mm")})})["catch"](function(a){f.error(a)})},a.getQueues=function(){return l.get().$promise.then(function(b){a.queues=b.rows})["catch"](function(a){f.error(a)})},a.getAgents=function(){return m.get().$promise.then(function(b){a.agents=b.rows})["catch"](function(a){f.error(a)})},a.getIntervals=function(){return n.get().$promise.then(function(b){a.intervals=b.rows})["catch"](function(a){f.error(a)})},a.getSmsAccounts=function(){return q.get().$promise.then(function(b){a.smsAccounts=b.rows})["catch"](function(a){console.error(a)})},a.getTemplates=function(){return o.get().$promise.then(function(b){a.templates=b.rows})["catch"](function(a){console.error(a)})},a.getMailAccounts=function(){return p.get({custom:!0}).$promise.then(function(b){a.mailAccounts=b.rows})["catch"](function(a){console.error(a)})},a.updateItem=function(){switch(a.application.intType){case"always":a.application.interval="*,*,*,*",a.application.IntervalId=null;break;case"list":var b=_.find(a.intervals,{id:a.application.IntervalId});a.application.interval=b?"":"*,*,*,*",a.application.IntervalId=b?a.application.IntervalId:null;break;case"custom":var g,h,i,j,l;g=a.application.t_from&&a.application.t_to&&!a.application.alwaysTime?moment(a.application.t_from).format("HH:mm")+"-"+moment(a.application.t_to).format("HH:mm"):"*",a.application.wd_from&&"always"!==a.application.wd_from?(h=a.application.wd_from,a.application.wd_to&&"always"!==a.application.wd_to&&(h+="-"+a.application.wd_to)):h="*",a.application.md_from&&"always"!==a.application.md_from?(i=a.application.md_from,a.application.md_to&&"always"!==a.application.md_to&&(i+="-"+a.application.md_to)):i="*",a.application.m_from&&"always"!==a.application.m_from?(j=a.application.m_from,a.application.m_to&&"always"!==a.application.m_to&&(j+="-"+a.application.m_to)):j="*",l=g+","+h+","+i+","+j,a.application.interval=l,a.application.IntervalId=null}return k.update({websiteId:c.websiteId,controller:"applications",id:c.actionId},a.application).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success"),e.path("/channels/chat/websites/view/"+c.websiteId+"/actions/list")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.actions.view",{url:"/view/:actionId",templateUrl:"app/channels/chat/website/view/action/view/view.html",controller:"ChatWebsiteViewActionViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteViewActionWizardCtrl",["$scope","$http","Agent","Interval","ChatQueue","$stateParams","$translate","$location","xAlert","WizardHandler","socket","application","interval","ChatWebsite","Template","MailAccount","SmsAccount",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initWizard=function(){a.apps=[{name:"Queue",value:"queue"},{name:"Agent",value:"agent"},{name:"SendMail",value:"sendMail"},{name:"SendSMS",value:"sendSms"}],a.$application=l.application,a.$stateParams=f,a.$interval=m.interval,a.forms={},a.application={app:"queue",intType:"always",alwaysTime:!0},a.$watch("application.t_from",function(b){a.application.t_from_hm=moment(b).format("HH:mm")}),a.$watch("application.t_to",function(b){a.application.t_to_hm=moment(b).format("HH:mm")})},a.getQueues=function(){return e.get().$promise.then(function(b){a.queues=b.rows})["catch"](function(a){console.error(a)})},a.getAgents=function(){return c.get().$promise.then(function(b){a.agents=b.rows})["catch"](function(a){i.error(a)})},a.getIntervals=function(){return d.get().$promise.then(function(b){a.intervals=b.rows})["catch"](function(a){i.error(a)})},a.getSmsAccounts=function(){return q.get().$promise.then(function(b){a.smsAccounts=b.rows})["catch"](function(a){console.error(a)})},a.getTemplates=function(){return o.get().$promise.then(function(b){a.templates=b.rows})["catch"](function(a){console.error(a)})},a.getMailAccounts=function(){return p.get().$promise.then(function(b){a.mailAccounts=b.rows})["catch"](function(a){console.error(a)})},a.createItem=function(){switch(a.application.intType){case"always":a.application.interval="*,*,*,*",a.application.IntervalId=null;break;case"list":var b=_.find(a.intervals,{id:a.application.IntervalId});a.application.interval=b?"":"*,*,*,*",a.application.IntervalId=b?a.application.IntervalId:null;break;case"custom":var c,d,e,j,k;c=a.application.t_from&&a.application.t_to&&!a.application.alwaysTime?moment(a.application.t_from).format("HH:mm")+"-"+moment(a.application.t_to).format("HH:mm"):"*",a.application.wd_from&&"always"!==a.application.wd_from?(d=a.application.wd_from,a.application.wd_to&&"always"!==a.application.wd_to&&(d+="-"+a.application.wd_to)):d="*",a.application.md_from&&"always"!==a.application.md_from?(e=a.application.md_from,a.application.md_to&&"always"!==a.application.md_to&&(e+="-"+a.application.md_to)):e="*",a.application.m_from&&"always"!==a.application.m_from?(j=a.application.m_from,a.application.m_to&&"always"!==a.application.m_to&&(j+="-"+a.application.m_to)):j="*",k=c+","+d+","+e+","+j,a.application.interval=k,a.application.IntervalId=null}return n.save({websiteId:f.websiteId,controller:"applications"},a.application).$promise.then(function(){i.show(g.instant("MESSAGE_WELL_DONE"),"success"),h.path("/channels/chat/websites/view/"+f.websiteId+"/actions/list")})["catch"](function(a){i.error(a)})},a.formValidation=function(a){return a},a.next=function(){j.wizard().next()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.actions.wizard",{url:"/wizard",templateUrl:"app/channels/chat/website/view/action/wizard/wizard.html",controller:"ChatWebsiteViewActionWizardCtrl"})}]),angular.module("xCallyShuttleApp").factory("ChatDisposition",["$resource",function(a){return a("/api/chat/dispositions/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteViewModalDispositionAddCtrl",["$scope","$uibModalInstance","ChatWebsite","id","xAlert","$translate",function(a,b,c,d,e,f){a.ok=function(){return c.save({websiteId:d,controller:"dispositions"},{name:a.name}).$promise.then(function(a){b.close(a)})["catch"](function(a){e.show(f.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteDispositionViewCtrl",["$scope","$stateParams","$uibModal","$translate","ChatWebsite","xAlert",function(a,b,c,d,e,f){a.initView=function(){return e.get({websiteId:b.websiteId,controller:"dispositions"}).$promise.then(function(b){a.dispositions=b.rows})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.updateDisposition=function(a,c){return e.update({websiteId:b.websiteId,controller:"dispositions",id:a},{name:c}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.deleteDisposition=function(c){return console.log("delete"),e.remove({websiteId:b.websiteId,controller:"dispositions",id:c}).$promise.then(function(){_.remove(a.dispositions,{id:c})})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.addDisposition=function(){return c.open({animation:!0,templateUrl:"app/channels/chat/website/view/disposition/modal/add.modal.html",controller:"ChatWebsiteViewModalDispositionAddCtrl",resolve:{id:function(){return b.websiteId}}}).result.then(function(b){b&&a.dispositions.push(b)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.dispositions",{url:"/dispositions",controller:"ChatWebsiteDispositionViewCtrl",templateUrl:"app/channels/chat/website/view/disposition/view/view.html"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.embedding",{url:"/embedding",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteViewEmbeddingViewCtrl",["$scope","$stateParams","$translate","clipboard","xAlert","ChatWebsite",function(a,b,c,d,e,f){a.initView=function(){return f.get({websiteId:b.websiteId,controller:"snippet"}).$promise.then(function(b){a.snippetCode=b.html})["catch"](function(a){e.error(a)})},a.copyToClipboard=function(){d.copyText(a.snippetCode),e.show(c.instant("MESSAGE_TEXT_COPIED_CLIPBOARD")+"!","success")}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.embedding.view",{url:"/view",templateUrl:"app/channels/chat/website/view/embedding/view/view.html",controller:"ChatWebsiteViewEmbeddingViewCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.form",{url:"/forms",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteViewFormViewCtrl",["$scope","$builder","$validator","$stateParams","$translate","ChatWebsite","xAlert",function(a,b,c,d,e,f,g){a.saveForm=function(a){var c=angular.copy(b.forms[a]);return c.length>3?g.show("You can insert at least 3 input elements","danger"):(_.forEach(c,function(a){delete a.id}),f.updateFields({websiteId:d.websiteId,controller:"fields",id:a},c).$promise.then(function(){g.show(e.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){g.error(a)}))},a.getChatWebsiteFields=function(a){return f.query({websiteId:d.websiteId,controller:"fields",id:a}).$promise.then(function(c){_.forEach(c,function(c){b.addFormObject(a,c)})})["catch"](function(a){g.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.form.view",{url:"/view",templateUrl:"app/channels/chat/website/view/form/view/view.html",controller:"ChatWebsiteViewFormViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteHooksViewCtrl",["$scope","ChatWebsite","Pause","$http","$stateParams","$translate","$location","xAlert",function(a,b,c,d,e,f,g,h){a.account={},a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.CONST_TIMEOUT=3e4,a.initView=function(){a.types=[{value:"",name:"-- None --"},{name:"HTTP GET",value:"GET"},{name:"HTTP POST",value:"POST"}],c.get().$promise.then(function(b){a.pauses=b.rows})["catch"](function(a){h.error(a)}),b.get({id:e.websiteId}).$promise.then(function(b){console.log(b),a.account=b,a.account.actions.length<1&&a.account.actions.push({action:"pause",enabled:!1,type:null})})["catch"](function(a){h.error(a)})},a.resetActionData=function(a){a.type=null},a.updateItem=function(){return console.log(a.account),b.update({id:e.websiteId},a.account).$promise.then(function(){h.show(f.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){h.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.hooks",{url:"/hooks",controller:"ChatWebsiteHooksViewCtrl",templateUrl:"app/channels/chat/website/view/hooks/view/view.html"})}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteViewProactiveListCtrl",["$scope","gridOptions","ChatWebsite","$http","$translate","$stateParams","$uibModal",function(a,b,c,d,e,f,g){ +a.initProactiveActions=function(){var d={exporterCsvFilename:"telephones.csv",columnDefs:[{name:"name"},{name:"type"},{name:"action",width:125,buttons:[{"class":"blue-hoki",onClick:"grid.appScope.createItem(row.entity)",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=b.gridOptions(c,d,a,{websiteId:f.websiteId,controller:"proactive"})},a.createItem=function(b){var c=g.open({animation:!0,templateUrl:"app/channels/chat/website/view/proactive/list/list.create.modal.html",controller:"ChatWebsiteProactiveListCreateCtrl",resolve:{item:b}});c.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteProactiveListCreateCtrl",["$scope","$translate","$uibModalInstance","$stateParams","ChatWebsite","xAlert","item",function(a,b,c,d,e,f,g){a.form={},a.item=g||{},a.title=g?b.instant("APPLICATION_EDIT_PROACTIVE_ACTION"):b.instant("APPLICATION_NEW_PROACTIVE_ACTION"),a.possibleType=[{type:"mouseOver",title:"Mouse Over"},{type:"timeout",title:"Timeout"}],a.save=function(){return g?e.update({websiteId:d.websiteId,controller:"proactive",id:a.item.id},a.item).$promise.then(function(a){f.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){f.error(a)}):e.save({websiteId:d.websiteId,controller:"proactive"},a.item).$promise.then(function(a){f.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){f.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.proactive.list",{url:"/list",templateUrl:"app/channels/chat/website/view/proactive/list/list.html",controller:"ChatWebsiteViewProactiveListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.proactive",{url:"/proactive",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteSettingViewCtrl",["$scope","$stateParams","$translate","$location","$timeout","socket","xAlert","ChatWebsite","List",function(a,b,c,d,e,f,g,h,i){a.initView=function(){return i.get().$promise.then(function(b){a.lists=b.rows})["catch"](function(a){console.error(a)})},a.updateItemChatWebsite=function(){return h.update({id:b.websiteId},{ListId:a.chatWebsite.ListId}).$promise.then(function(){g.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){g.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.settings",{url:"/settings",controller:"ChatWebsiteSettingViewCtrl",templateUrl:"app/channels/chat/website/view/setting/view/view.html"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.snippet",{url:"/snippet",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteViewSnippetViewCtrl",["$scope","$http","$stateParams","$translate","Template","$rootScope","FileUploader","$cookieStore","xAlert","ChatWebsite","MailAccount",function(a,b,c,d,e,f,g,h,i,j,k){a.$translate=d,a.isServiceMailAccount=!1,a.statePreview={state:"online"},a.radioSwitch={isActive:!!f.license.custom,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"};var l=a.uploader=new g({url:"api/chat/websites/"+c.websiteId+"/logo",queueLimit:1,withCredentials:!0,headers:{Authorization:"Bearer "+h.get("token")}});l.filters.push({name:"imageFilter",fn:function(a){var b="|"+a.type.slice(a.type.lastIndexOf("/")+1)+"|";return-1!=="|jpg|png|jpeg|".indexOf(b)}}),l.onSuccessItem=function(b,c){a.chatWebsite.logo=c.logo,i.show(d.instant("MESSAGE_WELL_DONE"),"success")},l.onErrorItem=function(){i.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")},l.onCompleteAll=function(){l.clearQueue()},a.enquirySwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.fidelitySwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.lang={HeaderCurrentlyChatting:"Live Chat",HeaderOffline:"Contact us",OperatorOfflineMessage:"It appears as if all operators are currently offline.",OfflineMessage:"<strong>We're not online.</strong><br/>It doesn't mean we're not there to help - leave your message below and we'll be in touch as soon as possible.",EnquiryMessagePlaceholder:"Your message...",EnquiryButtonText:"Leave message",EnquirySubmitSuccess:"Your message was sucessfully submitted - we will contact you as soon as possible.",OperatorComposing:"{fullname} is typing...",FirstMessageText:"",ExitChatButtonText:"Exit Chat",ExitChatQuestionText:"Are you sure?",ExitChatButtonConfirmText:"Yes",ExitChatButtonCancelText:"No",MessagePlaceholderText:"Your message...",MessageSendButtonText:"Send",ValidationEmailRequired:"Please enter your email address",ValidationEmailInvalid:"Please enter a valid email address",ValidationEmailMaxLength:"The email address may not exceed 85 characters",ValidationUsernameRequired:"Please enter your name",ValidationUsernameMaxLength:"The name may not exceed 45 characters",ValidationEnquiryRequired:"Please enter your enquiry",ValidationEnquiryMaxLength:"The enquiry may not exceed 1500 characters",ValidationMessageRequired:"Please enter your message",ValidationMessageMaxLength:"The message may not exceed 750 characters"},a.initView=function(){return j.get({id:c.websiteId}).$promise.then(function(b){return a.chatWebsite=b,e.get().$promise}).then(function(b){a.templates=b.rows})["catch"](function(a){i.error(a)})},a.getServiceMailAccount=function(){return k.get({accountId:"service"}).$promise.then(function(){a.isServiceMailAccount=!0})["catch"](function(){a.isServiceMailAccount=!1})},a.updateItem=function(){return j.update({id:a.chatWebsite.id},a.chatWebsite).$promise.then(function(){i.show(d.instant("MESSAGE_CHAT_WEBSITE_UPDATE_SUCCESS")+"!","success")})["catch"](function(a){i.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.snippet.view",{url:"/view",templateUrl:"app/channels/chat/website/view/snippet/view/view.html",controller:"ChatWebsiteViewSnippetViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteViewCtrl",["$scope","xAlert","$http","$location","$stateParams","$translate","WizardHandler","ChatApplication","ChatWebsite",function(a,b,c,d,e,f,g,h,i){a.initView=function(){return i.get({id:e.websiteId}).$promise.then(function(b){a.chatWebsite=b})["catch"](function(a){b.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view",{url:"/view/:websiteId",templateUrl:"app/channels/chat/website/view/view.html",controller:"ChatWebsiteViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites",{url:"/websites",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:29}}})}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteWizardCtrl",["$scope","$http","$location","$translate","WizardHandler","xAlert","ChatWebsite",function(a,b,c,d,e,f,g){a.$translate=d,a.next=function(){e.wizard().next()},a.exitValidation=function(a){return a},a.initWizard=function(){a.forms={formSetting:void 0,formAppearance:void 0,formLabel:void 0,formFunctionality:void 0},a.item={},a.item.remote=c.protocol()+"://"+location.host,a.item.color="#000080",a.item.color_focus="#000080",a.item.color_button="#000080",a.item.header_shape="rounded",a.item.animation=!0,a.item.header_online="We are here!",a.item.online_message="<strong>Questions?</strong><br />Insert your name and email address to start a live-chat with our support team.",a.item.name_title="Name",a.item.username_placeholder="Your name",a.item.email_title="Email Address",a.item.email_placeholder="Your e-mail address",a.item.start_chat_button="Chat",a.item.rating_message="Would you like rate this chat?",a.item.rating_send="Send",a.item.rating_skip="Skip",a.item.header_offline="Contact us",a.item.offline_message="<strong>We're not online.</strong><br />It doesn't mean we're not there to help - leave your message below and we'll be in touch as soon as possible.",a.item.message_title="Message",a.item.enquiry_message_placeholder="Your message...",a.item.enquiry_button="Leave message",a.item.agents_busy="In this moment all agents are busy. Try again!",a.item.download_transcript=!0},a.createItem=function(){return g.save(a.item).$promise.then(function(){f.show(d.instant("MESSAGE_CHAT_WEBSITE_CREATE_SUCCESS"),"success"),c.path("/channels/chat/websites/list")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.wizard",{url:"/wizard",templateUrl:"app/channels/chat/website/wizard/wizard.html",controller:"ChatWebsiteWizardCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.accounts",{url:"/accounts",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:38}}})}]),angular.module("xCallyShuttleApp").controller("FaxAccountListCtrl",["$scope","$uibModal","gridOptions","FaxAccount",function(a,b,c,d){a.initView=function(){var b={exporterCsvFilename:"chat_websites.csv",columnDefs:[{name:"name"},{name:"description"},{name:"localstationid"},{name:"TrunkName",displayName:"APPLICATION_TRUNK"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/channels/fax/accounts/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(d,b,a)},a.createItem=function(){var c=b.open({animation:!0,templateUrl:"app/channels/fax/account/list/list.create.modal.html",controller:"FaxAccountListCreateCtrl"});c.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("FaxAccountListCreateCtrl",["$scope","$uibModalInstance","$translate","xAlert","FaxAccount","Trunk",function(a,b,c,d,e,f){a.initWizard=function(){return a.form={},a.item={},a.trunks=[],f.get().$promise.then(function(b){a.trunks=b.rows})["catch"](function(a){d.error(a)})},a.save=function(){return e.save(a.item).$promise.then(function(a){d.show(c.instant("MESSAGE_WELL_DONE"),"success"),b.close(a)})["catch"](function(a){d.error(a)})},a.cancel=function(){b.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.accounts.list",{url:"/list",templateUrl:"app/channels/fax/account/list/list.html",controller:"FaxAccountListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.accounts.view.actions",{url:"/actions",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("FaxAccountViewActionListCtrl",["$scope","gridOptions","FaxAccount","$http","$translate","$stateParams",function(a,b,c,d,e,f){a.initActons=function(){var d={draggable:!0,exporterCsvFilename:"fax_applications.csv",enableSorting:!1,enableFiltering:!1,columnDefs:[{name:"app",cellClass:"text-center"},{name:"name",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span>{{row.entity.app == "queue" ? row.entity.FaxQueue.name : row.entity.User.name}}</span></div>'},{name:"timeout",cellClass:"text-center"},{name:"interval",displayName:"APPLICATION_TIME_INTERVAL",cellClass:"text-center",cellTemplate:"<div><span>{{row.entity.Interval ? row.entity.Interval.name : row.entity.interval}}</span></div>"},{name:"action",width:125,buttons:[{"class":"blue-hoki",href:"/channels/fax/accounts/view/{{row.entity.FaxAccountId}}/actions/view/{{row.entity.id}}",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.app, row.entity.id)"}]}]};a.gridOptions=b.gridOptions(c,d,a,{accountId:f.accountId,controller:"applications"})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.accounts.view.actions.list",{url:"/list",templateUrl:"app/channels/fax/account/view/action/list/list.html",controller:"FaxAccountViewActionListCtrl"})}]),angular.module("xCallyShuttleApp").controller("FaxAccountViewActionViewCtrl",["$scope","$http","$stateParams","$translate","$location","xAlert","WizardHandler","socket","application","interval","Agent","Interval","FaxQueue","FaxAccount","Template","MailAccount","SmsAccount",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initAction=function(){return a.$application=i.application,a.$stateParams=c,a.$interval=j.interval,a.forms={},a.apps=[{name:"Queue",value:"queue"},{name:"Agent",value:"agent"},{name:"SendMail",value:"sendMail"},{name:"SendSMS",value:"sendSms"}],n.get({accountId:c.accountId,controller:"applications",id:c.actionId}).$promise.then(function(b){if(a.application=b,a.application.alwaysTime=!1,a.application.IntervalId)a.application.intType="list";else switch(a.application.interval){case"*,*,*,*":a.application.intType="always";break;default:a.application.intType="custom"}if("always"===a.application.intType||"custom"===a.application.intType){var c=a.application.interval.split(",");"*"===c[0]?a.application.alwaysTime=!0:(a.application.t_from=moment(new Date),a.application.t_to=moment(new Date),a.application.t_from.hour(c[0].split("-")[0].split(":")[0]),a.application.t_from.minute(c[0].split("-")[0].split(":")[1]),a.application.t_to.hour(c[0].split("-")[1].split(":")[0]),a.application.t_to.minute(c[0].split("-")[1].split(":")[1])),"*"===c[1]?(a.application.wd_from="always",a.application.wd_to="always"):(a.application.wd_from=c[1].split("-")[0],a.application.wd_to=c[1].split("-")[1]),"*"===c[2]?(a.application.md_from="always",a.application.md_to="always"):(a.application.md_from=c[2].split("-")[0],a.application.md_to=c[2].split("-")[1]),"*"===c[3]?(a.application.m_from="always",a.application.m_to="always"):(a.application.m_from=c[3].split("-")[0],a.application.m_to=c[3].split("-")[1])}a.$watch("application.t_from",function(b){a.application.t_from_hm=moment(b).format("HH:mm")}),a.$watch("application.t_to",function(b){a.application.t_to_hm=moment(b).format("HH:mm")})})["catch"](function(a){f.error(a)})},a.getQueues=function(){return m.get().$promise.then(function(b){a.queues=b.rows})["catch"](function(a){console.error(a)})},a.getAgents=function(){return k.get().$promise.then(function(b){a.agents=b.rows})["catch"](function(a){console.error(a)})},a.getIntervals=function(){return l.get().$promise.then(function(b){a.intervals=b.rows})["catch"](function(a){console.error(a)})},a.getSmsAccounts=function(){return q.get().$promise.then(function(b){a.smsAccounts=b.rows})["catch"](function(a){console.error(a)})},a.getTemplates=function(){return o.get().$promise.then(function(b){a.templates=b.rows})["catch"](function(a){console.error(a)})},a.getMailAccounts=function(){return p.get().$promise.then(function(b){a.mailAccounts=b.rows})["catch"](function(a){console.error(a)})},a.updateItem=function(){switch(a.application.intType){case"always":a.application.interval="*,*,*,*",a.application.IntervalId=null;break;case"list":var b=_.find(a.intervals,{id:a.application.IntervalId});a.application.interval=b?"":"*,*,*,*",a.application.IntervalId=b?a.application.IntervalId:null;break;case"custom":var g,h,i,j,k;g=a.application.t_from&&a.application.t_to&&!a.application.alwaysTime?moment(a.application.t_from).format("HH:mm")+"-"+moment(a.application.t_to).format("HH:mm"):"*",a.application.wd_from&&"always"!==a.application.wd_from?(h=a.application.wd_from,a.application.wd_to&&"always"!==a.application.wd_to&&(h+="-"+a.application.wd_to)):h="*",a.application.md_from&&"always"!==a.application.md_from?(i=a.application.md_from,a.application.md_to&&"always"!==a.application.md_to&&(i+="-"+a.application.md_to)):i="*",a.application.m_from&&"always"!==a.application.m_from?(j=a.application.m_from,a.application.m_to&&"always"!==a.application.m_to&&(j+="-"+a.application.m_to)):j="*",k=g+","+h+","+i+","+j,a.application.interval=k,a.application.IntervalId=null}return n.update({accountId:c.accountId,controller:"applications",id:c.actionId},a.application).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success"),e.path("/channels/fax/accounts/view/"+c.accountId+"/actions/list")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.accounts.view.actions.view",{url:"/view/:actionId",templateUrl:"app/channels/fax/account/view/action/view/view.html",controller:"FaxAccountViewActionViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("FaxAccountViewActionWizardCtrl",["$scope","$http","Agent","FaxQueue","Interval","$stateParams","$translate","$location","xAlert","WizardHandler","socket","application","interval","FaxAccount","Template","MailAccount","SmsAccount",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initWizard=function(){a.apps=[{name:"Queue",value:"queue"},{name:"Agent",value:"agent"},{name:"SendMail",value:"sendMail"},{name:"SendSMS",value:"sendSms"}],a.$application=l.application,a.$stateParams=f,a.$interval=m.interval,a.forms={},a.application={alwaysTime:!0},a.$watch("application.t_from",function(b){a.application.t_from_hm=moment(b).format("HH:mm")}),a.$watch("application.t_to",function(b){a.application.t_to_hm=moment(b).format("HH:mm")})},a.getQueues=function(){return d.get().$promise.then(function(b){a.queues=b.rows})["catch"](function(a){console.error(a)})},a.getAgents=function(){return c.get().$promise.then(function(b){a.agents=b.rows})["catch"](function(a){console.error(a)})},a.getIntervals=function(){return e.get().$promise.then(function(b){a.intervals=b.rows})["catch"](function(a){console.error(a)})},a.getSmsAccounts=function(){return q.get().$promise.then(function(b){a.smsAccounts=b.rows})["catch"](function(a){console.error(a)})},a.getTemplates=function(){return o.get().$promise.then(function(b){a.templates=b.rows})["catch"](function(a){console.error(a)})},a.getMailAccounts=function(){return p.get().$promise.then(function(b){a.mailAccounts=b.rows})["catch"](function(a){console.error(a)})},a.createItem=function(){switch(a.application.intType){case"always":a.application.interval="*,*,*,*",a.application.IntervalId=null;break;case"list":var b=_.find(a.intervals,{id:a.application.IntervalId});a.application.interval=b?"":"*,*,*,*",a.application.IntervalId=b?a.application.IntervalId:null;break;case"custom":var c,d,e,j,k;c=a.application.t_from&&a.application.t_to&&!a.application.alwaysTime?moment(a.application.t_from).format("HH:mm")+"-"+moment(a.application.t_to).format("HH:mm"):"*",a.application.wd_from&&"always"!==a.application.wd_from?(d=a.application.wd_from,a.application.wd_to&&"always"!==a.application.wd_to&&(d+="-"+a.application.wd_to)):d="*",a.application.md_from&&"always"!==a.application.md_from?(e=a.application.md_from,a.application.md_to&&"always"!==a.application.md_to&&(e+="-"+a.application.md_to)):e="*",a.application.m_from&&"always"!==a.application.m_from?(j=a.application.m_from,a.application.m_to&&"always"!==a.application.m_to&&(j+="-"+a.application.m_to)):j="*",k=c+","+d+","+e+","+j,a.application.interval=k,a.application.IntervalId=null}return n.save({accountId:f.accountId,controller:"applications"},a.application).$promise.then(function(){i.show(g.instant("MESSAGE_WELL_DONE"),"success"),h.path("/channels/fax/accounts/view/"+f.accountId+"/actions/list")})["catch"](function(a){i.error(a)})},a.formValidation=function(a){return a},a.next=function(){j.wizard().next()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.accounts.view.actions.wizard",{url:"/wizard",templateUrl:"app/channels/fax/account/view/action/wizard/wizard.html",controller:"FaxAccountViewActionWizardCtrl"})}]),angular.module("xCallyShuttleApp").factory("FaxDisposition",["$resource",function(a){return a("/api/fax/dispositions/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("FaxInboxViewModaDispositionAddCtrl",["$scope","$uibModalInstance","FaxAccount","id","xAlert",function(a,b,c,d,e){a.ok=function(){return c.save({accountId:d,controller:"dispositions"},{name:a.name}).$promise.then(function(a){b.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("FaxAccountDispositionViewCtrl",["$scope","$stateParams","$uibModal","$translate","FaxAccount","xAlert",function(a,b,c,d,e,f){a.initView=function(){return e.get({accountId:b.accountId,controller:"dispositions"}).$promise.then(function(b){a.dispositions=b.rows})["catch"](function(a){f.error(a)})},a.updateDisposition=function(a,c){return e.update({accountId:b.accountId,controller:"dispositions",id:a},{name:c}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){f.error(a)})},a.deleteDisposition=function(c){return e.remove({accountId:b.accountId,controller:"dispositions",id:c}).$promise.then(function(){_.remove(a.dispositions,{id:c})})["catch"](function(a){f.error(a)})},a.addDisposition=function(){return c.open({animation:!0,templateUrl:"app/channels/fax/account/view/disposition/modal/add.modal.html",controller:"FaxInboxViewModaDispositionAddCtrl",resolve:{id:function(){return b.accountId}}}).result.then(function(b){b&&a.dispositions.push(b)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.accounts.view.dispositions",{url:"/dispositions",controller:"FaxAccountDispositionViewCtrl",templateUrl:"app/channels/fax/account/view/disposition/view/view.html"})}]),angular.module("xCallyShuttleApp").controller("FaxAccountHooksViewCtrl",["$scope","FaxAccount","Pause","$http","$stateParams","clipboard","$translate","$location","xAlert","List",function(a,b,c,d,e,f,g,h,i,j){a.account={},a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.CONST_TIMEOUT=3e4,a.initView=function(){a.types=[{value:"",name:"-- None --"},{name:"HTTP GET",value:"GET"},{name:"HTTP POST",value:"POST"}],c.get().$promise.then(function(b){a.pauses=b.rows})["catch"](function(a){i.error(a)}),b.get({id:e.accountId}).$promise.then(function(b){a.account=b,a.account.actions.length<1&&a.account.actions.push({action:"pause",enabled:!1,type:null})})["catch"](function(a){i.error(a)})},a.resetActionData=function(a){a.type=null},a.updateItemFaxAccount=function(){return console.log(a.account),b.update({id:e.accountId},a.account).$promise.then(function(){i.show(g.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){i.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.accounts.view.hooks",{url:"/hooks",controller:"FaxAccountHooksViewCtrl",templateUrl:"app/channels/fax/account/view/hooks/view/view.html"})}]),angular.module("xCallyShuttleApp").controller("FaxAccountSettingViewCtrl",["$scope","$stateParams","$translate","FaxAccount","List","Trunk","xAlert",function(a,b,c,d,e,f,g){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initView=function(){return a.rate=["2400","4800","7200","9600","12000","14400"],a.techs=["SIP","IAX","DADHI","KHOMP"],f.get().$promise.then(function(b){a.trunks=b.rows})["catch"](function(a){g.error(a)}),e.get().$promise.then(function(b){a.lists=b.rows})["catch"](function(a){g.error(a)}),d.get({id:b.accountId}).$promise.then(function(b){a.account=b})["catch"](function(a){g.error(a)})},a.updateItemFaxAccount=function(){return d.update({id:b.accountId},a.account).$promise.then(function(){g.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){g.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.accounts.view.settings",{url:"/settings",controller:"FaxAccountSettingViewCtrl",templateUrl:"app/channels/fax/account/view/setting/view/view.html"})}]),angular.module("xCallyShuttleApp").controller("FaxAccountViewCtrl",["$scope","$http","$stateParams","$translate","$location","WizardHandler","socket","xAlert","Modal","FaxAccount",function(a,b,c,d,e,f,g,h,i,j){a.initView=function(){return j.get({id:c.accountId}).$promise.then(function(b){a.account=b})["catch"](function(a){h.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.accounts.view",{url:"/view/:accountId",templateUrl:"app/channels/fax/account/view/view.html",controller:"FaxAccountViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]})}]}})}]),angular.module("xCallyShuttleApp").controller("FaxAccountWizardCtrl",["$scope","$http","$location","$translate","xAlert","WizardHandler","Trunk","FaxAccount",function(a,b,c,d,e,f,g,h){a.translate=d,a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initWizard=function(){return a.$translate=d,a.forms={},a.item={},a.rate=["2400","4800","7200","9600","12000","14400"],a.techs=["SIP","IAX","DADHI","KHOMP"],a.item.headerinfo="xCALLY Motion Fax",a.item.ecm="yes",a.item.minrate="4800",a.item.maxrate="14400",a.item.modem="v17,v27,v29",a.item.gateway="no",a.item.faxdetect="no",a.item.t38timeout=5e3,a.item.tech="SIP",g.get().$promise.then(function(b){a.trunks=b.rows})["catch"](function(a){e.error(a)})},a.next=function(){f.wizard().next()},a.previous=function(){f.wizard().previous()},a.exitValidation=function(a){return a},a.createItem=function(){return h.save(a.item).$promise.then(function(a){e.show(d.instant("MESSAGE_WELL_DONE"),"success"),c.path("/channels/fax/accounts/list")})["catch"](function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.accounts.wizard",{url:"/wizard",templateUrl:"app/channels/fax/account/wizard/wizard.html",controller:"FaxAccountWizardCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax",{url:"/fax",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:10}}})}]),angular.module("xCallyShuttleApp").factory("FaxAccount",["$resource",function(a){return a("/api/fax/accounts/:accountId/:controller/:id",{id:"@accountId"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("FaxAttachment",["$resource",function(a){return a("/api/fax/attachments/:id/:controller",{id:"@id"})}]),angular.module("xCallyShuttleApp").factory("FaxMessage",["$resource",function(a){return a("/api/fax/messages/:id/:controller",{id:"@id",controller:"@controller"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("FaxReport",["$resource",function(a){return a("/api/report/faxs/:id/:controller1/:controller2",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("FaxRoom",["$resource",function(a){return a("/api/fax/rooms/:id/:controller",{id:"@id",controller:"@controller"},{update:{method:"PUT"},patch:{method:"PATCH"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.inbox",{url:"/inbox",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:40}}})}]),angular.module("xCallyShuttleApp").controller("FaxInboxInfoModalCtrl",["$scope","$translate","$uibModalInstance","$stateParams","xAlert","messageId","FaxMessage",function(a,b,c,d,e,f,g){a.data=null,a.initInfo=function(){g.get({id:f}).$promise.then(function(b){a.data={channel:b.channel,channelstate:b.channelstate,channelstatedesc:b.channelstatedesc,uniqueid:b.uniqueid,localstationid:b.localstationid,remotestationid:b.remotestationid,pagestransferred:b.pagestransferred,resolution:b.resolution,transferrate:b.transferrate,lastStatus:b.lastStatus,error:b.error,retry:b.retry}})["catch"](function(b){switch(b.status){case 404:a.data=null;break;default:e.error(b)}})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").directive("faxMessage",["$rootScope","$translate","$uibModal","FaxMessage","List","xAlert",function(a,b,c,d,e,f){return{restrict:"E",scope:{message:"=",listId:"="},templateUrl:"app/channels/fax/inbox/message/message.directive.html",link:function(g){g.openContact=function(c){return g.listId?e.save({listId:g.listId,controller:"contacts"},{fax:c}).$promise.then(function(b){var c=_.find(a.$root.workspaces,{contactID:b.id});c?c.active=!0:a.$root.workspaces.push({active:!0,"class":"icon-user",contactID:b.id,name:b.fax,type:"contact"})})["catch"](function(a){f.error(a)}):void f.show(b.instant("MESSAGE_NO_LIST_CONFIGURED"),"info")},g.info=function(a){c.open({animation:!0,templateUrl:"app/channels/fax/inbox/message/info.modal.html",controller:"FaxInboxInfoModalCtrl",resolve:{messageId:function(){return a.id}}})},g.retry=function(a){return d.update({id:a,status:"SENDING"}).$promise["catch"](function(a){console.error(a)})}}}}]),angular.module("xCallyShuttleApp").directive("faxNote",["$translate","Modal","Auth","FaxMessage","xAlert",function(a,b,c,d,e){return{restrict:"E",scope:{message:"="},templateUrl:"app/channels/fax/inbox/note/note.directive.html",link:function(f){f.Auth=c,f.deleteNote=b.confirm["delete"](function(){return d.remove({id:f.message.id}).$promise.then(function(){e.show(a.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){e.error(a)})})}}}]),angular.module("xCallyShuttleApp").controller("FaxInboxViewModalNoteCtrl",["$scope","$uibModalInstance","$translate","id","FaxRoom","xAlert",function(a,b,c,d,e,f){a.initModal=function(){a.item={}},a.ok=function(){return e.save({id:d,controller:"messages"},{text:a.item.text,status:"NOTE"}).$promise.then(function(){f.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})["finally"](function(){b.close()})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").directive("faxRoom",["$cookieStore","$translate","$uibModal","$timeout","FaxAccount","FaxRoom","FaxMessage","FileUploader","xAlert","usSpinnerService","socket","Tag","Auth","FaxAttachment","List",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){return{restrict:"E",scope:{workspace:"="},templateUrl:"app/channels/fax/inbox/room/room.directive.html",link:function(m){function p(a){if(a){var b=_.words(a),c=_.map(b,function(a){return a?a[0]:""});return c.join("").toUpperCase()}return!1}m.$on("$destroy",function(){}),m.initForm=function(){m.forms={compose:{}}},m.getContacts=function(a){return m.listId?o.get({listId:m.listId,controller:"contacts",fax:a}).$promise.then(function(a){return a.rows})["catch"](function(a){console.error(a)}):[]},m.setList=function(a){m.listId=a};var q=[];m.expanded=!0,m.modelOptions={debounce:{"default":500,blur:250},getterSetter:!0},m.panelLeft=null,m.panelRight="col-md-12",m.form={from:"",to:m.workspace.data&&m.workspace.data.to?[m.workspace.data.to]:[], +disabled:!1},k.socket.on("fax_message:remove",function(a){_.remove(m.faxRoom.FaxMessages,{id:a.id})}),k.socket.on("fax_message:save",function(a){return m.workspace.id&&a.FaxRoomId==m.workspace.id?(m.workspace.active||m.workspace.unread++,g.get({id:a.id}).$promise.then(function(a){m.faxRoom||(m.faxRoom={FaxMessages:[]});var b=_.findIndex(m.faxRoom.FaxMessages,{id:a.id});b>-1?_.merge(m.faxRoom.FaxMessages[b],a):m.faxRoom.FaxMessages.unshift(a),m.panelLeft="col-md-6",m.panelRight="col-md-6"})["catch"](function(a){console.error(a)})):void 0});var r=m.uploader=new h({url:"api/fax/attachments",autoUpload:!0,withCredentials:!0,queueLimit:1,headers:{Authorization:"Bearer "+a.get("token")}});return r.filters.push({name:"uploadFilter",fn:function(a){var b="|"+a.type.slice(a.type.lastIndexOf("/")+1)+"|";return-1!=="|pdf|tiff|tif".indexOf(b)}}),r.onWhenAddingFileFailed=function(a,c){switch(c.name){case"queueLimit":i.show(b.instant("MESSAGE_QUEUE_LIMIT_EXCEEDED"),"danger");break;case"uploadFilter":i.show(b.instant("MESSAGE_WRONG_FILE_FORMAT"),"danger");break;default:i.show(b.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")}},r.removeFromQueue=function(a){var c=this;return n["delete"]({id:a.basename}).$promise.then(function(){var b=c.getIndexOfItem(a),d=c.queue[b];d.isUploading&&d.cancel(),c.queue.splice(b,1),d._destroy(),c.progress=c._getTotalProgress(),q=_.reject(q,{basename:a.basename})})["catch"](function(){i.show(b.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},r.onErrorItem=function(){i.show(b.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")},r.onSuccessItem=function(a,b){var c={path:b.path,name:b.name,basename:b.basename,type:b.type};a=_.merge(a,c),q.push(c)},m.getMessageMailId=function(a){var b=a.UserId?"imgFaxUserId"+a.UserId:"imgFaxVisitorId";return b+=m.faxRoom.id.toString()+a.id.toString()},m.togglePanelLeft=function(){m.panelLeft?(m.panelLeft=null,m.panelRight="col-md-12"):(m.panelLeft="col-md-6",m.panelRight="col-md-6")},m.closeRoom=function(){return c.open({animation:!0,templateUrl:"app/channels/fax/inbox/status/status.modal.html",controller:"FaxInboxStatusModalCtrl",resolve:{status:function(){return m.faxRoom.status},accountId:function(){return m.faxRoom.FaxAccount.id}}}).result.then(function(a){return f.update({id:m.workspace.id},a).$promise["catch"](function(a){i.error(a)})})},m.loadAgents=function(){c.open({animation:!0,templateUrl:"app/channels/fax/inbox/view/view.agents.modal.html",controller:"FaxInboxViewModalAgentCtrl",resolve:{roomId:function(){return m.workspace.id}}})},m.cancel=function(){m.form.disabled=!1,m.form.from="",m.form.to=""},m.loadNote=function(){c.open({animation:!0,templateUrl:"app/channels/fax/inbox/note/note.modal.html",controller:"FaxInboxViewModalNoteCtrl",resolve:{id:function(){return m.workspace.id}}})},m.getMessageFaxId=function(a){var b=a.UserId?"imgFaxUserId"+a.UserId:"imgFaxVisitorId";return b+=m.faxRoom.id.toString()+a.id.toString()},m.getMessageRoomAvatar=function(a,b,c,e){d(function(){var d=b?"#imgFaxUserId"+b:"#imgFaxVisitorId";d+=m.faxRoom.id.toString()+a.toString(),angular.element(d).avatar({useGravatar:!1,initials:e?[]:p(c),fallbackImage:e?"api/users/avatar/"+e:"api/users/avatar/unknown_avatar"})})},m.onChanged=function(){return f.update({id:m.workspace.id},{tags:m.form.tags}).$promise["catch"](function(a){i.error(a)})},m.sendFax=function(){j.spin("spinner-grid");var a={from:m.form.from,to:m.form.to[0].fax||"",status:"SENDING",FaxAttachments:q,FaxRoomId:m.faxRoom?m.faxRoom.id:null},c=_.find(m.faxAccounts,{localstationid:m.form.from});return c?e.save({accountId:c.id,controller:"send"},a).$promise.then(function(a){return r.queue=[],q=[],i.show(b.instant("MESSAGE_WELL_DONE"),"success"),m.SmsRoom?m.SmsRoom:f.get({id:"messages",controller:a.id}).$promise}).then(function(a){a&&(m.workspace.id=a.id,m.workspace.name=a.contact,m.faxRoom=a,m.panelLeft="col-md-6",m.panelRight="col-md-6",m.expanded=!1)})["catch"](function(a){i.error(a)})["finally"](function(){j.stop("spinner-grid")}):(console.log("Can not find account"),void j.stop("spinner-grid"))},l.get().$promise.then(function(a){m.tags=_.map(a.rows,"name")})["catch"](function(a){console.error(a)}),e.get().$promise.then(function(a){m.faxAccounts=a.rows})["catch"](function(a){console.error(a)}),m.workspace.id?(m.panelLeft="col-md-6",m.panelRight="col-md-6",f.get({id:m.workspace.id}).$promise.then(function(a){m.faxRoom=a,m.form.from=a.FaxAccount.localstationid,m.form.tags=a.tags,m.workspace.name=a.contact||"No number",m.expanded=!1;var b=_.findLast(a.FaxMessages,{status:"RECEIVED"});return b&&(m.form.to=[{fax:b.from}]),k.socket.on("fax_room:save",function(a){a.id===m.workspace.id&&_.merge(m.faxRoom,a)}),a})["catch"](function(a){i.error(a)})["finally"](function(){j.stop("spinner-grid"),m.form.disabled=!1})):(m.panelLeft=null,m.panelRight="col-md-12",j.stop("spinner-grid"),void 0)}}}]),angular.module("xCallyShuttleApp").controller("FaxInboxStatusModalCtrl",["$scope","$uibModalInstance","FaxAccount","status","accountId",function(a,b,c,d,e){a.modal={title:"APPLICATION_CONFIRM_CLOSE",text:"MESSAGE_ARE_YOU_SURE_YOU_WANT_TO_CLOSE_THE_FAX"},a.initDisposition=function(){return a.item={disposition:null,status:"CLOSED"},c.get({accountId:e,controller:"dispositions"}).$promise.then(function(b){a.dispositions=b.rows})["catch"](function(a){console.error(a)})},a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.inbox.view.account",{url:"/account/:id",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:10}}})}]),angular.module("xCallyShuttleApp").controller("FaxInboxViewAccountListCtrl",["$scope","$rootScope","$uibModal","$translate","$stateParams","$state","Tag","usSpinnerService","socket","FaxAccount","FaxRoom","gridOptions","uiGridConstants","Auth","Modal","xAlert","localStorageService","uibButtonConfig",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){a.openRoom=function(b){var c=_.find(a.workspaces,{id:b,type:"faxRoom"});return c?c.active=!0:a.workspaces.push({id:b,type:"faxRoom","class":"fa fa-fax",active:!0}),b&&"agent"===n.getCurrentUser().role&&"PENDING"!==a.query.status&&"CLOSED"!==a.query.status?k.patch({id:b},{status:"OPEN",openReason:"agent"}).$promise["catch"](function(a){console.error(a)}):void 0},a.getPage=function(){h.spin("spinner-grid");var b={accountId:e.id,controller:"rooms"};return a.query&&_.merge(b,a.query),j.query(b).$promise.then(function(b){q.set("faxAccountId",e.id),a.gridOptions.data=b,i.socket.on("fax_room:save",function(b){if(b.FaxAccountId==e.id){var c=_.find(a.gridOptions.data,{id:b.id});c?c.status!==b.status?_.remove(a.gridOptions.data,{id:b.id}):_.merge(c,b):a.query.status===b.status&&a.gridOptions.data.push(b)}}),i.socket.on("fax_room:remove",function(b){_.remove(a.gridOptions.data,{id:b.id})})})["catch"](function(a){p.error(a)})["finally"](function(){h.stop("spinner-grid")})},a.initView=function(){r.activeClass="green-haze",a.id=[],a.isAdmin=n.isAdmin(),a.isAgent=n.isAgent(),a.uncheckable=!1,a.query={status:q.get("faxStatus")?q.get("faxStatus"):"NEW",tags:q.get("faxTags")?q.get("faxTags"):[]},a.$watch("query.status",function(b,c){b!==c&&(q.set("faxStatus",a.query.status),a.getPage())},!0),j.get().$promise.then(function(b){a.faxAccounts=b.rows})["catch"](function(a){console.error(a)}),g.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a)}),a.gridOptions={exporterCsvFilename:"fax_rooms.csv",enableRowHeaderSelection:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,enableFiltering:!0,enableSorting:!0,enableGridMenu:!1,flatEntityAccess:!0,showGridFooter:!0,fastWatch:!0,enableSelectAll:!0,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,columnDefs:[{name:"lastEvent",displayName:"",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div> <span data-ng-class=\"{'icon-arrow-up font-green': row.entity.lastEvent === 'SENT', 'icon-arrow-up font-yellow': row.entity.lastEvent === 'SENDING', 'icon-arrow-down font-green': row.entity.lastEvent === 'RECEIVED', 'icon-close font-red': row.entity.lastEvent === 'FAILED', 'icon-question': !row.entity.lastEvent}\"> </span> </div>",width:30,enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"tags",displayName:"",headerCellTemplate:'<i class="icon-tag" style="margin-top: 8px; margin-left: 8px;"></i>',cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><i data-ng-class=\"row.entity.tags.length ? 'icon-tag' : ''\" title=\"{{row.entity.tags}}\"></i></div>",width:30,enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"id",displayName:"Id",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><span>#{{row.entity.id}}</span></div>",width:75,enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"contact",cellClass:"text-center"},{name:"disposition",displayName:"APPLICATION_DISPOSITION",headerCellFilter:"translate"},{name:"createdAt",cellFilter:"date:'dd/MM/yyyy HH:mm'",width:120,enableFiltering:!1},{name:"updatedAt",cellFilter:"date:'dd/MM/yyyy HH:mm'",width:120,enableFiltering:!1,sort:{direction:m.DESC}},{name:"action",cellTemplate:'<div> <a class="btn btn-icon-only font-green" data-ng-hide="row.entity.waiting" data-ng-click="grid.appScope.openRoom(row.entity.id, row.entity.contact)"><i class="fa fa-fax" aria-hidden="true"></i></a> <a class="btn btn-icon-only font-red" data-ng-show="grid.appScope.isAdmin" data-ng-click="grid.appScope.deleteItem(row.entity.id, row.entity.id)"><i class="fa fa-trash" aria-hidden="true"></i> </div>',enableSorting:!1,cellClass:"ui-grid-vcenter",width:70,enableFiltering:!1,enableColumnMenu:!1}],data:[],onRegisterApi:function(b){a.gridApi=b,a.gridApi.selection&&(a.gridApi.selection.on.rowSelectionChanged(a,function(b){b.isSelected?a.id.push(a.gridApi.grid.options.primaryKey?b.entity[a.gridApi.grid.options.primaryKey]:b.entity.id):_.pull(a.id,a.gridApi.grid.options.primaryKey?b.entity[a.gridApi.grid.options.primaryKey]:b.entity.id)}),a.gridApi.selection.on.rowSelectionChangedBatch(a,function(b){b[0].isSelected?a.id=_.union(a.id,_.map(b,a.gridApi.grid.options.primaryKey?"entity."+a.gridApi.grid.options.primaryKey:"entity.id")):_.map(b,a.gridApi.grid.options.primaryKey?"entity."+a.gridApi.grid.options.primaryKey:"entity.id").forEach(function(b){_.pull(a.id,b)})}))}},a.getPage(a.query)},a.onChanged=function(){q.set("faxTags",a.query.tags),a.getPage(a.query)},a.loadAgents=function(a){c.open({animation:!0,templateUrl:"app/channels/fax/inbox/view/view.agents.modal.html",controller:"FaxInboxViewModalAgentCtrl",resolve:{roomId:a}})},a.tagItems=function(){c.open({animation:!0,templateUrl:"app/channels/fax/inbox/view/view.tags.modal.html",controller:"FaxInboxViewModalTagCtrl",resolve:{id:function(){return a.id}}}).result.then(function(){a.gridApi.selection.clearSelectedRows(),a.id=[]})},a.deleteItem=o.confirm["delete"](function(b){var c={id:b};return k.remove(c).$promise.then(function(){a.getPage(),p.show(d.instant("MESSAGE_WELL_DONE")+"!","success"),a.gridApi.selection.clearSelectedRows(),a.id=[]})["catch"](function(a){p.error(a)})}),a.deleteItems=o.confirm["delete"](function(){var b={ids:a.id};return k["delete"](b).$promise.then(function(){a.getPage(),p.show(d.instant("MESSAGE_WELL_DONE")+"!","success"),a.gridApi.selection.clearSelectedRows(),a.id=[]})["catch"](function(a){p.error(a)})}),a.disposeItems=function(){return c.open({animation:!0,templateUrl:"app/channels/fax/inbox/status/status.modal.html",controller:"FaxInboxStatusModalCtrl",resolve:{status:function(){return null},accountId:function(){return e.id}}}).result.then(function(b){return k.patch({id:a.id},b).$promise.then(function(){a.gridApi.selection.clearSelectedRows(),a.id=[]})["catch"](function(a){p.error(a)})})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.inbox.view.account.list",{url:"/list",templateUrl:"app/channels/fax/inbox/view/account/list/list.html",controller:"FaxInboxViewAccountListCtrl",data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:10}}})}]),angular.module("xCallyShuttleApp").controller("FaxInboxViewModalAgentCtrl",["$scope","$uibModalInstance","$translate","$stateParams","Agent","FaxRoom","xAlert","roomId",function(a,b,c,d,e,f,g,h){a.initModal=function(){a.agents=[],a.item={agents:[]},e.get().$promise.then(function(b){b.rows.forEach(function(b){a.agents.push(b)})})["catch"](function(a){console.error(a)}),f.query({id:h,controller:"agents"}).$promise.then(function(b){b.forEach(function(b){a.agents.push(b),a.item.agents.push(b.id)})})["catch"](function(a){console.error(a)}),a.modal={dismissable:!0,title:"APPLICATION_MESSAGE_SEND_RETRY",text:"MESSAGE_MESSAGE_SEND_RETRY",buttons:[{classes:"btn btn-success",text:"APPLICATION_RETRY",click:function(a){b.close(a)}},{classes:"btn default",text:"APPLICATION_CANCEL",click:function(a){b.dismiss(a)}}]}},a.ok=function(){return f.update({id:h,controller:"agents",agents:a.item.agents}).$promise.then(function(){g.show(c.instant("MESSAGE_WELL_DONE"),"success"),b.close()})["catch"](function(a){console.error(a)})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("FaxInboxViewCtrl",["$scope","$timeout","$location","localStorageService","FaxAccount","xAlert",function(a,b,c,d,e,f){a.initView=function(){return e.get().$promise.then(function(b){var e=null;if(a.faxAccounts=b.rows,a.faxAccounts.length){var f,g=d.get("faxAccountId");f=g&&_.find(a.faxAccounts,{id:Number(g)})?g:a.faxAccounts[0].id,e="/channels/fax/inbox/view/account/"+f+"/list"}e&&c.path(e)})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.inbox.view",{url:"/view",templateUrl:"app/channels/fax/inbox/view/view.html",controller:"FaxInboxViewCtrl",reload:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/inbox.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("FaxInboxViewModalStatusCtrl",["$scope","$uibModalInstance","$translate","$stateParams","$location","FaxRoom","xAlert","id","status",function(a,b,c,d,e,f,g,h,i){a.initModal=function(){a.modal={dismissable:!0,title:"APPLICATION_STATUS",html:"<p>"+c.instant("MESSAGE_CHANGE_STATUS")+"<strong> "+i+"</strong>?</p>",status:i,buttons:[{classes:"btn btn-success",text:"APPLICATION_CONFIRM",click:function(a){return f.update({id:h},{status:i}).$promise.then(function(){g.show(c.instant("MESSAGE_STATUS_UPDATE_SUCCESS"),"success"),b.close(a)})["catch"](function(a){g.error(a)})}},{classes:"btn default",text:"APPLICATION_CANCEL",click:function(a){b.dismiss(a)}}]}}}]),angular.module("xCallyShuttleApp").controller("FaxInboxViewModalTagCtrl",["$scope","$uibModalInstance","$translate","$stateParams","Tag","FaxRoom","xAlert","id",function(a,b,c,d,e,f,g,h){console.log(h),a.initModal=function(){return a.tags=[],a.item={tags:[]},a.modal={dismissable:!0,title:"APPLICATION_MESSAGE_SEND_RETRY",text:"MESSAGE_MESSAGE_SEND_RETRY",buttons:[{"class":"btn-success",text:"APPLICATION_TAG",click:function(){var d={status:!0};return f.patch({id:h},{tags:a.item.tags}).$promise["catch"](function(){d.status=!1,g.show(c.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})["finally"](function(){b.close(d)})}},{"class":"default",text:"APPLICATION_CANCEL",click:function(a){b.dismiss(a)}}]},e.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").factory("FaxQueue",["$resource",function(a){return a("/api/fax/queues/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("FaxQueueListCtrl",["$scope","FaxQueue","gridOptions","Auth","$uibModal",function(a,b,c,d,e){a.initView=function(){a.Auth=d;var e={exporterCsvFilename:"fax_queues.csv",columnDefs:[{name:"name"},{name:"description"},{name:"strategy"},{name:"timeout"},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/channels/fax/queues/view/{{row.entity.id}}/settings",name:"settings"},{"class":"green-meadow",href:"/channels/fax/queues/view/{{row.entity.id}}/agents",name:"agents",hide:"user"===d.getCurrentUser().role},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,e,a)},a.createItem=function(){var b=e.open({animation:!0,templateUrl:"app/channels/fax/queue/list/list.create.modal.html",controller:"FaxQueueListCreateCtrl",size:"lg"});b.result.then(function(b){console.log(b),a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("FaxQueueListCreateCtrl",["$scope","$uibModalInstance","$translate","xAlert","FaxQueue","Team","strategies",function(a,b,c,d,e,f,g){a.form={},a.strategies=g,a.item={penalty:0,agents:[]},a.getTeams=function(){return f.get({controller:"associations"}).$promise.then(function(b){a.teams=b.rows}).then(function(){ComponentsDropdowns.bindQueue(a.teams,[],function(){return{select:function(b){a.item.agents=_.union(a.item.agents,b)},deselect:function(b){a.item.agents=_.difference(a.item.agents,b)}}})})["catch"](function(a){console.error(a)})},a.save=function(){return e.save(a.item).$promise.then(function(a){d.show(c.instant("MESSAGE_WELL_DONE"),"success"),b.close(a)})["catch"](function(a){d.error(a)})},a.cancel=function(){b.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.queues.list",{url:"/list",templateUrl:"app/channels/fax/queue/list/list.html",controller:"FaxQueueListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.queues",{url:"/queues",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:39}}})}]),angular.module("xCallyShuttleApp").controller("FaxQueueViewCtrl",["$scope","$http","$translate","$stateParams","xAlert","FaxQueue","Team","Auth","strategies",function(a,b,c,d,e,f,g,h,i){a.Auth=h,a.strategies=i;var j=function(){return{select:function(b){return f.save({id:a.queue.id,controller:"agents"},{agents:b,penalty:a.queue.penalty}).$promise.then(function(){a.getTeams()})["catch"](function(a){console.error(a)})},deselect:function(b){return f["delete"]({id:a.queue.id,controller:"agents",agents:b}).$promise.then(function(){a.getTeams()})["catch"](function(a){console.error(a)})}}};a.getQueue=function(){return f.get({id:d.id}).$promise.then(function(b){b.penalty=0,a.queue=b})["catch"](function(a){e.error(a)})},a.updateFaxQueue=function(){return f.update({id:d.id},{name:a.queue.name,description:a.queue.description,timeout:a.queue.timeout,strategy:a.queue.strategy}).$promise.then(function(){e.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){e.error(a)})},a.getTeams=function(){return g.get({controller:"associations"}).$promise.then(function(b){return a.teams=b.rows,f.get({id:d.id,controller:"agents"}).$promise}).then(function(b){ComponentsDropdowns.bindMailQueue(a.teams,_.map(b.rows,function(a){return{id:a.id,penalty:a.UserHasFaxQueue.penalty}}),j)})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.queues.view",{url:"/view/:id",templateUrl:"app/channels/fax/queue/view/view.html",controller:"FaxQueueViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.fax.queues.view.settings",{url:"/settings",templateUrl:"app/channels/fax/queue/view/view.settings.html"}).state("main.channels.fax.queues.view.agents",{url:"/agents",templateUrl:"app/channels/fax/queue/view/view.agents.html",cache:!1,serie:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.realtime",{url:"/realtime",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:41}}})}]),angular.module("xCallyShuttleApp").controller("FaxRealtimeViewAgentCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","Agent","Pause","Action","FaxQueue","usSpinnerService","$q","uiGridConstants","Auth","$timeout",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){function p(){return k.spin("grid-spinner"),g.get(u).$promise.then(function(b){a.gridOptions.totalItems=b.count,a.gridOptions.data=[],b.rows.forEach(function(a){r(a)})})["catch"](function(a){f.error(a)})["finally"](function(){k.stop("grid-spinner")})}function q(){e.socket.on("agent:save",function(b){b=b.newValues||b;var c=_.find(a.gridOptions.data,{agentId:b.id,isAgent:!0});c&&(c.online=_.has(b,"online")?b.online:c.online,c.lastLoginAt=_.has(b,"lastLoginAt")?b.lastLoginAt:c.lastLoginAt,c.pause=_.has(b,"faxPause")?b.faxPause:c.faxPause,c.pauseType=_.has(b,"pauseType")?b.pauseType:c.pauseType,c.lastPauseAt=_.has(b,"lastPauseAt")?b.lastPauseAt:c.lastPauseAt,c.ipaddr=_.has(b,"ipaddr")?b.ipaddr:c.ipaddr,c.port=_.has(b,"port")?b.port:c.port,c.fullcontact=_.has(b,"fullcontact")?b.fullcontact:c.fullcontact,c.useragent=_.has(b,"useragent")?b.useragent:c.useragent,c.lastms=_.has(b,"lastms")?b.lastms:c.lastms,c.internal=_.has(b,"internal")?b.internal:c.internal,_.map(a.gridOptions.data,function(a){a.isAgent||a.agentId!==b.id||(a.online=_.has(b,"online")?b.online:a.online)}))}),e.socket.on("agent:remove",function(b){_.remove(a.gridOptions.data,{agentId:b.id})}),e.socket.on("user_has_fax_queue:save",function(b){var c=_.includes(_.map(a.CurrentUser.PFaxQueues,"id"),b.FaxQueueId)||n.isAdmin();if(c){var d=_.find(a.gridOptions.data,{agentId:b.UserId,isAgent:!0});if(d){var e=a.gridOptions.data.indexOf(d);a.gridOptions.data.splice(e+1,0,{isAgent:!1,agentId:b.UserId,queue:b.queue,queueId:b.FaxQueueId,agent:b.membername,online:d.online})}}}),e.socket.on("user_has_fax_queue:remove",function(b){_.remove(a.gridOptions.data,{agentId:b.UserId,queueId:b.FaxQueueId})})}function r(b){a.gridOptions.data.push({isAgent:!0,agentId:b.id,agent:b.name,online:b.online,lastLoginAt:b.lastLoginAt,lastPauseAt:b.lastPauseAt,pause:b.faxPause,pauseType:b.pauseType,ipaddr:b.ipaddr,port:b.port,fullcontact:b.fullcontact,useragent:b.useragent,lastms:b.lastms,internal:b.internal,$$treeLevel:0}),b.FaxQueues&&b.FaxQueues.forEach(function(c){a.gridOptions.data.push({isAgent:!1,agentId:b.id,queue:c.name,queueId:c.id,agent:b.name,online:b.online})})}function s(){return h.get().$promise.then(function(b){a.pauses=b.rows,e.syncUpdates("pause",a.pauses)})["catch"](function(a){f.error(a)})}function t(){return j.get().$promise.then(function(b){a.faxQueues=b.rows,e.syncUpdates("fax_queue",a.faxQueues)})["catch"](function(a){f.error(a)})}a.faxQueues=[];var u={controller:"realtime",controller1:"fax",offset:0,limit:10};a.moment=moment,a.initAgents=function(){a.gridOptions={enableGridMenu:!0,headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,useExternalPagination:!0,useExternalSorting:!0,useExternalFiltering:!0,multiSelect:!0,showTreeExpandNoChildren:!0,columnDefs:[{name:"name",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.isAgent">{{row.entity.agent}} <{{row.entity.internal}}></div>'},{name:"online",displayName:"APPLICATION_ONLINE",width:150,headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.online != null && row.entity.isAgent"><i class="fa" data-ng-class="{\'font-green\':row.entity.online, \'font-red\':!row.entity.online,\'fa-user\':row.entity.online,\'fa-user-times\':!row.entity.online}"></i> <i data-ng-if="row.entity.online" class="fa fa-sign-out font-red pointer-cursor" title="logout" data-ng-click="grid.appScope.agentLogout(row.entity.agent,row.entity.agentId)"></i> <span data-ng-if="row.entity.online && grid.appScope.showTimers" class="left-margin"><css-timer start-time="row.entity.lastLoginAt"></css-timer></span></div>',filter:{type:m.filter.SELECT,selectOptions:[{value:"true",label:"ONLINE"},{value:"false",label:"OFFLINE"}]}},{name:"faxPause",width:300,displayName:"APPLICATION_PAUSE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.pause != null && row.entity.online" class="ui-grid-vcenter"><i data-ng-if="row.entity.pause" data-ng-click="grid.appScope.pause(row.entity,\'unpause\')" class="fa fa-play font-green pointer-cursor left-margin" title="{{\'APPLICATION_RESUME\' | translate}}"></i><i class="fa fa-pause font-yellow pointer-cursor" data-ng-click="grid.appScope.pause(row.entity,\'pause\',\'DEFAULT PAUSE\')" title="{{\'APPLICATION_DEFAULT_PAUSE\' | translate}}"></i><select data-ng-if="grid.appScope.pauses.length" class="pause-select pointer-cursor" data-ng-model="grid.appScope.pauseType" data-ng-change="grid.appScope.pause(row.entity,\'pause\',grid.appScope.pauseType)"><option class="pointer-cursor" data-ng-repeat="pause in grid.appScope.pauses">{{pause.name}}</option></select> <span data-ng-if="row.entity.pause">({{row.entity.pauseType}})</span><span data-ng-if="row.entity.pause && grid.appScope.showTimers" class="left-margin"><css-timer start-time="row.entity.lastPauseAt"></css-timer></span></div>',filter:{type:m.filter.SELECT,selectOptions:[{value:"true",label:"PAUSED"},{value:"false",label:"NOT PAUSED"}]},enableSorting:!1,enableColumnMenu:!1},{name:"queue",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"action",displayName:"",width:170,cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><button data-ng-if="row.entity.queueId" class="btn btn-xs red-sunglo" data-ng-click="grid.appScope.leaveQueue(row.entity.agentId,row.entity.queueId)"><i class="icon-ban"></i> {{\'APPLICATION_LEAVE\' | translate}}</button><button data-ng-if="row.entity.isAgent && row.treeNode.children.length < grid.appScope.faxQueues.length" class="btn btn-xs blue-hoki" data-ng-click="grid.appScope.joinQueue(row.entity.agentId)"><i class="icon-plus"></i> {{\'APPLICATION_JOIN_QUEUE\' | translate}}</button><div>',enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1}],data:[],gridMenuTitleFilter:function(a){var b=l.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){v(a.gridApi.core.getVisibleRows(a.gridApi.grid).length)}),a.gridApi.treeBase.on.rowExpanded(a,function(b){v(a.gridApi.core.getVisibleRows(a.gridApi.grid).length+b.treeNode.children.length)}),a.gridApi.treeBase.on.rowCollapsed(a,function(b){v(a.gridApi.core.getVisibleRows(a.gridApi.grid).length-b.treeNode.children.length)}),a.gridApi.core.on.sortChanged(a,function(a,b){0===b.length?u.order=null:u.order=b[0].name+" "+b[0].sort.direction.toUpperCase(),p()}),a.gridApi.pagination.on.paginationChanged(a,function(a,b){u.offset=(a-1)*b,u.limit=b,p()}),a.gridApi.core.on.filterChanged(a,function(){var a=this.grid;a.columns.forEach(function(a){a.filters[0].term?u[a.name]=a.filters[0].term:delete u[a.name]}),p()})}},p(),s(),t(),o(function(){q()})};var v=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("agent"),e.unsyncUpdates("user_has_fax_queue")}),a.pause=function(b,c,e){return e&&(a.pauseType=null),i.save({name:c,agent:b.agentId,data2:b.agent,type:e||"DEFAULT PAUSE",data4:e||"DEFAULT PAUSE",channel:"fax"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.joinQueue=function(e){var g=c.open({animation:!0,templateUrl:"app/channels/fax/realtime/view/agent/queue.modal.add.html",controller:"FaxRealtimeViewAgentQueueModalCtrl",resolve:{queues:function(){return _.reject(a.faxQueues,function(b){return!!_.find(a.gridOptions.data,{queue:b.name,isAgent:!1,agentId:e})})}}});g.result.then(function(b){return i.save({name:"QueueAdd",agent:e,queues:_.filter(a.faxQueues,function(a){return _.includes(b.queues,a.id)}),channel:"fax",data1:e,data3:b.queues.join(","),data4:"fax"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},function(){b.info("Modal dismissed at: "+new Date)})},a.leaveQueue=function(a,b){return i.save({name:"QueueRemove",agent:a,queueId:b,channel:"fax",data1:a,data3:b,data4:"fax"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.showInfo=function(a){c.open({animation:!0,templateUrl:"app/channels/fax/realtime/view/agent/agent.modal.info.html",controller:"FaxRealtimeViewAgentInfoModalCtrl",resolve:{agent:a}})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.realtime.view.agents",{url:"/agents",templateUrl:"app/channels/fax/realtime/view/agent/agent.html",controller:"FaxRealtimeViewAgentCtrl"})}]),angular.module("xCallyShuttleApp").controller("FaxRealtimeViewAgentInfoModalCtrl",["$scope","$uibModalInstance","$http","agent",function(a,b,c,d){a.agent=d,a.close=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("FaxRealtimeViewAgentQueueModalCtrl",["$scope","$uibModalInstance","$http","queues",function(a,b,c,d){a.queues=d,a.item={},a.save=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("FaxRealtimeViewApplicationCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","ReportFaxSession","usSpinnerService","$q","uiGridConstants","$timeout",function(a,b,c,d,e,f,g,h,i,j,k){function l(){return h.spin("spinner-grid"),g.get({controller:"waiting",controller2:"applications"}).$promise.then(function(b){a.gridOptions.data=b.rows})["catch"](function(a){f.error(a)})["finally"](function(){m(),h.stop("spinner-grid")})}function m(){e.socket.on("report_fax_session:save",function(b){var c=_.find(a.gridOptions.data,{id:b.id});c?(_.merge(c,b),b.leaveAt&&k(function(){_.remove(a.gridOptions.data,{id:b.id})},1e4)):b.leaveAt||a.gridOptions.data.push(b)}),e.socket.on("report_fax_session:remove",function(b){_.remove(a.gridOptions.data,{id:b.id})})}a.moment=moment,a.initApplications=function(){a.gridOptions={headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,columnDefs:[{name:"uniqueid",displayName:"APPLICATION_UNIQUEID",headerCellFilter:"translate"},{name:"accountname",displayName:"APPLICATION_ACCOUNT",headerCellFilter:"translate"},{name:"application",displayName:"APPLICATION_APPLICATION",headerCellFilter:"translate"},{name:"status",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span data-ng-if="!row.entity.leaveAt">{{\'APPLICATION_QUEUESTATUS_WAITING\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.complete">{{\'APPLICATION_QUEUESTATUS_COMPLETE\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.timeout">{{\'APPLICATION_TIMEOUT\' | translate}}</span> <span data-ng-if="!row.entity.leaveAt && grid.appScope.showTimers"><css-timer start-time="row.entity.updatedAt"></css-timer></span></div>', +enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1},{name:"membername",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.membername || ''}}</span></div>"},{name:"queuename",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.queuename || ''}}</span></div>"}],data:[],gridMenuTitleFilter:function(a){var b=i.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){n(a.gridOptions.data.length)})}},l()};var n=function(a){var b=a?30*a+60:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("report_fax_session")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.realtime.view.applications",{url:"/applications",templateUrl:"app/channels/fax/realtime/view/application/application.html",controller:"FaxRealtimeViewApplicationCtrl"})}]),angular.module("xCallyShuttleApp").controller("FaxRealtimeViewCtrl",["$scope",function(a){a.agents=[{name:"Queues",link:"main.channels.fax.realtime.view.agents.queues"},{name:"Timeline",link:"main.channels.fax.realtime.view.agents.timeline"}],a.sessions=[{name:"Sessions",link:"main.channels.fax.realtime.view.sessions"}],a.tree={queues:[{name:"Queues",link:"main.channels.fax.realtime.view.agents.queues"},{name:"Timeline",link:"main.channels.fax.realtime.view.agents.timeline"}],sessions:[{name:"Sessions",link:"main.channels.fax.realtime.view.sessions"}]},a.timerSwitch={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"primary"},a.showTimers=!1}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.realtime.view",{url:"/view",templateUrl:"app/channels/fax/realtime/view/view.html",controller:"FaxRealtimeViewCtrl"})}]),angular.module("xCallyShuttleApp").factory("ReportFaxSession",["$resource",function(a){return a("/api/report/fax/sessions/:id/:controller/:controller2",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("MailAccount",["$resource",function(a){return a("/api/mail/accounts/:accountId/:controller/:id",{id:"@accountId"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.accounts",{url:"/accounts",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:34}}})}]),angular.module("xCallyShuttleApp").controller("MailAccountListCtrl",["$scope","$stateParams","gridOptions","MailAccount","socket",function(a,b,c,d,e){a.$on("$destroy",function(){e.unsyncUpdates("mail_server_in")}),a.initView=function(){e.socket.on("mail_server_in:save",function(b){var c=_.find(a.gridOptions.data,{id:b.MailAccountId});c&&(c.MailServerIn.state=b.state,c.MailServerIn.source=JSON.parse(b.source))});var f={exporterCsvFilename:"mail_accounts.csv",columnDefs:[{name:"name"},{name:"description"},{name:"address"},{name:"MailServerIn.state",width:100,cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div> <span data-ng-if="row.entity.MailServerIn" class="label label-sm" data-ng-class="row.entity.MailServerIn.state === \'CONNECTED\' ? \'label-success\' : \'label-danger\'">{{row.entity.MailServerIn.state}}</span> <span data-ng-if="!row.entity.MailServerIn" class="label label-sm label-info" >{{\'APPLICATION_DISABLED\' | translate | uppercase}}</span> </div>',displayName:"IMAP",enableSorting:!1,enableFiltering:!1},{name:"MailServerOut.state",width:110,cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><span class=\"label label-sm\" data-ng-class=\"row.entity.MailServerOut.state === 'CONNECTED' ? 'label-success' : 'label-danger'\">{{row.entity.MailServerOut.state}}</span></div>",displayName:"SMTP",enableSorting:!1,enableFiltering:!1},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/channels/mail/accounts/view/{{row.entity.id}}/settings",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(d,f,a,{accountId:b.accountId})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.accounts.list",{url:"/list",templateUrl:"app/channels/mail/account/list/list.html",controller:"MailAccountListCtrl"})}]),angular.module("xCallyShuttleApp").factory("MailServerIn",["$resource",function(a){return a("/api/mail/servers/in/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("MailServerOut",["$resource",function(a){return a("/api/mail/servers/out/:id/:controller",{id:"@id"},{update:{method:"PUT"},test:{method:"GET"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.accounts.view.actions",{url:"/actions",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("MailAccountViewActionListCtrl",["$scope","gridOptions","MailAccount","$http","$translate","$stateParams",function(a,b,c,d,e,f){a.initActons=function(){var d={draggable:!0,exporterCsvFilename:"mail_applications.csv",enableSorting:!1,enableFiltering:!1,columnDefs:[{name:"app",cellClass:"text-center"},{name:"name",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span>{{row.entity.app == "queue" ? row.entity.MailQueue.name : row.entity.User.name}}</span></div>'},{name:"timeout",cellClass:"text-center"},{name:"interval",displayName:"APPLICATION_TIME_INTERVAL",cellClass:"text-center",cellTemplate:"<div><span>{{row.entity.Interval ? row.entity.Interval.name : row.entity.interval}}</span></div>"},{name:"action",width:125,buttons:[{"class":"blue-hoki",href:"/channels/mail/accounts/view/{{row.entity.MailAccountId}}/actions/view/{{row.entity.id}}",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.app, row.entity.id)"}]}]};a.gridOptions=b.gridOptions(c,d,a,{accountId:f.accountId,controller:"applications"})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.accounts.view.actions.list",{url:"/list",templateUrl:"app/channels/mail/account/view/action/list/list.html",controller:"MailAccountViewActionListCtrl"})}]),angular.module("xCallyShuttleApp").controller("MailAccountViewActionViewCtrl",["$scope","$http","$stateParams","$translate","$location","xAlert","WizardHandler","socket","application","interval","Agent","Interval","MailQueue","MailAccount","Template","SmsAccount",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initAction=function(){return a.$application=i.application,a.$stateParams=c,a.$interval=j.interval,a.forms={},a.apps=[{name:"Queue",value:"queue"},{name:"Agent",value:"agent"},{name:"SendMail",value:"sendMail"},{name:"ReplyMail",value:"replyMail"},{name:"SendSMS",value:"sendSms"}],a.types=[{key:"APPLICATION_REPLY",value:"reply"},{key:"APPLICATION_REPLY_TO_ALL",value:"replyAll"}],n.get({accountId:c.accountId,controller:"applications",id:c.actionId}).$promise.then(function(b){if(a.application=b,a.application.alwaysTime=!1,a.application.IntervalId)a.application.intType="list";else switch(a.application.interval){case"*,*,*,*":a.application.intType="always";break;default:a.application.intType="custom"}if("always"===a.application.intType||"custom"===a.application.intType){var c=a.application.interval.split(",");"*"===c[0]?a.application.alwaysTime=!0:(a.application.t_from=moment(new Date),a.application.t_to=moment(new Date),a.application.t_from.hour(c[0].split("-")[0].split(":")[0]),a.application.t_from.minute(c[0].split("-")[0].split(":")[1]),a.application.t_to.hour(c[0].split("-")[1].split(":")[0]),a.application.t_to.minute(c[0].split("-")[1].split(":")[1])),"*"===c[1]?(a.application.wd_from="always",a.application.wd_to="always"):(a.application.wd_from=c[1].split("-")[0],a.application.wd_to=c[1].split("-")[1]),"*"===c[2]?(a.application.md_from="always",a.application.md_to="always"):(a.application.md_from=c[2].split("-")[0],a.application.md_to=c[2].split("-")[1]),"*"===c[3]?(a.application.m_from="always",a.application.m_to="always"):(a.application.m_from=c[3].split("-")[0],a.application.m_to=c[3].split("-")[1])}a.$watch("application.t_from",function(b){a.application.t_from_hm=moment(b).format("HH:mm")}),a.$watch("application.t_to",function(b){a.application.t_to_hm=moment(b).format("HH:mm")})})["catch"](function(a){console.error(a),f.error(a)})},a.getQueues=function(){return m.get().$promise.then(function(b){a.queues=b.rows})["catch"](function(a){console.error(a)})},a.getAgents=function(){return k.get().$promise.then(function(b){a.agents=b.rows})["catch"](function(a){console.error(a)})},a.getIntervals=function(){return l.get().$promise.then(function(b){a.intervals=b.rows})["catch"](function(a){console.error(a)})},a.getTemplates=function(){return o.get().$promise.then(function(b){a.templates=b.rows})["catch"](function(a){console.error(a)})},a.getMailAccounts=function(){return n.get().$promise.then(function(b){a.mailAccounts=b.rows})["catch"](function(a){console.error(a)})},a.getSmsAccounts=function(){return p.get().$promise.then(function(b){a.smsAccounts=b.rows})["catch"](function(a){console.error(a)})},a.updateItem=function(){switch(a.application.intType){case"always":a.application.interval="*,*,*,*",a.application.IntervalId=null;break;case"list":var b=_.find(a.intervals,{id:a.application.IntervalId});a.application.interval=b?"":"*,*,*,*",a.application.IntervalId=b?a.application.IntervalId:null;break;case"custom":var g,h,i,j,k;g=a.application.t_from&&a.application.t_to&&!a.application.alwaysTime?moment(a.application.t_from).format("HH:mm")+"-"+moment(a.application.t_to).format("HH:mm"):"*",a.application.wd_from&&"always"!==a.application.wd_from?(h=a.application.wd_from,a.application.wd_to&&"always"!==a.application.wd_to&&(h+="-"+a.application.wd_to)):h="*",a.application.md_from&&"always"!==a.application.md_from?(i=a.application.md_from,a.application.md_to&&"always"!==a.application.md_to&&(i+="-"+a.application.md_to)):i="*",a.application.m_from&&"always"!==a.application.m_from?(j=a.application.m_from,a.application.m_to&&"always"!==a.application.m_to&&(j+="-"+a.application.m_to)):j="*",k=g+","+h+","+i+","+j,a.application.interval=k,a.application.IntervalId=null}return n.update({accountId:c.accountId,controller:"applications",id:c.actionId},a.application).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success"),e.path("/channels/mail/accounts/view/"+c.accountId+"/actions/list")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.accounts.view.actions.view",{url:"/view/:actionId",templateUrl:"app/channels/mail/account/view/action/view/view.html",controller:"MailAccountViewActionViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("MailAccountViewActionWizardCtrl",["$scope","$http","Agent","Template","MailQueue","MailAccount","Interval","$stateParams","$translate","$location","xAlert","WizardHandler","socket","application","interval","SmsAccount",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initWizard=function(){a.apps=[{name:"Queue",value:"queue"},{name:"Agent",value:"agent"},{name:"SendMail",value:"sendMail"},{name:"ReplyMail",value:"replyMail"},{name:"SendSMS",value:"sendSms"}],a.types=[{key:"APPLICATION_REPLY",value:"reply"},{key:"APPLICATION_REPLY_TO_ALL",value:"replyAll"}],a.$application=n.application,a.$stateParams=h,a.$interval=o.interval,a.forms={},a.application={alwaysTime:!0},a.$watch("application.t_from",function(b){a.application.t_from_hm=moment(b).format("HH:mm")}),a.$watch("application.t_to",function(b){a.application.t_to_hm=moment(b).format("HH:mm")})},a.getQueues=function(){return e.get().$promise.then(function(b){a.queues=b.rows})["catch"](function(a){console.error(a)})},a.getAgents=function(){return c.get().$promise.then(function(b){a.agents=b.rows})["catch"](function(a){console.error(a)})},a.getTemplates=function(){return d.get().$promise.then(function(b){a.templates=b.rows})["catch"](function(a){console.error(a)})},a.getSmsAccounts=function(){return p.get().$promise.then(function(b){a.smsAccounts=b.rows})["catch"](function(a){console.error(a)})},a.getMailAccounts=function(){return f.get().$promise.then(function(b){a.mailAccounts=b.rows})["catch"](function(a){console.error(a)})},a.getIntervals=function(){return g.get().$promise.then(function(b){a.intervals=b.rows})["catch"](function(a){console.error(a)})},a.createItem=function(){switch(a.application.intType){case"always":a.application.interval="*,*,*,*",a.application.IntervalId=null;break;case"list":var b=_.find(a.intervals,{id:a.application.IntervalId});a.application.interval=b?"":"*,*,*,*",a.application.IntervalId=b?a.application.IntervalId:null;break;case"custom":var c,d,e,g,i;c=a.application.t_from&&a.application.t_to&&!a.application.alwaysTime?moment(a.application.t_from).format("HH:mm")+"-"+moment(a.application.t_to).format("HH:mm"):"*",a.application.wd_from&&"always"!==a.application.wd_from?(d=a.application.wd_from,a.application.wd_to&&"always"!==a.application.wd_to&&(d+="-"+a.application.wd_to)):d="*",a.application.md_from&&"always"!==a.application.md_from?(e=a.application.md_from,a.application.md_to&&"always"!==a.application.md_to&&(e+="-"+a.application.md_to)):e="*",a.application.m_from&&"always"!==a.application.m_from?(g=a.application.m_from,a.application.m_to&&"always"!==a.application.m_to&&(g+="-"+a.application.m_to)):g="*",i=c+","+d+","+e+","+g,a.application.interval=i,a.application.IntervalId=null}return f.save({accountId:h.accountId,controller:"applications"},a.application).$promise.then(function(){j.path("/channels/mail/accounts/view/"+h.accountId+"/actions/list")})["catch"](function(a){console.error(a)})},a.formValidation=function(a){return a},a.next=function(){l.wizard().next()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.accounts.view.actions.wizard",{url:"/wizard",templateUrl:"app/channels/mail/account/view/action/wizard/wizard.html",controller:"MailAccountViewActionWizardCtrl"})}]),angular.module("xCallyShuttleApp").factory("MailDisposition",["$resource",function(a){return a("/api/mail/dispositions/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("MailInboxViewModaDispositionAddCtrl",["$scope","$uibModalInstance","MailAccount","id","xAlert","$translate",function(a,b,c,d,e,f){a.ok=function(){return c.save({accountId:d,controller:"dispositions"},{name:a.name}).$promise.then(function(a){b.close(a)})["catch"](function(a){e.show(f.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("MailAccountDispositionViewCtrl",["$scope","$stateParams","$uibModal","$translate","MailAccount","xAlert",function(a,b,c,d,e,f){a.initView=function(){return e.get({accountId:b.accountId,controller:"dispositions"}).$promise.then(function(b){a.dispositions=b.rows})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.updateDisposition=function(a,c){return e.update({accountId:b.accountId,controller:"dispositions",id:a},{name:c}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.deleteDisposition=function(c){return console.log("delete"),e.remove({accountId:b.accountId,controller:"dispositions",id:c}).$promise.then(function(){_.remove(a.dispositions,{id:c})})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.addDisposition=function(){return c.open({animation:!0,templateUrl:"app/channels/mail/account/view/disposition/modal/add.modal.html",controller:"MailInboxViewModaDispositionAddCtrl",resolve:{id:function(){return b.accountId}}}).result.then(function(b){b&&a.dispositions.push(b)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.accounts.view.dispositions",{url:"/dispositions",controller:"MailAccountDispositionViewCtrl",templateUrl:"app/channels/mail/account/view/disposition/view/view.html"})}]),angular.module("xCallyShuttleApp").controller("MailAccountHooksViewCtrl",["$scope","MailAccount","Pause","$http","$stateParams","clipboard","$translate","$location","xAlert","List",function(a,b,c,d,e,f,g,h,i,j){a.account={},a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.CONST_TIMEOUT=3e4,a.initView=function(){a.types=[{value:"",name:"-- None --"},{name:"HTTP GET",value:"GET"},{name:"HTTP POST",value:"POST"}],c.get().$promise.then(function(b){a.pauses=b.rows})["catch"](function(a){i.error(a)}),b.get({id:e.accountId}).$promise.then(function(b){a.account=b,a.account.actions.length<1&&a.account.actions.push({action:"pause",enabled:!1,type:null})})["catch"](function(a){i.error(a)})},a.resetActionData=function(a){a.type=null},a.updateItemMailAccount=function(){return console.log(a.account),b.update({id:e.accountId},a.account).$promise.then(function(){i.show(g.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){i.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.accounts.view.hooks",{url:"/hooks",controller:"MailAccountHooksViewCtrl",templateUrl:"app/channels/mail/account/view/hooks/view/view.html"})}]),angular.module("xCallyShuttleApp").controller("MailAccountOtherViewCtrl",["$scope","$rootScope","$stateParams","$translate","xAlert","MailAccount",function(a,b,c,d,e,f){a.initView=function(){return a.options={language:b.language,allowedContent:!0,entities:!1,skin:"office2013",contentsCss:"/assets/css/global/richparams.css",extraPlugins:"autogrow",autoGrow_minHeight:450,disableNativeSpellChecker:!1,toolbar:[{name:"clipboard",items:["Cut","Copy","Paste","PasteText","PasteFromWord","-","Undo","Redo"]},{name:"links",items:["Link","Unlink","Anchor"]},{name:"insert",items:["Image","Table","HorizontalRule","SpecialChar"]},{name:"tools",items:["Maximize"]},{name:"document",items:["Source"]},"/",{name:"basicstyles",items:["Bold","Italic","Underline","Strike","Subscript","Superscript","-","RemoveFormat"]},{name:"paragraph",items:["NumberedList","BulletedList","-","Outdent","Indent","-","Blockquote"]},{name:"styles",items:["Styles","Format"]},"/",{name:"motion",items:["voice","chat","mail"]}]},f.get({id:c.accountId}).$promise.then(function(b){console.log(b),a.account=b})["catch"](function(a){e.error(a)})},a.updateItemMailAccount=function(){return f.update({id:c.accountId},{whiteLabel:a.account.whiteLabel,signature:a.account.signature}).$promise.then(function(){e.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.accounts.view.other",{url:"/other",controller:"MailAccountOtherViewCtrl",templateUrl:"app/channels/mail/account/view/other/view/view.html"})}]),angular.module("xCallyShuttleApp").controller("MailAccountSettingViewCtrl",["$scope","$http","$stateParams","$translate","$location","$timeout","socket","xAlert","MailAccount","MailMessage","MailServerIn","MailServerOut","usSpinnerService","List","Template",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){a.imapDisabled=!1,a.smtpDisabled=!1,a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.CONST_TIMEOUT=3e4,a.$on("$destroy",function(){g.socket.removeAllListeners("mail_message:sent"),g.socket.removeAllListeners("mail_message:failed"),g.socket.removeAllListeners("mail_server_in:state"),g.socket.removeAllListeners("mail_server_out:state")}),a.initView=function(){return g.socket.on("mail_message:sent",function(){h.show(d.instant("MESSAGE_WELL_DONE"),"success"),m.stop("spinner-grid")}),g.socket.on("mail_message:failed",function(){h.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger"),m.stop("spinner-grid")}),n.get().$promise.then(function(b){a.lists=b.rows})["catch"](function(a){console.error(a)}),o.get().$promise.then(function(b){a.templates=b.rows})["catch"](function(a){console.error(a)}),i.get({id:c.accountId}).$promise.then(function(b){a.account=b,a.account.MailServerIn&&(a.account.MailServerIn.source=JSON.parse(a.account.MailServerIn.source),a.account.MailServerOut.source=JSON.parse(a.account.MailServerOut.source),g.socket.on("mail_server_in:state",function(b){if(b.id===a.account.MailServerIn.id)switch(a.account.MailServerIn.state=b.state,a.account.MailServerIn.source=JSON.parse(b.source),b.state){case"CONNECTING":break;default:m.stop("spinner-grid"),a.imapDisabled=!1}})),g.socket.on("mail_server_out:state",function(b){if(b.id===a.account.MailServerOut.id)switch(a.account.MailServerOut.state=b.state,a.account.MailServerOut.source=JSON.parse(b.source),b.state){case"CONNECTING":break;default:m.stop("spinner-grid"),a.smtpDisabled=!1}})})["catch"](function(a){h.error(a)})},a.updateItemMailAccount=function(){return i.update({id:c.accountId},{name:a.account.name,description:a.account.description,address:a.account.address,fidelity:a.account.fidelity,timeout:a.account.timeout,service:a.account.service,ListId:a.account.ListId,TemplateId:a.account.TemplateId}).$promise.then(function(){h.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){h.error(a)})},a.updateItemMailServerIn=function(){var b=angular.copy(a.account.MailServerIn);return delete b.source,m.spin("spinner-grid"),a.imapDisabled=!0,k.update({id:b.id},b).$promise.then(function(){h.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){h.error(a)})},a.updateItemMailServerOut=function(){var b=angular.copy(a.account.MailServerOut);return delete b.source,m.spin("spinner-grid"),a.smtpDisabled=!0,l.update({id:b.id},b).$promise.then(function(){h.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){h.error(a)})},a.test=function(){return m.spin("spinner-grid"),a.smtpDisabled=!0,l.update({id:a.account.MailServerOut.id},{state:"CONNECTING"}).$promise["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.accounts.view.settings",{url:"/settings",controller:"MailAccountSettingViewCtrl",templateUrl:"app/channels/mail/account/view/setting/view/view.html"})}]),angular.module("xCallyShuttleApp").controller("MailAccountViewCtrl",["$scope","$stateParams","MailAccount",function(a,b,c){a.initView=function(){return c.get({id:b.accountId}).$promise.then(function(b){a.account=b})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.accounts.view",{url:"/view/:accountId",controller:"MailAccountViewCtrl",templateUrl:"app/channels/mail/account/view/view.html",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]})}]}})}]),angular.module("xCallyShuttleApp").controller("MailAccountWizardCtrl",["$scope","$http","$location","$translate","WizardHandler","xAlert","MailAccount",function(a,b,c,d,e,f,g){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initWizard=function(){a.forms={},a.item={MailServerIn:{port:993,ssl:!0,"delete":!1,protocol:"IMAP",filter:"UNSEEN",mailbox:"INBOX",keepalive:!0,authTimeout:5,connTimeout:10},MailServerOut:{port:465,ssl:!0}}},a.goNext=function(){e.wizard().next()},a.formValidation=function(a){return a},a.createItem=function(){return g.save(a.item).$promise.then(function(){c.path("/channels/mail/accounts/list")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.accounts.wizard",{url:"/wizard",templateUrl:"app/channels/mail/account/wizard/wizard.html",controller:"MailAccountWizardCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.inbox",{url:"/inbox",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:36}}})}]),angular.module("xCallyShuttleApp").controller("MailInboxInfoModalCtrl",["$scope","$translate","$uibModalInstance","$stateParams","xAlert","uniqueId","ReportSquare",function(a,b,c,d,e,f,g){a.data=null,a.initInfo=function(){g.get({controller:"show",uniqueid:f}).$promise.then(function(b){a.data={id:b.id,channel:b.channel,uniqueid:b.uniqueid,callerid:b.callerid,calleridname:b.calleridname,project_name:b.project_name,extension:b.extension}})["catch"](function(b){switch(b.status){case 404:a.data=null;break;default:e.error(b)}})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").directive("mailMessage",["$rootScope","$translate","MailMessage","List","xAlert","Lightbox","$uibModal",function(a,b,c,d,e,f,g){return{restrict:"E",scope:{message:"=",listId:"="},templateUrl:"app/channels/mail/inbox/message/message.directive.html",link:function(h){h.openPreview=function(a){f.openModal(["api/mail/attachments/"+a],0)},h.openContact=function(c){return h.listId?d.save({listId:h.listId,controller:"contacts"},{email:c}).$promise.then(function(b){var c=_.find(a.$root.workspaces,{contactID:b.id});c?c.active=!0:a.$root.workspaces.push({active:!0,"class":"icon-user",contactID:b.id,name:b.email,type:"contact"})})["catch"](function(a){console.error(a)}):void e.show(b.instant("MESSAGE_NO_LIST_CONFIGURED"),"info")},h.info=function(a){g.open({animation:!0,templateUrl:"app/channels/mail/inbox/message/info.modal.html",controller:"MailInboxInfoModalCtrl",resolve:{uniqueId:function(){return a}}})},h.retry=function(a){return c.update({id:a,status:"SENDING"}).$promise["catch"](function(a){console.error(a)})}}}}]),angular.module("xCallyShuttleApp").directive("mailNote",["$translate","Modal","Auth","MailMessage","xAlert",function(a,b,c,d,e){return{restrict:"E",scope:{message:"="},templateUrl:"app/channels/mail/inbox/note/note.directive.html",link:function(f){f.Auth=c,f.deleteNote=b.confirm["delete"](function(){return d.remove({id:f.message.id}).$promise.then(function(){e.show(a.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){e.error(a)})})}}}]),angular.module("xCallyShuttleApp").controller("MailInboxViewModalNoteCtrl",["$scope","$uibModalInstance","$translate","id","MailRoom","xAlert",function(a,b,c,d,e,f){a.initModal=function(){a.item={}},a.ok=function(){return e.save({id:d,controller:"messages",controller2:"send"},{text:a.item.text,status:"NOTE"}).$promise.then(function(){f.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(){f.show(c.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})["finally"](function(){b.close()})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").directive("mailRoom",["$rootScope","$cookieStore","$translate","$uibModal","$timeout","Tag","CannedAnswer","MailAttachment","List","MailAccount","MailRoom","MailMessage","FileUploader","xAlert","usSpinnerService","socket","Auth",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){return{restrict:"E",scope:{workspace:"="},templateUrl:"app/channels/mail/inbox/room/room.directive.html",link:function(e){function r(a,b){var c="";return b&&b.signature&&(c+="<br>"+b.signature),a&&(c+="<br><blockquote>"+a.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\n/g,"<br>")+"</blockquote>"),c}e.onCKReady=function(a){e.ckEditorInstance=a},e.$on("$destroy",function(){});var s=[];e.user=q.getCurrentUser(),e.getContacts=function(a){return e.listId?i.get({listId:e.listId,controller:"contacts",email:a}).$promise.then(function(a){return a.rows})["catch"](function(a){console.error(a)}):[]},e.setList=function(a){e.listId=a},e.options={language:a.language,allowedContent:!0,entities:!1,skin:"office2013",extraPlugins:"autogrow",autoGrow_minHeight:600,autoGrow_maxHeight:600,disableNativeSpellChecker:!1,toolbar:[{name:"clipboard",items:["Cut","Copy","Paste","-","Undo","Redo"]},{name:"links",items:["Link","Unlink","Anchor"]},{name:"insert",items:["Image","Table","HorizontalRule","SpecialChar"]},{name:"tools",items:["Maximize"]},"/",{name:"basicstyles",items:["Bold","Italic","Underline","Strike","Subscript","Superscript","-","RemoveFormat"]},{name:"paragraph",items:["NumberedList","BulletedList","-","Outdent","Indent","-","Blockquote"]},{name:"styles",items:["Styles","Format"]}]},e.expanded=!0,e.modelOptions={debounce:{"default":500,blur:250},getterSetter:!0},e.panelLeft=null,e.panelRight="col-md-12",e.forms={},e.form={from:[],to:e.workspace.data&&e.workspace.data.to?[e.workspace.data.to]:[],cc:[],bcc:[],tags:[],html:"",disabled:!1},p.socket.on("mail_message:remove",function(a){_.remove(e.mailRoom.MailMessages,{id:a.id})}),p.socket.on("mail_message:save",function(a){return e.workspace.id&&a.MailRoomId==e.workspace.id?(e.workspace.active||e.workspace.unread++,l.get({id:a.id}).$promise.then(function(a){e.mailRoom||(e.mailRoom={MailMessages:[]});var b=_.findIndex(e.mailRoom.MailMessages,{id:a.id});b>-1?_.merge(e.mailRoom.MailMessages[b],a):e.mailRoom.MailMessages.unshift(a),e.panelLeft="col-md-6",e.panelRight="col-md-6"})["catch"](function(a){console.error(a)})):void 0});var t=e.uploader=new m({url:"api/mail/attachments",autoUpload:!0,withCredentials:!0,headers:{Authorization:"Bearer "+b.get("token")}});return t.onErrorItem=function(){n.show(c.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")},t.removeFromQueue=function(a){var b=this;return h["delete"]({id:a.basename}).$promise.then(function(){var c=b.getIndexOfItem(a),d=b.queue[c];d.isUploading&&d.cancel(),b.queue.splice(c,1),d._destroy(),b.progress=b._getTotalProgress(),s=_.reject(s,{basename:a.basename})})["catch"](function(){n.show(c.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},t.onSuccessItem=function(a,b){var c={size:b.size,path:b.path,name:b.name,basename:b.basename,type:b.type};a=_.merge(a,c),s.push(c)},e.openRoom=function(b){var c=_.find(a.workspaces,{id:b,type:"mailRoom"});c?c.active=!0:a.workspaces.push({id:b,type:"mailRoom","class":"icon-envelope",active:!0})},e.togglePanelLeft=function(){e.panelLeft?(e.panelLeft=null,e.panelRight="col-md-12"):(e.panelLeft="col-md-6",e.panelRight="col-md-6")},e.onSelectAnswer=function(){e.ckEditorInstance.insertHtml(e.modelOptions.selectedAnswer),delete e.modelOptions.selectedAnswer},e.getAnswers=function(a){return g.get({key:a}).$promise.then(function(a){return _.map(a.rows,"value")})},e.closeRoom=function(){return d.open({animation:!0,templateUrl:"app/channels/mail/inbox/status/status.modal.html",controller:"MailInboxStatusModalCtrl",resolve:{accountId:function(){return e.mailRoom.MailAccountId}}}).result.then(function(a){return k.patch({id:e.workspace.id},a).$promise["catch"](function(a){n.error(a)})})},e.loadNote=function(){return d.open({animation:!0,templateUrl:"app/channels/mail/inbox/note/note.modal.html",controller:"MailInboxViewModalNoteCtrl",resolve:{id:function(){return e.workspace.id; +}}})},e.onChanged=function(){return k.update({id:e.workspace.id},{tags:e.form.tags}).$promise["catch"](function(a){console.error(a)})},e.sendMail=function(){o.spin("spinner-grid"),e.form.disabled=!0;var a={},b={subject:e.form.subject||(e.mailRoom?e.mailRoom.subject:null),from:e.form.from,to:_.map(e.form.to,"email"),cc:_.map(e.form.cc,"email"),bcc:_.map(e.form.bcc,"email"),html:e.form.html||null,text:e.form.text||null,inReplyTo:a.messageId||null,status:"SENDING",MailAttachments:s};return e.mailRoom?(a=_.last(e.mailRoom.MailMessages,{status:"RECEIVED"}),b.inReplyTo=a.messageId||null,k.save({id:e.workspace.id,controller:"messages",controller2:"send"},b).$promise.then(function(){e.form.html="",t.queue=[],s=[],n.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(){n.show(c.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})["finally"](function(){o.stop("spinner-grid"),e.form.disabled=!1})):l.save(b).$promise.then(function(a){n.show(c.instant("MESSAGE_MAIL_MESSAGE_SEND_SUCCESS"),"success"),e.form.html="",t.queue=[],s=[],e.workspace.id=a.id,e.workspace.name=a.subject,e.mailRoom=a,e.expanded=!1,p.socket.on("mail_room:save",function(a){e.workspace.id&&a.id===e.workspace.id&&_.merge(e.mailRoom,a)})})["catch"](function(){n.show(c.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})["finally"](function(){o.stop("spinner-grid"),e.form.disabled=!1})},f.get().$promise.then(function(a){e.tags=_.map(a.rows,"name")})["catch"](function(a){console.error(a)}),j.get().$promise.then(function(a){e.mailAccounts=a.rows})["catch"](function(a){console.error(a)}),e.workspace.id?(e.panelLeft="col-md-6",e.panelRight="col-md-6",k.get({id:e.workspace.id}).$promise.then(function(a){e.mailRoom=a,e.expanded=!1,e.listId=a.MailAccount.ListId,e.workspace.name=a.subject||"No subject",e.form.from.push(a.MailAccount.address),e.form.tags=a.tags;var b=_.findLast(e.mailRoom.MailMessages,{status:"RECEIVED"});return b?(e.form.to=_.map(_.union(b.from,b.to),function(a){return{email:a}}),e.form.to=_.remove(e.form.to,function(b){return b.email!==a.MailAccount.address}),e.form.cc=_.map(b.cc,function(a){return{email:a}}),e.form.bcc=_.map(b.bcc,function(a){return{email:a}}),e.form.subject="Re: "+(b.subject||"No subject"),e.form.html=r(b.text,a.MailAccount)):e.form.html=r("",a.MailAccount),p.socket.on("mail_room:save",function(a){a.id===e.workspace.id&&_.merge(e.mailRoom,a)}),a})["catch"](function(a){console.error(a)})["finally"](function(){o.stop("spinner-grid"),e.form.disabled=!1})):(e.panelLeft=null,e.panelRight="col-md-12",e.workspace.mailAccountId?j.get({id:e.workspace.mailAccountId}).$promise.then(function(a){e.form.from.push(a.address),e.form.html=r("",a),e.listId=a.ListId,o.stop("spinner-grid")})["catch"](function(a){o.stop("spinner-grid"),console.error(a)}):void o.stop("spinner-grid"))}}}]),angular.module("xCallyShuttleApp").controller("MailInboxStatusModalCtrl",["$scope","$uibModalInstance","MailAccount","accountId",function(a,b,c,d){a.modal={title:"APPLICATION_CONFIRM_CLOSE",text:"MESSAGE_ARE_YOU_SURE_YOU_WANT_TO_CLOSE_THE_MAIL"},a.initDisposition=function(){return a.item={disposition:null,status:"CLOSED"},c.get({accountId:d,controller:"dispositions"}).$promise.then(function(b){a.dispositions=b.rows})["catch"](function(a){console.error(a)})},a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.inbox.view.account",{url:"/account/:id",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:9}}})}]),angular.module("xCallyShuttleApp").controller("MailInboxViewAccountListCtrl",["$scope","$rootScope","$uibModal","$translate","$stateParams","$state","Tag","uibButtonConfig","usSpinnerService","socket","MailAccount","MailRoom","uiGridConstants","Auth","Modal","xAlert","localStorageService",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){a.openRoom=function(b,c,d){if(!d){var f=_.find(a.workspaces,{id:b,type:"mailRoom"});if(f&&b?f.active=!0:a.workspaces.push({id:b,subject:c,type:"mailRoom","class":"icon-envelope",active:!0,mailAccountId:e.id}),b&&"agent"===n.getCurrentUser().role&&"PENDING"!==a.query.status&&"CLOSED"!==a.query.status)return l.patch({id:b},{status:"OPEN",openReason:"agent"}).$promise["catch"](function(a){console.error(a)})}},a.getPage=function(){i.spin("spinner-grid");var b={accountId:e.id,controller:"rooms"};return a.query&&_.merge(b,a.query),k.query(b).$promise.then(function(b){q.set("mailAccountId",e.id),a.gridOptions.data=b,j.socket.on("mail_room:save",function(b){if(b.MailAccountId==e.id){var c=_.find(a.gridOptions.data,{id:b.id});c?c.status!==b.status?_.remove(a.gridOptions.data,{id:b.id}):_.merge(c,b):a.query.status!==b.status||a.query.tags.length&&!_.isEqual(a.query.tags,b.tags)||a.gridOptions.data.push(b)}}),j.socket.on("mail_room:remove",function(b){_.remove(a.gridOptions.data,{id:b.id})})})["catch"](function(a){p.error(a)})["finally"](function(){i.stop("spinner-grid")})},a.initView=function(){h.activeClass="green-haze",a.id=[],a.isAdmin=n.isAdmin(),a.isAgent=n.isAgent(),a.uncheckable=!1,a.query={status:q.get("mailStatus")?q.get("mailStatus"):"NEW",tags:q.get("mailTags")?q.get("mailTags"):[]},a.$watch("query.status",function(b,c){b!==c&&(q.set("mailStatus",a.query.status),a.getPage())},!0),k.get().$promise.then(function(b){a.mailAccounts=b.rows})["catch"](function(a){console.error(a)}),g.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a)}),a.gridOptions={exporterCsvFilename:"mail_rooms.csv",enableRowHeaderSelection:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,enableFiltering:!0,enableSorting:!0,enableGridMenu:!1,flatEntityAccess:!0,showGridFooter:!0,fastWatch:!0,enableSelectAll:!0,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,columnDefs:[{name:"lastEvent",displayName:"",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div> <span data-ng-class=\"{'icon-arrow-up font-green': row.entity.lastEvent === 'SENT', 'icon-arrow-up font-yellow': row.entity.lastEvent === 'SENDING', 'icon-arrow-down font-green': row.entity.lastEvent === 'RECEIVED', 'icon-close font-red': row.entity.lastEvent === 'FAILED', 'icon-question': !row.entity.lastEvent}\"> </span> </div>",width:30,enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"attachment",displayName:"",headerCellTemplate:'<i class="icon-paper-clip" style="margin-top: 8px; margin-left: 8px;"></i>',cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><i data-ng-class=\"row.entity.attachment ? 'icon-paper-clip' : ''\"></i></div>",width:30,enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"tags",displayName:"",headerCellTemplate:'<i class="icon-tag" style="margin-top: 8px; margin-left: 8px;"></i>',cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><i data-ng-class=\"row.entity.tags.length ? 'icon-tag' : ''\" title=\"{{row.entity.tags}}\"></i></div>",width:30,enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"id",displayName:"Id",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><span>#{{row.entity.id}}</span></div>",width:75,enableSorting:!0,enableFiltering:!0,enableColumnMenu:!1},{name:"subject"},{name:"from",cellClass:"text-center"},{name:"disposition",displayName:"APPLICATION_DISPOSITION",headerCellFilter:"translate"},{name:"createdAt",cellFilter:"date:'dd/MM/yyyy HH:mm'",width:120,enableFiltering:!1},{name:"updatedAt",cellFilter:"date:'dd/MM/yyyy HH:mm'",width:120,enableFiltering:!1,sort:{direction:m.DESC}},{name:"action",cellTemplate:'<div> <a class="btn btn-icon-only" data-ng-disabled="row.entity.waiting" data-ng-class="row.entity.waiting ? \'font-blue\' : \'font-green\'" data-ng-click="grid.appScope.openRoom(row.entity.id, row.entity.subject, row.entity.waiting)"><i class="fa" data-ng-class="row.entity.waiting ? \'fa-repeat\' : \'fa-envelope\' " aria-hidden="true"></i></a> <a class="btn btn-icon-only font-red" data-ng-show="grid.appScope.isAdmin && !row.entity.waiting" data-ng-click="grid.appScope.deleteItem(row.entity.id, row.entity.id)"><i class="fa fa-trash" aria-hidden="true"></i></a> </div>',enableSorting:!1,cellClass:"ui-grid-vcenter",width:70,enableFiltering:!1,enableColumnMenu:!1}],data:[],onRegisterApi:function(b){a.gridApi=b,a.gridApi.selection&&(a.gridApi.selection.on.rowSelectionChanged(a,function(b){b.isSelected?a.id.push(a.gridApi.grid.options.primaryKey?b.entity[a.gridApi.grid.options.primaryKey]:b.entity.id):_.pull(a.id,a.gridApi.grid.options.primaryKey?b.entity[a.gridApi.grid.options.primaryKey]:b.entity.id)}),a.gridApi.selection.on.rowSelectionChangedBatch(a,function(b){b[0].isSelected?a.id=_.union(a.id,_.map(b,a.gridApi.grid.options.primaryKey?"entity."+a.gridApi.grid.options.primaryKey:"entity.id")):_.map(b,a.gridApi.grid.options.primaryKey?"entity."+a.gridApi.grid.options.primaryKey:"entity.id").forEach(function(b){_.pull(a.id,b)})}))}},a.getPage()},a.onChanged=function(){q.set("mailTags",a.query.tags),a.getPage()},a.tagItems=function(){return c.open({animation:!0,templateUrl:"app/channels/mail/inbox/view/view.tags.modal.html",controller:"MailInboxViewModalTagCtrl",resolve:{id:function(){return a.id}}}).result.then(function(){a.gridApi.selection.clearSelectedRows(),a.id=[]})},a.disposeItems=function(){return c.open({animation:!0,templateUrl:"app/channels/mail/inbox/status/status.modal.html",controller:"MailInboxStatusModalCtrl",resolve:{status:function(){return null},accountId:function(){return e.id}}}).result.then(function(b){return l.patch({id:a.id},b).$promise.then(function(){a.gridApi.selection.clearSelectedRows(),a.id=[]})["catch"](function(a){p.error(a)})})},a.deleteItem=o.confirm["delete"](function(b){var c={id:b};return l.remove(c).$promise.then(function(){a.getPage(),p.show(d.instant("MESSAGE_WELL_DONE")+"!","success"),a.gridApi.selection.clearSelectedRows(),a.id=[]})["catch"](function(a){p.error(a)})}),a.deleteItems=o.confirm["delete"](function(){var b={ids:a.id};return l["delete"](b).$promise.then(function(){a.getPage(),p.show(d.instant("MESSAGE_WELL_DONE")+"!","success"),a.gridApi.selection.clearSelectedRows(),a.id=[]})["catch"](function(a){p.error(a)})})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.inbox.view.account.list",{url:"/list",templateUrl:"app/channels/mail/inbox/view/account/list/list.html",controller:"MailInboxViewAccountListCtrl",data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:9}}})}]),angular.module("xCallyShuttleApp").controller("MailInboxViewModalAgentCtrl",["$scope","$uibModalInstance","$translate","$stateParams","Agent","Auth","MailRoom","xAlert","roomId",function(a,b,c,d,e,f,g,h,i){var j=[];a.initModal=function(){return a.agents=[],a.item={agents:[]},e.get().$promise.then(function(b){for(var c=0;c<b.rows.length;c++)a.agents.push(b.rows[c]);return g.query({id:i,controller:"agents"}).$promise}).then(function(b){for(var c=0;c<b.length;c++)f.isAgent()||a.item.agents.push(b[c]),j.push(b[c].id)})["catch"](function(a){console.error(a)})},a.ok=function(){return j=f.isAgent()?_.union(j,a.item.agents):angular.copy(a.item.agents),g.update({id:i,controller:"agents",agents:j}).$promise.then(function(){h.show(c.instant("MESSAGE_WELL_DONE"),"success"),b.close()})["catch"](function(a){console.error(a)})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("MailInboxViewCtrl",["$scope","$timeout","$location","localStorageService","MailAccount",function(a,b,c,d,e){a.initView=function(){return e.get().$promise.then(function(b){var e=null;if(a.mailAccounts=b.rows,a.mailAccounts.length){var f,g=d.get("mailAccountId");f=g&&_.find(a.mailAccounts,{id:Number(g)})?g:a.mailAccounts[0].id,e="/channels/mail/inbox/view/account/"+f+"/list"}e&&c.path(e)})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.inbox.view",{url:"/view",templateUrl:"app/channels/mail/inbox/view/view.html",controller:"MailInboxViewCtrl",reload:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/inbox.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("MailInboxViewModalTagCtrl",["$scope","$uibModalInstance","$translate","$stateParams","Tag","MailRoom","xAlert","id",function(a,b,c,d,e,f,g,h){a.initModal=function(){return a.tags=[],a.item={tags:[]},a.modal={dismissable:!0,title:"APPLICATION_MESSAGE_SEND_RETRY",text:"MESSAGE_MESSAGE_SEND_RETRY",buttons:[{"class":"btn-success",text:"APPLICATION_TAG",click:function(){var d={status:!0};return f.patch({id:h},{tags:a.item.tags}).$promise["catch"](function(){d.status=!1,g.show(c.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})["finally"](function(){b.close(d)})}},{"class":"default",text:"APPLICATION_CANCEL",click:function(a){b.dismiss(a)}}]},e.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").controller("MailInboxViewModalTemplateCtrl",["$scope","$uibModalInstance","Template",function(a,b,c){a.initModal=function(){return a.item={},c.get().$promise.then(function(b){a.templates=b.rows})["catch"](function(a){console.error(a)})},a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail",{url:"/mail",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:9}}})}]),angular.module("xCallyShuttleApp").factory("MailReport",["$resource",function(a){return a("/api/report/mails/:id/:controller1/:controller2",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("MailRoom",["$resource",function(a){return a("/api/mail/rooms/:id/:controller/:controller2",{id:"@id",controller:"@controller"},{update:{method:"PUT"},patch:{method:"PATCH"}})}]),angular.module("xCallyShuttleApp").factory("MailAttachment",["$resource",function(a){return a("/api/mail/attachments/:id/:controller",{id:"@id"})}]),angular.module("xCallyShuttleApp").factory("MailMessage",["$resource",function(a){return a("/api/mail/messages/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("MailQueueListCtrl",["$scope","MailQueue","gridOptions","$uibModal","Auth",function(a,b,c,d,e){a.initView=function(){a.Auth=e;var d={exporterCsvFilename:"voice_queues.csv",columnDefs:[{name:"name"},{name:"description"},{name:"timeout"},{name:"strategy"},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/channels/mail/queues/view/{{row.entity.id}}/settings",name:"settings"},{"class":"green-meadow",href:"/channels/mail/queues/view/{{row.entity.id}}/agents",name:"agents",hide:"user"===e.getCurrentUser().role},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.createItem=function(){var b=d.open({animation:!0,templateUrl:"app/channels/mail/queue/list/list.create.modal.html",controller:"MailQueueListCreateCtrl",size:"lg"});b.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("MailQueueListCreateCtrl",["$scope","$uibModalInstance","$translate","xAlert","MailQueue","Team","strategies",function(a,b,c,d,e,f,g){a.form={},a.strategies=g,a.item={penalty:0,agents:[]},a.getTeams=function(){return f.get({controller:"associations"}).$promise.then(function(b){a.teams=b.rows}).then(function(){ComponentsDropdowns.bindQueue(a.teams,[],function(){return{select:function(b){a.item.agents=_.union(a.item.agents,b)},deselect:function(b){a.item.agents=_.difference(a.item.agents,b)}}})})["catch"](function(a){console.error(a)})},a.save=function(){return e.save(a.item).$promise.then(function(a){b.close(a)})["catch"](function(a){d.error(a)})},a.cancel=function(){b.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.queues.list",{url:"/list",templateUrl:"app/channels/mail/queue/list/list.html",controller:"MailQueueListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}})}]),angular.module("xCallyShuttleApp").factory("MailQueue",["$resource",function(a){return a("/api/mail/queues/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.queues",{url:"/queues",template:"<div ui-view></div>","abstract":!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/scripts/components-dropdowns.js"]})}]},data:{permissions:{only:["admin","user"],redirectTo:"landing",id:35}}})}]),angular.module("xCallyShuttleApp").controller("MailQueueViewCtrl",["$scope","$http","$translate","$stateParams","xAlert","Team","MailQueue","Auth","strategies",function(a,b,c,d,e,f,g,h,i){a.Auth=h,a.strategies=i;var j=function(){return{select:function(b){return g.save({id:a.queue.id,controller:"agents"},{agents:b,penalty:a.queue.penalty}).$promise.then(function(){a.getTeams()})["catch"](function(a){console.error(a)})},deselect:function(b){return g["delete"]({id:a.queue.id,controller:"agents",agents:b}).$promise.then(function(){a.getTeams()})["catch"](function(a){console.error(a)})}}};a.getQueue=function(){return g.get({id:d.id}).$promise.then(function(b){b.penalty=0,a.queue=b})["catch"](function(a){console.error(a)})},a.updateMailQueue=function(){return g.update({id:d.id},{name:a.queue.name,description:a.queue.description,timeout:a.queue.timeout,strategy:a.queue.strategy}).$promise.then(function(){e.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){e.error(a)})},a.getTeams=function(){return f.get({controller:"associations"}).$promise.then(function(b){return a.teams=b.rows,g.get({id:d.id,controller:"agents"}).$promise}).then(function(b){ComponentsDropdowns.bindMailQueue(a.teams,_.map(b.rows,function(a){return{id:a.id,penalty:a.UserHasMailQueue.penalty}}),j)})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.queues.view",{url:"/view/:id",templateUrl:"app/channels/mail/queue/view/view.html",controller:"MailQueueViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.mail.queues.view.settings",{url:"/settings",templateUrl:"app/channels/mail/queue/view/view.settings.html"}).state("main.channels.mail.queues.view.agents",{url:"/agents",templateUrl:"app/channels/mail/queue/view/view.agents.html",cache:!1,serie:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.realtime",{url:"/realtime",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:37}}})}]),angular.module("xCallyShuttleApp").controller("MailRealtimeViewAgentCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","Agent","Pause","Action","MailQueue","usSpinnerService","$q","uiGridConstants","Auth","$timeout",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){function p(){return k.spin("grid-spinner"),g.get(u).$promise.then(function(b){a.gridOptions.totalItems=b.count,a.gridOptions.data=[],b.rows.forEach(function(a){r(a)})})["catch"](function(a){f.error(a)})["finally"](function(){k.stop("grid-spinner")})}function q(){e.socket.on("agent:save",function(b){b=b.newValues||b;var c=_.find(a.gridOptions.data,{agentId:b.id,isAgent:!0});c&&(c.online=_.has(b,"online")?b.online:c.online,c.lastLoginAt=_.has(b,"lastLoginAt")?b.lastLoginAt:c.lastLoginAt,c.pause=_.has(b,"mailPause")?b.mailPause:c.mailPause,c.pauseType=_.has(b,"pauseType")?b.pauseType:c.pauseType,c.lastPauseAt=_.has(b,"lastPauseAt")?b.lastPauseAt:c.lastPauseAt,c.ipaddr=_.has(b,"ipaddr")?b.ipaddr:c.ipaddr,c.port=_.has(b,"port")?b.port:c.port,c.fullcontact=_.has(b,"fullcontact")?b.fullcontact:c.fullcontact,c.useragent=_.has(b,"useragent")?b.useragent:c.useragent,c.lastms=_.has(b,"lastms")?b.lastms:c.lastms,c.internal=_.has(b,"internal")?b.internal:c.internal,_.map(a.gridOptions.data,function(a){a.isAgent||a.agentId!==b.id||(a.online=_.has(b,"online")?b.online:a.online)}))}),e.socket.on("agent:remove",function(b){_.remove(a.gridOptions.data,{agentId:b.id})}),e.socket.on("user_has_mail_queue:save",function(b){var c=_.includes(_.map(a.CurrentUser.PMailQueues,"id"),b.MailQueueId)||n.isAdmin();if(c){var d=_.find(a.gridOptions.data,{agentId:b.UserId,isAgent:!0});if(d){var e=a.gridOptions.data.indexOf(d);a.gridOptions.data.splice(e+1,0,{isAgent:!1,agentId:b.UserId,queue:b.queue,queueId:b.MailQueueId,agent:b.membername,online:d.online})}}}),e.socket.on("user_has_mail_queue:remove",function(b){_.remove(a.gridOptions.data,{agentId:b.UserId,queueId:b.MailQueueId})})}function r(b){a.gridOptions.data.push({isAgent:!0,agentId:b.id,agent:b.name,online:b.online,lastLoginAt:b.lastLoginAt,lastPauseAt:b.lastPauseAt,pause:b.mailPause,pauseType:b.pauseType,ipaddr:b.ipaddr,port:b.port,fullcontact:b.fullcontact,useragent:b.useragent,lastms:b.lastms,internal:b.internal,$$treeLevel:0}),b.MailQueues&&b.MailQueues.forEach(function(c){a.gridOptions.data.push({isAgent:!1,agentId:b.id,queue:c.name,queueId:c.id,agent:b.name,online:b.online})})}function s(){return h.get().$promise.then(function(b){a.pauses=b.rows,e.syncUpdates("pause",a.pauses)})["catch"](function(a){f.error(a)})}function t(){return j.get().$promise.then(function(b){a.mailQueues=b.rows,e.syncUpdates("mail_queue",a.mailQueues)})["catch"](function(a){f.error(a)})}a.mailQueues=[];var u={controller:"realtime",controller1:"mail",offset:0,limit:10};a.moment=moment,a.initAgents=function(){a.gridOptions={enableGridMenu:!0,headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,useExternalPagination:!0,useExternalSorting:!0,useExternalFiltering:!0,multiSelect:!0,showTreeExpandNoChildren:!0,columnDefs:[{name:"name",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.isAgent">{{row.entity.agent}} <{{row.entity.internal}}></div>'},{name:"online",displayName:"APPLICATION_ONLINE",width:150,headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.online != null && row.entity.isAgent"><i class="fa" data-ng-class="{\'font-green\':row.entity.online, \'font-red\':!row.entity.online,\'fa-user\':row.entity.online,\'fa-user-times\':!row.entity.online}"></i> <i data-ng-if="row.entity.online" class="fa fa-sign-out font-red pointer-cursor" title="logout" data-ng-click="grid.appScope.agentLogout(row.entity.agent,row.entity.agentId)"></i> <span data-ng-if="row.entity.online && grid.appScope.showTimers" class="left-margin"><css-timer start-time="row.entity.lastLoginAt"></css-timer></span></div>',filter:{type:m.filter.SELECT,selectOptions:[{value:"true",label:"ONLINE"},{value:"false",label:"OFFLINE"}]}},{name:"mailPause",displayName:"APPLICATION_PAUSE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.pause != null && row.entity.online" class="ui-grid-vcenter"><i data-ng-if="row.entity.pause" data-ng-click="grid.appScope.pause(row.entity,\'unpause\')" class="fa fa-play font-green pointer-cursor left-margin" title="{{\'APPLICATION_RESUME\' | translate}}"></i><i class="fa fa-pause font-yellow pointer-cursor" data-ng-click="grid.appScope.pause(row.entity,\'pause\',\'DEFAULT PAUSE\')" title="{{\'APPLICATION_DEFAULT_PAUSE\' | translate}}"></i><select data-ng-if="grid.appScope.pauses.length" class="pause-select pointer-cursor" data-ng-model="grid.appScope.pauseType" data-ng-change="grid.appScope.pause(row.entity,\'pause\',grid.appScope.pauseType)"><option class="pointer-cursor" data-ng-repeat="pause in grid.appScope.pauses">{{pause.name}}</option></select> <span data-ng-if="row.entity.pause">({{row.entity.pauseType}})</span><span data-ng-if="row.entity.pause && grid.appScope.showTimers" class="left-margin"><css-timer start-time="row.entity.lastPauseAt"></css-timer></span></div>',filter:{type:m.filter.SELECT,selectOptions:[{value:"true",label:"PAUSED"},{value:"false",label:"NOT PAUSED"}]},enableSorting:!1,enableColumnMenu:!1},{name:"queue",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"action",displayName:"",width:170,cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><button data-ng-if="row.entity.queueId" class="btn btn-xs red-sunglo" data-ng-click="grid.appScope.leaveQueue(row.entity.agentId,row.entity.queueId)"><i class="icon-ban"></i> {{\'APPLICATION_LEAVE\' | translate}}</button><button data-ng-if="row.entity.isAgent && row.treeNode.children.length < grid.appScope.mailQueues.length" class="btn btn-xs blue-hoki" data-ng-click="grid.appScope.joinQueue(row.entity.agentId)"><i class="icon-plus"></i> {{\'APPLICATION_JOIN_QUEUE\' | translate}}</button><div>',enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1}],data:[],gridMenuTitleFilter:function(a){var b=l.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){v(a.gridApi.core.getVisibleRows(a.gridApi.grid).length)}),a.gridApi.treeBase.on.rowExpanded(a,function(b){v(a.gridApi.core.getVisibleRows(a.gridApi.grid).length+b.treeNode.children.length)}),a.gridApi.treeBase.on.rowCollapsed(a,function(b){v(a.gridApi.core.getVisibleRows(a.gridApi.grid).length-b.treeNode.children.length)}),a.gridApi.core.on.sortChanged(a,function(a,b){0===b.length?u.order=null:u.order=b[0].name+" "+b[0].sort.direction.toUpperCase(),p()}),a.gridApi.pagination.on.paginationChanged(a,function(a,b){u.offset=(a-1)*b,u.limit=b,p()}),a.gridApi.core.on.filterChanged(a,function(){var a=this.grid;a.columns.forEach(function(a){a.filters[0].term?u[a.name]=a.filters[0].term:delete u[a.name]}),p()})}},p(),s(),t(),o(function(){q()})};var v=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("agent"),e.unsyncUpdates("user_has_mail_queue")}),a.pause=function(b,c,e){return e&&(a.pauseType=null),i.save({name:c,agent:b.agentId,data2:b.agent,type:e||"DEFAULT PAUSE",data4:e||"DEFAULT PAUSE",channel:"mail"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.joinQueue=function(e){var g=c.open({animation:!0,templateUrl:"app/channels/mail/realtime/view/agent/queue.modal.add.html",controller:"MailRealtimeViewAgentQueueModalCtrl",resolve:{queues:function(){return _.reject(a.mailQueues,function(b){return!!_.find(a.gridOptions.data,{queue:b.name,isAgent:!1,agentId:e})})}}});g.result.then(function(b){return i.save({name:"QueueAdd",agent:e,queues:_.filter(a.mailQueues,function(a){return _.includes(b.queues,a.id)}),channel:"mail",data1:e,data3:b.queues.join(","),data4:"mail"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},function(){b.info("Modal dismissed at: "+new Date)})},a.leaveQueue=function(a,b){return i.save({name:"QueueRemove",agent:a,queueId:b,channel:"mail",data1:a,data3:b,data4:"mail"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.showInfo=function(a){c.open({animation:!0,templateUrl:"app/channels/mail/realtime/view/agent/agent.modal.info.html",controller:"MailRealtimeViewAgentInfoModalCtrl",resolve:{agent:a}})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.realtime.view.agents",{url:"/agents",templateUrl:"app/channels/mail/realtime/view/agent/agent.html",controller:"MailRealtimeViewAgentCtrl"})}]),angular.module("xCallyShuttleApp").controller("MailRealtimeViewAgentInfoModalCtrl",["$scope","$uibModalInstance","$http","agent",function(a,b,c,d){a.agent=d,a.close=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("MailRealtimeViewAgentQueueModalCtrl",["$scope","$uibModalInstance","$http","queues",function(a,b,c,d){a.queues=d,a.item={},a.save=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("MailRealtimeViewApplicationCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","ReportMailSession","usSpinnerService","$q","uiGridConstants","$timeout",function(a,b,c,d,e,f,g,h,i,j,k){function l(){return h.spin("spinner-grid"),g.get({controller:"waiting",controller2:"applications"}).$promise.then(function(b){a.gridOptions.data=b.rows})["catch"](function(a){f.error(a)})["finally"](function(){m(),h.stop("spinner-grid")})}function m(){e.socket.on("report_mail_session:save",function(b){var c=_.find(a.gridOptions.data,{id:b.id});c?(_.merge(c,b),b.leaveAt&&k(function(){_.remove(a.gridOptions.data,{id:b.id})},1e4)):b.leaveAt||a.gridOptions.data.push(b)}),e.socket.on("report_mail_session:remove",function(b){_.remove(a.gridOptions.data,{id:b.id})})}a.moment=moment,a.initApplications=function(){a.gridOptions={headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,columnDefs:[{name:"uniqueid",displayName:"APPLICATION_UNIQUEID",headerCellFilter:"translate"},{name:"application",displayName:"APPLICATION_APPLICATION",headerCellFilter:"translate"},{name:"status",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span data-ng-if="!row.entity.leaveAt">{{\'APPLICATION_QUEUESTATUS_WAITING\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.complete">{{\'APPLICATION_QUEUESTATUS_COMPLETE\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.timeout">{{\'APPLICATION_TIMEOUT\' | translate}}</span> <span data-ng-if="!row.entity.leaveAt && grid.appScope.showTimers"><css-timer start-time="row.entity.updatedAt"></css-timer></span></div>',enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1},{name:"membername",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.membername || ''}}</span></div>"},{name:"queuename",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.queuename || ''}}</span></div>"}],data:[],gridMenuTitleFilter:function(a){var b=i.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){ +n(a.gridOptions.data.length)})}},l()};var n=function(a){var b=a?30*a+60:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("report_mail_session")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.realtime.view.applications",{url:"/applications",templateUrl:"app/channels/mail/realtime/view/application/application.html",controller:"MailRealtimeViewApplicationCtrl"})}]),angular.module("xCallyShuttleApp").controller("MailRealtimeViewCtrl",["$scope","$state",function(a,b){a.agents=[{name:"Queues",link:"main.channels.mail.realtime.view.agents.queues"},{name:"Timeline",link:"main.channels.mail.realtime.view.agents.timeline"}],a.sessions=[{name:"Sessions",link:"main.channels.mail.realtime.view.sessions"}],a.tree={queues:[{name:"Queues",link:"main.channels.mail.realtime.view.agents.queues"},{name:"Timeline",link:"main.channels.mail.realtime.view.agents.timeline"}],sessions:[{name:"Sessions",link:"main.channels.mail.realtime.view.sessions"}]},a.timerSwitch={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"primary"},a.showTimers=!1}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.realtime.view",{url:"/view",templateUrl:"app/channels/mail/realtime/view/view.html",controller:"MailRealtimeViewCtrl"})}]),angular.module("xCallyShuttleApp").factory("ReportMailSession",["$resource",function(a){return a("/api/report/mail/sessions/:id/:controller/:controller2",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("OpenChannelAccount",["$resource",function(a){return a("/api/openchannel/accounts/:accountId/:controller/:id",{id:"@accountId"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.accounts",{url:"/accounts",template:"<div ui-view></div>",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:46}}})}]),angular.module("xCallyShuttleApp").controller("OpenChannelAccountListCtrl",["$scope","OpenChannelAccount","gridOptions","$stateParams","xAlert","$translate",function(a,b,c,d,e,f){a.initView=function(){var e={exporterCsvFilename:"openchannel_accounts.csv",columnDefs:[{name:"id",displayName:"ID",cellClass:"text-center",width:75,enableSorting:!1,enableFiltering:!1},{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/channels/openchannel/accounts/view/{{row.entity.id}}/settings",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,e,a,{accountId:d.accountId})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.accounts.list",{url:"/list",templateUrl:"app/channels/openchannel/account/list/list.html",controller:"OpenChannelAccountListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.accounts.view.actions",{url:"/actions",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").factory("OpenChannelApplication",["$resource",function(a){return a("/api/openchannel/applications/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("OpenChannelAccountViewActionListCtrl",["$scope","gridOptions","OpenChannelAccount","$http","$translate","$stateParams","xAlert",function(a,b,c,d,e,f,g){a.initActions=function(){var d={draggable:!0,exporterCsvFilename:"openchannel_applications.csv",enableSorting:!1,enableFiltering:!1,columnDefs:[{name:"app",cellClass:"text-center"},{name:"name",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span>{{row.entity.app == "queue" ? row.entity.OpenchannelQueue.name : row.entity.User.name}}</span></div>'},{name:"timeout",cellClass:"text-center"},{name:"interval",displayName:"APPLICATION_TIME_INTERVAL",cellClass:"text-center",cellTemplate:"<div><span>{{row.entity.Interval ? row.entity.Interval.name : row.entity.interval}}</span></div>"},{name:"action",width:125,buttons:[{"class":"blue-hoki",href:"/channels/openchannel/accounts/view/{{row.entity.OpenchannelAccountId}}/actions/view/{{row.entity.id}}",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.app, row.entity.id)"}]}]};a.gridOptions=b.gridOptions(c,d,a,{accountId:f.accountId,controller:"applications"})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.accounts.view.actions.list",{url:"/list",templateUrl:"app/channels/openchannel/account/view/action/list/list.html",controller:"OpenChannelAccountViewActionListCtrl"})}]),angular.module("xCallyShuttleApp").controller("OpenChannelAccountViewActionViewCtrl",["$scope","$http","$stateParams","$translate","$location","xAlert","WizardHandler","socket","application","interval","Agent","Interval","OpenChannelQueue","OpenChannelAccount","OpenChannelApplication","Template","MailAccount","SmsAccount",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initAction=function(){return a.$application=i.application,a.$stateParams=c,a.$interval=j.interval,a.forms={},a.apps=[{name:"Queue",value:"queue"},{name:"Agent",value:"agent"},{name:"SendMail",value:"sendMail"},{name:"SendSMS",value:"sendSms"}],o.get({id:c.actionId}).$promise.then(function(b){if(a.application=b,a.application.alwaysTime=!1,a.application.IntervalId)a.application.intType="list";else switch(a.application.interval){case"*,*,*,*":a.application.intType="always";break;default:a.application.intType="custom"}if("always"===a.application.intType||"custom"===a.application.intType){var c=a.application.interval.split(",");"*"===c[0]?a.application.alwaysTime=!0:(a.application.t_from=moment(new Date),a.application.t_to=moment(new Date),a.application.t_from.hour(c[0].split("-")[0].split(":")[0]),a.application.t_from.minute(c[0].split("-")[0].split(":")[1]),a.application.t_to.hour(c[0].split("-")[1].split(":")[0]),a.application.t_to.minute(c[0].split("-")[1].split(":")[1])),"*"===c[1]?(a.application.wd_from="always",a.application.wd_to="always"):(a.application.wd_from=c[1].split("-")[0],a.application.wd_to=c[1].split("-")[1]),"*"===c[2]?(a.application.md_from="always",a.application.md_to="always"):(a.application.md_from=c[2].split("-")[0],a.application.md_to=c[2].split("-")[1]),"*"===c[3]?(a.application.m_from="always",a.application.m_to="always"):(a.application.m_from=c[3].split("-")[0],a.application.m_to=c[3].split("-")[1])}a.$watch("application.t_from",function(b){a.application.t_from_hm=moment(b).format("HH:mm")}),a.$watch("application.t_to",function(b){a.application.t_to_hm=moment(b).format("HH:mm")})})["catch"](function(a){f.error(a)})},a.getQueues=function(){return m.get().$promise.then(function(b){a.queues=b.rows})["catch"](function(a){console.error(a)})},a.getSmsAccounts=function(){return r.get().$promise.then(function(b){a.smsAccounts=b.rows})["catch"](function(a){console.error(a)})},a.getAgents=function(){return k.get().$promise.then(function(b){a.agents=b.rows})["catch"](function(a){console.error(a)})},a.getIntervals=function(){return l.get().$promise.then(function(b){a.intervals=b.rows})["catch"](function(a){console.error(a)})},a.updateItem=function(){switch(a.application.intType){case"always":a.application.interval="*,*,*,*",a.application.IntervalId=null;break;case"list":var b=_.find(a.intervals,{id:a.application.IntervalId});a.application.interval=b?"":"*,*,*,*",a.application.IntervalId=b?a.application.IntervalId:null;break;case"custom":var g,h,i,j,k;g=a.application.t_from&&a.application.t_to&&!a.application.alwaysTime?moment(a.application.t_from).format("HH:mm")+"-"+moment(a.application.t_to).format("HH:mm"):"*",a.application.wd_from&&"always"!==a.application.wd_from?(h=a.application.wd_from,a.application.wd_to&&"always"!==a.application.wd_to&&(h+="-"+a.application.wd_to)):h="*",a.application.md_from&&"always"!==a.application.md_from?(i=a.application.md_from,a.application.md_to&&"always"!==a.application.md_to&&(i+="-"+a.application.md_to)):i="*",a.application.m_from&&"always"!==a.application.m_from?(j=a.application.m_from,a.application.m_to&&"always"!==a.application.m_to&&(j+="-"+a.application.m_to)):j="*",k=g+","+h+","+i+","+j,a.application.interval=k,a.application.IntervalId=null}return n.update({accountId:c.accountId,controller:"applications",id:c.actionId},a.application).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success"),e.path("/channels/openchannel/accounts/view/"+c.accountId+"/actions/list")})["catch"](function(a){f.error(a)})},a.getTemplates=function(){return p.get().$promise.then(function(b){a.templates=b.rows})["catch"](function(a){console.error(a)})},a.getMailAccounts=function(){return q.get().$promise.then(function(b){a.mailAccounts=b.rows})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.accounts.view.actions.view",{url:"/view/:actionId",templateUrl:"app/channels/openchannel/account/view/action/view/view.html",controller:"OpenChannelAccountViewActionViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("OpenChannelAccountViewActionWizardCtrl",["$scope","$http","Agent","OpenChannelQueue","Interval","$stateParams","$translate","$location","xAlert","WizardHandler","socket","application","interval","OpenChannelApplication","OpenChannelAccount","Template","MailAccount","SmsAccount",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initWizard=function(){a.apps=[{name:"Queue",value:"queue"},{name:"Agent",value:"agent"},{name:"SendMail",value:"sendMail"},{name:"SendSMS",value:"sendSms"}],a.$application=l.application,a.$stateParams=f,a.$interval=m.interval,a.forms={},a.application={alwaysTime:!0},a.$watch("application.t_from",function(b){a.application.t_from_hm=moment(b).format("HH:mm")}),a.$watch("application.t_to",function(b){a.application.t_to_hm=moment(b).format("HH:mm")})},a.getQueues=function(){return d.get().$promise.then(function(b){a.queues=b.rows})["catch"](function(a){console.error(a)})},a.getAgents=function(){return c.get().$promise.then(function(b){a.agents=b.rows})["catch"](function(a){console.error(a)})},a.getSmsAccounts=function(){return r.get().$promise.then(function(b){a.smsAccounts=b.rows})["catch"](function(a){console.error(a)})},a.getIntervals=function(){return e.get().$promise.then(function(b){a.intervals=b.rows})["catch"](function(a){console.error(a)})},a.createItem=function(){switch(a.application.intType){case"always":a.application.interval="*,*,*,*",a.application.IntervalId=null;break;case"list":var b=_.find(a.intervals,{id:a.application.IntervalId});a.application.interval=b?"":"*,*,*,*",a.application.IntervalId=b?a.application.IntervalId:null;break;case"custom":var c,d,e,j,k;c=a.application.t_from&&a.application.t_to&&!a.application.alwaysTime?moment(a.application.t_from).format("HH:mm")+"-"+moment(a.application.t_to).format("HH:mm"):"*",a.application.wd_from&&"always"!==a.application.wd_from?(d=a.application.wd_from,a.application.wd_to&&"always"!==a.application.wd_to&&(d+="-"+a.application.wd_to)):d="*",a.application.md_from&&"always"!==a.application.md_from?(e=a.application.md_from,a.application.md_to&&"always"!==a.application.md_to&&(e+="-"+a.application.md_to)):e="*",a.application.m_from&&"always"!==a.application.m_from?(j=a.application.m_from,a.application.m_to&&"always"!==a.application.m_to&&(j+="-"+a.application.m_to)):j="*",k=c+","+d+","+e+","+j,a.application.interval=k,a.application.IntervalId=null}return o.save({accountId:f.accountId,controller:"applications"},a.application).$promise.then(function(){i.show(g.instant("MESSAGE_WELL_DONE"),"success"),h.path("/channels/openchannel/accounts/view/"+f.accountId+"/actions/list")})["catch"](function(a){i.error(a)})},a.formValidation=function(a){return a},a.next=function(){j.wizard().next()},a.getMailAccounts=function(){return q.get().$promise.then(function(b){a.mailAccounts=b.rows})["catch"](function(a){console.error(a)})},a.getTemplates=function(){return p.get().$promise.then(function(b){a.templates=b.rows})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.accounts.view.actions.wizard",{url:"/wizard",templateUrl:"app/channels/openchannel/account/view/action/wizard/wizard.html",controller:"OpenChannelAccountViewActionWizardCtrl"})}]),angular.module("xCallyShuttleApp").controller("OpenChannelAccountApiViewCtrl",["$scope","OpenChannelAccount","$http","$stateParams","clipboard","$translate","$location","xAlert",function(a,b,c,d,e,f,g,h){a.copyToClipboard=function(a){e.copyText(a),h.show(f.instant("MESSAGE_TEXT_COPIED_CLIPBOARD")+"!","success")},a.initView=function(){b.get({id:d.accountId}).$promise.then(function(b){a.account=b,a.receiveurl=a.account.remote+"/api/openchannel/accounts/"+a.account.id+"/receive"})["catch"](function(a){h.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.accounts.view.api",{url:"/api",controller:"OpenChannelAccountApiViewCtrl",templateUrl:"app/channels/openchannel/account/view/api/view/view.html"})}]),angular.module("xCallyShuttleApp").factory("OpenChannelDisposition",["$resource",function(a){return a("/api/openchannel/dispositions/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("OpenChannelInboxViewModaDispositionAddCtrl",["$scope","$uibModalInstance","OpenChannelAccount","id",function(a,b,c,d){a.ok=function(){return c.save({accountId:d,controller:"dispositions"},{name:a.name}).$promise.then(function(a){b.close(a)})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("OpenChannelAccountDispositionViewCtrl",["$scope","$stateParams","$uibModal","$translate","OpenChannelAccount","xAlert",function(a,b,c,d,e,f){a.initView=function(){return e.get({accountId:b.accountId,controller:"dispositions"}).$promise.then(function(b){a.dispositions=b.rows})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.updateDisposition=function(a,c){return e.update({accountId:b.accountId,controller:"dispositions",id:a},{name:c}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.deleteDisposition=function(c){return console.log("delete"),e.remove({accountId:b.accountId,controller:"dispositions",id:c}).$promise.then(function(){_.remove(a.dispositions,{id:c})})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.addDisposition=function(){return c.open({animation:!0,templateUrl:"app/channels/openchannel/account/view/disposition/modal/add.modal.html",controller:"OpenChannelInboxViewModaDispositionAddCtrl",resolve:{id:function(){return b.accountId}}}).result.then(function(b){b&&a.dispositions.push(b)})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.accounts.view.dispositions",{url:"/dispositions",controller:"OpenChannelAccountDispositionViewCtrl",templateUrl:"app/channels/openchannel/account/view/disposition/view/view.html"})}]),angular.module("xCallyShuttleApp").controller("OpenChannelAccountHooksViewCtrl",["$scope","OpenChannelAccount","Pause","$http","$stateParams","$translate","$location","xAlert",function(a,b,c,d,e,f,g,h){a.account={},a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.CONST_TIMEOUT=3e4,a.initView=function(){a.types=[{value:"",name:"-- None --"},{name:"HTTP GET",value:"GET"},{name:"HTTP POST",value:"POST"}],c.get().$promise.then(function(b){a.pauses=b.rows})["catch"](function(a){h.error(a)}),b.get({id:e.accountId}).$promise.then(function(b){a.account=b,a.account.actions.length<1&&a.account.actions.push({action:"pause",enabled:!1,type:null})})["catch"](function(a){h.error(a)})},a.resetActionData=function(a){a.type=null},a.updateItem=function(){return console.log(a.account),b.update({id:e.accountId},a.account).$promise.then(function(){h.show(f.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){h.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.accounts.view.hooks",{url:"/hooks",controller:"OpenChannelAccountHooksViewCtrl",templateUrl:"app/channels/openchannel/account/view/hooks/view/view.html"})}]),angular.module("xCallyShuttleApp").controller("OpenChannelAccountSettingViewCtrl",["$scope","OpenChannelAccount","$http","$stateParams","clipboard","$translate","$location","xAlert","List",function(a,b,c,d,e,f,g,h,i){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.CONST_TIMEOUT=3e4,a.types=[{name:"HTTP GET",value:"GET"},{name:"HTTP POST",value:"POST"}],a.account={},a.initView=function(){i.get().$promise.then(function(b){a.lists=b.rows})["catch"](function(a){console.error(a)}),b.get({id:d.accountId}).$promise.then(function(b){a.account=b})["catch"](function(a){h.error(a)})},a.updateItem=function(){return b.update({id:d.accountId},a.account).$promise.then(function(){h.show(f.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){h.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.accounts.view.settings",{url:"/settings",controller:"OpenChannelAccountSettingViewCtrl",templateUrl:"app/channels/openchannel/account/view/setting/view/view.html"})}]),angular.module("xCallyShuttleApp").controller("OpenChannelAccountViewCtrl",["$scope","OpenChannelAccount","$http","$stateParams","clipboard","$translate","$location","xAlert","List",function(a,b,c,d,e,f,g,h,i){a.initView=function(){return a.account={},b.get({id:d.accountId}).$promise.then(function(b){a.account=b})["catch"](function(a){h.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.accounts.view",{url:"/view/:accountId",templateUrl:"app/channels/openchannel/account/view/view.html",controller:"OpenChannelAccountViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]})}]}})}]),angular.module("xCallyShuttleApp").controller("OpenChannelAccountWizardCtrl",["$scope","$http","$location","$translate","WizardHandler","xAlert","OpenChannelAccount",function(a,b,c,d,e,f,g){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initWizard=function(){a.forms={},a.item={},a.item.remote=c.protocol()+"://"+location.host},a.goNext=function(){e.wizard().next()},a.formValidation=function(a){return a},a.createItem=function(){return g.save(a.item).$promise.then(function(){c.path("/channels/openchannel/accounts/list")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.accounts.wizard",{url:"/wizard",templateUrl:"app/channels/openchannel/account/wizard/wizard.html",controller:"OpenChannelAccountWizardCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.inbox",{url:"/inbox",template:"<div ui-view></div>",data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:48}}})}]),angular.module("xCallyShuttleApp").controller("OpenChannelInboxInfoModalCtrl",["$scope","$translate","$uibModalInstance","$stateParams","xAlert","data",function(a,b,c,d,e,f){a.data=null,a.initInfo=function(){f&&(a.data=_.isEmpty(JSON.parse(f))?null:JSON.parse(f))},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").directive("message",["$rootScope","OpenChannelMessage","List","xAlert","$translate","$uibModal",function(a,b,c,d,e,f){return{restrict:"E",scope:{Message:"=message",accounttype:"=accounttype",listId:"="},templateUrl:"app/channels/openchannel/inbox/message/message.html",link:function(b){b.openContact=function(f,g){if(b.listId){if(!g)return;var h;switch(f){case"phone":h={phone:g};break;case"email":h={email:g};break;default:return}return c.save({listId:b.listId,controller:"contacts"},h).$promise.then(function(b){var c=_.find(a.$root.workspaces,{contactID:b.id});c?c.active=!0:a.$root.workspaces.push({active:!0,"class":"icon-user",contactID:b.id,name:b.phone,type:"contact"})})["catch"](function(a){console.error(a)})}d.show(e.instant("MESSAGE_NO_LIST_CONFIGURED"),"info")},b.info=function(a){f.open({animation:!0,templateUrl:"app/channels/openchannel/inbox/message/info.modal.html",controller:"OpenChannelInboxInfoModalCtrl",resolve:{data:function(){return a}}})}}}}]),angular.module("xCallyShuttleApp").directive("openchannelRoom",["OpenChannelReport","$cookieStore","$translate","$uibModal","$timeout","Tag","CannedAnswer","Auth","OpenChannelAccount","OpenChannelRoom","OpenChannelMessage","xAlert","usSpinnerService","socket","$stateParams","$rootScope",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){return{restrict:"E",scope:{workspace:"=",index:"=",submit:"&onSubmit"},templateUrl:"app/channels/openchannel/inbox/room/room.directive.html",link:function(a){a.modelOptions={debounce:{"default":500,blur:250},getterSetter:!0},a.panelLeft=null,a.panelRight="col-md-12",a.togglePanelLeft=function(){a.panelLeft?(a.panelLeft=null,a.panelRight="col-md-12"):(a.panelLeft="col-md-6",a.panelRight="col-md-6")},a.form={disabled:!1,from:"",to:a.workspace.data&&a.workspace.data.to?a.workspace.data.to:"",body:""},n.socket.on("openchannel_message:save",function(b){return a.workspace.id&&b.OpenchannelRoomId==a.workspace.id?k.get({id:b.id}).$promise.then(function(b){a.Room||(a.Room={OpenchannelMessages:[]});var c=_.findIndex(a.Room.OpenchannelMessages,{id:b.id});c>-1?_.merge(a.Room.OpenchannelMessages[c],b):a.Room.OpenchannelMessages.unshift(b),a.panelLeft="col-md-6",a.panelRight="col-md-6"})["catch"](function(a){console.error(a)}):void 0}),n.socket.on("openchannel_message:update",function(b){if(a.Room&&b.OpenchannelRoomId==a.workspace.id){var c=_.find(a.Room.OpenchannelMessages,{id:b.id});c&&_.merge(c,b)}}),n.socket.on("openchannel_room:save",function(b){a.Room&&b.id==a.workspace.id&&(a.Room.status=b.status,a.Room.disposition=b.disposition)}),a.closeRoom=function(b){return d.open({animation:!0,templateUrl:"app/channels/openchannel/inbox/view/view.status.modal.html",controller:"OpenChannelInboxViewModalStatusCtrl",resolve:{closed:function(){return"CLOSED"===a.Room.status},accountId:function(){return a.Room.OpenchannelAccountId}}}).result.then(function(a){var c={id:b,status:"CLOSED"};return a.disposition&&(c.disposition=a.disposition),j.update(c).$promise["catch"](function(a){l.error(a)})})},a.openRoom=function(a,b){var c=_.find(p.workspaces,{id:a,type:"openchannelRoom"});c?c.active=!0:p.workspaces.push({id:a,name:b,type:"openchannelRoom","class":"icon-globe",active:!0})},f.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a)}),i.get().$promise.then(function(b){a.Accounts=b.rows})["catch"](function(a){console.error(a)}),a.workspace.id?(a.panelLeft="col-md-6",a.panelRight="col-md-6",j.get({id:a.workspace.id}).$promise.then(function(b){a.Room=b,a.form.from=a.Room.OpenchannelAccount.name,a.form.to=a.Room.contact,a.form.tags=a.Room.tags})["catch"](function(a){console.error(a)})["finally"](function(){m.stop("spinner-grid"),a.form.disabled=!1})):m.stop("spinner-grid"),a.onSelect=function(){a.form.body+=a.modelOptions.selectedAnswer,delete a.modelOptions.selectedAnswer},a.onSelectAnswer=function(b){a.form.body+=b,a.selectedAnswer=""},a.getAnswers=function(a){return g.get({key:a}).$promise.then(function(a){return _.map(a.rows,"value")})},a.loadAgents=function(){d.open({animation:!0,templateUrl:"app/channels/openchannel/inbox/view/view.agents.modal.html",controller:"OpenChannelInboxViewModalAgentCtrl",resolve:{roomId:function(){return a.workspace.id}}})},a.onChanged=function(){return j.patch({id:a.workspace.id},{tags:a.form.tags}).$promise["catch"](function(a){console.error(a)})},a.sendMessage=function(){m.spin("spinner-grid");var b=_.find(a.Accounts,{name:a.form.from}).id;if(b){var d={from:a.form.from,to:a.form.to,body:a.form.body,OpenchannelRoomId:a.Room?a.Room.id:null};return i.save({accountId:b,controller:"send"},d).$promise.then(function(b){return l.show(c.instant("MESSAGE_WELL_DONE"),"success"),a.Room?a.Room:j.get({id:"messages",controller:b.id}).$promise}).then(function(b){b&&(a.form.body="",a.workspace.id=b.id,a.workspace.name=b.contact,a.Room=b,a.panelLeft="col-md-6",a.panelRight="col-md-6")})["catch"](function(a){l.error(a)})["finally"](function(){m.stop("spinner-grid")})}}}}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.inbox.view.account",{url:"/account/:id",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("OpenChannelInboxViewAccountListCtrl",["$scope","$rootScope","$uibModal","$translate","$stateParams","$state","Tag","usSpinnerService","socket","OpenChannelAccount","OpenChannelRoom","gridOptions","uiGridConstants","Auth","Modal","xAlert","uibButtonConfig","localStorageService",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){a.loadAgents=function(a){c.open({animation:!0,templateUrl:"app/channels/openchannel/inbox/view/view.agents.modal.html",controller:"OpenChannelInboxViewModalAgentCtrl",resolve:{roomId:a}})},a.initView=function(){q.activeClass="green-haze",a.id=[],a.isAdmin=n.isAdmin(),a.isAgent=n.isAgent(),a.uncheckable=!1,a.query={status:r.get("openchannelStatus")?r.get("openchannelStatus"):"NEW",tags:r.get("openchannelTags")?r.get("openchannelTags"):[]},a.$watch("query.status",function(b,c){b!==c&&(r.set("openchannelStatus",a.query.status),a.getPage())},!0),g.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a)}),a.gridOptions={exporterCsvFilename:"openchannel_rooms.csv",enableRowHeaderSelection:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,enableFiltering:!0,enableSorting:!0,enableGridMenu:!1,flatEntityAccess:!0,showGridFooter:!0,fastWatch:!0,enableSelectAll:!0,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,columnDefs:[{name:"lastEvent",displayName:"",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div> <span data-ng-class=\"{'icon-arrow-up font-green': row.entity.lastEvent === 'SENT', 'icon-arrow-up font-yellow': row.entity.lastEvent === 'SENDING', 'icon-arrow-down font-green': row.entity.lastEvent === 'RECEIVED', 'icon-close font-red': row.entity.lastEvent === 'FAILED', 'icon-question': !row.entity.lastEvent}\"> </span> </div>",width:30,enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"tags",displayName:"",headerCellTemplate:'<i class="icon-tag" style="margin-top: 8px; margin-left: 8px;"></i>',cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><i data-ng-class=\"row.entity.tags.length ? 'icon-tag' : ''\" title=\"{{row.entity.tags}}\"></i></div>",width:30,enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"id",displayName:"Id",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><span>#{{row.entity.id}}</span></div>",width:75,enableSorting:!1,enableFiltering:!0,enableColumnMenu:!1},{name:"contact",cellClass:"text-center"},{name:"disposition",cellClass:"text-center"},{name:"createdAt",cellFilter:"date:'dd/MM/yyyy HH:mm'",width:120,enableFiltering:!1},{name:"updatedAt",cellFilter:"date:'dd/MM/yyyy HH:mm'",width:120,enableFiltering:!1,sort:{direction:m.DESC}},{name:"action",cellTemplate:'<div> <a class="btn btn-icon-only font-green" data-ng-click="grid.appScope.openRoom(row.entity.id, row.entity.contact)"><i class="glyphicon glyphicon-comment" aria-hidden="true"></i></a> <a class="btn btn-icon-only font-red" data-ng-show="grid.appScope.isAdmin" data-ng-click="grid.appScope.deleteItem(row.entity.id,row.entity.id)"><i class="fa fa-trash" aria-hidden="true"></i> </div>',enableSorting:!1,cellClass:"ui-grid-vcenter",width:90,enableFiltering:!1,enableColumnMenu:!1}],data:[],onRegisterApi:function(b){a.gridApi=b,a.gridApi.selection&&(a.gridApi.selection.on.rowSelectionChanged(a,function(b){b.isSelected?a.id.push(a.gridApi.grid.options.primaryKey?b.entity[a.gridApi.grid.options.primaryKey]:b.entity.id):_.pull(a.id,a.gridApi.grid.options.primaryKey?b.entity[a.gridApi.grid.options.primaryKey]:b.entity.id)}),a.gridApi.selection.on.rowSelectionChangedBatch(a,function(b){b[0].isSelected?a.id=_.union(a.id,_.map(b,a.gridApi.grid.options.primaryKey?"entity."+a.gridApi.grid.options.primaryKey:"entity.id")):_.map(b,a.gridApi.grid.options.primaryKey?"entity."+a.gridApi.grid.options.primaryKey:"entity.id").forEach(function(b){_.pull(a.id,b)})}))}},i.socket.on("openchannel_room:remove",function(b){_.remove(a.workspaces,{id:b.id,type:"openchannelRoom"}),_.remove(a.gridOptions.data,{id:b.id})}),a.getPage(a.query)},a.onChanged=function(){a.getPage(a.query)},a.tagItems=function(){return c.open({animation:!0,templateUrl:"app/channels/openchannel/inbox/view/view.tags.modal.html",controller:"OpenChannelInboxViewModalTagCtrl",resolve:{id:function(){return a.id}}}).result.then(function(){a.gridApi.selection.clearSelectedRows(),a.id=[],a.getPage()})},a.openRoom=function(b,c){var d=_.find(a.workspaces,{id:b,type:"openchannelRoom"});return d?d.active=!0:a.workspaces.push({id:b,name:c,type:"openchannelRoom","class":"icon-globe",active:!0}),b&&"agent"===n.getCurrentUser().role&&"PENDING"!==a.query.status&&"CLOSED"!==a.query.status?k.patch({id:b},{status:"OPEN",openReason:"agent"}).$promise["catch"](function(a){console.error(a)}):void 0},a.getPage=function(b){h.spin("spinner-grid");var c={accountId:e.id,controller:"rooms"};return b&&_.merge(c,b),a.query&&_.merge(c,a.query),j.query(c).$promise.then(function(b){r.set("openchannelAccountId",e.id),a.gridOptions.data=b,i.socket.on("openchannel_room:save",function(b){if(b.OpenchannelAccountId==e.id){var c=_.find(a.gridOptions.data,{id:b.id});c?c.status!==b.status?_.remove(a.gridOptions.data,{id:b.id}):_.merge(c,b):a.query.status===b.status&&a.gridOptions.data.push(b)}}),i.socket.on("openchannel_room:remove",function(b){_.remove(a.gridOptions.data,{id:b.id})})})["catch"](function(a){p.error(a)})["finally"](function(){h.stop("spinner-grid")})},a.deleteItem=o.confirm["delete"](function(b){var c={id:b};return console.log(c),k["delete"](c).$promise.then(function(){a.getPage(),p.show(d.instant("MESSAGE_WELL_DONE")+"!","success"),a.gridApi.selection.clearSelectedRows(),a.id=[]})["catch"](function(a){p.error(a)})}),a.deleteItems=o.confirm["delete"](function(){var b={ids:a.id};return k["delete"](b).$promise.then(function(){a.getPage(),p.show(d.instant("MESSAGE_WELL_DONE")+"!","success"),a.gridApi.selection.clearSelectedRows(),a.id=[]})["catch"](function(a){p.error(a)})})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){ +a.state("main.channels.openchannel.inbox.view.account.list",{url:"/list",templateUrl:"app/channels/openchannel/inbox/view/account/list/list.html",controller:"OpenChannelInboxViewAccountListCtrl"})}]),angular.module("xCallyShuttleApp").controller("OpenChannelInboxViewModalAgentCtrl",["$scope","$uibModalInstance","$translate","$stateParams","Agent","OpenChannelRoom","xAlert","roomId",function(a,b,c,d,e,f,g,h){a.initModal=function(){a.agents=[],a.item={agents:[]},e.get().$promise.then(function(b){b.rows.forEach(function(b){a.agents.push(b)})})["catch"](function(a){console.error(a)}),f.query({id:h,controller:"agents"}).$promise.then(function(b){b.forEach(function(b){a.agents.push(b),a.item.agents.push(b.id)})})["catch"](function(a){console.error(a)}),a.modal={dismissable:!0,title:"APPLICATION_MESSAGE_SEND_RETRY",text:"MESSAGE_MESSAGE_SEND_RETRY",buttons:[{classes:"btn btn-success",text:"APPLICATION_RETRY",click:function(a){b.close(a)}},{classes:"btn default",text:"APPLICATION_CANCEL",click:function(a){b.dismiss(a)}}]}},a.ok=function(){return f.update({id:h,controller:"agents",agents:a.item.agents}).$promise.then(function(){g.show(c.instant("MESSAGE_WELL_DONE"),"success"),b.close()})["catch"](function(a){console.error(a)})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("OpenChannelInboxViewCtrl",["$scope","$location","$stateParams","$translate","$uibModal","socket","Auth","xAlert","OpenChannelRoom","OpenChannelAccount","localStorageService",function(a,b,c,d,e,f,g,h,i,j,k){a.initView=function(){j.get().$promise.then(function(c){var d=null;if(a.openchannelAccounts=c.rows,a.openchannelAccounts.length){var e,f=k.get("openchannelAccountId");e=f&&_.find(a.openchannelAccounts,{id:Number(f)})?f:a.openchannelAccounts[0].id,d="/channels/openchannel/inbox/view/account/"+e+"/list"}d&&b.path(d)})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.inbox.view",{url:"/view",templateUrl:"app/channels/openchannel/inbox/view/view.html",controller:"OpenChannelInboxViewCtrl",reload:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/inbox.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("OpenChannelInboxViewModalStatusCtrl",["$scope","$uibModalInstance","closed","OpenChannelAccount","accountId",function(a,b,c,d,e){a.modal={title:"APPLICATION_CONFIRM_CLOSE",text:"MESSAGE_ARE_YOU_SURE_YOU_WANT_TO_CLOSE"},a.initDisposition=function(){return d.get({accountId:e,controller:"dispositions"}).$promise.then(function(b){a.dispositions=b.rows})["catch"](function(a){console.error(a)})},a.item={},a.closed=c,a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss()}}]),angular.module("xCallyShuttleApp").controller("OpenChannelInboxViewModalTagCtrl",["$scope","$uibModalInstance","$translate","$stateParams","Tag","OpenChannelRoom","xAlert","id",function(a,b,c,d,e,f,g,h){a.initModal=function(){return a.tags=[],a.item={tags:[]},a.modal={dismissable:!0,title:"APPLICATION_MESSAGE_SEND_RETRY",text:"MESSAGE_MESSAGE_SEND_RETRY",buttons:[{"class":"btn-success",text:"APPLICATION_TAG",click:function(){var d={status:!0};return f.patch({id:h},{tags:a.item.tags}).$promise.then(function(){g.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(){d.status=!1,g.show(c.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})["finally"](function(){b.close(d)})}},{"class":"default",text:"APPLICATION_CANCEL",click:function(a){b.dismiss(a)}}]},e.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel",{url:"/openchannel",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:20}}})}]),angular.module("xCallyShuttleApp").factory("OpenChannelReport",["$resource",function(a){return a("/api/report/openchannel/:id/:controller1/:controller2",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("OpenChannelRoom",["$resource",function(a){return a("/api/openchannel/rooms/:id/:controller",{id:"@id",controller:"@controller"},{update:{method:"PUT"},patch:{method:"PATCH"}})}]),angular.module("xCallyShuttleApp").factory("OpenChannelMessage",["$resource",function(a){return a("/api/openchannel/messages/:id/:controller",{id:"@id",controller:"@controller"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("OpenChannelQueueListCtrl",["$scope","OpenChannelQueue","gridOptions","$uibModal","xAlert","Auth",function(a,b,c,d,e,f){a.initView=function(){a.Auth=f;var d={exporterCsvFilename:"openchanel_queues.csv",columnDefs:[{name:"name"},{name:"description"},{name:"timeout"},{name:"strategy"},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/channels/openchannel/queues/view/{{row.entity.id}}/settings",name:"settings"},{"class":"green-meadow",href:"/channels/openchannel/queues/view/{{row.entity.id}}/agents",name:"agents",hide:"user"===f.getCurrentUser().role},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.createItem=function(){var b=d.open({animation:!0,templateUrl:"app/channels/openchannel/queue/list/list.create.modal.html",controller:"OpenChannelQueueListCreateCtrl",size:"lg"});b.result.then(function(b){console.log(b),a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("OpenChannelQueueListCreateCtrl",["$scope","$uibModalInstance","$translate","xAlert","OpenChannelQueue","Team","strategies",function(a,b,c,d,e,f,g){a.form={},a.strategies=g,a.item={penalty:0,agents:[]},a.getTeams=function(){return f.get({controller:"associations"}).$promise.then(function(b){a.teams=b.rows}).then(function(){ComponentsDropdowns.bindQueue(a.teams,[],function(){return{select:function(b){a.item.agents=_.union(a.item.agents,b)},deselect:function(b){a.item.agents=_.difference(a.item.agents,b)}}})})["catch"](function(a){console.error(a)})},a.save=function(){return console.log(a.item),e.save(a.item).$promise.then(function(a){b.close(a)})["catch"](function(a){d.error(a)})},a.cancel=function(){b.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.queues.list",{url:"/list",templateUrl:"app/channels/openchannel/queue/list/list.html",controller:"OpenChannelQueueListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}})}]),angular.module("xCallyShuttleApp").factory("OpenChannelQueue",["$resource",function(a){return a("/api/openchannel/queues/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.queues",{url:"/queues",template:"<div ui-view></div>",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:47}}})}]),angular.module("xCallyShuttleApp").controller("OpenChannelQueueViewCtrl",["$scope","$http","Auth","$translate","$stateParams","xAlert","Team","OpenChannelQueue","strategies",function(a,b,c,d,e,f,g,h,i){a.strategies=i,a.Auth=c;var j=function(){return{select:function(b){return h.save({id:a.queue.id,controller:"agents"},{agents:b,penalty:a.queue.penalty}).$promise.then(function(b){console.log("sel",b),a.getTeams()})["catch"](function(a){console.error(a)})},deselect:function(b){return h["delete"]({id:a.queue.id,controller:"agents",agents:b}).$promise.then(function(b){console.log("desel",b),a.getTeams()})["catch"](function(a){console.error(a)})}}};a.getQueue=function(){return h.get({id:e.id}).$promise.then(function(b){b.penalty=0,a.queue=b})["catch"](function(a){console.error(a)})},a.updateQueue=function(){return h.update({id:e.id},{name:a.queue.name,description:a.queue.description,timeout:a.queue.timeout,strategy:a.queue.strategy}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.getTeams=function(){return g.get({controller:"associations"}).$promise.then(function(b){return a.teams=b.rows,console.log(b.rows),h.get({id:e.id,controller:"agents"}).$promise}).then(function(b){console.log(b),ComponentsDropdowns.bindQueue(a.teams,_.map(b.rows,function(a){return{id:a.id,penalty:a.UserHasOpenchannelQueue.penalty}}),j)})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.queues.view",{url:"/view/:id",templateUrl:"app/channels/openchannel/queue/view/view.html",controller:"OpenChannelQueueViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.openchannel.queues.view.settings",{url:"/settings",templateUrl:"app/channels/openchannel/queue/view/view.settings.html"}).state("main.channels.openchannel.queues.view.agents",{url:"/agents",templateUrl:"app/channels/openchannel/queue/view/view.agents.html",cache:!1,serie:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.realtime",{url:"/realtime",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:49}}})}]),angular.module("xCallyShuttleApp").controller("OpenChannelRealtimeViewAgentCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","Agent","Pause","Action","OpenChannelQueue","usSpinnerService","$q","uiGridConstants","$timeout",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){function o(){return k.spin("grid-spinner"),g.get(t).$promise.then(function(b){a.gridOptions.totalItems=b.count,a.gridOptions.data=[],b.rows.forEach(function(a){q(a)})})["catch"](function(a){f.error(a)})["finally"](function(){k.stop("grid-spinner")})}function p(){e.socket.on("agent:save",function(b){b=b.newValues||b;var c=_.find(a.gridOptions.data,{agentId:b.id,isAgent:!0});c&&(c.online=_.has(b,"online")?b.online:c.online,c.lastLoginAt=_.has(b,"lastLoginAt")?b.lastLoginAt:c.lastLoginAt,c.pause=_.has(b,"openchannelPause")?b.openchannelPause:c.openchannelPause,c.pauseType=_.has(b,"pauseType")?b.pauseType:c.pauseType,c.lastPauseAt=_.has(b,"lastPauseAt")?b.lastPauseAt:c.lastPauseAt,c.ipaddr=_.has(b,"ipaddr")?b.ipaddr:c.ipaddr,c.port=_.has(b,"port")?b.port:c.port,c.fullcontact=_.has(b,"fullcontact")?b.fullcontact:c.fullcontact,c.useragent=_.has(b,"useragent")?b.useragent:c.useragent,c.lastms=_.has(b,"lastms")?b.lastms:c.lastms,c.internal=_.has(b,"internal")?b.internal:c.internal,_.map(a.gridOptions.data,function(a){a.isAgent||a.agentId!==b.id||(a.online=_.has(b,"online")?b.online:a.online)}))}),e.socket.on("agent:remove",function(b){_.remove(a.gridOptions.data,{agentId:b.id})}),e.socket.on("user_has_openchannel_queue:save",function(b){console.log("new queue",b);var c=_.find(a.gridOptions.data,{agentId:b.UserId,isAgent:!0}),d=a.gridOptions.data.indexOf(c);a.gridOptions.data.splice(d+1,0,{isAgent:!1,agentId:b.UserId,queue:b.queue,queueId:b.OpenchannelQueueId,agent:b.membername,online:c.online})}),e.socket.on("user_has_openchannel_queue:remove",function(b){_.remove(a.gridOptions.data,{agentId:b.UserId,queueId:b.OpenchannelQueueId})})}function q(b){a.gridOptions.data.push({isAgent:!0,agentId:b.id,agent:b.name,online:b.online,lastLoginAt:b.lastLoginAt,lastPauseAt:b.lastPauseAt,pause:b.openchannelPause,pauseType:b.pauseType,ipaddr:b.ipaddr,port:b.port,fullcontact:b.fullcontact,useragent:b.useragent,lastms:b.lastms,internal:b.internal,$$treeLevel:0}),b.OpenchannelQueues&&b.OpenchannelQueues.forEach(function(c){a.gridOptions.data.push({isAgent:!1,agentId:b.id,queue:c.name,queueId:c.id,agent:b.name,online:b.online})})}function r(){return h.get().$promise.then(function(b){a.pauses=b.rows,e.syncUpdates("pause",a.pauses)})["catch"](function(a){f.error(a)})}function s(){return j.get().$promise.then(function(b){a.openchannelQueues=b.rows,e.syncUpdates("openchannel_queue",a.openchannelQueues)})["catch"](function(a){f.error(a)})}a.openchannelQueues=[];var t={controller:"realtime",controller1:"openchannel",offset:0,limit:10};a.moment=moment,a.initAgents=function(){a.gridOptions={enableGridMenu:!0,headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,useExternalPagination:!0,useExternalSorting:!0,useExternalFiltering:!0,multiSelect:!0,showTreeExpandNoChildren:!0,columnDefs:[{name:"name",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.isAgent">{{row.entity.agent}} <{{row.entity.internal}}></div>'},{name:"online",displayName:"APPLICATION_ONLINE",width:150,headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.online != null && row.entity.isAgent"><i class="fa" data-ng-class="{\'font-green\':row.entity.online, \'font-red\':!row.entity.online,\'fa-user\':row.entity.online,\'fa-user-times\':!row.entity.online}"></i> <i data-ng-if="row.entity.online" class="fa fa-sign-out font-red pointer-cursor" title="logout" data-ng-click="grid.appScope.agentLogout(row.entity.agent,row.entity.agentId)"></i> <span data-ng-if="row.entity.online && grid.appScope.showTimers" class="left-margin"><css-timer start-time="row.entity.lastLoginAt"></css-timer></span></div>',filter:{type:m.filter.SELECT,selectOptions:[{value:"true",label:"ONLINE"},{value:"false",label:"OFFLINE"}]}},{name:"openchannelPause",displayName:"APPLICATION_PAUSE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.pause != null && row.entity.online" class="ui-grid-vcenter"><i data-ng-if="row.entity.pause" data-ng-click="grid.appScope.pause(row.entity,\'unpause\')" class="fa fa-play font-green pointer-cursor left-margin" title="{{\'APPLICATION_RESUME\' | translate}}"></i><i class="fa fa-pause font-yellow pointer-cursor" data-ng-click="grid.appScope.pause(row.entity,\'pause\',\'DEFAULT PAUSE\')" title="{{\'APPLICATION_DEFAULT_PAUSE\' | translate}}"></i><select data-ng-if="grid.appScope.pauses.length" class="pause-select pointer-cursor" data-ng-model="grid.appScope.pauseType" data-ng-change="grid.appScope.pause(row.entity,\'pause\',grid.appScope.pauseType)"><option class="pointer-cursor" data-ng-repeat="pause in grid.appScope.pauses">{{pause.name}}</option></select> <span data-ng-if="row.entity.pause" class="left-margin">({{row.entity.pauseType}})</span><span data-ng-if="row.entity.pause && grid.appScope.showTimers" class="left-margin"><css-timer start-time="row.entity.lastPauseAt"></css-timer></span></div>',filter:{type:m.filter.SELECT,selectOptions:[{value:"true",label:"PAUSED"},{value:"false",label:"NOT PAUSED"}]},enableSorting:!1,enableColumnMenu:!1},{name:"queue",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"action",displayName:"",width:170,cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><button data-ng-if="row.entity.queueId" class="btn btn-xs red-sunglo" data-ng-click="grid.appScope.leaveQueue(row.entity.agentId,row.entity.queueId)"><i class="icon-ban"></i> {{\'APPLICATION_LEAVE\' | translate}}</button><button data-ng-if="row.entity.isAgent && row.treeNode.children.length < grid.appScope.openchannelQueues.length" class="btn btn-xs blue-hoki" data-ng-click="grid.appScope.joinQueue(row.entity.agentId)"><i class="icon-plus"></i> {{\'APPLICATION_JOIN_QUEUE\' | translate}}</button><div>',enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1}],data:[],gridMenuTitleFilter:function(a){var b=l.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){u(a.gridApi.core.getVisibleRows(a.gridApi.grid).length)}),a.gridApi.treeBase.on.rowExpanded(a,function(b){u(a.gridApi.core.getVisibleRows(a.gridApi.grid).length+b.treeNode.children.length)}),a.gridApi.treeBase.on.rowCollapsed(a,function(b){u(a.gridApi.core.getVisibleRows(a.gridApi.grid).length-b.treeNode.children.length)}),a.gridApi.core.on.sortChanged(a,function(a,b){0===b.length?t.order=null:t.order=b[0].name+" "+b[0].sort.direction.toUpperCase(),o()}),a.gridApi.pagination.on.paginationChanged(a,function(a,b){t.offset=(a-1)*b,t.limit=b,o()}),a.gridApi.core.on.filterChanged(a,function(){var a=this.grid;a.columns.forEach(function(a){a.filters[0].term?t[a.name]=a.filters[0].term:delete t[a.name]}),o()})}},o(),r(),s(),n(function(){p()})};var u=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("agent"),e.unsyncUpdates("user_has_openchannel_queue")}),a.pause=function(b,c,e){return e&&(a.pauseType=null),i.save({name:c,agent:b.agentId,data2:b.agent,type:e||"DEFAULT PAUSE",data4:e||"DEFAULT PAUSE",channel:"openchannel"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.joinQueue=function(e){var g=c.open({animation:!0,templateUrl:"app/channels/openchannel/realtime/view/agent/queue.modal.add.html",controller:"OpenChannelRealtimeViewAgentQueueModalCtrl",resolve:{queues:function(){return _.reject(a.openchannelQueues,function(b){return!!_.find(a.gridOptions.data,{queue:b.name,isAgent:!1,agentId:e})})}}});g.result.then(function(b){return i.save({name:"QueueAdd",agent:e,queues:_.filter(a.openchannelQueues,function(a){return _.includes(b.queues,a.id)}),channel:"openchannel",data1:e,data3:b.queues.join(","),data4:"openchannel"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},function(){b.info("Modal dismissed at: "+new Date)})},a.leaveQueue=function(a,b){return i.save({name:"QueueRemove",agent:a,queueId:b,channel:"openchannel",data1:a,data3:b,data4:"openchannel"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.showInfo=function(a){c.open({animation:!0,templateUrl:"app/channels/openchannel/realtime/view/agent/agent.modal.info.html",controller:"OpenChannelRealtimeViewAgentInfoModalCtrl",resolve:{agent:a}})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.realtime.view.agents",{url:"/agents",templateUrl:"app/channels/openchannel/realtime/view/agent/agent.html",controller:"OpenChannelRealtimeViewAgentCtrl"})}]),angular.module("xCallyShuttleApp").controller("OpenChannelRealtimeViewAgentInfoModalCtrl",["$scope","$uibModalInstance","$http","agent",function(a,b,c,d){a.agent=d,a.close=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("OpenChannelRealtimeViewAgentQueueModalCtrl",["$scope","$uibModalInstance","$http","queues",function(a,b,c,d){a.queues=d,a.item={},a.save=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("OpenChannelRealtimeViewApplicationCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","ReportOpenChannelSession","usSpinnerService","$q","uiGridConstants","$timeout",function(a,b,c,d,e,f,g,h,i,j,k){function l(){return h.spin("spinner-grid"),g.get({controller:"waiting",controller2:"applications"}).$promise.then(function(b){a.gridOptions.data=b.rows})["catch"](function(a){f.error(a)})["finally"](function(){m(),h.stop("spinner-grid")})}function m(){e.socket.on("report_openchannel_session:save",function(b){var c=_.find(a.gridOptions.data,{id:b.id});c?(_.merge(c,b),b.leaveAt&&k(function(){_.remove(a.gridOptions.data,{id:b.id})},1e4)):b.leaveAt||a.gridOptions.data.push(b)}),e.socket.on("report_openchannel_session:remove",function(b){_.remove(a.gridOptions.data,{id:b.id})})}a.moment=moment,a.initApplications=function(){a.gridOptions={headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,columnDefs:[{name:"uniqueid",displayName:"APPLICATION_UNIQUEID",headerCellFilter:"translate"},{name:"accountname",displayName:"APPLICATION_ACCOUNT",headerCellFilter:"translate"},{name:"application",displayName:"APPLICATION_APPLICATION",headerCellFilter:"translate"},{name:"status",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span data-ng-if="!row.entity.leaveAt">{{\'APPLICATION_QUEUESTATUS_WAITING\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.complete">{{\'APPLICATION_QUEUESTATUS_COMPLETE\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.timeout">{{\'APPLICATION_TIMEOUT\' | translate}}</span> <span data-ng-if="!row.entity.leaveAt && grid.appScope.showTimers"><css-timer start-time="row.entity.updatedAt"></css-timer></span></div>',enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1},{name:"membername",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.membername || ''}}</span></div>"},{name:"queuename",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.queuename || ''}}</span></div>"}],data:[],gridMenuTitleFilter:function(a){var b=i.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){n(a.gridOptions.data.length)})}},l()};var n=function(a){var b=a?30*a+60:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("report_openchannel_session")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.realtime.view.applications",{url:"/applications",templateUrl:"app/channels/openchannel/realtime/view/application/application.html",controller:"OpenChannelRealtimeViewApplicationCtrl"})}]),angular.module("xCallyShuttleApp").controller("OpenChannelRealtimeViewCtrl",["$scope","$state",function(a,b){a.agents=[{name:"Queues",link:"main.channels.openchannel.realtime.view.agents.queues"},{name:"Timeline",link:"main.channels.openchannel.realtime.view.agents.timeline"}],a.sessions=[{name:"Sessions",link:"main.channels.openchannel.realtime.view.sessions"}],a.tree={queues:[{name:"Queues",link:"main.channels.openchannel.realtime.view.agents.queues"},{name:"Timeline",link:"main.channels.openchannel.realtime.view.agents.timeline"}],sessions:[{name:"Sessions",link:"main.channels.openchannel.realtime.view.sessions"}]},a.timerSwitch={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"primary"},a.showTimers=!1}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.realtime.view",{url:"/view",templateUrl:"app/channels/openchannel/realtime/view/view.html",controller:"OpenChannelRealtimeViewCtrl"})}]),angular.module("xCallyShuttleApp").factory("ReportOpenChannelSession",["$resource",function(a){return a("/api/report/openchannel/sessions/:id/:controller/:controller2",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.realtime",{url:"/realtime",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:12}}})}]),angular.module("xCallyShuttleApp").controller("RealtimeViewAgentCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","Agent","Pause","Action","usSpinnerService","$q","uiGridConstants","$timeout",function(a,b,c,d,e,f,g,h,i,j,k,l,m){function n(b){return j.spin("grid-spinner"),g.get(q).$promise.then(function(b){a.gridOptions.totalItems=b.count,a.gridOptions.data=b.rows})["catch"](function(a){f.error(a)})["finally"](function(){b&&m(function(){o()}),j.stop("grid-spinner")})}function o(){e.socket.on("agent:save",function(b){b=b.newValues||b;var c=_.find(a.gridOptions.data,{id:b.id});c&&_.merge(c,b)}),e.socket.on("agent:remove",function(b){_.remove(a.gridOptions.data,{id:b.id})})}function p(){return h.get().$promise.then(function(b){a.pauses=b.rows,e.syncUpdates("pause",a.pauses)})["catch"](function(a){f.error(a)})}var q={controller:"realtime",offset:0,limit:10};a.moment=moment,a._=_,a.initAgents=function(){a.gridOptions={enableGridMenu:!0,headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,useExternalPagination:!0,useExternalSorting:!0,useExternalFiltering:!0,showTreeExpandNoChildren:!0,columnDefs:[{name:"name",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.name}} <{{row.entity.internal}}></div>",minWidth:250},{name:"online",displayName:"APPLICATION_ONLINE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.online != null"><i class="fa" data-ng-class="{\'font-green\':row.entity.online, \'font-red\':!row.entity.online,\'fa-user\':row.entity.online,\'fa-user-times\':!row.entity.online}"></i> <i data-ng-if="row.entity.online" class="fa fa-sign-out font-red pointer-cursor" title="logout" data-ng-click="grid.appScope.agentLogout(row.entity.name,row.entity.id)"></i> <span data-ng-if="row.entity.online && grid.appScope.showTimers" class="left-margin"><css-timer start-time="row.entity.lastLoginAt"></css-timer></span></div>',filter:{type:l.filter.SELECT,selectOptions:[{value:"true",label:"ONLINE"},{value:"false",label:"OFFLINE"}]}},{name:"pauseStatus",displayName:"APPLICATION_PAUSE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span class="left-margin"><i data-ng-if="row.entity.voicePause || row.entity.mailPause || row.entity.chatPause || row.entity.faxPause || row.entity.smsPause" data-ng-click="grid.appScope.pause(row.entity,\'unpause\',null,null)" class="fa fa-play font-green pointer-cursor" title="{{\'APPLICATION_RESUME\' | translate}}"></i> <i class="fa fa-pause font-yellow pointer-cursor" data-ng-click="grid.appScope.pause(row.entity,\'pause\',\'DEFAULT PAUSE\')" title="{{\'APPLICATION_DEFAULT_PAUSE\' | translate}}"></i></span><select data-ng-if="grid.appScope.pauses.length" class="pause-select pointer-cursor" data-ng-model="grid.appScope.pauseType" data-ng-change="grid.appScope.pause(row.entity,\'pause\',grid.appScope.pauseType)"><option class="pointer-cursor" data-ng-repeat="pause in grid.appScope.pauses">{{pause.name}}</option></select><span data-ng-if="row.entity.voicePause || row.entity.mailPause || row.entity.chatPause || row.entity.faxPause || row.entity.smsPause || row.entity.openchannelPause"> [{{row.entity.pauseType}}]<span data-ng-if="grid.appScope.showTimers"><css-timer start-time="row.entity.lastPauseAt"></css-timer></span></span></div>',enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"voicePause",displayName:"APPLICATION_VOICE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.online"><span class="left-margin"><i data-ng-if="row.entity.voicePause" data-ng-click="grid.appScope.pause(row.entity,\'unpause\',null,\'voice\')" class="fa fa-play font-green pointer-cursor" title="{{\'APPLICATION_RESUME\' | translate}}"></i><span data-ng-if="row.entity.voicePause && grid.appScope._.startsWith(row.entity.pauseType,\'#\')"> * </span></span></div>',filter:{type:l.filter.SELECT,selectOptions:[{value:"true",label:d.instant("APPLICATION_PAUSED")},{value:"connect",label:d.instant("APPLICATION_NOT_PAUSED")}]},enableSorting:!1,enableColumnMenu:!1},{name:"mailPause",displayName:"APPLICATION_MAIL",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.online"><span class="left-margin"><i data-ng-if="row.entity.mailPause" data-ng-click="grid.appScope.pause(row.entity,\'unpause\',null,\'mail\')" class="fa fa-play font-green pointer-cursor" title="{{\'APPLICATION_RESUME\' | translate}}"></i></span></div>',filter:{type:l.filter.SELECT,selectOptions:[{value:"true",label:d.instant("APPLICATION_PAUSED")},{value:"connect",label:d.instant("APPLICATION_NOT_PAUSED")}]},enableSorting:!1,enableColumnMenu:!1},{name:"chatPause",displayName:"APPLICATION_CHAT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.online"><span class="left-margin"><i data-ng-if="row.entity.chatPause" data-ng-click="grid.appScope.pause(row.entity,\'unpause\',null,\'chat\')" class="fa fa-play font-green pointer-cursor" title="{{\'APPLICATION_RESUME\' | translate}}"></i></span></div>',filter:{type:l.filter.SELECT,selectOptions:[{value:"true",label:d.instant("APPLICATION_PAUSED")},{value:"connect",label:d.instant("APPLICATION_NOT_PAUSED")}]},enableSorting:!1,enableColumnMenu:!1},{name:"faxPause",displayName:"APPLICATION_FAX",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.online"><span class="left-margin"><i data-ng-if="row.entity.faxPause" data-ng-click="grid.appScope.pause(row.entity,\'unpause\',null,\'fax\')" class="fa fa-play font-green pointer-cursor" title="{{\'APPLICATION_RESUME\' | translate}}"></i></span></div>',filter:{type:l.filter.SELECT,selectOptions:[{value:"true",label:d.instant("APPLICATION_PAUSED")},{value:"connect",label:d.instant("APPLICATION_NOT_PAUSED")}]},enableSorting:!1,enableColumnMenu:!1},{name:"smsPause",displayName:"APPLICATION_SMS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.online"><span class="left-margin"><i data-ng-if="row.entity.smsPause" data-ng-click="grid.appScope.pause(row.entity,\'unpause\',null,\'sms\')" class="fa fa-play font-green pointer-cursor" title="{{\'APPLICATION_RESUME\' | translate}}"></i></span></div>',filter:{type:l.filter.SELECT,selectOptions:[{value:"true",label:d.instant("APPLICATION_PAUSED")},{value:"connect",label:d.instant("APPLICATION_NOT_PAUSED")}]},enableSorting:!1,enableColumnMenu:!1},{name:"openchannelPause",displayName:"APPLICATION_OPENCHANNEL",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.online"><span class="left-margin"><i data-ng-if="row.entity.openchannelPause" data-ng-click="grid.appScope.pause(row.entity,\'unpause\',null,\'openchannel\')" class="fa fa-play font-green pointer-cursor" title="{{\'APPLICATION_RESUME\' | translate}}"></i></span></div>',filter:{type:l.filter.SELECT,selectOptions:[{value:"true",label:d.instant("APPLICATION_PAUSED")},{value:"connect",label:d.instant("APPLICATION_NOT_PAUSED")}]},enableSorting:!1,enableColumnMenu:!1}],data:[],gridMenuTitleFilter:function(a){var b=k.defer(); +return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){r(a.gridApi.core.getVisibleRows(a.gridApi.grid).length)}),a.gridApi.core.on.sortChanged(a,function(a,b){0===b.length?q.order=null:q.order=b[0].name+" "+b[0].sort.direction.toUpperCase(),n()}),a.gridApi.pagination.on.paginationChanged(a,function(a,b){q.offset=(a-1)*b,q.limit=b,n()}),a.gridApi.core.on.filterChanged(a,function(){var a=this.grid;a.columns.forEach(function(a){a.filters[0].term?q[a.name]=a.filters[0].term:delete q[a.name]}),n()})}},n(!0),p()};var r=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("agent")}),a.pause=function(b,c,e,g){return e&&(a.pauseType=null),i.save({name:c,agent:b.id,data2:b.name,type:e||"DEFAULT PAUSE",data4:e||"DEFAULT PAUSE",channel:g||"all"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.realtime.view.agents",{url:"/agents",templateUrl:"app/channels/realtime/view/agent/agent.html",controller:"RealtimeViewAgentCtrl"})}]),angular.module("xCallyShuttleApp").controller("RealtimeViewAgentLogoutModalCtrl",["$scope","$uibModalInstance","name",function(a,b,c){a.agent=c,a.logout=function(){b.close()}}]),angular.module("xCallyShuttleApp").controller("RealtimeViewAgentQueueModalCtrl",["$scope","$uibModalInstance","$http","queues",function(a,b,c,d){a.queues=d,a.item={},a.save=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("RealtimeViewCtrl",["$scope",function(a){a.timerSwitch={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"primary"},a.showTimers=!1}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.realtime.view",{url:"/view",templateUrl:"app/channels/realtime/view/view.html",controller:"RealtimeViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}})}]),angular.module("xCallyShuttleApp").factory("ReportCall",["$resource",function(a){return a("/api/report/calls/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("ReportDial",["$resource",function(a){return a("/api/report/dials/:id/:controller/:controller2",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("SmsAccount",["$resource",function(a){return a("/api/sms/accounts/:accountId/:controller/:id",{id:"@accountId"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.accounts",{url:"/accounts",template:"<div ui-view></div>",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:42}}})}]),angular.module("xCallyShuttleApp").controller("SmsAccountListCtrl",["$scope","SmsAccount","gridOptions","$stateParams","xAlert","$translate",function(a,b,c,d,e,f){a.message="Hello",a.initView=function(){var e={exporterCsvFilename:"sms_accounts.csv",columnDefs:[{name:"id",displayName:"ID",cellClass:"text-center",width:75,enableSorting:!1,enableFiltering:!1},{name:"name"},{name:"description"},{name:"type",displayName:"APPLICATION_ACCOUNT_TYPE"},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/channels/sms/accounts/view/{{row.entity.id}}/settings",name:"profile"},{"class":"green-jungle",name:"check",onClick:"grid.appScope.checkAccount(row.entity.id)"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,e,a,{accountId:d.accountId})},a.checkAccount=function(a){return b.get({accountId:a,controller:"check"}).$promise.then(function(){e.show(f.instant("MESSAGE_ACCOUNT_VERIFIED"),"success")})["catch"](function(a){e.show(f.instant("MESSAGE_ACCOUNT_INVALID"),"danger")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.accounts.list",{url:"/list",templateUrl:"app/channels/sms/account/list/list.html",controller:"SmsAccountListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.accounts.view.actions",{url:"/actions",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").factory("SmsApplication",["$resource",function(a){return a("/api/sms/applications/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("SmsAccountViewActionListCtrl",["$scope","gridOptions","SmsAccount","$http","$translate","$stateParams","xAlert",function(a,b,c,d,e,f,g){a.initActions=function(){var d={draggable:!0,exporterCsvFilename:"sms_applications.csv",enableSorting:!1,enableFiltering:!1,columnDefs:[{name:"app",cellClass:"text-center"},{name:"name",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span>{{row.entity.app == "queue" ? row.entity.SmsQueue.name : row.entity.User.name}}</span></div>'},{name:"timeout",cellClass:"text-center"},{name:"interval",displayName:"APPLICATION_TIME_INTERVAL",cellClass:"text-center",cellTemplate:"<div><span>{{row.entity.Interval ? row.entity.Interval.name : row.entity.interval}}</span></div>"},{name:"action",width:125,buttons:[{"class":"blue-hoki",href:"/channels/sms/accounts/view/{{row.entity.SmsAccountId}}/actions/view/{{row.entity.id}}",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.app, row.entity.id)"}]}]};a.gridOptions=b.gridOptions(c,d,a,{accountId:f.accountId,controller:"applications"})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.accounts.view.actions.list",{url:"/list",templateUrl:"app/channels/sms/account/view/action/list/list.html",controller:"SmsAccountViewActionListCtrl"})}]),angular.module("xCallyShuttleApp").controller("SmsAccountViewActionViewCtrl",["$scope","$http","$stateParams","$translate","$location","xAlert","WizardHandler","socket","application","interval","Agent","Interval","SmsQueue","SmsAccount","Template","MailAccount","SmsApplication",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initAction=function(){return a.$application=i.application,a.$stateParams=c,a.$interval=j.interval,a.forms={},a.apps=[{name:"Queue",value:"queue"},{name:"Agent",value:"agent"},{name:"SendMail",value:"sendMail"},{name:"SendSMS",value:"sendSms"}],q.get({id:c.actionId}).$promise.then(function(b){if(a.application=b,a.application.alwaysTime=!1,a.application.IntervalId)a.application.intType="list";else switch(a.application.interval){case"*,*,*,*":a.application.intType="always";break;default:a.application.intType="custom"}if("always"===a.application.intType||"custom"===a.application.intType){var c=a.application.interval.split(",");"*"===c[0]?a.application.alwaysTime=!0:(a.application.t_from=moment(new Date),a.application.t_to=moment(new Date),a.application.t_from.hour(c[0].split("-")[0].split(":")[0]),a.application.t_from.minute(c[0].split("-")[0].split(":")[1]),a.application.t_to.hour(c[0].split("-")[1].split(":")[0]),a.application.t_to.minute(c[0].split("-")[1].split(":")[1])),"*"===c[1]?(a.application.wd_from="always",a.application.wd_to="always"):(a.application.wd_from=c[1].split("-")[0],a.application.wd_to=c[1].split("-")[1]),"*"===c[2]?(a.application.md_from="always",a.application.md_to="always"):(a.application.md_from=c[2].split("-")[0],a.application.md_to=c[2].split("-")[1]),"*"===c[3]?(a.application.m_from="always",a.application.m_to="always"):(a.application.m_from=c[3].split("-")[0],a.application.m_to=c[3].split("-")[1])}a.$watch("application.t_from",function(b){a.application.t_from_hm=moment(b).format("HH:mm")}),a.$watch("application.t_to",function(b){a.application.t_to_hm=moment(b).format("HH:mm")})})["catch"](function(a){f.error(a)})},a.getQueues=function(){return m.get().$promise.then(function(b){a.queues=b.rows})["catch"](function(a){console.error(a)})},a.getAgents=function(){return k.get().$promise.then(function(b){a.agents=b.rows})["catch"](function(a){console.error(a)})},a.getIntervals=function(){return l.get().$promise.then(function(b){a.intervals=b.rows})["catch"](function(a){console.error(a)})},a.getTemplates=function(){return o.get().$promise.then(function(b){a.templates=b.rows})["catch"](function(a){console.error(a)})},a.getMailAccounts=function(){return p.get().$promise.then(function(b){a.mailAccounts=b.rows})["catch"](function(a){console.error(a)})},a.getSmsAccounts=function(){return n.get().$promise.then(function(b){a.smsAccounts=b.rows})["catch"](function(a){console.error(a)})},a.updateItem=function(){switch(a.application.intType){case"always":a.application.interval="*,*,*,*",a.application.IntervalId=null;break;case"list":var b=_.find(a.intervals,{id:a.application.IntervalId});a.application.interval=b?"":"*,*,*,*",a.application.IntervalId=b?a.application.IntervalId:null;break;case"custom":var g,h,i,j,k;g=a.application.t_from&&a.application.t_to&&!a.application.alwaysTime?moment(a.application.t_from).format("HH:mm")+"-"+moment(a.application.t_to).format("HH:mm"):"*",a.application.wd_from&&"always"!==a.application.wd_from?(h=a.application.wd_from,a.application.wd_to&&"always"!==a.application.wd_to&&(h+="-"+a.application.wd_to)):h="*",a.application.md_from&&"always"!==a.application.md_from?(i=a.application.md_from,a.application.md_to&&"always"!==a.application.md_to&&(i+="-"+a.application.md_to)):i="*",a.application.m_from&&"always"!==a.application.m_from?(j=a.application.m_from,a.application.m_to&&"always"!==a.application.m_to&&(j+="-"+a.application.m_to)):j="*",k=g+","+h+","+i+","+j,a.application.interval=k,a.application.IntervalId=null}return n.update({accountId:c.accountId,controller:"applications",id:c.actionId},a.application).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success"),e.path("/channels/sms/accounts/view/"+c.accountId+"/actions/list")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.accounts.view.actions.view",{url:"/view/:actionId",templateUrl:"app/channels/sms/account/view/action/view/view.html",controller:"SmsAccountViewActionViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("SmsAccountViewActionWizardCtrl",["$scope","$http","Agent","SmsQueue","Interval","$stateParams","$translate","$location","xAlert","WizardHandler","socket","application","interval","SmsAccount","Template","MailAccount",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initWizard=function(){a.apps=[{name:"Queue",value:"queue"},{name:"Agent",value:"agent"},{name:"SendMail",value:"sendMail"},{name:"SendSMS",value:"sendSms"}],a.$application=l.application,a.$stateParams=f,a.$interval=m.interval,a.forms={},a.application={alwaysTime:!0},a.$watch("application.t_from",function(b){a.application.t_from_hm=moment(b).format("HH:mm")}),a.$watch("application.t_to",function(b){a.application.t_to_hm=moment(b).format("HH:mm")})},a.getQueues=function(){return d.get().$promise.then(function(b){console.log(b),a.queues=b.rows})["catch"](function(a){console.error(a)})},a.getAgents=function(){return c.get().$promise.then(function(b){a.agents=b.rows})["catch"](function(a){console.error(a)})},a.getIntervals=function(){return e.get().$promise.then(function(b){a.intervals=b.rows})["catch"](function(a){console.error(a)})},a.getTemplates=function(){return o.get().$promise.then(function(b){a.templates=b.rows})["catch"](function(a){console.error(a)})},a.getMailAccounts=function(){return p.get().$promise.then(function(b){a.mailAccounts=b.rows})["catch"](function(a){console.error(a)})},a.getSmsAccounts=function(){return n.get().$promise.then(function(b){a.smsAccounts=b.rows})["catch"](function(a){console.error(a)})},a.createItem=function(){switch(a.application.intType){case"always":a.application.interval="*,*,*,*",a.application.IntervalId=null;break;case"list":var b=_.find(a.intervals,{id:a.application.IntervalId});a.application.interval=b?"":"*,*,*,*",a.application.IntervalId=b?a.application.IntervalId:null;break;case"custom":var c,d,e,j,k;c=a.application.t_from&&a.application.t_to&&!a.application.alwaysTime?moment(a.application.t_from).format("HH:mm")+"-"+moment(a.application.t_to).format("HH:mm"):"*",a.application.wd_from&&"always"!==a.application.wd_from?(d=a.application.wd_from,a.application.wd_to&&"always"!==a.application.wd_to&&(d+="-"+a.application.wd_to)):d="*",a.application.md_from&&"always"!==a.application.md_from?(e=a.application.md_from,a.application.md_to&&"always"!==a.application.md_to&&(e+="-"+a.application.md_to)):e="*",a.application.m_from&&"always"!==a.application.m_from?(j=a.application.m_from,a.application.m_to&&"always"!==a.application.m_to&&(j+="-"+a.application.m_to)):j="*",k=c+","+d+","+e+","+j,a.application.interval=k,a.application.IntervalId=null}return n.save({accountId:f.accountId,controller:"applications"},a.application).$promise.then(function(){i.show(g.instant("MESSAGE_WELL_DONE"),"success"),h.path("/channels/sms/accounts/view/"+f.accountId+"/actions/list")})["catch"](function(a){i.error(a)})},a.formValidation=function(a){return a},a.next=function(){j.wizard().next()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.accounts.view.actions.wizard",{url:"/wizard",templateUrl:"app/channels/sms/account/view/action/wizard/wizard.html",controller:"SmsAccountViewActionWizardCtrl"})}]),angular.module("xCallyShuttleApp").controller("SmsAccountApiViewCtrl",["$scope","SmsAccount","$http","$stateParams","clipboard","$translate","$location","xAlert",function(a,b,c,d,e,f,g,h){a.copyToClipboard=function(a){e.copyText(a),h.show(f.instant("MESSAGE_TEXT_COPIED_CLIPBOARD")+"!","success")},a.initView=function(){b.get({id:d.accountId}).$promise.then(function(b){a.account=b,a.deliveryurl=a.account.remote+"/api/sms/accounts/"+a.account.id+"/messageStatus",a.receiveurl=a.account.remote+"/api/sms/accounts/"+a.account.id+"/receive"})["catch"](function(a){h.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.accounts.view.api",{url:"/api",controller:"SmsAccountApiViewCtrl",templateUrl:"app/channels/sms/account/view/api/view/view.html"})}]),angular.module("xCallyShuttleApp").factory("SmsDisposition",["$resource",function(a){return a("/api/sms/dispositions/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("SmsInboxViewModaDispositionAddCtrl",["$scope","$uibModalInstance","SmsAccount","id",function(a,b,c,d){a.ok=function(){return c.save({accountId:d,controller:"dispositions"},{name:a.name}).$promise.then(function(a){b.close(a)})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("SmsAccountDispositionViewCtrl",["$scope","$stateParams","$uibModal","$translate","SmsAccount","xAlert",function(a,b,c,d,e,f){a.initView=function(){return e.get({accountId:b.accountId,controller:"dispositions"}).$promise.then(function(b){a.dispositions=b.rows})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.updateDisposition=function(a,c){return e.update({accountId:b.accountId,controller:"dispositions",id:a},{name:c}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.deleteDisposition=function(c){return console.log("delete"),e.remove({accountId:b.accountId,controller:"dispositions",id:c}).$promise.then(function(){_.remove(a.dispositions,{id:c})})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.addDisposition=function(){return c.open({animation:!0,templateUrl:"app/channels/sms/account/view/disposition/modal/add.modal.html",controller:"SmsInboxViewModaDispositionAddCtrl",resolve:{id:function(){return b.accountId}}}).result.then(function(b){b&&a.dispositions.push(b)})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.accounts.view.dispositions",{url:"/dispositions",controller:"SmsAccountDispositionViewCtrl",templateUrl:"app/channels/sms/account/view/disposition/view/view.html"})}]),angular.module("xCallyShuttleApp").controller("SmsAccountHooksViewCtrl",["$scope","SmsAccount","Pause","$http","$stateParams","clipboard","$translate","$location","xAlert",function(a,b,c,d,e,f,g,h,i){a.account={},a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.CONST_TIMEOUT=3e4,a.initView=function(){a.types=[{value:"",name:"-- None --"},{name:"HTTP GET",value:"GET"},{name:"HTTP POST",value:"POST"}],c.get().$promise.then(function(b){a.pauses=b.rows})["catch"](function(a){i.error(a)}),b.get({id:e.accountId}).$promise.then(function(b){a.account=b,a.account.actions.length<1&&a.account.actions.push({action:"pause",enabled:!1,type:null})})["catch"](function(a){i.error(a)})},a.resetActionData=function(a){a.type=null},a.updateItemSmsAccount=function(){return console.log(a.account),b.update({id:e.accountId},a.account).$promise.then(function(){i.show(g.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){i.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.accounts.view.hooks",{url:"/hooks",controller:"SmsAccountHooksViewCtrl",templateUrl:"app/channels/sms/account/view/hooks/view/view.html"})}]),angular.module("xCallyShuttleApp").controller("SmsAccountSettingViewCtrl",["$scope","SmsAccount","Pause","$http","$stateParams","clipboard","$translate","$location","xAlert","List",function(a,b,c,d,e,f,g,h,i,j){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.CONST_TIMEOUT=3e4,a.types=[{name:"HTTP GET",value:"GET"},{name:"HTTP POST",value:"POST"}],a.account={},a.initView=function(){j.get().$promise.then(function(b){a.lists=b.rows})["catch"](function(a){console.error(a)}),b.get({id:e.accountId}).$promise.then(function(b){a.account=b})["catch"](function(a){i.error(a)})},a.updateItemSmsAccount=function(){return b.update({id:e.accountId},a.account).$promise.then(function(){i.show(g.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){i.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.accounts.view.settings",{url:"/settings",controller:"SmsAccountSettingViewCtrl",templateUrl:"app/channels/sms/account/view/setting/view/view.html"})}]),angular.module("xCallyShuttleApp").controller("SmsAccountViewCtrl",["$scope","SmsAccount","$http","$stateParams","clipboard","$translate","$location","xAlert","List",function(a,b,c,d,e,f,g,h,i){a.initView=function(){return a.account={},b.get({id:d.accountId}).$promise.then(function(b){a.account=b,console.log(b)})["catch"](function(a){h.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.accounts.view",{url:"/view/:accountId",templateUrl:"app/channels/sms/account/view/view.html",controller:"SmsAccountViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]})}]}})}]),angular.module("xCallyShuttleApp").controller("SmsAccountWizardCtrl",["$scope","$http","$location","$translate","WizardHandler","xAlert","SmsAccount",function(a,b,c,d,e,f,g){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initWizard=function(){a.forms={},a.item={},a.item.remote=c.protocol()+"://"+location.host},a.goNext=function(){e.wizard().next()},a.formValidation=function(a){return a},a.createItem=function(){return console.log(a.item),g.save(a.item).$promise.then(function(){c.path("/channels/sms/accounts/list")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.accounts.wizard",{url:"/wizard",templateUrl:"app/channels/sms/account/wizard/wizard.html",controller:"SmsAccountWizardCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.inbox",{url:"/inbox",template:"<div ui-view></div>",data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:44}}})}]),angular.module("xCallyShuttleApp").directive("smsRoom",["$cookieStore","$translate","$uibModal","$timeout","Tag","CannedAnswer","Auth","SmsAccount","SmsRoom","SmsMessage","xAlert","usSpinnerService","socket","$stateParams","$rootScope",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){return{restrict:"E",scope:{workspace:"=",index:"=",submit:"&onSubmit"},templateUrl:"app/channels/sms/inbox/room/room.directive.html",link:function(a){a.modelOptions={debounce:{"default":500,blur:250},getterSetter:!0},a.panelLeft=null,a.panelRight="col-md-12",a.togglePanelLeft=function(){a.panelLeft?(a.panelLeft=null,a.panelRight="col-md-12"):(a.panelLeft="col-md-6",a.panelRight="col-md-6")},a.form={disabled:!1,from:"",to:a.workspace.data&&a.workspace.data.to?a.workspace.data.to:"",body:""},m.socket.on("sms_message:save",function(b){return a.workspace.id&&b.SmsRoomId==a.workspace.id?j.get({id:b.id}).$promise.then(function(b){a.SmsRoom||(a.SmsRoom={SmsMessages:[]});var c=_.findIndex(a.SmsRoom.SmsMessages,{id:b.id});c>-1?_.merge(a.SmsRoom.SmsMessages[c],b):a.SmsRoom.SmsMessages.unshift(b),a.panelLeft="col-md-6",a.panelRight="col-md-6"})["catch"](function(a){console.error(a)}):void 0}),m.socket.on("sms_message:update",function(b){if(a.SmsRoom&&b.SmsRoomId==a.workspace.id){var c=_.find(a.SmsRoom.SmsMessages,{id:b.id});c&&_.merge(c,b)}}),m.socket.on("sms_room:save",function(b){a.SmsRoom&&b.id==a.workspace.id&&(a.SmsRoom.status=b.status,a.SmsRoom.disposition=b.disposition)}),a.closeRoom=function(b){return c.open({animation:!0,templateUrl:"app/channels/sms/inbox/view/view.status.modal.html",controller:"SmsInboxViewModalStatusCtrl",resolve:{closed:function(){return"CLOSED"===a.SmsRoom.status},accountId:function(){return a.SmsRoom.SmsAccountId}}}).result.then(function(a){var c={id:b,status:"CLOSED"};return a.disposition&&(c.disposition=a.disposition),i.update(c).$promise["catch"](function(a){k.error(a)})})},a.openRoom=function(a,b){var c=_.find(o.workspaces,{id:a,type:"smsRoom"});c?c.active=!0:o.workspaces.push({id:a,name:b,type:"smsRoom","class":"glyphicon glyphicon-comment",active:!0})},e.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a)}),h.get().$promise.then(function(b){a.smsAccounts=b.rows})["catch"](function(a){console.error(a)}),a.workspace.id?(a.panelLeft="col-md-6",a.panelRight="col-md-6",i.get({id:a.workspace.id}).$promise.then(function(b){a.SmsRoom=b,a.form.from=a.SmsRoom.SmsAccount.phone,a.form.to=a.SmsRoom.contact,a.form.tags=a.SmsRoom.tags})["catch"](function(a){console.error(a)})["finally"](function(){l.stop("spinner-grid"),a.form.disabled=!1})):l.stop("spinner-grid"),a.onSelect=function(){a.form.body+=a.modelOptions.selectedAnswer,delete a.modelOptions.selectedAnswer},a.onSelectAnswer=function(b){a.form.body+=b,a.selectedAnswer=""},a.getAnswers=function(a){return f.get({key:a}).$promise.then(function(a){return _.map(a.rows,"value")})},a.onChanged=function(){return i.patch({id:a.workspace.id},{tags:a.form.tags}).$promise["catch"](function(a){console.error(a)})},a.sendSMS=function(){l.spin("spinner-grid");var c=_.find(a.smsAccounts,{phone:a.form.from}),d={body:a.form.body,SmsRoomId:a.SmsRoom?a.SmsRoom.id:null};return"twilio"===c.type?(d.from=/^[\+][0-9]+$/.test(a.form.from)?a.form.from:"+"+a.form.from,d.to=/^[\+][0-9]+$/.test(a.form.to)?a.form.to:"+"+a.form.to):(d.from=/^[\+][0-9]+$/.test(a.form.from)?a.form.from.replace("+",""):a.form.from,d.to=/^[\+][0-9]+$/.test(a.form.to)?a.form.to.replace("+",""):a.form.to),c?h.save({accountId:c.id,controller:"send"},d).$promise.then(function(c){return k.show(b.instant("MESSAGE_WELL_DONE"),"success"),a.SmsRoom?a.SmsRoom:i.get({id:"messages",controller:c.id}).$promise}).then(function(b){b&&(a.form.body="",a.workspace.id=b.id,a.workspace.name=b.contact,a.SmsRoom=b,a.panelLeft="col-md-6",a.panelRight="col-md-6")})["catch"](function(a){k.error(a)})["finally"](function(){l.stop("spinner-grid")}):void console.log("Can not find account")}}}}]),angular.module("xCallyShuttleApp").controller("SmsInboxInfoModalCtrl",["$scope","$translate","$uibModalInstance","$stateParams","xAlert","data","uniqueId","ReportSquare",function(a,b,c,d,e,f,g,h){a.data=null,a.initInfo=function(){f&&(a.data=_.isEmpty(JSON.parse(f))?null:JSON.parse(f)),g&&h.get({controller:"show",uniqueid:g}).$promise.then(function(b){a.data={id:b.id,channel:b.channel,uniqueid:b.uniqueid,callerid:b.callerid,calleridname:b.calleridname,project_name:b.project_name,extension:b.extension}})["catch"](function(b){switch(b.status){case 404:a.data=null;break;default:e.error(b)}})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").directive("sms",["$rootScope","SmsMessage","List","xAlert","$translate","$uibModal",function(a,b,c,d,e,f){return{restrict:"E",scope:{smsMessage:"=message",accounttype:"=accounttype",listId:"="},templateUrl:"app/channels/sms/inbox/sms/sms.html",link:function(b){b.openContact=function(f){return b.listId?c.save({listId:b.listId,controller:"contacts"},{mobile:f}).$promise.then(function(b){var c=_.find(a.$root.workspaces,{contactID:b.id});c?c.active=!0:a.$root.workspaces.push({active:!0,"class":"icon-user",contactID:b.id,name:b.phone,type:"contact"})})["catch"](function(a){console.error(a)}):void d.show(e.instant("MESSAGE_NO_LIST_CONFIGURED"),"info")},b.info=function(a,b){f.open({animation:!0,templateUrl:"app/channels/sms/inbox/sms/info.modal.html",controller:"SmsInboxInfoModalCtrl",resolve:{data:function(){return b},uniqueId:function(){return a}}})}}}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.inbox.view.account",{url:"/account/:id",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:11}}})}]),angular.module("xCallyShuttleApp").controller("SmsInboxViewAccountListCtrl",["$scope","$rootScope","$uibModal","$translate","$stateParams","$state","Tag","usSpinnerService","socket","SmsAccount","SmsRoom","gridOptions","uiGridConstants","Auth","Modal","xAlert","uibButtonConfig","localStorageService",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){a.initView=function(){q.activeClass="green-haze",a.id=[],a.isAdmin=n.isAdmin(),a.isAgent=n.isAgent(),a.uncheckable=!1,a.query={status:r.get("smsStatus")?r.get("smsStatus"):"NEW",tags:r.get("smsTags")?r.get("smsTags"):[]},a.$watch("query.status",function(b,c){b!==c&&(r.set("smsStatus",a.query.status),a.getPage())},!0),g.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a)}),a.gridOptions={exporterCsvFilename:"sms_rooms.csv",enableRowHeaderSelection:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,enableFiltering:!0,enableSorting:!0,enableGridMenu:!1,flatEntityAccess:!0,showGridFooter:!0,fastWatch:!0,enableSelectAll:!0,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,columnDefs:[{name:"lastEvent",displayName:"",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div> <span data-ng-class=\"{'icon-arrow-up font-green': row.entity.lastEvent === 'SENT', 'icon-arrow-up font-yellow': row.entity.lastEvent === 'SENDING', 'icon-arrow-down font-green': row.entity.lastEvent === 'RECEIVED', 'icon-close font-red': row.entity.lastEvent === 'FAILED', 'icon-question': !row.entity.lastEvent}\"> </span> </div>",width:30,enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"tags",displayName:"",headerCellTemplate:'<i class="icon-tag" style="margin-top: 8px; margin-left: 8px;"></i>',cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><i data-ng-class=\"row.entity.tags.length ? 'icon-tag' : ''\" title=\"{{row.entity.tags}}\"></i></div>",width:30,enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"id",displayName:"Id",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><span>#{{row.entity.id}}</span></div>",width:75,enableSorting:!1,enableFiltering:!0,enableColumnMenu:!1},{name:"contact",cellClass:"text-center"},{name:"disposition",cellClass:"text-center"},{name:"createdAt",cellFilter:"date:'dd/MM/yyyy HH:mm'",width:120,enableFiltering:!1},{name:"updatedAt",cellFilter:"date:'dd/MM/yyyy HH:mm'",width:120,enableFiltering:!1,sort:{direction:m.DESC}},{name:"action",cellTemplate:'<div> <a class="btn btn-icon-only font-green" data-ng-click="grid.appScope.openRoom(row.entity.id, row.entity.contact)"><i class="glyphicon glyphicon-comment" aria-hidden="true"></i></a> <a class="btn btn-icon-only font-red" data-ng-show="grid.appScope.isAdmin" data-ng-click="grid.appScope.deleteItem(row.entity.id,row.entity.id)"><i class="fa fa-trash" aria-hidden="true"></i> </div>',enableSorting:!1,cellClass:"ui-grid-vcenter",width:90,enableFiltering:!1,enableColumnMenu:!1}],data:[],onRegisterApi:function(b){a.gridApi=b,a.gridApi.selection&&(a.gridApi.selection.on.rowSelectionChanged(a,function(b){b.isSelected?a.id.push(a.gridApi.grid.options.primaryKey?b.entity[a.gridApi.grid.options.primaryKey]:b.entity.id):_.pull(a.id,a.gridApi.grid.options.primaryKey?b.entity[a.gridApi.grid.options.primaryKey]:b.entity.id)}),a.gridApi.selection.on.rowSelectionChangedBatch(a,function(b){b[0].isSelected?a.id=_.union(a.id,_.map(b,a.gridApi.grid.options.primaryKey?"entity."+a.gridApi.grid.options.primaryKey:"entity.id")):_.map(b,a.gridApi.grid.options.primaryKey?"entity."+a.gridApi.grid.options.primaryKey:"entity.id").forEach(function(b){_.pull(a.id,b)})}))}},i.socket.on("sms_room:remove",function(b){_.remove(a.workspaces,{id:b.id,type:"smsRoom"}),_.remove(a.gridOptions.data,{id:b.id})}),a.getPage(a.query)},a.onChanged=function(){a.getPage(a.query)},a.tagItems=function(){return c.open({animation:!0,templateUrl:"app/channels/sms/inbox/view/view.tags.modal.html",controller:"SmsInboxViewModalTagCtrl",resolve:{id:function(){return a.id}}}).result.then(function(){a.gridApi.selection.clearSelectedRows(),a.id=[],a.getPage()})},a.disposeItems=function(){return c.open({animation:!0,templateUrl:"app/channels/sms/inbox/view/view.status.modal.html",controller:"SmsInboxViewModalStatusCtrl",resolve:{accountId:function(){return e.id}}}).result.then(function(b){return console.log(b,a.id),k.patch({id:a.id},b).$promise.then(function(){a.gridApi.selection.clearSelectedRows(),a.id=[]})["catch"](function(a){p.error(a)})})},a.openRoom=function(b,c){var d=_.find(a.workspaces,{id:b,type:"smsRoom"});return d?d.active=!0:a.workspaces.push({id:b,name:c,type:"smsRoom","class":"glyphicon glyphicon-comment",active:!0}),b&&"agent"===n.getCurrentUser().role&&"PENDING"!==a.query.status&&"CLOSED"!==a.query.status?k.patch({id:b},{status:"OPEN",openReason:"agent"}).$promise["catch"](function(a){ +console.error(a)}):void 0},a.getPage=function(b){h.spin("spinner-grid");var c={accountId:e.id,controller:"rooms"};return b&&_.merge(c,b),a.query&&_.merge(c,a.query),j.query(c).$promise.then(function(b){r.set("smsAccountId",e.id),a.gridOptions.data=b,i.socket.on("sms_room:save",function(b){if(console.log("data",b),console.log(b.SmsAccountId,e.id),b.SmsAccountId==e.id){var c=_.find(a.gridOptions.data,{id:b.id});c?c.status!==b.status?_.remove(a.gridOptions.data,{id:b.id}):_.merge(c,b):a.query.status===b.status&&a.gridOptions.data.push(b)}}),i.socket.on("sms_room:remove",function(b){_.remove(a.gridOptions.data,{id:b.id})})})["catch"](function(a){p.error(a)})["finally"](function(){h.stop("spinner-grid")})},a.deleteItem=o.confirm["delete"](function(b){var c={id:b};return console.log(c),k["delete"](c).$promise.then(function(){a.getPage(),p.show(d.instant("MESSAGE_WELL_DONE")+"!","success"),a.gridApi.selection.clearSelectedRows(),a.id=[]})["catch"](function(a){p.error(a)})}),a.deleteItems=o.confirm["delete"](function(){var b={ids:a.id};return k["delete"](b).$promise.then(function(){a.getPage(),p.show(d.instant("MESSAGE_WELL_DONE")+"!","success"),a.gridApi.selection.clearSelectedRows(),a.id=[]})["catch"](function(a){p.error(a)})})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.inbox.view.account.list",{url:"/list",templateUrl:"app/channels/sms/inbox/view/account/list/list.html",controller:"SmsInboxViewAccountListCtrl",data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:11}}})}]),angular.module("xCallyShuttleApp").controller("SmsInboxViewModalAgentCtrl",["$scope","$uibModalInstance","$translate","$stateParams","Agent","SmsRoom","xAlert","roomId",function(a,b,c,d,e,f,g,h){a.initModal=function(){a.agents=[],a.item={agents:[]},e.get().$promise.then(function(b){b.rows.forEach(function(b){a.agents.push(b)})})["catch"](function(a){console.error(a)}),f.query({id:h,controller:"agents"}).$promise.then(function(b){b.forEach(function(b){a.agents.push(b),a.item.agents.push(b.id)})})["catch"](function(a){console.error(a)}),a.modal={dismissable:!0,title:"APPLICATION_MESSAGE_SEND_RETRY",text:"MESSAGE_MESSAGE_SEND_RETRY",buttons:[{classes:"btn btn-success",text:"APPLICATION_RETRY",click:function(a){b.close(a)}},{classes:"btn default",text:"APPLICATION_CANCEL",click:function(a){b.dismiss(a)}}]}},a.ok=function(){return f.update({id:h,controller:"agents",agents:a.item.agents}).$promise.then(function(){g.show(c.instant("MESSAGE_WELL_DONE"),"success"),b.close()})["catch"](function(a){console.error(a)})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("SmsInboxViewCtrl",["$scope","$location","$stateParams","$translate","$uibModal","socket","Auth","xAlert","SmsRoom","SmsAccount","localStorageService",function(a,b,c,d,e,f,g,h,i,j,k){a.initView=function(){return j.get().$promise.then(function(c){var d=null;if(a.smsAccounts=c.rows,a.smsAccounts.length){var e,f=k.get("smsAccountId");e=f&&_.find(a.smsAccounts,{id:Number(f)})?f:a.smsAccounts[0].id,d="/channels/sms/inbox/view/account/"+e+"/list"}d&&b.path(d)})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.inbox.view",{url:"/view",templateUrl:"app/channels/sms/inbox/view/view.html",controller:"SmsInboxViewCtrl",reload:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/inbox.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("SmsInboxViewModalStatusCtrl",["$scope","$uibModalInstance","SmsAccount","accountId",function(a,b,c,d){a.modal={title:"APPLICATION_CONFIRM_CLOSE",text:"MESSAGE_ARE_YOU_SURE_YOU_WANT_TO_CLOSE_THE_SMS"},a.initDisposition=function(){return a.item={status:"CLOSED"},c.get({accountId:d,controller:"dispositions"}).$promise.then(function(b){a.dispositions=b.rows})["catch"](function(a){console.error(a)})},a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss()}}]),angular.module("xCallyShuttleApp").controller("SmsInboxViewModalTagCtrl",["$scope","$uibModalInstance","$translate","$stateParams","Tag","SmsRoom","xAlert","id",function(a,b,c,d,e,f,g,h){console.log(h),a.initModal=function(){return a.tags=[],a.item={tags:[]},a.modal={dismissable:!0,title:"APPLICATION_MESSAGE_SEND_RETRY",text:"MESSAGE_MESSAGE_SEND_RETRY",buttons:[{"class":"btn-success",text:"APPLICATION_TAG",click:function(){var d={status:!0};return f.patch({id:h},{tags:a.item.tags}).$promise.then(function(){g.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(){d.status=!1,g.show(c.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})["finally"](function(){b.close(d)})}},{"class":"default",text:"APPLICATION_CANCEL",click:function(a){b.dismiss(a)}}]},e.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").controller("SmsInboxViewModalTemplateCtrl",["$scope","$uibModalInstance","Template",function(a,b,c){a.initModal=function(){return a.item={},c.get().$promise.then(function(b){a.templates=b.rows})["catch"](function(a){console.error(a)})},a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("SmsQueueListCtrl",["$scope","SmsQueue","gridOptions","$uibModal","xAlert","Auth",function(a,b,c,d,e,f){a.initView=function(){a.Auth=f;var d={exporterCsvFilename:"voice_queues.csv",columnDefs:[{name:"name"},{name:"description"},{name:"timeout"},{name:"strategy"},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/channels/sms/queues/view/{{row.entity.id}}/settings",name:"settings"},{"class":"green-meadow",href:"/channels/sms/queues/view/{{row.entity.id}}/agents",name:"agents",hide:"user"===f.getCurrentUser().role},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.createItem=function(){var b=d.open({animation:!0,templateUrl:"app/channels/sms/queue/list/list.create.modal.html",controller:"SmsQueueListCreateCtrl",size:"lg"});b.result.then(function(b){console.log(b),a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("SmsQueueListCreateCtrl",["$scope","$uibModalInstance","$translate","xAlert","SmsQueue","Team","strategies",function(a,b,c,d,e,f,g){a.form={},a.strategies=g,a.item={penalty:0,agents:[]},a.getTeams=function(){return f.get({controller:"associations"}).$promise.then(function(b){a.teams=b.rows}).then(function(){ComponentsDropdowns.bindQueue(a.teams,[],function(){return{select:function(b){a.item.agents=_.union(a.item.agents,b)},deselect:function(b){a.item.agents=_.difference(a.item.agents,b)}}})})["catch"](function(a){console.error(a)})},a.save=function(){return console.log(a.item),e.save(a.item).$promise.then(function(a){b.close(a)})["catch"](function(a){d.error(a)})},a.cancel=function(){b.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.queues.list",{url:"/list",templateUrl:"app/channels/sms/queue/list/list.html",controller:"SmsQueueListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}})}]),angular.module("xCallyShuttleApp").factory("SmsQueue",["$resource",function(a){return a("/api/sms/queues/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.queues",{url:"/queues",template:"<div ui-view></div>",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:43}}})}]),angular.module("xCallyShuttleApp").controller("SmsQueueViewCtrl",["$scope","$http","Auth","$translate","$stateParams","xAlert","Team","SmsQueue","strategies",function(a,b,c,d,e,f,g,h,i){a.strategies=i,a.Auth=c;var j=function(){return{select:function(b){return h.save({id:a.queue.id,controller:"agents"},{agents:b,penalty:a.queue.penalty}).$promise.then(function(b){console.log("sel",b),a.getTeams()})["catch"](function(a){console.error(a)})},deselect:function(b){return h["delete"]({id:a.queue.id,controller:"agents",agents:b}).$promise.then(function(b){console.log("desel",b),a.getTeams()})["catch"](function(a){console.error(a)})}}};a.getQueue=function(){return h.get({id:e.id}).$promise.then(function(b){b.penalty=0,a.queue=b})["catch"](function(a){console.error(a)})},a.updateSmsQueue=function(){return h.update({id:e.id},{name:a.queue.name,description:a.queue.description,timeout:a.queue.timeout,strategy:a.queue.strategy}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.getTeams=function(){return g.get({controller:"associations"}).$promise.then(function(b){return a.teams=b.rows,console.log(b.rows),h.get({id:e.id,controller:"agents"}).$promise}).then(function(b){console.log(b),ComponentsDropdowns.bindSmsQueue(a.teams,_.map(b.rows,function(a){return{id:a.id,penalty:a.UserHasSmsQueue.penalty}}),j)})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.queues.view",{url:"/view/:id",templateUrl:"app/channels/sms/queue/view/view.html",controller:"SmsQueueViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.sms.queues.view.settings",{url:"/settings",templateUrl:"app/channels/sms/queue/view/view.settings.html"}).state("main.channels.sms.queues.view.agents",{url:"/agents",templateUrl:"app/channels/sms/queue/view/view.agents.html",cache:!1,serie:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.realtime",{url:"/realtime",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:45}}})}]),angular.module("xCallyShuttleApp").controller("SmsRealtimeViewAgentCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","Agent","Pause","Action","SmsQueue","usSpinnerService","$q","uiGridConstants","$timeout",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){function o(){return k.spin("grid-spinner"),g.get(t).$promise.then(function(b){a.gridOptions.totalItems=b.count,a.gridOptions.data=[],b.rows.forEach(function(a){q(a)})})["catch"](function(a){f.error(a)})["finally"](function(){k.stop("grid-spinner")})}function p(){e.socket.on("agent:save",function(b){b=b.newValues||b;var c=_.find(a.gridOptions.data,{agentId:b.id,isAgent:!0});c&&(c.online=_.has(b,"online")?b.online:c.online,c.lastLoginAt=_.has(b,"lastLoginAt")?b.lastLoginAt:c.lastLoginAt,c.pause=_.has(b,"smsPause")?b.smsPause:c.smsPause,c.pauseType=_.has(b,"pauseType")?b.pauseType:c.pauseType,c.lastPauseAt=_.has(b,"lastPauseAt")?b.lastPauseAt:c.lastPauseAt,c.ipaddr=_.has(b,"ipaddr")?b.ipaddr:c.ipaddr,c.port=_.has(b,"port")?b.port:c.port,c.fullcontact=_.has(b,"fullcontact")?b.fullcontact:c.fullcontact,c.useragent=_.has(b,"useragent")?b.useragent:c.useragent,c.lastms=_.has(b,"lastms")?b.lastms:c.lastms,c.internal=_.has(b,"internal")?b.internal:c.internal,_.map(a.gridOptions.data,function(a){a.isAgent||a.agentId!==b.id||(a.online=_.has(b,"online")?b.online:a.online)}))}),e.socket.on("agent:remove",function(b){_.remove(a.gridOptions.data,{agentId:b.id})}),e.socket.on("user_has_sms_queue:save",function(b){console.log("new queue",b);var c=_.find(a.gridOptions.data,{agentId:b.UserId,isAgent:!0}),d=a.gridOptions.data.indexOf(c);a.gridOptions.data.splice(d+1,0,{isAgent:!1,agentId:b.UserId,queue:b.queue,queueId:b.SmsQueueId,agent:b.membername,online:c.online})}),e.socket.on("user_has_sms_queue:remove",function(b){_.remove(a.gridOptions.data,{agentId:b.UserId,queueId:b.SmsQueueId})})}function q(b){a.gridOptions.data.push({isAgent:!0,agentId:b.id,agent:b.name,online:b.online,lastLoginAt:b.lastLoginAt,lastPauseAt:b.lastPauseAt,pause:b.smsPause,pauseType:b.pauseType,ipaddr:b.ipaddr,port:b.port,fullcontact:b.fullcontact,useragent:b.useragent,lastms:b.lastms,internal:b.internal,$$treeLevel:0}),b.SmsQueues&&b.SmsQueues.forEach(function(c){a.gridOptions.data.push({isAgent:!1,agentId:b.id,queue:c.name,queueId:c.id,agent:b.name,online:b.online})})}function r(){return h.get().$promise.then(function(b){a.pauses=b.rows,e.syncUpdates("pause",a.pauses)})["catch"](function(a){f.error(a)})}function s(){return j.get().$promise.then(function(b){a.smsQueues=b.rows,e.syncUpdates("sms_queue",a.smsQueues)})["catch"](function(a){f.error(a)})}a.smsQueues=[];var t={controller:"realtime",controller1:"sms",offset:0,limit:10};a.moment=moment,a.initAgents=function(){a.gridOptions={enableGridMenu:!0,headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,useExternalPagination:!0,useExternalSorting:!0,useExternalFiltering:!0,multiSelect:!0,showTreeExpandNoChildren:!0,columnDefs:[{name:"name",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.isAgent">{{row.entity.agent}} <{{row.entity.internal}}></div>'},{name:"online",displayName:"APPLICATION_ONLINE",width:150,headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.online != null && row.entity.isAgent"><i class="fa" data-ng-class="{\'font-green\':row.entity.online, \'font-red\':!row.entity.online,\'fa-user\':row.entity.online,\'fa-user-times\':!row.entity.online}"></i> <i data-ng-if="row.entity.online" class="fa fa-sign-out font-red pointer-cursor" title="logout" data-ng-click="grid.appScope.agentLogout(row.entity.agent,row.entity.agentId)"></i> <span data-ng-if="row.entity.online && grid.appScope.showTimers" class="left-margin"><css-timer start-time="row.entity.lastLoginAt"></css-timer></span></div>',filter:{type:m.filter.SELECT,selectOptions:[{value:"true",label:"ONLINE"},{value:"false",label:"OFFLINE"}]}},{name:"smsPause",displayName:"APPLICATION_PAUSE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.pause != null && row.entity.online" class="ui-grid-vcenter"><i data-ng-if="row.entity.pause" data-ng-click="grid.appScope.pause(row.entity,\'unpause\')" class="fa fa-play font-green pointer-cursor left-margin" title="{{\'APPLICATION_RESUME\' | translate}}"></i><i class="fa fa-pause font-yellow pointer-cursor" data-ng-click="grid.appScope.pause(row.entity,\'pause\',\'DEFAULT PAUSE\')" title="{{\'APPLICATION_DEFAULT_PAUSE\' | translate}}"></i><select data-ng-if="grid.appScope.pauses.length" class="pause-select pointer-cursor" data-ng-model="grid.appScope.pauseType" data-ng-change="grid.appScope.pause(row.entity,\'pause\',grid.appScope.pauseType)"><option class="pointer-cursor" data-ng-repeat="pause in grid.appScope.pauses">{{pause.name}}</option></select> <span data-ng-if="row.entity.pause" class="left-margin">({{row.entity.pauseType}})</span><span data-ng-if="row.entity.pause && grid.appScope.showTimers" class="left-margin"><css-timer start-time="row.entity.lastPauseAt"></css-timer></span></div>',filter:{type:m.filter.SELECT,selectOptions:[{value:"true",label:"PAUSED"},{value:"false",label:"NOT PAUSED"}]},enableSorting:!1,enableColumnMenu:!1},{name:"queue",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"action",displayName:"",width:170,cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><button data-ng-if="row.entity.queueId" class="btn btn-xs red-sunglo" data-ng-click="grid.appScope.leaveQueue(row.entity.agentId,row.entity.queueId)"><i class="icon-ban"></i> {{\'APPLICATION_LEAVE\' | translate}}</button><button data-ng-if="row.entity.isAgent && row.treeNode.children.length < grid.appScope.smsQueues.length" class="btn btn-xs blue-hoki" data-ng-click="grid.appScope.joinQueue(row.entity.agentId)"><i class="icon-plus"></i> {{\'APPLICATION_JOIN_QUEUE\' | translate}}</button><div>',enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1}],data:[],gridMenuTitleFilter:function(a){var b=l.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){u(a.gridApi.core.getVisibleRows(a.gridApi.grid).length)}),a.gridApi.treeBase.on.rowExpanded(a,function(b){u(a.gridApi.core.getVisibleRows(a.gridApi.grid).length+b.treeNode.children.length)}),a.gridApi.treeBase.on.rowCollapsed(a,function(b){u(a.gridApi.core.getVisibleRows(a.gridApi.grid).length-b.treeNode.children.length)}),a.gridApi.core.on.sortChanged(a,function(a,b){0===b.length?t.order=null:t.order=b[0].name+" "+b[0].sort.direction.toUpperCase(),o()}),a.gridApi.pagination.on.paginationChanged(a,function(a,b){t.offset=(a-1)*b,t.limit=b,o()}),a.gridApi.core.on.filterChanged(a,function(){var a=this.grid;a.columns.forEach(function(a){a.filters[0].term?t[a.name]=a.filters[0].term:delete t[a.name]}),o()})}},o(),r(),s(),n(function(){p()})};var u=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("agent"),e.unsyncUpdates("user_has_sms_queue")}),a.pause=function(b,c,e){return e&&(a.pauseType=null),i.save({name:c,agent:b.agentId,data2:b.agent,type:e||"DEFAULT PAUSE",data4:e||"DEFAULT PAUSE",channel:"sms"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.joinQueue=function(e){var g=c.open({animation:!0,templateUrl:"app/channels/sms/realtime/view/agent/queue.modal.add.html",controller:"SmsRealtimeViewAgentQueueModalCtrl",resolve:{queues:function(){return _.reject(a.smsQueues,function(b){return!!_.find(a.gridOptions.data,{queue:b.name,isAgent:!1,agentId:e})})}}});g.result.then(function(b){return i.save({name:"QueueAdd",agent:e,queues:_.filter(a.smsQueues,function(a){return _.includes(b.queues,a.id)}),channel:"sms",data1:e,data3:b.queues.join(","),data4:"sms"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},function(){b.info("Modal dismissed at: "+new Date)})},a.leaveQueue=function(a,b){return i.save({name:"QueueRemove",agent:a,queueId:b,channel:"sms",data1:a,data3:b,data4:"sms"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.showInfo=function(a){c.open({animation:!0,templateUrl:"app/channels/sms/realtime/view/agent/agent.modal.info.html",controller:"SmsRealtimeViewAgentInfoModalCtrl",resolve:{agent:a}})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.realtime.view.agents",{url:"/agents",templateUrl:"app/channels/sms/realtime/view/agent/agent.html",controller:"SmsRealtimeViewAgentCtrl"})}]),angular.module("xCallyShuttleApp").controller("SmsRealtimeViewAgentInfoModalCtrl",["$scope","$uibModalInstance","$http","agent",function(a,b,c,d){a.agent=d,a.close=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("SmsRealtimeViewAgentQueueModalCtrl",["$scope","$uibModalInstance","$http","queues",function(a,b,c,d){a.queues=d,a.item={},a.save=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("SmsRealtimeViewApplicationCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","ReportSmsSession","usSpinnerService","$q","uiGridConstants","$timeout",function(a,b,c,d,e,f,g,h,i,j,k){function l(){return h.spin("spinner-grid"),g.get({controller:"waiting",controller2:"applications"}).$promise.then(function(b){a.gridOptions.data=b.rows})["catch"](function(a){f.error(a)})["finally"](function(){m(),h.stop("spinner-grid")})}function m(){e.socket.on("report_sms_session:save",function(b){var c=_.find(a.gridOptions.data,{id:b.id});c?(_.merge(c,b),b.leaveAt&&k(function(){_.remove(a.gridOptions.data,{id:b.id})},1e4)):b.leaveAt||a.gridOptions.data.push(b)}),e.socket.on("report_sms_session:remove",function(b){_.remove(a.gridOptions.data,{id:b.id})})}a.moment=moment,a.initApplications=function(){a.gridOptions={headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,columnDefs:[{name:"uniqueid",displayName:"APPLICATION_UNIQUEID",headerCellFilter:"translate"},{name:"accountname",displayName:"APPLICATION_ACCOUNT",headerCellFilter:"translate"},{name:"application",displayName:"APPLICATION_APPLICATION",headerCellFilter:"translate"},{name:"status",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span data-ng-if="!row.entity.leaveAt">{{\'APPLICATION_QUEUESTATUS_WAITING\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.complete">{{\'APPLICATION_QUEUESTATUS_COMPLETE\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.timeout">{{\'APPLICATION_TIMEOUT\' | translate}}</span> <span data-ng-if="!row.entity.leaveAt && grid.appScope.showTimers"><css-timer start-time="row.entity.updatedAt"></css-timer></span></div>',enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1},{name:"membername",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.membername || ''}}</span></div>"},{name:"queuename",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.queuename || ''}}</span></div>"}],data:[],gridMenuTitleFilter:function(a){var b=i.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){n(a.gridOptions.data.length)})}},l()};var n=function(a){var b=a?30*a+60:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("report_sms_session")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.realtime.view.applications",{url:"/applications",templateUrl:"app/channels/sms/realtime/view/application/application.html",controller:"SmsRealtimeViewApplicationCtrl"})}]),angular.module("xCallyShuttleApp").controller("SmsRealtimeViewCtrl",["$scope","$state",function(a,b){a.agents=[{name:"Queues",link:"main.channels.sms.realtime.view.agents.queues"},{name:"Timeline",link:"main.channels.sms.realtime.view.agents.timeline"}],a.sessions=[{name:"Sessions",link:"main.channels.sms.realtime.view.sessions"}],a.tree={queues:[{name:"Queues",link:"main.channels.sms.realtime.view.agents.queues"},{name:"Timeline",link:"main.channels.sms.realtime.view.agents.timeline"}],sessions:[{name:"Sessions",link:"main.channels.sms.realtime.view.sessions"}]},a.timerSwitch={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"primary"},a.showTimers=!1}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.realtime.view",{url:"/view",templateUrl:"app/channels/sms/realtime/view/view.html",controller:"SmsRealtimeViewCtrl"})}]),angular.module("xCallyShuttleApp").factory("ReportSmsSession",["$resource",function(a){return a("/api/report/sms/sessions/:id/:controller/:controller2",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms",{url:"/sms",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:11}}})}]),angular.module("xCallyShuttleApp").factory("SmsQueue",["$resource",function(a){return a("/api/sms/queues/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("SmsReport",["$resource",function(a){return a("/api/report/sms/:id/:controller1/:controller2",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("SmsMessage",["$resource",function(a){return a("/api/sms/messages/:id/:controller",{id:"@id",controller:"@controller"},{update:{method:"PUT"},patch:{method:"PATCH"}})}]),angular.module("xCallyShuttleApp").factory("SmsRoom",["$resource",function(a){return a("/api/sms/rooms/:id/:controller",{id:"@id",controller:"@controller"},{update:{method:"PUT"},patch:{method:"PATCH"}})}]),angular.module("xCallyShuttleApp").factory("ChanSpy",["$resource",function(a){return a("/api/chanspy/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.chanspy",{url:"/chanspy",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:27}}})}]),angular.module("xCallyShuttleApp").controller("ChanSpyListCtrl",["$scope","$uibModal","ChanSpy","gridOptions",function(a,b,c,d){a.initView=function(){var b={exporterCsvFilename:"chanspy.csv",columnDefs:[{name:"name"},{name:"prefix"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/channels/voice/chanspy/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){var c=b.open({animation:!0,templateUrl:"app/channels/voice/chanspy/list/list.create.modal.html",controller:"ChanSpyListCreateCtrl"});c.result.then(function(b){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("ChanSpyListCreateCtrl",["$scope","$translate","$uibModalInstance","ChanSpy","xAlert",function(a,b,c,d,e){a.form={},a.item={auth:!1,record:!1},a.recordSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.authSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.options=[{name:"APPLICATION_CHANSPY_OPTION_b",value:"b"},{name:"APPLICATION_CHANSPY_OPTION_B",value:"B"},{name:"APPLICATION_CHANSPY_OPTION_E",value:"E"},{name:"APPLICATION_CHANSPY_OPTION_o",value:"o"},{name:"APPLICATION_CHANSPY_OPTION_q",value:"q"},{name:"APPLICATION_CHANSPY_OPTION_s",value:"s"},{name:"APPLICATION_CHANSPY_OPTION_S",value:"S"},{name:"APPLICATION_CHANSPY_OPTION_w",value:"w"},{name:"APPLICATION_CHANSPY_OPTION_W",value:"W"}],a.save=function(){return a.item.options=a.item.options.join(""),d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.chanspy.list",{url:"/list",templateUrl:"app/channels/voice/chanspy/list/list.html",controller:"ChanSpyListCtrl"})}]),angular.module("xCallyShuttleApp").controller("ChanSpyViewCtrl",["$scope","$translate","$stateParams","xAlert","ChanSpy",function(a,b,c,d,e){a.recordSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.authSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.options=[{name:"APPLICATION_CHANSPY_OPTION_b",value:"b"},{name:"APPLICATION_CHANSPY_OPTION_B",value:"B"},{name:"APPLICATION_CHANSPY_OPTION_E",value:"E"},{name:"APPLICATION_CHANSPY_OPTION_o",value:"o"},{name:"APPLICATION_CHANSPY_OPTION_q",value:"q"},{name:"APPLICATION_CHANSPY_OPTION_s",value:"s"},{name:"APPLICATION_CHANSPY_OPTION_S",value:"S"},{name:"APPLICATION_CHANSPY_OPTION_w",value:"w"},{name:"APPLICATION_CHANSPY_OPTION_W",value:"W"}],a.getChanSpy=function(){return e.get({id:c.id}).$promise.then(function(b){b.options=b.options.split(""),a.chanspy=b})["catch"](function(a){d.error(a)})},a.updateChanSpy=function(){var f=angular.copy(a.chanspy);return f.options=f.options.join(""),e.update({id:c.id},f).$promise.then(function(){d.show(b.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.chanspy.view",{url:"/view/:id",templateUrl:"app/channels/voice/chanspy/view/view.html",controller:"ChanSpyViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.voice.chanspy.view.settings",{url:"/settings",templateUrl:"app/channels/voice/chanspy/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").factory("VoiceContext",["$resource",function(a){return a("/api/voice/contexts/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.contexts",{url:"/contexts",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:22}}})}]),angular.module("xCallyShuttleApp").controller("VoiceContextListCtrl",["$scope","VoiceContext","gridOptions","$uibModal","xAlert","$translate",function(a,b,c,d,e,f){a.initView=function(){var d={exporterCsvFilename:"voice_contexts.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{"class":"{{row.entity.defaultEntry ? 'blue-hoki disabled' : 'blue-hoki'}}",href:"/channels/voice/contexts/view/{{row.entity.id}}/settings",name:"settings"},{"class":"{{row.entity.defaultEntry ? 'red-sunglo disabled' : 'red-sunglo'}}",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.createItem=function(){var c=d.open({animation:!0,templateUrl:"app/channels/voice/context/list/create.modal.html",controller:["$scope","$uibModalInstance",function(a,b){a.form={},a.item={},a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]});c.result.then(function(c){return b.save(c).$promise.then(function(){a.gridOptions.getPage(),e.show(f.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){e.error(a)})})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.contexts.list",{url:"/list",templateUrl:"app/channels/voice/context/list/list.html",controller:"VoiceContextListCtrl"})}]),angular.module("xCallyShuttleApp").controller("VoiceContextViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","$location",function(a,b,c,d,e,f){a.getContext=function(){b.get("/api/voice/contexts/"+e.id).success(function(b){a.context=b}).error(function(a){console.error(a),f.path("/voice/contexts/list")})},a.updateVoiceContext=function(){var f=angular.copy(a.context); +b.put("/api/voice/contexts/"+e.id,f).success(function(){c.show(d.instant("MESSAGE_WELL_DONE")+"!","success")}).error(function(b){c.error(b),a.context=f})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.contexts.view",{url:"/view/:id",templateUrl:"app/channels/voice/context/view/view.html",controller:"VoiceContextViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.voice.contexts.view.settings",{url:"/settings",templateUrl:"app/channels/voice/context/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.dispositions",{url:"/dispositions",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:28}}})}]),angular.module("xCallyShuttleApp").controller("VoiceDispositionListCtrl",["$scope","$stateParams","$uibModal","$translate","VoiceDisposition","xAlert",function(a,b,c,d,e,f){a.initView=function(){return e.get().$promise.then(function(b){a.dispositions=b.rows})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.updateDisposition=function(a,b){return e.update({id:a},{name:b}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.deleteDisposition=function(b){return e.remove({id:b}).$promise.then(function(){_.remove(a.dispositions,{id:b}),f.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.addDisposition=function(){return c.open({animation:!0,templateUrl:"app/channels/voice/disposition/list/modal/add.modal.html",controller:"VoiceDispositionListModalDispositionAddCtrl"}).result.then(function(b){b&&(a.dispositions.push(b),f.show(d.instant("MESSAGE_WELL_DONE")+"!","success"))})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.dispositions.list",{url:"/list",templateUrl:"app/channels/voice/disposition/list/list.html",controller:"VoiceDispositionListCtrl"})}]),angular.module("xCallyShuttleApp").controller("VoiceDispositionListModalDispositionAddCtrl",["$scope","$uibModalInstance","VoiceDisposition","xAlert","$translate",function(a,b,c,d,e){a.ok=function(){return c.save({name:a.name}).$promise.then(function(a){b.close(a)})["catch"](function(a){d.show(e.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").factory("VoiceDisposition",["$resource",function(a){return a("/api/voice/dispositions/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("VoiceMohListCtrl",["$scope","gridOptions","VoiceMoh","$uibModal","xAlert","$translate",function(a,b,c,d,e,f){a.initView=function(){var d={exporterCsvFilename:"voice_mohs.csv",columnDefs:[{name:"name"},{name:"mode"},{name:"directory"},{name:"sort"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/channels/voice/mohs/view/{{row.entity.id}}/settings",name:"settings"},{"class":"{{row.entity.defaultEntry ? 'red-sunglo disabled' : 'red-sunglo'}}",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=b.gridOptions(c,d,a)},a.createItem=function(){var b=d.open({animation:!0,templateUrl:"app/channels/voice/moh/list/create.modal.html",controller:["$scope","$uibModalInstance",function(a,b){a.form={},a.item={},a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]});b.result.then(function(b){return c.save(b).$promise.then(function(){a.gridOptions.getPage(),e.show(f.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){e.error(a)})})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.mohs.list",{url:"/list",templateUrl:"app/channels/voice/moh/list/list.html",controller:"VoiceMohListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").factory("VoiceMoh",["$resource",function(a){return a("/api/voice/musiconholds/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.mohs",{url:"/mohs",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:24}}})}]),angular.module("xCallyShuttleApp").controller("VoiceMohViewCtrl",["$scope","$http","xAlert","$translate","VoiceMoh","$stateParams","socket","Modal","$sce","$location","Sound",function(a,b,c,d,e,f,g,h,i,j,k){a.$translate=d,a.audioSources={},a.sortOptions=[{value:"random",name:"APPLICATION_RANDOM"},{value:"alpha",name:"APPLICATION_ALPHABETICAL"}],a.getMoh=function(){return e.get({id:f.id}).$promise.then(function(b){delete b.stamp,a.moh=b})["catch"](function(a){c.error(a)})},a.updateVoiceMoh=function(){return e.update({id:f.id},a.moh).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){c.error(a)})},a.addMohs=function(){return e.save({id:f.id,controller:"files"},a.item).$promise.then(function(){j.path("/channels/voice/mohs/view/"+f.id+"/audios")})["catch"](function(a){c.error(a)})},a.getAudioFiles=function(){return e.get({id:f.id,controller:"files"}).$promise.then(function(b){a.audioFiles=b.files,a.mohPath=b.path,a.audioFiles.forEach(function(a){l(a)})})["catch"](function(a){c.error(a)})},a.getSecureSrc=function(a){return i.trustAsResourceUrl(a)},a.getSounds=function(){return a.item={sounds:[]},k.get().$promise.then(function(b){a.soundList=b.rows})["catch"](function(a){c.error(a)})};var l=function(c){b.get("/api/voice/musiconholds/stream",{params:{path:encodeURI(a.mohPath+"/"+c)}}).success(function(b){a.audioSources[c]="data:audio/ogg;base64,"+b}).error(function(a){console.error(a)})};a.deleteItem=h.confirm["delete"](function(e){b["delete"]("/api/voice/musiconholds/"+f.id+"/files",{params:{filename:e}}).success(function(){_.remove(a.audioFiles,function(a){return a===e}),c.show(d.instant("MESSAGE_WELL_DONE")+"!","success")}).error(function(a){c.error(a)})})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.mohs.view",{url:"/view/:id",templateUrl:"app/channels/voice/moh/view/view.html",controller:"VoiceMohViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.voice.mohs.view.settings",{url:"/settings",templateUrl:"app/channels/voice/moh/view/view.settings.html"}).state("main.channels.voice.mohs.view.audios",{url:"/audios",templateUrl:"app/channels/voice/moh/view/view.audios.html",cache:!1}).state("main.channels.voice.mohs.view.add",{url:"/add",templateUrl:"app/channels/voice/moh/view/view.addFiles.html",cache:!1})}]),angular.module("xCallyShuttleApp").controller("VoiceQueueListCtrl",["$scope","$rootScope","$uibModal","VoiceQueue","gridOptions","Auth",function(a,b,c,d,e,f){a.initView=function(){a.Auth=f;var b={exporterCsvFilename:"voice_queues.csv",primaryKey:"name",columnDefs:[{name:"name"},{name:"strategy"},{name:"description"},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/channels/voice/queues/view/{{row.entity.name}}/settings",name:"settings"},{"class":"green-meadow",href:"/channels/voice/queues/view/{{row.entity.name}}/agents",name:"agents",hide:"user"===f.getCurrentUser().role},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.name)"}]}]};a.gridOptions=e.gridOptions(d,b,a)},a.createItem=function(){var b=c.open({animation:!0,templateUrl:"app/channels/voice/queue/list/list.create.modal.html",controller:"VoiceQueueListCreateCtrl",size:"lg"});b.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("VoiceQueueListCreateCtrl",["$scope","$uibModalInstance","$translate","xAlert","VoiceQueue","Team",function(a,b,c,d,e,f){a.form={},a.item={penalty:0,agents:[]},a.getTeams=function(){return f.get({controller:"associations"}).$promise.then(function(b){a.teams=b.rows}).then(function(){ComponentsDropdowns.bindQueue(a.teams,[],function(){return{select:function(b){a.item.agents=_.union(a.item.agents,b),console.log(a.item.agents)},deselect:function(b){a.item.agents=_.difference(a.item.agents,b),console.log(a.item.agents)}}})})["catch"](function(a){console.error(a)})},a.save=function(){return e.save(a.item).$promise.then(function(a){d.show(c.instant("MESSAGE_WELL_DONE"),"success"),b.close(a)})["catch"](function(a){d.error(a)})},a.cancel=function(){b.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.queues.list",{url:"/list",templateUrl:"app/channels/voice/queue/list/list.html",controller:"VoiceQueueListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.queues",{url:"/queues",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin"],redirectTo:"landing"}}})}]),angular.module("xCallyShuttleApp").factory("ReportQueue",["$resource",function(a){return a("/api/report/queues/:id/:controller/:controller2",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("UserHasVoiceQueue",["$resource",function(a){return a("/api/voice/user_has_queues/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("VoiceQueueViewCtrl",["$scope","xAlert","$translate","$stateParams","socket","$location","VoiceQueue","Team","Auth","VoiceMoh","Sound","Setting",function(a,b,c,d,e,f,g,h,i,j,k,l){a.Auth=i,a.binaryChoices=[{name:"Yes",value:1},{name:"No",value:0}],a.recordSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.autoPauseValues=[{name:"No",value:"no"},{name:"Yes",value:"all"}],a.monitorFormats=[{name:"wav",value:"wav"},{name:"gsm",value:"gsm"},{name:"Inactive",value:""}],a.queueAnnounces=[{display_name:"Default",path:null},{display_name:"Disabled",path:""}];var m=function(){return{select:function(b){return g.save({id:a.queue.name,controller:"agents"},{agents:b,penalty:a.queue.penalty}).$promise.then(function(){a.getTeams()})["catch"](function(a){console.log(a)})},deselect:function(b){return g["delete"]({id:a.queue.name,controller:"agents",agents:b}).$promise.then(function(){a.getTeams()})["catch"](function(a){console.log(a)})}}};a.getQueue=function(){return g.get({id:d.id}).$promise.then(function(b){b.joinempty=""===b.joinempty?[]:b.joinempty.split(","),b.leavewhenempty=""===b.leavewhenempty?[]:b.leavewhenempty.split(","),b.periodic_announce=""===b.periodic_announce?[]:b.periodic_announce.split(","),b.setinterfacevar="yes"===b.setinterfacevar,b.setqueuevar="yes"===b.setqueuevar,b.setqueueentryvar="yes"===b.setqueueentryvar,b.penalty=0,a.queue=b})["catch"](function(a){f.path("/channels/voice/queues/list")})},a.updateVoiceQueue=function(){var e=angular.copy(a.queue);return e.joinempty=e.joinempty.join(","),e.leavewhenempty=e.leavewhenempty.join(","),e.periodic_announce=e.periodic_announce.join(","),e.setinterfacevar=e.setinterfacevar?"yes":"no",e.setqueuevar=e.setqueuevar?"yes":"no",e.setqueueentryvar=e.setqueueentryvar?"yes":"no",e.context||(e.context=null),g.update({id:d.id},e).$promise.then(function(){b.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){b.error(a)})},a.getTeams=function(){return h.get({controller:"associations"}).$promise.then(function(b){return a.teams=b.rows,g.get({id:d.id,controller:"agents"}).$promise}).then(function(b){ComponentsDropdowns.bindQueue(a.teams,_.map(b.rows,function(a){return{id:a.id,penalty:a.UserHasVoiceQueue.penalty}}),m)})["catch"](function(a){console.error(a)})},a.getMohs=function(){return j.get().$promise.then(function(b){a.voiceMohs=b.rows,e.syncUpdates("voice_musiconhold",a.voiceMohs)})["catch"](function(a){b.error(a)})},a.getSounds=function(){var b;return l.get({id:1}).$promise.then(function(a){return b=a,k.get().$promise}).then(function(c){var d=b.soundPath||"/var/opt/motion/server/files/sounds/converted";_.forEach(c.rows,function(a){a.path=(d+"/"+a.save_name).replace(/\/+/g,"/").replace(/\\+/g,"\\")}),a.queueAnnounces=a.queueAnnounces.concat(c.rows),a.periodicAnnounces=angular.copy(c.rows),c.rows.unshift({display_name:"None",path:""}),a.sounds=c.rows,e.syncUpdates("sound",a.sounds)})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.queues.view",{url:"/view/:id",templateUrl:"app/channels/voice/queue/view/view.html",controller:"VoiceQueueViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.voice.queues.view.settings",{url:"/settings",templateUrl:"app/channels/voice/queue/view/view.settings.html"}).state("main.channels.voice.queues.view.agents",{url:"/agents",templateUrl:"app/channels/voice/queue/view/view.agents.html",cache:!1,serie:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}})}]),angular.module("xCallyShuttleApp").factory("VoiceQueue",["$resource",function(a){return a("/api/voice/queues/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.realtime",{url:"/realtime",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:26}}})}]),angular.module("xCallyShuttleApp").controller("VoiceRealtimeViewAbandonedCtrl",["$scope","$translate","socket","xAlert","ReportQueue","usSpinnerService","$q","Auth","uiGridConstants",function(a,b,c,d,e,f,g,h,i){function j(){return f.spin("spinner-grid"),e.get({controller:"abandoned",controller2:"all"}).$promise.then(function(b){a.gridOptions.data=b.rows})["catch"](function(a){d.error(a)})["finally"](function(){k(),f.stop("spinner-grid")})}function k(){c.socket.on("report_queue:update",function(b){if(b.queuecallerabandon){var c=_.find(a.gridOptions.data,{id:b.id});c?_.merge(c,b):a.gridOptions.data.unshift(b)}})}a.radioSwitch={size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"success",onColor:"danger"};a.initAbandoned=function(){a.agent=h.getCurrentUser(),a.gridOptions={exporterCsvFilename:"abandoned_calls.csv",enableRowHeaderSelection:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,enableFiltering:!0,enableSorting:!0,enableGridMenu:!1,flatEntityAccess:!0,showGridFooter:!0,fastWatch:!0,enableSelectAll:!1,enableHorizontalScrollbar:0,enableVerticalScrollbar:1,columnDefs:[{name:"queue",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter"},{name:"calleridnum",displayName:"APPLICATION_CALLERIDNUM",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter"},{name:"updatedAt",displayName:"APPLICATION_DATE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.updatedAt | date:'yyyy-MM-dd HH:mm:ss'}}</div>"},{name:"lastAssignedTo",cellClass:"text-center ui-grid-vcenter",displayName:"APPLICATION_LAST_ASSIGNED_TO",headerCellFilter:"translate"},{name:"assigned",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellTemplate:'<div class="centered-uigrid-td"><input data-ng-change="grid.appScope.updateItem(row.entity)", bs-switch ng-model="row.entity.assigned" type="checkbox" switch-active="{{ !row.entity.assigned || grid.appScope.agent.name === row.entity.lastAssignedTo }}" switch-on-text="{{ \'APPLICATION_ASSIGNED\' | translate }}" switch-off-text="{{ \'APPLICATION_FREE\' | translate }}" switch-on-color="{{ grid.appScope.radioSwitch.onColor }}" switch-off-color="{{ grid.appScope.radioSwitch.offColor }}" switch-animate="{{ grid.appScope.radioSwitch.animate }}" switch-size="{{ grid.appScope.radioSwitch.size }}" switch-label="{{ grid.appScope.radioSwitch.label }}" switch-icon="{{ grid.appScope.radioSwitch.icon }}" switch-radio-off="{{ grid.appScope.radioSwitch.radioOff }}" switch-label-width="{{ grid.appScope.radioSwitch.labelWidth }}" switch-handle-width="{{ grid.appScope.radioSwitch.handleWidth }}"></div>',enableFiltering:!1}],data:[],gridMenuTitleFilter:function(a){var c=g.defer();return c.resolve(b.instant(a)),c.promise},onRegisterApi:function(b){a.gridApi=b}},j()},a.updateItem=function(c){return e.update({id:c.id},{assigned:c.assigned,lastAssignedTo:c.assigned?a.agent.name:void 0}).$promise.then(function(){d.show(b.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){d.error(a)})};a.$on("$destroy",function(){c.unsyncUpdates("report_queue")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.realtime.view.abandoned",{url:"/abandoned",templateUrl:"app/channels/voice/realtime/view/abandoned/abandoned.html",controller:"VoiceRealtimeViewAbandonedCtrl"})}]),angular.module("xCallyShuttleApp").controller("VoiceRealtimeViewAgentCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","Agent","Pause","Action","VoiceQueue","usSpinnerService","$q","uiGridConstants","Auth","$timeout",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){function p(){return k.spin("grid-spinner"),g.get(u).$promise.then(function(b){a.gridOptions.totalItems=b.count,a.gridOptions.data=[],b.rows.forEach(function(a){r(a)})})["catch"](function(a){f.error(a)})["finally"](function(){k.stop("grid-spinner")})}function q(){e.socket.on("agent:save",function(b){b=b.newValues||b;var c=_.find(a.gridOptions.data,{agentId:b.id,isAgent:!0});c&&(c.online=b.hasOwnProperty("online")?b.online:c.online,c.lastLoginAt=b.hasOwnProperty("lastLoginAt")?b.lastLoginAt:c.lastLoginAt,c.pause=b.hasOwnProperty("voicePause")?b.voicePause:c.pause,c.pauseType=b.hasOwnProperty("pauseType")?b.pauseType:c.pauseType,c.lastPauseAt=b.hasOwnProperty("lastPauseAt")?b.lastPauseAt:c.lastPauseAt,c.status=b.hasOwnProperty("status")?b.status:c.status,c.statusAt=b.hasOwnProperty("statusAt")?b.statusAt:c.statusAt,c.queueStatus=b.hasOwnProperty("queueStatus")?b.queueStatus:c.queueStatus,c.queueStatusAt=b.hasOwnProperty("queueStatusAt")?b.queueStatusAt:c.queueStatusAt,c.lastQueue=b.hasOwnProperty("lastQueue")?b.lastQueue:c.lastQueue,c.ipaddr=b.hasOwnProperty("ipaddr")?b.ipaddr:c.ipaddr,c.port=b.hasOwnProperty("port")?b.port:c.port,c.fullcontact=b.hasOwnProperty("fullcontact")?b.fullcontact:c.fullcontact,c.useragent=b.hasOwnProperty("useragent")?b.useragent:c.useragent,c.lastms=b.hasOwnProperty("lastms")?b.lastms:c.lastms,c.internal=b.hasOwnProperty("internal")?b.internal:c.internal,_.map(a.gridOptions.data,function(a){a.isAgent||a.agentId!==b.id||(a.online=b.hasOwnProperty("online")?b.online:a.online)}))}),e.socket.on("agent:remove",function(b){_.remove(a.gridOptions.data,{agentId:b.id})})}function r(b){a.gridOptions.data.push({isAgent:!0,agentId:b.id,agent:b.name,online:b.online,lastLoginAt:b.lastLoginAt,lastPauseAt:b.lastPauseAt,pause:b.voicePause,pauseType:b.pauseType,status:b.status||"UNKNOWN",statusAt:b.statusAt,queueStatus:b.queueStatus||"READY",queueStatusAt:b.queueStatusAt,lastQueue:b.lastQueue,ipaddr:b.ipaddr,port:b.port,fullcontact:b.fullcontact,useragent:b.useragent,lastms:b.lastms,internal:b.internal})}function s(){return h.get().$promise.then(function(b){a.pauses=b.rows,e.syncUpdates("pause",a.pauses)})["catch"](function(a){f.error(a)})}function t(){return j.get().$promise.then(function(b){a.voiceQueues=b.rows,e.syncUpdates("voice_queue",a.voiceQueues)})["catch"](function(a){f.error(a)})}a.voiceQueues=[];var u={controller:"realtime",controller1:"voice",offset:0,limit:10};a.moment=moment,a._=_,a.initAgents=function(){a.gridOptions={enableGridMenu:!0,headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,useExternalPagination:!0,useExternalSorting:!0,useExternalFiltering:!0,multiSelect:!0,columnDefs:[{name:"name",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.isAgent">{{row.entity.agent}} <{{row.entity.internal}}></div>'},{name:"online",displayName:"APPLICATION_ONLINE",width:150,headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.online != null && row.entity.isAgent"><i class="fa" data-ng-class="{\'font-green\':row.entity.online, \'font-red\':!row.entity.online,\'fa-user\':row.entity.online,\'fa-user-times\':!row.entity.online}"></i> <i data-ng-if="row.entity.online" class="fa fa-sign-out font-red pointer-cursor" title="logout" data-ng-click="grid.appScope.agentLogout(row.entity.agent,row.entity.agentId)"></i> <span data-ng-if="row.entity.online && grid.appScope.showTimers" class="left-margin"><css-timer start-time="row.entity.lastLoginAt"></css-timer></span></div>',filter:{type:m.filter.SELECT,selectOptions:[{value:"true",label:"ONLINE"},{value:"false",label:"OFFLINE"}]}},{name:"status",displayName:"APPLICATION_PHONE_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div data-ng-if=\"row.entity.isAgent\">{{'APPLICATION_'+row.entity.status | translate}} <span data-ng-if=\"row.entity.statusAt && (row.entity.status === 'BUSY' || row.entity.status === 'ONHOLD' || row.entity.status === 'INUSE')\"><span data-ng-if=\"grid.appScope.showTimers\"><css-timer start-time=\"row.entity.statusAt\"></css-timer></span></span></div>",filter:{type:m.filter.SELECT,selectOptions:[{value:"UNKNOWN",label:d.instant("APPLICATION_UNKNOWN")},{value:"NOT_INUSE",label:d.instant("APPLICATION_NOT_INUSE")},{value:"INUSE",label:d.instant("APPLICATION_INUSE")},{value:"BUSY",label:d.instant("APPLICATION_BUSY")},{value:"INVALID",label:d.instant("APPLICATION_INVALID")},{value:"UNAVAILABLE",label:d.instant("APPLICATION_UNAVAILABLE")},{value:"RINGING",label:d.instant("APPLICATION_RINGING")},{value:"RINGINUSE",label:d.instant("APPLICATION_RINGINUSE")},{value:"ONHOLD",label:d.instant("APPLICATION_ONHOLD")}]}},{name:"queueStatus",displayName:"APPLICATION_QUEUE_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.isAgent && row.entity.online" class="ui-grid-vcenter"><span class="left-margin"><i data-ng-if="row.entity.pause" data-ng-click="grid.appScope.pause(row.entity,\'unpause\')" class="fa fa-play font-green pointer-cursor" title="{{\'APPLICATION_RESUME\' | translate}}"></i><i class="fa fa-pause font-yellow pointer-cursor" data-ng-click="grid.appScope.pause(row.entity,\'pause\',\'DEFAULT PAUSE\')" title="{{\'APPLICATION_DEFAULT_PAUSE\' | translate}}"></i></span><select data-ng-if="grid.appScope.pauses.length" class="pause-select pointer-cursor" data-ng-model="grid.appScope.pauseType" data-ng-change="grid.appScope.pause(row.entity,\'pause\',grid.appScope.pauseType)"><option class="pointer-cursor" data-ng-repeat="pause in grid.appScope.pauses">{{pause.name}}</option></select><span data-ng-if="!row.entity.pause || grid.appScope._.startsWith(row.entity.pauseType,\'#\')"> {{\'APPLICATION_\'+row.entity.queueStatus.toUpperCase() | translate}}</span><span data-ng-if="row.entity.pause && grid.appScope._.startsWith(row.entity.pauseType,\'#\')"> * </span><span data-ng-if="row.entity.pause && !grid.appScope._.startsWith(row.entity.pauseType,\'#\')"> {{\'APPLICATION_PAUSED\' | translate}}</span><span data-ng-if="(row.entity.queueStatus!==\'complete\' && (!row.entity.pause || row.entity.pauseType === \'ACW\'))"> [{{row.entity.lastQueue}}]</span><span data-ng-if="row.entity.pause && !grid.appScope._.startsWith(row.entity.pauseType,\'#\')"> [{{row.entity.pauseType}}]</span><span data-ng-if="row.entity.queueStatusAt && (row.entity.queueStatus!==\'complete\' || (row.entity.pause)) && grid.appScope.showTimers"><css-timer start-time="(row.entity.pause && !grid.appScope._.startsWith(row.entity.pauseType,\'#\')) ? row.entity.lastPauseAt : row.entity.queueStatusAt"></css-timer></span></div>',filter:{type:m.filter.SELECT,selectOptions:[{value:"connect",label:d.instant("APPLICATION_CONNECT")},{value:"complete",label:d.instant("APPLICATION_COMPLETE")},{value:"called",label:d.instant("APPLICATION_CALLED")},{value:"paused",label:d.instant("APPLICATION_PAUSED")}]},enableSorting:!1,enableColumnMenu:!1},{name:"action",displayName:"",width:170,cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><button data-ng-if="row.entity.queue" class="btn btn-xs red-sunglo" data-ng-click="grid.appScope.leaveQueue(row.entity.agentId,row.entity.queue)"><i class="icon-ban"></i> {{\'APPLICATION_LEAVE\' | translate}}</button><button data-ng-if="row.entity.isAgent" class="btn btn-xs blue-hoki" data-ng-click="grid.appScope.joinQueue(row.entity.agentId)"><i class="icon-plus"></i> {{\'APPLICATION_QUEUES\' | translate}}</button> <button data-ng-if="row.entity.isAgent" class="btn btn-xs blue-madison" data-ng-click="grid.appScope.showInfo(row.entity)"><i class="icon-info"></i></button><div>',enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1}],data:[],gridMenuTitleFilter:function(a){var b=l.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){v(a.gridApi.core.getVisibleRows(a.gridApi.grid).length)}),a.gridApi.core.on.sortChanged(a,function(a,b){0===b.length?u.order=null:u.order=b[0].name+" "+b[0].sort.direction.toUpperCase(),p()}),a.gridApi.pagination.on.paginationChanged(a,function(a,b){u.offset=(a-1)*b,u.limit=b,p()}),a.gridApi.core.on.filterChanged(a,function(){var a=this.grid;a.columns.forEach(function(a){a.filters[0].term?u[a.name]=a.filters[0].term:delete u[a.name]}),p()})}},p(),s(),t(),o(function(){q()})};var v=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("agent"),e.unsyncUpdates("user_has_voice_queue")}),a.pause=function(b,c,e){return e&&(a.pauseType=null),i.save({name:c,agent:b.agentId,data2:b.agent,type:e||"DEFAULT PAUSE",data4:e||"DEFAULT PAUSE",channel:"voice"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.joinQueue=function(a){c.open({animation:!0,templateUrl:"app/channels/voice/realtime/view/agent/queue.modal.add.html",controller:"VoiceRealtimeViewAgentQueueModalCtrl",resolve:{id:a}})},a.showInfo=function(a){c.open({animation:!0,templateUrl:"app/channels/voice/realtime/view/agent/agent.modal.info.html",controller:"VoiceRealtimeViewAgentInfoModalCtrl",resolve:{agent:a}})},a.$on("$destroy",function(){e.unsyncUpdates("agent"),e.unsyncUpdates("user_has_voice_queue")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.realtime.view.agents",{url:"/agents",templateUrl:"app/channels/voice/realtime/view/agent/agent.html",controller:"VoiceRealtimeViewAgentCtrl"})}]),angular.module("xCallyShuttleApp").controller("VoiceRealtimeViewAgentInfoModalCtrl",["$scope","$uibModalInstance","agent",function(a,b,c){a.agent=c,a.close=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("VoiceRealtimeViewAgentQueueModalCtrl",["$scope","$uibModalInstance","$http","id","Agent","xAlert","usSpinnerService","$translate","Action","socket","VoiceQueue",function(a,b,c,d,e,f,g,h,i,j,k){a.item={},a.params={penalty:0};var l=function(a,b){var c=a?30*a+130:177;angular.element(document.getElementsByName(b)[0]).css("height",c+"px")};a.enableLeave=!0,a.init=function(){a.queueTable={enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,enableSorting:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,columnDefs:[{name:"name",headerCellFilter:"translate",displayName:"APPLICATION_QUEUE",cellClass:"text-center ui-grid-vcenter"},{name:"penalty",headerCellFilter:"translate",displayName:"APPLICATION_PENALTY",cellClass:"text-center ui-grid-vcenter"},{name:"loggedAt",displayName:"logged At",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span am-time-ago="row.entity.loggedAt"></span></div>'},{name:"action",displayName:"",width:170,cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><button class="btn btn-xs red-sunglo" data-ng-click="grid.appScope.leaveQueue(row.entity.name)" data-ng-disabled="!grid.appScope.enableLeave"><i class="icon-ban"></i> {{\'APPLICATION_LEAVE\' | translate}}</button>',enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1}],data:[],onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){l(a.queueTable.paginationPageSize>a.queueTable.data.length?a.queueTable.data.length:a.queueTable.paginationPageSize,"queueTable")}),a.gridApi.pagination.on.paginationChanged(a,function(b,c){l(c>a.queueTable.data.length?a.queueTable.data.length:c,"queueTable")})}},a.queues=[];var b={};return e.get({id:d,controller:"voice",controller1:"queues"}).$promise.then(function(a){return _.forEach(_.filter(a.rows,function(a){return a.UserHasVoiceQueue.logged===!0}),function(a){b[a.name]=a}),k.get().$promise}).then(function(c){_.forEach(c.rows,function(c){b[c.name]?a.queueTable.data.push({name:c.name,loggedAt:b[c.name].UserHasVoiceQueue.loggedAt,penalty:b[c.name].UserHasVoiceQueue.penalty}):a.queues.push({name:c.name})}),g.stop("agentqueue-spinner")})["catch"](function(a){f.error(a)})},a.joinQueue=function(){return g.spin("agentqueue-spinner"),a.enableLeave=!1,i.save({name:"QueueAdd",agent:d,queues:a.item.queues,channel:"voice",data1:d,data2:a.params.penalty,data3:a.item.queues.join(","),data4:"voice"}).$promise.then(function(){a.item.queues=[],f.show(h.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.leaveQueue=function(b){return g.spin("agentqueue-spinner"),a.enableLeave=!1,i.save({name:"QueueRemove",agent:d,queue:b,channel:"voice",data1:d,data3:b,data4:"voice"}).$promise.then(function(){f.show(h.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},j.socket.on("user_has_voice_queue:save",function(b){if(b.UserId==d){var c=_.find(a.queueTable.data,function(a){return a.name===b.queue});if(!c&&b.logged)a.queueTable.data.push({name:b.queue,loggedAt:b.loggedAt,penalty:b.penalty}),_.remove(a.queues,{name:b.queue}),g.stop("agentqueue-spinner"),a.enableLeave=!0;else if(c&&!b.logged){var e=_.remove(a.queueTable.data,{name:b.queue});a.queues.push(e[0])}}}),j.socket.on("user_has_voice_queue:remove",function(b){if(b.UserId==d){ +var c=_.remove(a.queueTable.data,{name:b.queue});a.queues.push(c[0]),g.stop("agentqueue-spinner"),a.enableLeave=!0}}),a.close=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("VoiceRealtimeViewOutboundCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","ReportDial","Pause","Action","usSpinnerService","$q","uiGridConstants","$timeout","Auth",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){function o(){return j.spin("spinner-grid"),g.get({controller:"active",controller2:"calls"}).$promise.then(function(b){a.gridOptions.data=b.rows})["catch"](function(a){f.error(a)})["finally"](function(){p(),j.stop("spinner-grid")})}function p(){e.socket.on("report_dial:save",function(b){a.gridOptions.data.unshift(b)}),e.socket.on("report_dial:update",function(b){var c=_.find(a.gridOptions.data,{uniqueid:b.uniqueid});c&&(_.merge(c,b),!c.endtime||c.answertime&&c.answertime==c.endtime||m(function(){_.remove(a.gridOptions.data,{uniqueid:c.uniqueid})},3e3))})}a.moment=moment,a.initDials=function(){a.gridOptions={paginationPageSizes:[10,25,50,75],paginationPageSize:10,headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,columnDefs:[{name:"uniqueid",displayName:"APPLICATION_UNIQUEID",headerCellFilter:"translate",cellClass:"text-center"},{name:"agent",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.channel.split('/')[1].split('-')[0]}}</div>"},{name:"calleridnum",displayName:"APPLICATION_CALLERID",headerCellFilter:"translate",cellClass:"text-center"},{name:"dialstring",cellClass:"text-center"},{name:"status",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span data-ng-if="!row.entity.endtime && !row.entity.answertime">{{\'APPLICATION_RINGING\' | translate}}</span><span data-ng-if="row.entity.answertime && !row.entity.endtime">{{\'APPLICATION_TALKING\' | translate}}</span><span data-ng-if="row.entity.answertime && row.entity.endtime">{{\'APPLICATION_COMPLETE\' | translate}}</span><span data-ng-if="row.entity.endtime && !row.entity.answertime">{{\'APPLICATION_\'+row.entity.dialstatus | translate}}</span><span data-ng-if="!row.entity.endtime && grid.appScope.showTimers"> <css-timer start-time="row.entity.updatedAt"></css-timer></span></div>',enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1}],data:[],gridMenuTitleFilter:function(a){var b=k.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){q(a.gridOptions.data.length)})}},o()};var q=function(a){var b=a?30*a+100:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("report_dial")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.realtime.view.outbound",{url:"/outbound",templateUrl:"app/channels/voice/realtime/view/outbound/outbound.html",controller:"VoiceRealtimeViewOutboundCtrl"})}]),angular.module("xCallyShuttleApp").controller("VoiceRealtimeViewParameterCtrl",["$scope","$translate","Dashboard","VoiceQueue","Auth","socket","uiGridConstants",function(a,b,c,d,e,f,g){function h(a){var b=a?30*a+150:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")}function i(b){var c=_.find(a.gridOptions.data,{name:b.queue});c&&(c[b.type]+=b.amount)}var j={offset:0,limit:10};a.initParameters=function(){switch(a.user=e.getCurrentUser(),a.$on("$destroy",function(){f.socket.removeAllListeners("voice:inbound")}),a.user.role){case"admin":c.get({id:"voice",controller:"init"}).$promise.then(function(b){for(var c in b.queues)b.queues[c].waiting=b.queues[c].waiting||0,b.queues[c].active=b.queues[c].active||0,b.queues[c].complete=b.queues[c].complete||0,b.queues[c].abandon=b.queues[c].abandon||0,b.queues[c].unmanaged=b.queues[c].unmanaged||0,b.queues[c].holdtime=b.queues[c].holdtime||0,b.queues[c].talktime=b.queues[c].talktime||0,a.gridOptions.data.push(b.queues[c])})["catch"](function(a){console.error(a)});break;case"user":c.get({id:"voice",controller:"init"}).$promise.then(function(b){for(var c in b.queues){var d=_.find(a.user.PVoiceQueues,{name:c});d&&(b.queues[c].waiting=b.queues[c].waiting||0,b.queues[c].active=b.queues[c].active||0,b.queues[c].complete=b.queues[c].complete||0,b.queues[c].abandon=b.queues[c].abandon||0,b.queues[c].unmanaged=b.queues[c].unmanaged||0,b.queues[c].holdtime=b.queues[c].holdtime||0,b.queues[c].talktime=b.queues[c].talktime||0,a.gridOptions.data.push(b.queues[c]))}})["catch"](function(a){console.error(a)})}f.socket.on("voice:inbound",function(a){i(a)})},a.gridOptions={headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,enableSorting:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,columnDefs:[{name:"name",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter"},{name:"waiting",displayName:"APPLICATION_WAITING",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"active",displayName:"APPLICATION_ACTIVE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"complete",displayName:"APPLICATION_ANSWERED",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",enableSorting:!1,enableColumnMenu:!1,filters:[{condition:g.filter.GREATER_THAN_OR_EQUAL,placeholder:"from"},{condition:g.filter.LESS_THAN_OR_EQUAL,placeholder:"to"}]},{name:"abandon",displayName:"APPLICATION_ABANDONED",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",enableSorting:!1,enableColumnMenu:!1,filters:[{condition:g.filter.GREATER_THAN_OR_EQUAL,placeholder:"from"},{condition:g.filter.LESS_THAN_OR_EQUAL,placeholder:"to"}]},{name:"unmanaged",displayName:"APPLICATION_UNMANAGED",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",enableSorting:!1,enableColumnMenu:!1,filters:[{condition:g.filter.GREATER_THAN_OR_EQUAL,placeholder:"from"},{condition:g.filter.LESS_THAN_OR_EQUAL,placeholder:"to"}]},{name:"holdtime",displayName:"APPLICATION_HOLDTIME",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.holdtime | secToTime | date:'HH:mm:ss'}}</div>",enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"talktime",displayName:"APPLICATION_TALKTIME",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.talktime | secToTime | date:'HH:mm:ss'}}</div>",enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"totalCalls",displayName:"APPLICATION_TOTAL_CALLS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.complete + row.entity.abandon + row.entity.unmanaged}}</div>",enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1}],data:[],onRegisterApi:function(b){a.gridApi=b,a.gridApi.core.on.sortChanged(a,function(a,b){0===b.length?j.order=null:j.order=b[0].name+" "+b[0].sort.direction.toUpperCase()}),a.gridApi.pagination.on.paginationChanged(a,function(a,b){h(b),j.offset=(a-1)*b,j.limit=b}),a.gridApi.core.on.filterChanged(a,function(){var a=this.grid;a.columns.forEach(function(a){a.filters.length>1?a.filters.forEach(function(b){b.term?64===b.condition?j[a.name+"_uiFrom"]=b.term:256===b.condition&&(j[a.name+"_uiTo"]=b.term):64===b.condition?delete j[a.name+"_uiFrom"]:256===b.condition&&delete j[a.name+"_uiTo"]}):a.filters.length&&a.filters[0].term?j[a.name]=a.filters[0].term:delete j[a.name]})})}}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.realtime.view.parameters",{url:"/parameters",templateUrl:"app/channels/voice/realtime/view/parameter/parameter.html",controller:"VoiceRealtimeViewParameterCtrl"})}]),angular.module("xCallyShuttleApp").controller("VoiceRealtimeViewQueueCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","VoiceQueue","usSpinnerService","$q",function(a,b,c,d,e,f,g,h,i){function j(){return h.spin("spinner-grid"),g.get().$promise.then(function(b){a.queues=b.rows})["catch"](function(a){f.error(a)})["finally"](function(){k(),h.stop("spinner-grid")})}function k(){e.socket.on("voice_queue:save",function(b){_.find(a.queues,{name:b.name})||a.queues.push(b)}),e.socket.on("voice_queue:remove",function(b){_.remove(a.queues,{name:b.name})}),e.socket.on("user_has_voice_queue:save",function(b){if(b.queue===a.item.queue){var c=_.find(a.gridOptions.data,{id:b.UserId});c?(c.voicePause=b.paused,c.pauseType=b.reason):a.gridOptions.data.push({id:b.UserId,name:b.membername,voicePause:b.paused,pauseType:b.reason})}}),e.socket.on("user_has_voice_queue:remove",function(b){b.queue===a.item.queue&&_.remove(a.gridOptions.data,{id:b.UserId})})}a.moment=moment,a.item={},a.initQueues=function(){a.gridOptions={enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,enableSorting:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,columnDefs:[{name:"name",displayName:"APPLICATION_AGENT_NAME",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter"},{name:"paused",displayName:"APPLICATION_PAUSED",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div\">{{(row.entity.voicePause ? 'APPLICATION_YES' : 'APPLICATION_NO') | translate}}</div>"},{name:"pauseType",displayName:"APPLICATION_REASON",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.voicePause">{{row.entity.pauseType}}</div>'}],data:[],gridMenuTitleFilter:function(a){var b=i.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){l(a.gridOptions.paginationPageSize>a.gridOptions.data.length?a.gridOptions.data.length:a.gridOptions.paginationPageSize)}),a.gridApi.pagination.on.paginationChanged(a,function(b,c){l(c>a.gridOptions.data.length?a.gridOptions.data.length:c)})}},j(!0)},a.getAgents=function(b){return b?g.get({id:b,controller:"agents"}).$promise.then(function(b){a.gridOptions.data=_.filter(b.rows,function(a){return a.UserHasVoiceQueue.logged===!0})})["catch"](function(a){f.error(a)}):void(a.gridOptions.data=[])};var l=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("voice_queue"),e.unsyncUpdates("user_has_voice_queue")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.realtime.view.queues",{url:"/queues",templateUrl:"app/channels/voice/realtime/view/queue/queue.html",controller:"VoiceRealtimeViewQueueCtrl"})}]),angular.module("xCallyShuttleApp").controller("VoiceRealtimeViewQueueCallsCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","ReportQueue","Pause","Action","usSpinnerService","$q","uiGridConstants","$timeout",function(a,b,c,d,e,f,g,h,i,j,k,l,m){function n(){return j.spin("spinner-grid"),g.get({controller:"waiting",controller2:"calls"}).$promise.then(function(b){a.gridOptions.data=b.rows,p(10)})["catch"](function(a){f.error(a)})["finally"](function(){o(),j.stop("spinner-grid")})}function o(){e.socket.on("report_queue:save",function(b){a.gridOptions.data.unshift(b)}),e.socket.on("report_queue:update",function(b){var c=_.find(a.gridOptions.data,{id:b.id});if(c){var d={queuecallerabandon:b.queuecallerabandon,queuecallerleave:b.queuecallerleave};delete b.queuecallerabandon,delete b.queuecallerleave,_.merge(c,b),d.queuecallerabandon&&(c.queuecallerabandon=d.queuecallerabandon),d.queuecallerleave&&(c.queuecallerleave=d.queuecallerleave),(c.queuecallerabandon||c.queuecallercomplete||c.queuecallerexitreason)&&m(function(){_.remove(a.gridOptions.data,{id:b.id})},3e3)}})}a.moment=moment,a.initQueues=function(){a.gridOptions={headerCellFilter:"translate",paginationPageSizes:[10,25,50,75],paginationPageSize:10,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,columnDefs:[{name:"queue",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate"},{name:"status",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span data-ng-if="!row.entity.queuecallerleaveAt && !row.entity.queuecallerexit">{{\'APPLICATION_QUEUESTATUS_WAITING\' | translate}}</span><span data-ng-if="row.entity.queuecallerleaveAt && !row.entity.queuecallerabandon && !row.entity.queuecallercomplete && !row.entity.queuecallerexit">{{\'APPLICATION_ACTIVE\' | translate}}</span><span data-ng-if="row.entity.queuecallerleaveAt && row.entity.queuecallerabandon">{{\'APPLICATION_QUEUESTATUS_ABANDON\' | translate}}</span><span data-ng-if="row.entity.queuecallerleaveAt && row.entity.queuecallercomplete">{{\'APPLICATION_QUEUESTATUS_COMPLETE\' | translate}}</span><span data-ng-if="row.entity.queuecallerexitreason">{{row.entity.queuecallerexitreason}}</span><span data-ng-if="!row.entity.queuecallercomplete && !row.entity.queuecallerabandon && !row.entity.queuecallerexit && grid.appScope.showTimers"> <css-timer start-time="row.entity.updatedAt"></css-timer></span></div>',enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1},{name:"caller",displayName:"APPLICATION_CALLER",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.calleridnum || ''}} {{row.entity.calleridname || ''}}</div>",enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1},{name:"position",displayName:"APPLICATION_POSITION",headerCellFilter:"translate"},{name:"lastAssignedTo",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1}],data:[],gridMenuTitleFilter:function(a){var b=k.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.pagination.on.paginationChanged(a,function(a,b){p(b)})}},n()};var p=function(a){var b=a?30*a+100:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("report_queue")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.realtime.view.queuecalls",{url:"/queuecalls",templateUrl:"app/channels/voice/realtime/view/queuecalls/queuecalls.html",controller:"VoiceRealtimeViewQueueCallsCtrl"})}]),angular.module("xCallyShuttleApp").controller("VoiceRealtimeViewTelephoneCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","Telephone","Pause","Action","usSpinnerService","$q","uiGridConstants","$timeout",function(a,b,c,d,e,f,g,h,i,j,k,l,m){function n(){return j.spin("spinner-grid"),g.get(p).$promise.then(function(b){a.gridOptions.totalItems=b.count,a.gridOptions.data=b.rows})["catch"](function(a){f.error(a)})["finally"](function(){j.stop("spinner-grid")})}function o(){e.socket.on("agent:save",function(b){var c=_.find(a.gridOptions.data,{id:b.id});c&&(c.status=b.status,c.statusAt=b.statusAt,c.ipaddr=b.ipaddr,c.port=b.port,c.fullcontact=b.fullcontact,c.useragent=b.useragent,c.lastms=b.lastms,c.internal=b.internal)}),e.socket.on("agent:remove",function(b){_.remove(a.gridOptions.data,{id:b.id})})}var p={offset:0,limit:10};a.moment=moment,a.initTelephones=function(){a.gridOptions={enableGridMenu:!0,headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,useExternalPagination:!0,useExternalSorting:!0,useExternalFiltering:!0,multiSelect:!0,showTreeExpandNoChildren:!0,columnDefs:[{name:"name",displayName:"APPLICATION_TELEPHONE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.name}} <{{row.entity.internal}}></div>"},{name:"status",displayName:"APPLICATION_PHONE_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{'APPLICATION_'+row.entity.status | translate}} <span data-ng-if=\"row.entity.statusAt && (row.entity.status === 'BUSY' || row.entity.status === 'ONHOLD' || row.entity.status === 'INUSE')\"><span data-ng-if=\"grid.appScope.showTimers\"><css-timer start-time=\"row.entity.statusAt\"></css-timer></span></span></div>",filter:{type:l.filter.SELECT,selectOptions:[{value:"UNKNOWN",label:d.instant("APPLICATION_UNKNOWN")},{value:"NOT_INUSE",label:d.instant("APPLICATION_NOT_INUSE")},{value:"INUSE",label:d.instant("APPLICATION_INUSE")},{value:"BUSY",label:d.instant("APPLICATION_BUSY")},{value:"INVALID",label:d.instant("APPLICATION_INVALID")},{value:"UNAVAILABLE",label:d.instant("APPLICATION_UNAVAILABLE")},{value:"RINGING",label:d.instant("APPLICATION_RINGING")},{value:"RINGINUSE",label:d.instant("APPLICATION_RINGINUSE")},{value:"ONHOLD",label:d.instant("APPLICATION_ONHOLD")}]}},{name:"action",displayName:"",width:170,cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><button class="btn btn-xs blue-madison" data-ng-click="grid.appScope.showInfo(row.entity)"><i class="icon-info"></i></button><div>',enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1}],data:[],gridMenuTitleFilter:function(a){var b=k.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){q(a.gridOptions.data.length)}),a.gridApi.core.on.sortChanged(a,function(a,b){0===b.length?p.order=null:p.order=b[0].name+" "+b[0].sort.direction.toUpperCase(),n()}),a.gridApi.pagination.on.paginationChanged(a,function(a,b){p.offset=(a-1)*b,p.limit=b,n()}),a.gridApi.core.on.filterChanged(a,function(){var a=this.grid;a.columns.forEach(function(a){a.filters[0].term?p[a.name]=a.filters[0].term:delete p[a.name]}),n()})}},n(),m(function(){o()})};var q=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("agent")}),a.showInfo=function(a){c.open({animation:!0,templateUrl:"app/channels/voice/realtime/view/telephone/telephone.modal.info.html",controller:"VoiceRealtimeViewTelephoneInfoModalCtrl",resolve:{telephone:a}})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.realtime.view.telephones",{url:"/telephones",templateUrl:"app/channels/voice/realtime/view/telephone/telephone.html",controller:"VoiceRealtimeViewTelephoneCtrl",data:{permissions:{only:["admin","user"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").controller("VoiceRealtimeViewTelephoneInfoModalCtrl",["$scope","$uibModalInstance","$http","telephone",function(a,b,c,d){a.telephone=d,a.close=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("VoiceRealtimeViewCtrl",["$scope","Auth",function(a,b){a.Auth=b,a.timerSwitch={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"primary"},a.showTimers=!1}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.realtime.view",{url:"/view",templateUrl:"app/channels/voice/realtime/view/view.html",controller:"VoiceRealtimeViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("VoiceRecordingListCtrl",["$scope","$translate","$sce","Recording","gridOptions","xAlert","uiGridConstants","Auth",function(a,b,c,d,e,f,g,h){a.Recording=d,a.updateRating=function(a,c){return d.update({id:a,rating:c}).$promise.then(function(){f.show(b.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.initView=function(){var b={exporterCsvFilename:"recordings.csv",rowHeight:30,primaryKey:"id",columnDefs:[{name:"uniqueid"},{name:"customerPhone",displayName:"APPLICATION_CUSTOMER_PHONE",cellClass:"text-center ui-grid-vcenter"},{name:"membername"},{name:"type",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><i data-ng-class=\"{'icon-call-in font-green':row.entity.type === 'inbound','icon-call-out font-red':row.entity.type === 'outbound','icon-control-forward font-red':row.entity.type === 'tigerdial','icon-question':row.entity.type === 'unknown','icon-earphones font-purple':row.entity.type === 'internal','fa fa-user-secret font-blue':row.entity.type === 'chanspy'}\"></i></div>",filter:{type:g.filter.SELECT,selectOptions:[{value:"inbound",label:"Inbound"},{value:"internal",label:"Internal"},{value:"outbound",label:"Outbound"},{value:"tigerdial",label:"Motion Dialer"},{value:"chanspy",label:"ChanSpy"},{value:"unknown",label:"Unknown"}]}},{name:"queue"},{name:"createdAt",displayName:"APPLICATION_DATE",headerCellFilter:"translate",filterHeaderTemplate:'<div class="ui-grid-filter-container row"><div ng-repeat="colFilter in col.filters" class="col-md-6 col-md-offset-0 col-sm-5 col-sm-offset-0 col-xs-5 col-xs-offset-0"><div custom-grid-date-filter-header></div></div></div>',filters:[{name:"From",condition:g.filter.GREATER_THAN_OR_EQUAL},{name:"To",condition:g.filter.LESS_THAN_OR_EQUAL}],sort:{direction:g.DESC,priority:0}},{name:"rating",filter:{type:g.filter.SELECT,selectOptions:[{value:1,label:"1"},{value:2,label:"2"},{value:3,label:"3"},{value:4,label:"4"},{value:5,label:"5"}]},cellClass:"ui-grid-vcenter",width:"100",cellTemplate:'<div><uib-rating data-ng-model="row.entity.rating" data-ng-click="grid.appScope.updateRating(row.entity.id, row.entity.rating)" aria-labelledby="default-rating"></uib-rating></div>'},{name:"audio",displayName:"",width:100,enableSorting:!1,enableFiltering:!1,cellClass:"ui-grid-vcenter",cellTemplate:"<div><audio-file-download data-ng-if=\"row.entity.value.split('.').pop() == 'wav'\" params=\"{id:row.entity.id,controller:'stream'}\" resource=\"grid.appScope.Recording\"></audio-file-download><span data-ng-if=\"row.entity.value.split('.').pop() == 'gsm'\" title=\"{{'MESSAGE_GSM_PREVIEW_NOT_SUPPORTED' | translate}}\">{{'MESSAGE_GSM_PREVIEW_NOT_SUPPORTED' | translate}}</span></div>"},{name:"action",width:80,buttons:[{directive:"<motion-file-download params=\"{id:row.entity.id,controller:'stream'}\" resource=\"grid.appScope.Recording\" mimetype=\"'audio/'+row.entity.value.split('.').pop()\" btnclass=\"btn btn-xs blue-hoki\" filename=\"row.entity.uniqueid+'.'+row.entity.value.split('.').pop()\"></motion-file-download>"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.uniqueid, row.entity.id)",hide:!h.isAdmin()}]}]};a.gridOptions=e.gridOptions(d,b,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.recordings.list",{url:"/list",templateUrl:"app/channels/voice/recording/list/list.html",controller:"VoiceRecordingListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Recording",["$resource",function(a){return a("/api/voice/recordings/:id/:controller",{id:"@id"},{update:{method:"PUT"},patch:{method:"PATCH"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.recordings",{url:"/recordings",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:25}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.routes.inbound",{url:"/inbound",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("VoiceRouteInboundListCreateCtrl",["$scope","$uibModalInstance","Route","application","xAlert","$location","$translate","VoiceContext","socket",function(a,b,c,d,e,f,g,h,i){a.$application=d.application,a.forms={route:void 0},a.getContexts=function(){return h.get().$promise.then(function(b){a.voiceContexts=b.rows,i.syncUpdates("voice_context",a.voiceContexts)})["catch"](function(a){e.error(a)})},a.item={type:"inbound",appdata:"Inbound Call from ${CALLERID(num)}",context:"from-voip-provider"},a.ok=function(){return a.item.exten=a.$application.checkUnderscore(a.item.exten),c.save(a.item).$promise.then(function(a){b.close(a),f.path("/channels/voice/routes/inbound/view/"+a.id+"/applications")})["catch"](function(a){console.log(a),e.error(a)})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("VoiceRouteInboundListCtrl",["$scope","$http","socket","$translate","$rootScope","xAlert","Modal","stResource","gridOptions","Route","$uibModal","$location","$log",function(a,b,c,d,e,f,g,h,i,j,k,l,m){a.initView=function(){var b={exporterCsvFilename:"InboundRoutes.csv",columnDefs:[{name:"exten",displayName:"APPLICATION_PHONE_NUMBER"},{name:"description"},{name:"applications",cellClass:"ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.Applications.length"><span data-ng-repeat="app in row.entity.Applications | limitTo:2">{{app.app}}({{app.appdata[0]}}), </span>...</div><div data-ng-if="!row.entity.Applications.length">{{\'MESSAGE_NO_AVAILABLE_APPLICATIONS\' | translate}}</div>',enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/channels/voice/routes/inbound/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.exten, row.entity.id)"}]}]};a.gridOptions=i.gridOptions(j,b,a,{type:"inbound"})},a.create=function(){k.open({animation:!0,templateUrl:"app/channels/voice/route/inbound/list/create.modal.html",controller:"VoiceRouteInboundListCreateCtrl"})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.routes.inbound.list",{url:"/list",templateUrl:"app/channels/voice/route/inbound/list/list.html",controller:"VoiceRouteInboundListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("VoiceRouteInboundViewCtrl",["$scope","$translate","$stateParams","socket","$location","WizardHandler","Modal","xAlert","application","interval","Route","VoiceQueue","Sound","SquareProject","VoiceContext","Interval","VoiceMail","User","Agent","Telephone","Trunk","Team",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v){function w(b){var c,d;if("always"===b.intType)c=null,d="*,*,*,*";else if("list"===b.intType)d=b.IntervalId?_.find(a.Intervals,{id:b.IntervalId}).name:"*,*,*,*",c=b.IntervalId||null;else if("custom"===b.intType){c=null;var e,f,g,h;e=b.t_from&&b.t_to&&!b.alwaysTime?moment(b.t_from).format("HH:mm")+"-"+moment(b.t_to).format("HH:mm"):"*",b.wd_from&&"always"!==b.wd_from?(f=b.wd_from,b.wd_to&&"always"!==b.wd_to&&(f+="-"+b.wd_to)):f="*",b.md_from&&"always"!==b.md_from?(g=b.md_from,b.md_to&&"always"!==b.md_to&&(g+="-"+b.md_to)):g="*",b.m_from&&"always"!==b.m_from?(h=b.m_from,b.m_to&&"always"!==b.m_to&&(h+="-"+b.m_to)):h="*",d=e+","+f+","+g+","+h}void 0===a.selectedApp?(a.application.interval=d,a.application.IntervalId=c):(a.route.Applications[a.selectedApp].interval=d,a.route.Applications[a.selectedApp].IntervalId=c)}function x(){if(a.interval.intType=a.route.Applications[a.selectedApp].IntervalId?"list":"*,*,*,*"===a.route.Applications[a.selectedApp].interval?"always":"custom",a.interval.IntervalId=a.route.Applications[a.selectedApp].IntervalId,!a.route.Applications[a.selectedApp].IntervalId){var b,c=a.route.Applications[a.selectedApp].interval?a.route.Applications[a.selectedApp].interval.split(","):["*","*","*","*"];c.forEach(function(c,d){switch(d){case 0:"*"!==c?(b=c.split("-"),a.interval.t_from=moment(b[0],"HH:mm"),a.interval.t_to=moment(b[1],"HH:mm"),a.interval.alwaysTime=!1):(a.interval.t_from=moment(new Date),a.interval.t_to=moment(new Date),a.interval.alwaysTime=!0);break;case 1:"*"!==c?(b=c.split("-"),a.interval.wd_from=b[0],a.interval.wd_to=b[1]?b[1]:"always"):(a.interval.wd_from="always",a.interval.wd_to="always");break;case 2:"*"!==c?(b=c.split("-"),a.interval.md_from=b[0],a.interval.md_to=b[1]?b[1]:"always"):(a.interval.md_from="always",a.interval.md_to="always");break;case 3:"*"!==c?(b=c.split("-"),a.interval.m_from=b[0],a.interval.m_to=b[1]?b[1]:"always"):(a.interval.m_from="always",a.interval.m_to="always")}})}}a.alwaysSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.$translate=b,a.selectedApp=void 0,a.showGrid=!0,a.$application=i.application,a.$interval=j.interval,a.selectedRows=[],a._=_,a.gridOptions={enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableSorting:!1,rowTemplate:'<div grid="grid" class="ui-grid-draggable-row" draggable="true"><div ng-repeat="(colRenderIndex, col) in colContainer.renderedColumns track by col.colDef.name" class="ui-grid-cell" ng-class="{ \'ui-grid-row-header-cell\': col.isRowHeader, \'custom\': true }" ui-grid-cell></div></div>',columnDefs:[{name:"app",headerCellFilter:"translate",displayName:"APPLICATION_APPLICATION",enableColumnMenu:!1},{name:"appType",headerCellFilter:"translate",displayName:"APPLICATION_INFO",cellClass:"ui-grid-vcenter",cellTemplate:"<div>{{'APPLICATION_APPS_'+(row.entity.appType || (grid.appScope._.find(grid.appScope.$application.applications,{value:row.entity.app}) ? row.entity.app : 'custom')).toUpperCase() | translate}}</div>",enableColumnMenu:!1},{name:"appdata",headerCellFilter:"translate",displayName:"APPLICATION_ARGUMENTS",cellClass:"ui-grid-vcenter",cellTemplate:"<div>{{row.entity.appdata.join(',')}}</div>",enableColumnMenu:!1},{name:"interval",headerCellFilter:"translate",displayName:"APPLICATION_TIME_INTERVAL",enableColumnMenu:!1},{name:"action",enableColumnMenu:!1,headerCellFilter:"translate",displayName:"APPLICATION_ACTION",width:125,cellClass:"ui-grid-vcenter",cellTemplate:'<div><a class="btn btn-xs blue-hoki" data-ng-click="grid.appScope.openApplication(grid.appScope.gridOptions.data.indexOf(row.entity))"><i class="icon-settings"></i></a><a class="btn btn-xs red-sunglo" data-ng-click="grid.appScope.deleteApp(row.entity.app+\' application\', grid.appScope.gridOptions.data.indexOf(row.entity))"><i class="fa fa-trash"></i></a></div>'}],onRegisterApi:function(b){b.selection.on.rowSelectionChanged(a,function(b){b.isSelected?a.selectedRows.push(b.entity):_.pull(a.selectedRows,b.entity)}),b.selection.on.rowSelectionChangedBatch(a,function(b){b[0].isSelected?a.selectedRows=_.map(b,"entity"):a.selectedRows=[]}),b.draggableRows.on.rowDropped(a,function(b,c){a.updateRoute()}),b.grid.registerDataChangeCallback(function(){y(a.gridOptions.data.length)})}};var y=function(a){var b=a?30*a+120:177;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px")};a.initApplication=function(b){b&&(a.selectedApp=void 0),a.forms={settings:void 0,interval:void 0},a.application={},a.interval={intType:"always",t_from:moment(new Date),t_to:moment(new Date),wd_from:"always",wd_to:"always",md_from:"always",md_to:"always",m_from:"always",m_to:"always",alwaysTime:!0},a.main={app:""}},a.$watch("interval",function(a){a&&w(a)},!0),a.updateSetAppdata=function(){a.application.variable&&a.application.value&&"Set"===a.main.app.value?a.application.appdata[0]=a.application.variable+"="+a.application.value:a.application.appdata[0]=null; +},a.updateSetAppdataSettings=function(){a.application.variable&&a.application.value&&"Set"===a.main.app.value?a.route.Applications[a.selectedApp].appdata[0]=a.application.variable+"="+a.application.value:a.route.Applications[a.selectedApp].appdata[0]=null},a.updateVideoOnAppdata=function(){a.application.domain&&a.application.theme&&"Set"===a.main.app.value&&"videoOn"===a.main.app.type?a.application.appdata[0]="_xcally_motion_video_room_id=https://"+a.application.domain+"/split_agent_popup.php?theme="+a.application.theme+"&room=${SIP_HEADER(X-Split-Id)}":a.application.appdata[0]=null},a.updateVideoOnAppdataSettings=function(){a.application.domain&&a.application.theme&&"Set"===a.main.app.value&&"videoOn"===a.main.app.type?a.route.Applications[a.selectedApp].appdata[0]="_xcally_motion_video_room_id=https://"+a.application.domain+"/split_agent_popup.php?theme="+a.application.theme+"&room=${SIP_HEADER(X-Split-Id)}":a.route.Applications[a.selectedApp].appdata[0]=null},a.$watch("main.app",function(b){if(b){var c,d,e={},f={};switch(void 0===a.selectedApp&&(a.application={appType:b.type,app:b.value,interval:a.application.interval||"*,*,*,*",appdata:[]}),b.value){case"Queue":c=l,d=m;break;case"Playback":c=m;break;case"AGI":c=n;break;case"Goto":c=o;break;case"Voicemail":c=q;break;case"Dial":switch(b.type){case"internalDial":c=r,e={controller:"all"};break;case"externalDial":c=u}}if(c)return c.get(e).$promise.then(function(b){a.items=b.rows}).then(function(){return d?d.get(f).$promise:void 0}).then(function(b){b&&(a.items2=b.rows)})["catch"](function(a){h.error(a)})}},!0),a.deselectAndRedirect=function(b){a.selectedApp=void 0,e.path(b)},a.initRingGroup=function(){var b,c,d;return void 0===a.selectedApp?a.usersArray=[]:a.usersArray=_.map(a.route.Applications[a.selectedApp].appdata[0].split("&"),function(a){return a.split("/")[1]}),r.get().$promise.then(function(a){return b=a,s.get().$promise}).then(function(a){return c=a,t.get().$promise}).then(function(e){d=e,ComponentsDropdowns.bindUserByRole(b,c,d,function(b){a.usersArray=_.union(b,a.usersArray),void 0===a.selectedApp?(a.application.appdata[0]=null,a.application.appdata[0]=_.map(a.usersArray,function(a){return"SIP/"+a}).join("&")):(a.route.Applications[a.selectedApp].appdata[0]=null,a.route.Applications[a.selectedApp].appdata[0]=_.map(a.usersArray,function(a){return"SIP/"+a}).join("&"))},function(b){a.usersArray=_.difference(a.usersArray,b),void 0===a.selectedApp?(a.application.appdata[0]=null,a.application.appdata[0]=_.map(a.usersArray,function(a){return"SIP/"+a}).join("&")):(a.route.Applications[a.selectedApp].appdata[0]=null,a.route.Applications[a.selectedApp].appdata[0]=_.map(a.usersArray,function(a){return"SIP/"+a}).join("&"))},a.route.Applications[a.selectedApp]?a.route.Applications[a.selectedApp].appdata:null)})["catch"](function(a){console.error(a)})},a.getIntervals=function(){return p.get().$promise.then(function(b){a.Intervals=b.rows,d.syncUpdates("interval",a.Intervals)})["catch"](function(a){h.error(a)})},a.getRoute=function(){return k.get({id:c.id}).$promise.then(function(b){a.route=b,a.gridOptions.data=b.Applications,y(a.gridOptions.data.length)})["catch"](function(a){e.path("/channels/voice/routes/inbound/list")})},a.getApplication=function(){if(void 0===a.selectedApp)e.path("/channels/voice/routes/inbound/list");else{if(a.showGrid=!0,a.route.Applications[a.selectedApp].appType)a.main.app=_.find(a.$application.applications,{type:a.route.Applications[a.selectedApp].appType});else{var b=_.find(a.$application.applications,{value:a.route.Applications[a.selectedApp].app});if(b)a.main.app=b;else{a.main.app=_.find(a.$application.applications,{type:"custom"});var c=a.route.Applications[a.selectedApp].appdata.join(",");a.route.Applications[a.selectedApp].appdata=[c],a.route.Applications[a.selectedApp].appType="custom"}}if("Set"===a.main.app.value&&!a.main.app.type){var d=a.route.Applications[a.selectedApp].appdata[0].split("=");a.application.variable=d[0],a.application.value=d[1]}if("Set"===a.main.app.value&&"videoOn"===a.main.app.type){var f=new Url(a.route.Applications[a.selectedApp].appdata[0].split("=").slice(1).join("="));a.application.domain=f.host+(f.port?":"+f.port:""),a.application.theme=f.query.theme}x()}},a.openApplication=function(b){a.selectedApp=b,a.showGrid=!1,e.path("/channels/voice/routes/inbound/view/"+c.id+"/applications/settings")},a.updateRoute=function(d){return a.route.exten=a.$application.checkUnderscore(a.route.exten),_.forEach(a.route.Applications,function(a){if("custom"!==a.appType)switch(a.app){case"Dial":var b;switch(a.appType){case"externalDial":b=3;break;case"internalDial":b=2;break;default:b=2}a.appdata[b]=a.appdata[b]||"",a.appdata[b]+=(_.includes(a.appdata[b],"x")?"":"x")+(_.includes(a.appdata[b],"X")?"":"X");break;case"Queue":a.appdata[1]=a.appdata[1]||"",a.appdata[1]+=(_.includes(a.appdata[1],"x")?"":"x")+(_.includes(a.appdata[1],"X")?"":"X")}}),k.update({id:a.route.id},a.route).$promise.then(function(f){a.selectedApp=void 0,h.show(b.instant("MESSAGE_WELL_DONE")+"!","success"),d&&e.path("/channels/voice/routes/inbound/view/"+c.id+"/"+d)})["catch"](function(a){console.log(a),h.error(a)})},a.getContexts=function(){return o.get().$promise.then(function(b){a.voiceContexts=b.rows,d.syncUpdates("voice_context",a.voiceContexts)})["catch"](function(a){h.error(a)})},a.deleteApp=g.confirm["delete"](function(b){a.route.Applications.splice(b,1),a.updateRoute()}),a.deleteItems=g.confirm["delete"](function(){_.remove(a.route.Applications,function(b){return _.includes(a.selectedRows,b)}),a.selectedRows=[],a.updateRoute()}),a.addApplication=function(){a.route.Applications.push(a.application),a.updateRoute("applications")},a.goNext=function(){f.wizard().next()},a.previous=function(){f.wizard().previous()},a.formValidation=function(a){return a},a.$on("destroy",function(){d.unsyncUpdates("voice_extension")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.routes.inbound.view",{url:"/view/:id",templateUrl:"app/channels/voice/route/inbound/view/view.html",controller:"VoiceRouteInboundViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.voice.routes.inbound.view.settings",{url:"/settings",templateUrl:"app/channels/voice/route/inbound/view/view.settings.html"}).state("main.channels.voice.routes.inbound.view.applications",{url:"/applications",templateUrl:"app/channels/voice/route/inbound/view/view.applications.html"}).state("main.channels.voice.routes.inbound.view.application",{url:"/application",templateUrl:"app/channels/voice/route/view.application.html",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}}).state("main.channels.voice.routes.inbound.view.applications.settings",{url:"/settings",templateUrl:"app/channels/voice/route/view.applicationSettings.html",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.routes.internal",{url:"/internal",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("VoiceRouteInternalListCreateCtrl",["$scope","$uibModalInstance","Route","application","$location","$translate","xAlert","VoiceContext","socket",function(a,b,c,d,e,f,g,h,i){a.$application=d.application,a.forms={route:void 0},a.getContexts=function(){return h.get().$promise.then(function(b){a.voiceContexts=b.rows,i.syncUpdates("voice_context",a.voiceContexts)})["catch"](function(a){g.error(a)})},a.item={type:"internal",appdata:"Internal Call from ${CALLERID(num)}",context:"from-sip"},a.ok=function(){return a.item.exten=a.$application.checkUnderscore(a.item.exten),c.save(a.item).$promise.then(function(a){b.close(a),e.path("/channels/voice/routes/internal/view/"+a.id+"/applications")})["catch"](function(a){g.error(a)})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("VoiceRouteInternalListCtrl",["$scope","$http","socket","$translate","$rootScope","xAlert","Modal","stResource","gridOptions","Route","$uibModal","$location","$log",function(a,b,c,d,e,f,g,h,i,j,k,l,m){a.initView=function(){var b={exporterCsvFilename:"InternalRoutes.csv",columnDefs:[{name:"exten",displayName:"APPLICATION_PHONE_NUMBER"},{name:"description"},{name:"applications",cellClass:"ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.Applications.length"><span data-ng-repeat="app in row.entity.Applications | limitTo:2">{{app.app}}({{app.appdata[0]}}),</span>...</div><div data-ng-if="!row.entity.Applications.length">{{\'MESSAGE_NO_AVAILABLE_APPLICATIONS\' | translate}}</div>',enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/channels/voice/routes/internal/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.exten, row.entity.id)"}]}]};a.gridOptions=i.gridOptions(j,b,a,{type:"internal"})},a.create=function(){k.open({animation:!0,templateUrl:"app/channels/voice/route/internal/list/create.modal.html",controller:"VoiceRouteInternalListCreateCtrl"})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.routes.internal.list",{url:"/list",templateUrl:"app/channels/voice/route/internal/list/list.html",controller:"VoiceRouteInternalListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("VoiceRouteInternalViewCtrl",["$scope","$translate","$stateParams","socket","$location","WizardHandler","Modal","xAlert","application","interval","Route","VoiceQueue","Sound","SquareProject","VoiceContext","Interval","VoiceMail","User","Agent","Telephone","Trunk",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u){function v(b){var c,d;if("always"===b.intType)c=null,d="*,*,*,*";else if("list"===b.intType)d=b.IntervalId?_.find(a.Intervals,{id:b.IntervalId}).name:"*,*,*,*",c=b.IntervalId||null;else if("custom"===b.intType){c=null;var e,f,g,h;e=b.t_from&&b.t_to&&!b.alwaysTime?moment(b.t_from).format("HH:mm")+"-"+moment(b.t_to).format("HH:mm"):"*",b.wd_from&&"always"!==b.wd_from?(f=b.wd_from,b.wd_to&&"always"!==b.wd_to&&(f+="-"+b.wd_to)):f="*",b.md_from&&"always"!==b.md_from?(g=b.md_from,b.md_to&&"always"!==b.md_to&&(g+="-"+b.md_to)):g="*",b.m_from&&"always"!==b.m_from?(h=b.m_from,b.m_to&&"always"!==b.m_to&&(h+="-"+b.m_to)):h="*",d=e+","+f+","+g+","+h}void 0===a.selectedApp?(a.application.interval=d,a.application.IntervalId=c):(a.route.Applications[a.selectedApp].interval=d,a.route.Applications[a.selectedApp].IntervalId=c)}function w(){if(a.interval.intType=a.route.Applications[a.selectedApp].IntervalId?"list":"*,*,*,*"===a.route.Applications[a.selectedApp].interval?"always":"custom",a.interval.IntervalId=a.route.Applications[a.selectedApp].IntervalId,!a.route.Applications[a.selectedApp].IntervalId){var b,c=a.route.Applications[a.selectedApp].interval?a.route.Applications[a.selectedApp].interval.split(","):["*","*","*","*"];c.forEach(function(c,d){switch(d){case 0:"*"!==c?(b=c.split("-"),a.interval.t_from=moment(b[0],"HH:mm"),a.interval.t_to=moment(b[1],"HH:mm"),a.interval.alwaysTime=!1):(a.interval.t_from=moment(new Date),a.interval.t_to=moment(new Date),a.interval.alwaysTime=!0);break;case 1:"*"!==c?(b=c.split("-"),a.interval.wd_from=b[0],a.interval.wd_to=b[1]?b[1]:"always"):(a.interval.wd_from="always",a.interval.wd_to="always");break;case 2:"*"!==c?(b=c.split("-"),a.interval.md_from=b[0],a.interval.md_to=b[1]?b[1]:"always"):(a.interval.md_from="always",a.interval.md_to="always");break;case 3:"*"!==c?(b=c.split("-"),a.interval.m_from=b[0],a.interval.m_to=b[1]?b[1]:"always"):(a.interval.m_from="always",a.interval.m_to="always")}})}}a.alwaysSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.$translate=b,a.selectedApp=void 0,a.showGrid=!0,a.$application=angular.copy(i.application),_.remove(a.$application.applications,{value:"videoOn"}),a.$interval=j.interval,a._=_,a.selectedRows=[],a.gridOptions={enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableSorting:!1,rowTemplate:'<div grid="grid" class="ui-grid-draggable-row" draggable="true"><div ng-repeat="(colRenderIndex, col) in colContainer.renderedColumns track by col.colDef.name" class="ui-grid-cell" ng-class="{ \'ui-grid-row-header-cell\': col.isRowHeader, \'custom\': true }" ui-grid-cell></div></div>',columnDefs:[{name:"app",headerCellFilter:"translate",displayName:"APPLICATION_APPLICATION",enableColumnMenu:!1},{name:"appType",headerCellFilter:"translate",displayName:"APPLICATION_INFO",cellClass:"ui-grid-vcenter",cellTemplate:"<div>{{'APPLICATION_APPS_'+(row.entity.appType || (grid.appScope._.find(grid.appScope.$application.applications,{value:row.entity.app}) ? row.entity.app : 'custom')).toUpperCase() | translate}}</div>",enableColumnMenu:!1},{name:"appdata",headerCellFilter:"translate",displayName:"APPLICATION_ARGUMENTS",cellClass:"ui-grid-vcenter",cellTemplate:"<div>{{row.entity.appdata.join(',')}}</div>",enableColumnMenu:!1},{name:"interval",headerCellFilter:"translate",displayName:"APPLICATION_TIME_INTERVAL",enableColumnMenu:!1},{name:"action",enableColumnMenu:!1,headerCellFilter:"translate",displayName:"APPLICATION_ACTION",width:125,cellClass:"ui-grid-vcenter",cellTemplate:'<div><a class="btn btn-xs blue-hoki" data-ng-click="grid.appScope.openApplication(grid.appScope.gridOptions.data.indexOf(row.entity))"><i class="icon-settings"></i></a><a class="btn btn-xs red-sunglo" data-ng-click="grid.appScope.deleteApp(row.entity.app+\' application\', grid.appScope.gridOptions.data.indexOf(row.entity))"><i class="fa fa-trash"></i></a></div>'}],onRegisterApi:function(b){b.selection.on.rowSelectionChanged(a,function(b){b.isSelected?a.selectedRows.push(b.entity):_.pull(a.selectedRows,b.entity)}),b.selection.on.rowSelectionChangedBatch(a,function(b){b[0].isSelected?a.selectedRows=_.map(b,"entity"):a.selectedRows=[]}),b.draggableRows.on.rowDropped(a,function(b,c){a.updateRoute()}),b.grid.registerDataChangeCallback(function(){x(a.gridOptions.data.length)})}},a.deleteItems=g.confirm["delete"](function(){_.remove(a.route.Applications,function(b){return _.includes(a.selectedRows,b)}),a.selectedRows=[],a.updateRoute()}),a.initRingGroup=function(){var b,c,d;return void 0===a.selectedApp?a.usersArray=[]:a.usersArray=_.map(a.route.Applications[a.selectedApp].appdata[0].split("&"),function(a){return a.split("/")[1]}),r.get().$promise.then(function(a){return b=a,s.get().$promise}).then(function(a){return c=a,t.get().$promise}).then(function(e){d=e,ComponentsDropdowns.bindUserByRole(b,c,d,function(b){a.usersArray=_.union(b,a.usersArray),void 0===a.selectedApp?(a.application.appdata[0]=null,a.application.appdata[0]=_.map(a.usersArray,function(a){return"SIP/"+a}).join("&")):(a.route.Applications[a.selectedApp].appdata[0]=null,a.route.Applications[a.selectedApp].appdata[0]=_.map(a.usersArray,function(a){return"SIP/"+a}).join("&"))},function(b){a.usersArray=_.difference(a.usersArray,b),void 0===a.selectedApp?(a.application.appdata[0]=null,a.application.appdata[0]=_.map(a.usersArray,function(a){return"SIP/"+a}).join("&")):(a.route.Applications[a.selectedApp].appdata[0]=null,a.route.Applications[a.selectedApp].appdata[0]=_.map(a.usersArray,function(a){return"SIP/"+a}).join("&"))},a.route.Applications[a.selectedApp]?a.route.Applications[a.selectedApp].appdata:null)})["catch"](function(a){console.error(a)})};var x=function(a){var b=a?30*a+120:177;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px")};a.initApplication=function(b){b&&(a.selectedApp=void 0),a.forms={settings:void 0,interval:void 0},a.application={},a.interval={intType:"always",t_from:moment(new Date),t_to:moment(new Date),wd_from:"always",wd_to:"always",md_from:"always",md_to:"always",m_from:"always",m_to:"always",alwaysTime:!0},a.main={app:""}},a.$watch("interval",function(a){a&&v(a)},!0),a.updateSetAppdata=function(){a.application.variable&&a.application.value&&"Set"===a.main.app.value?a.application.appdata[0]=a.application.variable+"="+a.application.value:a.application.appdata[0]=null},a.updateSetAppdataSettings=function(){a.application.variable&&a.application.value&&"Set"===a.main.app.value?a.route.Applications[a.selectedApp].appdata[0]=a.application.variable+"="+a.application.value:a.application.appdata[0]=null},a.$watch("main.app",function(b){if(b){var c,d,e={},f={};switch(void 0===a.selectedApp&&(a.application={appType:b.type,app:b.value,interval:a.application.interval||"*,*,*,*",appdata:[]}),b.value){case"Queue":c=l,d=m;break;case"Playback":c=m;break;case"AGI":c=n;break;case"Goto":c=o;break;case"Voicemail":c=q;break;case"Dial":switch(b.type){case"internalDial":c=r,e={controller:"all"};break;case"externalDial":c=u}}if(c)return c.get(e).$promise.then(function(b){a.items=b.rows}).then(function(){return d?d.get(f).$promise:void 0}).then(function(b){b&&(a.items2=b.rows)})["catch"](function(a){h.error(a)})}},!0),a.deselectAndRedirect=function(b){a.selectedApp=void 0,e.path(b)},a.getIntervals=function(){return p.get().$promise.then(function(b){a.Intervals=b.rows,d.syncUpdates("interval",a.Intervals)})["catch"](function(a){h.error(a)})},a.getRoute=function(){return k.get({id:c.id}).$promise.then(function(b){a.route=b,a.gridOptions.data=b.Applications,x(a.gridOptions.data.length)})["catch"](function(a){e.path("/channels/voice/routes/internal/list")})},a.getApplication=function(){if(void 0===a.selectedApp)e.path("/channels/voice/routes/internal/list");else{if(a.showGrid=!0,a.route.Applications[a.selectedApp].appType)a.main.app=_.find(a.$application.applications,{type:a.route.Applications[a.selectedApp].appType});else{var b=_.find(a.$application.applications,{value:a.route.Applications[a.selectedApp].app});if(b)a.main.app=b;else{a.main.app=_.find(a.$application.applications,{type:"custom"});var c=a.route.Applications[a.selectedApp].appdata.join(",");a.route.Applications[a.selectedApp].appdata=[c],a.route.Applications[a.selectedApp].appType="custom"}}if("Set"===a.main.app.value){var d=a.route.Applications[a.selectedApp].appdata[0].split("=");a.application.variable=d[0],a.application.value=d[1]}w()}},a.openApplication=function(b){a.selectedApp=b,a.showGrid=!1,e.path("/channels/voice/routes/internal/view/"+c.id+"/applications/settings")},a.updateRoute=function(d){return a.route.exten=a.$application.checkUnderscore(a.route.exten),_.forEach(a.route.Applications,function(a){if("custom"!==a.appType)switch(a.app){case"Dial":var b;switch(a.appType){case"externalDial":b=3;break;case"internalDial":b=2;break;default:b=2}a.appdata[b]=a.appdata[b]||"",a.appdata[b]+=(_.includes(a.appdata[b],"x")?"":"x")+(_.includes(a.appdata[b],"X")?"":"X");break;case"Queue":a.appdata[1]=a.appdata[1]||"",a.appdata[1]+=(_.includes(a.appdata[1],"x")?"":"x")+(_.includes(a.appdata[1],"X")?"":"X")}}),k.update({id:a.route.id},a.route).$promise.then(function(f){a.selectedApp=void 0,h.show(b.instant("MESSAGE_WELL_DONE")+"!","success"),d&&e.path("/channels/voice/routes/internal/view/"+c.id+"/"+d)})["catch"](function(a){h.error(a)})},a.getContexts=function(){return o.get().$promise.then(function(b){a.voiceContexts=b.rows,d.syncUpdates("voice_context",a.voiceContexts)})["catch"](function(a){h.error(a)})},a.deleteApp=g.confirm["delete"](function(b){a.route.Applications.splice(b,1),a.updateRoute()}),a.addApplication=function(){a.route.Applications.push(a.application),a.updateRoute("applications")},a.goNext=function(){f.wizard().next()},a.previous=function(){f.wizard().previous()},a.formValidation=function(a){return a},a.$on("destroy",function(){d.unsyncUpdates("voice_extension")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.routes.internal.view",{url:"/view/:id",templateUrl:"app/channels/voice/route/internal/view/view.html",controller:"VoiceRouteInternalViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.voice.routes.internal.view.settings",{url:"/settings",templateUrl:"app/channels/voice/route/internal/view/view.settings.html"}).state("main.channels.voice.routes.internal.view.applications",{url:"/applications",templateUrl:"app/channels/voice/route/internal/view/view.applications.html"}).state("main.channels.voice.routes.internal.view.application",{url:"/application",templateUrl:"app/channels/voice/route/view.application.html",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}}).state("main.channels.voice.routes.internal.view.applications.settings",{url:"/settings",templateUrl:"app/channels/voice/route/view.applicationSettings.html",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}})}]),angular.module("xCallyShuttleApp").controller("VoiceRouteOutboundListCreateCtrl",["$scope","$uibModalInstance","Route","application","xAlert","$translate","$location","Tag","VoiceContext","socket",function(a,b,c,d,e,f,g,h,i,j){a.$application=d.application,a.forms={route:void 0},a.getContexts=function(){return i.get().$promise.then(function(b){a.voiceContexts=b.rows,j.syncUpdates("voice_context",a.voiceContexts)})["catch"](function(a){e.error(a)})},a.item={type:"outbound",appdata:"Outbound Call to ${CALLERID(dnid)}",context:"from-sip"},a.getTags=function(){return h.get().$promise.then(function(b){b.rows.unshift({name:"--"}),a.tags=b.rows})["catch"](function(a){e.error(a)})},a.ok=function(){return a.item.exten=a.$application.checkUnderscore(a.item.exten),c.save(a.item).$promise.then(function(a){b.close(a),g.path("/channels/voice/routes/outbound/view/"+a.id+"/routes")})["catch"](function(a){e.error(a)})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("VoiceRouteOutboundListCtrl",["$scope","$http","socket","$translate","$rootScope","xAlert","Modal","stResource","gridOptions","Route","$uibModal","$location","$log",function(a,b,c,d,e,f,g,h,i,j,k,l,m){a.initView=function(){var b={exporterCsvFilename:"OutboundRoutes.csv",columnDefs:[{name:"exten",displayName:"APPLICATION_DESTINATION_PATTERN"},{name:"description"},{name:"applications",cellClass:"ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.Applications.length"><span data-ng-repeat="app in row.entity.Applications | limitTo:2">{{app.app}}({{app.appdata[0]}}),</span>...</div><div data-ng-if="!row.entity.Applications.length">{{\'MESSAGE_NO_AVAILABLE_APPLICATIONS\' | translate}}</div>',enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/channels/voice/routes/outbound/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.exten, row.entity.id)"}]}]};a.gridOptions=i.gridOptions(j,b,a,{type:"outbound"})},a.create=function(){k.open({animation:!0,templateUrl:"app/channels/voice/route/outbound/list/create.modal.html",controller:"VoiceRouteOutboundListCreateCtrl"})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.routes.outbound.list",{url:"/list",templateUrl:"app/channels/voice/route/outbound/list/list.html",controller:"VoiceRouteOutboundListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.routes.outbound",{url:"/outbound",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("VoiceRouteOutboundViewCtrl",["$scope","xAlert","$translate","$stateParams","socket","$location","WizardHandler","Modal","application","interval","Route","Trunk","VoiceContext","Interval","Tag",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){function p(b){var c,d;if("always"===b.intType)c=null,d="*,*,*,*";else if("list"===b.intType)d=b.IntervalId?_.find(a.Intervals,{id:b.IntervalId}).name:"*,*,*,*",c=b.IntervalId||null;else if("custom"===b.intType){c=null;var e,f,g,h;e=b.t_from&&b.t_to&&!b.alwaysTime?moment(b.t_from).format("HH:mm")+"-"+moment(b.t_to).format("HH:mm"):"*",b.wd_from&&"always"!==b.wd_from?(f=b.wd_from,b.wd_to&&"always"!==b.wd_to&&(f+="-"+b.wd_to)):f="*",b.md_from&&"always"!==b.md_from?(g=b.md_from,b.md_to&&"always"!==b.md_to&&(g+="-"+b.md_to)):g="*",b.m_from&&"always"!==b.m_from?(h=b.m_from,b.m_to&&"always"!==b.m_to&&(h+="-"+b.m_to)):h="*",d=e+","+f+","+g+","+h}void 0===a.selectedApp?(a.application.interval=d,a.application.IntervalId=c):(a.route.Applications[a.selectedApp].interval=d,a.route.Applications[a.selectedApp].IntervalId=c)}function q(){if(a.interval.intType=a.route.Applications[a.selectedApp].IntervalId?"list":"*,*,*,*"===a.route.Applications[a.selectedApp].interval?"always":"custom",a.interval.IntervalId=a.route.Applications[a.selectedApp].IntervalId,!a.route.Applications[a.selectedApp].IntervalId){var b,c=a.route.Applications[a.selectedApp].interval?a.route.Applications[a.selectedApp].interval.split(","):["*","*","*","*"];c.forEach(function(c,d){switch(d){case 0:"*"!==c?(b=c.split("-"),a.interval.t_from=moment(b[0],"HH:mm"),a.interval.t_to=moment(b[1],"HH:mm"),a.interval.alwaysTime=!1):(a.interval.t_from=moment(new Date),a.interval.t_to=moment(new Date),a.interval.alwaysTime=!0);break;case 1:"*"!==c?(b=c.split("-"),a.interval.wd_from=b[0],a.interval.wd_to=b[1]?b[1]:"always"):(a.interval.wd_from="always",a.interval.wd_to="always");break;case 2:"*"!==c?(b=c.split("-"),a.interval.md_from=b[0],a.interval.md_to=b[1]?b[1]:"always"):(a.interval.md_from="always",a.interval.md_to="always");break;case 3:"*"!==c?(b=c.split("-"),a.interval.m_from=b[0],a.interval.m_to=b[1]?b[1]:"always"):(a.interval.m_from="always",a.interval.m_to="always")}})}}a.$translate=c,a.selectedApp=void 0,a.showGrid=!0,a.$application=i.application,a.$interval=j.interval,a._=_,a.recordSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.alwaysSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.selectedRows=[],a.gridOptions={enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableSorting:!1,rowTemplate:'<div grid="grid" class="ui-grid-draggable-row" draggable="true"><div ng-repeat="(colRenderIndex, col) in colContainer.renderedColumns track by col.colDef.name" class="ui-grid-cell" ng-class="{ \'ui-grid-row-header-cell\': col.isRowHeader, \'custom\': true }" ui-grid-cell></div></div>',columnDefs:[{name:"app",displayName:"APPLICATION_APPLICATION",cellClass:"ui-grid-vcenter",cellTemplate:"<div><span data-ng-if=\"row.entity.appType === 'externalDial'\">Default</span><span data-ng-if=\"row.entity.appType !== 'externalDial'\">{{row.entity.app}}</span></div>",headerCellFilter:"translate",enableColumnMenu:!1},{name:"appType",headerCellFilter:"translate",displayName:"APPLICATION_INFO",cellClass:"ui-grid-vcenter",cellTemplate:"<div>{{'APPLICATION_APPS_'+(row.entity.appType || (grid.appScope._.find(grid.appScope.$application.applications,{value:row.entity.app}) ? row.entity.app : 'custom')).toUpperCase() | translate}}</div>",enableColumnMenu:!1},{name:"appdata",displayName:"APPLICATION_ARGUMENTS",headerCellFilter:"translate",cellClass:"ui-grid-vcenter",cellTemplate:"<div>{{row.entity.appdata.join(',')}}</div>",enableColumnMenu:!1},{name:"interval",displayName:"APPLICATION_TIME_INTERVAL",headerCellFilter:"translate",enableColumnMenu:!1},{name:"action",displayName:"APPLICATION_ACTION",headerCellFilter:"translate",width:125,enableColumnMenu:!1,cellClass:"ui-grid-vcenter",cellTemplate:'<div><a class="btn btn-xs blue-hoki" data-ng-click="grid.appScope.openApplication(grid.appScope.gridOptions.data.indexOf(row.entity))"><i class="icon-settings"></i></a><a class="btn btn-xs red-sunglo" data-ng-click="grid.appScope.deleteApp(row.entity.app+\' application\', grid.appScope.gridOptions.data.indexOf(row.entity))"><i class="fa fa-trash"></i></a></div>'}],onRegisterApi:function(b){b.selection.on.rowSelectionChanged(a,function(b){b.isSelected?a.selectedRows.push(b.entity):_.pull(a.selectedRows,b.entity)}),b.selection.on.rowSelectionChangedBatch(a,function(b){b[0].isSelected?a.selectedRows=_.map(b,"entity"):a.selectedRows=[]}),b.draggableRows.on.rowDropped(a,function(b,c){a.updateRoute()}),b.grid.registerDataChangeCallback(function(){r(a.gridOptions.data.length)})}},a.deleteItems=h.confirm["delete"](function(){_.remove(a.route.Applications,function(b){return _.includes(a.selectedRows,b)}),a.selectedRows=[],a.updateRoute()});var r=function(a){var b=a?30*a+120:177;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px")};a.initApplication=function(b){b&&(a.selectedApp=void 0),a.forms={info:void 0,interval:void 0},a.application={},a.interval={intType:"always",t_from:moment(new Date),t_to:moment(new Date),wd_from:"always",wd_to:"always",md_from:"always",md_to:"always",m_from:"always",m_to:"always",alwaysTime:!0},a.main={app:""},a.applications=[{name:"Default",value:"Dial",type:"outboundDial"},{name:"Custom",value:"custom",type:"custom"}]},a.$watch("interval",function(a){a&&p(a)},!0),a.$watch("main.app",function(c){if(c){var d,e;switch(void 0===a.selectedApp&&(a.application={appType:c.type,app:c.value,interval:a.application.interval||"*,*,*,*",appdata:[]}),c.value){case"Dial":d=l;break;default:d=null,e=null}if(d)return d.get().$promise.then(function(b){a.items=b.rows}).then(function(){return e?e.get().$promise:void 0}).then(function(b){b&&(a.items2=b.rows)})["catch"](function(a){b.error(a)})}},!0),a.deselectAndRedirect=function(b){a.selectedApp=void 0,f.path(b)},a.getIntervals=function(){return n.get().$promise.then(function(b){a.Intervals=b.rows,e.syncUpdates("interval",a.Intervals)})["catch"](function(a){b.error(a)})},a.getRoute=function(){return k.get({id:d.id}).$promise.then(function(b){a.route=b,a.gridOptions.data=b.Applications,r(a.gridOptions.data.length)})["catch"](function(a){f.path("/channels/voice/routes/outbound/list")})},a.getApplication=function(){if(void 0===a.selectedApp)f.path("/channels/voice/routes/outbound/list");else{if(a.showGrid=!0,a.route.Applications[a.selectedApp].appType)a.main.app=_.find(a.applications,{type:a.route.Applications[a.selectedApp].appType});else{a.main.app=_.find(a.applications,{ +type:"custom"});var b=a.route.Applications[a.selectedApp].appdata.join(",");a.route.Applications[a.selectedApp].appdata=[b],a.route.Applications[a.selectedApp].appType="custom"}q()}},a.openApplication=function(b){a.selectedApp=b,a.showGrid=!1,f.path("/channels/voice/routes/outbound/view/"+d.id+"/routes/settings")},a.updateRoute=function(e){return a.route.exten=a.$application.checkUnderscore(a.route.exten),_.forEach(a.route.Applications,function(a){"outboundDial"===a.appType&&(a.appdata[4]=a.appdata[4]||"",a.appdata[4]+=(_.includes(a.appdata[4],"x")?"":"x")+(_.includes(a.appdata[4],"X")?"":"X"))}),k.update({id:a.route.id},a.route).$promise.then(function(g){a.selectedApp=void 0,b.show(c.instant("MESSAGE_WELL_DONE")+"!","success"),e&&f.path("/channels/voice/routes/outbound/view/"+d.id+"/"+e)})["catch"](function(a){b.error(a)})},a.getContexts=function(){return m.get().$promise.then(function(b){a.voiceContexts=b.rows,e.syncUpdates("voice_context",a.voiceContexts)})["catch"](function(a){b.error(a)})},a.getTags=function(){return o.get().$promise.then(function(b){b.rows.unshift({name:"--"}),a.tags=b.rows})["catch"](function(a){b.error(a)})},a.deleteApp=h.confirm["delete"](function(b){a.route.Applications.splice(b,1),a.updateRoute()}),a.addApplication=function(){a.route.Applications.push(a.application),a.updateRoute("routes")},a.goNext=function(){g.wizard().next()},a.previous=function(){g.wizard().previous()},a.formValidation=function(a){return a},a.$on("destroy",function(){e.unsyncUpdates("voice_extension")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.routes.outbound.view",{url:"/view/:id",templateUrl:"app/channels/voice/route/outbound/view/view.html",controller:"VoiceRouteOutboundViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.voice.routes.outbound.view.settings",{url:"/settings",templateUrl:"app/channels/voice/route/outbound/view/view.settings.html"}).state("main.channels.voice.routes.outbound.view.routes",{url:"/routes",templateUrl:"app/channels/voice/route/outbound/view/view.routes.html"}).state("main.channels.voice.routes.outbound.view.route",{url:"/route",templateUrl:"app/channels/voice/route/outbound/view/view.route.html"}).state("main.channels.voice.routes.outbound.view.routes.settings",{url:"/settings",templateUrl:"app/channels/voice/route/outbound/view/view.routeSettings.html"})}]),angular.module("xCallyShuttleApp").factory("Route",["$resource",function(a){return a("/api/voice/extensions/:id",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.routes",{url:"/routes",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:21}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice",{url:"/voice",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:7}}})}]),angular.module("xCallyShuttleApp").controller("VoiceVoicemailListCtrl",["$scope","VoiceMail","gridOptions",function(a,b,c){a.initView=function(){var d={exporterCsvFilename:"voice_mails.csv",primaryKey:"uniqueid",columnDefs:[{name:"mailbox"},{name:"fullname"},{name:"email"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/channels/voice/voicemails/view/{{row.entity.uniqueid}}/settings",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.mailbox, row.entity.uniqueid)"}]}]};a.gridOptions=c.gridOptions(b,d,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.voicemails.list",{url:"/list",templateUrl:"app/channels/voice/voicemail/list/list.html",controller:"VoiceVoicemailListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("VoiceVoicemailViewCtrl",["$scope","VoiceMail","VoiceMailMessage","VoiceContext","$http","xAlert","$translate","$stateParams","socket","$sce","Modal","$location","gridOptions","uiGridConstants",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){function o(){var b={exporterCsvFilename:"voice_mail_messages.csv",primaryKey:"id",columnDefs:[{name:"callerid"},{name:"stamp",displayName:"APPLICATION_DATE",cellClass:"ui-grid-vcenter",cellTemplate:"<div>{{grid.appScope.moment(row.entity.stamp).format('YYYY-MM-DD HH:mm:ss')}}</div>",sort:{direction:n.DESC,priority:0}},{name:"duration",cellClass:"ui-grid-vcenter",cellTemplate:"<div>{{row.entity.duration*1000 | date:'mm:ss'}}</div>"},{name:"audio",displayName:"",width:225,enableSorting:!1,enableFiltering:!1,buttons:[{directive:'<audio-file-download params="{id:row.entity.id,controller:\'download\'}" resource="grid.appScope.VoiceMailMessage"></audio-file-download>'}]},{name:"action",width:150,buttons:[{directive:'<motion-file-download params="{id:row.entity.id,controller:\'download\'}" resource="grid.appScope.VoiceMailMessage" mimetype="audio/wav" btnclass="btn btn-xs blue-hoki" filename="row.entity.msg_id+\'.wav\'"></motion-file-download>'},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.id, row.entity.id)"}]}]};a.gridOptions=m.gridOptions(c,b,a,{mailbox:a.voicemail.mailbox,context:a.voicemail.context})}a.moment=moment,a["switch"]={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.VoiceMailMessage=c,a.getVoicemail=function(){return b.get({id:h.uniqueid}).$promise.then(function(b){delete b.password,delete b.stamp,a.voicemail=b})["catch"](function(a){l.path("/voice/voicemails/list")})},a.updateVoiceVoicemail=function(){return b.update({id:h.uniqueid},a.voicemail).$promise.then(function(){f.show(g.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.getContexts=function(){return d.get().$promise.then(function(b){a.voiceContexts=b.rows})["catch"](function(a){f.error(a)})},a.getMessages=function(){return a.voicemail?void o():b.get({id:h.uniqueid}).$promise.then(function(b){delete b.password,delete b.stamp,a.voicemail=b,o()})["catch"](function(a){l.path("/voice/voicemails/view/"+h.uniqueid+"/settings")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.voicemails.view",{url:"/view/:uniqueid",templateUrl:"app/channels/voice/voicemail/view/view.html",controller:"VoiceVoicemailViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.voice.voicemails.view.settings",{url:"/settings",templateUrl:"app/channels/voice/voicemail/view/view.settings.html"}).state("main.channels.voice.voicemails.view.messages",{url:"/messages",templateUrl:"app/channels/voice/voicemail/view/view.messages.html"})}]),angular.module("xCallyShuttleApp").factory("VoiceMail",["$resource",function(a){return a("/api/voice/voicemails/:id/:controller",{uniqueid:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.voicemails",{url:"/voicemails",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:23}}})}]),angular.module("xCallyShuttleApp").factory("VoiceMailMessage",["$resource",function(a){return a("/api/voice/voicemails/messages/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("VoiceVoicemailWizardCtrl",["$scope","VoiceMail","xAlert","WizardHandler","$location","Setting",function(a,b,c,d,e,f){a.initWizard=function(){a.form={},a.item={context:"from-voicemail",attach:"no"}},a["switch"]={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.next=function(){d.wizard().next()},a.previous=function(){d.wizard().previous()},a.exitValidation=function(a){return a},a.getFirstFreeMailbox=function(){f.get({controller:"mailbox"}).$promise.then(function(b){a.item.mailbox=b.value})["catch"](function(a){c.error(a)})},a.createItem=function(){return a.item.customer_id=a.item.mailbox,b.save(a.item).$promise.then(function(){e.path("/channels/voice/voicemails/list")})["catch"](function(a){c.error(data)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.voicemails.wizard",{url:"/wizard",templateUrl:"app/channels/voice/voicemail/wizard/wizard.html",controller:"VoiceVoicemailWizardCtrl"})}]),angular.module("xCallyShuttleApp").factory("VoiceQueue",["$resource",function(a){return a("/api/voice/queues/:id/:controller/:controller2",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("Company",["$resource",function(a){return a("/api/contactmanager/companies/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.contactmanager.companies",{url:"/companies",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:5}}})}]),angular.module("xCallyShuttleApp").controller("CompanyListCreateModalCtrl",["$scope","$uibModalInstance",function(a,b){a.forms={dashboard:void 0},a.item={},a.ok=function(){a.item.model=JSON.stringify({title:a.item.name}),b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("ContactManagerCompanyListCtrl",["$scope","$translate","xAlert","Modal","$uibModal","$log","Company","gridOptions","$location","$state",function(a,b,c,d,e,f,g,h,i,j){a.initView=function(){var b={exporterCsvFilename:"Companies.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:100,buttons:[{"class":"blue-hoki",name:"profile",href:"/contactmanager/companies/view/{{row.entity.id}}/settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"},{"class":"green-turquoise",name:"contacts",onClick:"grid.appScope.goToContacts(row.entity.id)"}]}]};a.gridOptions=h.gridOptions(g,b,a)},a.goToContacts=function(a){j.go("main.contactmanager.contacts.list",{companyId:a})},a.create=function(){var a=e.open({animation:!0,size:"lg",templateUrl:"app/contactmanager/company/list/create.modal.html",controller:"CompanyListCreateModalCtrl"});a.result.then(function(a){return g.save(a).$promise.then(function(a){i.path("/contactmanager/companies/view/"+a.id+"/settings")})["catch"](function(a){c.error(a)})},function(){f.info("Modal dismissed at: "+new Date)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.contactmanager.companies.list",{url:"/list",templateUrl:"app/contactmanager/company/list/list.html",controller:"ContactManagerCompanyListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("ContactManagerCompanyViewCtrl",["$scope","xAlert","$translate","$stateParams","$location","Company",function(a,b,c,d,e,f){a.getCompany=function(){return f.get({id:d.id}).$promise.then(function(b){a.company=b})["catch"](function(a){e.path("/contactmanager/companies/list")})},a.updateCompany=function(){return f.update({id:d.id},a.company).$promise.then(function(){b.show(c.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){b.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.contactmanager.companies.view",{url:"/view/:id",templateUrl:"app/contactmanager/company/view/view.html",controller:"ContactManagerCompanyViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.contactmanager.companies.view.settings",{url:"/settings",templateUrl:"app/contactmanager/company/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").factory("Contact",["$resource",function(a){return a("/api/contactmanager/contacts/:id/:controller/:controller2",{id:"@id"},{update:{method:"PUT"},search:{method:"POST"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.contactmanager.contacts",{url:"/contacts",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("ContactManagerListCopyModalCtrl",["$scope","$uibModalInstance","xAlert","List","Contact","$translate",function(a,b,c,d,e,f){a.item={},a.getLists=function(){return d.get().$promise.then(function(b){a.lists=b.rows})["catch"](function(a){c.error(a)})},a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("ContactManagerListImportModalCtrl",["$scope","$uibModalInstance","indexes","csv","xAlert","socket","List","Contact","$translate","Company","companyId","listId",function(a,b,c,d,e,f,g,h,i,j,k,l){function m(a){var b,c;if(!a)return 0;for(a=a.toString(),b=c=a.length;b--;){var d=a[b].charCodeAt();d>=56320&&57343>=d&&b--,d>127&&2047>=d?c++:d>2047&&65535>=d&&(c+=2)}return c}function n(b){if(b>=a.csvLength||a.stopped)return void(a.importing=!1);for(var c,f=[],g="",j=b;b+200>j&&j<a.csvLength;j++)c={},_.forOwn(a.item,function(b,e){switch(e){case"tags":c.tags=[],a.item.tags.forEach(function(a){d[j][a]&&c.tags.push(d[j][a])});break;default:c[e]=d[j][b]}}),c.ListId=a.item.ListId,c.CompanyId=a.item.CompanyId||null,c.firstName?f.push(c):(a["import"].fail+=1*a.addingQuote,a["import"].failed++,g+=(g?",(":"(")+(j+2)+")");return m(JSON.stringify(f))<=5e7?h.save({controller:"bulk"},{contacts:f}).$promise.then(function(c){a["import"].success+=c.ok*a.addingQuote,a["import"].succeeded+=c.ok,a["import"].fail+=c.ko*a.addingQuote,a["import"].failed+=c.ko,c.failed.length&&(_.forEach(c.failed,function(a,d){c.failed[d]+=b+2}),a.failedRows+=(a.failedRows?",":"")+_.sortBy(c.failed).join(",")),g&&(a.failedRows+=(a.failedRows?",":"")+g),n(j)})["catch"](function(b){a.stopped=!0,e.error(b),n(j)}):(a.stopped=!0,e.show(i.instant("MESSAGE_REQUEST_TOO_BIG"),"warning"),n(j),void 0)}a.indexes=c,a.importing=!1,a.submitted=!1,a.stopped=!1,a["import"]={success:0,fail:0,succeeded:0,failed:0},a.csvLength=d.length,a.addingQuote=100/a.csvLength,a.forms={csv:void 0},a.item={CompanyId:k||null,ListId:l||null},a.start=function(){a.importing=!0,a.submitted=!0,a.failedRows="",n(0)},a.getLists=function(){return g.get().$promise.then(function(b){a.lists=b.rows,a.item.ListId||(a.item.ListId=a.lists[0]?a.lists[0].id:null),a.getCustomFields()})["catch"](function(a){e.error(a)})},a.getCompanies=function(){return j.get().$promise.then(function(b){a.companies=b.rows})["catch"](function(a){e.error(a)})},a.getCustomFields=function(){return g.get({listId:a.item.ListId,controller:"customfields",id:"all"}).$promise.then(function(b){b.rows.forEach(function(a){a.values=JSON.parse(a.values)}),a.customFields=b.rows,f.socket.on("custom_field:remove",function(b){_.remove(a.customFields,function(a){return b.id==a.id})}),f.socket.on("custom_field:save",function(b){if(b.ListId===a.item.ListId){var c=_.find(a.customFields,{id:b.id});c||("string"==typeof b.values&&(b.values=JSON.parse(b.values)),a.customFields.push(b))}})})["catch"](function(a){console.error(a),e.error(a)})},a.close=function(){b.close()},a.stop=function(){a.stopped=!0}}]),angular.module("xCallyShuttleApp").controller("ContactManagerContactListCtrl",["$scope","$translate","Modal","FileUploader","Papa","$uibModal","$log","Contact","gridOptions","List","uiGridConstants","xAlert","socket","$stateParams","Auth","Company","usSpinnerService","$http","$rootScope","CustomField",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t){function u(){m.socket.on("contact_manager:save",function(){a.gridOptions.getPage()})}a.Auth=o,a.isAgent=o.isAgent(),a.agent=o.getCurrentUser(),a.initView=function(){var c;return j.get().$promise.then(function(b){return a.lists=[],b.rows.forEach(function(b){a.lists.push({value:b.id,label:b.name})}),t.get({controller:"all"}).$promise}).then(function(b){return a.customFields=b.rows,p.get().$promise}).then(function(b){a.companies=[],b.rows.forEach(function(b){a.companies.push({value:b.id,label:b.name})})}).then(function(){var d=[{"class":"blue-hoki",name:"profile",onClick:"grid.appScope.openContactTab(row.entity)"}];o.isAgent()||(d.push({"class":"green",title:b.instant("APPLICATION_COPY"),name:"copy",onClick:"grid.appScope.copy(row.entity.id)"}),d.push({"class":"red-sunglo",name:"delete",title:b.instant("APPLICATION_DELETE"),onClick:"grid.appScope.deleteItem(row.entity.fullname, row.entity.id)"})),c={exporterMenuAllData:!1,exporterMenuVisibleData:!1,exporterMenuSelectedData:!1,exporterCsvFilename:"Contacts.csv",columnDefs:[{name:"id",width:56},{name:"firstName"},{name:"lastName"},{name:"phone",displayName:"APPLICATION_PHONE",cellTemplate:'<div class="ui-grid-cell-contents">{{row.entity.phone}} <a href="#" data-ng-if="grid.appScope.isAgent && row.entity.phone && grid.appScope.agent.phoneBarRemoteControl" data-ng-click="grid.appScope.callPhoneBar(row.entity.phone,\'call\')" title="Call {{row.entity.phone}}"><i class="icon-phone"></i></a> <a href="#" data-ng-if="grid.appScope.isAgent && row.entity.phone && grid.appScope.agent.phoneBarRemoteControl" data-ng-click="grid.appScope.callPhoneBar(row.entity.phone,\'transfer\')" title="Call {{row.entity.phone}}"><i class="glyphicon glyphicon-random"></i></a></div>'},{name:"mobile",displayName:"APPLICATION_MOBILE",cellTemplate:'<div class="ui-grid-cell-contents">{{row.entity.mobile}} <a href="#" data-ng-if="grid.appScope.isAgent && row.entity.mobile && grid.appScope.agent.phoneBarRemoteControl" data-ng-click="grid.appScope.callPhoneBar(row.entity.mobile,\'call\')" title="Call {{row.entity.mobile}}"><i class="icon-phone"></i></a> <a href="#" data-ng-if="grid.appScope.isAgent && row.entity.mobile && grid.appScope.agent.phoneBarRemoteControl" data-ng-click="grid.appScope.callPhoneBar(row.entity.mobile,\'transfer\')" title="Transfer call to {{row.entity.mobile}}"><i class="glyphicon glyphicon-random"></i></a></div>'},{name:"email",displayName:"APPLICATION_EMAIL",cellTemplate:'<div class="ui-grid-cell-contents"><a href="#" data-ng-if="grid.appScope.license.mail && row.entity.email && grid.appScope.isAgent" data-ng-click="grid.appScope.openRoom(null,\'mailRoom\',{to:row.entity.email})">{{row.entity.email}}</a><span data-ng-if="!grid.appScope.license.mail || !grid.appScope.isAgent">{{row.entity.email}}</span></div>'},{name:"ListId",displayName:"APPLICATION_LIST",field:"List",filter:{type:k.filter.SELECT,term:n.listId||null,selectOptions:a.lists},cellTemplate:'<div class="centered-uigrid-td"><a data-ng-if="!grid.appScope.isAgent" href="/contactmanager/lists/view/{{row.entity.ListId}}/settings">{{row.entity.List}}</a><span data-ng-if="grid.appScope.isAgent">{{row.entity.List}}</span></div>'},{name:"CompanyId",displayName:"APPLICATION_COMPANY",field:"Company",filter:{type:k.filter.SELECT,term:n.companyId||null,selectOptions:a.companies},cellTemplate:'<div class="centered-uigrid-td"><a data-ng-if="!grid.appScope.isAgent" href="/contactmanager/companies/view/{{row.entity.CompanyId}}/settings">{{row.entity.Company}}</a><span data-ng-if="grid.appScope.isAgent">{{row.entity.Company}}</span></div>'},{name:"tags",filterHeaderTemplate:'<div class="ui-grid-filter-container"><div ng-repeat="colFilter in col.filters" class="col-md-12 col-md-offset-0 col-sm-12 col-sm-offset-0 col-xs-12 col-xs-offset-0"><div custom-grid-tags-filter-header></div></div></div>',filters:[{name:"tags"}],cellTemplate:"<div class=\"centered-uigrid-td\">{{row.entity.tags.join(',')}}</div>"}]},_.forEach(a.customFields,function(a){c.columnDefs.push({name:a.name,displayName:a.alias,visible:!1})}),c.columnDefs.push({name:"action",width:100,buttons:d}),a.gridOptions=i.gridOptions(h,c,a),u()})["catch"](function(a){l.error(a)})},a.callPhoneBar=function(c,d){var e;switch(d){case"call":e="http://127.0.0.1:"+a.agent.phoneBarRemoteControlPort+"/api/originate/"+c;break;case"transfer":e="http://127.0.0.1:"+a.agent.phoneBarRemoteControlPort+"/api/transfer?number="+c;break;default:e="http://127.0.0.1:"+a.agent.phoneBarRemoteControlPort+"/api/originate/"+c}return r.get(e).success(function(){l.show(b.instant("MESSAGE_WELL_DONE"),"success")}).error(function(a){console.error(a),l.error({message:b.instant("MESSAGE_UNABLE_TO_CONTACT_PHONEBAR")})})},a.openRoom=function(a,b,c){var d=_.find(s.workspaces,{id:a,type:b});if(d)d.active=!0;else{var e;switch(b){case"mailRoom":e="icon-envelope";break;case"chatRoom":e="fa fa-users";break;case"faxRoom":e="fa fa-fax";break;case"smsRoom":e="glyphicon glyphicon-comment"}s.workspaces.push({id:a,type:b,"class":e,active:!0,data:c})}},d.FileSelect.prototype.isEmptyAfterSelection=function(){return!0};var v=a.uploader=new d({queueLimit:1,clearInputAfterAddedToQueue:!0});v.onAfterAddingFile=function(b){e.parse(b._file,{header:!0,complete:function(b){a.uploader.clearQueue(),a["import"](b.data)},error:function(a){console.log(a)}})},a.extractAll=function(){q.spin("grid-spinner");var b=_.clone(a.gridOptions.pagOpt);return delete b.limit,delete b.offset,h.get(_.merge({controller:"extract",controller2:"all"},b)).$promise.then(function(a){return q.stop("grid-spinner"),a.rows})["catch"](function(a){l.error(a)})},a["import"]=function(b){m.unsyncUpdates("contact_manager");var c=f.open({animation:!0,size:"lg",backdrop:"static",keyboard:!1,templateUrl:"app/contactmanager/contact/list/import.modal.html",controller:"ContactManagerListImportModalCtrl",resolve:{indexes:function(){return _.keys(b[0])},csv:function(){return b},companyId:function(){return a.gridOptions.columnDefs[7].filter.term||null},listId:function(){return a.gridOptions.columnDefs[6].filter.term||null}}});c.result.then(function(){console.log("result"),u(),a.gridOptions.getPage()},function(){g.info("Modal dismissed at: "+new Date)})},a.copy=function(b){var c=f.open({animation:!0,size:"small",templateUrl:"app/contactmanager/contact/list/copy.modal.html",controller:"ContactManagerListCopyModalCtrl"});c.result.then(function(c){return h.save({id:b,controller:"copy"},c).$promise.then(function(b){a.openContactTab({firstName:b.firstName,lastName:b.lastName,id:b.id})})["catch"](function(a){l.error(a)})},function(){g.info("Modal dismissed at: "+new Date)})},a.$on("$destroy",function(){m.unsyncUpdates("contact_manager")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.contactmanager.contacts.list",{url:"/list",templateUrl:"app/contactmanager/contact/list/list.html",params:{listId:null,companyId:null},controller:"ContactManagerContactListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.contactmanager",{url:"/contactmanager",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:5}}})}]),angular.module("xCallyShuttleApp").factory("CustomField",["$resource",function(a){return a("/api/contactmanager/customfields/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.contactmanager.customfields",{url:"/customfields",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:5}}})}]),angular.module("xCallyShuttleApp").controller("CustomFieldListCreateModalCtrl",["$scope","$uibModalInstance","$translate",function(a,b,c){a.$translate=c,a.forms={dashboard:void 0},a.item={},a.choices=[{value:""}],a.bsSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.addField=function(){a.choices.push({})},a.removeField=function(b){a.choices.splice(b,1)},a.types=[{name:"APPLICATION_TEXT",value:"text"},{name:"APPLICATION_SELECT",value:"select"}],a.ok=function(){"select"===a.item.type&&(a.item.values=angular.toJson(a.choices)),b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("ContactManagerCustomFieldListCtrl",["$scope","$translate","xAlert","Modal","$uibModal","$log","CustomField","gridOptions",function(a,b,c,d,e,f,g,h){a.initView=function(){var b={exporterCsvFilename:"customfields.csv",primaryKey:"id",columnDefs:[{name:"alias",displayName:"APPLICATION_NAME"},{name:"name",displayName:"APPLICATION_FIELD"},{name:"type"},{name:"action",width:200,buttons:[{"class":"blue-hoki",href:"/contactmanager/customfields/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)",name:"delete"}]}]};a.gridOptions=h.gridOptions(g,b,a)},a.create=function(){var d=e.open({animation:!0,size:"lg",templateUrl:"app/contactmanager/customfield/list/create.modal.html",controller:"CustomFieldListCreateModalCtrl"});d.result.then(function(d){return g.save(d).$promise.then(function(){a.gridOptions.getPage(),c.show(b.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){c.error(a)})},function(){f.info("Modal dismissed at: "+new Date)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.contactmanager.customfields.list",{url:"/list",templateUrl:"app/contactmanager/customfield/list/list.html",controller:"ContactManagerCustomFieldListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("ContactManagerCustomFieldViewCtrl",["$scope","xAlert","$translate","$stateParams","$location","CustomField",function(a,b,c,d,e,f){function g(a){var b=a.split(""),c=0,d=0;return b.shift(),b.forEach(function(a,b){"{"===a?c++:"}"===a&&(c--,c||(d=b+1))}),d?JSON.parse("["+a.substr(1,d)+"]"):[]}a.bsSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.getCustomField=function(){return f.get({id:d.id}).$promise.then(function(b){if(a.customField=b,"select"===a.customField.type)try{a.choices=JSON.parse(a.customField.values)}catch(c){a.choices=g(a.customField.values)}})["catch"](function(){e.path("/contactmanager/customfields/list")})},a.addField=function(){a.choices.push({})},a.removeField=function(b){a.choices.splice(b,1)},a.updateCustomField=function(){var e=angular.copy(a.customField);return"select"===e.type&&(e.values=angular.toJson(a.choices)),f.update({id:d.id},a.customField).$promise.then(function(){b.show(c.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){b.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.contactmanager.customfields.view",{url:"/view/:id",templateUrl:"app/contactmanager/customfield/view/view.html",controller:"ContactManagerCustomFieldViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.contactmanager.customfields.view.settings",{url:"/settings",templateUrl:"app/contactmanager/customfield/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").factory("List",["$resource",function(a){return a("/api/contactmanager/lists/:listId/:controller/:id",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.contactmanager.lists",{url:"/lists",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:5}}})}]),angular.module("xCallyShuttleApp").controller("ContactManagerListListCreateModalCtrl",["$scope","$uibModalInstance",function(a,b){a.forms={dashboard:void 0},a.item={},a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("ContactManagerListListCtrl",["$scope","$http","$translate","Modal","xAlert","$uibModal","$log","List","gridOptions","$state","MotionDialerList","$rootScope",function(a,b,c,d,e,f,g,h,i,j,k,l){a.initView=function(){var b={exporterCsvFilename:"Lists.csv",columnDefs:[{name:"id"},{name:"name"},{name:"description"},{name:"action",width:100,buttons:[{"class":"blue-hoki",name:"settings",href:"/contactmanager/lists/view/{{row.entity.id}}/settings"},{"class":"green-turquoise",name:"contacts",onClick:"grid.appScope.goToContacts(row.entity.id)"},{"class":"{{row.entity.defaultEntry ? 'red-sunglo disabled' : 'red-sunglo'}}",name:"delete",onClick:"grid.appScope.deleteList(row.entity.name, row.entity.id)"}]}]};a.gridOptions=i.gridOptions(h,b,a)},a.goToContacts=function(a){j.go("main.contactmanager.contacts.list",{listId:a})},a.deleteList=d.confirm["delete"](function(b){return l.license.dialer?k.find({id_source:b}).$promise.then(function(a){return a&&a.status>0?a.response.RMI.rows[0]?k["delete"]({id:a.response.RMI.rows[0].id}).$promise:{status:1}:void e.show(a?a.message||"Please, check your connection!":"Please, check your connection!","danger")}).then(function(d){if(d&&d.status>0)return h.remove({id:b}).$promise.then(function(){a.gridOptions.getPage(),e.show(c.instant("MESSAGE_WELL_DONE"),"success")});var f="Please, check your connection!";d&&(f=d.response&&d.response.RMI?d.response.RMI.errors||d.message||"Please, check your connection!":d.message||"Please, check your connection!"),e.show(f,"danger")})["catch"](function(a){e.error(a)}):h.remove({id:b}).$promise.then(function(){a.gridOptions.getPage(),e.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){e.error(a)})}),a.create=function(){var d=f.open({animation:!0,templateUrl:"app/contactmanager/list/list/create.modal.html",controller:"ContactManagerListListCreateModalCtrl"});d.result.then(function(d){b.post("/api/contactmanager/lists/",d).then(function(){a.gridOptions.getPage(),e.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){e.error(a)})},function(){g.info("Modal dismissed at: "+new Date)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.contactmanager.lists.list",{url:"/list",templateUrl:"app/contactmanager/list/list/list.html",controller:"ContactManagerListListCtrl"})}]),angular.module("xCallyShuttleApp").controller("ContactManagerListCustomFieldViewCreateModalCtrl",["$scope","$uibModalInstance","$translate",function(a,b,c){a.$translate=c,a.forms={dashboard:void 0},a.item={},a.choices=[{value:""}],a.bsSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.addField=function(){a.choices.push({})},a.removeField=function(b){a.choices.splice(b,1)},a.types=[{name:"APPLICATION_TEXT",value:"text"},{name:"APPLICATION_SELECT",value:"select"}],a.ok=function(){"select"===a.item.type&&(a.item.values=angular.toJson(a.choices)),b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("ContactManagerListViewCtrl",["$scope","xAlert","$translate","$stateParams","socket","$location","$uibModal","$log","Modal","List","Team","gridOptions",function(a,b,c,d,e,f,g,h,i,j,k,l){function m(a){var b=a.split(""),c=0,d=0;return b.shift(),b.forEach(function(a,b){"{"===a?c++:"}"===a&&(c--,c||(d=b+1))}),d?JSON.parse("["+a.substr(1,d)+"]"):[]; +}var n=[{name:"firstName",value:"firstName"},{name:"lastName",value:"lastName"},{name:"CompanyId",value:"CompanyId"},{name:"phone",value:"phone"},{name:"mobile",value:"mobile"},{name:"email",value:"email"},{name:"fax",value:"fax"},{name:"tags",value:"tags"},{name:"ListId",value:"ListId"},{name:"street",value:"street"},{name:"postalCode",value:"postalCode"},{name:"city",value:"city"},{name:"country",value:"country"},{name:"dateOfBirth",value:"dateOfBirth"},{name:"description",value:"description"},{name:"url",value:"url"}];a.bsSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"};var o=function(){return{select:function(b){return j.save({listId:a.list.id,controller:"agents"},{agents:b}).$promise.then(function(){a.getTeams()})["catch"](function(a){console.log(a)})},deselect:function(b){return j["delete"]({listId:a.list.id,controller:"agents",agents:b}).$promise.then(function(){a.getTeams()})["catch"](function(a){console.log(a)})}}};a.initVariables=function(){return j.get({listId:d.id,controller:"customfields",id:"all"}).$promise.then(function(b){if(a.variables=_.clone(n),b.rows.forEach(function(b){try{"select"===b.type&&(b.values=JSON.parse(b.values)),a.variables.push({name:b.alias,value:b.name})}catch(c){console.log("Cf not valid:",b.alias)}}),a.list&&a.list.variables&&a.list.variables.length)for(var c=a.list.variables.length;c--;)_.find(a.variables,{value:a.list.variables[c].value})||a.list.variables.splice(c,1)})["catch"](function(a){console.error(a),b.error(a)})},a.getList=function(){return j.get({listId:d.id}).$promise.then(function(b){if(b.variables)try{b.variables=JSON.parse(b.variables)}catch(c){console.log("invalid or outdated variables format"),b.variables=[]}else b.variables=[];a.list=b})["catch"](function(){f.path("/contactmanager/lists/list")})},a.updateList=function(){var e=_.clone(a.list);return e.variables=e.variables.length?angular.toJson(e.variables):"",j.update({id:d.id},e).$promise.then(function(){b.show(c.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){b.error(a)})},a.convertList=function(){a.list.isTdList=!0,a.updateList()},a.getTeams=function(){return k.get({controller:"associations"}).$promise.then(function(b){return a.teams=b.rows,a.list?void 0:a.getList()}).then(function(){return a.list.defaultEntry&&f.path("/contactmanager/lists/list"),j.get({listId:d.id,controller:"agents"}).$promise}).then(function(b){ComponentsDropdowns.bindQueue(a.teams,_.map(b.rows,function(a){return{id:a.id}}),o)})["catch"](function(a){console.error(a)})},a.initCustomFields=function(){var b={exporterCsvFilename:"customfields.csv",primaryKey:"id",columnDefs:[{name:"alias",displayName:"APPLICATION_NAME"},{name:"name",displayName:"APPLICATION_FIELD"},{name:"type"},{name:"action",width:200,buttons:[{"class":"blue-hoki",href:"/contactmanager/lists/view/{{grid.appScope.$stateParams.id}}/customfields/settings/{{row.entity.id}}",name:"settings"},{"class":"red-sunglo",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)",name:"delete"}]}]};a.gridOptions=l.gridOptions(j,b,a,{listId:d.id,controller:"customfields"})},a.create=function(){var e=g.open({animation:!0,templateUrl:"app/contactmanager/list/view/create.modal.html",controller:"ContactManagerListCustomFieldViewCreateModalCtrl"});e.result.then(function(e){return j.save({listId:d.id,controller:"customfields"},e).$promise.then(function(){a.gridOptions.getPage(),b.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){b.error(a)})},function(){h.info("Modal dismissed at: "+new Date)})},a.getCustomField=function(){return j.get({listId:d.id,controller:"customfields",id:d.cfId}).$promise.then(function(b){if(a.customField=b,"select"===a.customField.type)try{a.choices=JSON.parse(a.customField.values)}catch(c){a.choices=m(a.customField.values)}})["catch"](function(a){console.error(a)})},a.updateCustomField=function(){var e=angular.copy(a.customField);return"select"===e.type&&(e.values=angular.toJson(a.choices)),j.update({listId:d.id,controller:"customfields",id:d.cfId},e).$promise.then(function(){b.show(c.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){b.error(a)})},a.addField=function(){a.choices.push({})},a.removeField=function(b){a.choices.splice(b,1)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.contactmanager.lists.view",{url:"/view/:id",templateUrl:"app/contactmanager/list/view/view.html",controller:"ContactManagerListViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.contactmanager.lists.view.settings",{url:"/settings",templateUrl:"app/contactmanager/list/view/view.settings.html"}).state("main.contactmanager.lists.view.agents",{url:"/agents",templateUrl:"app/contactmanager/list/view/view.agents.html",cache:!1,serie:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}}).state("main.contactmanager.lists.view.customfields",{url:"/customfields",templateUrl:"app/contactmanager/list/view/view.customFields.html"}).state("main.contactmanager.lists.view.customfields.settings",{url:"/settings/:cfId",templateUrl:"app/contactmanager/list/view/view.customFieldSettings.html",controller:"ContactManagerListViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("DashboardChatCtrl",["$scope","Auth","ChatRoom","socket","Agent","$translate","$q","ReportChatSession","$timeout",function(a,b,c,d,e,f,g,h,i){a.Auth=b,a.moment=moment,a.$on("$destroy",function(){d.socket.removeAllListeners("dashboard:chat")}),a.roomStatus={"new":0,open:0,closed:0,abandon:0,unmanaged:0},a.routingStats={waiting:0,timeout:0},a.charts={interactions:{labels:[f.instant("APPLICATION_DASHBOARD_NEW"),f.instant("APPLICATION_DASHBOARD_OPEN"),f.instant("APPLICATION_DASHBOARD_PENDING"),f.instant("APPLICATION_DASHBOARD_CLOSED")],values:[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed],colours:["#44B6AE","#578EBE","#35AA47","#8775A7"]}};var j=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px")};a.initAgent=function(){a.table1={enableGridMenu:!1,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,paginationPageSizes:[10,25,50],paginationPageSize:10,columnDefs:[{name:"UserHasChatQueue.queue",headerCellFilter:"translate",displayName:"APPLICATION_QUEUE",cellClass:"text-center ui-grid-vcenter"}],data:[],onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){j(a.table1.paginationPageSize>a.table1.data.length?a.table1.data.length:a.table1.paginationPageSize,"table1")}),a.gridApi.pagination.on.paginationChanged(a,function(b,c){j(c>a.table1.data.length?a.table1.data.length:c,"table1")})}},a.table2={headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,columnDefs:[{name:"roomid",displayName:"APPLICATION_INTERACTION_ID",headerCellFilter:"translate"},{name:"accountname",displayName:"APPLICATION_ACCOUNT_NAME",headerCellFilter:"translate"},{name:"application",displayName:"APPLICATION_APPLICATION",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.application}} <span data-ng-if=\"row.entity.application == 'queue' && row.entity.queuename\">({{row.entity.queuename}})</span></div>"},{name:"status",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span data-ng-if="!row.entity.leaveAt">{{\'APPLICATION_QUEUESTATUS_WAITING\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.complete">{{\'APPLICATION_QUEUESTATUS_COMPLETE\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.timeout">{{\'APPLICATION_TIMEOUT\' | translate}}</span><span data-ng-if="!row.entity.leaveAt"> [<css-timer start-time="row.entity.updatedAt"></css-timer>]</span></div>',enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1},{name:"membername",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.membername || ''}}</span></div>"}],data:[],gridMenuTitleFilter:function(a){var b=g.defer();return b.resolve(f.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){})}},e.get({id:b.getCurrentUser().id,controller:"chat",controller1:"queues"}).$promise.then(function(b){a.table1.data=b.rows})["finally"](function(){j(a.table1.paginationPageSize>a.table1.data.length?a.table1.data.length:a.table1.paginationPageSize,"table1"),d.socket.on("user_has_chat_queue:save",function(c){c.UserId!=b.getCurrentUser().id||_.find(a.table1.data,{id:c.ChatQueueId})||a.table1.data.push({id:c.ChatQueueId,UserHasChatQueue:c})}),d.socket.on("user_has_chat_queue:remove",function(c){c.UserId===b.getCurrentUser().id&&_.remove(a.table1.data,{id:c.ChatQueueId})})})["catch"](function(a){console.error(a)}),h.get({controller:"waiting",controller2:"applications"}).$promise.then(function(b){a.table2.data=b.rows})["finally"](function(){d.socket.on("report_chat_session:save",function(b){var c=_.find(a.table2.data,{id:b.id});c?(_.merge(c,b),b.leaveAt&&i(function(){_.remove(a.table2.data,{id:b.id})},1e4)):b.leaveAt||a.table2.data.push(b)}),d.socket.on("report_chat_session:remove",function(b){_.remove(a.table2.data,{id:b.id})})})["catch"](function(a){console.log(a)})},a.initRoomStats=function(){return c.get({id:"dashboard"}).$promise.then(function(b){a.roomStatus=b,a.charts={interactions:{labels:[f.instant("APPLICATION_DASHBOARD_NEW"),f.instant("APPLICATION_DASHBOARD_OPEN"),f.instant("APPLICATION_UNMANAGED"),f.instant("APPLICATION_DASHBOARD_CLOSED"),f.instant("APPLICATION_DASHBOARD_ABANDONED")],values:[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.unmanaged,a.roomStatus.closed,a.roomStatus.abandon],colours:["#44B6AE","#578EBE","#35AA47","#8775A7","#F3C200"]}},d.socket.on("dashboard:chat",function(b){a.roomStatus=b.roomStatus,a.charts.interactions.values=[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.unmanaged,a.roomStatus.closed,a.roomStatus.abandon]})})["catch"](function(a){console.error(a)})},a.initRoutingStats=function(){return h.get({id:"dashboard"}).$promise.then(function(b){a.routingStats=b})["catch"](function(a){console.error(a)})},a.initSocketListening=function(){d.socket.on("dashboard:chat",function(b){a.roomStatus=b.roomStatus,a.routingStats=b.routingStats,a.charts.interactions.values=[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.unmanaged,a.roomStatus.closed,a.roomStatus.abandon]})}}]),angular.module("xCallyShuttleApp").controller("DashboardCtrl",["$scope","$translate","Auth",function(a,b,c){}]),angular.module("xCallyShuttleApp").factory("Dashboard",["$resource",function(a){return a("/api/dashboards/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.dashboard",{"abstract":!0,url:"/dashboard",templateUrl:"app/dashboard/dashboard.html",controller:"DashboardCtrl",data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:1}}}).state("main.dashboard.voice",{url:"/voice",controller:"DashboardVoiceCtrl",templateUrl:"app/dashboard/voice/voice.html"}).state("main.dashboard.chat",{url:"/chat",controller:"DashboardChatCtrl",templateUrl:"app/dashboard/chat/chat.html",data:{permissions:{redirectTo:"landing",id:8}}}).state("main.dashboard.mail",{url:"/mail",controller:"DashboardMailCtrl",templateUrl:"app/dashboard/mail/mail.html",data:{permissions:{redirectTo:"landing",id:9}}}).state("main.dashboard.fax",{url:"/fax",controller:"DashboardFaxCtrl",templateUrl:"app/dashboard/fax/fax.html",data:{permissions:{redirectTo:"landing",id:10}}}).state("main.dashboard.sms",{url:"/sms",controller:"DashboardSmsCtrl",templateUrl:"app/dashboard/sms/sms.html",data:{permissions:{redirectTo:"landing",id:11}}}).state("main.dashboard.openchannel",{url:"/openchannel",controller:"DashboardOpenChannelCtrl",templateUrl:"app/dashboard/openchannel/openchannel.html",data:{permissions:{redirectTo:"landing",id:20}}})}]),angular.module("xCallyShuttleApp").controller("DashboardFaxCtrl",["$scope","Auth","FaxRoom","socket","Agent","$translate","$q","ReportFaxSession","$timeout",function(a,b,c,d,e,f,g,h,i){a.Auth=b,a.moment=moment,a.$on("$destroy",function(){d.socket.removeAllListeners("dashboard:fax")}),a.roomStatus={"new":0,open:0,pending:0,closed:0},a.routingStats={waiting:0,timeout:0},a.charts={interactions:{labels:[f.instant("APPLICATION_DASHBOARD_NEW"),f.instant("APPLICATION_DASHBOARD_OPEN"),f.instant("APPLICATION_DASHBOARD_PENDING"),f.instant("APPLICATION_DASHBOARD_CLOSED")],values:[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed],colours:["#44B6AE","#578EBE","#35AA47","#8775A7"]}};var j=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px")};a.initAgent=function(){a.table1={enableGridMenu:!1,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,paginationPageSizes:[10,25,50],paginationPageSize:10,columnDefs:[{name:"UserHasFaxQueue.queue",headerCellFilter:"translate",displayName:"APPLICATION_QUEUE",cellClass:"text-center ui-grid-vcenter"}],data:[],onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){j(a.table1.paginationPageSize>a.table1.data.length?a.table1.data.length:a.table1.paginationPageSize,"table1")}),a.gridApi.pagination.on.paginationChanged(a,function(b,c){j(c>a.table1.data.length?a.table1.data.length:c,"table1")})}},a.table2={headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,columnDefs:[{name:"roomid",displayName:"APPLICATION_INTERACTION_ID",headerCellFilter:"translate"},{name:"accountname",displayName:"APPLICATION_ACCOUNT_NAME",headerCellFilter:"translate"},{name:"application",displayName:"APPLICATION_APPLICATION",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.application}} <span data-ng-if=\"row.entity.application == 'queue' && row.entity.queuename\">({{row.entity.queuename}})</span></div>"},{name:"status",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span data-ng-if="!row.entity.leaveAt">{{\'APPLICATION_QUEUESTATUS_WAITING\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.complete">{{\'APPLICATION_QUEUESTATUS_COMPLETE\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.timeout">{{\'APPLICATION_TIMEOUT\' | translate}}</span><span data-ng-if="!row.entity.leaveAt"> [<css-timer start-time="row.entity.updatedAt"></css-timer>]</span></div>',enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1},{name:"membername",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.membername || ''}}</span></div>"}],data:[],gridMenuTitleFilter:function(a){var b=g.defer();return b.resolve(f.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){})}},e.get({id:b.getCurrentUser().id,controller:"fax",controller1:"queues"}).$promise.then(function(b){a.table1.data=b.rows})["finally"](function(){j(a.table1.paginationPageSize>a.table1.data.length?a.table1.data.length:a.table1.paginationPageSize,"table1"),d.socket.on("user_has_fax_queue:save",function(c){c.UserId!=b.getCurrentUser().id||_.find(a.table1.data,{id:c.FaxQueueId})||a.table1.data.push({id:c.FaxQueueId,UserHasFaxQueue:c})}),d.socket.on("user_has_fax_queue:remove",function(c){c.UserId===b.getCurrentUser().id&&_.remove(a.table1.data,{id:c.FaxQueueId})})})["catch"](function(a){console.error(a)}),h.get({controller:"waiting",controller2:"applications"}).$promise.then(function(b){a.table2.data=b.rows})["finally"](function(){d.socket.on("report_fax_session:save",function(b){var c=_.find(a.table2.data,{id:b.id});c?(_.merge(c,b),b.leaveAt&&i(function(){_.remove(a.table2.data,{id:b.id})},1e4)):b.leaveAt||a.table2.data.push(b)}),d.socket.on("report_fax_session:remove",function(b){_.remove(a.table2.data,{id:b.id})})})["catch"](function(a){console.log(a)})},a.initRoomStats=function(){return c.get({id:"dashboard"}).$promise.then(function(b){a.roomStatus=b,a.charts={interactions:{labels:[f.instant("APPLICATION_DASHBOARD_NEW"),f.instant("APPLICATION_DASHBOARD_OPEN"),f.instant("APPLICATION_DASHBOARD_PENDING"),f.instant("APPLICATION_DASHBOARD_CLOSED")],values:[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed],colours:["#44B6AE","#578EBE","#35AA47","#8775A7"]}},d.socket.on("dashboard:fax",function(b){a.roomStatus=b.roomStatus,a.charts.interactions.values=[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed]})})["catch"](function(a){console.error(a)})},a.initRoutingStats=function(){return h.get({id:"dashboard"}).$promise.then(function(b){a.routingStats=b})["catch"](function(a){console.error(a)})},a.initSocketListening=function(){d.socket.on("dashboard:fax",function(b){a.roomStatus=b.roomStatus,a.routingStats=b.routingStats,a.charts.interactions.values=[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed]})}}]),angular.module("xCallyShuttleApp").controller("DashboardMailCtrl",["$scope","Auth","MailRoom","socket","Agent","$translate","$q","ReportMailSession","$timeout",function(a,b,c,d,e,f,g,h,i){a.Auth=b,a.moment=moment,a.$on("$destroy",function(){d.socket.removeAllListeners("dashboard:mail")}),a.roomStatus={"new":0,open:0,pending:0,closed:0},a.routingStats={waiting:0,timeout:0},a.charts={interactions:{labels:[f.instant("APPLICATION_DASHBOARD_NEW"),f.instant("APPLICATION_DASHBOARD_OPEN"),f.instant("APPLICATION_DASHBOARD_PENDING"),f.instant("APPLICATION_DASHBOARD_CLOSED")],values:[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed],colours:["#44B6AE","#578EBE","#35AA47","#8775A7"]}};var j=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px")};a.initAgent=function(){a.table1={enableGridMenu:!1,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,paginationPageSizes:[10,25,50],paginationPageSize:10,columnDefs:[{name:"UserHasMailQueue.queue",headerCellFilter:"translate",displayName:"APPLICATION_QUEUE",cellClass:"text-center ui-grid-vcenter"}],data:[],onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){j(a.table1.paginationPageSize>a.table1.data.length?a.table1.data.length:a.table1.paginationPageSize,"table1")}),a.gridApi.pagination.on.paginationChanged(a,function(b,c){j(c>a.table1.data.length?a.table1.data.length:c,"table1")})}},a.table2={headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,columnDefs:[{name:"roomid",displayName:"APPLICATION_INTERACTION_ID",headerCellFilter:"translate"},{name:"accountname",displayName:"APPLICATION_ACCOUNT_NAME",headerCellFilter:"translate"},{name:"application",displayName:"APPLICATION_APPLICATION",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.application}} <span data-ng-if=\"row.entity.application == 'queue' && row.entity.queuename\">({{row.entity.queuename}})</span></div>"},{name:"status",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span data-ng-if="!row.entity.leaveAt">{{\'APPLICATION_QUEUESTATUS_WAITING\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.complete">{{\'APPLICATION_QUEUESTATUS_COMPLETE\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.timeout">{{\'APPLICATION_TIMEOUT\' | translate}}</span><span data-ng-if="!row.entity.leaveAt"> [<css-timer start-time="row.entity.updatedAt"></css-timer>]</span></div>',enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1},{name:"membername",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.membername || ''}}</span></div>"}],data:[],gridMenuTitleFilter:function(a){var b=g.defer();return b.resolve(f.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){})}},e.get({id:b.getCurrentUser().id,controller:"mail",controller1:"queues"}).$promise.then(function(b){a.table1.data=b.rows})["finally"](function(){j(a.table1.paginationPageSize>a.table1.data.length?a.table1.data.length:a.table1.paginationPageSize,"table1"),d.socket.on("user_has_mail_queue:save",function(c){c.UserId!=b.getCurrentUser().id||_.find(a.table1.data,{id:c.MailQueueId})||a.table1.data.push({id:c.MailQueueId,UserHasMailQueue:c})}),d.socket.on("user_has_mail_queue:remove",function(c){c.UserId===b.getCurrentUser().id&&_.remove(a.table1.data,{id:c.MailQueueId})})})["catch"](function(a){console.error(a)}),h.get({controller:"waiting",controller2:"applications"}).$promise.then(function(b){a.table2.data=b.rows})["finally"](function(){d.socket.on("report_mail_session:save",function(b){var c=_.find(a.table2.data,{id:b.id});c?(_.merge(c,b),b.leaveAt&&i(function(){_.remove(a.table2.data,{id:b.id})},1e4)):b.leaveAt||a.table2.data.push(b)}),d.socket.on("report_mail_session:remove",function(b){_.remove(a.table2.data,{id:b.id})})})["catch"](function(a){console.log(a)})},a.initRoomStats=function(){return c.get({id:"dashboard"}).$promise.then(function(b){a.roomStatus=b,a.charts={interactions:{labels:[f.instant("APPLICATION_DASHBOARD_NEW"),f.instant("APPLICATION_DASHBOARD_OPEN"),f.instant("APPLICATION_DASHBOARD_PENDING"),f.instant("APPLICATION_DASHBOARD_CLOSED")],values:[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed],colours:["#44B6AE","#578EBE","#35AA47","#8775A7"]}},d.socket.on("dashboard:mail",function(b){a.roomStatus=b.roomStatus,a.charts.interactions.values=[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed]})})["catch"](function(a){console.error(a)})},a.initRoutingStats=function(){return h.get({id:"dashboard"}).$promise.then(function(b){a.routingStats=b})["catch"](function(a){console.error(a)})},a.initSocketListening=function(){d.socket.on("dashboard:mail",function(b){a.roomStatus=b.roomStatus,a.routingStats=b.routingStats,a.charts.interactions.values=[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed]})}}]),angular.module("xCallyShuttleApp").controller("DashboardOpenChannelCtrl",["$scope","Auth","OpenChannelRoom","socket","Agent","$translate","$q","ReportOpenChannelSession","$timeout",function(a,b,c,d,e,f,g,h,i){a.Auth=b,a.moment=moment,a.$on("$destroy",function(){d.socket.removeAllListeners("dashboard:openchannel")}),a.roomStatus={"new":0,open:0,pending:0,closed:0},a.routingStats={waiting:0,timeout:0},a.charts={interactions:{labels:[f.instant("APPLICATION_DASHBOARD_NEW"),f.instant("APPLICATION_DASHBOARD_OPEN"),f.instant("APPLICATION_DASHBOARD_PENDING"),f.instant("APPLICATION_DASHBOARD_CLOSED")],values:[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed],colours:["#44B6AE","#578EBE","#35AA47","#8775A7"]}};var j=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px")};a.initAgent=function(){a.table1={enableGridMenu:!1,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,paginationPageSizes:[10,25,50],paginationPageSize:10,columnDefs:[{name:"UserHasOpenchannelQueue.queue",headerCellFilter:"translate",displayName:"APPLICATION_QUEUE",cellClass:"text-center ui-grid-vcenter"}],data:[],onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){j(a.table1.paginationPageSize>a.table1.data.length?a.table1.data.length:a.table1.paginationPageSize,"table1")}),a.gridApi.pagination.on.paginationChanged(a,function(b,c){j(c>a.table1.data.length?a.table1.data.length:c,"table1")})}},a.table2={headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,columnDefs:[{name:"roomid",displayName:"APPLICATION_INTERACTION_ID",headerCellFilter:"translate"},{name:"accountname",displayName:"APPLICATION_ACCOUNT_NAME",headerCellFilter:"translate"},{name:"application",displayName:"APPLICATION_APPLICATION",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.application}} <span data-ng-if=\"row.entity.application == 'queue' && row.entity.queuename\">({{row.entity.queuename}})</span></div>"},{name:"status",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span data-ng-if="!row.entity.leaveAt">{{\'APPLICATION_QUEUESTATUS_WAITING\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.complete">{{\'APPLICATION_QUEUESTATUS_COMPLETE\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.timeout">{{\'APPLICATION_TIMEOUT\' | translate}}</span><span data-ng-if="!row.entity.leaveAt"> [<css-timer start-time="row.entity.updatedAt"></css-timer>]</span></div>',enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1},{name:"membername",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.membername || ''}}</span></div>"}],data:[],gridMenuTitleFilter:function(a){var b=g.defer();return b.resolve(f.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){})}},e.get({id:b.getCurrentUser().id,controller:"openchannel",controller1:"queues"}).$promise.then(function(b){a.table1.data=b.rows})["finally"](function(){j(a.table1.paginationPageSize>a.table1.data.length?a.table1.data.length:a.table1.paginationPageSize,"table1"),d.socket.on("user_has_openchannel_queue:save",function(c){c.UserId!=b.getCurrentUser().id||_.find(a.table1.data,{id:c.OpenchannelQueueId})||a.table1.data.push({id:c.OpenchannelQueueId,UserHasOpenchannelQueue:c})}),d.socket.on("user_has_openchannel_queue:remove",function(c){c.UserId===b.getCurrentUser().id&&_.remove(a.table1.data,{id:c.OpenchannelQueueId})})})["catch"](function(a){console.error(a)}),h.get({controller:"waiting",controller2:"applications"}).$promise.then(function(b){a.table2.data=b.rows})["finally"](function(){d.socket.on("report_openchannel_session:save",function(b){var c=_.find(a.table2.data,{id:b.id});c?(_.merge(c,b),b.leaveAt&&i(function(){_.remove(a.table2.data,{id:b.id})},1e4)):b.leaveAt||a.table2.data.push(b)}),d.socket.on("report_openchannel_session:remove",function(b){_.remove(a.table2.data,{id:b.id})})})["catch"](function(a){console.log(a)})},a.initRoomStats=function(){return c.get({id:"dashboard"}).$promise.then(function(b){a.roomStatus=b,a.charts={interactions:{labels:[f.instant("APPLICATION_DASHBOARD_NEW"),f.instant("APPLICATION_DASHBOARD_OPEN"),f.instant("APPLICATION_DASHBOARD_PENDING"),f.instant("APPLICATION_DASHBOARD_CLOSED")],values:[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed],colours:["#44B6AE","#578EBE","#35AA47","#8775A7"]}},d.socket.on("dashboard:openchannel",function(b){a.roomStatus=b.roomStatus,a.charts.interactions.values=[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed]})})["catch"](function(a){console.error(a)})},a.initRoutingStats=function(){return h.get({id:"dashboard"}).$promise.then(function(b){a.routingStats=b})["catch"](function(a){console.error(a)})},a.initSocketListening=function(){d.socket.on("dashboard:openchannel",function(b){a.roomStatus=b.roomStatus,a.routingStats=b.routingStats,a.charts.interactions.values=[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed]})}}]),angular.module("xCallyShuttleApp").controller("DashboardSmsCtrl",["$scope","Auth","SmsRoom","socket","Agent","$translate","$q","ReportSmsSession","$timeout",function(a,b,c,d,e,f,g,h,i){a.Auth=b,a.moment=moment,a.$on("$destroy",function(){d.socket.removeAllListeners("dashboard:sms")}),a.roomStatus={"new":0,open:0,pending:0,closed:0},a.routingStats={waiting:0,timeout:0},a.charts={interactions:{labels:[f.instant("APPLICATION_DASHBOARD_NEW"),f.instant("APPLICATION_DASHBOARD_OPEN"),f.instant("APPLICATION_DASHBOARD_PENDING"),f.instant("APPLICATION_DASHBOARD_CLOSED")],values:[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed],colours:["#44B6AE","#578EBE","#35AA47","#8775A7"]}};var j=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px")};a.initAgent=function(){a.table1={enableGridMenu:!1,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,paginationPageSizes:[10,25,50],paginationPageSize:10,columnDefs:[{name:"UserHasSmsQueue.queue",headerCellFilter:"translate",displayName:"APPLICATION_QUEUE",cellClass:"text-center ui-grid-vcenter"}],data:[],onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){j(a.table1.paginationPageSize>a.table1.data.length?a.table1.data.length:a.table1.paginationPageSize,"table1")}),a.gridApi.pagination.on.paginationChanged(a,function(b,c){j(c>a.table1.data.length?a.table1.data.length:c,"table1")})}},a.table2={headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,columnDefs:[{name:"roomid",displayName:"APPLICATION_INTERACTION_ID",headerCellFilter:"translate"},{name:"accountname",displayName:"APPLICATION_ACCOUNT_NAME",headerCellFilter:"translate"},{name:"application",displayName:"APPLICATION_APPLICATION",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.application}} <span data-ng-if=\"row.entity.application == 'queue' && row.entity.queuename\">({{row.entity.queuename}})</span></div>"},{name:"status",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span data-ng-if="!row.entity.leaveAt">{{\'APPLICATION_QUEUESTATUS_WAITING\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.complete">{{\'APPLICATION_QUEUESTATUS_COMPLETE\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.timeout">{{\'APPLICATION_TIMEOUT\' | translate}}</span><span data-ng-if="!row.entity.leaveAt"> [<css-timer start-time="row.entity.updatedAt"></css-timer>]</span></div>',enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1},{name:"membername",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.membername || ''}}</span></div>"}],data:[],gridMenuTitleFilter:function(a){var b=g.defer();return b.resolve(f.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){})}},e.get({id:b.getCurrentUser().id,controller:"sms",controller1:"queues"}).$promise.then(function(b){a.table1.data=b.rows})["finally"](function(){j(a.table1.paginationPageSize>a.table1.data.length?a.table1.data.length:a.table1.paginationPageSize,"table1"),d.socket.on("user_has_sms_queue:save",function(c){c.UserId!=b.getCurrentUser().id||_.find(a.table1.data,{id:c.SmsQueueId})||a.table1.data.push({id:c.SmsQueueId,UserHasSmsQueue:c})}),d.socket.on("user_has_sms_queue:remove",function(c){c.UserId===b.getCurrentUser().id&&_.remove(a.table1.data,{id:c.SmsQueueId})})})["catch"](function(a){console.error(a)}),h.get({controller:"waiting",controller2:"applications"}).$promise.then(function(b){ +a.table2.data=b.rows})["finally"](function(){d.socket.on("report_sms_session:save",function(b){var c=_.find(a.table2.data,{id:b.id});c?(_.merge(c,b),b.leaveAt&&i(function(){_.remove(a.table2.data,{id:b.id})},1e4)):b.leaveAt||a.table2.data.push(b)}),d.socket.on("report_sms_session:remove",function(b){_.remove(a.table2.data,{id:b.id})})})["catch"](function(a){console.log(a)})},a.initRoomStats=function(){return c.get({id:"dashboard"}).$promise.then(function(b){a.roomStatus=b,a.charts={interactions:{labels:[f.instant("APPLICATION_DASHBOARD_NEW"),f.instant("APPLICATION_DASHBOARD_OPEN"),f.instant("APPLICATION_DASHBOARD_PENDING"),f.instant("APPLICATION_DASHBOARD_CLOSED")],values:[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed],colours:["#44B6AE","#578EBE","#35AA47","#8775A7"]}},d.socket.on("dashboard:sms",function(b){a.roomStatus=b.roomStatus,a.charts.interactions.values=[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed]})})["catch"](function(a){console.error(a)})},a.initRoutingStats=function(){return h.get({id:"dashboard"}).$promise.then(function(b){a.routingStats=b})["catch"](function(a){console.error(a)})},a.initSocketListening=function(){d.socket.on("dashboard:sms",function(b){a.roomStatus=b.roomStatus,a.routingStats=b.routingStats,a.charts.interactions.values=[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed]})}}]),angular.module("xCallyShuttleApp").controller("DashboardVoiceCtrl",["$scope","$rootScope","$timeout","Auth","ReportQueue","ReportCall","Agent","Dashboard","socket",function(a,b,c,d,e,f,g,h,i){a.moment=moment,a.radioSwitch={size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"success",onColor:"danger"};var j=function(a,b){var c=a?30*a+130:177;angular.element(document.getElementsByName(b)[0]).css("height",c+"px")};a.initUser=function(){var b;return a.user=d.getCurrentUser(),a.voice={},a.$on("$destroy",function(){b&&(b.terminate(),i.socket.removeAllListeners("voice:inbound"),i.socket.removeAllListeners("voice:outbound:global"))}),e.get({controller:"dashboard"}).$promise.then(function(b){return a.voice.queues=b,f.get({controller:"dashboard"}).$promise}).then(function(b){a.voice.outbound=b})["catch"](function(a){console.error(a)})["finally"](function(){i.socket.on("voice:inbound",function(b){(a.voice.queues[b.type]>0||b.amount>0)&&(a.voice.queues[b.type]+=b.amount)}),i.socket.on("voice:outbound:global",function(b){_.merge(a.voice.outbound,b)})})},a.initAgent=function(){return d.getCurrentUser().$promise.then(function(b){return a.agent=b,a.timerSwitch={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"primary"},a.showTimers=!1,a.table1={enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,enableSorting:!0,showGridFooter:!0,paginationPageSizes:[10,25,50],paginationPageSize:10,columnDefs:[{name:"queue",headerCellFilter:"translate",displayName:"APPLICATION_QUEUE",cellClass:"text-center ui-grid-vcenter"},{name:"loggedAt",displayName:"logged At",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span am-time-ago="row.entity.loggedAt"></span></div>'}],data:[],onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){j(a.table1.paginationPageSize>a.table1.data.length?a.table1.data.length:a.table1.paginationPageSize,"table1")}),a.gridApi.pagination.on.paginationChanged(a,function(b,c){j(c>a.table1.data.length?a.table1.data.length:c,"table1")})}},a.table2={enableGridMenu:!1,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,multiSelect:!1,paginationPageSizes:[10,25,50],paginationPageSize:10,columnDefs:[{name:"queue",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate"},{name:"status",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span data-ng-if="!row.entity.queuecallerleaveAt && !row.entity.queuecallerexit">{{\'APPLICATION_QUEUESTATUS_WAITING\' | translate}}</span><span data-ng-if="row.entity.queuecallerleaveAt && !row.entity.queuecallerabandon && !row.entity.queuecallercomplete && !row.entity.queuecallerexit">{{\'APPLICATION_ACTIVE\' | translate}}</span><span data-ng-if="row.entity.queuecallerleaveAt && row.entity.queuecallerabandon">{{\'APPLICATION_QUEUESTATUS_ABANDON\' | translate}}</span><span data-ng-if="row.entity.queuecallerleaveAt && row.entity.queuecallercomplete">{{\'APPLICATION_QUEUESTATUS_COMPLETE\' | translate}}</span><span data-ng-if="row.entity.queuecallerexitreason"> {{row.entity.queuecallerexitreason}}</span><span data-ng-if="!row.entity.queuecallercomplete && !row.entity.queuecallerabandon && !row.entity.queuecallerexit && grid.appScope.showTimers"> <css-timer start-time="row.entity.updatedAt"></css-timer></div>',enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1},{name:"caller",displayName:"APPLICATION_CALLER",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.calleridnum || ''}} {{row.entity.calleridname || ''}}</span></div>",enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1},{name:"position",displayName:"APPLICATION_POSITION",headerCellFilter:"translate"},{name:"lastAssignedTo",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter"}],data:[],onRegisterApi:function(b){a.gridApi1=b,a.gridApi1.grid.registerDataChangeCallback(function(){j(a.gridApi1.core.getVisibleRows(a.gridApi1.grid).length,"table2")})}},a.table3={exporterCsvFilename:"abandoned_calls.csv",enableRowHeaderSelection:!0,paginationPageSizes:[10,25,50],paginationPageSize:10,enableFiltering:!0,enableSorting:!0,enableGridMenu:!1,flatEntityAccess:!0,showGridFooter:!0,fastWatch:!0,enableSelectAll:!1,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,columnDefs:[{name:"queue",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter"},{name:"caller",displayName:"APPLICATION_CALLER",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.calleridnum || ''}} {{row.entity.calleridname || ''}}</div>"},{name:"createdAt",displayName:"APPLICATION_DATE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.updatedAt | date:'yyyy-MM-dd HH:mm:ss'}}</div>"},{name:"lastAssignedTo",cellClass:"text-center ui-grid-vcenter",displayName:"APPLICATION_LAST_ASSIGNED_TO",headerCellFilter:"translate"},{name:"assigned",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellTemplate:'<div class="centered-uigrid-td"><input data-ng-change="grid.appScope.updateItem(row.entity)", bs-switch ng-model="row.entity.assigned" type="checkbox" switch-active="{{ !row.entity.assigned || grid.appScope.agent.name === row.entity.lastAssignedTo }}" switch-on-text="{{ \'APPLICATION_ASSIGNED\' | translate }}" switch-off-text="{{ \'APPLICATION_FREE\' | translate }}" switch-on-color="{{ grid.appScope.radioSwitch.onColor }}" switch-off-color="{{ grid.appScope.radioSwitch.offColor }}" switch-animate="{{ grid.appScope.radioSwitch.animate }}" switch-size="{{ grid.appScope.radioSwitch.size }}" switch-label="{{ grid.appScope.radioSwitch.label }}" switch-icon="{{ grid.appScope.radioSwitch.icon }}" switch-radio-off="{{ grid.appScope.radioSwitch.radioOff }}" switch-label-width="{{ grid.appScope.radioSwitch.labelWidth }}" switch-handle-width="{{ grid.appScope.radioSwitch.handleWidth }}"></div>',enableFiltering:!1}],data:[],onRegisterApi:function(b){a.gridApi2=b,a.gridApi2.grid.registerDataChangeCallback(function(){j(a.gridApi2.core.getVisibleRows(a.gridApi2.grid).length,"table3")})}},g.get({id:a.agent.id,controller:"voice",controller1:"queues"}).$promise}).then(function(b){a.table1.data=_.map(b.rows,function(a){return{queue:a.UserHasVoiceQueue.queue,loggedAt:a.UserHasVoiceQueue.loggedAt,callstaken:a.UserHasVoiceQueue.callstaken,lastcall:a.UserHasVoiceQueue.lastcall}})}).then(function(){return j(a.table1.paginationPageSize>a.table1.data.length?a.table1.data.length:a.table1.paginationPageSize,"table1"),i.socket.on("user_has_voice_queue:remove",function(b){b.UserId===a.agent.id&&_.remove(a.table1.data,{queue:b.queue})}),i.socket.on("user_has_voice_queue:save",function(b){if(b.UserId===a.agent.id||b.membername===a.agent.name){var c=_.find(a.table1.data,{queue:b.queue});c?_.merge(c,b):!c&&b.logged&&a.table1.data.unshift({queue:b.queue,loggedAt:moment(),lastcall:null,callstaken:0})}}),e.get({id:"waiting",controller:"calls"}).$promise}).then(function(b){return a.table2.data=b.rows,e.get({controller:"abandoned",controller2:"all"}).$promise}).then(function(b){a.table3.data=b.rows,i.socket.on("report_queue:save",function(b){a.table2.data.push(b)}),i.socket.on("report_queue:update",function(b){var d=_.find(a.table2.data,{id:b.id});if(d&&(_.merge(d,b),(d.queuecallerabandon||d.queuecallercomplete||d.queuecallerexitreason||b.queuecallerleaveAt)&&c(function(){_.remove(a.table2.data,{id:b.id})},3e3)),b.queuecallerabandon){var e=_.find(a.table3.data,{id:b.id});e?_.merge(e,b):a.table3.data.unshift(b)}})})["catch"](function(a){console.error(a)})},a.updateItem=function(b){return e.update({id:b.id},{assigned:b.assigned,lastAssignedTo:b.assigned?a.agent.name:void 0}).$promise["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.desk",{url:"/desk",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").factory("DeskAccount",["$resource",function(a){return a("/api/desk/accounts/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("DeskListCtrl",["$scope","$http","$rootScope","xAlert","$translate","socket","Modal","stResource",function(a,b,c,d,e,f,g,h){a.conf={accountsByPage:{name:"10",value:10}},a.accountsByPage=[{name:"10",value:10},{name:"25",value:25},{name:"50",value:50},{name:"All",value:0}],a.accounts={checked:[]},a.check=function(b,c){c?a.accounts.checked=angular.copy(_.map(a.displayedDeskAccounts,"id")):a.accounts.checked=[]},a.getAccounts=function(b){return _.map(a.displayedDeskAccounts,function(a){var c={};return b.forEach(function(b){c[b]=a[b]}),c})},a.initList=function(b){f.unsyncUpdates("desk_account"),b.url="/api/desk/accounts",h.getPage(b).then(function(d){a.displayedDeskAccounts=d.rows,b.pagination.numberOfPages=d.total_pages,c.updateTableConfig(a.accountsByPage,a.displayedDeskAccounts.length),c.updateTableConfig(a.conf.accountsByPage,a.displayedDeskAccounts.length)}),f.socket.on("desk_account:save",function(){a.initList(b)}),f.socket.on("desk_account:remove",function(c){a.accounts.checked=_.without(a.accounts.checked,c.id),a.initList(b)})},a.deleteItem=g.confirm["delete"](function(a){b["delete"]("/api/desk/accounts/"+a).success(function(){d.show(e.instant("MESSAGE_WELL_DONE")+"!","success")}).error(function(a){d.error(a)})}),a.deleteItems=g.confirm["delete"](function(){b["delete"]("/api/desk/accounts",{params:{id:a.accounts.checked}}).success(function(){d.show(e.instant("MESSAGE_WELL_DONE"),"success")}).error(function(a){d.error(a)})}),a.checkAccount=function(a){b.get("/api/desk/accounts/"+a+"/check").then(function(){d.show(e.instant("MESSAGE_ACCOUNT_VERIFIED"),"success")})["catch"](function(){d.show(e.instant("MESSAGE_ACCOUNT_INVALID"),"danger")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.desk.list",{url:"/list",templateUrl:"app/desk/list/list.html",controller:"DeskListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("DeskViewCtrl",["$scope","$http","$stateParams","$translate","$location","WizardHandler","socket","xAlert","Modal","desk_com",function(a,b,c,d,e,f,g,h,i,j){a.$stateParams=c,a.config={autoHideScrollbar:!1,theme:"dark",advanced:{updateOnContentResize:!0},setHeight:500,scrollInertia:0},a.initConfiguration=function(){a.formsConfiguration={},a.configuration={}},a.goNext=function(){f.wizard().next()},a.formValidation=function(a){return a},a.$on("$destroy",function(){g.unsyncUpdates("desk_configuration"),g.unsyncUpdates("desk_field")}),a.initView=function(){b.get("/api/desk/accounts/"+c.id).success(function(b){a.account=b}).error(function(a){h.error(a)})},a.updateItem=function(){b.put("/api/desk/accounts/"+c.id,a.account).success(function(){h.show(d.instant("MESSAGE_WELL_DONE")+".","success")}).error(function(){h.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG")+".","danger")})},a.getConfigurations=function(){b.get("/api/desk/configurations",{params:{AccountId:c.id}}).success(function(b){a.configurations=b,g.socket.on("desk_configuration:remove",function(b){_.remove(a.configurations,{id:b.id})})}).error(function(a){h.error(a)})},a.deleteConfiguration=i.confirm["delete"](function(a){b["delete"]("api/desk/configurations/"+a).success(function(){h.show(d.instant("MESSAGE_WELL_DONE"),"success")}).error(function(){h.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})}),a.createConfiguration=function(){a.configuration.AccountId=c.id,b.post("api/desk/configurations",a.configuration).success(function(a){e.path("desk/view/"+c.id+"/configurations/settings/"+a.id)}).error(function(){h.show("Something went wrong!","danger")})},a.fieldType=["string","variable"],a.descFieldType=["string","key_value"],a.getFields=function(){b.get("/api/desk/accounts/"+c.id+"/fields").success(function(b){a.accountFields=j.fields.concat(b)}).error(function(a){h.error(a)})},a.getConfiguration=function(){b.get("/api/desk/configurations/"+c.configurationId).success(function(b){a.configurationName=b.name,a.subjectConfig=b.Subject,a.descriptionConfig=b.Description,a.fieldConfig=b.Field,g.socket.on("desk_field:remove",function(b){_.remove(a.subjectConfig,{id:b.id}),_.remove(a.descriptionConfig,{id:b.id}),_.remove(a.fieldConfig,{id:b.id})})}).error(function(a){h.error(a)})},a.getVariables=function(){b.get("/api/variables").success(function(b){a.variables=b.rows}).error(function(a){h.error(a)})},a.removeItem=function(a){b["delete"]("api/desk/fields/"+a.id).success(function(){h.show(d.instant("MESSAGE_WELL_DONE"),"success")}).error(function(){h.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.addItemSubject=function(){var d={type:"string",content:""};b.post("/api/desk/configurations/"+c.configurationId+"/subject",d).success(function(b){a.subjectConfig.push(b)}).error(function(){h.show("Something went wrong!","danger")})},a.addItemDescription=function(){var d={type:"string",content:""};b.post("/api/desk/configurations/"+c.configurationId+"/description",d).success(function(b){a.descriptionConfig.push(b)}).error(function(){h.show("Something went wrong!","danger")})},a.addItemField=function(){var d={content:""};b.post("/api/desk/configurations/"+c.configurationId+"/field",d).success(function(b){a.fieldConfig.push(b)}).error(function(){h.show("Something went wrong!","danger")})},a.updateField=function(a){b.put("/api/desk/fields/"+a.id,a).success(function(){}).error(function(){h.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG")+".","danger")})},a.changeType=function(b){"variable"===b.type?b.content="":"string"===b.type&&(b.VariableId=null),a.updateField(b)},a.changeDescType=function(b){"key_value"===b.type?(b.content="","string"===b.keyType?b.VariableId=null:"variable"===b.keyType&&(b.keyContent="")):"string"===b.type&&(b.VariableId=null,b.key="",b.keyContent=""),a.updateField(b)},a.changeFieldType=function(b){if(b.content="",b.idField){var c=_.find(a.accountFields,"id",b.idField);c&&(b.customField=_.result(c,"custom",!0))}a.updateField(b)},a.getSystemFieldOptions=function(b){if(b){var c=_.find(a.accountFields,"id",b);return c?c.data.choices?c.data.choices:null:void 0}}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.desk.view",{url:"/view/:id",templateUrl:"app/desk/view/view.html",controller:"DeskViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.desk.view.account",{url:"/account",templateUrl:"app/desk/view/view.account.html"}).state("main.desk.view.configurations",{url:"/configurations",templateUrl:"app/desk/view/view.configurations.html"}).state("main.desk.view.configurations.settings",{url:"/settings/:configurationId",templateUrl:"app/desk/view/view.configurationSettings.html",controller:"DeskViewCtrl"}).state("main.desk.view.configuration",{url:"/configuration",templateUrl:"app/desk/view/view.configuration.html"})}]),angular.module("xCallyShuttleApp").controller("DeskWizardCtrl",["$scope","$http","$location","$translate","xAlert","WizardHandler",function(a,b,c,d,e,f){a.translate=d,a.initWizard=function(){a.$translate=d,a.forms={},a.item={}},a.next=function(){f.wizard().next()},a.exitValidation=function(a){return a},a.createItem=function(){console.log(a.item),b.post("api/desk/accounts",a.item).success(function(){e.show(d.instant("MESSAGE_WELL_DONE")+".","success"),c.path("/desk/list")}).error(function(){e.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG")+".","danger")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.desk.wizard",{url:"/wizard",templateUrl:"app/desk/wizard/wizard.html",controller:"DeskWizardCtrl"})}]),angular.module("xCallyShuttleApp").factory("FreshdeskAccount",["$resource",function(a){return a("/api/freshdesk/accounts/:id/:controller",{id:"@id"},{update:{method:"PUT"},fields:{params:{controller:"fields"},isArray:!0},check:{params:{controller:"check"}}})}]).factory("FreshdeskConfiguration",["$resource",function(a){return a("/api/freshdesk/accounts/:accountId/configurations/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]).factory("FreshdeskField",["$resource",function(a){return a("/api/freshdesk/accounts/:accountId/configurations/:configurationId/fields/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.freshdesk",{url:"/freshdesk",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").controller("FreshdeskListCtrl",["$scope","FreshdeskAccount","gridOptions","xAlert","$translate",function(a,b,c,d,e){a.initView=function(){var d={exporterCsvFilename:"freshdesk_account.csv",columnDefs:[{name:"name",displayName:"APPLICATION_NAME"},{name:"username"},{name:"remoteUri",displayName:"APPLICATION_URI"},{name:"action",width:250,buttons:[{"class":"blue-hoki",href:"/freshdesk/view/{{row.entity.id}}/account",name:"profile"},{"class":"green-jungle",name:"check",onClick:"grid.appScope.checkAccount(row.entity.id)"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.checkAccount=function(a){return b.get({id:a,controller:"check"}).$promise.then(function(){d.show(e.instant("MESSAGE_ACCOUNT_VERIFIED"),"success")})["catch"](function(){d.show(e.instant("MESSAGE_ACCOUNT_INVALID"),"danger")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.freshdesk.list",{url:"/list",templateUrl:"app/freshdesk/list/list.html",controller:"FreshdeskListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.freshdesk.view.configurations",{url:"/configurations",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("FreshdeskViewConfigurationListCtrl",["$scope","$stateParams","$translate","gridOptions","FreshdeskConfiguration","$uibModal",function(a,b,c,d,e,f){a.initView=function(){var c={exporterCsvFilename:"freshdesk_configurations.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:125,buttons:[{"class":"blue-hoki",href:"/freshdesk/view/{{row.entity.AccountId}}/configurations/view/{{row.entity.id}}",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(e,c,a,{accountId:b.id})},a.createItem=function(){var b=f.open({animation:!0,templateUrl:"app/freshdesk/view/configuration/list/create.modal.html",controller:"FreshdeskCreateConfigurationCtrl"});b.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("FreshdeskCreateConfigurationCtrl",["$scope","$translate","$uibModalInstance","FreshdeskConfiguration","xAlert","$stateParams","channel",function(a,b,c,d,e,f,g){a.form={},a.item={},a.channels=g,a.item.channel="voice",a.item.type="Queue",a.save=function(){return d.save({accountId:f.id},a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.freshdesk.view.configurations.list",{url:"/list",templateUrl:"app/freshdesk/view/configuration/list/list.html",controller:"FreshdeskViewConfigurationListCtrl"})}]),angular.module("xCallyShuttleApp").controller("FreshdeskViewConfigurationViewCtrl",["$scope","$filter","$stateParams","$translate","socket","variable","xAlert","FreshdeskAccount","FreshdeskConfiguration","FreshdeskField","Variable","Tag",function(a,b,c,d,e,f,g,h,i,j,k,l){a.$on("$destroy",function(){e.unsyncUpdates("freshdesk_field")}),a.config={autoHideScrollbar:!1,theme:"dark",advanced:{updateOnContentResize:!0},setHeight:300,scrollInertia:0},a.fieldType=[{type:"string",title:"String"},{type:"variable",title:"Variable"},{type:"customVariable",title:"Custom Variable"}],a.descFieldType=[{type:"string",title:"String"},{type:"keyValue",title:"Key Value"}],a.groupVariableByGroup=function(a){switch(a.group){case"voice_queue":return"Voice: Queue";default:return"Other"}},a.initView=function(){a.configurationName="",a.subjectConfig=[],a.descriptionConfig=[],a.fieldConfig=[],a.selectedTags={tags:[]},a.variables=f},a.getConfiguration=function(){return i.get({accountId:c.id,id:c.configurationId}).$promise.then(function(b){a.configurationName=b.name,a.subjectConfig=b.Subject,a.descriptionConfig=b.Description,a.fieldConfig=b.Field,a.selectedTags={tags:_.map(b.Tags,function(a){return a.id})},e.socket.on("freshdesk_field:remove",function(b){_.remove(a.subjectConfig,{id:b.id}),_.remove(a.descriptionConfig,{id:b.id}),_.remove(a.fieldConfig,{id:b.id})})})["catch"](function(a){g.error(a)})},a.getCustomVariables=function(){return k.get().$promise.then(function(b){a.customVariables=b.rows})["catch"](function(a){g.error(a)})},a.getFields=function(){return h.fields({id:c.id}).$promise.then(function(c){a.accountFields=b("freshdesk")(c)})["catch"](function(a){g.error(a)})},a.addItem=function(b){var d={};switch(b){case"subject":case"description":d={type:"string",content:""};break;case"field":d={content:""}}return i.save({accountId:c.id,id:c.configurationId,controller:b},d).$promise.then(function(c){switch(b){case"subject":a.subjectConfig.push(c);break;case"description":a.descriptionConfig.push(c);break;case"field":a.fieldConfig.push(c)}})["catch"](function(a){g.error(a)})},a.changeFieldType=function(b){if(b.content="",b.variableName="",b.nameField="",b.VariableId=null,b.idField){var c=_.find(a.accountFields,"name",b.idField);c&&(b.customField=!c["default"])}a.updateField(b)},a.changeType=function(b){"variable"===b.type?(b.content="",b.variableName=""):"string"===b.type?(b.VariableId=null,b.variableName=""):"customVariable"===b.type&&(b.VariableId=null,b.content=""),a.updateField(b)},a.updateField=function(a){return j.update({accountId:c.id,configurationId:c.configurationId,id:a.id},a).$promise.then(function(){})["catch"](function(a){g.error(a)})},a.removeItem=function(a){return j["delete"]({accountId:c.id,configurationId:c.configurationId,id:a.id}).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){g.error(a)})},a.changeDescType=function(b){"keyValue"===b.type?(b.content="","string"===b.keyType?(b.VariableId=null,b.variableName=""):"variable"===b.keyType?(b.keyContent="",b.VariableId=null):"customVariable"===b.keyType&&(b.keyContent="",b.variableName="")):"string"===b.type&&(b.VariableId=null,b.variableName="",b.key="",b.keyContent=""),a.updateField(b)},a.getSystemFieldOptions=function(b){if(b){var c=_.find(a.accountFields,"name",b);return c&&c.hasOwnProperty("choices")?_.isArray(c.choices)?c.choices.length?c.choices:[]:_.keys(c.choices).length?_.keys(c.choices):[]:!1}},a.getTags=function(){return l.get().$promise.then(function(b){a.tags=b.rows})["catch"](function(a){g.error(a)})},a.updateTags=function(){return i.update({accountId:c.id,id:c.configurationId,controller:"tags"},a.selectedTags.tags).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE")+".","success")})["catch"](function(a){g.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.freshdesk.view.configurations.view",{url:"/view/:configurationId",templateUrl:"app/freshdesk/view/configuration/view/view.html",controller:"FreshdeskViewConfigurationViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("FreshdeskViewCtrl",["$scope","$http","$stateParams","$translate","$location","$filter","WizardHandler","socket","xAlert","Modal","FreshdeskAccount",function(a,b,c,d,e,f,g,h,i,j,k){a.initView=function(){return k.get({id:c.id}).$promise.then(function(b){a.account=b})["catch"](function(a){i.error(a)})},a.updateItem=function(){return k.update({id:c.id},a.account).$promise.then(function(){i.show(d.instant("MESSAGE_WELL_DONE")+".","success")})["catch"](function(a){i.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.freshdesk.view",{url:"/view/:id",templateUrl:"app/freshdesk/view/view.html",controller:"FreshdeskViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.freshdesk.view.account",{url:"/account",templateUrl:"app/freshdesk/view/view.account.html"})}]),angular.module("xCallyShuttleApp").controller("FreshdeskWizardCtrl",["$scope","$http","$location","$translate","xAlert","WizardHandler","FreshdeskAccount",function(a,b,c,d,e,f,g){a.translate=d,a.initWizard=function(){a.$translate=d,a.forms={},a.item={},a.item.serverUrl=c.protocol()+"://"+location.host},a.next=function(){f.wizard().next()},a.exitValidation=function(a){return a},a.createItem=function(){return g.save(a.item).$promise.then(function(){e.show(d.instant("MESSAGE_WELL_DONE")+".","success"),c.path("/freshdesk/list")})["catch"](function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.freshdesk.wizard",{url:"/wizard",templateUrl:"app/freshdesk/wizard/wizard.html",controller:"FreshdeskWizardCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.iframe",{url:"/iframe",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("IframeViewCtrl",["$scope","Auth","Integration","xAlert","$translate","$sce",function(a,b,c,d,e,f){a.Auth=b,a.initView=function(){return c.get({state:"iframe"}).$promise.then(function(c){a.iframe=_.first(c.rows),a.iframe.remoteUri?a.url=f.trustAsResourceUrl(a.iframe.remoteUri):b.isAgent()&&d.show(e.instant("MESSAGE_NO_IFRAME_CONFIGURED")+".","danger")})["catch"](function(a){d.error(a)})},a.updateItem=function(){return b.isAgent()?void 0:c.update({id:a.iframe.id},a.iframe).$promise.then(function(){d.show(e.instant("MESSAGE_WELL_DONE")+".","success")})["catch"](function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.iframe.view",{url:"/view",templateUrl:"app/iframe/view/view.html",controller:"IframeViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}})}]),angular.module("xCallyShuttleApp").factory("Integration",["$resource",function(a){return a("/api/integrations/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.integrations",{url:"/integrations",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:19}}})}]),angular.module("xCallyShuttleApp").controller("IntegrationListCtrl",["$scope","Modal","socket","FileUploader","Integration","xAlert",function(a,b,c,d,e,f){a.integrationsByPage=10;var g=a.uploader=new d({url:"api/integrations",autoUpload:!0,removeAfterUpload:!0});g.filters.push({name:"zipFilter",fn:function(a){var b="|"+a.type.slice(a.type.lastIndexOf("/")+1)+"|";return-1!=="|zip|".indexOf(b)}}),g.onSuccessItem=function(a,b,c,d){console.info("onSuccessItem",a,b,c,d),f.show(b.name,"success")},g.onErrorItem=function(a,b,c,d){console.info("onErrorItem",a,b,c,d),b.errors.forEach(function(a){f.error(err)})},a.deleteItem=b.confirm["delete"](function(a){e["delete"]({id:a},function(){f.show("Integration Removed","success")},function(a){f.error(a)})}),a.initList=function(){a.integrations=e.query({},function(a){c.syncUpdates("integration",a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.integrations.list",{url:"/list",templateUrl:"app/integration/list/list.html",controller:"IntegrationListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.js"]})}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.jscripty",{url:"/jscripty",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").factory("JscriptyProject",["$resource",function(a){return a("/api/jscripty/projects/:id/:controller/:action/:action2",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("JscriptyProjectListCtrl",["$scope","$uibModal","JscriptyProject","gridOptions","Auth",function(a,b,c,d,e){a.Auth=e,a.initView=function(){var b={exporterCsvFilename:"jscriptyProjects.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:300,buttons:[{"class":"blue-hoki",icon:"icon-settings",href:"/jscripty/projects/view/{{row.entity.id}}",hide:e.isAgent()},{"class":" green-turquoise",icon:"fa fa-play",onClick:"grid.appScope.openJscriptyTab(row.entity)"},{"class":"purple",icon:"icon-book-open",href:"/jscripty/projects/report/{{row.entity.id}}/sessions",hide:e.isAgent()},{"class":"red-sunglo",icon:"fa fa-trash",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)",hide:e.isAgent()}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){var c=b.open({animation:!0,templateUrl:"app/jscripty/project/list/list.create.modal.html",controller:"JscriptyProjectListCreateCtrl"});c.result.then(function(b){console.log(b),a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("JscriptyProjectListCreateCtrl",["$scope","$translate","$uibModalInstance","JscriptyProject","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){console.log(a),e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){ +a.state("main.jscripty.projects.list",{url:"/list",templateUrl:"app/jscripty/project/list/list.html",controller:"JscriptyProjectListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.jscripty.projects",{url:"/projects",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("JscriptyProjectReportCtrl",["$scope","uiGridConstants","$http","$state","$stateParams","socket","Auth","Modal","xAlert","$translate","$rootScope","gridOptions","JscriptyProject","$location",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){a.projectStats={started:0,incomplete:0,completed:0},a.projectId=e.id,a.initView=function(){m.get({id:e.id}).$promise.then(function(b){a.project=b})["catch"](function(a){i.error(a)}),m.get({id:e.id,controller:"sessions"}).$promise.then(function(b){var c=_.groupBy(b.rows,"status");a.projectStats.started=c.started?c.started.length:0,a.projectStats.completed=c.completed?c.completed.length:0,a.projectStats.incomplete=c.incomplete?c.incomplete.length:0})["catch"](function(a){i.error(a)})},a.pdf=function(a,b){var c=[];if(a){var d=html2canvas(document.getElementById(a)),e=d.parse(),f=d.render(e),g=f.toDataURL("image/png");c.push({image:g,width:500,style:"img"})}b.length&&_.forEach(b,function(a){var b=html2canvas(document.getElementById(a.question_id)),d=b.parse(),e=b.render(d),f=e.toDataURL("image/png");c.push({image:f,width:500,style:"img"})});var h={content:c};pdfMake.createPdf(h).download("Project_summary.pdf")},a.getProjectSessions=function(){var c={exporterCsvFilename:"jscriptyProjects.csv",columnDefs:[{name:"session_id",displayName:"APPLICATION_SESSIONID"},{name:"queue",displayName:"APPLICATION_QUEUE"},{name:"membername",displayName:"APPLICATION_AGENT"},{name:"calleridnum",displayName:"APPLICATION_CALLERIDNUM"},{name:"createdAt",displayName:"APPLICATION_STARTEDAT",filterHeaderTemplate:'<div class="ui-grid-filter-container row"><div ng-repeat="colFilter in col.filters" class="col-md-6 col-md-offset-0 col-sm-5 col-sm-offset-0 col-xs-5 col-xs-offset-0"><div custom-grid-date-filter-header></div></div></div>',filters:[{name:"From",condition:b.filter.GREATER_THAN_OR_EQUAL},{name:"To",condition:b.filter.LESS_THAN_OR_EQUAL}]},{name:"completedAt",displayName:"APPLICATION_COMPLETEDAT",filterHeaderTemplate:'<div class="ui-grid-filter-container row"><div ng-repeat="colFilter in col.filters" class="col-md-6 col-md-offset-0 col-sm-5 col-sm-offset-0 col-xs-5 col-xs-offset-0"><div custom-grid-date-filter-header></div></div></div>',filters:[{name:"From",condition:b.filter.GREATER_THAN_OR_EQUAL},{name:"To",condition:b.filter.LESS_THAN_OR_EQUAL}]},{name:"status",displayName:"APPLICATION_STATUS"},{name:"last_question_id",displayName:"APPLICATION_LASTQUESTIONID"},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/jscripty/projects/report/{{row.entity.projectId}}/session/{{row.entity.session_id}}",name:"Detail"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteSession(row.entity.session_id)"}]}]};a.gridOptions=l.gridOptions(m,c,a,{id:e.id,controller:"sessions"})},a.deleteSession=function(b){m["delete"]({id:e.id,controller:"sessions",action:b}).$promise.then(function(b){a.gridOptions.getPage(),a.initView(),i.show(j.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){i.error(a)})},a.getSessionDetails=function(){m.get({id:e.id,controller:"sessions",action:e.sessionId}).$promise.then(function(b){a.session=b,a.sessionQuestions=b.ReportJscriptyQuestions})["catch"](function(a){i.error(a)})},a.getQuestionSummary=function(){var b={exporterCsvFilename:"jscriptyProjects.csv",columnDefs:[{name:"question_id",displayName:"APPLICATION_QUESTIONID"},{name:"question_type",displayName:"APPLICATION_QUESTIONTYPE"},{name:"question_label",displayName:"APPLICATION_QUESTIONLABEL"},{name:"question_text",displayName:"APPLICATION_QUESTION"},{name:"count",displayName:"APPLICATION_COUNT",enableFiltering:!1},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/jscripty/projects/report/"+e.id+"/detail/{{row.entity.question_id}}",name:"Detail"}]}]};a.gridOptions=l.gridOptions(m,b,a,{id:e.id,controller:"questions",action:"summary"})},a.getQuestionInputs=function(){var b={exporterCsvFilename:"jscriptyProjects.csv",columnDefs:[{name:"session_id",displayName:"APPLICATION_SESSIONID"},{name:"question_id",displayName:"APPLICATION_QUESTIONID",enableFiltering:!1},{name:"question_label",displayName:"APPLICATION_QUESTIONLABEL",enableFiltering:!1},{name:"question_text",displayName:"APPLICATION_QUESTION",enableFiltering:!1},{name:"input_label",displayName:"APPLICATION_INPUTLABEL",enableFiltering:!1},{name:"input_value",cellTemplate:'<div uib-tooltip="{{row.entity.input_value}}">{{row.entity.input_value}}</div>',displayName:"APPLICATION_INPUTVALUE",enableFiltering:!1}]};a.gridOptions=l.gridOptions(m,b,a,{id:e.id,controller:"inputs"})},a.getProjectDetail=function(){a.projectDetail=[],m.query({id:e.id,controller:"questions",action:"detail"}).$promise.then(function(b){console.log(e.questionId),e.questionId?a.projectDetail.push(_.find(b,function(a){return a.question_id==parseInt(e.questionId)})):a.projectDetail=b,console.log(a.projectDetail)})["catch"](function(a){i.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.jscripty.projects.report",{url:"/report/:id",templateUrl:"app/jscripty/project/report/report.html",controller:"JscriptyProjectReportCtrl"}).state("main.jscripty.projects.report.sessions",{url:"/sessions",templateUrl:"app/jscripty/project/report/report.sessions.html"}).state("main.jscripty.projects.report.summary",{url:"/summary",templateUrl:"app/jscripty/project/report/report.summary.html"}).state("main.jscripty.projects.report.inputs",{url:"/inputs",templateUrl:"app/jscripty/project/report/report.inputs.html"}).state("main.jscripty.projects.report.detail",{url:"/detail",templateUrl:"app/jscripty/project/report/report.detail.html"}).state("main.jscripty.projects.report.questionDetail",{url:"/detail/:questionId",controller:"JscriptyProjectReportCtrl",templateUrl:"app/jscripty/project/report/report.detail.html"}).state("main.jscripty.projects.report.sessionDetail",{url:"/session/:sessionId",controller:"JscriptyProjectReportCtrl",templateUrl:"app/jscripty/project/report/report.session.detail.html"})}]),angular.module("xCallyShuttleApp").controller("JscriptyProjectViewCtrl",["$scope","$http","$state","$stateParams","socket","Auth","Modal","xAlert","$translate","$rootScope",function(a,b,c,d,e,f,g,h,i,j){a.jscriptyProject={},a.getProject=function(){b.get("/api/jscripty/projects/"+d.id).success(function(b){a.jscriptyProject=b,angular.element(document).ready(function(){window.onerror=function(a,b,c){try{if(null!=a&&-1!=a.indexOf("Script error."));else{var d=new Image;d.src="assets/plugins/mxgraph/images/1x1.png?msg="+encodeURIComponent(a)+"&url="+encodeURIComponent(b)+"&lnum="+encodeURIComponent(c)}}catch(e){}},b.token=f.getToken();var a=new EditorUi(new Editor);a.openString(b.draft,b.name,b),a.editor.graphChangeListener=function(a,b){var c=b.properties.rtChange||!1;c||(this.modified=!0)}}),e.syncUpdates("jscripty_project",[b],function(a,c,d){c.id===b.id})})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.jscripty.projects.view",{url:"/view/:id",templateUrl:"app/jscripty/project/view/view.html",controller:"JscriptyProjectViewCtrl",authenticate:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",serie:!0,cache:!1,files:["assets/plugins/mxgraph/css/common.css","assets/plugins/mxgraph/css/explorer.css","assets/plugins/mxgraph/styles/grapheditor.css","assets/plugins/mxgraph/styles/custom.css","assets/plugins/jscripty/js/custom.js","assets/plugins/mxgraph/js/mxClient.js","assets/plugins/jscripty/js/Editor.js","assets/plugins/jscripty/js/Graph.js","assets/plugins/jscripty/js/EditorUi.js","assets/plugins/jscripty/js/Actions.js","assets/plugins/jscripty/js/Menus.js","assets/plugins/jscripty/js/Sidebar.js","assets/plugins/jscripty/js/Toolbar.js","assets/plugins/jscripty/js/Dialogs.js"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("LandingCtrl",["$scope","$location","$window","$timeout","Auth","Setting","YourDashboard",function(a,b,c,d,e,f,g){function h(b,c){var d,f,g=b.length;for(d=0;g>d;d++)if(_.includes(c,b[d].id))if(b[d].SubModules&&b[d].SubModules.length){if(f=h(b[d].SubModules,c))return f}else switch(b[d].id){case 2:var i={};i[e.getRole()]=!0;var j=_.find(a.tempDashboards,i);if(j)return f="/tools/yourdashboards/show/"+j.id,delete a.tempDashboards,f;break;default:return b[d].path}}function i(c){c||(a.message="MESSAGE_NO_AVAILABLE_MODULES"),d(function(){b.path(c)},500)}a.initLanding=function(){a.year=moment().year();var c;return f.get({controller:"info"}).$promise.then(function(b){return a.info=b,f.get({id:1}).$promise.then(function(a){return a})["catch"](function(){return null})}).then(function(d){var f,j=e.getCurrentUser().$promise;return j?j.then(function(e){if(f=e,c&&"admin"===e.role&&d.firstLogin)return void b.path("/adminreset");switch(f.role){case"user":if(_.includes(_.map(e.Modules,"id"),2))return g.get().$promise.then(function(b){a.tempDashboards=b.rows,i(h(f.Modules,_.map(e.Modules,"id")))})["catch"](function(){_.remove(f.Modules,{id:2}),i(h(f.Modules,_.map(e.Modules,"id")))});i(h(f.Modules,_.map(e.Modules,"id")));break;case"admin":case"agent":i("/dashboard/voice")}})["catch"](function(a){console.error(a),b.path("/login")}):void b.path("/login")})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("landing",{url:"/landing",templateUrl:"app/landing/landing.html",controller:"LandingCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/error.css","assets/css/login.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("LoginCtrl",["$scope","Auth","$location","$window","$rootScope","Setting","xAlert","$stateParams",function(a,b,c,d,e,f,g,h){a.year=moment().year(),a.recovered=h.reset,a.userLogin={},a.userSignUp={},a.loginSubmitted=!1,a.signupSubmitted=!1,a.errorLogin=!1,a.errorSignup=!1,a.errorLog="",a.forgotPassword=!1,a.showRecoverMessage=!1,a.flagLogin1=!1,a.getInfo=function(){return f.get({controller:"info"}).$promise.then(function(b){a.info=b})["catch"](function(a){g.error(a)})},a.toggleLogin=function(){a.flagLogin1=!a.flagLogin1},a.toggleForgotPassword=function(b){a.showRecoverMessage=!1,a.userLogin.email="",a.forgotPassword=b},e.bodyLayout="login",a.$on("$viewContentLoaded",function(){Metronic.init(),Layout.init()}),a.recover=function(){b.recover({email:a.userLogin.email}).then(function(){a.showRecoverMessage=!0})["catch"](function(b){a.showRecoverMessage=!1,g.error(b)})},a.login=function(d){a.loginSubmitted=!0,d.$valid?b.login({name:a.userLogin.name,password:a.userLogin.password,remember:a.userLogin.remember}).then(function(){c.path("/landing")})["catch"](function(b){a.errorLog=b.message||"error",a.errorLogin=!0}):a.errorLogin=!0},a.signup=function(c){a.signupSubmitted=!0,c.$valid?b.createUser({email:a.userSignUp.email,fullname:a.userSignUp.fullname,name:a.userSignUp.name,password:a.userSignUp.password,role:a.userSignUp.role,online:!0})["catch"](function(b){a.errorLog=b.message||"error",a.errorSignup=!0}):a.errorSignup=!0},a.loginOauth=function(a){d.location.href="/auth/"+a}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("login",{url:"/login",templateUrl:"app/login/login.html",params:{reset:null},controller:"LoginCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/login.css"]}])}]}})}]),angular.module("xCallyShuttleApp").factory("Action",["$resource",function(a){return a("/api/actions/:name/:controller",{name:"@name"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("Ami",["$resource",function(a){return a("/api/ami/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("ChooseContactModalCtrl",["$scope","$uibModalInstance","data","xAlert","$translate","Contact",function(a,b,c,d,e,f){a.open=function(a){b.close(a)},a.getContacts=function(){return f.search({controller:"listcontact"},c).$promise.then(function(b){a.contacts=b.rows})["catch"](function(a){d.error(a)})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("CloseEditedTabModalCtrl",["$scope","$uibModalInstance",function(a,b){a.close=function(){b.close()},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("CloseEditedTabModalJscriptyCtrl",["$scope","$uibModalInstance","project","JscriptyProject","xAlert",function(a,b,c,d,e){a.init=function(){a.project=c},a.close=function(){d.update({id:a.project.projectId,controller:"sessions",action:a.project.sessionId},{status:"incomplete",completedAt:Date(),last_question_id:a.project.lastQuestionId}).$promise.then(function(a){e.show("Project Ended","success")}),b.close()},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("ContactManagerSetDisposition",["$scope","$uibModalInstance","VoiceDisposition",function(a,b,c){a.initDisposition=function(){return c.get().$promise.then(function(b){a.dispositions=b.rows})["catch"](function(a){console.error(a)})},a.item={},a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss()}}]),angular.module("xCallyShuttleApp").controller("customGridDateFilterModalCtrl",["$scope","$rootScope","$log","$uibModalInstance","term","hasTime",function(a,b,c,d,e,f){if(a.hasTime=f,a.dateTime={},e)if(f){var g=e.split(" ");a.dateTime.filterDate=moment(g[0]),a.dateTime.time=e[1]?moment(g[1],"HH:mm"):moment()}else a.dateTime.filterDate=moment(e);else f&&(a.dateTime.time=moment());a.setFilterDate=function(b){d.close({date:moment(b).format("YYYY-MM-DD").toString(),time:f?a.dateTime.time?moment(a.dateTime.time).format("HH:mm").toString():moment().format("HH:mm").toString():null})},a.cancelDateFilter=function(){d.dismiss()}}]),angular.module("xCallyShuttleApp").controller("customGridTagsModalCtrl",["$scope","$rootScope","$log","$uibModalInstance","term","Tag","xAlert",function(a,b,c,d,e,f,g){a.initModal=function(){return a.item={},f.get().$promise.then(function(b){a.tags=_.map(b.rows,"name"),a.item.myTags=e})["catch"](function(a){console.log("error retrieving tags"),g.error(a),d.dismiss()})},a.setFilterTags=function(){d.close(a.item.myTags)},a.cancelTagsFilter=function(){d.dismiss()}}]),angular.module("xCallyShuttleApp").factory("templateVariable",["$translate",function(a){return[{id:"voice",label:a.instant("APPLICATION_VOICE"),title:a.instant("APPLICATION_VOICE"),groups:[{label:a.instant("APPLICATION_QUEUE"),values:[{value:"{{uniqueid}}",label:a.instant("APPLICATION_UNIQUEID"),description:a.instant("APPLICATION_UNIQUEID")},{value:"{{calleridnum}}",label:a.instant("APPLICATION_CALLERIDNUM"),description:a.instant("APPLICATION_CALLERIDNUM")},{value:"{{calleridname}}",label:a.instant("APPLICATION_CALLERIDNAME"),description:a.instant("APPLICATION_CALLERIDNAME")},{value:"{{queue}}",label:a.instant("APPLICATION_QUEUE"),description:a.instant("APPLICATION_QUEUE")},{value:"{{interface}}",label:a.instant("APPLICATION_INTERFACE"),description:a.instant("APPLICATION_INTERFACE")},{value:"{{membername}}",label:a.instant("APPLICATION_MEMBERNAME"),description:a.instant("APPLICATION_MEMBERNAME")},{value:"{{holdtime}}",label:a.instant("APPLICATION_HOLDTIME"),description:a.instant("APPLICATION_HOLDTIME")},{value:"{{talktime}}",label:a.instant("APPLICATION_TALKTIME"),description:a.instant("APPLICATION_TALKTIME")},{value:"{{connectedlinenum}}",label:a.instant("APPLICATION_CONNECTEDLINENUM"),description:a.instant("APPLICATION_CONNECTEDLINENUM")},{value:"{{connectedlinename}}",label:a.instant("APPLICATION_CONNECTEDLINENAME"),description:a.instant("APPLICATION_CONNECTEDLINENAME")},{value:"{{agentconnectAt}}",label:a.instant("APPLICATION_CONNECTED_AT"),description:a.instant("APPLICATION_CONNECTED_AT")},{value:"{{agentcalledAt}}",label:a.instant("APPLICATION_CALLED_AT"),description:a.instant("APPLICATION_CALLED_AT")},{value:"{{agentcompleteAt}}",label:a.instant("APPLICATION_COMPLETED_AT"),description:a.instant("APPLICATION_AGENT_CALLED_AT")},{value:"{{reason}}",label:a.instant("APPLICATION_REASON"),description:a.instant("APPLICATION_REASON")},{value:"{{lastevent}}",label:a.instant("APPLICATION_LAST_EVENT"),description:a.instant("APPLICATION_LAST_EVENT")},{value:"{{channel}}",label:a.instant("APPLICATION_CHANNEL"),description:a.instant("APPLICATION_CHANNEL")}]}]},{id:"chat",label:a.instant("APPLICATION_CHAT"),title:a.instant("APPLICATION_CHAT"),groups:[{label:a.instant("APPLICATION_VARIABLES"),values:[{value:"{{username}}",label:a.instant("APPLICATION_USERNAME"),description:a.instant("APPLICATION_USERNAME")},{value:"{{email}}",label:a.instant("APPLICATION_MAIL"),description:a.instant("APPLICATION_MAIL")},{value:"{{text}}",label:a.instant("APPLICATION_TEXT"),description:a.instant("APPLICATION_TEXT")},{value:"{{chatWebsite}}",label:a.instant("APPLICATION_WEBSITE"),description:a.instant("APPLICATION_WEBSITE")}]}]},{id:"mail",label:a.instant("APPLICATION_MAIL"),title:a.instant("APPLICATION_MAIL"),groups:[{label:a.instant("APPLICATION_INTERACTION"),values:[{value:"{{interactionId}}",label:a.instant("APPLICATION_INTERACTION_ID"),description:a.instant("APPLICATION_INTERACTION_ID")},{value:"{{subject}}",label:a.instant("APPLICATION_SUBJECT"),description:a.instant("APPLICATION_SUBJECT")},{value:"{{{body}}}",label:a.instant("APPLICATION_MESSAGE"),description:a.instant("APPLICATION_MESSAGE")},{value:"{{accountName}}",label:a.instant("APPLICATION_ACCOUNT"),description:a.instant("APPLICATION_ACCOUNT")},{value:"{{from}}",label:"From",description:"From"},{value:"{{to}}",label:"To",description:"To"},{value:"{{cc}}",label:"Cc",description:"Cc"},{value:"{{agentName}}",label:a.instant("APPLICATION_AGENT_NAME"),description:a.instant("APPLICATION_AGENT_NAME")},{value:"{{agentEmail}}",label:a.instant("APPLICATION_AGENT_EMAIL"),description:a.instant("APPLICATION_AGENT_EMAIL")},{value:"{{createdAt}}",label:a.instant("APPLICATION_CREATED_AT"),description:a.instant("APPLICATION_CREATED_AT")}]}]},{id:"sms",label:a.instant("APPLICATION_SMS"),title:a.instant("APPLICATION_SMS"),groups:[{label:a.instant("APPLICATION_INTERACTION"),values:[{value:"{{SmsRoomId}}",label:a.instant("APPLICATION_INTERACTION_ID"),description:a.instant("APPLICATION_INTERACTION_ID")},{value:"{{{body}}}",label:a.instant("APPLICATION_MESSAGE"),description:a.instant("APPLICATION_MESSAGE")},{value:"{{from}}",label:"From",description:"From"},{value:"{{to}}",label:"To",description:"To"},{value:"{{createdAt}}",label:a.instant("APPLICATION_CREATED_AT"),description:a.instant("APPLICATION_CREATED_AT")}]}]},{id:"openchannel",label:a.instant("APPLICATION_OPENCHANNEL"),title:a.instant("APPLICATION_OPENCHANNEL"),groups:[{label:a.instant("APPLICATION_INTERACTION"),values:[{value:"{{OpenchannelRoomId}}",label:a.instant("APPLICATION_INTERACTION_ID"),description:a.instant("APPLICATION_INTERACTION_ID")},{value:"{{{body}}}",label:a.instant("APPLICATION_MESSAGE"),description:a.instant("APPLICATION_MESSAGE")},{value:"{{from}}",label:"From",description:"From"},{value:"{{to}}",label:"To",description:"To"},{value:"{{createdAt}}",label:a.instant("APPLICATION_CREATED_AT"),description:a.instant("APPLICATION_CREATED_AT")}]}]},{id:"fax",label:a.instant("APPLICATION_FAX"),title:a.instant("APPLICATION_FAX"),groups:[{label:a.instant("APPLICATION_INTERACTION"),values:[{value:"{{FaxRoomId}}",label:a.instant("APPLICATION_INTERACTION_ID"),description:a.instant("APPLICATION_INTERACTION_ID")},{value:"{{uniqueid}}",label:a.instant("APPLICATION_UNIQUEID"),description:a.instant("APPLICATION_UNIQUEID")},{value:"{{calleridnum}}",label:a.instant("APPLICATION_CALLERIDNUM"),description:a.instant("APPLICATION_CALLERIDNUM")},{value:"{{calleridname}}",label:a.instant("APPLICATION_CALLERIDNAME"),description:a.instant("APPLICATION_CALLERIDNAME")},{value:"{{channel}}",label:a.instant("APPLICATION_CHANNEL"),description:a.instant("APPLICATION_CHANNEL")},{value:"{{from}}",label:"From",description:"From"},{value:"{{to}}",label:"To",description:"To"},{value:"{{accountName}}",label:a.instant("APPLICATION_ACCOUNT"),description:a.instant("APPLICATION_ACCOUNT")}]}]}]}]),angular.module("xCallyShuttleApp").controller("gridDatePickerFilterCtrl",["$scope","$timeout","$uibModal","uiGridConstants",function(a,b,c,d){b(function(){a.col.colDef.name;a.openDatePicker=function(b){var d=c.open({templateUrl:"app/main/customDateFilter.modal.html",controller:"customGridDateFilterModalCtrl",size:"md",windowClass:"custom-date-filter-modal",resolve:{term:[function(){return b.term||null}],hasTime:b.hasTime||!1}});d.result.then(function(c){a.colFilter.listTerm=[],a.colFilter.term=c.date,b.hasTime&&(a.colFilter.term+=" "+c.time)})}})}]),angular.module("xCallyShuttleApp").factory("gridOptions",["Modal","xAlert","$translate","$interval","$q","usSpinnerService",function(a,b,c,d,e,f){return{gridOptions:function(d,g,h,i,j,k,l){function m(a,b){a.filter&&a.filter.term&&b&&(o[a.name]=a.filter.term),a.filters&&(a.filters.length>1?a.filters.forEach(function(b){b.term?64===b.condition?o[a.name+"_uiFrom"]=b.term:256===b.condition&&(o[a.name+"_uiTo"]=b.term):64===b.condition?delete o[a.name+"_uiFrom"]:256===b.condition&&delete o[a.name+"_uiTo"]}):a.filters.length&&a.filters[0].term?o[a.name]=a.filters[0].term:delete o[a.name])}h.id=[];var n=k?"gridOptions"+k:"gridOptions",o={offset:0,limit:10},p={offset:0,limit:10};g.draggable&&(g.rowTemplate='<div grid="grid" class="ui-grid-draggable-row" draggable="true"><div ng-repeat="(colRenderIndex, col) in colContainer.renderedColumns track by col.colDef.name" class="ui-grid-cell" ng-class="{ \'ui-grid-row-header-cell\': col.isRowHeader, \'custom\': true }" ui-grid-cell></div></div>',g.useExternalPagination=!1,g.enablePaginationControls=!1,g.showGridFooter=!1);var q=function(a){var b=a&&a>h[n].paginationPageSize?h[n].paginationPageSize:a,c=b?30*b+120:177,d=angular.element(document.getElementsByName(n)).length?angular.element(document.getElementsByName(n)[0]):angular.element(document.getElementsByClassName("ui-grid")[0]);d.css("height",c+"px")},r=function(a,b){return h[n].enablePaginationControls||(delete o.offset,delete o.limit),f.spin("spinner-grid"),i=a||i,d=b||d,d.get(i?_.merge(o,i):o).$promise.then(function(a){h[n].totalItems=a.count,h[n].data=a.rows,q(a.rows.length),l&&l()})["catch"](function(a){console.error(a)})["finally"](function(){f.stop("spinner-grid")})};return h.deleteItem=a.confirm["delete"](function(a){var e=i?angular.copy(i):{};return _.merge(e,{id:a}),d.remove(e).$promise.then(function(){r(),b.show(c.instant("MESSAGE_WELL_DONE")+"!","success"),h.gridApi.selection.clearSelectedRows(),h.id=[]})["catch"](function(a){b.error(a)})}),h.deleteItems=a.confirm["delete"](function(){var a=i?angular.copy(i):{};return _.merge(a,{ids:h.id}),d["delete"](a).$promise.then(function(){r(),b.show(c.instant("MESSAGE_WELL_DONE")+"!","success"),h.gridApi.selection.clearSelectedRows(),h.id=[]})["catch"](function(a){b.error(a)})}),g.columnDefs.forEach(function(a){m(a,!0),a.hasOwnProperty("displayName")||(a.displayName="APPLICATION_"+a.name.toUpperCase()),a.headerCellFilter="translate",a.hasOwnProperty("buttons")&&(a.displayName="",a.cellClass="ui-grid-vcenter",a.enableSorting=!1,a.enableFiltering=!1,a.enableColumnMenu=!1,a.cellTemplate="<div>",a.buttons.forEach(function(b){if(b.directive)a.cellTemplate+=b.directive;else{if(a.cellTemplate+="<a",a.cellTemplate+=b.hide?' data-ng-hide="'+b.hide+'" ':" ",a.cellTemplate+=b["class"]?' class="btn btn-xs '+b["class"]+'" ':" ",a.cellTemplate+=b.href?' data-ng-href="'+b.href+'" ':" ",a.cellTemplate+=b.uisref?' ui-sref="'+b.uisref+'" ':" ",a.cellTemplate+=b.onClick?' data-ng-click="'+b.onClick+'" ':" ",a.cellTemplate+=b.title?' title="'+b.title+'"':"",a.cellTemplate+=">",a.cellTemplate+=b.icon?'<i class="'+b.icon+'"></i>':"",b.name)switch(b.name){case"delete":a.cellTemplate+='<i class="icon-trash" title="'+b.name+'"></i>';break;case"profile":case"settings":case"detail":case"embedding":a.cellTemplate+='<i class="icon-settings" title="'+b.name+'"></i>';break;case"view":a.cellTemplate+='<i class="icon-doc" title="'+b.name+'"></i>';break;case"clone":a.cellTemplate+='<i class="icon-docs" title="'+b.name+'"></i>';break;case"permits":a.cellTemplate+='<i class="icon-key"></i>';break;case"copy":a.cellTemplate+='<i class="fa fa-files-o" title="'+b.name+'"></i>';break;case"select":a.cellTemplate+='<i class="icon-check" title="'+b.name+'"></i>';break;case"preview":a.cellTemplate+='<i class="icon-magnifier" title="'+b.name+'"></i>';break;case"contacts":a.cellTemplate+='<i class="fa fa-users" title="'+b.name+'"></i>';break;case"download":case"export":a.cellTemplate+='<i class="fa fa-download" title="'+b.name+'"></i>';break;case"agents":a.cellTemplate+='<i class="icon-people" title="'+b.name+'"></i>';break;case"run":a.cellTemplate+='<i class="fa fa-cogs" title="'+b.name+'"></i>';break;case"mailRoom":a.cellTemplate+='<i class="fa fa-envelope"></i>';break;case"chatRoom":a.cellTemplate+='<i class="fa fa-users"></i>';break;case"faxRoom":a.cellTemplate+='<i class="fa fa-fax"></i>';break;case"smsRoom":a.cellTemplate+='<i class="glyphicon glyphicon-comment"></i>';break;case"check":a.cellTemplate+='<i class="fa fa-check" title="'+b.name+'"></i>';break;case"queues":a.cellTemplate+='<i class="icon-docs" title="'+b.name+'"></i>';break;default:a.cellTemplate+="{{'APPLICATION_"+b.name.toUpperCase()+"' | translate}}"}else a.cellTemplate+=b.displayName?"{{'"+b.displayName+"' | translate}}":"";a.cellTemplate+="</a> "}}),a.cellTemplate+="<div>",delete a.buttons)}),_.merge({enableGridMenu:!0,headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableRowSelection:!0,enableSelectAll:!0,enableFiltering:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,useExternalPagination:!0,useExternalSorting:!0,useExternalFiltering:!0,multiSelect:!0,getPage:r,pagOpt:o,gridMenuTitleFilter:function(a){var b=e.defer();return b.resolve(c.instant(a)),b.promise},exporterAllDataFn:function(){return p.offset=o.offset,p.limit=o.limit,o={offset:0,limit:null},r().then(function(){o.offset=p.offset,o.limit=p.limit,r()})},exporterFieldCallback:function(a,b,c,d){if("applications"===c.field&&b.entity.Applications){var e="";return _.forEach(b.entity.Applications,function(a){e+=a.app+"("+a.appdata.join(",")+")"}),e}return d},exporterHeaderFilter:c.instant,onRegisterApi:function(a){h.gridApi=a,h.gridApi.selection&&(h.gridApi.selection.on.rowSelectionChanged(h,function(a){a.isSelected?h.id.push(h.gridApi.grid.options.primaryKey?a.entity[h.gridApi.grid.options.primaryKey]:a.entity.id):_.pull(h.id,h.gridApi.grid.options.primaryKey?a.entity[h.gridApi.grid.options.primaryKey]:a.entity.id)}),h.gridApi.selection.on.rowSelectionChangedBatch(h,function(a){a[0].isSelected?h.id=_.union(h.id,_.map(a,h.gridApi.grid.options.primaryKey?"entity."+h.gridApi.grid.options.primaryKey:"entity.id")):_.map(a,h.gridApi.grid.options.primaryKey?"entity."+h.gridApi.grid.options.primaryKey:"entity.id").forEach(function(a){_.pull(h.id,a)})})),h.gridApi.core.on.sortChanged(h,function(a,b){0===b.length?o.order=null:o.order=b[0].name+" "+b[0].sort.direction.toUpperCase(),r()});for(var e=0;e<h.gridOptions.columnDefs.length;e++)if(h.gridOptions.columnDefs[e].hasOwnProperty("sort")){o.order=h.gridOptions.columnDefs[e].name+" "+h.gridOptions.columnDefs[e].sort.direction.toUpperCase();break}h.gridApi.pagination.on.paginationChanged(h,function(a,b){o.offset=(a-1)*b,o.limit=b,r()}),h.gridApi.core.on.filterChanged(h,function(){var a=this.grid;a.columns.forEach(function(a){m(a)}),r()}),h.gridApi.draggableRows&&h.gridApi.draggableRows.on.rowDropped(h,function(a){a.fromIndex!==a.toIndex&&d.update(i,h[n].data).$promise.then(function(){b.show(c.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){b.error(a)})["finally"](function(){r()})}),j||r()}},g)}}}]),angular.module("xCallyShuttleApp").controller("gridTagsFilterCtrl",["$scope","$timeout","$uibModal","uiGridConstants",function(a,b,c,d){b(function(){a.col.colDef.name;a.openTags=function(b){var d=c.open({templateUrl:"app/main/customTagsFilter.modal.html",controller:"customGridTagsModalCtrl",size:"md",resolve:{term:[function(){if(b.term){var a=b.term.split(";");return a.pop(),a}return[]}]}});d.result.then(function(b){a.colFilter.listTerm=[],b.length&&(a.colFilter.term=b.join(";")+";")})}})}]),angular.module("xCallyShuttleApp").controller("MainCtrl",["$scope","$rootScope","$translate","$timeout","socket","Auth","xAlert","$uibModal","$log","$state","Contact","$window","$location","localStorageService","YourDashboard","Setting","AuthResource","$cookieStore",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){function s(d){b.activeTour={main:!1},b.tourConfig={main:[{type:"function",fn:function(){b.tempTourPath=m.path()}},{type:"title",heading:c.instant("TOUR_MAIN_WELCOME"),text:'<div class="row"><div id="title-text" class="col-md-12"><span class="main-text">'+c.instant("TOUR_MAIN_DISCOVER_MOTION")+"</span><br/></div></div>",curtainClass:"myCurtainClass"}]},(f.isAdmin()||b.userModules[1])&&(b.tourConfig.main=b.tourConfig.main.concat([{type:"location_change",path:"/dashboard/voice"},{type:"title",heading:c.instant("TOUR_MAIN_DASHBOARD"),text:c.instant("TOUR_MAIN_DASHBOARD_MESSAGE"),curtainClass:"myCurtainClass"}])),(f.isAdmin()||b.userModules[2])&&d&&(b.tourConfig.main=b.tourConfig.main.concat([{type:"location_change",path:"/tools/yourdashboards/show/"+d.id},{type:"title",heading:c.instant("TOUR_MAIN_YOURDASHBOARD"),text:c.instant("TOUR_MAIN_YOURDASHBOARD_MESSAGE"),curtainClass:"myCurtainClass"}]),delete a.tempDashboards),(f.isAdmin()||b.userModules[4])&&(b.tourConfig.main=b.tourConfig.main.concat([{type:"location_change",path:"/staff/agents/list"},{type:"title",heading:c.instant("TOUR_MAIN_AGENTS"),text:c.instant("TOUR_MAIN_AGENTS_MESSAGE"),curtainClass:"myCurtainClass"}])),f.isAdmin()&&(b.tourConfig.main=b.tourConfig.main.concat([{type:"location_change",path:"/channels/voice/queues/list"},{type:"title",heading:c.instant("TOUR_MAIN_VOICE_QUEUE"),text:c.instant("TOUR_MAIN_VOICE_QUEUE_ADD_MESSAGE"),curtainClass:"myCurtainClass"}])),b.license.chat&&(f.isAdmin()||b.userModules[30])&&(b.tourConfig.main=b.tourConfig.main.concat([{type:"location_change",path:"/channels/chat/queues/list"},{type:"title",heading:c.instant("TOUR_MAIN_CHAT_QUEUE"),text:c.instant("TOUR_MAIN_CHAT_QUEUE_MESSAGE"),curtainClass:"myCurtainClass"}])),b.license.openchannel&&(f.isAdmin()||b.userModules[46])&&(b.tourConfig.main=b.tourConfig.main.concat([{type:"location_change",path:"/channels/openchannel/accounts/list"},{type:"title",heading:c.instant("TOUR_MAIN_OPENCHANNEL"),text:c.instant("TOUR_MAIN_OPENCHANNEL_MESSAGE"),curtainClass:"myCurtainClass"}])),(f.isAdmin()||b.userModules[14])&&(b.tourConfig.main=b.tourConfig.main.concat([{type:"location_change",path:"/square/projects/list"},{type:"title",heading:c.instant("TOUR_MAIN_SQUARE_PROJECT"),text:c.instant("TOUR_MAIN_SQUARE_PROJECT_MESSAGE"),curtainClass:"myCurtainClass"}])),(f.isAdmin()||b.userModules[52])&&(b.tourConfig.main=b.tourConfig.main.concat([{type:"location_change",path:"/tools/trunks/list"},{type:"title",heading:c.instant("TOUR_MAIN_TRUNKS"),text:c.instant("TOUR_MAIN_TRUNKS_MESSAGE"),curtainClass:"myCurtainClass"}])),(f.isAdmin()||b.userModules[52])&&(b.tourConfig.main=b.tourConfig.main.concat([{type:"location_change",path:"/tools/triggers/list"},{type:"title",heading:c.instant("TOUR_MAIN_TRIGGERS"),text:c.instant("TOUR_MAIN__MESSAGE"),curtainClass:"myCurtainClass"}])),b.license.jscripty&&(f.isAdmin()||b.userModules[50])&&(b.tourConfig.main=b.tourConfig.main.concat([{type:"location_change",path:"/jscripty/projects/list" +},{type:"title",heading:c.instant("TOUR_MAIN_JSCRIPTY"),text:c.instant("TOUR_MAIN_JSCRIPTY_MESSAGE"),curtainClass:"myCurtainClass"}])),(f.isAdmin()||b.userModules[17])&&(b.tourConfig.main=b.tourConfig.main.concat([{type:"location_change",path:"/analytics/reports/list"},{type:"title",heading:c.instant("TOUR_MAIN_REPORTS"),text:c.instant("TOUR_MAIN_REPORTS_MESSAGE"),curtainClass:"myCurtainClass"}])),b.tourConfig.main=b.tourConfig.main.concat([{type:"title",heading:c.instant("TOUR_MAIN_END"),text:c.instant("TOUR_MAIN_END_MESSAGE"),curtainClass:"myCurtainClass"}]),n.get("skipTour")||(b.activeTour.main=!0)}a.awesomeThings=[],b.workspaces=[],a.Auth=f,b.userModules={},a.keepMeLoggedModalInstance=void 0,a.agentLogout=function(a,b){var d=h.open({animation:!0,templateUrl:"app/channels/realtime/view/agent/agent.modal.logout.html",controller:"RealtimeViewAgentLogoutModalCtrl",resolve:{name:function(){return a}}});d.result.then(function(){return q.get({controller:"logout",controller2:"agent",param:b}).$promise.then(function(){g.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){console.error(a)})},function(){i.info("Modal dismissed at: "+new Date)})},b.initTours=function(){return f.isAdmin()||b.userModules[2]?o.get().$promise.then(function(a){var b={};b[f.getRole()]=!0,s(_.find(a.rows,b))})["catch"](function(a){console.log(a)}):void s()},b.onTourFinish=function(){n.set("skipTour",!0),b.tempTourPath&&m.path(b.tempTourPath)},b.onTourSkip=function(){n.set("skipTour",!0)},a.select=function(a){switch(a.type){case"chatRoom":case"mailRoom":case"faxRoom":a.unread=0}},e.socket.on("agent:save",function(c){!c.online&&f.isAgent()&&(a.keepMeLoggedModalInstance||(a.keepMeLoggedModalInstance=h.open({animation:!0,backdrop:"static",keyboard:!1,templateUrl:"app/main/keepMeLogged.modal.html",controller:["$scope","$uibModalInstance",function(a,b){a.close=function(){b.close(!0)},a.cancel=function(){b.close(!1)}}]}),a.keepMeLoggedModalInstance.result.then(function(a){a?(b.settings.logoutOnWindowClose=!1,l.location.reload()):(f.logout(),m.path("/login"))})))}),a.openTdTab=function(a){b.workspaces.push({type:"tdDisposal",name:"Motion Dialer Disposition","class":"icon-control-forward",active:!0,spooler:a})},a.deselect=function(){},l.onbeforeunload=function(){if(f.isAgent()&&b.settings.logoutOnWindowClose){var a=new XMLHttpRequest;a.open("GET","/auth/local/logout",!1),a.setRequestHeader("Content-type","application/json"),a.setRequestHeader("Authorization","Bearer "+r.get("token")),a.send(),f.logout()}return null},a.isAdmin=f.isAdmin,a.isLoggedIn=f.isLoggedIn,a.getCurrentUser=f.getCurrentUser,a.CurrentUser=f.getCurrentUser(),e.socket.on("user_has_voice_queue_permit:change",function(){a.CurrentUser=f.getCurrentUser()}),e.socket.on("user_has_chat_queue_permit:change",function(){a.CurrentUser=f.getCurrentUser()}),e.socket.on("user_has_mail_queue_permit:change",function(){a.CurrentUser=f.getCurrentUser()}),e.socket.on("user_has_fax_queue_permit:change",function(){a.CurrentUser=f.getCurrentUser()}),e.socket.on("user_has_sms_queue_permit:change",function(){a.CurrentUser=f.getCurrentUser()}),a.mainTab={active:!0},a.closeJscriptyTab=function(a){if(b.workspaces[a].edited){var c=h.open({animation:!0,templateUrl:"app/main/closeEditedTab.modal.jscripty.html",controller:"CloseEditedTabModalJscriptyCtrl",resolve:{project:b.workspaces[a]}});c.result.then(function(){b.workspaces.splice(a,1)})}else b.workspaces.splice(a,1)},b.closeTab=function(a){var c;b.workspaces[a].edited?"jscripty"===b.workspaces[a].type?b.workspaces[a].end():(c=h.open({animation:!0,templateUrl:"app/main/closeEditedTab.modal.html",controller:"CloseEditedTabModalCtrl"}),c.result.then(function(){b.workspaces.splice(a,1)},function(){i.info("Modal dismissed at: "+new Date)})):b.workspaces.splice(a,1)},a.createContact=function(d,e,f){var h=_.clone(e);return h.CompanyId||delete h.CompanyId,h.dateOfBirth&&(h.dateOfBirth=moment(h.dateOfBirth).format("DD/MM/YYYY")),k.save(h).$promise.then(function(e){b.workspaces.splice(d,1);var h=e.firstName;e.lastName&&(h+=" "+e.lastName),a.openContactTab({firstName:e.firstName,lastName:e.lastName,id:e.id},f),g.show(c.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){g.error(a)})};var t=function(b){var c=h.open({animation:!0,templateUrl:"app/main/chooseContact.modal.html",controller:"ChooseContactModalCtrl",resolve:{data:function(){return b}}});c.result.then(function(c){c?a.openContactTab(c,b):a.newContact(b)},function(){i.info("Modal dismissed at: "+new Date)})};a.updateContact=function(a,d){var e=angular.copy(d);return e.CompanyId||(e.CompanyId=null),e.dateOfBirth&&(e.dateOfBirth=moment(e.dateOfBirth).format("DD/MM/YYYY")),k.update({id:e.id},e).$promise.then(function(){b.workspaces[a].edited=!1,g.show(c.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){g.error(a)})},e.socket.on("report_integration:contactmanager",function(a){t(a)}),e.socket.on("report_integration:webPopup",function(a){"motion"===a.type?b.workspaces.push({type:"webPopup",name:"Web Popup","class":"icon-info",active:!0,data:a}):l.open(a.url||"","_blank")}),e.socket.on("report_integration:jscripty",function(b){a.openJscriptyTab({name:"Jscripty",id:b.projectId,calleridnum:b.calleridnum,calleridname:b.calleridname,queue:b.queue,membername:b.membername})}),e.socket.on("report_integration:sugarcrm",function(a){l.open(a.url,"_blank")}),e.socket.on("report_integration:freshdesk",function(a){l.open(a.url,"_blank")}),e.socket.on("report_integration:zendesk",function(a){l.open(a.url,"_blank")}),e.socket.on("report_integration:salesforce",function(a){console.log("data",a,f.getCurrentUser()),"classic"===a.integrationType&&a.membername===f.getCurrentUser().name&&l.open(a.url,"_blank")}),e.socket.on("report_integration:tdDisposal",function(b){a.openTdTab(b)}),b.openContactTab=function(a,c){var d=_.find(b.workspaces,{contactID:a.id});if(d)d.active=!0,d.data=c,d.synchCall();else{var e=a.firstName;a.lastName&&(e+=" "+a.lastName),b.workspaces.push({name:e,type:"contact",contactID:a.id,"class":"icon-user",active:!0,data:c||null})}},a.openJscriptyTab=function(a){b.workspaces.push({name:a.name,type:"jscripty",active:!0,data:a})},a.newContact=function(a){b.workspaces.push({name:"New Contact",type:"newContact","class":"icon-user",active:!0,data:a||null})},a.$on("$viewContentLoaded",function(){Metronic.init()}),b.language=c.use(),a.changeLanguage=function(a){return c.use(a).then(function(a){b.language=a,-1!==["main.jscripty.projects.view","main.square.projects.view"].indexOf(j.current.name)&&l.location.reload()})["catch"](function(a){console.error(a)})},d(function(){p.get({id:1}).$promise.then(function(c){"admin"===a.CurrentUser.role&&c.firstLogin?m.path("/adminreset"):f.getCurrentUser().$promise.then(function(a){a.Modules.forEach(function(a){b.userModules[a.id]=!0}),b.initTours()})["catch"](function(a){g.error(a)})})["catch"](function(a){g.error(a)})}),a.$on("$destroy",function(){e.unsyncUpdates("user_has_voice_queue_permit"),e.unsyncUpdates("user_has_chat_queue_permit"),e.unsyncUpdates("user_has_mail_queue_permit"),e.unsyncUpdates("user_has_fax_queue_permit"),e.unsyncUpdates("user_has_sms_queue_permit")})}]),angular.module("xCallyShuttleApp").directive("ngSpinnerBar",["$rootScope",function(a){return{link:function(b,c){c.addClass("hide"),a.$on("$stateChangeStart",function(){"spinner-page"===c[0].id&&c.removeClass("hide")}),a.$on("$stateChangeSuccess",function(){"spinner-page"===c[0].id&&(c.addClass("hide"),$("body").removeClass("page-on-load"),Layout.setSidebarMenuActiveLink("match"),setTimeout(function(){Metronic.scrollTop()},1e3))}),a.$on("$spinnerStart",function(){"spinner-request"===c[0].id&&c.removeClass("hide")}),a.$on("$spinnerStop",function(){"spinner-request"===c[0].id&&c.addClass("hide")}),a.$on("$stateNotFound",function(){"spinner-page"===c[0].id&&c.addClass("hide")}),a.$on("$stateChangeError",function(){"spinner-page"===c[0].id&&c.addClass("hide")})}}}]).directive("a",function(){return{restrict:"E",link:function(a,b,c){(c.ngClick||""===c.href||"#"===c.href)&&b.on("click",function(a){a.preventDefault()})}}}).directive("nxEqual",function(){return{require:"ngModel",link:function(a,b,c,d){return c.nxEqual?(a.$watch(c.nxEqual,function(a){d.$setValidity("nxEqual",a===d.$viewValue)}),void d.$parsers.push(function(b){var e=b===a.$eval(c.nxEqual);return d.$setValidity("nxEqual",e),e?b:void 0})):void console.error("nxEqual expects a model as an argument!")}}}).directive("ngEnter",function(){return function(a,b,c){b.bind("keydown keypress",function(b){13===b.which&&(a.$apply(function(){a.$eval(c.ngEnter)}),b.preventDefault())})}}).directive("dropdownMenuHover",function(){return{link:function(a,b){b.dropdownHover()}}}).directive("uiSelectRequired",function(){return{require:"ngModel",link:function(a,b,c,d){d.$validators.uiSelectRequired=function(a){return a&&a.length}}}}).directive("rpattern",function(){return{restrict:"A",require:"ngModel",link:function(a,b,c,d){function e(a,b){return null==b||""===b||!h||a.test(b)?(d.$setValidity("pattern",!0),b):void d.$setValidity("pattern",!1)}var f,g=c.rpattern,h=!0;g&&(g.match(/^\/(.*)\/$/)?(g=new RegExp(g.substr(1,g.length-2)),f=function(a){return e(g,a)}):f=function(b){var c=a.$eval(g);if(!c||!c.test)throw new Error("Expected "+g+" to be a RegExp but was "+c);return e(c,b)}),d.$formatters.push(f),d.$parsers.push(f),c.$observe("required",function(a){h=a,f(d.$viewValue)})}}}).directive("newContact",["$compile","xAlert","socket","$translate","$timeout","List","Tag","Company","ReportCall","$uibModal","$rootScope","Auth",function(a,b,c,d,e,f,g,h,i,j,k,l){return{restrict:"E",scope:{workspace:"=",index:"=",submit:"&onSubmit"},templateUrl:"app/main/template/template.contactTab.html",compile:function(a,m){return function(a,m,n){function o(){a.$watch("contact",function(b,c){angular.equals(b,c)||(a.workspace.edited=!0)},!0)}a.license=k.license,a.Auth=l,a.firstLoad=!0,a.detail={tab:"main"},a.contact={CompanyId:"",disposed:!1},a.submitButtonLabel=d.instant("APPLICATION_CONFIRM"),a.getAgent=function(){return l.getCurrentUser().$promise.then(function(b){a.agent=b})["catch"](function(a){b.error(a)})},a.companyInfo=function(b){j.open({animation:!0,size:"lg",templateUrl:"app/main/company.info.modal.html",controller:["$scope","$uibModalInstance","company",function(a,b,c){a.company=c,a.close=function(){b.dismiss("cancel")}}],resolve:{company:_.find(a.companies,{id:b})}})},a.callPhoneBar=function(c,e){var f;switch(e){case"call":f="http://127.0.0.1:"+a.agent.phoneBarRemoteControlPort+"/api/originate/"+c;break;case"transfer":f="http://127.0.0.1:"+a.agent.phoneBarRemoteControlPort+"/api/transfer?number="+c;break;default:f="http://127.0.0.1:"+a.agent.phoneBarRemoteControlPort+"/api/originate/"+c}return $http.get(f).success(function(){b.show(d.instant("MESSAGE_WELL_DONE"),"success")}).error(function(a){console.error(a),b.error({message:d.instant("MESSAGE_UNABLE_TO_CONTACT_PHONEBAR")})})},a.dispose=function(){return j.open({animation:!0,templateUrl:"app/main/cm.disposition.modal.html",controller:"ContactManagerSetDisposition"}).result.then(function(c){return i.update({id:a.workspace.data.uniqueid},c).$promise.then(function(){a.contact.disposed=!0,a.workspace.data.agentDisposition=c.agentDisposition,b.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){b.error(a)})})},a.init=function(){if(a.getTags(),a.getCompanies(),a.getLists(),a.getAgent(),a.workspace.data){if(a.enableDisposal=!1,"queue"===a.workspace.data.subtypeChannel?(a.contact.firstName=a.workspace.data.calleridname?a.workspace.data.calleridname:a.workspace.data.messageId?a.workspace.data.messageId:a.workspace.data.uniqueid?a.workspace.data.uniqueid:"",a.workspace.data.calleridnum&&(a.contact.phone=a.workspace.data.calleridnum)):(a.contact.firstName=a.workspace.data.destcalleridname?a.workspace.data.destcalleridname:a.workspace.data.messageId?a.workspace.data.messageId:a.workspace.data.uniqueid?a.workspace.data.uniqueid:"",a.workspace.data.destcalleridnum&&(a.contact.phone=a.workspace.data.destcalleridnum)),a.workspace.data.from&&(a.contact.email=a.workspace.data.from),a.workspace.data.uniqueid)return i.get({id:a.workspace.data.uniqueid}).$promise.then(function(){a.enableDisposal=!0})["catch"](function(){c.socket.on("report_call:save",function(b){b.uniqueid===a.workspace.data.uniqueid&&(a.enableDisposal=!0)})});a.workspace.data.CompanyId&&(a.contact.CompanyId=a.workspace.data.CompanyId)}},a.openRoom=function(a,b,c){var d=_.find(k.workspaces,{id:a,type:b});if(d)d.active=!0;else{var e;switch(b){case"mailRoom":e="icon-envelope";break;case"chatRoom":e="fa fa-users";break;case"faxRoom":e="fa fa-fax";break;case"smsRoom":e="glyphicon glyphicon-comment"}k.workspaces.push({id:a,type:b,"class":e,active:!0,data:c})}},a.getLists=function(){return f.get().$promise.then(function(b){if(a.lists=b.rows,c.syncUpdates("list",a.lists),a.workspace.data&&a.workspace.data.ListId&&_.find(a.lists,{id:a.workspace.data.ListId}))a.contact.ListId=a.workspace.data.ListId;else{var d=_.find(a.lists,{defaultEntry:!0});a.contact.ListId=d?d.id:a.lists[0]?a.lists[0].id:null}a.getCustomFields()})["catch"](function(a){b.error(a)})},a.getCustomFields=function(){return f.get({listId:a.contact.ListId,controller:"customfields",id:"all"}).$promise.then(function(b){a.customFields=[],b.rows.forEach(function(b){try{"select"===b.type&&(b.values=JSON.parse(b.values)),a.customFields.push(b)}catch(c){console.log("Cf not valid:",b.alias)}}),!a.firstLoad||a.workspace.data?(a.workspace.edited=!0,a.firstLoad=!1):(a.firstLoad=!1,o())})["catch"](function(a){console.error(a),b.error(a)})},a.getTags=function(){return g.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a),b.error(a)})},a.getCompanies=function(){return h.get().$promise.then(function(b){a.companies=b.rows,a.companies.unshift({id:"",name:"-- None --"}),c.syncUpdates("company",a.companies)})["catch"](function(a){console.error(a),b.error(a)})},e(function(){a.init()})}}}}]).directive("contact",["$compile","xAlert","socket","$timeout","List","Tag","Company","Contact","$translate","gridOptions","$uibModal","ReportCall","$rootScope","usSpinnerService","uiGridConstants","$log","Auth","$http",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){return{restrict:"E",scope:{workspace:"=",index:"=",submit:"&onSubmit"},templateUrl:"app/main/template/template.contactTab.html",compile:function(a,j){return function(a,j,s){function t(b){var c=[],d={};_.forEach(a.columns[a.log[b].show][a.log[b].detail].indexes,function(e,f){d={name:e,displayName:a.columns[a.log[b].show][a.log[b].detail].header[f],headerCellFilter:"translate",enableSorting:!1,enableColumnMenu:!1},"createdAt"===e&&(d.cellTemplate="<div class=\"centered-uigrid-td\">{{row.entity.createdAt | date:'dd/MM/yyyy HH:mm:ss'}}</div>",d.filterHeaderTemplate='<div class="ui-grid-filter-container row"><div ng-repeat="colFilter in col.filters" class="col-md-6 col-md-offset-0 col-sm-5 col-sm-offset-0 col-xs-5 col-xs-offset-0"><div custom-grid-date-filter-header></div></div></div>',d.filters=[{name:"From",condition:o.filter.GREATER_THAN_OR_EQUAL},{name:"To",condition:o.filter.LESS_THAN_OR_EQUAL}]),c.push(d)}),a.columns[a.log[b].show][a.log[b].detail].actions&&c.push(a.columns[a.log[b].show][a.log[b].detail].actions),c.forEach(function(a){u(a,b,!0),a.hasOwnProperty("displayName")||(a.displayName="APPLICATION_"+a.name.toUpperCase()),a.headerCellFilter="translate",a.hasOwnProperty("buttons")&&(a.displayName="",a.cellClass="ui-grid-vcenter",a.enableSorting=!1,a.enableFiltering=!1,a.enableColumnMenu=!1,a.cellTemplate="<div>",a.buttons.forEach(function(b){if(b.directive)a.cellTemplate+=b.directive;else{if(a.cellTemplate+="<a",a.cellTemplate+=b.hide?' data-ng-hide="'+b.hide+'" ':" ",a.cellTemplate+=b["class"]?' class="btn btn-xs '+b["class"]+'" ':" ",a.cellTemplate+=b.href?' data-ng-href="'+b.href+'" ':" ",a.cellTemplate+=b.uisref?' ui-sref="'+b.uisref+'" ':" ",a.cellTemplate+=b.onClick?' data-ng-click="'+b.onClick+'" ':" ",a.cellTemplate+=b.title?' title="'+b.title+'"':"",a.cellTemplate+=">",a.cellTemplate+=b.icon?'<i class="'+b.icon+'"></i>':"",b.name)switch(b.name){case"delete":a.cellTemplate+='<i class="fa fa-trash"></i>';break;case"profile":case"settings":case"detail":case"embedding":a.cellTemplate+='<i class="icon-settings"></i>';break;case"agents":a.cellTemplate+='<i class="icon-people"></i>';break;case"run":a.cellTemplate+='<i class="fa fa-cogs"></i>';break;case"mailRoom":a.cellTemplate+='<i class="fa fa-envelope"></i>';break;case"chatRoom":a.cellTemplate+='<i class="fa fa-users"></i>';break;case"faxRoom":a.cellTemplate+='<i class="fa fa-fax"></i>';break;case"smsRoom":a.cellTemplate+='<i class="glyphicon glyphicon-comment"></i>';break;default:a.cellTemplate+="{{'APPLICATION_"+b.name.toUpperCase()+"' | translate}}"}else a.cellTemplate+=b.displayName?"{{'"+b.displayName+"' | translate}}":"";a.cellTemplate+="</a> "}}),a.cellTemplate+="<div>",delete a.buttons)});var e={enablePaginationControls:!0,exporterCsvFilename:b+".csv",columnDefs:c,enableGridMenu:!0,headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,useExternalPagination:!0,useExternalSorting:!0,useExternalFiltering:!0,showTreeExpandNoChildren:!0,data:[],gridMenuTitleFilter:function(a){var b=$q.defer();return b.resolve(i.instant(a)),b.promise},onRegisterApi:function(c){a.gridApi=c,a.gridApi.grid.registerDataChangeCallback(function(){}),a.gridApi.core.on.sortChanged(a,function(a,c){0===c.length?w.order=null:w.order=c[0].name+" "+c[0].sort.direction.toUpperCase(),x(b)}),a.gridApi.pagination.on.paginationChanged(a,function(a,c){w.offset=(a-1)*c,w.limit=c,x(b)}),a.gridApi.core.on.filterChanged(a,function(){var a=this.grid;a.columns.forEach(function(a){u(a,b)}),x(b)})}};x(b,e)}function u(a,b,c){a.filter&&a.filter.term&&c&&(w[b][a.name]=a.filter.term),a.filters&&(a.filters.length>1?a.filters.forEach(function(c){c.term?64===c.condition?w[b][a.name+"_uiFrom"]=c.term:256===c.condition&&(w[b][a.name+"_uiTo"]=c.term):64===c.condition?delete w[b][a.name+"_uiFrom"]:256===c.condition&&delete w[b][a.name+"_uiTo"]}):a.filters.length&&a.filters[0].term?w[b][a.name]=a.filters[0].term:delete w[b][a.name])}function v(){a.$watch("contact",function(b,c){b.disposed!==c.disposed||angular.equals(b,c)||(a.workspace.edited=!0)},!0)}a.moment=moment,a.license=m.license,a.detail={tab:"main"},a.log={daily:{show:"phone",type:"inbound",detail:"general"},history:{show:"phone",type:"inbound",detail:"general"}},a.columns={phone:{general:{header:["APPLICATION_SOURCE","APPLICATION_DESTINATION","APPLICATION_CALL_STATUS","APPLICATION_DISPOSITION","APPLICATION_DATE"],indexes:["source","destination","disposition","agentDisposition","createdAt"]},queue:{header:["APPLICATION_CALLERID","APPLICATION_QUEUE","APPLICATION_DATE"],indexes:["calleridnum","queue","createdAt"]}},email:{general:{header:["APPLICATION_FROM","APPLICATION_TO","APPLICATION_SUBJECT","APPLICATION_DISPOSITION","APPLICATION_DATE"],indexes:["from","account","subject","disposition","createdAt"],actions:{name:"action",displayName:"",width:40,buttons:[{"class":"green",name:"mailRoom",onClick:"grid.appScope.openRoom(row.entity.id, 'mailRoom')"}]}}},chat:{general:{header:["APPLICATION_WEBSITE","APPLICATION_VISITOR","APPLICATION_DISPOSITION","APPLICATION_DATE"],indexes:["website","contact","disposition","createdAt"],actions:{name:"action",displayName:"",width:40,buttons:[{"class":"green",name:"chatRoom",onClick:"grid.appScope.openRoom(row.entity.id, 'chatRoom')"}]}}},fax:{general:{header:["APPLICATION_FROM","APPLICATION_TO","APPLICATION_DISPOSITION","APPLICATION_DATE"],indexes:["contact","account","disposition","createdAt"],actions:{name:"action",displayName:"",width:40,buttons:[{"class":"green",name:"faxRoom",onClick:"grid.appScope.openRoom(row.entity.id, 'faxRoom')"}]}}},sms:{general:{header:["APPLICATION_ACCOUNT","APPLICATION_FROM","APPLICATION_DISPOSITION","APPLICATION_DATE"],indexes:["account","contact","disposition","createdAt"],actions:{name:"action",displayName:"",width:40,buttons:[{"class":"green",name:"smsRoom",onClick:"grid.appScope.openRoom(row.entity.id, 'smsRoom')"}]}}}},a.Auth=q,a.getAgent=function(){return q.getCurrentUser().$promise.then(function(b){a.agent=b})["catch"](function(a){b.error(a)})},a.getLists=function(){return e.get().$promise.then(function(b){a.lists=b.rows,c.syncUpdates("list",a.lists)})["catch"](function(a){b.error(a)})},a.callPhoneBar=function(c,d){var e;switch(d){case"call":e="http://127.0.0.1:"+a.agent.phoneBarRemoteControlPort+"/api/originate/"+c;break;case"transfer":e="http://127.0.0.1:"+a.agent.phoneBarRemoteControlPort+"/api/transfer?number="+c;break;default:e="http://127.0.0.1:"+a.agent.phoneBarRemoteControlPort+"/api/originate/"+c}return r.get(e).success(function(){b.show(i.instant("MESSAGE_WELL_DONE"),"success")}).error(function(a){console.error(a),b.error({message:i.instant("MESSAGE_UNABLE_TO_CONTACT_PHONEBAR")})})},a.copy=function(a){var c=k.open({animation:!0,size:"small",templateUrl:"app/contactmanager/contact/list/copy.modal.html",controller:"ContactManagerListCopyModalCtrl"});c.result.then(function(c){return h.save({id:a,controller:"copy"},c).$promise.then(function(a){m.openContactTab({firstName:a.firstName,lastName:a.lastName,id:a.id})})["catch"](function(a){b.error(a)})},function(){p.info("Modal dismissed at: "+new Date)})},a.merge=function(c){var d=k.open({animation:!0,size:"lg",templateUrl:"app/main/mergeContact.choose.modal.html",controller:"ContactManagerMergeContactChoose",resolve:{listId:c.ListId,mergecontact:c.id}});d.result.then(function(d){var e=k.open({animation:!0,size:"lg",templateUrl:"app/main/mergeContact.merge.modal.html",controller:"ContactManagerMergeContactMerge",resolve:{contactId:d,mergeContact:c}});e.result.then(function(e){return e.oldContact=c.id,h.save({id:d,controller:"merge"},e).$promise.then(function(b){m.workspaces.splice(a.index,1),_.remove(m.workspaces,{contactID:b.id}),m.openContactTab({firstName:b.firstName,lastName:b.lastName,id:b.id})})["catch"](function(a){b.error(a)})},function(){p.info("Modal dismissed at: "+new Date)})},function(){p.info("Modal dismissed at: "+new Date)})},a.dispose=function(){return k.open({animation:!0,templateUrl:"app/main/cm.disposition.modal.html",controller:"ContactManagerSetDisposition"}).result.then(function(c){return c.contactId=a.contact.id,l.update({id:a.workspace.data.uniqueid},c).$promise.then(function(){a.contact.disposed=!0,b.show(i.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){b.error(a)})})},a.companyInfo=function(b){k.open({animation:!0,size:"lg",templateUrl:"app/main/company.info.modal.html",controller:["$scope","$uibModalInstance","company",function(a,b,c){a.company=c,a.close=function(){b.dismiss("cancel")}}],resolve:{company:_.find(a.companies,{id:b})}})},a.updateLog=function(b,c,d,e){c&&(a.log[b].show=c),d&&(a.log[b].detail=d),e&&(a.log[b].type=e),t(b)},a.openRoom=function(a,b,c){var d=_.find(m.workspaces,{id:a,type:b});if(d)d.active=!0;else{var e;switch(b){case"mailRoom":e="icon-envelope";break;case"chatRoom":e="fa fa-users";break;case"faxRoom":e="fa fa-fax";break;case"smsRoom":e="glyphicon glyphicon-comment"}m.workspaces.push({id:a,type:b,"class":e,active:!0,data:c})}};var w={daily:{offset:0,limit:10},history:{offset:0,limit:10}},x=function(b,c){return n.spin("spinner-grid"),h.get(_.merge(_.merge({id:a.workspace.contactID,controller:"log",logType:b,order:"createdAt DESC"},a.log[b]),w[b])).$promise.then(function(d){c&&(a["gridOptions"+b]=c),a["gridOptions"+b].totalItems=d.count,a["gridOptions"+b].data=d.rows,y("gridOptions"+b,d.rows.length)})["catch"](function(a){console.error(a)})["finally"](function(){n.stop("spinner-grid")})},y=function(a,b){var c=b?30*b+120:177;angular.element(document.getElementsByName(a)[0]).css("height",c+"px")};a.getContact=function(){return h.get({id:a.workspace.contactID}).$promise.then(function(b){b.dateOfBirth&&(b.dateOfBirth=moment(b.dateOfBirth,"DD/MM/YYYY").toDate()),b.CompanyId||(b.CompanyId=""),a.contact=b,a.getCustomFields(b.ListId),v(),a.updateLog("daily"),a.updateLog("history")}).then(function(){a.workspace.data&&a.workspace.synchCall()})["catch"](function(a){console.error(a),b.error(a)})},a.getTags=function(){return f.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a),b.error(a)})},a.getCompanies=function(){return g.get().$promise.then(function(b){a.companies=b.rows,a.companies.unshift({id:"",name:"-- None --"}),c.syncUpdates("company",a.companies)})["catch"](function(a){console.error(a),b.error(a)})},a.getCustomFields=function(c){return a.customFields=[],e.get({listId:c,controller:"customfields",id:"all"}).$promise.then(function(b){b.rows.forEach(function(b){try{"select"===b.type&&(b.values=JSON.parse(b.values)),a.customFields.push(b)}catch(c){console.log("Cf not valid:",b.alias)}})})["catch"](function(a){console.error(a),b.error(a)})},a.workspace.synchCall=function(){return a.contact.disposed=!1,a.enableDisposal=!1,a.workspace.data&&a.workspace.data.uniqueid?a.workspace.data.agentDisposition?(a.contact.disposed=!0,l.update({id:a.workspace.data.uniqueid},{contactId:a.contact.id}).$promise.then(function(){console.log("contactId updated")})["catch"](function(a){b.error(a)})):l.get({id:a.workspace.data.uniqueid}).$promise.then(function(){a.enableDisposal=!0})["catch"](function(){c.socket.on("report_call:save",function(b){b.uniqueid===a.workspace.data.uniqueid&&(a.enableDisposal=!0)})}):void(a.contact.disposed=!0)},d(function(){a.getTags(),a.getCompanies(),a.getLists(),a.getContact(),a.getAgent()})}}}}]).directive("jscripty",["$compile","xAlert","$http","socket","JscriptyProject",function(a,b,c,d,e){return{restrict:"E",scope:{workspace:"=",index:"=",submit:"&onSubmit"},templateUrl:"app/main/template/template.jscriptyTab.html",compile:function(a,d){return function(a,d,f){a.count=0,a.questions=[];var g,h=a.workspace.data.id;c.get("/api/jscripty/projects/"+h+"/download").success(function(b){b?c.post("/api/jscripty/projects/"+h+"/sessions",{projectId:h,status:"started",queue:a.workspace.data.queue,calleridnum:a.workspace.data.calleridnum,callername:a.workspace.data.callername,membername:a.workspace.data.membername}).success(function(c){g=c.session_id,a.workspace.edited=!0,a.workspace.sessionId=g,a.workspace.projectId=h;var d=mxUtils.parseXml(b),e=new mxCodec(d);a.decObj=e.decode(d.documentElement);var f=_.find(a.decObj.cells,function(a){return a.vertex&&"start"==a.value.nodeName});if("OFF"==f.getAttribute("state")){var j=_.find(f.edges,function(a){return a.source.id==f.id}).target;a.questions[a.count]=a.currentQuestion=i(j)}else a.questions[a.count]=a.currentQuestion=f;a.saveQuestions()}):(console.log("No project published!"),alert("No project published!"),a.submit({index:a.index}))}),a.next=function(b,c){switch(a.currentQuestion.answer&&a.currentQuestion.answer!=c&&(a.questions=_.take(a.questions,a.count+1)),a.currentQuestion.answer=c,b.value.nodeName){case"question":b=i(b)}a.questions[a.count]=a.currentQuestion,a.currentQuestion=b,a.count++,a.questions[a.count]=b,a.saveQuestions()};var i=function(a){var b=[];return a.options=[],_.forEach(a.edges,function(c,d){if(c.source.id==a.id&&c.value){var e=String(c.value).split(",");e.length>1?(_.forEach(e,function(b,d){var e=Object.create(c);e.setValue(b),a.edges.push(e),a.options.push(b)}),b.push(c)):a.options.push(e[0])}}),_.forEach(b,function(b){_.remove(a.edges,function(a){return a.value==b.value&&a.id==b.id})}),a};a.end=function(){a.saveQuestions(),a.workspace.lastQuestionId=a.questions[a.questions.length-1].id,"end"==a.questions[a.questions.length-1].value.nodeName&&(a.workspace.edited=!1,e.update({id:h,controller:"sessions",action:g},{status:"completed",completedAt:Date(),last_question_id:a.questions[a.questions.length-1].id}).$promise.then(function(a){b.show("Project Ended","success")})),a.submit({index:a.index})},a.workspace.end=a.end,a.back=function(){a.count--,a.currentQuestion=a.questions[a.count]},a.setCurrentQuestion=function(b){a.count=b,a.currentQuestion=a.questions[a.count]},a.saveQuestions=function(){for(var c=[],d=[],f=0;f<a.questions.length;f++){if(a.questions[f].children)for(var i=a.questions[f].children,j=0;j<i.length;j++)d[j]={input_id:i[j].id,input_type:i[j].getAttribute("type"),input_label:i[j].getAttribute("label"),input_value:"checkbox"!=i[j].getAttribute("type")||i[j].answer?i[j].answer:!1};c[f]={sessionId:g,projectId:h,question_id:a.questions[f].id,question_type:a.questions[f].value.nodeName,question_label:a.questions[f].getAttribute("label"),question_text:a.questions[f].getAttribute("question")||a.questions[f].getAttribute("text"),question_other_label:a.questions[f].getAttribute("other"),question_other_answer:a.questions[f].otheranswer,question_answer:a.questions[f].answer,question_options:a.questions[f].options?JSON.stringify({options:a.questions[f].options}):null,index:f,ReportJscriptyInputs:d},d=[]}e.save({id:h,controller:"sessions",action:g,action2:"questions"},c).$promise.then(function(a){})["catch"](function(a){b.error(a)})}}}}}]).directive("reportBuilder",["$compile",function(a){return{restrict:"E",scope:{group:"=",fields:"=",forms:"=",firstCall:"="},templateUrl:"app/main/template/template.reportBuilderView.html",compile:function(b,c){var d,e;return d=b.contents().remove(),function(b,c,f){b.operators=[{name:"AND"},{name:"OR"}],b.conditions=[{name:"="},{name:"!="},{name:"<"},{name:"<="},{name:">"},{name:">="},{name:"LIKE"},{name:"NOT LIKE"},{name:"IS NULL"},{name:"IS NOT NULL"},{name:"IS EMPTY"},{name:"IS NOT EMPTY"}],b.inputIsRequired=function(a){if(a.condition)switch(a.condition){case"IS NULL":case"IS NOT NULL":case"IS EMPTY":case"IS NOT EMPTY":a.required=!1;break;default:a.required=!0}},b.addCondition=function(){b.group.rules.push({condition:"=",field:"",value:""})},b.removeCondition=function(a){b.group.rules.splice(a,1)},b.addGroup=function(){b.group.rules.push({group:{operator:"AND",rules:[{condition:"=",field:"",value:""}]}})},b.randomName=function(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")},b.removeGroup=function(){b.$parent.group&&b.$parent.group.rules.splice(b.$parent.$index,1)},e||(e=a(d)),c.append(e(b,function(a){return a}))}}}}]).directive("dynamicName",["$compile",function(a){return{restrict:"A",terminal:!0,priority:1e3,link:function(b,c,d){c.attr("name",b.$eval(d.dynamicName)),c.removeAttr("dynamic-name"),a(c)(b)}}}]).directive("onReadFile",["$parse",function(a){return{restrict:"A",scope:!1,link:function(b,c,d){var e=a(d.onReadFile);c.on("change",function(a){var c=new FileReader;c.onload=function(a){b.$apply(function(){e(b,{$fileContent:a.target.result})})},c.readAsText((a.srcElement||a.target).files[0])})}}}]).directive("motionFileDownload",["xAlert","$translate","$timeout","$location","FileSaver","$compile",function(a,b,c,d,e,f){return{restrict:"E",template:'<a uib-tooltip=\'{{tooltiptext}}\' class="{{btnclass || \'btn default btn-xs blue-hoki\'}}" href="" data-ng-click="download()" ><i class="icon-cloud-download"></i>{{btncontent || \'\'}}</a>',scope:{mimetype:"=",filename:"=",resource:"=",params:"=",btnclass:"@",btncontent:"@",tooltiptext:"@"},link:function(b,c,d){var f=c.children()[0];b.$on("download-start",function(){$(f).attr("disabled","disabled")}),b.$on("downloaded",function(a,c){var d=base64ToBlob(c,b.mimetype);e.saveAs(d,b.filename),$(f).attr("disabled",!1)}),b.download=function(){return b.$emit("download-start"),b.resource.get(b.params).$promise.then(function(a){b.$emit("downloaded",a.downloadString)})["catch"](function(b){a.error(b),$(f).attr("disabled",!1)})}}}}]).directive("audioFileDownload",["xAlert","$translate","$uibModal",function(a,b,c){return{restrict:"E",template:'<button type="button" class="btn default btn-xs blue-hoki" data-ng-click="download()"><i class="fa fa-play"></i> {{ \'APPLICATION_PREVIEW\' | translate}}</button>', +scope:{resource:"=",params:"="},link:function(b,d,e){var f=d.children()[0];b.$on("download-start",function(a,c){b.tempHtml=$(f).html(),$(f).attr("disabled","disabled").html('<i class="icon-refresh"></i> Loading...')}),b.$on("downloaded",function(a,d){c.open({animation:!0,size:"small",templateUrl:"app/main/audioFileDownload.play.modal.html",controller:["$scope","$uibModalInstance","$sce","audio",function(a,b,c,d){a.audio=c.trustAsResourceUrl("data:audio/wav;base64,"+d.data),a.close=function(){b.dismiss("cancel")}}],resolve:{audio:function(){return{data:d}}}});$(f).html(b.tempHtml).attr("disabled",!1)}),b.$on("error",function(a,c){$(f).html(b.tempHtml).attr("disabled",!1)}),b.download=function(){return b.$emit("download-start"),b.resource.get(b.params).$promise.then(function(a){b.$emit("downloaded",a.downloadString)})["catch"](function(c){a.error(c),b.$emit("error")})}}}}]).directive("uiRequired",function(){return{require:"ngModel",link:function(a,b,c,d){d.$validators.required=function(a,b){return!(b&&0===b.length&&"true"===c.uiRequired)},c.$observe("uiRequired",function(){d.$setValidity("required",!("true"===c.uiRequired&&d.$viewValue&&0===d.$viewValue.length))})}}}).directive("schrollBottom",function(){return{scope:{schrollBottom:"="},link:function(a,b){a.$watchCollection("schrollBottom",function(a){a&&$(b).scrollTop($(b)[0].scrollHeight)})}}}).directive("customGridDateFilterHeader",function(){return{templateUrl:"app/main/customDateFilterHeader.html",controller:"gridDatePickerFilterCtrl"}}).directive("customGridTagsFilterHeader",function(){return{templateUrl:"app/main/customTagsFilterHeader.html",controller:"gridTagsFilterCtrl"}}).directive("infiniteScroll",["$window",function(a){return{link:function(a,b,c){var d=parseInt(c.threshold)||0,e=b[0];b.bind("scroll",function(){a.$eval(c.canLoad)&&e.scrollTop+e.offsetHeight>=e.scrollHeight-d&&a.$apply(c.infiniteScroll)})}}}]).directive("tigerDialDisposal",["$compile","xAlert","socket","$translate","$timeout","$rootScope","MotionDialerSpooler","Auth",function(a,b,c,d,e,f,g,h){return{restrict:"E",scope:{workspace:"=",index:"="},templateUrl:"app/main/template/template.tigerDialDisposal.html",compile:function(a,c){return function(a,c,i){a.moment=moment,a.entitySpooler={},a.forms={td:{}},a.init=function(){return h.getCurrentUser().$promise.then(function(b){a.entitySpooler.planningpeer="SIP/"+b.name})["catch"](function(a){b.error(a)})},a.save=function(){var c;switch(a.entitySpooler.retrieve){case"CLOSED":c=g.close({id:parseInt(a.workspace.spooler.ticketId)});break;case"OPEN":c=g.open({id:parseInt(a.workspace.spooler.ticketId)});break;case"BLACK_LIST":c=g.blacklist({id:parseInt(a.workspace.spooler.ticketId)});break;case"PLANNED":c=g.planning({id:parseInt(a.workspace.spooler.ticketId),date:moment(a.entitySpooler.planningtime).format("YYYY-MM-DD HH:mm")});break;case"PLANNED_PEER":c=g.planningpeer({id:parseInt(a.workspace.spooler.ticketId),date:moment(a.entitySpooler.planningtime).format("YYYY-MM-DD HH:mm"),peer:a.entitySpooler.planningpeer})}c?c.$promise.then(function(c){c.status>0?b.show(d.instant("MESSAGE_WELL_DONE"),"success"):c.response?c.response.RMI.errors.forEach(function(c){c?(b.show(c.field+": "+c.error,"danger"),f.workspaces.splice(a.index,1)):b.show("Please, check your connection!","danger")}):b.show("Please, check your connection!","danger")})["catch"](function(a){b.error(a)}):b.show("RETRIEVE NOT FOUND","danger")},e(function(){a.init()})}}}}]).directive("cssTimer",["$window","$interval",function(a,b){return{restrict:"EA",template:"<span>{{ millis | formatMilliseconds | date:format }}</span>",scope:{interval:"@",format:"@",startTime:"="},link:function(a,c,d){function e(){a.millis=Math.abs((new Date).getTime()-new Date(a.startTime).getTime())+1e3,a.activeInterval=b(function(){a.millis+=a.interval},a.interval)}a.interval||(a.interval=1e3),a.format||(a.format="HH:mm:ss"),e(),a.$watch("startTime",function(c,d){b.cancel(a.activeInterval),e()},!0)}}}]).directive("webPopup",["$compile","xAlert","socket","$translate","$timeout","List","Tag","Company","ReportCall","$uibModal","$rootScope","Auth","$sce",function(a,b,c,d,e,f,g,h,i,j,k,l,m){return{restrict:"E",scope:{workspace:"=",index:"="},templateUrl:"app/main/template/template.webPopup.html",compile:function(a,b){return function(a,b,c){a.html=m.trustAsHtml(a.workspace.data.html)}}}}]),angular.module("xCallyShuttleApp").filter("propsFilter",function(){return function(a,b){var c=[];return angular.isArray(a)?a.forEach(function(a){for(var d=!1,e=Object.keys(b),f=0;f<e.length;f++){var g=e[f],h=b[g].toLowerCase();if(-1!==a[g].toString().toLowerCase().indexOf(h)){d=!0;break}}d&&c.push(a)}):c=a,c}}).filter("capitalize",function(){return function(a){return a?a.replace(/([^\W_]+[^\s-]*) */g,function(a){return a.charAt(0).toUpperCase()+a.substr(1).toLowerCase()}):""}}).filter("salesforce",function(){var a=["CallDisposition","CallDurationInSeconds","CallObject","CallType","IsArchived","Priority","Status","Type"];return function(b){return _.remove(b,function(b){return b.custom===!1&&a.indexOf(b.name)<0}),b}}).filter("sugarcrm",function(){var a=["id","name","date_entered","date_modified","modified_user_id","modified_by_name","created_by","created_by_name","description","deleted","assigned_user_id","assigned_user_name","duration_hours","duration_minutes","date_start","date_end","parent_type","parent_name","parent_id","accept_status","contact_name","contact_id"];return function(b){return _.remove(b,function(b){return a.indexOf(b.name)>=0}),b}}).filter("freshdesk",function(){var a=["requester","subject","agent","description","status","priority","group","source","ticket_type","group","company"];return function(b){return _.remove(b,function(b){return a.indexOf(b.name)>=0}),b}}).filter("zendesk",function(){var a=["subject","assignee","description"];return function(b){return _.remove(b,function(b){return a.indexOf(b.type)>=0}),b}}).filter("slice",function(){return function(a,b,c){return a?a.slice(b,c):void 0}}).filter("trusted",["$sce",function(a){var b=document.createElement("div");return function(c){return b.innerHTML=c,a.trustAsHtml(b.textContent)}}]).filter("formatMilliseconds",[function(){return function(a){return new Date(1970,0,1).setMilliseconds(a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main",{"abstract":!0,templateUrl:"app/main/main.html",controller:"MainCtrl",resolve:{authorization:["$q","Auth","$state","$timeout","$location","localStorageService",function(a,b,c,d,e,f){return b.getToken()?a.when():(f.remove("loggedIn"),d(function(){e.path("/login")}),a.reject())}],deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/plugins/mxgraph/js/mxClient.js","assets/plugins/ckeditor/ckeditor.js","assets/css/login.css"]}])}]}})}]),angular.module("xCallyShuttleApp").factory("xAlert",["$translate","Notification","$state",function(a,b,c){return{show:function(c,d){switch(d){case"success":b.success({message:c,title:'<i class="glyphicon glyphicon-ok"></i> <strong>'+a.instant("MESSAGE_SUCCESS")+"!</strong>",delay:5e3});break;case"info":b.info({message:c,title:'<i class="glyphicon glyphicon-info-sign"></i> <strong>'+a.instant("MESSAGE_INFO")+"!</strong>",delay:5e3});break;case"danger":b.error({message:c,title:'<i class="glyphicon glyphicon-exclamation-sign"></i> <strong>'+a.instant("MESSAGE_ERROR")+"!</strong>",delay:1e4});break;case"warning":b.warning({message:c,title:'<i class="glyphicon glyphicon-warning-sign"></i> <strong>'+a.instant("MESSAGE_WARNING")+"!</strong>",delay:1e4});break;default:b.info(c)}},error:function(d){var e,f;d?d.status&&401===d.status?(e="Unauthorized!",f=!0):d.data?(e=d.data.translatedMessage||d.data.message||d.data||"Generic Error",d.data.errors&&d.data.errors.length&&_.forEach(d.data.errors,function(a){a.message&&(e+=", "+a.message)})):e=d.translatedMessage||d.message||"Generic Error":e="Generic Error",b.error({message:a.instant(e),title:'<i class="glyphicon glyphicon-exclamation-sign"></i> <strong>'+a.instant("MESSAGE_ERROR")+"!</strong>",delay:1e4}),f&&c.go("login")}}}]).factory("stResource",["$q","$filter","$timeout","$rootScope","$http","$translate","xAlert",function(a,b,c,d,e,f,g){return{getPage:function(b){var c={page:Math.ceil(b.pagination.start/b.pagination.number),per_page:b.pagination.number};b.sort.predicate&&(c.sort_by=b.sort.predicate,c.sort_order=b.sort.reverse?"DESC":"ASC"),_.forIn(b.search.predicateObject,function(a,b){c[b]=a}),b.search.params&&(c.clientQuery={},_.forIn(b.search.params,function(a,b){c.clientQuery[b]=a})),d.$broadcast("$spinnerStart"),e.get(b.url,{params:c}).success(function(a){f.resolve(a),d.$broadcast("$spinnerStop")}).error(function(a){g.error(a),d.$broadcast("$spinnerStop")});var f=a.defer();return f.promise}}}]).factory("xNotification",["$translate","Notification","$rootScope",function(a,b,c){return{show:function(d,e,f,g,h,i){var j=c.$new(),k={message:e,title:d,templateUrl:"app/main/template/template.notification.html",delay:g,scope:j};switch(j.acceptBtn=a.instant("APPLICATION_ACCEPT"),j.rejectBtn=a.instant("APPLICATION_REJECT"),j.nAccept=h,j.nReject=i,f){case"chat":j["class"]="alert-info",j.icon="icon-bubble";break;case"mail":j["class"]="alert-success",j.icon="icon-envelope";break;case"fax":j["class"]="alert-warning",j.icon="fa fa-fax";break;case"sms":j["class"]="alert-danger",j.icon="glyphicon glyphicon-comment";break;case"openchannel":j["class"]="alert-danger",j.icon="icon-globe";break;default:j["class"]="alert-info"}return new b(k)}}}]),angular.module("xCallyShuttleApp").controller("ContactManagerMergeContactChoose",["$scope","$translate","Contact","gridOptions","List","uiGridConstants","xAlert","$stateParams","Company","$uibModalInstance","listId","mergecontact",function(a,b,c,d,e,f,g,h,i,j,k,l){a.initView=function(){var b;return e.get().$promise.then(function(b){return a.lists=[],a.customFields=[],b.rows.forEach(function(b,c){_.forEach(b.CustomFields,function(b){a.customFields.push({name:b.name,alias:b.alias})}),a.lists.push({value:b.id,label:b.name})}),i.get().$promise}).then(function(b){a.companies=[],b.rows.forEach(function(b,c){a.companies.push({value:b.id,label:b.name})})}).then(function(){var e=[{"class":"blue-hoki",name:"select",onClick:"grid.appScope.choose(row.entity.id)"}];b={exporterCsvFilename:"Contacts.csv",columnDefs:[{name:"firstName"},{name:"lastName"},{name:"phone"},{name:"email"},{name:"ListId",displayName:"APPLICATION_LIST",field:"List.name",enableFiltering:!1},{name:"CompanyId",displayName:"APPLICATION_COMPANY",field:"Company.name",filter:{type:f.filter.SELECT,term:h.companyId||null,selectOptions:a.companies}}]},_.forEach(a.customFields,function(a){b.columnDefs.push({name:a.name,displayName:a.alias,visible:!1})}),b.columnDefs.push({name:"action",width:30,buttons:e}),a.gridOptions=d.gridOptions(c,b,a,{ListId:k,mergecontact:l})})["catch"](function(a){g.error(a)})},a.choose=function(a){j.close(a)},a.cancel=function(){j.dismiss()}}]),angular.module("xCallyShuttleApp").controller("ContactManagerMergeContactMerge",["$scope","$translate","Contact","xAlert","Company","$uibModalInstance","contactId","List","mergeContact","Tag",function(a,b,c,d,e,f,g,h,i,j){a.initView=function(){return e.get().$promise.then(function(b){return a.companies=b.rows,a.companies.unshift({id:"",name:"-- None --"}),j.get().$promise}).then(function(b){return a.tags=_.map(b.rows,"name"),c.get({id:g}).$promise}).then(function(b){a.fields={},a.contact={};var c=_.merge(_.keys(b),_.keys(i));return _.forEach(c,function(c){switch(c){case"tags":a.contact.tags=_.union(b.tags||[],i.tags||[]);break;case"$promise":case"$resolved":break;default:a.fields[c]=[],b[c]&&a.fields[c].push(b[c]),i[c]&&b[c]!==i[c]&&a.fields[c].push(i[c]),a.contact[c]=a.fields[c][0]||null}}),h.get({listId:b.ListId,controller:"customfields"}).$promise}).then(function(b){a.customFields=b.rows,a.customFields.forEach(function(a){a.values=JSON.parse(a.values)})})["catch"](function(a){d.error(a)})},a.merge=function(){a.contact.CompanyId||(a.contact.CompanyId=null),f.close(a.contact)},a.cancel=function(){f.dismiss()}}]),angular.module("xCallyShuttleApp").factory("Widget",["$resource",function(a){return a("/api/widgets/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("MarketCtrl",["$scope","$http","$translate","socket","xAlert","Modal","$timeout","Integration",function(a,b,c,d,e,f,g,h){function i(a,b){return Math.floor(Math.random()*(b-a+1))+a}a.initView=function(){return h.get().$promise.then(function(b){a.integrations=b.rows,a.groupedIntegration=_.chunk(a.integrations,4),d.syncUpdates("integration",a.integrations,function(){a.groupedIntegration=_.chunk(a.integrations,4)})})["catch"](function(a){e.error(a,"danger")})},a.isProgressing=!1,a.$on("$destroy",function(){d.unsyncUpdates("integration")}),a.installIntegration=function(b){return navigator.onLine?(a.status="Downloading",a.percentage=i(1,50),a.isProgressing=!0,b.downloading=!0,h.update({id:b.id},{active:!0}).$promise.then(function(){g(function(){a.percentage=i(51,99),a.status="Installing"},2500),g(function(){a.percentage=100,a.isProgressing=!1,a.status="Completed!",b.downloading=!1,e.show(c.instant("MESSAGE_WELL_DONE")+".","success")},5e3)})["catch"](function(){b.downloading=!1,a.percentage=0,a.isProgressing=!1,e.show(c.instant("MESSAGE_SOMETHING_WENT_WRONG")+".","danger")})):void e.show(c.instant("MESSAGE_NO_INTERNET_CONNECTION")+".","danger")},a.uninstallIntegration=function(b){return navigator.onLine?(a.status="Uninstalling",a.percentage=i(1,99),a.isProgressing=!0,b.downloading=!0,h.update({id:b.id},{active:!1}).$promise.then(function(){g(function(){a.percentage=100,a.isProgressing=!1,a.status="Completed!",b.downloading=!1,e.show(c.instant("MESSAGE_WELL_DONE")+".","success")},5e3)})["catch"](function(){b.downloading=!1,a.percentage=0,a.isProgressing=!1,e.show(c.instant("MESSAGE_SOMETHING_WENT_WRONG")+".","danger")})):void e.show(c.instant("MESSAGE_NO_INTERNET_CONNECTION")+".","danger")}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.market",{url:"/market",templateUrl:"app/market/market.html",controller:"MarketCtrl",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").controller("MotionbarCtrl",["$scope","$stateParams","$cookieStore","$window","$location","Auth",function(a,b,c,d,e,f){console.log(b),b.token&&b.userId&&b.role&&b.redirectTo?(f.loginWithToken(b.token,b.userId,b.role),d.location.href=decodeURIComponent(b.redirectTo)):e.path("/login")}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("motionbar",{url:"/motionbar?redirectTo&token&userId&role",template:"<div ui-view></div>",controller:"MotionbarCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.motiondialer.blacklist",{url:"/blacklist",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("MotionDialerBlackListListCtrl",["$scope","$uibModal","$translate","xAlert","Modal","MotionDialerBlackList","uiGridConstants","FileUploader","Papa",function(a,b,c,d,e,f,g,h,i){function j(c){var d=b.open({animation:!0,backdrop:"static",keyboard:!1,templateUrl:"app/motiondialer/blacklist/list/list.import.modal.html",controller:"MotionDialerBlackListImportCtrl",resolve:{indexes:function(){return _.keys(c[0])},csv:function(){return c}}});d.result.then(function(b){a.gridOptions.data=a.gridOptions.data.concat(b)})}a.initView=function(){a.gridOptions={paginationPageSizes:[10,25,50,75],paginationPageSize:10,enableFiltering:!0,enableSorting:!0,enableGridMenu:!0,flatEntityAccess:!0,showGridFooter:!0,fastWatch:!0,columnDefs:[{name:"id",width:60},{name:"phone"},{name:"description",enableSorting:!1},{name:"updatedtime",sort:{direction:g.DESC},enableFiltering:!1},{name:"action",cellTemplate:'<div><a class="btn btn-xs red-sunglo" data-ng-click="grid.appScope.deleteItem(row.entity.phone, row.entity.id)"><i class="icon-trash"></i></a></div>',enableSorting:!1,cellClass:"ui-grid-vcenter",enableFiltering:!1}]},f.list({page:1,size:6e5}).$promise.then(function(b){b.status>0?a.gridOptions.data=b.response.RMI.rows:d.show("Please, check your connection!","danger")})["catch"](function(a){d.error(a)})},a.createItem=function(){var c=b.open({animation:!0,templateUrl:"app/motiondialer/blacklist/list/list.create.modal.html",controller:"MotionDialerBlackListListCreateCtrl"});c.result.then(function(b){a.gridOptions.data.push(b.response.RMI)})},a.deleteItem=e.confirm["delete"](function(b){return f["delete"]({id:b}).$promise.then(function(e){e.status>0?(_.remove(a.gridOptions.data,{id:b}),d.show(c.instant("MESSAGE_WELL_DONE"),"success")):d.show(e.message||"Please, check your connection!","danger")})["catch"](function(a){d.error(a)})});var k=a.uploader=new h({queueLimit:1,clearInputAfterAddedToQueue:!0});k.onAfterAddingFile=function(b){i.parse(b._file,{header:!0,complete:function(b){a.uploader.clearQueue(),j(b.data)},error:function(a){d.error(a)}})}}]),angular.module("xCallyShuttleApp").controller("MotionDialerBlackListListCreateCtrl",["$scope","$translate","$uibModalInstance","MotionDialerBlackList","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.insert(a.item).$promise.then(function(a){a.status>0?(e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)):e.show(a.message||"Please, check your connection!","danger")})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").controller("MotionDialerBlackListImportCtrl",["$scope","$uibModalInstance","$stateParams","indexes","csv","MotionDialerBlackList",function(a,b,c,d,e,f){function g(b){if(b>=a.csvLength||a.stopped)return void(a.importing=!1);var c={phone:"",description:""};return _.forOwn(a.item,function(a,d){c[d]=e[b][a]}),c.phone?f.insert(c).$promise.then(function(c){c.status>0?c.response.RMI.Key&&c.response.RMI.Key.indexOf("Found duplicate")>-1?(a["import"].fail+=h,a["import"].failed++,a.duplicates.push(b+2)):(a["import"].success+=h,a["import"].succeeded++,i.push(c.response.RMI)):(console.log(c),a["import"].fail+=h,a["import"].failed++)})["catch"](function(b){console.log(b),a["import"].fail+=h,a["import"].failed++})["finally"](function(){g(b+1)}):(a.noPhone.push(b+2),a["import"].fail+=h,a["import"].failed++,g(b+1),void 0)}a.form={},a.item={},a.indexes=d,a.importing=!1,a.submitted=!1,a.stopped=!1,a["import"]={success:0,fail:0,succeeded:0,failed:0},a.csvLength=e.length;var h=100/a.csvLength,i=[];a.start=function(){a.noPhone=[],a.duplicates=[],a.importing=!0,a.submitted=!0,g(0)},a.close=function(){b.close(i)},a.stop=function(){a.stopped=!0}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.motiondialer.blacklist.list",{url:"/list",templateUrl:"app/motiondialer/blacklist/list/list.html",controller:"MotionDialerBlackListListCtrl",authenticate:!0})}]),angular.module("xCallyShuttleApp").factory("MotionDialerBlackList",["$resource",function(a){return a("/api/rest/blacklist/:controller",null,{list:{method:"POST",params:{controller:"list"}},insert:{method:"POST",params:{controller:"insert"}},"delete":{method:"POST",params:{controller:"delete"}},find:{method:"POST",params:{controller:"find"}},update:{method:"POST",params:{controller:"update"}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.motiondialer.info",{url:"/info",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").factory("MotionDialerSystem",["$resource",function(a){return a("/api/rest/system/:controller",null,{properties:{method:"POST",params:{controller:"properties"}}})}]),angular.module("xCallyShuttleApp").controller("MotionDialerInfoViewCtrl",["$scope","xAlert","MotionDialerSystem","MotionDialerProcess","$translate","$q","usSpinnerService",function(a,b,c,d,e,f,g){a.getProperties=function(){return c.properties().$promise.then(function(c){c.status>0?a.properties=c.response.RMI:b.show(c.message||"Please, check your connection!","danger")})["catch"](function(a){b.error(a)})};var h=function(a,b){var c=a?30*a+130:177;angular.element(document.getElementsByName(b)[0]).css("height",c+"px")};a.getLogs=function(){return a.loading=!0,g.spin("logs-spinner"),d.logs().$promise.then(function(c){a.loading=!1,g.stop("logs-spinner"),c.status>0?a.table1.data=c.response.RMI.rows:b.show(c.message||"Please, check your connection!","danger")})["catch"](function(c){a.loading=!1,g.stop("logs-spinner"),b.error(c)})},a.initLogs=function(){a.table1={enableGridMenu:!0,exporterMenuVisibleData:!1,exporterCsvFilename:"Motion Dialer Logs.csv",enableHorizontalScrollbar:0,headerCellFilter:"translate",exporterHeaderFilter:e.instant,enableVerticalScrollbar:0,enableFiltering:!0,enableSorting:!0,showGridFooter:!0,paginationPageSizes:[10,25,50],paginationPageSize:10,gridMenuTitleFilter:function(a){var b=f.defer();return b.resolve(e.instant(a)),b.promise},columnDefs:[{name:"timeStamp",headerCellFilter:"translate",displayName:"APPLICATION_DATE",cellFilter:'date:"yyyy-MM-dd HH:mm:ss"',width:145},{name:"renderedMessage",headerCellFilter:"translate",displayName:"APPLICATION_MESSAGE",cellTooltip:!0}],data:[],onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){h(a.table1.paginationPageSize>a.table1.data.length?a.table1.data.length:a.table1.paginationPageSize,"table1")}),a.gridApi.pagination.on.paginationChanged(a,function(b,c){h(c>a.table1.data.length?a.table1.data.length:c,"table1")})}},a.getLogs()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.motiondialer.info.view",{url:"/view",templateUrl:"app/motiondialer/info/view/view.html",controller:"MotionDialerInfoViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.motiondialer.info.view.about",{url:"/about",templateUrl:"app/motiondialer/info/view/view.about.html"}).state("main.motiondialer.info.view.details",{url:"/details",templateUrl:"app/motiondialer/info/view/view.details.html"}).state("main.motiondialer.info.view.logs",{url:"/logs",templateUrl:"app/motiondialer/info/view/view.logs.html"})}]),angular.module("xCallyShuttleApp").factory("MotionDialerContact",["$resource",function(a){return a("/api/rest/contact/:controller",null,{list:{method:"POST",params:{controller:"list"}},insert:{method:"POST",params:{controller:"insert"}},"delete":{method:"POST",params:{controller:"delete"}},find:{method:"POST",params:{controller:"find"}},update:{method:"POST",params:{controller:"update"}}})}]),angular.module("xCallyShuttleApp").factory("MotionDialerList",["$resource",function(a){return a("/api/rest/list/:controller",null,{list:{method:"POST",params:{controller:"list"}},insert:{method:"POST",params:{controller:"insert"}},"delete":{method:"POST",params:{controller:"delete"}},find:{method:"POST",params:{controller:"find"}},update:{method:"POST",params:{controller:"update"}}})}]),angular.module("xCallyShuttleApp").factory("MotionDialerTimezone",function(){return{list:function(){return[{group:"US (Common)",zones:[{value:"America/Puerto_Rico",name:"Puerto Rico (Atlantic)"},{value:"America/New_York",name:"New York (Eastern)"},{value:"America/Chicago",name:"Chicago (Central)"},{value:"America/Denver",name:"Denver (Mountain)"},{value:"America/Phoenix",name:"Phoenix (MST)"},{value:"America/Los_Angeles",name:"Los Angeles (Pacific)"},{value:"America/Anchorage",name:"Anchorage (Alaska)"},{value:"Pacific/Honolulu",name:"Honolulu (Hawaii)"}]},{group:"America",zones:[{value:"America/Adak",name:"Adak"},{value:"America/Anchorage",name:"Anchorage"},{value:"America/Anguilla",name:"Anguilla"},{value:"America/Antigua",name:"Antigua"},{value:"America/Araguaina",name:"Araguaina"},{value:"America/Argentina/Buenos_Aires",name:"Argentina - Buenos Aires"},{value:"America/Argentina/Catamarca",name:"Argentina - Catamarca"},{value:"America/Argentina/ComodRivadavia",name:"Argentina - ComodRivadavia"},{value:"America/Argentina/Cordoba",name:"Argentina - Cordoba"},{value:"America/Argentina/Jujuy",name:"Argentina - Jujuy"},{value:"America/Argentina/La_Rioja",name:"Argentina - La Rioja"},{value:"America/Argentina/Mendoza",name:"Argentina - Mendoza"},{value:"America/Argentina/Rio_Gallegos",name:"Argentina - Rio Gallegos"},{value:"America/Argentina/Salta",name:"Argentina - Salta"},{value:"America/Argentina/San_Juan",name:"Argentina - San Juan"},{value:"America/Argentina/San_Luis",name:"Argentina - San Luis"},{value:"America/Argentina/Tucuman",name:"Argentina - Tucuman"},{value:"America/Argentina/Ushuaia",name:"Argentina - Ushuaia"},{value:"America/Aruba",name:"Aruba"},{value:"America/Asuncion",name:"Asuncion"},{value:"America/Atikokan",name:"Atikokan"},{value:"America/Atka",name:"Atka"},{value:"America/Bahia",name:"Bahia"},{value:"America/Barbados",name:"Barbados"},{value:"America/Belem",name:"Belem"},{value:"America/Belize",name:"Belize"},{value:"America/Blanc-Sablon",name:"Blanc-Sablon"},{value:"America/Boa_Vista",name:"Boa Vista"},{value:"America/Bogota",name:"Bogota"},{value:"America/Boise",name:"Boise"},{value:"America/Buenos_Aires",name:"Buenos Aires"},{value:"America/Cambridge_Bay",name:"Cambridge Bay"},{value:"America/Campo_Grande",name:"Campo Grande"},{value:"America/Cancun",name:"Cancun"},{value:"America/Caracas",name:"Caracas"},{value:"America/Catamarca",name:"Catamarca"},{value:"America/Cayenne",name:"Cayenne"},{value:"America/Cayman",name:"Cayman"},{value:"America/Chicago",name:"Chicago"},{value:"America/Chihuahua",name:"Chihuahua"},{value:"America/Coral_Harbour",name:"Coral Harbour"},{value:"America/Cordoba",name:"Cordoba"},{value:"America/Costa_Rica",name:"Costa Rica"},{value:"America/Cuiaba",name:"Cuiaba"},{value:"America/Curacao",name:"Curacao"},{value:"America/Danmarkshavn",name:"Danmarkshavn"},{value:"America/Dawson",name:"Dawson"},{value:"America/Dawson_Creek",name:"Dawson Creek"},{value:"America/Denver",name:"Denver"},{value:"America/Detroit",name:"Detroit"},{value:"America/Dominica",name:"Dominica"},{value:"America/Edmonton",name:"Edmonton"},{value:"America/Eirunepe",name:"Eirunepe"},{value:"America/El_Salvador",name:"El Salvador"},{value:"America/Ensenada",name:"Ensenada"},{value:"America/Fortaleza",name:"Fortaleza"},{value:"America/Fort_Wayne",name:"Fort Wayne"},{value:"America/Glace_Bay",name:"Glace Bay"},{value:"America/Godthab",name:"Godthab"},{value:"America/Goose_Bay",name:"Goose Bay"},{value:"America/Grand_Turk",name:"Grand Turk"},{value:"America/Grenada",name:"Grenada"},{value:"America/Guadeloupe",name:"Guadeloupe"},{value:"America/Guatemala",name:"Guatemala"},{value:"America/Guayaquil",name:"Guayaquil"},{value:"America/Guyana",name:"Guyana"},{value:"America/Halifax",name:"Halifax"},{value:"America/Havana",name:"Havana"},{value:"America/Hermosillo",name:"Hermosillo"},{value:"America/Indiana/Indianapolis",name:"Indiana - Indianapolis"},{value:"America/Indiana/Knox",name:"Indiana - Knox"},{value:"America/Indiana/Marengo",name:"Indiana - Marengo"},{value:"America/Indiana/Petersburg",name:"Indiana - Petersburg"},{value:"America/Indiana/Tell_City",name:"Indiana - Tell City"},{value:"America/Indiana/Vevay",name:"Indiana - Vevay"},{value:"America/Indiana/Vincennes",name:"Indiana - Vincennes"},{value:"America/Indiana/Winamac",name:"Indiana - Winamac"},{value:"America/Indianapolis",name:"Indianapolis"},{value:"America/Inuvik",name:"Inuvik"},{value:"America/Iqaluit",name:"Iqaluit"},{value:"America/Jamaica",name:"Jamaica"},{value:"America/Jujuy",name:"Jujuy"},{value:"America/Juneau",name:"Juneau"},{value:"America/Kentucky/Louisville",name:"Kentucky - Louisville"},{value:"America/Kentucky/Monticello",name:"Kentucky - Monticello"},{value:"America/Knox_IN",name:"Knox IN"},{value:"America/La_Paz",name:"La Paz"},{value:"America/Lima",name:"Lima"},{value:"America/Los_Angeles",name:"Los Angeles"},{value:"America/Louisville",name:"Louisville"},{value:"America/Maceio",name:"Maceio"},{value:"America/Managua",name:"Managua"},{value:"America/Manaus",name:"Manaus"},{value:"America/Marigot",name:"Marigot"},{value:"America/Martinique",name:"Martinique"},{value:"America/Matamoros",name:"Matamoros"},{value:"America/Mazatlan",name:"Mazatlan"},{value:"America/Mendoza",name:"Mendoza"},{value:"America/Menominee",name:"Menominee"},{value:"America/Merida",name:"Merida"},{value:"America/Mexico_City",name:"Mexico City"},{value:"America/Miquelon",name:"Miquelon"},{value:"America/Moncton",name:"Moncton"},{value:"America/Monterrey",name:"Monterrey"},{value:"America/Montevideo",name:"Montevideo"},{value:"America/Montreal",name:"Montreal"},{value:"America/Montserrat",name:"Montserrat"},{value:"America/Nassau",name:"Nassau"},{value:"America/New_York",name:"New York"},{value:"America/Nipigon",name:"Nipigon"},{value:"America/Nome",name:"Nome"},{value:"America/Noronha",name:"Noronha"},{value:"America/North_Dakota/Center",name:"North Dakota - Center"},{value:"America/North_Dakota/New_Salem",name:"North Dakota - New Salem"},{value:"America/Ojinaga",name:"Ojinaga"},{value:"America/Panama",name:"Panama"},{value:"America/Pangnirtung",name:"Pangnirtung"},{value:"America/Paramaribo",name:"Paramaribo"},{value:"America/Phoenix",name:"Phoenix"},{value:"America/Port-au-Prince",name:"Port-au-Prince"},{value:"America/Porto_Acre",name:"Porto Acre"},{value:"America/Port_of_Spain",name:"Port of Spain"},{value:"America/Porto_Velho",name:"Porto Velho"},{value:"America/Puerto_Rico",name:"Puerto Rico"},{value:"America/Rainy_River",name:"Rainy River"},{value:"America/Rankin_Inlet",name:"Rankin Inlet"},{value:"America/Recife",name:"Recife"},{value:"America/Regina",name:"Regina"},{value:"America/Resolute",name:"Resolute"},{value:"America/Rio_Branco",name:"Rio Branco"},{value:"America/Rosario",name:"Rosario"},{value:"America/Santa_Isabel",name:"Santa Isabel"},{value:"America/Santarem",name:"Santarem"},{value:"America/Santiago",name:"Santiago"},{value:"America/Santo_Domingo",name:"Santo Domingo"},{value:"America/Sao_Paulo",name:"Sao Paulo"},{value:"America/Scoresbysund",name:"Scoresbysund"},{value:"America/Shiprock",name:"Shiprock"},{value:"America/St_Barthelemy",name:"St Barthelemy"},{value:"America/St_Johns",name:"St Johns"},{value:"America/St_Kitts",name:"St Kitts"},{value:"America/St_Lucia",name:"St Lucia"},{value:"America/St_Thomas",name:"St Thomas"},{value:"America/St_Vincent",name:"St Vincent"},{value:"America/Swift_Current",name:"Swift Current"},{value:"America/Tegucigalpa",name:"Tegucigalpa"},{value:"America/Thule",name:"Thule"},{value:"America/Thunder_Bay",name:"Thunder Bay"},{value:"America/Tijuana",name:"Tijuana"},{value:"America/Toronto",name:"Toronto"},{value:"America/Tortola",name:"Tortola"},{value:"America/Vancouver",name:"Vancouver"},{value:"America/Virgin",name:"Virgin"},{value:"America/Whitehorse",name:"Whitehorse"},{value:"America/Winnipeg",name:"Winnipeg"},{value:"America/Yakutat",name:"Yakutat"},{value:"America/Yellowknife",name:"Yellowknife"}]},{group:"Europe",zones:[{value:"Europe/Amsterdam",name:"Amsterdam"},{value:"Europe/Andorra",name:"Andorra"},{value:"Europe/Athens",name:"Athens"},{value:"Europe/Belfast",name:"Belfast"},{value:"Europe/Belgrade",name:"Belgrade"},{value:"Europe/Berlin",name:"Berlin"},{value:"Europe/Bratislava",name:"Bratislava"},{value:"Europe/Brussels",name:"Brussels"},{value:"Europe/Bucharest",name:"Bucharest"},{value:"Europe/Budapest",name:"Budapest"},{value:"Europe/Chisinau",name:"Chisinau"},{value:"Europe/Copenhagen",name:"Copenhagen"},{value:"Europe/Dublin",name:"Dublin"},{value:"Europe/Gibraltar",name:"Gibraltar"},{value:"Europe/Guernsey",name:"Guernsey"},{value:"Europe/Helsinki",name:"Helsinki"},{value:"Europe/Isle_of_Man",name:"Isle of Man"},{value:"Europe/Istanbul",name:"Istanbul"},{value:"Europe/Jersey",name:"Jersey" +},{value:"Europe/Kaliningrad",name:"Kaliningrad"},{value:"Europe/Kiev",name:"Kiev"},{value:"Europe/Lisbon",name:"Lisbon"},{value:"Europe/Ljubljana",name:"Ljubljana"},{value:"Europe/London",name:"London"},{value:"Europe/Luxembourg",name:"Luxembourg"},{value:"Europe/Madrid",name:"Madrid"},{value:"Europe/Malta",name:"Malta"},{value:"Europe/Mariehamn",name:"Mariehamn"},{value:"Europe/Minsk",name:"Minsk"},{value:"Europe/Monaco",name:"Monaco"},{value:"Europe/Moscow",name:"Moscow"},{value:"Europe/Nicosia",name:"Nicosia"},{value:"Europe/Oslo",name:"Oslo"},{value:"Europe/Paris",name:"Paris"},{value:"Europe/Podgorica",name:"Podgorica"},{value:"Europe/Prague",name:"Prague"},{value:"Europe/Riga",name:"Riga"},{value:"Europe/Rome",name:"Rome"},{value:"Europe/Samara",name:"Samara"},{value:"Europe/San_Marino",name:"San Marino"},{value:"Europe/Sarajevo",name:"Sarajevo"},{value:"Europe/Simferopol",name:"Simferopol"},{value:"Europe/Skopje",name:"Skopje"},{value:"Europe/Sofia",name:"Sofia"},{value:"Europe/Stockholm",name:"Stockholm"},{value:"Europe/Tallinn",name:"Tallinn"},{value:"Europe/Tirane",name:"Tirane"},{value:"Europe/Tiraspol",name:"Tiraspol"},{value:"Europe/Uzhgorod",name:"Uzhgorod"},{value:"Europe/Vaduz",name:"Vaduz"},{value:"Europe/Vatican",name:"Vatican"},{value:"Europe/Vienna",name:"Vienna"},{value:"Europe/Vilnius",name:"Vilnius"},{value:"Europe/Volgograd",name:"Volgograd"},{value:"Europe/Warsaw",name:"Warsaw"},{value:"Europe/Zagreb",name:"Zagreb"},{value:"Europe/Zaporozhye",name:"Zaporozhye"},{value:"Europe/Zurich",name:"Zurich"}]},{group:"Asia",zones:[{value:"Asia/Aden",name:"Aden"},{value:"Asia/Almaty",name:"Almaty"},{value:"Asia/Amman",name:"Amman"},{value:"Asia/Anadyr",name:"Anadyr"},{value:"Asia/Aqtau",name:"Aqtau"},{value:"Asia/Aqtobe",name:"Aqtobe"},{value:"Asia/Ashgabat",name:"Ashgabat"},{value:"Asia/Ashkhabad",name:"Ashkhabad"},{value:"Asia/Baghdad",name:"Baghdad"},{value:"Asia/Bahrain",name:"Bahrain"},{value:"Asia/Baku",name:"Baku"},{value:"Asia/Bangkok",name:"Bangkok"},{value:"Asia/Beirut",name:"Beirut"},{value:"Asia/Bishkek",name:"Bishkek"},{value:"Asia/Brunei",name:"Brunei"},{value:"Asia/Calcutta",name:"Calcutta"},{value:"Asia/Choibalsan",name:"Choibalsan"},{value:"Asia/Chongqing",name:"Chongqing"},{value:"Asia/Chungking",name:"Chungking"},{value:"Asia/Colombo",name:"Colombo"},{value:"Asia/Dacca",name:"Dacca"},{value:"Asia/Damascus",name:"Damascus"},{value:"Asia/Dhaka",name:"Dhaka"},{value:"Asia/Dili",name:"Dili"},{value:"Asia/Dubai",name:"Dubai"},{value:"Asia/Dushanbe",name:"Dushanbe"},{value:"Asia/Gaza",name:"Gaza"},{value:"Asia/Harbin",name:"Harbin"},{value:"Asia/Ho_Chi_Minh",name:"Ho Chi Minh"},{value:"Asia/Hong_Kong",name:"Hong Kong"},{value:"Asia/Hovd",name:"Hovd"},{value:"Asia/Irkutsk",name:"Irkutsk"},{value:"Asia/Istanbul",name:"Istanbul"},{value:"Asia/Jakarta",name:"Jakarta"},{value:"Asia/Jayapura",name:"Jayapura"},{value:"Asia/Jerusalem",name:"Jerusalem"},{value:"Asia/Kabul",name:"Kabul"},{value:"Asia/Kamchatka",name:"Kamchatka"},{value:"Asia/Karachi",name:"Karachi"},{value:"Asia/Kashgar",name:"Kashgar"},{value:"Asia/Kathmandu",name:"Kathmandu"},{value:"Asia/Katmandu",name:"Katmandu"},{value:"Asia/Kolkata",name:"Kolkata"},{value:"Asia/Krasnoyarsk",name:"Krasnoyarsk"},{value:"Asia/Kuala_Lumpur",name:"Kuala Lumpur"},{value:"Asia/Kuching",name:"Kuching"},{value:"Asia/Kuwait",name:"Kuwait"},{value:"Asia/Macao",name:"Macao"},{value:"Asia/Macau",name:"Macau"},{value:"Asia/Magadan",name:"Magadan"},{value:"Asia/Makassar",name:"Makassar"},{value:"Asia/Manila",name:"Manila"},{value:"Asia/Muscat",name:"Muscat"},{value:"Asia/Nicosia",name:"Nicosia"},{value:"Asia/Novokuznetsk",name:"Novokuznetsk"},{value:"Asia/Novosibirsk",name:"Novosibirsk"},{value:"Asia/Omsk",name:"Omsk"},{value:"Asia/Oral",name:"Oral"},{value:"Asia/Phnom_Penh",name:"Phnom Penh"},{value:"Asia/Pontianak",name:"Pontianak"},{value:"Asia/Pyongyang",name:"Pyongyang"},{value:"Asia/Qatar",name:"Qatar"},{value:"Asia/Qyzylorda",name:"Qyzylorda"},{value:"Asia/Rangoon",name:"Rangoon"},{value:"Asia/Riyadh",name:"Riyadh"},{value:"Asia/Saigon",name:"Saigon"},{value:"Asia/Sakhalin",name:"Sakhalin"},{value:"Asia/Samarkand",name:"Samarkand"},{value:"Asia/Seoul",name:"Seoul"},{value:"Asia/Shanghai",name:"Shanghai"},{value:"Asia/Singapore",name:"Singapore"},{value:"Asia/Taipei",name:"Taipei"},{value:"Asia/Tashkent",name:"Tashkent"},{value:"Asia/Tbilisi",name:"Tbilisi"},{value:"Asia/Tehran",name:"Tehran"},{value:"Asia/Tel_Aviv",name:"Tel Aviv"},{value:"Asia/Thimbu",name:"Thimbu"},{value:"Asia/Thimphu",name:"Thimphu"},{value:"Asia/Tokyo",name:"Tokyo"},{value:"Asia/Ujung_Pandang",name:"Ujung Pandang"},{value:"Asia/Ulaanbaatar",name:"Ulaanbaatar"},{value:"Asia/Ulan_Bator",name:"Ulan Bator"},{value:"Asia/Urumqi",name:"Urumqi"},{value:"Asia/Vientiane",name:"Vientiane"},{value:"Asia/Vladivostok",name:"Vladivostok"},{value:"Asia/Yakutsk",name:"Yakutsk"},{value:"Asia/Yekaterinburg",name:"Yekaterinburg"},{value:"Asia/Yerevan",name:"Yerevan"}]},{group:"Africa",zones:[{value:"Africa/Abidjan",name:"Abidjan"},{value:"Africa/Accra",name:"Accra"},{value:"Africa/Addis_Ababa",name:"Addis Ababa"},{value:"Africa/Algiers",name:"Algiers"},{value:"Africa/Asmara",name:"Asmara"},{value:"Africa/Asmera",name:"Asmera"},{value:"Africa/Bamako",name:"Bamako"},{value:"Africa/Bangui",name:"Bangui"},{value:"Africa/Banjul",name:"Banjul"},{value:"Africa/Bissau",name:"Bissau"},{value:"Africa/Blantyre",name:"Blantyre"},{value:"Africa/Brazzaville",name:"Brazzaville"},{value:"Africa/Bujumbura",name:"Bujumbura"},{value:"Africa/Cairo",name:"Cairo"},{value:"Africa/Casablanca",name:"Casablanca"},{value:"Africa/Ceuta",name:"Ceuta"},{value:"Africa/Conakry",name:"Conakry"},{value:"Africa/Dakar",name:"Dakar"},{value:"Africa/Dar_es_Salaam",name:"Dar es Salaam"},{value:"Africa/Djibouti",name:"Djibouti"},{value:"Africa/Douala",name:"Douala"},{value:"Africa/El_Aaiun",name:"El Aaiun"},{value:"Africa/Freetown",name:"Freetown"},{value:"Africa/Gaborone",name:"Gaborone"},{value:"Africa/Harare",name:"Harare"},{value:"Africa/Johannesburg",name:"Johannesburg"},{value:"Africa/Kampala",name:"Kampala"},{value:"Africa/Khartoum",name:"Khartoum"},{value:"Africa/Kigali",name:"Kigali"},{value:"Africa/Kinshasa",name:"Kinshasa"},{value:"Africa/Lagos",name:"Lagos"},{value:"Africa/Libreville",name:"Libreville"},{value:"Africa/Lome",name:"Lome"},{value:"Africa/Luanda",name:"Luanda"},{value:"Africa/Lubumbashi",name:"Lubumbashi"},{value:"Africa/Lusaka",name:"Lusaka"},{value:"Africa/Malabo",name:"Malabo"},{value:"Africa/Maputo",name:"Maputo"},{value:"Africa/Maseru",name:"Maseru"},{value:"Africa/Mbabane",name:"Mbabane"},{value:"Africa/Mogadishu",name:"Mogadishu"},{value:"Africa/Monrovia",name:"Monrovia"},{value:"Africa/Nairobi",name:"Nairobi"},{value:"Africa/Ndjamena",name:"Ndjamena"},{value:"Africa/Niamey",name:"Niamey"},{value:"Africa/Nouakchott",name:"Nouakchott"},{value:"Africa/Ouagadougou",name:"Ouagadougou"},{value:"Africa/Porto-Novo",name:"Porto-Novo"},{value:"Africa/Sao_Tome",name:"Sao Tome"},{value:"Africa/Timbuktu",name:"Timbuktu"},{value:"Africa/Tripoli",name:"Tripoli"},{value:"Africa/Tunis",name:"Tunis"},{value:"Africa/Windhoek",name:"Windhoek"}]},{group:"Australia",zones:[{value:"Australia/ACT",name:"ACT"},{value:"Australia/Adelaide",name:"Adelaide"},{value:"Australia/Brisbane",name:"Brisbane"},{value:"Australia/Broken_Hill",name:"Broken Hill"},{value:"Australia/Canberra",name:"Canberra"},{value:"Australia/Currie",name:"Currie"},{value:"Australia/Darwin",name:"Darwin"},{value:"Australia/Eucla",name:"Eucla"},{value:"Australia/Hobart",name:"Hobart"},{value:"Australia/LHI",name:"LHI"},{value:"Australia/Lindeman",name:"Lindeman"},{value:"Australia/Lord_Howe",name:"Lord Howe"},{value:"Australia/Melbourne",name:"Melbourne"},{value:"Australia/North",name:"North"},{value:"Australia/NSW",name:"NSW"},{value:"Australia/Perth",name:"Perth"},{value:"Australia/Queensland",name:"Queensland"},{value:"Australia/South",name:"South"},{value:"Australia/Sydney",name:"Sydney"},{value:"Australia/Tasmania",name:"Tasmania"},{value:"Australia/Victoria",name:"Victoria"},{value:"Australia/West",name:"West"},{value:"Australia/Yancowinna",name:"Yancowinna"}]},{group:"Indian",zones:[{value:"Indian/Antananarivo",name:"Antananarivo"},{value:"Indian/Chagos",name:"Chagos"},{value:"Indian/Christmas",name:"Christmas"},{value:"Indian/Cocos",name:"Cocos"},{value:"Indian/Comoro",name:"Comoro"},{value:"Indian/Kerguelen",name:"Kerguelen"},{value:"Indian/Mahe",name:"Mahe"},{value:"Indian/Maldives",name:"Maldives"},{value:"Indian/Mauritius",name:"Mauritius"},{value:"Indian/Mayotte",name:"Mayotte"},{value:"Indian/Reunion",name:"Reunion"}]},{group:"Atlantic",zones:[{value:"Atlantic/Azores",name:"Azores"},{value:"Atlantic/Bermuda",name:"Bermuda"},{value:"Atlantic/Canary",name:"Canary"},{value:"Atlantic/Cape_Verde",name:"Cape Verde"},{value:"Atlantic/Faeroe",name:"Faeroe"},{value:"Atlantic/Faroe",name:"Faroe"},{value:"Atlantic/Jan_Mayen",name:"Jan Mayen"},{value:"Atlantic/Madeira",name:"Madeira"},{value:"Atlantic/Reykjavik",name:"Reykjavik"},{value:"Atlantic/South_Georgia",name:"South Georgia"},{value:"Atlantic/Stanley",name:"Stanley"},{value:"Atlantic/St_Helena",name:"St Helena"}]},{group:"Pacific",zones:[{value:"Pacific/Apia",name:"Apia"},{value:"Pacific/Auckland",name:"Auckland"},{value:"Pacific/Chatham",name:"Chatham"},{value:"Pacific/Easter",name:"Easter"},{value:"Pacific/Efate",name:"Efate"},{value:"Pacific/Enderbury",name:"Enderbury"},{value:"Pacific/Fakaofo",name:"Fakaofo"},{value:"Pacific/Fiji",name:"Fiji"},{value:"Pacific/Funafuti",name:"Funafuti"},{value:"Pacific/Galapagos",name:"Galapagos"},{value:"Pacific/Gambier",name:"Gambier"},{value:"Pacific/Guadalcanal",name:"Guadalcanal"},{value:"Pacific/Guam",name:"Guam"},{value:"Pacific/Honolulu",name:"Honolulu"},{value:"Pacific/Johnston",name:"Johnston"},{value:"Pacific/Kiritimati",name:"Kiritimati"},{value:"Pacific/Kosrae",name:"Kosrae"},{value:"Pacific/Kwajalein",name:"Kwajalein"},{value:"Pacific/Majuro",name:"Majuro"},{value:"Pacific/Marquesas",name:"Marquesas"},{value:"Pacific/Midway",name:"Midway"},{value:"Pacific/Nauru",name:"Nauru"},{value:"Pacific/Niue",name:"Niue"},{value:"Pacific/Norfolk",name:"Norfolk"},{value:"Pacific/Noumea",name:"Noumea"},{value:"Pacific/Pago_Pago",name:"Pago Pago"},{value:"Pacific/Palau",name:"Palau"},{value:"Pacific/Pitcairn",name:"Pitcairn"},{value:"Pacific/Ponape",name:"Ponape"},{value:"Pacific/Port_Moresby",name:"Port Moresby"},{value:"Pacific/Rarotonga",name:"Rarotonga"},{value:"Pacific/Saipan",name:"Saipan"},{value:"Pacific/Samoa",name:"Samoa"},{value:"Pacific/Tahiti",name:"Tahiti"},{value:"Pacific/Tarawa",name:"Tarawa"},{value:"Pacific/Tongatapu",name:"Tongatapu"},{value:"Pacific/Truk",name:"Truk"},{value:"Pacific/Wake",name:"Wake"},{value:"Pacific/Wallis",name:"Wallis"},{value:"Pacific/Yap",name:"Yap"}]},{group:"Antarctica",zones:[{value:"Antarctica/Casey",name:"Casey"},{value:"Antarctica/Davis",name:"Davis"},{value:"Antarctica/DumontDUrville",name:"DumontDUrville"},{value:"Antarctica/Macquarie",name:"Macquarie"},{value:"Antarctica/Mawson",name:"Mawson"},{value:"Antarctica/McMurdo",name:"McMurdo"},{value:"Antarctica/Palmer",name:"Palmer"},{value:"Antarctica/Rothera",name:"Rothera"},{value:"Antarctica/South_Pole",name:"South Pole"},{value:"Antarctica/Syowa",name:"Syowa"},{value:"Antarctica/Vostok",name:"Vostok"}]},{group:"Arctic",zones:[{value:"Arctic/Longyearbyen",name:"Longyearbyen"}]},{group:"UTC",zones:[{value:"UTC",name:"UTC"}]},{group:"Manual Offsets",zones:[{value:"UTC-12",name:"UTC-12"},{value:"UTC-11",name:"UTC-11"},{value:"UTC-10",name:"UTC-10"},{value:"UTC-9",name:"UTC-9"},{value:"UTC-8",name:"UTC-8"},{value:"UTC-7",name:"UTC-7"},{value:"UTC-6",name:"UTC-6"},{value:"UTC-5",name:"UTC-5"},{value:"UTC-4",name:"UTC-4"},{value:"UTC-3",name:"UTC-3"},{value:"UTC-2",name:"UTC-2"},{value:"UTC-1",name:"UTC-1"},{value:"UTC+0",name:"UTC+0"},{value:"UTC+1",name:"UTC+1"},{value:"UTC+2",name:"UTC+2"},{value:"UTC+3",name:"UTC+3"},{value:"UTC+4",name:"UTC+4"},{value:"UTC+5",name:"UTC+5"},{value:"UTC+6",name:"UTC+6"},{value:"UTC+7",name:"UTC+7"},{value:"UTC+8",name:"UTC+8"},{value:"UTC+9",name:"UTC+9"},{value:"UTC+10",name:"UTC+10"},{value:"UTC+11",name:"UTC+11"},{value:"UTC+12",name:"UTC+12"},{value:"UTC+13",name:"UTC+13"},{value:"UTC+14",name:"UTC+14"}]}]}}}),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.motiondialer",{url:"/motiondialer",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:16}}})}]),angular.module("xCallyShuttleApp").controller("MotionDialerProcessListCtrl",["$scope","$uibModal","$translate","xAlert","Modal","MotionDialerProcess","uiGridConstants","usSpinnerService",function(a,b,c,d,e,f,g,h){a.initView=function(){return a.gridOptions={paginationPageSizes:[10,25,50,75],paginationPageSize:10,enableFiltering:!0,enableSorting:!0,enableGridMenu:!0,flatEntityAccess:!0,showGridFooter:!0,fastWatch:!0,columnDefs:[{name:"id",width:60},{name:"name"},{name:"queue",enableSorting:!1},{name:"extension",enableSorting:!1},{name:"list_name",cellClass:"ui-grid-vcenter",cellTemplate:"<div>{{row.entity.list ? row.entity.list.name : row.entity.list_name}}</div>",headerCellFilter:"translate",enableSorting:!1},{name:"status",cellTemplate:"<div><a class=\"btn btn-xs\" data-ng-class=\"row.entity.status == 'STOP' ? 'red-sunglo' : 'green-meadow'\" data-ng-href=\"#\">{{ (row.entity.status === 'RUN') ? 'RUNNING' : 'STOPPED'}}</a></div>",cellClass:"ui-grid-vcenter",filter:{type:g.filter.SELECT,selectOptions:[{value:"RUN",label:"RUNNING"},{value:"STOP",label:"STOPPED"}]}},{name:"updatedtime",sort:{direction:g.DESC},enableFiltering:!1},{name:"action",cellTemplate:'<div><a class="btn btn-xs blue-hoki" href="/motiondialer/processes/view/{{row.entity.id}}/overview"><i class="icon-settings"></i></a><a class="btn btn-xs red-sunglo" data-ng-click="grid.appScope.deleteItem(row.entity.name, row.entity.id)"><i class="icon-trash"></i></a></div>',enableSorting:!1,cellClass:"ui-grid-vcenter",enableFiltering:!1}]},f.list({page:1,size:6e5}).$promise.then(function(b){b.status>0?a.gridOptions.data=b.response.RMI.rows:d.show("Please, check your connection!","danger")})["catch"](function(a){d.error(a)})["finally"](function(){h.stop("spinner-grid")})},a.createProcessQueue=function(){var c=b.open({animation:!0,templateUrl:"app/motiondialer/process/list/list.create.queue.modal.html",controller:"MotionDialerProcessListCreateQueueCtrl"});c.result.then(function(b){a.gridOptions.data.push(b.response.RMI)})},a.createProcessSquare=function(){var c=b.open({animation:!0,templateUrl:"app/motiondialer/process/list/list.create.square.modal.html",controller:"MotionDialerProcessListCreateSquareCtrl"});c.result.then(function(b){a.gridOptions.data.push(b.response.RMI)})},a.deleteItem=e.confirm["delete"](function(b){return f["delete"]({id:b}).$promise.then(function(e){e.status>0?(_.remove(a.gridOptions.data,{id:b}),d.show(c.instant("MESSAGE_WELL_DONE"),"success")):d.show(e.message||"Please, check your connection!","danger")})["catch"](function(a){d.error(a)})})}]),angular.module("xCallyShuttleApp").controller("MotionDialerProcessListCreateQueueCtrl",["$scope","$translate","$uibModalInstance","MotionDialerProcess","MotionDialerList","Trunk","VoiceQueue","Route","xAlert","List",function(a,b,c,d,e,f,g,h,i,j){a.form={},a.item={fetch_sort:"ASC",timeout:3},a.initModal=function(){var b;return g.get().$promise.then(function(b){return a.queues={},b&&(a.queues=b.rows),f.get().$promise}).then(function(b){return a.trunks={},b&&(a.trunks=b.rows),a.trunks.push({name:"fake"}),j.get().$promise}).then(function(a){return a&&a.rows.length?(b=a.rows,console.log(b),e.list({page:1,size:6e5}).$promise):void 0}).then(function(c){if(a.lists=[],c&&c.status>0){console.log(c.response.RMI.rows);var d;_.forEach(b,function(b){d=_.find(c.response.RMI.rows,{name:b.name}),d&&a.lists.push(d)})}else i.show("Please, check your connection!","danger")})["catch"](function(a){i.error(a)})},a.save=function(){var e="_process_"+a.item.name+Math.round(1e5*Math.random()),f="Generated by Motion Dialer, Process Queue"+(a.item.description?", "+a.item.description:"");return h.save({appdata:"Internal Call (MotionDialer)",context:"from-sip",exten:e.replace(/\s/g,"_"),type:"internal",description:f,Applications:[{appdata:["CDR(type)=tigerdial"],app:"Set",interval:"*,*,*,*",type:"internal"},{appdata:["QUEUE_PRIO=99"],app:"Set",interval:"*,*,*,*",type:"internal"},{appdata:["CALLERID(name)=${AUTODIAL_NAME}"],app:"Set",interval:"*,*,*,*",type:"internal"},{appdata:["CALLERID(num)=${AUTODIAL_PHONE}"],app:"Set",interval:"*,*,*,*",type:"internal"},{appdata:[a.item.queue.name,"","","",a.item.timeout],app:"Queue",interval:"*,*,*,*",type:"internal"}]}).$promise.then(function(b){return d.insert({name:a.item.name,id_list:a.item.list.id,queue:a.item.queue.name,device:a.item.device.name,context:"from-sip",extension:e.replace(/\s/g,"_"),description:a.item.description,auto_closed:!0,fetch_sort:a.item.fetch_sort,context_for_other_calls:"from-sip",extension_for_other_calls:"_TIGER-DIAL-PEER-DO-NOT-DELETE",hooks:[{target:"http://localhost:9000/api/report/integrations/tdDisposal",type:"http",http_method:"POST",json:"true",event:"hangup"}]}).$promise}).then(function(d){d.status>0?(i.show(b.instant("MESSAGE_WELL_DONE"),"success"),d.response.RMI.list=a.item.list,c.close(d)):i.show(d.message||"Please, check your connection!","danger")})["catch"](function(a){i.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").controller("MotionDialerProcessListCreateSquareCtrl",["$scope","$translate","$uibModalInstance","MotionDialerProcess","MotionDialerList","SquareProject","Trunk","Route","xAlert","List",function(a,b,c,d,e,f,g,h,i,j){a.form={},a.item={fetch_sort:"ASC"},a.initModal=function(){var b;return f.get().$promise.then(function(b){return a.projects={},b&&(a.projects=b.rows),g.get().$promise}).then(function(b){return a.trunks={},b&&(a.trunks=b.rows),a.trunks.push({name:"fake"}),j.get().$promise}).then(function(a){return a&&a.rows.length?(b=a.rows,e.list({page:1,size:6e5}).$promise):void 0}).then(function(c){if(a.lists=[],c&&c.status>0){var d;_.forEach(b,function(b){d=_.find(c.response.RMI.rows,{name:b.name}),d&&a.lists.push(d)})}else i.show("Please, check your connection!","danger")})["catch"](function(a){i.error(a)})},a.save=function(){var e="_process_"+a.item.name+Math.round(1e5*Math.random()),f="Generated by Motion Dialer, Process Square"+(a.item.description?", "+a.item.description:"");return h.save({appdata:"Internal Call (MotionDialer)",context:"from-sip",exten:e.replace(/\s/g,"_"),type:"internal",description:f,Applications:[{appdata:["CDR(type)=tigerdial"],app:"Set",interval:"*,*,*,*",type:"internal"},{appdata:["agi://127.0.0.1/square",a.item.project.name],app:"AGI",interval:"*,*,*,*",type:"internal"}]}).$promise.then(function(b){return d.insert({name:a.item.name,id_list:a.item.list.id,queue:"none",device:a.item.device.name,context:"from-sip",extension:e.replace(/\s/g,"_"),description:a.item.description,auto_closed:!0,channel_limit:15,fetch_sort:a.item.fetch_sort}).$promise}).then(function(d){d.status>0?(i.show(b.instant("MESSAGE_WELL_DONE"),"success"),d.response.RMI.list=a.item.list,c.close(d)):i.show(d.message||"Please, check your connection!","danger")})["catch"](function(a){i.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.motiondialer.processes.list",{url:"/list",templateUrl:"app/motiondialer/process/list/list.html",controller:"MotionDialerProcessListCtrl",authenticate:!0})}]),angular.module("xCallyShuttleApp").factory("MotionDialerProcess",["$resource",function(a){return a("/api/rest/process/:controller",null,{list:{method:"POST",params:{controller:"list"}},insert:{method:"POST",params:{controller:"insert"}},"delete":{method:"POST",params:{controller:"delete"}},find:{method:"POST",params:{controller:"find"}},update:{method:"POST",params:{controller:"update"}},logs:{method:"GET",params:{controller:"logs"}}})}]),angular.module("xCallyShuttleApp").factory("MotionDialerSpooler",["$resource",function(a){return a("/api/rest/spooler/:controller/:retrieve/:peer",null,{list:{method:"POST",params:{controller:"list"}},"delete":{method:"POST",params:{controller:"delete"}},find:{method:"POST",params:{controller:"find"}},summary:{method:"POST",params:{controller:"summary"}},close:{method:"POST",params:{controller:"retrieve",retrieve:"close"}},open:{method:"POST",params:{controller:"retrieve",retrieve:"open"}},blacklist:{method:"POST",params:{controller:"retrieve",retrieve:"blacklist"}},planning:{method:"POST",params:{controller:"retrieve",retrieve:"planning"}},planningpeer:{method:"POST",params:{controller:"retrieve",retrieve:"planning",peer:"peer"}},fresh:{method:"POST",params:{controller:"fresh"}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.motiondialer.processes",{url:"/processes",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("MotionDialerProcessViewCtrl",["$scope","$translate","$stateParams","$uibModal","$state","xAlert","uiGridConstants","usSpinnerService","MotionDialerProcess","MotionDialerSpooler","Modal","VoiceQueue",function(a,b,c,d,e,f,g,h,i,j,k,l){function m(){return j.fresh({id_process:parseInt(c.id)}).$promise.then(function(b){b.status>0?(a.process.runtime||(a.process.runtime={}),a.process.runtime.fresh=b.response.RMI.value):f.show(b.message||"Please, check your connection!","danger")})["catch"](function(a){f.error(a)})}a.process={},a.techs=["SIP","IAX","LOCAL","KHOMP"],a.dialFormats=["tech/device/number","tech/number@device"],a.checkDuplicates=["ALWAYS","IFOPEN","NO"],a.codecs=["g729","ilbc","gsm","ulaw","alaw"],a._=_,a.getProcess=function(){return i.find({id:parseInt(c.id)}).$promise.then(function(b){b.status>0?(b.response.RMI.codecs=b.response.RMI.codecs.split(","),a.process=b.response.RMI,a.process.hooks&&a.process.hooks.length?a.process.disposal=!0:a.process.disposal=!1,m()):f.show(b.message||"Please, check your connection!","danger")})["catch"](function(a){f.error(a)})},a.getSummary=function(){return j.summary({id_process:parseInt(c.id)}).$promise.then(function(b){if(b.status>0){a.summary=b.response.RMI.totals,a.total=0;for(var c=0;c<a.summary.length;c++)a.total+=a.summary[c][1]}else f.show(b.message||"Please, check your connection!","danger")})["catch"](function(a){f.error(a)})["finally"](function(){h.stop("spinner-grid")})},a.updateProcess=function(){var c=_.clone(a.process);return delete c.updatedtime,delete c.id_list,delete c.createdtime,delete c.runtime,delete c.fetch_sort,delete c.list,c.codecs=c.codecs.join(","),""===c.timezone&&delete c.timezone,c.disposal?c.hooks=[{target:"http://localhost:9000/api/report/integrations/tdDisposal",type:"http",http_method:"POST",json:"true",event:"hangup"}]:c.hooks=[],delete c.disposal,i.update(c).$promise.then(function(c){c.status>0?(c.response.RMI.codecs=c.response.RMI.codecs.split(","),a.process=c.response.RMI,a.process.hooks&&a.process.hooks.length?a.process.disposal=!0:a.process.disposal=!1,f.show(b.instant("MESSAGE_WELL_DONE"),"success")):c.response.RMI.errors.forEach(function(a){a?f.show(a.field+": "+a.error,"danger"):f.show("Please, check your connection!","danger")})})["catch"](function(a){f.error(a)})},a.getSpooler=function(){return h.spin("spinner-grid"),a.gridOptions||(a.gridOptions={paginationPageSizes:[10,25,50,75],paginationPageSize:10,enableFiltering:!0,enableSorting:!0,enableGridMenu:!0,flatEntityAccess:!0,showGridFooter:!0,fastWatch:!0,headerCellFilter:"translate",columnDefs:[{name:"name"},{name:"phones",cellTemplate:"<div>{{row.entity.phones.join(',')}}</div>",cellClass:"ui-grid-vcenter"},{name:"retrieve",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",filter:{type:g.filter.SELECT,selectOptions:[{value:"PLANNED_PEER",label:"PLANNED PEER"},{value:"PLANNED",label:"PLANNED"},{value:"BLACK_LIST",label:"BLACKLIST"},{value:"OPEN",label:"OPEN"},{value:"CLOSED",label:"CLOSED"},{value:"MAX_ATTEMPTS",label:"MAX ATTEMPTS"},{value:"COUNTER_BLOCK",label:"COUNTER BLOCK"},{value:"PLANNED_REQUEST",label:"PLANNED REQUEST"},{value:"DELETE",label:"DELETE"}]}},{name:"counter",cellTemplate:"<div>{{grid.appScope.getCounter(row.entity)}}</div>",cellClass:"ui-grid-vcenter",enableFiltering:!1},{name:"planningtime",cellTemplate:"<div><span data-ng-if=\"row.entity.retrieve === 'PLANNED_PEER' || row.entity.retrieve === 'PLANNED'\">{{row.entity.planningtime | date:'yyyy-MM-dd HH:mm'}}</span></div>",cellClass:"ui-grid-vcenter",enableFiltering:!1},{name:"planningpeer",cellTemplate:"<div><span data-ng-if=\"row.entity.retrieve === 'PLANNED_PEER'\">{{row.entity.planningpeer}}</span></div>",cellClass:"ui-grid-vcenter",enableFiltering:!1},{name:"action",cellTemplate:'<div><a class="btn btn-xs green" data-ng-click="grid.appScope.historySpooler(row.entity.history)"><i class="icon-info"></i></a> <a class="btn btn-xs blue-hoki" data-ng-click="grid.appScope.editSpooler(row.entity)"><i class="icon-settings"></i></a></div>',enableSorting:!1,cellClass:"ui-grid-vcenter",enableFiltering:!1}]}),j.list({id_process:parseInt(c.id),page:1,size:6e5}).$promise.then(function(b){b.status>0?a.gridOptions.data=b.response.RMI.rows:f.show(b.message||"Please, check your connection!","danger")})["catch"](function(a){f.error(a)})["finally"](function(){h.stop("spinner-grid")})},a.deleteSpooler=k.confirm["delete"](function(c){return j["delete"]({id:c}).$promise.then(function(d){d.status>0?(_.remove(a.gridOptions.data,{id:c}),f.show(b.instant("MESSAGE_WELL_DONE"),"success")):f.show(d.message||"Please, check your connection!","danger")})["catch"](function(a){f.error(a)})}),a.historySpooler=function(b){var c=d.open({animation:!0,templateUrl:"app/motiondialer/process/view/view.spooler.history.modal.html",controller:"MotionDialerViewSpoolerHistoryCtrl",resolve:{historySpooler:function(){return b}}});c.result.then(function(b){a.gridOptions.data.push(b.response.RMI)})},a.editSpooler=function(a){var b=d.open({animation:!0,templateUrl:"app/motiondialer/process/view/view.spooler.edit.modal.html",controller:"MotionDialerViewSpoolerEditCtrl",resolve:{entitySpooler:function(){return _.clone(a)}}});b.result.then(function(b){_.merge(a,b)})},a.initSettings=function(){return a.queues=null,l.get().$promise.then(function(b){b&&(a.queues=b.rows)})["catch"](function(a){f.error(a)})},a.createInterval=function(b){var c=d.open({animation:!0,templateUrl:"app/motiondialer/process/view/view.create.interval.modal.html",controller:"MotionDialerViewCreateIntervalCtrl",resolve:{objectProcess:function(){return a.process},intervalType:function(){return b},intervalValue:function(){return null},intervalIndex:function(){return null}}});c.result.then(function(b){a.process=b})},a.editInterval=function(b,c,e){var f=d.open({animation:!0,templateUrl:"app/motiondialer/process/view/view.create.interval.modal.html",controller:"MotionDialerViewCreateIntervalCtrl",resolve:{objectProcess:function(){return a.process},intervalType:function(){return b},intervalValue:function(){return c},intervalIndex:function(){return e}}});f.result.then(function(b){a.process=b})},a.deleteInterval=k.confirm["delete"](function(c,d){var e={id:a.process.id};return d?(e.intervals=[],e.intervals=e.intervals.concat(a.process.intervals),e.intervals.splice(c,1)):(e.not_intervals=[],e.not_intervals=e.not_intervals.concat(a.process.not_intervals),e.not_intervals.splice(c,1)),i.update(e).$promise.then(function(c){c.status>0?(c.response.RMI.codecs=c.response.RMI.codecs.split(","),a.process=c.response.RMI,f.show(b.instant("MESSAGE_WELL_DONE"),"success")):c.response.RMI.errors.forEach(function(a){a?f.show(a.field+": "+a.error,"danger"):f.show("Please, check your connection!","danger")})})["catch"](function(a){f.error(a)})}),a.runOrStop=function(){var b=d.open({animation:!0,templateUrl:"app/motiondialer/process/view/view.run.process.modal.html",controller:"MotionDialerViewRunProcessCtrl",resolve:{statusProcess:function(){return a.process.status}}});b.result.then(function(b){a.process.status=b.status})},a.goToContacts=function(a){a&&e.go("main.contactmanager.contacts.list",{listId:a})},a.getCounter=function(a){return a.counter+a.counter_amd+a.counter_busy+a.counter_congestion+a.counter_drop+a.counter_failed+a.counter_noanswer+a.counter_nosuchextension+a.counter_ringtimeout}}]),angular.module("xCallyShuttleApp").controller("MotionDialerViewCreateIntervalCtrl",["$scope","$translate","$uibModalInstance","$stateParams","MotionDialerProcess","xAlert","objectProcess","intervalType","intervalValue","intervalIndex","interval",function(a,b,c,d,e,f,g,h,i,j,k){function l(a){var b,c=a.split("|"),d={};return c.forEach(function(a,c){switch(c){case 0:"*"!==a?(b=a.split("-"),d.t_from=moment(b[0],"HH:mm"),d.t_to=moment(b[1],"HH:mm"),d.alwaysTime=!1):(d.t_from=moment(new Date),d.t_to=moment(new Date),d.alwaysTime=!0);break;case 1:"*"!==a?(b=a.split("-"),d.wd_from=b[0].toLowerCase(),d.wd_to=b[1]?b[1].toLowerCase():"always"):(d.wd_from="always",d.wd_to="always");break;case 2:"*"!==a?(b=a.split("-"),d.md_from=b[0],d.md_to=b[1]?b[1]:"always"):(d.md_from="always",d.md_to="always");break;case 3:"*"!==a?(b=a.split("-"),d.m_from=b[0],d.m_to=b[1]?b[1]:"always"):(d.m_from="always",d.m_to="always")}}),d}function m(a){var b,c,d,e;return b=a.t_from&&a.t_to&&!a.alwaysTime?moment(a.t_from).format("HH:mm")+"-"+moment(a.t_to).format("HH:mm"):"*",a.wd_from&&"always"!==a.wd_from?(c=a.wd_from.toUpperCase(),a.wd_to&&"always"!==a.wd_to&&(c+="-"+a.wd_to.toUpperCase())):c="*",a.md_from&&"always"!==a.md_from?(d=a.md_from,a.md_to&&"always"!==a.md_to&&(d+="-"+a.md_to)):d="*",a.m_from&&"always"!==a.m_from?(e=a.m_from,a.m_to&&"always"!==a.m_to&&(e+="-"+a.m_to)):e="*",b+"|"+c+"|"+d+"|"+e}a.isNew=!1,a.form={},a.$interval=k.interval,i||(i=h?"8:00-20:00|MON-FRI|*|*":"00:01-07:59|SAT-SUN|*|*",a.isNew=!0),a.splittedInterval=l(i),a.save=function(){var d=m(a.splittedInterval);console.log(d);var i={id:g.id};return h?(i.intervals=[],i.intervals=i.intervals.concat(g.intervals),a.isNew?i.intervals.push(d):i.intervals[j]=d):(i.not_intervals=[],i.not_intervals=i.not_intervals.concat(g.not_intervals),a.isNew?i.not_intervals.push(d):i.not_intervals[j]=d),console.log(i),e.update(i).$promise.then(function(a){a.status>0?(a.response.RMI.codecs=a.response.RMI.codecs.split(","),f.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a.response.RMI)):a.response.RMI.errors.forEach(function(a){a?f.show(a.field+": "+a.error,"danger"):f.show("Please, check your connection!","danger")})})["catch"](function(a){f.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.motiondialer.processes.view",{url:"/view/:id",templateUrl:"app/motiondialer/process/view/view.html",controller:"MotionDialerProcessViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.motiondialer.processes.view.overview",{url:"/overview",templateUrl:"app/motiondialer/process/view/view.overview.html"}).state("main.motiondialer.processes.view.settings",{url:"/settings",templateUrl:"app/motiondialer/process/view/view.settings.html"}).state("main.motiondialer.processes.view.intervals",{url:"/intervals",templateUrl:"app/motiondialer/process/view/view.intervals.html"}).state("main.motiondialer.processes.view.spooler",{url:"/spooler",templateUrl:"app/motiondialer/process/view/view.spooler.html"})}]),angular.module("xCallyShuttleApp").controller("MotionDialerViewRunProcessCtrl",["$scope","$stateParams","$uibModalInstance","$translate","statusProcess","MotionDialerProcess","xAlert",function(a,b,c,d,e,f,g){a.status="RUN"===e?"STOP":"RUN",a.yes=function(){f.update({id:parseInt(b.id),status:a.status}).$promise.then(function(a){a.status>0?(g.show(d.instant("MESSAGE_WELL_DONE"),"success"), +c.close(a.response.RMI)):g.show(a.message||"Please, check your connection!","danger")})["catch"](function(a){g.error(a)})},a.no=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").controller("MotionDialerViewSpoolerEditCtrl",["$scope","$translate","$uibModalInstance","$stateParams","MotionDialerSpooler","xAlert","entitySpooler","Agent",function(a,b,c,d,e,f,g,h){a.moment=moment,a.entitySpooler=g,_.includes(["PLANNED","PLANNED_PEER"],a.entitySpooler.retrieve)||(a.entitySpooler.planningtime=moment()),a.initModal=function(){return h.get().$promise.then(function(b){a.agents=[],b&&b.rows.forEach(function(b){a.agents.push("SIP/"+b.name)})})["catch"](function(a){f.error(a)})},a.save=function(){var d;switch(a.entitySpooler.retrieve){case"CLOSED":d=e.close({id:parseInt(a.entitySpooler.id)});break;case"OPEN":d=e.open({id:parseInt(a.entitySpooler.id)});break;case"BLACK_LIST":d=e.blacklist({id:parseInt(a.entitySpooler.id)});break;case"PLANNED":d=e.planning({id:parseInt(a.entitySpooler.id),date:moment(a.entitySpooler.planningtime).format("YYYY-MM-DD HH:mm")});break;case"PLANNED_PEER":d=e.planningpeer({id:parseInt(a.entitySpooler.id),date:moment(a.entitySpooler.planningtime).format("YYYY-MM-DD HH:mm"),peer:a.entitySpooler.planningpeer})}d?d.$promise.then(function(d){console.log(d),d.status>0?(f.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a.entitySpooler)):d.response.RMI.errors.forEach(function(a){a?f.show(a.field+": "+a.error,"danger"):f.show("Please, check your connection!","danger")})})["catch"](function(a){f.error(a)}):f.show("RETRIEVE NOT FOUND","danger")},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").controller("MotionDialerViewSpoolerHistoryCtrl",["$scope","$translate","$uibModalInstance","$stateParams","MotionDialerSpooler","xAlert","historySpooler",function(a,b,c,d,e,f,g){a.historySpooler=g,a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").factory("ReportMotionDialer",["$resource",function(a){return a("/api/report/motiondialer/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("ResetCtrl",["$scope","Auth","$location","$window","$rootScope","Setting","xAlert","$stateParams","$state",function(a,b,c,d,e,f,g,h,i){a.userReset={},a.getInfo=function(){return f.get({controller:"info"}).$promise.then(function(b){return a.info=b,f.get({id:1}).$promise}).then(function(b){a.setting=b})["catch"](function(a){console.error(a)})},e.bodyLayout="login",a.$on("$viewContentLoaded",function(){Metronic.init(),Layout.init()}),a.reset=function(){b.reset({token:h.token,password:a.userReset.password}).then(function(){i.go("login",{reset:!0})})["catch"](function(a){g.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("reset",{url:"/reset/:token",templateUrl:"app/reset/reset.html",controller:"ResetCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/login.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("SalesforceListCtrl",["$scope","SalesforceAccount","gridOptions","xAlert","$translate",function(a,b,c,d,e){a.initView=function(){var d={exporterCsvFilename:"salesforce_account.csv",columnDefs:[{name:"name",displayName:"APPLICATION_NAME"},{name:"username"},{name:"remoteUri",displayName:"APPLICATION_URI"},{name:"action",buttons:[{"class":"blue-hoki",href:"/salesforce/view/{{row.entity.id}}/account",name:"profile"},{"class":"green-jungle",name:"check",onClick:"grid.appScope.checkAccount(row.entity.id)"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.checkAccount=function(a){return b.check({id:a}).$promise.then(function(){d.show(e.instant("MESSAGE_ACCOUNT_VERIFIED"),"success")})["catch"](function(){d.show(e.instant("MESSAGE_ACCOUNT_INVALID"),"danger")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.salesforce.list",{url:"/list",templateUrl:"app/salesforce/list/list.html",controller:"SalesforceListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").factory("SalesforceAccount",["$resource",function(a){return a("/api/salesforce/accounts/:id/:controller",{id:"@id"},{update:{method:"PUT"},fields:{params:{controller:"fields"},isArray:!0},check:{params:{controller:"check"}}})}]).factory("SalesforceConfiguration",["$resource",function(a){return a("/api/salesforce/accounts/:accountId/configurations/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]).factory("SalesforceField",["$resource",function(a){return a("/api/salesforce/accounts/:accountId/configurations/:configurationId/fields/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.salesforce",{url:"/salesforce",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.salesforce.view.configurations",{url:"/configurations",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("SalesforceViewConfigurationListCtrl",["$scope","$stateParams","$translate","gridOptions","SalesforceConfiguration","$uibModal",function(a,b,c,d,e,f){a.initView=function(){var c={exporterCsvFilename:"salesforce_configurations.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:125,buttons:[{"class":"blue-hoki",href:"/salesforce/view/{{row.entity.AccountId}}/configurations/view/{{row.entity.id}}",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(e,c,a,{accountId:b.id})},a.createItem=function(){var b=f.open({animation:!0,templateUrl:"app/salesforce/view/configuration/list/create.modal.html",controller:"SalesforceCreateConfigurationCtrl"});b.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("SalesforceCreateConfigurationCtrl",["$scope","$translate","$uibModalInstance","SalesforceConfiguration","xAlert","$stateParams","channel",function(a,b,c,d,e,f,g){a.form={},a.item={},a.channels=g,a.item.channel="voice",a.item.type="Queue",a.save=function(){return d.save({accountId:f.id},a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.salesforce.view.configurations.list",{url:"/list",templateUrl:"app/salesforce/view/configuration/list/list.html",controller:"SalesforceViewConfigurationListCtrl"})}]),angular.module("xCallyShuttleApp").controller("SalesforceViewConfigurationViewCtrl",["$scope","$filter","$stateParams","$translate","socket","variable","xAlert","SalesforceAccount","SalesforceConfiguration","SalesforceField","Variable",function(a,b,c,d,e,f,g,h,i,j,k){a.$on("$destroy",function(){e.unsyncUpdates("salesforce_field")}),a.config={autoHideScrollbar:!1,theme:"dark",advanced:{updateOnContentResize:!0},setHeight:300,scrollInertia:0},a.fieldType=[{type:"string",title:"String"},{type:"variable",title:"Variable"},{type:"customVariable",title:"Custom Variable"}],a.descFieldType=[{type:"string",title:"String"},{type:"keyValue",title:"Key Value"}],a.groupVariableByGroup=function(a){switch(a.group){case"voice_queue":return"Voice: Queue";default:return"Other"}},a.initView=function(){a.configurationName="",a.subjectConfig=[],a.descriptionConfig=[],a.fieldConfig=[],a.variables=f},a.getConfiguration=function(){return i.get({accountId:c.id,id:c.configurationId}).$promise.then(function(b){a.configurationName=b.name,a.subjectConfig=b.Subject,a.descriptionConfig=b.Description,a.fieldConfig=b.Field,e.socket.on("salesforce_field:remove",function(b){_.remove(a.subjectConfig,{id:b.id}),_.remove(a.descriptionConfig,{id:b.id}),_.remove(a.fieldConfig,{id:b.id})})})["catch"](function(a){g.error(a)})},a.getCustomVariables=function(){return k.get().$promise.then(function(b){a.customVariables=b.rows})["catch"](function(a){g.error(a)})},a.getFields=function(){return h.fields({id:c.id}).$promise.then(function(c){a.accountFields=_.sortBy(b("salesforce")(c),["name"])})["catch"](function(a){g.error(a)})},a.addItem=function(b){var d={};switch(b){case"subject":case"description":d={type:"string",content:""};break;case"field":d={content:""}}return i.save({accountId:c.id,id:c.configurationId,controller:b},d).$promise.then(function(c){switch(b){case"subject":a.subjectConfig.push(c);break;case"description":a.descriptionConfig.push(c);break;case"field":a.fieldConfig.push(c)}})["catch"](function(a){g.error(a)})},a.changeType=function(b){"variable"===b.type?(b.content="",b.variableName=""):"string"===b.type?(b.VariableId=null,b.variableName=""):"customVariable"===b.type&&(b.VariableId=null,b.content=""),a.updateField(b)},a.updateField=function(a){return j.update({accountId:c.id,configurationId:c.configurationId,id:a.id},a).$promise.then(function(){})["catch"](function(a){g.error(a)})},a.removeItem=function(a){return j["delete"]({accountId:c.id,configurationId:c.configurationId,id:a.id}).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){g.error(a)})},a.changeDescType=function(b){"keyValue"===b.type?(b.content="","string"===b.keyType?(b.VariableId=null,b.variableName=""):"variable"===b.keyType?(b.keyContent="",b.VariableId=null):"customVariable"===b.keyType&&(b.keyContent="",b.variableName="")):"string"===b.type&&(b.VariableId=null,b.variableName="",b.key="",b.keyContent=""),a.updateField(b)},a.getSystemFieldOptions=function(b){if(b){var c=_.find(a.accountFields,"name",b);if(c)switch(c.type){case"picklist":return c.picklistValues;default:return}}},a.changeFieldType=function(b){b.content="",b.variableName="",b.nameField="",b.VariableId=null,a.updateField(b)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.salesforce.view.configurations.view",{url:"/view/:configurationId",templateUrl:"app/salesforce/view/configuration/view/view.html",controller:"SalesforceViewConfigurationViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("SalesforceViewCtrl",["$scope","$http","$stateParams","$translate","$location","WizardHandler","socket","xAlert","Modal","$filter","SalesforceAccount",function(a,b,c,d,e,f,g,h,i,j,k){a.initView=function(){return k.get({id:c.id}).$promise.then(function(b){a.account=b})["catch"](function(a){h.error(a)})},a.updateItem=function(){return k.update({id:c.id},a.account).$promise.then(function(){h.show(d.instant("MESSAGE_WELL_DONE")+".","success")})["catch"](function(a){h.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.salesforce.view",{url:"/view/:id",templateUrl:"app/salesforce/view/view.html",controller:"SalesforceViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.salesforce.view.account",{url:"/account",templateUrl:"app/salesforce/view/view.account.html"})}]),angular.module("xCallyShuttleApp").controller("SalesforceWizardCtrl",["$scope","$http","$location","$translate","xAlert","WizardHandler","SalesforceAccount",function(a,b,c,d,e,f,g){a.translate=d,a.initWizard=function(){a.$translate=d,a.forms={},a.item={},a.item.serverUrl=c.protocol()+"://"+location.host},a.next=function(){f.wizard().next()},a.exitValidation=function(a){return a},a.createItem=function(){return g.save(a.item).$promise.then(function(){e.show(d.instant("MESSAGE_WELL_DONE")+".","success"),c.path("/salesforce/list")})["catch"](function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.salesforce.wizard",{url:"/wizard",templateUrl:"app/salesforce/wizard/wizard.html",controller:"SalesforceWizardCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.customization",{url:"/customization",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("CustomizationGeneralViewCtrl",["$scope","gridOptions","$uibModal","FileUploader","$cookieStore","xAlert","$translate","Setting","$rootScope",function(a,b,c,d,e,f,g,h,i){a.radioSwitch={isActive:!!i.license.custom,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"};var j=a.uploader=new d({url:"api/settings/logo/main",queueLimit:1,withCredentials:!0,headers:{Authorization:"Bearer "+e.get("token")}});j.filters.push({name:"imageFilter",fn:function(a){var b="|"+a.type.slice(a.type.lastIndexOf("/")+1)+"|";return-1!=="|jpg|png|jpeg|".indexOf(b)}}),j.onSuccessItem=function(a,b){i.settings.logo=b.logo,f.show(g.instant("MESSAGE_WELL_DONE"),"success")},j.onErrorItem=function(){f.show(g.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")},j.onCompleteAll=function(){j.clearQueue()};var k=a.uploader2=new d({url:"api/settings/logo/login",queueLimit:1,withCredentials:!0,headers:{Authorization:"Bearer "+e.get("token")}});k.filters.push({name:"imageFilter",fn:function(a){var b="|"+a.type.slice(a.type.lastIndexOf("/")+1)+"|";return-1!=="|jpg|png|jpeg|".indexOf(b)}}),k.onSuccessItem=function(a,b){f.show(g.instant("MESSAGE_WELL_DONE"),"success")},k.onErrorItem=function(){f.show(g.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")},k.onCompleteAll=function(){k.clearQueue()},a.initView=function(){return h.get({id:1}).$promise.then(function(b){a.settings={defaultLogo:b.defaultLogo,defaultLoginLogo:b.defaultLoginLogo,footerWhiteLabel:b.footerWhiteLabel,defaultFooterWhiteLabel:b.defaultFooterWhiteLabel}})["catch"](function(a){f.error(a)})},a.update=function(){return h.update({id:1},a.settings).$promise.then(function(b){_.merge(i.settings,a.settings),f.show(g.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.customization.view.general",{url:"/general",templateUrl:"app/setting/customization/view/general/general.html",controller:"CustomizationGeneralViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/scripts/jquery.sparkline.min.js","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.js","assets/scripts/profile.js"]})}]}})}]),angular.module("xCallyShuttleApp").controller("CustomizationMotionBarViewCtrl",["$scope","gridOptions","$uibModal","FileUploader","$cookieStore","xAlert","$translate","Setting","$rootScope","$location",function(a,b,c,d,e,f,g,h,i,j){!i.license.preferred&&j.path("/landing"),a.radioSwitch={isActive:!!i.license.preferred,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"};var k=a.uploader=new d({url:"api/settings/logo/motionbar",queueLimit:1,withCredentials:!0,headers:{Authorization:"Bearer "+e.get("token")}});k.filters.push({name:"imageFilter",fn:function(a){var b="|"+a.type.slice(a.type.lastIndexOf("/")+1)+"|";return-1!=="|jpg|png|jpeg|".indexOf(b)}}),k.onSuccessItem=function(a,b){f.show(g.instant("MESSAGE_WELL_DONE"),"success")},k.onErrorItem=function(){f.show(g.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")},k.onCompleteAll=function(){k.clearQueue()},a.initView=function(){return h.get({id:1}).$promise.then(function(b){a.settings={defaultMotionBarLogo:b.defaultMotionBarLogo}})["catch"](function(a){f.error(a)})},a.update=function(){return h.update({id:1},a.settings).$promise.then(function(a){f.show(g.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.customization.view.motionbar",{url:"/motionbar",templateUrl:"app/setting/customization/view/motionbar/motionbar.html",controller:"CustomizationMotionBarViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/scripts/jquery.sparkline.min.js","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.js","assets/scripts/profile.js"]})}]}})}]),angular.module("xCallyShuttleApp").controller("CustomizationViewCtrl",["$scope",function(a){}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.customization.view",{url:"/view",templateUrl:"app/setting/customization/view/view.html",controller:"CustomizationViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.general",{url:"/general",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("GeneralMainViewCtrl",["$scope","xAlert","$translate","Setting",function(a,b,c,d){a.initView=function(){return d.get({id:1}).$promise.then(function(b){a.settings={agi_port:b.agi_port,min_internal:b.min_internal,min_mailbox:b.min_mailbox,securePassword:b.securePassword,mailRoutingCapacity:b.mailRoutingCapacity,chatRoutingCapacity:b.chatRoutingCapacity,logoutOnWindowClose:b.logoutOnWindowClose}})["catch"](function(a){b.error(a)})},a.update=function(){return d.update({id:1},a.settings).$promise.then(function(){b.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){b.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.general.view.main",{url:"/main",templateUrl:"app/setting/general/view/main/main.html",controller:"GeneralMainViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("GeneralViewCtrl",["$scope",function(a){}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.general.view",{url:"/view",templateUrl:"app/setting/general/view/view.html",controller:"GeneralViewCtrl"})}]),angular.module("xCallyShuttleApp").factory("License",["$resource",function(a){return a("/api/licenses/:id/:controller",{id:"@id"},{request:{method:"POST",params:{id:"request"}},update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.license",{url:"/license",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("LicenseUpdateCtrl",["$scope","$translate","$uibModalInstance","xAlert","licenseString","License",function(a,b,c,d,e,f){a.form={},a.item={license:e.value},a.update=function(){return f.update(a.item).$promise.then(function(a){d.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){d.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").controller("LicenseViewCtrl",["$scope","$rootScope","$translate","License","xAlert","$window","$uibModal",function(a,b,c,d,e,f,g){a.radioSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.initView=function(){return d.get(function(b){a.item=b.license,b.months||(a.item.months=1),a.updateRequestExpiration(),a.licenseString=b.licenseString})},a.updateRequestExpiration=function(){a.requestExpiration=moment().add(a.item.months||1,"month").format()},a.plans=[{name:"APPLICATION_MONTH_TO_MONTH",value:1},{name:"APPLICATION_YEARLY",value:12},{name:"APPLICATION_PERPETUAL",value:36}],a.submitRequest=function(){return d.request(_.assign({},a.item,{expiration:a.requestExpiration}),function(){e.show(c.instant("MESSAGE_WELL_DONE"),"success")},function(a){switch(a.status){case 304:e.show(a.statusText,"info");break;default:e.error(a)}})},a.updateLicense=function(){var b=g.open({animation:!0,templateUrl:"app/setting/license/view/update.modal.html",controller:"LicenseUpdateCtrl",resolve:{licenseString:{value:a.licenseString}}});b.result.then(function(){f.location.reload()})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.license.view",{url:"/view",templateUrl:"app/setting/license/view/view.html",controller:"LicenseViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/pricing-tables.css"]}])}]}})}]),angular.module("xCallyShuttleApp").factory("Externip",["$resource",function(a){return a("/api/network/externips/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("Localnet",["$resource",function(a){return a("/api/network/localnets/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.network",{url:"/network",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("ExternipCtrl",["$scope","$uibModal","gridOptions","Externip",function(a,b,c,d){a.initView=function(){var b={exporterCsvFilename:"network_externip.csv",columnDefs:[{name:"value"},{name:"action",buttons:[{"class":"blue-hoki",onClick:"grid.appScope.createItem(row.entity)",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(d,b,a)},a.createItem=function(c){var d=b.open({animation:!0,templateUrl:"app/setting/network/view/externip/externip.create.modal.html",controller:"ExternipCreateCtrl",resolve:{item:c}});d.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("ExternipCreateCtrl",["$scope","$translate","$uibModalInstance","$stateParams","Externip","xAlert","item",function(a,b,c,d,e,f,g){a.initModal=function(){a.form={},a.item=g||{},a.title=g?b.instant("APPLICATION_EDIT_EXTERNIP"):b.instant("APPLICATION_NEW_EXTERNIP")},a.save=function(){return g?e.update({id:a.item.id},a.item).$promise.then(function(a){f.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){f.error(a)}):e.save({},a.item).$promise.then(function(a){f.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){f.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.network.view.externip",{url:"/externip",templateUrl:"app/setting/network/view/externip/externip.html",controller:"ExternipCtrl"})}]),angular.module("xCallyShuttleApp").controller("LocalnetCtrl",["$scope","gridOptions","Localnet","$uibModal",function(a,b,c,d){a.initView=function(){var d={exporterCsvFilename:"network_localnet.csv",columnDefs:[{name:"value"},{name:"action",buttons:[{"class":"blue-hoki",onClick:"grid.appScope.createItem(row.entity)",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=b.gridOptions(c,d,a)},a.createItem=function(b){var c=d.open({animation:!0,templateUrl:"app/setting/network/view/localnet/localnet.create.modal.html",controller:"LocalnetCreateCtrl",resolve:{item:b}});c.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("LocalnetCreateCtrl",["$scope","$translate","$uibModalInstance","$stateParams","Localnet","xAlert","item",function(a,b,c,d,e,f,g){a.initModal=function(){if(a.form={},a.item=g||{},a.title=g?b.instant("APPLICATION_EDIT_LOCALNET"):b.instant("APPLICATION_NEW_LOCALNET"),g&&g.value){var c=a.item.value.split("/");c.length>1&&(a.item.address=c[0],a.item.mask=c[1])}},a.save=function(){var d=a.item.address+"/"+a.item.mask;return g?e.update({id:a.item.id},{value:d}).$promise.then(function(a){f.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){f.error(a)}):e.save({},{value:d}).$promise.then(function(a){f.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){f.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.network.view.localnet",{url:"/localnet",templateUrl:"app/setting/network/view/localnet/localnet.html",controller:"LocalnetCtrl"})}]),angular.module("xCallyShuttleApp").controller("StunaddrCtrl",["$scope","Setting","xAlert","$translate",function(a,b,c,d){a.initView=function(){return b.get({id:1}).$promise.then(function(b){a.item={stunaddr:b.stunaddr}})["catch"](function(a){c.error(a)})},a.update=function(){return b.update({id:1},a.item).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){c.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.network.view.stunaddr",{url:"/stunaddr",templateUrl:"app/setting/network/view/stunaddr/stunaddr.html",controller:"StunaddrCtrl"})}]),angular.module("xCallyShuttleApp").controller("NetworkViewCtrl",function(){}),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.network.view",{url:"/view",templateUrl:"app/setting/network/view/view.html",controller:"NetworkViewCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting",{url:"/setting",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:18}}})}]),angular.module("xCallyShuttleApp").factory("Setting",["$resource",function(a){return a("/api/settings/:id/:controller/:param",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("Smtp",["$resource",function(a){return a("/api/mail/servers/out/:id/:controller/:controller2",{id:"@id"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.smtp",{url:"/smtp",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("SmtpViewCtrl",["$scope","$stateParams","$translate","socket","MailServerOut","Setting","MailAccount","xAlert","Modal",function(a,b,c,d,e,f,g,h,i){a.initView=function(){return a.smtpDisabled=!1,a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.CONST_TIMEOUT=3e4,a.item={account:{service:!0,MailServerOut:{ssl:!1}}},a.$on("$destroy",function(){d.socket.removeAllListeners("mail_server_out:state")}),d.socket.on("mail_server_out:state",function(b){a.item&&Number(b.id)===a.item.account.MailServerOut.id&&(a.item.account.MailServerOut.state=b.state,a.item.account.MailServerOut.source=JSON.parse(b.source))}),f.get({id:"smtp"}).$promise.then(function(b){a.item.account=b})["catch"](function(b){switch(b.status){case 404:a.item.account.name=null,a.item.account.address=null,a.item.account.description="Custom account",a.item.account.MailServerOut={port:465,ssl:!0},h.show("Service SMTP server not configured.","info");break;default:h.error(b)}})},a.updateItem=function(){return a.item.account.id?(delete a.item.account.MailServerOut.state,delete a.item.account.MailServerOut.source,f.update({id:"smtp",controller:a.item.account.id},a.item.account).$promise.then(function(){h.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){h.error(a)})):f.save({id:"smtp"},{description:a.item.account.description,name:a.item.account.name,address:a.item.account.address,service:a.item.account.service,custom:!0,MailServerOut:a.item.account.MailServerOut}).$promise.then(function(b){a.item.account=b,h.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){h.error(a)})},a.test=function(){return e.get({id:a.item.account.MailServerOut.id,controller:"test"}).$promise["catch"](function(a){console.error(a)})},a["delete"]=i.confirm["delete"](function(){return f["delete"]({id:"smtp"}).$promise.then(function(){h.show(c.instant("MESSAGE_WELL_DONE")+"!","success"),a.item={account:{service:!0,name:null,address:null,description:"Custom account",MailServerOut:{port:465,ssl:!0}}}})["catch"](function(a){h.error(a)})})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.smtp.view",{url:"/view",templateUrl:"app/setting/smtp/view/view.html",controller:"SmtpViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.system",{url:"/system",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("SystemViewConsoleCtrl",["$scope","Setting","xAlert","usSpinnerService","$timeout","$translate","socket",function(a,b,c,d,e,f,g){function h(b){var c=_.findIndex(a.commandHistory.commands,function(a){return a===b});-1!==c&&a.commandHistory.commands.splice(c,1),a.commandHistory.commands.unshift(b)}a.output="<b>"+f.instant("APPLICATION_CONSOLE_WELCOME")+"</b><br/>",a.item={command:""},a.commandHistory={commands:[],index:-1},a.busy=!1,a.cmdFocus=function(){e(function(){angular.element("#command").trigger("focus")})},a.sendCmd=function(){return a.commandHistory.index=-1,a.tmp=a.item.command,a.item.command="",a.output+="<b>motion*CLI> "+a.tmp+"</b><br>",a.tmp?(h(a.tmp.trim()),a.busy=!0,d.spin("console-spinner"),b.save({controller:"asterisk"},{command:a.tmp}).$promise["catch"](function(a){c.error(a)})):void 0},g.socket.on("console:result",function(b){a.output+=b.content.replace(/(?:\r\n|\r|\n)/g,"<br />").replace("Response: Follows<br />Privilege: Command<br />","").replace(/ActionID: .[0-9]*<br \/>/,"").replace(/ActionID: .[0-9]*/,"")+"<br>",d.stop("console-spinner"),a.busy=!1,a.cmdFocus()}),g.socket.on("console:error",function(b){d.stop("console-spinner"),a.output+="command error:"+b.data.message+"<br>",a.busy=!1,a.cmdFocus()}),a.keyUp=function(b){switch(b.keyCode){case 40:a.commandHistory.commands[a.commandHistory.index-1]?a.item.command=a.commandHistory.commands[--a.commandHistory.index]:(a.item.command="",a.commandHistory.index=-1);break;case 38:a.commandHistory.commands[a.commandHistory.index+1]&&(a.item.command=a.commandHistory.commands[++a.commandHistory.index]);break;case 37:break;case 39:break;default:a.commandHistory.index=-1}},e(function(){angular.element("#command").trigger("focus"),d.stop("console-spinner")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.system.view.console",{url:"/console",templateUrl:"app/setting/system/view/console/console.html",controller:"SystemViewConsoleCtrl"})}]),angular.module("xCallyShuttleApp").controller("SystemViewGeneralCtrl",["$scope","$stateParams","$translate","socket","Setting","xAlert","usSpinnerService",function(a,b,c,d,e,f,g){function h(b){a.system.memory={labels:_.keys(b.memory.details),values:_.values(_.map(b.memory.details,function(a){return Math.round(a/1024)})),Total:Math.round(b.memory.Total/1024)},g.stop("memory-spinner"),a.system.disks=[],_.forEach(b.disks,function(b){a.system.disks.push({mount:b.mount,size:Number((b.size/1048576).toFixed(2)),values:_.values(_.map(b.details,function(a){return Number((a/1048576).toFixed(2))})),labels:_.keys(b.details)})}),a.system.mount=a.system.disks[0],g.stop("disk-spinner"),a.system.cpu={motion:Math.round(b.cpu.motion),cores:[]},_.forEach(b.cpu.cores,function(b){delete b.nice,delete b.irq,a.system.cpu.cores.push({labels:_.keys(b),values:_.values(b),colours:["#803690","#DCDCDC","#00ADF9"]})}),g.stop("cpu-spinner"),a.loading=!1}a.system={mount:void 0},a.initView=function(){return g.spin("memory-spinner"), +g.spin("disk-spinner"),g.spin("cpu-spinner"),a.loading=!0,e.get({controller:"system"}).$promise.then(function(a){h(a)})["catch"](function(b){g.stop("memory-spinner"),g.stop("disk-spinner"),g.stop("cpu-spinner"),a.loading=!1,f.error(b)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.system.view.general",{url:"/general",templateUrl:"app/setting/system/view/general/general.html",controller:"SystemViewGeneralCtrl"})}]),angular.module("xCallyShuttleApp").controller("SystemViewLogsCtrl",["$scope","$stateParams","$translate","socket","Setting","xAlert","usSpinnerService",function(a,b,c,d,e,f,g){a.logfiles=["access","motion-info","motion-error","dashboard-info","dashboard-error","agi-info","agi-error","ami-info","ami-error","api-info","api-error","chat-info","chat-error","mail-info","mail-error","fax-info","fax-error","sms-info","sms-error","openchannel-info","openchannel-error"],a.item={filename:"access"},a.getLog=function(){return a.log="",a.loading=!0,g.spin("logs-spinner"),e.get({controller:"logs",filename:a.item.filename}).$promise.then(function(b){a.log=b.log,a.loading=!1,g.stop("logs-spinner")})["catch"](function(b){g.stop("logs-spinner"),a.loading=!1,f.error(b)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.system.view.logs",{url:"/logs",templateUrl:"app/setting/system/view/logs/logs.html",controller:"SystemViewLogsCtrl"})}]),angular.module("xCallyShuttleApp").controller("SystemViewCtrl",["$scope",function(a){}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.system.view",{url:"/view",templateUrl:"app/setting/system/view/view.html",controller:"SystemViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("UpdateListCtrl",["$scope","gridOptions","$uibModal","$location","Update","xAlert","$log","$translate","$state",function(a,b,c,d,e,f,g,h,i){a.initCounter=function(){a.$on("timer-stopped",function(a,b){f.show(h.instant("MESSAGE_UPDATE_COMPLETED"),"success"),i.go("main.setting.updates.list")})},a.initView=function(){return e.get({controller:"current"}).$promise.then(function(b){a.currentVersion=b.currentVersion,a.latestVersion=b.latestVersion})["catch"](function(a){f.error(a)})},a.pull=function(){var b=c.open({animation:!0,templateUrl:"app/setting/update/list/list.pull.html",controller:"UpdateListPullCtrl"});b.result.then(function(){return d.path("/setting/updates/landing"),e.pull().$promise.then(function(b){var c=!1;b&&(b.summary&&_.forOwn(b.summary,function(a){a&&(c=!0)}),(b.insertions&&!_.isEmpty(b.insertions)||b.deletions&&!_.isEmpty(b.deletions))&&(c=!0)),c?(a.$broadcast("timer-stop"),document.getElementsByTagName("timer")[0].stop()):(f.show(h.instant("MESSAGE_NO_UPDATES"),"success"),d.path("/setting/updates/list"))})["catch"](function(a){console.log(a),f.error(a),d.path("/setting/updates/list")})},function(){g.info("Modal dismissed at: "+new Date)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.updates.list",{url:"/list",templateUrl:"app/setting/update/list/list.html",controller:"UpdateListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"css",insertBefore:"#ng_load_plugins_before",files:["assets/css/pricing-table.css"]}])}]}}).state("main.setting.updates.landing",{url:"/landing",templateUrl:"app/setting/update/list/landing.html",controller:"UpdateListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"css",insertBefore:"#ng_load_plugins_before",files:["assets/css/error.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("UpdateListPullCtrl",["$scope","$uibModalInstance",function(a,b){a.modal={dismissable:!0,title:"Confirm Update",html:"Are you sure you want to update?",buttons:[{classes:"btn btn-success",text:"Update",click:function(){b.close()}},{classes:"btn default",text:"Cancel",click:function(){b.dismiss("cancel")}}]}}]),angular.module("xCallyShuttleApp").factory("Update",["$resource",function(a){return a("/api/updates/:id/:controller",{id:"@id"},{pull:{method:"GET",params:{id:"pull"}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.updates",{url:"/updates",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("SquareOdbcListCtrl",["$scope","$uibModal","$translate","SquareOdbc","gridOptions","xAlert",function(a,b,c,d,e,f){a.initView=function(){var b={exporterCsvFilename:"odbc.csv",columnDefs:[{name:"name"},{name:"dsn",displayName:"APPLICATION_ODBC"},{name:"description"},{name:"action",width:250,buttons:[{"class":"blue-hoki",href:"/square/odbc/view/{{row.entity.id}}/settings",name:"settings"},{"class":"green-jungle",name:"check",onClick:"grid.appScope.checkConnection(row.entity.id)"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=e.gridOptions(d,b,a)},a.createItem=function(){var c=b.open({animation:!0,templateUrl:"app/square/odbc/list/list.create.modal.html",controller:"SquareOdbcListCreateCtrl"});c.result.then(function(){a.gridOptions.getPage()})},a.checkConnection=function(a){return d.get({id:a,controller:"check"}).$promise.then(function(){f.show(c.instant("MESSAGE_CONNECTION_VERIFIED"),"success")})["catch"](function(){f.show(c.instant("MESSAGE_CONNECTION_INVALID"),"danger")})}}]),angular.module("xCallyShuttleApp").controller("SquareOdbcListCreateCtrl",["$scope","$translate","$uibModalInstance","SquareOdbc","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.item.dsn||(a.item.dsn="DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion"),a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.odbc.list",{url:"/list",templateUrl:"app/square/odbc/list/list.html",controller:"SquareOdbcListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.odbc",{url:"/odbc",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").factory("SquareOdbc",["$resource",function(a){return a("/api/square/odbc/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("SquareOdbcViewCtrl",["$scope","$translate","$stateParams","SquareOdbc","xAlert",function(a,b,c,d,e){a.odbc={},a.getOdbc=function(){return d.get({id:c.id}).$promise.then(function(b){a.odbc=b})["catch"](function(a){e.error(a)})},a.updateOdbc=function(){var f=angular.copy(a.odbc);return d.update({id:c.id},f).$promise.then(function(){e.show(b.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.odbc.view",{url:"/view/:id",templateUrl:"app/square/odbc/view/view.html",controller:"SquareOdbcViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.square.odbc.view.settings",{url:"/settings",templateUrl:"app/square/odbc/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("SquareProjectListCtrl",["$scope","$uibModal","SquareProject","gridOptions","uiGridConstants",function(a,b,c,d,e){a.initView=function(){var b={exporterCsvFilename:"projects.csv",columnDefs:[{name:"name"},{name:"description"},{name:"createdAt",displayName:"APPLICATION_CREATED_AT",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.createdAt | date:'yyyy-MM-dd HH:mm:ss'}}</div>",filterHeaderTemplate:'<div class="ui-grid-filter-container row"><div ng-repeat="colFilter in col.filters" class="col-md-6 col-md-offset-0 col-sm-5 col-sm-offset-0 col-xs-5 col-xs-offset-0"><div custom-grid-date-filter-header></div></div></div>',filters:[{name:"From",condition:e.filter.GREATER_THAN_OR_EQUAL,hasTime:!0},{name:"To",condition:e.filter.LESS_THAN_OR_EQUAL,hasTime:!0}]},{name:"updatedAt",displayName:"APPLICATION_UPDATED_AT",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.updatedAt | date:'yyyy-MM-dd HH:mm:ss'}}</div>",filterHeaderTemplate:'<div class="ui-grid-filter-container row"><div ng-repeat="colFilter in col.filters" class="col-md-6 col-md-offset-0 col-sm-5 col-sm-offset-0 col-xs-5 col-xs-offset-0"><div custom-grid-date-filter-header></div></div></div>',filters:[{name:"From",condition:e.filter.GREATER_THAN_OR_EQUAL,hasTime:!0},{name:"To",condition:e.filter.LESS_THAN_OR_EQUAL,hasTime:!0}]},{name:"action",width:160,buttons:[{"class":"blue-hoki",href:"/square/projects/view/{{row.entity.id}}",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){var c=b.open({animation:!0,templateUrl:"app/square/project/list/list.create.modal.html",controller:"SquareProjectListCreateCtrl"});c.result.then(function(b){console.log(b),a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("SquareProjectListCreateCtrl",["$scope","$translate","$uibModalInstance","$location","SquareProject","xAlert",function(a,b,c,d,e,f){a.form={},a.item={},a.save=function(){return e.save(a.item).$promise.then(function(a){c.close(a),d.path("/square/projects/view/"+a.id)})["catch"](function(a){f.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.projects.list",{url:"/list",templateUrl:"app/square/project/list/list.html",controller:"SquareProjectListCtrl",authenticate:!0})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.projects",{url:"/projects",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").factory("SquareProject",["$resource",function(a){return a("/api/square/projects/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("SquareProjectViewCtrl",["$scope","$stateParams","Auth","xAlert","SquareProject","socket","$translate","$log","$uibModal",function(a,b,c,d,e,f,g,h,i){a.squareProject={},a.$on("$destroy",function(){f.unsyncUpdates("square_project")}),a.getProject=function(){return e.get({id:b.id}).$promise.then(function(b){a.squareProject=b,angular.element(document).ready(function(){window.onerror=function(a,b,c){try{if(null!==a&&-1!==a.indexOf("Script error."));else{var e=new Image;e.src="assets/plugins/mxgraph/images/1x1.png?msg="+encodeURIComponent(a)+"&url="+encodeURIComponent(b)+"&lnum="+encodeURIComponent(c)}}catch(f){d.error(f)}},b.token=c.getToken();var a=new EditorUi(new Editor);a.openString(b.preproduction,b.name,b),a.editor.graphChangeListener=function(a,b){var c=b.properties.rtChange||!1;c||(this.modified=!0)}}),f.socket.on("square_project:save",function(c){c.id===b.id&&(a.squareProject=_.merge(a.squareProject,c))})})["catch"](function(a){d.error(a)})},a.editNotes=function(){var c=i.open({animation:!0,templateUrl:"app/square/project/view/projectNotes.modal.html",controller:["$scope","$uibModalInstance","notes",function(a,b,c){a.notes=c,a.close=function(){b.close(a.notes)},a.cancel=function(){b.dismiss("cancel")}}],resolve:{notes:{value:a.squareProject.notes}}});c.result.then(function(a){return e.update({id:b.id},{notes:a.value}).$promise.then(function(){d.show(g.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){d.error(a)})},function(){h.info("Modal dismissed at: "+new Date)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.projects.view",{url:"/view/:id",templateUrl:"app/square/project/view/view.html",controller:"SquareProjectViewCtrl",authenticate:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",serie:!0,cache:!1,files:["assets/plugins/mxgraph/css/common.css","assets/plugins/mxgraph/css/explorer.css","assets/plugins/mxgraph/styles/grapheditor.css","assets/plugins/mxgraph/styles/custom.css","assets/plugins/square/js/custom.js","assets/plugins/mxgraph/js/mxClient.js","assets/plugins/square/js/Editor.js","assets/plugins/square/js/Graph.js","assets/plugins/square/js/EditorUi.js","assets/plugins/square/js/Actions.js","assets/plugins/square/js/Menus.js","assets/plugins/square/js/Sidebar.js","assets/plugins/square/js/Toolbar.js","assets/plugins/square/js/Dialogs.js"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.realtime",{url:"/realtime",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:14}}})}]),angular.module("xCallyShuttleApp").factory("ReportSquare",["$resource",function(a){return a("/api/report/square/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("ReportSquareDetail",["$resource",function(a){return a("/api/report/square/details/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("SquareRealtimeViewGeneralCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","ReportSquare","usSpinnerService","$q","uiGridConstants",function(a,b,c,d,e,f,g,h,i,j){function k(b){return h.spin("spinner-grid"),g.get(m).$promise.then(function(b){a.gridOptions.totalItems=b.count,a.gridOptions.data=b.rows})["catch"](function(a){f.error(a)})["finally"](function(){b&&l(),h.stop("spinner-grid")})}function l(){e.socket.on("report_square:save",function(b){if(b.leaveAt){var c=_.remove(a.gridOptions.data,{id:b.id});c&&k()}else{var d=_.find(a.gridOptions.data,{id:b.id});if(!d&&a.gridOptions.data.length<m.limit){var e=_.clone(m);if(_.forEach(["offset","limit","controller","order"],function(a){delete e[a]}),_.isEmpty(e))a.gridOptions.data.push(b);else{var f=!0;_.forOwn(e,function(a,c){_.includes(b[c],a)||(f=!1)}),f&&a.gridOptions.data.push(b)}}}})}var m={controller:"realtime",offset:0,limit:25};a.moment=moment,a.init=function(){a.gridOptions={enableGridMenu:!0,headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:25,useExternalPagination:!0,useExternalSorting:!0,useExternalFiltering:!0,showTreeExpandNoChildren:!0,columnDefs:[{name:"uniqueid"},{name:"callerid"},{name:"extension"},{name:"project_name",displayName:"APPLICATION_PROJECT",headerCellFilter:"translate"},{name:"joinAt",displayName:"APPLICATION_ELAPSED_TIME",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><css-timer start-time="row.entity.joinAt"></css-timer></div>',enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1}],data:[],gridMenuTitleFilter:function(a){var b=i.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){n(a.gridApi.core.getVisibleRows(a.gridApi.grid).length)}),a.gridApi.core.on.sortChanged(a,function(a,b){0===b.length?m.order=null:m.order=b[0].name+" "+b[0].sort.direction.toUpperCase(),k()}),a.gridApi.pagination.on.paginationChanged(a,function(a,b){m.offset=(a-1)*b,m.limit=b,k()}),a.gridApi.core.on.filterChanged(a,function(){var a=this.grid;a.columns.forEach(function(a){a.filters[0].term?m[a.name]=a.filters[0].term:delete m[a.name]}),k()})}},k(!0)};var n=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("report_square")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.realtime.view.general",{url:"/general",templateUrl:"app/square/realtime/view/general/general.html",controller:"SquareRealtimeViewGeneralCtrl"})}]),angular.module("xCallyShuttleApp").controller("SquareRealtimeViewCtrl",["$scope",function(a){}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.realtime.view",{url:"/view",templateUrl:"app/square/realtime/view/view.html",controller:"SquareRealtimeViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("SquareRecordingListCtrl",["$scope","SquareRecording","gridOptions","uiGridConstants",function(a,b,c,d){a.SquareRecording=b;a.initView=function(){var e={exporterCsvFilename:"recordings.csv",rowHeight:30,columnDefs:[{name:"uniqueid"},{name:"callerid",displayName:"APPLICATION_CALLERIDNUM"},{name:"filename"},{name:"extension"},{name:"projectName",displayName:"APPLICATION_PROJECT"},{name:"createdAt",displayName:"APPLICATION_DATE",cellFilter:"date:'yyyy-MM-dd HH:mm'",filterHeaderTemplate:'<div class="ui-grid-filter-container row"><div ng-repeat="colFilter in col.filters" class="col-md-6 col-md-offset-0 col-sm-5 col-sm-offset-0 col-xs-5 col-xs-offset-0"><div custom-grid-date-filter-header></div></div></div>',filters:[{name:"From",condition:d.filter.GREATER_THAN_OR_EQUAL,hasTime:!0},{name:"To",condition:d.filter.LESS_THAN_OR_EQUAL,hasTime:!0}],sort:{direction:d.DESC,priority:0}},{name:"audio",displayName:"",width:100,enableSorting:!1,enableFiltering:!1,cellClass:"ui-grid-vcenter",cellTemplate:"<div><audio-file-download data-ng-if=\"row.entity.savePath.split('.').pop() == 'wav'\" params=\"{id:row.entity.id,controller:'stream'}\" resource=\"grid.appScope.SquareRecording\"></audio-file-download><span data-ng-if=\"row.entity.value.split('.').pop() == 'gsm'\" title=\"{{'MESSAGE_GSM_PREVIEW_NOT_SUPPORTED' | translate}}\">{{'MESSAGE_GSM_PREVIEW_NOT_SUPPORTED' | translate}}</span></div>"},{name:"action",width:80,buttons:[{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.filename || row.entity.uniqueid, row.entity.id)"},{directive:"<motion-file-download params=\"{id:row.entity.id,controller:'stream'}\" resource=\"grid.appScope.SquareRecording\" mimetype=\"'audio/'+row.entity.value.split('.').pop()\" btnclass=\"btn btn-xs blue-hoki\" filename=\"(row.entity.filename || row.entity.uniqueid)+'.'+row.entity.savePath.split('.').pop()\"></motion-file-download>"}]}]};a.gridOptions=c.gridOptions(b,e,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.recordings.list",{url:"/list",templateUrl:"app/square/recording/list/list.html",controller:"SquareRecordingListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.recordings",{url:"/recordings",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").factory("SquareRecording",["$resource",function(a){return a("/api/square/recordings/:id/:controller",{id:"@id"},{update:{method:"PUT"},patch:{method:"PATCH"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square",{url:"/square",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:14}}})}]),angular.module("xCallyShuttleApp").factory("Agent",["$resource",function(a){return a("/api/agents/:id/:controller/:controller1/:controller2/:controller3",{id:"@id"},{changePassword:{method:"PUT",params:{controller:"password"}},update:{method:"PUT"},patch:{method:"PATCH"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.agents",{url:"/agents",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:4}}})}]),angular.module("xCallyShuttleApp").controller("AgentListCtrl",["$scope","$timeout","Agent","Auth","gridOptions",function(a,b,c,d,e){a.initView=function(){a.Auth=d;var b={exporterCsvFilename:"agents.csv",columnDefs:[{name:"fullname"},{name:"name",displayName:"APPLICATION_USERNAME"},{name:"internal"},{name:"email"},{name:"description"},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/staff/agents/view/{{row.entity.id}}/account",name:"profile"},{"class":"green-meadow",href:"/staff/agents/view/{{row.entity.id}}/queues/voice",name:"queues"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.fullname, row.entity.id)"}]}]};a.gridOptions=e.gridOptions(c,b,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.agents.list",{url:"/list",templateUrl:"app/staff/agent/list/list.html",controller:"AgentListCtrl",data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:4}}})}]),angular.module("xCallyShuttleApp").controller("AgentViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","$cookieStore","Agent","FileUploader","Auth","MailQueue","User","VoiceQueue","ChatQueue","FaxQueue","SmsQueue","OpenChannelQueue","Setting",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){a.Auth=i,a.forms={},a.params={penalty:0},a.radioSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.recordSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"};var r=function(b){return{select:function(c,d){return g.save(c,{values:d,penalty:a.params.penalty}).$promise.then(function(){b()})["catch"](function(a){console.log(a)})},deselect:function(a){return g["delete"](a).$promise.then(function(){b()})["catch"](function(a){console.log(a)})}}};a.initVoiceQueues=function(){var b={},c={};return a.penalty=0,l.get().$promise.then(function(a){return b.queues=_.map(a.rows,function(a){return{name:a.name}}),g.get({id:e.id,controller:"voice",controller2:"queues"}).$promise}).then(function(a){c.queues=_.map(a.rows,function(a){return{name:a.name,penalty:a.UserHasVoiceQueue.penalty}})}).then(function(){ComponentsDropdowns.bindAgent(b,c,"voice",e.id,r,a.initVoiceQueues)})["catch"](function(a){console.error(a)})},a.initChatQueues=function(){var b={},c={};return a.penalty=0,m.get().$promise.then(function(a){return b.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name}}),g.get({id:e.id,controller:"chat",controller2:"queues"}).$promise}).then(function(a){c.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name,penalty:a.UserHasChatQueue.penalty}})}).then(function(){ComponentsDropdowns.bindAgent(b,c,"chat",e.id,r,a.initChatQueues)})["catch"](function(a){console.error(a)})},a.initMailQueues=function(){var b={},c={};return a.penalty=0,j.get().$promise.then(function(a){return b.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name}}),g.get({id:e.id,controller:"mail",controller2:"queues"}).$promise}).then(function(a){c.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name,penalty:a.UserHasMailQueue.penalty}})}).then(function(){ComponentsDropdowns.bindAgent(b,c,"mail",e.id,r,a.initMailQueues)})["catch"](function(a){console.error(a)})},a.initSmsQueues=function(){var b={},c={};return a.penalty=0,o.get().$promise.then(function(a){return b.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name}}),g.get({id:e.id,controller:"sms",controller2:"queues"}).$promise}).then(function(a){c.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name,penalty:a.UserHasSmsQueue.penalty}})}).then(function(){ComponentsDropdowns.bindAgent(b,c,"sms",e.id,r,a.initSmsQueues)})["catch"](function(a){console.error(a)})},a.initFaxQueues=function(){var b={},c={};return a.penalty=0,n.get().$promise.then(function(a){return b.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name}}),g.get({id:e.id,controller:"fax",controller2:"queues"}).$promise}).then(function(a){c.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name,penalty:a.UserHasFaxQueue.penalty}})}).then(function(){ComponentsDropdowns.bindAgent(b,c,"fax",e.id,r,a.initFaxQueues)})["catch"](function(a){console.error(a)})},a.initOpenchannelQueues=function(){var b={},c={};return a.penalty=0,p.get().$promise.then(function(a){return b.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name}}),g.get({id:e.id,controller:"openchannel",controller2:"queues"}).$promise}).then(function(a){c.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name,penalty:a.UserHasOpenchannelQueue.penalty}})}).then(function(){ComponentsDropdowns.bindAgent(b,c,"openchannel",e.id,r,a.initOpenchannelQueues)})["catch"](function(a){console.error(a)})},a.updatePassword=function(){var b={newPassword:a.agent.newPwd};return i.isAgent()?b.oldPassword=a.agent.currentPwd:b.id=e.id,k.changePassword(b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success"),a.agent.newPwd="",a.agent.reNewPwd="",a.agent.currentPwd="",a.forms.changePwd.$setPristine(),a.forms.changePwd.$setUntouched()})["catch"](function(a){c.error(a)})};var s=a.uploader=new h({url:"api/users/"+e.id+"/avatar",queueLimit:1,withCredentials:!0,headers:{Authorization:"Bearer "+f.get("token")}});s.filters.push({name:"imageFilter",fn:function(a){var b="|"+a.type.slice(a.type.lastIndexOf("/")+1)+"|";return-1!=="|jpg|png|jpeg|".indexOf(b)}}),s.onSuccessItem=function(b,e){a.agent.userpic=e.userpic,a.agent.id===i.getCurrentUser().id&&(i.getCurrentUser().userpic=e.userpic),c.show(d.instant("MESSAGE_WELL_DONE"),"success")},s.onErrorItem=function(){c.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")},s.onCompleteAll=function(){s.clearQueue()},a.initView=function(){return g.get({id:e.id}).$promise.then(function(b){return a.agent=b,a.agent.transport=a.agent.transport?a.agent.transport.split(","):[],a.agent.allow=a.agent.allow?a.agent.allow.split(";"):[],a.agent.nat=a.agent.nat?a.agent.nat.split(","):[],q.get({id:1}).$promise}).then(function(b){a.setting=b})["catch"](function(a){c.error(a)})},a.patchItem=function(){return g.update({id:e.id},{chatCapacity:a.agent.chatCapacity,mailCapacity:a.agent.mailCapacity,faxCapacity:a.agent.faxCapacity,smsCapacity:a.agent.smsCapacity,openchannelCapacity:a.agent.openchannelCapacity}).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){c.error(a)})},a.updateItem=function(){var b=angular.copy(a.agent);return delete b.password,delete b.md5secret,b.transport=b.transport.join(","),b.allow=b.allow.join(";"),b.nat=b.nat.join(","),g.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){c.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.agents.view",{url:"/view/:id",templateUrl:"app/staff/agent/view/view.html",controller:"AgentViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]},data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.account",{url:"/account",templateUrl:"app/staff/agent/view/view.account.html",data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:4}},resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/scripts/jquery.sparkline.min.js","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.js","assets/scripts/profile.js"]})}]}}).state("main.staff.agents.view.voice",{url:"/voice",templateUrl:"app/staff/agent/view/view.voice.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.chat",{url:"/chat",templateUrl:"app/staff/agent/view/view.chat.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.mail",{url:"/mail",templateUrl:"app/staff/agent/view/view.mail.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.fax",{url:"/fax",templateUrl:"app/staff/agent/view/view.fax.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.sms",{url:"/sms",templateUrl:"app/staff/agent/view/view.sms.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.openchannel",{url:"/openchannel",templateUrl:"app/staff/agent/view/view.openchannel.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.motionbar",{url:"/motionbar",templateUrl:"app/staff/agent/view/view.motionbar.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.queues",{url:"/queues",templateUrl:"app/staff/agent/view/view.queues.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}},cache:!1,serie:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}}).state("main.staff.agents.view.queues.voice",{url:"/voice",templateUrl:"app/staff/agent/view/view.queues.voice.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:7}}}).state("main.staff.agents.view.queues.chat",{url:"/chat",templateUrl:"app/staff/agent/view/view.queues.chat.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:8}}}).state("main.staff.agents.view.queues.mail",{url:"/mail",templateUrl:"app/staff/agent/view/view.queues.mail.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:9}}}).state("main.staff.agents.view.queues.fax",{url:"/fax",templateUrl:"app/staff/agent/view/view.queues.fax.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:10}}}).state("main.staff.agents.view.queues.sms",{url:"/sms",templateUrl:"app/staff/agent/view/view.queues.sms.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:11}}}).state("main.staff.agents.view.queues.openchannel",{url:"/openchannel",templateUrl:"app/staff/agent/view/view.queues.openchannel.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:20}}})}]),angular.module("xCallyShuttleApp").controller("AgentWizardCtrl",["$scope","$rootScope","$location","$translate","$http","Agent","VoiceQueue","ChatQueue","MailQueue","SmsQueue","FaxQueue","OpenChannelQueue","Setting","xAlert","WizardHandler",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){a.maxAmount=1e3,a._data={voice:{queues:[]},chat:{queues:[]},mail:{queues:[]},sms:{queues:[]},fax:{queues:[]},openchannel:{queues:[]}},a._agent=angular.copy(a._data),a.forms={info:void 0,voice:void 0},a.item={role:"agent",allow:["alaw","ulaw","gsm"],transport:["udp"],context:"from-sip"},a.next=function(){o.wizard().next()},a.getAmount=function(){return m.get({controller:"internal",internal:a.item.minInternal}).$promise.then(function(b){a.item.minInternal=Number(b.value),a.maxAmount=b.range||1e3})["catch"](function(a){n.error(a)})},a.exitValidation=function(a){return a},a.getFirstFreeInternal=function(){return m.get({controller:"internal"}).$promise.then(function(b){return a.internal=b,a.item.internal=b.value,a.item.minInternal=b.value,a.maxAmount=b.range||1e3,m.get({id:1}).$promise}).then(function(b){a.setting=b})["catch"](function(a){n.error(a)})},a.createItem=function(){var b=angular.copy(a.item);return delete b.minInternal,b.transport&&(b.transport=b.transport.join(",")),a.item.allow&&(b.allow=b.allow.join(";")),b.channels=a._agent,f.save(b).$promise.then(function(a){c.path("/staff/agents/view/"+a.id+"/queues/voice")})["catch"](function(a){console.log(a),n.error(a); +})},a.createItems=function(){var b=angular.copy(a.item);return delete b.internal,b.transport&&(b.transport=b.transport.join(",")),b.allow&&(b.allow=b.allow.join(";")),f.save({id:"bulk"},b).$promise.then(function(){c.path("/staff/agents/list")})["catch"](function(a){console.log(a),n.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.agents.wizard",{url:"/wizard",templateUrl:"app/staff/agent/wizard/wizard.html",controller:"AgentWizardCtrl",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}},resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}}).state("main.staff.agents.bulk",{url:"/bulk",templateUrl:"app/staff/agent/wizard/wizard-bulk.html",controller:"AgentWizardCtrl",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff",{url:"/staff",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("TeamCreateCtrl",["$scope","$uibModalInstance","Team","xAlert",function(a,b,c,d){a.form={},a.item={},a.ok=function(){return c.save(a.item).$promise.then(function(){b.close(a.item)})["catch"](function(a){d.error(a)})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("TeamListCtrl",["$scope","Team","gridOptions","$uibModal",function(a,b,c,d){a.initView=function(){var d={exporterCsvFilename:"teams.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:100,buttons:[{"class":"{{row.entity.defaultEntry ? 'blue-hoki disabled' : 'blue-hoki'}}",href:"/staff/teams/view/{{row.entity.id}}/settings",name:"profile"},{"class":"{{row.entity.defaultEntry ? 'green-turquoise disabled' : 'green-turquoise'}}",name:"agents",href:"/staff/teams/view/{{row.entity.id}}/agents"},{"class":"{{row.entity.defaultEntry ? 'red-sunglo disabled' : 'red-sunglo'}}",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.createItem=function(){d.open({animation:!0,templateUrl:"app/staff/team/list/create.modal.html",controller:"TeamCreateCtrl"}).result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.teams.list",{url:"/list",templateUrl:"app/staff/team/list/list.html",controller:"TeamListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Team",["$resource",function(a){return a("/api/teams/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.teams",{url:"/teams",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin"],redirectTo:"landing"}}})}]),angular.module("xCallyShuttleApp").controller("TeamViewCtrl",["$scope","$http","$stateParams","$translate","Team","Agent","xAlert",function(a,b,c,d,e,f,g){var h=function(){return{select:function(b){return console.log("agents",b),e.save({id:a.team.id,controller:"agents"},{agents:b})},deselect:function(b){return e["delete"]({id:a.team.id,controller:"agents",agents:b})}}};a.initView=function(){return e.get({id:c.id}).$promise.then(function(b){a.team=b})["catch"](function(a){g.error(a)})},a.initAgents=function(){return f.get().$promise.then(function(b){return a.agents=b.rows,e.get({id:c.id,controller:"agents"}).$promise}).then(function(b){ComponentsDropdowns.bindTeam(_.map(b.rows,"id"),_.map(a.agents,function(a){return{id:a.id,name:a.name,fullname:a.fullname,internal:a.internal}}),h)})["catch"](function(a){g.error(a)})},a.updateItem=function(){var b=angular.copy(a.team);return e.update({id:c.id},b).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){g.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.teams.view",{url:"/view/:id",templateUrl:"app/staff/team/view/view.html",controller:"TeamViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.staff.teams.view.agents",{url:"/agents",templateUrl:"app/staff/team/view/view.agents.html",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]}])}]}}).state("main.staff.teams.view.settings",{url:"/settings",templateUrl:"app/staff/team/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("TelephoneListCtrl",["$scope","Telephone","gridOptions",function(a,b,c){a.initView=function(){var d={exporterCsvFilename:"telephones.csv",columnDefs:[{name:"fullname"},{name:"name"},{name:"internal"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/staff/telephones/view/{{row.entity.id}}/account",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.fullname, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.telephones.list",{url:"/list",templateUrl:"app/staff/telephone/list/list.html",controller:"TelephoneListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").factory("Telephone",["$resource",function(a){return a("/api/telephones/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.telephones",{url:"/telephones",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin"],redirectTo:"landing"}}})}]),angular.module("xCallyShuttleApp").controller("TelephoneViewCtrl",["$scope","$http","$stateParams","$translate","$cookieStore","Auth","xAlert","Telephone","Setting","User",function(a,b,c,d,e,f,g,h,i,j){a.initView=function(){return a.Auth=f,a.forms={},h.get({id:c.id}).$promise.then(function(b){return delete b.password,a.item=b,a.item.transport=a.item.transport?a.item.transport.split(","):[],a.item.allow=a.item.allow?a.item.allow.split(";"):[],i.get({id:1}).$promise}).then(function(b){a.setting=b})["catch"](function(a){g.error(a)})},a.updateItem=function(){var b=angular.copy(a.item);return b.transport=b.transport.join(","),b.allow=b.allow.join(";"),h.update(b).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){g.error(a)})},a.updatePassword=function(){var b={newPassword:a.item.newPwd,id:c.id};return j.changePassword(b).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE"),"success"),a.item.newPwd="",a.item.reNewPwd="",a.forms.changePwd.$setPristine(),a.forms.changePwd.$setUntouched()})["catch"](function(a){g.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.telephones.view",{url:"/view/:id",templateUrl:"app/staff/telephone/view/view.html",controller:"TelephoneViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.staff.telephones.view.account",{url:"/account",templateUrl:"app/staff/telephone/view/view.account.html",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css","assets/scripts/jquery.sparkline.min.js","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.js","assets/scripts/profile.js"]})}]}}).state("main.staff.telephones.view.voice",{url:"/voice",templateUrl:"app/staff/telephone/view/view.voice.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").controller("TelephoneWizardCtrl",["$scope","$http","$location","WizardHandler","xAlert","$translate","Telephone","Setting",function(a,b,c,d,e,f,g,h){a.forms={},a.item={allow:["alaw","ulaw","gsm"],transport:["udp"],context:"from-sip"},a.next=function(){d.wizard().next()},a.exitValidation=function(a){return a},a.getFirstFreeInternal=function(){return h.get({controller:"internal"}).$promise.then(function(b){return a.item.internal=b.value,h.get({id:1}).$promise}).then(function(b){a.setting=b})["catch"](function(a){e.error(a)})},a.createItem=function(){var b=angular.copy(a.item);return b.transport&&(b.transport=b.transport.join(",")),a.item.allow&&(b.allow=b.allow.join(";")),g.save(b).$promise.then(function(){c.path("/staff/telephones/list")})["catch"](function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.telephones.wizard",{url:"/wizard",templateUrl:"app/staff/telephone/wizard/wizard.html",controller:"TelephoneWizardCtrl"})}]),angular.module("xCallyShuttleApp").controller("UserListCtrl",["$scope","$timeout","User","Auth","gridOptions",function(a,b,c,d,e){function f(a){if(a){var b=_.words(a),c=_.map(b,function(a){return a?a[0]:""});return c.join("").toUpperCase()}return!1}a.getUserAvatar=function(a,c,d){b(function(){angular.element("#userImg"+a).avatar({useGravatar:!1,initials:d?[]:f(c),fallbackImage:"api/users/avatar/"+d,size:80})})},a.isAdmin=function(a){return"admin"===a},a.initView=function(){var b={exporterCsvFilename:"users.csv",columnDefs:[{name:"fullname"},{name:"name",displayName:"APPLICATION_USERNAME"},{name:"internal"},{name:"email"},{name:"description"},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/staff/users/view/{{row.entity.id}}/account",name:"profile"},{"class":"green-meadow",href:"/staff/users/view/{{row.entity.id}}/permit/voice",name:"permits",hide:"grid.appScope.isAdmin(row.entity.role)"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.fullname, row.entity.id)"}]}]};a.gridOptions=e.gridOptions(c,b,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.users.list",{url:"/list",templateUrl:"app/staff/user/list/list.html",controller:"UserListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Module",["$resource",function(a){return a("/api/modules/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("User",["$resource",function(a){return a("/api/users/:id/:controller/:controller2/:controller3",{id:"@id"},{changePassword:{method:"PUT",params:{controller:"password"}},update:{method:"PUT"},me:{method:"GET",params:{id:"me"}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.users",{url:"/users",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("UserViewCtrl",["$scope","$stateParams","$cookieStore","$translate","FileUploader","User","Auth","xAlert","MailQueue","VoiceQueue","ChatQueue","FaxQueue","SmsQueue","OpenChannelQueue","Team","Module","Setting","$location",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){function s(a,b){var c,d,e=b.length;for(c=0;e>c;c++){if(b[c].id===a)return b[c];if(b[c].SubModules&&b[c].SubModules.length&&(d=s(a,b[c].SubModules)))return d}}function t(b){var c=s(b.ModuleId,a.modules);if(b.status===!0)c.status=!0;else{var d=_.filter(c.SubModules,{status:!0});d.length||(c.status=!1)}c.ModuleId&&t(c)}function u(a,b){a.forEach(function(a){a.status=b,a.SubModules&&a.SubModules.length&&u(a.SubModules,b)})}function v(a,b){b.forEach(function(b){_.find(a,{id:b.id})?b.status=!0:b.status=!1,b.SubModules&&b.SubModules.length&&v(a,b.SubModules)})}function w(a,b){return a=_.union(a,_.map(_.filter(b,{status:!0}),"id")),b.forEach(function(b){b.SubModules&&b.SubModules.length&&(a=_.union(a,w(a,b.SubModules)))}),a}a.Auth=g,a._=_,a.forms={},a.moduleSwitch={onText:"On",offText:"Off",isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.checkUser=function(){var a=g.getCurrentUser();g.isAdmin()||Number(b.id)===a.id||r.path("main.dashboard.voice")},a.initVoiceQueues=function(){var a={},c={};return j.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"voice",controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"voice",b.id,f)})["catch"](function(a){console.error(a)})},a.initChatQueues=function(){var a={},c={};return k.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{id:a.id,name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"chat",controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"chat",b.id,f)})["catch"](function(a){console.error(a)})},a.initMailQueues=function(){var a={},c={};return i.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{id:a.id,name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"mail",controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"mail",b.id,f)})["catch"](function(a){console.error(a)})},a.initSmsQueues=function(){var a={},c={};return m.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{id:a.id,name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"sms",controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"sms",b.id,f)})["catch"](function(a){console.error(a)})},a.initFaxQueues=function(){var a={},c={};return l.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{id:a.id,name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"fax",controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"fax",b.id,f)})["catch"](function(a){console.error(a)})},a.initOpenchannelQueues=function(){var a={},c={};return n.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{id:a.id,name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"openchannel",controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"openchannel",b.id,f)})["catch"](function(a){console.error(a)})},a.initView=function(){return f.get({id:b.id}).$promise.then(function(b){return a.user=b,a.user.transport=a.user.transport?a.user.transport.split(","):[],a.user.allow=a.user.allow?a.user.allow.split(";"):[],q.get({id:1}).$promise}).then(function(b){a.setting=b})["catch"](function(a){h.error(a)})},a.updateItem=function(){var c=angular.copy(a.user);return delete c.password,delete c.md5secret,c.transport=c.transport.join(","),c.allow=c.allow.join(";"),f.update({id:b.id},c).$promise.then(function(){h.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){h.error(a)})},a.updatePassword=function(){var c={newPassword:a.user.newPwd};return g.isAdmin()?c.id=b.id:c.oldPassword=a.user.currentPwd,f.changePassword(c).$promise.then(function(){h.show(d.instant("MESSAGE_WELL_DONE"),"success"),a.user.newPwd="",a.user.reNewPwd="",a.user.currentPwd="",a.forms.changePwd.$setPristine(),a.forms.changePwd.$setUntouched()})["catch"](function(a){h.error(a)})};var x=a.uploader=new e({url:"api/users/"+b.id+"/avatar",queueLimit:1,withCredentials:!0,headers:{Authorization:"Bearer "+c.get("token")}});x.filters.push({name:"imageFilter",fn:function(a){var b="|"+a.type.slice(a.type.lastIndexOf("/")+1)+"|";return-1!=="|jpg|png|jpeg|".indexOf(b)}}),a.getModules=function(){return a.associatedModules=[],p.get().$promise.then(function(c){return a.modules=_.filter(c.rows,function(a){return!a.ModuleId}),f.query({id:b.id,controller:"allowed",controller2:"modules"}).$promise}).then(function(b){v(b,a.modules)})["catch"](function(a){h.error(a)})},a.updatePermissions=function(c){c.ModuleId&&t(c),c.SubModules&&c.SubModules.length&&u(c.SubModules,c.status);var e=w([],a.modules);return f.save({id:b.id,controller:"allowed",controller2:"modules"},{modules:e}).$promise.then(function(){h.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){h.error(a)})},x.onSuccessItem=function(b,c){a.user.userpic=c.userpic,a.user.id===g.getCurrentUser().id&&(g.getCurrentUser().userpic=c.userpic),h.show(d.instant("MESSAGE_WELL_DONE"),"success")},x.onErrorItem=function(){h.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")},x.onCompleteAll=function(){x.clearQueue()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.users.view",{url:"/view/:id",templateUrl:"app/staff/user/view/view.html",controller:"UserViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.staff.users.view.account",{url:"/account",templateUrl:"app/staff/user/view/view.account.html",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css","assets/scripts/jquery.sparkline.min.js","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.js","assets/scripts/profile.js"]})}]}}).state("main.staff.users.view.voice",{url:"/voice",templateUrl:"app/staff/user/view/view.voice.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}}).state("main.staff.users.view.permit",{url:"/permit",templateUrl:"app/staff/user/view/view.permit.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}},cache:!1,serie:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}}).state("main.staff.users.view.permit.voice",{url:"/voice",templateUrl:"app/staff/user/view/view.permit.voice.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}}).state("main.staff.users.view.permit.chat",{url:"/chat",templateUrl:"app/staff/user/view/view.permit.chat.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.chat"}}}).state("main.staff.users.view.permit.mail",{url:"/mail",templateUrl:"app/staff/user/view/view.permit.mail.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.mail"}}}).state("main.staff.users.view.permit.fax",{url:"/fax",templateUrl:"app/staff/user/view/view.permit.fax.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.fax"}}}).state("main.staff.users.view.permit.sms",{url:"/sms",templateUrl:"app/staff/user/view/view.permit.sms.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.sms"}}}).state("main.staff.users.view.permit.openchannel",{url:"/openchannel",templateUrl:"app/staff/user/view/view.permit.openchannel.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.openchannel"}}}).state("main.staff.users.view.permit.modules",{url:"/modules",templateUrl:"app/staff/user/view/view.permit.modules.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").controller("UserWizardCtrl",["$scope","$location","WizardHandler","xAlert","$translate","User","Setting","Auth",function(a,b,c,d,e,f,g,h){a.initWizard=function(){return a.Auht=h,a.forms={info:void 0,voice:void 0},a.item={role:"user",host:"dynamic",context:"from-sip"},g.get({controller:"internal"}).$promise.then(function(b){return a.item.internal=b.value,g.get({id:1}).$promise}).then(function(b){a.setting=b})["catch"](function(a){d.error(a)})},a.next=function(){c.wizard().next()},a.exitValidation=function(a){return a},a.createItem=function(){return f.save(a.item).$promise.then(function(a){b.path("user"===a.role?"/staff/users/view/"+a.id+"/permit/voice":"/staff/users/view/"+a.id+"/account")})["catch"](function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.users.wizard",{url:"/wizard",templateUrl:"app/staff/user/wizard/wizard.html",controller:"UserWizardCtrl"})}]),angular.module("xCallyShuttleApp").controller("SugarcrmListCtrl",["$scope","SugarcrmAccount","gridOptions","xAlert","$translate",function(a,b,c,d,e){a.initView=function(){var d={exporterCsvFilename:"sugarcrm_account.csv",columnDefs:[{name:"name",displayName:"APPLICATION_NAME"},{name:"username"},{name:"remoteUri",displayName:"APPLICATION_URI"},{name:"action",width:250,buttons:[{"class":"blue-hoki",href:"/sugarcrm/view/{{row.entity.id}}/account",name:"profile"},{"class":"green-jungle",name:"check",onClick:"grid.appScope.checkAccount(row.entity.id)"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.checkAccount=function(a){return b.get({id:a,controller:"check"}).$promise.then(function(){d.show(e.instant("MESSAGE_ACCOUNT_VERIFIED"),"success")})["catch"](function(){d.show(e.instant("MESSAGE_ACCOUNT_INVALID"),"danger")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm.list",{url:"/list",templateUrl:"app/sugarcrm/list/list.html",controller:"SugarcrmListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").factory("SugarcrmAccount",["$resource",function(a){return a("/api/sugarcrm/accounts/:id/:controller",{id:"@id"},{update:{method:"PUT"},fields:{params:{controller:"fields"},isArray:!0},moduleFields:{params:{controller:"fields"},isArray:!0},check:{params:{controller:"check"}},modules:{params:{controller:"modules"},isArray:!0}})}]).factory("SugarcrmConfiguration",["$resource",function(a){return a("/api/sugarcrm/accounts/:accountId/configurations/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]).factory("SugarcrmField",["$resource",function(a){return a("/api/sugarcrm/accounts/:accountId/configurations/:configurationId/fields/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm",{url:"/sugarcrm",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm.view.configurations",{url:"/configurations",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("SugarcrmViewConfigurationListCtrl",["$scope","$stateParams","$translate","gridOptions","SugarcrmConfiguration","$uibModal",function(a,b,c,d,e,f){a.initView=function(){var c={exporterCsvFilename:"sugarcrm_configurations.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:125,buttons:[{"class":"blue-hoki",href:"/sugarcrm/view/{{row.entity.AccountId}}/configurations/view/{{row.entity.id}}",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(e,c,a,{accountId:b.id})},a.createItem=function(){var b=f.open({animation:!0,templateUrl:"app/sugarcrm/view/configuration/list/create.modal.html",controller:"SugarcrmCreateConfigurationCtrl"});b.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("SugarcrmCreateConfigurationCtrl",["$scope","$translate","$uibModalInstance","SugarcrmConfiguration","xAlert","$stateParams","channel",function(a,b,c,d,e,f,g){a.form={},a.item={},a.channels=g,a.item.channel="voice",a.item.type="Queue",a.save=function(){return d.save({accountId:f.id},a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm.view.configurations.list",{url:"/list",templateUrl:"app/sugarcrm/view/configuration/list/list.html",controller:"SugarcrmViewConfigurationListCtrl"})}]),angular.module("xCallyShuttleApp").controller("SugarcrmViewConfigurationViewCtrl",["$scope","$filter","$stateParams","$translate","socket","variable","xAlert","SugarcrmAccount","SugarcrmConfiguration","SugarcrmField","Variable","usSpinnerService",function(a,b,c,d,e,f,g,h,i,j,k,l){a.$on("$destroy",function(){e.unsyncUpdates("sugarcrm_field")}),a.config={autoHideScrollbar:!1,theme:"dark",advanced:{updateOnContentResize:!0},setHeight:300,scrollInertia:0},a.fieldType=[{type:"string",title:"String"},{type:"variable",title:"Variable"},{type:"customVariable",title:"Custom Variable"}],a.descFieldType=[{type:"string",title:"String"},{type:"keyValue",title:"Key Value"}],a.defaultMappingSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.groupVariableByGroup=function(a){switch(a.group){case"voice_queue":return"Voice: Queue";default:return"Other"}},a.initView=function(){a.configurationName="",a.subjectConfig=[],a.descriptionConfig=[],a.fieldConfig=[],a.variables=f,a.mapping={}},a.getConfiguration=function(){return i.get({accountId:c.id,id:c.configurationId}).$promise.then(function(b){a.configurationName=b.name,a.subjectConfig=b.Subject,a.descriptionConfig=b.Description,a.fieldConfig=b.Field,a.mapping.defaultMapping=b.defaultMapping,a.mapping.mappingModule=b.mappingModule,a.mapping.mappingFields=b.mappingFields,a.getModuleFields(),e.socket.on("sugarcrm_field:remove",function(b){_.remove(a.subjectConfig,{id:b.id}),_.remove(a.descriptionConfig,{id:b.id}),_.remove(a.fieldConfig,{id:b.id})})})["catch"](function(a){g.error(a)})},a.getCustomVariables=function(){return k.get().$promise.then(function(b){a.customVariables=b.rows})["catch"](function(a){g.error(a)})},a.getFields=function(){return h.fields({id:c.id}).$promise.then(function(c){a.accountFields=_.sortBy(b("sugarcrm")(c),["name"]),_.forEach(c,function(a){a.options=_.toArray(a.options)})})["catch"](function(a){g.error(a)})},a.getModules=function(){return h.modules({id:c.id}).$promise.then(function(b){a.accountModules=b})["catch"](function(a){g.error(a)})},a.getModuleFields=function(){return!a.mapping.defaultMapping&&a.mapping.mappingModule?h.moduleFields({id:c.id,module:a.mapping.mappingModule}).$promise.then(function(b){a.moduleFields=b})["catch"](function(a){g.error(a)})["finally"](function(){l.stop("spinner-grid")}):void 0},a.addItem=function(b){var d={};switch(b){case"subject":case"description":d={type:"string",content:""};break;case"field":d={content:""}}return i.save({accountId:c.id,id:c.configurationId,controller:b},d).$promise.then(function(c){switch(b){case"subject":a.subjectConfig.push(c);break;case"description":a.descriptionConfig.push(c);break;case"field":a.fieldConfig.push(c)}})["catch"](function(a){g.error(a)})},a.changeType=function(b){"variable"===b.type?(b.content="",b.variableName=""):"string"===b.type?(b.VariableId=null,b.variableName=""):"customVariable"===b.type&&(b.VariableId=null,b.content=""),a.updateField(b)},a.updateField=function(a){return j.update({accountId:c.id,configurationId:c.configurationId,id:a.id},a).$promise.then(function(){})["catch"](function(a){g.error(a)})},a.removeItem=function(a){return j["delete"]({accountId:c.id,configurationId:c.configurationId,id:a.id}).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){g.error(a)})},a.changeFieldType=function(b){b.content="",b.variableName="",b.nameField="",b.VariableId=null,a.updateField(b)},a.changeDescType=function(b){"keyValue"===b.type?(b.content="","string"===b.keyType?(b.VariableId=null,b.variableName=""):"variable"===b.keyType?(b.keyContent="",b.VariableId=null):"customVariable"===b.keyType&&(b.keyContent="",b.variableName="")):"string"===b.type&&(b.VariableId=null,b.variableName="",b.key="",b.keyContent=""),a.updateField(b)},a.getSystemFieldOptions=function(b){if(b){var c=_.find(a.accountFields,"name",b);return c?c.options.length>0?c.options:null:void 0}},a.updateMapping=function(){return a.mapping.defaultMapping&&(a.mapping.mappingModule=null,a.mapping.mappingFields=[]),i.update({accountId:c.id,id:c.configurationId},a.mapping).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE")+".","success")})["catch"](function(a){g.error(a)})},a.updateMappingModule=function(){l.spin("spinner-grid"),a.mapping.mappingFields=[],a.getModuleFields()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm.view.configurations.view",{url:"/view/:configurationId",templateUrl:"app/sugarcrm/view/configuration/view/view.html",controller:"SugarcrmViewConfigurationViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("SugarcrmViewCtrl",["$scope","$http","$stateParams","$translate","$location","$filter","WizardHandler","socket","xAlert","Modal","SugarcrmAccount",function(a,b,c,d,e,f,g,h,i,j,k){a.initView=function(){return k.get({id:c.id}).$promise.then(function(b){a.account=b})["catch"](function(a){i.error(a)})},a.updateItem=function(){return k.update({id:c.id},a.account).$promise.then(function(){i.show(d.instant("MESSAGE_WELL_DONE")+".","success")})["catch"](function(a){i.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm.view",{url:"/view/:id",templateUrl:"app/sugarcrm/view/view.html",controller:"SugarcrmViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.sugarcrm.view.account",{url:"/account",templateUrl:"app/sugarcrm/view/view.account.html"})}]),angular.module("xCallyShuttleApp").controller("SugarcrmkWizardCtrl",["$scope","$http","$location","$translate","xAlert","WizardHandler","SugarcrmAccount",function(a,b,c,d,e,f,g){a.translate=d,a.initWizard=function(){a.$translate=d,a.forms={},a.item={},a.item.serverUrl=c.protocol()+"://"+location.host},a.next=function(){f.wizard().next()},a.exitValidation=function(a){return a},a.createItem=function(){return g.save(a.item).$promise.then(function(){e.show(d.instant("MESSAGE_WELL_DONE")+".","success"),c.path("/sugarcrm/list")})["catch"](function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm.wizard",{url:"/wizard",templateUrl:"app/sugarcrm/wizard/wizard.html",controller:"SugarcrmkWizardCtrl"})}]),angular.module("xCallyShuttleApp").factory("CannedAnswer",["$resource",function(a){return a("/api/answers/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){ +a.state("main.tools.answers",{url:"/answers",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:58}}})}]),angular.module("xCallyShuttleApp").controller("AnswerListCtrl",["$scope","$uibModal","CannedAnswer","gridOptions",function(a,b,c,d){a.initView=function(){var b={exporterCsvFilename:"answers.csv",columnDefs:[{name:"key",displayName:"APPLICATION_KEY"},{name:"value"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/answers/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.key, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){b.open({animation:!0,templateUrl:"app/tools/answer/list/list.create.modal.html",controller:"AnswerListCreateCtrl"}).result.then(function(b){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("AnswerListCreateCtrl",["$scope","$translate","$uibModalInstance","CannedAnswer","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.answers.list",{url:"/list",templateUrl:"app/tools/answer/list/list.html",controller:"AnswerListCtrl"})}]),angular.module("xCallyShuttleApp").controller("AnswerViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","$location","CannedAnswer",function(a,b,c,d,e,f,g){a.getAnswer=function(){return g.get({id:e.id}).$promise.then(function(b){a.answer=b})["catch"](function(a){c.error(a)})},a.updateAnswer=function(){var b=angular.copy(a.answer);return g.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){c.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.answers.view",{url:"/view/:id",templateUrl:"app/tools/answer/view/view.html",controller:"AnswerViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.answers.view.settings",{url:"/settings",templateUrl:"app/tools/answer/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").factory("Automation",["$resource",function(a){return a("/api/automations/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.automations",{url:"/automations",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:51}}})}]),angular.module("xCallyShuttleApp").controller("AutomationListCtrl",["$scope","$http","$translate","xAlert","Automation","gridOptions",function(a,b,c,d,e,f){a.onText="On",a.offText="Off",a.isActive=!0,a.size="mini",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initView=function(){var b={exporterCsvFilename:"Automations.csv",columnDefs:[{name:"name"},{name:"description"},{name:"channel"},{name:"status",cellTemplate:'<div class="centered-uigrid-td"><input data-ng-change="grid.appScope.updateItem(row.entity)", bs-switch ng-model="row.entity.status" type="checkbox" switch-active="{{ grid.appScope.isActive }}" switch-on-text="{{ grid.appScope.onText }}" switch-off-text="{{ grid.appScope.offText }}" switch-on-color="{{ grid.appScope.onColor }}" switch-off-color="{{ grid.appScope.offColor }}" switch-animate="{{ grid.appScope.animate }}" switch-size="{{ grid.appScope.size }}" switch-label="{{ grid.appScope.label }}" switch-icon="{{ grid.appScope.icon }}" switch-radio-off="{{ grid.appScope.radioOff }}" switch-label-width="{{ grid.appScope.labelWidth }}" switch-handle-width="{{ grid.appScope.handleWidth }}"></div>',width:100,enableFiltering:!1},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/automations/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=f.gridOptions(e,b,a)},a.updateItem=function(a){return e.update({id:a.id},a).$promise.then(function(){d.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){console.error(a),d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.automations.list",{url:"/list",templateUrl:"app/tools/automation/list/list.html",controller:"AutomationListCtrl"})}]),angular.module("xCallyShuttleApp").controller("AutomationViewCtrl",["$scope","$stateParams","$http","$translate","xAlert","automations","Automation","$location",function(a,b,c,d,e,f,g,h){a.$automations=f,a.recordSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.forms={general:{}},a.addCondition=function(b){a.automation[b].push({field:"",operator:"",value:""})},a.removeCondition=function(b,c){a.automation[b].splice(c,1)},a.addAction=function(){a.automation.Actions.push({action:"",data1:"",data2:"",data3:"",data4:"",data5:""})},a.resetActionData=function(a){a.data1="",a.data2="",a.data3="",a.data4="",a.data5=""},a.removeAction=function(b){a.automation.Actions.splice(b,1)},a.initView=function(){return g.get({id:b.id}).$promise.then(function(b){a.automation=b})["catch"](function(a){e.error(a),h.path("/tools/automations/list")})},a.updateAutomation=function(){return g.update({id:b.id},a.automation).$promise.then(function(){e.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){console.error(a),e.error(a)})},a.exitValidation=function(b){return console.log(b&&(a.automation.All.length||a.automation.Any.length)&&a.automation.Actions.length),!(!b||!a.automation.All.length&&!a.automation.Any.length||!a.automation.Actions.length)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.automations.view",{url:"/view/:id",templateUrl:"app/tools/automation/view/view.html",controller:"AutomationViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]})}]}}).state("main.tools.automations.view.settings",{url:"/settings",templateUrl:"app/tools/automation/view/view.settings.html"}).state("main.tools.automations.view.routes",{url:"/routes",templateUrl:"app/tools/automation/view/view.routes.html"}).state("main.tools.automations.view.application",{url:"/application",templateUrl:"app/tools/automation/view/view.application.html"})}]),angular.module("xCallyShuttleApp").controller("AutomationWizardCtrl",["$scope","$http","$location","xAlert","automations","WizardHandler","Automation",function(a,b,c,d,e,f,g){a.$automations=e,a.statusSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.tempData={voice:{},mail:{},chat:{},fax:{}},a.item={All:[],Any:[],Actions:[]},a.forms={general:void 0,settings:void 0},a.addCondition=function(b){a.item[b].push({field:"",operator:"",value:""})},a.removeCondition=function(b,c){a.item[b].splice(c,1)},a.addAction=function(){a.item.Actions.push({action:"",data1:"",data2:"",data3:"",data4:"",data5:""})},a.resetActionData=function(a){a.data1="",a.data2="",a.data3="",a.data4="",a.data5=""},a.removeAction=function(b){a.item.Actions.splice(b,1)},a.$watch("item.channel",function(b,c){c&&(a.tempData[c].All=_.clone(a.item.All,!0),a.tempData[c].Any=_.clone(a.item.Any,!0),a.tempData[c].Actions=_.clone(a.item.Actions,!0)),a.item.All=a.tempData[b].All?a.tempData[b].All:[],a.item.Any=a.tempData[b].Any?a.tempData[b].Any:[],a.item.Actions=a.tempData[b].Actions?a.tempData[b].Actions:[]},!0),a.item.channel="mail",a.createItem=function(){return g.save(a.item).$promise.then(function(){c.path("/tools/automations/list")})["catch"](function(a){console.error(a),d.error(a)})},a.next=function(){f.wizard().next()},a.previous=function(){f.wizard().previous()},a.exitValidation=function(a){return a},a.exitSettingsValidation=function(b){return!(!b||!a.item.All.length&&!a.item.Any.length||!a.item.Actions.length)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.automations.wizard",{url:"/wizard",templateUrl:"app/tools/automation/wizard/wizard.html",controller:"AutomationWizardCtrl"})}]),angular.module("xCallyShuttleApp").factory("Interval",["$resource",function(a){return a("/api/intervals/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]).factory("SubInterval",["$resource",function(a){return a("/api/intervals/:intervalId/subintervals/:id",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals",{url:"/intervals",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:53}}})}]),angular.module("xCallyShuttleApp").controller("IntervalListCtrl",["$scope","$uibModal","Interval","gridOptions",function(a,b,c,d){a.initView=function(){var b={exporterCsvFilename:"intervals.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/intervals/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){var c=b.open({animation:!0,templateUrl:"app/tools/interval/list/list.create.modal.html",controller:"IntervalListCreateCtrl"});c.result.then(function(b){console.log(b),a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("IntervalListCreateCtrl",["$scope","$translate","$uibModalInstance","Interval","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals.list",{url:"/list",templateUrl:"app/tools/interval/list/list.html",controller:"IntervalListCtrl"})}]),angular.module("xCallyShuttleApp").controller("IntervalViewSubintervalsListCtrl",["$scope","$stateParams","gridOptions","SubInterval","$translate","$uibModal",function(a,b,c,d,e,f){a.stateParams=b,a.initView=function(){var e={exporterCsvFilename:"tools_interval.csv",enableSelectAll:!1,enableRowSelection:!1,multiSelect:!1,columnDefs:[{name:"name"},{name:"interval"},{name:"action",width:125,buttons:[{"class":"blue-hoki",href:"/tools/intervals/view/{{row.entity.IntervalId}}/subintervals/view/{{row.entity.id}}",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(d,e,a,{intervalId:b.id})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals.view.subintervals.list",{url:"/list",templateUrl:"app/tools/interval/view/subinterval/list/list.html",controller:"IntervalViewSubintervalsListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals.view.subintervals",{url:"/subintervals",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("IntervalViewSubintervalsViewCtrl",["$scope","$stateParams","WizardHandler","SubInterval","xAlert","$location","$translate","Interval",function(a,b,c,d,e,f,g,h){function i(b){var c,d,e,f;c=b.t_from&&b.t_to&&!b.alwaysTime?moment(b.t_from).format("HH:mm")+"-"+moment(b.t_to).format("HH:mm"):"*",b.wd_from&&"always"!==b.wd_from?(d=b.wd_from,b.wd_to&&"always"!==b.wd_to&&(d+="-"+b.wd_to)):d="*",b.md_from&&"always"!==b.md_from?(e=b.md_from,b.md_to&&"always"!==b.md_to&&(e+="-"+b.md_to)):e="*",b.m_from&&"always"!==b.m_from?(f=b.m_from,b.m_to&&"always"!==b.m_to&&(f+="-"+b.m_to)):f="*",a.subinterval&&(a.subinterval.interval=c+","+d+","+e+","+f)}a.isNewSubinterval=!1,a["switch"]={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.initSubInterval=function(){return b.subintervalId?(a.isNewSubinterval=!1,a.splittedInterval={t_from:moment(new Date),t_to:moment(new Date)},d.get({id:b.subintervalId,intervalId:b.id}).$promise.then(function(b){a.subinterval=b;var c,d=a.subinterval?a.subinterval.interval.split(","):["*","*","*","*"];d.forEach(function(b,d){switch(d){case 0:"*"!==b?(c=b.split("-"),a.splittedInterval.t_from=moment(c[0],"HH:mm"),a.splittedInterval.t_to=moment(c[1],"HH:mm"),a.splittedInterval.alwaysTime=!1):(a.splittedInterval.t_from=moment(new Date),a.splittedInterval.t_to=moment(new Date),a.splittedInterval.alwaysTime=!0);break;case 1:"*"!==b?(c=b.split("-"),a.splittedInterval.wd_from=c[0],a.splittedInterval.wd_to=c[1]?c[1]:"always"):(a.splittedInterval.wd_from="always",a.splittedInterval.wd_to="always");break;case 2:"*"!==b?(c=b.split("-"),a.splittedInterval.md_from=c[0],a.splittedInterval.md_to=c[1]?c[1]:"always"):(a.splittedInterval.md_from="always",a.splittedInterval.md_to="always");break;case 3:"*"!==b?(c=b.split("-"),a.splittedInterval.m_from=c[0],a.splittedInterval.m_to=c[1]?c[1]:"always"):(a.splittedInterval.m_from="always",a.splittedInterval.m_to="always")}})})["catch"](function(a){e.error(a),f.path("/tools/intervals/list")})):(a.isNewSubinterval=!0,a.subinterval={},a.splittedInterval={t_from:moment(new Date),t_to:moment(new Date),wd_from:"always",wd_to:"always",md_from:"always",md_to:"always",m_from:"always",m_to:"always",alwaysTime:!0},void 0)},a.next=function(){c.wizard().next()},a.previous=function(){c.wizard().previous()},a.exitValidation=function(a){return a},a.$watch("splittedInterval",function(a){a&&i(a)},!0),a.addOrUpdateSubInterval=function(){return a.isNewSubinterval?d.save({intervalId:b.id},a.subinterval).$promise.then(function(){e.show(g.instant("MESSAGE_WELL_DONE")+".","success"),f.path("/tools/intervals/view/"+b.id+"/subintervals/list")})["catch"](function(a){e.error(a)}):h.update({id:b.subintervalId},a.subinterval).$promise.then(function(){e.show(g.instant("MESSAGE_WELL_DONE")+".","success"),f.path("/tools/intervals/view/"+b.id+"/subintervals/list")})["catch"](function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals.view.subintervals.view",{url:"/view/:subintervalId",templateUrl:"app/tools/interval/view/subinterval/view/view.html",controller:"IntervalViewSubintervalsViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("IntervalViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","socket","$location","WizardHandler","Modal","interval","Interval",function(a,b,c,d,e,f,g,h,i,j,k){function l(b){var c,d,e,f;c=b.t_from&&b.t_to&&!b.alwaysTime?moment(b.t_from).format("HH:mm")+"-"+moment(b.t_to).format("HH:mm"):"*",b.wd_from&&"always"!==b.wd_from?(d=b.wd_from,b.wd_to&&"always"!==b.wd_to&&(d+="-"+b.wd_to)):d="*",b.md_from&&"always"!==b.md_from?(e=b.md_from,b.md_to&&"always"!==b.md_to&&(e+="-"+b.md_to)):e="*",b.m_from&&"always"!==b.m_from?(f=b.m_from,b.m_to&&"always"!==b.m_to&&(f+="-"+b.m_to)):f="*",void 0!==a.selectedSubInterval?a.interval.SubIntervals[a.selectedSubInterval].interval=c+","+d+","+e+","+f:a.subinterval.interval=c+","+d+","+e+","+f}a.$translate=d,a.$interval=j.interval,a.selectedSubInterval=void 0,a["switch"]={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.gridOptions={columnDefs:[{name:"name",displayName:"APPLICATION_NAME",headerCellFilter:"translate"},{name:"interval",displayName:"APPLICATION_INTERVAL",headerCellFilter:"translate"},{name:"action",displayName:"APPLICATION_ACTION",headerCellFilter:"translate",width:125,cellTemplate:'<a class="btn btn-xs blue-hoki" data-ng-click="grid.appScope.openSubInterval(grid.appScope.gridOptions.data.indexOf(row.entity))">{{\'APPLICATION_SETTINGS\' | translate}}</a><a class="btn btn-xs red-sunglo" data-ng-click="grid.appScope.deleteSubInterval(row.entity.name+\' interval\', grid.appScope.gridOptions.data.indexOf(row.entity))">{{\'APPLICATION_DELETE\' | translate}}</a>'}]},a.forms={subinterval:void 0,general:void 0},a.initSubInterval=function(b){b&&(a.selectedSubInterval=void 0),a.subinterval={},a.splittedInterval={t_from:moment(new Date),t_to:moment(new Date),wd_from:"always",wd_to:"always",md_from:"always",md_to:"always",m_from:"always",m_to:"always",alwaysTime:!0}},a.next=function(){h.wizard().next()},a.previous=function(){h.wizard().previous()},a.exitValidation=function(a){return a},a.deselectAndRedirect=function(b){a.selectedSubInterval=void 0,g.path(b)},a.getInterval=function(){return k.get({id:e.id}).$promise.then(function(b){a.interval=b})["catch"](function(a){c.error(a),g.path("/tools/intervals/list")})},a.openSubInterval=function(b){a.selectedSubInterval=b,g.path("/tools/intervals/view/"+e.id+"/subintervals/settings")},a.updateInterval=function(){var b={name:a.interval.name,description:a.interval.description};return k.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE")+".","success")})["catch"](function(a){c.error(a)})},a.getSubInterval=function(){void 0===a.selectedSubInterval&&g.path("/tools/intervals/list"),a.splittedInterval={t_from:moment(new Date),t_to:moment(new Date)};var b,c=a.interval.SubIntervals[a.selectedSubInterval]?a.interval.SubIntervals[a.selectedSubInterval].interval.split(","):["*","*","*","*"];c.forEach(function(c,d){switch(d){case 0:"*"!==c?(b=c.split("-"),a.splittedInterval.t_from=moment(b[0],"HH:mm"),a.splittedInterval.t_to=moment(b[1],"HH:mm"),a.splittedInterval.alwaysTime=!1):(a.splittedInterval.t_from=moment(new Date),a.splittedInterval.t_to=moment(new Date),a.splittedInterval.alwaysTime=!0);break;case 1:"*"!==c?(b=c.split("-"),a.splittedInterval.wd_from=b[0],a.splittedInterval.wd_to=b[1]?b[1]:"always"):(a.splittedInterval.wd_from="always",a.splittedInterval.wd_to="always");break;case 2:"*"!==c?(b=c.split("-"),a.splittedInterval.md_from=b[0],a.splittedInterval.md_to=b[1]?b[1]:"always"):(a.splittedInterval.md_from="always",a.splittedInterval.md_to="always");break;case 3:"*"!==c?(b=c.split("-"),a.splittedInterval.m_from=b[0],a.splittedInterval.m_to=b[1]?b[1]:"always"):(a.splittedInterval.m_from="always",a.splittedInterval.m_to="always")}})},a.$watch("splittedInterval",function(a){a&&l(a)},!0),a.addSubInterval=function(){a.interval.SubIntervals.push(a.subinterval),a.updateInterval("subintervals")},a.deleteSubInterval=i.confirm["delete"](function(b){a.interval.SubIntervals.splice(b,1),a.updateInterval()})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals.view",{url:"/view/:id",templateUrl:"app/tools/interval/view/view.html",controller:"IntervalViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.intervals.view.settings",{url:"/settings",templateUrl:"app/tools/interval/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("PauseListCtrl",["$scope","$log","$uibModal","$translate","Pause","gridOptions",function(a,b,c,d,e,f){a.initView=function(){var b={exporterCsvFilename:"pauses.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/pauses/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=f.gridOptions(e,b,a)},a.createItem=function(){var b=c.open({animation:!0,templateUrl:"app/tools/pause/list/list.create.modal.html",controller:"PauseListCreateCtrl"});b.result.then(function(b){console.log(b),a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("PauseListCreateCtrl",["$scope","$translate","$uibModalInstance","Pause","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.pauses.list",{url:"/list",templateUrl:"app/tools/pause/list/list.html",controller:"PauseListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Pause",["$resource",function(a){return a("/api/pauses/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.pauses",{url:"/pauses",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:57}}})}]),angular.module("xCallyShuttleApp").controller("PauseViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","$location","Pause",function(a,b,c,d,e,f,g){a.getPause=function(){return g.get({id:e.id}).$promise.then(function(b){a.pause=b})["catch"](function(a){c.error(a)})},a.updatePause=function(){var b=angular.copy(a.pause);return g.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){c.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.pauses.view",{url:"/view/:id",templateUrl:"app/tools/pause/view/view.html",controller:"PauseViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.pauses.view.settings",{url:"/settings",templateUrl:"app/tools/pause/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("SchedulerListCtrl",["$scope","Scheduler","gridOptions","xAlert","$translate","socket",function(a,b,c,d,e,f){a._=_,a.switches={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.scheduleTypes=[{name:"APPLICATION_REPORT_EXTRACTION",value:"report"},{name:"APPLICATION_HISTORY_MOVE",value:"history"},{name:"APPLICATION_DB_BACKUP",value:"backup"}],a.initView=function(){var d={exporterCsvFilename:"Schedules.csv",columnDefs:[{name:"name"},{name:"type",cellTemplate:'<div class="centered-uigrid-td">{{grid.appScope._.find(grid.appScope.scheduleTypes,{value:row.entity.type}).name | translate}}</div>'},{name:"description"},{name:"active",cellTemplate:'<div class="centered-uigrid-td"><input data-ng-change="grid.appScope.updateItem(row.entity)", bs-switch ng-model="row.entity.active" type="checkbox" switch-active="{{ grid.appScope.switches.isActive }}" switch-on-text="{{ \'APPLICATION_YES\' | translate }}" switch-off-text="{{ \'APPLICATION_NO\' | translate }}" switch-on-color="{{ grid.appScope.switches.onColor }}" switch-off-color="{{ grid.appScope.switches.offColor }}" switch-animate="{{ grid.appScope.switches.animate }}" switch-size="{{ grid.appScope.switches.size }}" switch-label="{{ grid.appScope.switches.label }}" switch-icon="{{ grid.appScope.switches.icon }}" switch-radio-off="{{ grid.appScope.switches.radioOff }}" switch-label-width="{{ grid.appScope.switches.labelWidth }}" switch-handle-width="{{ grid.appScope.switches.handleWidth }}"></div>',enableFiltering:!1,enableSorting:!1},{name:"sendMail",displayName:"APPLICATION_SEND_MAIL",cellTemplate:'<div data-ng-if="row.entity.type == \'report\'" class="centered-uigrid-td"><input data-ng-change="grid.appScope.updateItem(row.entity)", bs-switch ng-model="row.entity.sendMail" type="checkbox" switch-active="{{ grid.appScope.switches.isActive }}" switch-on-text="{{ \'APPLICATION_YES\' | translate }}" switch-off-text="{{ \'APPLICATION_NO\' | translate }}" switch-on-color="{{ grid.appScope.switches.onColor }}" switch-off-color="{{ grid.appScope.switches.offColor }}" switch-animate="{{ grid.appScope.switches.animate }}" switch-size="{{ grid.appScope.switches.size }}" switch-label="{{ grid.appScope.switches.label }}" switch-icon="{{ grid.appScope.switches.icon }}" switch-radio-off="{{ grid.appScope.switches.radioOff }}" switch-label-width="{{ grid.appScope.switches.labelWidth }}" switch-handle-width="{{ grid.appScope.switches.handleWidth }}"></div>',enableFiltering:!1,enableSorting:!1},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/tools/scheduler/view/{{row.entity.id}}/settings",name:"settings"},{"class":"green-turquoise",name:"run",onClick:"grid.appScope.runSchedule(row.entity.id)"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.updateItem=function(a){return b.update({id:a.id},a).$promise.then(function(){d.show(e.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){console.error(a),d.error(a)})},a.runSchedule=function(a){return b.get({id:a,controller:"run"}).$promise.then(function(){d.show(e.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){console.error(a),d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.scheduler.list",{url:"/list",templateUrl:"app/tools/scheduler/list/list.html",controller:"SchedulerListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Scheduler",["$resource",function(a){return a("/api/scheduler/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.scheduler",{url:"/scheduler",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:61}}})}]),angular.module("xCallyShuttleApp").controller("SchedulerViewCtrl",["$scope","xAlert","$translate","$stateParams","socket","$location","ReportTree","Scheduler","DefaultReport","CustomReport","$timeout","MailServerOut",function(a,b,c,d,e,f,g,h,i,j,k,l){function m(){switch(a.schedule.cronType=a.rangeExec.type,a.rangeExec.type){case"daily":a.schedule.cron="00 "+a.rangeExec.hour+" * * *";break;case"weekly":a.schedule.cron="00 "+a.rangeExec.hour+" * * "+a.rangeExec.weekDays.join(",");break;case"monthly":a.schedule.cron="00 "+a.rangeExec.hour+" "+a.rangeExec.monthDay+" * *"}}function n(b){var c;switch(b.cronType){case"daily":a.rangeExec.hour=Number(b.cron.split(" ")[1]),a.rangeExec.type=b.cronType;break;case"weekly":c=b.cron.split(" "),a.rangeExec.hour=Number(c[1]),c[4].split(",").forEach(function(b){a.rangeExec.weekDays.push(Number(b))}),a.rangeExec.type=b.cronType;break;case"monthly":c=b.cron.split(" "),a.rangeExec.hour=Number(c[1]),a.rangeExec.monthDay=Number(c[2]),a.rangeExec.type=b.cronType;break;case"currentDay":a.switchValues.today=!0}a.$watch("rangeExec",function(b){a.switchValues.today||m()},!0)}a.forms={},a.rangeExec={weekDays:[],monthDay:null,hour:0,type:null},a.initReports=function(){var c;return a.reports=[],a.tempTodayCron=null,g.query().$promise.then(function(b){return a.defaultTreeData=JSON.parse(b[0].tree),a.customTreeData=JSON.parse(b[1].tree),i.get().$promise}).then(function(b){return a.defRep=b.rows,a.defRep.length&&_.forEach(a.defRep,function(b){c=_.find(a.defaultTreeData,{id:b.parent}),c&&(b.parent="Motion Reports - "+c.text,b.type="default")}),j.get().$promise}).then(function(b){return a.cusRep=b.rows,a.cusRep.length&&_.forEach(a.cusRep,function(b){c=_.find(a.customTreeData,{id:b.parent}),c&&(b.parent="Custom Reports - "+c.text,b.type="custom")}),l.get().$promise}).then(function(b){a.mailServers=b.rows})["catch"](function(a){b.error(a)})},a.initView=function(){return h.get({id:d.id}).$promise.then(function(b){a.schedule=b,n(b)}).then(function(){e.socket.on("schedule:update",function(b){a.schedule.id===b.id&&(a.schedule.active=b.active,a.schedule.sendMail=b.sendMail)})})["catch"](function(a){console.error(a),f.path("/tools/scheduler/list")})},a.refreshSlider=function(){k(function(){a.$broadcast("rzSliderForceRender"),a.refreshSlider=null})},a.monthDays=function(){for(var a=[],b=1;31>=b;b++)a.push(b);return a}(),a.hours=function(){for(var a=[],b=0;23>=b;b++)a.push(b);return a}(),a.setReportTree=function(b){a.schedule.reportType=b.type},a.validitySlider={ceil:24,floor:0,showTicks:!0},a.switchValues={today:!1},a.switches={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.scheduleTypes=[{name:"APPLICATION_REPORT_EXTRACTION",value:"report"}],a.todayCron=[{name:"15 min",value:"*/15 * * * *"},{name:"30 min",value:"*/30 * * * *"},{name:"1 h",value:"0 * * * *"}],a.reportRanges=[{name:"APPLICATION_PREVIOUS_DAY",value:"yesterday"},{name:"APPLICATION_LAST_SEVEN_DAYS",value:"last7"},{name:"APPLICATION_LAST_THIRTY_DAYS",value:"last30"},{name:"APPLICATION_LAST_MONTH",value:"lastMonth"}],a.cronTypes=[{name:"APPLICATION_DAY",value:"daily"},{name:"APPLICATION_WEEK",value:"weekly"},{name:"APPLICATION_MONTH",value:"monthly"}],a.weekDays=[{name:"APPLICATION_MONDAY",value:1},{name:"APPLICATION_TUESDAY",value:2},{name:"APPLICATION_WEDNESDAY",value:3},{name:"APPLICATION_THURSDAY",value:4},{name:"APPLICATION_FRIDAY",value:5},{name:"APPLICATION_SATURDAY",value:6},{name:"APPLICATION_SUNDAY",value:0}],a.checkToday=function(){a.switchValues.today?(a.schedule.cron=angular.copy(a.tempTodayCron),a.schedule.cronType="currentDay"):(a.tempTodayCron=angular.copy(a.schedule.cron),a.schedule.cron=void 0,m())},a.updateSchedule=function(){return h.update({id:a.schedule.id},a.schedule).$promise.then(function(){b.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){console.error(a),b.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.scheduler.view",{url:"/view/:id",templateUrl:"app/tools/scheduler/view/view.html",controller:"SchedulerViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.scheduler.view.settings",{url:"/settings",templateUrl:"app/tools/scheduler/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("SchedulerWizardCtrl",["$scope","WizardHandler","$location","xAlert","Scheduler","ReportTree","$translate","DefaultReport","CustomReport","MailServerOut",function(a,b,c,d,e,f,g,h,i,j){function k(){switch(a.item.cronType=a.rangeExec.type,a.rangeExec.type){case"daily":a.item.cron="00 "+a.rangeExec.hour+" * * *";break;case"weekly":a.item.cron="00 "+a.rangeExec.hour+" * * "+a.rangeExec.weekDays.join(",");break;case"monthly":a.item.cron="00 "+a.rangeExec.hour+" "+a.rangeExec.monthDay+" * *"}}a.forms={},a.item={validityStart:8,validityEnd:16,type:"report",reportType:"default"},a.initReports=function(){a.reports=[];var b;return f.query().$promise.then(function(b){return a.defaultTreeData=JSON.parse(b[0].tree),a.customTreeData=JSON.parse(b[1].tree),h.get().$promise}).then(function(c){return a.defRep=c.rows,a.defRep.length&&_.forEach(a.defRep,function(c){b=_.find(a.defaultTreeData,{id:c.parent}),b&&(c.parent="Motion Reports - "+b.text,c.type="default")}),i.get().$promise}).then(function(c){return a.cusRep=c.rows,a.cusRep.length&&_.forEach(a.cusRep,function(c){b=_.find(a.customTreeData,{id:c.parent}),b&&(c.parent="Custom Reports - "+b.text, +c.type="custom")}),j.get().$promise}).then(function(b){a.mailServers=b.rows})["catch"](function(a){d.error(a)})},a.setReportTree=function(b){a.item.reportType=b.type},a.validitySlider={ceil:24,floor:0,showTicks:!0},a.switchValues={today:!1},a.switches={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.scheduleTypes=[{name:"APPLICATION_REPORT_EXTRACTION",value:"report"}],a.todayCron=[{name:"15 min",value:"*/15 * * * *"},{name:"30 min",value:"*/30 * * * *"},{name:"1 h",value:"0 * * * *"}],a.reportRanges=[{name:"APPLICATION_PREVIOUS_DAY",value:"yesterday"},{name:"APPLICATION_LAST_SEVEN_DAYS",value:"last7"},{name:"APPLICATION_LAST_THIRTY_DAYS",value:"last30"},{name:"APPLICATION_LAST_MONTH",value:"lastMonth"}],a.cronTypes=[{name:"APPLICATION_DAY",value:"daily"},{name:"APPLICATION_WEEK",value:"weekly"},{name:"APPLICATION_MONTH",value:"monthly"}],a.weekDays=[{name:"APPLICATION_MONDAY",value:1},{name:"APPLICATION_TUESDAY",value:2},{name:"APPLICATION_WEDNESDAY",value:3},{name:"APPLICATION_THURSDAY",value:4},{name:"APPLICATION_FRIDAY",value:5},{name:"APPLICATION_SATURDAY",value:6},{name:"APPLICATION_SUNDAY",value:0}],a.tempTodayCron=null,a.checkToday=function(){a.switchValues.today?(a.item.cron=angular.copy(a.tempTodayCron),a.item.cronType="currentDay"):(a.tempTodayCron=angular.copy(a.item.cron),a.item.cron=void 0,k())},a.monthDays=function(){for(var a=[],b=1;31>=b;b++)a.push(b);return a}(),a.hours=function(){for(var a=[],b=0;23>=b;b++)a.push(b);return a}(),a.rangeExec={weekDays:[],monthDay:null,hour:0,type:null},a.$watch("rangeExec",function(b){a.switchValues.today||k()},!0),a.next=function(){b.wizard().next()},a.previous=function(){b.wizard().previous()},a.exitValidation=function(a){return a},a.createItem=function(){return e.save(a.item).$promise.then(function(){c.path("/tools/scheduler/list")})["catch"](function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.scheduler.wizard",{url:"/wizard",templateUrl:"app/tools/scheduler/wizard/wizard.html",controller:"SchedulerWizardCtrl"})}]),angular.module("xCallyShuttleApp").controller("SoundListCtrl",["$scope","$http","socket","Modal","$q","FileUploader","$translate","xAlert","$cookieStore","$sce","Sound",function(a,b,c,d,e,f,g,h,i,j,k){a.Sound=k,a.isCollapsed=!0,a.downloadButtonClass="btn btn-xs blue-hoki",a["delete"]=d.confirm["delete"](function(a){b["delete"]("/api/sounds/"+a).success(function(a){}).error(function(a){console.log(a)})}),a.updateAudio=function(a,c){var d=e.defer();return b.put("/api/sounds/"+a,c).success(function(a){d.resolve()}).error(function(a){console.log(a.message),d.reject(a.message)}),d.promise},a.$on("$destroy",function(){c.unsyncUpdates("sound")}),a.initList=function(){b.get("/api/sounds").success(function(b){a.sounds=b.rows,b.rows.length||(a.isCollapsed=!1),c.syncUpdates("sound",a.sounds,function(){a.sounds.length||(a.isCollapsed=!1)})})};var l=a.uploader=new f({url:"/api/sounds",withCredentials:!0,headers:{Authorization:"Bearer "+i.get("token")}});l.filters.push({name:"customFilter",fn:function(a,b){return this.queue.length<10}}),l.onWhenAddingFileFailed=function(a,b,c){console.info("onWhenAddingFileFailed",a,b,c)},l.onAfterAddingFile=function(a){console.info("onAfterAddingFile",a)},l.onAfterAddingAll=function(a){console.info("onAfterAddingAll",a)},l.onBeforeUploadItem=function(a){console.info("onBeforeUploadItem",a)},l.onProgressItem=function(a,b){console.info("onProgressItem",a,b),a.isUploading=!0},l.onProgressAll=function(a){console.info("onProgressAll",a)},l.onSuccessItem=function(a,b,c,d){console.info("onSuccessItem",a,b,c,d),a.isUploading=!1},l.onErrorItem=function(a,b,c,d){console.info("onErrorItem",a,b,c,d),a.responseMessage=b,a.isUploading=!1},l.onCancelItem=function(a,b,c,d){console.info("onCancelItem",a,b,c,d),a.isUploading=!1},l.onCompleteItem=function(a,b,c,d){console.info("onCompleteItem",a,b,c,d),a.isUploading=!1},l.onCompleteAll=function(){console.info("onCompleteAll")}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.sounds.list",{url:"/list",templateUrl:"app/tools/sound/list/list.html",controller:"SoundListCtrl",authenticate:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.js"]})}]}})}]),angular.module("xCallyShuttleApp").factory("Sound",["$resource",function(a){return a("/api/sounds/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.sounds",{url:"/sounds",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:60}}})}]),angular.module("xCallyShuttleApp").controller("TagListCtrl",["$scope","$uibModal","Tag","gridOptions","$rootScope",function(a,b,c,d,e){a.initView=function(){var b={exporterCsvFilename:"tag.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/tags/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){var c=b.open({animation:!0,templateUrl:"app/tools/tag/list/list.create.modal.html",controller:"TagListCreateCtrl"});c.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("TagListCreateCtrl",["$scope","$translate","$uibModalInstance","Tag","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.tags.list",{url:"/list",templateUrl:"app/tools/tag/list/list.html",controller:"TagListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Tag",["$resource",function(a){return a("/api/tags/:id/:controller/:tag",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.tags",{url:"/tags",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:55}}})}]),angular.module("xCallyShuttleApp").controller("TagViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","$location","Tag","gridOptions","List","Company","Contact","uiGridConstants","usSpinnerService",function(a,b,c,d,e,f,g,h,i,j,k,l,m){function n(){m.stop("spinner-grid"),a.readyGrid=!0}a.getTag=function(){return g.get({id:e.id}).$promise.then(function(b){a.tag=b})["catch"](function(a){c.error(a)})},a.updateTag=function(){var b=angular.copy(a.tag);return g.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){c.error(a)})},a.initChat=function(){m.spin("spinner-grid");var b={enableRowSelection:!1,exporterCsvFilename:"tagChat.csv",columnDefs:[{name:"type"},{name:"status"},{name:"ChatWebsite.name",displayName:"APPLICATION_WEBSITE"},{name:"ChatVisitor.email",displayName:"APPLICATION_VISITOR"},{name:"action",width:40,buttons:[{"class":"green",name:"chatRoom",onClick:"grid.appScope.openRoom(row.entity.id, 'chatRoom')"}]}]};a.gridOptions=h.gridOptions(g,b,a,{controller:"chat",tag:a.tag.name},null,null,n())},a.initMail=function(){m.spin("spinner-grid");var b={enableRowSelection:!1,exporterCsvFilename:"tagMail.csv",columnDefs:[{name:"subject"},{name:"from"},{name:"account"},{name:"status"},{name:"action",width:40,buttons:[{"class":"green",name:"mailRoom",onClick:"grid.appScope.openRoom(row.entity.id, 'mailRoom')"}]}]};a.gridOptions=h.gridOptions(g,b,a,{controller:"mail",tag:a.tag.name},null,null,n())},a.initFax=function(){m.spin("spinner-grid");var b={enableRowSelection:!1,exporterCsvFilename:"tagFax.csv",columnDefs:[{name:"from"},{name:"account"},{name:"status"},{name:"action",width:40,buttons:[{"class":"green",name:"faxRoom",onClick:"grid.appScope.openRoom(row.entity.id, 'faxRoom')"}]}]};a.gridOptions=h.gridOptions(g,b,a,{controller:"fax",tag:a.tag.name},null,null,n())},a.initSms=function(){m.spin("spinner-grid");var b={enableRowSelection:!1,exporterCsvFilename:"tagSms.csv",columnDefs:[{name:"from"},{name:"status"},{name:"action",width:40,buttons:[{"class":"green",name:"smsRoom",onClick:"grid.appScope.openRoom(row.entity.id, 'smsRoom')"}]}]};a.gridOptions=h.gridOptions(g,b,a,{controller:"sms",tag:a.tag.name},null,null,n())},a.initContacts=function(){a.readyGrid=!1,m.spin("spinner-grid");var b;return i.get().$promise.then(function(b){return a.lists=[],b.rows.forEach(function(b,c){a.lists.push({value:b.id,label:b.name})}),j.get().$promise}).then(function(b){a.companies=[],b.rows.forEach(function(b,c){a.companies.push({value:b.id,label:b.name})})}).then(function(){b={enableRowSelection:!1,exporterCsvFilename:"tagContacts.csv",columnDefs:[{name:"firstName"},{name:"lastName"},{name:"phone"},{name:"email"},{name:"ListId",displayName:"APPLICATION_LIST",field:"List.name",filter:{type:l.filter.SELECT,selectOptions:a.lists}},{name:"CompanyId",displayName:"APPLICATION_COMPANY",field:"Company.name",filter:{type:l.filter.SELECT,term:e.companyId||null,selectOptions:a.companies}},{name:"action",width:40,buttons:[{"class":"blue-hoki",name:"profile",onClick:"grid.appScope.openContactTab(row.entity)"}]}]},a.gridOptions=h.gridOptions(g,b,a,{controller:"contacts",tag:a.tag.name},null,null,n())})["catch"](function(a){c.error(a)})},a.openRoom=function(b,c){var d=_.find(a.workspaces,{id:b,type:c});if(d)d.active=!0;else{var e;switch(c){case"mailRoom":e="icon-envelope";break;case"chatRoom":e="fa fa-users";break;case"faxRoom":e="fa fa-fax";break;case"smsRoom":e="glyphicon glyphicon-comment"}a.workspaces.push({id:b,type:c,"class":e,active:!0})}}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.tags.view",{url:"/view/:id",templateUrl:"app/tools/tag/view/view.html",controller:"TagViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.tags.view.settings",{url:"/settings",templateUrl:"app/tools/tag/view/view.settings.html"}).state("main.tools.tags.view.chat",{url:"/chat",templateUrl:"app/tools/tag/view/view.chat.html"}).state("main.tools.tags.view.mail",{url:"/mail",templateUrl:"app/tools/tag/view/view.mail.html"}).state("main.tools.tags.view.fax",{url:"/fax",templateUrl:"app/tools/tag/view/view.fax.html"}).state("main.tools.tags.view.sms",{url:"/sms",templateUrl:"app/tools/tag/view/view.sms.html"}).state("main.tools.tags.view.contacts",{url:"/contacts",templateUrl:"app/tools/tag/view/view.contacts.html"})}]),angular.module("xCallyShuttleApp").controller("TemplateListCtrl",["$scope","Template","gridOptions",function(a,b,c){a.initView=function(){var d={exporterCsvFilename:"templates.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/templates/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.templates.list",{url:"/list",templateUrl:"app/tools/template/list/list.html",controller:"TemplateListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Template",["$resource",function(a){return a("/api/templates/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.templates",{url:"/templates",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:56}}})}]),angular.module("xCallyShuttleApp").controller("TemplateViewCtrl",["$scope","$rootScope","$http","$translate","$stateParams","xAlert","Template","templateVariable",function(a,b,c,d,e,f,g,h){a.initItem=function(){CKEDITOR.plugins.addExternal("richparams","/assets/plugins/ckeditor-richparams/"),a.options={language:b.language,allowedContent:!0,entities:!1,skin:"office2013",contentsCss:"/assets/css/global/richparams.css",extraPlugins:"richparams,autogrow",autoGrow_minHeight:450,richparams:h,disableNativeSpellChecker:!1,toolbar:[{name:"clipboard",items:["Cut","Copy","Paste","PasteText","PasteFromWord","-","Undo","Redo"]},{name:"links",items:["Link","Unlink","Anchor"]},{name:"insert",items:["Image","Table","HorizontalRule","SpecialChar"]},{name:"tools",items:["Maximize"]},{name:"document",items:["Source"]},"/",{name:"basicstyles",items:["Bold","Italic","Underline","Strike","Subscript","Superscript","-","RemoveFormat"]},{name:"paragraph",items:["NumberedList","BulletedList","-","Outdent","Indent","-","Blockquote"]},{name:"styles",items:["Styles","Format"]},"/",{name:"motion",items:["voice","chat","mail","sms","openchannel","fax"]}]},a.form={},a.item={},a.item=g.get({id:e.id})},a.updateItem=function(){return g.update(a.item).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.templates.view",{url:"/view/:id",templateUrl:"app/tools/template/view/view.html",controller:"TemplateViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.templates.view.settings",{url:"/settings",templateUrl:"app/tools/template/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("TemplateWizardCtrl",["$scope","$rootScope","$location","$http","WizardHandler","xAlert","Template","templateVariable",function(a,b,c,d,e,f,g,h){a.initWizard=function(){CKEDITOR.plugins.addExternal("richparams","/assets/plugins/ckeditor-richparams/"),a.options={language:b.language,allowedContent:!0,entities:!1,skin:"office2013",contentsCss:"/assets/css/global/richparams.css",extraPlugins:"richparams,autogrow",autoGrow_minHeight:450,disableNativeSpellChecker:!1,richparams:h,toolbar:[{name:"clipboard",items:["Cut","Copy","Paste","PasteText","PasteFromWord","-","Undo","Redo"]},{name:"links",items:["Link","Unlink","Anchor"]},{name:"insert",items:["Image","Table","HorizontalRule","SpecialChar"]},{name:"tools",items:["Maximize"]},{name:"document",items:["Source"]},"/",{name:"basicstyles",items:["Bold","Italic","Underline","Strike","Subscript","Superscript","-","RemoveFormat"]},{name:"paragraph",items:["NumberedList","BulletedList","-","Outdent","Indent","-","Blockquote"]},{name:"styles",items:["Styles","Format"]},"/",{name:"motion",items:["voice","chat","mail","sms","openchannel","fax"]}]},a.item={},a.form={}},a.exitValidation=function(a){return a},a.createItem=function(){return g.save({name:a.item.name,description:a.item.description,subject:a.item.subject||null,html:a.item.html||null,text:a.item.text||null}).$promise.then(function(){c.path("/tools/templates/list")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.templates.wizard",{url:"/wizard",templateUrl:"app/tools/template/wizard/wizard.html",controller:"TemplateWizardCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools",{url:"/tools",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:13}}})}]),angular.module("xCallyShuttleApp").controller("TriggerListCtrl",["$scope","$http","$translate","Modal","xAlert","Trigger","gridOptions",function(a,b,c,d,e,f,g){a.onText="On",a.offText="Off",a.isActive=!0,a.size="mini",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initView=function(){var b={exporterCsvFilename:"Triggers.csv",columnDefs:[{name:"name"},{name:"description"},{name:"channel"},{name:"status",cellTemplate:'<div class="centered-uigrid-td"><input data-ng-change="grid.appScope.updateItem(row.entity)", bs-switch ng-model="row.entity.status" type="checkbox" switch-active="{{ grid.appScope.isActive }}" switch-on-text="{{ grid.appScope.onText }}" switch-off-text="{{ grid.appScope.offText }}" switch-on-color="{{ grid.appScope.onColor }}" switch-off-color="{{ grid.appScope.offColor }}" switch-animate="{{ grid.appScope.animate }}" switch-size="{{ grid.appScope.size }}" switch-label="{{ grid.appScope.label }}" switch-icon="{{ grid.appScope.icon }}" switch-radio-off="{{ grid.appScope.radioOff }}" switch-label-width="{{ grid.appScope.labelWidth }}" switch-handle-width="{{ grid.appScope.handleWidth }}"></div>',width:100,enableFiltering:!1},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/triggers/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=g.gridOptions(f,b,a)},a.updateItem=function(a){return f.update({id:a.id},a).$promise.then(function(){e.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.triggers.list",{url:"/list",templateUrl:"app/tools/trigger/list/list.html",controller:"TriggerListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Trigger",["$resource",function(a){return a("/api/triggers/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.triggers",{url:"/triggers",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:50}}})}]),angular.module("xCallyShuttleApp").controller("TriggerViewCtrl",["$scope","$stateParams","$http","$translate","xAlert","triggers","Trigger","$location",function(a,b,c,d,e,f,g,h){a.$triggers=f,a.recordSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.forms={general:{}},a.addCondition=function(b){a.trigger[b].push({field:"",operator:"",value:""})},a.removeCondition=function(b,c){a.trigger[b].splice(c,1)},a.addAction=function(){a.trigger.Actions.push({action:"",data1:"",data2:"",data3:"",data4:"",data5:""})},a.resetActionData=function(a){a.data1="",a.data2="",a.data3="",a.data4="",a.data5=""},a.removeAction=function(b){a.trigger.Actions.splice(b,1)},a.initView=function(){return g.get({id:b.id}).$promise.then(function(b){a.trigger=b})["catch"](function(a){e.error(a),h.path("/tools/triggers/list")})},a.updateTrigger=function(){return g.update({id:b.id},a.trigger).$promise.then(function(){e.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){console.error(a),e.error(a)})},a.exitValidation=function(b){return!(!b||!a.trigger.Actions.length)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.triggers.view",{url:"/view/:id",templateUrl:"app/tools/trigger/view/view.html",controller:"TriggerViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]})}]}}).state("main.tools.triggers.view.settings",{url:"/settings",templateUrl:"app/tools/trigger/view/view.settings.html"}).state("main.tools.triggers.view.routes",{url:"/routes",templateUrl:"app/tools/trigger/view/view.routes.html"}).state("main.tools.triggers.view.application",{url:"/application",templateUrl:"app/tools/trigger/view/view.application.html"})}]),angular.module("xCallyShuttleApp").controller("TriggerWizardCtrl",["$scope","$http","$location","xAlert","triggers","WizardHandler","Trigger",function(a,b,c,d,e,f,g){a.$triggers=e,a.statusSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.tempData={voice:{},mail:{},chat:{},fax:{}},a.item={All:[],Any:[],Actions:[]},a.forms={general:void 0,settings:void 0},a.addCondition=function(b){a.item[b].push({field:"",operator:"",value:""})},a.removeCondition=function(b,c){a.item[b].splice(c,1)},a.addAction=function(){a.item.Actions.push({action:"",data1:"",data2:"",data3:"",data4:"",data5:""})},a.resetActionData=function(a){a.data1="",a.data2="",a.data3="",a.data4="",a.data5=""},a.removeAction=function(b){a.item.Actions.splice(b,1)},a.$watch("item.channel",function(b,c){c&&(a.tempData[c].All=_.clone(a.item.All,!0),a.tempData[c].Any=_.clone(a.item.Any,!0),a.tempData[c].Actions=_.clone(a.item.Actions,!0)),a.item.All=a.tempData[b].All?a.tempData[b].All:[],a.item.Any=a.tempData[b].Any?a.tempData[b].Any:[],a.item.Actions=a.tempData[b].Actions?a.tempData[b].Actions:[]},!0),a.item.channel="voice",a.createItem=function(){return g.save(a.item).$promise.then(function(){c.path("/tools/triggers/list")})["catch"](function(a){console.error(a),d.error(a)})},a.next=function(){f.wizard().next()},a.previous=function(){f.wizard().previous()},a.exitValidation=function(a){return a},a.exitSettingsValidation=function(b){return!(!b||!a.item.Actions.length)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.triggers.wizard",{url:"/wizard",templateUrl:"app/tools/trigger/wizard/wizard.html",controller:"TriggerWizardCtrl"})}]),angular.module("xCallyShuttleApp").controller("TrunkListCtrl",["$scope","Trunk","gridOptions","xAlert","$translate","socket",function(a,b,c,d,e,f){function g(){f.socket.on("voice:trunks",function(b){var c=_.find(a.gridOptions.data,{name:b.name});c&&(c.status=b.status,c.peerstatus=b.peerstatus)})}a.isActive=!0,a.size="mini",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initView=function(){var d={exporterCsvFilename:"Trunks.csv",columnDefs:[{name:"name"},{name:"active",cellTemplate:'<div class="centered-uigrid-td"><input data-ng-change="grid.appScope.updateItem(row.entity)", bs-switch ng-model="row.entity.active" type="checkbox" switch-active="{{ grid.appScope.isActive }}" switch-on-text="{{ \'APPLICATION_YES\' | translate }}" switch-off-text="{{ \'APPLICATION_NO\' | translate }}" switch-on-color="{{ grid.appScope.onColor }}" switch-off-color="{{ grid.appScope.offColor }}" switch-animate="{{ grid.appScope.animate }}" switch-size="{{ grid.appScope.size }}" switch-label="{{ grid.appScope.label }}" switch-icon="{{ grid.appScope.icon }}" switch-radio-off="{{ grid.appScope.radioOff }}" switch-label-width="{{ grid.appScope.labelWidth }}" switch-handle-width="{{ grid.appScope.handleWidth }}"></div>'},{name:"host"},{name:"description"},{name:"status",cellTemplate:'<div class="centered-uigrid-td" data-ng-if="row.entity.active && row.entity.registry && row.entity.status">{{row.entity.status}}</div>'},{name:"peerstatus",cellTemplate:'<div class="centered-uigrid-td" data-ng-if="row.entity.active && row.entity.peerstatus">{{row.entity.peerstatus}}</div>'},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/trunks/view/{{row.entity.name}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.name)"}]}]};a.gridOptions=c.gridOptions(b,d,a,null,null,null,g)},a.updateItem=function(a){return b.update({id:a.name},a).$promise.then(function(){d.show(e.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){console.error(a),d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.trunks.list",{url:"/list",templateUrl:"app/tools/trunk/list/list.html",controller:"TrunkListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Trunk",["$resource",function(a){return a("/api/trunks/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.trunks",{url:"/trunks",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:52}}})}]),angular.module("xCallyShuttleApp").controller("TrunkViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","socket","$location","Trunk","VoiceContext",function(a,b,c,d,e,f,g,h,i){a.activeSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.initView=function(){return h.get({id:e.id}).$promise.then(function(b){b.nat=b.nat?b.nat.split(","):[],b.allow=b.allow?b.allow.split(";"):[],b.insecure=b.insecure?b.insecure.split(","):[],b.transport=b.transport?b.transport.split(","):[],a.trunk=b}).then(function(){f.socket.on("voice:trunk",function(b){a.trunk.name===b.username&&(a.trunk.status=b.status,a.trunk.peerstatus=b.peerstatus)})})["catch"](function(a){console.error(a),g.path("/tools/trunks/list")})},a.updateTrunk=function(){""===a.trunk.password&&delete a.trunk.password;var b=angular.copy(a.trunk);return b.nat=b.nat.join(","),b.allow=b.allow.join(";"),b.insecure=b.insecure.join(","),b.transport=b.transport.join(","),h.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){c.error(a)})},a.getContexts=function(){return i.get().$promise.then(function(b){a.voiceContexts=b.rows})["catch"](function(a){c.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.trunks.view",{url:"/view/:id",templateUrl:"app/tools/trunk/view/view.html",controller:"TrunkViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.trunks.view.settings",{url:"/settings",templateUrl:"app/tools/trunk/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("TrunkWizardCtrl",["$scope","WizardHandler","$location","xAlert","Trunk",function(a,b,c,d,e){a.initWizard=function(){a.forms={},a.item={context:"from-voip-provider"}},a.next=function(){b.wizard().next()},a.previous=function(){b.wizard().previous()},a.exitValidation=function(a){return a},a.createItem=function(){return a.item.fromuser=a.item.defaultuser,a.item.fromdomain=a.item.host,e.save(a.item).$promise.then(function(){c.path("/tools/trunks/list")})["catch"](function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.trunks.wizard",{url:"/wizard",templateUrl:"app/tools/trunk/wizard/wizard.html",controller:"TrunkWizardCtrl"})}]),angular.module("xCallyShuttleApp").controller("VariableListCtrl",["$scope","$uibModal","Variable","gridOptions",function(a,b,c,d){a.initView=function(){var b={exporterCsvFilename:"variables.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/variables/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){var c=b.open({animation:!0,templateUrl:"app/tools/variable/list/list.create.modal.html",controller:"VariableListCreateCtrl"});c.result.then(function(b){console.log(b),a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("VariableListCreateCtrl",["$scope","$translate","$uibModalInstance","Variable","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.variables.list",{url:"/list",templateUrl:"app/tools/variable/list/list.html",controller:"VariableListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Variable",["$resource",function(a){return a("/api/variables/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.variables",{url:"/variables",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:54}}})}]),angular.module("xCallyShuttleApp").controller("VariableViewCtrl",["$scope","$translate","$stateParams","xAlert","Variable",function(a,b,c,d,e){a.getVariable=function(){return e.get({id:c.id}).$promise.then(function(b){a.variable=b})["catch"](function(a){d.error(a)})},a.updateVariable=function(){return e.update({id:c.id},a.variable).$promise.then(function(){d.show(b.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.variables.view",{url:"/view/:id",templateUrl:"app/tools/variable/view/view.html",controller:"VariableViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.variables.view.settings",{url:"/settings",templateUrl:"app/tools/variable/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("YourdashboardListCloneModalCtrl",["$scope","$uibModalInstance","name",function(a,b,c){a.forms={dashboard:{}},a.item={name:c},a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("YourdashboardListCreateModalCtrl",["$scope","$uibModalInstance",function(a,b){a.forms={dashboard:void 0},a.item={},a.ok=function(){a.item.model=JSON.stringify({title:a.item.name}),b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("YourdashboardListCtrl",["$scope","$http","$translate","xAlert","Modal","$uibModal","$log","YourDashboard","gridOptions",function(a,b,c,d,e,f,g,h,i){a.initView=function(){var b={exporterCsvFilename:"voice_contexts.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:125,buttons:[{"class":"green",href:"/tools/yourdashboards/show/{{row.entity.id}}",name:"view"},{"class":"blue-hoki",href:"/tools/yourdashboards/view/{{row.entity.id}}/settings",name:"settings"},{"class":"{{row.entity.defaultEntry ? 'red-sunglo disabled' : 'red-sunglo'}}",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"},{"class":"purple",name:"clone",onClick:"grid.appScope.clone(row.entity.id,row.entity.name)"}]}]};a.gridOptions=i.gridOptions(h,b,a)},a.create=function(){var b=f.open({animation:!0,templateUrl:"app/tools/yourdashboard/list/create.modal.html",controller:"YourdashboardListCreateModalCtrl"});b.result.then(function(b){return h.save(b).$promise.then(function(){d.show(c.instant("MESSAGE_WELL_DONE"),"success"),a.gridOptions.getPage()})["catch"](function(a){console.error(a),d.error(a)})},function(){g.info("Modal dismissed at: "+new Date)})},a.clone=function(b,e){var i=f.open({animation:!0,templateUrl:"app/tools/yourdashboard/list/clone.modal.html",controller:"YourdashboardListCloneModalCtrl",resolve:{name:function(){return e+"_copy"}}});i.result.then(function(e){return h.save({id:b,controller:"clone"},e).$promise.then(function(){ +d.show(c.instant("MESSAGE_WELL_DONE"),"success"),a.gridOptions.getPage()})["catch"](function(a){console.error(a),d.error(a)})},function(){g.info("Modal dismissed at: "+new Date)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.yourdashboards.list",{url:"/list",templateUrl:"app/tools/yourdashboard/list/list.html",controller:"YourdashboardListCtrl",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:59}}})}]),angular.module("xCallyShuttleApp").controller("LeaveEditedDashboardModalCtrl",["$scope","$uibModalInstance",function(a,b){a.close=function(){b.close()},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("YourdashboardShowCtrl",["$scope","$rootScope","localStorageService","xAlert","$translate","Auth","$stateParams","$location","$uibModal","$log","YourDashboard","$interval",function(a,b,c,d,e,f,g,h,i,j,k,l){function m(){return k.get({id:g.id,controller:"values"}).$promise.then(function(){})["catch"](function(a){console.error("Error retrieving widgets values",a)})}function n(a){var b,c;if(!a)return 0;for(a=a.toString(),b=c=a.length;b--;){var d=a[b].charCodeAt();d>=56320&&57343>=d&&b--,d>127&&2047>=d?c++:d>2047&&65535>=d&&(c+=2)}return c}a.Auth=f,a.editMode=!1;var o;a.getDashboard=function(){return k.get({id:g.id}).$promise.then(function(b){!b[f.getRole()]&&h.path("/landing");var c={name:"dashboard",structure:"4-8",enableconfirmdelete:!0,maximizable:!0,collapsible:!0};b.model=JSON.parse(b.model||'{"title":"Dashboard"}'),b.editable=!(!f.isAdmin()||!b.editable),a.dashboard=_.merge(c,b),m(),o=l(function(){m()},1e3*parseInt(a.dashboard.timeout||5))})["catch"](function(a){h.path("/tools/yourdashboards/list")})},a.$on("$locationChangeStart",function(b,c,d){if(a.editMode){b.preventDefault();var e=i.open({animation:!0,templateUrl:"app/tools/yourdashboard/show/leaveEditedDashboard.modal.html",controller:"LeaveEditedDashboardModalCtrl"});e.result.then(function(b){a.editMode=!1;var d=location.protocol+"//"+location.host;h.path(c.replace(d,""))},function(){j.info("Modal dismissed at: "+new Date)})}});var p=function(c,f,h){var i=angular.copy(a.dashboard);return i.name=a.dashboard.model.title,i.model=JSON.stringify(i.model),n(i.model)<=64e3?k.update({id:g.id},i).$promise.then(function(){d.show(e.instant("MESSAGE_DASHBOARD_SAVED")+"!","success"),a.editMode=!1})["catch"](function(b){d.error(b),i.model=JSON.parse(i.model),i.name="dashboard",a.dashboard=i}):(d.show(e.instant("MESSAGE_DASHBOARD_TOO_BIG")+"!","warning"),void b.$broadcast("adfToggleEditMode"))};a.$on("adfDashboardChanged",p),a.$on("adfIsEditMode",function(){a.editMode=!0}),a.$on("$destroy",function(){l.cancel(o)})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.yourdashboards.show",{url:"/show/:id",templateUrl:"app/tools/yourdashboard/show/show.html",controller:"YourdashboardShowCtrl",data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:2}}})}]),angular.module("xCallyShuttleApp").controller("YourdashboardViewCtrl",["$scope","$rootScope","xAlert","$translate","$stateParams","$location","YourDashboard",function(a,b,c,d,e,f,g){a.radioSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.getDashboard=function(){return g.get({id:e.id}).$promise.then(function(b){delete b.model,a.dashboard=b})["catch"](function(){f.path("/tools/yourdashboards/list")})},a.updateDashboard=function(){var b=angular.copy(a.dashboard);return g.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(d){c.error(d),a.dashboard=b})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.yourdashboards.view",{url:"/view/:id",templateUrl:"app/tools/yourdashboard/view/view.html",controller:"YourdashboardViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]},data:{permissions:{only:["admin","user"],redirectTo:"landing",id:59}}}).state("main.tools.yourdashboards.view.settings",{url:"/settings",templateUrl:"app/tools/yourdashboard/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").factory("YourDashboard",["$resource",function(a){return a("/api/dashboards/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.yourdashboards",{url:"/yourdashboards",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("ZendeskListCtrl",["$scope","ZendeskAccount","gridOptions","xAlert","$translate",function(a,b,c,d,e){a.initView=function(){var d={exporterCsvFilename:"zendesk_account.csv",columnDefs:[{name:"name",displayName:"APPLICATION_NAME"},{name:"username"},{name:"remoteUri",displayName:"APPLICATION_URI"},{name:"action",buttons:[{"class":"blue-hoki",href:"/zendesk/view/{{row.entity.id}}/account",name:"profile"},{"class":"green-jungle",name:"check",onClick:"grid.appScope.checkAccount(row.entity.id)"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.checkAccount=function(a){return b.check({id:a}).$promise.then(function(){d.show(e.instant("MESSAGE_ACCOUNT_VERIFIED"),"success")})["catch"](function(){d.show(e.instant("MESSAGE_ACCOUNT_INVALID"),"danger")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.list",{url:"/list",templateUrl:"app/zendesk/list/list.html",controller:"ZendeskListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.view.configurations",{url:"/configurations",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("ZendeskViewConfigurationListCtrl",["$scope","$stateParams","$translate","gridOptions","ZendeskConfiguration","$uibModal",function(a,b,c,d,e,f){a.initView=function(){var c={exporterCsvFilename:"zendesk_configurations.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:125,buttons:[{"class":"blue-hoki",href:"/zendesk/view/{{row.entity.AccountId}}/configurations/view/{{row.entity.id}}",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(e,c,a,{accountId:b.id})},a.createItem=function(){var b=f.open({animation:!0,templateUrl:"app/zendesk/view/configuration/list/create.modal.html",controller:"ZendeskCreateConfigurationCtrl"});b.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("ZendeskCreateConfigurationCtrl",["$scope","$translate","$uibModalInstance","ZendeskConfiguration","xAlert","$stateParams","channel",function(a,b,c,d,e,f,g){a.form={},a.item={},a.channels=g,a.item.channel="voice",a.item.type="Queue",a.save=function(){return d.save({accountId:f.id},a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.view.configurations.list",{url:"/list",templateUrl:"app/zendesk/view/configuration/list/list.html",controller:"ZendeskViewConfigurationListCtrl"})}]),angular.module("xCallyShuttleApp").controller("ZendeskViewConfigurationViewCtrl",["$scope","$stateParams","$filter","$translate","socket","ZendeskConfiguration","xAlert","variable","Variable","ZendeskAccount","Tag","ZendeskField",function(a,b,c,d,e,f,g,h,i,j,k,l){a.$on("$destroy",function(){e.unsyncUpdates("zendesk_field")}),a.config={autoHideScrollbar:!1,theme:"dark",advanced:{updateOnContentResize:!0},setHeight:300,scrollInertia:0},a.fieldType=[{type:"string",title:"String"},{type:"variable",title:"Variable"},{type:"customVariable",title:"Custom Variable"}],a.descFieldType=[{type:"string",title:"String"},{type:"keyValue",title:"Key Value"}],a.groupVariableByGroup=function(a){switch(a.group){case"voice_queue":return"Voice: Queue";case"voice_outbound":return"Voice: Outbound";default:return"Other"}},a.initView=function(){a.configurationName="",a.subjectConfig=[],a.descriptionConfig=[],a.fieldConfig=[],a.selectedTags={tags:[]},a.variables=h},a.getConfiguration=function(){return f.get({accountId:b.id,id:b.configurationId}).$promise.then(function(b){a.configurationName=b.name,a.subjectConfig=b.Subject,a.descriptionConfig=b.Description,a.fieldConfig=b.Field,a.selectedTags={tags:_.map(b.Tags,function(a){return a.id})},e.socket.on("zendesk_field:remove",function(b){_.remove(a.subjectConfig,{id:b.id}),_.remove(a.descriptionConfig,{id:b.id}),_.remove(a.fieldConfig,{id:b.id})})})["catch"](function(a){g.error(a)})},a.getCustomVariables=function(){return i.get().$promise.then(function(b){a.customVariables=b.rows})["catch"](function(a){g.error(a)})},a.getFields=function(){return j.fields({id:b.id}).$promise.then(function(b){a.accountFields=c("zendesk")(b)})["catch"](function(a){g.error(a)})},a.getTags=function(){return k.get().$promise.then(function(b){a.tags=b.rows})["catch"](function(a){g.error(a)})},a.addItem=function(c){var d={};switch(c){case"subject":case"description":d={type:"string",content:""};break;case"field":d={content:""}}return f.save({accountId:b.id,id:b.configurationId,controller:c},d).$promise.then(function(b){switch(c){case"subject":a.subjectConfig.push(b);break;case"description":a.descriptionConfig.push(b);break;case"field":a.fieldConfig.push(b)}})["catch"](function(a){g.error(a)})},a.changeType=function(b){"variable"===b.type?(b.content="",b.variableName=""):"string"===b.type?(b.VariableId=null,b.variableName=""):"customVariable"===b.type&&(b.VariableId=null,b.content=""),a.updateField(b)},a.updateField=function(a){return l.update({accountId:b.id,configurationId:b.configurationId,id:a.id},a).$promise.then(function(){})["catch"](function(a){g.error(a)})},a.removeItem=function(a){return l["delete"]({accountId:b.id,configurationId:b.configurationId,id:a.id}).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){g.error(a)})},a.changeDescType=function(b){"keyValue"===b.type?(b.content="","string"===b.keyType?(b.VariableId=null,b.variableName=""):"variable"===b.keyType?(b.keyContent="",b.VariableId=null):"customVariable"===b.keyType&&(b.keyContent="",b.variableName="")):"string"===b.type&&(b.VariableId=null,b.variableName="",b.key="",b.keyContent=""),a.updateField(b)},a.changeFieldType=function(b){if(b.content="",b.variableName="",b.nameField="",b.VariableId=null,b.idField){var c=_.find(a.accountFields,"id",b.idField);c&&(c.system_field_options?(b.customField=!1,b.nameField=c.title.toLowerCase()):b.customField=!0)}a.updateField(b)},a.updateTags=function(){return f.update({accountId:b.id,id:b.configurationId,controller:"tags"},a.selectedTags.tags).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE")+".","success")})["catch"](function(a){g.error(a)})},a.getSystemFieldOptions=function(b){if(b){var c=_.find(a.accountFields,"id",b);return c?c.system_field_options?c.system_field_options:null:void 0}}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.view.configurations.view",{url:"/view/:configurationId",templateUrl:"app/zendesk/view/configuration/view/view.html",controller:"ZendeskViewConfigurationViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("ZendeskViewCtrl",["$scope","$stateParams","$translate","xAlert","Modal","ZendeskAccount",function(a,b,c,d,e,f){a.initView=function(){return f.get({id:b.id}).$promise.then(function(b){a.account=b})["catch"](function(a){d.error(a)})},a.updateItem=function(){return f.update({id:b.id},a.account).$promise.then(function(){d.show(c.instant("MESSAGE_WELL_DONE")+".","success")})["catch"](function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.view",{url:"/view/:id",templateUrl:"app/zendesk/view/view.html",controller:"ZendeskViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.zendesk.view.account",{url:"/account",templateUrl:"app/zendesk/view/view.account.html"})}]),angular.module("xCallyShuttleApp").controller("ZendeskWizardCtrl",["$scope","$http","$location","$translate","xAlert","WizardHandler","ZendeskAccount",function(a,b,c,d,e,f,g){a.translate=d,a.initWizard=function(){a.$translate=d,a.forms={},a.item={},a.item.authType="password",a.item.serverUrl=c.protocol()+"://"+location.host},a.next=function(){f.wizard().next()},a.exitValidation=function(a){return a},a.createItem=function(){return g.save(a.item).$promise.then(function(){e.show(d.instant("MESSAGE_WELL_DONE")+".","success"),c.path("/zendesk/list")})["catch"](function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.wizard",{url:"/wizard",templateUrl:"app/zendesk/wizard/wizard.html",controller:"ZendeskWizardCtrl"})}]),angular.module("xCallyShuttleApp").factory("ZendeskAccount",["$resource",function(a){return a("/api/zendesk/accounts/:id/:controller",{id:"@id"},{update:{method:"PUT"},fields:{params:{controller:"fields"},isArray:!0},check:{params:{controller:"check"}}})}]).factory("ZendeskConfiguration",["$resource",function(a){return a("/api/zendesk/accounts/:accountId/configurations/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]).factory("ZendeskField",["$resource",function(a){return a("/api/zendesk/accounts/:accountId/configurations/:configurationId/fields/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk",{url:"/zendesk",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").factory("AuthResource",["$resource",function(a){return a("/auth/local/:controller/:controller2/:param",{param:"@param"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("Auth",["$location","$rootScope","$http","User","$cookieStore","$q","localStorageService",function(a,b,c,d,e,f,g){var h={};return e.get("token")&&(h=d.me()),{login:function(a,i){var j=i||angular.noop,k=f.defer();return c.post("/auth/local",{name:a.name,password:a.password,remember:a.remember}).success(function(a){return e.put("role",a.role),e.put("token",a.token),e.put("userId",a.userId),g.set("loggedIn",!0),h=d.me({},function(){b.$broadcast("login")}),k.resolve(a),j()}).error(function(a){return this.logout(),k.reject(a),j(a)}.bind(this)),k.promise},recover:function(a,b){var d=b||angular.noop,e=f.defer();return c.post("/auth/local/recover",{email:a.email}).success(function(a){return e.resolve(a),d()}).error(function(a){return e.reject(a),d(a)}.bind(this)),e.promise},reset:function(a,b){var d=b||angular.noop,e=f.defer();return c.post("/auth/local/reset/"+a.token,{password:a.password}).success(function(a){return e.resolve(a),d()}).error(function(a){return e.reject(a),d(a)}.bind(this)),e.promise},loginWithToken:function(a,c,f){e.put("role",f),e.put("token",a),e.put("userId",c),h=d.me({},function(){b.$broadcast("login")})},logout:function(){e.remove("role"),e.remove("token"),e.remove("userId"),g.set("loggedIn"),h={},b.$broadcast("logout")},createUser:function(a,b){var c=b||angular.noop;return d.save(a,function(b){return e.put("token",b.token),h=d.me(),c(a)},function(a){return this.logout(),c(a)}.bind(this)).$promise},changePassword:function(a,b,c){var e=c||angular.noop;return d.changePassword({id:h.id},{oldPassword:a,newPassword:b},function(a){return e(null,a)},function(a){return e(a)}).$promise},getCurrentUser:function(){return h},isLoggedIn:function(){return h.hasOwnProperty("role")},isLoggedInAsync:function(a){h.hasOwnProperty("$promise")?h.$promise.then(function(){a(!0)})["catch"](function(){a(!1)}):a(h.hasOwnProperty("role")?!0:!1)},isAdmin:function(){return"admin"===(e.get("role")||h.role)},isUser:function(){return"user"===(e.get("role")||h.role)},isAgent:function(){return"agent"===(e.get("role")||h.role)},getRole:function(){return h.role},getToken:function(){return e.get("token")}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderAccountEmail",["$compile","$timeout","MailAccount","xAlert","Template",function(a,b,c,d,e){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/accountEmail/actionBuilder.html",compile:function(f){function g(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var h,i;return h=f.contents().remove(),function(f,j){f.randomName=g(),b(function(){return c.get().$promise.then(function(a){return _.forEach(a.rows,function(a){a.id=String(a.id)}),f.accounts=a,e.get().$promise}).then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),f.templates=a.rows})["catch"](function(a){d.error(a)})}),i||(i=a(h)),j.append(i(f,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderAccountSms",["$compile","$timeout","SmsAccount","xAlert",function(a,b,c,d){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/accountSms/actionBuilder.html",compile:function(e){function f(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var g,h;return g=e.contents().remove(),function(e,i){e.randomName=f(),b(function(){return c.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),e.accounts=a})["catch"](function(a){d.error(a)})}),h||(h=a(g)),i.append(h(e,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderAccountTemplate",["$compile","xAlert","$http","$timeout","Template","MailAccount",function(a,b,c,d,e,f){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/accountTemplate/actionBuilder.html",compile:function(c){function g(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var h,i;return h=c.contents().remove(),function(c,j){c.randomName=g(),d(function(){return e.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),c.templates=a}).then(function(){return f.get().$promise}).then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),c.accounts=a})["catch"](function(a){b.error(a)})}),i||(i=a(h)),j.append(i(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderClose",["$compile",function(a){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/close/actionBuilder.html",compile:function(b){function c(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var d,e;return d=b.contents().remove(),function(b,f){b.randomName=c(),e||(e=a(d)),f.append(e(b,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderCm",["$compile","xAlert","$http","$timeout","$translate","List",function(a,b,c,d,e,f){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/cm/actionBuilder.html",compile:function(c){var e,g;return e=c.contents().remove(),function(c,h){function i(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}c.randomName=i(),c["switch"]={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},d(function(){return f.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),c.lists=a.rows})["catch"](function(a){b.error(a)})}),g||(g=a(e)),h.append(g(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderEmail",["$compile","xAlert","$timeout","Template",function(a,b,c,d){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/email/actionBuilder.html",compile:function(e){function f(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var g,h;return g=e.contents().remove(),function(e,i){e.randomName=f(),c(function(){return d.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),e.templates=a.rows})["catch"](function(a){b.error(a)})}),h||(h=a(g)),i.append(h(e,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderForward",["$compile",function(a){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/forward/actionBuilder.html",compile:function(b){function c(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var d,e;return d=b.contents().remove(),function(b,f){b.randomName=c(),e||(e=a(d)),f.append(e(b,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderHttp",["$compile",function(a){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/http/actionBuilder.html",compile:function(b){function c(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var d,e;return d=b.contents().remove(),function(b,f){b.randomName=c(),b.methods=["GET","POST"],e||(e=a(d)),f.append(e(b,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderIntegration",["$compile","xAlert","$http","$timeout","Integration","$translate","ZendeskAccount","DeskAccount","SalesforceAccount","FreshdeskAccount","SugarcrmAccount",function(a,b,c,d,e,f,g,h,i,j,k){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/integration/actionBuilder.html",compile:function(c){function f(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var l,m;return l=c.contents().remove(),function(c,n){c.randomName=f(),d(function(){return e.get({active:1}).$promise.then(function(a){_.remove(a.rows,function(a){return"iframe"===a.state}),c.integrations=a.rows,c.element.data1&&o()})["catch"](function(a){b.error(a)})});var o=function(){var a;switch(c.element.data1){case"zendesk":a=g;break;case"desk":a=h;break;case"salesforce":a=i;break;case"freshdesk":a=j;break;case"sugarcrm":a=k}return a?a.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),c.accounts=a.rows,c.element.data2&&p()})["catch"](function(a){b.error(a)}):void 0},p=function(){var a=_.find(c.accounts,{id:c.element.data2}).Configurations;_.forEach(a,function(a){a.id=String(a.id)}),c.configurations=a};c.changeIntegration=function(){c.element.data2="",o()},c.changeAccount=function(){c.element.data3="",p()},m||(m=a(l)),n.append(m(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderJscripty",["$compile","xAlert","$http","$timeout","Template","$translate","JscriptyProject",function(a,b,c,d,e,f,g){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/jscripty/actionBuilder.html",compile:function(c){var e,f;return e=c.contents().remove(),function(c,h){function i(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}c.randomName=i(),d(function(){return g.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),c.projects=a.rows})["catch"](function(a){b.error(a)})}),f||(f=a(e)),h.append(f(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderMotionBar",["$compile","xAlert","$http","$timeout","Template",function(a,b,c,d,e){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/motionbar/actionBuilder.html",compile:function(c){var f,g;return f=c.contents().remove(),function(c,h){function i(){return e.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),c.templates=a.rows})["catch"](function(a){b.error(a)})}function j(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}c.randomName=j(),c.motionActions=[{name:"Popup",value:"0"},{name:"URL",value:"1"},{name:"Windows App",value:"2"}],c.changeMode=function(){c.element.data2="",c.element.data3="",i()},d(function(){return i()}),g||(g=a(f)),h.append(g(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderStatus",["$compile",function(a){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/status/actionBuilder.html",compile:function(b){var c,d;return c=b.contents().remove(),function(b,e){function f(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}b.randomName=f(),b.states=[{name:"APPLICATION_STATUS_NEW",value:"NEW"},{name:"APPLICATION_STATUS_OPEN",value:"OPEN"},{name:"APPLICATION_STATUS_PENDING",value:"PENDING"},{name:"APPLICATION_STATUS_CLOSED",value:"CLOSED"}],d||(d=a(c)),e.append(d(b,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderTag",["$compile","xAlert","$http","$timeout","Tag",function(a,b,c,d,e){return{restrict:"E",scope:{myElement:"=element",form:"="},templateUrl:"components/directives/action/tag/actionBuilder.html",compile:function(c){function f(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var g,h;return g=c.contents().remove(),function(c,i){console.log("myElement",c.myElement),c.randomName=f(),c.data={tags:c.myElement.data1?c.myElement.data1.split(";"):[]},c.$watch("data.tags",function(a){c.myElement.data1=a.join(";")}),d(function(){return e.get().$promise.then(function(a){c.tags=a.rows})["catch"](function(a){b.error(a)})}),h||(h=a(g)),i.append(h(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderTemplate",["$compile","xAlert","$timeout","Template",function(a,b,c,d){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/template/actionBuilder.html",compile:function(e){function f(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var g,h;return g=e.contents().remove(),function(e,i){e.randomName=f(),c(function(){return d.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),e.templates=a.rows})["catch"](function(a){b.error(a)})}),h||(h=a(g)),i.append(h(e,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderUrlForward",["$compile",function(a){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/urlforward/actionBuilder.html",compile:function(b){function c(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var d,e;return d=b.contents().remove(),function(b,f){b.randomName=c(),b.types=[{name:"HTTP GET",value:"GET"},{name:"HTTP POST",value:"POST"}],e||(e=a(d)),f.append(e(b,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderWebPopup",["$compile","xAlert","$http","$timeout","Template",function(a,b,c,d,e){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/webPopup/actionBuilder.html",compile:function(c){var f,g;return f=c.contents().remove(),function(c,h){function i(){return e.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),c.templates=a.rows})["catch"](function(a){b.error(a)})}function j(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}c.typeChange=function(){c.element.data1=null},c.randomName=j(),d(function(){i(),c.element.data2=c.element.data2||"motion"}),g||(g=a(f)),h.append(g(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("conditionBuilder",["$compile","$timeout","$translate","xAlert",function(a,b,c,d){return{restrict:"E",scope:{element:"=",serviceindex:"=",service:"=",form:"="},templateUrl:"components/directives/condition/conditionBuilder.html",compile:function(e){var f,g;return f=e.contents().remove(),function(e,h){function i(a){var b=_.find(e.service.services[e.serviceindex].conditions,{value:a});if(b)if(e.elementType=b.type,e.translateName=b.translate,b.arr)e.values=b.arr;else if(b.resource)return b.resource.get(b.params||{}).$promise.then(function(a){e.values=_.map(a.rows,function(a){return{name:a[b.resName||b.resValue],value:String(a[b.resValue])}})})["catch"](function(a){d.show(c.instant(a.message),"danger")})}function j(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}e._=_,e.randomName=j(),b(function(){e.element.field&&i(e.element.field)}),e.checkCondition=function(a){e.element.value="",e.element.operator="",i(a)},g||(g=a(f)),h.append(g(e,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").factory("xNotificationLicense",["Notification","$rootScope","$location",function(a,b,c){return{show:function(d){var e=b.$new();return e["class"]="alert-warning",e.icon="fa fa-exclamation-triangle",e.more=function(){c.path("/setting/license/view")},new a({delay:d,templateUrl:"components/factories/xNotificationLicense/xNotificationLicense.html",scope:e})}}}]),angular.module("xCallyShuttleApp").filter("secToTime",[function(){return function(a){return new Date(1970,0,1).setSeconds(a)}}]),angular.module("xCallyShuttleApp").controller("FooterController",["$scope","Setting",function(a,b){a.year=moment().year(),a.$on("$includeContentLoaded",function(){Layout.initFooter()}),a.initFooter=function(){return b.get({controller:"info"}).$promise.then(function(b){a.info=b})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").controller("HeaderController",["$scope","$rootScope","$location","$state","$http","$interval","$notification","Auth","xAlert","socket","xNotificationLicense","toastr","localStorageService","Agent","SmsReport","MailReport","OpenChannelReport","ChatReport","ChatRoom","xNotification","$timeout","$translate","$window","User","Pause","Action","FaxReport","List","MailAccount","ChatWebsite","FaxAccount","SmsAccount","OpenChannelAccount","ReportAgent","$uibModal","$log","ReportDial",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K){function L(a,b,c){ +return null===b&&(b=50),null===c&&(c="..."),a&&a.length>b?a.substring(0,b-c.length)+c:a}function M(b){var c,d="reason";switch(b){case"mail":c=p;break;case"chat":c=r;break;case"fax":c=A;break;case"sms":c=o;break;case"agent":c=H,d="lastevent";break;case"dial":c=K,d="dialstatus";break;case"openchannel":c=q;break;default:return}return c.get({limit:10,order:"updatedAt DESC"}).$promise.then(function(c){_.forEach(c.rows,function(a){if(a[d])switch(a[d].toLowerCase()){case"answer":case"connect":case"complete":a.status="taken";break;case"answered_elsewhere":a.status="taken_elsewhere";break;case"called":a.status="lost";break;case"busy":a.status="busy";break;case"rejected":a.status="rejected";break;case"cancel":case"abandoned":a.status="abandoned"}}),a.agentNotifications[b].rows=c.rows,j.socket.on("report_"+b+":save",function(c){c.status="none",a.agentNotifications[b].rows.unshift(c),"agent"!==b&&"dial"!==b&&(a.agentNotifications[b].timeout[c.id]=setTimeout(function(){clearTimeout(a.agentNotifications[b].timeout[c.id]),_.find(a.agentNotifications[b].rows,{id:c.id}).status="lost",angular.element(document.getElementById("header_"+b+"_notification_bar")).hasClass("open")||a.agentNotifications[b]["new"]++,delete a.agentNotifications[b].timeout[c.id]},1e3*c.timeslot))}),j.socket.on("report_"+b+":update",function(c){if("agent"===b){var e=_.find(a.activeCalls,{id:c.id});e&&(c.agentcomplete||c.agentringnoanswer||c.agentdump)?_.remove(a.activeCalls,{id:c.id}):!c.agentconnectAt||c.agentcomplete||c.agentringnoanswer||c.agentdump||a.activeCalls.push(c)}var f=_.find(a.agentNotifications[b].rows,{id:c.id});if(f&&("agent"!==b&&"dial"!==b&&a.agentNotifications[b].timeout[c.id]&&(clearTimeout(a.agentNotifications[b].timeout[c.id]),delete a.agentNotifications[b].timeout[c.id]),c[d])){switch(c[d].toLowerCase()){case"answer":case"connect":case"complete":c.status="taken";break;case"answered_elsewhere":c.status="taken_elsewhere",angular.element(document.getElementById("header_"+b+"_notification_bar")).hasClass("open")||a.agentNotifications.chat["new"]++;break;case"busy":c.status="busy",angular.element(document.getElementById("header_"+b+"_notification_bar")).hasClass("open")||a.agentNotifications[b]["new"]++;break;case"rejected":c.status="rejected";break;case"cancel":case"abandoned":c.status="abandoned",angular.element(document.getElementById("header_"+b+"_notification_bar")).hasClass("open")||a.agentNotifications[b]["new"]++}_.merge(f,c)}})})["catch"](function(a){i.error(a)})}function N(){return a.headerAgent=h.getCurrentUser(),a.readyTimer=1e3*moment().unix(),y.get().$promise.then(function(b){a.headerPauses=b.rows,j.syncUpdates("pause",a.headerPauses)}).then(function(){j.socket.on("agent:save",function(b){b=b.newValues||b,a.headerAgent.id===b.id&&(_.merge(a.headerAgent,b),b.voicePause&&b.mailPause&&b.chatPause&&b.faxPause&&b.smsPause&&b.openchannelPause||(a.readyTimer=1e3*moment().unix()))})})["finally"](function(){h.getCurrentUser().loginInPause&&!m.get("loggedIn")&&a.headerPause("pause")})["catch"](function(a){console.log("Error synchronizing agent status:",a)})}function O(){return H.get({id:"active",controller:"calls"}).$promise.then(function(b){a.activeCalls=b.rows})["catch"](function(a){i.error(a)})}a.moment=moment,$(document).on("click",".tabbed-dropdown",function(a){a.stopPropagation()}),a.license.hasOwnProperty("expirationTime")&&(h.isAdmin()||h.isUser())&&!a.license.demo&&f(function(){"main.setting.license.view"!==d.current.name&&k.show(3e4)},3e4),a.openRoom=function(b,c){var d=_.find(a.workspaces,{id:b,type:c});if(d)d.active=!0;else{var e;switch(c){case"mailRoom":e="icon-envelope";break;case"chatRoom":e="fa fa-users";break;case"faxRoom":e="fa fa-fax";break;case"smsRoom":e="glyphicon glyphicon-comment";break;case"openchannelRoom":e="icon-globe"}a.workspaces.push({id:b,type:c,"class":e,active:!0})}},a.toggleSidebar=function(){b.settings.layout.pageSidebarClosed=!b.settings.layout.pageSidebarClosed,m.set("sidebarClosed",b.settings.layout.pageSidebarClosed)},a.chooseContact=function(b){var c=I.open({animation:!0,templateUrl:"app/main/chooseContact.modal.html",controller:"ChooseContactModalCtrl",resolve:{data:function(){return{eventChannel:"voice",calleridnum:b}}}});c.result.then(function(c){c?a.openContactTab(c):a.newContact({calleridnum:b})},function(){J.info("Modal dismissed at: "+new Date)})},a.loadNotifications=function(b){if(!a.busyLoad[b].end){a.busyLoad[b].busy=!0;var c,d="reason";switch(b){case"mail":c=p;break;case"chat":c=r;break;case"fax":c=A;break;case"sms":c=o;break;case"agent":c=H,d="lastevent";break;case"dial":c=K,d="dialstatus";break;case"openchannel":c=q;break;default:return}return c.get({limit:10,offset:a.agentNotifications[b].rows.length,order:"updatedAt DESC"}).$promise.then(function(c){c.rows.length?(_.forEach(c.rows,function(a){if(a[d])switch(a[d].toLowerCase()){case"answer":case"connect":case"complete":a.status="taken";break;case"answered_elsewhere":a.status="taken_elsewhere";break;case"called":a.status="lost";break;case"busy":a.status="busy";break;case"rejected":a.status="rejected";break;case"abandoned":a.status="abandoned"}}),a.agentNotifications[b].rows=a.agentNotifications[b].rows.concat(c.rows)):a.busyLoad[b].end=!0,a.busyLoad[b].busy=!1})["catch"](function(a){i.error(a)})}},a.headerPause=function(b,c,d){return z.save({name:b,agent:a.headerAgent.id,type:c||"DEFAULT PAUSE",data4:c||"DEFAULT PAUSE",channel:d||"all"}).$promise.then(function(){i.show(v.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){i.error(a)})},h.isAgent()&&(N(),a.agentNotifications={mail:{rows:[],"new":0,timeout:{}},chat:{rows:[],"new":0,timeout:{}},fax:{rows:[],"new":0,timeout:{}},sms:{rows:[],"new":0,timeout:{}},agent:{rows:[],"new":0},dial:{rows:[],"new":0},openchannel:{rows:[],"new":0}},a.busyLoad={mail:{busy:!1,end:!1},chat:{busy:!1,end:!1},fax:{busy:!1,end:!1},sms:{busy:!1,end:!1},agent:{busy:!1,end:!1},dial:{busy:!1,end:!1},openchannel:{busy:!1,end:!1}},O(),M("agent"),M("dial"),a.license.mail&&M("mail"),a.license.chat&&M("chat"),a.license.fax&&M("fax"),a.license.messaging&&M("sms"),a.license.openchannel&&M("openchannel")),j.socket.on("user_has_chat_room:save",function(b){var c;return s.get({id:Number(b.ChatRoomId)}).$promise.then(function(b){c=b;var d=_.find(a.workspaces,{id:Number(c.id),type:"chatRoom"});d?d.name=a.getFullnames(c):a.workspaces.push({id:c.id,name:a.getFullnames(c),type:"chatRoom","class":"icon-bubble",unread:1})})["catch"](function(a){console.error(a)})}),j.socket.on("chat_message:save",function(b){var c;if(b.UserId!==h.getCurrentUser().id&&_.includes(b.userids,h.getCurrentUser().id)){var d=_.find(a.workspaces,{id:Number(b.ChatRoomId),type:"chatRoom"});if(!d)return s.get({id:Number(b.ChatRoomId)}).$promise.then(function(b){c=b,a.workspaces.push({id:c.id,name:a.getFullnames(b),type:"chatRoom","class":"icon-bubble",unread:1})})["catch"](function(a){console.error(a)})}});var P=function(){return w.Notification},Q=function(){b.settings.layout.onFocus=!0},R=function(){b.settings.layout.onFocus=!1};w.onfocus=Q,w.onblur=R,a.getFullnames=function(a){var b=_.without(_.map(a.Users,"fullname"),h.getCurrentUser().fullname);return a.ChatVisitor&&b.unshift(a.ChatVisitor.fullname),b.join(", ")},a.openContact=function(b,c,d){if(d&&"<unknown>"!==d){var e,f;switch(b){case"mail":e=C,f={email:d};break;case"chat":e=D,f={email:d};break;case"fax":e=E,f={fax:d};break;case"sms":e=F,f={mobile:d};break;default:return}return e.get({id:c}).$promise.then(function(a){return a.ListId?B.save({listId:a.ListId,controller:"contacts"},f).$promise:null}).then(function(b){if(b){var c=_.find(a.workspaces,{contactID:b.id});c?c.active=!0:a.workspaces.push({active:!0,"class":"icon-user",contactID:b.id,name:b.email,type:"contact"})}else i.show(v.instant("MESSAGE_NO_LIST_CONFIGURED"),"info")})["catch"](function(a){console.error(a)})}},a.initHeader=function(){return"agent"===h.getCurrentUser().role&&(j.socket.on("report_chat:save",function(a){P&&!b.settings.layout.onFocus&&g("CHAT CHANNEL",{icon:"assets/images/media/channels/chat64.png",body:"NEW Incoming Chat Visitor!",delay:1e3*a.timeslot});var c="<b>"+v.instant("APPLICATION_FROM")+"</b>: "+a.visitorname+"<br><b>"+v.instant("APPLICATION_EMAIL")+"</b>: "+a.visitoremail;"queue"===a.application&&(c+="<br><b>"+v.instant("APPLICATION_QUEUE")+"</b>: "+a.queuename),t.show(v.instant("APPLICATION_NEW_CHAT_REQUEST"),c,"chat",1e3*a.timeslot,function(){return r.get({id:a.id,controller1:"accept",controller2:a.uniqueid}).$promise.then(function(){i.show("Chat properly assigned","success")})["catch"](function(a){switch(a.status){case 504:i.show(v.instant("MESSAGE_CHAT_ALREADY_MANAGED"),"info");break;default:i.error(a)}})},function(){return r.get({id:a.id,controller1:"reject"}).$promise.then(function(){i.show("Chat properly rejected","success")})["catch"](function(a){i.error(a)})})}),j.socket.on("report_mail:save",function(c){var d=_.find(a.workspaces,{id:c.roomid,type:"mailRoom"});if(!d){var e="<b>"+v.instant("APPLICATION_ACCOUNT")+"</b>: "+c.accountname+"<br> <b>"+v.instant("APPLICATION_FROM")+"</b>: "+c.from+"<br> <b>"+v.instant("APPLICATION_SUBJECT")+"</b>: "+(L(c.subject,30,"...")||"No subject");"queue"===c.application&&(e+="<br><b>"+v.instant("APPLICATION_QUEUE")+"</b>: "+c.queuename),t.show(v.instant("APPLICATION_NEW_MAIL_REQUEST"),e,"mail",1e3*c.timeslot,function(){return p.get({id:c.id,controller1:"accept",controller2:c.uniqueid}).$promise.then(function(){var b=_.find(a.workspaces,{id:c.roomid,type:"mailRoom"});b?b.active=!0:a.workspaces.push({id:c.roomid,name:c.subject||"No subject",type:"mailRoom","class":"icon-envelope",active:!0,unread:0})})["catch"](function(a){switch(a.status){case 504:i.show(v.instant("MESSAGE_MAIL_ALREADY_MANAGED"),"info");break;default:i.error(a)}})},function(){return p.get({id:c.id,controller1:"reject"}).$promise["catch"](function(a){i.error(a)})}),P&&!b.settings.layout.onFocus?g("MAIL CHANNEL",{icon:"assets/images/media/channels/mail64.png",body:"NEW Incoming Mail Message!",delay:1e3*c.timeslot}):console.log("Notification API not supported in your browser")}}),j.socket.on("report_sms:save",function(b){var c="<b>"+v.instant("APPLICATION_ACCOUNT")+"</b>: "+b.accountname+"<br> <b>"+v.instant("APPLICATION_FROM")+"</b>: "+b.from;"queue"===b.application&&(c+="<br><b>"+v.instant("APPLICATION_QUEUE")+"</b>: "+b.queuename),t.show(v.instant("APPLICATION_NEW_SMS_REQUEST"),c,"sms",1e3*b.timeslot,function(){return o.get({id:b.id,controller1:"accept",controller2:b.uniqueid}).$promise.then(function(){var c=_.find(a.workspaces,{id:b.roomid,type:"smsRoom"});c?c.active=!0:a.workspaces.push({id:b.roomid,name:b.from,type:"smsRoom","class":"glyphicon glyphicon-comment",active:!0})})["catch"](function(a){switch(a.status){case 504:i.show(v.instant("MESSAGE_SMS_ALREADY_MANAGED"),"info");break;default:i.error(a)}})},function(){return o.get({id:b.id,controller1:"reject"}).$promise.then(function(){i.show("SMS properly rejected","success")})["catch"](function(a){i.error(a)})}),P?g("SMS CHANNEL",{icon:"assets/images/media/channels/chat64.png",body:"NEW Incoming SMS Message!",delay:1e3*b.timeslot}):console.log("Notification API not supported in your browser")}),j.socket.on("report_openchannel:save",function(b){var c="<b>"+v.instant("APPLICATION_ACCOUNT")+"</b>: "+b.accountname+"<br> <b>"+v.instant("APPLICATION_FROM")+"</b>: "+b.from;"queue"===b.application&&(c+="<br><b>"+v.instant("APPLICATION_QUEUE")+"</b>: "+b.queuename),t.show(v.instant("APPLICATION_NEW_MESSAGE"),c,"openchannel",1e3*b.timeslot,function(){return q.get({id:b.id,controller1:"accept",controller2:b.uniqueid}).$promise.then(function(){var c=_.find(a.workspaces,{id:b.roomid,type:"openchannelRoom"});c?c.active=!0:a.workspaces.push({id:b.roomid,name:b.from,type:"openchannelRoom","class":"icon-globe",active:!0})})["catch"](function(a){switch(a.status){case 504:i.show(v.instant("MESSAGE_ALREADY_MANAGED"),"info");break;default:i.error(a)}})},function(){return q.get({id:b.id,controller1:"reject"}).$promise.then(function(){i.show("Message properly rejected","success")})["catch"](function(a){i.error(a)})}),P?g("OPEN CHANNEL",{icon:"assets/images/media/channels/chat64.png",body:"NEW Incoming Message!",delay:1e3*b.timeslot}):console.log("Notification API not supported in your browser")}),j.socket.on("report_fax:save",function(c){var d=_.find(a.workspaces,{id:c.roomid,type:"faxRoom"});if(!d){var e="<b>"+v.instant("APPLICATION_ACCOUNT")+"</b>: "+c.accountname+"<br> <b>"+v.instant("APPLICATION_PHONE")+"</b>: "+c.from;"queue"===c.application&&(e+="<br><b>"+v.instant("APPLICATION_QUEUE")+"</b>: "+c.queuename),t.show(v.instant("APPLICATION_NEW_FAX_REQUEST"),e,"fax",1e3*c.timeslot,function(){return A.get({id:c.id,controller1:"accept",controller2:c.uniqueid}).$promise.then(function(){var b=_.find(a.workspaces,{id:c.roomid,type:"faxRoom"});b?b.active=!0:a.workspaces.push({id:c.roomid,name:c.from,type:"faxRoom","class":"fa fa-fax",active:!0,unread:0})})["catch"](function(a){switch(a.status){case 504:i.show(v.instant("MESSAGE_FAX_ALREADY_MANAGED"),"info");break;default:i.error(a)}})},function(){return A.get({id:c.id,controller1:"reject"}).$promise["catch"](function(a){i.err(a)})}),P&&!b.settings.layout.onFocus?g("FAX CHANNEL",{icon:"assets/images/media/channels/telephone124.png",body:"NEW Incoming Fax Message!",delay:1e3*c.timeslot}):console.log("Notification API not supported in your browser")}}),h.getCurrentUser().loginInPause)?z.save({name:"pause",agent:h.getCurrentUser().id,type:"LOGININPAUSE",data4:"LOGININPAUSE",channel:"all"}).$promise["catch"](function(a){i.error(a)}):void 0},a.logout=function(){return e.get("/auth/local/logout").success(function(){h.logout(),c.path("/login")}).error(function(a){i.error(a)})},a.isActive=function(a){return a===c.path()},a.$on("$destroy",function(){console.log("header $destroy"),j.unsyncUpdates("pause"),j.unsyncUpdates("agent"),j.unsyncUpdates("report_chat"),j.unsyncUpdates("report_mail"),j.unsyncUpdates("report_fax"),j.unsyncUpdates("report_sms"),j.unsyncUpdates("report_openchannel"),j.unsyncUpdates("user_has_chat_room"),j.unsyncUpdates("chat_message"),j.unsyncUpdates("report_integration:sugarcrm"),j.unsyncUpdates("report_integration:freshdesk")})}]),angular.module("xCallyShuttleApp").factory("Modal",["$rootScope","$uibModal",function(a,b){function c(c,d){var e=a.$new();return c=c||{},d=d||"modal-default",angular.extend(e,c),b.open({templateUrl:"components/modal/delete.html",windowClass:d,scope:e})}return{confirm:{"delete":function(a){return a=a||angular.noop,function(){var b,d=Array.prototype.slice.call(arguments),e=d.shift();b=c({modal:{dismissable:!0,title:"Confirm Delete",html:"<p>Are you sure you want to delete"+(e?"<strong> "+e+"</strong>":" selected items")+"?</p>",buttons:[{classes:"btn red",text:"Delete",click:function(a){b.close(a)}},{classes:"btn default",text:"Cancel",click:function(a){b.dismiss(a)}}]}},"over-topbar center"),b.result.then(function(b){a.apply(b,d)})}}}}}]),angular.module("xCallyShuttleApp").service("application",function(){var a={applications:[{type:null,name:"APPLICATION_QUEUE",value:"Queue"},{type:null,name:"APPLICATION_PLAYBACK",value:"Playback"},{type:null,name:"Dial",value:"Dial"},{type:"internalDial",name:"APPLICATION_INTERNAL_DIAL",value:"Dial"},{type:"externalDial",name:"APPLICATION_EXTERNAL_DIAL",value:"Dial"},{type:"RingGroup",name:"Ring Group",value:"Dial"},{type:null,name:"Cally-Square Project",value:"AGI"},{type:null,name:"GoTo",value:"Goto"},{type:null,name:"Hangup",value:"Hangup"},{type:null,name:"Set",value:"Set"},{type:null,name:"APPLICATION_VOICEMAIL",value:"Voicemail"},{type:"videoOn",name:"APPLICATION_VIDEO_ON",value:"Set"},{type:"custom",name:"Custom",value:"custom"}],queueOptions:[{value:"C",name:"APPLICATION_QUEUE_OPTION_C"},{value:"c",name:"APPLICATION_QUEUE_OPTION_c"},{value:"d",name:"APPLICATION_QUEUE_OPTION_d"},{value:"F",name:"APPLICATION_QUEUE_OPTION_F"},{value:"h",name:"APPLICATION_QUEUE_OPTION_h"},{value:"H",name:"APPLICATION_QUEUE_OPTION_H"},{value:"n",name:"APPLICATION_QUEUE_OPTION_n"},{value:"i",name:"APPLICATION_QUEUE_OPTION_i"},{value:"I",name:"APPLICATION_QUEUE_OPTION_I"},{value:"r",name:"APPLICATION_QUEUE_OPTION_r"},{value:"R",name:"APPLICATION_QUEUE_OPTION_R"},{value:"t",name:"APPLICATION_QUEUE_OPTION_t"},{value:"T",name:"APPLICATION_QUEUE_OPTION_T"},{value:"w",name:"APPLICATION_QUEUE_OPTION_w"},{value:"W",name:"APPLICATION_QUEUE_OPTION_W"},{value:"k",name:"APPLICATION_QUEUE_OPTION_k"},{value:"K",name:"APPLICATION_QUEUE_OPTION_K"},{value:"x",name:"APPLICATION_QUEUE_OPTION_x"},{value:"X",name:"APPLICATION_QUEUE_OPTION_X"}],audioOptions:[{value:"skip",name:"APPLICATION_PLAYBACK_OPTION_SKIP"},{value:"noanswer",name:"APPLICATION_PLAYBACK_OPTION_NOANSWER"},{value:"j",name:"APPLICATION_PLAYBACK_OPTION_J"},{value:"say",name:"APPLICATION_PLAYBACK_OPTION_SAY"}],hangupCauses:[{value:"",name:"--"},{value:"1",name:"APPLICATION_HANGUP_CAUSE_1"},{value:"16",name:"APPLICATION_HANGUP_CAUSE_16"},{value:"17",name:"APPLICATION_HANGUP_CAUSE_17"},{value:"18",name:"APPLICATION_HANGUP_CAUSE_18"},{value:"21",name:"APPLICATION_HANGUP_CAUSE_21"},{value:"22",name:"APPLICATION_HANGUP_CAUSE_22"},{value:"27",name:"APPLICATION_HANGUP_CAUSE_27"},{value:"38",name:"APPLICATION_HANGUP_CAUSE_38"},{value:"41",name:"APPLICATION_HANGUP_CAUSE_41"}],intTypes:[{value:"always",name:"APPLICATION_ALWAYS"},{value:"custom",name:"APPLICATION_CUSTOM"},{value:"list",name:"APPLICATION_FROM_LIST"}],checkUnderscore:function(a){return 0===a.indexOf("_")?a:"_"+a}};return{application:a}}),angular.module("xCallyShuttleApp").service("automations",function(){var a={mail:{conditions:[{name:"APPLICATION_STATUS",value:"status",type:"select",arr:[{name:"APPLICATION_STATUS_NEW",value:"NEW"},{name:"APPLICATION_STATUS_OPEN",value:"OPEN"},{name:"APPLICATION_STATUS_CLOSED",value:"CLOSED"},{name:"APPLICATION_STATUS_PENDING",value:"PENDING"}],operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_HOURS_SINCE_CREATED",value:"createdAt",type:"input",operators:[{value:"greater_or_equal",name:"APPLICATION_GTE_TO"},{value:"less_or_equal",name:"APPLICATION_LTE_TO"},{value:"greater",name:"APPLICATION_GREATER_THAN"},{value:"less",name:"APPLICATION_LESS_THAN"}]}],actions:[{name:"APPLICATION_STATUS",value:"status"}]},chat:{conditions:[{name:"APPLICATION_STATUS",value:"status",type:"select",arr:[{name:"APPLICATION_STATUS_NEW",value:"NEW"},{name:"APPLICATION_STATUS_OPEN",value:"OPEN"},{name:"APPLICATION_STATUS_CLOSED",value:"CLOSED"},{name:"APPLICATION_STATUS_PENDING",value:"PENDING"}],operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_HOURS_SINCE_CREATED",value:"createdAt",type:"input",operators:[{value:"greater_or_equal",name:"APPLICATION_GTE_TO"},{value:"less_or_equal",name:"APPLICATION_LTE_TO"},{value:"greater",name:"APPLICATION_GREATER_THAN"},{value:"less",name:"APPLICATION_LESS_THAN"}]}],actions:[{name:"APPLICATION_STATUS",value:"status"}]},fax:{conditions:[{name:"APPLICATION_STATUS",value:"status",type:"select",arr:[{name:"APPLICATION_STATUS_NEW",value:"NEW"},{name:"APPLICATION_STATUS_OPEN",value:"OPEN"},{name:"APPLICATION_STATUS_CLOSED",value:"CLOSED"}],operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_HOURS_SINCE_CREATED",value:"createdAt",type:"input",operators:[{value:"greater_or_equal",name:"APPLICATION_GTE_TO"},{value:"less_or_equal",name:"APPLICATION_LTE_TO"},{value:"greater",name:"APPLICATION_GREATER_THAN"},{value:"less",name:"APPLICATION_LESS_THAN"}]}],actions:[{name:"APPLICATION_STATUS",value:"status"}]}},b=["mail","fax","chat"];return{services:a,channels:b}}),angular.module("xCallyShuttleApp").service("channel",function(){var a=[{name:"Voice",value:"voice"}];return a}),angular.module("xCallyShuttleApp").service("desk_com",function(){var a=[{id:"priority",label:"Priority",custom:!1,data:{choices:[1,2,3,4,5,6,7,8,9,10]}},{id:"status",label:"Status",custom:!1,data:{choices:["new","open","pending","resolved","closed"]}},{id:"type",label:"Type",custom:!1,data:{choices:["chat","twitter","email","qna","facebook","phone"]}}];return{fields:a}}),angular.module("xCallyShuttleApp").service("interval",function(){var a={months:[{value:"always",name:"APPLICATION_ALWAYS"},{value:"jan",name:"APPLICATION_JANUARY"},{value:"feb",name:"APPLICATION_FEBRUARY"},{value:"mar",name:"APPLICATION_MARCH"},{value:"apr",name:"APPLICATION_APRIL"},{value:"may",name:"APPLICATION_MAY"},{value:"jun",name:"APPLICATION_JUNE"},{value:"jul",name:"APPLICATION_JULY"},{value:"aug",name:"APPLICATION_AUGUST"},{value:"sep",name:"APPLICATION_SEPTEMBER"},{value:"oct",name:"APPLICATION_OCTOBER"},{value:"nov",name:"APPLICATION_NOVEMBER"},{value:"dec",name:"APPLICATION_DECEMBER"}],monthsNumber:[{value:"always",name:"APPLICATION_ALWAYS"},{value:"1",name:"APPLICATION_JANUARY"},{value:"2",name:"APPLICATION_FEBRUARY"},{value:"3",name:"APPLICATION_MARCH"},{value:"4",name:"APPLICATION_APRIL"},{value:"5",name:"APPLICATION_MAY"},{value:"6",name:"APPLICATION_JUNE"},{value:"7",name:"APPLICATION_JULY"},{value:"8",name:"APPLICATION_AUGUST"},{value:"9",name:"APPLICATION_SEPTEMBER"},{value:"10",name:"APPLICATION_OCTOBER"},{value:"11",name:"APPLICATION_NOVEMBER"},{value:"12",name:"APPLICATION_DECEMBER"}],daysOfWeek:[{value:"always",name:"APPLICATION_ALWAYS"},{value:"mon",name:"APPLICATION_MONDAY"},{value:"tue",name:"APPLICATION_TUESDAY"},{value:"wed",name:"APPLICATION_WEDNESDAY"},{value:"thu",name:"APPLICATION_THURSDAY"},{value:"fri",name:"APPLICATION_FRIDAY"},{value:"sat",name:"APPLICATION_SATURDAY"},{value:"sun",name:"APPLICATION_SUNDAY"}],daysOfMonth:["always",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{interval:a}}),angular.module("xCallyShuttleApp").service("report",["ReportAgent","ReportCall","ReportMailSession","ReportMember","ReportQueue","ReportIntegration","ReportChatSession","ReportSmsSession","Contact","Recording","ReportSquare","ReportSquareDetail","User","ReportFaxSession","MailRoom","MailMessage","FaxRoom","FaxMessage","ChatRoom","ChatMessage","SmsRoom","SmsMessage","OpenChannelRoom","OpenChannelMessage","ReportOpenChannelSession","ReportMotionDialer","UserHasVoiceQueue","VoiceMailMessage",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B){var C=[{value:"users",resource:m,channel:"General"},{value:"cm_contacts",resource:i,channel:"General"},{value:"report_integration_history",resource:f,channel:"General"},{value:"report_agent_history",resource:a,channel:"Voice"},{value:"report_call_history",resource:b,channel:"Voice"},{value:"report_member_history",resource:d,channel:"Voice"},{value:"report_queue_history",resource:e,channel:"Voice"},{value:"voice_recordings",resource:j,channel:"Voice"},{value:"voice_voicemail_messages",resource:B,channel:"Voice"},{value:"report_square_history",resource:k,channel:"Voice"},{value:"report_square_details_history",resource:l,channel:"Voice"},{value:"report_tdial",resource:z,channel:"Voice"},{value:"report_chat_session_history",resource:g,channel:"Chat"},{value:"chat_rooms",resource:s,channel:"Chat"},{value:"chat_messages",resource:t,channel:"Chat"},{value:"report_mail_session_history",resource:c,channel:"Mail"},{value:"mail_rooms",resource:o,channel:"Mail"},{value:"mail_messages",resource:p,channel:"Mail"},{value:"report_fax_session_history",resource:n,channel:"Fax"},{value:"fax_rooms",resource:q,channel:"Fax"},{value:"fax_messages",resource:r,channel:"Fax"},{value:"report_sms_session_history",resource:h,channel:"Sms"},{value:"sms_rooms",resource:u,channel:"Sms"},{value:"sms_messages",resource:v,channel:"Sms"},{value:"report_openchannel_session_history",resource:y,channel:"Open Channel"},{value:"openchannel_rooms",resource:w,channel:"Open Channel"},{value:"openchannel_messages",resource:x,channel:"Open Channel"},{value:"user_has_voice_queues",resource:A,channel:"Voice"}];return{tables:C}}]),angular.module("xCallyShuttleApp").service("strategies",function(){return["beepall","roundrobin"]}),angular.module("xCallyShuttleApp").service("triggers",["VoiceQueue","ChatQueue","MailQueue","FaxQueue","SmsQueue","OpenChannelQueue","Route","MailAccount","SmsAccount","ChatWebsite","OpenChannelAccount",function(a,b,c,d,e,f,g,h,i,j,k){var l={voice:{conditions:[{name:"APPLICATION_QUEUE",value:"queue",type:"select",resource:a,resValue:"name",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_CALL_STATUS",value:"lastevent",type:"select",translate:!0,arr:[{name:"ringing",value:"called"},{name:"up",value:"connect"},{name:"hangup",value:"complete"},{name:"rejected",value:"rejected"},{name:"ringnoanswer",value:"agentringnoanswer"},{name:"abandoned",value:"abandoned"}],operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_OUTBOUND_ROUTE",value:"routeId",type:"select",resource:g,resValue:"id",resName:"exten",params:{type:"outbound"},operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]}],actions:[{name:"APPLICATION_CONTACT_MANAGER",value:"contactManager"},{name:"APPLICATION_INTEGRATIONS",value:"integration",propertyField:"select"},{name:"APPLICATION_MOTION_BAR",value:"motionbar",propertyField:"select"},{name:"APPLICATION_JSCRIPTY",value:"jscripty",propertyField:"select"},{name:"APPLICATION_URL_FORWARD",value:"urlForward"},{name:"APPLICATION_WEB_POPUP",value:"webPopup"}]},mail:{conditions:[{name:"APPLICATION_ACCOUNT",value:"accountId",type:"select",resource:h,resValue:"id",resName:"name",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_FROM",value:"from",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_TO",value:"to",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_CC",value:"cc",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_SUBJECT",value:"subject",type:"input",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"},{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_BODY",value:"text",type:"input",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"},{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]}],actions:[{name:"APPLICATION_TEMPLATE",value:"template"},{name:"APPLICATION_EMAIL",value:"email"},{name:"APPLICATION_EMAIL_FROM_ACCOUNT",value:"accountEmail"},{name:"APPLICATION_SMS",value:"accountSms"},{name:"APPLICATION_FORWARD",value:"forward"},{name:"APPLICATION_TAG",value:"tag"},{name:"APPLICATION_URL_FORWARD",value:"http"},{name:"APPLICATION_CLOSE",value:"close"}]},chat:{conditions:[{name:"APPLICATION_WEBSITE",value:"ChatWebsiteId",type:"select",resource:j,resValue:"id",resName:"name",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_NAME",value:"fullname",type:"input",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_EMAIL",value:"email",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]}],actions:[{name:"APPLICATION_EMAIL_FROM_ACCOUNT",value:"accountEmail"},{name:"APPLICATION_SMS",value:"accountSms"},{name:"APPLICATION_TEMPLATE",value:"accountTemplate"},{name:"APPLICATION_TAG",value:"tag"},{name:"APPLICATION_URL_FORWARD",value:"http"},{name:"APPLICATION_CLOSE",value:"close"}]},sms:{conditions:[{name:"APPLICATION_ACCOUNT",value:"SmsAccountId",type:"select",resource:i,resValue:"id",resName:"name",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_FROM",value:"from",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_TO",value:"to",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_BODY",value:"body",type:"input",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"},{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]}],actions:[{name:"APPLICATION_EMAIL_FROM_ACCOUNT",value:"accountEmail"},{name:"APPLICATION_SMS",value:"accountSms"},{name:"APPLICATION_TEMPLATE",value:"accountTemplate"},{name:"APPLICATION_TAG",value:"tag"},{name:"APPLICATION_URL_FORWARD",value:"http"},{name:"APPLICATION_CLOSE",value:"close"}]},fax:{conditions:[{name:"APPLICATION_FROM",value:"from",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_TO",value:"to",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]}],actions:[{name:"APPLICATION_EMAIL_FROM_ACCOUNT",value:"accountEmail"},{name:"APPLICATION_SMS",value:"accountSms"},{name:"APPLICATION_TEMPLATE",value:"accountTemplate"},{name:"APPLICATION_TAG",value:"tag"},{name:"APPLICATION_URL_FORWARD",value:"http"},{name:"APPLICATION_CLOSE",value:"close"}]},openchannel:{conditions:[{name:"APPLICATION_ACCOUNT",value:"OpenchannelAccountId",type:"select",resource:k,resValue:"id",resName:"name",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_FROM",value:"from",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_TO",value:"to",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_BODY",value:"body",type:"input",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"},{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]}],actions:[{name:"APPLICATION_EMAIL_FROM_ACCOUNT",value:"accountEmail"},{name:"APPLICATION_SMS",value:"accountSms"},{name:"APPLICATION_TEMPLATE",value:"accountTemplate"},{name:"APPLICATION_TAG",value:"tag"},{name:"APPLICATION_URL_FORWARD",value:"http"},{name:"APPLICATION_CLOSE",value:"close"}]}},m=["voice","mail","chat","sms","fax","openchannel"];return{services:l,channels:m}}]),angular.module("xCallyShuttleApp").service("variable",function(){var a=[{title:"Unique ID",name:"uniqueid",group:"voice_queue"},{title:"Caller Number",name:"calleridnum",group:"voice_queue"},{title:"Caller Name",name:"calleridname",group:"voice_queue"},{title:"Queue",name:"queue",group:"voice_queue"},{title:"Called Number",name:"destcalleridnum",group:"voice_queue"},{title:"Called Name",name:"destcalleridname",group:"voice_queue"},{title:"Hold Time",name:"holdtime",group:"voice_queue"},{title:"Talk Time",name:"talktime",group:"voice_queue"},{title:"Connected Time",name:"agentconnectAt",group:"voice_queue"},{title:"Called Time",name:"agentcalledAt",group:"voice_queue"},{title:"DNID",name:"destexten",group:"voice_queue"},{title:"Complete Time",name:"agentcompleteAt",group:"voice_queue"},{title:"No Answer Time",name:"agentringnoanswerAt",group:"voice_queue"},{title:"Recording URL", +name:"recordingURL",group:"voice_queue"},{title:"Unique ID",name:"uniqueid",group:"voice_outbound"},{title:"Caller Number",name:"calleridnum",group:"voice_outbound"},{title:"Caller Name",name:"calleridname",group:"voice_outbound"},{title:"Called Number",name:"destcalleridnum",group:"voice_outbound"},{title:"Called Name",name:"destcalleridname",group:"voice_outbound"},{title:"Start Time",name:"starttime",group:"voice_outbound"},{title:"Answer Time",name:"answertime",group:"voice_outbound"},{title:"Complete Time",name:"endtime",group:"voice_outbound"},{title:"Recording URL",name:"recordingURL",group:"voice_outbound"},{title:"Member Name",name:"membername",group:"voice_outbound"}];return a}),angular.module("xCallyShuttleApp").controller("SidebarController",["$scope","$rootScope","$resource","$location","Auth","Dashboard","Integration","xAlert","$stateParams","socket","$uibModal","Setting",function(a,b,c,d,e,f,g,h,i,j,k,l){a.Auth=e,a.$on("$includeContentLoaded",function(){Metronic.init(),Layout.initSidebar()}),a.getSidebarDashboards=function(){return f.get().$promise.then(function(c){b.dashboards=c.rows,j.syncUpdates("dashboard",b.dashboards),a.$watch("dashboards",function(a){a&&b.initTours()},!0)})["catch"](function(){h.show("Error loading your dashboards","danger")})},a.about=function(){k.open({animation:!0,size:"sm",templateUrl:"app/main/about.modal.html",controller:["$scope","$uibModalInstance",function(a,b){a.year=moment().year(),a.getInfo=function(){return l.get({controller:"info"}).$promise.then(function(b){a.info=b})["catch"](function(a){console.error(a)})},a.close=function(){b.dismiss("cancel")}}]})},a.getSidebarIntegrations=function(){return e.isAdmin()||e.isAgent()||b.userModules[19]?g.get().$promise.then(function(b){a.integrations=b.rows,j.syncUpdates("integration",a.integrations)})["catch"](function(a){h.error(a)}):void 0},a.$on("sidebar $destroy",function(){console.log("destroy"),j.unsyncUpdates("dashboard"),j.unsyncUpdates("integration")})}]),angular.module("xCallyShuttleApp").factory("socket",["$rootScope","$window","socketFactory","Auth",function(a,b,c,d){var e=d.getCurrentUser(),f=io("",{query:"token="+d.getToken()+"&userId="+e.id+"&name="+e.name+"&role="+(e.role||"agent")+"&source=browser",path:"/socket.io-client",multiplex:!1}),g=c({ioSocket:f});return a.$on("logout",function(){g&&(g.disconnect(!0),b.location.reload())}),{socket:g,syncUpdates:function(a,b,c){c=c||angular.noop,g.on(a+":save",function(a){var d=_.find(b,{id:a.id}),e=b.indexOf(d),f="created";d?(_.merge(b[e],a),f="updated"):b.unshift(a),c(f,a,b)}),g.on(a+":remove",function(a){var d="deleted";_.remove(b,{id:a.id}),c(d,a,b)})},unsyncUpdates:function(a){g.removeAllListeners(a+":save"),g.removeAllListeners(a+":update"),g.removeAllListeners(a+":remove")},syncUpdatesByAttributes:function(a,b,c,d){d=d||angular.noop,g.on(a+":save",function(a){var e=!0;if(_.forIn(b,function(b,c){return a[c]&&a[c]===b?!0:e=!1}),e){var f=_.find(c,{id:a.id}),g=c.indexOf(f),h="created";f?(_.merge(c[g],a),h="updated"):c.unshift(a),d(h,a,c)}}),g.on(a+":remove",function(a){var b="deleted";_.remove(c,{id:a.id}),d(b,a,c)})},syncMailMessageUpdates:function(a,b,c,d){d=d||angular.noop,g.on(a+":"+b+":save",function(a){var b=_.find(c,{id:a.id}),e=c.indexOf(b),f="created";b?(_.merge(c[e],a),f="updated"):c.unshift(a),d(f,a)}),g.on(a+":"+b+":remove",function(a){var b="deleted";_.remove(c,{id:a.id}),d(b,a,c)})},unsyncMailMessageUpdates:function(a,b){g.removeAllListeners(a+":"+b+":save"),g.removeAllListeners(a+":"+b+":remove")},syncFaxMessageUpdates:function(a,b,c,d){d=d||angular.noop,g.on(a+":"+b+":save",function(a){var b=_.find(c,{id:a.id}),e=c.indexOf(b),f="created";b?(_.merge(c[e],a),f="updated"):c.unshift(a),d(f,a)}),g.on(a+":"+b+":remove",function(a){var b="deleted";_.remove(c,{id:a.id}),d(b,a,c)})},unsyncFaxMessageUpdates:function(a,b){g.removeAllListeners(a+":"+b+":save"),g.removeAllListeners(a+":"+b+":remove")}}}]),function(a,b){angular.module("adf.widget.counter",["adf.provider"]).config(["dashboardProvider",function(a){a.widget("counter",{title:"Single Value",description:"Single Value for db results",templateUrl:"{widgetsPath}/counter/src/view.html",controller:"apiwidgetCounterViewCtrl",edit:{templateUrl:"{widgetsPath}/counter/src/edit.html",controller:"apiwidgetCounterEditCtrl"}})}]).service("apiServiceCounter",["Widget",function(a){return{get:function(b){return a.get({select:b.select,condition:encodeURIComponent(b.condition),table:b.report.replace("_history",""),controller:"counter"}).$promise.then(function(a){return a})["catch"](function(a){console.log(a)})}}}]).controller("apiwidgetCounterEditCtrl",["$scope","report",function(a,b){a.config.reportTables=b.tables,a.config.colors=[{name:"Grey",value:"grey"},{name:"Grey 2",value:"grey-cascade"},{name:"Grey 3",value:"grey-silver"},{name:"Grey 4",value:"grey-steel"},{name:"Grey 5",value:"grey-carrara"},{name:"Grey 6",value:"grey-gallery"},{name:"Blue",value:"blue"},{name:"Blue 2",value:"blue-hoki"},{name:"Blue 3",value:"blue-steel"},{name:"Blue 4",value:"blue-madison"},{name:"Blue 5",value:"blue-chambray"},{name:"Blue 6",value:"blue-ebonyclay"},{name:"Red",value:"red"},{name:"Red 2",value:"red-pink"},{name:"Red 3",value:"red-sunglo"},{name:"Red 4",value:"red-intense"},{name:"Red 5",value:"red-thunderbird"},{name:"Red 6",value:"red-flamingo"},{name:"Green",value:"green"},{name:"Green 2",value:"green-meadow"},{name:"Green 3",value:"green-seagreen"},{name:"Green 4",value:"green-turquoise"},{name:"Green 5",value:"green-haze"},{name:"Green 6",value:"green-jungle"},{name:"Purple",value:"purple"},{name:"Purple 2",value:"purple-plum"},{name:"Purple 3",value:"purple-medium"},{name:"Purple 4",value:"purple-studio"},{name:"Purple 5",value:"purple-wisteria"},{name:"Purple 6",value:"purple-seance"},{name:"Yellow",value:"yellow"},{name:"Yellow 2",value:"yellow-gold"},{name:"Yellow 3",value:"yellow-casablanca"},{name:"Yellow 4",value:"yellow-crusta"},{name:"Yellow 5",value:"yellow-lemon"},{name:"Yellow 6",value:"yellow-saffron"}],a.config.icons=[{name:"Talk bubbles",value:"fa-comments"},{name:"Bar Chart",value:"fa-bar-chart"},{name:"Shopping Cart",value:"fa-shopping-cart"},{name:"Globe",value:"fa-globe"},{name:"Volume Control Phone",value:"fa-volume-control-phone"},{name:"Comments",value:"fa-comments-o"},{name:"Commenting",value:"fa-commenting-o"},{name:"Coffee",value:"fa-coffee"},{name:"Clock",value:"fa-clock-o"},{name:"Envelope",value:"fa-envelope-o"},{name:"Hourglass",value:"fa-hourglass-half"},{name:"Percent",value:"fa-percent"}],a.config.select=a.config.select?a.config.select:"COUNT(*)",a.config.color=a.config.color?a.config.color:"blue-madison",a.config.icon=a.config.icon?a.config.icon:"fa-comments",a.config.link=a.config.link?a.config.link:"#",a.config.linkText=a.config.linkText?a.config.linkText:"VIEW MORE"}]).controller("apiwidgetCounterViewCtrl",["$scope","$interval","apiServiceCounter","socket",function(a,b,c,d){var e=a.$parent.model.wid;d.socket.on("widget_update:"+e,function(b){b&&b.length>1||_.keys(b[0]).length>1?(a.tooManyResults=!0,a.result=null):(a.tooManyResults=!1,null!==_.values(b[0])[0]?a.result=_.values(b[0])[0].toString():a.result="--")}),a.$on("$destroy",function(){d.socket.removeAllListeners("widget_update:"+e)})}]),angular.module("adf.widget.counter").run(["$templateCache",function(a){a.put("{widgetsPath}/counter/src/edit.html","<form role=form><div class=form-group><label for=select>Select</label> <input type=text class=form-control id=condition ng-model=config.select placeholder=Select></div><div class=form-group><label class=control-label>From</label><ui-select data-ng-model=config.report name=report theme=bootstrap><ui-select-match placeholder=From>{{'APPLICATION_'+$select.selected.value.toUpperCase() | translate}}</ui-select-match><ui-select-choices group-by=\"'channel'\" repeat=\"table.value as table in config.reportTables | filter: $select.search\"><div ng-bind-html=\"'APPLICATION_'+table.value.toUpperCase() | translate | highlight: $select.search\"></div></ui-select-choices></ui-select></div><div class=form-group><label for=condition>Where</label> <input type=text class=form-control id=condition ng-model=config.condition placeholder=Where></div><div class=form-group><label class=control-label>{{'APPLICATION_WIDGET_COLOR' | translate}}</label><ui-select data-ng-model=config.color name=color theme=bootstrap><ui-select-match placeholder=\"{{ 'APPLICATION_WIDGET_COLOR' | translate }}\"><div data-ng-class=\"'bg-'+$select.selected.value\"> </div></ui-select-match><ui-select-choices repeat=\"color.value as color in config.colors | filter: $select.search\"><div data-ng-class=\"'bg-'+color.value\"> </div></ui-select-choices></ui-select></div><div class=form-group><label class=control-label>{{'APPLICATION_WIDGET_ICON' | translate}}</label><ui-select data-ng-model=config.icon name=icon theme=bootstrap><ui-select-match placeholder=\"{{ 'APPLICATION_WIDGET_ICON' | translate }}\"><i class=fa ng-class=$select.selected.value></i></ui-select-match><ui-select-choices repeat=\"icon.value as icon in config.icons | filter: $select.search\"><i class=fa ng-class=icon.value></i></ui-select-choices></ui-select></div><div class=form-group><label for=condition>{{'APPLICATION_WIDGET_DETAILS' | translate}}</label> <input type=text class=form-control id=details ng-model=config.details maxlength=30 placeholder=\"{{'APPLICATION_WIDGET_DETAILS' | translate}}\"></div><div class=form-group><label for=condition>{{'APPLICATION_WIDGET_LINK' | translate}}</label> <input type=text class=form-control id=link ng-model=config.link placeholder=http://yourlink></div><div class=form-group><label for=condition>{{'APPLICATION_WIDGET_LINK_TEXT' | translate}}</label> <input type=text class=form-control id=linkText ng-model=config.linkText maxlength=30 placeholder=\"{{'APPLICATION_WIDGET_LINK_TEXT' | translate}}\"></div></form>"),a.put("{widgetsPath}/counter/src/view.html",'<div class=dashboard-stat ng-class=config.color ng-if=result><div class=visual><i class=fa ng-class=config.icon></i></div><div class=details><div class=number>{{result}}</div><div class=desc>{{config.details}}</div></div><a class=more href={{config.link}}>{{config.linkText}} <i class="m-icon-swapright m-icon-white"></i></a></div><div class="alert alert-danger" role=alert ng-if=!config.report><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_WIDGET_SELECT_REPORT\' | translate}}</div><div class="alert alert-danger" role=alert ng-if=tooManyResults><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_TOO_MANY_RESULTS\' | translate}}</div><div class="alert alert-danger" role=alert ng-if="!result && !tooManyResults"><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_QUERY_NOT_VALID\' | translate}}</div>')}])}(window),function(a,b){angular.module("adf.widget.pie-chart",["adf.provider"]).config(["dashboardProvider",function(a){a.widget("pie-chart",{title:"Pie-Chart",description:"Display a pie-chart starting from DB values",templateUrl:"{widgetsPath}/pie-chart/src/view.html",controller:"apiWidgetPieChartViewCtrl",edit:{templateUrl:"{widgetsPath}/pie-chart/src/edit.html",controller:"apiWidgetPieChartEditCtrl"}})}]).service("apiServicePieChart",["Widget",function(a){return{get:function(b){return a.get({condition:encodeURIComponent(b.condition),table:b.report.replace("_history",""),fields:b.fields,controller:"piechart"}).$promise.then(function(a){return a})["catch"](function(a){console.log(a)})}}}]).controller("apiWidgetPieChartEditCtrl",["$scope","report",function(a,b){function c(){return a.config.fields||(a.config.fields=[{column:"",alias:""}]),a.config.fields}a.config.reportTables=b.tables,a.config.fields=a.config.fields?a.config.fields:[{column:"",alias:""}],a.addField=function(){c().push({})},a.removeField=function(a){c().splice(a,1)}}]).controller("apiWidgetPieChartViewCtrl",["$scope","$interval","apiServicePieChart","socket",function(a,b,c,d){var e=a.$parent.model.wid;d.socket.on("widget_update:"+e,function(b){if(b&&1===b.length){a.labels=[],a.data=[];for(var c in b[0])a.labels.push(c),a.data.push(b[0][c])}else a.labels=[],a.data=[]}),a.$on("$destroy",function(){d.socket.removeAllListeners("widget_update:"+e)})}]),angular.module("adf.widget.pie-chart").run(["$templateCache",function(a){a.put("{widgetsPath}/pie-chart/src/edit.html",'<form role=form><div class=form-group><label class=control-label>{{\'APPLICATION_REPORT\' | translate}}</label><ui-select data-ng-model=config.report name=report theme=bootstrap><ui-select-match placeholder="{{ \'APPLICATION_REPORT\' | translate }}">{{\'APPLICATION_\'+$select.selected.value.toUpperCase() | translate}}</ui-select-match><ui-select-choices group-by="\'channel\'" repeat="table.value as table in config.reportTables | filter: $select.search"><div ng-bind-html="\'APPLICATION_\'+table.value.toUpperCase() | translate | highlight: $select.search"></div></ui-select-choices></ui-select></div><div><label class=control-label>{{\'APPLICATION_FIELDS\' | translate}}</label></div><div class=padding-bottom ng-repeat="field in config.fields"><div class=form-group><div class=input-group><input type=text class=form-control ng-model=field.column> <span class=input-group-addon>as</span> <input type=text class=form-control ng-model=field.alias> <span class=input-group-btn ng-if="config.fields.length>1"><button class="btn btn-danger" type=button data-ng-click=removeField($index)><i class="fa fa-times"></i> {{\'APPLICATION_REMOVE\' | translate}}</button></span></div></div></div><button type=button class="btn btn-sm green mbottom20" ng-click=addField()><i class="fa fa-plus"></i> {{\'APPLICATION_ADD_FIELD\' | translate}}</button><div class=form-group><label for=condition>{{\'APPLICATION_CONDITION\' | translate}}</label> <input type=text class=form-control id=condition ng-model=config.condition placeholder="{{\'APPLICATION_CONDITION\' | translate}}"></div></form>'),a.put("{widgetsPath}/pie-chart/src/view.html",'<div ng-if=labels.length ng-style=config.style><canvas id=doughnut class="chart chart-doughnut" chart-data=data chart-labels=labels legend=true></canvas></div><div class="alert alert-danger" role=alert ng-if=!config.report><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_WIDGET_SELECT_REPORT\' | translate}}</div><div class="alert alert-danger" role=alert ng-if=!labels.length><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_ENTER_VALID_CONDITION\' | translate}}</div><div class="alert alert-danger" role=alert ng-if=!labels.length><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_ENTER_ONE_VALID_METRIC_AND_CHECK_OTHER\' | translate}}</div>')}])}(window),function(a,b){angular.module("adf.widget.table",["adf.provider"]).value("apiServiceUrlTable","/api/widgets/table").config(["dashboardProvider",function(a){a.widget("table",{title:"Table",description:"Show tabbed results from db",templateUrl:"{widgetsPath}/table/src/view.html",controller:"apiWidgetTableViewCtrl",edit:{templateUrl:"{widgetsPath}/table/src/edit.html",controller:"apiWidgetTableEditCtrl"}})}]).service("apiServiceTable",["$q","$http","apiServiceUrlTable",function(a,b,c){return{get:function(d){var e=a.defer();return b.get(c,{params:{condition:encodeURIComponent(d.condition),table:d.report,fields:d.fields}}).success(function(a){a?e.resolve(a):e.reject()}).error(function(a){console.log(a),e.reject()}),e.promise}}}]).controller("apiWidgetTableEditCtrl",["$scope",function(a){function b(){return a.config.fields||(a.config.fields=[{column:"",alias:""}]),a.config.fields}a.config.reportTables=[{name:"Agents",value:"agent"},{name:"Calls",value:"call"},{name:"Dials",value:"dial"},{name:"Members",value:"member"},{name:"Queues",value:"queue"}],a.config.timeout=a.config.timeout?a.config.timeout:1,a.config.height=a.config.height?a.config.height:350,a.config.fields=a.config.fields?a.config.fields:[{column:"",alias:""}],a.addField=function(){b().push({})},a.removeField=function(a){b().splice(a,1)}}]).controller("apiWidgetTableViewCtrl",["$scope","$interval","apiServiceTable",function(a,b,c){a.config.timeout=a.config.timeout?a.config.timeout:1,a.config.height=a.config.height?a.config.height:350,a.config.style={"max-height":a.config.height+"px",overflow:"scroll"},a.tableApiCall=function(){a.config.condition&&a.config.report&&a.config.fields.length&&""!==a.config.fields[0].column&&""!==a.config.fields[0].alias&&c.get(a.config).then(function(b){a.results=b})},a.tableApiCall();var d=b(function(){a.tableApiCall()},1e3*parseInt(a.config.timeout));a.$on("$destroy",function(){b.cancel(d)})}]),angular.module("adf.widget.table").run(["$templateCache",function(a){a.put("{widgetsPath}/table/src/edit.html",'<form role=form><div class=form-group><label class=control-label>{{\'APPLICATION_REPORT\' | translate}}</label><ui-select data-ng-model=config.report name=report theme=bootstrap><ui-select-match placeholder="{{ \'APPLICATION_REPORT\' | translate }}">{{$select.selected.name}}</ui-select-match><ui-select-choices repeat="report.value as report in config.reportTables | filter: $select.search"><div ng-bind-html="report.name | highlight: $select.search"></div></ui-select-choices></ui-select></div><div><label class=control-label>{{\'APPLICATION_METRICS\' | translate}}</label></div><div class=padding-bottom ng-repeat="field in config.fields"><div class=form-group><div class=input-group><input type=text class=form-control ng-model=field.column> <span class=input-group-addon>as</span> <input type=text class=form-control ng-model=field.alias> <span class=input-group-btn ng-if="config.fields.length>1"><button class="btn btn-danger" type=button data-ng-click=removeField($index)><i class="fa fa-times"></i> {{\'APPLICATION_REMOVE\' | translate}}</button></span></div></div></div><button type=button class="btn btn-sm green mbottom20" ng-click=addField()><i class="fa fa-plus"></i> {{\'APPLICATION_ADD_FIELD\' | translate}}</button><div class=form-group><label for=condition>{{\'APPLICATION_CONDITION\' | translate}}</label> <input type=text class=form-control id=condition ng-model=config.condition placeholder="{{\'APPLICATION_CONDITION\' | translate}}"></div><div class=form-group><label for=condition>{{\'APPLICATION_REFRESH_TIMEOUT\' | translate}}</label> <input type=number class=form-control id=timeout ng-model=config.timeout placeholder="{{\'APPLICATION_REFRESH_TIMEOUT\' | translate}}" min=1></div><div class=form-group><label for=condition>{{\'APPLICATION_WIDGET_MAX_HEIGHT\' | translate}}</label> <input type=number class=form-control id=height ng-model=config.height placeholder="{{\'APPLICATION_WIDGET_MAX_HEIGHT\' | translate}}" min=350></div></form>'),a.put("{widgetsPath}/table/src/view.html",'<div ng-if=results ng-style=config.style><table st-table=results class="table table-striped table-bordered table-hover"><div class=table-responsive><thead><tr><th colspan={{config.fields.length}}><div class=row><div class=col-md-6></div><div class=col-md-6><div class="input-group input-medium pull-right"><input st-search placeholder="{{ \'APPLICATION_SEARCH\' | translate }}" class=form-control type=search> <span class=input-group-addon><i class="fa fa-search"></i></span></div></div></div></th></tr><tr><th ng-repeat="field in config.fields">{{field.alias}}</th></tr></thead><tbody><tr data-ng-repeat="result in results" class=animate-repeat><td ng-repeat="field in config.fields">{{result[field.alias]}}</td></tr><tr data-ng-hide=results.length><td colspan={{config.fields.length}} style=text-align:center;><i>{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</i></td></tr></tbody><tfoot><tr><td colspan={{config.fields.length}} class=text-center><div st-pagination class=pagination st-items-by-page=10 st-displayed-pages=3></div></td></tr></tfoot></div></table></div><div class="alert alert-danger" role=alert ng-if=!config.report><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_WIDGET_SELECT_REPORT\' | translate}}</div><div class="alert alert-danger" role=alert ng-if=!results><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_ENTER_VALID_CONDITION\' | translate}}</div><div class="alert alert-danger" role=alert ng-if=!results><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_ENTER_ONE_VALID_FIELD_AND_CHECK_OTHER\' | translate}}</div>')}])}(window);var Metronic=function(){var a,b=!1,c=!1,d=!1,e=!1,f=[],g="assets/",h="img/",i="plugins/",j="css/",k={blue:"#89C4F4",red:"#F3565D",green:"#1bbc9b",purple:"#9b59b6",grey:"#95a5a6",yellow:"#F8CB00"},l=function(){"rtl"===$("body").css("direction")&&(b=!0),c=!!navigator.userAgent.match(/MSIE 8.0/),d=!!navigator.userAgent.match(/MSIE 9.0/),e=!!navigator.userAgent.match(/MSIE 10.0/),e&&$("html").addClass("ie10"),(e||d||c)&&$("html").addClass("ie")},m=function(){for(var a=0;a<f.length;a++){var b=f[a];b.call()}},n=function(){var a;if(c){var b;$(window).resize(function(){b!=document.documentElement.clientHeight&&(a&&clearTimeout(a),a=setTimeout(function(){m()},50),b=document.documentElement.clientHeight)})}else $(window).resize(function(){a&&clearTimeout(a),a=setTimeout(function(){m()},50)})},o=function(){$("body").on("click",".portlet > .portlet-title > .tools > a.remove",function(a){a.preventDefault();var b=$(this).closest(".portlet");$("body").hasClass("page-portlet-fullscreen")&&$("body").removeClass("page-portlet-fullscreen"),b.find(".portlet-title .fullscreen").tooltip("destroy"),b.find(".portlet-title > .tools > .reload").tooltip("destroy"),b.find(".portlet-title > .tools > .remove").tooltip("destroy"),b.find(".portlet-title > .tools > .config").tooltip("destroy"),b.find(".portlet-title > .tools > .collapse, .portlet > .portlet-title > .tools > .expand").tooltip("destroy"),b.remove()}),$("body").on("click",".portlet > .portlet-title .fullscreen",function(a){a.preventDefault();var b=$(this).closest(".portlet");if(b.hasClass("portlet-fullscreen"))$(this).removeClass("on"),b.removeClass("portlet-fullscreen"),$("body").removeClass("page-portlet-fullscreen"),b.children(".portlet-body").css("height","auto");else{var c=Metronic.getViewPort().height-b.children(".portlet-title").outerHeight()-parseInt(b.children(".portlet-body").css("padding-top"))-parseInt(b.children(".portlet-body").css("padding-bottom"));$(this).addClass("on"),b.addClass("portlet-fullscreen"),$("body").addClass("page-portlet-fullscreen"),b.children(".portlet-body").css("height",c)}}),$("body").on("click",".portlet > .portlet-title > .tools > a.reload",function(a){a.preventDefault();var b=$(this).closest(".portlet").children(".portlet-body"),c=$(this).attr("data-url"),d=$(this).attr("data-error-display");c?(Metronic.blockUI({target:b,animate:!0,overlayColor:"none"}),$.ajax({type:"GET",cache:!1,url:c,dataType:"html",success:function(a){Metronic.unblockUI(b),b.html(a)},error:function(a,c,e){Metronic.unblockUI(b);var f="Error on reloading the content. Please check your connection and try again.";"toastr"==d&&toastr?toastr.error(f):"notific8"==d&&$.notific8?($.notific8("zindex",11500),$.notific8(f,{theme:"ruby",life:3e3})):alert(f)}})):(Metronic.blockUI({target:b,animate:!0,overlayColor:"none"}),window.setTimeout(function(){Metronic.unblockUI(b)},1e3))}),$('.portlet .portlet-title a.reload[data-load="true"]').click(),$("body").on("click",".portlet > .portlet-title > .tools > .collapse, .portlet .portlet-title > .tools > .expand",function(a){a.preventDefault()})},p=function(){if($().uniform){var a=$("input[type=checkbox]:not(.toggle, .make-switch, .icheck), input[type=radio]:not(.toggle, .star, .make-switch, .icheck)");a.size()>0&&a.each(function(){0===$(this).parents(".checker").size()&&$(this).show()})}},q=function(){$().iCheck&&$(".icheck").each(function(){var a=$(this).attr("data-checkbox")?$(this).attr("data-checkbox"):"icheckbox_minimal-grey",b=$(this).attr("data-radio")?$(this).attr("data-radio"):"iradio_minimal-grey";a.indexOf("_line")>-1||b.indexOf("_line")>-1?$(this).iCheck({checkboxClass:a,radioClass:b,insert:'<div class="icheck_line-icon"></div>'+$(this).attr("data-label")}):$(this).iCheck({checkboxClass:a,radioClass:b})})},r=function(){$().bootstrapSwitch&&$(".make-switch").bootstrapSwitch()},s=function(){$().confirmation&&$("[data-toggle=confirmation]").confirmation({container:"body",btnOkClass:"btn-xs btn-success",btnCancelClass:"btn-xs btn-danger"})},t=function(){$("body").on("shown.bs.collapse",".accordion.scrollable",function(a){Metronic.scrollTo($(a.target))})},u=function(){if(location.hash){var a=location.hash.substr(1);$('a[href="#'+a+'"]').parents(".tab-pane:hidden").each(function(){var a=$(this).attr("id");$('a[href="#'+a+'"]').click()}),$('a[href="#'+a+'"]').click()}},v=function(){$("body").on("hide.bs.modal",function(){$(".modal:visible").size()>1&&$("html").hasClass("modal-open")===!1?$("html").addClass("modal-open"):$(".modal:visible").size()<=1&&$("html").removeClass("modal-open")}),$("body").on("show.bs.modal",".modal",function(){$(this).hasClass("modal-scroll")&&$("body").addClass("modal-open-noscroll")}),$("body").on("hide.bs.modal",".modal",function(){$("body").removeClass("modal-open-noscroll")}),$("body").on("hidden.bs.modal",".modal:not(.modal-cached)",function(){$(this).removeData("bs.modal")})},w=function(){$(".tooltips").tooltip(),$(".portlet > .portlet-title .fullscreen").tooltip({container:"body",title:"Fullscreen"}),$(".portlet > .portlet-title > .tools > .reload").tooltip({container:"body",title:"Reload"}),$(".portlet > .portlet-title > .tools > .remove").tooltip({container:"body",title:"Remove"}),$(".portlet > .portlet-title > .tools > .config").tooltip({container:"body",title:"Settings"}),$(".portlet > .portlet-title > .tools > .collapse, .portlet > .portlet-title > .tools > .expand").tooltip({container:"body",title:"Collapse/Expand"})},x=function(){$("body").on("click",".dropdown-menu.hold-on-click",function(a){a.stopPropagation()})},y=function(){$("body").on("click",'[data-close="alert"]',function(a){$(this).parent(".alert").hide(),$(this).closest(".note").hide(),a.preventDefault()}),$("body").on("click",'[data-close="note"]',function(a){$(this).closest(".note").hide(),a.preventDefault()}),$("body").on("click",'[data-remove="note"]',function(a){$(this).closest(".note").remove(),a.preventDefault()})},z=function(){$('[data-hover="dropdown"]').not(".hover-initialized").each(function(){$(this).dropdownHover(),$(this).addClass("hover-initialized")})},A=function(){$(".popovers").popover(),$(document).on("click.bs.popover.data-api",function(b){a&&a.popover("hide")})},B=function(){Metronic.initSlimScroll(".scroller")},C=function(){jQuery.fancybox&&$(".fancybox-button").size()>0&&$(".fancybox-button").fancybox({groupAttr:"data-rel",prevEffect:"none",nextEffect:"none",closeBtn:!0,helpers:{title:{type:"inside"}}})},D=function(){(c||d)&&$("input[placeholder]:not(.placeholder-no-fix), textarea[placeholder]:not(.placeholder-no-fix)").each(function(){var a=$(this);""===a.val()&&""!==a.attr("placeholder")&&a.addClass("placeholder").val(a.attr("placeholder")),a.focus(function(){a.val()==a.attr("placeholder")&&a.val("")}),a.blur(function(){""!==a.val()&&a.val()!=a.attr("placeholder")||a.val(a.attr("placeholder"))})})},E=function(){$().select2&&$(".select2me").select2({placeholder:"Select"})};return{init:function(){l(),n(),p(),q(),r(),B(),C(),E(),o(),y(),x(),u(),w(),A(),t(),v(),s(),D()},initAjax:function(){p(),q(),r(),z(),B(),E(),C(),x(),w(),A(),t(),s()},initComponents:function(){this.initAjax()},setLastPopedPopover:function(b){a=b},addResizeHandler:function(a){f.push(a)},runResizeHandlers:function(){m()},scrollTo:function(a,b){var c=a&&a.size()>0?a.offset().top:0;a&&($("body").hasClass("page-header-fixed")&&(c-=$(".page-header").height()),c+=b?b:-1*a.height()),$("html,body").animate({scrollTop:c},"slow")},initSlimScroll:function(a){$(a).each(function(){if(!$(this).attr("data-initialized")){var a;a=$(this).attr("data-height")?$(this).attr("data-height"):$(this).css("height"),$(this).slimScroll({allowPageScroll:!0,size:"7px",color:$(this).attr("data-handle-color")?$(this).attr("data-handle-color"):"#bbb",wrapperClass:$(this).attr("data-wrapper-class")?$(this).attr("data-wrapper-class"):"slimScrollDiv",railColor:$(this).attr("data-rail-color")?$(this).attr("data-rail-color"):"#eaeaea",position:b?"left":"right",height:a,alwaysVisible:"1"==$(this).attr("data-always-visible"),railVisible:"1"==$(this).attr("data-rail-visible"),disableFadeOut:!0}),$(this).attr("data-initialized","1")}})},destroySlimScroll:function(a){$(a).each(function(){if("1"===$(this).attr("data-initialized")){$(this).removeAttr("data-initialized"),$(this).removeAttr("style");var a={};$(this).attr("data-handle-color")&&(a["data-handle-color"]=$(this).attr("data-handle-color")),$(this).attr("data-wrapper-class")&&(a["data-wrapper-class"]=$(this).attr("data-wrapper-class")),$(this).attr("data-rail-color")&&(a["data-rail-color"]=$(this).attr("data-rail-color")),$(this).attr("data-always-visible")&&(a["data-always-visible"]=$(this).attr("data-always-visible")),$(this).attr("data-rail-visible")&&(a["data-rail-visible"]=$(this).attr("data-rail-visible")),$(this).slimScroll({wrapperClass:$(this).attr("data-wrapper-class")?$(this).attr("data-wrapper-class"):"slimScrollDiv",destroy:!0});var b=$(this);$.each(a,function(a,c){b.attr(a,c)})}})},scrollTop:function(){Metronic.scrollTo()},blockUI:function(a){a=$.extend(!0,{},a);var b="";if(b=a.animate?'<div class="loading-message '+(a.boxed?"loading-message-boxed":"")+'"><div class="block-spinner-bar"><div class="bounce1"></div><div class="bounce2"></div><div class="bounce3"></div></div></div>':a.iconOnly?'<div class="loading-message '+(a.boxed?"loading-message-boxed":"")+'"><img src="'+this.getGlobalImgPath()+'loading-spinner-blue.gif" align=""></div>':a.textOnly?'<div class="loading-message '+(a.boxed?"loading-message-boxed":"")+'"><span> '+(a.message?a.message:"LOADING...")+"</span></div>":'<div class="loading-message '+(a.boxed?"loading-message-boxed":"")+'"><img src="'+this.getGlobalImgPath()+'loading-spinner-blue.gif" align=""><span> '+(a.message?a.message:"LOADING...")+"</span></div>",a.target){var c=$(a.target);c.height()<=$(window).height()&&(a.cenrerY=!0),c.block({message:b,baseZ:a.zIndex?a.zIndex:1e3,centerY:void 0!==a.cenrerY?a.cenrerY:!1,css:{top:"10%",border:"0",padding:"0",backgroundColor:"none"},overlayCSS:{backgroundColor:a.overlayColor?a.overlayColor:"#555",opacity:a.boxed?.05:.1,cursor:"wait"}})}else $.blockUI({message:b,baseZ:a.zIndex?a.zIndex:1e3,css:{border:"0",padding:"0",backgroundColor:"none"},overlayCSS:{backgroundColor:a.overlayColor?a.overlayColor:"#555",opacity:a.boxed?.05:.1,cursor:"wait"}})},unblockUI:function(a){a?$(a).unblock({onUnblock:function(){$(a).css("position",""),$(a).css("zoom","")}}):$.unblockUI()},startPageLoading:function(a){a&&a.animate?($(".page-spinner-bar").remove(),$("body").append('<div class="page-spinner-bar"><div class="bounce1"></div><div class="bounce2"></div><div class="bounce3"></div></div>')):($(".page-loading").remove(),$("body").append('<div class="page-loading"><img src="'+this.getGlobalImgPath()+'loading-spinner-blue.gif"/> <span>'+(a&&a.message?a.message:"Loading...")+"</span></div>"))},stopPageLoading:function(){ +$(".page-loading, .page-spinner-bar").remove()},alert:function(a){a=$.extend(!0,{container:"",place:"append",type:"success",message:"",close:!0,reset:!0,focus:!0,closeInSeconds:0,icon:""},a);var b=Metronic.getUniqueID("Metronic_alert"),c='<div id="'+b+'" class="Metronic-alerts alert alert-'+a.type+' fade in">'+(a.close?'<button type="button" class="close" data-dismiss="alert" aria-hidden="true"></button>':"")+(""!==a.icon?'<i class="fa-lg fa fa-'+a.icon+'"></i> ':"")+a.message+"</div>";return a.reset&&$(".Metronic-alerts").remove(),a.container?"append"==a.place?$(a.container).append(c):$(a.container).prepend(c):$("body").hasClass("page-container-bg-solid")?$(".page-title").after(c):$(".page-bar").size()>0?$(".page-bar").after(c):$(".page-breadcrumb").after(c),a.focus&&Metronic.scrollTo($("#"+b)),a.closeInSeconds>0&&setTimeout(function(){$("#"+b).remove()},1e3*a.closeInSeconds),b},initUniform:function(a){a?$(a).each(function(){0===$(this).parents(".checker").size()&&($(this).show(),$(this).uniform())}):p()},updateUniform:function(a){$.uniform.update(a)},initFancybox:function(){C()},getActualVal:function(a){return a=$(a),a.val()===a.attr("placeholder")?"":a.val()},getURLParameter:function(a){var b,c,d=window.location.search.substring(1),e=d.split("&");for(b=0;b<e.length;b++)if(c=e[b].split("="),c[0]==a)return unescape(c[1]);return null},isTouchDevice:function(){try{return document.createEvent("TouchEvent"),!0}catch(a){return!1}},getViewPort:function(){var a=window,b="inner";return"innerWidth"in window||(b="client",a=document.documentElement||document.body),{width:a[b+"Width"],height:a[b+"Height"]}},getUniqueID:function(a){return"prefix_"+Math.floor(Math.random()*(new Date).getTime())},isIE8:function(){return c},isIE9:function(){return d},isRTL:function(){return b},isAngularJsApp:function(){return"undefined"!=typeof angular},getAssetsPath:function(){return g},setAssetsPath:function(a){g=a},setGlobalImgPath:function(a){h=a},getGlobalImgPath:function(){return g+h},setGlobalPluginsPath:function(a){i=a},getGlobalPluginsPath:function(){return g+i},getGlobalCssPath:function(){return g+j},getBrandColor:function(a){return k[a]?k[a]:""},getResponsiveBreakpoint:function(a){var b={xs:480,sm:768,md:900,lg:1200};return b[a]?b[a]:0}}}(),Layout=function(){var a="img/",b="css/",c=Metronic.getResponsiveBreakpoint("md"),d=function(){var a,b=$(".page-content"),d=$(".page-sidebar"),e=$("body");if(e.hasClass("page-footer-fixed")===!0&&e.hasClass("page-sidebar-fixed")===!1){var f=Metronic.getViewPort().height-$(".page-footer").outerHeight()-$(".page-header").outerHeight();b.height()<f&&b.attr("style","min-height:"+f+"px")}else{if(e.hasClass("page-sidebar-fixed"))a=g(),e.hasClass("page-footer-fixed")===!1&&(a-=$(".page-footer").outerHeight());else{var h=$(".page-header").outerHeight(),i=$(".page-footer").outerHeight();a=Metronic.getViewPort().width<c?Metronic.getViewPort().height-h-i:d.height()+20,a+h+i<=Metronic.getViewPort().height&&(a=Metronic.getViewPort().height-h-i)}b.attr("style","min-height:"+a+"px")}},e=function(a,b){var d=location.hash.toLowerCase(),e=$(".page-sidebar-menu");if("click"===a||"set"===a?b=$(b):"match"===a&&e.find("li > a").each(function(){var a=$(this).attr("href").toLowerCase();return a.length>1&&d.substr(1,a.length-1)==a.substr(1)?void(b=$(this)):void 0}),b&&0!=b.size()&&"javascript:;"!==b.attr("href").toLowerCase()&&"#"!==b.attr("href").toLowerCase()){parseInt(e.data("slide-speed")),e.data("keep-expanded");e.find("li.active").removeClass("active"),e.find("li > a > .selected").remove(),e.hasClass("page-sidebar-menu-hover-submenu")===!1?e.find("li.open").each(function(){0===$(this).children(".sub-menu").size()&&($(this).removeClass("open"),$(this).find("> a > .arrow.open").removeClass("open"))}):e.find("li.open").removeClass("open"),b.parents("li").each(function(){$(this).addClass("active"),$(this).find("> a > span.arrow").addClass("open"),1===$(this).parent("ul.page-sidebar-menu").size()&&$(this).find("> a").append('<span class="selected"></span>'),1===$(this).children("ul.sub-menu").size()&&$(this).addClass("open")}),"click"===a&&Metronic.getViewPort().width<c&&$(".page-sidebar").hasClass("in")&&$(".page-header .responsive-toggler").click()}},f=function(){jQuery(".page-sidebar").on("click","li > a",function(a){var b=$(this).next().hasClass("sub-menu");if(!(Metronic.getViewPort().width>=c&&1===$(this).parents(".page-sidebar-menu-hover-submenu").size())){if(b===!1)return void(Metronic.getViewPort().width<c&&$(".page-sidebar").hasClass("in")&&$(".page-header .responsive-toggler").click());if(!$(this).next().hasClass("sub-menu always-open")){var e=$(this).parent().parent(),f=$(this),g=$(".page-sidebar-menu"),h=jQuery(this).next(),i=g.data("auto-scroll"),j=parseInt(g.data("slide-speed")),k=g.data("keep-expanded");k!==!0&&(e.children("li.open").children("a").children(".arrow").removeClass("open"),e.children("li.open").children(".sub-menu:not(.always-open)").slideUp(j),e.children("li.open").removeClass("open"));var l=-200;h.is(":visible")?(jQuery(".arrow",jQuery(this)).removeClass("open"),jQuery(this).parent().removeClass("open"),h.slideUp(j,function(){i===!0&&$("body").hasClass("page-sidebar-closed")===!1&&($("body").hasClass("page-sidebar-fixed")?g.slimScroll({scrollTo:f.position().top}):Metronic.scrollTo(f,l)),d()})):b&&(jQuery(".arrow",jQuery(this)).addClass("open"),jQuery(this).parent().addClass("open"),h.slideDown(j,function(){i===!0&&$("body").hasClass("page-sidebar-closed")===!1&&($("body").hasClass("page-sidebar-fixed")?g.slimScroll({scrollTo:f.position().top}):Metronic.scrollTo(f,l)),d()})),a.preventDefault()}}}),jQuery(".page-sidebar").on("click"," li > a.ajaxify",function(a){a.preventDefault(),Metronic.scrollTop();var b=$(this).attr("href"),d=jQuery(".page-sidebar ul"),e=($(".page-content"),$(".page-content .page-content-body"));d.children("li.active").removeClass("active"),d.children("arrow.open").removeClass("open"),$(this).parents("li").each(function(){$(this).addClass("active"),$(this).children("a > span.arrow").addClass("open")}),$(this).parents("li").addClass("active"),Metronic.getViewPort().width<c&&$(".page-sidebar").hasClass("in")&&$(".page-header .responsive-toggler").click(),Metronic.startPageLoading();var f=$(this);$.ajax({type:"GET",cache:!1,url:b,dataType:"html",success:function(a){0===f.parents("li.open").size()&&$(".page-sidebar-menu > li.open > a").click(),Metronic.stopPageLoading(),e.html(a),Layout.fixContentHeight(),Metronic.initAjax()},error:function(a,b,c){Metronic.stopPageLoading(),e.html("<h4>Could not load the requested content.</h4>")}})}),jQuery(".page-content").on("click",".ajaxify",function(a){a.preventDefault(),Metronic.scrollTop();var b=$(this).attr("href"),d=($(".page-content"),$(".page-content .page-content-body"));Metronic.startPageLoading(),Metronic.getViewPort().width<c&&$(".page-sidebar").hasClass("in")&&$(".page-header .responsive-toggler").click(),$.ajax({type:"GET",cache:!1,url:b,dataType:"html",success:function(a){Metronic.stopPageLoading(),d.html(a),Layout.fixContentHeight(),Metronic.initAjax()},error:function(a,b,c){d.html("<h4>Could not load the requested content.</h4>"),Metronic.stopPageLoading()}})}),i(),$(".page-sidebar").on("click",".sidebar-search .remove",function(a){a.preventDefault(),$(".sidebar-search").removeClass("open")}),$(".page-sidebar .sidebar-search").on("keypress","input.form-control",function(a){return 13==a.which?($(".sidebar-search").submit(),!1):void 0}),0!==$(".sidebar-search").size()&&($(".sidebar-search .input-group").on("click",function(a){a.stopPropagation()}),$("body").on("click",function(){$(".sidebar-search").hasClass("open")&&$(".sidebar-search").removeClass("open")}))},g=function(){var a=Metronic.getViewPort().height-$(".page-header").outerHeight();return $("body").hasClass("page-footer-fixed")&&(a-=$(".page-footer").outerHeight()),a},h=function(){var a=$(".page-sidebar-menu");return Metronic.destroySlimScroll(a),0===$(".page-sidebar-fixed").size()?void d():void(Metronic.getViewPort().width>=c&&(a.attr("data-height",g()),Metronic.initSlimScroll(a),d()))},i=function(){var a=$("body");a.hasClass("page-sidebar-fixed")&&$(".page-sidebar").on("mouseenter",function(){a.hasClass("page-sidebar-closed")&&$(this).find(".page-sidebar-menu").removeClass("page-sidebar-menu-closed")}).on("mouseleave",function(){a.hasClass("page-sidebar-closed")&&$(this).find(".page-sidebar-menu").addClass("page-sidebar-menu-closed")})},j=function(){$("body");$.cookie&&"1"===$.cookie("sidebar_closed")&&Metronic.getViewPort().width>=c?($("body").addClass("page-sidebar-closed"),$(".page-sidebar-menu").addClass("page-sidebar-menu-closed")):$.cookie&&$.cookie("sidebar_closed","0")},k=function(){$(".page-header").on("click",'.hor-menu a[data-toggle="tab"]',function(a){a.preventDefault();var b=$(".hor-menu .nav"),c=b.find("li.current");$("li.active",c).removeClass("active"),$(".selected",c).remove();var d=$(this).parents("li").last();d.addClass("current"),d.find("a:first").append('<span class="selected"></span>')}),$(".page-header").on("click",".search-form",function(a){$(this).addClass("open"),$(this).find(".form-control").focus(),$(".page-header .search-form .form-control").on("blur",function(a){$(this).closest(".search-form").removeClass("open"),$(this).unbind("blur")})}),$(".page-header").on("keypress",".hor-menu .search-form .form-control",function(a){return 13==a.which?($(this).closest(".search-form").submit(),!1):void 0}),$(".page-header").on("mousedown",".search-form.open .submit",function(a){a.preventDefault(),a.stopPropagation(),$(this).closest(".search-form").submit()}),$('[data-hover="megamenu-dropdown"]').not(".hover-initialized").each(function(){$(this).dropdownHover(),$(this).addClass("hover-initialized")}),$(document).on("click",".mega-menu-dropdown .dropdown-menu",function(a){a.stopPropagation()})},l=function(){$("body").on("shown.bs.tab",'a[data-toggle="tab"]',function(){d()})},m=function(){var a=300,b=500;navigator.userAgent.match(/iPhone|iPad|iPod/i)?$(window).bind("touchend touchcancel touchleave",function(c){$(this).scrollTop()>a?$(".scroll-to-top").fadeIn(b):$(".scroll-to-top").fadeOut(b)}):$(window).scroll(function(){$(this).scrollTop()>a?$(".scroll-to-top").fadeIn(b):$(".scroll-to-top").fadeOut(b)}),$(".scroll-to-top").click(function(a){return a.preventDefault(),$("html, body").animate({scrollTop:0},b),!1})},n=function(){var a,b=$(".full-height-content");if(a=Metronic.getViewPort().height-$(".page-header").outerHeight(!0)-$(".page-footer").outerHeight(!0)-$(".page-title").outerHeight(!0)-$(".page-bar").outerHeight(!0),b.hasClass("portlet")){var d=b.find(".portlet-body");if(Metronic.getViewPort().width<c)return void Metronic.destroySlimScroll(d.find(".full-height-content-body"));a=a-b.find(".portlet-title").outerHeight(!0)-parseInt(b.find(".portlet-body").css("padding-top"))-parseInt(b.find(".portlet-body").css("padding-bottom"))-2,b.hasClass("full-height-content-scrollable")?(a-=35,d.find(".full-height-content-body").css("height",a),Metronic.initSlimScroll(d.find(".full-height-content-body"))):d.css("min-height",a)}else{if(Metronic.getViewPort().width<c)return void Metronic.destroySlimScroll(b.find(".full-height-content-body"));b.hasClass("full-height-content-scrollable")?(a-=35,b.find(".full-height-content-body").css("height",a),Metronic.initSlimScroll(b.find(".full-height-content-body"))):b.css("min-height",a)}};return{initHeader:function(){k()},setSidebarMenuActiveLink:function(a,b){e(a,b)},initSidebar:function(){h(),f(),j(),Metronic.isAngularJsApp()&&e("match"),Metronic.addResizeHandler(h)},initContent:function(){n(),l(),Metronic.addResizeHandler(d),Metronic.addResizeHandler(n)},initFooter:function(){m()},init:function(){this.initHeader(),this.initSidebar(),this.initContent(),this.initFooter()},fixContentHeight:function(){d()},initFixedSidebarHoverEffect:function(){i()},initFixedSidebar:function(){h()},getLayoutImgPath:function(){return Metronic.getAssetsPath()+a},getLayoutCssPath:function(){return Metronic.getAssetsPath()+b}}}();angular.module("xCallyShuttleApp").run(["$templateCache",function(a){a.put("app/adminreset/adminreset.html",'<!-- BEGIN LOGO -->\n<div class="logo" data-ng-init="getInfo()">\n <a href="index.html">\n <img ng-src="api/settings/logo/login" alt="logo" class="custom-login-logo" onError="this.onerror=null"/>\n </a>\n</div>\n<!-- END LOGO -->\n<!-- BEGIN RESET -->\n<div class="content">\n <!-- BEGIN RESET FORM -->\n <form name="resetForm" data-ng-submit="resetForm.$valid && updatePassword()" novalidate>\n <h3>{{\'APPLICATION_RESET_PASSWORD\' | translate}}</h3>\n <p>\n {{\'MESSAGE_FIRST_LOGIN_PASSWORD_RESET\' | translate}}\n </p>\n <div class="form-group" data-ng-class="{\'has-error\': resetForm.$submitted && resetForm.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_NEW_PASSWORD\' | translate}}</label>\n <div class="input-icon">\n <i class="icon-key"></i>\n <input class="form-control form-control-solid placeholder-no-fix" type="password" placeholder="{{\'APPLICATION_NEW_PASSWORD\' | translate}}" name="password" ng-model="user.password" data-ng-pattern="setting.securePassword ? settings.patternPassword : settings.patternPasswordLight" required/>\n </div>\n <span class="help-block">\n {{setting.securePassword ? \'MESSAGE_PASSWORD_FORMAT\' : \'MESSAGE_PASSWORD_LIGHT_FORMAT\' | translate}}\n </span>\n <span data-ng-show="resetForm.$submitted && resetForm.password.$invalid" class="help-block">{{\'MESSAGE_REQUIRED_FIELD\' | translate}}</span>\n <span data-ng-show="(resetForm.password.$touched || resetForm.$submitted) && resetForm.password.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': resetForm.$submitted && resetForm.rePassword.$invalid}">\n <label class="control-label">{{\'APPLICATION_RE_TYPE_NEW_PASSWORD\' | translate}}</label>\n <div class="input-icon">\n <i class="icon-key"></i>\n <input class="form-control form-control-solid placeholder-no-fix" type="password" placeholder="{{\'APPLICATION_RE_TYPE_NEW_PASSWORD\' | translate}}" name="rePassword" ng-model="user.rePassword" nx-equal="user.password" required/>\n </div>\n <span data-ng-show="resetForm.$submitted && resetForm.rePassword.$invalid" class="help-block">{{\'MESSAGE_REQUIRED_FIELD\' | translate}}</span>\n <span data-ng-show="(resetForm.password.$touched || resetForm.$submitted) && resetForm.$error.nxEqual" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_PASSWORD\' | translate}}.\n </span>\n </div>\n <div class="form-actions">\n <button type="submit" class="btn btn-success uppercase">{{\'APPLICATION_SUBMIT\' | translate}}</button>\n </div>\n </form>\n <!-- END RESET FORM-->\n <div class="login-options">\n <h4>{{\'APPLICATION_FOLLOW_US\' | translate}}</h4>\n <ul class="social-icons">\n <li>\n <a class="social-icon-color facebook" data-original-title="facebook" href="https://www.facebook.com/xenialab"></a>\n </li>\n <li>\n <a class="social-icon-color twitter" data-original-title="Twitter" href="https://twitter.com/xenialab"></a>\n </li>\n <li>\n <a class="social-icon-color googleplus" data-original-title="Goole Plus" href="#"></a>\n </li>\n <li>\n <a class="social-icon-color linkedin" data-original-title="Linkedin" href="#"></a>\n </li>\n </ul>\n </div>\n</div>\n<div class="copyright">\n xCALLY Motion v. {{info.version}} | 2016 - {{year + 1}} © Powered by Xenialab <ng-bind-html data-ng-if="license.custom && !settings.defaultFooterWhiteLabel && settings.footerWhiteLabel" ng-bind-html="\'| \'+settings.footerWhiteLabel"></ng-bind-html>\n</div>\n<!-- END RESET -->\n'),a.put("app/analytic/extracted/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-file-pdf-o"></i>\n <a href="/analytics/extracted/list">{{ \'APPLICATION_EXTRACTED_REPORTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="fa fa-file-pdf-o font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_EXTRACTED_REPORTS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> -->\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n\n<!-- END PAGE CONTENT-->\n'),a.put("app/analytic/metric/list/create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_METRIC\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="forms.metric" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.metric.name.$touched || forms.metric.$submitted) && forms.metric.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(forms.metric.name.$touched || forms.metric.$submitted) && forms.metric.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START TABLE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.metric.table.$touched || forms.metric.$submitted) && forms.metric.table.$invalid}">\n <label class="control-label">{{\'APPLICATION_TABLE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.table" name="table" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{\'APPLICATION_\'+$select.selected.value.toUpperCase() | translate}}</ui-select-match>\n <ui-select-choices repeat="table.value as table in tables | filter: $select.search">\n <div ng-bind-html="\'APPLICATION_\'+table.value.toUpperCase() | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.metric.table.$touched || forms.metric.$submitted) && forms.metric.table.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TABLE-->\n\n <!-- START METRIC -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.metric.metric.$touched || forms.metric.$submitted) && forms.metric.metric.$invalid}">\n <label class="control-label">{{\'APPLICATION_METRIC\' | translate}}<span class="required" aria-required="true">*</span></label>\n <textarea type="text" name="metric" placeholder="{{\'APPLICATION_METRIC\' | translate}}" class="form-control" data-ng-model="item.metric" required/></textarea>\n <span data-ng-show="(forms.metric.metric.$touched || forms.metric.$submitted) && forms.metric.metric.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END METRIC -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="forms.metric.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/analytic/metric/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-calculator"></i>\n <a href="/analytics/metrics/list">{{ \'APPLICATION_METRICS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <!-- <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-calculator font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_DEFAULT_METRICS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n </div>\n </div> -->\n <!-- <div class="portlet-body"> -->\n <!-- START TABLE -->\n <!-- <div ui-grid="gridOptionsDefault" data-ng-if="gridOptionsDefault" name="gridOptionsDefault" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptionsDefault.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div> -->\n <!-- END TABLE -->\n <!-- </div> -->\n <div class="portlet-title"><!-- removed margin-top20 class from title when commented the default metrics section-->\n <div class="caption font-green-sharp">\n <i class="icon-calculator font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_METRICS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <button class="btn green-jungle " ng-click="create()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_METRIC\' | translate }}\n </button>\n </div>\n <!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> -->\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" data-ng-if="gridOptions" name="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/analytic/metric/list/view.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_METRIC\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="forms.metric" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.metric.name.$touched || forms.metric.$submitted) && forms.metric.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}</label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required readonly/>\n <span data-ng-show="(forms.metric.name.$touched || forms.metric.$submitted) && forms.metric.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START TABLE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.metric.table.$touched || forms.metric.$submitted) && forms.metric.table.$invalid}">\n <label class="control-label">{{\'APPLICATION_TABLE\' | translate}}</label>\n <ui-select data-ng-model="item.table" name="table" theme="bootstrap" required data-ng-disabled="true">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{\'APPLICATION_\'+$select.selected.value.toUpperCase() | translate}}</ui-select-match>\n <ui-select-choices repeat="table.value as table in tables | filter: $select.search">\n <div ng-bind-html="\'APPLICATION_\'+table.value.toUpperCase() | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.metric.table.$touched || forms.metric.$submitted) && forms.metric.table.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TABLE-->\n\n <!-- START METRIC -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.metric.metric.$touched || forms.metric.$submitted) && forms.metric.metric.$invalid}">\n <label class="control-label">{{\'APPLICATION_METRIC\' | translate}}</label>\n <textarea type="text" name="metric" placeholder="{{\'APPLICATION_METRIC\' | translate}}" class="form-control" data-ng-model="item.metric" required readonly/></textarea>\n <span data-ng-show="(forms.metric.metric.$touched || forms.metric.$submitted) && forms.metric.metric.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END METRIC -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description" readonly></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/analytic/metric/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getMetric()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-eye"></i>\n <a href="/analytics/metrics/list">{{ \'APPLICATION_METRICS\' | translate }}</a>\n <i data-ng-show="metric" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="metric">\n <a href="#">{{metric.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/metric.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{metric.name}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.analytics.metrics.view.settings\')}">\n <a data-ng-href="/analytics/metrics/view/{{metric.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/analytic/metric/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_METRIC\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateMetric()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="metric.name" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START TABLE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.table.$touched || forms.general.$submitted) && forms.general.table.$invalid}">\n <label class="control-label">{{\'APPLICATION_TABLE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="metric.table" name="table" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{\'APPLICATION_\'+$select.selected.value.toUpperCase() | translate}}</ui-select-match>\n <ui-select-choices repeat="table.value as table in tables | filter: $select.search">\n <div ng-bind-html="\'APPLICATION_\'+table.value.toUpperCase() | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.table.$touched || forms.general.$submitted) && forms.general.table.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TABLE-->\n\n <!-- START METRIC -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.metric.$touched || forms.general.$submitted) && forms.general.metric.$invalid}">\n <label class="control-label">{{\'APPLICATION_METRIC\' | translate}}<span class="required" aria-required="true">*</span></label>\n <textarea type="text" name="metric" placeholder="{{\'APPLICATION_METRIC\' | translate}}" class="form-control" data-ng-model="metric.metric" required/></textarea>\n <span data-ng-show="(forms.general.metric.$touched || forms.general.$submitted) && forms.general.metric.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END METRIC -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="metric.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'), +a.put("app/analytic/report/list/copy.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_COPY_REPORT\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp" style="padding-left:10px;">\n <i class="icon-folder font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_COPY_TO\' | translate }} </span>\n </div>\n </div>\n <div class="portlet-body">\n <div js-tree="customTreeConfig" ng-model="customTreeData" should-apply="ac()" tree="customTreeInstance" tree-events="ready:initCustomScopeTree;"></div>\n </div>\n </div>\n <div class="has-error">\n <span data-ng-show="showAlert" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_SELECT_FOLDER\' | translate}}.\n </span>\n </div>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/analytic/report/list/create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_REPORT\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="forms.report" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.report.name.$touched || forms.report.$submitted) && forms.report.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(forms.report.name.$touched || forms.report.$submitted) && forms.report.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.report.name.$touched || forms.report.$submitted) && forms.report.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_PATH\' | translate}}<span class="required" aria-required="true"></span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_PATH\' | translate}}" class="form-control" data-ng-model="path" disabled/>\n <span data-ng-show="(forms.report.name.$touched || forms.report.$submitted) && forms.report.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="forms.report.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/analytic/report/list/deleteNode.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_DELETE_FOLDER\' | translate }}</h3>\n</div>\n<div class="modal-body">\n<p>\n {{\'MESSAGE_DELETE_NODE\' | translate}} : <b>{{node}}</b>?\n</p>\n<p>\n {{\'MESSAGE_ALL_REPORTS_WILL_BE_DELETED\' | translate}}\n</p>\n</div>\n<div class="modal-footer">\n <button class="btn btn-danger" type="button" ng-click="ok()" ng-disabled="forms.report.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/analytic/report/list/extract.modal.html",'<div class="modal-header">\n <button type="button" ng-click="cancel()" class="close">×</button>\n <h4 class="modal-title">{{ \'APPLICATION_EXTRACT_REPORT\' | translate }}</h4>\n</div>\n<div class="modal-body" style="text-align:center;">\n <form name="forms.report" class="form-inline mbottom20" novalidate>\n <div class="form-group" data-ng-class="{\'hidden\':daily}">\n <label class="control-label">{{\'APPLICATION_DATE_RANGE\' | translate}}</label>\n <input type="daterange" name="dates" ranges="ranges" style="min-width:190px;" enabletimepicker="timepicker" placeholder="{{\'APPLICATION_DATE_RANGE\' | translate}}" class="form-control" data-ng-model="dates" max-date="{{maxdate}}" data-ng-required="!daily" data-ng-disabled="daily" data-ng-class="{\'disabled-invisible\':daily}" style="cursor:pointer;" readonly/>\n </div>\n <div class="form-group" data-ng-if="daily">\n <label class="control-label">{{\'APPLICATION_FROM\' | translate}}</label>\n </div>\n <div class="form-group" data-ng-if="daily">\n <uib-timepicker ng-model="dailyTime.start" ng-change="changed()" hour-step="1" minute-step="1" show-meridian="false"></uib-timepicker>\n </div>\n <div class="form-group" data-ng-if="daily">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}}</label>\n </div>\n <div class="form-group" data-ng-if="daily">\n <uib-timepicker ng-model="dailyTime.end" ng-change="changed()" hour-step="1" minute-step="1" show-meridian="false"></uib-timepicker>\n </div>\n <!-- START STATUS -->\n <div class="form-group">\n <input\n bs-switch\n class="form-control"\n ng-model="daily"\n type="checkbox"\n name="auth"\n switch-active="{{ dailySwitch.isActive }}"\n switch-on-text="{{ dailySwitch.onText }}"\n switch-off-text="{{ dailySwitch.offText }}"\n switch-on-color="{{ dailySwitch.onColor }}"\n switch-off-color="{{ dailySwitch.offColor }}"\n switch-animate="{{ dailySwitch.animate }}"\n switch-size="{{ dailySwitch.size }}"\n switch-label="{{ dailySwitch.label }}"\n switch-icon="{{ dailySwitch.icon }}"\n switch-radio-off="{{ dailySwitch.radioOff }}"\n switch-label-width="{{ dailySwitch.labelWidth }}"\n switch-handle-width="{{ dailySwitch.handleWidth }}">\n </div>\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn default green-jungle" type="button" data-ng-click="extract(\'csv\')"><i class="fa fa-file-excel-o"></i> {{ \'APPLICATION_SAVE_AS_CSV\' | translate }}</button>\n <button class="btn default red-intense" type="button" data-ng-click="extract(\'pdf\')"><i class="fa fa-file-pdf-o"></i> {{ \'APPLICATION_SAVE_AS_PDF\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/analytic/report/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getTrees()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-book-open"></i>\n <a href="/analytics/reports/list">{{ \'APPLICATION_REPORTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n <div class="col-fixed">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp" style="padding-left:10px;">\n <i class="icon-folder font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_FOLDERS\' | translate }} </span>\n </div>\n <div class="inputs">\n <div class="portlet-input input-inline input-small">\n <div class="input-icon right">\n <i class="icon-magnifier"></i>\n <input type="text" data-ng-model="searchField" data-ng-change="searchTrees()" class="form-control input-circle" placeholder="search...">\n </div>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <div js-tree="defaultTreeConfig" ng-model="defaultTreeData" should-apply="ac()" tree="defaultTreeInstance" tree-events="ready:initDefaultScopeTree;select_node:selectDefaultNode;"></div>\n <div js-tree="customTreeConfig" ng-model="customTreeData" should-apply="ac()" tree="customTreeInstance" tree-events="ready:initCustomScopeTree;select_node:selectCustomNode;rename_node:updateCustomTree;delete_node:updateCustomTree;move_node:updateCustomTree;create_node:updateCustomTree;"></div>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n <div class="row tree-row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-book-open font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_REPORTS\' | translate }}<span data-ng-if="selectedNode"> - {{selectedNode}}</span></span>\n </div>\n <div data-ng-if="!defaultTreeActive" class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <span class="btn default btn-file">\n <span class="fileinput-new">\n <i class="icon-cloud-upload"></i> {{\'APPLICATION_IMPORT_FROM_JSON\' | translate}}</span>\n <input type="file" on-read-file="import($fileContent)"/>\n </span>\n </div>\n <div class="btn-group">\n <button class="btn green-jungle " ng-click="create()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_REPORT\' | translate }}\n </button>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <div ng-slide-down="gridOptions" lazy-render duration="1">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n </div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/analytic/report/list/preview.modal.html",'<div class="modal-header">\n <button type="button" ng-click="cancel()" class="close">×</button>\n <h4 class="modal-title">{{ \'APPLICATION_REPORT_PREVIEW\' | translate }}</h4>\n</div>\n<div class="modal-body" style="text-align:center;">\n <form name="forms.report" class="form-inline mbottom20" novalidate>\n <div class="form-group" data-ng-class="{\'hidden\':daily}">\n <label class="control-label">{{\'APPLICATION_DATE_RANGE\' | translate}}<span class="required" aria-required="true"></span></label>\n <input type="daterange" name="dates" ranges="ranges" style="min-width:190px;" enabletimepicker="timepicker" placeholder="{{\'APPLICATION_DATE_RANGE\' | translate}}" class="form-control" data-ng-model="dates" data-ng-change="getPage()" max-date="{{maxdate}}" data-ng-required="!daily" data-ng-disabled="daily" data-ng-class="{\'disabled-invisible\':daily}" style="cursor:pointer;" readonly/>\n </div>\n <div class="form-group" data-ng-if="daily">\n <label class="control-label">{{\'APPLICATION_FROM\' | translate}}</label>\n </div>\n <div class="form-group" data-ng-if="daily">\n <uib-timepicker ng-model="dailyTime.start" ng-change="changed()" hour-step="1" minute-step="1" show-meridian="false"></uib-timepicker>\n </div>\n <div class="form-group" data-ng-if="daily">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}}</label>\n </div>\n <div class="form-group" data-ng-if="daily">\n <uib-timepicker ng-model="dailyTime.end" ng-change="changed()" hour-step="1" minute-step="1" show-meridian="false"></uib-timepicker>\n </div>\n <div class="form-group" data-ng-if="daily">\n <button class="btn btn-small btn-sm btn-success" data-ng-click="getPage()">Apply</button>\n </div>\n <div class="form-group">\n <input\n bs-switch\n class="form-control"\n ng-model="daily"\n type="checkbox"\n name="auth"\n data-ng-change="getPage()"\n switch-active="{{ dailySwitch.isActive }}"\n switch-on-text="{{ dailySwitch.onText }}"\n switch-off-text="{{ dailySwitch.offText }}"\n switch-on-color="{{ dailySwitch.onColor }}"\n switch-off-color="{{ dailySwitch.offColor }}"\n switch-animate="{{ dailySwitch.animate }}"\n switch-size="{{ dailySwitch.size }}"\n switch-label="{{ dailySwitch.label }}"\n switch-icon="{{ dailySwitch.icon }}"\n switch-radio-off="{{ dailySwitch.radioOff }}"\n switch-label-width="{{ dailySwitch.labelWidth }}"\n switch-handle-width="{{ dailySwitch.handleWidth }}">\n </div>\n </form>\n <div ng-slide-down="showResult" lazy-render duration="1">\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter class="grid extract-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n </div>\n</div>\n<div class="modal-footer">\n<button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/analytic/report/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getReport()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-book-open"></i>\n <a href="/analytics/reports/list">{{ \'APPLICATION_REPORTS\' | translate }}</a>\n <i data-ng-show="report" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="report">\n <a href="#">{{report.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/analytic/report/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <div class="caption-subject font-blue-madison bold uppercase dot">{{ \'APPLICATION_REPORT\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} - {{report.name}} </div>\n </div>\n <ul class="nav nav-tabs">\n <li>\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n <li class="active">\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{ \'APPLICATION_BUILD\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_3" data-toggle="tab" data-ng-click="showResult = true">{{ \'APPLICATION_TEST_PREVIEW\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n\n <div class="tab-content">\n\n <!-- GENERAL TAB -->\n <div class="tab-pane" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.report.$valid && forms.general.$valid && updateReport()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="report.name" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="report.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}" />\n </form>\n </div>\n <!-- END GENERAL TAB -->\n\n <!-- BUILD TAB -->\n <div class="tab-pane active" id="tab_1_2">\n <form name="forms.report" data-ng-submit="forms.report.$valid && forms.general.$valid && updateReport()" novalidate>\n <!-- START TABLE INPUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.report.table.$touched || forms.report.$submitted) && forms.report.table.$invalid}">\n <label class="control-label">{{\'APPLICATION_TABLE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="report.table" name="table" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{\'APPLICATION_\'+$select.selected.value.toUpperCase() | translate}}</ui-select-match>\n <ui-select-choices group-by="\'channel\'" repeat="table.value as table in tables | filter: $select.search">\n <div ng-bind-html="\'APPLICATION_\'+table.value.toUpperCase() | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.report.table.$touched || forms.report.$submitted) && forms.report.table.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TABLE INPUT-->\n <div data-ng-if="report.table" class="mbottom20 pbottom20 table-responsive">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_FIELDS\' | translate}} </span>\n </div>\n </div>\n <!-- START TABLE -->\n <table class="table table-striped table-bordered table-hover">\n <thead>\n <tr>\n <th>{{ \'APPLICATION_FIELD\' | translate }} / {{ \'APPLICATION_METRIC\' | translate }}</th>\n <th style="min-width:167px;">{{ \'APPLICATION_ALIAS\' | translate }}</th>\n <th>{{ \'APPLICATION_FUNCTION\' | translate }}</th>\n <th>{{ \'APPLICATION_FORMAT\' | translate }}</th>\n <th>{{ \'APPLICATION_GROUP_BY\' | translate }}</th>\n <th>{{ \'APPLICATION_ORDER_BY\' | translate }}</th>\n <th></th>\n <th style="min-width:66px;"></th>\n </tr>\n </thead>\n <tbody ui-sortable="sortableOptions" data-ng-model="report.Fields">\n <tr data-ng-repeat="field in report.Fields">\n <td>\n <!-- START FIELD -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.report.$submitted && !field.field}">\n <!-- <label class="control-label">{{\'APPLICATION_FIELD\' | translate}}<span class="required" aria-required="true">*</span></label> -->\n <div class="input-group">\n <ui-select data-ng-if="!field.custom" data-ng-model="field.field" dynamic-name="randomName()" theme="bootstrap" on-select="setMetricId($item,$index)" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}"><span ng-bind-html="$select.selected.name"></span></ui-select-match>\n <ui-select-choices repeat="tableField.value as tableField in tableFields | filter: $select.search">\n <div ng-bind-html="tableField.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <input data-ng-if="field.custom" type="text" dynamic-name="randomName()" placeholder="{{\'APPLICATION_CUSTOM\' | translate}}" class="form-control" data-ng-model="field.field" required/>\n <span class="input-group-btn">\n <button type="button" data-ng-click="toggleCustom(field)" class="btn btn-default">\n <span class="icon-pencil" data-ng-class="{\'font-blue\':field.custom}"></span>\n </button>\n </span>\n </div>\n <span data-ng-show="forms.report.$submitted && !field.field" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FIELD-->\n </td>\n <td>\n <!-- START ALIAS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.report.$submitted && !field.alias}">\n <!-- <label class="control-label">{{\'APPLICATION_ALIAS\' | translate}}<span class="required" aria-required="true">*</span></label> -->\n <input type="text" dynamic-name="randomName()" placeholder="{{\'APPLICATION_ALIAS\' | translate}}" class="form-control" data-ng-model="field.alias" data-ng-pattern="\'[A-Za-z0-9 <>=,%_\\\\+*!\\\\-\\\\[\\\\]]+\'" required/>\n <span data-ng-show="forms.report.$submitted && !field.alias" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="forms.report.$submitted && !field.alias" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END ALIAS -->\n </td>\n <td>\n <!-- START FUNCTION -->\n <div class="form-group">\n <!-- <label class="control-label">{{\'APPLICATION_FIELD\' | translate}}<span class="required" aria-required="true">*</span></label> -->\n <ui-select data-ng-model="field.function" name="function" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_FUNCTION\' | translate}}" allow-clear>{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="function.value as function in functions | filter: $select.search">\n <div ng-bind-html="function.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END FUNCTION-->\n </td>\n <td>\n <!-- START FORMAT -->\n <div class="form-group">\n <!-- <label class="control-label">{{\'APPLICATION_FIELD\' | translate}}<span class="required" aria-required="true">*</span></label> -->\n <ui-select data-ng-model="field.format" name="format" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_FORMAT\' | translate}}" allow-clear>{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="format.value as format in formatFunctions | filter: $select.search">\n <div ng-bind-html="format.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END FORMAT-->\n </td>\n <td>\n <!-- START GROUP_BY -->\n <div class="form-group">\n <!-- <label class="control-label">{{\'APPLICATION_FIELD\' | translate}}<span class="required" aria-required="true">*</span></label> -->\n <ui-select data-ng-model="field.groupBy" name="groupBy" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_GROUP_BY\' | translate}}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="groupBy.value as groupBy in groupByField | filter: $select.search">\n {{$translate.instant(groupBy.name)}}\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END GROUP_BY-->\n </td>\n <td>\n <!-- START ORDER_BY -->\n <div class="form-group">\n <!-- <label class="control-label">{{\'APPLICATION_FIELD\' | translate}}<span class="required" aria-required="true">*</span></label> -->\n <ui-select data-ng-model="field.orderBy" name="orderBy" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_ORDER_BY\' | translate}}" allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="orderBy in [\'ASC\',\'DESC\'] | filter: $select.search">\n <div ng-bind-html="orderBy | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END TABLE INPUT-->\n </td>\n <td class="report-field-remove">\n <button class="btn red" type="button" data-ng-click="removeField($index)"><i class="fa fa-times"></i></button>\n </td>\n <td class="report-field-handle">\n <!-- <img data-ng-src="assets/images/move.png" class="img-responsive"> -->\n </td>\n </tr>\n <tr data-ng-hide="report.Fields.length" class="unsortable">\n <td colspan="8" style="text-align:center;">\n <i>{{ \'MESSAGE_ADD_A_FIELD\' | translate }}</i>\n </td>\n </tr>\n </tbody>\n </table>\n <button type="button" class="btn btn-sm green padding-bottom" ng-click="addField()">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_FIELD\' | translate}}\n </button>\n <!-- END TABLE -->\n </div>\n <div data-ng-if="report.Fields.length" class="mbottom20 pbottom20">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_CONDITIONS\' | translate}} </span>\n </div>\n </div>\n <div class="alert alert-info">\n <strong>Output</strong>\n <br>\n <span ng-bind-html="output"></span>\n </div>\n\n <report-builder group="report.conditions.group" fields="tableFields" forms="forms" firstCall=\'true\'></report-builder>\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}" />\n </form>\n </div>\n <!-- END BUILD TAB -->\n\n <!-- PREVIEW TAB -->\n <div class="tab-pane" id="tab_1_3">\n <div ng-slide-down="showResult" lazy-render duration="0.5">\n <div ui-grid="gridOptions" data-ng-if="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-move-columns class="grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n </div>\n </div>\n <!-- END PREVIEW TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/chat/offline/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bubble"></i>\n <a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-login"></i>\n <a href="/channels/chat/offline/list">{{ \'APPLICATION_OFFLINE\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-question font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_OFFLINE_MESSAGES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/offline/message/message.directive.html",'<div class="message">\n <div class="row">\n <div class="col-md-12">\n <span class="bold">From: </span>\n [<a href="" data-ng-click="openContact(message.email)">{{message.email}}</a>]\n </div>\n </div>\n <br>\n <span class="todo-tasklist-date">\n <i class="icon-calendar"></i> {{message.createdAt | date:\'medium\'}} (<span am-time-ago="message.createdAt"></span>)\n </span>\n <hr>\n <div class="body text-left message-body" data-ng-bind="message.text"></div>\n <h5 data-ng-hide="message.text" class="media-heading"><i>{{\'MESSAGE_NO_AVAILABLE_TEXT\' | translate | lowercase}}</i></h5>\n</div>\n'),a.put("app/channels/chat/offline/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView();">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bubble"></i>\n <a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-login"></i>\n <a href="/channels/chat/offline/list">Offline</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-user"></i>\n <a href="#">{{enquiry.username}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE CONTENT -->\n <div class="portlet light">\n <div class="portlet-title">\n <div class="caption">\n <span data-ng-if="enquiry.ChatWebsite" class="caption-subject font-green-sharp bold uppercase">{{enquiry.ChatWebsite.name}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <div class="row">\n <div class="col-md-4">\n <!-- Visitor Information -->\n <div class="portlet">\n <div class="portlet-body">\n <v-accordion class="vAccordion--default">\n <v-pane expanded="true">\n <v-pane-header>\n <ng-letter-avatar data-ng-if="enquiry.ChatVisitor" height="40" width="40" data="{{enquiry.ChatVisitor.fullname}}" fontsize="25" avatarcustombgcolor="#B0B0B0" charCount="2" avatarcustomborder="border:2px solid #EA4C61" shape="round"></ng-letter-avatar>\n </v-pane-header>\n <v-pane-content>\n {{\'APPLICATION_NAME\' | translate}}:<p>{{enquiry.ChatVisitor.fullname}}</p>\n {{\'APPLICATION_EMAIL\' | translate}}:<p><a data-ng-click="openContact(enquiry.ChatVisitor.email)" href="">{{enquiry.ChatVisitor.email}}</a></p>\n <span data-ng-if="enquiry.ChatVisitor.labelOfflineData1">{{enquiry.ChatVisitor.labelOfflineData1}}: <p>{{enquiry.ChatVisitor.offlineData1}}</p></span>\n <span data-ng-if="enquiry.ChatVisitor.labelOfflineData2">{{enquiry.ChatVisitor.labelOfflineData2}}: <p>{{enquiry.ChatVisitor.offlineData2}}</p></span>\n <span data-ng-if="enquiry.ChatVisitor.labelOfflineData3">{{enquiry.ChatVisitor.labelOfflineData3}}: <p>{{enquiry.ChatVisitor.offlineData3}}</p></span>\n {{\'APPLICATION_REMOTE_ADDRESS\' | translate}}:<p>{{enquiry.ChatVisitor.remote_address}}</p>\n {{\'APPLICATION_BROWSER\' | translate}}:<p>{{enquiry.ChatVisitor.browser}}</p>\n {{\'APPLICATION_REFERER\' | translate}}:<p>{{enquiry.ChatVisitor.referer}} - {{enquiry.ChatWebsite.name}}</p>\n {{\'APPLICATION_OS\' | translate}}:<p>{{enquiry.ChatVisitor.os}}</p>\n </v-pane-content>\n </v-pane>\n </v-accordion>\n </div>\n </div>\n </div>\n <div class="col-md-8">\n <!-- Offline message -->\n <div id="mail-box">\n <ul class="chats">\n <li class="in">\n <enquiry-message message="enquiry" list-id="enquiry.ChatWebsite.ListId"></enquiry-message>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), +a.put("app/channels/chat/online/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bubble"></i>\n <a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-login"></i>\n <a href="/channels/chat/online/list">{{ \'APPLICATION_ONLINE\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-question font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_VISITORS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/online/view/view.detail.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_DETAIL\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body row" data-ng-init="initView()">\n <div class="col-md-6">\n <div class="news-blocks">\n <h3>\n <a href="#" class="inactive-link">{{\'APPLICATION_MESSAGES\' | translate}}</a>\n <!-- <a href="#" data-ng-click="export()" data-ng-show="chatRoom.ChatMessages.length" class="btn btn-sm blue pull-right"><i class="icon-cloud-download"></i> {{\'APPLICATION_EXPORT\' | translate}} CSV </a> -->\n <a href="api/chat/rooms/{{chatRoom.id}}/export" target="_blank" data-ng-show="chatRoom.ChatMessages.length" class="btn btn-sm blue pull-right"><i class="icon-cloud-download"></i> {{\'APPLICATION_EXPORT\' | translate}} CSV </a>\n <hr>\n </h3>\n <div class="news-block-tags">\n <em am-time-ago="chatRoom.ChatVisitor.ChatEnquiry.createdAt"></em>\n </div>\n <p>\n <div ng-scrollbars ng-scrollbars-config="config">\n <ul class="chats">\n <li data-ng-class="{\'out\': message.User, \'in\':message.ChatVisitor}" data-ng-repeat="message in chatRoom.ChatMessages | orderBy:\'createdAt\'">\n <img class="avatar" data-ng-src="api/users/avatar/{{message.User.userpic || \'unknown_avatar\'}}">\n <div class="message">\n <span class="arrow">\n </span>\n <a href="#" class="name">\n {{message.User ? message.User.fullname : message.ChatVisitor.fullname}}\n </a>\n <span class="datetime">\n at {{message.createdAt | date: \'medium\'}}\n </span>\n <span class="body">\n {{message.body}}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </div>\n </div>\n <div class="col-md-6">\n <div class="news-blocks">\n <h3>\n <a href="#" class="inactive-link">{{\'APPLICATION_VISITOR\' | translate}}</a>\n <hr>\n </h3>\n <div class="margin-top-20 profile-desc-link">\n <i class="icon-user"></i>\n <a href="#" class="inactive-link">{{chatRoom.ChatVisitor.fullname}}</a>\n </div>\n <div class="margin-top-20 profile-desc-link">\n <i class="icon-envelope"></i>\n <a href="#" class="inactive-link">{{chatRoom.ChatVisitor.email}}</a>\n </div>\n <div class="margin-top-20 profile-desc-link">\n <i class="icon-globe"></i>\n <a href="#" class="inactive-link">{{chatRoom.ChatVisitor.remote_address}}</a>\n </div>\n <div class="margin-top-20 profile-desc-link">\n <i class="icon-home"></i>\n <a href="#" class="inactive-link">{{chatRoom.ChatVisitor.referer}} - {{chatRoom.ChatVisitor.ChatWebsite.name}}</a>\n </div>\n <div class="margin-top-20 profile-desc-link">\n <i class="icon-cursor"></i>\n <a href="#" class="inactive-link">{{chatRoom.ChatVisitor.browser}}</a>\n </div>\n <div class="margin-top-20 profile-desc-link">\n <i class="icon-screen-desktop"></i>\n <a href="#" class="inactive-link">{{chatRoom.ChatVisitor.os}}</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n'),a.put("app/channels/chat/online/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bubble"></i>\n <a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-login"></i>\n <a href="/channels/chat/online/list">Online</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/enquiry.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- START USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{chatRoom.ChatVisitor.email}}\n </div>\n <div class="profile-usertitle-job">\n {{chatRoom.ChatVisitor.fullname}}\n </div>\n </div>\n <!-- END USER TITLE -->\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.chat.online.view.detail\')}">\n <a data-ng-href="/channels/chat/online/view/{{chatRoom.id}}/detail">\n <i class="icon-tag"></i>\n {{ \'APPLICATION_DETAIL\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/preview/preview.html",'<style>\n.xc_header_logo\n{\n display:block;\n background-image:url({{chatWebsite.remote}}/api/xchatty/assets?resource=images/motion_logo.png);\n width:40px;\n height:40px;\n float:left;;\n margin-left: 10px !important;\n margin-top: 6px !important;\n}\n.xc_rating {\n text-align: center;\n}\n.xc_rating_label > input{ /* HIDE RADIO */\n display:none;\n}\n.xc_rating_label > input + img{ /* IMAGE STYLES */\n cursor:pointer;\n border:2px solid transparent;\n}\n.xc_rating_label > input:checked + img{ /* (CHECKED) IMAGE STYLES */\n /*border:2px solid #f00;*/\n background-color: #efefef;\n}\n\n.xc_label {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n.xc_online_message,\n.xc_offline_message,\n.xc_rating_message\n{\n text-align: center;\n}\n\n.xc_div_group {\n margin: 10px 0 10px 0;\n}\n.xc_footer\n{\n text-align: center;\n padding-bottom: 5px;\n}\n\n.xc_powered\n{\n color: grey;\n font: 10px/16px "Lucida Grande","Lucida Sans Unicode",Arial,Verdana,sans-serif;\n padding-bottom: 5px;\n}\n\n.xc_chat_container\n{\n //width:379px;\n //position:fixed;\n //bottom:0;\n //right:50px;\n z-index:9999;\n background-color:transparent;\n}\n\n.xc_chat_container *\n{\n font-family:Arial,Helvetica,sans-serif;\n font-size:13px;\n margin:0;\n padding:0;\n}\n\n.xc_chat_container p\n{\n margin:5px 0;\n}\n\n.xc_signup_wrapper\n{\n max-height:375px;\n}\n\n.xc_conversation_container\n{\n max-height:375px;\n list-style:none;\n overflow:auto;\n margin:0;\n padding:20px 10px;\n}\n\n.xc_conversation_container a\n{\n color:#036;\n}\n\n.xc_conversation_container a.xc_btn_style\n{\n color:#fff;\n}\n\ndiv.xc_chat_head\n{\n color:#fff;\n background:{{chatWebsite.color}};\n //border-radius: 20px 20px 0px 0px !important;\n height:52px;\n line-height:55px;\n cursor:pointer;\n}\n\ndiv.xc_chat_head.rounded\n{\n border-radius: 20px 20px 0px 0px !important;\n}\n\ndiv.xc_chat_head.squared\n{\n //border-radius: 20px 20px 0px 0px !important;\n}\n\n.xc_chat_head-title\n{\n margin:5px 0 0 15px;\n color: #fff;\n}\n\n.xc_header_icon\n{\n display:block;\n background-image:url({{chatWebsite.remote}}/api/xchatty/assets?resource=images/iconVisitorchat.png);\n width:21px;\n height:16px;\n float:right;\n margin:20px 20px 0 0;\n}\n\n.xc_header_icon span.xc_notification_badge span\n{\n display:block;\n height:16px;\n width:15px;\n text-align:center;\n font-size:9px;\n color:#555;\n position:relative;\n top:-20px;\n left:4px;\n margin:0;\n padding:0;\n}\n\n.xc_sub-head-spacer\n{\n padding:1px;\n}\n\n.xc_conversation\n{\n display:none;\n margin:0 12px 0 11px;\n}\n\n.xc_chat_toggle_container\n{\n /*background:mediumslateblue center 52px;*/\n background: white;\n border-style: solid;\n border-width: 1px;\n border-color: {{chatWebsite.color}};\n //display:none;\n}\n\n.xc_signup_wrapper,.xc_notifications_wrapper,.xc_enquiry_wrapper,.xc_rating_wrapper\n{\n //display:none;\n display:block;\n overflow:auto;\n line-height:1;\n padding:25px;\n}\n\n.xc_exit_chat_container\n{\n text-align:right;\n width:95%;\n margin:0 auto;\n padding:5px 1px 0 0;\n}\n\n.xc_exit_chat_container span,.xc_exit_chat_container a\n{\n font-size:80%;\n color:#666;\n text-decoration:none;\n}\n\n.xc_exit_chat_container a:hover\n{\n color:#333;\n}\n\na.xc_btn_exit_chat_confirm:hover\n{\n color:red;\n}\n\na.xc_btn_exit_chat_cancel:hover\n{\n color:#0c0;\n}\n\nform.xc_form_reply\n{\n position:relative;\n}\n\n.xc_form_reply\n{\n /*background-color:#e3e3e3;*/\n text-align:center;\n /*border-top:1px solid #d3d3d3;*/\n}\n\n.xc_input_message\n{\n height:100px;\n margin:10px auto 5px;\n}\n\n.xc_input_enquiry_message,\n.xc_input_rating_message\n{\n height:100px;\n}\n\n.xc_form_signup,.xc_form_enquiry,.xc_form_rating\n{\n /*text-align:center;*/\n}\n\n.xc_chat_container textarea,.xc_chat_container input[type=text]\n{\n width:95%;\n min-width:95%;\n max-width:95%;\n -webkit-box-sizing:border-box;\n -moz-box-sizing:border-box;\n box-sizing:border-box;\n background-color:#fff;\n border:1px solid #ccc;\n -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);\n -moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);\n box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);\n -webkit-transition:border linear .2s, box-shadow linear .2s;\n -moz-transition:border linear .2s, box-shadow linear .2s;\n -o-transition:border linear .2s, box-shadow linear .2s;\n transition:border linear .2s, box-shadow linear .2s;\n display:inline-block;\n font-size:14px;\n line-height:20px;\n color:#555;\n -webkit-border-radius:4px;\n -moz-border-radius:4px;\n border-radius:4px;\n vertical-align:middle;\n margin:3px 0;\n padding:4px 6px;\n resize: none;\n}\n\n.xc_chat_container textarea:focus,.xc_chat_container input[type=text]:focus\n{\n outline: {{chatWebsite.color_focus}} auto 5px;\n}\n\n.xc_chat_container input[type=text]\n{\n height: 30px;\n}\n\n.xc_message_sending textarea, .xc_enquiry_sending textarea\n{\n background: #fff url({{chatWebsite.remote}}/api/xchatty/assets?resource=images/loading.gif) 98% 5px no-repeat;\n}\n\n.xc_chatrow\n{\n display:block;\n border-top:1px dashed #e3e3e3;\n margin:5px 0;\n clear: both;\n}\n\n.xc_chatrow p\n{\n color:#444;\n word-wrap:break-word;\n}\n\n.xc_time\n{\n float:right;\n font-size:80%;\n color:#ccc;\n padding-left:12px;\n margin:3px;\n}\n\n.xc_submission_pending\n{\n background:transparent url({{chatWebsite.remote}}/api/xchatty/assets?resource=images/bullet_clock.png) left center norepeat;\n}\n\n.xc_submission_confirmed\n{\n background:transparent url({{chatWebsite.remote}}/api/xchatty/assets?resource=images/bullet_tick.png) left center norepeat;\n}\n\n.xc_fullname\n{\n font-weight:700;\n}\n\n.xc_fullname:after\n{\n content:":";\n}\n\n.xc_avatar\n{\n float: left;\n margin: 0 5px 5px 0;\n display: inline-block;\n width: 40px;\n height: 40px;\n border-radius: 5px;\n -moz-border-radius: 5px;\n -webkit-border-radius: 5px;\n}\n\n.xc_smilie\n{\n background-repeat:no-repeat;\n display:inline-block;\n width:18px;\n height:18px;\n text-indent:-9999px;\n white-space:nowrap;\n}\n\n.xc_btn_load_more\n{\n width:100%!important;\n}\n\n.xc_notifications_wrapper\n{\n text-shadow:0 1px 0 rgba(255,255,255,0.5);\n}\n\n.xc_notification_success\n{\n color:#468847;\n}\n\n.xc_notification_error\n{\n color:#b94a48;\n}\n\n.xc_errorlist\n{\n margin:0 0 0 25px;\n padding:0;\n}\n\ni.xc_btn_notifications_close\n{\n float:right;\n font-weight:700;\n font-size:20px;\n color:#ccc;\n cursor:pointer;\n margin:-15px 0 0;\n padding:0;\n}\n\n.xc_btn_style\n{\n width:95%;\n text-align:center;\n line-height:1.2;\n font-size:90%;\n -moz-box-shadow:inset 0 1px 0 0 {{chatWebsite.color_button}};\n -webkit-box-shadow:inset 0 1px 0 0 {{chatWebsite.color_button}};\n box-shadow:inset 0 1px 0 0 {{chatWebsite.color_button}};\n background:0;\n background-color:{{chatWebsite.color_button}};\n -moz-border-radius:4px;\n -webkit-border-radius:4px;\n border-radius:4px;\n border:1px solid {{chatWebsite.color_button}};\n display:inline-block;\n color:#fff;\n font-weight:700;\n text-decoration:none;\n text-shadow:1px 1px 0 #000c17;\n margin:0 auto 5px;\n padding:2px 0;\n}\n\n.xc_btn_style:hover\n{\n background:0;\n background-color:{{chatWebsite.color_button}};\n color: #fff;\n text-decoration: none;\n}\n\n.xc_btn_style:active\n{\n position:relative;\n top:1px;\n}\n\n.xc_composing_container\n{\n display: none;\n width: 95%;\n margin: 0 auto;\n background: transparent url({{chatWebsite.remote}}/api/xchatty/assets?resource=images/bullet_pencil.png) 6px center no-repeat;\n padding-left: 19px;\n font-style: italic;\n}\n\n@media only screen and (max-height: 620px) {\n .xc_conversation_container\n {\n max-height:300px!important;\n }\n}\n\n@media only screen and (max-height: 545px) {\n .xc_conversation_container\n {\n max-height:200px!important;\n }\n}\n\n@media only screen and (max-height: 445px) {\n .xc_conversation_container\n {\n max-height:150px!important;\n }\n}\n\n@media only screen and (max-width: 480px) {\n .xc_chat_container\n {\n width:95%!important;\n right:auto!important;\n -webkit-border-top-left-radius:15px;\n -webkit-border-top-right-radius:15px;\n -moz-border-radius-topleft:15px;\n -moz-border-radius-topright:15px;\n border-top-left-radius:15px;\n border-top-right-radius:15px;\n box-shadow:0 0 5px rgba(0,0,0,.5);\n -webkit-box-shadow:0 0 5px rgba(0,0,0,.5);\n -moz-box-shadow:0 0 5px rgba(0,0,0,.5);\n }\n\n div.xc_chat_head\n {\n background-color:#036;\n background-image:none;\n line-height:25px;\n height:auto;\n -webkit-border-top-left-radius:15px;\n -webkit-border-top-right-radius:15px;\n -moz-border-radius-topleft:15px;\n -moz-border-radius-topright:15px;\n border-top-left-radius:15px;\n border-top-right-radius:15px;\n padding:10px;\n }\n\n .xc_chat_toggle_container\n {\n background-color:#fff;\n background-image:none;\n border-color:#036;\n border-style:solid;\n border-width:0 1px;\n }\n\n .xc_header_icon\n {\n background-image:url({{chatWebsite.remote}}/api/xchatty/assets?resource=images/icon_visitorchat.png);\n margin:0;\n }\n\n .xc_header_icon span.xc_notification_badge span\n {\n top:-5px;\n left:5px;\n }\n\n .xc_notification_success\n {\n background-color:#dff0d8;\n border:1px solid #d6e9c6;\n }\n\n .xc_conversation_container\n {\n max-height:375px;\n border-color:#036;\n }\n\n .xc_notification_error\n {\n background-color:#f2dede;\n border:1px solid #eed3d7;\n }\n\n .xc_sub-head-spacer\n {\n display:none;\n padding:0;\n }\n\n .xc_chat_head-title,.xc_conversation\n {\n margin:0;\n }\n}\n</style>\n<div class="xc_chat_container">\n <div class="xc_chat_head {{chatWebsite.header_shape}}">\n <i class="xc_header_icon">\n <span class="xc_notification_badge">\n <span class="xc_notification_badge_number"></span>\n </span>\n </i>\n <i class="xc_header_logo" style="background-image:url(/api/xchatty/assets?resource=images/{{(chatWebsite.defaultLogo || !license.custom) ? \'motionLogo.png\' : (!chatWebsite.defaultLogo && chatWebsite.logo && license.custom) ? chatWebsite.logo+\'&uploaded\' : \'motionLogo.png\'}});background-size:contain;"></i>\n </a>\n <span class="xc_chat_head-title">{{statePreview.state == \'online\' ? chatWebsite.header_online : chatWebsite.header_offline}}</span>\n </div>\n <div class="xc_chat_toggle_container">\n <div class="xc_sub-head-spacer"></div>\n <!-- <div class="xc_notifications_wrapper">\n <ul class="xc_errorlist"></ul>\n </div> -->\n <div class="xc_enquiry_wrapper" data-ng-show=\'statePreview.state == "offline"\'>\n <form class="xc_form_enquiry" accept-charset="UTF-8">\n <p class="xc_offline_message" ng-bind-html=\'chatWebsite.offline_message\'></p>\n <br>\n <div ng-if="chatWebsite.enquiry_enable">\n <div class="xc_div_group">\n <label for="enquiryFullname" class="xc_label">{{chatWebsite.name_title}} *</label>\n <input id="enquiryFullname" maxlength="45" data-label="Name" type="text" name="data[Enquiry][fullname]" placeholder="{{chatWebsite.username_placeholder}}" class="xc_input_enquiry_fullname" required/>\n </div>\n <br>\n <div class="xc_div_group">\n <label for="enquiryEmail" class="xc_label">{{chatWebsite.email_title}} *</label>\n <input id="enquiryEmail" maxlength="85" type="text" data-label="Email Address" name="data[Enquiry][email]" placeholder="{{chatWebsite.email_placeholder}}" class="xc_input_enquiry_email" required/>\n </div>\n <br>\n <div class="xc_div_group">\n <label for="enquiryMessage" class="xc_label">{{chatWebsite.message_title}} *</label>\n <textarea id="enquiryMessage" data-label="Message" maxlength="1500" placeholder="{{chatWebsite.enquiry_message_placeholder}}" name="data[Enquiry][message]" class="xc_input_enquiry_message" required></textarea>\n </div>\n <br>\n <button type="submit" class="xc_btn_enquiry xc_btn_style">{{chatWebsite.enquiry_button}}</button>\n </div>\n </form>\n </div>\n <div class="xc_signup_wrapper" data-ng-show=\'statePreview.state == "online"\'>\n <form class="xc_form_signup" accept-charset="UTF-8">\n <p class="xc_online_message" ng-bind-html=\'chatWebsite.online_message\'></p>\n <br>\n <div class="xc_div_group">\n <label for="dataFullname" class="xc_label">{{chatWebsite.name_title}} *</label>\n <input maxlength="45" id="dataFullname" data-label="Fullname" type="text" name="data[Discussion][fullname]" placeholder="{{chatWebsite.username_placeholder}}" class="xc_input_fullname" required/>\n </div>\n <br>\n <div class="xc_div_group">\n <label for="dataEmail" class="xc_label">{{chatWebsite.email_title}} *</label>\n <input maxlength="85" id="dataEmail" data-label="Email Address" type="text" name="data[Discussion][email]" placeholder="{{chatWebsite.email_placeholder}}" class="xc_input_email" required/>\n </div>\n <br>\n <input type="hidden" class="xc_input_visitor_time" name="data[Discussion][visitor_time]" />\n <button type="submit" class="xc_btn_signup xc_btn_style">{{chatWebsite.start_chat_button}}</button>\n </form>\n </div>\n <div class="xc_rating_wrapper" data-ng-show=\'statePreview.state == "rating"\'>\n <form class="xc_form_rating" accept-charset="UTF-8">\n <p class="xc_rating_message">{{chatWebsite.rating_message}}</p>\n <br>\n <div class="xc_rating">\n <label class="xc_rating_label" style="padding:30px;">\n <input type="radio" name="data[Rating][rating]" value="good" />\n <img src="{{chatWebsite.remote}}/api/xchatty/assets?resource=images/like.png" alt="Good" height="50"/>\n </label>\n <label class="xc_rating_label" style="padding:30px;">\n <input type="radio" name="data[Rating][rating]" value="bad"/>\n <img src="{{chatWebsite.remote}}/api/xchatty/assets?resource=images/dislike.png" alt="Good" height="50"/>\n </label>\n </div>\n <div class="xc_div_group">\n <label for="ratingMessage" class="xc_label">Message</label>\n <textarea id="ratingMessage" data-label="Message" maxlength="1500" name="data[Rating][message]" class="xc_input_rating_message"></textarea>\n </div>\n <button type="submit" class="xc_button_rating xc_btn_style">{{chatWebsite.rating_send}}</button>\n <button type="button" class="xc_button_skip_rating xc_btn_style">{{chatWebsite.rating_skip}}</button>\n </form>\n </div>\n <div class="xc_footer">\n <div data-ng-if="chatWebsite.defaultWhiteLabel || !license.custom" class="xc_powered"><a>Powered by xCALLY</a></div>\n <div data-ng-if="!chatWebsite.defaultWhiteLabel && license.custom" data-ng-bind-html="chatWebsite.whiteLabel"></div>\n </div>\n</div>\n</div>\n'),a.put("app/channels/chat/queue/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_QUEUE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" data-ng-pattern="settings.patternName" required />\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$invalid && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$invalid && form.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START STRATEGY -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.strategy.$touched || form.$submitted) && form.strategy.$invalid}">\n <label class="control-label">{{\'APPLICATION_STRATEGY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.strategy" name="strategy" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | uppercase}}</ui-select-match>\n <ui-select-choices repeat="strategy in strategies | filter: $select.search">\n <div ng-bind-html="strategy.toUpperCase() | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.strategy.$touched || form.$submitted) && form.strategy.$invalid && form.strategy.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END STRATEGY -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.timeout.$touched || form.$submitted) && form.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="Timeout" class="form-control" data-ng-model="item.timeout" required min="1"/>\n <span data-ng-show="(form.timeout.$touched || form.$submitted) && form.timeout.$invalid && form.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START AGENTS-->\n <div class="form-body" data-ng-init="getTeams()">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="item.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="item.penalty=item.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!item.penalty" data-ng-click="item.penalty=item.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-team">\n </div>\n </div>\n </div>\n <!-- END AGENTS-->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/chat/queue/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bubble"></i>\n <a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="#">{{ \'APPLICATION_QUEUES\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_QUEUES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <a class="btn green-jungle" href="#" data-ng-click="createItem()" data-ng-if="Auth.isAdmin()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_QUEUE\' | translate }}\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/queue/view/view.agents.html",'<div class="row" data-ng-init="getTeams()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_AGENTS\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <!-- BEGIN FORM-->\n <form action="index.html" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="queue.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="queue.penalty=queue.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!queue.penalty" data-ng-click="queue.penalty=queue.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-team">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/chat/queue/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getQueue()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bubble"></i>\n <a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="/channels/chat/queues/list">{{ \'APPLICATION_QUEUES\' | translate }}</a>\n <i data-ng-show="queue" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="queue">\n <a href="#">{{queue.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/queue.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{queue.name}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.chat.queues.view.settings\')}">\n <a data-ng-href="/channels/chat/queues/view/{{queue.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.channels.chat.queues.view.agents\')}" data-ng-show="Auth.getCurrentUser().role === \'admin\'">\n <a data-ng-href="/channels/chat/queues/view/{{queue.id}}/agents">\n <i class="icon-people"></i>\n {{ \'APPLICATION_AGENTS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), +a.put("app/channels/chat/queue/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateChatQueue()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="queue.name" data-ng-pattern="settings.patternName" required />\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid && forms.general.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START STRATEGY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.strategy.$touched || forms.general.$submitted) && forms.general.strategy.$invalid}">\n <label class="control-label">{{\'APPLICATION_STRATEGY\' | translate}}</label>\n <ui-select data-ng-model="queue.strategy" name="strategy" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | uppercase}}</ui-select-match>\n <ui-select-choices repeat="strategy in strategies | filter: $select.search">\n <div ng-bind-html="strategy.toUpperCase() | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END STRATEGY -->\n\n <!-- START TIMEOUT -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_AGENT\' | translate}} {{\'APPLICATION_TIMEOUT\' | translate}}</label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" min="1" data-ng-model="queue.timeout"/>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="queue.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <input data-ng-if="Auth.isAdmin()" class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/chat/realtime/view/agent/agent.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initAgents()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-tree-view ui-grid-expandable-row ui-grid-pagination ui-grid-auto-resize>\n <span us-spinner spinner-key="grid-spinner" spinner-start-active="true"></span>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/realtime/view/agent/agent.modal.info.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_INTERFACE_INFO\' | translate }}</h3>\n</div>\n<div class="modal-body">\n<div data-ng-if="agent.ipaddr" class="well">\n <div>{{agent.ipaddr}}:{{agent.port}}</div>\n <div>{{agent.fullcontact}}</div>\n <div>{{agent.useragent}}</div>\n <div>{{agent.lastms}}</div>\n</div>\n<div data-ng-if="!agent.ipaddr" class="alert alert-danger" role="alert">\n {{\'MESSAGE_NO_AVAILABLE_INFO\' | translate}}\n</div>\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/channels/chat/realtime/view/agent/queue.modal.add.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_JOIN_QUEUE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <div class="form-group row">\n <label class="col-md-2 control-label" style="margin-top: 7px;">{{\'APPLICATION_QUEUE\' | translate}}:</label>\n <div class="col-md-10">\n <ui-select multiple ng-model="item.queues" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_QUEUE\' | translate}}">{{$item.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n</div>\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/chat/realtime/view/application/application.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initApplications()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-auto-resize>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/realtime/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bubble"></i>\n <a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-energy"></i>\n <a href="#">{{ \'APPLICATION_REALTIME\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <div>\n <nav class="navbar navbar-default" role="navigation">\n <div class="collapse navbar-collapse">\n <ul class="nav navbar-nav">\n <li data-ng-class="{\'active\': $state.is(\'main.channels.chat.realtime.view.agents\')}">\n <a href="/channels/chat/realtime/view/agents">\n {{\'APPLICATION_AGENTS\' | translate}}\n </a>\n </li>\n <li data-ng-class="{\'active\': $state.is(\'main.channels.chat.realtime.view.applications\')}">\n <a href="/channels/chat/realtime/view/applications">\n {{\'APPLICATION_APPLICATIONS\' | translate}}\n </a>\n </li>\n <li>\n <a href="#">\n <b>|{{\'APPLICATION_SHOW_TIMERS\' | translate}} </b><input\n bs-switch\n class="form-control"\n ng-model="showTimers"\n type="checkbox"\n name="showTimers"\n switch-active="{{ timerSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ timerSwitch.onColor }}"\n switch-off-color="{{ timerSwitch.offColor }}"\n switch-animate="{{ timerSwitch.animate }}"\n switch-size="{{ timerSwitch.size }}"\n switch-label="{{ timerSwitch.label }}"\n switch-icon="{{ timerSwitch.icon }}"\n switch-radio-off="{{ timerSwitch.radioOff }}"\n switch-label-width="{{ timerSwitch.labelWidth }}"\n switch-handle-width="{{ timerSwitch.handleWidth }}"><b>|</b>\n </a>\n </li>\n </ul>\n </div>\n </nav>\n </div>\n\n <div ui-view></div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/room/external/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n <div class="portlet light" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption">\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'OPEN\'" uib-uncheckable>OPEN</button>\n </div>\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'CLOSED\'" uib-uncheckable>CLOSED</button>\n </div>\n </div>\n <div class="actions">\n <a href="#" class="btn btn-icon-only blue" data-ng-click="tagItems();" data-ng-show="id.length">\n <i class="fa fa-tags"></i>\n </a>\n <a href="#" class="btn btn-icon-only default" data-ng-click="getPage();">\n <i class="fa fa-refresh"></i>\n </a>\n </div>\n</div>\n<div class="portlet-title" data-ng-show="tags.length">\n <!-- START TAGS -->\n <div class="form-group">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-tags" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <ui-select multiple data-ng-model="query.tags" theme="bootstrap" on-select="onChanged($item, $model)" on-remove="onChanged($item, $model)">\n <ui-select-match placeholder="Search by tag...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter:$select.search">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n <!-- END TAGS -->\n</div>\n<div class="portlet-body">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n\n <!-- START TABLE -->\n\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-selection ui-grid-pagination class="ui-grid">\n <div class="watermark" data-ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/room/group/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n <div class="portlet light" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption">\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'OPEN\'" uib-uncheckable>OPEN</button>\n </div>\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'CLOSED\'" uib-uncheckable>CLOSED</button>\n </div>\n </div>\n <div class="actions">\n <a href="#" class="btn btn-icon-only blue" data-ng-click="tagItems();" data-ng-show="id.length">\n <i class="fa fa-tags"></i>\n </a>\n <a href="#" class="btn btn-icon-only default" data-ng-click="getPage();">\n <i class="fa fa-refresh"></i>\n </a>\n </div>\n</div>\n<div class="portlet-title" data-ng-show="tags.length">\n <!-- START TAGS -->\n <div class="form-group">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-tags" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <ui-select multiple data-ng-model="query.tags" theme="bootstrap" on-select="onChanged($item, $model)" on-remove="onChanged($item, $model)">\n <ui-select-match placeholder="Search by tag...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter:$select.search">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n <!-- END TAGS -->\n</div>\n<div class="portlet-body">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-selection ui-grid-pagination class="ui-grid">\n <div class="watermark" data-ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/room/internal/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12" data-ng-init="initView()">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination class="ui-grid">\n <div class="watermark" data-ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/room/room.add.html",'<div class="modal-header">\n <button ng-if="modal.dismissable" type="button" data-ng-click="$dismiss()" class="close">×</button>\n <h4 class="modal-title">{{\'APPLICATION_NEW_GROUP\' | translate}}</h4>\n</div>\n\n<div class="modal-body">\n <div class="portlet box blue">\n <div class="portlet-title">\n <div class="caption">\n <i class="icon-people"></i>{{\'APPLICATION_AGENTS\' | translate}}\n </div>\n </div>\n <div class="portlet-body">\n <ul>\n <li data-ng-repeat="item in items">\n {{item.fullname}}\n </li>\n <li data-ng-repeat="item in selected.items">\n {{item.fullname}}\n </li>\n </ul>\n </div>\n </div>\n\n <ui-select multiple name="items" ng-model="selected.items" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SELECTED_AGENTS\' | translate}}">{{$item.fullname}}</ui-select-match>\n <ui-select-choices repeat="{id: agent.id, fullname: agent.fullname} as agent in agents.rows | filter: $select.search">\n {{agent.fullname}}\n </ui-select-choices>\n </ui-select>\n</div>\n\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()" data-ng-show="selected.items.length">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/chat/room/room.close.html",'<div class="modal-header">\n <button ng-if="modal.dismissable" type="button" ng-click="$dismiss()" class="close">×</button>\n <h4 ng-if="modal.title" ng-bind="modal.title | translate" class="modal-title"></h4>\n</div>\n<div class="modal-body">\n <p ng-if="modal.text && !closed" ng-bind="modal.text | translate"></p>\n <form name="form" novalidate data-ng-init="initDisposition()">\n <div class="form-group">\n <ui-select data-ng-model="item.disposition" name="list" theme="bootstrap" data-ng-disabled="!dispositions.length" required>\n <ui-select-match placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="disposition.name as disposition in dispositions | filter: $select.search">\n <div ng-bind-html="disposition.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="note note-warning" data-ng-hide="dispositions.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_DISPOSITIONS_AVAILABLE\' | translate }}\n </p>\n </div>\n</form>\n <!-- <div ng-if="modal.html" ng-bind-html="modal.html"></div> -->\n</div>\n<div class="modal-footer">\n <button class="btn btn-danger" type="button" ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n <!-- <button ng-repeat="button in modal.buttons" ng-class="button.classes" ng-click="button.click($event)" ng-bind="button.text" class="btn"></button> -->\n</div>\n'),a.put("app/channels/chat/room/room.directive.html",'<div class="portlet light">\n <div class="portlet-title">\n <div class="caption">\n <span data-ng-if="chatRoom" class="label label-sm label-default">{{chatRoom.status}}</span>\n <span data-ng-if="chatRoom.ChatWebsite"> | </span>\n <span data-ng-if="chatRoom.ChatWebsite" class="caption-subject font-green-sharp bold uppercase">{{chatRoom.ChatWebsite.name | truncate: 25: \'...\': true}}</span>\n </div>\n <div class="actions">\n <button class="btn btn-icon-only btn-primary" data-ng-click="addAgent(chatRoom.id)" data-ng-disabled="chatRoom.status === \'CLOSED\'">\n <i class="fa fa-user-plus"></i>\n </button>\n <button class="btn btn-icon-only" data-ng-class="{\'btn-success\':chatRoom.status !== \'CLOSED\',\'grey-cascade\':chatRoom.status === \'CLOSED\'}" data-ng-click="closeRoom(chatRoom.id)" data-ng-if="chatRoom.ChatVisitors.length" data-ng-disabled="chatRoom.status === \'CLOSED\' && chatRoom.disposition">\n <i data-ng-class="{\'fa fa-upload\':chatRoom.status !== \'CLOSED\',\'icon-target\':chatRoom.status === \'CLOSED\'}"></i>\n </button>\n <motion-file-download resource="ChatRoom" params="{id:chatRoom.id,controller:\'export\'}" mimetype="\'text/csv\'" filename="\'chat_\'+chatRoom.id+\'_transcript\'" btnclass="btn btn-primary btn-icon-only"></motion-file-download>\n <button class="btn default btn-icon-only" data-ng-if="chatRoom && chatRoom.status !== \'CLOSED\'" data-ng-click="togglePanelLeft()" title="{{\'APPLICATION_RESIZE\' | translate}}">\n <i ng-class="panelRight == \'col-md-12\' ? \'icon-size-actual\' : \'icon-size-fullscreen\'"></i>\n </button>\n </div>\n </div>\n <div class="portlet-body">\n<div class="row">\n <div data-ng-class="panelLeft" data-ng-show="panelLeft">\n <div class="portlet">\n <div class="portlet-body">\n <div class="portlet-title line">\n <div class="form">\n <!-- START TAGS -->\n <div class="form-group">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-tags" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <ui-select multiple data-ng-model="form.tags" theme="bootstrap" on-select="onChanged(chatRoom.id)" on-remove="onChanged(chatRoom.id)">\n <ui-select-match placeholder="Tags...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter:$select.search" class="">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n <!-- END TAGS -->\n </div>\n </div>\n <v-accordion class="vAccordion--default">\n <v-pane data-ng-if="chatRoom.ChatVisitors.length" data-ng-repeat="chatVisitor in chatRoom.ChatVisitors" expanded="true">\n <v-pane-header>\n <ng-letter-avatar\n height="40"\n width="40"\n data="{{chatRoom.ChatVisitor.fullname}}"\n fontsize="25"\n avatarcustombgcolor="#B0B0B0"\n charCount="2"\n avatarcustomborder="border:2px solid #EA4C61"\n shape="round"></ng-letter-avatar>\n </v-pane-header>\n <v-pane-content>\n {{\'APPLICATION_ROOM_ID\' | translate}}: <p>{{chatRoom.id}}</p>\n {{\'APPLICATION_NAME\' | translate}}: <p>{{chatRoom.ChatVisitor.fullname}}</p>\n {{\'APPLICATION_EMAIL\' | translate}}: <p><a data-ng-click="openContact(chatRoom.ChatVisitor.email)" href="">{{chatRoom.ChatVisitor.email}}</a></p>\n <span data-ng-if="chatRoom.ChatVisitor.labelData1">{{chatRoom.ChatVisitor.labelData1}}: <p>{{chatRoom.ChatVisitor.data1}}</p></span>\n <span data-ng-if="chatRoom.ChatVisitor.labelData2">{{chatRoom.ChatVisitor.labelData2}}: <p>{{chatRoom.ChatVisitor.data2}}</p></span>\n <span data-ng-if="chatRoom.ChatVisitor.labelData3">{{chatRoom.ChatVisitor.labelData3}}: <p>{{chatRoom.ChatVisitor.data3}}</p></span>\n {{\'APPLICATION_REMOTE_ADDRESS\' | translate}}: <p>{{chatRoom.ChatVisitor.remote_address}}</p>\n {{\'APPLICATION_BROWSER\' | translate}}: <p>{{chatRoom.ChatVisitor.browser}}</p>\n {{\'APPLICATION_REFERER\' | translate}}:<p>{{chatRoom.ChatVisitor.referer}} - {{enquiry.ChatWebsite.name}}</p>\n {{\'APPLICATION_OS\' | translate}}: <p>{{chatRoom.ChatVisitor.os}}</p>\n </v-pane-content>\n </v-pane>\n\n <v-pane data-ng-repeat="user in chatRoom.Users | filter:{ id: \'!\' + user.id}">\n <v-pane-header>\n <ng-letter-avatar\n height="40"\n width="40"\n data="{{user.fullname}}"\n fontsize="25"\n avatarcustombgcolor="#B0B0B0"\n avatarcustomborder="border:2px solid #3399CC"\n charCount="2"\n shape="round"></ng-letter-avatar>\n </v-pane-header>\n <v-pane-content>\n {{\'APPLICATION_NAME\' | translate}}: <p>{{user.fullname}}</p>\n {{\'APPLICATION_ROLE\' | translate}}: <p>{{user.role}}</p>\n {{\'APPLICATION_INTERNAL\' | translate}}: <p>{{user.internal}}</p>\n {{\'APPLICATION_EMAIL\' | translate}}: <p><a data-ng-href="mailto:{{user.email}}">{{user.email}}</a></p>\n </v-pane-content>\n </v-pane>\n </v-accordion>\n </div>\n </div>\n </div>\n <div data-ng-class="panelRight">\n <div class="note note-info" data-ng-if="chatRoom && chatRoom.status == \'CLOSED\'">\n <h4 class="block"><i class="icon-info"></i> {{\'MESSAGE_CHAT_ROOM_CLOSED\' | translate}}!</h4>\n <p>\n <strong>{{\'MESSAGE_CHAT_ROOM_CLOSED_DETAILS\' | translate}}.</strong>\n </p>\n <hr>\n <p>\n <i class="icon-target"></i> {{\'APPLICATION_DISPOSITION\' | translate}}: <strong>{{chatRoom.disposition}}</strong>\n </p>\n <p>\n <i class="icon-star"></i> {{\'APPLICATION_RATING\' | translate}}: <strong>{{chatRoom.rating | ucfirst}}</strong>\n </p>\n <p>\n <i class="icon-note"></i> {{\'APPLICATION_RATING_MESSAGE\' | translate}}: <strong>{{chatRoom.ratingMessage}}</strong>\n </p>\n <p>\n <i class="icon-calendar"></i> {{\'APPLICATION_UPDATED_AT\' | translate}}: <strong>{{chatRoom.updatedAt | date:\'medium\'}}</strong> (<span am-time-ago="chatRoom.updatedAt"></span>)\n </p>\n </div>\n <div class="portlet light bordered">\n <div class="portlet-body">\n <div id="chat-box" schroll-bottom="chatRoom.ChatMessages">\n <ul class="chats">\n <li data-ng-repeat="message in chatRoom.ChatMessages" data-ng-class="message.UserId == user.id ? \'out\' : \'in\'">\n <div class="avatar" data-ng-class="message.ChatVisitor ? \'pretty-avatar-v\' : \'pretty-avatar\'">\n <ng-letter-avatar\n data-ng-if="!message.ChatVisitor"\n height="40"\n width="40"\n fontsize="25"\n data="{{message.User.fullname}}"\n avatarcustombgcolor="#B0B0B0"\n avatarcustomborder="border:2px solid #3399CC"\n charCount="2"\n shape="round"></ng-letter-avatar>\n <ng-letter-avatar\n data-ng-if="message.ChatVisitor"\n height="40"\n width="40"\n fontsize="25"\n data="{{message.ChatVisitor.fullname}}"\n avatarcustombgcolor="#B0B0B0"\n avatarcustomborder="border:2px solid #EA4C61"\n charCount="2"\n shape="round"></ng-letter-avatar>\n </div>\n <div class="message">\n <span class="arrow"></span>\n <a data-ng-click="message.ChatVisitor && openContact(chatRoom.ChatVisitor.email)" class="name">{{message.User.fullname || message.ChatVisitor.fullname}} </a>\n <i class="icon-calendar" title="{{message.createdAt | date:\'MMM d, y HH:mm:ss\'}}"></i> <span am-time-ago="message.createdAt"></span>\n <ng-emoticons emoticons-data="message.body"></ng-emoticons>\n </div>\n </li>\n <li data-ng-if="chatRoom.status === \'CLOSED\'">\n <div class="media-body" style="text-align: center;">\n <h5 class="media-heading"><i>{{\'MESSAGE_CHAT_CLOSED\' | translate | lowercase}}</i></h5>\n </div>\n </li>\n </ul>\n </div>\n <div class="chat-form" data-ng-if="chatRoom && isMyRoom(chatRoom.Users)">\n <div class="input-cont">\n <input class="form-control" type="text" placeholder="Type a message here..." ng-enter="sendMessage()" data-ng-model="message.body" data-ng-disabled="chatRoom.status === \'CLOSED\'"/>\n </div>\n <div class="btn-cont">\n <span class="arrow"></span>\n <a href="#" class="btn blue icn-only" data-ng-disabled="chatRoom.status === \'CLOSED\'" data-ng-click="sendMessage()">\n <i class="fa fa-check icon-white"></i>\n </a>\n </div>\n </div>\n <div class="form-group chat-canned-answer-div" data-ng-if="chatRoom.status !== \'CLOSED\'" data-ng-class="{\'has-error\': forms.compose.subject.$invalid && forms.compose.$submitted}">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-magic" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <input type="text"\n data-ng-model="modelOptions.selectedAnswer"\n uib-typeahead="key for key in getAnswers($viewValue)"\n placeholder="Canned answers.."\n typeahead-loading="loadingLocations"\n typeahead-no-results="noResults"\n typeahead-on-select="onSelect($item)"\n class="form-control">\n <i ng-show="loadingLocations" class="glyphicon glyphicon-refresh"></i>\n <div ng-show="noResults">\n <i class="glyphicon glyphicon-remove"></i> No Results Found\n </div>\n <span data-ng-show="forms.compose.subject.$invalid && forms.compose.$submitted" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n </div>\n </div>\n\n </div>\n </div>\n </div>\n</div>\n</div>\n</div>\n"),a.put("app/channels/chat/room/room.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bubble"></i>\n <a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-users"></i>\n <a href="#">{{ \'APPLICATION_INTERACTIONS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <div class="row inbox">\n <div class="col-md-2">\n <ul class="inbox-nav margin-bottom-10">\n <li data-ng-class="{active: $state.includes(\'main.channels.chat.room.internal\')}">\n <a href="/channels/chat/room/internal/list" class="btn">\n {{\'APPLICATION_INTERNAL\' | translate}}\n </a>\n <b></b>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.channels.chat.room.external\')}">\n <a href="/channels/chat/room/external/list" class="btn">\n {{\'APPLICATION_EXTERNAL\' | translate}}\n </a>\n <b></b>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.channels.chat.room.group\')}">\n <a href="/channels/chat/room/group/list" class="btn">\n {{\'APPLICATION_GROUPS\' | translate}}\n </a>\n <b></b>\n </li>\n </ul>\n </div>\n\n <div class="col-md-10">\n <div class="room-content">\n <div ui-view></div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/room/template.html",'<div ng-bind-html="neText" ne-hljs></div>\n<div class="ne-video" ng-if="video.host" class="fade">\n <div class="ne-video-preview" ng-hide="nePlayVideo || !options.video.details">\n <div class="ne-video-thumb" ng-click="nePlayVideo=!nePlayVideo">\n <img ng-src="{{video.thumbnail}}" alt=""/>\n <i class="fa fa-play-circle-o"></i>\n </div>\n <div class="ne-video-detail">\n <div class="ne-video-title">\n <a ng-href="{{video.url}}">{{video.title}}</a>\n </div>\n <div class="ne-video-desc">\n {{video.description}}\n </div>\n <div class="ne-video-stats">\n <span><i class="fa fa-eye"></i> {{video.views}}</span>\n <span><i class="fa fa-heart"></i> {{video.likes}}</span>\n </div>\n </div>\n </div>\n <div class="ne-video-player" ng-if="nePlayVideo || !(options.video.details)">\n <iframe ng-src="{{video.embedSrc}}" frameBorder="0" width="{{video.width}}" height="{{video.height}}" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>\n </div>\n</div>\n<div class="ne-video" ng-if="video.basic">\n <div class="ne-video-player">\n <div class="player">\n <video ng-src="{{video.basic}}" controls></video>\n </div>\n </div>\n</div>\n<div ng-init="neImageLong=false" ng-class="{false:\'ne-image\', true:\'ne-image ne-image-long\'}[neImageLong]"\nng-if="image.url">\n<div class="ne-image-wrapper">\n <img ng-src="{{image.url}}" ng-click="neImageLong=!neImageLong" alt=""/>\n</div>\n</div>\n<!-- <div class="ne-pdf" ng-if="pdf.url">\n <div class="ne-pdf-preview" ng-hide="neShowPdf">\n <div class="ne-pdf-icon">\n <i class="fa fa-file-pdf-o"></i>\n </div>\n <div class="ne-pdf-detail" >\n <div class="ne-pdf-title">\n <a href="">{{pdf.url}}</a>\n </div>\n <div class="ne-pdf-view">\n\n <button><i class="fa fa-download"></i> <a ng-href="{{pdf.url}}" target="_blank">Download</a></button>\n <button ng-click="neShowPdf=!neShowPdf"><i class="fa fa-eye"></i> View PDF</button>\n\n </div>\n </div>\n </div>\n <div class="ne-pdf-viewer" ng-if="neShowPdf" ng-show="neShowPdf">\n <iframe ng-src="{{pdf.url}}" frameBorder="0"></iframe>\n </div>\n\n</div>\n<div class="ne-audio" ng-if="audio.url">\n <audio ng-src="{{audio.url}}" controls></audio>\n</div> -->\n'), +a.put("app/channels/chat/room/view.tags.modal.html",'<div class="modal-header" data-ng-init="initModal()">\n <h3 class="modal-title">{{ \'APPLICATION_TAGS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <!-- START TRANSPORT -->\n <div class="form-group">\n <form name="form" novalidate>\n <!-- START TAGS -->\n <div class="form-group">\n <ui-select multiple data-ng-model="item.tags" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_TAGS\' | translate}}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter: $select.search">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END TAGS -->\n </form>\n </div>\n <!-- END TRANSPORT -->\n</div>\n<div class="modal-footer">\n <button type="button" class="btn" data-ng-class="button.class" data-ng-click="button.click()"data-ng-repeat="button in modal.buttons">{{button.text | translate}}</button>\n <!-- <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button> -->\n</div>\n'),a.put("app/channels/chat/visitor/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bubble"></i>\n <a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-question"></i>\n <a href="/channels/chat/visitors/list">{{ \'APPLICATION_VISITORS\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-question font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_VISITORS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/visitor/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bubble"></i>\n <a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-question"></i>\n <a href="/channels/chat/visitors/list">{{ \'APPLICATION_VISITORS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="chatVisitor">\n <a href="#">{{chatVisitor.fullname}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/visitor.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{chatVisitor.fullname}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.chat.visitors.view.profile\')}">\n <a data-ng-href="/channels/chat/visitors/view/{{chatVisitor.id}}/profile">\n <i class="icon-tag"></i>\n {{ \'APPLICATION_PROFILE\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/visitor/view/view.profile.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_PROFILE\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body" data-ng-init="initView()">\n <div>\n <h4 class="profile-desc-title">{{chatVisitor.email}}</h4>\n <div class="margin-top-20 profile-desc-link">\n <i class="icon-magnifier"></i>\n <a href="#" class="inactive-link">{{chatVisitor.origin}}</a>\n </div>\n <div class="margin-top-20 profile-desc-link">\n <i class="icon-globe"></i>\n <a href="#" class="inactive-link">{{chatVisitor.remote_address}}</a>\n </div>\n <div class="margin-top-20 profile-desc-link">\n <i class="icon-user"></i>\n <a href="#" class="inactive-link">{{chatVisitor.user_agent | truncate: 50: \'...\'}}</a>\n </div>\n <div class="margin-top-20 profile-desc-link">\n <i class="icon-flag"></i>\n <a href="#" class="inactive-link">{{chatVisitor.visitor_language}}</a>\n </div>\n <div class="margin-top-20 profile-desc-link">\n <i class="icon-home"></i>\n <a href="#" class="inactive-link">{{chatVisitor.referer}}</a>\n </div>\n <div class="margin-top-20 profile-desc-link">\n <i class="icon-cursor"></i>\n <a href="#" class="inactive-link">{{chatVisitor.browser}}</a>\n </div>\n <div class="margin-top-20 profile-desc-link">\n <i class="icon-screen-desktop"></i>\n <a href="#" class="inactive-link">{{chatVisitor.os}}</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/chat/website/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bubble"></i>\n <a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-globe"></i>\n <a href="#">{{ \'APPLICATION_WEB_SITES\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_WEB_SITES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/channels/chat/websites/wizard">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_WEB_SITE\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/website/view/action/list/list.html",'<div class="row" data-ng-init="initActons()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACTIONS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/channels/chat/websites/view/{{chatWebsite.id}}/actions/wizard" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ACTION\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/chat/website/view/action/view/view.html",'\n<div class="row" data-ng-init="initAction()">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-directions font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACTION\' | translate }}</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="forms.settings" ng-submit="updateItem()" novalidate>\n <!-- START APP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app.$touched || forms.settings.$submitted) && forms.settings.app.$invalid}">\n <label class="control-label">{{ \'APPLICATION_APPLICATION\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.app" name="app" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_APPLICATION\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="app.value as app in apps | filter: $select.search">\n <div ng-bind-html="app.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.app.$touched || forms.settings.$submitted) && forms.settings.app.$invalid && forms.settings.app.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APP -->\n\n <div class="app-settings" ng-slide-down="application.app === \'queue\'" lazy-render duration="1" data-ng-init="getQueues()">\n <!-- START QUEUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.queue.$touched || forms.settings.$submitted) && forms.settings.queue.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.ChatQueueId" name="queue" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="queues.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_QUEUES_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/chat/queues/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.queue.$touched || forms.settings.$submitted) && forms.settings.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'agent\'" lazy-render duration="1" data-ng-init="getAgents()">\n <!-- START AGENT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.agent.$touched || forms.settings.$submitted) && forms.settings.agent.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.UserId" name="agent" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.fullname}}</ui-select-match>\n <ui-select-choices repeat="agent.id as agent in agents | filter: $select.search">\n <div ng-bind-html="agent.fullname | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="agents.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AGENTS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/staff/agents/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.agent.$touched || forms.settings.$submitted) && forms.settings.agent.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END AGENT -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1" data-ng-init="getMailAccounts();getTemplates()">\n <!-- START SENDMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="email" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" min="1" required/>\n <span data-ng-show="(forms.settings.from.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.mail.$touched || forms.settings.$submitted) && forms.settings.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in mailAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.template.$touched || forms.settings.$submitted) && forms.settings.template.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEMPLATE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data9" name="template" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.template.$touched || forms.settings.$submitted) && forms.settings.template.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SENDMAIL -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1" data-ng-init="getSmsAccounts()">\n <!-- START SENDSms -->\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.to.$touched || forms.settings.$submitted) && forms.settings.to.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" ng-pattern="/^[\\+]?[0-9]+$/" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" required/>\n <span data-ng-show="(forms.settings.to.$touched || forms.settings.$submitted) && forms.settings.to.$invalid && forms.settings.to.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in smsAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.text.$touched || forms.text.$submitted) && forms.settings.text.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <textarea id="text" class="form-control maxlength-handler" maxlength="160" name="text" data-ng-model="application.data6" required></textarea>\n <span data-ng-show="(forms.settings.text.$touched || forms.settings.$submitted) && forms.settings.text.$invalid && forms.settings.text.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <!-- END SENDSms -->\n </div>\n\n <!-- START INTERVAL_TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.intType.$touched || forms.settings.$submitted) && forms.settings.intType.$invalid}">\n <label class="control-label">{{ \'APPLICATION_INTERVAL_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.intType" theme="bootstrap" name="intType" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="intType.value as intType in $application.intTypes | filter: $select.search">\n {{ intType.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.intType.$touched || forms.settings.$submitted) && forms.settings.intType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVAL_TYPE -->\n\n <div class="app-settings" ng-slide-down="application.intType === \'custom\'" lazy-render duration="1">\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="application.alwaysTime">\n <uib-timepicker name="t_from" data-ng-model="application.t_from" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker>\n </fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="application.alwaysTime"><uib-timepicker name="t_to" data-ng-model="application.t_to" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker></fieldset>\n <!-- <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="application.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label> -->\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- START ALWAYS -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALWAYS\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="application.alwaysTime"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n <!-- <input type="checkbox" data-ng-model="application.alwaysTime"> -->\n </label>\n </div>\n </div>\n <!-- END ALWAYS -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.md_from" theme="bootstrap" name="md_from">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_to && application.md_to!==\'always\' && monthDay>application.md_to && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.md_to" theme="bootstrap" name="md_to">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_from && application.md_from!==\'always\' && monthDay<application.md_from && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.intType === \'list\'" lazy-render duration="1" data-ng-init="getIntervals()">\n\n <!-- START INTERVALS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.IntervalId.$touched || forms.settings.$submitted) && forms.settings.IntervalId.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVALS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.IntervalId" theme="bootstrap" name="IntervalId" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="interval.id as interval in intervals | filter: $select.search">\n {{ interval.name}}\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="intervals.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_INTERVAL_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/intervals/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.IntervalId.$touched || forms.settings.$submitted) && forms.settings.IntervalId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVALS -->\n\n </div>\n <button class="btn green-haze" type="submit">{{\'APPLICATION_UPDATE\' | translate}}</button>\n </form>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), +a.put("app/channels/chat/website/view/action/wizard/wizard.html",'\n<div class="row" data-ng-init="initWizard()">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-directions font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACTION\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_APPLICATION\' | translate}}" canexit="formValidation(forms.action.$valid)">\n <form name="forms.action" novalidate>\n <!-- START APP -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.action.$submitted && forms.action.app.$invalid}">\n <label class="control-label">{{ \'APPLICATION_APPLICATION\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.app" name="app" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_APPLICATION\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="app.value as app in apps | filter: $select.search">\n <div ng-bind-html="app.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.action.$submitted && forms.action.app.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APP -->\n\n <div class="app-settings" ng-slide-down="application.app === \'agent\'" lazy-render duration="1" data-ng-init="getAgents()">\n <!-- START AGENT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.agent.$touched || forms.action.$submitted) && forms.action.agent.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.UserId" name="agent" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.fullname}}</ui-select-match>\n <ui-select-choices repeat="agent.id as agent in agents | filter: $select.search">\n <div ng-bind-html="agent.fullname | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="agents.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AGENTS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/staff/agents/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.agent.$touched || forms.action.$submitted) && forms.action.agent.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END AGENT -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'queue\'" lazy-render duration="1" data-ng-init="getQueues()">\n <!-- START QUEUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.queue.$touched || forms.action.$submitted) && forms.action.queue.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.ChatQueueId" name="queue" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="queues.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_QUEUES_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/chat/queues/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.queue.$touched || forms.action.$submitted) && forms.action.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1" data-ng-init="getMailAccounts();getTemplates()">\n <!-- START SENDMAIL -->\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="email" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" min="1" required/>\n <span data-ng-show="(forms.action.from.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.mail.$touched || forms.action.$submitted) && forms.action.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in mailAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEMPLATE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data9" name="template" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SENDMAIL -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1" data-ng-init="getSmsAccounts()">\n <!-- START SENDSms -->\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.to.$touched || forms.action.$submitted) && forms.action.to.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" ng-pattern="/^[\\+]?[0-9]+$/" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" required/>\n <span data-ng-show="(forms.action.to.$touched || forms.action.$submitted) && forms.action.to.$invalid && forms.action.to.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in smsAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.text.$touched || forms.action.$submitted) && forms.action.text.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <textarea id="text" class="form-control maxlength-handler" maxlength="160" name="text" data-ng-model="application.data6" required></textarea>\n <span data-ng-show="(forms.action.text.$touched || forms.action.$submitted) && forms.action.text.$invalid && forms.action.text.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <!-- END SENDSms -->\n </div>\n\n <!-- START INTERVAL_TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.intType.$touched || forms.action.$submitted) && forms.action.intType.$invalid}">\n <label class="control-label">{{ \'APPLICATION_INTERVAL_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.intType" theme="bootstrap" name="intType" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="intType.value as intType in $application.intTypes | filter: $select.search">\n {{ intType.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.intType.$touched || forms.action.$submitted) && forms.action.intType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVAL_TYPE -->\n\n <div class="app-settings" ng-slide-down="application.intType === \'custom\'" lazy-render duration="1">\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="application.alwaysTime">\n <uib-timepicker name="t_from" data-ng-model="application.t_from" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker>\n </fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="application.alwaysTime"><uib-timepicker name="t_to" data-ng-model="application.t_to" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker></fieldset>\n <!-- <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="application.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label> -->\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- START ALWAYS -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALWAYS\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="application.alwaysTime"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n <!-- <input type="checkbox" data-ng-model="application.alwaysTime"> -->\n </label>\n </div>\n </div>\n <!-- END ALWAYS -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.md_from" theme="bootstrap" name="md_from">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_to && application.md_to!==\'always\' && monthDay>application.md_to && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.md_to" theme="bootstrap" name="md_to">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_from && application.md_from!==\'always\' && monthDay<application.md_from && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.intType === \'list\'" lazy-render duration="1" data-ng-init="getIntervals()">\n\n <!-- START INTERVALS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.IntervalId.$touched || forms.action.$submitted) && forms.action.IntervalId.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVALS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.IntervalId" theme="bootstrap" name="IntervalId" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="interval.id as interval in intervals | filter: $select.search">\n {{ interval.name}}\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="intervals.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_INTERVAL_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/intervals/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.IntervalId.$touched || forms.action.$submitted) && forms.action.IntervalId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVALS -->\n\n </div>\n\n <input class="btn green-haze" type="submit" data-ng-click="next()" value="{{\'APPLICATION_CONTINUE\' | translate}}"/>\n </form>\n </wz-step>\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input class="btn green-haze" type="submit" data-ng-click="next()" value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/website/view/disposition/modal/add.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_DISPOSITIONS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.form.$touched || form.$submitted) && form.form.$invalid}">\n <div class="">\n <input type="text" name="form" placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}" class="form-control" data-ng-model="name" required/>\n <span data-ng-show="form.form.$touched && form.form.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <!-- END NAME -->\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()" data-ng-show="form.$valid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/chat/website/view/disposition/view/view.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_DISPOSITIONS\' | translate}}</span>\n </div>\n <div class="actions actions-md">\n <a href="#" class="btn btn-icon-only green" data-ng-click="addDisposition();">\n <i class="fa fa-plus"></i>\n </a>\n </div>\n </div>\n <div class="portlet-body" data-ng-init="initView()">\n <div class="tab-content">\n <div class="row" data-ng-hide="dispositions.length">\n <div class="col-md-12">\n <div class="note note-info">\n <h4 class="block">Info! {{\'MESSAGE_NO_DISPOSITIONS_AVAILABLE\' | translate}}</h4>\n </div>\n </div>\n </div>\n\n <!-- GENERAL TAB -->\n <div class="row" data-ng-repeat="disposition in dispositions">\n <div class="col-md-12 form-group">\n <div class="input-group">\n <div>\n <input class="form-control" type="text" placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}" data-ng-model="disposition.name">\n </div>\n <span class="input-group-btn">\n <button class="btn btn-success" type="button" data-ng-click="updateDisposition(disposition.id, disposition.name);"><i class="fa fa-cloud-upload fa-fw"></i> {{\'APPLICATION_UPDATE\' | translate}}</button>\n <button class="btn btn-danger" type="button" data-ng-click="deleteDisposition(disposition.id);"><i class="fa fa-times fa-fw"></i> {{\'APPLICATION_DELETE\' | translate}}</button>\n </span>\n </div>\n </div>\n </div>\n <!-- END GENERAL TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/chat/website/view/embedding/view/view.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_EMBEDDING\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group">\n <a class="btn green-jungle" href="#" data-ng-click="copyToClipboard();">\n <i class="fa fa-clipboard"></i> {{\'APPLICATION_COPY_TO_CLIPBOARD\' | translate}}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <div class="row">\n <div class="col-md-12">\n <h3>{{\'APPLICATION_EMBED_SNIPPET\' | translate}}</h3>\n <p>\n {{\'MESSAGE_EMBED_SNIPPET\' | translate}}\n </p>\n <div class="form-body">\n <div class="form-group">\n <div class="col-md-12">\n <code-mirror lang="html" model="snippetCode"></code-mirror>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/chat/website/view/form/view/view.html",'<div class="row" data-ng-init="getChatWebsiteFields(\'online\');getChatWebsiteFields(\'offline\');">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_ONLINE\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_OFFLINE\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="row">\n <div class="col-md-12">\n <div class="tab-content">\n <div class="tab-pane active" id="tab_1_1">\n <div class="row">\n <div class="col-md-6">\n <div class="portlet">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-book-open font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_FIELDS_SELECTED\' | translate }}</span>\n </div>\n <div class="actions">\n <div class="btn-group">\n <a class="btn green-jungle" href="#" data-ng-click="saveForm(\'online\');">\n <i class="fa fa-check"></i> {{ \'APPLICATION_SAVE\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <div fb-builder="online"></div>\n </div>\n </div>\n </div>\n <div class="col-md-6">\n <div class="portlet">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-book-open font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_FIELDS_AVAILABLE\' | translate }}</span>\n </div>\n </div>\n <div class="portlet-body">\n <div fb-components></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="tab-pane" id="tab_1_2">\n <div class="row">\n <div class="col-md-6">\n <div class="portlet">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-book-open font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_FIELDS_SELECTED\' | translate }}</span>\n </div>\n <div class="actions">\n <div class="btn-group">\n <a class="btn green-jungle" href="#" data-ng-click="saveForm(\'offline\');">\n <i class="fa fa-check"></i> {{ \'APPLICATION_SAVE\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <div fb-builder="offline"></div>\n </div>\n </div>\n </div>\n <div class="col-md-6">\n <div class="portlet">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-book-open font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_FIELDS_AVAILABLE\' | translate }}</span>\n </div>\n </div>\n <div class="portlet-body">\n <div fb-components></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n</div>\n'),a.put("app/channels/chat/website/view/hooks/view/view.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_HOOKS\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_ACCEPT\' | translate}}</a>\n </li>\n <li >\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_REJECT\' | translate}}</a>\n </li>\n <li >\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{\'APPLICATION_CLOSE\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- ACCEPT TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.accept" data-ng-submit="forms.accept.$valid && updateItem()" novalidate>\n <!-- START ACCEPT URL -->\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.accept.method.$touched || forms.accept.$submitted) && forms.accept.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.acceptMethod" name="method" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.accept.method.$touched || forms.accept.$submitted) && forms.accept.method.$invalid && forms.accept.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.accept.url.$touched || forms.accept.$submitted) && forms.accept.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.acceptUrl" ng-required="account.acceptMethod"/>\n <span data-ng-show="(forms.accept.url.$touched || forms.accept.$submitted) && forms.accept.url.$invalid && forms.accept.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <!-- END ACCEPT URL-->\n <!-- START ACTIONS-->\n <!-- START PAUSE -->\n <div class="row" ng-repeat = "action in account.actions">\n <div ng-switch="action.action">\n <div ng-switch-when="pause">\n <div class="form-group col-md-4">\n <label class="control-label">{{\'APPLICATION_PAUSE\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-change="resetActionData(action)"\n data-ng-model="action.enabled"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <div ng-if="action.enabled" class="form-group col-md-8">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}</label>\n <ui-select name="action" data-ng-model="action.type" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_TYPE\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat=" pause.name as pause in pauses | filter: $select.search">\n <div ng-bind-html="pause.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n </div>\n <!-- END ACTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ACCEPT TAB -->\n <!-- START REJECT TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.reject" data-ng-submit="forms.reject.$valid && updateItem()" novalidate>\n <!-- START REJECT URL -->\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.reject.method.$touched || forms.reject.$submitted) && forms.reject.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.rejectMethod" name="method" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.reject.method.$touched || forms.reject.$submitted) && forms.reject.method.$invalid && forms.reject.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.reject.url.$touched || forms.reject.$submitted) && forms.reject.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.rejectUrl" ng-required="account.rejectMethod"/>\n <span data-ng-show="(forms.reject.url.$touched || forms.reject.$submitted) && forms.reject.url.$invalid && forms.reject.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <!-- END REJECT URL -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END REJECT TAB -->\n <!-- START CLOSE TAB -->\n <div class="tab-pane" id="tab_1_3">\n <form name="forms.close" data-ng-submit="forms.close.$valid && updateItem()" novalidate>\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.close.method.$touched || forms.close.$submitted) && forms.close.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.closeMethod" name="method" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.close.method.$touched || forms.close.$submitted) && forms.close.method.$invalid && forms.close.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.close.url.$touched || forms.close.$submitted) && forms.close.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.closeUrl" ng-required="account.closeMethod"/>\n <span data-ng-show="(forms.close.url.$touched || forms.close.$submitted) && forms.close.url.$invalid && forms.close.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END CLOSE TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'), +a.put("app/channels/chat/website/view/proactive/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{title}}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.type.$touched || form.$submitted) && form.type.$invalid}">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}</label>\n <ui-select name="type" ng-model="item.type" theme="bootstrap" ng-disabled="disabled">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in possibleType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END TYPE -->\n\n <!-- START SELECTOR -->\n <div class="form-group" data-ng-if="item.type === \'mouseOver\'" data-ng-class="{\'has-error\': (form.selector.$touched || form.$submitted) && form.selector.$invalid}">\n <label class="control-label">{{\'APPLICATION_SELECTOR\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="selector" placeholder="{{\'APPLICATION_SELECTOR\' | translate}}" class="form-control" data-ng-model="item.selector" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SELECTOR -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-if="item.type === \'timeout\'" data-ng-class="{\'has-error\': (form.timeout.$touched || form.$submitted) && form.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="item.timeout" min="0" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/chat/website/view/proactive/list/list.html",'<div class="row" data-ng-init="initProactiveActions()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_PROACTIVE_ACTIONS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="#" data-toggle="dropdown" data-ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_PROACTIVE_ACTION\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/chat/website/view/setting/view/view.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body" data-ng-init="initView()">\n <form name="forms.info" data-ng-submit="forms.info.$valid && updateItemChatWebsite()" novalidate>\n <!-- START LIST -->\n <div class="form-group" data-ng-if="license.cm">\n <label class="control-label">{{\'APPLICATION_LIST\' | translate}}</label>\n <div class="input-group">\n\n <ui-select data-ng-model="chatWebsite.ListId" name="list" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_LIST\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="list.id as list in lists | filter: $select.search">\n <div ng-bind-html="list.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n\n <span class="input-group-btn">\n <button type="button" data-ng-click="chatWebsite.ListId = null" class="btn btn-default">\n <span class="glyphicon glyphicon-trash"></span>\n </button>\n </span>\n\n </div>\n </div>\n <!-- END LIST -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/chat/website/view/snippet/view/view.html",'<div class="row" data-ng-init="initView();getServiceMailAccount();">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SNIPPET\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_APPEARANCE\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_FORMS\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{\'APPLICATION_LABELS\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_4" data-toggle="tab">{{\'APPLICATION_SETTINGS\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_5" data-toggle="tab">{{\'APPLICATION_OFFLINE\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="row">\n <div class="col-md-8">\n <div class="tab-content">\n\n <!-- APPEARANCE TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.formAppearance" data-ng-submit="forms.formAppearance.$valid && updateItem()" novalidate>\n\n <!-- START MAIN COLOR -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAppearance.mainColor.$touched || forms.formAppearance.$submitted) && forms.formAppearance.host.$invalid}">\n <label class="control-label">{{\'APPLICATION_MAIN_COLOR\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input colorpicker type="text" name="mainColor" placeholder="{{\'APPLICATION_MAIN_COLOR\' | translate}}" style="color:{{chatWebsite.color}}" class="form-control" data-ng-model="chatWebsite.color" required/>\n <span data-ng-show="(forms.formAppearance.mainColor.$touched || forms.formAppearance.$submitted) && forms.formAppearance.mainColor.$invalid && forms.formAppearance.mainColor.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MAIN COLOR -->\n\n <!-- START FOCUS COLOR -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAppearance.focusColor.$touched || forms.formAppearance.$submitted) && forms.formAppearance.focusColor.$invalid}">\n <label class="control-label">{{\'APPLICATION_FOCUS_COLOR\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input colorpicker type="text" name="focusColor" placeholder="{{\'APPLICATION_FOCUS_COLOR\' | translate}}" style="color:{{chatWebsite.color_focus}}" class="form-control" data-ng-model="chatWebsite.color_focus" required/>\n <span data-ng-show="(forms.formAppearance.focusColor.$touched || forms.formAppearance.$submitted) && forms.formAppearance.focusColor.$invalid && forms.formAppearance.focusColor.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FOCUS COLOR -->\n\n <!-- START BUTTON COLOR -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAppearance.buttonColor.$touched || forms.formAppearance.$submitted) && forms.formAppearance.buttonColor.$invalid}">\n <label class="control-label">{{\'APPLICATION_BUTTON_COLOR\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input colorpicker type="text" name="buttonColor" placeholder="{{\'APPLICATION_BUTTON_COLOR\' | translate}}" style="color:{{chatWebsite.color_button}}" class="form-control" data-ng-model="chatWebsite.color_button" required/>\n <span data-ng-show="(forms.formAppearance.buttonColor.$touched || forms.formAppearance.$submitted) && forms.formAppearance.buttonColor.$invalid && forms.formAppearance.buttonColor.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END BUTTON COLOR -->\n\n <!-- START HEADER SHAPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAppearance.headerShape.$touched || forms.formAppearance.$submitted) && forms.formAppearance.headerShape.$invalid}">\n <label class="control-label">{{\'APPLICATION_HEADER_SHAPE\' | translate}}</label>\n <!-- <input colorpicker type="text" name="animationToggle" placeholder="{{\'APPLICATION_BUTTON_COLOR\' | translate}}" class="form-control" data-ng-model="chatWebsite.animation" required/> -->\n <ui-select data-ng-model="chatWebsite.header_shape" name="headerShape" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$translate.instant(\'APPLICATION_\' + $select.selected.toUpperCase())}}</ui-select-match>\n <ui-select-choices repeat="headerShape in [\'rounded\',\'squared\'] | filter: $select.search">\n <div ng-bind-html="$translate.instant(\'APPLICATION_\' + headerShape.toUpperCase()) | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END HEADER SHAPE -->\n\n <!-- START ANIMATION TOGGLE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAppearance.animationToggle.$touched || forms.formAppearance.$submitted) && forms.formAppearance.animationToggle.$invalid}">\n <label class="control-label">{{\'APPLICATION_ANIMATION\' | translate}}</label></br>\n <!-- <input colorpicker type="text" name="animationToggle" placeholder="{{\'APPLICATION_BUTTON_COLOR\' | translate}}" class="form-control" data-ng-model="chatWebsite.animation" required/> -->\n <input\n bs-switch\n class="form-control"\n ng-model="chatWebsite.animation"\n type="checkbox"\n switch-active="{{ true }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END ANIMATION TOGGLE -->\n\n <div class="portlet-title tabbable-line margin-top20">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_WHITE_LABEL\' | translate}}</span>\n </div>\n </div>\n\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DEFAULT\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="chatWebsite.defaultWhiteLabel"\n data-ng-init="chatWebsite.defaultWhiteLabel = license.custom ? chatWebsite.defaultWhiteLabel : true"\n type="checkbox"\n name="defaultWhitelabel"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END DEFAULT -->\n <!-- START LABEL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAppearance.whiteLabel.$touched || forms.formAppearance.$submitted) && forms.formAppearance.whiteLabel.$invalid}">\n <label class="control-label">{{\'APPLICATION_WHITE_LABEL\' | translate}}<span data-ng-if="!chatWebsite.defaultWhiteLabel" class="required" aria-required="true">*</span></label>\n <textarea type="password" name="whiteLabel" placeholder="{{\'APPLICATION_WHITE_LABEL\' | translate}}" class="form-control" data-ng-model="chatWebsite.whiteLabel" data-ng-disabled="chatWebsite.defaultWhiteLabel || !license.custom" data-ng-required="!chatWebsite.defaultWhiteLabel && license.custom"/></textarea>\n <span data-ng-show="(forms.formAppearance.whiteLabel.$touched || forms.formAppearance.$submitted) && forms.formAppearance.whiteLabel.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END LABEL -->\n\n <div class="portlet-title tabbable-line margin-top20">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_LOGO\' | translate}}</span>\n </div>\n </div>\n <div class="row">\n\n <div class="form-group col-md-6 col-sm-6">\n <label class="control-label">{{\'APPLICATION_DEFAULT\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="chatWebsite.defaultLogo"\n data-ng-init="chatWebsite.defaultLogo = license.custom ? chatWebsite.defaultLogo : true"\n type="checkbox"\n name="defaultLogo"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END STATUS -->\n <div class="form-group col-md-6 col-sm-6" data-ng-if="!chatWebsite.defaultLogo && license.custom">\n <div class="fileinput fileinput-new" data-provides="fileinput">\n <div class="fileinput-new thumbnail" style="width: 200px; height: 150px;">\n <img ng-src="assets/images/media/noProfileImage.png" alt=""/>\n </div>\n <div class="fileinput-preview fileinput-exists thumbnail" style="max-width: 200px; max-height: 150px;">\n </div>\n <div>\n <span class="btn default btn-file" data-ng-show="!uploader.queue[0]">\n <span> {{ \'APPLICATION_SELECT_IMAGE\' | translate }} </span>\n <input type="file" nv-file-select="" uploader="uploader"/><br/>\n </span>\n <button type="button" class="btn default" data-ng-show="uploader.queue[0]" data-dismiss="fileinput" ng-click="uploader.queue[0].remove()">\n {{ \'APPLICATION_REMOVE\' | translate }}\n <!-- </button>\n <button type="button" class="btn green-haze" data-ng-show="uploader.queue[0]" data-ng-click="uploader.queue[0].upload()" ng-disabled="uploader.queue[0].isReady || uploader.queue[0].isUploading || uploader.queue[0].isSuccess">\n {{ \'APPLICATION_CONFIRM\' | translate }}\n </button> -->\n </div>\n <p>\n </br> {{ \'MESSAGE_SUPPORTED_FORMATS\' | translate }} <b>jpg, png, jpeg</b>.\n </p>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-2">\n <table class="table" border="0">\n <tbody>\n <tr data-ng-repeat="item in uploader.queue">\n <td style="border-top-style:none">\n <strong>\n {{ item.file.name }}\n </strong>\n </td>\n <td data-ng-show="uploader.isHTML5" nowrap style="border-top-style:none">\n {{ item.file.size/1024/1024|number:2 }} MB\n </td>\n <td nowrap style="border-top-style:none">\n <button type="button" class="btn btn-danger btn-xs" data-ng-click="item.remove()">\n <span class="glyphicon glyphicon-trash"></span> Remove\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n\n <input class="btn green-haze" type="submit" data-ng-click="uploader.queue[0] && uploader.queue[0].upload()" data-ng-disabled="uploader.queue[0].isReady || uploader.queue[0].isUploading || uploader.queue[0].isSuccess" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END APPEARANCE TAB -->\n\n <!-- FORMS TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.formFunctionality" data-ng-submit="forms.formFunctionality.$valid && updateItem()" novalidate>\n\n <!-- START DOWNLOAD TRANSCRIPT -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DOWNLOAD_TRANSCRIPT\' | translate}}</label>\n </br>\n <input\n bs-switch\n class="form-control"\n ng-model="chatWebsite.download_transcript"\n type="checkbox"\n switch-active="true"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END DOWNLOAD TRANSCRIPT -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END FORMS TAB -->\n\n <!-- STRINGS TAB -->\n <div class="tab-pane" id="tab_1_3">\n <form name="forms.formLabel" data-ng-submit="forms.formLabel.$valid && updateItem()" novalidate>\n\n <h4 class="block" data-ng-show="statePreview.state == \'online\'">{{\'APPLICATION_ONLINE_STATE\' | translate}}</h4>\n\n <!-- START HEADER ONLINE -->\n <div class="form-group" data-ng-show="statePreview.state == \'online\'" data-ng-class="{\'has-error\': (forms.formLabel.headerOnline.$touched || forms.formLabel.$submitted) && forms.formLabel.headerOnline.$invalid}">\n <label class="control-label">{{\'APPLICATION_HEADER_ONLINE\' | translate}}</label>\n <input type="text" name="headerOnline" placeholder="{{\'APPLICATION_HEADER_ONLINE\' | translate}}" class="form-control" data-ng-model="chatWebsite.header_online"/>\n </div>\n <!-- END HEADER ONLINE -->\n\n <!-- START ONLINE MESSAGE-->\n <div class="form-group" data-ng-show="statePreview.state == \'online\'" data-ng-class="{\'has-error\': (forms.formLabel.onlineMessage.$touched || forms.formLabel.$submitted) && forms.formLabel.onlineMessage.$invalid}">\n <label class="control-label">{{\'APPLICATION_ONLINE_MESSAGE\' | translate}}</label>\n <input type="text" name="onlineMessage" placeholder="{{\'APPLICATION_ONLINE_MESSAGE\' | translate}}" class="form-control" data-ng-model="chatWebsite.online_message"/>\n </div>\n <!-- END HEADER ONLINE -->\n\n <!-- START USERNAME TITLE -->\n <div class="form-group" data-ng-show="statePreview.state == \'online\' || statePreview.state == \'offline\'" data-ng-class="{\'has-error\': (forms.formLabel.nameTitle.$touched || forms.formLabel.$submitted) && forms.formLabel.nameTitle.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME_TITLE\' | translate}}</label>\n <input type="text" name="nameTitle" placeholder="{{\'APPLICATION_NAME_TITLE\' | translate}}" class="form-control" data-ng-model="chatWebsite.name_title"/>\n </div>\n <!-- END USERNAME TITLE -->\n\n <!-- START USERNAME PLACEHOLDER -->\n <div class="form-group" data-ng-show="statePreview.state == \'online\' || statePreview.state == \'offline\'" data-ng-class="{\'has-error\': (forms.formLabel.usernamePlaceholder.$touched || forms.formLabel.$submitted) && forms.formLabel.usernamePlaceholder.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME_PLACEHOLDER\' | translate}}</label>\n <input type="text" name="usernamePlaceholder" placeholder="{{\'APPLICATION_NAME_PLACEHOLDER\' | translate}}" class="form-control" data-ng-model="chatWebsite.username_placeholder"/>\n </div>\n <!-- END USERNAME PLACEHOLDER -->\n\n <!-- START EMAIL TITLE -->\n <div class="form-group" data-ng-show="statePreview.state == \'online\' || statePreview.state == \'offline\'" data-ng-class="{\'has-error\': (forms.formLabel.emailTitle.$touched || forms.formLabel.$submitted) && forms.formLabel.emailTitle.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL_TITLE\' | translate}}</label>\n <input type="text" name="emailTitle" placeholder="{{\'APPLICATION_EMAIL_TITLE\' | translate}}" class="form-control" data-ng-model="chatWebsite.email_title"/>\n </div>\n <!-- END EMAIL TITLE -->\n\n <!-- START EMAIL PLACEHOLDER -->\n <div class="form-group" data-ng-show="statePreview.state == \'online\' || statePreview.state == \'offline\'" data-ng-class="{\'has-error\': (forms.formLabel.emailPlaceholder.$touched || forms.formLabel.$submitted) && forms.formLabel.emailPlaceholder.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL_PLACEHOLDER\' | translate}}</label>\n <input type="text" name="emailPlaceholder" placeholder="{{\'APPLICATION_EMAIL_PLACEHOLDER\' | translate}}" class="form-control" data-ng-model="chatWebsite.email_placeholder"/>\n </div>\n <!-- END EMAIL PLACEHOLDER -->\n\n <!-- START START CHAT BUTTON -->\n <div class="form-group" data-ng-show="statePreview.state == \'online\'" data-ng-class="{\'has-error\': (forms.formLabel.startChatButton.$touched || forms.formLabel.$submitted) && forms.formLabel.startChatButton.$invalid}">\n <label class="control-label">{{\'APPLICATION_START_CHAT_BUTTON\' | translate}}</label>\n <input type="text" name="startChatButton" placeholder="{{\'APPLICATION_START_CHAT_BUTTON\' | translate}}" class="form-control" data-ng-model="chatWebsite.start_chat_button"/>\n </div>\n <!-- END START CHAT BUTTON -->\n\n <h4 class="block" data-ng-show="statePreview.state == \'rating\'">{{\'APPLICATION_RATING_STATE\' | translate}}</h4>\n\n <!-- START RATING MESSAGE -->\n <div class="form-group" data-ng-show="statePreview.state == \'rating\'" data-ng-class="{\'has-error\': (forms.formLabel.ratingMessage.$touched || forms.formLabel.$submitted) && forms.formLabel.ratingMessage.$invalid}">\n <label class="control-label">{{\'APPLICATION_RATING_MESSAGE\' | translate}}</label>\n <input type="text" name="ratingMessage" placeholder="{{\'APPLICATION_RATING_MESSAGE\' | translate}}" class="form-control" data-ng-model="chatWebsite.rating_message"/>\n </div>\n <!-- END RATING MESSAGE -->\n\n <!-- START RATING SEND BUTTON -->\n <div class="form-group" data-ng-show="statePreview.state == \'rating\'" data-ng-class="{\'has-error\': (forms.formLabel.ratingSend.$touched || forms.formLabel.$submitted) && forms.formLabel.ratingSend.$invalid}">\n <label class="control-label">{{\'APPLICATION_RATING_SEND_BUTTON\' | translate}}</label>\n <input type="text" name="ratingSend" placeholder="{{\'APPLICATION_RATING_SEND_BUTTON\' | translate}}" class="form-control" data-ng-model="chatWebsite.rating_send"/>\n </div>\n <!-- END RATING SEND BUTTON -->\n\n <!-- START RATING SKIP BUTTON -->\n <div class="form-group" data-ng-show="statePreview.state == \'rating\'" data-ng-class="{\'has-error\': (forms.formLabel.ratingSkip.$touched || forms.formLabel.$submitted) && forms.formLabel.ratingSkip.$invalid}">\n <label class="control-label">{{\'APPLICATION_RATING_SKIP_BUTTON\' | translate}}</label>\n <input type="text" name="ratingSkip" placeholder="{{\'APPLICATION_RATING_SKIP_BUTTON\' | translate}}" class="form-control" data-ng-model="chatWebsite.rating_skip"/>\n </div>\n <!-- END RATING SKIP BUTTON -->\n\n <h4 class="block" data-ng-show="statePreview.state == \'offline\'">{{\'APPLICATION_OFFLINE_STATE\' | translate}}</h4>\n\n <!-- START HEADER OFFLINE -->\n <div class="form-group" data-ng-show="statePreview.state == \'offline\'" data-ng-class="{\'has-error\': (forms.formLabel.headerOffline.$touched || forms.formLabel.$submitted) && forms.formLabel.headerOnline.$invalid}">\n <label class="control-label">{{\'APPLICATION_HEADER_OFFLINE\' | translate}}</label>\n <input type="text" name="headerOffline" placeholder="{{\'APPLICATION_HEADER_OFFLINE\' | translate}}" class="form-control" data-ng-model="chatWebsite.header_offline"/>\n </div>\n <!-- END HEADER OFFLINE -->\n\n <!-- START OFFLINE MESSAGE-->\n <div class="form-group" data-ng-show="statePreview.state == \'offline\'" data-ng-class="{\'has-error\': (forms.formLabel.offlineMessage.$touched || forms.formLabel.$submitted) && forms.formLabel.offlineMessage.$invalid}">\n <label class="control-label">{{\'APPLICATION_OFFLINE_MESSAGE\' | translate}}</label>\n <input type="text" name="offlineMessage" placeholder="{{\'APPLICATION_OFFLINE_MESSAGE\' | translate}}" class="form-control" data-ng-model="chatWebsite.offline_message"/>\n </div>\n <!-- END OFFLINE MESSAGE -->\n\n <!-- START ENQUIRY MESSAGE TITLE-->\n <div class="form-group" data-ng-show="statePreview.state == \'offline\'" data-ng-class="{\'has-error\': (forms.formLabel.enquiryMessageTitle.$touched || forms.formLabel.$submitted) && forms.formLabel.enquiryMessageTitle.$invalid}">\n <label class="control-label">{{\'APPLICATION_ENQUIRY_MESSAGE_TITLE\' | translate}}</label>\n <input type="text" name="enquiryMessageTitle" placeholder="{{\'APPLICATION_ENQUIRY_MESSAGE_TITLE\' | translate}}" class="form-control" data-ng-model="chatWebsite.message_title"/>\n </div>\n <!-- END ENQUIRY MESSAGE TITLE -->\n\n <!-- START ENQUIRY MESSAGE PLACEHOLDER-->\n <div class="form-group" data-ng-show="statePreview.state == \'offline\'" data-ng-class="{\'has-error\': (forms.formLabel.enquiryMessagePlaceholder.$touched || forms.formLabel.$submitted) && forms.formLabel.enquiryMessagePlaceholder.$invalid}">\n <label class="control-label">{{\'APPLICATION_ENQUIRY_MESSAGE_PLACEHOLDER\' | translate}}</label>\n <input type="text" name="enquiryMessagePlaceholder" placeholder="{{\'APPLICATION_ENQUIRY_MESSAGE_PLACEHOLDER\' | translate}}" class="form-control" data-ng-model="chatWebsite.enquiry_message_placeholder"/>\n </div>\n <!-- END ENQUIRY MESSAGE PLACEHOLDER -->\n\n <!-- START ENQUIRY BUTTON -->\n <div class="form-group" data-ng-show="statePreview.state == \'offline\'" data-ng-class="{\'has-error\': (forms.formLabel.enquiryButton.$touched || forms.formLabel.$submitted) && forms.formLabel.enquiryButton.$invalid}">\n <label class="control-label">{{\'APPLICATION_ENQUIRY_BUTTON\' | translate}}</label>\n <input type="text" name="enquiryButton" placeholder="{{\'APPLICATION_ENQUIRY_BUTTON\' | translate}}" class="form-control" data-ng-model="chatWebsite.enquiry_button"/>\n </div>\n <!-- END ENQUIRY BUTTON -->\n\n <!-- START AGENTS BUSY BUTTON -->\n <div class="form-group" data-ng-show="statePreview.state == \'online\'" data-ng-class="{\'has-error\': (forms.formLabel.agentsBusy.$touched || forms.formLabel.$submitted) && forms.formLabel.agentsBusy.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENTS_BUSY\' | translate}}</label>\n <input type="text" name="agentsBusy" placeholder="{{\'APPLICATION_AGENTS_BUSY\' | translate}}" class="form-control" data-ng-model="chatWebsite.agents_busy"/>\n </div>\n <!-- END AGENTS BUSY BUTTON -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END STRINGS TAB -->\n\n <!-- SETTINGS TAB -->\n <div class="tab-pane" id="tab_1_4">\n <form name="forms.formSetting" data-ng-submit="forms.formSetting.$valid && updateItem()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formSetting.name.$touched || forms.formSetting.$submitted) && forms.formSetting.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="chatWebsite.name" required/>\n <span data-ng-show="(forms.formSetting.name.$touched || forms.formSetting.$submitted) && forms.formSettings.name.$invalid && forms.formSetting.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formSetting.address.$touched || forms.formSetting.$submitted) && forms.formSetting.address.$invalid}">\n <label class="control-label">{{\'APPLICATION_WEB_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="address" placeholder="{{\'APPLICATION_WEB_ADDRESS\' | translate}}" class="form-control" data-ng-model="chatWebsite.address" required/>\n <span data-ng-show="(forms.formSetting.address.$touched || forms.formSetting.$submitted) && forms.formSetting.address.$invalid && forms.formSetting.address.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ADDRESS -->\n\n <!-- START REMOTE IP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formSetting.remote.$touched || forms.formSetting.$submitted) && forms.formSetting.remote.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remote" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="chatWebsite.remote" required/>\n <span data-ng-show="(forms.formSetting.remote.$touched || forms.formSetting.$submitted) && forms.formSetting.remote.$invalid && forms.formSetting.remote.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span class="help-block help-block-info">\n {{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n </span>\n </div>\n <!-- END REMOTE IP -->\n\n <!-- START FIDELITY -->\n <!-- <div class="form-group">\n <label class="control-label">{{\'APPLICATION_FIDELITY\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-model="chatWebsite.fidelity"\n type="checkbox"\n switch-active="{{ fidelitySwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ fidelitySwitch.onColor }}"\n switch-off-color="{{ fidelitySwitch.offColor }}"\n switch-animate="{{ fidelitySwitch.animate }}"\n switch-size="{{ fidelitySwitch.size }}"\n switch-label="{{ fidelitySwitch.label }}"\n switch-icon="{{ fidelitySwitch.icon }}"\n switch-radio-off="{{ fidelitySwitch.radioOff }}"\n switch-label-width="{{ fidelitySwitch.labelWidth }}"\n switch-handle-width="{{ fidelitySwitch.handleWidth }}">\n </div> -->\n <!-- END FIDELITY -->\n\n <!-- START TIMEOUT -->\n <!-- <div class="form-group" data-ng-if="chatWebsite.fidelity" data-ng-class="{\'has-error\': (forms.formSetting.timeout.$touched || forms.formSetting.$submitted) && forms.formSetting.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="0" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="chatWebsite.timeout" required/>\n <span data-ng-show="(forms.formSetting.timeout.$touched || forms.formSetting.$submitted) && forms.formSetting.timeout.$invalid && forms.formSetting.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formSetting.timeout.$touched || forms.formSetting.$submitted) && forms.formSetting.timeout.$invalid && forms.formSetting.timeout.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div> -->\n <!-- END TIMEOUT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formSetting.description.$touched || forms.formSetting.$submitted) && forms.formSetting.description.$invalid}">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="chatWebsite.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END SETTINGS TAB -->\n\n <!-- OFFLINE TAB -->\n <div class="tab-pane" id="tab_1_5">\n <form name="forms.formOffline" data-ng-submit="forms.formOffline.$valid && updateItem()" novalidate>\n\n <!-- START ENQUIRY ENABLE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_ENQUIRY_ENABLED\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="chatWebsite.enquiry_enable"\n type="checkbox"\n switch-active="{{ enquirySwitch.isActive }}"\n switch-on-text="{{ enquirySwitch.onText }}"\n switch-off-text="{{ enquirySwitch.offText }}"\n switch-on-color="{{ enquirySwitch.onColor }}"\n switch-off-color="{{ enquirySwitch.offColor }}"\n switch-animate="{{ enquirySwitch.animate }}"\n switch-size="{{ enquirySwitch.size }}"\n switch-label="{{ enquirySwitch.label }}"\n switch-icon="{{ enquirySwitch.icon }}"\n switch-radio-off="{{ enquirySwitch.radioOff }}"\n switch-label-width="{{ enquirySwitch.labelWidth }}"\n switch-handle-width="{{ enquirySwitch.handleWidth }}">\n </div>\n <!-- END ENQUIRY ENABLE -->\n\n <!-- START ENQUIRY FORWARDING -->\n <div class="form-group" data-ng-if="chatWebsite.enquiry_enable">\n <label class="control-label">{{\'APPLICATION_ENQUIRY_FORWARDING\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="chatWebsite.enquiry_forwarding"\n type="checkbox"\n switch-active="{{ enquirySwitch.isActive }}"\n switch-on-text="{{ enquirySwitch.onText }}"\n switch-off-text="{{ enquirySwitch.offText }}"\n switch-on-color="{{ enquirySwitch.onColor }}"\n switch-off-color="{{ enquirySwitch.offColor }}"\n switch-animate="{{ enquirySwitch.animate }}"\n switch-size="{{ enquirySwitch.size }}"\n switch-label="{{ enquirySwitch.label }}"\n switch-icon="{{ enquirySwitch.icon }}"\n switch-radio-off="{{ enquirySwitch.radioOff }}"\n switch-label-width="{{ enquirySwitch.labelWidth }}"\n switch-handle-width="{{ enquirySwitch.handleWidth }}">\n </div>\n <!-- END ENQUIRY FORWARDING -->\n\n <div class="note note-warning" data-ng-if="!isServiceMailAccount">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_SERVICE_MAIL_ACCOUNT\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/setting/smtp/view">SMTP</a> {{\'APPLICATION_OR\' | translate}} <a href="/channels/mail/accounts/list">{{\'APPLICATION_MAIL_ACCOUNTS\' | translate}}</a>\n </p>\n </div>\n\n <!-- START REMOTE IP -->\n <div class="form-group" data-ng-if="chatWebsite.enquiry_enable && chatWebsite.enquiry_forwarding" data-ng-class="{\'has-error\': (forms.formOffline.forwardingAddress.$touched || forms.formOffline.$submitted) && forms.formSetting.forwardingAddress.$invalid}">\n <label class="control-label">{{\'APPLICATION_ENQUIRY_FORWARDING_ADDRESS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="forwardingAddress" placeholder="{{\'APPLICATION_ADDRESS\' | translate}}" class="form-control" data-ng-model="chatWebsite.enquiry_forwarding_address" required/>\n <span data-ng-show="(forms.formOffline.forwardingAddress.$touched || forms.formOffline.$submitted) && forms.formOffline.forwardingAddress.$invalid && forms.formOffline.forwardingAddress.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END REMOTE IP -->\n\n <!-- START HEADER SHAPE -->\n <div class="form-group" data-ng-if="chatWebsite.enquiry_enable && chatWebsite.enquiry_forwarding" data-ng-class="{\'has-error\': (forms.formOffline.OfflineTemplateId.$touched || forms.formOffline.$submitted) && forms.formOffline.OfflineTemplateId.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEMPLATE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="chatWebsite.OfflineTemplateId" name="OfflineTemplateId" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.formOffline.OfflineTemplateId.$touched || forms.formOffline.$submitted) && forms.formOffline.OfflineTemplateId.$invalid && forms.formOffline.OfflineTemplateId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END HEADER SHAPE -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END OFFLINE TAB -->\n </div>\n </div>\n <div class="col-md-4">\n <!-- START STATE -->\n <div class="form-group">\n <!-- <label class="control-label">{{\'APPLICATION_ANIMATION\' | translate}}</label> -->\n <!-- <input colorpicker type="text" name="animationToggle" placeholder="{{\'APPLICATION_BUTTON_COLOR\' | translate}}" class="form-control" data-ng-model="chatWebsite.animation" required/> -->\n <ui-select data-ng-model="statePreview.state" name="statePreview" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="statePreview in [\'online\',\'rating\',\'offline\'] | filter: $select.search">\n <div ng-bind-html="statePreview | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END STATE -->\n <preview></preview>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'), +a.put("app/channels/chat/website/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bubble"></i>\n <a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-globe"></i>\n <a href="/channels/chat/websites/list">{{ \'APPLICATION_WEB_SITES\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <a href="#">{{chatWebsite.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img src="assets/images/media/website.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{chatWebsite.name}}\n </div>\n <div class="profile-usertitle-job">\n {{chatWebsite.address}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.includes(\'main.channels.chat.websites.view.embedding\')}">\n <a ng-href="/channels/chat/websites/view/{{chatWebsite.id}}/embedding/view">\n <i class="fa fa-code"></i>\n {{ \'APPLICATION_EMBEDDING\' | translate }} </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.channels.chat.websites.view.snippet\')}">\n <a ng-href="/channels/chat/websites/view/{{chatWebsite.id}}/snippet/view">\n <i class="icon-note"></i>\n {{ \'APPLICATION_SNIPPET\' | translate }} </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.channels.chat.websites.view.form\')}">\n <a ng-href="/channels/chat/websites/view/{{chatWebsite.id}}/forms/view">\n <i class="icon-list"></i>\n {{ \'APPLICATION_FORMS\' | translate }} </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.channels.chat.websites.view.proactive\')}">\n <a ng-href="/channels/chat/websites/view/{{chatWebsite.id}}/proactive/list">\n <i class="icon-target"></i>\n {{ \'APPLICATION_PROACTIVE_ACTIONS\' | translate }} </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.channels.chat.websites.view.actions\')}">\n <a ng-href="/channels/chat/websites/view/{{chatWebsite.id}}/actions/list">\n <i class="icon-directions"></i>\n {{ \'APPLICATION_ACTIONS\' | translate }} </a>\n </li>\n <li ng-class="{active: $state.is(\'main.channels.chat.websites.view.hooks\')}">\n <a href="/channels/chat/websites/view/{{chatWebsite.id}}/hooks">\n <i class="fa fa-code"></i>\n {{\'APPLICATION_HOOKS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.channels.chat.websites.view.dispositions\')}">\n <a ng-href="/channels/chat/websites/view/{{chatWebsite.id}}/dispositions">\n <i class="icon-target"></i>\n {{ \'APPLICATION_DISPOSITIONS\' | translate }} </a>\n </li>\n <li ng-class="{active: $state.is(\'main.channels.chat.websites.view.settings\')}">\n <a href="/channels/chat/websites/view/{{chatWebsite.id}}/settings">\n <i class="icon-settings"></i>\n {{\'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/website/wizard/wizard.html",'<!-- BEGIN PAGE HEADER-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bubble"></i>\n <a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-globe"></i>\n <a href="/channels/chat/websites/list">{{ \'APPLICATION_WEB_SITES\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n<!-- END PAGE HEADER-->\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initWizard();">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_WEB_SITE\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_WEB_SITE_INFO\' | translate}}" canexit="exitValidation(forms.formSetting.$valid)">\n <form name="forms.formSetting" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formSetting.name.$touched || forms.formSetting.$submitted) && forms.formSetting.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="forms.formSetting.name.$touched && !forms.formSettings.name.$valid && forms.formSetting.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formSetting.address.$touched || forms.formSetting.$submitted) && forms.formSetting.address.$invalid}">\n <label class="control-label">{{\'APPLICATION_WEB_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="address" placeholder="{{\'APPLICATION_WEB_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.address" required/>\n <span data-ng-show="(forms.formSetting.address.$touched || forms.formSetting.$submitted) && forms.formSetting.address.$invalid && forms.formSetting.address.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ADDRESS -->\n\n <!-- START REMOTE IP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formSetting.remote.$touched || forms.formSetting.$submitted) && forms.formSetting.remote.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remote" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.remote" required/>\n <span class="help-block help-block-info">\n {{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n </span>\n <span data-ng-show="(forms.formSetting.remote.$touched || forms.formSetting.$submitted) && forms.formSetting.remote.$invalid && forms.formSetting.remote.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END REMOTE IP -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_WEB_SITE_APPEARANCE\' | translate}}" canexit="exitValidation(forms.formAppearance.$valid)">\n <form name="forms.formAppearance" novalidate>\n\n <!-- START MAIN COLOR -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAppearance.mainColor.$touched || forms.formAppearance.$submitted) && forms.formAppearance.host.$invalid}">\n <label class="control-label">{{\'APPLICATION_MAIN_COLOR\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input colorpicker type="text" name="mainColor" placeholder="{{\'APPLICATION_MAIN_COLOR\' | translate}}" style="color:{{item.color}}" class="form-control" data-ng-model="item.color" required/>\n <span data-ng-show="(forms.formAppearance.mainColor.$touched || forms.formAppearance.$submitted) && forms.formAppearance.mainColor.$invalid && forms.formAppearance.mainColor.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MAIN COLOR -->\n\n <!-- START FOCUS COLOR -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAppearance.focusColor.$touched || forms.formAppearance.$submitted) && forms.formAppearance.focusColor.$invalid}">\n <label class="control-label">{{\'APPLICATION_FOCUS_COLOR\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input colorpicker type="text" name="focusColor" placeholder="{{\'APPLICATION_FOCUS_COLOR\' | translate}}" style="color:{{item.color_focus}}" class="form-control" data-ng-model="item.color_focus" required/>\n <span data-ng-show="(forms.formAppearance.focusColor.$touched || forms.formAppearance.$submitted) && forms.formAppearance.focusColor.$invalid && forms.formAppearance.focusColor.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FOCUS COLOR -->\n\n <!-- START BUTTON COLOR -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAppearance.buttonColor.$touched || forms.formAppearance.$submitted) && forms.formAppearance.buttonColor.$invalid}">\n <label class="control-label">{{\'APPLICATION_BUTTON_COLOR\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input colorpicker type="text" name="buttonColor" placeholder="{{\'APPLICATION_BUTTON_COLOR\' | translate}}" style="color:{{item.color_button}}" class="form-control" data-ng-model="item.color_button" required/>\n <span data-ng-show="(forms.formAppearance.buttonColor.$touched || forms.formAppearance.$submitted) && forms.formAppearance.buttonColor.$invalid && forms.formAppearance.buttonColor.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END BUTTON COLOR -->\n\n <!-- START HEADER SHAPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAppearance.headerShape.$touched || forms.formAppearance.$submitted) && forms.formAppearance.headerShape.$invalid}">\n <label class="control-label">{{\'APPLICATION_HEADER_SHAPE\' | translate}}</label>\n <!-- <input colorpicker type="text" name="animationToggle" placeholder="{{\'APPLICATION_BUTTON_COLOR\' | translate}}" class="form-control" data-ng-model="item.animation" required/> -->\n <ui-select data-ng-model="item.header_shape" name="headerShape" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$translate.instant(\'APPLICATION_\' + $select.selected.toUpperCase())}}</ui-select-match>\n <ui-select-choices repeat="headerShape in [\'rounded\',\'squared\'] | filter: $select.search">\n <div ng-bind-html="$translate.instant(\'APPLICATION_\' + headerShape.toUpperCase()) | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END HEADER SHAPE -->\n\n <!-- START ANIMATION TOGGLE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAppearance.animationToggle.$touched || forms.formAppearance.$submitted) && forms.formAppearance.animationToggle.$invalid}">\n <label class="control-label">{{\'APPLICATION_ANIMATION\' | translate}}</label>\n <ui-select data-ng-model="item.animation" name="animationToggle" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected ? \'On\' : \'Off\'}}</ui-select-match>\n <ui-select-choices repeat="filter in [true,false] | filter: $select.search">\n <div ng-bind-html="filter ? \'On\' : \'Off\' | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END ANIMATION TOGGLE -->\n\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_LABELS\' | translate}}" canexit="exitValidation(forms.formLabel.$valid)">\n <form name="forms.formLabel" novalidate>\n\n <!-- START HEADER ONLINE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.headerOnline.$touched || forms.formLabel.$submitted) && forms.formLabel.headerOnline.$invalid}">\n <label class="control-label">{{\'APPLICATION_HEADER_ONLINE\' | translate}}</label>\n <input type="text" name="headerOnline" placeholder="{{\'APPLICATION_HEADER_ONLINE\' | translate}}" class="form-control" data-ng-model="item.header_online"/>\n </div>\n <!-- END HEADER ONLINE -->\n\n <!-- START ONLINE MESSAGE-->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.onlineMessage.$touched || forms.formLabel.$submitted) && forms.formLabel.onlineMessage.$invalid}">\n <label class="control-label">{{\'APPLICATION_ONLINE_MESSAGE\' | translate}}</label>\n <input type="text" name="onlineMessage" placeholder="{{\'APPLICATION_ONLINE_MESSAGE\' | translate}}" class="form-control" data-ng-model="item.online_message"/>\n </div>\n <!-- END HEADER ONLINE -->\n\n <!-- START USERNAME TITLE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.nameTitle.$touched || forms.formLabel.$submitted) && forms.formLabel.nameTitle.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME_TITLE\' | translate}}</label>\n <input type="text" name="nameTitle" placeholder="{{\'APPLICATION_NAME_TITLE\' | translate}}" class="form-control" data-ng-model="item.name_title"/>\n </div>\n <!-- END USERNAME TITLE -->\n\n <!-- START USERNAME PLACEHOLDER -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.usernamePlaceholder.$touched || forms.formLabel.$submitted) && forms.formLabel.usernamePlaceholder.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME_PLACEHOLDER\' | translate}}</label>\n <input type="text" name="usernamePlaceholder" placeholder="{{\'APPLICATION_NAME_PLACEHOLDER\' | translate}}" class="form-control" data-ng-model="item.username_placeholder"/>\n </div>\n <!-- END USERNAME PLACEHOLDER -->\n\n <!-- START EMAIL TITLE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.emailTitle.$touched || forms.formLabel.$submitted) && forms.formLabel.emailTitle.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL_TITLE\' | translate}}</label>\n <input type="text" name="emailTitle" placeholder="{{\'APPLICATION_EMAIL_TITLE\' | translate}}" class="form-control" data-ng-model="item.email_title"/>\n </div>\n <!-- END EMAIL TITLE -->\n\n <!-- START EMAIL PLACEHOLDER -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.emailPlaceholder.$touched || forms.formLabel.$submitted) && forms.formLabel.emailPlaceholder.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL_PLACEHOLDER\' | translate}}</label>\n <input type="text" name="emailPlaceholder" placeholder="{{\'APPLICATION_EMAIL_PLACEHOLDER\' | translate}}" class="form-control" data-ng-model="item.email_placeholder"/>\n </div>\n <!-- END EMAIL PLACEHOLDER -->\n\n <!-- START START CHAT BUTTON -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.startChatButton.$touched || forms.formLabel.$submitted) && forms.formLabel.startChatButton.$invalid}">\n <label class="control-label">{{\'APPLICATION_START_CHAT_BUTTON\' | translate}}</label>\n <input type="text" name="startChatButton" placeholder="{{\'APPLICATION_START_CHAT_BUTTON\' | translate}}" class="form-control" data-ng-model="item.start_chat_button"/>\n </div>\n <!-- END START CHAT BUTTON -->\n\n <!-- START RATING MESSAGE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.ratingMessage.$touched || forms.formLabel.$submitted) && forms.formLabel.ratingMessage.$invalid}">\n <label class="control-label">{{\'APPLICATION_RATING_MESSAGE\' | translate}}</label>\n <input type="text" name="ratingMessage" placeholder="{{\'APPLICATION_RATING_MESSAGE\' | translate}}" class="form-control" data-ng-model="item.rating_message"/>\n </div>\n <!-- END RATING MESSAGE -->\n\n <!-- START RATING START TEXT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.ratingSend.$touched || forms.formLabel.$submitted) && forms.formLabel.ratingSend.$invalid}">\n <label class="control-label">{{\'APPLICATION_RATING_SEND_BUTTON\' | translate}}</label>\n <input type="text" name="ratingSend" placeholder="{{\'APPLICATION_RATING_SEND_BUTTON\' | translate}}" class="form-control" data-ng-model="item.rating_send"/>\n </div>\n <!-- END RATING START TEXT -->\n\n <!-- START RATING MESSAGE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.ratingSkip.$touched || forms.formLabel.$submitted) && forms.formLabel.ratingSkip.$invalid}">\n <label class="control-label">{{\'APPLICATION_RATING_SKIP_BUTTON\' | translate}}</label>\n <input type="text" name="ratingSkip" placeholder="{{\'APPLICATION_RATING_SKIP_BUTTON\' | translate}}" class="form-control" data-ng-model="item.rating_skip"/>\n </div>\n <!-- END RATING MESSAGE -->\n\n <!-- START HEADER OFFLINE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.headerOffline.$touched || forms.formLabel.$submitted) && forms.formLabel.headerOnline.$invalid}">\n <label class="control-label">{{\'APPLICATION_HEADER_OFFLINE\' | translate}}</label>\n <input type="text" name="headerOffline" placeholder="{{\'APPLICATION_HEADER_OFFLINE\' | translate}}" class="form-control" data-ng-model="item.header_offline"/>\n </div>\n <!-- END HEADER OFFLINE -->\n\n <!-- START OFFLINE MESSAGE-->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.offlineMessage.$touched || forms.formLabel.$submitted) && forms.formLabel.onlineMessage.$invalid}">\n <label class="control-label">{{\'APPLICATION_OFFLINE_MESSAGE\' | translate}}</label>\n <input type="text" name="offlineMessage" placeholder="{{\'APPLICATION_OFFLINE_MESSAGE\' | translate}}" class="form-control" data-ng-model="item.offline_message"/>\n </div>\n <!-- END OFFLINE MESSAGE -->\n\n <!-- START ENQUIRY MESSAGE TITLE-->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.enquiryMessageTitle.$touched || forms.formLabel.$submitted) && forms.formLabel.enquiryMessageTitle.$invalid}">\n <label class="control-label">{{\'APPLICATION_ENQUIRY_MESSAGE_TITLE\' | translate}}</label>\n <input type="text" name="enquiryMessageTitle" placeholder="{{\'APPLICATION_ENQUIRY_MESSAGE_TITLE\' | translate}}" class="form-control" data-ng-model="item.message_title"/>\n </div>\n <!-- END ENQUIRY MESSAGE TITLE -->\n\n <!-- START ENQUIRY MESSAGE PLACEHOLDER-->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.enquiryMessagePlaceholder.$touched || forms.formLabel.$submitted) && forms.formLabel.onlineMessage.$invalid}">\n <label class="control-label">{{\'APPLICATION_ENQUIRY_MESSAGE_PLACEHOLDER\' | translate}}</label>\n <input type="text" name="enquiryMessagePlaceholder" placeholder="{{\'APPLICATION_ENQUIRY_MESSAGE_PLACEHOLDER\' | translate}}" class="form-control" data-ng-model="item.enquiry_message_placeholder"/>\n </div>\n <!-- END ENQUIRY MESSAGE PLACEHOLDER -->\n\n <!-- START ENQUIRY BUTTON -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.enquiryButton.$touched || forms.formLabel.$submitted) && forms.formLabel.enquiryButton.$invalid}">\n <label class="control-label">{{\'APPLICATION_ENQUIRY_BUTTON\' | translate}}</label>\n <input type="text" name="enquiryButton" placeholder="{{\'APPLICATION_ENQUIRY_BUTTON\' | translate}}" class="form-control" data-ng-model="item.enquiry_button"/>\n </div>\n <!-- END ENQUIRY BUTTON -->\n\n <!-- START AGENTS BUSY BUTTON -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.agentsBusy.$touched || forms.formLabel.$submitted) && forms.formLabel.agentsBusy.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENTS_BUSY\' | translate}}</label>\n <input type="text" name="agentsBusy" placeholder="{{\'APPLICATION_AGENTS_BUSY\' | translate}}" class="form-control" data-ng-model="item.agents_busy"/>\n </div>\n <!-- END AGENTS BUSY BUTTON -->\n\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_FORMS\' | translate}}" canexit="exitValidation(forms.formAppearance.$valid)">\n <form name="forms.formFunctionality" novalidate>\n\n <!-- START DOWNLOAD TRANSCRIPT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formFunctionality.animationToggle.$touched || forms.formFunctionality.$submitted) && forms.formFunctionality.animationToggle.$invalid}">\n <label class="control-label">{{\'APPLICATION_DOWNLOAD_TRANSCRIPT\' | translate}}</label>\n <ui-select data-ng-model="item.download_transcript" name="downloadTranscript" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected ? \'On\' : \'Off\'}}</ui-select-match>\n <ui-select-choices repeat="downloadTranscript in [true, false] | filter: $select.search">\n <div ng-bind-html="downloadTranscript ? \'On\' : \'Off\' | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END DOWNLOAD TRANSCRIPT -->\n\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/fax/account/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_FAX_ACCOUNT\' | translate }}</h3>\n</div>\n<div class="modal-body" data-ng-init="initWizard();">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.$submitted || form.name.$touched) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="form.name.$error.required && (form.$submitted || form.name.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START TRUNKS -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.$submitted || form.trunk.$touched) && form.trunk.$invalid}">\n <label class="control-label">{{\'APPLICATION_TRUNK\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.TrunkName" name="trunk" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_TRUNK\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="trunk.name as trunk in trunks | filter: $select.search">\n <div data-ng-bind="trunk.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="trunks.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_TRUNKS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/trunks/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="form.trunk.$error.required && (form.$submitted || form.trunk.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START TRUNKS -->\n\n <!-- START LOCALSTATIONID -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.$submitted || form.localstationid.$touched) && form.localstationid.$invalid}">\n <label class="control-label">{{\'APPLICATION_LOCALSTATIONID\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="localstationid" placeholder="{{\'APPLICATION_LOCALSTATIONID\' | translate}}" class="form-control" data-ng-model="item.localstationid" required/>\n <span data-ng-show="form.localstationid.$error.required && (form.$submitted || form.localstationid.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span class="help-block">\n {{\'DESCRIPTION_LOCALSTATIONID\' | translate}}.\n </span>\n </div>\n <!-- END LOCALSTATIONID -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/fax/account/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-fax"></i>\n <a href="#">{{ \'APPLICATION_FAX\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-notebook"></i>\n <a href="/channels/fax/accounts/list">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <button type="button" class="btn green-jungle" data-toggle="dropdown" data-hover="dropdown" data-delay="1000" data-close-others="true" aria-expanded="true">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ACCOUNT\' | translate }} <i class="fa fa-angle-down"></i>\n </button>\n <ul class="dropdown-menu" role="menu">\n <li>\n <a href="/channels/fax/accounts/wizard">\n {{ \'APPLICATION_STANDARD\' | translate }}\n </a>\n </li>\n <li>\n <a href="#" data-ng-click="createItem()">\n {{ \'APPLICATION_QUICK\' | translate }}\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/fax/account/view/action/list/list.html",'<div class="row" data-ng-init="initActons()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACTIONS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/channels/fax/accounts/view/{{account.id}}/actions/wizard" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ACTION\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n'), +a.put("app/channels/fax/account/view/action/view/view.html",'\n<div class="row" data-ng-init="initAction()">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-directions font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACTION\' | translate }}</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="forms.settings" data-ng-submit="forms.settings.$valid && updateItem()" novalidate>\n <!-- START APP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app.$touched || forms.settings.$submitted) && forms.settings.app.$invalid}">\n <label class="control-label">{{ \'APPLICATION_APPLICATION\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.app" name="app" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_APPLICATION\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="app.value as app in apps | filter: $select.search">\n <div ng-bind-html="app.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.app.$touched || forms.settings.$submitted) && forms.settings.app.$invalid && forms.settings.app.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APP -->\n\n <div class="app-settings" ng-slide-down="application.app === \'queue\'" lazy-render duration="1" data-ng-init="getQueues()">\n <!-- START QUEUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.queue.$touched || forms.settings.$submitted) && forms.settings.queue.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.FaxQueueId" name="queue" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="queues.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_QUEUES_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/fax/queues/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.queue.$touched || forms.settings.$submitted) && forms.settings.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'agent\'" lazy-render duration="1" data-ng-init="getAgents()">\n <!-- START AGENT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.agent.$touched || forms.settings.$submitted) && forms.settings.agent.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.UserId" name="agent" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.fullname}}</ui-select-match>\n <ui-select-choices repeat="agent.id as agent in agents | filter: $select.search">\n <div ng-bind-html="agent.fullname | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="agents.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AGENTS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/staff/agents/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.agent.$touched || forms.settings.$submitted) && forms.settings.agent.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END AGENT -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1" data-ng-init="getMailAccounts();getTemplates()">\n <!-- START SENDMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="email" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" min="1" required/>\n <span data-ng-show="(forms.settings.from.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.mail.$touched || forms.settings.$submitted) && forms.settings.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in mailAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.template.$touched || forms.settings.$submitted) && forms.settings.template.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEMPLATE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data9" name="template" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.template.$touched || forms.settings.$submitted) && forms.settings.template.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.attachment.$touched || forms.settings.$submitted) && forms.settings.attachment.$invalid}">\n <label class="control-label">{{\'APPLICATION_ATTACHMENT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data6" name="attachment" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="attachment in [\'yes\',\'no\'] | filter: $select.search">\n {{attachment}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.attachment.$touched || forms.settings.$submitted) && forms.settings.attachment.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SENDMAIL -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1" data-ng-init="getSmsAccounts()">\n <!-- START SENDSms -->\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.to.$touched || forms.settings.$submitted) && forms.settings.to.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" ng-pattern="/^[\\+]?[0-9]+$/" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" required/>\n <span data-ng-show="(forms.settings.to.$touched || forms.settings.$submitted) && forms.settings.to.$invalid && forms.settings.to.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in smsAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.text.$touched || forms.text.$submitted) && forms.settings.text.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <textarea id="text" class="form-control maxlength-handler" maxlength="160" name="text" data-ng-model="application.data6" required></textarea>\n <span data-ng-show="(forms.settings.text.$touched || forms.settings.$submitted) && forms.settings.text.$invalid && forms.settings.text.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <!-- END SENDSms -->\n </div>\n\n <!-- START INTERVAL_TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.intType.$touched || forms.settings.$submitted) && forms.settings.intType.$invalid}">\n <label class="control-label">{{ \'APPLICATION_INTERVAL_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.intType" theme="bootstrap" name="intType" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="intType.value as intType in $application.intTypes | filter: $select.search">\n {{ intType.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.intType.$touched || forms.settings.$submitted) && forms.settings.intType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVAL_TYPE -->\n\n <div class="app-settings" ng-slide-down="application.intType === \'custom\'" lazy-render duration="1">\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="application.alwaysTime">\n <uib-timepicker name="t_from" data-ng-model="application.t_from" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker>\n </fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="application.alwaysTime"><uib-timepicker name="t_to" data-ng-model="application.t_to" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker></fieldset>\n <!-- <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="application.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label> -->\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- START ALWAYS -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALWAYS\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="application.alwaysTime"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n <!-- <input type="checkbox" data-ng-model="application.alwaysTime"> -->\n </label>\n </div>\n </div>\n <!-- END ALWAYS -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.md_from" theme="bootstrap" name="md_from">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_to && application.md_to!==\'always\' && monthDay>application.md_to && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.md_to" theme="bootstrap" name="md_to">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_from && application.md_from!==\'always\' && monthDay<application.md_from && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.intType === \'list\'" lazy-render duration="1" data-ng-init="getIntervals()">\n\n <!-- START INTERVALS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.IntervalId.$touched || forms.settings.$submitted) && forms.settings.IntervalId.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVALS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.IntervalId" theme="bootstrap" name="IntervalId" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="interval.id as interval in intervals | filter: $select.search">\n {{ interval.name}}\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="intervals.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_INTERVALS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/intervals/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.IntervalId.$touched || forms.settings.$submitted) && forms.settings.IntervalId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVALS -->\n\n </div>\n <button class="btn green-haze" type="submit">{{\'APPLICATION_UPDATE\' | translate}}</button>\n </form>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/fax/account/view/action/wizard/wizard.html",'\n<div class="row" data-ng-init="initWizard()">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-directions font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACTION\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_APPLICATION\' | translate}}" canexit="formValidation(forms.action.$valid)">\n <form name="forms.action" novalidate>\n <!-- START APP -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.action.$submitted && forms.action.app.$invalid}">\n <label class="control-label">{{ \'APPLICATION_APPLICATION\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.app" name="app" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_APPLICATION\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="app.value as app in apps | filter: $select.search">\n <div ng-bind-html="app.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.action.$submitted && forms.action.app.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APP -->\n\n <div class="app-settings" ng-slide-down="application.app === \'agent\'" lazy-render duration="1" data-ng-init="getAgents()">\n <!-- START AGENT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.agent.$touched || forms.action.$submitted) && forms.action.agent.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.UserId" name="agent" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.fullname}}</ui-select-match>\n <ui-select-choices repeat="agent.id as agent in agents | filter: $select.search">\n <div ng-bind-html="agent.fullname | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="agents.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AGENTS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/staff/agents/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.agent.$touched || forms.action.$submitted) && forms.action.agent.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END AGENT -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'queue\'" lazy-render duration="1" data-ng-init="getQueues()">\n <!-- START QUEUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.queue.$touched || forms.action.$submitted) && forms.action.queue.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.FaxQueueId" name="queue" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="queues.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_QUEUES_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/fax/queues/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.queue.$touched || forms.action.$submitted) && forms.action.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1" data-ng-init="getMailAccounts();getTemplates()">\n <!-- START SENDMAIL -->\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="email" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" min="1" required/>\n <span data-ng-show="(forms.action.from.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.mail.$touched || forms.action.$submitted) && forms.action.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in mailAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEMPLATE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data9" name="template" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.attachment.$touched || forms.settings.$submitted) && forms.settings.attachment.$invalid}">\n <label class="control-label">{{\'APPLICATION_ATTACHMENT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data6" name="attachment" theme="bootstrap" data-ng-init="application.data6 = \'no\'" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="attachment in [\'yes\',\'no\'] | filter: $select.search">\n {{attachment}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.attachment.$touched || forms.settings.$submitted) && forms.settings.attachment.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SENDMAIL -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1" data-ng-init="getSmsAccounts()">\n <!-- START SENDSms -->\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.to.$touched || forms.action.$submitted) && forms.action.to.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" ng-pattern="/^[\\+]?[0-9]+$/" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" required/>\n <span data-ng-show="(forms.action.to.$touched || forms.action.$submitted) && forms.action.to.$invalid && forms.action.to.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in smsAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.text.$touched || forms.action.$submitted) && forms.action.text.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <textarea id="text" class="form-control maxlength-handler" maxlength="160" name="text" data-ng-model="application.data6" required></textarea>\n <span data-ng-show="(forms.action.text.$touched || forms.action.$submitted) && forms.action.text.$invalid && forms.action.text.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <!-- END SENDSms -->\n </div>\n\n <!-- START INTERVAL_TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.intType.$touched || forms.action.$submitted) && forms.action.intType.$invalid}">\n <label class="control-label">{{ \'APPLICATION_INTERVAL_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.intType" theme="bootstrap" name="intType" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="intType.value as intType in $application.intTypes | filter: $select.search">\n {{ intType.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.intType.$touched || forms.action.$submitted) && forms.action.intType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVAL_TYPE -->\n\n <div class="app-settings" ng-slide-down="application.intType === \'custom\'" lazy-render duration="1">\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="application.alwaysTime">\n <uib-timepicker name="t_from" data-ng-model="application.t_from" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker>\n </fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="application.alwaysTime"><uib-timepicker name="t_to" data-ng-model="application.t_to" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker></fieldset>\n <!-- <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="application.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label> -->\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- START ALWAYS -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALWAYS\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="application.alwaysTime"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n <!-- <input type="checkbox" data-ng-model="application.alwaysTime"> -->\n </label>\n </div>\n </div>\n <!-- END ALWAYS -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.md_from" theme="bootstrap" name="md_from">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_to && application.md_to!==\'always\' && monthDay>application.md_to && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.md_to" theme="bootstrap" name="md_to">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_from && application.md_from!==\'always\' && monthDay<application.md_from && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.intType === \'list\'" lazy-render duration="1" data-ng-init="getIntervals()">\n\n <!-- START INTERVALS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.IntervalId.$touched || forms.action.$submitted) && forms.action.IntervalId.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVALS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.IntervalId" theme="bootstrap" name="IntervalId" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="interval.id as interval in intervals | filter: $select.search">\n {{ interval.name}}\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="intervals.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_INTERVALS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/intervals/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.IntervalId.$touched || forms.action.$submitted) && forms.action.IntervalId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVALS -->\n\n </div>\n\n <input class="btn green-haze" type="submit" data-ng-click="next()" value="{{\'APPLICATION_CONTINUE\' | translate}}"/>\n </form>\n </wz-step>\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input class="btn green-haze" type="submit" data-ng-click="next()" value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), +a.put("app/channels/fax/account/view/disposition/modal/add.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_DISPOSITIONS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.form.$touched || form.$submitted) && form.form.$invalid}">\n <div class="">\n <!-- <input type="text" name="form" placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}" class="form-control" data-ng-model="name" data-ng-pattern="/^[a-zA-Z0-9]*$/" required/> -->\n <input type="text" name="form" placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}" class="form-control" data-ng-model="name" required/>\n <span data-ng-show="form.form.$touched && form.form.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <!-- <span data-ng-show="form.form.$touched && form.form.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_PATTERN\' | translate}}.\n </span> -->\n </div>\n <!-- <div class="help-block">\n {{\'MESSAGE_ALLOWED_NUMBERS_AND_LETTERS\' | translate}}\n </div> -->\n </div>\n <!-- END NAME -->\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()" data-ng-show="form.$valid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/fax/account/view/disposition/view/view.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_DISPOSITIONS\' | translate}}</span>\n </div>\n <div class="actions actions-md">\n <a href="#" class="btn btn-icon-only green" data-ng-click="addDisposition();">\n <i class="fa fa-plus"></i>\n </a>\n </div>\n </div>\n <div class="portlet-body" data-ng-init="initView()">\n <div class="tab-content">\n <div class="row" data-ng-hide="dispositions.length">\n <div class="col-md-12">\n <div class="note note-info">\n <h4 class="block">Info! {{\'MESSAGE_NO_DISPOSITIONS_AVAILABLE\' | translate}}</h4>\n </div>\n </div>\n </div>\n\n <!-- GENERAL TAB -->\n <div class="row" data-ng-repeat="disposition in dispositions">\n <div class="col-md-12 form-group">\n <div class="input-group">\n <div>\n <input class="form-control" type="text" placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}" data-ng-model="disposition.name">\n </div>\n <span class="input-group-btn">\n <button class="btn btn-success" type="button" data-ng-click="updateDisposition(disposition.id, disposition.name);"><i class="fa fa-cloud-upload fa-fw"></i> {{\'APPLICATION_UPDATE\' | translate}}</button>\n <button class="btn btn-danger" type="button" data-ng-click="deleteDisposition(disposition.id);"><i class="fa fa-times fa-fw"></i> {{\'APPLICATION_DELETE\' | translate}}</button>\n </span>\n </div>\n </div>\n </div>\n <!-- END GENERAL TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/fax/account/view/hooks/view/view.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_HOOKS\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_ACCEPT\' | translate}}</a>\n </li>\n <li >\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_REJECT\' | translate}}</a>\n </li>\n <li >\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{\'APPLICATION_CLOSE\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- ACCEPT TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.accept" data-ng-submit="forms.accept.$valid && updateItemFaxAccount()" novalidate>\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.accept.method.$touched || forms.accept.$submitted) && forms.accept.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.acceptMethod" name="method" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.accept.method.$touched || forms.accept.$submitted) && forms.accept.method.$invalid && forms.accept.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.accept.url.$touched || forms.accept.$submitted) && forms.accept.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.acceptUrl" ng-required="account.acceptMethod"/>\n <span data-ng-show="(forms.accept.url.$touched || forms.accept.$submitted) && forms.accept.url.$invalid && forms.accept.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <!-- START ACTIONS-->\n <div class="row" ng-repeat = "action in account.actions">\n <div ng-switch="action.action">\n <div ng-switch-when="pause">\n <div class="form-group col-md-4">\n <label class="control-label">{{\'APPLICATION_PAUSE\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-change="resetActionData(action)"\n data-ng-model="action.enabled"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <div ng-if="action.enabled" class="form-group col-md-8">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}</label>\n <ui-select name="action" data-ng-model="action.type" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_TYPE\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat=" pause.name as pause in pauses | filter: $select.search">\n <div ng-bind-html="pause.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n </div>\n <!-- END ACTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ACCEPT TAB -->\n <!-- START REJECT TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.reject" data-ng-submit="forms.reject.$valid && updateItemFaxAccount()" novalidate>\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.reject.method.$touched || forms.reject.$submitted) && forms.reject.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.rejectMethod" name="method" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.reject.method.$touched || forms.reject.$submitted) && forms.reject.method.$invalid && forms.reject.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.reject.url.$touched || forms.reject.$submitted) && forms.reject.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.rejectUrl" ng-required="account.rejectMethod"/>\n <span data-ng-show="(forms.reject.url.$touched || forms.reject.$submitted) && forms.reject.url.$invalid && forms.reject.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ACCEPT TAB -->\n <!-- START CLOSE TAB -->\n <div class="tab-pane" id="tab_1_3">\n <form name="forms.close" data-ng-submit="forms.close.$valid && updateItemFaxAccount()" novalidate>\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.close.method.$touched || forms.close.$submitted) && forms.close.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.closeMethod" name="method" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.close.method.$touched || forms.close.$submitted) && forms.close.method.$invalid && forms.close.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.close.url.$touched || forms.close.$submitted) && forms.close.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.closeUrl" ng-required="account.closeMethod"/>\n <span data-ng-show="(forms.close.url.$touched || forms.close.$submitted) && forms.close.url.$invalid && forms.close.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END CLOSE TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/fax/account/view/setting/view/view.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_ADVANCED\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body" data-ng-init="initView()">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateItemFaxAccount()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.$submitted || forms.general.name.$touched) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.name" required/>\n <span data-ng-show="forms.general.name.$error.required && (forms.general.$submitted || forms.general.name.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START HEADERINFO -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.$submitted || forms.general.headerinfo.$touched) && forms.general.headerinfo.$invalid}">\n <label class="control-label">{{\'APPLICATION_HEADERINFO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="headerinfo" placeholder="{{\'APPLICATION_HEADERINFO\' | translate}}" class="form-control" data-ng-model="account.headerinfo" required/>\n <span data-ng-show="forms.general.headerinfo.$error.required && (forms.general.$submitted || forms.general.headerinfo.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span class="help-block">\n {{\'DESCRIPTION_HEADERINFO\' | translate}}.\n </span>\n </div>\n <!-- END HEADERINFO -->\n\n <!-- START TRUNKS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.$submitted || forms.general.trunk.$touched) && forms.general.trunk.$invalid}">\n <label class="control-label">{{\'APPLICATION_TRUNK\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="account.TrunkName" name="trunk" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_TRUNK\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="trunk.name as trunk in trunks | filter: $select.search">\n <div data-ng-bind="trunk.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="trunks.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_TRUNKS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/trunks/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="forms.general.trunk.$error.required && (forms.general.$submitted || forms.general.trunk.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START TRUNKS -->\n\n <!-- START LOCALSTATIONID -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.$submitted || forms.general.localstationid.$touched) && forms.general.localstationid.$invalid}">\n <label class="control-label">{{\'APPLICATION_LOCALSTATIONID\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="localstationid" placeholder="{{\'APPLICATION_LOCALSTATIONID\' | translate}}" class="form-control" data-ng-model="account.localstationid" required/>\n <span data-ng-show="forms.general.localstationid.$error.required && (forms.general.$submitted || forms.general.localstationid.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span class="help-block">\n {{\'DESCRIPTION_LOCALSTATIONID\' | translate}}.\n </span>\n </div>\n <!-- END LOCALSTATIONID -->\n\n <!-- START LIST -->\n <div class="form-group" data-ng-if="license.cm">\n <label class="control-label">{{\'APPLICATION_LIST\' | translate}}</label>\n <div class="input-group">\n\n <ui-select data-ng-model="account.ListId" name="list" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_LIST\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="list.id as list in lists | filter: $select.search">\n <div ng-bind-html="list.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n\n <span class="input-group-btn">\n <button type="button" data-ng-click="account.ListId = null" class="btn btn-default">\n <span class="glyphicon glyphicon-trash"></span>\n </button>\n </span>\n\n </div>\n </div>\n <!-- END LIST -->\n\n <!-- START FIDELITY -->\n <!-- <div class="form-group">\n <label class="control-label">{{\'APPLICATION_FIDELITY\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-model="account.fidelity"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div> -->\n <!-- END FIDELITY -->\n\n <!-- START TIMEOUT -->\n <!-- <div class="form-group" data-ng-if="account.fidelity" data-ng-class="{\'has-error\': (forms.general.$submitted || forms.general.timeout.$touched) && forms.general.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="0" name="timeout" placeholder="{{\'APPLICATION_PORT\' | translate}}" class="form-control" data-ng-model="account.timeout" required/>\n <span data-ng-show="(forms.general.timeout.$touched || forms.general.$submitted) && forms.general.timeout.$invalid && forms.general.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.general.timeout.$touched || forms.general.$submitted) && forms.general.timeout.$invalid && forms.general.timeout.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div> -->\n <!-- END TIMEOUT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="account.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n\n <!-- ADVANCED TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.advanced" data-ng-submit="forms.advanced.$valid && updateItemFaxAccount()" novalidate>\n <div class="row">\n <div class="col-md-6">\n <!-- START ECM -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_ECM\' | translate}}<span class="required" aria-required="true">*</span></label><br>\n <input\n bs-switch\n ng-model="account.ecm"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}"\n ng-true-value="\'yes\'"\n ng-false-value="\'no\'">\n <span class="help-block">\n {{\'DESCRIPTION_ECM\' | translate}}.\n </span>\n </div>\n <!-- END ECM -->\n\n <!-- START MINRATE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.$submitted || forms.advanced.minrate.$touched) && forms.advanced.minrate.$invalid}">\n <label class="control-label">{{\'APPLICATION_MINRATE\' | translate}} <span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="account.minrate" name="minrate" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_MINRATE\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="minrate in rate | filter: $select.search">\n <div data-ng-bind="minrate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{\'DESCRIPTION_MINRATE\' | translate}}.\n </span>\n <span data-ng-show="forms.advanced.minrate.$error.required && (forms.advanced.$submitted || forms.advanced.minrate.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START MINRATE -->\n\n <!-- START MAXRATE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.$submitted || forms.advanced.maxrate.$touched) && forms.advanced.maxrate.$invalid}">\n <label class="control-label">{{\'APPLICATION_MAXRATE\' | translate}} <span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="account.maxrate" name="maxrate" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_MAXRATE\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="maxrate in rate | filter: $select.search">\n <div data-ng-bind="maxrate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{\'DESCRIPTION_MAXRATE\' | translate}}.\n </span>\n <span data-ng-show="forms.advanced.maxrate.$error.required && (forms.advanced.$submitted || forms.advanced.maxrate.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START MAXRATE -->\n\n <!-- START MODEM -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.$submitted || forms.advanced.modem.$touched) && forms.advanced.modem.$invalid}">\n <label class="control-label">{{\'APPLICATION_MODEM\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="modem" placeholder="{{\'APPLICATION_MODEM\' | translate}}" class="form-control" data-ng-model="account.modem" required/>\n <span class="help-block">\n {{\'DESCRIPTION_MODEM\' | translate}}.\n </span>\n <span data-ng-show="forms.advanced.modem.$error.required && (forms.advanced.$submitted || forms.advanced.modem.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MODEM -->\n </div>\n <div class="col-md-6">\n <!-- START GATEWAY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.$submitted || forms.advanced.gateway.$touched) && forms.advanced.gateway.$invalid}">\n <label class="control-label">{{\'APPLICATION_GATEWAY\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="gateway" placeholder="{{\'APPLICATION_GATEWAY\' | translate}}" class="form-control" data-ng-model="account.gateway" required data-ng-pattern="settings.patternGateway"/>\n <span class="help-block">\n {{\'DESCRIPTION_GATEWAY\' | translate}}.\n </span>\n <span data-ng-show="(forms.advanced.gateway.$touched || forms.advanced.$submitted) && forms.advanced.gateway.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.advanced.gateway.$touched || forms.advanced.$submitted) && forms.advanced.gateway.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_GATEWAY\' | translate}}.\n </span>\n </div>\n <!-- END GATEWAY -->\n\n <!-- START FAXDETECT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.$submitted || forms.advanced.faxdetect.$touched) && forms.advanced.faxdetect.$invalid}">\n <label class="control-label">{{\'APPLICATION_FAXDETECT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="faxdetect" placeholder="{{\'APPLICATION_FAXDETECT\' | translate}}" class="form-control" data-ng-model="account.faxdetect" required data-ng-pattern="settings.patternFaxdetect"/>\n <span class="help-block">\n {{\'DESCRIPTION_FAXDETECT\' | translate}}.\n </span>\n <span data-ng-show="(forms.advanced.faxdetect.$touched || forms.advanced.$submitted) && forms.advanced.faxdetect.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.advanced.faxdetect.$touched || forms.advanced.$submitted) && forms.advanced.faxdetect.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_FAXDETECT\' | translate}}.\n </span>\n </div>\n <!-- END FAXDETECT -->\n\n <!-- START T38TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.$submitted || forms.advanced.t38timeout.$touched) && forms.advanced.t38timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_T38TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="t38timeout" placeholder="{{\'APPLICATION_T38TIMEOUT\' | translate}}" class="form-control" data-ng-model="account.t38timeout" required min="1000"/>\n <span class="help-block">\n {{\'DESCRIPTION_T38TIMEOUT\' | translate}}.\n </span>\n <span data-ng-show="(forms.advanced.t38timeout.$touched || forms.advanced.$submitted) && forms.advanced.t38timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.advanced.t38timeout.$touched || forms.advanced.$submitted) && forms.advanced.t38timeout.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_T38TIMEOUT\' | translate}}.\n </span>\n </div>\n <!-- END T38TIMEOUT -->\n\n <!-- START TECH -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.$submitted || forms.advanced.tech.$touched) && forms.advanced.tech.$invalid}">\n <label class="control-label">{{\'APPLICATION_TECHNOLOGY\' | translate}} <span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="account.tech" name="tech" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_TECHNOLOGY\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="tech in techs | filter: $select.search">\n <div data-ng-bind="tech | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.advanced.tech.$touched || forms.advanced.$submitted) && forms.advanced.tech.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START TECH -->\n </div>\n </div>\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'), +a.put("app/channels/fax/account/view/view.html",'<!-- BEGIN PAGE HEADER-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-fax"></i>\n <a href="#">{{ \'APPLICATION_FAX\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-notebook"></i>\n <a href="/channels/fax/accounts/list">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a>\n <i class="fa fa-angle-right" data-ng-show="account"></i>\n </li>\n <li data-ng-show="account">\n <a href="#">{{ account.name || account.description }}</a>\n </li>\n </ul>\n </div>\n\n<!-- END PAGE HEADER-->\n\n<!-- BEGIN PAGE CONTENT-->\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/account.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{ account.name || account.description }}\n </div>\n <div class="profile-usertitle-job">\n {{ account.phone }}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.fax.accounts.view.settings\')}">\n <a href="/channels/fax/accounts/view/{{account.id}}/settings">\n <i class="icon-settings"></i>\n {{\'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.is(\'main.channels.fax.accounts.view.hooks\')}">\n <a href="/channels/fax/accounts/view/{{account.id}}/hooks">\n <i class="fa fa-code"></i>\n {{\'APPLICATION_HOOKS\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.is(\'main.channels.fax.accounts.view.dispositions\')}">\n <a href="/channels/fax/accounts/view/{{account.id}}/dispositions">\n <i class="icon-target"></i>\n {{\'APPLICATION_DISPOSITIONS\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.includes(\'main.channels.fax.accounts.view.actions\')}">\n <a href="/channels/fax/accounts/view/{{account.id}}/actions/list">\n <i class="icon-directions"></i>\n {{\'APPLICATION_ACTIONS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/fax/account/wizard/wizard.html",'<!-- BEGIN PAGE HEADER-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-fax"></i>\n <a href="#">{{ \'APPLICATION_FAX\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-notebook"></i>\n <a href="/channels/fax/accounts/list">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n<!-- END PAGE HEADER-->\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initWizard()">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACCOUNT\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_GENERAL\' | translate}}" canexit="exitValidation(forms.formGeneral.$valid)">\n <form name="forms.formGeneral" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formGeneral.$submitted || forms.formGeneral.name.$touched) && forms.formGeneral.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="forms.formGeneral.name.$error.required && (forms.formGeneral.$submitted || forms.formGeneral.name.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START HEADERINFO -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formGeneral.$submitted || forms.formGeneral.headerinfo.$touched) && forms.formGeneral.headerinfo.$invalid}">\n <label class="control-label">{{\'APPLICATION_HEADERINFO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="headerinfo" placeholder="{{\'APPLICATION_HEADERINFO\' | translate}}" class="form-control" data-ng-model="item.headerinfo" required/>\n <span data-ng-show="forms.formGeneral.headerinfo.$error.required && (forms.formGeneral.$submitted || forms.formGeneral.headerinfo.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span class="help-block">\n {{\'DESCRIPTION_HEADERINFO\' | translate}}.\n </span>\n </div>\n <!-- END HEADERINFO -->\n\n <!-- START TRUNKS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formGeneral.$submitted || forms.formGeneral.trunk.$touched) && forms.formGeneral.trunk.$invalid}">\n <label class="control-label">{{\'APPLICATION_TRUNK\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.TrunkName" name="trunk" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_TRUNK\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="trunk.name as trunk in trunks | filter: $select.search">\n <div data-ng-bind="trunk.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="trunks.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_TRUNKS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/trunks/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="forms.formGeneral.trunk.$error.required && (forms.formGeneral.$submitted || forms.formGeneral.trunk.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START TRUNKS -->\n\n <!-- START LOCALSTATIONID -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formGeneral.$submitted || forms.formGeneral.localstationid.$touched) && forms.formGeneral.localstationid.$invalid}">\n <label class="control-label">{{\'APPLICATION_LOCALSTATIONID\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="localstationid" placeholder="{{\'APPLICATION_LOCALSTATIONID\' | translate}}" class="form-control" data-ng-model="item.localstationid" required/>\n <span data-ng-show="forms.formGeneral.localstationid.$error.required && (forms.formGeneral.$submitted || forms.formGeneral.localstationid.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span class="help-block">\n {{\'DESCRIPTION_LOCALSTATIONID\' | translate}}.\n </span>\n </div>\n <!-- END LOCALSTATIONID -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" data-ng-click="next()"/>\n\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_ADVANCED\' | translate}}" canexit="exitValidation(forms.formAdvanced.$valid)">\n <form name="forms.formAdvanced" novalidate>\n\n <!-- START ECM -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_ECM\' | translate}}<span class="required" aria-required="true">*</span></label><br>\n <input\n bs-switch\n ng-model="item.ecm"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}"\n ng-true-value="\'yes\'"\n ng-false-value="\'no\'">\n <span class="help-block">\n {{\'DESCRIPTION_ECM\' | translate}}.\n </span>\n </div>\n <!-- END ECM -->\n\n <!-- START MINRATE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAdvanced.$submitted || forms.formAdvanced.minrate.$touched) && forms.formAdvanced.minrate.$invalid}">\n <label class="control-label">{{\'APPLICATION_MINRATE\' | translate}} <span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.minrate" name="minrate" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_MINRATE\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="minrate in rate | filter: $select.search">\n <div data-ng-bind="minrate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{\'DESCRIPTION_MINRATE\' | translate}}.\n </span>\n <span data-ng-show="forms.formAdvanced.minrate.$error.required && (forms.formAdvanced.$submitted || forms.formAdvanced.minrate.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START MINRATE -->\n\n <!-- START MAXRATE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAdvanced.$submitted || forms.formAdvanced.maxrate.$touched) && forms.formAdvanced.maxrate.$invalid}">\n <label class="control-label">{{\'APPLICATION_MAXRATE\' | translate}} <span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.maxrate" name="maxrate" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_MAXRATE\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="maxrate in rate | filter: $select.search">\n <div data-ng-bind="maxrate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{\'DESCRIPTION_MAXRATE\' | translate}}.\n </span>\n <span data-ng-show="forms.formAdvanced.maxrate.$error.required && (forms.formAdvanced.$submitted || forms.formAdvanced.maxrate.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START MAXRATE -->\n\n <!-- START MODEM -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAdvanced.$submitted || forms.formAdvanced.modem.$touched) && forms.formAdvanced.modem.$invalid}">\n <label class="control-label">{{\'APPLICATION_MODEM\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="modem" placeholder="{{\'APPLICATION_MODEM\' | translate}}" class="form-control" data-ng-model="item.modem" required/>\n <span class="help-block">\n {{\'DESCRIPTION_MODEM\' | translate}}.\n </span>\n <span data-ng-show="forms.formAdvanced.modem.$error.required && (forms.formAdvanced.$submitted || forms.formAdvanced.modem.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MODEM -->\n\n <!-- START GATEWAY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAdvanced.$submitted || forms.formAdvanced.gateway.$touched) && forms.formAdvanced.gateway.$invalid}">\n <label class="control-label">{{\'APPLICATION_GATEWAY\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="gateway" placeholder="{{\'APPLICATION_GATEWAY\' | translate}}" class="form-control" data-ng-model="item.gateway" required data-ng-pattern="settings.patternGateway"/>\n <span class="help-block">\n {{\'DESCRIPTION_GATEWAY\' | translate}}.\n </span>\n <span data-ng-show="(forms.formAdvanced.gateway.$touched || forms.formAdvanced.$submitted) && forms.formAdvanced.gateway.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formAdvanced.gateway.$touched || forms.formAdvanced.$submitted) && forms.formAdvanced.gateway.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_GATEWAY\' | translate}}.\n </span>\n </div>\n <!-- END GATEWAY -->\n\n <!-- START FAXDETECT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAdvanced.$submitted || forms.formAdvanced.faxdetect.$touched) && forms.formAdvanced.faxdetect.$invalid}">\n <label class="control-label">{{\'APPLICATION_FAXDETECT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="faxdetect" placeholder="{{\'APPLICATION_FAXDETECT\' | translate}}" class="form-control" data-ng-model="item.faxdetect" required data-ng-pattern="settings.patternFaxdetect"/>\n <span class="help-block">\n {{\'DESCRIPTION_FAXDETECT\' | translate}}.\n </span>\n <span data-ng-show="(forms.formAdvanced.faxdetect.$touched || forms.formAdvanced.$submitted) && forms.formAdvanced.faxdetect.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formAdvanced.faxdetect.$touched || forms.formAdvanced.$submitted) && forms.formAdvanced.faxdetect.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_FAXDETECT\' | translate}}.\n </span>\n </div>\n <!-- END FAXDETECT -->\n\n <!-- START T38TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAdvanced.$submitted || forms.formAdvanced.t38timeout.$touched) && forms.formAdvanced.t38timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_T38TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="t38timeout" placeholder="{{\'APPLICATION_T38TIMEOUT\' | translate}}" class="form-control" data-ng-model="item.t38timeout" required min="1000"/>\n <span class="help-block">\n {{\'DESCRIPTION_T38TIMEOUT\' | translate}}.\n </span>\n <span data-ng-show="(forms.formAdvanced.t38timeout.$touched || forms.formAdvanced.$submitted) && forms.formAdvanced.t38timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formAdvanced.t38timeout.$touched || forms.formAdvanced.$submitted) && forms.formAdvanced.t38timeout.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_T38TIMEOUT\' | translate}}.\n </span>\n </div>\n <!-- END T38TIMEOUT -->\n\n <!-- START TECH -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAdvanced.$submitted || forms.formAdvanced.tech.$touched) && forms.formAdvanced.tech.$invalid}">\n <label class="control-label">{{\'APPLICATION_TECHNOLOGY\' | translate}} <span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.tech" name="tech" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_TECHNOLOGY\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="tech in techs | filter: $select.search">\n <div data-ng-bind="tech | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.formAdvanced.tech.$touched || forms.formAdvanced.$submitted) && forms.formAdvanced.tech.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START TECH -->\n\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" data-ng-click="next()"/>\n\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n\n </wizard>\n\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/fax/inbox/message/info.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_INFO\' | translate }}</h3>\n</div>\n<div class="modal-body" data-ng-init="initInfo()">\n <div class="form-group" ng-if="data">\n <json-formatter json="data" open="1"></json-formatter>\n </div>\n <div class="note note-warning" data-ng-hide="data">\n <h4 class="block"></h4>\n <p>\n {{ \'MESSAGE_NO_INFO_AVAILABLE\' | translate }}\n </p>\n </div>\n\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/channels/fax/inbox/message/message.directive.html",'<div class="message">\n <div class="row">\n <div class="col-md-6">\n <span class="bold">From: </span>\n [<a href="" data-ng-click="openContact(message.from)">{{message.from}}</a>]\n <br>\n <span class="bold">To: </span>\n [<a href="" data-ng-click="openContact(message.to)">{{message.to}}</a>]\n </div>\n <div class="col-md-6">\n <span class="pull-right">\n <a ng-click="info(message)"><i class="icon-info font-blue"></i></a>\n </span>\n <span class="pull-right" data-ng-show="message.User">{{\'APPLICATION_SENT_BY\' | translate}}: <strong>{{message.User.fullname}}</strong></span>\n </div>\n </div>\n <br>\n <span class="todo-tasklist-date">\n <span class="pull-right" data-ng-if="message.status!==\'RECEIVED\'" data-ng-switch="message.status" uib-tooltip="{{\'APPLICATION_PAGE_TRANSFERRED\' | translate}}: {{message.pagestransferred}} - {{\'APPLICATION_RETRY\' | translate}}: {{message.retry}}">\n <a ng-switch-when="SENDING" href="#" class="btn default btn-xs inactive-link blue-stripe"> {{message.status | uppercase}}\n <i class="fa fa-warning"></i>\n </a>\n <a ng-switch-when="FAILED" href="#" class="btn default btn-xs red-stripe" data-ng-click="retry(message.id)"> {{message.status | uppercase}}\n <i class="fa fa-times"></i>\n </a>\n <a ng-switch-when="SENT" href="#" class="btn default btn-xs inactive-link green-stripe"> {{message.status | uppercase}}\n <i class="fa fa-check"></i>\n </a>\n </span>\n <span class="pull-right" data-ng-if="message.status===\'RECEIVED\'" uib-tooltip="{{\'APPLICATION_PAGE_TRANSFERRED\' | translate}}: {{message.pagestransferred}}">\n <a href="#" class="btn default btn-xs inactive-link green-stripe"> {{message.status | uppercase}}\n <i class="fa fa-check"></i>\n </a>\n </span>\n <i class="icon-calendar" title="{{message.updatedAt | date:\'MMM d, y HH:mm:ss\'}}"></i> <span am-time-ago="message.updatedAt"></span>\n </span>\n <hr data-ng-if="message.FaxAttachments.length">\n <div data-ng-repeat="faxAttachment in message.FaxAttachments">\n <strong>{{faxAttachment.name}}</strong>\n <a target="_self" download="{{faxAttachment.name}}" href="api/fax/attachments/{{faxAttachment.id}}">\n <i class="icon-cloud-download"></i>\n </a>\n </div>\n</div>\n'),a.put("app/channels/fax/inbox/note/note.directive.html",'<div class="note">\n <div class="row">\n <div class="col-md-6">\n <a type="button" name="button" data-ng-if="::(Auth.getCurrentUser().id == message.UserId)" data-ng-click="deleteNote()">\n <i class="fa fa-trash-o" style="color: red;"></i>\n </a>\n\n <i class="icon-calendar" title="{{message.updatedAt | date:\'MMM d, y HH:mm:ss\'}}"></i> <span am-time-ago="message.updatedAt"></span>\n </div>\n <div class="col-md-6">\n <span class="pull-right" data-ng-show="message.User">{{\'APPLICATION_ADD_BY\' | translate}}: <strong>{{message.User.fullname}}</strong></span>\n </div>\n </div>\n <hr>\n <span class="body text-left" data-ng-bind-html="message.text" style="white-space: pre-wrap;"></span>\n</div>\n'),a.put("app/channels/fax/inbox/note/note.modal.html",'<div class="modal-header" data-ng-init="initModal()">\n <h3 class="modal-title">{{ \'APPLICATION_NOTES\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n <div class="form-group">\n <textarea data-ng-model="item.text" name="text" rows="10" style="resize: none; width: 100%;"></textarea>\n </div>\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/fax/inbox/room/room.directive.html",'<!-- BEGIN TODO CONTENT -->\n<div class="todo-content" data-ng-init="initForm();">\n <div class="portlet light">\n <div class="portlet-title">\n <div class="caption">\n <button data-ng-if="(!forms.compose.from.$invalid && !forms.compose.to.$invalid && uploader.queue.length) && faxRoom.status !== \'CLOSED\'" class="btn btn-sm btn-default green-meadow" data-ng-click="sendFax()">\n <i class="icon-paper-plane" style="color: white;"></i> {{\'APPLICATION_SEND\' | translate}}\n </button>\n <span data-ng-if="(!forms.compose.from.$invalid && !forms.compose.to.$invalid && uploader.queue.length) && faxRoom && faxRoom.status !== \'CLOSED\'"> | </span>\n <span data-ng-if="faxRoom" class="label label-default"> #{{faxRoom.id}} {{faxRoom.status}}</span>\n <span data-ng-if="faxRoom"> | </span>\n <span data-ng-if="faxRoom" class="caption-subject font-green-sharp bold">{{faxRoom.contact}}</span>\n </div>\n <div class="actions" data-ng-switch="faxRoom.status">\n <button class="btn btn-icon-only yellow" data-ng-if="faxRoom" data-ng-click="loadNote()" data-ng-hide="faxRoom.status == \'CLOSED\'" title="{{\'APPLICATION_NOTES\' | translate}}">\n <i class="fa fa-sticky-note"></i>\n </button>\n <span class="btn file-upload" data-ng-hide="faxRoom.status == \'CLOSED\'">\n <i class="fa fa-paperclip"></i> <input type="file" data-ng-if="uploader" data-ng-hide="faxRoom.status == \'CLOSED\'" nv-file-select uploader="uploader" multiple class="file-input" title="{{\'APPLICATION_ATTACHMENTS\' | translate}}">\n </span>\n <!-- UPDATE SECTION START -->\n <button data-ng-class="faxRoom.status == \'CLOSED\' ? \'grey-cascade\' : \'btn-success\'" class="btn btn-icon-only" data-ng-hide="faxRoom.status == \'CLOSED\' && faxRoom.disposition" data-ng-if="faxRoom" data-ng-click="closeRoom()" title="{{\'APPLICATION_STATUS\' | translate}}">\n <i data-ng-class="faxRoom.status == \'CLOSED\' ? \'icon-target\' : \'fa fa-upload\'"></i>\n </button>\n <!-- UPDATE SECTION END -->\n <button class="btn default btn-icon-only" data-ng-if="faxRoom && faxRoom.status !== \'CLOSED\'" data-ng-click="togglePanelLeft()" title="{{\'APPLICATION_RESIZE\' | translate}}">\n <i ng-class="panelRight == \'col-md-12\' ? \'icon-size-actual\' : \'icon-size-fullscreen\'"></i>\n </button>\n </div>\n </div>\n <div class="portlet-body">\n <div class="row">\n <div data-ng-show="panelLeft" data-ng-class="panelLeft">\n <div class="form">\n <!-- START TAGS -->\n <div class="form-group" data-ng-if="faxRoom.status !== \'CLOSED\'">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-tags" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <ui-select multiple data-ng-model="form.tags" theme="bootstrap" on-select="onChanged($item, $model)" on-remove="onChanged($item, $model)" data-ng-disabled="faxRoom.status == \'CLOSED\'">\n <ui-select-match placeholder="Tags...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter:$select.search" class="">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n <!-- END TAGS -->\n </div>\n\n <hr data-ng-if="faxRoom && faxRoom.status !== \'CLOSED\'">\n\n <!-- END TAGS -->\n\n <div id="mail-box">\n <ul class="chats">\n <li\n data-ng-switch="faxMessage.status"\n data-ng-class="{\'in\': faxMessage.status == \'RECEIVED\', \'out\': faxMessage.status == \'SENT\' || faxMessage.status == \'SENDING\' || faxMessage.status == \'FAILED\' || faxMessage.status == \'NOTE\'}"\n data-ng-repeat="faxMessage in faxRoom.FaxMessages | orderBy:\'-createdAt\'">\n <div class="avatar" data-ng-class="faxMessage.UserId ? \'pretty-avatar\' : \'pretty-avatar-v\'">\n <ng-letter-avatar\n data-ng-if="faxMessage.UserId"\n height="40"\n width="40"\n fontsize="25"\n data="{{faxMessage.User.fullname}}"\n avatarcustombgcolor="#B0B0B0"\n avatarcustomborder="border:2px solid #3399CC"\n charCount="2"\n shape="round"></ng-letter-avatar>\n <ng-letter-avatar\n data-ng-if="!faxMessage.UserId"\n height="40"\n width="40"\n fontsize="25"\n data="{{faxMessage.from}}"\n avatarcustombgcolor="#B0B0B0"\n avatarcustomborder="border:2px solid #EA4C61"\n charCount="1"\n shape="round"></ng-letter-avatar>\n </div>\n <fax-note message="faxMessage" ng-switch-when="NOTE"></fax-note>\n <fax-message message="faxMessage" list-id="faxRoom.FaxAccount.ListId" ng-switch-default></fax-message>\n </li>\n </ul>\n </div>\n </div>\n <div data-ng-class="panelRight">\n <div class="note note-info" data-ng-if="faxRoom && faxRoom.status == \'CLOSED\'">\n <h4 class="block"><i class="icon-info"></i> {{\'MESSAGE_FAX_ROOM_CLOSED\' | translate}}!</h4>\n <p>\n <strong>{{\'MESSAGE_FAX_ROOM_CLOSED_DETAILS\' | translate}}.</strong>\n </p>\n <hr>\n <p>\n <i class="icon-target"></i> {{\'APPLICATION_DISPOSITION\' | translate}}: <strong>{{faxRoom.disposition}}</strong>\n </p>\n <p>\n <i class="icon-calendar"></i> {{\'APPLICATION_UPDATED_AT\' | translate}}: <strong>{{faxRoom.updatedAt | date:\'medium\'}}</strong> (<span am-time-ago="faxRoom.updatedAt"></span>)\n </p>\n </div>\n <form name="forms.compose" data-ng-submit="sendFax()" class="form-horizontal" novalidate>\n\n <!-- START HEAD -->\n <div class="form">\n\n <v-accordion class="vAccordion--default" ng-if="faxRoom.status !== \'CLOSED\'">\n <v-pane expanded="expanded">\n <v-pane-header>\n <i class="icon-people"></i> From: {{form.from}}, To: {{form.to[0].fax}}\n </v-pane-header>\n <v-pane-content>\n <!-- START FROM -->\n <div class="form-group" data-ng-if="faxRoom.status !== \'CLOSED\'" data-ng-class="{\'has-error\': forms.compose.from.$invalid}">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <label class="control-label">From:</label>\n </div>\n <div class="col-md-11">\n <ui-select data-ng-model="form.from" data-ng-change="setList($select.selected.ListId)" theme="bootstrap" name="from" required>\n <ui-select-match placeholder="From...">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="faxAccount.localstationid as faxAccount in faxAccounts | filter: $select.search">\n <div data-ng-bind-html="faxAccount.name | highlight: $select.search"></div>\n <small data-ng-bind-html="faxAccount.localstationid | highlight: $select.search"></small>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.compose.from.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n <!-- END FROM -->\n\n <!-- START TO -->\n <div class="form-group" data-ng-if="faxRoom.status !== \'CLOSED\'" data-ng-class="{\'has-error\': forms.compose.to.$invalid}">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <label class="control-label">To:</label>\n </div>\n <div class="col-md-11">\n <tags-input name="to" ng-model="form.to" type="text" display-property="fax" max-tags="1" min-tags="1">\n <auto-complete source="getContacts($query)"></auto-complete>\n </tags-input>\n <span data-ng-show="forms.compose.to.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_TO_LIMIT\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n <!-- END TO -->\n\n </v-pane-content>\n </v-pane>\n </v-accordion>\n\n <!-- START ATTACH -->\n <div class="form-group" data-ng-if="uploader && (faxRoom.status !== \'CLOSED\')">\n <div class="col-md-12">\n <hr ng-if="uploader.queue.length">\n <table class="table">\n <tbody>\n <tr ng-repeat="item in uploader.queue">\n <td style="border-top:none"><strong>{{ item.file.name | truncate: 5: \'...\': true}}</strong></td>\n <td style="border-top:none" ng-show="uploader.isHTML5" nowrap>{{ item.file.size/1024/1024|number:2 }} MB</td>\n <td style="border-top:none" ng-show="uploader.isHTML5">\n <div class="progress" style="margin-bottom: 0;">\n <div class="progress-bar" role="progressbar" ng-style="{ \'width\': item.progress + \'%\' }"></div>\n </div>\n </td>\n <td style="border-top-style:none" class="text-center">\n <span ng-show="item.isSuccess"><i class="glyphicon glyphicon-ok"></i></span>\n <span ng-show="item.isCancel"><i class="glyphicon glyphicon-ban-circle"></i></span>\n <span ng-show="item.isError"><i class="glyphicon glyphicon-remove"></i></span>\n </td>\n <td style="border-top-style:none" nowrap>\n <button type="button" class="btn btn-danger btn-xs" data-ng-click="item.remove()">\n <span class="glyphicon glyphicon-trash"></span> {{\'APPLICATION_REMOVE\' | translate}}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n <div>\n </div>\n </div>\n </div>\n <!-- END ATTACH -->\n\n </div>\n </form>\n </div>\n </div>\n </div>\n </div>\n</div>\n<!-- END TODO CONTENT -->\n'), +a.put("app/channels/fax/inbox/status/status.modal.html",'<div class="modal-header">\n <button data-ng-if="modal.dismissable" type="button" data-ng-click="$dismiss()" class="close">×</button>\n <h4 data-ng-if="modal.title" data-ng-bind="modal.title | translate" class="modal-title"></h4>\n</div>\n<div class="modal-body">\n <p data-ng-if="modal.text && !closed" ng-bind="modal.text | translate"></p>\n <form name="form" novalidate data-ng-init="initDisposition()">\n <div class="form-group">\n <ui-select data-ng-model="item.disposition" name="disposition" theme="bootstrap" data-ng-disabled="!dispositions.length" required>\n <ui-select-match placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="disposition.name as disposition in dispositions | filter: $select.search">\n <div ng-bind-html="disposition.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="note note-warning" data-ng-if="dispositions.length < 1">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_DISPOSITIONS_AVAILABLE\' | translate }}\n </p>\n </div>\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/fax/inbox/view/account/list/list.html",'<!-- BEGIN Portlet PORTLET-->\n<div class="portlet light" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption">\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'NEW\'" uib-uncheckable>NEW</button>\n </div>\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'OPEN\'" uib-uncheckable>OPEN</button>\n </div>\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'PENDING\'" uib-uncheckable>PENDING</button>\n </div>\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'CLOSED\'" uib-uncheckable>CLOSED</button>\n </div>\n </div>\n <div class="actions">\n <a href="#" class="btn btn-icon-only default" data-ng-click="getPage();">\n <i class="fa fa-refresh"></i>\n </a>\n <a href="#" class="btn btn-icon-only red" data-ng-click="deleteItems();" data-ng-show="id.length && isAdmin">\n <i class="fa fa-trash"></i>\n </a>\n <a href="#" class="btn btn-icon-only btn-success" data-ng-click="disposeItems();" data-ng-show="id.length">\n <i class="fa fa-upload"></i>\n </a>\n <a href="#" class="btn btn-icon-only blue" data-ng-click="tagItems();" data-ng-show="id.length">\n <i class="fa fa-tags"></i>\n </a>\n <a href="#" class="btn btn-icon-only green" data-ng-click="openRoom(null, \'New Message\')">\n <i class="fa fa-plus"></i>\n </a>\n </div>\n </div>\n <div class="portlet-title" data-ng-show="tags.length">\n <!-- START TAGS -->\n <div class="form-group">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-tags" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <ui-select multiple data-ng-model="query.tags" theme="bootstrap" on-select="onChanged($item, $model)" on-remove="onChanged($item, $model)">\n <ui-select-match placeholder="Search by tag...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter:$select.search">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n <!-- END TAGS -->\n </div>\n <div class="portlet-body">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="false"></span>\n <!-- END UI-GRID SPINNER -->\n\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-pagination ui-grid-selection ui-grid-exporter class="ui-grid-inbox">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END Portlet PORTLET-->\n'),a.put("app/channels/fax/inbox/view/view.agents.modal.html",'<div class="modal-header" data-ng-init="initModal()">\n <h3 class="modal-title">{{ \'APPLICATION_AGENTS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <!-- START TRANSPORT -->\n <div class="form-group">\n <form name="form" novalidate>\n <!-- START TRANSPORT -->\n <div class="form-group">\n <ui-select multiple name="agents" data-ng-model="item.agents" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_AGENTS\' | translate}}">{{$item.fullname}}</ui-select-match>\n <ui-select-choices repeat="agent.id as agent in agents | filter: $select.search">\n {{agent.fullname}}\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="agents">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AGENTS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/staff/agents/list">{{\'APPLICATION_AGENTS\' | translate}}</a>\n </p>\n </div>\n </div>\n <!-- END TRANSPORT -->\n </form>\n </div>\n <!-- END TRANSPORT -->\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/fax/inbox/view/view.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-fax"></i>\n <a href="#">{{ \'APPLICATION_FAX\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-note"></i>\n <a href="#">{{ \'APPLICATION_INBOX\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row inbox">\n <div class="col-md-3">\n <ul class="inbox-nav margin-bottom-10">\n <li data-ng-class="{active: $stateParams.id == faxAccount.id}" data-ng-repeat="faxAccount in faxAccounts">\n <a href="/channels/fax/inbox/view/account/{{faxAccount.id}}/list" class="btn">\n <i class="icon-notebook"></i> {{faxAccount.name}}\n </a>\n <b></b>\n </li>\n </ul>\n <div class="note note-warning" data-ng-hide="faxAccounts.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AVAILABLE_ACCOUNTS\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/fax/accounts/list">{{\'APPLICATION_ACCOUNTS\' | translate}}</a>\n </p>\n </div>\n </div>\n\n <div class="col-md-9" data-ng-init="initView()">\n <!-- BEGIN PROFILE CONTENT -->\n <div class="room-content">\n <div ui-view>\n <div class="note note-info">\n <h4 class="block">Info! {{\'APPLICATION_NO_ACCOUNT_SELECTED\' | translate}}</h4>\n </div>\n </div>\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n'),a.put("app/channels/fax/inbox/view/view.status.modal.html",'<div class="modal-header" data-ng-init="initModal()">\n <h3 class="modal-title">{{ modal.title | translate }}</h3>\n</div>\n<div class="modal-body">\n <p data-ng-if="modal.text" data-ng-bind="modal.text"></p>\n <div data-ng-if="modal.html" data-ng-bind-html="modal.html"></div>\n</div>\n<div class="modal-footer">\n <button data-ng-repeat="button in modal.buttons"\n data-ng-class="button.classes"\n data-ng-click="button.click($event)"\n data-ng-bind="button.text | translate" class="btn"></button>\n</div>\n'),a.put("app/channels/fax/inbox/view/view.tags.modal.html",'<div class="modal-header" data-ng-init="initModal()">\n <h3 class="modal-title">{{ \'APPLICATION_TAGS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <!-- START TRANSPORT -->\n <div class="form-group">\n <form name="form" novalidate>\n <!-- START TAGS -->\n <div class="form-group">\n <ui-select multiple data-ng-model="item.tags" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_TAGS\' | translate}}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter: $select.search">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END TAGS -->\n </form>\n </div>\n <!-- END TRANSPORT -->\n</div>\n<div class="modal-footer">\n <button type="button" class="btn" data-ng-class="button.class" data-ng-click="button.click()"data-ng-repeat="button in modal.buttons">{{button.text | translate}}</button>\n <!-- <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button> -->\n</div>\n'),a.put("app/channels/fax/queue/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_QUEUE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" data-ng-pattern="settings.patternName" required />\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$invalid && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$invalid && form.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START STRATEGY -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.strategy.$touched || form.$submitted) && form.strategy.$invalid}">\n <label class="control-label">{{\'APPLICATION_STRATEGY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.strategy" name="strategy" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | uppercase}}</ui-select-match>\n <ui-select-choices repeat="strategy in strategies | filter: $select.search">\n <div ng-bind-html="strategy | uppercase | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.strategy.$touched || form.$submitted) && form.strategy.$invalid && form.strategy.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END STRATEGY -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.timeout.$touched || form.$submitted) && form.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="Timeout" class="form-control" data-ng-model="item.timeout" required min="1"/>\n <span data-ng-show="(form.timeout.$touched || form.$submitted) && form.timeout.$invalid && form.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START AGENTS-->\n <div class="form-body" data-ng-init="getTeams()">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="item.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="item.penalty=item.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!item.penalty" data-ng-click="item.penalty=item.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-team">\n </div>\n </div>\n </div>\n <!-- END AGENTS-->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/fax/queue/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-fax"></i>\n <a href="#">{{ \'APPLICATION_FAX\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="/channels/fax/queues/lis">{{ \'APPLICATION_QUEUES\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_QUEUES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <a class="btn green-jungle" href="#" data-ng-click="createItem()" data-ng-if="Auth.isAdmin()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_QUEUE\' | translate }}\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/fax/queue/view/view.agents.html",'<div class="row" data-ng-init="getTeams()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_AGENTS\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <!-- BEGIN FORM-->\n <form action="index.html" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="queue.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="queue.penalty=queue.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!queue.penalty" data-ng-click="queue.penalty=queue.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-team">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/fax/queue/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getQueue()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-fax"></i>\n <a href="#">{{ \'APPLICATION_FAX\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="/channels/fax/queues/list">{{ \'APPLICATION_QUEUES\' | translate }}</a>\n <i data-ng-show="queue" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="queue">\n <a href="#">{{queue.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/queue.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{queue.name}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.fax.queues.view.settings\')}">\n <a data-ng-href="/channels/fax/queues/view/{{queue.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.channels.fax.queues.view.agents\')}" data-ng-show="Auth.getCurrentUser().role === \'admin\'">\n <a data-ng-href="/channels/fax/queues/view/{{queue.id}}/agents">\n <i class="icon-people"></i>\n {{ \'APPLICATION_AGENTS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/fax/queue/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateFaxQueue()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="queue.name" data-ng-pattern="settings.patternName" required />\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid && forms.general.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START STRATEGY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.strategy.$touched || forms.general.$submitted) && forms.general.strategy.$invalid}">\n <label class="control-label">{{\'APPLICATION_STRATEGY\' | translate}}</label>\n <ui-select data-ng-model="queue.strategy" name="strategy" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | uppercase}}</ui-select-match>\n <ui-select-choices repeat="strategy in strategies | filter: $select.search">\n <div ng-bind-html="strategy | uppercase | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END STRATEGY -->\n\n <!-- START TIMEOUT -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}}</label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" min="1" data-ng-model="queue.timeout"/>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="queue.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <input data-ng-if="Auth.isAdmin()" class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/fax/realtime/view/agent/agent.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initAgents()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-tree-view ui-grid-expandable-row ui-grid-pagination ui-grid-auto-resize>\n <span us-spinner spinner-key="grid-spinner" spinner-start-active="true"></span>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/fax/realtime/view/agent/agent.modal.info.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_INTERFACE_INFO\' | translate }}</h3>\n</div>\n<div class="modal-body">\n<div data-ng-if="agent.ipaddr" class="well">\n <div>{{agent.ipaddr}}:{{agent.port}}</div>\n <div>{{agent.fullcontact}}</div>\n <div>{{agent.useragent}}</div>\n <div>{{agent.lastms}}</div>\n</div>\n<div data-ng-if="!agent.ipaddr" class="alert alert-danger" role="alert">\n {{\'MESSAGE_NO_AVAILABLE_INFO\' | translate}}\n</div>\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/channels/fax/realtime/view/agent/queue.modal.add.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_JOIN_QUEUE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <div class="form-group row">\n <label class="col-md-2 control-label" style="margin-top: 7px;">{{\'APPLICATION_QUEUE\' | translate}}:</label>\n <div class="col-md-10">\n <ui-select multiple ng-model="item.queues" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_QUEUE\' | translate}}">{{$item.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n</div>\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/fax/realtime/view/application/application.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initApplications()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-auto-resize>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/fax/realtime/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-fax"></i>\n <a href="#">{{ \'APPLICATION_FAX\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-energy"></i>\n <a href="#">{{ \'APPLICATION_REALTIME\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <div>\n <nav class="navbar navbar-default" role="navigation">\n <div class="collapse navbar-collapse">\n <ul class="nav navbar-nav">\n <li data-ng-class="{\'active\': $state.is(\'main.channels.fax.realtime.view.agents\')}">\n <a href="/channels/fax/realtime/view/agents">\n {{\'APPLICATION_AGENTS\' | translate}}\n </a>\n </li>\n <li data-ng-class="{\'active\': $state.is(\'main.channels.fax.realtime.view.applications\')}">\n <a href="/channels/fax/realtime/view/applications">\n {{\'APPLICATION_APPLICATIONS\' | translate}}\n </a>\n </li>\n <li>\n <a href="#">\n <b>|{{\'APPLICATION_SHOW_TIMERS\' | translate}} </b><input\n bs-switch\n class="form-control"\n ng-model="showTimers"\n type="checkbox"\n name="showTimers"\n switch-active="{{ timerSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ timerSwitch.onColor }}"\n switch-off-color="{{ timerSwitch.offColor }}"\n switch-animate="{{ timerSwitch.animate }}"\n switch-size="{{ timerSwitch.size }}"\n switch-label="{{ timerSwitch.label }}"\n switch-icon="{{ timerSwitch.icon }}"\n switch-radio-off="{{ timerSwitch.radioOff }}"\n switch-label-width="{{ timerSwitch.labelWidth }}"\n switch-handle-width="{{ timerSwitch.handleWidth }}"><b>|</b>\n </a>\n </li>\n </ul>\n </div>\n </nav>\n </div>\n\n <div ui-view></div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/mail/account/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-envelope"></i>\n <a href="#">{{ \'APPLICATION_MAIL\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-notebook"></i>\n <a href="#">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group">\n <a class="btn btn-default" href="#" data-ng-click="gridOptions.getPage();">\n <i class="icon-reload"></i>\n </a>\n </div>\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/channels/mail/accounts/wizard">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ACCOUNT\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), +a.put("app/channels/mail/account/view/action/list/list.html",'<div class="row" data-ng-init="initActons()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACTIONS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/channels/mail/accounts/view/{{account.id}}/actions/wizard" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ACTION\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/mail/account/view/action/view/view.html",'\n<div class="row" data-ng-init="initAction()">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-directions font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACTION\' | translate }}</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="forms.settings" ng-submit="updateItem()" novalidate>\n <!-- START APP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app.$touched || forms.settings.$submitted) && forms.settings.app.$invalid}">\n <label class="control-label">{{ \'APPLICATION_APPLICATION\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.app" name="app" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_APPLICATION\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="app.value as app in apps | filter: $select.search">\n <div ng-bind-html="app.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.app.$touched || forms.settings.$submitted) && forms.settings.app.$invalid && forms.settings.app.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APP -->\n\n <div class="app-settings" ng-slide-down="application.app === \'queue\'" lazy-render duration="1" data-ng-init="getQueues()">\n <!-- START QUEUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.queue.$touched || forms.settings.$submitted) && forms.settings.queue.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.MailQueueId" name="queue" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="queues.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_QUEUES_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/mail/queues/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.queue.$touched || forms.settings.$submitted) && forms.settings.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'agent\'" lazy-render duration="1" data-ng-init="getAgents()">\n <!-- START AGENT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.agent.$touched || forms.settings.$submitted) && forms.settings.agent.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.UserId" name="agent" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.fullname}}</ui-select-match>\n <ui-select-choices repeat="agent.id as agent in agents | filter: $select.search">\n <div ng-bind-html="agent.fullname | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="agents.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AGENTS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/staff/agents/list">{{\'APPLICATION_AGENTS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.agent.$touched || forms.settings.$submitted) && forms.settings.agent.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END AGENT -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1" data-ng-init="getMailAccounts();getTemplates()">\n <!-- START SENDMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="email" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" min="1" required/>\n <span data-ng-show="(forms.action.from.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.mail.$touched || forms.action.$submitted) && forms.action.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in mailAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEMPLATE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data9" name="template" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SENDMAIL -->\n </div>\n\n\n <div class="app-settings" ng-slide-down="application.app === \'replyMail\'" lazy-render duration="1" data-ng-init="getMailAccounts();getTemplates()">\n <!-- START REPLYMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.type.$touched || forms.action.$submitted) && forms.action.type.$invalid}">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data1" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.key | translate }}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.key | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.type.$touched || forms.action.$submitted) && forms.action.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.mail.$touched || forms.action.$submitted) && forms.action.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in mailAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEMPLATE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data9" name="template" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END REPLYMAIL -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1" data-ng-init="getSmsAccounts()">\n <!-- START SENDSms -->\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.to.$touched || forms.settings.$submitted) && forms.settings.to.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" ng-pattern="/^[\\+]?[0-9]+$/" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" required/>\n <span data-ng-show="(forms.settings.to.$touched || forms.settings.$submitted) && forms.settings.to.$invalid && forms.settings.to.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in smsAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.text.$touched || forms.text.$submitted) && forms.settings.text.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <textarea id="text" class="form-control maxlength-handler" maxlength="160" name="text" data-ng-model="application.data6" required></textarea>\n <span data-ng-show="(forms.settings.text.$touched || forms.settings.$submitted) && forms.settings.text.$invalid && forms.settings.text.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <!-- END SENDSms -->\n </div>\n\n <!-- START INTERVAL_TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.intType.$touched || forms.settings.$submitted) && forms.settings.intType.$invalid}">\n <label class="control-label">{{ \'APPLICATION_INTERVAL_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.intType" theme="bootstrap" name="intType" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="intType.value as intType in $application.intTypes | filter: $select.search">\n {{ intType.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.intType.$touched || forms.settings.$submitted) && forms.settings.intType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVAL_TYPE -->\n\n <div class="app-settings" ng-slide-down="application.intType === \'custom\'" lazy-render duration="1">\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="application.alwaysTime">\n <uib-timepicker name="t_from" data-ng-model="application.t_from" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker>\n </fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="application.alwaysTime"><uib-timepicker name="t_to" data-ng-model="application.t_to" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker></fieldset>\n <!-- <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="application.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label> -->\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- START ALWAYS -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALWAYS\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="application.alwaysTime"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </label>\n </div>\n </div>\n <!-- END ALWAYS -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.md_from" theme="bootstrap" name="md_from">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_to && application.md_to!==\'always\' && monthDay>application.md_to && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.md_to" theme="bootstrap" name="md_to">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_from && application.md_from!==\'always\' && monthDay<application.md_from && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.intType === \'list\'" lazy-render duration="1" data-ng-init="getIntervals()">\n\n <!-- START INTERVALS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.IntervalId.$touched || forms.settings.$submitted) && forms.settings.IntervalId.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVALS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.IntervalId" theme="bootstrap" name="IntervalId" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="interval.id as interval in intervals | filter: $select.search">\n {{ interval.name}}\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="intervals.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_INTERVAL_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/intervals/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.IntervalId.$touched || forms.settings.$submitted) && forms.settings.IntervalId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVALS -->\n\n </div>\n <button class="btn green-haze" type="submit">{{\'APPLICATION_UPDATE\' | translate}}</button>\n </form>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/mail/account/view/action/wizard/wizard.html",'\n<div class="row" data-ng-init="initWizard()">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-directions font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACTION\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_APPLICATION\' | translate}}" canexit="formValidation(forms.action.$valid)">\n\n <form name="forms.action" novalidate>\n <!-- START APP -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.action.$submitted && forms.action.app.$invalid}">\n <label class="control-label">{{ \'APPLICATION_APPLICATION\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.app" name="app" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_APPLICATION\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="app.value as app in apps | filter: $select.search">\n <div ng-bind-html="app.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.action.$submitted && forms.action.app.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APP -->\n\n <div class="app-settings" ng-slide-down="application.app === \'agent\'" lazy-render duration="1" data-ng-init="getAgents()">\n <!-- START AGENT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.agent.$touched || forms.action.$submitted) && forms.action.agent.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.UserId" name="agent" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.fullname}}</ui-select-match>\n <ui-select-choices repeat="agent.id as agent in agents | filter: $select.search">\n <div ng-bind-html="agent.fullname | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="agents.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AGENTS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/staff/agents/list">{{\'APPLICATION_AGENTS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.agent.$touched || forms.action.$submitted) && forms.action.agent.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END AGENT -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'queue\'" lazy-render duration="1" data-ng-init="getQueues()">\n <!-- START QUEUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.queue.$touched || forms.action.$submitted) && forms.action.queue.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.MailQueueId" name="queue" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="queues.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_QUEUES_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/mail/queues/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.queue.$touched || forms.action.$submitted) && forms.action.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1" data-ng-init="getMailAccounts();getTemplates()">\n <!-- START SENDMAIL -->\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="email" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" min="1" required/>\n <span data-ng-show="(forms.action.from.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.mail.$touched || forms.action.$submitted) && forms.action.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in mailAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEMPLATE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data9" name="template" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SENDMAIL -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'replyMail\'" lazy-render duration="1" data-ng-init="getMailAccounts();getTemplates()">\n <!-- START REPLYMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.type.$touched || forms.action.$submitted) && forms.action.type.$invalid}">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data1" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.key | translate }}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.key | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.type.$touched || forms.action.$submitted) && forms.action.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.mail.$touched || forms.action.$submitted) && forms.action.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in mailAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEMPLATE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data9" name="template" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END REPLYMAIL -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1" data-ng-init="getSmsAccounts()">\n <!-- START SENDSms -->\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.to.$touched || forms.action.$submitted) && forms.action.to.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" ng-pattern="/^[\\+]?[0-9]+$/" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" required/>\n <span data-ng-show="(forms.action.to.$touched || forms.action.$submitted) && forms.action.to.$invalid && forms.action.to.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in smsAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.text.$touched || forms.action.$submitted) && forms.action.text.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <textarea id="text" class="form-control maxlength-handler" maxlength="160" name="text" data-ng-model="application.data6" required></textarea>\n <span data-ng-show="(forms.action.text.$touched || forms.action.$submitted) && forms.action.text.$invalid && forms.action.text.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <!-- END SENDSms -->\n </div>\n\n <!-- START INTERVAL_TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.intType.$touched || forms.action.$submitted) && forms.action.intType.$invalid}">\n <label class="control-label">{{ \'APPLICATION_INTERVAL_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.intType" theme="bootstrap" name="intType" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="intType.value as intType in $application.intTypes | filter: $select.search">\n {{ intType.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.intType.$touched || forms.action.$submitted) && forms.action.intType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVAL_TYPE -->\n\n <div class="app-settings" ng-slide-down="application.intType === \'custom\'" lazy-render duration="1">\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="application.alwaysTime">\n <uib-timepicker name="t_from" data-ng-model="application.t_from" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker>\n </fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="application.alwaysTime"><uib-timepicker name="t_to" data-ng-model="application.t_to" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker></fieldset>\n <!-- <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="application.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label> -->\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- START ALWAYS -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALWAYS\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="application.alwaysTime"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n <!-- <input type="checkbox" data-ng-model="application.alwaysTime"> -->\n </label>\n </div>\n </div>\n <!-- END ALWAYS -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.md_from" theme="bootstrap" name="md_from">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_to && application.md_to!==\'always\' && monthDay>application.md_to && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.md_to" theme="bootstrap" name="md_to">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_from && application.md_from!==\'always\' && monthDay<application.md_from && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.intType === \'list\'" lazy-render duration="1" data-ng-init="getIntervals()">\n\n <!-- START INTERVALS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.IntervalId.$touched || forms.action.$submitted) && forms.action.IntervalId.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVALS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.IntervalId" theme="bootstrap" name="IntervalId" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="interval.id as interval in intervals | filter: $select.search">\n {{ interval.name}}\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="intervals.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_INTERVAL_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/intervals/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.IntervalId.$touched || forms.action.$submitted) && forms.action.IntervalId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVALS -->\n\n </div>\n\n <input class="btn green-haze" type="submit" data-ng-click="next()" value="{{\'APPLICATION_CONTINUE\' | translate}}"/>\n\n </form>\n </wz-step>\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input class="btn green-haze" type="submit" data-ng-click="next()" value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), +a.put("app/channels/mail/account/view/disposition/modal/add.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_DISPOSITIONS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.form.$touched || form.$submitted) && form.form.$invalid}">\n <div class="">\n <!-- <input type="text" name="form" placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}" class="form-control" data-ng-model="name" data-ng-pattern="/^[a-zA-Z0-9]*$/" required/> -->\n <input type="text" name="form" placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}" class="form-control" data-ng-model="name" required/>\n <span data-ng-show="form.form.$touched && form.form.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <!-- <span data-ng-show="form.form.$touched && form.form.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_PATTERN\' | translate}}.\n </span> -->\n </div>\n <!-- <div class="help-block">\n {{\'MESSAGE_ALLOWED_NUMBERS_AND_LETTERS\' | translate}}\n </div> -->\n </div>\n <!-- END NAME -->\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()" data-ng-show="form.$valid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/mail/account/view/disposition/view/view.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_DISPOSITIONS\' | translate}}</span>\n </div>\n <div class="actions actions-md">\n <a href="#" class="btn btn-icon-only green" data-ng-click="addDisposition();">\n <i class="fa fa-plus"></i>\n </a>\n </div>\n </div>\n <div class="portlet-body" data-ng-init="initView()">\n <div class="tab-content">\n <div class="row" data-ng-hide="dispositions.length">\n <div class="col-md-12">\n <div class="note note-info">\n <h4 class="block">Info! {{\'MESSAGE_NO_DISPOSITIONS_AVAILABLE\' | translate}}</h4>\n </div>\n </div>\n </div>\n\n <!-- GENERAL TAB -->\n <div class="row" data-ng-repeat="disposition in dispositions">\n <div class="col-md-12 form-group">\n <div class="input-group">\n <div>\n <input class="form-control" type="text" placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}" data-ng-model="disposition.name">\n </div>\n <span class="input-group-btn">\n <button class="btn btn-success" type="button" data-ng-click="updateDisposition(disposition.id, disposition.name);"><i class="fa fa-cloud-upload fa-fw"></i> {{\'APPLICATION_UPDATE\' | translate}}</button>\n <button class="btn btn-danger" type="button" data-ng-click="deleteDisposition(disposition.id);"><i class="fa fa-times fa-fw"></i> {{\'APPLICATION_DELETE\' | translate}}</button>\n </span>\n </div>\n </div>\n </div>\n <!-- END GENERAL TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/mail/account/view/hooks/view/view.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_HOOKS\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_ACCEPT\' | translate}}</a>\n </li>\n <li >\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_REJECT\' | translate}}</a>\n </li>\n <li >\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{\'APPLICATION_CLOSE\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- ACCEPT TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.accept" data-ng-submit="forms.accept.$valid && updateItemMailAccount()" novalidate>\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.accept.method.$touched || forms.accept.$submitted) && forms.accept.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.acceptMethod" name="method" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.accept.method.$touched || forms.accept.$submitted) && forms.accept.method.$invalid && forms.accept.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.accept.url.$touched || forms.accept.$submitted) && forms.accept.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.acceptUrl" ng-required="account.acceptMethod"/>\n <span data-ng-show="(forms.accept.url.$touched || forms.accept.$submitted) && forms.accept.url.$invalid && forms.accept.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <div class="row" ng-repeat = "action in account.actions">\n <div ng-switch="action.action">\n <div ng-switch-when="pause">\n <div class="form-group col-md-4">\n <label class="control-label">{{\'APPLICATION_PAUSE\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-change="resetActionData(action)"\n data-ng-model="action.enabled"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <div ng-if="action.enabled" class="form-group col-md-8">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}</label>\n <ui-select name="action" data-ng-model="action.type" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_TYPE\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat=" pause.name as pause in pauses | filter: $select.search">\n <div ng-bind-html="pause.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ACCEPT TAB -->\n <!-- START REJECT TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.reject" data-ng-submit="forms.reject.$valid && updateItemMailAccount()" novalidate>\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.reject.method.$touched || forms.reject.$submitted) && forms.reject.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.rejectMethod" name="method" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.reject.method.$touched || forms.reject.$submitted) && forms.reject.method.$invalid && forms.reject.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.reject.url.$touched || forms.reject.$submitted) && forms.reject.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.rejectUrl" ng-required="account.rejectMethod"/>\n <span data-ng-show="(forms.reject.url.$touched || forms.reject.$submitted) && forms.reject.url.$invalid && forms.reject.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END REJECT TAB -->\n <!-- START CLOSE TAB -->\n <div class="tab-pane" id="tab_1_3">\n <form name="forms.close" data-ng-submit="forms.close.$valid && updateItemMailAccount()" novalidate>\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.close.method.$touched || forms.close.$submitted) && forms.close.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.closeMethod" name="method" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.close.method.$touched || forms.close.$submitted) && forms.close.method.$invalid && forms.close.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.close.url.$touched || forms.close.$submitted) && forms.close.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.closeUrl" ng-required="account.closeMethod"/>\n <span data-ng-show="(forms.close.url.$touched || forms.close.$submitted) && forms.close.url.$invalid && forms.close.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END CLOSE TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/mail/account/view/other/view/view.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_OTHER\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERALS\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_SIGNATURE\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body" data-ng-init="initView()">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="mail-spinner-grid" spinner-start-active="false"></span>\n <!-- END UI-GRID SPINNER -->\n\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.info" data-ng-submit="forms.info.$valid && updateItemMailAccount()" novalidate>\n <!-- START WHITE LABEL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.whiteLabel.$touched || forms.info.$submitted) && forms.info.whiteLabel.$invalid}">\n <label class="control-label">{{\'APPLICATION_WHITE_LABEL\' | translate}}</label>\n <textarea type="text" name="whiteLabel" placeholder="{{\'APPLICATION_WHITE_LABEL\' | translate}}" class="form-control" data-ng-model="account.whiteLabel" data-ng-disabled="!license.custom"/></textarea>\n <span data-ng-show="(forms.info.whiteLabel.$touched || forms.info.$submitted) && forms.info.whiteLabel.$invalid && forms.info.whiteLabel.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END WHITE LABEL -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}" data-ng-disabled="!license.custom"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n\n <!-- GENERAL TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.signature" data-ng-submit="updateItemMailAccount()" novalidate>\n <!-- START SIGNATURE -->\n <div class="form-group">\n <div ckeditor="options" ng-model="account.signature"></div>\n </div>\n <!-- END WHITE LABEL -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/mail/account/view/setting/view/view.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERALS\' | translate}}</a>\n </li>\n <li data-ng-if="account.MailServerIn">\n <a href="#" data-target="#tab_1_2" data-toggle="tab">IMAP</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_3" data-toggle="tab">SMTP</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body" data-ng-init="initView()">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="mail-spinner-grid" spinner-start-active="false"></span>\n <!-- END UI-GRID SPINNER -->\n\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.info" data-ng-submit="forms.info.$valid && updateItemMailAccount()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.name" required/>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid && forms.info.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.address.$touched || forms.info.$submitted) && forms.info.address.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL_ADDRESS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="address" placeholder="{{\'APPLICATION_ADDRESS\' | translate}}" class="form-control" data-ng-model="account.address" required/>\n <span data-ng-show="(forms.info.address.$touched || forms.info.$submitted) && forms.info.address.$invalid && forms.info.address.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ADDRESS -->\n\n <!-- START LIST -->\n <div class="form-group" data-ng-if="license.cm">\n <label class="control-label">{{\'APPLICATION_LIST\' | translate}}</label>\n <div class="input-group">\n\n <ui-select data-ng-model="account.ListId" name="list" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_LIST\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="list.id as list in lists | filter: $select.search">\n <div ng-bind-html="list.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n\n <span class="input-group-btn">\n <button type="button" data-ng-click="account.ListId = null" class="btn btn-default">\n <span class="glyphicon glyphicon-trash"></span>\n </button>\n </span>\n\n </div>\n </div>\n <!-- END LIST -->\n\n <!-- START TEMPLATE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_TEMPLATE\' | translate}}</label>\n <div class="input-group">\n\n <ui-select data-ng-model="account.TemplateId" name="template" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_TEMPLATE\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n\n <span class="input-group-btn">\n <button type="button" data-ng-click="account.TemplateId = null" class="btn btn-default">\n <span class="glyphicon glyphicon-trash"></span>\n </button>\n </span>\n\n </div>\n </div>\n <!-- END TEMPLATE -->\n\n <!-- START FIDELITY -->\n <!-- <div class="form-group" data-ng-if="account.MailServerIn">\n <label class="control-label">{{\'APPLICATION_FIDELITY\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-model="account.fidelity"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div> -->\n <!-- END FIDELITY -->\n\n <!-- START TIMEOUT -->\n <!-- <div class="form-group" data-ng-if="account.fidelity" data-ng-class="{\'has-error\': (forms.info.timeout.$touched || forms.info.$submitted) && forms.info.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="0" name="timeout" placeholder="{{\'APPLICATION_PORT\' | translate}}" class="form-control" data-ng-model="account.timeout" required/>\n <span data-ng-show="(forms.info.timeout.$touched || forms.info.$submitted) && forms.info.timeout.$invalid && forms.info.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.timeout.$touched || forms.info.$submitted) && forms.info.timeout.$invalid && forms.info.timeout.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div> -->\n <!-- END TIMEOUT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="account.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START SERVICE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_SERVICE\' | translate}}</label><br>\n <input\n bs-switch\n data-ng-model="account.service"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <!-- END SERVICE -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n\n <!-- IMAP TAB -->\n <div class="tab-pane" id="tab_1_2" data-ng-if="account.MailServerIn">\n <div class="note note-danger" data-ng-show="account.MailServerIn.state === \'DISCONNECTED\' || account.MailServerIn.state === \'ERROR\'">\n <p> ERROR </p>\n <json-formatter open="1" json="account.MailServerIn.source"></json-formatter>\n </div>\n\n <div class="note note-success" data-ng-show="account.MailServerIn.state === \'CONNECTED\'">\n <p> CONNECTED </p>\n </div>\n\n <div class="note note-info" data-ng-show="account.MailServerIn.state === \'CONNECTING\'">\n <p> TRYING... </p>\n </div>\n\n <form name="forms.formIn" data-ng-submit="forms.formIn.$valid && updateItemMailServerIn()" novalidate>\n <!-- START HOST -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formIn.host.$touched || forms.formIn.$submitted) && forms.formIn.host.$invalid}">\n <label class="control-label">{{\'APPLICATION_HOST\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="host" placeholder="{{\'APPLICATION_HOST\' | translate}}" class="form-control" data-ng-model="account.MailServerIn.host" required/>\n <span data-ng-show="(forms.formIn.host.$touched || forms.formIn.$submitted) && forms.formIn.host.$invalid && forms.formIn.host.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END HOST -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formIn.username.$touched || forms.formIn.$submitted) && forms.formIn.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="account.MailServerIn.username" required/>\n <span data-ng-show="(forms.formIn.username.$touched || forms.formIn.$submitted) && forms.formIn.username.$invalid && forms.formIn.username.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formIn.password.$touched || forms.formIn.$submitted) && forms.formIn.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="account.MailServerIn.password" required/>\n <span data-ng-show="(forms.formIn.password.$touched || forms.formIn.$submitted) && forms.formIn.password.$invalid && forms.formIn.password.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START PORT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formIn.port.$touched || forms.formIn.$submitted) && forms.formIn.port.$invalid}">\n <label class="control-label">{{\'APPLICATION_PORT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="port" placeholder="{{\'APPLICATION_PORT\' | translate}}" class="form-control" data-ng-model="account.MailServerIn.port" required/>\n <span data-ng-show="(forms.formIn.port.$touched || forms.formIn.$submitted) && forms.formIn.port.$invalid && forms.formIn.port.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formIn.port.$touched || forms.formIn.$submitted) && forms.formIn.port.$invalid && forms.formIn.port.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PORT -->\n\n <!-- START MAILBOX -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_MAILBOX\' | translate}}</label>\n <input type="text" name="mailbox" placeholder="{{\'APPLICATION_MAILBOX\' | translate}}" class="form-control" data-ng-model="account.MailServerIn.mailbox"/>\n </div>\n <!-- END MAILBOX -->\n\n <!-- START SEARCH FILTER -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_SEARCH_FILTER\' | translate}}</label>\n <ui-select data-ng-model="account.MailServerIn.filter" name="filter" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="filter in [\'UNSEEN\'] | filter: $select.search">\n <div ng-bind-html="filter | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- START SEARCH FILTER -->\n\n <!-- START connTimeout -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.in.connTimeout.$touched || forms.in.$submitted) && forms.in.connTimeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONNECTION_TIMEOUT\' | translate}} [sec]<span class="required" aria-required="true">*</span></label>\n <input type="number" name="connTimeout" placeholder="{{\'APPLICATION_CONNECTION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="account.MailServerIn.connTimeout" required/>\n <span data-ng-show="(forms.in.connTimeout.$touched || forms.in.$submitted) && forms.in.connTimeout.$invalid && forms.in.connTimeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.in.connTimeout.$touched || forms.in.$submitted) && forms.in.connTimeout.$invalid && forms.in.connTimeout.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END connTimeout -->\n\n <!-- START authTimeout -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.in.authTimeout.$touched || forms.in.$submitted) && forms.in.authTimeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_AUTH_TIMEOUT\' | translate}} [sec]<span class="required" aria-required="true">*</span></label>\n <input type="number" name="authTimeout" placeholder="{{\'APPLICATION_AUTH_TIMEOUT\' | translate}}" class="form-control" data-ng-model="account.MailServerIn.authTimeout" required/>\n <span data-ng-show="(forms.in.authTimeout.$touched || forms.in.$submitted) && forms.in.authTimeout.$invalid && forms.in.authTimeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.in.authTimeout.$touched || forms.in.$submitted) && forms.in.authTimeout.$invalid && forms.in.authTimeout.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END authTimeout -->\n\n <!-- START DELETE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DELETE_MAIL_FROM_SERVER\' | translate}}</label><br>\n <input\n bs-switch\n data-ng-model="account.MailServerIn.delete"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <!-- END DELETE -->\n\n <!-- START SSL -->\n <div class="form-group">\n <label class="control-label">SSL</label><br>\n <input\n bs-switch\n data-ng-model="account.MailServerIn.ssl"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <!-- END SSL -->\n\n <!-- START Keepalive -->\n <div class="form-group">\n <label class="control-label">Keepalive</label><br>\n <input\n bs-switch\n data-ng-model="account.MailServerIn.keepalive"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <!-- END Keepalive -->\n\n <!-- START POLLING -->\n <!-- <div class="form-group">\n <label class="control-label">{{\'APPLICATION_POLLING\' | translate}}</label><br>\n <input\n bs-switch\n data-ng-model="account.MailServerIn.polling"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div> -->\n <!-- END POLLING -->\n\n <!-- START POLLING_TIMEOUT -->\n <!-- <div data-ng-if="account.MailServerIn.polling" class="form-group" data-ng-class="{\'has-error\': (forms.formOut.pollingTimeout.$touched || forms.formOut.$submitted) && forms.formOut.pollingTimeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_POLLING_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="60" name="pollingTimeout" placeholder="{{\'APPLICATION_POLLING_TIMEOUT\' | translate}}" class="form-control" data-ng-model="account.MailServerIn.pollingTimeout" required/>\n <span data-ng-show="(forms.formOut.form.$touched || forms.formOut.$submitted) && forms.formOut.pollingTimeout.$invalid && forms.formOut.pollingTimeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formOut.form.$touched || forms.formOut.$submitted) && forms.formOut.pollingTimeout.$invalid && forms.formOut.pollingTimeout.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div> -->\n <!-- END POLLING_TIMEOUT -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END IMAP TAB -->\n\n <!-- SMTP TAB -->\n <div class="tab-pane" id="tab_1_3">\n\n <div class="note note-danger" data-ng-show="account.MailServerOut.state === \'DISCONNECTED\' || account.MailServerOut.state === \'ERROR\'">\n <p> ERROR </p>\n <json-formatter open="1" json="account.MailServerOut.source"></json-formatter>\n </div>\n\n <div class="note note-success" data-ng-show="account.MailServerOut.state === \'CONNECTED\'">\n <p> CONNECTED </p>\n </div>\n\n <div class="note note-info" data-ng-show="account.MailServerOut.state === \'CONNECTING\'">\n <p> TRYING... </p>\n </div>\n\n <form name="forms.formOut" data-ng-submit="forms.formOut.$valid && updateItemMailServerOut()" novalidate>\n\n <!-- START HOST -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formOut.host.$touched || forms.formOut.$submitted) && forms.formOut.host.$invalid}">\n <label class="control-label">{{\'APPLICATION_HOST\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="host" placeholder="{{\'APPLICATION_HOST\' | translate}}" class="form-control" data-ng-model="account.MailServerOut.host" required/>\n <span data-ng-show="(forms.formOut.host.$touched || forms.formOut.$submitted) && forms.formOut.host.$invalid && forms.formOut.host.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END HOST -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formOut.username.$touched || forms.formOut.$submitted) && forms.formOut.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="account.MailServerOut.username" required/>\n <span data-ng-show="(forms.formOut.username.$touched || forms.formOut.$submitted) && forms.formOut.username.$invalid && forms.formOut.username.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formOut.password.$touched || forms.formOut.$submitted) && forms.formOut.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="account.MailServerOut.password" required/>\n <span data-ng-show="(forms.formOut.password.$touched || forms.formOut.$submitted) && forms.formOut.password.$invalid && forms.formOut.password.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START PORT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formOut.port.$touched || forms.formOut.$submitted) && forms.formOut.port.$invalid}">\n <label class="control-label">{{\'APPLICATION_PORT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="port" placeholder="{{\'APPLICATION_PORT\' | translate}}" class="form-control" data-ng-model="account.MailServerOut.port" required/>\n <span data-ng-show="(forms.formOut.form.$touched || forms.formOut.$submitted) && forms.formOut.port.$invalid && forms.formOut.port.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formOut.form.$touched || forms.formOut.$submitted) && forms.formOut.port.$invalid && forms.formOut.port.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PORT -->\n\n <!-- START SSL -->\n <div class="form-group">\n <label class="control-label">SSL</label><br>\n <input\n bs-switch\n data-ng-model="account.MailServerOut.ssl"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <!-- END SSL -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n <input class="btn blue-madison" type="button" value="Test" data-ng-click="test()"/>\n </form>\n </div>\n <!-- END SMTP TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'), +a.put("app/channels/mail/account/view/view.html",'<!-- BEGIN PAGE HEADER-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-envelope"></i>\n <a href="#">{{ \'APPLICATION_MAIL\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-notebook"></i>\n <a href="/channels/mail/accounts/list">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a>\n <i class="fa fa-angle-right" data-ng-show="account"></i>\n </li>\n <li data-ng-show="account">\n <a href="#">{{ account.description || account.name }}</a>\n </li>\n </ul>\n </div>\n\n<!-- END PAGE HEADER-->\n\n<!-- BEGIN PAGE CONTENT-->\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar" data-ng-init="initView()">\n <!-- PORTLET main.channels -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img ng-src="assets/images/media/account.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{ account.description || account.name }}\n </div>\n <div class="profile-usertitle-job">\n {{account.email}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li ng-class="{active: $state.is(\'main.channels.mail.accounts.view.settings\')}">\n <a href="/channels/mail/accounts/view/{{account.id}}/settings">\n <i class="icon-settings"></i>\n {{\'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.is(\'main.channels.mail.accounts.view.hooks\')}" data-ng-if="account.MailServerIn">\n <a href="/channels/mail/accounts/view/{{account.id}}/hooks">\n <i class="fa fa-code"></i>\n {{\'APPLICATION_HOOKS\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.is(\'main.channels.mail.accounts.view.dispositions\')}" data-ng-if="account.MailServerIn">\n <a href="/channels/mail/accounts/view/{{account.id}}/dispositions">\n <i class="icon-target"></i>\n {{\'APPLICATION_DISPOSITIONS\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.includes(\'main.channels.mail.accounts.view.actions\')}" data-ng-if="account.MailServerIn">\n <a href="/channels/mail/accounts/view/{{account.id}}/actions/list">\n <i class="icon-directions"></i>\n {{\'APPLICATION_ACTIONS\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.includes(\'main.channels.mail.accounts.view.other\')}" data-ng-if="account.MailServerIn">\n <a href="/channels/mail/accounts/view/{{account.id}}/other">\n <i class="icon-equalizer"></i>\n {{\'APPLICATION_OTHER\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <div ui-view class="profile-content"></div>\n <!-- END PROFILE CONTENT -->\n </div>\n<!-- END PAGE CONTENT-->\n</div>\n'),a.put("app/channels/mail/account/wizard/wizard.html",'\n<div class="row" data-ng-init="initWizard()">\n <div class="col-md-12">\n <!-- BEGIN PAGE HEADER-->\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-envelope"></i>\n <a href="#">{{ \'APPLICATION_MAIL\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-notebook"></i>\n <a href="/channels/mail/accounts/list">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n <!-- END PAGE HEADER-->\n\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACCOUNT\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_ACCOUNT_INFO\' | translate}}" canexit="formValidation(forms.info.$valid)">\n <form name="forms.info" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid && forms.info.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.address.$touched || forms.info.$submitted) && forms.info.address.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL_ADDRESS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="address" placeholder="{{\'APPLICATION_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.address" required/>\n <span data-ng-show="(forms.info.address.$touched || forms.info.$submitted) && forms.info.address.$invalid && forms.info.address.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ADDRESS -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" data-ng-click="goNext()"/>\n </form>\n </wz-step>\n\n <wz-step title="IMAP" canexit="formValidation(forms.in.$valid)">\n <form name="forms.in" novalidate>\n <!-- START HOST -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.in.host.$touched || forms.in.$submitted) && forms.in.host.$invalid}">\n <label class="control-label">{{\'APPLICATION_INCOMING_MAIL_SERVER\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="host" placeholder="{{\'APPLICATION_HOST\' | translate}}" class="form-control" data-ng-model="item.MailServerIn.host" required/>\n <span data-ng-show="(forms.in.host.$touched || forms.in.$submitted) && forms.in.host.$invalid && forms.in.host.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END HOST -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.in.username.$touched || forms.in.$submitted) && forms.in.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="item.MailServerIn.username" name="username" required/>\n <span data-ng-show="(forms.in.username.$touched || forms.in.$submitted) && forms.in.username.$invalid && forms.in.username.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.in.password.$touched || forms.in.$submitted) && forms.in.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.MailServerIn.password" required/>\n <span data-ng-show="(forms.in.password.$touched || forms.in.$submitted) && forms.in.password.$invalid && forms.in.password.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START PORT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.in.port.$touched || forms.in.$submitted) && forms.in.port.$invalid}">\n <label class="control-label">{{\'APPLICATION_PORT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="port" placeholder="{{\'APPLICATION_PORT\' | translate}}" class="form-control" data-ng-model="item.MailServerIn.port" required/>\n <span data-ng-show="(forms.in.port.$touched || forms.in.$submitted) && forms.in.port.$invalid && forms.in.port.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.in.port.$touched || forms.in.$submitted) && forms.in.port.$invalid && forms.in.port.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PORT -->\n\n <!-- START MAILBOX -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_MAILBOX\' | translate}}</label>\n <input type="text" name="mailbox" placeholder="{{\'APPLICATION_MAILBOX\' | translate}}" class="form-control" data-ng-model="item.MailServerIn.mailbox"/>\n </div>\n <!-- END MAILBOX -->\n\n <!-- START SEARCH FILTER -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_SEARCH_FILTER\' | translate}}</label>\n <ui-select data-ng-model="item.MailServerIn.filter" name="filter" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="filter in [\'UNSEEN\'] | filter: $select.search">\n <div data-ng-bind="filter | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- START SEARCH FILTER -->\n\n <!-- START connTimeout -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.in.connTimeout.$touched || forms.in.$submitted) && forms.in.connTimeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONNECTION_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="connTimeout" placeholder="{{\'APPLICATION_CONNECTION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="item.MailServerIn.connTimeout" required/>\n <span data-ng-show="(forms.in.connTimeout.$touched || forms.in.$submitted) && forms.in.connTimeout.$invalid && forms.in.connTimeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.in.connTimeout.$touched || forms.in.$submitted) && forms.in.connTimeout.$invalid && forms.in.connTimeout.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END connTimeout -->\n\n <!-- START authTimeout -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.in.authTimeout.$touched || forms.in.$submitted) && forms.in.authTimeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_AUTH_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="authTimeout" placeholder="{{\'APPLICATION_AUTH_TIMEOUT\' | translate}}" class="form-control" data-ng-model="item.MailServerIn.authTimeout" required/>\n <span data-ng-show="(forms.in.authTimeout.$touched || forms.in.$submitted) && forms.in.authTimeout.$invalid && forms.in.authTimeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.in.authTimeout.$touched || forms.in.$submitted) && forms.in.authTimeout.$invalid && forms.in.authTimeout.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END authTimeout -->\n\n <!-- START DELETE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DELETE_MAIL_FROM_SERVER\' | translate}}</label><br>\n <input\n bs-switch\n data-ng-model="item.MailServerIn.delete"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <!-- END DELETE -->\n\n <!-- START SSL -->\n <div class="form-group">\n <label class="control-label">SSL</label><br>\n <input\n bs-switch\n data-ng-model="item.MailServerIn.ssl"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <!-- END SSL -->\n\n <!-- START Keepalive -->\n <div class="form-group">\n <label class="control-label">Keepalive</label><br>\n <input\n bs-switch\n data-ng-model="item.MailServerIn.keepalive"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <!-- END Keepalive -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="goNext()"/>\n </form>\n </wz-step>\n\n <wz-step title="SMTP" canexit="formValidation(forms.out.$valid)">\n <form name="forms.out" novalidate>\n <!-- START HOST -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.out.host.$touched || forms.out.$submitted) && forms.out.host.$invalid}">\n <label class="control-label">{{\'APPLICATION_OUTGOING_MAIL_SERVER\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="host" placeholder="{{\'APPLICATION_HOST\' | translate}}" class="form-control" data-ng-model="item.MailServerOut.host" required/>\n <span data-ng-show="(forms.out.host.$touched || forms.out.$submitted) && forms.out.host.$invalid && forms.out.host.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END HOST -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.out.username.$touched || forms.out.$submitted) && forms.out.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="item.MailServerOut.username" required/>\n <span data-ng-show="(forms.out.username.$touched || forms.out.$submitted) && forms.out.username.$invalid && forms.out.username.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.out.password.$touched || forms.out.$submitted) && forms.out.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.MailServerOut.password" required/>\n <span data-ng-show="(forms.out.password.$touched || forms.out.$submitted) && forms.out.password.$invalid && forms.out.password.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START PORT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.out.port.$touched || forms.out.$submitted) && forms.out.port.$invalid}">\n <label class="control-label">{{\'APPLICATION_PORT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="port" placeholder="{{\'APPLICATION_PORT\' | translate}}" class="form-control" data-ng-model="item.MailServerOut.port" required/>\n <span data-ng-show="(out.$touched || forms.out.$submitted) && forms.out.port.$invalid && forms.out.port.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(out.$touched || forms.out.$submitted) && forms.out.port.$invalid && forms.out.port.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PORT -->\n\n <!-- START SSL -->\n <div class="form-group">\n <label class="control-label">SSL</label><br>\n <input\n bs-switch\n data-ng-model="item.MailServerOut.ssl"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <!-- END SSL -->\n\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="goNext()"/>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/mail/inbox/message/info.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_INFO\' | translate }}</h3>\n</div>\n<div class="modal-body" data-ng-init="initInfo()">\n <div class="form-group" ng-if="data">\n <json-formatter json="data" open="1"></json-formatter>\n </div>\n <div class="note note-warning" data-ng-hide="data">\n <h4 class="block"></h4>\n <p>\n {{ \'MESSAGE_NO_INFO_AVAILABLE\' | translate }}\n </p>\n </div>\n\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/channels/mail/inbox/message/message.directive.html",'<div class="message">\n <div class="row">\n <div class="col-md-12">\n <span class="bold">From: </span>\n <a href="" data-ng-click="openContact(message.from[0])">{{message.from[0]}} </a>\n <br>\n <span class="bold">To: </span>\n <a href="" data-ng-click="openContact(to)" data-ng-repeat="to in message.to">{{to}}<span data-ng-if="!$last">, </span></a>\n <br>\n <span data-ng-if="message.cc.length" class="bold">Cc: </span>\n <a href="" data-ng-click="openContact(cc)" data-ng-repeat="cc in message.cc">{{cc}}<span data-ng-if="!$last">, </span></a>\n <br>\n <span data-ng-if="message.bcc.length" class="bold">Bcc: </span>\n <a href="" data-ng-click="openContact(bcc)" data-ng-repeat="cc in message.bcc">{{bcc}}<span data-ng-if="!$last">, </span></a>\n </div>\n <div class="row">\n <div class="col-md-12">\n <span class="pull-right" data-ng-if="message.User">{{\'APPLICATION_SENT_BY\' | translate}}: <strong>{{message.User.fullname}}</strong></span>\n <span class="pull-right" data-ng-if="message.auto && !message.voiceSource">{{\'APPLICATION_SENT_BY\' | translate}}: <strong>System</strong></span>\n <span class="pull-right" data-ng-if="message.auto && message.voiceSource">{{\'APPLICATION_SENT_BY\' | translate}}: <strong>Cally ²</strong>\n <a ng-click="info(message.voiceSource)"><i class="icon-info font-blue"></i>\n </a>\n </span>\n </div>\n </div>\n <br>\n <span class="todo-tasklist-date">\n <span class="pull-right" data-ng-switch="message.status" data-ng-if="message.status!==\'RECEIVED\'" uib-tooltip="{{\'APPLICATION_RETRY\' | translate}}: {{message.retry}}">\n <a ng-switch-when="SENDING" href="#" class="btn default btn-xs inactive-link blue-stripe"> {{message.status | uppercase}}\n <i class="fa fa-warning"></i>\n </a>\n <a ng-switch-when="SENT" href="#" class="btn default btn-xs inactive-link green-stripe"> {{message.status | uppercase}}\n <i class="fa fa-check"></i>\n </a>\n <a ng-switch-when="FAILED" href="#" class="btn default btn-xs red-stripe" data-ng-click="retry(message.id)"> {{message.status | uppercase}}\n <i class="fa fa-times"></i>\n </a>\n </span>\n <span class="pull-right" data-ng-if="message.status===\'RECEIVED\'">\n <a href="#" class="btn default btn-xs inactive-link green-stripe"> {{message.status | uppercase}}\n <i class="fa fa-check"></i>\n </a>\n </span>\n <i class="icon-calendar" title="{{message.updatedAt | date:\'MMM d, y HH:mm:ss\'}}"></i> <span am-time-ago="message.updatedAt"></span>\n </span>\n <hr>\n <div class="body text-left message-body" data-ng-bind="message.text"></div>\n <h5 data-ng-hide="message.text" class="media-heading"><i>{{\'MESSAGE_NO_AVAILABLE_TEXT\' | translate | lowercase}}</i></h5>\n <hr data-ng-if="message.MailAttachments.length">\n <div data-ng-repeat="mailAttachment in message.MailAttachments">\n <strong>{{mailAttachment.name}}</strong>\n <span>\n ({{mailAttachment.size | prettyBytes}})\n </span>\n <a target="_self" download="{{mailAttachment.name}}" href="api/mail/attachments/{{mailAttachment.id}}">\n <i class="icon-cloud-download"></i>\n </a>\n <a ng-if="::(mailAttachment.type.indexOf(\'image\') > -1)" ng-click="openPreview(mailAttachment.id)">\n <i class="icon-picture"></i>\n </a>\n </div>\n</div>\n'),a.put("app/channels/mail/inbox/note/note.directive.html",'<div class="note">\n <div class="row">\n <div class="col-md-6">\n <a type="button" name="button" data-ng-if="::(Auth.getCurrentUser().id == message.UserId)" data-ng-click="deleteNote()">\n <i class="fa fa-trash-o" style="color: red;"></i>\n </a>\n\n <i class="icon-calendar" title="{{message.updatedAt | date:\'MMM d, y HH:mm:ss\'}}"></i> <span am-time-ago="message.updatedAt"></span>\n </div>\n <div class="col-md-6">\n <span class="pull-right" data-ng-show="message.User">{{\'APPLICATION_ADD_BY\' | translate}}: <strong>{{message.User.fullname}}</strong></span>\n </div>\n </div>\n <hr>\n <span class="body text-left" data-ng-bind-html="message.text" style="white-space: pre-wrap;"></span>\n</div>\n'),a.put("app/channels/mail/inbox/note/note.modal.html",'<div class="modal-header" data-ng-init="initModal()">\n <h3 class="modal-title">{{ \'APPLICATION_NOTES\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n <div class="form-group">\n <textarea data-ng-model="item.text" name="text" rows="10" style="resize: none; width: 100%;"></textarea>\n </div>\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/mail/inbox/room/room.directive.html",'<!-- BEGIN TODO CONTENT -->\n<div class="todo-content">\n <div class="portlet light">\n <div class="portlet-title">\n <div class="caption">\n <button data-ng-if="form.from.length && form.to.length && mailRoom.status !== \'CLOSED\' && form.html" class="btn btn-sm btn-default green-meadow" data-ng-click="sendMail()">\n <i class="icon-paper-plane" style="color: white;"></i> {{\'APPLICATION_SEND\' | translate}}\n </button>\n <span data-ng-if="mailRoom && form.from.length && form.to.length && mailRoom.status !== \'CLOSED\' && form.html"> | </span>\n <span data-ng-if="mailRoom" class="label label-default"> #{{mailRoom.id}} {{mailRoom.status}}</span>\n <span data-ng-if="mailRoom"> | </span>\n <span data-ng-if="mailRoom && mailRoom.ParentId" class="label label-warning"> Ref: <a data-ng-click="openRoom(mailRoom.ParentId)">#{{mailRoom.ParentId}}</a></span>\n <span data-ng-if="mailRoom && mailRoom.ParentId"> | </span>\n <span data-ng-if="mailRoom" class="caption-subject font-green-sharp bold uppercase dot">{{mailRoom.subject || \'No subject\'}}</span>\n </div>\n <div class="actions">\n <button class="btn btn-icon-only yellow" data-ng-if="mailRoom" data-ng-click="loadNote()" data-ng-hide="mailRoom.status == \'CLOSED\'" title="{{\'APPLICATION_NOTES\' | translate}}">\n <i class="fa fa-sticky-note"></i>\n </button>\n <span class="btn file-upload" data-ng-hide="mailRoom.status == \'CLOSED\'"><!--THIS IS A SPAN AND NOT A BUTTON BECAUSE THE LIBRARY HAS A BUG AND WILL NOT TRIGGER IN FIREFOX BROWSER -->\n <i class="fa fa-paperclip"></i> <input type="file" data-ng-if="uploader" data-ng-disabled="mailRoom.status == \'CLOSED\'" nv-file-select uploader="uploader" multiple class="file-input" title="{{\'APPLICATION_ATTACHMENTS\' | translate}}">\n </span>\n <!-- UPDATE SECTION START -->\n <button data-ng-class="mailRoom.status == \'CLOSED\' ? \'grey-cascade\' : \'btn-success\'" class="btn btn-icon-only" data-ng-disabled="mailRoom.status == \'CLOSED\' && mailRoom.disposition" data-ng-if="mailRoom" data-ng-click="closeRoom()" title="{{\'APPLICATION_STATUS\' | translate}}">\n <i data-ng-class="mailRoom.status == \'CLOSED\' ? \'icon-target\' : \'fa fa-upload\'"></i>\n </button>\n <!-- UPDATE SECTION END -->\n <button class="btn default btn-icon-only" data-ng-if="mailRoom && mailRoom.status !== \'CLOSED\'" data-ng-click="togglePanelLeft()" title="{{\'APPLICATION_RESIZE\' | translate}}">\n <i ng-class="panelRight == \'col-md-12\' ? \'icon-size-actual\' : \'icon-size-fullscreen\'"></i>\n </button>\n </div>\n </div>\n <div class="portlet-body">\n <div class="row">\n <div data-ng-if="panelLeft" data-ng-class="panelLeft">\n <div class="form">\n <!-- START TAGS -->\n <div class="form-group" data-ng-if="mailRoom.status !== \'CLOSED\'">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-tags" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <ui-select multiple data-ng-model="form.tags" theme="bootstrap" on-select="onChanged($item, $model)" on-remove="onChanged($item, $model)" data-ng-disabled="mailRoom.status == \'CLOSED\'">\n <ui-select-match placeholder="Tags...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter:$select.search" class="">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n <!-- END TAGS -->\n </div>\n\n <hr data-ng-if="mailRoom && mailRoom.status !== \'CLOSED\'">\n\n <!-- END TAGS -->\n <div id="mail-box">\n <ul class="chats">\n <li\n data-ng-switch="mailMessage.status"\n data-ng-class="{\'in\': mailMessage.status == \'RECEIVED\', \'out\': mailMessage.status == \'SENT\' || mailMessage.status == \'SENDING\' || mailMessage.status == \'FAILED\' || mailMessage.status == \'NOTE\'}"\n data-ng-repeat="mailMessage in mailRoom.MailMessages | orderBy:\'-createdAt\'">\n <div class="avatar" data-ng-class="message.UserId ? \'pretty-avatar\' : \'pretty-avatar-v\'">\n <ng-letter-avatar\n data-ng-if="mailMessage.UserId"\n height="40"\n width="40"\n fontsize="25"\n data="{{mailMessage.User.fullname}}"\n avatarcustombgcolor="#B0B0B0"\n avatarcustomborder="border:2px solid #3399CC"\n charCount="2"\n shape="round"></ng-letter-avatar>\n <ng-letter-avatar\n data-ng-if="!mailMessage.UserId"\n height="40"\n width="40"\n fontsize="25"\n data="{{mailMessage.from[0]}}"\n avatarcustombgcolor="#B0B0B0"\n avatarcustomborder="border:2px solid #EA4C61"\n charCount="1"\n shape="round"></ng-letter-avatar>\n </div>\n <mail-note message="mailMessage" ng-switch-when="NOTE"></mail-note>\n <mail-message message="mailMessage" list-id="mailRoom.MailAccount.ListId" ng-switch-default></mail-message>\n </li>\n </ul>\n </div>\n </div>\n <div data-ng-class="panelRight">\n <div class="note note-info" data-ng-if="mailRoom && mailRoom.status == \'CLOSED\'">\n <h4 class="block"><i class="icon-info"></i> {{\'MESSAGE_MAIL_ROOM_CLOSED\' | translate}}!</h4>\n <p>\n <strong>{{\'MESSAGE_MAIL_ROOM_CLOSED_DETAILS\' | translate}}.</strong>\n </p>\n <hr>\n <p>\n <i class="icon-target"></i> {{\'APPLICATION_DISPOSITION\' | translate}}: <strong>{{mailRoom.disposition}}</strong>\n </p>\n <p>\n <i class="icon-calendar"></i> {{\'APPLICATION_UPDATED_AT\' | translate}}: <strong>{{mailRoom.updatedAt | date:\'medium\'}}</strong> (<span am-time-ago="mailRoom.updatedAt"></span>)\n </p>\n </div>\n <form name="forms.compose" data-ng-submit="sendMail()" class="form-horizontal" novalidate>\n <!-- START HEAD -->\n <div class="form">\n <v-accordion class="vAccordion--default" ng-if="mailRoom.status !== \'CLOSED\'">\n <v-pane expanded="expanded">\n <v-pane-header>\n <i class="icon-people"></i> From: {{form.from[0]}}, To: {{form.to[0].email}} <span ng-if="form.to.length > 1">(+{{form.to.length - 1}})</span>\n </v-pane-header>\n <v-pane-content>\n <!-- START FROM -->\n <div class="form-group" data-ng-if="mailRoom.status !== \'CLOSED\'">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <label class="control-label">From:</label>\n </div>\n <div class="col-md-11">\n <ui-select data-ng-model="form.from[0]" data-ng-change="setList($select.selected.ListId)" theme="bootstrap" name="from" required>\n <ui-select-match placeholder="From...">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="mailAccount.address as mailAccount in mailAccounts | filter: $select.search">\n <div data-ng-bind-html="mailAccount.name | highlight: $select.search"></div>\n <small data-ng-bind-html="mailAccount.address | highlight: $select.search"></small>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n </div>\n <!-- END FROM -->\n\n <!-- MAIL TO -->\n <div class="form-group" data-ng-if="mailRoom.status !== \'CLOSED\'">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <label class="control-label">To:</label>\n </div>\n <div class="col-md-11">\n <tags-input ng-model="form.to" type="email" display-property="email">\n <auto-complete source="getContacts($query)"></auto-complete>\n </tags-input>\n </div>\n </div>\n </div>\n </div>\n <!-- END TO -->\n\n <!-- START CC -->\n <div class="form-group" data-ng-if="mailRoom.status !== \'CLOSED\'">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <label class="control-label">Cc:</label>\n </div>\n <div class="col-md-11">\n <tags-input ng-model="form.cc" type="email" display-property="email">\n <auto-complete source="getContacts($query)"></auto-complete>\n </tags-input>\n </div>\n </div>\n </div>\n </div>\n <!-- END CC -->\n\n <!-- START BCC -->\n <div class="form-group" data-ng-if="mailRoom.status !== \'CLOSED\'">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <label class="control-label">Bcc:</label>\n </div>\n <div class="col-md-11">\n <tags-input ng-model="form.bcc" type="email" display-property="email">\n <auto-complete source="getContacts($query)"></auto-complete>\n </tags-input>\n </div>\n </div>\n </div>\n </div>\n <!-- END BCC -->\n\n <!-- START SUBJECT -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.compose.subject.$invalid && forms.compose.$submitted}" data-ng-if="mailRoom.status !== \'CLOSED\'">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <label class="control-label">Subj:</label>\n </div>\n <div class="col-md-11">\n <input type="text" name="subject" class="form-control todo-taskbody-taskdesc" placeholder="Subject..." rows="8" data-ng-model="form.subject">\n <span data-ng-if="forms.compose.subject.$invalid && forms.compose.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n <!-- END SUJBECT -->\n </v-pane-content>\n </v-pane>\n </v-accordion>\n\n <!-- START ATTACH -->\n <div class="form-group" data-ng-if="uploader && (mailRoom.status !== \'CLOSED\')">\n <div class="col-md-12">\n <hr ng-if="uploader.queue.length">\n <table class="table">\n <tbody>\n <tr ng-repeat="item in uploader.queue">\n <td style="border-top:none" rowspan="{{uploader.queue.length}}" ng-if="(!$index)">\n {{\'APPLICATION_ATTACHMENTS\' | translate}}:\n </td>\n <td style="border-top:none"><strong>{{ item.file.name }}</strong></td>\n <td style="border-top:none" ng-show="uploader.isHTML5" nowrap>{{ item.file.size/1024/1024|number:2 }} MB</td>\n <td style="border-top:none" ng-show="uploader.isHTML5">\n <div class="progress" style="margin-bottom: 0;">\n <div class="progress-bar" role="progressbar" ng-style="{ \'width\': item.progress + \'%\' }"></div>\n </div>\n </td>\n <td style="border-top-style:none" class="text-center">\n <span ng-show="item.isSuccess"><i class="glyphicon glyphicon-ok"></i></span>\n <span ng-show="item.isCancel"><i class="glyphicon glyphicon-ban-circle"></i></span>\n <span ng-show="item.isError"><i class="glyphicon glyphicon-remove"></i></span>\n </td>\n <td style="border-top-style:none" nowrap>\n <button type="button" class="btn btn-danger btn-xs" data-ng-click="item.remove()">\n <span class="glyphicon glyphicon-trash"></span> {{\'APPLICATION_REMOVE\' | translate}}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n <div>\n </div>\n </div>\n </div>\n <!-- END ATTACH -->\n\n <!-- START CANNED -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.compose.subject.$invalid && forms.compose.$submitted}" data-ng-if="mailRoom.status !== \'CLOSED\'">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-magic" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <input type="text"\n data-ng-model="modelOptions.selectedAnswer"\n uib-typeahead="key for key in getAnswers($viewValue)"\n placeholder="Canned answers.."\n typeahead-loading="loadingLocations"\n typeahead-no-results="noResults"\n typeahead-on-select="onSelectAnswer($item)"\n class="form-control">\n <i ng-show="loadingLocations" class="glyphicon glyphicon-refresh"></i>\n <div ng-show="noResults">\n <i class="glyphicon glyphicon-remove"></i> No Results Found\n </div>\n <span data-ng-if="forms.compose.subject.$invalid && forms.compose.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n <!-- END CANNED -->\n\n <!-- START HTML -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.compose.text.$invalid && forms.compose.$submitted}" data-ng-if="mailRoom.status !== \'CLOSED\'">\n <div class="col-md-12">\n <div ckeditor="options" ng-model="form.html" ready="onCKReady($instance)"></div>\n <span data-ng-if="forms.compose.text.$invalid && forms.compose.$submitted" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n </div>\n </div>\n <!-- END HTML -->\n\n </div>\n </form>\n </div>\n </div>\n </div>\n</div>\n</div>\n<!-- END TODO CONTENT -->\n"), +a.put("app/channels/mail/inbox/status/status.modal.html",'<div class="modal-header">\n <button data-ng-if="modal.dismissable" type="button" data-ng-click="$dismiss()" class="close">×</button>\n <h4 data-ng-if="modal.title" data-ng-bind="modal.title | translate" class="modal-title"></h4>\n</div>\n<div class="modal-body">\n <p data-ng-if="modal.text && !closed" ng-bind="modal.text | translate"></p>\n <form name="form" novalidate data-ng-init="initDisposition()">\n <div class="form-group">\n <ui-select data-ng-model="item.disposition" name="disposition" theme="bootstrap" data-ng-disabled="!dispositions.length" required>\n <ui-select-match placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="disposition.name as disposition in dispositions | filter: $select.search">\n <div ng-bind-html="disposition.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="note note-warning" data-ng-if="dispositions.length < 1">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_DISPOSITIONS_AVAILABLE\' | translate }}\n </p>\n </div>\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/mail/inbox/view/account/list/list.html",'<!-- BEGIN Portlet PORTLET-->\n<div class="portlet light" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption">\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'NEW\'" uib-uncheckable>NEW</button>\n </div>\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'OPEN\'" uib-uncheckable>OPEN</button>\n </div>\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'PENDING\'" uib-uncheckable>PENDING</button>\n </div>\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'CLOSED\'" uib-uncheckable>CLOSED</button>\n </div>\n </div>\n <div class="actions">\n <a href="#" class="btn btn-icon-only default" data-ng-click="getPage();">\n <i class="fa fa-refresh"></i>\n </a>\n <a href="#" class="btn btn-icon-only red" data-ng-click="deleteItems();" data-ng-show="id.length && isAdmin">\n <i class="fa fa-trash"></i>\n </a>\n <a href="#" class="btn btn-icon-only btn-success" data-ng-click="disposeItems();" data-ng-show="id.length">\n <i class="fa fa-upload"></i>\n </a>\n <a href="#" class="btn btn-icon-only blue" data-ng-click="tagItems();" data-ng-show="id.length">\n <i class="fa fa-tags"></i>\n </a>\n <a href="#" class="btn btn-icon-only green" data-ng-click="openRoom(null, \'New Message\')">\n <i class="fa fa-plus"></i>\n </a>\n </div>\n </div>\n <div class="portlet-title" data-ng-show="tags.length">\n <!-- START TAGS -->\n <div class="form-group">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-tags" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <ui-select multiple data-ng-model="query.tags" theme="bootstrap" on-select="onChanged($item, $model)" on-remove="onChanged($item, $model)">\n <ui-select-match placeholder="Search by tag...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter:$select.search">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n <!-- END TAGS -->\n </div>\n <div class="portlet-body">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="false"></span>\n <!-- END UI-GRID SPINNER -->\n\n <!-- START TABLE -->\n <div ui-grid="gridOptions" class="ui-grid" ui-grid-auto-resize ui-grid-pagination ui-grid-selection>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END Portlet PORTLET-->\n'),a.put("app/channels/mail/inbox/view/view.agents.modal.html",'<div class="modal-header" data-ng-init="initModal()">\n <h3 class="modal-title">{{ \'APPLICATION_AGENTS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <!-- START TRANSPORT -->\n <div class="form-group">\n <form name="form" novalidate>\n <!-- START TRANSPORT -->\n <div class="form-group">\n <ui-select multiple name="agents" data-ng-model="item.agents" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_AGENTS\' | translate}}">{{$item.fullname}}</ui-select-match>\n <ui-select-choices repeat="agent.id as agent in agents | filter: $select.search">\n {{agent.fullname}}\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END TRANSPORT -->\n </form>\n </div>\n <!-- END TRANSPORT -->\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/mail/inbox/view/view.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-envelope"></i>\n <a href="#">{{ \'APPLICATION_MAIL\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-note"></i>\n <a href="#">{{ \'APPLICATION_INBOX\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row inbox">\n <div class="col-md-3">\n <ul class="inbox-nav margin-bottom-10">\n <li data-ng-class="{active: $stateParams.id == mailAccount.id}" data-ng-repeat="mailAccount in mailAccounts">\n <a href="/channels/mail/inbox/view/account/{{mailAccount.id}}/list" class="btn">\n <i class="icon-notebook"></i> {{mailAccount.name}}\n </a>\n <b></b>\n </li>\n </ul>\n </div>\n\n <div class="col-md-9" data-ng-init="initView()">\n <!-- BEGIN PROFILE CONTENT -->\n <div class="room-content">\n <div ui-view>\n <div class="note note-info">\n <h4 class="block">Info! {{\'APPLICATION_NO_ACCOUNT_SELECTED\' | translate}}</h4>\n </div>\n </div>\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n\n</div>\n'),a.put("app/channels/mail/inbox/view/view.tags.modal.html",'<div class="modal-header" data-ng-init="initModal()">\n <h3 class="modal-title">{{ \'APPLICATION_TAGS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <!-- START TRANSPORT -->\n <div class="form-group">\n <form name="form" novalidate>\n <!-- START TAGS -->\n <div class="form-group">\n <ui-select multiple data-ng-model="item.tags" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_TAGS\' | translate}}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter: $select.search">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END TAGS -->\n </form>\n </div>\n <!-- END TRANSPORT -->\n</div>\n<div class="modal-footer">\n <button type="button" class="btn" data-ng-class="button.class" data-ng-click="button.click()"data-ng-repeat="button in modal.buttons">{{button.text | translate}}</button>\n <!-- <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button> -->\n</div>\n'),a.put("app/channels/mail/inbox/view/view.templates.modal.html",'<div class="modal-header" data-ng-init="initModal()">\n <h3 class="modal-title">{{ \'APPLICATION_TEMPLATES\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <div class="note note-info" data-ng-show="!templates.length">\n <h4 class="block">Info!</h4>\n <p>\n {{\'MESSAGE_NO_TEMPLATES_AVAILABLE\' | translate}}\n </p>\n </div>\n <form name="form" data-ng-show="templates.length" novalidate>\n <div class="form-group">\n <ui-select data-ng-model="item.template" theme="bootstrap">\n <ui-select-match placeholder="Select a template in the list or search his name...">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template in templates | propsFilter: {name: $select.search}">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n <small data-ng-show="template.description">\n {{\'APPLICATION_DESCRIPTION\' | translate}}: {{template.description}}\n </small>\n </ui-select-choices>\n </ui-select>\n </div>\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()" data-ng-show="templates.length">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/mail/queue/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_QUEUE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" data-ng-pattern="settings.patternName" required />\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$invalid && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$invalid && form.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START STRATEGY -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.strategy.$touched || form.$submitted) && form.strategy.$invalid}">\n <label class="control-label">{{\'APPLICATION_STRATEGY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.strategy" name="strategy" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | uppercase}}</ui-select-match>\n <ui-select-choices repeat="strategy in strategies | filter: $select.search">\n <div ng-bind-html="strategy.toUpperCase() | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.strategy.$touched || form.$submitted) && form.strategy.$invalid && form.strategy.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END STRATEGY -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.timeout.$touched || form.$submitted) && form.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="0" name="timeout" placeholder="Timeout" class="form-control" data-ng-model="item.timeout" required min="1"/>\n <span data-ng-show="(form.timeout.$touched || form.$submitted) && form.timeout.$invalid && form.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START AGENTS-->\n <div class="form-body" data-ng-init="getTeams()">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="item.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="item.penalty=item.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!item.penalty" data-ng-click="item.penalty=item.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-team">\n </div>\n </div>\n </div>\n <!-- END AGENTS-->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/mail/queue/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-envelope"></i>\n <a href="#">{{ \'APPLICATION_MAIL\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="#">{{ \'APPLICATION_QUEUES\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_QUEUES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group" data-ng-if="Auth.isAdmin()">\n <a class="btn green-jungle" href="#" data-ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_QUEUE\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/mail/queue/view/view.agents.html",'<div class="row" data-ng-init="getTeams()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_AGENTS\' | translate}}</span>\n </div>\n </div>\n <div class="note note-warning" data-ng-hide="teams.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AVAILABLE_TEAMS\' | translate }}\n </p>\n </div>\n <div class="portlet-body">\n <!-- BEGIN FORM-->\n <form action="index.html" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="queue.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="queue.penalty=queue.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!queue.penalty" data-ng-click="queue.penalty=queue.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-team">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/mail/queue/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getQueue()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-envelope"></i>\n <a href="#">{{ \'APPLICATION_MAIL\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="/channels/mail/queues/list">{{ \'APPLICATION_QUEUES\' | translate }}</a>\n <i data-ng-show="queue" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="queue">\n <a href="#">{{queue.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET main.channels -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/queue.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{queue.name}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.mail.queues.view.settings\')}">\n <a data-ng-href="/channels/mail/queues/view/{{queue.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.channels.mail.queues.view.agents\')}" data-ng-show="Auth.getCurrentUser().role === \'admin\'">\n <a data-ng-href="/channels/mail/queues/view/{{queue.id}}/agents">\n <i class="icon-people"></i>\n {{ \'APPLICATION_AGENTS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET main.channels -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n </div>\n <!-- END PAGE CONTENT-->\n'),a.put("app/channels/mail/queue/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateMailQueue()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="queue.name" data-ng-pattern="settings.patternName" required />\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid && forms.general.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="queue.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START TIMEOUT -->\n <div class="form-group">\n <label class="control-label">Agent Timeout</label>\n <input type="number" name="timeout" placeholder="Timeout" class="form-control" min="1" data-ng-model="queue.timeout"/>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START STRATEGY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.strategy.$touched || forms.general.$submitted) && forms.general.strategy.$invalid}">\n <label class="control-label">{{\'APPLICATION_STRATEGY\' | translate}}</label>\n <ui-select data-ng-model="queue.strategy" name="strategy" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | uppercase}}</ui-select-match>\n <ui-select-choices repeat="strategy in strategies | filter: $select.search">\n <div ng-bind-html="strategy.toUpperCase() | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END STRATEGY -->\n\n <input data-ng-if="Auth.isAdmin()" class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/mail/realtime/view/agent/agent.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initAgents()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-tree-view ui-grid-expandable-row ui-grid-pagination ui-grid-auto-resize>\n <span us-spinner spinner-key="grid-spinner" spinner-start-active="true"></span>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/mail/realtime/view/agent/agent.modal.info.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_INTERFACE_INFO\' | translate }}</h3>\n</div>\n<div class="modal-body">\n<div data-ng-if="agent.ipaddr" class="well">\n <div>{{agent.ipaddr}}:{{agent.port}}</div>\n <div>{{agent.fullcontact}}</div>\n <div>{{agent.useragent}}</div>\n <div>{{agent.lastms}}</div>\n</div>\n<div data-ng-if="!agent.ipaddr" class="alert alert-danger" role="alert">\n {{\'MESSAGE_NO_AVAILABLE_INFO\' | translate}}\n</div>\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/channels/mail/realtime/view/agent/queue.modal.add.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_JOIN_QUEUE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <div class="form-group row">\n <label class="col-md-2 control-label" style="margin-top: 7px;">{{\'APPLICATION_QUEUE\' | translate}}:</label>\n <div class="col-md-10">\n <ui-select multiple ng-model="item.queues" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_QUEUE\' | translate}}">{{$item.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n</div>\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/mail/realtime/view/application/application.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initApplications()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-auto-resize>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/mail/realtime/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-envelope"></i>\n <a href="#">{{ \'APPLICATION_MAIL\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-energy"></i>\n <a href="#">{{ \'APPLICATION_REALTIME\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <div>\n <nav class="navbar navbar-default" role="navigation">\n <div class="collapse navbar-collapse">\n <ul class="nav navbar-nav">\n <li data-ng-class="{\'active\': $state.is(\'main.channels.mail.realtime.view.agents\')}">\n <a href="/channels/mail/realtime/view/agents">\n {{\'APPLICATION_AGENTS\' | translate}}\n </a>\n </li>\n <li data-ng-class="{\'active\': $state.is(\'main.channels.mail.realtime.view.applications\')}">\n <a href="/channels/mail/realtime/view/applications">\n {{\'APPLICATION_APPLICATIONS\' | translate}}\n </a>\n </li>\n <li>\n <a href="#">\n <b>|{{\'APPLICATION_SHOW_TIMERS\' | translate}} </b><input\n bs-switch\n class="form-control"\n ng-model="showTimers"\n type="checkbox"\n name="showTimers"\n switch-active="{{ timerSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ timerSwitch.onColor }}"\n switch-off-color="{{ timerSwitch.offColor }}"\n switch-animate="{{ timerSwitch.animate }}"\n switch-size="{{ timerSwitch.size }}"\n switch-label="{{ timerSwitch.label }}"\n switch-icon="{{ timerSwitch.icon }}"\n switch-radio-off="{{ timerSwitch.radioOff }}"\n switch-label-width="{{ timerSwitch.labelWidth }}"\n switch-handle-width="{{ timerSwitch.handleWidth }}"><b>|</b>\n </a>\n </li>\n </ul>\n </div>\n </nav>\n </div>\n\n <div ui-view></div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/mail/realtime/view/view.queue.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initAgents()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div id="grid1" ui-grid="gridOptions" ui-grid-resize-columns ui-grid-tree-view class="grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/openchannel/account/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-globe"></i>\n <a href="#">{{ \'APPLICATION_OPEN_CHANNEL\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-notebook"></i>\n <a href="/channels/openchannel/accounts/list">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group">\n <a class="btn btn-default" href="#" data-ng-click="gridOptions.getPage();">\n <i class="icon-reload"></i>\n </a>\n </div>\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/channels/openchannel/accounts/wizard">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ACCOUNT\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), +a.put("app/channels/openchannel/account/view/action/list/list.html",'<div class="row" data-ng-init="initActions()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACTIONS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/channels/openchannel/accounts/view/{{account.id}}/actions/wizard" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ACTION\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/openchannel/account/view/action/view/view.html",'\n<div class="row" data-ng-init="initAction()">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-directions font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACTION\' | translate }}</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="forms.settings" ng-submit="updateItem()" novalidate>\n <!-- START APP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app.$touched || forms.settings.$submitted) && forms.settings.app.$invalid}">\n <label class="control-label">{{ \'APPLICATION_APPLICATION\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.app" name="app" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_APPLICATION\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="app.value as app in apps | filter: $select.search">\n <div ng-bind-html="app.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.app.$touched || forms.settings.$submitted) && forms.settings.app.$invalid && forms.settings.app.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APP -->\n\n <div class="app-settings" ng-slide-down="application.app === \'queue\'" lazy-render duration="1" data-ng-init="getQueues()">\n <!-- START QUEUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.queue.$touched || forms.settings.$submitted) && forms.settings.queue.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.OpenchannelQueueId" name="queue" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="queues.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_QUEUES_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/openchannel/queues/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.queue.$touched || forms.settings.$submitted) && forms.settings.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'agent\'" lazy-render duration="1" data-ng-init="getAgents()">\n <!-- START AGENT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.agent.$touched || forms.settings.$submitted) && forms.settings.agent.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.UserId" name="agent" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.fullname}}</ui-select-match>\n <ui-select-choices repeat="agent.id as agent in agents | filter: $select.search">\n <div ng-bind-html="agent.fullname | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="agents.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AGENTS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/staff/agents/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.agent.$touched || forms.settings.$submitted) && forms.settings.agent.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END AGENT -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1" data-ng-init="getMailAccounts();getTemplates()">\n <!-- START SENDMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="email" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" min="1" required/>\n <span data-ng-show="(forms.settings.from.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.mail.$touched || forms.settings.$submitted) && forms.settings.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in mailAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.template.$touched || forms.settings.$submitted) && forms.settings.template.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEMPLATE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data9" name="template" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.template.$touched || forms.settings.$submitted) && forms.settings.template.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SENDMAIL -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1" data-ng-init="getSmsAccounts()">\n <!-- START SENDSms -->\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.to.$touched || forms.settings.$submitted) && forms.settings.to.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" ng-pattern="/^[\\+]?[0-9]+$/" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" required/>\n <span data-ng-show="(forms.settings.to.$touched || forms.settings.$submitted) && forms.settings.to.$invalid && forms.settings.to.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in smsAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.text.$touched || forms.text.$submitted) && forms.settings.text.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <textarea id="text" class="form-control maxlength-handler" maxlength="160" name="text" data-ng-model="application.data6" required></textarea>\n <span data-ng-show="(forms.settings.text.$touched || forms.settings.$submitted) && forms.settings.text.$invalid && forms.settings.text.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <!-- END SENDSms -->\n </div>\n\n <!-- START INTERVAL_TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.intType.$touched || forms.settings.$submitted) && forms.settings.intType.$invalid}">\n <label class="control-label">{{ \'APPLICATION_INTERVAL_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.intType" theme="bootstrap" name="intType" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="intType.value as intType in $application.intTypes | filter: $select.search">\n {{ intType.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.intType.$touched || forms.settings.$submitted) && forms.settings.intType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVAL_TYPE -->\n\n <div class="app-settings" ng-slide-down="application.intType === \'custom\'" lazy-render duration="1">\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="application.alwaysTime">\n <uib-timepicker name="t_from" data-ng-model="application.t_from" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker>\n </fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="application.alwaysTime"><uib-timepicker name="t_to" data-ng-model="application.t_to" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker></fieldset>\n <!-- <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="application.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label> -->\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- START ALWAYS -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALWAYS\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="application.alwaysTime"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n <!-- <input type="checkbox" data-ng-model="application.alwaysTime"> -->\n </label>\n </div>\n </div>\n <!-- END ALWAYS -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.md_from" theme="bootstrap" name="md_from">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_to && application.md_to!==\'always\' && monthDay>application.md_to && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.md_to" theme="bootstrap" name="md_to">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_from && application.md_from!==\'always\' && monthDay<application.md_from && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.intType === \'list\'" lazy-render duration="1" data-ng-init="getIntervals()">\n\n <!-- START INTERVALS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.IntervalId.$touched || forms.settings.$submitted) && forms.settings.IntervalId.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVALS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.IntervalId" theme="bootstrap" name="IntervalId" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="interval.id as interval in intervals | filter: $select.search">\n {{ interval.name}}\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="intervals.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_INTERVAL_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/intervals/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.IntervalId.$touched || forms.settings.$submitted) && forms.settings.IntervalId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVALS -->\n\n </div>\n <button class="btn green-haze" type="submit">{{\'APPLICATION_UPDATE\' | translate}}</button>\n </form>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/openchannel/account/view/action/wizard/wizard.html",'<div class="row" data-ng-init="initWizard()">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-directions font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACTION\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_APPLICATION\' | translate}}" canexit="formValidation(forms.action.$valid)">\n <form name="forms.action" novalidate>\n <!-- START APP -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.action.$submitted && forms.action.app.$invalid}">\n <label class="control-label">{{ \'APPLICATION_APPLICATION\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.app" name="app" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_APPLICATION\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="app.value as app in apps | filter: $select.search">\n <div ng-bind-html="app.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.action.$submitted && forms.action.app.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APP -->\n\n <div class="app-settings" ng-slide-down="application.app === \'agent\'" lazy-render duration="1" data-ng-init="getAgents()">\n <!-- START AGENT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.agent.$touched || forms.action.$submitted) && forms.action.agent.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.UserId" name="agent" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.fullname}}</ui-select-match>\n <ui-select-choices repeat="agent.id as agent in agents | filter: $select.search">\n <div ng-bind-html="agent.fullname | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="agents.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AGENTS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/staff/agents/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.agent.$touched || forms.action.$submitted) && forms.action.agent.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END AGENT -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'queue\'" lazy-render duration="1" data-ng-init="getQueues()">\n <!-- START QUEUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.queue.$touched || forms.action.$submitted) && forms.action.queue.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.OpenchannelQueueId" name="queue" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="queues.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_QUEUES_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/openchannel/queues/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.queue.$touched || forms.action.$submitted) && forms.action.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1" data-ng-init="getMailAccounts();getTemplates()">\n <!-- START SENDMAIL -->\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="email" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" min="1" required/>\n <span data-ng-show="(forms.action.from.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.mail.$touched || forms.action.$submitted) && forms.action.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in mailAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEMPLATE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data9" name="template" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SENDMAIL -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1" data-ng-init="getSmsAccounts()">\n <!-- START SENDSms -->\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.to.$touched || forms.action.$submitted) && forms.action.to.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" ng-pattern="/^[\\+]?[0-9]+$/" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" required/>\n <span data-ng-show="(forms.action.to.$touched || forms.action.$submitted) && forms.action.to.$invalid && forms.action.to.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in smsAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.text.$touched || forms.action.$submitted) && forms.action.text.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <textarea id="text" class="form-control maxlength-handler" maxlength="160" name="text" data-ng-model="application.data6" required></textarea>\n <span data-ng-show="(forms.action.text.$touched || forms.action.$submitted) && forms.action.text.$invalid && forms.action.text.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <!-- END SENDSms -->\n </div>\n\n <!-- START INTERVAL_TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.intType.$touched || forms.action.$submitted) && forms.action.intType.$invalid}">\n <label class="control-label">{{ \'APPLICATION_INTERVAL_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.intType" theme="bootstrap" name="intType" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="intType.value as intType in $application.intTypes | filter: $select.search">\n {{ intType.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.intType.$touched || forms.action.$submitted) && forms.action.intType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVAL_TYPE -->\n\n <div class="app-settings" ng-slide-down="application.intType === \'custom\'" lazy-render duration="1">\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="application.alwaysTime">\n <uib-timepicker name="t_from" data-ng-model="application.t_from" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker>\n </fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="application.alwaysTime">\n <uib-timepicker name="t_to" data-ng-model="application.t_to" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker>\n </fieldset>\n <!-- <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="application.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label> -->\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- START ALWAYS -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALWAYS\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="application.alwaysTime"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n <!-- <input type="checkbox" data-ng-model="application.alwaysTime"> -->\n </label>\n </div>\n </div>\n <!-- END ALWAYS -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.md_from" theme="bootstrap" name="md_from">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_to && application.md_to!==\'always\' && monthDay>application.md_to && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.md_to" theme="bootstrap" name="md_to">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_from && application.md_from!==\'always\' && monthDay<application.md_from && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.intType === \'list\'" lazy-render duration="1" data-ng-init="getIntervals()">\n\n <!-- START INTERVALS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.IntervalId.$touched || forms.action.$submitted) && forms.action.IntervalId.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVALS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.IntervalId" theme="bootstrap" name="IntervalId" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="interval.id as interval in intervals | filter: $select.search">\n {{ interval.name}}\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="intervals.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_INTERVAL_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/intervals/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.IntervalId.$touched || forms.action.$submitted) && forms.action.IntervalId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVALS -->\n\n </div>\n\n <input class="btn green-haze" type="submit" data-ng-click="next()" value="{{\'APPLICATION_CONTINUE\' | translate}}" />\n </form>\n </wz-step>\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input class="btn green-haze" type="submit" data-ng-click="next()" value="{{\'APPLICATION_CONFIRM\' | translate}}" />\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), +a.put("app/channels/openchannel/account/view/api/view/view.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_API\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <div class="tab-pane active" id="tab_1_1">\n <!-- START API -->\n <div class="row" >\n <div class="col-md-12">\n <label class="control-label">Receive URL</label>\n </div>\n </div>\n <div class="row" >\n <div class="col-md-11">\n <code-mirror model="receiveurl"></code-mirror>\n </div>\n <div class="col-md-1">\n <a class="btn btn-sm green-jungle" data-ng-click="copyToClipboard(receiveurl);"><i class="fa fa-clipboard"></i>\n </a>\n </div>\n </div>\n <!-- END API -->\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/openchannel/account/view/disposition/modal/add.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_DISPOSITIONS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.form.$touched || form.$submitted) && form.form.$invalid}">\n <div class="">\n <input type="text" name="form" placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}" class="form-control" data-ng-model="name" required/>\n <span data-ng-show="form.form.$touched && form.form.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <!-- END NAME -->\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()" data-ng-show="form.$valid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/openchannel/account/view/disposition/view/view.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_DISPOSITIONS\' | translate}}</span>\n </div>\n <div class="actions actions-md">\n <a href="#" class="btn btn-icon-only green" data-ng-click="addDisposition();">\n <i class="fa fa-plus"></i>\n </a>\n </div>\n </div>\n <div class="portlet-body" data-ng-init="initView()">\n <div class="tab-content">\n <div class="row" data-ng-hide="dispositions.length">\n <div class="col-md-12">\n <div class="note note-info">\n <h4 class="block">Info! {{\'MESSAGE_NO_DISPOSITIONS_AVAILABLE\' | translate}}</h4>\n </div>\n </div>\n </div>\n\n <!-- GENERAL TAB -->\n <div class="row" data-ng-repeat="disposition in dispositions">\n <div class="col-md-12 form-group">\n <div class="input-group">\n <div>\n <input class="form-control" type="text" placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}" data-ng-model="disposition.name">\n </div>\n <span class="input-group-btn">\n <button class="btn btn-success" type="button" data-ng-click="updateDisposition(disposition.id, disposition.name);"><i class="fa fa-cloud-upload fa-fw"></i> {{\'APPLICATION_UPDATE\' | translate}}</button>\n <button class="btn btn-danger" type="button" data-ng-click="deleteDisposition(disposition.id);"><i class="fa fa-times fa-fw"></i> {{\'APPLICATION_DELETE\' | translate}}</button>\n </span>\n </div>\n </div>\n </div>\n <!-- END GENERAL TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/openchannel/account/view/hooks/view/view.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_HOOKS\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_SEND\' | translate}}</a>\n </li>\n <li >\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_ACCEPT\' | translate}}</a>\n </li>\n <li >\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{\'APPLICATION_REJECT\' | translate}}</a>\n </li>\n <li >\n <a href="#" data-target="#tab_1_4" data-toggle="tab">{{\'APPLICATION_CLOSE\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- START REPLY TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.info" data-ng-submit="forms.info.$valid && updateItem()" novalidate>\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.info.method.$touched || forms.info.$submitted) && forms.info.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.replyMethod" name="method" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search" >\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.info.method.$touched || forms.info.$submitted) && forms.info.method.$invalid && forms.info.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.info.url.$touched || forms.info.$submitted) && forms.info.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.replyUrl" ng-required="account.replyMethod"/>\n <span data-ng-show="(forms.info.url.$touched || forms.info.$submitted) && forms.info.url.$invalid && forms.info.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END REPLY TAB -->\n\n <!-- START ACCEPT TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.accept" data-ng-submit="forms.accept.$valid && updateItem()" novalidate>\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.accept.method.$touched || forms.accept.$submitted) && forms.accept.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.acceptMethod" name="method" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.accept.method.$touched || forms.accept.$submitted) && forms.accept.method.$invalid && forms.accept.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.accept.url.$touched || forms.accept.$submitted) && forms.accept.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.acceptUrl" ng-required="account.acceptMethod"/>\n <span data-ng-show="(forms.accept.url.$touched || forms.accept.$submitted) && forms.accept.url.$invalid && forms.accept.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <!-- START ACTIONS-->\n <div class="row" ng-repeat = "action in account.actions">\n <div ng-switch="action.action">\n <div ng-switch-when="pause">\n <div class="form-group col-md-4">\n <label class="control-label">{{\'APPLICATION_PAUSE\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-change="resetActionData(action)"\n data-ng-model="action.enabled"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <div ng-if="action.enabled" class="form-group col-md-8">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}</label>\n <ui-select name="action" data-ng-model="action.type" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_TYPE\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat=" pause.name as pause in pauses | filter: $select.search">\n <div ng-bind-html="pause.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n </div>\n <!-- END ACTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ACCEPT TAB -->\n <!-- START REJECT TAB -->\n <div class="tab-pane" id="tab_1_3">\n <form name="forms.reject" data-ng-submit="forms.reject.$valid && updateItem()" novalidate>\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.reject.method.$touched || forms.reject.$submitted) && forms.reject.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.rejectMethod" name="method" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.reject.method.$touched || forms.reject.$submitted) && forms.reject.method.$invalid && forms.reject.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.reject.url.$touched || forms.reject.$submitted) && forms.reject.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.rejectUrl" ng-required="account.rejectMethod"/>\n <span data-ng-show="(forms.reject.url.$touched || forms.reject.$submitted) && forms.reject.url.$invalid && forms.reject.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END REJECT TAB -->\n <!-- START CLOSE TAB -->\n <div class="tab-pane" id="tab_1_4">\n <form name="forms.close" data-ng-submit="forms.close.$valid && updateItem()" novalidate>\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.close.method.$touched || forms.close.$submitted) && forms.close.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.closeMethod" name="method" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.close.method.$touched || forms.close.$submitted) && forms.close.method.$invalid && forms.close.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.close.url.$touched || forms.close.$submitted) && forms.close.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.closeUrl" ng-required="account.closeMethod"/>\n <span data-ng-show="(forms.close.url.$touched || forms.close.$submitted) && forms.close.url.$invalid && forms.close.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END CLOSE TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/openchannel/account/view/setting/view/view.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERALS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.info" data-ng-submit="forms.info.$valid && updateItem()" novalidate>\n <!-- START ID -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_ID\' | translate}}<span class="required" aria-required="true">*</span>\n </label>\n <input type="text" name="id" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.id" ng-disabled="true" required/>\n </div>\n <!-- END ID-->\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.name" required/>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid && forms.info.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n <!-- START LIST -->\n <div class="form-group" data-ng-if="license.cm">\n <label class="control-label">{{\'APPLICATION_LIST\' | translate}}</label>\n <div class="input-group">\n\n <ui-select data-ng-model="account.ListId" name="list" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_LIST\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="list.id as list in lists | filter: $select.search">\n <div ng-bind-html="list.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n\n <span class="input-group-btn">\n <button type="button" data-ng-click="account.ListId = null" class="btn btn-default">\n <span class="glyphicon glyphicon-trash"></span>\n </button>\n </span>\n\n </div>\n </div>\n <!-- END LIST -->\n <!-- START FIDELITY -->\n <!-- <div class="form-group">\n <label class="control-label">{{\'APPLICATION_FIDELITY\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-model="account.fidelity"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div> -->\n <!-- END FIDELITY -->\n\n <!-- START TIMEOUT -->\n <!-- <div class="form-group" data-ng-if="account.fidelity" data-ng-class="{\'has-error\': (forms.info.timeout.$touched || forms.info.$submitted) && forms.info.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="0" name="timeout" placeholder="{{\'APPLICATION_PORT\' | translate}}" class="form-control" data-ng-model="account.timeout" required/>\n <span data-ng-show="(forms.info.timeout.$touched || forms.info.$submitted) && forms.info.timeout.$invalid && forms.info.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.timeout.$touched || forms.info.$submitted) && forms.info.timeout.$invalid && forms.info.timeout.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div> -->\n <!-- END TIMEOUT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="account.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START CUSTOM -->\n <!-- <div class="form-group">\n <label class="control-label">{{\'APPLICATION_REPLY\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-model="account.reply"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div> -->\n <!-- START REPLY HOOK -->\n <!-- <div ng-if= "account.reply" class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.info.method.$touched || forms.info.$submitted) && forms.info.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.replyMethod" name="method" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search" >\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.info.method.$touched || forms.info.$submitted) && forms.info.method.$invalid && forms.info.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.info.url.$touched || forms.info.$submitted) && forms.info.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.replyUrl" required/>\n <span data-ng-show="(forms.info.url.$touched || forms.info.$submitted) && forms.info.url.$invalid && forms.info.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div> -->\n <!-- START REPLY HOOK -->\n <!-- END CUSTOM -->\n\n <!-- START REMOTE IP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.remote.$touched || forms.info.$submitted) && forms.info.remote.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remote" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="account.remote" required/>\n <span class="help-block help-block-info">\n {{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n </span>\n <span data-ng-show="(forms.info.remote.$touched || forms.info.$submitted) && forms.info.remote.$invalid && forms.info.remote.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END REMOTE IP -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/openchannel/account/view/view.html",'<!-- BEGIN PAGE HEADER-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-globe"></i>\n <a href="#">{{ \'APPLICATION_OPEN_CHANNEL\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-notebook"></i>\n <a href="/channels/openchannel/accounts/list">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a>\n <i class="fa fa-angle-right" data-ng-show="account"></i>\n </li>\n <li data-ng-show="account">\n <a href="#">{{ account.name }}</a>\n </li>\n </ul>\n </div>\n\n<!-- END PAGE HEADER-->\n\n<!-- BEGIN PAGE CONTENT-->\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET main.channels -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img ng-src="assets/images/media/account.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{ account.name }}\n </div>\n <div class="profile-usertitle-job">\n {{account.description}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li ng-class="{active: $state.is(\'main.channels.openchannel.accounts.view.settings\')}">\n <a href="/channels/openchannel/accounts/view/{{account.id}}/settings">\n <i class="icon-settings"></i>\n {{\'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.is(\'main.channels.openchannel.accounts.view.api\')}">\n <a href="/channels/openchannel/accounts/view/{{account.id}}/api">\n <i class="fa fa-external-link"></i>\n {{\'APPLICATION_API\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.is(\'main.channels.openchannel.accounts.view.hooks\')}">\n <a href="/channels/openchannel/accounts/view/{{account.id}}/hooks">\n <i class="fa fa-code"></i>\n {{\'APPLICATION_HOOKS\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.is(\'main.channels.openchannel.accounts.view.dispositions\')}">\n <a href="/channels/openchannel/accounts/view/{{account.id}}/dispositions">\n <i class="icon-target"></i>\n {{\'APPLICATION_DISPOSITIONS\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.includes(\'main.channels.openchannel.accounts.view.actions\')}">\n <a href="/channels/openchannel/accounts/view/{{account.id}}/actions/list">\n <i class="icon-directions"></i>\n {{\'APPLICATION_ACTIONS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <div ui-view class="profile-content"></div>\n <!-- END PROFILE CONTENT -->\n </div>\n<!-- END PAGE CONTENT-->\n</div>\n'),a.put("app/channels/openchannel/account/wizard/wizard.html",'\n<div class="row" data-ng-init="initWizard()">\n <div class="col-md-12">\n <!-- BEGIN PAGE HEADER-->\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-globe"></i>\n <a href="#">{{ \'APPLICATION_OPEN_CHANNEL\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-notebook"></i>\n <a href="/channels/openchannel/accounts/list">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n <!-- END PAGE HEADER-->\n\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACCOUNT\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_ACCOUNT_INFO\' | translate}}" canexit="formValidation(forms.info.$valid)">\n <form name="forms.info" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid && forms.info.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n <!-- START REMOTE IP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.remote.$touched || forms.info.$submitted) && forms.info.remote.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remote" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.remote" required/>\n <span class="help-block help-block-info">\n {{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n </span>\n <span data-ng-show="(forms.info.remote.$touched || forms.info.$submitted) && forms.info.remote.$invalid && forms.info.remote.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END REMOTE IP -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" data-ng-click="goNext()"/>\n </form>\n </wz-step>\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), +a.put("app/channels/openchannel/inbox/message/info.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_INFO\' | translate }}</h3>\n</div>\n<div class="modal-body" data-ng-init="initInfo()" style=" overflow-x: auto;" >\n <div data-ng-if="data" >\n <json-formatter json="data" open="1"></json-formatter>\n </div>\n <div class="note note-warning" data-ng-hide="data">\n <p>\n {{ \'MESSAGE_NO_INFO_AVAILABLE\' | translate }}\n </p>\n </div>\n\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/channels/openchannel/inbox/message/message.html",'<div class="message">\n <div class="row">\n <div class="col-md-6">\n <!-- <span data-ng-if="Message.from" class="bold">From: {{Message.from}} </span>\n <br>\n <span data-ng-if="Message.to" class="bold">To: {{Message.to}} </span>\n <br> -->\n <div class="row" ng-if="Message.from">\n <div class="col-md-12">\n <span data-ng-if="Message.from" class="bold">From: {{Message.from}} </span>\n </div>\n </div>\n <div class="row" ng-if="Message.to">\n <div class="col-md-12">\n <span data-ng-if="Message.to" class="bold">To: {{Message.to}} </span>\n </div>\n </div>\n <div class="row" ng-if="Message.name">\n <div class="col-md-12">\n <span class="bold">Name: {{Message.name}}</span>\n </div>\n </div>\n <div class="row" ng-if="Message.phone">\n <div class="col-md-12">\n <span class="bold">Phone: <a href="" data-ng-click="openContact(\'phone\',Message.phone)">{{Message.phone}}</a></span>\n </div>\n </div>\n <div class="row" ng-if="Message.email">\n <div class="col-md-12">\n <span class="bold">Email: <a href="" data-ng-click="openContact(\'email\',Message.email)">{{Message.email}}</a></span>\n </div>\n </div>\n </div>\n <div class="col-md-6">\n <span class="pull-right" data-ng-if="Message.User">{{\'APPLICATION_SENT_BY\' | translate}}: <strong>{{Message.User.fullname}}</strong></span>\n </div>\n </div>\n <br>\n <span class="todo-tasklist-date">\n <span class="pull-right" data-ng-switch="Message.status">\n <a ng-switch-when="RECEIVED" href="#" class="btn default btn-xs inactive-link green-stripe"> {{Message.status | uppercase}}\n <i class="fa fa-check"></i>\n </a>\n <a ng-switch-when="SENT" href="#" class="btn default btn-xs inactive-link green-stripe"> {{Message.status | uppercase}}\n <i class="fa fa-check"></i>\n </a>\n <a ng-switch-when="DELIVERED" href="#" class="btn default btn-xs inactive-link green-stripe"> {{Message.status | uppercase}}\n <i class="fa fa-check"></i>\n </a>\n <a ng-switch-when="SENDING" href="#" class="btn default btn-xs inactive-link blue-stripe" > {{Message.status | uppercase}}\n <i class="fa fa-warning"></i>\n </a>\n <a ng-switch-when="FAILED" href="#" class="btn default btn-xs red-stripe" data-ng-click="info(Message.res_data)"> {{Message.status | uppercase}}\n <i class="fa fa-times"></i>\n </a>\n <a ng-switch-default href="#" class="btn default btn-xs"> {{Message.status | uppercase}}\n </a>\n <br>\n </span>\n\n <i class="icon-calendar" title="{{Message.updatedAt | date:\'MMM d, y HH:mm:ss\'}}"></i> <span am-time-ago="Message.updatedAt"></span>\n </span>\n <hr>\n <ng-emoticons emoticons-data="Message.body"></ng-emoticons>\n <!-- <span class="body text-left" data-ng-bind-html="Message.body" style="white-space: pre-wrap;"></span> -->\n </div>\n'),a.put("app/channels/openchannel/inbox/room/room.directive.html",'<!-- BEGIN TODO CONTENT -->\n\n<div class="todo-content">\n <div class="portlet light">\n <div class="portlet-title">\n <div class="caption">\n <button class="btn btn-sm btn-default green-meadow" data-ng-if="Room.status !== \'CLOSED\'" data-ng-disabled="!form.body || forms.compose.from.$invalid || forms.compose.to.$invalid" data-ng-click="sendMessage()">\n <i class="icon-paper-plane" style="color: white;"></i> {{\'APPLICATION_SEND\' | translate}}\n </button>\n <span data-ng-show="Room && Room.status !== \'CLOSED\'"> | </span>\n <span data-ng-show="Room" class="label label-default">#{{Room.id}} {{Room.status}}</span>\n <span data-ng-if="Room && Room.ParentId"> | </span>\n <span data-ng-if="Room && Room.ParentId" class="label label-warning"> Ref: <a data-ng-click="openRoom(Room.ParentId,Room.contact)">#{{Room.ParentId}}</a></span>\n </div>\n <div class="actions" data-ng-switch="Room.status">\n <button class="btn btn-icon-only" data-ng-show="Room" data-ng-class="{\'btn-success\':Room.status !== \'CLOSED\',\'grey-cascade\':Room.status === \'CLOSED\'}" data-ng-click="closeRoom(Room.id)" data-ng-disabled="Room.status === \'CLOSED\' && Room.disposition">\n <i data-ng-class="{\'fa fa-upload\':Room.status !== \'CLOSED\',\'icon-target\':Room.status === \'CLOSED\'}"></i>\n </button>\n <button class="btn default btn-icon-only" data-ng-if="Room && Room.status !== \'CLOSED\'" type="button" data-ng-click="togglePanelLeft()" title="{{\'APPLICATION_RESIZE\' | translate}}">\n <i ng-class="panelRight == \'col-md-12\' ? \'icon-size-actual\' : \'icon-size-fullscreen\'"></i>\n </button>\n </div>\n </div>\n <div class="portlet-body">\n <div class="row">\n <div data-ng-show="panelLeft" data-ng-class="panelLeft">\n <div class="form">\n <!-- START TAGS -->\n <div class="form-group" data-ng-if="Room.status !== \'CLOSED\' || (Room.status == \'CLOSED\' && form.tags.length)">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-tags" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <ui-select data-ng-disabled="Room.status == \'CLOSED\'" multiple data-ng-model="form.tags" theme="bootstrap" on-select="onChanged($item, $model)" on-remove="onChanged($item, $model)">\n <ui-select-match placeholder="Tags...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter:$select.search" class="">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n <!-- END TAGS -->\n </div>\n <hr data-ng-if="Room && Room.status !== \'CLOSED\'">\n\n <div ng-scrollbars ng-scrollbars-config="{\n autoHideScrollbar: false,\n theme: \'light\',\n advanced: {\n updateOnContentResize: true\n },\n setHeight: 781,\n scrollInertia: 0\n }">\n <ul class="chats">\n <li data-ng-switch="Room.status" data-ng-class="{\'in\': Message.status == \'RECEIVED\', \'out\': Message.status == \'SENT\' || Message.status == \'SENDING\' || Message.status == \'FAILED\' || Message.status == \'NOTE\' || Message.status == \'DELIVERED\' || Message.status == \'QUEUED\' || Message.status != \'RECEIVED\' }" data-ng-repeat="Message in Room.OpenchannelMessages | orderBy:\'-createdAt\'">\n <!-- <img class="avatar" alt="" data-ng-src="api/users/avatar/{{getCurrentUser().userpic && smsMessage.status === \'SENT\' ? getCurrentUser().userpic : \'unknown_avatar\'}}"> -->\n <!-- <note message="smsMessage" ng-switch-when="NOTE"></note> -->\n <div class="avatar" data-ng-class="Message.UserId ? \'pretty-avatar\' : \'pretty-avatar-v\'">\n <ng-letter-avatar\n data-ng-if="Message.UserId"\n height="40"\n width="40"\n fontsize="25"\n data="{{Message.User.fullname}}"\n avatarcustombgcolor="#B0B0B0"\n avatarcustomborder="border:2px solid #3399CC"\n charCount="2"\n shape="round"></ng-letter-avatar>\n <ng-letter-avatar\n data-ng-if="!Message.UserId"\n height="40"\n width="40"\n fontsize="25"\n data="{{Message.from}}"\n avatarcustombgcolor="#B0B0B0"\n avatarcustomborder="border:2px solid #EA4C61"\n charCount="1"\n shape="round"></ng-letter-avatar>\n </div>\n <message message="Message" list-id="Room.OpenchannelAccount.ListId" ng-switch-default></message>\n </li>\n </ul>\n </div>\n </div>\n <div data-ng-class="panelRight">\n\n <div class="note note-info" data-ng-if="Room && Room.status == \'CLOSED\'">\n <h4 class="block">Info! {{\'MESSAGE_ROOM_CLOSED\' | translate}}</h4>\n <p>\n {{\'MESSAGE_ROOM_CLOSED_DETAILS\' | translate}}.\n </p>\n <hr>\n <p>\n <i class="icon-target"></i> {{\'APPLICATION_DISPOSITION\' | translate}}: <strong>{{Room.disposition}}</strong>\n </p>\n <p>\n <i class="icon-calendar"></i> {{\'APPLICATION_UPDATED_AT\' | translate}}: <strong>{{Room.updatedAt | date:\'medium\'}}</strong> (<span am-time-ago="Room.updatedAt"></span>)\n </p>\n </div>\n <form name="forms.compose" data-ng-submit="forms.compose.$valid" class="form-horizontal" novalidate>\n <!-- START HEAD -->\n <div class="form">\n\n <!-- START FROM -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.compose.from.$invalid && forms.compose.$submitted}" data-ng-if="Room.status !== \'CLOSED\'">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <label class="control-label">From:</label>\n </div>\n <div class="col-md-11">\n <ui-select data-ng-disabled="Room" theme="bootstrap" name="from" data-ng-model="form.from" required>\n <ui-select-match placeholder="From...">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="Account.name as Account in Accounts | filter: $select.search">\n <div data-ng-bind-html="Account.name | highlight: $select.search"></div>\n <small data-ng-bind-html="Account.name | highlight: $select.search"></small>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.compose.from.$invalid && forms.compose.$submitted " class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n <!-- END FROM -->\n <!-- START TO -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.compose.to.$invalid && forms.compose.$submitted}" data-ng-if="Room.status !== \'CLOSED\'">\n\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <label class="control-label">To:</label>\n </div>\n <div class="col-md-11">\n <input type="text" name="to" class="form-control todo-taskbody-taskdesc" placeholder="To..." rows="8" data-ng-disabled="Room" data-ng-model="form.to" required>\n <span data-ng-show="forms.compose.to.$invalid && forms.compose.$submitted " class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n <!-- END TO -->\n <!-- START CANNED -->\n <div class="form-group" data-ng-if="Room.status !== \'CLOSED\'">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-magic" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <input type="text"\n data-ng-model="modelOptions.selectedAnswer"\n uib-typeahead="key for key in getAnswers($viewValue)"\n placeholder="Canned answers.."\n typeahead-loading="loadingLocations"\n typeahead-no-results="noResults"\n typeahead-on-select="onSelect($item)"\n class="form-control">\n <i ng-show="loadingLocations" class="glyphicon glyphicon-refresh"></i>\n <div ng-show="noResults">\n <i class="glyphicon glyphicon-remove"></i> No Results Found\n </div>\n </div>\n </div>\n\n </div>\n <!-- END CANNED -->\n <!-- START message -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.compose.body.$invalid && forms.compose.$submitted}" data-ng-if=" Room.status !== \'CLOSED\'">\n <div class="col-md-12">\n <textarea id="text" class="form-control maxlength-handler" rows="8" name="body" data-ng-model="form.body"></textarea>\n <span data-ng-show="forms.compose.body.$invalid && forms.compose.$submitted " class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n </div>\n </div>\n\n <!-- END message -->\n </div>\n </form>\n </div>\n </div>\n </div>\n </div>\n</div>\n<!-- END TODO CONTENT -->\n"),a.put("app/channels/openchannel/inbox/view/account/list/list.html",'<!-- BEGIN Portlet PORTLET-->\n<div class="portlet light" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption">\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'NEW\'" uib-uncheckable>NEW</button>\n </div>\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'OPEN\'" uib-uncheckable>OPEN</button>\n </div>\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'PENDING\'" uib-uncheckable>PENDING</button>\n </div>\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'CLOSED\'" uib-uncheckable>CLOSED</button>\n </div>\n </div>\n <div class="actions">\n <a href="#" class="btn btn-icon-only default" data-ng-click="getPage();">\n <i class="fa fa-refresh"></i>\n </a>\n <a href="#" class="btn btn-icon-only red" data-ng-click="deleteItems();" data-ng-show="id.length && isAdmin">\n <i class="fa fa-trash"></i>\n </a>\n <a href="#" class="btn btn-icon-only blue" data-ng-click="tagItems();" data-ng-show="id.length">\n <i class="fa fa-tags"></i>\n </a>\n <a href="#" class="btn btn-icon-only green" data-ng-click="openRoom(null, \'New Message\')">\n <i class="fa fa-plus"></i>\n </a>\n </div>\n </div>\n <div class="portlet-title" data-ng-show="tags.length">\n <!-- START TAGS -->\n <div class="form-group">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-tags" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <ui-select multiple data-ng-model="query.tags" theme="bootstrap" on-select="onChanged($item, $model)" on-remove="onChanged($item, $model)">\n <ui-select-match placeholder="Search by tag...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter:$select.search">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n <!-- END TAGS -->\n </div>\n <div class="portlet-body">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="false"></span>\n <!-- END UI-GRID SPINNER -->\n\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid-inbox">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END Portlet PORTLET-->\n'),a.put("app/channels/openchannel/inbox/view/view.agents.modal.html",'<div class="modal-header" data-ng-init="initModal()">\n <h3 class="modal-title">{{ \'APPLICATION_AGENTS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <!-- START TRANSPORT -->\n <div class="form-group">\n <form name="form" novalidate>\n <!-- START TRANSPORT -->\n <div class="form-group">\n <ui-select multiple name="agents" data-ng-model="item.agents" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_AGENTS\' | translate}}">{{$item.fullname}}</ui-select-match>\n <ui-select-choices repeat="agent.id as agent in agents | filter: $select.search">\n {{agent.fullname}}\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END TRANSPORT -->\n </form>\n </div>\n <!-- END TRANSPORT -->\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/openchannel/inbox/view/view.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-globe"></i>\n <a href="#">{{ \'APPLICATION_OPEN_CHANNEL\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-note"></i>\n <a href="/channels/openchannel/inbox/list">{{ \'APPLICATION_INBOX\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row inbox" data-ng-init="initView()">\n <div class="col-md-3">\n <ul class="inbox-nav margin-bottom-10">\n <li data-ng-class="{active: $stateParams.id == Account.id}" data-ng-repeat="Account in openchannelAccounts">\n <a href="/channels/openchannel/inbox/view/account/{{Account.id}}/list" class="btn">\n <i class="icon-notebook"></i> {{Account.name}}\n </a>\n <b></b>\n </li>\n </ul>\n </div>\n\n <div class="col-md-9" >\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view>\n <div class="note note-info">\n <h4 class="block">Info! {{\'APPLICATION_NO_ACCOUNT_SELECTED\' | translate}}</h4>\n </div>\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/openchannel/inbox/view/view.status.modal.html",'<div class="modal-header">\n <button ng-if="modal.dismissable" type="button" ng-click="$dismiss()" class="close">×</button>\n <h4 ng-if="modal.title" ng-bind="modal.title | translate" class="modal-title"></h4>\n</div>\n<div class="modal-body">\n <p ng-if="modal.text && !closed" ng-bind="modal.text | translate"></p>\n <form name="form" novalidate data-ng-init="initDisposition()">\n <div class="form-group">\n <ui-select data-ng-model="item.disposition" name="list" theme="bootstrap" data-ng-disabled="!dispositions.length" required>\n <ui-select-match placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="disposition.name as disposition in dispositions | filter: $select.search">\n <div ng-bind-html="disposition.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="note note-warning" data-ng-hide="dispositions.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_DISPOSITIONS_AVAILABLE\' | translate }}\n </p>\n </div>\n</form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-danger" type="button" ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/openchannel/inbox/view/view.tags.modal.html",'<div class="modal-header" data-ng-init="initModal()">\n <h3 class="modal-title">{{ \'APPLICATION_TAGS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <!-- START TRANSPORT -->\n <div class="form-group">\n <form name="form" novalidate>\n <!-- START TAGS -->\n <div class="form-group">\n <ui-select multiple data-ng-model="item.tags" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_TAGS\' | translate}}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter: $select.search">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END TAGS -->\n </form>\n </div>\n <!-- END TRANSPORT -->\n</div>\n<div class="modal-footer">\n <button type="button" class="btn" data-ng-class="button.class" data-ng-click="button.click()"data-ng-repeat="button in modal.buttons">{{button.text | translate}}</button>\n <!-- <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button> -->\n</div>\n'),a.put("app/channels/openchannel/queue/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_QUEUE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" data-ng-pattern="settings.patternName" required />\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$invalid && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$invalid && form.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.timeout.$touched || form.$submitted) && form.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="0" name="timeout" placeholder="Timeout" class="form-control" data-ng-model="item.timeout" required min="1"/>\n <span data-ng-show="(form.timeout.$touched || form.$submitted) && form.timeout.$invalid && form.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START STRATEGY -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.strategy.$touched || form.$submitted) && form.strategy.$invalid}">\n <label class="control-label">{{\'APPLICATION_STRATEGY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.strategy" name="strategy" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.toUpperCase()}}</ui-select-match>\n <ui-select-choices repeat="strategy in strategies | filter: $select.search">\n <div ng-bind-html="strategy.toUpperCase() | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.strategy.$touched || form.$submitted) && form.strategy.$invalid && form.strategy.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END STRATEGY -->\n\n <!-- START AGENTS-->\n <div class="form-body" data-ng-init="getTeams()">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="item.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="item.penalty=item.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!item.penalty" data-ng-click="item.penalty=item.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-team">\n </div>\n </div>\n </div>\n <!-- END AGENTS-->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/openchannel/queue/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-globe"></i>\n <a href="#">{{ \'APPLICATION_OPEN_CHANNEL\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="#">{{ \'APPLICATION_QUEUES\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_QUEUES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="#" data-ng-click="createItem()" data-ng-if="Auth.isAdmin()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_QUEUE\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/openchannel/queue/view/view.agents.html",'<div class="row" data-ng-init="getTeams()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_AGENTS\' | translate}}</span>\n </div>\n </div>\n <div class="note note-warning" data-ng-hide="teams.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AVAILABLE_TEAMS\' | translate }}\n </p>\n </div>\n <div class="portlet-body">\n <!-- BEGIN FORM-->\n <form action="index.html" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="queue.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="queue.penalty=queue.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!queue.penalty" data-ng-click="queue.penalty=queue.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-team">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/openchannel/queue/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getQueue()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-globe"></i>\n <a href="#">{{ \'APPLICATION_OPEN_CHANNEL\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="/channels/openchannel/queues/list">{{ \'APPLICATION_QUEUES\' | translate }}</a>\n <i data-ng-show="queue" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="queue">\n <a href="#">{{queue.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET main.channels -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/queue.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{queue.name}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.openchannel.queues.view.settings\')}">\n <a data-ng-href="/channels/openchannel/queues/view/{{queue.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.channels.openchannel.queues.view.agents\')}" data-ng-show="Auth.getCurrentUser().role === \'admin\'">\n <a data-ng-href="/channels/openchannel/queues/view/{{queue.id}}/agents">\n <i class="icon-people"></i>\n {{ \'APPLICATION_AGENTS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET main.channels -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n </div>\n <!-- END PAGE CONTENT-->\n'), +a.put("app/channels/openchannel/queue/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateQueue()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="queue.name" data-ng-pattern="settings.patternName" required />\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid && forms.general.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="queue.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START TIMEOUT -->\n <div class="form-group">\n <label class="control-label">Timeout</label>\n <input type="number" name="timeout" placeholder="Timeout" class="form-control" min="1" data-ng-model="queue.timeout"/>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START HEADER SHAPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.strategy.$touched || forms.general.$submitted) && forms.general.strategy.$invalid}">\n <label class="control-label">{{\'APPLICATION_STRATEGY\' | translate}}</label>\n <ui-select data-ng-model="queue.strategy" name="strategy" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.toUpperCase()}}</ui-select-match>\n <ui-select-choices repeat="strategy in strategies | filter: $select.search">\n <div ng-bind-html="strategy | uppercase | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END HEADER SHAPE -->\n <input data-ng-if="Auth.isAdmin()" class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/openchannel/realtime/view/agent/agent.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initAgents()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-tree-view ui-grid-expandable-row ui-grid-pagination ui-grid-auto-resize>\n <span us-spinner spinner-key="grid-spinner" spinner-start-active="true"></span>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/openchannel/realtime/view/agent/agent.modal.info.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_INTERFACE_INFO\' | translate }}</h3>\n</div>\n<div class="modal-body">\n<div data-ng-if="agent.ipaddr" class="well">\n <div>{{agent.ipaddr}}:{{agent.port}}</div>\n <div>{{agent.fullcontact}}</div>\n <div>{{agent.useragent}}</div>\n <div>{{agent.lastms}}</div>\n</div>\n<div data-ng-if="!agent.ipaddr" class="alert alert-danger" role="alert">\n {{\'MESSAGE_NO_AVAILABLE_INFO\' | translate}}\n</div>\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/channels/openchannel/realtime/view/agent/queue.modal.add.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_JOIN_QUEUE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <div class="form-group row">\n <label class="col-md-2 control-label" style="margin-top: 7px;">{{\'APPLICATION_QUEUE\' | translate}}:</label>\n <div class="col-md-10">\n <ui-select multiple ng-model="item.queues" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_QUEUE\' | translate}}">{{$item.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n</div>\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/openchannel/realtime/view/application/application.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initApplications()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-auto-resize>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/openchannel/realtime/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-globe"></i>\n <a href="#">{{ \'APPLICATION_OPEN_CHANNEL\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-energy"></i>\n <a href="#">{{ \'APPLICATION_REALTIME\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <div>\n <nav class="navbar navbar-default" role="navigation">\n <div class="collapse navbar-collapse">\n <ul class="nav navbar-nav">\n <li data-ng-class="{\'active\': $state.is(\'main.channels.openchannel.realtime.view.agents\')}">\n <a href="/channels/openchannel/realtime/view/agents">\n {{\'APPLICATION_AGENTS\' | translate}}\n </a>\n </li>\n <li data-ng-class="{\'active\': $state.is(\'main.channels.openchannel.realtime.view.applications\')}">\n <a href="/channels/openchannel/realtime/view/applications">\n {{\'APPLICATION_APPLICATIONS\' | translate}}\n </a>\n </li>\n <li>\n <a href="#">\n <b>|{{\'APPLICATION_SHOW_TIMERS\' | translate}} </b><input\n bs-switch\n class="form-control"\n ng-model="showTimers"\n type="checkbox"\n name="showTimers"\n switch-active="{{ timerSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ timerSwitch.onColor }}"\n switch-off-color="{{ timerSwitch.offColor }}"\n switch-animate="{{ timerSwitch.animate }}"\n switch-size="{{ timerSwitch.size }}"\n switch-label="{{ timerSwitch.label }}"\n switch-icon="{{ timerSwitch.icon }}"\n switch-radio-off="{{ timerSwitch.radioOff }}"\n switch-label-width="{{ timerSwitch.labelWidth }}"\n switch-handle-width="{{ timerSwitch.handleWidth }}"><b>|</b>\n </a>\n </li>\n </ul>\n </div>\n </nav>\n </div>\n\n <div ui-view></div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/openchannel/realtime/view/view.queue.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initAgents()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div id="grid1" ui-grid="gridOptions" ui-grid-resize-columns ui-grid-tree-view class="grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/realtime/view/agent/agent.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initAgents()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-pagination ui-grid-auto-resize>\n <span us-spinner spinner-key="grid-spinner" spinner-start-active="true"></span>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/realtime/view/agent/agent.modal.logout.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_AGENT_LOGOUT\' | translate }}</h3>\n</div>\n<div class="modal-body">\n {{\'MESSAGE_AGENT_LOGOUT\' | translate}} <b>{{agent}}</b> ?\n</div>\n<div class="modal-footer">\n <button class="btn red-intense" type="button" ng-click="logout()">{{ \'APPLICATION_LOGOUT\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="$dismiss()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/realtime/view/agent/queue.modal.add.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_JOIN_QUEUE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <div class="form-group row">\n <label class="col-md-2 control-label" style="margin-top: 7px;">{{\'APPLICATION_QUEUE\' | translate}}:</label>\n <div class="col-md-10">\n <ui-select multiple ng-model="item.queues" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_QUEUE\' | translate}}">{{$item.name}}</ui-select-match>\n <ui-select-choices repeat="queue.name as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n</div>\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/realtime/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-energy"></i>\n <a href="/channels/realtime/view/agents">{{ \'APPLICATION_OMNI_REALTIME\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <div>\n <nav class="navbar navbar-default" role="navigation">\n <div class="collapse navbar-collapse">\n <ul class="nav navbar-nav">\n <li data-ng-class="{\'active\': $state.is(\'main.channels.realtime.view.agents\')}">\n <a href="/channels/realtime/view/agents">\n {{\'APPLICATION_AGENTS\' | translate}}\n </a>\n </li>\n <li>\n <a href="#">\n <b>|{{\'APPLICATION_SHOW_TIMERS\' | translate}} </b><input\n bs-switch\n class="form-control"\n ng-model="showTimers"\n type="checkbox"\n name="showTimers"\n switch-active="{{ timerSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ timerSwitch.onColor }}"\n switch-off-color="{{ timerSwitch.offColor }}"\n switch-animate="{{ timerSwitch.animate }}"\n switch-size="{{ timerSwitch.size }}"\n switch-label="{{ timerSwitch.label }}"\n switch-icon="{{ timerSwitch.icon }}"\n switch-radio-off="{{ timerSwitch.radioOff }}"\n switch-label-width="{{ timerSwitch.labelWidth }}"\n switch-handle-width="{{ timerSwitch.handleWidth }}"><b>|</b>\n </a>\n </li>\n </ul>\n </div>\n </nav>\n </div>\n <div ui-view></div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/sms/account/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="glyphicon glyphicon-comment"></i>\n <a href="#">{{ \'APPLICATION_SMS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-notebook"></i>\n <a href="/channels/sms/accounts/list">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group">\n <a class="btn btn-default" href="#" data-ng-click="gridOptions.getPage();">\n <i class="icon-reload"></i>\n </a>\n </div>\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/channels/sms/accounts/wizard">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ACCOUNT\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/sms/account/view/action/list/list.html",'<div class="row" data-ng-init="initActions()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACTIONS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/channels/sms/accounts/view/{{account.id}}/actions/wizard" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ACTION\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/sms/account/view/action/view/view.html",'\n<div class="row" data-ng-init="initAction()">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-directions font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACTION\' | translate }}</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="forms.settings" ng-submit="updateItem()" novalidate>\n <!-- START APP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app.$touched || forms.settings.$submitted) && forms.settings.app.$invalid}">\n <label class="control-label">{{ \'APPLICATION_APPLICATION\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.app" name="app" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_APPLICATION\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="app.value as app in apps | filter: $select.search">\n <div ng-bind-html="app.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.app.$touched || forms.settings.$submitted) && forms.settings.app.$invalid && forms.settings.app.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APP -->\n\n <div class="app-settings" ng-slide-down="application.app === \'queue\'" lazy-render duration="1" data-ng-init="getQueues()">\n <!-- START QUEUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.queue.$touched || forms.settings.$submitted) && forms.settings.queue.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.SmsQueueId" name="queue" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="queues.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_QUEUES_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/sms/queues/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.queue.$touched || forms.settings.$submitted) && forms.settings.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'agent\'" lazy-render duration="1" data-ng-init="getAgents()">\n <!-- START AGENT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.agent.$touched || forms.settings.$submitted) && forms.settings.agent.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.UserId" name="agent" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.fullname}}</ui-select-match>\n <ui-select-choices repeat="agent.id as agent in agents | filter: $select.search">\n <div ng-bind-html="agent.fullname | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="agents.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AGENTS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/staff/agents/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.agent.$touched || forms.settings.$submitted) && forms.settings.agent.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END AGENT -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1" data-ng-init="getMailAccounts();getTemplates()">\n <!-- START SENDMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.to.$touched || forms.settings.$submitted) && forms.settings.to.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="email" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" min="1" required/>\n <span data-ng-show="(forms.settings.to.$touched || forms.settings.$submitted) && forms.settings.to.$invalid && forms.settings.to.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in mailAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.template.$touched || forms.settings.$submitted) && forms.settings.template.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEMPLATE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data9" name="template" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.template.$touched || forms.settings.$submitted) && forms.settings.template.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SENDMAIL -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1" data-ng-init="getSmsAccounts()">\n <!-- START SENDSms -->\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.to.$touched || forms.settings.$submitted) && forms.settings.to.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" ng-pattern="/^[\\+]?[0-9]+$/" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" required/>\n <span data-ng-show="(forms.settings.to.$touched || forms.settings.$submitted) && forms.settings.to.$invalid && forms.settings.to.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in smsAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.text.$touched || forms.text.$submitted) && forms.settings.text.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <textarea id="text" class="form-control maxlength-handler" maxlength="160" name="text" data-ng-model="application.data6" required></textarea>\n <span data-ng-show="(forms.settings.text.$touched || forms.settings.$submitted) && forms.settings.text.$invalid && forms.settings.text.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <!-- END SENDSms -->\n </div>\n <!-- START INTERVAL_TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.intType.$touched || forms.settings.$submitted) && forms.settings.intType.$invalid}">\n <label class="control-label">{{ \'APPLICATION_INTERVAL_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.intType" theme="bootstrap" name="intType" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="intType.value as intType in $application.intTypes | filter: $select.search">\n {{ intType.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.intType.$touched || forms.settings.$submitted) && forms.settings.intType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVAL_TYPE -->\n\n <div class="app-settings" ng-slide-down="application.intType === \'custom\'" lazy-render duration="1">\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="application.alwaysTime">\n <uib-timepicker name="t_from" data-ng-model="application.t_from" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker>\n </fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="application.alwaysTime"><uib-timepicker name="t_to" data-ng-model="application.t_to" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker></fieldset>\n <!-- <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="application.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label> -->\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- START ALWAYS -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALWAYS\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="application.alwaysTime"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n <!-- <input type="checkbox" data-ng-model="application.alwaysTime"> -->\n </label>\n </div>\n </div>\n <!-- END ALWAYS -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.md_from" theme="bootstrap" name="md_from">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_to && application.md_to!==\'always\' && monthDay>application.md_to && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.md_to" theme="bootstrap" name="md_to">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_from && application.md_from!==\'always\' && monthDay<application.md_from && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.intType === \'list\'" lazy-render duration="1" data-ng-init="getIntervals()">\n\n <!-- START INTERVALS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.IntervalId.$touched || forms.settings.$submitted) && forms.settings.IntervalId.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVALS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.IntervalId" theme="bootstrap" name="IntervalId" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="interval.id as interval in intervals | filter: $select.search">\n {{ interval.name}}\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="intervals.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_INTERVAL_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/intervals/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.IntervalId.$touched || forms.settings.$submitted) && forms.settings.IntervalId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVALS -->\n\n </div>\n <button class="btn green-haze" type="submit">{{\'APPLICATION_UPDATE\' | translate}}</button>\n </form>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), +a.put("app/channels/sms/account/view/action/wizard/wizard.html",'\n<div class="row" data-ng-init="initWizard()">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-directions font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACTION\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_APPLICATION\' | translate}}" canexit="formValidation(forms.action.$valid)">\n <form name="forms.action" novalidate>\n <!-- START APP -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.action.$submitted && forms.action.app.$invalid}">\n <label class="control-label">{{ \'APPLICATION_APPLICATION\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.app" name="app" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_APPLICATION\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="app.value as app in apps | filter: $select.search">\n <div ng-bind-html="app.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.action.$submitted && forms.action.app.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APP -->\n\n <div class="app-settings" ng-slide-down="application.app === \'agent\'" lazy-render duration="1" data-ng-init="getAgents()">\n <!-- START AGENT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.agent.$touched || forms.action.$submitted) && forms.action.agent.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.UserId" name="agent" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.fullname}}</ui-select-match>\n <ui-select-choices repeat="agent.id as agent in agents | filter: $select.search">\n <div ng-bind-html="agent.fullname | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="agents.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AGENTS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/staff/agents/list">{{\'APPLICATION_AGENTS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.agent.$touched || forms.action.$submitted) && forms.action.agent.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END AGENT -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'queue\'" lazy-render duration="1" data-ng-init="getQueues()">\n <!-- START QUEUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.queue.$touched || forms.action.$submitted) && forms.action.queue.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.SmsQueueId" name="queue" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="queues.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_QUEUES_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/sms/queues/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.queue.$touched || forms.action.$submitted) && forms.action.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1" data-ng-init="getMailAccounts();getTemplates()">\n <!-- START SENDMAIL -->\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.to.$touched || forms.action.$submitted) && forms.action.to.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="email" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" required/>\n <span data-ng-show="(forms.action.to.$touched || forms.action.$submitted) && forms.action.to.$invalid && forms.action.to.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.mail.$touched || forms.action.$submitted) && forms.action.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in mailAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEMPLATE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data9" name="template" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SENDMAIL -->\n </div>\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1" data-ng-init="getSmsAccounts()">\n <!-- START SENDSms -->\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.to.$touched || forms.action.$submitted) && forms.action.to.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" ng-pattern="/^[\\+]?[0-9]+$/" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" required/>\n <span data-ng-show="(forms.action.to.$touched || forms.action.$submitted) && forms.action.to.$invalid && forms.action.to.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in smsAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.text.$touched || forms.action.$submitted) && forms.action.text.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <textarea id="text" class="form-control maxlength-handler" maxlength="160" name="text" data-ng-model="application.data6" required></textarea>\n <span data-ng-show="(forms.action.text.$touched || forms.action.$submitted) && forms.action.text.$invalid && forms.action.text.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <!-- END SENDSms -->\n </div>\n <!-- START INTERVAL_TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.intType.$touched || forms.action.$submitted) && forms.action.intType.$invalid}">\n <label class="control-label">{{ \'APPLICATION_INTERVAL_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.intType" theme="bootstrap" name="intType" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="intType.value as intType in $application.intTypes | filter: $select.search">\n {{ intType.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.intType.$touched || forms.action.$submitted) && forms.action.intType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVAL_TYPE -->\n\n <div class="app-settings" ng-slide-down="application.intType === \'custom\'" lazy-render duration="1">\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="application.alwaysTime">\n <uib-timepicker name="t_from" data-ng-model="application.t_from" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker>\n </fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="application.alwaysTime"><uib-timepicker name="t_to" data-ng-model="application.t_to" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker></fieldset>\n <!-- <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="application.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label> -->\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- START ALWAYS -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALWAYS\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="application.alwaysTime"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n <!-- <input type="checkbox" data-ng-model="application.alwaysTime"> -->\n </label>\n </div>\n </div>\n <!-- END ALWAYS -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.md_from" theme="bootstrap" name="md_from">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_to && application.md_to!==\'always\' && monthDay>application.md_to && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.md_to" theme="bootstrap" name="md_to">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_from && application.md_from!==\'always\' && monthDay<application.md_from && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.intType === \'list\'" lazy-render duration="1" data-ng-init="getIntervals()">\n\n <!-- START INTERVALS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.IntervalId.$touched || forms.action.$submitted) && forms.action.IntervalId.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVALS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.IntervalId" theme="bootstrap" name="IntervalId" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="interval.id as interval in intervals | filter: $select.search">\n {{ interval.name}}\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="intervals.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_INTERVAL_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/intervals/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.IntervalId.$touched || forms.action.$submitted) && forms.action.IntervalId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVALS -->\n\n </div>\n\n <input class="btn green-haze" type="submit" data-ng-click="next()" value="{{\'APPLICATION_CONTINUE\' | translate}}"/>\n </form>\n </wz-step>\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input class="btn green-haze" type="submit" data-ng-click="next()" value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/sms/account/view/api/view/view.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_API\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- CALLBACK TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <!-- START CALLBACK URL -->\n <div class="row" >\n <div class="col-md-12">\n <label class="control-label">Receive URL</label>\n <p>\n Copy the following url and insert it into your {{account.type}} account settings to receive SMS.\n <a href="https://wiki.xcallymotion.com/display/XMD/SMS" target="_blank">Detail</a>\n </p>\n </div>\n </div>\n <div class="row" >\n <div class="col-md-11">\n <code-mirror model="receiveurl"></code-mirror>\n </div>\n <div class="col-md-1">\n <a class="btn btn-sm green-jungle" data-ng-click="copyToClipboard(receiveurl);"><i class="fa fa-clipboard"></i>\n </a>\n </div>\n </div><br>\n <!-- END CALLACK URL -->\n <!-- START DELIVERY CALLBACK URL -->\n <div ng-if= "account.smstype == \'classic+\'" class="row" ng-show="!forms.info.remote.$invalid">\n <div class="col-md-12">\n <label class="control-label">Delivery URL </label>\n <p>\n Copy the following url and insert it into your {{account.type}} account settings to receive delivery report.\n <a href="https://wiki.xcallymotion.com/display/XMD/SMS" target="_blank">Detail</a>\n </p>\n </div>\n </div>\n <div ng-if= "account.smstype == \'classic+\'" class="row" ng-show="!forms.info.remote.$invalid">\n <div class="col-md-11">\n <code-mirror class="control-label" model="deliveryurl"></code-mirror>\n </div>\n <div class="col-md-1">\n <a class="btn btn-sm green-jungle" data-ng-click="copyToClipboard(deliveryurl);"><i class="fa fa-clipboard"></i>\n </a>\n </div>\n </div>\n <!-- END DELIVERY CALLACK URL -->\n </div>\n <!-- END CALLBACK TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/sms/account/view/disposition/modal/add.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_DISPOSITIONS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.form.$touched || form.$submitted) && form.form.$invalid}">\n <div class="">\n <input type="text" name="form" placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}" class="form-control" data-ng-model="name" required/>\n <span data-ng-show="form.form.$touched && form.form.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <!-- END NAME -->\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()" data-ng-show="form.$valid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/sms/account/view/disposition/view/view.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_DISPOSITIONS\' | translate}}</span>\n </div>\n <div class="actions actions-md">\n <a href="#" class="btn btn-icon-only green" data-ng-click="addDisposition();">\n <i class="fa fa-plus"></i>\n </a>\n </div>\n </div>\n <div class="portlet-body" data-ng-init="initView()">\n <div class="tab-content">\n <div class="row" data-ng-hide="dispositions.length">\n <div class="col-md-12">\n <div class="note note-info">\n <h4 class="block">Info! {{\'MESSAGE_NO_DISPOSITIONS_AVAILABLE\' | translate}}</h4>\n </div>\n </div>\n </div>\n\n <!-- GENERAL TAB -->\n <div class="row" data-ng-repeat="disposition in dispositions">\n <div class="col-md-12 form-group">\n <div class="input-group">\n <div>\n <input class="form-control" type="text" placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}" data-ng-model="disposition.name">\n </div>\n <span class="input-group-btn">\n <button class="btn btn-success" type="button" data-ng-click="updateDisposition(disposition.id, disposition.name);"><i class="fa fa-cloud-upload fa-fw"></i> {{\'APPLICATION_UPDATE\' | translate}}</button>\n <button class="btn btn-danger" type="button" data-ng-click="deleteDisposition(disposition.id);"><i class="fa fa-times fa-fw"></i> {{\'APPLICATION_DELETE\' | translate}}</button>\n </span>\n </div>\n </div>\n </div>\n <!-- END GENERAL TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/sms/account/view/hooks/view/view.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_HOOKS\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_ACCEPT\' | translate}}</a>\n </li>\n <li >\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_REJECT\' | translate}}</a>\n </li>\n <li >\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{\'APPLICATION_CLOSE\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- ACCEPT TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.accept" data-ng-submit="forms.accept.$valid && updateItemSmsAccount()" novalidate>\n <!-- START ACCEPT URL -->\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.accept.method.$touched || forms.accept.$submitted) && forms.accept.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.acceptMethod" name="method" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.accept.method.$touched || forms.accept.$submitted) && forms.accept.method.$invalid && forms.accept.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.accept.url.$touched || forms.accept.$submitted) && forms.accept.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.acceptUrl" ng-required="account.acceptMethod"/>\n <span data-ng-show="(forms.accept.url.$touched || forms.accept.$submitted) && forms.accept.url.$invalid && forms.accept.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <!-- END ACCEPT URL-->\n <!-- START ACTIONS-->\n <!-- START PAUSE -->\n <div class="row" ng-repeat = "action in account.actions">\n <div ng-switch="action.action">\n <div ng-switch-when="pause">\n <div class="form-group col-md-4">\n <label class="control-label">{{\'APPLICATION_PAUSE\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-change="resetActionData(action)"\n data-ng-model="action.enabled"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <div ng-if="action.enabled" class="form-group col-md-8">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}</label>\n <ui-select name="action" data-ng-model="action.type" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_TYPE\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat=" pause.name as pause in pauses | filter: $select.search">\n <div ng-bind-html="pause.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n </div>\n <!-- END ACTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ACCEPT TAB -->\n <!-- START REJECT TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.reject" data-ng-submit="forms.reject.$valid && updateItemSmsAccount()" novalidate>\n <!-- START REJECT URL -->\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.reject.method.$touched || forms.reject.$submitted) && forms.reject.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.rejectMethod" name="method" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.reject.method.$touched || forms.reject.$submitted) && forms.reject.method.$invalid && forms.reject.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.reject.url.$touched || forms.reject.$submitted) && forms.reject.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.rejectUrl" ng-required="account.rejectMethod"/>\n <span data-ng-show="(forms.reject.url.$touched || forms.reject.$submitted) && forms.reject.url.$invalid && forms.reject.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <!-- END REJECT URL -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END REJECT TAB -->\n <!-- START CLOSE TAB -->\n <div class="tab-pane" id="tab_1_3">\n <form name="forms.close" data-ng-submit="forms.close.$valid && updateItemSmsAccount()" novalidate>\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.close.method.$touched || forms.close.$submitted) && forms.close.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.closeMethod" name="method" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.close.method.$touched || forms.close.$submitted) && forms.close.method.$invalid && forms.close.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.close.url.$touched || forms.close.$submitted) && forms.close.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.closeUrl" ng-required="account.closeMethod"/>\n <span data-ng-show="(forms.close.url.$touched || forms.close.$submitted) && forms.close.url.$invalid && forms.close.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END CLOSE TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'), +a.put("app/channels/sms/account/view/setting/view/view.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERALS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.info" data-ng-submit="forms.info.$valid && updateItemSmsAccount()" novalidate>\n <!-- START ID -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_ID\' | translate}}<span class="required" aria-required="true">*</span>\n </label>\n <input type="text" name="id" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.id" ng-disabled="true" required/>\n </div>\n <!-- END ID-->\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.name" required/>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid && forms.info.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n <!-- START LIST -->\n <div class="form-group" data-ng-if="license.cm">\n <label class="control-label">{{\'APPLICATION_LIST\' | translate}}</label>\n <div class="input-group">\n\n <ui-select data-ng-model="account.ListId" name="list" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_LIST\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="list.id as list in lists | filter: $select.search">\n <div ng-bind-html="list.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n\n <span class="input-group-btn">\n <button type="button" data-ng-click="account.ListId = null" class="btn btn-default">\n <span class="glyphicon glyphicon-trash"></span>\n </button>\n </span>\n\n </div>\n </div>\n <!-- END LIST -->\n <!-- START FIDELITY -->\n <!-- <div class="form-group">\n <label class="control-label">{{\'APPLICATION_FIDELITY\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-model="account.fidelity"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div> -->\n <!-- END FIDELITY -->\n\n <!-- START TIMEOUT -->\n <!-- <div class="form-group" data-ng-if="account.fidelity" data-ng-class="{\'has-error\': (forms.info.timeout.$touched || forms.info.$submitted) && forms.info.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="0" name="timeout" placeholder="{{\'APPLICATION_PORT\' | translate}}" class="form-control" data-ng-model="account.timeout" required/>\n <span data-ng-show="(forms.info.timeout.$touched || forms.info.$submitted) && forms.info.timeout.$invalid && forms.info.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.timeout.$touched || forms.info.$submitted) && forms.info.timeout.$invalid && forms.info.timeout.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div> -->\n <!-- END TIMEOUT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="account.description"/>\n </div>\n <!-- END DESCRIPTION -->\n <!-- START TWILIO -->\n <!-- START PHONE -->\n <div ng-if= "account.type == \'twilio\'" class="form-group" data-ng-class="{\'has-error\': ( forms.info.phone.$touched ||forms.info.$submitted) && forms.info.phone.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" ng-pattern="/^[\\+]?[0-9]+$/" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="account.phone" name="phone" required/>\n <span data-ng-show="(forms.info.phone.$touched || forms.in.$submitted) && forms.info.phone.$invalid && forms.info.phone.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PHONE -->\n\n <!-- START SID -->\n <div ng-if= "account.type == \'twilio\'" class="form-group" data-ng-class="{\'has-error\': (forms.info.sid.$touched || forms.info.$submitted) && forms.info.sid.$invalid}">\n <label class="control-label">{{\'APPLICATION_SID\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="sid" placeholder="{{\'APPLICATION_SID\' | translate}}" class="form-control" data-ng-model="account.sid" name="sid" required/>\n <span data-ng-show="(forms.info.sid.$touched || forms.info.$submitted) && forms.info.sid.$invalid && forms.info.sid.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SID -->\n <!-- START TOKEN -->\n <div ng-if= "account.type == \'twilio\'" class="form-group" data-ng-class="{\'has-error\': (forms.info.token.$touched || forms.info.$submitted) && forms.info.token.$invalid}">\n <label class="control-label">{{\'APPLICATION_TOKEN\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="token" placeholder="{{\'APPLICATION_TOKEN\' | translate}}" class="form-control" data-ng-model="account.token" name="token" required/>\n <span data-ng-show="(forms.info.token.$touched || forms.info.$submitted) && forms.info.token.$invalid && forms.info.token.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SID -->\n <!-- END TWILIO -->\n <!-- START SKEBBY -->\n <!-- START SKEBBY SMS TYPE -->\n <div ng-if= " account.type == \'skebby\'" class="form-group" data-ng-class="{\'has-error\': (forms.info.smstype.$touched || forms.info.$submitted) && forms.info.smstype.$invalid}">\n <label class="control-label">{{\'APPLICATION_SMS_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="account.smstype" name="smstype" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'SMS_TYPE\' | translate}}">{{$select.selected | uppercase}}</ui-select-match>\n <ui-select-choices repeat="smstype in [\'basic\',\'classic\',\'classic+\'] | filter: $select.search">\n <div data-ng-bind="smstype | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.info.smstype.$touched || forms.info.$submitted) && forms.info.smstype.$invalid && forms.info.smstype.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SKEBBY SMS TYPE -->\n <!-- START PHONE -->\n <div ng-if= "account.type == \'skebby\' " class="form-group" data-ng-class="{\'has-error\': ( forms.info.phone.$touched ||forms.info.$submitted) && forms.info.phone.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}<span class="required" aria-required="true"></span></label>\n <input type="text" ng-pattern="/^[0-9]+$/" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="account.phone" name="phone" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_PHONE_NUMBER\' | translate }}\n </span>\n <span data-ng-show="(forms.info.phone.$touched || forms.in.$submitted) && forms.info.phone.$invalid && forms.info.phone.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PHONE -->\n <!-- START USERNAME -->\n <div ng-if= "account.type == \'skebby\'" class="form-group" data-ng-class="{\'has-error\': (forms.info.username.$touched || forms.info.$submitted) && forms.info.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="account.username" name="username" required/>\n <span data-ng-show="(forms.info.username.$touched || forms.info.$submitted) && forms.info.username.$invalid && forms.info.username.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START PASSWORD -->\n <div ng-if= "account.type == \'skebby\'" class="form-group" data-ng-class="{\'has-error\': (forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="account.password" required/>\n <span data-ng-show="(forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$invalid && forms.info.password.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n <!-- END SKEBBY -->\n <!-- START REMOTE IP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.remote.$touched || forms.info.$submitted) && forms.info.remote.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remote" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="account.remote" required/>\n <span class="help-block help-block-info">\n {{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n </span>\n <span data-ng-show="(forms.info.remote.$touched || forms.info.$submitted) && forms.info.remote.$invalid && forms.info.remote.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END REMOTE IP -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/sms/account/view/view.html",'<!-- BEGIN PAGE HEADER-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="glyphicon glyphicon-comment"></i>\n <a href="#">{{ \'APPLICATION_SMS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-notebook"></i>\n <a href="/channels/sms/accounts/list">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a>\n <i class="fa fa-angle-right" data-ng-show="account"></i>\n </li>\n <li data-ng-show="account">\n <a href="#">{{ account.description || account.name }}</a>\n </li>\n </ul>\n </div>\n\n<!-- END PAGE HEADER-->\n\n<!-- BEGIN PAGE CONTENT-->\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET main.channels -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img ng-src="assets/images/media/account.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{ account.description || account.name }}\n </div>\n <div class="profile-usertitle-job">\n {{account.email}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li ng-class="{active: $state.is(\'main.channels.sms.accounts.view.settings\')}">\n <a href="/channels/sms/accounts/view/{{account.id}}/settings">\n <i class="icon-settings"></i>\n {{\'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.is(\'main.channels.sms.accounts.view.api\')}">\n <a href="/channels/sms/accounts/view/{{account.id}}/api">\n <i class="fa fa-external-link"></i>\n {{\'APPLICATION_API\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.is(\'main.channels.sms.accounts.view.hooks\')}">\n <a href="/channels/sms/accounts/view/{{account.id}}/hooks">\n <i class="fa fa-code"></i>\n {{\'APPLICATION_HOOKS\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.is(\'main.channels.sms.accounts.view.dispositions\')}">\n <a href="/channels/sms/accounts/view/{{account.id}}/dispositions">\n <i class="icon-target"></i>\n {{\'APPLICATION_DISPOSITIONS\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.includes(\'main.channels.sms.accounts.view.actions\')}">\n <a href="/channels/sms/accounts/view/{{account.id}}/actions/list">\n <i class="icon-directions"></i>\n {{\'APPLICATION_ACTIONS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <div ui-view class="profile-content"></div>\n <!-- END PROFILE CONTENT -->\n </div>\n<!-- END PAGE CONTENT-->\n</div>\n'),a.put("app/channels/sms/account/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERALS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.info" data-ng-submit="forms.info.$valid && updateItemSmsAccount()" novalidate>\n <!-- START ID -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_ID\' | translate}}<span class="required" aria-required="true">*</span>\n </label>\n <input type="text" name="id" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.id" ng-disabled="true" required/>\n </div>\n <!-- END ID-->\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.name" required/>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid && forms.info.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n <!-- START LIST -->\n <div class="form-group" data-ng-if="license.cm">\n <label class="control-label">{{\'APPLICATION_LIST\' | translate}}</label>\n <div class="input-group">\n\n <ui-select data-ng-model="account.ListId" name="list" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_LIST\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="list.id as list in lists | filter: $select.search">\n <div ng-bind-html="list.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n\n <span class="input-group-btn">\n <button type="button" data-ng-click="account.ListId = null" class="btn btn-default">\n <span class="glyphicon glyphicon-trash"></span>\n </button>\n </span>\n\n </div>\n </div>\n <!-- END LIST -->\n\n\n <!-- START FIDELITY -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_FIDELITY\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n data-ng-model="account.fidelity"\n type="checkbox"\n name="auth"\n switch-active="{{ recordSwitch.isActive }}"\n switch-on-text="{{ recordSwitch.onText }}"\n switch-off-text="{{ recordSwitch.offText }}"\n switch-on-color="{{ recordSwitch.onColor }}"\n switch-off-color="{{ recordSwitch.offColor }}"\n switch-animate="{{ recordSwitch.animate }}"\n switch-size="{{ recordSwitch.size }}"\n switch-label="{{ recordSwitch.label }}"\n switch-icon="{{ recordSwitch.icon }}"\n switch-radio-off="{{ recordSwitch.radioOff }}"\n switch-label-width="{{ recordSwitch.labelWidth }}"\n switch-handle-width="{{ recordSwitch.handleWidth }}">\n </div>\n <!-- END FIDELITY -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-if="account.fidelity" data-ng-class="{\'has-error\': (forms.info.timeout.$touched || forms.info.$submitted) && forms.info.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="0" name="timeout" placeholder="{{\'APPLICATION_PORT\' | translate}}" class="form-control" data-ng-model="account.timeout" required/>\n <span data-ng-show="(forms.info.timeout.$touched || forms.info.$submitted) && forms.info.timeout.$invalid && forms.info.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.timeout.$touched || forms.info.$submitted) && forms.info.timeout.$invalid && forms.info.timeout.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="account.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START PHONE FOR TWILLIO ACCOUNT -->\n\n <div ng-if= "account.type == \'twilio\'" class="form-group" data-ng-class="{\'has-error\': ( forms.info.phone.$touched ||forms.info.$submitted) && forms.info.phone.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" ng-pattern="/^[\\+]?[0-9]+$/" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="account.phone" name="phone" required/>\n<!-- Format with a \'+\' and country code -->\n <!-- <span class="help-block">\n {{ \'DESCRIPTION_PHONE_NUMBER\' | translate }}\n </span> -->\n <span data-ng-show="(forms.info.phone.$touched || forms.in.$submitted) && forms.info.phone.$invalid && forms.info.phone.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PHONE FOR TWILLIO ACCOUNT -->\n\n <!-- START SID -->\n <div ng-if= "account.type == \'twilio\'" class="form-group" data-ng-class="{\'has-error\': (forms.info.sid.$touched || forms.info.$submitted) && forms.info.sid.$invalid}">\n <label class="control-label">{{\'APPLICATION_SID\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="sid" placeholder="{{\'APPLICATION_SID\' | translate}}" class="form-control" data-ng-model="account.sid" name="sid" required/>\n <span data-ng-show="(forms.info.sid.$touched || forms.info.$submitted) && forms.info.sid.$invalid && forms.info.sid.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SID -->\n <!-- START TOKEN -->\n <div ng-if= "account.type == \'twilio\'" class="form-group" data-ng-class="{\'has-error\': (forms.info.token.$touched || forms.info.$submitted) && forms.info.token.$invalid}">\n <label class="control-label">{{\'APPLICATION_TOKEN\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="token" placeholder="{{\'APPLICATION_TOKEN\' | translate}}" class="form-control" data-ng-model="account.token" name="token" required/>\n <span data-ng-show="(forms.info.token.$touched || forms.info.$submitted) && forms.info.token.$invalid && forms.info.token.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SID -->\n\n <!-- START SMS TYPE -->\n\n <div ng-if= " account.type == \'skebby\'" class="form-group" data-ng-class="{\'has-error\': (forms.info.smstype.$touched || forms.info.$submitted) && forms.info.smstype.$invalid}">\n <label class="control-label">{{\'APPLICATION_SMS_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="account.smstype" name="smstype" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'SMS_TYPE\' | translate}}">{{$select.selected | uppercase}}</ui-select-match>\n <ui-select-choices repeat="smstype in [\'basic\',\'classic\',\'classic+\'] | filter: $select.search">\n <div data-ng-bind="smstype | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.info.smstype.$touched || forms.info.$submitted) && forms.info.smstype.$invalid && forms.info.smstype.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TYPE -->\n <!-- START PHONE FOR SKEBBY ACCOUNT -->\n <div ng-if= "account.type == \'skebby\' " class="form-group" data-ng-class="{\'has-error\': ( forms.info.phone.$touched ||forms.info.$submitted) && forms.info.phone.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}<span class="required" aria-required="true"></span></label>\n <input type="text" ng-pattern="/^[0-9]+$/" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="account.phone" name="phone" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_PHONE_NUMBER\' | translate }}\n </span>\n <span data-ng-show="(forms.info.phone.$touched || forms.in.$submitted) && forms.info.phone.$invalid && forms.info.phone.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PHONE -->\n <!-- START USERNAME -->\n <div ng-if= "account.type == \'skebby\'" class="form-group" data-ng-class="{\'has-error\': (forms.info.username.$touched || forms.info.$submitted) && forms.info.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="account.username" name="username" required/>\n <span data-ng-show="(forms.info.username.$touched || forms.info.$submitted) && forms.info.username.$invalid && forms.info.username.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START PASSWORD -->\n <div ng-if= "account.type == \'skebby\'" class="form-group" data-ng-class="{\'has-error\': (forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="account.password" required/>\n <span data-ng-show="(forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$invalid && forms.info.password.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n <!-- START REMOTE IP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.remote.$touched || forms.info.$submitted) && forms.info.remote.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remote" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="account.remote" required/>\n <span data-ng-show="(forms.info.remote.$touched || forms.info.$submitted) && forms.info.remote.$invalid && forms.info.remote.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END REMOTE IP -->\n <!-- START CALLBACK URL -->\n <div ng-show="!forms.info.remote.$invalid" class="row" >\n <!-- <div class="row"> -->\n <div class="col-md-12">\n <label class="control-label">URL </label><br>\n <span ng-if= "account.type == \'twilio\' || account.type == \'skebby\'">\n Copy the following url and insert it into your {{account.type}} account settings to receive sms.\n <a href="https://wiki.xcallymotion.com/display/XMD/SMS" target="_blank">Detail</a>\n </span>\n </div>\n </div>\n <br>\n <div ng-show="!forms.info.remote.$invalid" class="row" >\n <div class="col-md-11">\n <code-mirror model="receiveurl"></code-mirror>\n </div>\n <div class="col-md-1">\n <a class="btn btn-sm green-jungle" data-ng-click="copyToClipboard(receiveurl);"><i class="fa fa-clipboard"></i>\n </a>\n </div>\n </div>\n <!-- END CALLACK URL -->\n <!-- START DELIVERY CALLBACK URL -->\n <div ng-if= "account.smstype == \'classic+\'" class="row" ng-show="!forms.info.remote.$invalid">\n <div class="col-md-12">\n <label class="control-label">Delivery URL </label><br>\n Copy the following url and insert it into your {{account.type}} account settings to receive delivery status.\n <a href="https://wiki.xcallymotion.com/display/XMD/SMS" target="_blank">Detail</a>\n </div>\n </div>\n <br>\n <div ng-if= "account.smstype == \'classic+\'" class="row" ng-show="!forms.info.remote.$invalid">\n <div class="col-md-11">\n <code-mirror class="control-label" model="deliveryurl"></code-mirror>\n </div>\n <div class="col-md-1">\n <a class="btn btn-sm green-jungle" data-ng-click="copyToClipboard(deliveryurl);"><i class="fa fa-clipboard"></i>\n </a>\n </div>\n </div>\n <!-- END DELIVERY CALLACK URL -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'), +a.put("app/channels/sms/account/wizard/wizard.html",'\n<div class="row" data-ng-init="initWizard()">\n <div class="col-md-12">\n <!-- BEGIN PAGE HEADER-->\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="glyphicon glyphicon-comment"></i>\n <a href="#">{{ \'APPLICATION_SMS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-notebook"></i>\n <a href="/channels/sms/accounts/list">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n <!-- END PAGE HEADER-->\n\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACCOUNT\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_ACCOUNT_INFO\' | translate}}" canexit="formValidation(forms.info.$valid)">\n <form name="forms.info" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid && forms.info.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n <!-- START APPLICATION TYPE -->\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.type.$touched || forms.info.$submitted) && forms.info.type.$invalid}">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.type" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_TYPE\' | translate}}">{{$select.selected | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type in [\'twilio\',\'skebby\'] | filter: $select.search">\n <div data-ng-bind="type | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.info.type.$touched || forms.info.$submitted) && forms.info.type.$invalid && forms.info.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TYPE -->\n <!-- START PHONE FOR TWILLIO ACCOUNT -->\n <div ng-if= "item.type == \'twilio\'" class="form-group" data-ng-class="{\'has-error\': ( forms.info.phone.$touched ||forms.info.$submitted) && forms.info.phone.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" ng-pattern="/^[\\+]?[0-9]+$/" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="item.phone" name="phone" required/>\n <span data-ng-show="(forms.info.phone.$touched || forms.info.$submitted) && forms.info.phone.$invalid && forms.info.phone.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PHONE FOR TWILLIO ACCOUNT -->\n <!-- START SID -->\n <div ng-if= "item.type == \'twilio\'" class="form-group" data-ng-class="{\'has-error\': ( forms.info.sid.$touched ||forms.info.$submitted) && forms.info.sid.$invalid}">\n <label class="control-label">{{\'APPLICATION_SID\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" placeholder="{{\'APPLICATION_SID\' | translate}}" class="form-control" data-ng-model="item.sid" name="sid" required/>\n <span data-ng-show="(forms.info.sid.$touched || forms.info.$submitted) && forms.info.sid.$invalid && forms.info.sid.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SID -->\n <!-- START TOKEN -->\n <div ng-if= "item.type == \'twilio\'" class="form-group" data-ng-class="{\'has-error\': (forms.info.token.$touched || forms.info.$submitted) && forms.info.token.$invalid}">\n <label class="control-label">{{\'APPLICATION_TOKEN\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" placeholder="{{\'APPLICATION_TOKEN\' | translate}}" class="form-control" data-ng-model="item.token" name="token" required/>\n <span data-ng-show="(forms.info.token.$touched || forms.info.$submitted) && forms.info.token.$invalid && forms.info.token.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SID -->\n\n <!-- START SMS TYPE -->\n <div ng-if= " item.type == \'skebby\'" class="form-group" data-ng-class="{\'has-error\': (forms.info.smstype.$touched || forms.info.$submitted) && forms.info.smstype.$invalid}">\n <label class="control-label">{{\'APPLICATION_SMS_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.smstype" name="smstype" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'SMS_TYPE\' | translate}}">{{$select.selected | uppercase}}</ui-select-match>\n <ui-select-choices repeat="smstype in [\'basic\',\'classic\',\'classic+\'] | filter: $select.search">\n <div data-ng-bind="smstype | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.info.smstype.$touched || forms.info.$submitted) && forms.info.smstype.$invalid && forms.info.smstype.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TYPE -->\n <!-- START PHONE FOR SKEBBY ACCOUNT -->\n <div ng-if= "item.type == \'skebby\' " class="form-group" data-ng-class="{\'has-error\': ( forms.info.phone.$touched ||forms.info.$submitted) && forms.info.phone.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}<span class="required" aria-required="true"></span></label>\n <input type="text" ng-pattern="/^[0-9]+$/" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="item.phone" name="phone" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_PHONE_NUMBER\' | translate }}\n </span>\n <span data-ng-show="(forms.info.phone.$touched || forms.info.$submitted) && forms.info.phone.$invalid && forms.info.phone.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PHONE -->\n <!-- START USERNAME -->\n <div ng-if= "item.type == \'skebby\'" class="form-group" data-ng-class="{\'has-error\': (forms.info.username.$touched || forms.info.$submitted) && forms.info.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="item.username" name="username" required/>\n <span data-ng-show="(forms.info.username.$touched || forms.info.$submitted) && forms.info.username.$invalid && forms.info.username.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n <!-- START PASSWORD -->\n <div ng-if= "item.type == \'skebby\'" class="form-group" data-ng-class="{\'has-error\': (forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.password" required/>\n <span data-ng-show="(forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$invalid && forms.info.password.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n <!-- START REMOTE IP -->\n <div ng-if= "item.type" class="form-group" data-ng-class="{\'has-error\': (forms.info.remote.$touched || forms.info.$submitted) && forms.info.remote.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remote" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.remote" required/>\n <span class="help-block help-block-info">\n {{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n </span>\n <span data-ng-show="(forms.info.remote.$touched || forms.info.$submitted) && forms.info.remote.$invalid && forms.info.remote.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END REMOTE IP -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" data-ng-click="goNext()"/>\n </form>\n </wz-step>\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/sms/inbox/room/room.directive.html",'<!-- BEGIN TODO CONTENT -->\n\n<div class="todo-content">\n <div class="portlet light">\n <div class="portlet-title">\n <div class="caption">\n <button class="btn btn-sm btn-default green-meadow" data-ng-if="SmsRoom.status !== \'CLOSED\'" data-ng-disabled="!form.body || forms.compose.from.$invalid || forms.compose.to.$invalid" data-ng-click="sendSMS()">\n <i class="icon-paper-plane" style="color: white;"></i> {{\'APPLICATION_SEND\' | translate}}\n </button>\n <span data-ng-show="SmsRoom && SmsRoom.status !== \'CLOSED\'"> | </span>\n <span data-ng-show="SmsRoom" class="label label-default">#{{SmsRoom.id}} {{SmsRoom.status}}</span>\n <span data-ng-if="SmsRoom && SmsRoom.ParentId"> | </span>\n <span data-ng-if="SmsRoom && SmsRoom.ParentId" class="label label-warning"> Ref: <a data-ng-click="openRoom(SmsRoom.ParentId,SmsRoom.contact)">#{{SmsRoom.ParentId}}</a></span>\n </div>\n <div class="actions" data-ng-switch="SmsRoom.status">\n <button class="btn btn-icon-only" data-ng-show="SmsRoom" data-ng-class="{\'btn-success\':SmsRoom.status !== \'CLOSED\',\'grey-cascade\':SmsRoom.status === \'CLOSED\'}" data-ng-click="closeRoom(SmsRoom.id)" data-ng-disabled="SmsRoom.status === \'CLOSED\' && SmsRoom.disposition">\n <i data-ng-class="{\'fa fa-upload\':SmsRoom.status !== \'CLOSED\',\'icon-target\':SmsRoom.status === \'CLOSED\'}"></i>\n </button>\n <button class="btn default btn-icon-only" data-ng-if="SmsRoom && SmsRoom.status !== \'CLOSED\'" type="button" data-ng-click="togglePanelLeft()" title="{{\'APPLICATION_RESIZE\' | translate}}">\n <i ng-class="panelRight == \'col-md-12\' ? \'icon-size-actual\' : \'icon-size-fullscreen\'"></i>\n </button>\n </div>\n </div>\n <div class="portlet-body">\n <div class="row">\n <div data-ng-show="panelLeft" data-ng-class="panelLeft">\n <div class="form">\n <!-- START TAGS -->\n <div class="form-group" data-ng-if="SmsRoom.status !== \'CLOSED\' || (SmsRoom.status == \'CLOSED\' && form.tags.length)">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-tags" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <ui-select data-ng-disabled="SmsRoom.status == \'CLOSED\'" multiple data-ng-model="form.tags" theme="bootstrap" on-select="onChanged($item, $model)" on-remove="onChanged($item, $model)">\n <ui-select-match placeholder="Tags...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter:$select.search" class="">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n <!-- END TAGS -->\n </div>\n <hr data-ng-if="SmsRoom && SmsRoom.status !== \'CLOSED\'">\n\n <div ng-scrollbars ng-scrollbars-config="{\n autoHideScrollbar: false,\n theme: \'light\',\n advanced: {\n updateOnContentResize: true\n },\n setHeight: 781,\n scrollInertia: 0\n }">\n <ul class="chats">\n <li data-ng-switch="SmsRoom.status" data-ng-class="{\'in\': smsMessage.status == \'RECEIVED\', \'out\': smsMessage.status == \'SENT\' || smsMessage.status == \'SENDING\' || smsMessage.status == \'FAILED\' || smsMessage.status == \'NOTE\' || smsMessage.status == \'DELIVERED\' || smsMessage.status == \'QUEUED\' || smsMessage.status != \'RECEIVED\' }" data-ng-repeat="smsMessage in SmsRoom.SmsMessages | orderBy:\'-createdAt\'">\n <div class="avatar" data-ng-class="smsMessage.UserId ? \'pretty-avatar\' : \'pretty-avatar-v\'">\n <ng-letter-avatar\n data-ng-if="smsMessage.UserId"\n height="40"\n width="40"\n fontsize="25"\n data="{{smsMessage.User.fullname}}"\n avatarcustombgcolor="#B0B0B0"\n avatarcustomborder="border:2px solid #3399CC"\n charCount="2"\n shape="round"></ng-letter-avatar>\n <ng-letter-avatar\n data-ng-if="!smsMessage.UserId"\n height="40"\n width="40"\n fontsize="25"\n data="{{smsMessage.from}}"\n avatarcustombgcolor="#B0B0B0"\n avatarcustomborder="border:2px solid #EA4C61"\n charCount="1"\n shape="round"></ng-letter-avatar>\n </div>\n <sms message="smsMessage" list-id="SmsRoom.SmsAccount.ListId" accounttype=\'SmsRoom.SmsAccount.type\' ng-switch-default></sms>\n </li>\n </ul>\n </div>\n </div>\n <div data-ng-class="panelRight">\n <div class="note note-info" data-ng-if="SmsRoom && SmsRoom.status == \'CLOSED\'">\n <h4 class="block">Info! {{\'MESSAGE_SMS_ROOM_CLOSED\' | translate}}</h4>\n <p>\n {{\'MESSAGE_SMS_ROOM_CLOSED_DETAILS\' | translate}}.\n </p>\n <hr>\n <p>\n <i class="icon-target"></i> {{\'APPLICATION_DISPOSITION\' | translate}}: <strong>{{SmsRoom.disposition}}</strong>\n </p>\n <p>\n <i class="icon-calendar"></i> {{\'APPLICATION_UPDATED_AT\' | translate}}: <strong>{{SmsRoom.updatedAt | date:\'medium\'}}</strong> (<span am-time-ago="SmsRoom.updatedAt"></span>)\n </p>\n </div>\n <form name="forms.compose" data-ng-submit="forms.compose.$valid && sendSMS()" class="form-horizontal" novalidate>\n <!-- START HEAD -->\n <div class="form">\n\n <!-- START FROM -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.compose.from.$invalid && forms.compose.$submitted}" data-ng-if="SmsRoom.status !== \'CLOSED\'">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <label class="control-label">From:</label>\n </div>\n <div class="col-md-11">\n <ui-select data-ng-disabled="SmsRoom" theme="bootstrap" name="from" data-ng-model="form.from" required>\n <ui-select-match placeholder="From...">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="smsAccount.phone as smsAccount in smsAccounts | filter: $select.search">\n <div data-ng-bind-html="smsAccount.name | highlight: $select.search"></div>\n <small data-ng-bind-html="smsAccount.phone | highlight: $select.search"></small>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.compose.from.$invalid && forms.compose.$submitted " class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n <!-- END FROM -->\n <!-- START TO -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.compose.to.$invalid && forms.compose.$submitted}" data-ng-if="SmsRoom.status !== \'CLOSED\'">\n\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <label class="control-label">To:</label>\n </div>\n <div class="col-md-11">\n <input type="text" ng-pattern="/^[\\+]?[0-9]+$/" name="to" class="form-control todo-taskbody-taskdesc" placeholder="To..." rows="8" data-ng-disabled="SmsRoom" data-ng-model="form.to" required>\n <span data-ng-show="forms.compose.to.$invalid && forms.compose.$submitted " class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n <!-- END TO -->\n <!-- START CANNED -->\n <div class="form-group" data-ng-if="SmsRoom.status !== \'CLOSED\'">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-magic" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <input type="text"\n data-ng-model="modelOptions.selectedAnswer"\n uib-typeahead="key for key in getAnswers($viewValue)"\n placeholder="Canned answers.."\n typeahead-loading="loadingLocations"\n typeahead-no-results="noResults"\n typeahead-on-select="onSelect($item)"\n class="form-control">\n <i ng-show="loadingLocations" class="glyphicon glyphicon-refresh"></i>\n <div ng-show="noResults">\n <i class="glyphicon glyphicon-remove"></i> No Results Found\n </div>\n </div>\n </div>\n\n </div>\n <!-- END CANNED -->\n <!-- START message -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.compose.body.$invalid && forms.compose.$submitted}" data-ng-if="SmsRoom.status !== \'CLOSED\'">\n <div class="col-md-12">\n <textarea id="text" class="form-control maxlength-handler" rows="8" maxlength="160" name="body" data-ng-model="form.body" ></textarea>\n <button id="btnPost" type="button" class="btn btn-success pull-right" ng-class="{\'btn-warning\': form.body.length >= 120, \'btn-danger\': form.body.length >= 141 }">{{ 160 - form.body.length }}</button>\n <span class="help-block"> Max 160 chars</span>\n <span data-ng-show="forms.compose.body.$invalid && forms.compose.$submitted " class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n </div>\n </div>\n\n <!-- END message -->\n </div>\n </form>\n </div>\n </div>\n </div>\n </div>\n</div>\n<!-- END TODO CONTENT -->\n"),a.put("app/channels/sms/inbox/sms/info.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_INFO\' | translate }}</h3>\n</div>\n<div class="modal-body" data-ng-init="initInfo()" style=" overflow-x: auto;">\n <div class="form-group" ng-if="data">\n <json-formatter json="data" open="1"></json-formatter>\n </div>\n <div class="note note-warning" data-ng-hide="data">\n <p>\n {{ \'MESSAGE_NO_INFO_AVAILABLE\' | translate }}\n </p>\n </div>\n\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/channels/sms/inbox/sms/sms.html",'<div class="message">\n <div class="row">\n <div class="col-md-6">\n <span class="bold">From: </span>\n [<a href="" data-ng-click="openContact(smsMessage.from)">{{smsMessage.from}}</a>]\n <br>\n <span class="bold">To: </span>\n [<a href="" data-ng-click="openContact(smsMessage.to)">{{smsMessage.to}}</a>]\n <br>\n </div>\n <div class="col-md-6">\n <span class="pull-right" data-ng-if="smsMessage.User">{{\'APPLICATION_SENT_BY\' | translate}}: <strong>{{smsMessage.User.fullname}}</strong></span>\n <span class="pull-right" data-ng-if="smsMessage.source">{{\'APPLICATION_SENT_BY\' | translate}}: <strong>Cally ²</strong>\n <a ng-click="info(smsMessage.source)"><i class="icon-info font-blue"></i>\n </a>\n </div>\n </div>\n\n <br>\n <span class="todo-tasklist-date">\n <span class="pull-right" data-ng-switch="smsMessage.status">\n <a ng-switch-when="RECEIVED" href="#" class="btn default btn-xs inactive-link green-stripe"> {{smsMessage.status | uppercase}}\n <i class="fa fa-check"></i>\n </a>\n <a ng-switch-when="SENT" href="#" class="btn default btn-xs inactive-link green-stripe"> {{smsMessage.status | uppercase}}\n <i class="fa fa-check"></i>\n </a>\n <a ng-switch-when="DELIVERED" href="#" class="btn default btn-xs inactive-link green-stripe"> {{smsMessage.status | uppercase}}\n <i class="fa fa-check"></i>\n </a>\n <a ng-switch-when="SENDING" href="#" class="btn default btn-xs inactive-link blue-stripe" > {{smsMessage.status | uppercase}}\n <i class="fa fa-warning"></i>\n </a>\n <a ng-switch-when="FAILED" href="#" class="btn default btn-xs red-stripe" data-ng-click="info(null,smsMessage.res_data)"> {{smsMessage.status | uppercase}}\n <i class="fa fa-times"></i>\n </a>\n <a ng-switch-default href="#" class="btn default btn-xs"> {{smsMessage.status | uppercase}}\n </a>\n <br>\n <!-- <a ng-href="https://www.twilio.com/docs/errors/{{smsMessage.errorcode}}" target="_blank" ng-if="(smsMessage.errorcode) && (accounttype==\'twilio\')">Error Code:{{smsMessage.errorcode}}</a>\n <a ng-href="{{smsMessage.errorcode.length > 2 ? \'http://www.skebby.com/sms-api/sms-gateway/developers-docs/#receiveNotifySection\' : \'http://www.skebby.com/sms-api/sms-gateway/developers-docs/#errorCodesSection\'}}" target="_blank" ng-if="(smsMessage.errorcode != 1) && (smsMessage.errorcode) && (accounttype==\'skebby\')">Error Code:{{smsMessage.errorcode}}</a> -->\n </span>\n\n <i class="icon-calendar" title="{{smsMessage.updatedAt | date:\'MMM d, y HH:mm:ss\'}}"></i> <span am-time-ago="smsMessage.updatedAt"></span>\n </span>\n <hr>\n <span class="body text-left" data-ng-bind-html="smsMessage.body" style="white-space: pre-wrap;"></span>\n\n </div>\n'),a.put("app/channels/sms/inbox/view/account/list/list.html",'<!-- BEGIN Portlet PORTLET-->\n<div class="portlet light" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption">\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'NEW\'" uib-uncheckable>NEW</button>\n </div>\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'OPEN\'" uib-uncheckable>OPEN</button>\n </div>\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'PENDING\'" uib-uncheckable>PENDING</button>\n </div>\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'CLOSED\'" uib-uncheckable>CLOSED</button>\n </div>\n </div>\n <div class="actions">\n <a href="#" class="btn btn-icon-only default" data-ng-click="getPage();">\n <i class="fa fa-refresh"></i>\n </a>\n <a href="#" class="btn btn-icon-only red" data-ng-click="deleteItems();" data-ng-show="id.length && isAdmin">\n <i class="fa fa-trash"></i>\n </a>\n <a href="#" class="btn btn-icon-only btn-success" data-ng-click="disposeItems();" data-ng-show="id.length">\n <i class="fa fa-upload"></i>\n </a>\n <a href="#" class="btn btn-icon-only blue" data-ng-click="tagItems();" data-ng-show="id.length">\n <i class="fa fa-tags"></i>\n </a>\n <a href="#" class="btn btn-icon-only green" data-ng-click="openRoom(null, \'New Message\')">\n <i class="fa fa-plus"></i>\n </a>\n </div>\n </div>\n <div class="portlet-title" data-ng-show="tags.length">\n <!-- START TAGS -->\n <div class="form-group">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-tags" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <ui-select multiple data-ng-model="query.tags" theme="bootstrap" on-select="onChanged($item, $model)" on-remove="onChanged($item, $model)">\n <ui-select-match placeholder="Search by tag...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter:$select.search">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n <!-- END TAGS -->\n </div>\n <div class="portlet-body">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="false"></span>\n <!-- END UI-GRID SPINNER -->\n\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-pagination ui-grid-selection ui-grid-exporter class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END Portlet PORTLET-->\n'),a.put("app/channels/sms/inbox/view/view.agents.modal.html",'<div class="modal-header" data-ng-init="initModal()">\n <h3 class="modal-title">{{ \'APPLICATION_AGENTS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <!-- START TRANSPORT -->\n <div class="form-group">\n <form name="form" novalidate>\n <!-- START TRANSPORT -->\n <div class="form-group">\n <ui-select multiple name="agents" data-ng-model="item.agents" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_AGENTS\' | translate}}">{{$item.fullname}}</ui-select-match>\n <ui-select-choices repeat="agent.id as agent in agents | filter: $select.search">\n {{agent.fullname}}\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END TRANSPORT -->\n </form>\n </div>\n <!-- END TRANSPORT -->\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/sms/inbox/view/view.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="glyphicon glyphicon-comment"></i>\n <a href="#">{{ \'APPLICATION_SMS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-note"></i>\n <a href="/channels/sms/inbox/list">{{ \'APPLICATION_INBOX\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row inbox" data-ng-init="initView()">\n <div class="col-md-3">\n <ul class="inbox-nav margin-bottom-10">\n <li data-ng-class="{active: $stateParams.id == smsAccount.id}" data-ng-repeat="smsAccount in smsAccounts">\n <a href="/channels/sms/inbox/view/account/{{smsAccount.id}}/list" class="btn">\n <i class="icon-notebook"></i> {{smsAccount.name}}\n </a>\n <b></b>\n </li>\n </ul>\n </div>\n\n <div class="col-md-9" >\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view>\n <div class="note note-info">\n <h4 class="block">Info! {{\'APPLICATION_NO_ACCOUNT_SELECTED\' | translate}}</h4>\n </div>\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/sms/inbox/view/view.status.modal.html",'<div class="modal-header">\n <button ng-if="modal.dismissable" type="button" ng-click="$dismiss()" class="close">×</button>\n <h4 ng-if="modal.title" ng-bind="modal.title | translate" class="modal-title"></h4>\n</div>\n<div class="modal-body">\n <p ng-if="modal.text && !closed" ng-bind="modal.text | translate"></p>\n <form name="form" novalidate data-ng-init="initDisposition()">\n <div class="form-group">\n <ui-select data-ng-model="item.disposition" name="list" theme="bootstrap" data-ng-disabled="!dispositions.length" required>\n <ui-select-match placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="disposition.name as disposition in dispositions | filter: $select.search">\n <div ng-bind-html="disposition.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="note note-warning" data-ng-hide="dispositions.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_DISPOSITIONS_AVAILABLE\' | translate }}\n </p>\n </div>\n</form>\n <!-- <div ng-if="modal.html" ng-bind-html="modal.html"></div> -->\n</div>\n<div class="modal-footer">\n <button class="btn btn-danger" type="button" ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n <!-- <button ng-repeat="button in modal.buttons" ng-class="button.classes" ng-click="button.click($event)" ng-bind="button.text" class="btn"></button> -->\n</div>\n'), +a.put("app/channels/sms/inbox/view/view.tags.modal.html",'<div class="modal-header" data-ng-init="initModal()">\n <h3 class="modal-title">{{ \'APPLICATION_TAGS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <!-- START TRANSPORT -->\n <div class="form-group">\n <form name="form" novalidate>\n <!-- START TAGS -->\n <div class="form-group">\n <ui-select multiple data-ng-model="item.tags" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_TAGS\' | translate}}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter: $select.search">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END TAGS -->\n </form>\n </div>\n <!-- END TRANSPORT -->\n</div>\n<div class="modal-footer">\n <button type="button" class="btn" data-ng-class="button.class" data-ng-click="button.click()"data-ng-repeat="button in modal.buttons">{{button.text | translate}}</button>\n <!-- <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button> -->\n</div>\n'),a.put("app/channels/sms/inbox/view/view.templates.modal.html",'<div class="modal-header" data-ng-init="initModal()">\n <h3 class="modal-title">{{ \'APPLICATION_TEMPLATES\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <div class="note note-info" data-ng-show="!templates.length">\n <h4 class="block">Info!</h4>\n <p>\n {{\'MESSAGE_NO_TEMPLATES_AVAILABLE\' | translate}}\n </p>\n </div>\n <form name="form" data-ng-show="templates.length" novalidate>\n <div class="form-group">\n <ui-select data-ng-model="item.template" theme="bootstrap">\n <ui-select-match placeholder="Select a template in the list or search his name...">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template in templates | propsFilter: {name: $select.search}">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n <small data-ng-show="template.description">\n {{\'APPLICATION_DESCRIPTION\' | translate}}: {{template.description}}\n </small>\n </ui-select-choices>\n </ui-select>\n </div>\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()" data-ng-show="templates.length">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/sms/queue/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_QUEUE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" data-ng-pattern="settings.patternName" required />\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$invalid && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$invalid && form.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START STRATEGY -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.strategy.$touched || form.$submitted) && form.strategy.$invalid}">\n <label class="control-label">{{\'APPLICATION_STRATEGY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.strategy" name="strategy" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.toUpperCase()}}</ui-select-match>\n <ui-select-choices repeat="strategy in strategies | filter: $select.search">\n <div ng-bind-html="strategy.toUpperCase() | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.strategy.$touched || form.$submitted) && form.strategy.$invalid && form.strategy.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END STRATEGY -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.timeout.$touched || form.$submitted) && form.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="0" name="timeout" placeholder="Timeout" class="form-control" data-ng-model="item.timeout" required min="1"/>\n <span data-ng-show="(form.timeout.$touched || form.$submitted) && form.timeout.$invalid && form.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START AGENTS-->\n <div class="form-body" data-ng-init="getTeams()">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="item.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="item.penalty=item.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!item.penalty" data-ng-click="item.penalty=item.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-team">\n </div>\n </div>\n </div>\n <!-- END AGENTS-->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/sms/queue/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="glyphicon glyphicon-comment"></i>\n <a href="#">{{ \'APPLICATION_SMS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="#">{{ \'APPLICATION_QUEUES\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_QUEUES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="#" data-ng-click="createItem()" data-ng-if="Auth.isAdmin()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_QUEUE\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/sms/queue/view/view.agents.html",'<div class="row" data-ng-init="getTeams()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_AGENTS\' | translate}}</span>\n </div>\n </div>\n <div class="note note-warning" data-ng-hide="teams.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AVAILABLE_TEAMS\' | translate }}\n </p>\n </div>\n <div class="portlet-body">\n <!-- BEGIN FORM-->\n <form action="index.html" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="queue.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="queue.penalty=queue.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!queue.penalty" data-ng-click="queue.penalty=queue.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-team">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/sms/queue/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getQueue()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="glyphicon glyphicon-comment"></i>\n <a href="#">{{ \'APPLICATION_SMS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="/channels/sms/queues/list">{{ \'APPLICATION_QUEUES\' | translate }}</a>\n <i data-ng-show="queue" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="queue">\n <a href="#">{{queue.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET main.channels -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/queue.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{queue.name}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.sms.queues.view.settings\')}">\n <a data-ng-href="/channels/sms/queues/view/{{queue.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.channels.sms.queues.view.agents\')}" data-ng-show="Auth.getCurrentUser().role === \'admin\'">\n <a data-ng-href="/channels/sms/queues/view/{{queue.id}}/agents">\n <i class="icon-people"></i>\n {{ \'APPLICATION_AGENTS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET main.channels -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n </div>\n <!-- END PAGE CONTENT-->\n'),a.put("app/channels/sms/queue/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateSmsQueue()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="queue.name" data-ng-pattern="settings.patternName" required />\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid && forms.general.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START STRATEGY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.strategy.$touched || forms.general.$submitted) && forms.general.strategy.$invalid}">\n <label class="control-label">{{\'APPLICATION_STRATEGY\' | translate}}</label>\n <ui-select data-ng-model="queue.strategy" name="strategy" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | uppercase}}</ui-select-match>\n <ui-select-choices repeat="strategy in strategies | filter: $select.search">\n <div ng-bind-html="strategy | uppercase | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END STRATEGY -->\n\n <!-- START TIMEOUT -->\n <div class="form-group">\n <label class="control-label">Timeout</label>\n <input type="number" name="timeout" placeholder="Timeout" class="form-control" min="1" data-ng-model="queue.timeout"/>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="queue.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <input data-ng-if="Auth.isAdmin()" class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/sms/realtime/view/agent/agent.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initAgents()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-tree-view ui-grid-expandable-row ui-grid-pagination ui-grid-auto-resize>\n <span us-spinner spinner-key="grid-spinner" spinner-start-active="true"></span>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/sms/realtime/view/agent/agent.modal.info.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_INTERFACE_INFO\' | translate }}</h3>\n</div>\n<div class="modal-body">\n<div data-ng-if="agent.ipaddr" class="well">\n <div>{{agent.ipaddr}}:{{agent.port}}</div>\n <div>{{agent.fullcontact}}</div>\n <div>{{agent.useragent}}</div>\n <div>{{agent.lastms}}</div>\n</div>\n<div data-ng-if="!agent.ipaddr" class="alert alert-danger" role="alert">\n {{\'MESSAGE_NO_AVAILABLE_INFO\' | translate}}\n</div>\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/channels/sms/realtime/view/agent/queue.modal.add.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_JOIN_QUEUE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <div class="form-group row">\n <label class="col-md-2 control-label" style="margin-top: 7px;">{{\'APPLICATION_QUEUE\' | translate}}:</label>\n <div class="col-md-10">\n <ui-select multiple ng-model="item.queues" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_QUEUE\' | translate}}">{{$item.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n</div>\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/sms/realtime/view/application/application.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initApplications()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-auto-resize>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/sms/realtime/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-directions"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="glyphicon glyphicon-comment"></i>\n <a href="#">{{ \'APPLICATION_SMS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-energy"></i>\n <a href="#">{{ \'APPLICATION_REALTIME\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <div>\n <nav class="navbar navbar-default" role="navigation">\n <div class="collapse navbar-collapse">\n <ul class="nav navbar-nav">\n <li data-ng-class="{\'active\': $state.is(\'main.channels.sms.realtime.view.agents\')}">\n <a href="/channels/sms/realtime/view/agents">\n {{\'APPLICATION_AGENTS\' | translate}}\n </a>\n </li>\n <li data-ng-class="{\'active\': $state.is(\'main.channels.sms.realtime.view.applications\')}">\n <a href="/channels/sms/realtime/view/applications">\n {{\'APPLICATION_APPLICATIONS\' | translate}}\n </a>\n </li>\n <li>\n <a href="#">\n <b>|{{\'APPLICATION_SHOW_TIMERS\' | translate}} </b><input\n bs-switch\n class="form-control"\n ng-model="showTimers"\n type="checkbox"\n name="showTimers"\n switch-active="{{ timerSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ timerSwitch.onColor }}"\n switch-off-color="{{ timerSwitch.offColor }}"\n switch-animate="{{ timerSwitch.animate }}"\n switch-size="{{ timerSwitch.size }}"\n switch-label="{{ timerSwitch.label }}"\n switch-icon="{{ timerSwitch.icon }}"\n switch-radio-off="{{ timerSwitch.radioOff }}"\n switch-label-width="{{ timerSwitch.labelWidth }}"\n switch-handle-width="{{ timerSwitch.handleWidth }}"><b>|</b>\n </a>\n </li>\n </ul>\n </div>\n </nav>\n </div>\n\n <div ui-view></div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/sms/realtime/view/view.queue.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initAgents()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div id="grid1" ui-grid="gridOptions" ui-grid-resize-columns ui-grid-tree-view class="grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/chanspy/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_CHANSPY\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START PREFIX -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.prefix.$touched || form.$submitted) && form.prefix.$invalid}">\n <label class="control-label">{{\'APPLICATION_PREFIX\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="prefix" placeholder="{{\'APPLICATION_PREFIX\' | translate}}" class="form-control" data-ng-model="item.prefix" required/>\n <span data-ng-show="(form.prefix.$touched || form.$submitted) && form.prefix.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PREFIX -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.options.$touched || form.$submitted) && form.options.$invalid}">\n <label class="control-label">{{\'APPLICATION_OPTIONS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select multiple data-ng-model="item.options" name="options" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$item.value}}: {{$item.name | translate}}</ui-select-match>\n <ui-select-choices repeat="option.value as option in options | filter: $select.search">\n <div ng-bind-html="option.value + \': \' + (option.name | translate) | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.options.$touched || form.$submitted) && form.options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START AUTH -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_AUTH\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.auth"\n type="checkbox"\n name="auth"\n data-ng-init="item.auth = 0"\n switch-active="{{ authSwitch.isActive }}"\n switch-on-text="{{ authSwitch.onText }}"\n switch-off-text="{{ authSwitch.offText }}"\n switch-on-color="{{ authSwitch.onColor }}"\n switch-off-color="{{ authSwitch.offColor }}"\n switch-animate="{{ authSwitch.animate }}"\n switch-size="{{ authSwitch.size }}"\n switch-label="{{ authSwitch.label }}"\n switch-icon="{{ authSwitch.icon }}"\n switch-radio-off="{{ authSwitch.radioOff }}"\n switch-label-width="{{ authSwitch.labelWidth }}"\n switch-handle-width="{{ authSwitch.handleWidth }}">\n </div>\n <!-- END AUTH -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.password.$touched || form.$submitted) && form.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span data-ng-show="item.auth" class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.password" data-ng-disabled="!item.auth" data-ng-required="item.auth"/>\n <span data-ng-show="(form.password.$touched || form.$submitted) && form.password.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START RECORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.record.$touched || form.$submitted) && form.record.$invalid}">\n <label class="control-label">{{\'APPLICATION_RECORDING\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.record"\n type="checkbox"\n switch-active="{{ recordSwitch.isActive }}"\n switch-on-text="{{ recordSwitch.onText }}"\n switch-off-text="{{ recordSwitch.offText }}"\n switch-on-color="{{ recordSwitch.onColor }}"\n switch-off-color="{{ recordSwitch.offColor }}"\n switch-animate="{{ recordSwitch.animate }}"\n switch-size="{{ recordSwitch.size }}"\n switch-label="{{ recordSwitch.label }}"\n switch-icon="{{ recordSwitch.icon }}"\n switch-radio-off="{{ recordSwitch.radioOff }}"\n switch-label-width="{{ recordSwitch.labelWidth }}"\n switch-handle-width="{{ recordSwitch.handleWidth }}">\n </div>\n <!-- END RECORD -->\n\n <!-- START RECORDINGFORMAT -->\n <div data-ng-if="item.record" class="form-group" data-ng-class="{\'has-error\': (form.recordingFormat.$touched || form.$submitted) && form.recordingFormat.$invalid}">\n <label class="control-label">{{\'APPLICATION_FORMAT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.recordingFormat" name="recordingFormat" theme="bootstrap" data-ng-required="item.record">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="format in [\'wav\',\'gsm\'] | filter: $select.search">\n <div ng-bind-html="format | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.recordingFormat.$touched || form.$submitted) && form.recordingFormat.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END RECORDINGFORMAT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/voice/chanspy/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-user-secret"></i>\n <a href="/channels/voice/chanspys/list">{{ \'APPLICATION_CHANSPY\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="fa fa-user-secret font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_CHANSPY\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <button class="btn green-jungle " ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_CHANSPY\' | translate }}\n </button>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), +a.put("app/channels/voice/chanspy/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getChanSpy()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-user-secret"></i>\n <a href="/channels/voice/chanspy/list">{{ \'APPLICATION_CHANSPY\' | translate }}</a>\n <i data-ng-show="chanspy" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="chanspy">\n <a href="#">{{chanspy.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/chanspy.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{chanspy.name}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.voice.chanspy.view.settings\')}">\n <a data-ng-href="/channels/voice/chanspy/view/{{chanspy.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/chanspy/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_CHANSPY\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateChanSpy()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="chanspy.name" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START PREFIX -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.general.prefix.$touched || form.general.$submitted) && form.general.prefix.$invalid}">\n <label class="control-label">{{\'APPLICATION_PREFIX\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="prefix" placeholder="{{\'APPLICATION_PREFIX\' | translate}}" class="form-control" data-ng-model="chanspy.prefix" required/>\n <span data-ng-show="(form.general.prefix.$touched || form.general.$submitted) && form.general.prefix.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PREFIX -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.general.options.$touched || form.general.$submitted) && form.general.options.$invalid}">\n <label class="control-label">{{\'APPLICATION_OPTIONS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select multiple data-ng-model="chanspy.options" name="options" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$item.value}}: {{$item.name | translate}}</ui-select-match>\n <ui-select-choices repeat="option.value as option in options | filter: $select.search">\n <div ng-bind-html="option.value + \': \' + (option.name | translate) | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.general.options.$touched || form.general.$submitted) && form.general.options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START AUTH -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_AUTH\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="chanspy.auth"\n type="checkbox"\n name="auth"\n switch-active="{{ authSwitch.isActive }}"\n switch-on-text="{{ authSwitch.onText }}"\n switch-off-text="{{ authSwitch.offText }}"\n switch-on-color="{{ authSwitch.onColor }}"\n switch-off-color="{{ authSwitch.offColor }}"\n switch-animate="{{ authSwitch.animate }}"\n switch-size="{{ authSwitch.size }}"\n switch-label="{{ authSwitch.label }}"\n switch-icon="{{ authSwitch.icon }}"\n switch-radio-off="{{ authSwitch.radioOff }}"\n switch-label-width="{{ authSwitch.labelWidth }}"\n switch-handle-width="{{ authSwitch.handleWidth }}">\n </div>\n <!-- END AUTH -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.general.password.$touched || form.general.$submitted) && form.general.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span class="required" data-ng-show="chanspy.auth" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="chanspy.password" data-ng-disabled="!chanspy.auth" data-ng-required="chanspy.auth"/>\n <span data-ng-show="(form.general.password.$touched || form.general.$submitted) && form.general.password.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START RECORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.record.$touched || forms.general.$submitted) && forms.general.record.$invalid}">\n <label class="control-label">{{\'APPLICATION_RECORDING\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="chanspy.record"\n type="checkbox"\n switch-active="{{ recordSwitch.isActive }}"\n switch-on-text="{{ recordSwitch.onText }}"\n switch-off-text="{{ recordSwitch.offText }}"\n switch-on-color="{{ recordSwitch.onColor }}"\n switch-off-color="{{ recordSwitch.offColor }}"\n switch-animate="{{ recordSwitch.animate }}"\n switch-size="{{ recordSwitch.size }}"\n switch-label="{{ recordSwitch.label }}"\n switch-icon="{{ recordSwitch.icon }}"\n switch-radio-off="{{ recordSwitch.radioOff }}"\n switch-label-width="{{ recordSwitch.labelWidth }}"\n switch-handle-width="{{ recordSwitch.handleWidth }}">\n </div>\n <!-- END RECORD -->\n\n <!-- START RECORDINGFORMAT -->\n <div data-ng-if="chanspy.record" class="form-group" data-ng-class="{\'has-error\': (forms.general.recordingFormat.$touched || forms.general.$submitted) && forms.general.recordingFormat.$invalid}">\n <label class="control-label">{{\'APPLICATION_FORMAT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="chanspy.recordingFormat" name="recordingFormat" theme="bootstrap" data-ng-required="chanspy.record">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="format in [\'wav\',\'gsm\'] | filter: $select.search">\n <div ng-bind-html="format | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.recordingFormat.$touched || forms.general.$submitted) && forms.general.recordingFormat.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END RECORDINGFORMAT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="chanspy.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/voice/context/list/create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_CONTEXT\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()" data-ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/voice/context/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="#">{{ \'APPLICATION_CONTEXTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_CONTEXTS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <a class="btn green-jungle" href="#" data-ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_CONTEXT\' | translate }}\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/context/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getContext()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="/channels/voice/contexts/list">{{ \'APPLICATION_CONTEXTS\' | translate }}</a>\n <i data-ng-show="context" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="context">\n <a href="#">{{context.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET main.channels -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/context.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{context.name}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.voice.contexts.view.settings\')}">\n <a data-ng-href="/channels/voice/contexts/view/{{context.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET main.channels -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n </div>\n <!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/context/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_CONTEXT\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateVoiceContext()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="context.name" required readonly/>\n <span class="help-block">\n {{ \'DESCRIPTION_CANT_EDIT_NAME\' | translate }}\n </span>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="context.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/voice/disposition/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-target"></i>\n <a href="/channels/voice/dispositions/list">{{ \'APPLICATION_DISPOSITIONS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_DISPOSITIONS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <a href="#" class="btn btn-icon-only green" data-ng-click="addDisposition();">\n <i class="fa fa-plus"></i>\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <div class="row" data-ng-hide="dispositions.length">\n <div class="col-md-12">\n <div class="note note-info">\n <h4 class="block">Info! {{\'MESSAGE_NO_DISPOSITIONS_AVAILABLE\' | translate}}</h4>\n </div>\n </div>\n </div>\n\n <!-- GENERAL TAB -->\n <div class="row" data-ng-repeat="disposition in dispositions">\n <div class="col-md-12 form-group">\n <div class="input-group">\n <div>\n <input class="form-control" type="text" placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}" data-ng-model="disposition.name">\n </div>\n <span class="input-group-btn">\n <button class="btn btn-success" type="button" data-ng-click="updateDisposition(disposition.id, disposition.name);"><i class="fa fa-cloud-upload fa-fw"></i> {{\'APPLICATION_UPDATE\' | translate}}</button>\n <button class="btn btn-danger" type="button" data-ng-click="deleteDisposition(disposition.id);"><i class="fa fa-times fa-fw"></i> {{\'APPLICATION_DELETE\' | translate}}</button>\n </span>\n </div>\n </div>\n </div>\n <!-- END GENERAL TAB -->\n </div>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/disposition/list/modal/add.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_DISPOSITIONS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.form.$touched || form.$submitted) && form.form.$invalid}">\n <div class="">\n <input type="text" name="form" placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}" class="form-control" data-ng-model="name" required/>\n <span data-ng-show="form.form.$touched && form.form.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <!-- END NAME -->\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()" data-ng-show="form.$valid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/voice/moh/list/create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_MOH_CLASS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START MODE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.mode.$touched || forms.$submitted) && forms.mode.$invalid}">\n <label class="control-label">{{\'APPLICATION_MODE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.mode" theme="bootstrap" name="mode" data-ng-init="item.mode = \'files\'" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="mode in [\'files\',\'custom\'] | filter: $select.search">\n {{mode}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.mode.$touched || forms.$submitted) && forms.mode.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MODE -->\n\n <!-- START DIRECTORY -->\n <div data-ng-if="item.mode === \'custom\'" class="form-group" data-ng-class="{\'has-error\': (form.directory.$touched || form.$submitted) && form.directory.$invalid}">\n <label class="control-label">{{\'APPLICATION_DIRECTORY\' | translate}}</label>\n <input type="text" name="directory" placeholder="{{\'APPLICATION_DIRECTORY\' | translate}}" class="form-control" data-ng-model="item.directory"/>\n </div>\n <!-- END DIRECTORY -->\n\n <!-- START APPLICATION -->\n <div data-ng-if="item.mode === \'custom\'" class="form-group" data-ng-class="{\'has-error\': (form.application.$touched || form.$submitted) && form.application.$invalid}">\n <label class="control-label">{{\'APPLICATION_APPLICATION\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="application" placeholder="{{\'APPLICATION_APPLICATION\' | translate}}" class="form-control" data-ng-model="item.application"/>\n <span data-ng-show="(form.application.$touched || form.$submitted) && form.application.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APPLICATION -->\n\n <!-- START FORMAT -->\n <div data-ng-if="item.mode === \'custom\'" class="form-group" data-ng-class="{\'has-error\': (form.format.$touched || form.$submitted) && form.format.$invalid}">\n <label class="control-label">{{\'APPLICATION_FORMAT\' | translate}}</label>\n <input type="text" name="format" placeholder="{{\'APPLICATION_FORMAT\' | translate}}" class="form-control" data-ng-model="item.format"/>\n </div>\n <!-- END FORMAT -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/voice/moh/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-music-tone"></i>\n <a href="#">{{ \'APPLICATION_MOHS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-music-tone font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_MOHS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="#" data-ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_MOH_CLASS\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/moh/view/view.addFiles.html",'\n<div class="row" data-ng-init="getSounds()">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_MOH\' | translate }} {{ \'APPLICATION_ADD_FILES\' | translate }}</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <div class="note note-warning" data-ng-hide="soundList.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_SOUNDS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/sounds/list">{{\'APPLICATION_SOUNDS\' | translate}}</a>\n </p>\n </div>\n <form name="forms.general" data-ng-submit="(item.sounds.length > 0) && addMohs()" data-ng-show="soundList.length" novalidate>\n\n <!-- START SOUNDS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.sounds.$touched || forms.general.$submitted) && item.sounds.length == 0}">\n <label class="control-label">{{\'APPLICATION_SOUNDS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select multiple data-ng-model="item.sounds" theme="bootstrap" name="sounds" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$item.display_name}}</ui-select-match>\n <ui-select-choices repeat="sound.id as sound in soundList | filter: $select.search">\n {{sound.display_name}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.sounds.$touched || forms.general.$submitted) && item.sounds.length == 0" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <input type="submit" class="btn green-haze" value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </form>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/moh/view/view.audios.html",'<div ui-view class="profile-content">\n<div class="row" data-ng-init="getAudioFiles()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_AUDIOS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="audioFiles">\n <a class="btn green-jungle " href="/channels/voice/mohs/view/{{moh.id}}/add" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_ADD_FILES\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <div class="note note-warning" data-ng-hide="audioFiles">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_FOLDER_DOES_NOT_EXIST\' | translate }}\n </p>\n </div>\n <!-- START TABLE -->\n <table class="table table-striped table-bordered table-hover" data-ng-show="audioFiles">\n <thead>\n <tr>\n <th>{{ \'APPLICATION_NAME\' | translate }}</th>\n <th width="30%">{{ \'APPLICATION_PREVIEW\' | translate }}</th>\n <th width="10%">{{ \'APPLICATION_ACTIONS\' | translate }}</th>\n </tr>\n </thead>\n <tbody data-ng-model="audioFiles">\n <tr data-ng-repeat="audiofile in audioFiles">\n <td>{{audiofile}}</td>\n <td>\n <audio controls ng-src="{{getSecureSrc(audioSources[audiofile])}}" preload="none">\n Your browser does not support the audio tag.\n </audio></td>\n <td>\n <a class="btn default btn-xs red-stripe" data-ng-click="deleteItem(audiofile,audiofile)">\n {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </td>\n </tr>\n <tr data-ng-hide="audioFiles.length">\n <td colspan="3" style="text-align:center;">\n <i>{{ \'MESSAGE_NO_AUDIOFILES_AVAILABLE\' | translate }}</i>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n</div>\n'), +a.put("app/channels/voice/moh/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getMoh()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-music-tone"></i>\n <a href="/channels/voice/mohs/list">{{ \'APPLICATION_MOH_CLASS\' | translate }}</a>\n <i data-ng-show="moh" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="moh">\n <a href="#">{{moh.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET main.channels -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/moh.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{moh.name}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.voice.mohs.view.settings\')}">\n <a data-ng-href="/channels/voice/mohs/view/{{moh.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li data-ng-if="moh.mode === \'files\'" data-ng-class="{active: $state.is(\'main.channels.voice.mohs.view.audios\') || $state.is(\'main.channels.voice.mohs.view.add\')}">\n <a data-ng-href="/channels/voice/mohs/view/{{moh.id}}/audios">\n <i class="icon-list"></i>\n {{ \'APPLICATION_AUDIOS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET main.channels -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/moh/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_MOH_CLASS\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body" data-ng-init="getContexts();">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateVoiceMoh()" novalidate>\n\n <!-- START MODE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_MODE\' | translate}}</label>\n <input type="text" name="path" class="form-control" data-ng-model="moh.mode" disabled/>\n </div>\n <!-- END MODE -->\n\n <!-- START PATH -->\n <div class="form-group" data-ng-if="moh.mode === \'files\'">\n <label class="control-label">{{\'APPLICATION_PATH\' | translate}}</label>\n <input type="text" name="path" class="form-control" data-ng-model="moh.directory" disabled/>\n </div>\n <!-- END PATH -->\n\n <!-- START SORT -->\n <div data-ng-if="moh.mode === \'files\'" class="form-group" data-ng-class="{\'has-error\': (forms.general.sort.$touched || forms.general.$submitted) && forms.general.sort.$invalid}">\n <label class="control-label">{{\'APPLICATION_SORT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="moh.sort" theme="bootstrap" name="sort" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$translate.instant($select.selected.name)}}</ui-select-match>\n <ui-select-choices repeat="sort.value as sort in sortOptions | filter: $select.search">\n {{$translate.instant(sort.name)}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.sort.$touched || forms.general.$submitted) && forms.general.sort.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SORT -->\n\n <!-- START DIRECTORY -->\n <div data-ng-if="moh.mode === \'custom\'" class="form-group" data-ng-class="{\'has-error\': (forms.general.directory.$touched || forms.general.$submitted) && forms.general.directory.$invalid}">\n <label class="control-label">{{\'APPLICATION_DIRECTORY\' | translate}}</label>\n <input type="text" name="directory" placeholder="{{\'APPLICATION_DIRECTORY\' | translate}}" class="form-control" data-ng-model="moh.directory"/>\n </div>\n <!-- END DIRECTORY -->\n\n <!-- START APPLICATION -->\n <div data-ng-if="moh.mode === \'custom\'" class="form-group" data-ng-class="{\'has-error\': (forms.general.application.$touched || forms.general.$submitted) && forms.general.application.$invalid}">\n <label class="control-label">{{\'APPLICATION_APPLICATION\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="application" placeholder="{{\'APPLICATION_APPLICATION\' | translate}}" class="form-control" data-ng-model="moh.application" required/>\n <span data-ng-show="(forms.general.application.$touched || forms.general.$submitted) && forms.general.application.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APPLICATION -->\n\n <!-- START FORMAT -->\n <div data-ng-if="moh.mode === \'custom\'" class="form-group" data-ng-class="{\'has-error\': (forms.general.format.$touched || forms.general.$submitted) && forms.general.format.$invalid}">\n <label class="control-label">{{\'APPLICATION_FORMAT\' | translate}}</label>\n <input type="text" name="format" placeholder="{{\'APPLICATION_FORMAT\' | translate}}" class="form-control" data-ng-model="moh.format"/>\n </div>\n <!-- END FORMAT -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/voice/queue/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_QUEUE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" data-ng-pattern="settings.patternName" required />\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START STRATEGY -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.strategy.$touched || form.$submitted) && form.strategy.$invalid}">\n <label class="control-label">{{\'APPLICATION_STRATEGY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.strategy" name="strategy" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.toUpperCase()}}</ui-select-match>\n <ui-select-choices repeat="strategy in [\'ringall\', \'leastrecent\', \'fewestcalls\', \'random\', \'rrmemory\', \'linear\', \'wrandom\', \'rrordered\'] | filter: $select.search">\n <div ng-bind-html="strategy.toUpperCase() | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_STRATEGY\' | translate }}\n </span>\n <span data-ng-show="(form.strategy.$touched || form.$submitted) && form.strategy.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END STRATEGY -->\n\n <!-- START AGENTS-->\n <div class="form-body" data-ng-init="getTeams()">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="item.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="item.penalty=item.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!item.penalty" data-ng-click="item.penalty=item.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-team">\n </div>\n </div>\n </div>\n <!-- END AGENTS-->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/voice/queue/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="#">{{ \'APPLICATION_QUEUES\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_QUEUES\' | translate }}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <a class="btn green-jungle" href="#" data-ng-click="createItem()" data-ng-if="Auth.isAdmin()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_QUEUE\' | translate }}\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/queue/view/view.agents.html",'<div class="row" data-ng-init="getTeams()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_AGENTS\' | translate}}</span>\n </div>\n </div>\n <div class="note note-warning" data-ng-hide="teams.length">\n <h4 class="block">Warning!</h4><p>{{ \'MESSAGE_NO_AVAILABLE_TEAMS\' | translate }}</p>\n </div>\n <div class="portlet-body">\n <!-- BEGIN FORM-->\n <form action="index.html" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="queue.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="queue.penalty=queue.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!queue.penalty" data-ng-click="queue.penalty=queue.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-team">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/voice/queue/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getQueue()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="/channels/voice/queues/list">{{ \'APPLICATION_QUEUES\' | translate }}</a>\n <i data-ng-show="queue" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="queue">\n <a href="#">{{queue.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET main.channels -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/queue.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{queue.name}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.voice.queues.view.settings\')}">\n <a data-ng-href="/channels/voice/queues/view/{{queue.name}}/settings"> <i class="icon-settings"></i> {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.channels.voice.queues.view.agents\')}" data-ng-show="Auth.getCurrentUser().role === \'admin\'">\n <a data-ng-href="/channels/voice/queues/view/{{queue.name}}/agents"><i class="icon-people"></i>{{ \'APPLICATION_AGENTS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET main.channels -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/queue/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_QUEUE_SETTINGS\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{ \'APPLICATION_PERIODIC_ANNOUNCE\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{ \'APPLICATION_ADVANCED\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body" data-ng-init="getMohs();getSounds();">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && forms.announce.$valid && updateVoiceQueue()" novalidate>\n <div class="row">\n <div class="col-md-6">\n <!-- START STRATEGY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.strategy.$touched || forms.general.$submitted) && forms.general.strategy.$invalid}">\n <label class="control-label">{{\'APPLICATION_STRATEGY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="queue.strategy" name="strategy" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.toUpperCase()}}</ui-select-match>\n <ui-select-choices repeat="strategy in [\'ringall\', \'leastrecent\', \'fewestcalls\', \'random\', \'rrmemory\', \'linear\', \'wrandom\', \'rrordered\'] | filter: $select.search">\n <div ng-bind-html="strategy.toUpperCase() | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_STRATEGY\' | translate }}\n </span>\n <span data-ng-show="(forms.general.strategy.$touched || forms.general.$submitted) && forms.general.strategy.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END STRATEGY -->\n\n <!-- START MOH -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.musiconhold.$touched || forms.general.$submitted) && forms.general.musiconhold.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOH\' | translate}}</label>\n <ui-select data-ng-model="queue.musiconhold" name="musiconhold" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="musiconhold.name as musiconhold in voiceMohs | filter: $select.search">\n <div ng-bind-html="musiconhold.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_VOICE_MOH\' | translate }}\n </span>\n <span data-ng-show="(forms.general.musiconhold.$touched || forms.general.$submitted) && forms.general.musiconhold.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MOH -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.timeout.$touched || forms.general.$submitted) && forms.general.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="0" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="queue.timeout" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_TIMEOUT\' | translate }}\n </span>\n <span data-ng-show="(forms.general.timeout.$touched || forms.general.$submitted) && forms.general.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START MAXLEN -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.maxlen.$touched || forms.general.$submitted) && forms.general.maxlen.$invalid}">\n <label class="control-label">{{\'APPLICATION_MAXLEN\' | translate}}</label>\n <input type="number" min="0" name="maxlen" placeholder="{{\'APPLICATION_MAXLEN\' | translate}}" class="form-control" data-ng-model="queue.maxlen" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_MAXLEN\' | translate }}\n </span>\n <span data-ng-show="(forms.general.maxlen.$touched || forms.general.$submitted) && forms.general.maxlen.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MAXLEN -->\n\n <!-- START RETRY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.retry.$touched || forms.general.$submitted) && forms.general.retry.$invalid}">\n <label class="control-label">{{\'APPLICATION_RETRY\' | translate}}</label>\n <input type="number" min="0" name="retry" placeholder="{{\'APPLICATION_RETRY\' | translate}}" class="form-control" data-ng-model="queue.retry" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_RETRY\' | translate }}\n </span>\n <span data-ng-show="(forms.general.retry.$touched || forms.general.$submitted) && forms.general.retry.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END RETRY -->\n\n </div>\n <div class="col-md-6">\n <!-- START WRAPUPTIME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.wrapuptime.$touched || forms.general.$submitted) && forms.general.wrapuptime.$invalid}">\n <label class="control-label">{{\'APPLICATION_WRAPUPTIME\' | translate}}</label>\n <input type="number" min="0" name="wrapuptime" placeholder="{{\'APPLICATION_WRAPUPTIME\' | translate}}" class="form-control" data-ng-model="queue.wrapuptime" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_WRAPUPTIME\' | translate }}\n </span>\n <span data-ng-show="(forms.general.wrapuptime.$touched || forms.general.$submitted) && forms.general.wrapuptime.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END WRAPUPTIME -->\n\n <!-- START WEIGHT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.weight.$touched || forms.general.$submitted) && forms.general.weight.$invalid}">\n <label class="control-label">{{\'APPLICATION_WEIGHT\' | translate}}</label>\n <input type="number" min="0" name="weight" placeholder="{{\'APPLICATION_WEIGHT\' | translate}}" class="form-control" data-ng-model="queue.weight" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_WEIGHT\' | translate }}\n </span>\n <span data-ng-show="(forms.general.weight.$touched || forms.general.$submitted) && forms.general.weight.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END WEIGHT -->\n\n <!-- START JOINEMPTY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.joinempty.$touched || forms.general.$submitted) && forms.general.joinempty.$invalid}">\n <label class="control-label">{{\'APPLICATION_JOINEMPTY\' | translate}}</label>\n <ui-select multiple data-ng-model="queue.joinempty" name="joinempty" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\',\'no\',\'strict\',\'loose\',\'paused\',\'penalty\',\'inuse\',\'ringing\',\'unavailable\',\'invalid\',\'unknown\',\'wrapup\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_JOINEMPTY\' | translate }}\n </span>\n <span data-ng-show="(forms.general.joinempty.$touched || forms.general.$submitted) && forms.general.joinempty.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END JOINEMPTY -->\n\n <!-- START LEAVEWHENEMPTY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.leavewhenempty.$touched || forms.general.$submitted) && forms.general.leavewhenempty.$invalid}">\n <label class="control-label">{{\'APPLICATION_LEAVEWHENEMPTY\' | translate}}</label>\n <ui-select multiple data-ng-model="queue.leavewhenempty" name="leavewhenempty" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\',\'no\',\'strict\',\'loose\',\'paused\',\'penalty\',\'inuse\',\'ringing\',\'unavailable\',\'invalid\',\'unknown\',\'wrapup\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_LEAVEWHENEMPTY\' | translate }}\n </span>\n <span data-ng-show="(forms.general.leavewhenempty.$touched || forms.general.$submitted) && forms.general.leavewhenempty.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END LEAVEWHENEMPTY -->\n\n <!-- START ANNOUNCE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.announce.$touched || forms.general.$submitted) && forms.general.announce.$invalid}">\n <label class="control-label">{{\'APPLICATION_ANNOUNCE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="queue.announce" name="announce" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.display_name}}</ui-select-match>\n <ui-select-choices repeat="announce.path as announce in sounds | filter: $select.search">\n <div ng-bind-html="announce.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_ANNOUNCE\' | translate }}\n </span>\n <span data-ng-show="(forms.general.announce.$touched || forms.general.$submitted) && forms.general.announce.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ANNOUNCE -->\n </div>\n </div>\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="queue.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.announce" data-ng-submit="forms.announce.$valid && forms.general.$valid && updateVoiceQueue()" novalidate>\n <div class="row">\n <div class="col-md-12">\n <!-- START PERIODIC_ANNOUNCE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.periodic_announce.$touched || forms.announce.$submitted) && forms.announce.periodic_announce.$invalid}">\n <label class="control-label">{{\'APPLICATION_PERIODIC_ANNOUNCE\' | translate}}</label>\n <ui-select multiple data-ng-model="queue.periodic_announce" name="periodic_announce" theme="bootstrap" data-ng-disabled="!periodicAnnounces.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$item.display_name}}</ui-select-match>\n <ui-select-choices repeat="announce.path as announce in periodicAnnounces | filter: $select.search track by $index">\n <div ng-bind-html="announce.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="periodicAnnounces.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_SOUNDS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/sounds/list">{{\'APPLICATION_SOUNDS\' | translate}}</a>\n </p>\n </div>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_PERIODIC_ANNOUNCE\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.periodic_announce.$touched || forms.announce.$submitted) && forms.announce.periodic_announce.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PERIODIC_ANNOUNCE -->\n </div>\n </div>\n <div class="row">\n <div class="col-md-6">\n <p><h3>{{\'APPLICATION_SETTINGS\' | translate}}</h3></p>\n <!-- START ANNOUNCE_FREQUENCY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.announce_frequency.$touched || forms.announce.$submitted) && forms.announce.announce_frequency.$invalid}">\n <label class="control-label">{{\'APPLICATION_ANNOUNCE_FREQUENCY\' | translate}}</label>\n <input type="number" min="0" name="announce_frequency" placeholder="{{\'APPLICATION_ANNOUNCE_FREQUENCY\' | translate}}" class="form-control" data-ng-model="queue.announce_frequency" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_ANNOUNCE_FREQUENCY\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.announce_frequency.$touched || forms.announce.$submitted) && forms.announce.announce_frequency.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ANNOUNCE_FREQUENCY -->\n\n <!-- START MIN_ANNOUNCE_FREQUENCY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.min_announce_frequency.$touched || forms.announce.$submitted) && forms.announce.min_announce_frequency.$invalid}">\n <label class="control-label">{{\'APPLICATION_MIN_ANNOUNCE_FREQUENCY\' | translate}}</label>\n <input type="number" min="0" name="min_announce_frequency" placeholder="{{\'APPLICATION_MIN_ANNOUNCE_FREQUENCY\' | translate}}" class="form-control" data-ng-model="queue.min_announce_frequency" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_MIN_ANNOUNCE_FREQUENCY\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.min_announce_frequency.$touched || forms.announce.$submitted) && forms.announce.min_announce_frequency.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MIN_ANNOUNCE_FREQUENCY -->\n\n <!-- START PERIODIC_ANNOUNCE_FREQUENCY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.periodic_announce_frequency.$touched || forms.announce.$submitted) && forms.announce.periodic_announce_frequency.$invalid}">\n <label class="control-label">{{\'APPLICATION_PERIODIC_ANNOUNCE_FREQUENCY\' | translate}}</label>\n <input type="number" min="0" name="periodic_announce_frequency" placeholder="{{\'APPLICATION_PERIODIC_ANNOUNCE_FREQUENCY\' | translate}}" class="form-control" data-ng-model="queue.periodic_announce_frequency"/>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_PERIODIC_ANNOUNCE_FREQUENCY\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.periodic_announce_frequency.$touched || forms.announce.$submitted) && forms.announce.periodic_announce_frequency.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PERIODIC_ANNOUNCE_FREQUENCY -->\n\n <!-- START RANDOM_PERIODIC_ANNOUNCE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.random_periodic_announce.$touched || forms.announce.$submitted) && forms.announce.random_periodic_announce.$invalid}">\n <label class="control-label">{{\'APPLICATION_RANDOM_PERIODIC_ANNOUNCE\' | translate}}</label>\n <ui-select data-ng-model="queue.random_periodic_announce" name="random_periodic_announce" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\',\'no\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_RANDOM_PERIODIC_ANNOUNCE\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.random_periodic_announce.$touched || forms.announce.$submitted) && forms.announce.random_periodic_announce.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END RANDOM_PERIODIC_ANNOUNCE -->\n\n <!-- START ANNOUNCE_HOLDTIME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.announce_holdtime.$touched || forms.announce.$submitted) && forms.announce.announce_holdtime.$invalid}">\n <label class="control-label">{{\'APPLICATION_ANNOUNCE_HOLDTIME\' | translate}}</label>\n <ui-select data-ng-model="queue.announce_holdtime" name="announce_holdtime" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\',\'no\',\'once\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_ANNOUNCE_HOLDTIME\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.announce_holdtime.$touched || forms.announce.$submitted) && forms.announce.announce_holdtime.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ANNOUNCE_HOLDTIME -->\n\n <!-- START ANNOUNCE_POSITION -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.announce_position.$touched || forms.announce.$submitted) && forms.announce.announce_position.$invalid}">\n <label class="control-label">{{\'APPLICATION_ANNOUNCE_POSITION\' | translate}}</label>\n <ui-select data-ng-model="queue.announce_position" name="announce_position" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\',\'no\',\'limit\',\'more\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_ANNOUNCE_POSITION\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.announce_position.$touched || forms.announce.$submitted) && forms.announce.announce_position.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ANNOUNCE_POSITION -->\n\n <!-- START ANNOUNCE_POSITION_LIMIT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.announce_position_limit.$touched || forms.announce.$submitted) && forms.announce.announce_position_limit.$invalid}">\n <label class="control-label">{{\'APPLICATION_ANNOUNCE_POSITION_LIMIT\' | translate}}</label>\n <input type="number" min="0" name="announce_position_limit" placeholder="{{\'APPLICATION_ANNOUNCE_POSITION_LIMIT\' | translate}}" class="form-control" data-ng-model="queue.announce_position_limit"/>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_ANNOUNCE_POSITION_LIMIT\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.announce_position_limit.$touched || forms.announce.$submitted) && forms.announce.announce_position_limit.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ANNOUNCE_POSITION_LIMIT -->\n\n <!-- START REPORTHOLDTIME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.reportholdtime.$touched || forms.announce.$submitted) && forms.announce.reportholdtime.$invalid}">\n <label class="control-label">{{\'APPLICATION_REPORTHOLDTIME\' | translate}}</label>\n <ui-select data-ng-model="queue.reportholdtime" name="reportholdtime" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\',\'no\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_REPORTHOLDTIME\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.reportholdtime.$touched || forms.announce.$submitted) && forms.announce.reportholdtime.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END REPORTHOLDTIME -->\n\n </div>\n <div class="col-md-6">\n <p><h3>{{\'APPLICATION_SOUNDS\' | translate}}</h3></p>\n <!-- START QUEUE_REPORTHOLD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.queue_reporthold.$touched || forms.announce.$submitted) && forms.announce.queue_reporthold.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE_REPORTHOLD\' | translate}}</label>\n <ui-select data-ng-model="queue.queue_reporthold" name="queue_reporthold" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.display_name}}</ui-select-match>\n <ui-select-choices repeat="announce.path as announce in queueAnnounces | filter: $select.search">\n <div ng-bind-html="announce.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_REPORTHOLD\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.queue_reporthold.$touched || forms.announce.$submitted) && forms.announce.queue_reporthold.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE_REPORTHOLD -->\n\n <!-- START QUEUE_YOUARENEXT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.queue_youarenext.$touched || forms.announce.$submitted) && forms.announce.queue_youarenext.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE_YOUARENEXT\' | translate}}</label>\n <ui-select data-ng-model="queue.queue_youarenext" name="queue_youarenext" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.display_name}}</ui-select-match>\n <ui-select-choices repeat="announce.path as announce in queueAnnounces | filter: $select.search">\n <div ng-bind-html="announce.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_YOUARENEXT\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.queue_youarenext.$touched || forms.announce.$submitted) && forms.announce.queue_youarenext.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE_YOUARENEXT -->\n\n <!-- START QUEUE_THEREARE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.queue_thereare.$touched || forms.announce.$submitted) && forms.announce.queue_thereare.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE_THEREARE\' | translate}}</label>\n <ui-select data-ng-model="queue.queue_thereare" name="queue_thereare" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.display_name}}</ui-select-match>\n <ui-select-choices repeat="announce.path as announce in queueAnnounces | filter: $select.search">\n <div ng-bind-html="announce.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_THEREARE\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.queue_thereare.$touched || forms.announce.$submitted) && forms.announce.queue_thereare.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE_THEREARE -->\n\n <!-- START QUEUE_CALLSWAITING -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.queue_callswaiting.$touched || forms.announce.$submitted) && forms.announce.queue_callswaiting.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE_CALLSWAITING\' | translate}}</label>\n <ui-select data-ng-model="queue.queue_callswaiting" name="queue_callswaiting" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.display_name}}</ui-select-match>\n <ui-select-choices repeat="announce.path as announce in queueAnnounces | filter: $select.search">\n <div ng-bind-html="announce.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_CALLSWAITING\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.queue_callswaiting.$touched || forms.announce.$submitted) && forms.announce.queue_callswaiting.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE_CALLSWAITING -->\n\n <!-- START QUEUE_HOLDTIME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.queue_holdtime.$touched || forms.announce.$submitted) && forms.announce.queue_holdtime.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE_HOLDTIME\' | translate}}</label>\n <ui-select data-ng-model="queue.queue_holdtime" name="queue_holdtime" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.display_name}}</ui-select-match>\n <ui-select-choices repeat="announce.path as announce in queueAnnounces | filter: $select.search">\n <div ng-bind-html="announce.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_HOLDTIME\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.queue_holdtime.$touched || forms.announce.$submitted) && forms.announce.queue_holdtime.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE_HOLDTIME -->\n\n <!-- START QUEUE_MINUTES -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.queue_minutes.$touched || forms.announce.$submitted) && forms.announce.queue_minutes.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE_MINUTES\' | translate}}</label>\n <ui-select data-ng-model="queue.queue_minutes" name="queue_minutes" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.display_name}}</ui-select-match>\n <ui-select-choices repeat="announce.path as announce in queueAnnounces | filter: $select.search">\n <div ng-bind-html="announce.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_MINUTES\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.queue_minutes.$touched || forms.announce.$submitted) && forms.announce.queue_minutes.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE_MINUTES -->\n\n <!-- START QUEUE_MINUTE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.queue_minute.$touched || forms.announce.$submitted) && forms.announce.queue_minute.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE_MINUTE\' | translate}}</label>\n <ui-select data-ng-model="queue.queue_minute" name="queue_minute" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.display_name}}</ui-select-match>\n <ui-select-choices repeat="announce.path as announce in queueAnnounces | filter: $select.search">\n <div ng-bind-html="announce.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_MINUTE\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.queue_minute.$touched || forms.announce.$submitted) && forms.announce.queue_minute.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE_MINUTE -->\n\n <!-- START QUEUE_SECONDS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.queue_seconds.$touched || forms.announce.$submitted) && forms.announce.queue_seconds.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE_SECONDS\' | translate}}</label>\n <ui-select data-ng-model="queue.queue_seconds" name="queue_seconds" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.display_name}}</ui-select-match>\n <ui-select-choices repeat="announce.path as announce in queueAnnounces | filter: $select.search">\n <div ng-bind-html="announce.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_SECONDS\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.queue_seconds.$touched || forms.announce.$submitted) && forms.announce.queue_seconds.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE_SECONDS -->\n\n <!-- START QUEUE_THANKYOU -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.queue_thankyou.$touched || forms.announce.$submitted) && forms.announce.queue_thankyou.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE_THANKYOU\' | translate}}</label>\n <ui-select data-ng-model="queue.queue_thankyou" name="QUEUE_THANKYOU" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.display_name}}</ui-select-match>\n <ui-select-choices repeat="announce.path as announce in queueAnnounces | filter: $select.search">\n <div ng-bind-html="announce.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_THANKYOU\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.queue_thankyou.$touched || forms.announce.$submitted) && forms.announce.queue_thankyou.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE_THANKYOU -->\n\n </div>\n </div>\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n <!-- ADVANCED TAB -->\n <div class="tab-pane" id="tab_1_3">\n <form name="forms.advanced" data-ng-submit="forms.announce.$valid && forms.general.$valid && forms.advanced.$valid && updateVoiceQueue()" novalidate>\n\n <div class="row">\n <div class="col-md-6">\n\n <!-- START AUTOPAUSE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.autopause.$touched || forms.advanced.$submitted) && forms.advanced.autopause.$invalid}">\n <label class="control-label">{{\'APPLICATION_AUTOPAUSE\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="queue.autopause"\n type="checkbox"\n switch-active="{{ recordSwitch.isActive }}"\n switch-on-text="{{ recordSwitch.onText }}"\n switch-off-text="{{ recordSwitch.offText }}"\n switch-on-color="{{ recordSwitch.onColor }}"\n switch-off-color="{{ recordSwitch.offColor }}"\n switch-animate="{{ recordSwitch.animate }}"\n switch-size="{{ recordSwitch.size }}"\n switch-label="{{ recordSwitch.label }}"\n switch-icon="{{ recordSwitch.icon }}"\n switch-radio-off="{{ recordSwitch.radioOff }}"\n switch-label-width="{{ recordSwitch.labelWidth }}"\n switch-handle-width="{{ recordSwitch.handleWidth }}"\n ng-true-value="\'all\'"\n ng-false-value="\'no\'">\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_AUTOPAUSE\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.autopause.$touched || forms.advanced.$submitted) && forms.advanced.autopause.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END AUTOPAUSE -->\n\n <!-- START RINGINUSE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.ringinuse.$touched || forms.advanced.$submitted) && forms.advanced.ringinuse.$invalid}">\n <label class="control-label">{{\'APPLICATION_RINGINUSE\' | translate}}</label>\n <ui-select data-ng-model="queue.ringinuse" name="ringinuse" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\',\'no\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_RINGINUSE\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.ringinuse.$touched || forms.advanced.$submitted) && forms.advanced.ringinuse.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END RINGINUSE -->\n\n <!-- START MEMBER_DELAY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.memberdelay.$touched || forms.advanced.$submitted) && forms.advanced.memberdelay.$invalid}">\n <label class="control-label">{{\'APPLICATION_MEMBER_DELAY\' | translate}}</label>\n <input type="number" min="0" name="memberdelay" placeholder="{{\'APPLICATION_MEMBER_DELAY\' | translate}}" class="form-control" data-ng-model="queue.memberdelay" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_MEMBER_DELAY\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.memberdelay.$touched || forms.advanced.$submitted) && forms.advanced.memberdelay.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MEMBER_DELAY -->\n\n <!-- START ACW -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.acw.$touched || forms.advanced.$submitted) && forms.advanced.acw.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACW\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="queue.acw"\n type="checkbox"\n switch-active="{{ recordSwitch.isActive }}"\n switch-on-text="{{ recordSwitch.onText }}"\n switch-off-text="{{ recordSwitch.offText }}"\n switch-on-color="{{ recordSwitch.onColor }}"\n switch-off-color="{{ recordSwitch.offColor }}"\n switch-animate="{{ recordSwitch.animate }}"\n switch-size="{{ recordSwitch.size }}"\n switch-label="{{ recordSwitch.label }}"\n switch-icon="{{ recordSwitch.icon }}"\n switch-radio-off="{{ recordSwitch.radioOff }}"\n switch-label-width="{{ recordSwitch.labelWidth }}"\n switch-handle-width="{{ recordSwitch.handleWidth }}">\n <span class="help-block">\n {{ \'DESCRIPTION_ACW\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.acw.$touched || forms.advanced.$submitted) && forms.advanced.acw.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_ACW\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ACW -->\n\n <!-- START SETINTERFACEVAR -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.setinterfacevar.$touched || forms.advanced.$submitted) && forms.advanced.setinterfacevar.$invalid}">\n <label class="control-label">{{\'APPLICATION_SETINTERFACEVAR\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="queue.setinterfacevar"\n type="checkbox"\n switch-active="{{ recordSwitch.isActive }}"\n switch-on-text="{{ recordSwitch.onText }}"\n switch-off-text="{{ recordSwitch.offText }}"\n switch-on-color="{{ recordSwitch.onColor }}"\n switch-off-color="{{ recordSwitch.offColor }}"\n switch-animate="{{ recordSwitch.animate }}"\n switch-size="{{ recordSwitch.size }}"\n switch-label="{{ recordSwitch.label }}"\n switch-icon="{{ recordSwitch.icon }}"\n switch-radio-off="{{ recordSwitch.radioOff }}"\n switch-label-width="{{ recordSwitch.labelWidth }}"\n switch-handle-width="{{ recordSwitch.handleWidth }}">\n <span class="help-block">\n {{ \'DESCRIPTION_SETINTERFACEVAR\' | translate }} <a href="https://wiki.xcallymotion.com/display/XMD/Queues+-+Voice+Channel" target="_blank">wiki</a>)\n </span>\n <span data-ng-show="(forms.advanced.setinterfacevar.$touched || forms.advanced.$submitted) && forms.advanced.setinterfacevar.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_SETINTERFACEVAR\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SETINTERFACEVAR -->\n\n <!-- START SETQUEUEVAR -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.setqueuevar.$touched || forms.advanced.$submitted) && forms.advanced.setqueuevar.$invalid}">\n <label class="control-label">{{\'APPLICATION_SETQUEUEVAR\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="queue.setqueuevar"\n type="checkbox"\n switch-active="{{ recordSwitch.isActive }}"\n switch-on-text="{{ recordSwitch.onText }}"\n switch-off-text="{{ recordSwitch.offText }}"\n switch-on-color="{{ recordSwitch.onColor }}"\n switch-off-color="{{ recordSwitch.offColor }}"\n switch-animate="{{ recordSwitch.animate }}"\n switch-size="{{ recordSwitch.size }}"\n switch-label="{{ recordSwitch.label }}"\n switch-icon="{{ recordSwitch.icon }}"\n switch-radio-off="{{ recordSwitch.radioOff }}"\n switch-label-width="{{ recordSwitch.labelWidth }}"\n switch-handle-width="{{ recordSwitch.handleWidth }}">\n <span class="help-block">\n {{ \'DESCRIPTION_SETQUEUEVAR\' | translate }} <a href="https://wiki.xcallymotion.com/display/XMD/Queues+-+Voice+Channel" target="_blank">wiki</a>)\n </span>\n <span data-ng-show="(forms.advanced.setqueuevar.$touched || forms.advanced.$submitted) && forms.advanced.setqueuevar.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_SETQUEUEVAR\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SETQUEUEVAR -->\n\n </div>\n <div class="col-md-6">\n\n <!-- START TIMEOUTRESTART -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.timeoutrestart.$touched || forms.advanced.$submitted) && forms.advanced.timeoutrestart.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUTRESTART\' | translate}}</label>\n <ui-select data-ng-model="queue.timeoutrestart" name="timeoutrestart" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\',\'no\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_TIMEOUTRESTART\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.timeoutrestart.$touched || forms.advanced.$submitted) && forms.advanced.timeoutrestart.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUTRESTART -->\n\n <!-- START MONITOR_FORMAT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.monitor_format.$touched || forms.advanced.$submitted) && forms.advanced.monitor_format.$invalid}">\n <label class="control-label">{{\'APPLICATION_MONITOR_FORMAT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="queue.monitor_format" name="monitor_format" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="monFormat.value as monFormat in monitorFormats | filter: $select.search">\n <div ng-bind-html="monFormat.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_MONITOR_FORMAT\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.monitor_format.$touched || forms.advanced.$submitted) && forms.advanced.monitor_format.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MONITOR_FORMAT -->\n\n <!-- START CONTEXT -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_CONTEXT\' | translate}}</label>\n <input type="text" name="context" placeholder="{{\'APPLICATION_CONTEXT\' | translate}}" class="form-control" data-ng-model="queue.context"/>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_VOICE_CONTEXT\' | translate }}\n </span>\n </div>\n <!-- END CONTEXT -->\n\n <!-- START ACW_TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.acwTimeout.$touched || forms.advanced.$submitted) && forms.advanced.acwTimeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACW_TIMEOUT\' | translate}}</label>\n <input type="number" min="0" name="acwTimeout" placeholder="{{\'APPLICATION_ACW_TIMEOUT\' | translate}}" class="form-control" data-ng-model="queue.acwTimeout" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_ACW_TIMEOUT\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.acwTimeout.$touched || forms.advanced.$submitted) && forms.advanced.acwTimeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ACW_TIMEOUT -->\n\n <!-- START SETQUEUEENTRYVAR -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.setqueueentryvar.$touched || forms.advanced.$submitted) && forms.advanced.setqueueentryvar.$invalid}">\n <label class="control-label">{{\'APPLICATION_SETQUEUEENTRYVAR\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="queue.setqueueentryvar"\n type="checkbox"\n switch-active="{{ recordSwitch.isActive }}"\n switch-on-text="{{ recordSwitch.onText }}"\n switch-off-text="{{ recordSwitch.offText }}"\n switch-on-color="{{ recordSwitch.onColor }}"\n switch-off-color="{{ recordSwitch.offColor }}"\n switch-animate="{{ recordSwitch.animate }}"\n switch-size="{{ recordSwitch.size }}"\n switch-label="{{ recordSwitch.label }}"\n switch-icon="{{ recordSwitch.icon }}"\n switch-radio-off="{{ recordSwitch.radioOff }}"\n switch-label-width="{{ recordSwitch.labelWidth }}"\n switch-handle-width="{{ recordSwitch.handleWidth }}">\n <span class="help-block">\n {{ \'DESCRIPTION_SETQUEUEENTRYVAR\' | translate }} <a href="https://wiki.xcallymotion.com/display/XMD/Queues+-+Voice+Channel" target="_blank">wiki</a>)\n </span>\n <span data-ng-show="(forms.advanced.setqueueentryvar.$touched || forms.advanced.$submitted) && forms.advanced.setqueueentryvar.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_SETQUEUEENTRYVAR\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SETQUEUEENTRYVAR -->\n\n </div>\n </div>\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'), +a.put("app/channels/voice/realtime/view/abandoned/abandoned.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initAbandoned()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-pagination ui-grid-auto-resize>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/realtime/view/agent/agent.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initAgents()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-pagination ui-grid-auto-resize>\n <span us-spinner spinner-key="grid-spinner" spinner-start-active="true"></span>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/realtime/view/agent/agent.modal.info.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_SIP_CLIENT_INFO\' | translate }}</h3>\n</div>\n<div class="modal-body">\n<div data-ng-if="agent.ipaddr" class="well">\n <div>{{agent.ipaddr}}:{{agent.port}}</div>\n <div>{{agent.fullcontact}}</div>\n <div>{{agent.useragent}}</div>\n <div>{{agent.lastms}}</div>\n</div>\n<div data-ng-if="!agent.ipaddr" class="alert alert-danger" role="alert">\n {{\'MESSAGE_NO_AVAILABLE_INFO\' | translate}}\n</div>\n<!-- hidden random uiselect, needed to recompile the modal every time and show the content -->\n<ui-select multiple class="hide" ng-model="item.queues" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_QUEUE\' | translate}}">{{$item.name}}</ui-select-match>\n <ui-select-choices repeat="queue.name as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n</ui-select>\n<!-- -->\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/channels/voice/realtime/view/agent/queue.modal.add.html",'<div class="modal-header" data-ng-init="init()">\n <h3 class="modal-title">{{ \'APPLICATION_QUEUES\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <div class="form-group row">\n <label class="col-md-2 control-label" style="margin-top: 7px;">{{\'APPLICATION_QUEUE\' | translate}}:</label>\n <div class="col-md-6">\n <ui-select multiple ng-model="item.queues" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_QUEUE\' | translate}}">{{$item.name}}</ui-select-match>\n <ui-select-choices repeat="queue.name as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-2">\n <button class="btn btn-success bts-sm" type="button" ng-click="joinQueue()" ng-disabled="form.$invalid">{{ \'APPLICATION_JOIN_QUEUE\' | translate }}</button>\n </div>\n</div>\n<div class="form-group row">\n<label class="col-md-2 control-label" style="margin-top: 7px;">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20 col-md-6">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="params.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="params.penalty=params.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!params.penalty" data-ng-click="params.penalty=params.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n</div>\n<div>\n <div data-ng-if="queueTable" ui-grid="queueTable" name="queueTable" ui-grid-resize-columns class="ui-grid" ui-grid-pagination ui-grid-auto-resize>\n <span us-spinner spinner-key="agentqueue-spinner" spinner-start-active="true"></span>\n <div class="watermark" ng-show="!queueTable.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n</div>\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/channels/voice/realtime/view/outbound/outbound.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initDials()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-auto-resize ui-grid-pagination>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/realtime/view/parameter/parameter.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initParameters()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-tree-view ui-grid-expandable-row ui-grid-pagination ui-grid-auto-resize>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/realtime/view/queue/queue.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row mbottom20" data-ng-init="initQueues()">\n <ui-select ng-model="item.queue" theme="bootstrap" class="col-md-6" data-ng-change="getAgents(item.queue)" required>\n <ui-select-match placeholder="{{\'APPLICATION_QUEUE\' | translate}}" allow-clear>{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="queue.name as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n</div>\n<div class="row">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-pagination ui-grid-auto-resize>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/realtime/view/queuecalls/queuecalls.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initQueues()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-auto-resize ui-grid-pagination>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/realtime/view/telephone/telephone.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initTelephones()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-pagination ui-grid-auto-resize>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/realtime/view/telephone/telephone.modal.info.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_INTERFACE_INFO\' | translate }}</h3>\n</div>\n<div class="modal-body">\n<div data-ng-if="telephone.ipaddr" class="well">\n <div>{{telephone.ipaddr}}:{{telephone.port}}</div>\n <div>{{telephone.fullcontact}}</div>\n <div>{{telephone.useragent}}</div>\n <div>{{telephone.lastms}}</div>\n</div>\n<div data-ng-if="!telephone.ipaddr" class="alert alert-danger" role="alert">\n {{\'MESSAGE_NO_AVAILABLE_INFO\' | translate}}\n</div>\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/channels/voice/realtime/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-directions"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-energy"></i>\n <a href="/channels/voice/realtime/view/agents">{{ \'APPLICATION_REALTIME\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <div>\n <nav class="navbar navbar-default" role="navigation">\n <div class="collapse navbar-collapse">\n <ul class="nav navbar-nav">\n <li data-ng-class="{\'active\': $state.is(\'main.channels.voice.realtime.view.agents\')}">\n <a href="/channels/voice/realtime/view/agents">\n {{\'APPLICATION_AGENTS\' | translate}}\n </a>\n </li>\n <li data-ng-class="{\'active\': $state.is(\'main.channels.voice.realtime.view.telephones\')}" data-ng-show="Auth.isAdmin()">\n <a href="/channels/voice/realtime/view/telephones">\n {{\'APPLICATION_TELEPHONES\' | translate}}\n </a>\n </li>\n <li data-ng-class="{\'active\': $state.is(\'main.channels.voice.realtime.view.queues\')}">\n <a href="/channels/voice/realtime/view/queues">\n {{\'APPLICATION_QUEUES\' | translate}}\n </a>\n </li>\n <li data-ng-class="{\'active\': $state.is(\'main.channels.voice.realtime.view.queuecalls\')}">\n <a href="/channels/voice/realtime/view/queuecalls">\n {{\'APPLICATION_QUEUE_CALLS\' | translate}}\n </a>\n </li>\n <li data-ng-class="{\'active\': $state.is(\'main.channels.voice.realtime.view.parameters\')}">\n <a href="/channels/voice/realtime/view/parameters">\n {{\'APPLICATION_QUEUE_PARAMETERS\' | translate}}\n </a>\n </li>\n <li data-ng-class="{\'active\': $state.is(\'main.channels.voice.realtime.view.abandoned\')}">\n <a href="/channels/voice/realtime/view/abandoned">\n {{\'APPLICATION_QUEUE_ABANDONED\' | translate}}\n </a>\n </li>\n <li data-ng-class="{\'active\': $state.is(\'main.channels.voice.realtime.view.outbound\')}">\n <a href="/channels/voice/realtime/view/outbound">\n {{\'APPLICATION_OUTBOUND_CALLS\' | translate}}\n </a>\n </li>\n <li>\n <a href="#">\n <b>|{{\'APPLICATION_SHOW_TIMERS\' | translate}} </b><input\n bs-switch\n class="form-control"\n ng-model="showTimers"\n type="checkbox"\n name="showTimers"\n switch-active="{{ timerSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ timerSwitch.onColor }}"\n switch-off-color="{{ timerSwitch.offColor }}"\n switch-animate="{{ timerSwitch.animate }}"\n switch-size="{{ timerSwitch.size }}"\n switch-label="{{ timerSwitch.label }}"\n switch-icon="{{ timerSwitch.icon }}"\n switch-radio-off="{{ timerSwitch.radioOff }}"\n switch-label-width="{{ timerSwitch.labelWidth }}"\n switch-handle-width="{{ timerSwitch.handleWidth }}"><b>|</b>\n </a>\n </li>\n </ul>\n </div>\n </nav>\n </div>\n <div ui-view></div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/recording/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-play"></i>\n <a href="#">{{ \'APPLICATION_RECORDINGS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="fa fa-play font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_RECORDINGS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length && Auth.isAdmin()">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/route/inbound/list/create.modal.html",'<div class="modal-header" data-ng-init="getContexts()">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_ROUTE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="forms.extension" novalidate>\n\n <!-- START EXTEN -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.extension.exten.$touched || forms.extension.$submitted) && forms.extension.exten.$invalid || existRoute}">\n <label class="control-label">{{\'APPLICATION_PHONE_NUMBER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="exten" placeholder="{{\'APPLICATION_PHONE_NUMBER\' | translate}}" class="form-control" data-ng-model="item.exten" data-ng-pattern="settings.patternName" required/>\n <span data-ng-show="(forms.extension.exten.$touched || forms.extension.$submitted) && forms.extension.exten.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EXTEN -->\n\n <!-- START CONTEXT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.extension.context.$touched || forms.extension.$submitted) && forms.extension.context.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONTEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.context" name="context" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="context.name as context in voiceContexts | filter: $select.search">\n <div ng-bind-html="context.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CONTEXT\' | translate }}\n </span>\n <span data-ng-show="(forms.extension.context.$touched || forms.extension.$submitted) && forms.extension.context.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONTEXT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="forms.extension.$invalid || existRoute">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n<!-- <pre>\n {{item | json}}\n</pre> -->\n'),a.put("app/channels/voice/route/inbound/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-call-in"></i>\n <a href="/channels/voice/routes/inbound/list">{{ \'APPLICATION_INBOUND\' | translate }} {{ \'APPLICATION_ROUTES\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-users font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_INBOUND\' | translate }} {{ \'APPLICATION_ROUTES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle " href="#" data-ng-click="create()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ROUTE\' | translate }}\n </a>\n </div>\n <!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> -->\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter class="ui-grid" ui-grid-draggable-rows>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/route/inbound/view/view.applications.html",'<div ui-view class="profile-content">\n<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACTIONS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="selectedRows.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle " href="/channels/voice/routes/inbound/view/{{route.id}}/application" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_APPLICATION\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div data-ng-if="showGrid" ui-grid="gridOptions" ui-grid-resize-columns class="grid" ui-grid-selection ui-grid-draggable-rows ui-grid-auto-resize>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n</div>\n'),a.put("app/channels/voice/route/inbound/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getRoute()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-reload"></i>\n <a href="/channels/voice/routes/inbound/list">{{ \'APPLICATION_INBOUND\' | translate }} {{ \'APPLICATION_ROUTES\' | translate }}</a>\n <i data-ng-show="route" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="route">\n <a href="#">{{route.exten}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/inboundroute.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{route.exten}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.voice.routes.inbound.view.settings\')}">\n <a data-ng-click="deselectAndRedirect(\'/channels/voice/routes/inbound/view/\'+route.id+\'/settings\')">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n'+" <li data-ng-class=\"{active: $state.is('main.channels.voice.routes.inbound.view.applications') || $state.is('main.channels.voice.routes.inbound.view.application') || $state.is('main.channels.voice.routes.inbound.view.applications.settings')}\">\n <a data-ng-click=\"deselectAndRedirect('/channels/voice/routes/inbound/view/'+route.id+'/applications')\">\n <i class=\"icon-list\"></i>\n {{ 'APPLICATION_ACTIONS' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class=\"profile-content\">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n"),a.put("app/channels/voice/route/inbound/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_INBOUND\' | translate}} {{ \'APPLICATION_ROUTE\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body" data-ng-init="getContexts()">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateRoute()" novalidate>\n\n <!-- START EXTEN -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.exten.$touched || forms.general.$submitted) && forms.general.exten.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE_NUMBER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="exten" placeholder="{{\'APPLICATION_PHONE_NUMBER\' | translate}}" class="form-control" data-ng-model="route.exten" required/>\n <span data-ng-show="(forms.general.exten.$touched || forms.general.$submitted) && forms.general.exten.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EXTEN -->\n\n <!-- START CONTEXT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.context.$touched || forms.general.$submitted) && forms.general.context.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONTEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="route.context" name="context" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="context.name as context in voiceContexts | filter: $select.search">\n <div ng-bind-html="context.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CONTEXT\' | translate }}\n </span>\n <span data-ng-show="(forms.general.context.$touched || forms.general.$submitted) && forms.general.context.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONTEXT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="route.description"/></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/voice/route/internal/list/create.modal.html",'<div class="modal-header" data-ng-init="getContexts()">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_ROUTE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="forms.extension" novalidate>\n\n <!-- START EXTEN -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.extension.exten.$touched || forms.extension.$submitted) && forms.extension.exten.$invalid || existRoute}">\n <label class="control-label">{{\'APPLICATION_PHONE_NUMBER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="exten" placeholder="{{\'APPLICATION_PHONE_NUMBER\' | translate}}" class="form-control" data-ng-model="item.exten" data-ng-pattern="settings.patternName" required/>\n <span data-ng-show="(forms.extension.exten.$touched || forms.extension.$submitted) && forms.extension.exten.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EXTEN -->\n\n <!-- START CONTEXT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.extension.context.$touched || forms.extension.$submitted) && forms.extension.context.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONTEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.context" name="context" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="context.name as context in voiceContexts | filter: $select.search">\n <div ng-bind-html="context.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CONTEXT\' | translate }}\n </span>\n <span data-ng-show="(forms.extension.context.$touched || forms.extension.$submitted) && forms.extension.context.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONTEXT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="forms.extension.$invalid || existRoute">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n<!-- <pre>\n {{item | json}}\n</pre> -->\n'),a.put("app/channels/voice/route/internal/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-reload"></i>\n <a href="/voice/routes/internal/list">{{ \'APPLICATION_INTERNAL\' | translate }} {{ \'APPLICATION_ROUTES\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-users font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_INTERNAL\' | translate }} {{ \'APPLICATION_ROUTES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle " href="#" data-ng-click="create()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ROUTE\' | translate }}\n </a>\n </div>\n <!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> -->\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter class="ui-grid" ui-grid-draggable-rows>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), +a.put("app/channels/voice/route/internal/view/view.applications.html",'<div ui-view class="profile-content">\n<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACTIONS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="selectedRows.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle " href="/channels/voice/routes/internal/view/{{route.id}}/application" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_APPLICATION\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div data-ng-if="showGrid" ui-grid="gridOptions" ui-grid-resize-columns class="grid" ui-grid-selection ui-grid-draggable-rows ui-grid-auto-resize>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n</div>\n'),a.put("app/channels/voice/route/internal/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getRoute()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-reload"></i>\n <a href="/channels/voice/routes/internal/list">{{ \'APPLICATION_INTERNAL\' | translate }} {{ \'APPLICATION_ROUTES\' | translate }}</a>\n <i data-ng-show="route" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="route">\n <a href="#">{{route.exten}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/internalroute.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{route.exten}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.voice.routes.internal.view.settings\')}">\n <a data-ng-click="deselectAndRedirect(\'/channels/voice/routes/internal/view/\'+route.id+\'/settings\')">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n'+" <li data-ng-class=\"{active: $state.is('main.channels.voice.routes.internal.view.applications') || $state.is('main.channels.voice.routes.internal.view.application') || $state.is('main.channels.voice.routes.internal.view.applications.settings')}\">\n <a data-ng-click=\"deselectAndRedirect('/channels/voice/routes/internal/view/'+route.id+'/applications')\">\n <i class=\"icon-list\"></i>\n {{ 'APPLICATION_ACTIONS' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class=\"profile-content\">\n </div>\n <!-- <pre>\n {{route | json}}\n </pre> -->\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n"),a.put("app/channels/voice/route/internal/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_INTERNAL\' | translate}} {{ \'APPLICATION_ROUTE\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body" data-ng-init="getContexts()">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateRoute()" novalidate>\n\n <!-- START EXTEN -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.exten.$touched || forms.general.$submitted) && forms.general.exten.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE_NUMBER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="exten" placeholder="{{\'APPLICATION_PHONE_NUMBER\' | translate}}" class="form-control" data-ng-model="route.exten" required/>\n <span data-ng-show="(forms.general.exten.$touched || forms.general.$submitted) && forms.general.exten.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EXTEN -->\n\n <!-- START CONTEXT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.context.$touched || forms.general.$submitted) && forms.general.context.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONTEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="route.context" name="context" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="context.name as context in voiceContexts | filter: $select.search">\n <div ng-bind-html="context.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CONTEXT\' | translate }}\n </span>\n <span data-ng-show="(forms.general.context.$touched || forms.general.$submitted) && forms.general.context.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONTEXT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="route.description"/></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/voice/route/outbound/list/create.modal.html",'<div class="modal-header" data-ng-init="getContexts()">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_ROUTE\' | translate }}</h3>\n</div>\n<div class="modal-body" data-ng-init="getTags()">\n <form name="forms.extension" novalidate>\n\n <!-- START EXTEN -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.extension.exten.$touched || forms.extension.$submitted) && forms.extension.exten.$invalid || existRoute}">\n <label class="control-label">{{\'APPLICATION_DESTINATION_PATTERN\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="exten" placeholder="{{\'APPLICATION_DESTINATION_PATTERN\' | translate}}" class="form-control" data-ng-model="item.exten" data-ng-pattern="settings.patternName" required/>\n <span data-ng-show="(forms.extension.exten.$touched || forms.extension.$submitted) && forms.extension.exten.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EXTEN -->\n\n <!-- START CONTEXT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.extension.context.$touched || forms.extension.$submitted) && forms.extension.context.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONTEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.context" name="context" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="context.name as context in voiceContexts | filter: $select.search">\n <div ng-bind-html="context.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CONTEXT\' | translate }}\n </span>\n <span data-ng-show="(forms.extension.context.$touched || forms.extension.$submitted) && forms.extension.context.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONTEXT -->\n\n <!-- START TAG -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.extension.tag.$touched || forms.extension.$submitted) && forms.extension.tag.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TAG\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.tag" name="tag" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_TAG\' | translate }}" data-ng-init="item.tag = \'--\'">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="tag.name as tag in tags | filter: $select.search">\n <div ng-bind-html="tag.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.extension.tag.$touched || forms.extension.$submitted) && forms.extension.tag.$invalid && forms.extension.tag.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TAG -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="forms.extension.$invalid || existRoute">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n<!-- <pre>\n {{item | json}}\n</pre> -->\n'),a.put("app/channels/voice/route/outbound/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-call-out"></i>\n <a href="/channels/voice/routes/outbound/list">{{ \'APPLICATION_OUTBOUND\' | translate }} {{ \'APPLICATION_ROUTES\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-users font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_OUTBOUND\' | translate }} {{ \'APPLICATION_ROUTES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle " href="#" data-ng-click="create()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ROUTE\' | translate }}\n </a>\n </div>\n <!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> -->\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter class="ui-grid" ui-grid-draggable-rows>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/route/outbound/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getRoute()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-call-out"></i>\n <a href="/channels/voice/routes/outbound/list">{{ \'APPLICATION_OUTBOUND\' | translate }} {{ \'APPLICATION_ROUTES\' | translate }}</a>\n <i data-ng-show="route" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="route">\n <a href="#">{{route.exten}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/outboundroute.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{route.exten}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.voice.routes.outbound.view.settings\')}">\n <a data-ng-click="deselectAndRedirect(\'/channels/voice/routes/outbound/view/\'+route.id+\'/settings\')">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n'+" <li data-ng-class=\"{active: $state.is('main.channels.voice.routes.outbound.view.routes') || $state.is('main.channels.voice.routes.outbound.view.route') || $state.is('main.channels.voice.routes.outbound.view.routes.settings')}\">\n <a data-ng-click=\"deselectAndRedirect('/channels/voice/routes/outbound/view/'+route.id+'/routes')\">\n <i class=\"icon-list\"></i>\n {{ 'APPLICATION_ACTIONS' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class=\"profile-content\">\n </div>\n <!-- <pre>\n {{route | json}}\n </pre> -->\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n"),a.put("app/channels/voice/route/outbound/view/view.route.html",'<div class="row" data-ng-init="initApplication(true);getIntervals();">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_NEW_ROUTE\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <div class="profile-usertitle-name">\n {{(main.app.name | translate) || \'Application\'}}\n </div>\n <wizard on-finish="addApplication()">\n <wz-step title="{{\'APPLICATION_SETTINGS\' | translate}}" canexit="formValidation(forms.info.$valid)">\n <form name="forms.info" novalidate>\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n <!-- START APP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.app.$touched || forms.info.$submitted) && forms.info.app.$invalid}">\n <label class="control-label">{{ \'APPLICATION_APPLICATION\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="main.app" name="app" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_APPLICATION\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="app in applications | filter: $select.search">\n <div ng-bind-html="app.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.info.app.$touched || forms.info.$submitted) && forms.info.app.$invalid && forms.info.app.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APP -->\n <div id="Dial" class="app-settings" ng-slide-down="main.app.value == \'Dial\' && main.app.type == \'outboundDial\'" lazy-render duration="1">\n <!-- START TRUNK -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.trunk.$touched || forms.info.$submitted) && forms.info.trunk.$invalid}">\n <label class="control-label">{{\'APPLICATION_TRUNK\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.appdata[0]" data-ng-init="application.appdata[0] = null" name="trunk" theme="bootstrap" required data-ng-disabled="!items.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="trunk.name as trunk in items | filter: $select.search">\n <div ng-bind-html="trunk.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="items.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_TRUNKS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/trunks/list">{{\'APPLICATION_TRUNKS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.info.trunk.$touched || forms.info.$submitted) && forms.info.trunk.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TRUNK -->\n\n <!-- START CALLERID -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.callerID.$touched || forms.info.$submitted) && forms.info.callerID.$invalid}">\n <label class="control-label">{{ \'APPLICATION_CALLERID\' | translate }}</label>\n <input type="text" name="callerID" pattern=\'^"[a-zA-Z0-9_.-]*" <[a-zA-Z0-9_.-]*>\' placeholder=\'"name" <number>\' class="form-control" data-ng-model="application.appdata[1]" data-ng-init="application.appdata[1] = null">\n <span class="help-block">\n {{ \'DESCRIPTION_OUTBOUND_CALLERID\' | translate }}\n </span>\n <span data-ng-show="(forms.info.callerID.$touched || forms.info.$submitted) && forms.info.callerID.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CALLERID -->\n\n <!-- START PREFIX -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.prefix.$touched || forms.info.$submitted) && forms.info.prefix.$invalid}">\n <label class="control-label">{{ \'APPLICATION_PREFIX\' | translate }}</label>\n <input type="text" name="prefix" placeholder="{{ \'APPLICATION_PREFIX\' | translate }}" class="form-control" data-ng-model="application.appdata[2]" data-ng-init="application.appdata[2] = null">\n <span class="help-block">\n {{ \'DESCRIPTION_OUTBOUND_PREFIX\' | translate }}\n </span>\n <span data-ng-show="(forms.info.prefix.$touched || forms.info.$submitted) && forms.info.prefix.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PREFIX -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TIMEOUT\' | translate }}</label>\n <input type="text" pattern="[0-9]+" name="timeout" placeholder="" class="form-control" data-ng-model="application.appdata[3]" data-ng-init="application.appdata[3] = null">\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{ \'APPLICATION_OPTIONS\' | translate }}</label>\n <input type="text" name="app_options" placeholder="" class="form-control" data-ng-model="application.appdata[4]" data-ng-init="application.appdata[4] = null">\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid && forms.settings.app_options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START URL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid}">\n <label class="control-label">{{ \'APPLICATION_URL\' | translate }}</label>\n <input type="text" name="url" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="application.appdata[5]" data-ng-init="application.appdata[5] = null">\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END URL -->\n\n </div>\n <div id="Custom" class="app-settings" ng-slide-down="main.app.type == \'custom\'" lazy-render duration="1">\n\n <!-- START CUSTOMAPP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.customApp.$touched || forms.info.$submitted) && forms.info.customApp.$invalid}">\n <label class="control-label">{{ \'APPLICATION_CUSTOM_APP\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="customApp" placeholder="{{ \'APPLICATION_CUSTOM_APP\' | translate }}" class="form-control" data-ng-model="application.app" data-ng-init="application.appdata[0] = null" required>\n <span data-ng-show="(forms.info.customApp.$touched || forms.info.$submitted) && forms.info.customApp.$invalid && forms.info.customApp.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CUSTOMAPP -->\n\n <!-- START APPDATA -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.appdata.$touched || forms.info.$submitted) && forms.info.appdata.$invalid}">\n <label class="control-label">{{ \'APPLICATION_ARGUMENTS\' | translate }}</label>\n <input type="text" name="appdata" placeholder="{{ \'APPLICATION_ARGUMENTS\' | translate }}" class="form-control" data-ng-model="application.appdata[0]" data-ng-init="application.appdata[1] = null">\n <span data-ng-show="(forms.info.appdata.$touched || forms.info.$submitted) && forms.info.appdata.$invalid && forms.info.appdata.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APPDATA -->\n </div>\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n </form>\n </wz-step>\n <wz-step title="{{\'APPLICATION_INTERVAL\' | translate}}" canexit="formValidation(forms.interval.IntervalId.$valid || forms.interval.hasOwnProperty(\'t_from\') || forms.interval.intType.$modelValue === \'always\')">\n <form name="forms.interval" novalidate>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n <!-- START INTERVAL_TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.interval.intType.$touched || forms.interval.$submitted) && forms.interval.intType.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVAL_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="interval.intType" theme="bootstrap" name="intType" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="intType.value as intType in $application.intTypes | filter: $select.search">\n {{$translate.instant(intType.name)}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.interval.intType.$touched || forms.interval.$submitted) && forms.interval.intType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVAL_TYPE -->\n <div id="customInterval" class="app-settings" ng-slide-down="interval.intType == \'custom\'" lazy-render duration="1">\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="interval.alwaysTime"><uib-timepicker name="t_from" data-ng-model="interval.t_from" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="interval.alwaysTime"><uib-timepicker name="t_to" data-ng-model="interval.t_to" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="interval.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label>\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="interval.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="interval.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="interval.md_from" theme="bootstrap" name="md_from">\n <ui-select-match>{{$select.selected === \'always\' ? \'APPLICATION_ALWAYS\' : $select.selected | translate}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search">\n {{monthDay === \'always\' ? \'APPLICATION_ALWAYS\' : monthDay | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="interval.md_to" theme="bootstrap" name="md_to">\n <ui-select-match>{{$select.selected === \'always\' ? \'APPLICATION_ALWAYS\' : $select.selected | translate}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search">\n {{monthDay === \'always\' ? \'APPLICATION_ALWAYS\' : monthDay | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="interval.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{month.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="interval.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{month.name | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </div>\n\n <div id="customInterval" class="app-settings" ng-slide-down="interval.intType == \'list\'" lazy-render duration="1">\n\n <!-- START INTERVALS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.interval.IntervalId.$touched || forms.interval.$submitted) && forms.interval.IntervalId.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVALS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="interval.IntervalId" theme="bootstrap" name="IntervalId" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="interval.id as interval in Intervals | filter: $select.search">\n {{interval.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.interval.IntervalId.$touched || forms.interval.$submitted) && forms.interval.IntervalId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVALS -->\n\n </div>\n\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), +a.put("app/channels/voice/route/outbound/view/view.routeSettings.html",'<div class="row" data-ng-init="initApplication();getApplication();getIntervals();">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_APPLICATION_SETTINGS\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="updateRoute(\'routes\')">\n <div class="profile-usertitle-name">\n {{(main.app.name | translate) || \'Application\'}}\n </div>\n <wz-step title="{{\'APPLICATION_APPLICATION\' | translate}}" canexit="formValidation(forms.info.$valid)">\n <form name="forms.info" novalidate>\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n <div id="Dial" class="app-settings" ng-slide-down="main.app.value == \'Dial\' && main.app.type == \'outboundDial\'" lazy-render duration="1">\n\n <!-- START TRUNK -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.trunk.$touched || forms.info.$submitted) && forms.info.trunk.$invalid}">\n <label class="control-label">{{\'APPLICATION_TRUNK\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="route.Applications[selectedApp].appdata[0]" name="trunk" theme="bootstrap" required data-ng-disabled="!items.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="trunk.name as trunk in items | filter: $select.search">\n <div ng-bind-html="trunk.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="items.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_TRUNKS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/trunks/list">{{\'APPLICATION_TRUNKS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.info.trunk.$touched || forms.info.$submitted) && forms.info.trunk.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TRUNK -->\n\n <!-- START CALLERID -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.callerID.$touched || forms.info.$submitted) && forms.info.callerID.$invalid}">\n <label class="control-label">{{ \'APPLICATION_CALLERID\' | translate }}</label>\n <input type="text" name="callerID" pattern=\'^"[a-zA-Z0-9_.-]*" <[a-zA-Z0-9_.-]*>\' placeholder=\'"name" <number>\' class="form-control" data-ng-model="route.Applications[selectedApp].appdata[1]">\n <span class="help-block">\n {{ \'DESCRIPTION_OUTBOUND_CALLERID\' | translate }} "name" <number>\n </span>\n <span data-ng-show="(forms.info.callerID.$touched || forms.info.$submitted) && forms.info.callerID.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CALLERID -->\n\n <!-- START PREFIX -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.prefix.$touched || forms.info.$submitted) && forms.info.prefix.$invalid}">\n <label class="control-label">{{ \'APPLICATION_PREFIX\' | translate }}</label>\n <input type="text" name="prefix" placeholder="{{ \'APPLICATION_PREFIX\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[2]">\n <span class="help-block">\n {{ \'DESCRIPTION_OUTBOUND_PREFIX\' | translate }}\n </span>\n <span data-ng-show="(forms.info.prefix.$touched || forms.info.$submitted) && forms.info.prefix.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PREFIX -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TIMEOUT\' | translate }}</label>\n <input type="text" pattern="[0-9]+" name="timeout" placeholder="" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[3]">\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{ \'APPLICATION_OPTIONS\' | translate }}</label>\n <input type="text" name="app_options" placeholder="" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[4]">\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid && forms.settings.app_options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START URL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid}">\n <label class="control-label">{{ \'APPLICATION_URL\' | translate }}</label>\n <input type="text" name="url" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[5]">\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END URL -->\n </div>\n <div id="Custom" class="app-settings" ng-slide-down="main.app.type == \'custom\'" lazy-render duration="1">\n\n <!-- START CUSTOMAPP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.customApp.$touched || forms.info.$submitted) && forms.info.customApp.$invalid}">\n <label class="control-label">{{ \'APPLICATION_CUSTOM_APP\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="customApp" placeholder="{{ \'APPLICATION_CUSTOM_APP\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].app" required>\n <span data-ng-show="(forms.info.customApp.$touched || forms.info.$submitted) && forms.info.customApp.$invalid && forms.info.customApp.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CUSTOMAPP -->\n\n <!-- START APPDATA -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.appdata.$touched || forms.info.$submitted) && forms.info.appdata.$invalid}">\n <label class="control-label">{{ \'APPLICATION_ARGUMENTS\' | translate }}</label>\n <input type="text" name="appdata" placeholder="{{ \'APPLICATION_ARGUMENTS\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[0]">\n <span data-ng-show="(forms.info.appdata.$touched || forms.info.$submitted) && forms.info.appdata.$invalid && forms.info.appdata.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APPDATA -->\n </div>\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n </form>\n </wz-step>\n <wz-step title="{{\'APPLICATION_INTERVAL\' | translate}}" canexit="formValidation(forms.interval.IntervalId.$valid || forms.interval.hasOwnProperty(\'t_from\') || forms.interval.intType.$modelValue === \'always\')">\n <form name="forms.interval" novalidate>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n <!-- START INTERVAL_TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.interval.intType.$touched || forms.interval.$submitted) && forms.interval.intType.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVAL_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="interval.intType" theme="bootstrap" name="intType" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="intType.value as intType in $application.intTypes | filter: $select.search">\n {{intType.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.interval.intType.$touched || forms.interval.$submitted) && forms.interval.intType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVAL_TYPE -->\n <div id="customInterval" class="app-settings" ng-slide-down="interval.intType == \'custom\'" lazy-render duration="1">\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="interval.alwaysTime"><uib-timepicker name="t_from" data-ng-model="interval.t_from" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="interval.alwaysTime"><uib-timepicker name="t_to" data-ng-model="interval.t_to" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="interval.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label> -->\n <!-- START ALWAYS -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALWAYS\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="interval.alwaysTime"\n type="checkbox"\n switch-active="{{ alwaysSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ alwaysSwitch.onColor }}"\n switch-off-color="{{ alwaysSwitch.offColor }}"\n switch-animate="{{ alwaysSwitch.animate }}"\n switch-size="{{ alwaysSwitch.size }}"\n switch-label="{{ alwaysSwitch.label }}"\n switch-icon="{{ alwaysSwitch.icon }}"\n switch-radio-off="{{ alwaysSwitch.radioOff }}"\n switch-label-width="{{ alwaysSwitch.labelWidth }}"\n switch-handle-width="{{ alwaysSwitch.handleWidth }}">\n </label>\n </div>\n </div>\n <!-- END ALWAYS -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="interval.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="interval.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="interval.md_from" theme="bootstrap" name="md_from">\n <ui-select-match>{{$select.selected === \'always\' ? \'APPLICATION_ALWAYS\' : $select.selected | translate}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search">\n {{monthDay === \'always\' ? \'APPLICATION_ALWAYS\' : monthDay | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="interval.md_to" theme="bootstrap" name="md_to">\n <ui-select-match>{{$select.selected === \'always\' ? \'APPLICATION_ALWAYS\' : $select.selected | translate}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search">\n {{monthDay === \'always\' ? \'APPLICATION_ALWAYS\' : monthDay | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="interval.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{month.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="interval.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{month.name | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </div>\n\n <div id="customInterval" class="app-settings" ng-slide-down="interval.intType == \'list\'" lazy-render duration="1">\n\n <!-- START INTERVALS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.interval.IntervalId.$touched || forms.interval.$submitted) && forms.interval.IntervalId.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVALS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="interval.IntervalId" theme="bootstrap" name="IntervalId" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="interval.id as interval in Intervals | filter: $select.search">\n {{interval.name | translate}}\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="intervals.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_INTERVAL_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/intervals/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.interval.IntervalId.$touched || forms.interval.$submitted) && forms.interval.IntervalId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVALS -->\n\n </div>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/route/outbound/view/view.routes.html",'<div ui-view class="profile-content">\n<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACTIONS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="selectedRows.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle " href="/channels/voice/routes/outbound/view/{{route.id}}/route" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ROUTE\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div data-ng-if="showGrid" ui-grid="gridOptions" ui-grid-resize-columns class="grid" ui-grid-selection ui-grid-draggable-rows ui-grid-auto-resize>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n</div>\n'),a.put("app/channels/voice/route/outbound/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_OUTBOUND\' | translate}} {{ \'APPLICATION_ROUTE\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body" data-ng-init="getContexts();getTags();">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateRoute()" novalidate>\n\n <!-- START EXTEN -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.exten.$touched || forms.general.$submitted) && forms.general.exten.$invalid}">\n <label class="control-label">{{\'APPLICATION_DESTINATION_PATTERN\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="exten" placeholder="{{\'APPLICATION_DESTINATION_PATTERN\' | translate}}" class="form-control" data-ng-model="route.exten" required/>\n <span data-ng-show="(forms.general.exten.$touched || forms.general.$submitted) && forms.general.exten.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EXTEN -->\n\n <!-- START CUTDIGITS -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_CUTDIGITS\' | translate}}</label>\n <input type="text" pattern="[0-9]+" class="form-control" name="cutdigits" data-ng-model="route.cutdigits">\n <span class="help-block">\n </span>\n </div>\n <!-- END CUTDIGITS -->\n\n <!-- START TAG -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.tag.$touched || forms.general.$submitted) && forms.general.tag.$invalid}">\n <label class="control-label">{{\'APPLICATION_TAG\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="route.tag" name="tag" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="tag.name as tag in tags | filter: $select.search">\n <div ng-bind-html="tag.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.tag.$touched || forms.general.$submitted) && forms.general.tag.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TAG -->\n\n <!-- START CONTEXT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.context.$touched || forms.general.$submitted) && forms.general.context.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONTEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="route.context" name="context" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="context.name as context in voiceContexts | filter: $select.search">\n <div ng-bind-html="context.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CONTEXT\' | translate }}\n </span>\n <span data-ng-show="(forms.general.context.$touched || forms.general.$submitted) && forms.general.context.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONTEXT -->\n\n <!-- START RECORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.record.$touched || forms.general.$submitted) && forms.general.record.$invalid}">\n <label class="control-label">{{\'APPLICATION_RECORDING\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="route.record"\n type="checkbox"\n switch-active="{{ recordSwitch.isActive }}"\n switch-on-text="{{ recordSwitch.onText }}"\n switch-off-text="{{ recordSwitch.offText }}"\n switch-on-color="{{ recordSwitch.onColor }}"\n switch-off-color="{{ recordSwitch.offColor }}"\n switch-animate="{{ recordSwitch.animate }}"\n switch-size="{{ recordSwitch.size }}"\n switch-label="{{ recordSwitch.label }}"\n switch-icon="{{ recordSwitch.icon }}"\n switch-radio-off="{{ recordSwitch.radioOff }}"\n switch-label-width="{{ recordSwitch.labelWidth }}"\n switch-handle-width="{{ recordSwitch.handleWidth }}">\n <span data-ng-show="(forms.general.record.$touched || forms.general.$submitted) && forms.general.record.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END RECORD -->\n\n <!-- START RECORDINGFORMAT -->\n <div data-ng-if="route.record" class="form-group" data-ng-class="{\'has-error\': (forms.general.recordingFormat.$touched || forms.general.$submitted) && forms.general.recordingFormat.$invalid}">\n <label class="control-label">{{\'APPLICATION_FORMAT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="route.recordingFormat" name="recordingFormat" theme="bootstrap" data-ng-required="route.record">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="format in [\'wav\',\'gsm\'] | filter: $select.search">\n <div ng-bind-html="format | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.recordingFormat.$touched || forms.general.$submitted) && forms.general.recordingFormat.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END RECORDINGFORMAT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="route.description"/></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/voice/route/view.application.html",'\n<div class="row" data-ng-init="initApplication(true); getIntervals();">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_NEW_APPLICATION\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="addApplication()">\n <div class="profile-usertitle-name">\n {{(main.app.name | translate) || \'Application\'}}\n </div>\n <wz-step title="{{\'APPLICATION_APPLICATION\' | translate}}" canexit="formValidation(forms.settings.$valid)">\n <form name="forms.settings" novalidate>\n\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n <!-- START APP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app.$touched || forms.settings.$submitted) && forms.settings.app.$invalid}">\n <label class="control-label">{{ \'APPLICATION_APPLICATION\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="main.app" name="app" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_APPLICATION\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="app in $application.applications| filter: $select.search">\n <div ng-bind-html="app.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.app.$touched || forms.settings.$submitted) && forms.settings.app.$invalid && forms.settings.app.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APP -->\n\n <div id="Queue" class="app-settings" ng-slide-down="main.app.value == \'Queue\'" lazy-render duration="1">\n <!-- START QUEUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.queue.$touched || forms.settings.$submitted) && forms.settings.queue.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.appdata[0]" data-ng-init="application.appdata[0] = null" name="queue" theme="bootstrap" required data-ng-disabled="!items.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="queue.name as queue in items | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="items.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_QUEUES_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/voice/queues/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.queue.$touched || forms.settings.$submitted) && forms.settings.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{\'APPLICATION_OPTIONS\' | translate}}</label>\n <input type="text" pattern="[^,]*" name="app_options" placeholder="{{ \'APPLICATION_OPTIONS\' | translate }}" class="form-control" data-ng-model="application.appdata[1]" data-ng-init="application.appdata[1] = null">\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid && forms.settings.app_options.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n <!-- START URL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid}">\n <label class="control-label">{{ \'APPLICATION_URL\' | translate }}</label>\n <input type="text" pattern="[^,]*" name="url" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="application.appdata[2]" data-ng-init="application.appdata[2] = null">\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END URL -->\n\n <!-- START APPLICATION_ANNOUNCE_OVERRIDE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.audiofile.$touched || forms.settings.$submitted) && forms.settings.audiofile.$invalid}">\n <label class="control-label">{{\'APPLICATION_ANNOUNCE_OVERRIDE\' | translate}}</label>\n <ui-select data-ng-model="application.appdata[3]" data-ng-init="application.appdata[3] = null" name="audiofile" theme="bootstrap" data-ng-disabled="!items2.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.display_name}}</ui-select-match>\n <ui-select-choices repeat="settings.soundPath+\'/\'+audio.save_name as audio in items2 | filter: $select.search">\n <div ng-bind-html="audio.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="items2.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_SOUNDS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/sounds/list">{{\'APPLICATION_SOUNDS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.audiofile.$touched || forms.settings.$submitted) && forms.settings.audiofile.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APPLICATION_ANNOUNCE_OVERRIDE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TIMEOUT\' | translate }}</label>\n <input type="text" pattern="[0-9]+" name="timeout" placeholder="" class="form-control" data-ng-model="application.appdata[4]" data-ng-init="application.appdata[4] = null">\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START AGI -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.agi.$touched || forms.settings.$submitted) && forms.settings.agi.$invalid}">\n <label class="control-label">{{ \'APPLICATION_AGI\' | translate }}</label>\n <input type="text" pattern="[^,]*" name="agi" placeholder="{{ \'APPLICATION_AGI\' | translate }}" class="form-control" data-ng-model="application.appdata[5]" data-ng-init="application.appdata[6] = null">\n <span data-ng-show="(forms.settings.agi.$touched || forms.settings.$submitted) && forms.settings.agi.$invalid && forms.settings.agi.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.settings.agi.$touched || forms.settings.$submitted) && forms.settings.agi.$invalid && forms.settings.agi.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END AGI -->\n\n <!-- START MACRO -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.macro.$touched || forms.settings.$submitted) && forms.settings.macro.$invalid}">\n <label class="control-label">{{ \'APPLICATION_MACRO\' | translate }}</label>\n <input type="text" pattern="[^,]*" name="macro" placeholder="{{ \'APPLICATION_MACRO\' | translate }}" class="form-control" data-ng-model="application.appdata[6]" data-ng-init="application.appdata[6] = null">\n <span data-ng-show="(forms.settings.macro.$touched || forms.settings.$submitted) && forms.settings.macro.$invalid && forms.settings.macro.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.settings.macro.$touched || forms.settings.$submitted) && forms.settings.macro.$invalid && forms.settings.macro.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END MACRO -->\n\n <!-- START GOSUB -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.gosub.$touched || forms.settings.$submitted) && forms.settings.gosub.$invalid}">\n <label class="control-label">{{ \'APPLICATION_GOSUB\' | translate }}</label>\n <input type="text" pattern="[^,]*" name="gosub" placeholder="{{ \'APPLICATION_GOSUB\' | translate }}" class="form-control" data-ng-model="application.appdata[7]" data-ng-init="application.appdata[7] = null">\n <span data-ng-show="(forms.settings.gosub.$touched || forms.settings.$submitted) && forms.settings.gosub.$invalid && forms.settings.gosub.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.settings.gosub.$touched || forms.settings.$submitted) && forms.settings.gosub.$invalid && forms.settings.gosub.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END GOSUB -->\n\n <!-- START RULE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.rule.$touched || forms.settings.$submitted) && forms.settings.rule.$invalid}">\n <label class="control-label">{{ \'APPLICATION_RULE\' | translate }}</label>\n <input type="text" pattern="[^,]*" name="rule" placeholder="{{ \'APPLICATION_RULE\' | translate }}" class="form-control" data-ng-model="application.appdata[8]" data-ng-init="application.appdata[8] = null">\n <span data-ng-show="(forms.settings.rule.$touched || forms.settings.$submitted) && forms.settings.rule.$invalid && forms.settings.rule.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.settings.rule.$touched || forms.settings.$submitted) && forms.settings.rule.$invalid && forms.settings.rule.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END RULE -->\n\n <!-- START POSITION -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.position.$touched || forms.settings.$submitted) && forms.settings.position.$invalid}">\n <label class="control-label">{{ \'APPLICATION_POSITION\' | translate }}</label>\n <input type="number" min="0" name="position" placeholder="{{ \'APPLICATION_POSITION\' | translate }}" class="form-control" data-ng-model="application.appdata[9]" data-ng-init="application.appdata[9] = null">\n <span data-ng-show="(forms.settings.position.$touched || forms.settings.$submitted) && forms.settings.position.$invalid && forms.settings.position.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END POSITION -->\n\n <!-- START ANSWER -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ANSWER\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-init="application.answer=true"\n data-ng-model="application.answer"\n type="checkbox"\n switch-active="{{ alwaysSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ alwaysSwitch.onColor }}"\n switch-off-color="{{ alwaysSwitch.offColor }}"\n switch-animate="{{ alwaysSwitch.animate }}"\n switch-size="{{ alwaysSwitch.size }}"\n switch-label="{{ alwaysSwitch.label }}"\n switch-icon="{{ alwaysSwitch.icon }}"\n switch-radio-off="{{ alwaysSwitch.radioOff }}"\n switch-label-width="{{ alwaysSwitch.labelWidth }}"\n switch-handle-width="{{ alwaysSwitch.handleWidth }}">\n </label>\n </div>\n </div>\n <!-- END ANSWER -->\n\n </div>\n <div id="Playback" class="app-settings" ng-slide-down="main.app.value == \'Playback\'" lazy-render duration="1">\n <!-- START AUDIOFILE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.audiofile.$touched || forms.settings.$submitted) && forms.settings.audiofile.$invalid}">\n <label class="control-label">{{\'APPLICATION_AUDIO_FILE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.appdata[0]" data-ng-init="application.appdata[0] = null" name="audiofile" theme="bootstrap" required data-ng-disabled="!items.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.display_name}}</ui-select-match>\n <ui-select-choices repeat="settings.soundPath+\'/\'+audio.save_name as audio in items | filter: $select.search">\n <div ng-bind-html="audio.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="items.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_SOUNDS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/sounds/list">{{\'APPLICATION_SOUNDS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.audiofile.$touched || forms.settings.$submitted) && forms.settings.audiofile.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END AUDIOFILE -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{\'APPLICATION_OPTIONS\' | translate}}</label>\n <input type="text" name="app_options" placeholder="{{ \'APPLICATION_OPTIONS\' | translate }}" class="form-control" data-ng-model="application.appdata[1]" data-ng-init="application.appdata[1] = null">\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START ANSWER -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ANSWER\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-init="application.answer=true"\n data-ng-model="application.answer"\n type="checkbox"\n switch-active="{{ alwaysSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ alwaysSwitch.onColor }}"\n switch-off-color="{{ alwaysSwitch.offColor }}"\n switch-animate="{{ alwaysSwitch.animate }}"\n switch-size="{{ alwaysSwitch.size }}"\n switch-label="{{ alwaysSwitch.label }}"\n switch-icon="{{ alwaysSwitch.icon }}"\n switch-radio-off="{{ alwaysSwitch.radioOff }}"\n switch-label-width="{{ alwaysSwitch.labelWidth }}"\n switch-handle-width="{{ alwaysSwitch.handleWidth }}">\n </label>\n </div>\n </div>\n <!-- END ANSWER -->\n </div>\n <div id="Dial" class="app-settings" ng-slide-down="main.app.value == \'Dial\' && !main.app.type" lazy-render duration="1">\n <!-- START INTERFACE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.interface.$touched || forms.settings.$submitted) && forms.settings.interface.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TYPE\' | translate }}/{{ \'APPLICATION_IDENTIFIER\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="interface" placeholder="SIP/0000" class="form-control" data-ng-model="application.appdata[0]" data-ng-init="application.appdata[0] = null" required>\n <span data-ng-show="(forms.settings.interface.$touched || forms.settings.$submitted) && forms.settings.interface.$invalid && forms.settings.interface.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERFACE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TIMEOUT\' | translate }}</label>\n <input type="text" pattern="[0-9]+" name="timeout" placeholder="" class="form-control" data-ng-model="application.appdata[1]" data-ng-init="application.appdata[1] = null">\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{ \'APPLICATION_OPTIONS\' | translate }}</label>\n <input type="text" name="app_options" placeholder="" class="form-control" data-ng-model="application.appdata[2]" data-ng-init="application.appdata[2] = null">\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid && forms.settings.app_options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START URL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid}">\n <label class="control-label">{{ \'APPLICATION_URL\' | translate }}</label>\n <input type="text" name="url" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="application.appdata[3]" data-ng-init="application.appdata[3] = null">\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END URL -->\n </div>\n <div id="internalDial" class="app-settings" ng-slide-down="main.app.value == \'Dial\' && main.app.type == \'internalDial\'" lazy-render duration="1">\n <!-- START INTERNAL DIAL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.user.$touched || forms.settings.$submitted) && forms.settings.user.$invalid}">\n <label class="control-label">{{\'APPLICATION_USER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.appdata[0]" data-ng-init="application.appdata[0] = null" name="user" theme="bootstrap" required data-ng-disabled="!items.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="user.name as user in items | filter: $select.search">\n <div ng-bind-html="user.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.user.$touched || forms.settings.$submitted) && forms.settings.user.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERNAL DIAL -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TIMEOUT\' | translate }}</label>\n <input type="text" pattern="[0-9]+" name="timeout" placeholder="" class="form-control" data-ng-model="application.appdata[1]" data-ng-init="application.appdata[1] = null">\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{ \'APPLICATION_OPTIONS\' | translate }}</label>\n <input type="text" name="app_options" placeholder="" class="form-control" data-ng-model="application.appdata[2]" data-ng-init="application.appdata[2] = null">\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid && forms.settings.app_options.$error.required" class="help-block help-block-error">\n <strong>{{ \'APPLICATION_WARNING\' | translate }}!</strong> {{ \'MESSAGE_REQUIRED_FIELD\' | translate }}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START URL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid}">\n <label class="control-label">{{ \'APPLICATION_URL\' | translate }}</label>\n <input type="text" name="url" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="application.appdata[3]" data-ng-init="application.appdata[3] = null">\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.required" class="help-block help-block-error">\n <strong>{{ \'APPLICATION_WARNING\' | translate }}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END URL -->\n\n </div>\n <div id="Dial" class="app-settings" ng-slide-down="main.app.value == \'Dial\' && main.app.type == \'externalDial\'" lazy-render duration="1">\n <!-- START TRUNK -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.trunk.$touched || forms.info.$submitted) && forms.info.trunk.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TRUNK\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.appdata[0]" data-ng-init="application.appdata[0] = null" name="trunk" theme="bootstrap" required data-ng-disabled="!items.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="trunk.name as trunk in items | filter: $select.search">\n <div ng-bind-html="trunk.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="items.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_TRUNKS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{ \'APPLICATION_GO_TO\' | translate }} <a href="/tools/trunks/list">{{ \'APPLICATION_TRUNKS\' | translate }}</a>\n </p>\n </div>\n <span data-ng-show="(forms.info.trunk.$touched || forms.info.$submitted) && forms.info.trunk.$error.required" class="help-block help-block-error">\n <strong>{{ \'APPLICATION_WARNING\' | translate }}!</strong> {{ \'MESSAGE_REQUIRED_FIELD\' | translate }}.\n </span>\n </div>\n <!-- END TRUNK -->\n\n <!-- START PHONE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.phone.$touched || forms.settings.$submitted) && forms.settings.phone.$invalid}">\n <label class="control-label">{{ \'APPLICATION_PHONE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="phone" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="application.appdata[1]" data-ng-init="application.appdata[1] = null" required>\n <span data-ng-show="(forms.settings.phone.$touched || forms.settings.$submitted) && forms.settings.phone.$invalid && forms.settings.phone.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PHONE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TIMEOUT\' | translate }}</label>\n <input type="text" pattern="[0-9]+" name="timeout" placeholder="" class="form-control" data-ng-model="application.appdata[2]" data-ng-init="application.appdata[2] = null">\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{ \'APPLICATION_OPTIONS\' | translate }}</label>\n <input type="text" name="app_options" placeholder="" class="form-control" data-ng-model="application.appdata[3]" data-ng-init="application.appdata[3] = null">\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid && forms.settings.app_options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START URL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid}">\n <label class="control-label">{{ \'APPLICATION_URL\' | translate }}</label>\n <input type="text" name="url" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="application.appdata[4]" data-ng-init="application.appdata[4] = null">\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END URL -->\n </div>\n <div id="RingGroup" class="app-settings" ng-slide-down="main.app.value == \'Dial\' && main.app.type == \'RingGroup\'" lazy-render duration="1">\n <!-- START ITEMS -->\n <input type="hidden" name="items" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="application.appdata[0]" data-ng-init="initRingGroup()">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.project.$touched || forms.settings.$submitted) && forms.settings.items.$invalid}">\n <label class="control-label">{{\'APPLICATION_ITEMS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <div class="col-md-12" id="multi-select-user-by-role"></div>\n <span data-ng-show="(forms.settings.items.$touched || forms.settings.$submitted) && forms.settings.items.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ITEMS -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TIMEOUT\' | translate }}</label>\n <input type="text" pattern="[0-9]+" name="timeout" placeholder="" class="form-control" data-ng-model="application.appdata[1]" data-ng-init="application.appdata[1] = null">\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{ \'APPLICATION_OPTIONS\' | translate }}</label>\n <input type="text" name="app_options" placeholder="" class="form-control" data-ng-model="application.appdata[2]" data-ng-init="application.appdata[2] = null">\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid && forms.settings.app_options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START URL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid}">\n <label class="control-label">{{ \'APPLICATION_URL\' | translate }}</label>\n <input type="text" name="url" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="application.appdata[3]" data-ng-init="application.appdata[3] = null">\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END URL -->\n </div>\n <div id="AGI" class="app-settings" ng-slide-down="main.app.value == \'AGI\'" lazy-render duration="1">\n <!-- START PROJECT -->\n <input type="hidden" name="url" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="application.appdata[0]" data-ng-init="application.appdata[0] = \'agi://127.0.0.1/square\'">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.project.$touched || forms.settings.$submitted) && forms.settings.project.$invalid}">\n <label class="control-label">{{\'APPLICATION_PROJECT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.appdata[1]" data-ng-init="application.appdata[1] = null" name="project" theme="bootstrap" required data-ng-disabled="!items.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="project.name as project in items | filter: $select.search">\n <div ng-bind-html="project.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="items.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_PROJECTS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/square/projects/list">{{\'APPLICATION_PROJECTS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.project.$touched || forms.settings.$submitted) && forms.settings.project.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PROJECT -->\n </div>\n <div id="Goto" class="app-settings" ng-slide-down="main.app.value == \'Goto\'" lazy-render duration="1">\n <!-- START CONTEXT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.context.$touched || forms.settings.$submitted) && forms.settings.context.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONTEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.appdata[0]" data-ng-init="application.appdata[0] = null" name="context" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="context.name as context in items | filter: $select.search">\n <div ng-bind-html="context.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.context.$touched || forms.settings.$submitted) && forms.settings.context.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONTEXT -->\n\n <!-- START EXTENSION -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.extension.$touched || forms.settings.$submitted) && forms.settings.extension.$invalid}">\n <label class="control-label">{{ \'APPLICATION_EXTENSION\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="extension" placeholder="" class="form-control" data-ng-model="application.appdata[1]" data-ng-init="application.appdata[1] = null" required>\n <span data-ng-show="(forms.settings.extension.$touched || forms.settings.$submitted) && forms.settings.extension.$invalid && forms.settings.extension.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EXTENSION -->\n\n <!-- START PRIORITY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.priority.$touched || forms.settings.$submitted) && forms.settings.priority.$invalid}">\n <label class="control-label">{{ \'APPLICATION_PRIORITY\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" pattern="[0-9]+" name="priority" placeholder="" class="form-control" data-ng-model="application.appdata[2]" data-ng-init="application.appdata[2] = null" required>\n <span data-ng-show="(forms.settings.priority.$touched || forms.settings.$submitted) && forms.settings.priority.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PRIORITY -->\n </div>\n <div id="Hangup" class="app-settings" ng-slide-down="main.app.value == \'Hangup\'" lazy-render duration="1">\n <!-- START HANGUPCAUSE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.hangupCause.$touched || forms.settings.$submitted) && forms.settings.hangupCause.$invalid}">\n <label class="control-label">{{\'APPLICATION_HANGUP_CAUSE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.appdata[0]" data-ng-init="application.appdata[0] = null" theme="bootstrap" name="hangupCause" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="hangupCause.value as hangupCause in $application.hangupCauses | filter: $select.search">\n <div ng-bind-html="hangupCause.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.hangupCause.$touched || forms.settings.$submitted) && forms.settings.hangupCause.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END HANGUPCAUSE -->\n </div>\n <div id="Set" class="app-settings" ng-slide-down="main.app.value == \'Set\' && !main.app.type" lazy-render duration="1">\n <!-- START VARIABLE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.variable.$touched || forms.settings.$submitted) && forms.settings.variable.$invalid}">\n <label class="control-label">{{ \'APPLICATION_VARIABLE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="variable" placeholder="" class="form-control" data-ng-model="application.variable" data-ng-init="application.appdata[0] = null" data-ng-change="updateSetAppdata()" required>\n <span data-ng-show="(forms.settings.variable.$touched || forms.settings.$submitted) && forms.settings.variable.$invalid && forms.settings.variable.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END VARIABLE -->\n\n <!-- START VARVALUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.varvalue.$touched || forms.settings.$submitted) && forms.settings.varvalue.$invalid}">\n <label class="control-label">{{ \'APPLICATION_VALUE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="varvalue" placeholder="" class="form-control" data-ng-model="application.value" data-ng-change="updateSetAppdata()" required>\n <span data-ng-show="(forms.settings.varvalue.$touched || forms.settings.$submitted) && forms.settings.varvalue.$invalid && forms.settings.varvalue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END VARVALUE -->\n </div>\n <div id="Custom" class="app-settings" ng-slide-down="main.app.type == \'custom\'" lazy-render duration="1">\n\n <!-- START CUSTOMAPP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.customApp.$touched || forms.settings.$submitted) && forms.settings.customApp.$invalid}">\n <label class="control-label">{{ \'APPLICATION_CUSTOM_APP\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="customApp" placeholder="{{ \'APPLICATION_CUSTOM_APP\' | translate }}" class="form-control" data-ng-model="application.app" required>\n <span data-ng-show="(forms.settings.customApp.$touched || forms.settings.$submitted) && forms.settings.customApp.$invalid && forms.settings.customApp.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CUSTOMAPP -->\n\n <!-- START APPDATA -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.appdata.$touched || forms.settings.$submitted) && forms.settings.appdata.$invalid}">\n <label class="control-label">{{ \'APPLICATION_ARGUMENTS\' | translate }}</label>\n <input type="text" name="appdata" placeholder="{{ \'APPLICATION_ARGUMENTS\' | translate }}" class="form-control" data-ng-model="application.appdata[0]" data-ng-init="application.appdata[0] = null">\n <span data-ng-show="(forms.settings.appdata.$touched || forms.settings.$submitted) && forms.settings.appdata.$invalid && forms.settings.appdata.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APPDATA -->\n </div>\n <div id="Voicemail" class="app-settings" ng-slide-down="main.app.value == \'Voicemail\'" lazy-render duration="1">\n <!-- START VOICEMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.voicemail.$touched || forms.settings.$submitted) && forms.settings.voicemail.$invalid}">\n <label class="control-label">{{ \'APPLICATION_MAILBOX\' | translate }}@{{ \'APPLICATION_CONTEXT\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.appdata[0]" data-ng-init="application.appdata[0] = null" theme="bootstrap" name="voicemail" required data-ng-disabled="!items.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.mailbox}}</ui-select-match>\n <ui-select-choices repeat="mailbox.mailbox+\'@\'+mailbox.context as mailbox in items | filter: $select.search">\n <div ng-bind-html="mailbox.mailbox | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="items.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_VOICEMAILS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/voice/voicemails/list">{{\'APPLICATION_VOICEMAILS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.voicemail.$touched || forms.settings.$submitted) && forms.settings.voicemail.$invalid && forms.settings.voicemail.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END VOICEMAIL -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{\'APPLICATION_OPTIONS\' | translate}}</label>\n <input type="text" name="app_options" placeholder="{{ \'APPLICATION_OPTIONS\' | translate }}" class="form-control" data-ng-model="application.appdata[1]" data-ng-init="application.appdata[1] = null">\n </div>\n <!-- END OPTIONS -->\n </div>\n\n <div id="videoOn" class="app-settings" ng-slide-down="main.app.value == \'Set\' && main.app.type == \'videoOn\'" lazy-render duration="1">\n <!-- START DOMAIN -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.domain.$touched || forms.settings.$submitted) && forms.settings.domain.$invalid}">\n <label class="control-label">{{ \'APPLICATION_DOMAIN\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="domain" placeholder="" class="form-control" data-ng-model="application.domain" data-ng-init="application.appdata[0] = null;application.domain = \'xrtceu1.xcally.com\';application.theme = \'YOUR-THEME\';updateVideoOnAppdata();" data-ng-change="updateVideoOnAppdata()" required>\n <span data-ng-show="(forms.settings.domain.$touched || forms.settings.$submitted) && forms.settings.domain.$invalid && forms.settings.domain.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DOMAIN -->\n\n <!-- START THEME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.theme.$touched || forms.settings.$submitted) && forms.settings.theme.$invalid}">\n <label class="control-label">{{ \'APPLICATION_THEME\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="theme" placeholder="" class="form-control" data-ng-model="application.theme" data-ng-change="updateVideoOnAppdata()" required>\n <span data-ng-show="(forms.settings.theme.$touched || forms.settings.$submitted) && forms.settings.theme.$invalid && forms.settings.theme.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END THEME -->\n </div>\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n </form>\n </wz-step>\n <wz-step title="{{\'APPLICATION_INTERVAL\' | translate}}" canexit="formValidation(forms.interval.IntervalId.$valid || forms.interval.hasOwnProperty(\'t_from\') || forms.interval.intType.$modelValue === \'always\')">\n <form name="forms.interval" novalidate>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n <!-- START INTERVAL_TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.interval.intType.$touched || forms.interval.$submitted) && forms.interval.intType.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVAL_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="interval.intType" theme="bootstrap" name="intType" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="intType.value as intType in $application.intTypes | filter: $select.search">\n <div ng-bind-html="intType.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.interval.intType.$touched || forms.interval.$submitted) && forms.interval.intType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVAL_TYPE -->\n <div id="customInterval" class="app-settings" ng-slide-down="interval.intType == \'custom\'" lazy-render duration="1">\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="interval.alwaysTime"><uib-timepicker name="t_from" data-ng-model="interval.t_from" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="interval.alwaysTime"><uib-timepicker name="t_to" data-ng-model="interval.t_to" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="interval.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label> -->\n <!-- START ALWAYS -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALWAYS\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="interval.alwaysTime"\n type="checkbox"\n switch-active="{{ alwaysSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ alwaysSwitch.onColor }}"\n switch-off-color="{{ alwaysSwitch.offColor }}"\n switch-animate="{{ alwaysSwitch.animate }}"\n switch-size="{{ alwaysSwitch.size }}"\n switch-label="{{ alwaysSwitch.label }}"\n switch-icon="{{ alwaysSwitch.icon }}"\n switch-radio-off="{{ alwaysSwitch.radioOff }}"\n switch-label-width="{{ alwaysSwitch.labelWidth }}"\n switch-handle-width="{{ alwaysSwitch.handleWidth }}">\n </label>\n </div>\n </div>\n <!-- END ALWAYS -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="interval.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="interval.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="interval.md_from" theme="bootstrap" name="md_from">\n <ui-select-match>{{$select.selected === \'always\' ? \'APPLICATION_ALWAYS\' : $select.selected | translate}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search">\n {{monthDay === \'always\' ? \'APPLICATION_ALWAYS\' : monthDay | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="interval.md_to" theme="bootstrap" name="md_to">\n <ui-select-match>{{$select.selected === \'always\' ? \'APPLICATION_ALWAYS\' : $select.selected | translate}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search">\n {{monthDay === \'always\' ? \'APPLICATION_ALWAYS\' : monthDay | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="interval.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{month.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="interval.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{month.name | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </div>\n\n <div id="customInterval" class="app-settings" ng-slide-down="interval.intType == \'list\'" lazy-render duration="1">\n\n <!-- START INTERVALS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.interval.IntervalId.$touched || forms.interval.$submitted) && forms.interval.IntervalId.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVALS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="interval.IntervalId" theme="bootstrap" name="IntervalId" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="interval.id as interval in Intervals | filter: $select.search">\n {{interval.name | translate}}\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="Intervals.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_INTERVAL_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/intervals/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.interval.IntervalId.$touched || forms.interval.$submitted) && forms.interval.IntervalId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVALS -->\n\n </div>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), +a.put("app/channels/voice/route/view.applicationSettings.html",'\n<div class="row" data-ng-init="initApplication();getIntervals();getApplication();">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_APPLICATION_SETTINGS\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="updateRoute(\'applications\')">\n <div class="profile-usertitle-name">\n {{(main.app.name | translate) || \'Application\'}}\n </div>\n <wz-step title="{{\'APPLICATION_APPLICATION\' | translate}}" canexit="formValidation(forms.settings.$valid)">\n <form name="forms.settings" novalidate>\n <!-- <pre>\n {{application | json}}\n </pre> -->\n\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n\n <div id="Queue" class="app-settings" ng-slide-down="main.app.value == \'Queue\'" lazy-render duration="1">\n <!-- START QUEUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.queue.$touched || forms.settings.$submitted) && forms.settings.queue.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="route.Applications[selectedApp].appdata[0]" name="queue" theme="bootstrap" required data-ng-disabled="!items.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="queue.name as queue in items | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="items.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_QUEUES_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/voice/queues/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.queue.$touched || forms.settings.$submitted) && forms.settings.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{\'APPLICATION_OPTIONS\' | translate}}</label>\n <input type="text" pattern="[^,]*" name="app_options" placeholder="{{ \'APPLICATION_OPTIONS\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[1]">\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid && forms.settings.app_options.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START URL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid}">\n <label class="control-label">{{ \'APPLICATION_URL\' | translate }}</label>\n <input type="text" pattern="[^,]*" name="url" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[2]">\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END URL -->\n\n <!-- START APPLICATION_ANNOUNCE_OVERRIDE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.audiofile.$touched || forms.settings.$submitted) && forms.settings.audiofile.$invalid}">\n <label class="control-label">{{\'APPLICATION_ANNOUNCE_OVERRIDE\' | translate}}</label>\n <ui-select data-ng-model="route.Applications[selectedApp].appdata[3]" name="audiofile" theme="bootstrap" data-ng-disabled="!items2.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.display_name}}</ui-select-match>\n <ui-select-choices repeat="settings.soundPath+\'/\'+audio.save_name as audio in items2 | filter: $select.search">\n <div ng-bind-html="audio.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="items2.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_SOUNDS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/sounds/list">{{\'APPLICATION_SOUNDS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.audiofile.$touched || forms.settings.$submitted) && forms.settings.audiofile.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APPLICATION_ANNOUNCE_OVERRIDE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TIMEOUT\' | translate }}</label>\n <input type="text" pattern="[0-9]+" name="timeout" placeholder="{{ \'APPLICATION_TIMEOUT\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[4]">\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START AGI -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.agi.$touched || forms.settings.$submitted) && forms.settings.agi.$invalid}">\n <label class="control-label">{{ \'APPLICATION_AGI\' | translate }}</label>\n <input type="text" pattern="[^,]*" name="agi" placeholder="{{ \'APPLICATION_AGI\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[5]">\n <span data-ng-show="(forms.settings.agi.$touched || forms.settings.$submitted) && forms.settings.agi.$invalid && forms.settings.agi.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.settings.agi.$touched || forms.settings.$submitted) && forms.settings.agi.$invalid && forms.settings.agi.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END AGI -->\n\n <!-- START MACRO -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.macro.$touched || forms.settings.$submitted) && forms.settings.macro.$invalid}">\n <label class="control-label">{{ \'APPLICATION_MACRO\' | translate }}</label>\n <input type="text" pattern="[^,]*" name="macro" placeholder="{{ \'APPLICATION_MACRO\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[6]">\n <span data-ng-show="(forms.settings.macro.$touched || forms.settings.$submitted) && forms.settings.macro.$invalid && forms.settings.macro.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.settings.macro.$touched || forms.settings.$submitted) && forms.settings.macro.$invalid && forms.settings.macro.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END MACRO -->\n\n <!-- START GOSUB -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.gosub.$touched || forms.settings.$submitted) && forms.settings.gosub.$invalid}">\n <label class="control-label">{{ \'APPLICATION_GOSUB\' | translate }}</label>\n <input type="text" pattern="[^,]*" name="gosub" placeholder="{{ \'APPLICATION_GOSUB\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[7]">\n <span data-ng-show="(forms.settings.gosub.$touched || forms.settings.$submitted) && forms.settings.gosub.$invalid && forms.settings.gosub.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.settings.gosub.$touched || forms.settings.$submitted) && forms.settings.gosub.$invalid && forms.settings.gosub.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END GOSUB -->\n\n <!-- START RULE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.rule.$touched || forms.settings.$submitted) && forms.settings.rule.$invalid}">\n <label class="control-label">{{ \'APPLICATION_RULE\' | translate }}</label>\n <input type="text" pattern="[^,]*" name="rule" placeholder="{{ \'APPLICATION_RULE\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[8]">\n <span data-ng-show="(forms.settings.rule.$touched || forms.settings.$submitted) && forms.settings.rule.$invalid && forms.settings.rule.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.settings.rule.$touched || forms.settings.$submitted) && forms.settings.rule.$invalid && forms.settings.rule.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END RULE -->\n\n <!-- START POSITION -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.position.$touched || forms.settings.$submitted) && forms.settings.position.$invalid}">\n <label class="control-label">{{ \'APPLICATION_POSITION\' | translate }}</label>\n <input type="number" min="0" name="position" placeholder="{{ \'APPLICATION_POSITION\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[9]">\n <span data-ng-show="(forms.settings.position.$touched || forms.settings.$submitted) && forms.settings.position.$invalid && forms.settings.position.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END POSITION -->\n\n <!-- START ANSWER -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ANSWER\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="route.Applications[selectedApp].answer"\n type="checkbox"\n switch-active="{{ alwaysSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ alwaysSwitch.onColor }}"\n switch-off-color="{{ alwaysSwitch.offColor }}"\n switch-animate="{{ alwaysSwitch.animate }}"\n switch-size="{{ alwaysSwitch.size }}"\n switch-label="{{ alwaysSwitch.label }}"\n switch-icon="{{ alwaysSwitch.icon }}"\n switch-radio-off="{{ alwaysSwitch.radioOff }}"\n switch-label-width="{{ alwaysSwitch.labelWidth }}"\n switch-handle-width="{{ alwaysSwitch.handleWidth }}">\n </label>\n </div>\n </div>\n <!-- END ANSWER -->\n\n </div>\n <div id="Playback" class="app-settings" ng-slide-down="main.app.value == \'Playback\'" lazy-render duration="1">\n <!-- START AUDIOFILE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.audiofile.$touched || forms.settings.$submitted) && forms.settings.audiofile.$invalid}">\n <label class="control-label">{{\'APPLICATION_AUDIO_FILE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="route.Applications[selectedApp].appdata[0]" name="audiofile" theme="bootstrap" required data-ng-disabled="!items.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.display_name}}</ui-select-match>\n <ui-select-choices repeat="settings.soundPath+\'/\'+audio.save_name as audio in items | filter: $select.search">\n <div ng-bind-html="audio.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="items.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_SOUNDS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/sounds/list">{{\'APPLICATION_SOUNDS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.audiofile.$touched || forms.settings.$submitted) && forms.settings.audiofile.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END AUDIOFILE -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{\'APPLICATION_OPTIONS\' | translate}}</label>\n <input type="text" name="app_options" placeholder="{{ \'APPLICATION_OPTIONS\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[1]">\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START ANSWER -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ANSWER\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="route.Applications[selectedApp].answer"\n type="checkbox"\n switch-active="{{ alwaysSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ alwaysSwitch.onColor }}"\n switch-off-color="{{ alwaysSwitch.offColor }}"\n switch-animate="{{ alwaysSwitch.animate }}"\n switch-size="{{ alwaysSwitch.size }}"\n switch-label="{{ alwaysSwitch.label }}"\n switch-icon="{{ alwaysSwitch.icon }}"\n switch-radio-off="{{ alwaysSwitch.radioOff }}"\n switch-label-width="{{ alwaysSwitch.labelWidth }}"\n switch-handle-width="{{ alwaysSwitch.handleWidth }}">\n </label>\n </div>\n </div>\n <!-- END ANSWER -->\n\n </div>\n <div id="Dial" class="app-settings" ng-slide-down="main.app.value == \'Dial\' && !main.app.type" lazy-render duration="1">\n <!-- START INTERFACE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.interface.$touched || forms.settings.$submitted) && forms.settings.interface.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TYPE\' | translate }}/{{ \'APPLICATION_IDENTIFIER\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="interface" placeholder="SIP/0000" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[0]" required>\n <span data-ng-show="(forms.settings.interface.$touched || forms.settings.$submitted) && forms.settings.interface.$invalid && forms.settings.interface.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERFACE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TIMEOUT\' | translate }}</label>\n <input type="text" pattern="[0-9]+" name="timeout" placeholder="" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[1]">\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{ \'APPLICATION_OPTIONS\' | translate }}</label>\n <input type="text" name="app_options" placeholder="" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[2]">\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid && forms.settings.app_options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START URL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid}">\n <label class="control-label">{{ \'APPLICATION_URL\' | translate }}</label>\n <input type="text" name="url" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[3]">\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END URL -->\n </div>\n <div id="internalDial" class="app-settings" ng-slide-down="main.app.value == \'Dial\' && main.app.type == \'internalDial\'" lazy-render duration="1">\n <!-- START INTERNAL DIAL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.user.$touched || forms.settings.$submitted) && forms.settings.user.$invalid}">\n <label class="control-label">{{\'APPLICATION_USER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="route.Applications[selectedApp].appdata[0]" name="user" theme="bootstrap" required data-ng-disabled="!items.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="user.name as user in items | filter: $select.search">\n <div ng-bind-html="user.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.user.$touched || forms.settings.$submitted) && forms.settings.user.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERNAL DIAL -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TIMEOUT\' | translate }}</label>\n <input type="text" pattern="[0-9]+" name="timeout" placeholder="" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[1]">\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{ \'APPLICATION_OPTIONS\' | translate }}</label>\n <input type="text" name="app_options" placeholder="" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[2]">\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid && forms.settings.app_options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START URL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid}">\n <label class="control-label">{{ \'APPLICATION_URL\' | translate }}</label>\n <input type="text" name="url" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[3]">\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END URL -->\n\n </div>\n <div id="Dial" class="app-settings" ng-slide-down="main.app.value == \'Dial\' && main.app.type == \'externalDial\'" lazy-render duration="1">\n\n <!-- START TRUNK -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.trunk.$touched || forms.info.$submitted) && forms.info.trunk.$invalid}">\n <label class="control-label">{{\'APPLICATION_TRUNK\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="route.Applications[selectedApp].appdata[0]" name="trunk" theme="bootstrap" required data-ng-disabled="!items.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="trunk.name as trunk in items | filter: $select.search">\n <div ng-bind-html="trunk.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="items.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_TRUNKS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/trunks/list">{{\'APPLICATION_TRUNKS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.info.trunk.$touched || forms.info.$submitted) && forms.info.trunk.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TRUNK -->\n\n <!-- START PHONE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.phone.$touched || forms.settings.$submitted) && forms.settings.phone.$invalid}">\n <label class="control-label">{{ \'APPLICATION_PHONE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="phone" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[1]">\n <span data-ng-show="(forms.settings.phone.$touched || forms.settings.$submitted) && forms.settings.phone.$invalid && forms.settings.phone.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PHONE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TIMEOUT\' | translate }}</label>\n <input type="text" pattern="[0-9]+" name="timeout" placeholder="" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[2]">\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{ \'APPLICATION_OPTIONS\' | translate }}</label>\n <input type="text" name="app_options" placeholder="" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[3]">\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid && forms.settings.app_options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START URL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid}">\n <label class="control-label">{{ \'APPLICATION_URL\' | translate }}</label>\n <input type="text" name="url" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[4]">\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END URL -->\n </div>\n <div id="RingGroup" class="app-settings" ng-slide-down="main.app.value == \'Dial\' && main.app.type == \'RingGroup\'" lazy-render duration="1">\n <!-- START ITEMS -->\n <input type="hidden" name="items" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[0]" data-ng-init="initRingGroup()">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.items.$touched || forms.settings.$submitted) && forms.settings.items.$invalid}">\n <label class="control-label">{{\'APPLICATION_ITEMS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <div class="col-md-12" id="multi-select-user-by-role"></div>\n <span data-ng-show="(forms.settings.items.$touched || forms.settings.$submitted) && forms.settings.items.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ITEMS -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TIMEOUT\' | translate }}</label>\n <input type="text" pattern="[0-9]+" name="timeout" placeholder="" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[1]" data-ng-init="application.appdata[1] = null">\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{ \'APPLICATION_OPTIONS\' | translate }}</label>\n <input type="text" name="app_options" placeholder="" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[2]" data-ng-init="application.appdata[2] = null">\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid && forms.settings.app_options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START URL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid}">\n <label class="control-label">{{ \'APPLICATION_URL\' | translate }}</label>\n <input type="text" name="url" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[3]" data-ng-init="application.appdata[3] = null">\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END URL -->\n </div>\n <div id="AGI" class="app-settings" ng-slide-down="main.app.value == \'AGI\'" lazy-render duration="1">\n <!-- START PROJECT -->\n <input type="hidden" name="url" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[0]" data-ng-init="route.Applications[selectedApp].appdata[0] = \'agi://127.0.0.1/square\'">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.project.$touched || forms.settings.$submitted) && forms.settings.project.$invalid}">\n <label class="control-label">{{\'APPLICATION_PROJECT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="route.Applications[selectedApp].appdata[1]" name="project" theme="bootstrap" required data-ng-disabled="!items.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="project.name as project in items | filter: $select.search">\n <div ng-bind-html="project.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="items.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_PROJECTS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/square/projects/list">{{\'APPLICATION_PROJECTS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.project.$touched || forms.settings.$submitted) && forms.settings.project.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PROJECT -->\n\n <!-- START URL -->\n <!-- <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid}">\n <label class="control-label">{{ \'APPLICATION_URL\' | translate }}</label>\n <div class="input-group">\n <input type="text" name="url" placeholder="agi://127.0.0.1/square" class="form-control" data-ng-model="application.url" data-ng-disabled="!application.urlEnabled" data-ng-required="application.urlEnabled" rpattern="/^agi:\\/\\/(?:[0-9]{1,3}\\.){3}[0-9]{1,3}\\/square$/">\n <span class="input-group-addon">\n <input type="checkbox" data-ng-model="application.urlEnabled">\n </span>\n </div>\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div> -->\n <!-- END URL -->\n\n </div>\n <div id="Goto" class="app-settings" ng-slide-down="main.app.value == \'Goto\'" lazy-render duration="1">\n <!-- START CONTEXT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.context.$touched || forms.settings.$submitted) && forms.settings.context.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONTEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="route.Applications[selectedApp].appdata[0]" name="context" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="context.name as context in items | filter: $select.search">\n <div ng-bind-html="context.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.context.$touched || forms.settings.$submitted) && forms.settings.context.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONTEXT -->\n\n <!-- START EXTENSION -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.extension.$touched || forms.settings.$submitted) && forms.settings.extension.$invalid}">\n <label class="control-label">{{ \'APPLICATION_EXTENSION\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="extension" placeholder="" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[1]" required>\n <span data-ng-show="(forms.settings.extension.$touched || forms.settings.$submitted) && forms.settings.extension.$invalid && forms.settings.extension.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EXTENSION -->\n\n <!-- START PRIORITY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.priority.$touched || forms.settings.$submitted) && forms.settings.priority.$invalid}">\n <label class="control-label">{{ \'APPLICATION_PRIORITY\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" pattern="[0-9]+" name="priority" placeholder="" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[2]" required>\n <span data-ng-show="(forms.settings.priority.$touched || forms.settings.$submitted) && forms.settings.priority.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PRIORITY -->\n </div>\n <div id="Hangup" class="app-settings" ng-slide-down="main.app.value == \'Hangup\'" lazy-render duration="1">\n <!-- START HANGUPCAUSE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.hangupCause.$touched || forms.settings.$submitted) && forms.settings.hangupCause.$invalid}">\n <label class="control-label">{{\'APPLICATION_HANGUP_CAUSE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="route.Applications[selectedApp].appdata[0]" theme="bootstrap" name="hangupCause" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="hangupCause.value as hangupCause in $application.hangupCauses | filter: $select.search">\n {{hangupCause.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.hangupCause.$touched || forms.settings.$submitted) && forms.settings.hangupCause.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END HANGUPCAUSE -->\n </div>\n <div id="Set" class="app-settings" ng-slide-down="main.app.value == \'Set\' && !main.app.type" lazy-render duration="1">\n <!-- START VARIABLE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.variable.$touched || forms.settings.$submitted) && forms.settings.variable.$invalid}">\n <label class="control-label">{{ \'APPLICATION_VARIABLE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="variable" placeholder="" class="form-control" data-ng-model="application.variable" data-ng-change="updateSetAppdataSettings()" required>\n <span data-ng-show="(forms.settings.variable.$touched || forms.settings.$submitted) && forms.settings.variable.$invalid && forms.settings.variable.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END VARIABLE -->\n\n <!-- START VARVALUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.varvalue.$touched || forms.settings.$submitted) && forms.settings.varvalue.$invalid}">\n <label class="control-label">{{ \'APPLICATION_VALUE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="varvalue" placeholder="" class="form-control" data-ng-model="application.value" data-ng-change="updateSetAppdataSettings()" required>\n <span data-ng-show="(forms.settings.varvalue.$touched || forms.settings.$submitted) && forms.settings.varvalue.$invalid && forms.settings.varvalue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END VARVALUE -->\n </div>\n <div id="Custom" class="app-settings" ng-slide-down="main.app.type == \'custom\'" lazy-render duration="1">\n\n <!-- START CUSTOMAPP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.customApp.$touched || forms.settings.$submitted) && forms.settings.customApp.$invalid}">\n <label class="control-label">{{ \'APPLICATION_CUSTOM_APP\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="customApp" placeholder="{{ \'APPLICATION_CUSTOM_APP\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].app" required>\n <span data-ng-show="(forms.settings.customApp.$touched || forms.settings.$submitted) && forms.settings.customApp.$invalid && forms.settings.customApp.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CUSTOMAPP -->\n\n <!-- START APPDATA -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.appdata.$touched || forms.settings.$submitted) && forms.settings.appdata.$invalid}">\n <label class="control-label">{{ \'APPLICATION_ARGUMENTS\' | translate }}</label>\n <input type="text" name="appdata" placeholder="{{ \'APPLICATION_ARGUMENTS\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[0]">\n <span data-ng-show="(forms.settings.appdata.$touched || forms.settings.$submitted) && forms.settings.appdata.$invalid && forms.settings.appdata.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APPDATA -->\n </div>\n <div id="Voicemail" class="app-settings" ng-slide-down="main.app.value == \'Voicemail\'" lazy-render duration="1">\n <!-- START VOICEMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.voicemail.$touched || forms.settings.$submitted) && forms.settings.voicemail.$invalid}">\n <label class="control-label">{{ \'APPLICATION_MAILBOX\' | translate }}@{{ \'APPLICATION_CONTEXT\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="route.Applications[selectedApp].appdata[0]" theme="bootstrap" name="voicemail" required data-ng-disabled="!items.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.mailbox}}</ui-select-match>\n <ui-select-choices repeat="mailbox.mailbox+\'@\'+mailbox.context as mailbox in items | filter: $select.search">\n <div ng-bind-html="mailbox.mailbox | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="items.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_VOICEMAILS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/voice/voicemails/list">{{\'APPLICATION_VOICEMAILS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.voicemail.$touched || forms.settings.$submitted) && forms.settings.voicemail.$invalid && forms.settings.voicemail.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END VOICEMAIL -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{\'APPLICATION_OPTIONS\' | translate}}</label>\n <input type="text" name="app_options" placeholder="{{ \'APPLICATION_OPTIONS\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[1]">\n </div>\n <!-- END OPTIONS -->\n\n </div>\n\n <div id="videoOn" class="app-settings" ng-slide-down="main.app.value == \'Set\' && main.app.type == \'videoOn\'" lazy-render duration="1">\n <!-- START DOMAIN -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.domain.$touched || forms.settings.$submitted) && forms.settings.domain.$invalid}">\n <label class="control-label">{{ \'APPLICATION_DOMAIN\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="domain" placeholder="" class="form-control" data-ng-model="application.domain" data-ng-change="updateVideoOnAppdataSettings()" required>\n <span data-ng-show="(forms.settings.domain.$touched || forms.settings.$submitted) && forms.settings.domain.$invalid && forms.settings.domain.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DOMAIN -->\n\n <!-- START THEME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.theme.$touched || forms.settings.$submitted) && forms.settings.theme.$invalid}">\n <label class="control-label">{{ \'APPLICATION_THEME\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="theme" placeholder="" class="form-control" data-ng-model="application.theme" data-ng-change="updateVideoOnAppdataSettings()" required>\n <span data-ng-show="(forms.settings.theme.$touched || forms.settings.$submitted) && forms.settings.theme.$invalid && forms.settings.theme.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END THEME -->\n </div>\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n </form>\n</wz-step>\n<wz-step title="{{\'APPLICATION_INTERVAL\' | translate}}" canexit="formValidation(forms.interval.IntervalId.$valid || forms.interval.hasOwnProperty(\'t_from\') || forms.interval.intType.$modelValue === \'always\')">\n <form name="forms.interval" novalidate>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n <!-- START INTERVAL_TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.interval.intType.$touched || forms.interval.$submitted) && forms.interval.intType.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVAL_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="interval.intType" theme="bootstrap" name="intType" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="intType.value as intType in $application.intTypes | filter: $select.search">\n {{intType.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.interval.intType.$touched || forms.interval.$submitted) && forms.interval.intType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVAL_TYPE -->\n <div id="customInterval" class="app-settings" ng-slide-down="interval.intType == \'custom\'" lazy-render duration="1">\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="interval.alwaysTime"><uib-timepicker name="t_from" data-ng-model="interval.t_from" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="interval.alwaysTime"><uib-timepicker name="t_to" data-ng-model="interval.t_to" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="interval.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label> -->\n <!-- START ALWAYS -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALWAYS\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="interval.alwaysTime"\n type="checkbox"\n switch-active="{{ alwaysSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ alwaysSwitch.onColor }}"\n switch-off-color="{{ alwaysSwitch.offColor }}"\n switch-animate="{{ alwaysSwitch.animate }}"\n switch-size="{{ alwaysSwitch.size }}"\n switch-label="{{ alwaysSwitch.label }}"\n switch-icon="{{ alwaysSwitch.icon }}"\n switch-radio-off="{{ alwaysSwitch.radioOff }}"\n switch-label-width="{{ alwaysSwitch.labelWidth }}"\n switch-handle-width="{{ alwaysSwitch.handleWidth }}">\n </label>\n </div>\n </div>\n <!-- END ALWAYS -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="interval.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="interval.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="interval.md_from" theme="bootstrap" name="md_from">\n <ui-select-match>{{$select.selected === \'always\' ? \'APPLICATION_ALWAYS\' : $select.selected | translate}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search">\n {{monthDay === \'always\' ? \'APPLICATION_ALWAYS\' : monthDay | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="interval.md_to" theme="bootstrap" name="md_to">\n <ui-select-match>{{$select.selected === \'always\' ? \'APPLICATION_ALWAYS\' : $select.selected | translate}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search">\n {{monthDay === \'always\' ? \'APPLICATION_ALWAYS\' : monthDay | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="interval.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{month.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="interval.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{month.name | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </div>\n\n <div id="customInterval" class="app-settings" ng-slide-down="interval.intType == \'list\'" lazy-render duration="1">\n\n <!-- START INTERVALS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.interval.IntervalId.$touched || forms.interval.$submitted) && forms.interval.IntervalId.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVALS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="interval.IntervalId" theme="bootstrap" name="IntervalId" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="interval.id as interval in Intervals | filter: $select.search">\n {{interval.name | translate}}\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="Intervals.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_INTERVAL_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/intervals/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.interval.IntervalId.$touched || forms.interval.$submitted) && forms.interval.IntervalId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVALS -->\n\n </div>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n </form>\n</wz-step>\n\n<wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n</wz-step>\n</wizard>\n</div>\n</div>\n<!-- END Portlet PORTLET-->\n</div>\n</div>\n<!-- END PAGE CONTENT-->\n'), +a.put("app/channels/voice/voicemail/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-envelope-letter"></i>\n <a href="#">{{ \'APPLICATION_VOICEMAILS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-envelope-letter font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_VOICEMAILS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <a class="btn green-jungle" href="/channels/voice/voicemails/wizard">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_VOICEMAIL\' | translate }}\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/voicemail/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getVoicemail()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-envelope-letter"></i>\n <a href="/channels/voice/voicemails/list">{{ \'APPLICATION_VOICEMAILS\' | translate }}</a>\n <i data-ng-show="voicemail" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="voicemail">\n <a href="#">{{voicemail.mailbox}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET main.channels -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/voicemail.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{voicemail.mailbox}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.voice.voicemails.view.settings\')}">\n <a data-ng-href="/channels/voice/voicemails/view/{{voicemail.uniqueid}}/settings"><i class="icon-settings"></i>{{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.channels.voice.voicemails.view.messages\')}">\n <a data-ng-href="/channels/voice/voicemails/view/{{voicemail.uniqueid}}/messages"><i class="icon-speech"></i>{{ \'APPLICATION_MESSAGES\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET main.channels -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/voicemail/view/view.messages.html",'<div class="row" data-ng-init="getMessages()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_MESSAGES\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns data-ng-if="gridOptions" ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/voice/voicemail/view/view.settings.html",'<div class="row" data-ng-init="getContexts()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_VOICEMAIL\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{ \'APPLICATION_ADVANCED\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateVoiceVoicemail()" novalidate>\n\n <!-- START FULLNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.$submitted && forms.general.fullname.$invalid}">\n <label class="control-label">{{\'APPLICATION_FULLNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="fullname" placeholder="{{\'APPLICATION_FULLNAME\' | translate}}" class="form-control" data-ng-model="voicemail.fullname" required/>\n <span data-ng-show="forms.general.$submitted && forms.general.fullname.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FULLNAME -->\n\n <!-- START EMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.$submitted && forms.general.email.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="email" name="email" placeholder="{{\'APPLICATION_EMAIL\' | translate}}" class="form-control" data-ng-model="voicemail.email" required/>\n <span data-ng-show="forms.general.$submitted && forms.general.host.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.$submitted && forms.general.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_NEW_PASSWORD\' | translate}}</label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_NEW_PASSWORD\' | translate}}" class="form-control" data-ng-model="voicemail.password" />\n <span data-ng-show="forms.general.$submitted && forms.general.password.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START CONFIRM PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.$submitted && forms.general.rpassword.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONFIRM_PASSWORD\' | translate}}</label>\n <input type="password" name="rpassword" placeholder="{{\'APPLICATION_CONFIRM_PASSWORD\' | translate}}" class="form-control" data-ng-model="voicemail.rpassword" nx-equal="voicemail.password"/>\n <span data-ng-show="forms.general.$submitted && (forms.general.rpassword.$invalid || forms.general.rpassword.$invalid)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_PASSWORD\' | translate}}.\n </span>\n </div>\n <!-- END CONFIRM PASSWORD -->\n\n <!-- START MAILBOX -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.$submitted && forms.general.mailbox.$invalid}">\n <label class="control-label">{{\'APPLICATION_MAILBOX\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="mailbox" placeholder="{{\'APPLICATION_MAILBOX\' | translate}}" class="form-control" data-ng-model="voicemail.mailbox" required readonly/>\n <span data-ng-show="forms.general.$submitted && forms.general.mailbox.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MAILBOX -->\n\n <!-- START CONTEXT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.context.$touched || forms.general.$submitted) && forms.general.context.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONTEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="voicemail.context" name="context" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="context.name as context in voiceContexts | filter: $select.search">\n <div ng-bind-html="context.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CONTEXT\' | translate }}\n </span>\n <span data-ng-show="(forms.general.context.$touched || forms.general.$submitted) && forms.general.context.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONTEXT -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n <!-- ADVANCED TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.advanced" data-ng-submit="forms.general.$valid && forms.advanced.$valid && updateVoiceVoicemail()" novalidate>\n\n <!-- START TIMEZONE -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.advanced.$submitted && forms.advanced.tz.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEZONE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="mailbox" placeholder="{{\'APPLICATION_TIMEZONE\' | translate}}" class="form-control" data-ng-model="voicemail.tz" required/>\n <span data-ng-show="forms.advanced.$submitted && forms.advanced.tz.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEZONE -->\n\n <!-- START ATTACH -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.attach.$touched || forms.advanced.$submitted) && forms.advanced.attach.$invalid}">\n <label class="control-label">{{\'APPLICATION_ATTACH\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="voicemail.attach"\n type="checkbox"\n switch-active="{{ switch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ switch.onColor }}"\n switch-off-color="{{ switch.offColor }}"\n switch-animate="{{ switch.animate }}"\n switch-size="{{ switch.size }}"\n switch-label="{{ switch.label }}"\n switch-icon="{{ switch.icon }}"\n switch-radio-off="{{ switch.radioOff }}"\n switch-label-width="{{ switch.labelWidth }}"\n switch-handle-width="{{ switch.handleWidth }}"\n ng-true-value="\'yes\'"\n ng-false-value="\'no\'">\n </div>\n <!-- END ATTACH -->\n\n <!-- START ENVELOPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.envelope.$touched || forms.advanced.$submitted) && forms.advanced.envelope.$invalid}">\n <label class="control-label">{{\'APPLICATION_ENVELOPE\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="voicemail.envelope"\n type="checkbox"\n switch-active="{{ switch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ switch.onColor }}"\n switch-off-color="{{ switch.offColor }}"\n switch-animate="{{ switch.animate }}"\n switch-size="{{ switch.size }}"\n switch-label="{{ switch.label }}"\n switch-icon="{{ switch.icon }}"\n switch-radio-off="{{ switch.radioOff }}"\n switch-label-width="{{ switch.labelWidth }}"\n switch-handle-width="{{ switch.handleWidth }}"\n ng-true-value="\'yes\'"\n ng-false-value="\'no\'">\n </div>\n <!-- END ENVELOPE -->\n\n <!-- START DELETE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.delete.$touched || forms.advanced.$submitted) && forms.advanced.delete.$invalid}">\n <label class="control-label">{{\'APPLICATION_DELETE\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="voicemail.delete"\n type="checkbox"\n switch-active="{{ switch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ switch.onColor }}"\n switch-off-color="{{ switch.offColor }}"\n switch-animate="{{ switch.animate }}"\n switch-size="{{ switch.size }}"\n switch-label="{{ switch.label }}"\n switch-icon="{{ switch.icon }}"\n switch-radio-off="{{ switch.radioOff }}"\n switch-label-width="{{ switch.labelWidth }}"\n switch-handle-width="{{ switch.handleWidth }}"\n ng-true-value="\'yes\'"\n ng-false-value="\'no\'">\n </div>\n <!-- END DELETE -->\n\n <!-- START EMAIL_BODY -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_EMAIL_BODY\' | translate}}</label>\n <textarea type="text" name="emailbody" placeholder="{{\'APPLICATION_EMAIL_BODY\' | translate}}" class="form-control" data-ng-model="voicemail.emailbody"></textarea>\n </div>\n <!-- END EMAIL_BODY -->\n\n <!-- START EMAIL_SUBJECT -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_EMAIL_SUBJECT\' | translate}}</label>\n <textarea type="text" name="emailsubject" placeholder="{{\'APPLICATION_EMAIL_SUBJECT\' | translate}}" class="form-control" data-ng-model="voicemail.emailsubject"></textarea>\n </div>\n <!-- END EMAIL_SUBJECT -->\n\n <!-- START MAX_SECONDS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.maxsecs.$touched || forms.advanced.$submitted) && forms.advanced.maxsecs.$invalid}">\n <label class="control-label">{{\'APPLICATION_MAX_SECONDS\' | translate}}</label>\n <input type="number" min="0" name="maxsecs" placeholder="{{\'APPLICATION_MAX_SECONDS\' | translate}}" class="form-control" data-ng-model="voicemail.maxsecs" required/>\n <span data-ng-show="(forms.advanced.maxsecs.$touched || forms.advanced.$submitted) && forms.advanced.maxsecs.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MAX_SECONDS -->\n\n <!-- START MAX_MESSAGES -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.maxmsg.$touched || forms.advanced.$submitted) && forms.advanced.maxmsg.$invalid}">\n <label class="control-label">{{\'APPLICATION_MAX_MESSAGES\' | translate}}</label>\n <input type="number" min="0" name="maxmsg" placeholder="{{\'APPLICATION_MAX_MESSAGES\' | translate}}" class="form-control" data-ng-model="voicemail.maxmsg" required/>\n <span data-ng-show="(forms.advanced.maxmsg.$touched || forms.advanced.$submitted) && forms.advanced.maxmsg.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MAX_MESSAGES -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/voice/voicemail/wizard/wizard.html",'<div class="col-md-12" data-ng-init="initWizard()">\n <!-- BEGIN PAGE HEADER-->\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-envelope-letter"></i>\n <a href="/channels/voice/voicemails/list">{{ \'APPLICATION_VOICEMAILS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-options"></i>\n <a href="#">{{ \'APPLICATION_WIZARD\' | translate }}</a>\n </li>\n </ul>\n </div>\n <!-- END PAGE HEADER-->\n\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered" data-ng-init="getFirstFreeMailbox()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-envelope-letter font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_VOICEMAIL\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_GENERAL\' | translate}}" canexit="exitValidation(form.general.$valid)">\n <form name="form.general" novalidate>\n\n <!-- START FULLNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': form.general.$submitted && form.general.fullname.$invalid}">\n <label class="control-label">{{\'APPLICATION_FULLNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="fullname" placeholder="{{\'APPLICATION_FULLNAME\' | translate}}" class="form-control" data-ng-model="item.fullname" required/>\n <span data-ng-show="form.general.$submitted && form.general.fullname.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FULLNAME -->\n\n <!-- START EMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': form.general.$submitted && form.general.email.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="email" name="email" placeholder="{{\'APPLICATION_EMAIL\' | translate}}" class="form-control" data-ng-model="item.email" required/>\n <span data-ng-show="form.general.$submitted && form.general.host.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': form.general.$submitted && form.general.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.password" required/>\n <span data-ng-show="form.general.$submitted && form.general.password.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START CONFIRM PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': form.general.$submitted && form.general.rpassword.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONFIRM_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="rpassword" placeholder="{{\'APPLICATION_CONFIRM_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.rpassword" nx-equal="item.password" required/>\n <span data-ng-show="form.general.$submitted && (form.general.rpassword.$invalid || form.general.rpassword.$invalid)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_PASSWORD\' | translate}}.\n </span>\n </div>\n <!-- END CONFIRM PASSWORD -->\n\n <!-- START MAILBOX -->\n <div class="form-group" data-ng-class="{\'has-error\': form.general.$submitted && form.general.mailbox.$invalid}">\n <label class="control-label">{{\'APPLICATION_MAILBOX\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="mailbox" placeholder="{{\'APPLICATION_MAILBOX\' | translate}}" class="form-control" data-ng-model="item.mailbox" required readonly/>\n <span data-ng-show="form.general.$submitted && form.general.mailbox.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MAILBOX -->\n\n <!-- START ATTACH -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.attach.$touched || forms.general.$submitted) && forms.general.attach.$invalid}">\n <label class="control-label">{{\'APPLICATION_ATTACH\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.attach"\n type="checkbox"\n switch-active="{{ switch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ switch.onColor }}"\n switch-off-color="{{ switch.offColor }}"\n switch-animate="{{ switch.animate }}"\n switch-size="{{ switch.size }}"\n switch-label="{{ switch.label }}"\n switch-icon="{{ switch.icon }}"\n switch-radio-off="{{ switch.radioOff }}"\n switch-label-width="{{ switch.labelWidth }}"\n switch-handle-width="{{ switch.handleWidth }}"\n ng-true-value="\'yes\'"\n ng-false-value="\'no\'">\n </div>\n <!-- END ATTACH -->\n\n <button class="btn green-haze" type="submit" ng-click="next()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END PORTLET-->\n</div>\n'),a.put("app/contactmanager/company/list/create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_COMPANY\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="forms.company" novalidate>\n <div class="row">\n <div class="col-md-6">\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.company.name.$touched || forms.company.$submitted) && forms.company.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(forms.cmopany.name.$touched || forms.company.$submitted) && forms.company.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START VAT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.company.vat.$touched || forms.company.$submitted) && forms.company.vat.$invalid}">\n <label class="control-label">{{\'APPLICATION_VAT\' | translate}}</label>\n <input type="text" name="vat" placeholder="{{\'APPLICATION_VAT\' | translate}}" class="form-control" data-ng-model="item.vat"/>\n <span data-ng-show="(forms.cmopany.vat.$touched || forms.company.$submitted) && forms.company.vat.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END VAT -->\n\n <!-- START COMPANYID -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.company.companyId.$touched || forms.company.$submitted) && forms.company.companyId.$invalid}">\n <label class="control-label">{{\'APPLICATION_COMPANY_ID\' | translate}}</label>\n <input type="text" name="companyId" placeholder="{{\'APPLICATION_COMPANY_ID\' | translate}}" class="form-control" data-ng-model="item.companyId"/>\n <span data-ng-show="(forms.cmopany.companyId.$touched || forms.company.$submitted) && forms.company.companyId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END COMPANYID -->\n\n <!-- START WEBSITE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.company.website.$touched || forms.company.$submitted) && forms.company.website.$invalid}">\n <label class="control-label">{{\'APPLICATION_WEBSITE\' | translate}}</label>\n <input type="text" name="website" placeholder="{{\'APPLICATION_WEBSITE\' | translate}}" class="form-control" data-ng-model="item.website"/>\n <span data-ng-show="(forms.cmopany.website.$touched || forms.company.$submitted) && forms.company.website.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END WEBSITE -->\n\n <!-- START EMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.company.email.$touched || forms.company.$submitted) && forms.company.email.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}</label>\n <input type="email" name="email" placeholder="{{\'APPLICATION_EMAIL\' | translate}}" class="form-control" data-ng-model="item.email"/>\n <span data-ng-show="(forms.cmopany.email.$touched || forms.company.$submitted) && forms.company.email.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n\n </div>\n <div class="col-md-6">\n <!-- START PHONE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.company.phone.$touched || forms.company.$submitted) && forms.company.phone.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}</label>\n <input type="text" name="phone" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="item.phone"/>\n <span data-ng-show="(forms.cmopany.phone.$touched || forms.company.$submitted) && forms.company.phone.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PHONE -->\n\n <!-- START FAX -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.company.fax.$touched || forms.company.$submitted) && forms.company.fax.$invalid}">\n <label class="control-label">{{\'APPLICATION_FAX\' | translate}}</label>\n <input type="text" name="fax" placeholder="{{\'APPLICATION_FAX\' | translate}}" class="form-control" data-ng-model="item.fax"/>\n <span data-ng-show="(forms.cmopany.fax.$touched || forms.company.$submitted) && forms.company.fax.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FAX -->\n\n <!-- START TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.company.type.$touched || forms.company.$submitted) && forms.company.type.$invalid}">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}</label>\n <input type="text" name="type" placeholder="{{\'APPLICATION_TYPE\' | translate}}" class="form-control" data-ng-model="item.type"/>\n <span data-ng-show="(forms.cmopany.type.$touched || forms.company.$submitted) && forms.company.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TYPE -->\n\n <!-- START DOMAIN -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.company.emailDomain.$touched || forms.company.$submitted) && forms.company.emailDomain.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL_DOMAIN\' | translate}}</label>\n <input type="text" name="domain" placeholder="{{\'APPLICATION_EMAIL_DOMAIN\' | translate}}" class="form-control" data-ng-model="item.emailDomain"/>\n <span data-ng-show="(forms.cmopany.emailDomain.$touched || forms.company.$submitted) && forms.company.emailDomain.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DOMAIN -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n </div>\n</div>\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="forms.company.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'), +a.put("app/contactmanager/company/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-users"></i>\n <a href="#">{{ \'APPLICATION_CONTACT_MANAGER\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-briefcase"></i>\n <a href="/contactmanager/companies/list">{{ \'APPLICATION_COMPANIES\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-briefcase font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_COMPANIES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <button class="btn green-jungle " ng-click="create()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_COMPANY\' | translate }}\n </button>\n </div>\n <!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> -->\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/contactmanager/company/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getCompany()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-users"></i>\n <a href="#">{{ \'APPLICATION_CONTACT_MANAGER\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-briefcase"></i>\n <a href="/contactmanager/companies/list">{{ \'APPLICATION_COMPANIES\' | translate }}</a>\n <i data-ng-show="company" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="company">\n <a href="#">{{company.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/company.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{company.name}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.contactmanager.companies.view.settings\')}">\n <a data-ng-href="/contactmanager/companies/view/{{company.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/contactmanager/company/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_COMPANY\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{ \'APPLICATION_ADDRESS\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{ \'APPLICATION_SHIPMENT_ADDRESS\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateCompany()" novalidate>\n <div class="row">\n <div class="col-md-6">\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="company.name" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START VAT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.vat.$touched || forms.general.$submitted) && forms.general.vat.$invalid}">\n <label class="control-label">{{\'APPLICATION_VAT\' | translate}}</label>\n <input type="text" name="vat" placeholder="{{\'APPLICATION_VAT\' | translate}}" class="form-control" data-ng-model="company.vat"/>\n <span data-ng-show="(forms.cmopany.vat.$touched || forms.general.$submitted) && forms.general.vat.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END VAT -->\n\n <!-- START COMPANYID -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.companyId.$touched || forms.general.$submitted) && forms.general.companyId.$invalid}">\n <label class="control-label">{{\'APPLICATION_COMPANY_ID\' | translate}}</label>\n <input type="text" name="companyId" placeholder="{{\'APPLICATION_COMPANY_ID\' | translate}}" class="form-control" data-ng-model="company.companyId"/>\n <span data-ng-show="(forms.cmopany.companyId.$touched || forms.general.$submitted) && forms.general.companyId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END COMPANYID -->\n\n <!-- START WEBSITE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.website.$touched || forms.general.$submitted) && forms.general.website.$invalid}">\n <label class="control-label">{{\'APPLICATION_WEBSITE\' | translate}}</label>\n <input type="text" name="website" placeholder="{{\'APPLICATION_WEBSITE\' | translate}}" class="form-control" data-ng-model="company.website"/>\n <span data-ng-show="(forms.cmopany.website.$touched || forms.general.$submitted) && forms.general.website.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END WEBSITE -->\n\n <!-- START EMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.email.$touched || forms.general.$submitted) && forms.general.email.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}</label>\n <input type="email" name="email" placeholder="{{\'APPLICATION_EMAIL\' | translate}}" class="form-control" data-ng-model="company.email"/>\n <span data-ng-show="(forms.cmopany.email.$touched || forms.general.$submitted) && forms.general.email.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n </div>\n <div class="col-md-6">\n <!-- START PHONE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.phone.$touched || forms.general.$submitted) && forms.general.phone.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}</label>\n <input type="text" name="phone" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="company.phone"/>\n <span data-ng-show="(forms.cmopany.phone.$touched || forms.general.$submitted) && forms.general.phone.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PHONE -->\n\n <!-- START FAX -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.fax.$touched || forms.general.$submitted) && forms.general.fax.$invalid}">\n <label class="control-label">{{\'APPLICATION_FAX\' | translate}}</label>\n <input type="text" name="fax" placeholder="{{\'APPLICATION_FAX\' | translate}}" class="form-control" data-ng-model="company.fax"/>\n <span data-ng-show="(forms.cmopany.fax.$touched || forms.general.$submitted) && forms.general.fax.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FAX -->\n\n <!-- START TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.type.$touched || forms.general.$submitted) && forms.general.type.$invalid}">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}</label>\n <input type="text" name="type" placeholder="{{\'APPLICATION_TYPE\' | translate}}" class="form-control" data-ng-model="company.type"/>\n <span data-ng-show="(forms.cmopany.type.$touched || forms.general.$submitted) && forms.general.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TYPE -->\n\n <!-- START DOMAIN -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.emailDomain.$touched || forms.general.$submitted) && forms.general.emailDomain.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL_DOMAIN\' | translate}}</label>\n <input type="text" name="domain" placeholder="{{\'APPLICATION_EMAIL_DOMAIN\' | translate}}" class="form-control" data-ng-model="company.emailDomain"/>\n <span data-ng-show="(forms.cmopany.emailDomain.$touched || forms.general.$submitted) && forms.general.emailDomain.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DOMAIN -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="company.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n </div>\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.address" data-ng-submit="forms.address.$valid && updateCompany()" novalidate>\n <!-- START STREET -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.address.street.$touched || forms.address.$submitted) && forms.address.street.$invalid}">\n <label class="control-label">{{\'APPLICATION_STREET\' | translate}}</label>\n <input type="text" name="street" placeholder="{{\'APPLICATION_STREET\' | translate}}" class="form-control" data-ng-model="company.street"/>\n <span data-ng-show="(forms.address.street.$touched || forms.address.$submitted) && forms.address.street.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END STREET -->\n\n <!-- START POSTALCODE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.address.postalCode.$touched || forms.address.$submitted) && forms.address.postalCode.$invalid}">\n <label class="control-label">{{\'APPLICATION_POSTALCODE\' | translate}}</label>\n <input type="text" name="postalCode" placeholder="{{\'APPLICATION_POSTALCODE\' | translate}}" class="form-control" data-ng-model="company.postalCode"/>\n <span data-ng-show="(forms.address.postalCode.$touched || forms.address.$submitted) && forms.address.postalCode.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END POSTALCODE -->\n\n <!-- START CITY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.address.city.$touched || forms.address.$submitted) && forms.address.city.$invalid}">\n <label class="control-label">{{\'APPLICATION_CITY\' | translate}}</label>\n <input type="text" name="city" placeholder="{{\'APPLICATION_CITY\' | translate}}" class="form-control" data-ng-model="company.city"/>\n <span data-ng-show="(forms.address.city.$touched || forms.address.$submitted) && forms.address.city.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CITY -->\n <!-- START COUNTRY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.address.country.$touched || forms.address.$submitted) && forms.address.country.$invalid}">\n <label class="control-label">{{\'APPLICATION_COUNTRY\' | translate}}</label>\n <input type="text" name="country" placeholder="{{\'APPLICATION_COUNTRY\' | translate}}" class="form-control" data-ng-model="company.country"/>\n <span data-ng-show="(forms.address.country.$touched || forms.address.$submitted) && forms.address.country.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END COUNTRY -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <div class="tab-pane" id="tab_1_3">\n <form name="forms.shipmentAddress" data-ng-submit="forms.shipmentAddress.$valid && updateCompany()" novalidate>\n <!-- START STREET -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.shipmentAddress.sStreet.$touched || forms.shipmentAddress.$submitted) && forms.shipmentAddress.sStreet.$invalid}">\n <label class="control-label">{{\'APPLICATION_STREET\' | translate}}</label>\n <input type="text" name="sStreet" placeholder="{{\'APPLICATION_STREET\' | translate}}" class="form-control" data-ng-model="company.sStreet"/>\n <span data-ng-show="(forms.shipmentAddress.sStreet.$touched || forms.shipmentAddress.$submitted) && forms.shipmentAddress.sStreet.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END STREET -->\n\n <!-- START POSTALCODE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.shipmentAddress.sPostalCode.$touched || forms.shipmentAddress.$submitted) && forms.shipmentAddress.sPostalCode.$invalid}">\n <label class="control-label">{{\'APPLICATION_POSTALCODE\' | translate}}</label>\n <input type="text" name="sPostalCode" placeholder="{{\'APPLICATION_POSTALCODE\' | translate}}" class="form-control" data-ng-model="company.sPostalCode"/>\n <span data-ng-show="(forms.shipmentAddress.sPostalCode.$touched || forms.shipmentAddress.$submitted) && forms.shipmentAddress.sPostalCode.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END POSTALCODE -->\n\n <!-- START CITY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.shipmentAddress.sCity.$touched || forms.shipmentAddress.$submitted) && forms.shipmentAddress.sCity.$invalid}">\n <label class="control-label">{{\'APPLICATION_CITY\' | translate}}</label>\n <input type="text" name="sCity" placeholder="{{\'APPLICATION_CITY\' | translate}}" class="form-control" data-ng-model="company.sCity"/>\n <span data-ng-show="(forms.shipmentAddress.sCity.$touched || forms.shipmentAddress.$submitted) && forms.shipmentAddress.sCity.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CITY -->\n <!-- START COUNTRY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.shipmentAddress.sCountry.$touched || forms.shipmentAddress.$submitted) && forms.shipmentAddress.sCountry.$invalid}">\n <label class="control-label">{{\'APPLICATION_COUNTRY\' | translate}}</label>\n <input type="text" name="sCountry" placeholder="{{\'APPLICATION_COUNTRY\' | translate}}" class="form-control" data-ng-model="company.sCountry"/>\n <span data-ng-show="(forms.shipmentAddress.sCountry.$touched || forms.shipmentAddress.$submitted) && forms.shipmentAddress.sCountry.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END COUNTRY -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/contactmanager/contact/list/copy.modal.html",'<div class="modal-header" data-ng-init="getLists()">\n <h3 class="modal-title">{{ \'APPLICATION_COPY_CONTACT\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="forms.copy" novalidate>\n <!-- START LIST -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.ListId.$invalid && forms.csv.$submitted}">\n <label class="control-label">{{\'APPLICATION_LIST\' | translate}}</label>\n <ui-select data-ng-model="item.ListId" theme="bootstrap" name="ListId" data-ng-disabled="disabled" data-ng-change="getCustomFields()" required>\n <ui-select-match placeholder="{{ \'APPLICATION_LIST\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="list.id as list in lists | filter: $select.search">\n <div ng-bind-html="list.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.csv.ListId.$invalid && forms.csv.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END LIST -->\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="forms.copy.$invalid || !forms.copy.ListId">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/contactmanager/contact/list/import.modal.html",'<div class="modal-header" data-ng-init="getLists();getCompanies();">\n <h3 class="modal-title">{{ \'APPLICATION_IMPORT_FROM_CSV\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="forms.csv" novalidate>\n <div class="row">\n <div class="col-md-6">\n <!-- START LIST -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.ListId.$invalid && forms.csv.$submitted}">\n <label class="control-label">{{\'APPLICATION_LIST\' | translate}}</label>\n <ui-select data-ng-model="item.ListId" theme="bootstrap" name="ListId" data-ng-disabled="disabled" data-ng-change="getCustomFields()">\n <ui-select-match placeholder="{{ \'APPLICATION_LIST\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="list.id as list in lists | filter: $select.search">\n <div ng-bind-html="list.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.csv.ListId.$invalid && forms.csv.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END LIST -->\n\n <!-- START FIRSTNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.csv.firstName.$touched || forms.general.$submitted) && forms.csv.firstName.$invalid}">\n <label class="control-label">{{\'APPLICATION_FIRSTNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.firstName" theme="bootstrap" name="firstName" data-ng-disabled="disabled" required>\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_FIRSTNAME\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.csv.firstName.$touched || forms.csv.$submitted) && forms.csv.firstName.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FIRSTNAME -->\n\n <!-- START LASTNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.lastName.$invalid && forms.csv.$submitted}">\n <label class="control-label">{{\'APPLICATION_LASTNAME\' | translate}}</label>\n <ui-select data-ng-model="item.lastName" theme="bootstrap" name="lastName" data-ng-disabled="disabled">\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_LASTNAME\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.csv.lastName.$invalid && forms.csv.$touched" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END LASTNAME -->\n\n <!-- START STREET -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.street.$invalid && forms.csv.$submitted}">\n <label class="control-label">{{\'APPLICATION_STREET\' | translate}}</label>\n <ui-select data-ng-model="item.street" theme="bootstrap" name="street" data-ng-disabled="disabled">\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_STREET\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.csv.street.$invalid && forms.csv.$touched" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END STREET -->\n\n <!-- START POSTALCODE -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.postalCode.$invalid && forms.csv.$submitted}">\n <label class="control-label">{{\'APPLICATION_POSTALCODE\' | translate}}</label>\n <ui-select data-ng-model="item.postalCode" theme="bootstrap" name="postalCode" data-ng-disabled="disabled">\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_POSTALCODE\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.csv.postalCode.$invalid && forms.csv.$touched" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END POSTALCODE -->\n\n <!-- START CITY -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.city.$invalid && forms.csv.$submitted}">\n <label class="control-label">{{\'APPLICATION_CITY\' | translate}}</label>\n <ui-select data-ng-model="item.city" theme="bootstrap" name="city" data-ng-disabled="disabled">\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_CITY\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.csv.city.$invalid && forms.csv.$touched" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CITY -->\n\n <!-- START PHONE -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.phone.$invalid && forms.csv.$submitted}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}</label>\n <ui-select data-ng-model="item.phone" theme="bootstrap" name="phone" data-ng-disabled="disabled">\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_PHONE\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.csv.phone.$invalid && forms.phone.$touched" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PHONE -->\n\n <!-- START MOBILE -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.mobile.$invalid && forms.csv.$submitted}">\n <label class="control-label">{{\'APPLICATION_MOBILE\' | translate}}</label>\n <ui-select data-ng-model="item.mobile" theme="bootstrap" name="mobile" data-ng-disabled="disabled">\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_MOBILE\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.csv.mobile.$invalid && forms.mobile.$touched" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MOBILE -->\n\n </div>\n <div class="col-md-6">\n\n <!-- START COUNTRY -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.country.$invalid && forms.csv.$submitted}">\n <label class="control-label">{{\'APPLICATION_COUNTRY\' | translate}}</label>\n <ui-select data-ng-model="item.country" theme="bootstrap" name="country" data-ng-disabled="disabled">\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_COUNTRY\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.csv.country.$invalid && forms.csv.$touched" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END COUNTRY -->\n\n <!-- START DATEOFBIRTH -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.dateOfBirth.$invalid && forms.csv.$submitted}">\n <label class="control-label">{{\'APPLICATION_DATEOFBIRTH\' | translate}}</label>\n <ui-select data-ng-model="item.dateOfBirth" theme="bootstrap" name="dateOfBirth" data-ng-disabled="disabled">\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_DATEOFBIRTH\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.csv.dateOfBirth.$invalid && forms.csv.$touched" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DATEOFBIRTH -->\n\n <!-- START TAGS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.tags.$invalid && forms.csv.$submitted}">\n <label class="control-label">{{\'APPLICATION_TAGS\' | translate}}</label>\n <ui-select multiple data-ng-model="item.tags" theme="bootstrap" name="tags" data-ng-disabled="disabled">\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_TAGS\' | translate }}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.csv.tags.$invalid && forms.csv.$touched" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TAGS -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.description.$invalid && forms.csv.$submitted}">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <ui-select data-ng-model="item.description" theme="bootstrap" name="description" data-ng-disabled="disabled">\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_DESCRIPTION\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.csv.description.$invalid && forms.csv.$touched" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START FAX -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.fax.$invalid && forms.csv.$submitted}">\n <label class="control-label">{{\'APPLICATION_FAX\' | translate}}</label>\n <ui-select data-ng-model="item.fax" theme="bootstrap" name="fax" data-ng-disabled="disabled">\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_FAX\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.csv.fax.$invalid && forms.fax.$touched" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FAX -->\n\n <!-- START EMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.email.$invalid && forms.general.$submitted}">\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}</label>\n <ui-select data-ng-model="item.email" theme="bootstrap" name="email" data-ng-disabled="disabled">\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_EMAIL\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.csv.email.$invalid && forms.csv.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n\n <!-- START COMPANY -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.CompanyId.$invalid && forms.csv.$submitted}">\n <label class="control-label">{{\'APPLICATION_COMPANY\' | translate}}</label>\n <ui-select data-ng-model="item.CompanyId" theme="bootstrap" name="CompanyId" data-ng-disabled="!companies.length">\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_COMPANY\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="company.id as company in companies | filter: $select.search">\n <div ng-bind-html="company.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="companies.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_COMPANIES_AVAILABLE\' | translate }}\n </p>\n </div>\n <span data-ng-show="forms.csv.CompanyId.$invalid && forms.csv.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END COMPANY -->\n\n </div>\n </div>\n\n <!-- START CUSTOMFIELDS -->\n <div data-ng-repeat="customField in customFields">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.csv[customField.name].$touched || forms.general.$submitted) && forms.csv[customField.name].$invalid}">\n <label class="control-label">{{customField.alias}}<span data-ng-if="customField.required" class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item[customField.name]" theme="bootstrap" name="{{customField.name}}" data-ng-disabled="disabled" data-ng-required="customField.required">\n <ui-select-match allow-clear placeholder="{{customField.alias}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.csv[customField.name].$touched || forms.csv.$submitted) && forms.csv[customField.name].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <!-- END CUSTOMFIELDS -->\n\n <div>\n <p>{{\'APPLICATION_IMPORT_SUCCEEDED\' | translate}}: {{import.succeeded}}/{{csvLength}}</p>\n <div class="progress progress-sm" style="">\n <div class="progress-bar progress-bar-info" role="progressbar" ng-style="{ \'width\': import.success + \'%\' }"></div>\n </div>\n </div>\n <div>\n <p>{{\'APPLICATION_IMPORT_FAILED\' | translate}}: {{import.failed}}/{{csvLength}}</p>\n <div class="progress progress-sm" style="">\n <div class="progress-bar progress-bar-danger" role="progressbar" ng-style="{ \'width\': import.fail + \'%\' }"></div>\n </div>\n </div>\n <div data-ng-if="failedRows">\n <p>{{\'APPLICATION_FAILED_ROWS\' | translate}}:</p>\n <div class="failed-contacts">{{failedRows}}</div>\n</div>\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="start()" ng-disabled="forms.csv.$invalid || submitted">{{ \'APPLICATION_SUBMIT\' | translate }}</button>\n <button class="btn default" type="button" ng-click="close()" data-ng-if="!importing">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n <button class="btn default" type="button" ng-click="stop()" data-ng-if="importing">{{ \'APPLICATION_STOP\' | translate }}</button>\n</div>\n'), +a.put("app/contactmanager/contact/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-users"></i>\n <a href="#">{{ \'APPLICATION_CONTACT_MANAGER\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-users"></i>\n <a href="/contactmanager/contacts/list">{{ \'APPLICATION_CONTACTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="fa fa-users font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_CONTACTS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length && !Auth.isAgent()">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <button data-ng-if="gridOptions.data.length" class="btn purple" ng-csv="extractAll()" lazy-load="true" filename="Contacts.csv" csv-label="true">\n <i class="fa fa-download"></i> {{ \'APPLICATION_EXPORT_TO_CSV\' | translate }}\n </button>\n <button class="btn green-jungle" data-ng-click="newContact({CompanyId:gridOptions.columnDefs[7].filter.term || null,ListId:gridOptions.columnDefs[6].filter.term || null});">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_CONTACT\' | translate }}\n </button>\n <span class="btn default btn-file" data-ng-if="!Auth.isAgent()">\n <span class="fileinput-new">\n <i class="icon-cloud-upload"></i> {{\'APPLICATION_IMPORT_FROM_CSV\' | translate}}</span>\n <input type="file" accept=".csv" nv-file-select="" uploader="uploader"/>\n </span>\n </div>\n <!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> -->\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div data-ng-if="gridOptions" ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <span us-spinner spinner-key="grid-spinner"></span>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/contactmanager/customfield/list/create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_CUSTOM_FIELD\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="forms.customField" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.customField.name.$touched || forms.customField.$submitted) && forms.customField.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.alias" required/>\n <span data-ng-show="(forms.customField.name.$touched || forms.customField.$submitted) && forms.customField.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.customField.type.$touched || forms.customField.$submitted) && forms.customField.type.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.type" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_TYPE\' | translate }}">{{$translate.instant($select.selected.name)}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types| filter: $select.search">\n {{$translate.instant(type.name)}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.customField.type.$touched || forms.customField.$submitted) && forms.customField.type.$invalid && forms.customField.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TYPE -->\n\n <div ng-slide-down="item.type == \'select\'" lazy-render duration="1">\n <div>\n <label class="control-label">{{\'APPLICATION_CHOICES\' | translate}}</label>\n </div>\n <div class="padding-bottom" ng-repeat="choice in choices">\n <div class="form-group">\n <div class="input-group">\n <input type="text" class="form-control" ng-model="choice.value" required>\n <span class="input-group-btn">\n <button class="btn red" type="button"data-ng-click="removeField($index)" data-ng-disabled="choices.length<=1"><i class="fa fa-times"></i></button>\n </span>\n </div>\n </div>\n </div>\n <button type="button" class="btn btn-sm green padding-bottom" ng-click="addField()">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_CHOICE\' | translate}}\n </button>\n\n </div>\n\n <!-- START REQUIRED -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_REQUIRED\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="item.required"\n type="checkbox"\n switch-active="{{ bsSwitch.isActive }}"\n data-ng-init="item.required = false"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ bsSwitch.onColor }}"\n switch-off-color="{{ bsSwitch.offColor }}"\n switch-animate="{{ bsSwitch.animate }}"\n switch-size="{{ bsSwitch.size }}"\n switch-label="{{ bsSwitch.label }}"\n switch-icon="{{ bsSwitch.icon }}"\n switch-radio-off="{{ bsSwitch.radioOff }}"\n switch-label-width="{{ bsSwitch.labelWidth }}"\n switch-handle-width="{{ bsSwitch.handleWidth }}">\n </div>\n <!-- END REQUIRED -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="forms.customField.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/contactmanager/customfield/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-users"></i>\n <a href="#">{{ \'APPLICATION_CONTACT_MANAGER\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-pencil"></i>\n <a href="/contactmanager/customfields/list">{{ \'APPLICATION_CUSTOM_FIELDS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-pencil font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_CUSTOM_FIELDS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <button class="btn green-jungle " ng-click="create()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_CUSTOM_FIELD\' | translate }}\n </button>\n </div>\n <!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> -->\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/contactmanager/customfield/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getCustomField()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-users"></i>\n <a href="#">{{ \'APPLICATION_CONTACT_MANAGER\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-pencil"></i>\n <a href="/contactmanager/customfields/list">{{ \'APPLICATION_CUSTOM_FIELDS\' | translate }}</a>\n <i data-ng-show="customField" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="customField">\n <a href="#">{{customField.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/customField.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{customField.name}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.contactmanager.customfields.view.settings\')}">\n <a data-ng-href="/contactmanager/customfields/view/{{customField.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/contactmanager/customfield/view/view.settings.html",'<div class="row" data-ng-init="getCustomField()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_CUSTOM_FIELD\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n </div>\n\n <div class="portlet-body">\n <!-- GENERAL TAB -->\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateCustomField()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="customField.alias" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <div ng-slide-down="customField.type == \'select\'" lazy-render duration="1" class="mbottom20">\n <div>\n <label class="control-label">{{\'APPLICATION_CHOICES\' | translate}}</label>\n </div>\n <div class="padding-bottom" ng-repeat="choice in choices">\n <div class="form-group">\n <div class="input-group">\n <input type="text" class="form-control" ng-model="choice.value" required>\n <span class="input-group-btn">\n <button class="btn red" type="button"data-ng-click="removeField($index)" data-ng-disabled="choices.length<=1"><i class="fa fa-times"></i></button>\n </span>\n </div>\n </div>\n </div>\n <button type="button" class="btn btn-sm green padding-bottom" ng-click="addField()">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_CHOICE\' | translate}}\n </button>\n\n </div>\n\n <!-- START REQUIRED -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_REQUIRED\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="customField.required"\n type="checkbox"\n switch-active="{{ bsSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ bsSwitch.onColor }}"\n switch-off-color="{{ bsSwitch.offColor }}"\n switch-animate="{{ bsSwitch.animate }}"\n switch-size="{{ bsSwitch.size }}"\n switch-label="{{ bsSwitch.label }}"\n switch-icon="{{ bsSwitch.icon }}"\n switch-radio-off="{{ bsSwitch.radioOff }}"\n switch-label-width="{{ bsSwitch.labelWidth }}"\n switch-handle-width="{{ bsSwitch.handleWidth }}">\n </div>\n <!-- END REQUIRED -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/contactmanager/list/list/create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_LIST\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="forms.list" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.list.name.$touched || forms.list.$submitted) && forms.list.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(forms.list.name.$touched || forms.list.$submitted) && forms.list.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="forms.list.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/contactmanager/list/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-users"></i>\n <a href="#">{{ \'APPLICATION_CONTACT_MANAGER\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-list-ul"></i>\n <a href="/contactmanager/lists/list">{{ \'APPLICATION_LISTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="fa fa-list-ul font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_LISTS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <!-- <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteLists()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div> -->\n <div class="btn-group">\n <button class="btn green-jungle " ng-click="create()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_LIST\' | translate }}\n </button>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/contactmanager/list/view/create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_CUSTOM_FIELD\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="forms.customField" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.customField.name.$touched || forms.customField.$submitted) && forms.customField.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.alias" required/>\n <span data-ng-show="(forms.customField.name.$touched || forms.customField.$submitted) && forms.customField.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.customField.type.$touched || forms.customField.$submitted) && forms.customField.type.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.type" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_TYPE\' | translate }}">{{$translate.instant($select.selected.name)}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types| filter: $select.search">\n {{$translate.instant(type.name)}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.customField.type.$touched || forms.customField.$submitted) && forms.customField.type.$invalid && forms.customField.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TYPE -->\n\n <div ng-slide-down="item.type == \'select\'" lazy-render duration="1">\n <div>\n <label class="control-label">{{\'APPLICATION_CHOICES\' | translate}}</label>\n </div>\n <div class="padding-bottom" ng-repeat="choice in choices">\n <div class="form-group">\n <div class="input-group">\n <input type="text" class="form-control" ng-model="choice.value" required>\n <span class="input-group-btn">\n <button class="btn red" type="button"data-ng-click="removeField($index)" data-ng-disabled="choices.length<=1"><i class="fa fa-times"></i></button>\n </span>\n </div>\n </div>\n </div>\n <button type="button" class="btn btn-sm green padding-bottom" ng-click="addField()">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_CHOICE\' | translate}}\n </button>\n\n </div>\n\n <!-- START REQUIRED -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_REQUIRED\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="item.required"\n type="checkbox"\n switch-active="{{ bsSwitch.isActive }}"\n data-ng-init="item.required = false"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ bsSwitch.onColor }}"\n switch-off-color="{{ bsSwitch.offColor }}"\n switch-animate="{{ bsSwitch.animate }}"\n switch-size="{{ bsSwitch.size }}"\n switch-label="{{ bsSwitch.label }}"\n switch-icon="{{ bsSwitch.icon }}"\n switch-radio-off="{{ bsSwitch.radioOff }}"\n switch-label-width="{{ bsSwitch.labelWidth }}"\n switch-handle-width="{{ bsSwitch.handleWidth }}">\n </div>\n <!-- END REQUIRED -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="forms.customField.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/contactmanager/list/view/view.agents.html",'<div class="row" data-ng-init="getTeams()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_AGENTS\' | translate}}</span>\n </div>\n </div>\n <div class="note note-warning" data-ng-hide="teams.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AVAILABLE_TEAMS\' | translate }}\n </p>\n </div>\n <div class="portlet-body">\n <!-- BEGIN FORM-->\n <form action="index.html" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-team">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/contactmanager/list/view/view.customFieldSettings.html",'<div class="row" data-ng-init="getCustomField()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_CUSTOM_FIELD\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n </div>\n\n <div class="portlet-body">\n <!-- GENERAL TAB -->\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateCustomField()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="customField.alias" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <div ng-slide-down="customField.type == \'select\'" lazy-render duration="1" class="mbottom20">\n <div>\n <label class="control-label">{{\'APPLICATION_CHOICES\' | translate}}</label>\n </div>\n <div class="padding-bottom" ng-repeat="choice in choices">\n <div class="form-group">\n <div class="input-group">\n <input type="text" class="form-control" ng-model="choice.value" required>\n <span class="input-group-btn">\n <button class="btn red" type="button"data-ng-click="removeField($index)" data-ng-disabled="choices.length<=1"><i class="fa fa-times"></i></button>\n </span>\n </div>\n </div>\n </div>\n <button type="button" class="btn btn-sm green padding-bottom" ng-click="addField()">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_CHOICE\' | translate}}\n </button>\n\n </div>\n\n <!-- START REQUIRED -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_REQUIRED\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="customField.required"\n type="checkbox"\n switch-active="{{ bsSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ bsSwitch.onColor }}"\n switch-off-color="{{ bsSwitch.offColor }}"\n switch-animate="{{ bsSwitch.animate }}"\n switch-size="{{ bsSwitch.size }}"\n switch-label="{{ bsSwitch.label }}"\n switch-icon="{{ bsSwitch.icon }}"\n switch-radio-off="{{ bsSwitch.radioOff }}"\n switch-label-width="{{ bsSwitch.labelWidth }}"\n switch-handle-width="{{ bsSwitch.handleWidth }}">\n </div>\n <!-- END REQUIRED -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/contactmanager/list/view/view.customFields.html",'<div ui-view class="profile-content">\n<div class="row" data-ng-init="initCustomFields()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_CUSTOM_FIELDS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <button class="btn green-jungle " ng-click="create()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_CUSTOM_FIELD\' | translate }}\n </button>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n</div>\n'),a.put("app/contactmanager/list/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getList()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-users"></i>\n <a href="#">{{ \'APPLICATION_CONTACT_MANAGER\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-list-ul"></i>\n <a href="/contactmanager/lists/list">{{ \'APPLICATION_LISTS\' | translate }}</a>\n <i data-ng-show="list" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="list">\n <a href="#">{{list.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/list.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{list.name}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.contactmanager.lists.view.settings\')}">\n <a data-ng-href="/contactmanager/lists/view/{{list.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li data-ng-if="!list.defaultEntry" data-ng-class="{active: $state.is(\'main.contactmanager.lists.view.agents\')}">\n <a data-ng-href="/contactmanager/lists/view/{{list.id}}/agents">\n <i class="icon-people"></i>\n {{ \'APPLICATION_AGENTS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.contactmanager.lists.view.customfields\')}">\n <a data-ng-href="/contactmanager/lists/view/{{list.id}}/customfields">\n <i class="icon-pencil"></i>\n {{ \'APPLICATION_CUSTOM_FIELDS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/contactmanager/list/view/view.settings.html",'<div class="row" data-ng-init="initVariables()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_LIST\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateList()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="list.name" data-ng-disabled="list.defaultEntry" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START VARIABLES -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.variables.$invalid && forms.general.$submitted}">\n <label class="control-label">{{\'APPLICATION_TD_VARIABLES\' | translate}}</label>\n <ui-select multiple=\'true\' data-ng-model="list.variables" theme="bootstrap" name="variables" limit="10" ng-disabled="disabled">\n <ui-select-match placeholder="{{ \'APPLICATION_TD_VARIABLES\' | translate }}">{{$item.name}}</ui-select-match>\n <ui-select-choices repeat="variable as variable in variables | filter: $select.search">\n {{variable.name}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.general.variables.$invalid && forms.general.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span class="help-block">{{\'MESSAGE_MAX_VARIABLES\' | translate}}</span>\n </div>\n <!-- END VARIABLES -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="list.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'), +a.put("app/dashboard/chat/chat.html",'<div data-ng-switch="Auth.getRole()">\n <div ng-switch-when="agent" data-ng-init="initAgent()">\n <div class="row" style="padding-bottom:10px;">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="table1" name="table1" ui-grid-resize-columns ui-grid-pagination ui-grid-auto-resize class="ui-grid">\n <div class="watermark" data-ng-show="!table1.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n <div ng-switch-default data-ng-init="initRoomStats();initRoutingStats();initSocketListening();">\n <fieldset>\n <legend>\n <span class="caption-subject"> </span><small class="pull-right font-grey-cascade">{{ \'APPLICATION_TODAY_STATS\' | translate }}</small>\n </legend>\n <div class="row">\n <div class="col-md-8">\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat green-haze">\n <div class="visual">\n <i class="fa fa-play"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.new || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_WAITING_NEW_CI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_WAITING_NEW_CI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat blue-madison">\n <div class="visual">\n <i class="icon-bell"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.open || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_OPEN_CI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_OPEN_CI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n <div class ="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat green">\n <div class="visual">\n <i class="icon-options"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.unmanaged || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_UNMANAGED_CI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_UNMANAGED_CI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat purple-plum">\n <div class="visual">\n <i class="icon-like"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.closed || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_CLOSED_CI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_CLOSED_CI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n <div class ="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat yellow-crusta">\n <div class="visual">\n <i class="icon-dislike"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.abandon || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_ABANDONED_CI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_ABANDONED_CI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12" >\n <div class="dashboard-stat yellow-casablanca">\n <div class="visual">\n <i class="icon-calculator"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.new+roomStatus.open+roomStatus.unmanaged+roomStatus.closed+roomStatus.abandon || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_TOTAL_CI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_TOTAL_CI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n </div>\n <div class="col-md-4">\n <canvas class="chart chart-pie" chart-data="charts.interactions.values" chart-labels="charts.interactions.labels" chart-colours="charts.interactions.colours" chart-legend="true"></canvas>\n </div>\n </div>\n <legend>\n <span class="caption-subject"> </span><small class="pull-right font-grey-cascade">{{ \'APPLICATION_INTERACTION_STATS\' | translate }}</small>\n </legend>\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat red-intense">\n <div class="visual">\n <i class="icon-dislike"></i>\n </div>\n <div class="details">\n <div class="number">\n {{routingStats.timeout || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_TIMEOUT_CA\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_TIMEOUT_CA_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat purple">\n <div class="visual">\n <i class="icon-hourglass"></i>\n </div>\n <div class="details">\n <div class="number">\n {{routingStats.waiting || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_WAITING_CA\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_WAITING_CA_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n </fieldset>\n\n</div>\n</div>\n'),a.put("app/dashboard/dashboard.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" id="dashboardView">\n <div class="col-md-12" >\n <div>\n <nav class="navbar navbar-default" role="navigation">\n <div class="navbar-header">\n <button type="button" class="navbar-toggle" data-ng-init="navCollapsed = true" data-ng-click="navCollapsed = !navCollapsed">\n <span class="sr-only">Toggle navigation</span>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n </button>\n </div>\n\n <!-- Collect the nav links, forms, and other content for toggling -->\n <div class="collapse navbar-collapse" ng-class="!navCollapsed && \'in\'" >\n <ul class="nav navbar-nav">\n <li data-ng-class="{active: $state.is(\'main.dashboard.voice\')}">\n <a href="/dashboard/voice">\n <b class=\'icon-earphones-alt\'></b>\n {{ \'APPLICATION_VOICE\' | translate }}\n </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.dashboard.chat\'),\'disabled-link\':!license.chat}" data-ng-if="::((Auth.isAdmin() || Auth.isAgent() || userModules[8]))">\n <a href="{{license.chat ? \'/dashboard/chat\' : \'#\'}}" class="disable-target">\n <b class=\'icon-bubble\'></b>\n {{ \'APPLICATION_CHAT\' | translate }}\n </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.dashboard.mail\'),\'disabled-link\':!license.mail}" data-ng-if="::((Auth.isAdmin() || Auth.isAgent() || userModules[9]))">\n <a href="{{license.mail ? \'/dashboard/mail\' : \'#\'}}" class="disable-target">\n <b class=\'icon-envelope\'></b>\n {{ \'APPLICATION_EMAIL\' | translate }}\n </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.dashboard.fax\'),\'disabled-link\':!license.fax}" data-ng-if="::((Auth.isAdmin() || Auth.isAgent() || userModules[10]))">\n <a href="{{license.fax ? \'/dashboard/fax\' : \'#\'}}" class="disable-target">\n <b class=\'fa fa-fax\'></b>\n {{ \'APPLICATION_FAX\' | translate }}\n </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.dashboard.sms\'),\'disabled-link\':!license.messaging}" data-ng-if="::((Auth.isAdmin() || Auth.isAgent() || userModules[11]))">\n <a href="{{license.messaging ? \'/dashboard/sms\' : \'#\'}}" class="disable-target">\n <b class=\'glyphicon glyphicon-comment\'></b>\n {{ \'APPLICATION_SMS\' | translate }}\n </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.dashboard.openchannel\'),\'disabled-link\':!license.openchannel}" data-ng-if="::((Auth.isAdmin() || Auth.isAgent() || userModules[20]))">\n <a href="{{license.messaging ? \'/dashboard/openchannel\' : \'#\'}}" class="disable-target">\n <b class=\'icon-globe\'></b>\n {{ \'APPLICATION_OPEN_CHANNEL\' | translate }}\n </a>\n </li>\n </ul>\n </div>\n <!-- /.navbar-collapse -->\n </nav>\n </div>\n <div ui-view></div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/dashboard/fax/fax.html",'<div data-ng-switch="Auth.getRole()">\n <div ng-switch-when="agent" data-ng-init="initAgent()">\n <div class="row" style="padding-bottom:10px;">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="table1" name="table1" ui-grid-resize-columns ui-grid-pagination ui-grid-auto-resize class="ui-grid">\n <div class="watermark" data-ng-show="!table1.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n <div ng-switch-default data-ng-init="initRoomStats();initRoutingStats();initSocketListening();">\n <fieldset>\n <legend>\n <span class="caption-subject"> </span><small class="pull-right font-grey-cascade">{{ \'APPLICATION_INTERACTION_STATS\' | translate }}</small>\n </legend>\n <div class="row">\n <div class="col-md-8">\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat green-haze">\n <div class="visual">\n <i class="fa fa-play"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.new || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_NEW_FI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_NEW_FI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat blue-madison">\n <div class="visual">\n <i class="icon-bell"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.open || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_OPEN_FI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_OPEN_FI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat green">\n <div class="visual">\n <i class="icon-options"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.pending || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_PENDING_FI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_PENDING_FI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat purple-plum">\n <div class="visual">\n <i class="icon-like"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.closed || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_CLOSED_FI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_CLOSED_FI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">\n <div class="dashboard-stat yellow-casablanca">\n <div class="visual">\n <i class="icon-calculator"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.new+roomStatus.open+roomStatus.pending+roomStatus.closed || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_TOTAL_FI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_TOTAL_FI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n </div>\n <div class="col-md-4">\n <!-- <div class="portlet light bordered">\n <div class="portlet-body"> -->\n <canvas class="chart chart-pie" chart-data="charts.interactions.values" chart-labels="charts.interactions.labels" chart-colours="charts.interactions.colours" chart-legend="true">\n </canvas>\n <!-- </div>\n </div> -->\n </div>\n </div>\n <legend>\n <span class="caption-subject"> </span><small class="pull-right font-grey-cascade">{{ \'APPLICATION_TODAY_STATS\' | translate }}</small>\n </legend>\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat red-intense">\n <div class="visual">\n <i class="icon-dislike"></i>\n </div>\n <div class="details">\n <div class="number">\n {{routingStats.timeout || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_TIMEOUT_FA\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_TIMEOUT_FA_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat purple">\n <div class="visual">\n <i class="icon-hourglass"></i>\n </div>\n <div class="details">\n <div class="number">\n {{routingStats.waiting || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_WAITING_FA\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_WAITING_FA_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n </fieldset>\n </div>\n'),a.put("app/dashboard/mail/mail.html",'<div data-ng-switch="Auth.getRole()">\n <div ng-switch-when="agent" data-ng-init="initAgent()">\n <div class="row" style="padding-bottom:10px;">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="table1" name="table1" ui-grid-resize-columns ui-grid-pagination ui-grid-auto-resize class="ui-grid">\n <div class="watermark" data-ng-show="!table1.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n\n <!-- <div class="row" style="padding-bottom:10px;">\n <div class="col-md-12"> -->\n <!-- START TABLE -->\n <!-- <div ui-grid="table2" name="table2" ui-grid-resize-columns ui-grid-auto-resize class="ui-grid">\n <div class="watermark" data-ng-show="!table2.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div> -->\n <!-- END TABLE -->\n <!-- </div>\n </div> -->\n </div>\n <div ng-switch-default data-ng-init="initRoomStats();initRoutingStats();initSocketListening();">\n <fieldset>\n <legend>\n <span class="caption-subject"> </span><small class="pull-right font-grey-cascade">{{ \'APPLICATION_INTERACTION_STATS\' | translate }}</small>\n </legend>\n <div class="row">\n <div class="col-md-8">\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat green-haze">\n <div class="visual">\n <i class="fa fa-play"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.new || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_NEW_EI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_NEW_EI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat blue-madison">\n <div class="visual">\n <i class="icon-bell"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.open || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_OPEN_EI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_OPEN_EI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat green">\n <div class="visual">\n <i class="icon-options"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.pending || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_PENDING_EI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_PENDING_EI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat purple-plum">\n <div class="visual">\n <i class="icon-like"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.closed || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_CLOSED_EI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_CLOSED_EI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">\n <div class="dashboard-stat yellow-casablanca">\n <div class="visual">\n <i class="icon-calculator"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.new+roomStatus.open+roomStatus.pending+roomStatus.closed || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_TOTAL_EI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_TOTAL_EI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n </div>\n <div class="col-md-4">\n <!-- <div class="portlet light bordered">\n <div class="portlet-body"> -->\n <canvas class="chart chart-pie" chart-data="charts.interactions.values" chart-labels="charts.interactions.labels" chart-colours="charts.interactions.colours" chart-legend="true">\n </canvas>\n <!-- </div>\n </div> -->\n </div>\n </div>\n <legend>\n <span class="caption-subject"> </span><small class="pull-right font-grey-cascade">{{ \'APPLICATION_TODAY_STATS\' | translate }}</small>\n </legend>\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat red-intense">\n <div class="visual">\n <i class="icon-dislike"></i>\n </div>\n <div class="details">\n <div class="number">\n {{routingStats.timeout || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_TIMEOUT_EA\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_TIMEOUT_EA_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat purple">\n <div class="visual">\n <i class="icon-hourglass"></i>\n </div>\n <div class="details">\n <div class="number">\n {{routingStats.waiting || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_WAITING_EA\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_WAITING_EA_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n </fieldset>\n </div>\n'),a.put("app/dashboard/openchannel/openchannel.html",'<div data-ng-switch="Auth.getRole()">\n <div ng-switch-when="agent" data-ng-init="initAgent()">\n <div class="row" style="padding-bottom:10px;">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="table1" name="table1" ui-grid-resize-columns ui-grid-pagination ui-grid-auto-resize class="ui-grid">\n <div class="watermark" data-ng-show="!table1.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n\n <!-- <div class="row" style="padding-bottom:10px;">\n <div class="col-md-12"> -->\n <!-- START TABLE -->\n <!-- <div ui-grid="table2" name="table2" ui-grid-resize-columns ui-grid-auto-resize class="ui-grid">\n <div class="watermark" data-ng-show="!table2.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div> -->\n <!-- END TABLE -->\n <!-- </div>\n </div> -->\n </div>\n <div ng-switch-default data-ng-init="initRoomStats();initRoutingStats();initSocketListening();">\n <fieldset>\n <legend>\n <span class="caption-subject"> </span><small class="pull-right font-grey-cascade">{{ \'APPLICATION_INTERACTION_STATS\' | translate }}</small>\n </legend>\n <div class="row">\n <div class="col-md-8">\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat green-haze">\n <div class="visual">\n <i class="fa fa-play"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.new || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_NEW_OI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_NEW_OI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat blue-madison">\n <div class="visual">\n <i class="icon-bell"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.open || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_OPEN_OI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_OPEN_OI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat green">\n <div class="visual">\n <i class="icon-options"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.pending || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_PENDING_OI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_PENDING_OI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat purple-plum">\n <div class="visual">\n <i class="icon-like"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.closed || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_CLOSED_OI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_CLOSED_OI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">\n <div class="dashboard-stat yellow-casablanca">\n <div class="visual">\n <i class="icon-calculator"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.new+roomStatus.open+roomStatus.pending+roomStatus.closed || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_TOTAL_OI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_TOTAL_OI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n </div>\n <div class="col-md-4">\n <!-- <div class="portlet light bordered">\n <div class="portlet-body"> -->\n <canvas class="chart chart-pie" chart-data="charts.interactions.values" chart-labels="charts.interactions.labels" chart-colours="charts.interactions.colours" chart-legend="true">\n </canvas>\n <!-- </div>\n </div> -->\n </div>\n </div>\n <legend>\n <span class="caption-subject"> </span><small class="pull-right font-grey-cascade">{{ \'APPLICATION_TODAY_STATS\' | translate }}</small>\n </legend>\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat red-intense">\n <div class="visual">\n <i class="icon-dislike"></i>\n </div>\n <div class="details">\n <div class="number">\n {{routingStats.timeout || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_TIMEOUT_OA\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_TIMEOUT_OA_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat purple">\n <div class="visual">\n <i class="icon-hourglass"></i>\n </div>\n <div class="details">\n <div class="number">\n {{routingStats.waiting || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_WAITING_OA\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_WAITING_OA_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n </fieldset>\n </div>\n'),a.put("app/dashboard/sms/sms.html",'<div data-ng-switch="Auth.getRole()">\n <div ng-switch-when="agent" data-ng-init="initAgent()">\n <div class="row" style="padding-bottom:10px;">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="table1" name="table1" ui-grid-resize-columns ui-grid-pagination ui-grid-auto-resize class="ui-grid">\n <div class="watermark" data-ng-show="!table1.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n\n <!-- <div class="row" style="padding-bottom:10px;">\n <div class="col-md-12"> -->\n <!-- START TABLE -->\n <!-- <div ui-grid="table2" name="table2" ui-grid-resize-columns ui-grid-auto-resize class="ui-grid">\n <div class="watermark" data-ng-show="!table2.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div> -->\n <!-- END TABLE -->\n <!-- </div>\n </div> -->\n </div>\n <div ng-switch-default data-ng-init="initRoomStats();initRoutingStats();initSocketListening();">\n <fieldset>\n <legend>\n <span class="caption-subject"> </span><small class="pull-right font-grey-cascade">{{ \'APPLICATION_INTERACTION_STATS\' | translate }}</small>\n </legend>\n <div class="row">\n <div class="col-md-8">\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat green-haze">\n <div class="visual">\n <i class="fa fa-play"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.new || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_NEW_SI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_NEW_SI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat blue-madison">\n <div class="visual">\n <i class="icon-bell"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.open || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_OPEN_SI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_OPEN_SI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat green">\n <div class="visual">\n <i class="icon-options"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.pending || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_PENDING_SI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_PENDING_SI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat purple-plum">\n <div class="visual">\n <i class="icon-like"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.closed || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_CLOSED_SI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_CLOSED_SI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">\n <div class="dashboard-stat yellow-casablanca">\n <div class="visual">\n <i class="icon-calculator"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.new+roomStatus.open+roomStatus.pending+roomStatus.closed || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_TOTAL_SI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_TOTAL_SI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n </div>\n <div class="col-md-4">\n <!-- <div class="portlet light bordered">\n <div class="portlet-body"> -->\n <canvas class="chart chart-pie" chart-data="charts.interactions.values" chart-labels="charts.interactions.labels" chart-colours="charts.interactions.colours" chart-legend="true">\n </canvas>\n <!-- </div>\n </div> -->\n </div>\n </div>\n <legend>\n <span class="caption-subject"> </span><small class="pull-right font-grey-cascade">{{ \'APPLICATION_TODAY_STATS\' | translate }}</small>\n </legend>\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat red-intense">\n <div class="visual">\n <i class="icon-dislike"></i>\n </div>\n <div class="details">\n <div class="number">\n {{routingStats.timeout || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_TIMEOUT_SA\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_TIMEOUT_SA_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat purple">\n <div class="visual">\n <i class="icon-hourglass"></i>\n </div>\n <div class="details">\n <div class="number">\n {{routingStats.waiting || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_WAITING_SA\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_WAITING_SA_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n </fieldset>\n </div>\n'), +a.put("app/dashboard/voice/voice.html",'<div data-ng-switch="Auth.getRole()">\n <div ng-switch-when="agent" data-ng-init="initAgent()">\n <div class="portlet light">\n <div class="portlet-body">\n <!-- START TABLE -->\n <div data-ng-if="table1" ui-grid="table1" name="table1" ui-grid-resize-columns ui-grid-pagination ui-grid-auto-resize class="ui-grid">\n <div class="watermark" data-ng-show="!table1.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_a" data-toggle="tab">{{\'APPLICATION_WAITING\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_b" data-toggle="tab">{{\'APPLICATION_ABANDONED\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body" data-ng-init="initView()">\n <div class="tab-content">\n <div class="tab-pane active" id="tab_1_a">\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_SHOW_TIMERS\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="showTimers"\n type="checkbox"\n name="showTimers"\n switch-active="{{ timerSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ timerSwitch.onColor }}"\n switch-off-color="{{ timerSwitch.offColor }}"\n switch-animate="{{ timerSwitch.animate }}"\n switch-size="{{ timerSwitch.size }}"\n switch-label="{{ timerSwitch.label }}"\n switch-icon="{{ timerSwitch.icon }}"\n switch-radio-off="{{ timerSwitch.radioOff }}"\n switch-label-width="{{ timerSwitch.labelWidth }}"\n switch-handle-width="{{ timerSwitch.handleWidth }}">\n </div>\n <!-- START TABLE -->\n <div data-ng-if="table2" ui-grid="table2" name="table2" ui-grid-resize-columns ui-grid-pagination ui-grid-auto-resize class="ui-grid">\n <div class="watermark" data-ng-show="!table2.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n <div class="tab-pane" id="tab_1_b">\n <!-- START TABLE -->\n <div data-ng-if="table3" ui-grid="table3" name="table3" ui-grid-resize-columns ui-grid-pagination ui-grid-auto-resize class="ui-grid">\n <div class="watermark" data-ng-show="!table3.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n </div>\n </div>\n <div ng-switch-default data-ng-init="initUser()">\n <fieldset>\n <legend>\n <span class="caption-subject">{{ \'APPLICATION_INBOUND\' | translate }}</span><small class="font-grey-cascade pull-right">{{ \'APPLICATION_TODAY_STATS\' | translate }}</small>\n </legend>\n\n <div class="row">\n <div class="col-lg-3 col-md-3 col-sm-6 col-xs-12">\n <div class="dashboard-stat blue">\n <div class="visual">\n <i class="icon-bell"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ voice.queues.waiting || 0 }}\n </div>\n <div class="desc">\n {{\'APPLICATION_WAITING_QC\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_WAITING_QC_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-3 col-md-3 col-sm-6 col-xs-12">\n <div class="dashboard-stat grey-gallery">\n <div class="visual">\n <i class="fa fa-play"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ voice.queues.active || 0 }}\n </div>\n <div class="desc">\n {{\'APPLICATION_ACTIVE_QC\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_ACTIVE_QC_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-3 col-md-3 col-sm-6 col-xs-12">\n <div class="dashboard-stat green-jungle">\n <div class="visual">\n <i class="icon-like"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ voice.queues.complete || 0 }}\n </div>\n <div class="desc">\n {{\'APPLICATION_ANSWERED_QC\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_ANSWERED_QC_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-3 col-md-3 col-sm-6 col-xs-12">\n <div class="dashboard-stat red-thunderbird">\n <div class="visual">\n <i class="icon-dislike"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ voice.queues.abandon || 0 }}\n </div>\n <div class="desc">\n {{\'APPLICATION_ABANDONED_QC\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_ABANDONED_QC_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n\n <div class="row">\n <div class="col-lg-3 col-md-3 col-sm-6 col-xs-12">\n <div class="dashboard-stat yellow-gold">\n <div class="visual">\n <i class="icon-clock"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ voice.queues.complete ? (voice.queues.holdtime / voice.queues.complete) : 0 | secToTime | date:\'HH:mm:ss\' }}\n </div>\n <div class="desc">\n {{\'APPLICATION_AVG_ANSWER_TIME_QC\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_AVG_ANSWER_TIME_QC_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-3 col-md-3 col-sm-6 col-xs-12">\n <div class="dashboard-stat purple">\n <div class="visual">\n <i class="icon-clock"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ voice.queues.complete ? (voice.queues.talktime / voice.queues.complete) : 0 | secToTime | date:\'HH:mm:ss\' }}\n </div>\n <div class="desc">\n {{\'APPLICATION_AVG_TALK_TIME_QC\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_AVG_TALK_TIME_QC_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-3 col-md-3 col-sm-6 col-xs-12">\n <div class="dashboard-stat green-jungle">\n <div class="visual">\n <i class="icon-pie-chart"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ (voice.queues.complete / (voice.queues.complete + voice.queues.abandon) * 100) || 0 | number:2}}\n </div>\n <div class="desc">\n {{\'APPLICATION_ANSWER_RATE_QC\' | translate}} (%)\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_ANSWER_RATE_QC_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-3 col-md-3 col-sm-6 col-xs-12">\n <div class="dashboard-stat red-thunderbird">\n <div class="visual">\n <i class="icon-pie-chart"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ (voice.queues.abandon / (voice.queues.complete + voice.queues.abandon) * 100) || 0 | number:2}}\n </div>\n <div class="desc">\n {{\'APPLICATION_ABANDON_RATE_QC\' | translate}} (%)\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_ABANDON_RATE_QC_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">\n <div class="dashboard-stat blue">\n <div class="visual">\n <i class="icon-info"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ voice.queues.complete + voice.queues.abandon || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_TOTAL_OFFERED_QC\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_TOTAL_OFFERED_QC_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">\n <div class="dashboard-stat red-thunderbird">\n <div class="visual">\n <i class="icon-info"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ voice.queues.unmanaged || 0 }}\n </div>\n <div class="desc">\n {{\'APPLICATION_UNMANAGED_QC\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_UNMANAGED_QC_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n </fieldset>\n\n <fieldset>\n <legend>\n <span class="caption-subject">{{ \'APPLICATION_OUTBOUND\' | translate }}</span><small class="pull-right font-grey-cascade">{{ \'APPLICATION_TODAY_STATS\' | translate }}</small>\n </legend>\n\n <div class="row">\n <div class="col-lg-3 col-md-3 col-sm-6 col-xs-12">\n <div class="dashboard-stat green-haze">\n <div class="visual">\n <i class="icon-call-out"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ voice.outbound.total || 0 }}\n </div>\n <div class="desc">\n {{\'APPLICATION_MANUAL_OUTBOUND_OB\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_MANUAL_OUTBOUND_OB_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-3 col-md-3 col-sm-6 col-xs-12">\n <div class="dashboard-stat grey-gallery">\n <div class="visual">\n <i class="icon-clock"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ (voice.outbound.sumDuration || 0) | secToTime | date:\'HH:mm:ss\' }}\n </div>\n <div class="desc">\n {{\'APPLICATION_GLOBAL_DURATION_OB\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_GLOBAL_DURATION_OB_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-3 col-md-3 col-sm-6 col-xs-12">\n <div class="dashboard-stat green-jungle">\n <div class="visual">\n <i class="icon-like"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ voice.outbound.answered || 0 }}\n </div>\n <div class="desc">\n {{\'APPLICATION_ANSWERED_OB\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_ANSWERED_OB_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-3 col-md-3 col-sm-6 col-xs-12">\n <div class="dashboard-stat yellow-gold">\n <div class="visual">\n <i class="icon-pie-chart"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ (voice.outbound.avgDuration || 0) | secToTime | date:\'HH:mm:ss\' }}\n </div>\n <div class="desc">\n {{\'APPLICATION_AVG_DURATION_OB\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_AVG_DURATION_OB_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">\n <div class="dashboard-stat blue">\n <div class="visual">\n <i class="icon-pie-chart"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ (voice.outbound.answerRate || 0) | number:2 }}\n </div>\n <div class="desc">\n {{\'APPLICATION_ANSWER_RATE_OB\' | translate}} (%)\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_ANSWER_RATE_OB_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">\n <div class="dashboard-stat purple">\n <div class="visual">\n <i class="icon-pie-chart"></i>\n </div>\n <div class="details">\n <div class="number">\n {{(voice.outbound.tigerdial || 0)}}\n </div>\n <div class="desc">\n {{\'APPLICATION_MOTION_DIALER_CALLS_OB\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_MOTION_DIALER_CALLS_OB_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n\n </fieldset>\n </div>\n</div>\n'),a.put("app/desk/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-handbag"></i>\n <a href="/desk/list">{{ \'APPLICATION_DESK_COM\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-handbag font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_DESK_COM\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="accounts.checked.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/desk/wizard">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ACCOUNT\' | translate }}\n </a>\n </div>\n <a class="btn btn-icon-only btn-default" href="#" ng-csv="getAccounts([\'name\',\'username\',\'remoteUri\',\'authType\',\'consumerKey\',\'consumerSecret\',\'token\',\'tokenSecret\',\'password\'])" csv-header="[\'Name\', \'Username\', \'Remote Address\', \'Authentication Type\', \'Consumer Key\', \'Consumer Secret\', \'Token\', \'Token Secret\', \'Password\']" field-separator=";" filename="desk_accounts.csv">\n <i class="icon-cloud-download"></i></a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <table st-table="displayedDeskAccounts" st-pipe="initList" class="table table-striped table-bordered table-hover">\n <div class="table-responsive">\n <thead>\n <tr>\n <th colspan="7">\n <div class="row">\n <div class="col-md-6">\n <ui-select class="input-xsmall" ng-model="conf.accountsByPage" theme="bootstrap" ng-disabled="disabled">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="accountByPage in accountsByPage | filter: $select.search">\n <div ng-bind-html="accountByPage.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-6">\n <div class="input-group input-medium pull-right">\n <input st-search placeholder="{{ \'APPLICATION_SEARCH\' | translate }}" class="form-control" type="search" />\n <span class="input-group-addon">\n <i class="fa fa-search"></i>\n </span>\n </div>\n </div>\n </div>\n </th>\n </tr>\n <tr>\n <th class="small-cells" style="text-align: center; vertical-align: middle"><input type="checkbox" ng-change="check(account, checked)" checklist-model checklist-value="id"></th>\n <th st-sort="name">{{ \'APPLICATION_NAME\' | translate }}</th>\n <th st-sort="username">{{ \'APPLICATION_EMAIL\' | translate }}</th>\n <th st-sort="remoteUri">{{ \'APPLICATION_REMOTE_ADDRESS\' | translate }}</th>\n <th>{{ \'APPLICATION_DESCRIPTION\' | translate }}</th>\n <th>{{ \'APPLICATION_ACTIONS\' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n <tr data-ng-repeat="account in displayedDeskAccounts" class="animate-repeat">\n <td style="text-align: center; vertical-align: middle"><input type="checkbox" checklist-model="accounts.checked" checklist-value="account.id"></td>\n <td>{{account.name}}</td>\n <td>{{account.username}}</td>\n <td>{{account.remoteUri}}</td>\n <td>{{account.description}}</td>\n <td>\n <a class="btn default btn-xs blue-stripe" data-ng-href="/desk/view/{{account.id}}/account">\n {{ \'APPLICATION_EDIT\' | translate }}\n </a>\n <a class="btn default btn-xs green-stripe" data-ng-click="checkAccount(account.id)">\n {{ \'APPLICATION_CHECK\' | translate }}\n </a>\n <a class="btn default btn-xs red-stripe" data-ng-click="deleteItem(account.name,account.id)">\n {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </td>\n </tr>\n <tr data-ng-hide="displayedDeskAccounts.length">\n <td colspan="7" style="text-align:center;">\n <i>No account available</i>\n </td>\n </tr>\n </tbody>\n <tfoot>\n <tr>\n <td/>\n <td>\n <div class="input-icon right">\n <i class="fa fa-search"></i>\n <input st-search="name" placeholder="{{ \'APPLICATION_SEARCH\' | translate }} {{ \'APPLICATION_BY\' | translate | lowercase }} {{ \'APPLICATION_NAME\' | translate | lowercase}}" class="form-control" type="search"/>\n </div>\n </td>\n <td>\n <div class="input-icon right">\n <i class="fa fa-search"></i>\n <input st-search="email" placeholder="{{ \'APPLICATION_SEARCH\' | translate }} {{ \'APPLICATION_BY\' | translate | lowercase }} {{ \'APPLICATION_EMAIL\' | translate | lowercase}}" class="form-control" type="search"/>\n </div>\n </td>\n <td>\n <div class="input-icon right">\n <i class="fa fa-search"></i>\n <input st-search="remoteUri" placeholder="{{ \'APPLICATION_SEARCH\' | translate }} {{ \'APPLICATION_BY\' | translate | lowercase }} {{ \'APPLICATION_REMOTE_ADDRESS\' | translate | lowercase}}" class="form-control" type="search"/>\n </div>\n </td>\n <td/>\n <td/>\n </tr>\n <tr>\n <td colspan="7" class="text-center">\n <div class="pagination" st-pagination st-items-by-page="conf.accountsByPage.value" st-displayed-pages="7"></div>\n </td>\n </tr>\n </tfoot>\n </div>\n </table>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/desk/view/view.account.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACCOUNT\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERALS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.formSetting" data-ng-submit="forms.formSetting.$valid && updateItem()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.name" required/>\n <span data-ng-show="forms.formSetting.name.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="account.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="account.username" required/>\n <span data-ng-show="forms.formSetting.username.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START REMOTE ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.remoteUri.$invalid}">\n <label class="control-label">{{\'APPLICATION_REMOTE_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remoteUri" placeholder="{{\'APPLICATION_REMOTE_ADDRESS\' | translate}}" class="form-control" data-ng-model="account.remoteUri" required />\n <span data-ng-show="forms.formSetting.remoteUri.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START AUTH TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.authType.$invalid}">\n <label class="control-label">{{\'APPLICATION_AUTHENTICATION_TYPE\' | translate}}</label>\n <ui-select data-ng-model="account.authType" name="authType" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_AUTHENTICATION_TYPE\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="type in [\'basic\', \'oauth\'] | filter: $select.search">\n <div data-ng-bind="type | capitalize | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.formSetting.authType.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START AUTH TYPE -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.password.$invalid}" ng-slide-down="account.authType == \'basic\'" lazy-render duration="1">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="account.password" required/>\n <span data-ng-show="forms.formSetting.password.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START CONSUMER KEY -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.consumerKey.$invalid}" ng-slide-down="account.authType == \'oauth\'" lazy-render duration="1">\n <label class="control-label">{{\'APPLICATION_CONSUMER_KEY\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="consumerKey" placeholder="{{\'APPLICATION_CONSUMER_KEY\' | translate}}" class="form-control" data-ng-model="account.consumerKey" required/>\n <span data-ng-show="forms.formSetting.consumerKey.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONSUMER KEY -->\n\n <!-- START CONSUMER SECRET -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.consumerSecret.$invalid}" ng-slide-down="account.authType == \'oauth\'" lazy-render duration="1">\n <label class="control-label">{{\'APPLICATION_CONSUMER_SECRET\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="consumerSecret" placeholder="{{\'APPLICATION_CONSUMER_SECRET\' | translate}}" class="form-control" data-ng-model="account.consumerSecret" required/>\n <span data-ng-show="forms.formSetting.consumerSecret.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONSUMER SECRET -->\n\n <!-- START TOKEN -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.token.$invalid}" ng-slide-down="account.authType == \'oauth\'" lazy-render duration="1">\n <label class="control-label">{{\'APPLICATION_TOKEN\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="token" placeholder="{{\'APPLICATION_TOKEN\' | translate}}" class="form-control" data-ng-model="account.token" required/>\n <span data-ng-show="forms.formSetting.token.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TOKEN -->\n\n <!-- START TOKEN SECRET-->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.tokenSecret.$invalid}" ng-slide-down="account.authType == \'oauth\'" lazy-render duration="1">\n <label class="control-label">{{\'APPLICATION_TOKEN_SECRET\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="tokenSecret" placeholder="{{\'APPLICATION_TOKEN_SECRET\' | translate}}" class="form-control" data-ng-model="account.tokenSecret" required/>\n <span data-ng-show="forms.formSetting.tokenSecret.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TOKEN SECRET-->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/desk/view/view.configuration.html",'<div class="row" data-ng-init="initConfiguration()">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_CONFIGURATION\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createConfiguration()">\n <wz-step title="{{\'APPLICATION_SETTINGS\' | translate}}" canexit="formValidation(formsConfiguration.info.$valid)">\n <form name="formsConfiguration.info" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': formsConfiguration.info.$submitted && formsConfiguration.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="configuration.name" required/>\n <span data-ng-show="formsConfiguration.info.name.$invalid && formsConfiguration.info.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="configuration.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" data-ng-click="goNext()"/>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), +a.put("app/desk/view/view.configurationSettings.html",'<div class="row" data-ng-init="getConfiguration();getVariables();getFields();">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_CONFIGURATION\' | translate}}: {{configurationName}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_SUBJECT\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_DESCRIPTION\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{\'APPLICATION_FIELDS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- SUBJECT TAB -->\n <div class="tab-pane ui-padding active" id="tab_1_1">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">All following fields will be join by blank space:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItemSubject()"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="subjectItem in subjectConfig">\n <div class="col-md-3">\n <ui-select ng-model="subjectItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeType(subjectItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in fieldType | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search | capitalize"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-8" data-ng-if="subjectItem.type==\'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="subjectItem.content" data-ng-change="updateField(subjectItem)">\n </div>\n </div>\n <div class="col-md-8" data-ng-if="subjectItem.type==\'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="subjectItem.VariableId" data-ng-change="updateField(subjectItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(subjectItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END SUBJECT TAB -->\n <!-- DESCRIPTION TAB -->\n <div class="tab-pane ui-padding" id="tab_1_2">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">All following fields will be join by new line:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItemDescription()"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="descriptionItem in descriptionConfig">\n <!-- <pre>\n {{descriptionItem|json}}\n </pre> -->\n <div class="col-md-2">\n <ui-select ng-model="descriptionItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeDescType(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected | ucfirst}}</ui-select-match>\n <ui-select-choices repeat="item in descFieldType | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search | ucfirst"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-9" data-ng-if="descriptionItem.type==\'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="descriptionItem.content" data-ng-change="updateField(descriptionItem)">\n </div>\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'key_value\'">\n <input type="text" class="form-control" placeholder="Key" data-ng-model="descriptionItem.key" data-ng-change="updateField(descriptionItem)">\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'key_value\'">\n <ui-select ng-model="descriptionItem.keyType" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeDescType(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in fieldType | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search | capitalize"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'key_value\' && descriptionItem.keyType==\'string\'">\n <input type="text" class="form-control" placeholder="Value" data-ng-model="descriptionItem.keyContent" data-ng-change="updateField(descriptionItem)">\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'key_value\' && descriptionItem.keyType==\'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="descriptionItem.VariableId" data-ng-change="updateField(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(descriptionItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END DESCRIPTION TAB -->\n <!-- FIELDS TAB -->\n <div class="tab-pane ui-padding" id="tab_1_3">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">Add how to fill the fields present in your account:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItemField()"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="fieldItem in fieldConfig">\n <div class="col-md-3">\n <ui-select ng-model="fieldItem.idField" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeFieldType(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.label}}</ui-select-match>\n <ui-select-choices repeat="item.id as item in accountFields | filter: $select.search">\n <div ng-bind-html="item.label | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-8" data-ng-if="getSystemFieldOptions(fieldItem.idField)">\n <div class="form-group">\n <ui-select ng-model="fieldItem.content" theme="bootstrap" ng-disabled="disabled" data-ng-change="updateField(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="item in getSystemFieldOptions(fieldItem.idField) | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField)">\n <div class="form-group">\n <ui-select ng-model="fieldItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeType(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected | ucfirst}}</ui-select-match>\n <ui-select-choices repeat="item in fieldType | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search | ucfirst"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="fieldItem.content" data-ng-change="updateField(fieldItem)">\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="fieldItem.VariableId" data-ng-change="updateField(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(fieldItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END FIELDS TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/desk/view/view.configurations.html",'<div ui-view class="profile-content">\n <div class="row" data-ng-init="getConfigurations()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_CONFIGURATIONS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group">\n <a class="btn green-jungle " href="/desk/view/{{account.id}}/configuration" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_CONFIGURATION\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <table class="table table-striped table-bordered table-hover">\n <thead>\n <tr>\n <th>{{\'APPLICATION_NAME\' | translate}}</th>\n <th>{{\'APPLICATION_DESCRIPTION\' | translate}}</th>\n <th>{{ \'APPLICATION_ACTIONS\' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n <tr data-ng-repeat="configuration in configurations">\n <td>{{configuration.name}}</td>\n <td>{{configuration.description}}</td>\n <td>\n <a class="btn default btn-xs blue-stripe" data-ng-href="/desk/view/{{account.id}}/configurations/settings/{{configuration.id}}">\n {{ \'APPLICATION_SETTINGS\' | translate}}\n </a>\n <a class="btn default btn-xs red-stripe" data-ng-click="deleteConfiguration(configuration.name,configuration.id)">\n {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </td>\n </tr>\n <tr data-ng-hide="configurations.length">\n <td colspan="5" style="text-align:center;">\n <i>No configuration available</i>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/desk/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-handbag"></i>\n <a href="/desk/list">{{ \'APPLICATION_DESK_COM\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <a href="#">{{account.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img src="assets/images/media/desk.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{account.name}}\n </div>\n <div class="profile-usertitle-job">\n {{account.remoteUri}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.desk.view.account\')}">\n <a ng-href="/desk/view/{{account.id}}/account">\n <i class="icon-user"></i>\n {{ \'APPLICATION_ACCOUNT\' | translate }} </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.desk.view.configurations\') || $state.is(\'main.desk.view.configuration\')}">\n <a ng-href="/desk/view/{{account.id}}/configurations">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_CONFIGURATIONS\' | translate }} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/desk/wizard/wizard.html",'<!-- BEGIN PAGE HEADER-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-handbag"></i>\n <a href="/desk/list">{{ \'APPLICATION_DESK_COM\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n<!-- END PAGE HEADER-->\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initWizard()">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACCOUNT\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_ACCOUNT_INFO\' | translate}}" canexit="exitValidation(forms.formSetting.$valid)">\n <form name="forms.formSetting" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="forms.formSetting.name.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.username" required ng-remote-validate="/api/desk/accounts/validate/username"/>\n <span data-ng-show="forms.formSetting.username.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formSetting.username.$touched || forms.formSetting.$submitted) && forms.formSetting.username.$error.ngRemoteValidate" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_EXIST_USERNAME\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n\n <!-- START REMOTE ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.remoteUri.$invalid}">\n <label class="control-label">{{\'APPLICATION_REMOTE_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remoteUri" placeholder="{{\'APPLICATION_REMOTE_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.remoteUri" required ng-remote-validate="/api/desk/accounts/validate/remoteUri"/>\n <span data-ng-show="forms.formSetting.remoteUri.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formSetting.remoteUri.$touched || forms.formSetting.$submitted) && forms.formSetting.remoteUri.$error.ngRemoteValidate" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_EXIST_DOMAIN\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START AUTH TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.authType.$invalid}">\n <label class="control-label">{{\'APPLICATION_AUTHENTICATION_TYPE\' | translate}}</label>\n <ui-select data-ng-model="item.authType" name="authType" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_AUTHENTICATION_TYPE\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="type in [\'basic\', \'oauth\'] | filter: $select.search">\n <div data-ng-bind="type | capitalize | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.formSetting.authType.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START AUTH TYPE -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.password.$invalid}" ng-slide-down="item.authType == \'basic\'" lazy-render duration="1">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.password" required/>\n <span data-ng-show="forms.formSetting.password.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START CONSUMER KEY -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.consumerKey.$invalid}" ng-slide-down="item.authType == \'oauth\'" lazy-render duration="1">\n <label class="control-label">{{\'APPLICATION_CONSUMER_KEY\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="consumerKey" placeholder="{{\'APPLICATION_CONSUMER_KEY\' | translate}}" class="form-control" data-ng-model="item.consumerKey" required/>\n <span data-ng-show="forms.formSetting.consumerKey.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONSUMER KEY -->\n\n <!-- START CONSUMER SECRET -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.consumerSecret.$invalid}" ng-slide-down="item.authType == \'oauth\'" lazy-render duration="1">\n <label class="control-label">{{\'APPLICATION_CONSUMER_SECRET\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="consumerSecret" placeholder="{{\'APPLICATION_CONSUMER_SECRET\' | translate}}" class="form-control" data-ng-model="item.consumerSecret" required/>\n <span data-ng-show="forms.formSetting.consumerSecret.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONSUMER SECRET -->\n\n <!-- START TOKEN -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.token.$invalid}" ng-slide-down="item.authType == \'oauth\'" lazy-render duration="1">\n <label class="control-label">{{\'APPLICATION_TOKEN\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="token" placeholder="{{\'APPLICATION_TOKEN\' | translate}}" class="form-control" data-ng-model="item.token" required/>\n <span data-ng-show="forms.formSetting.token.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TOKEN -->\n\n <!-- START TOKEN SECRET-->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.tokenSecret.$invalid}" ng-slide-down="item.authType == \'oauth\'" lazy-render duration="1">\n <label class="control-label">{{\'APPLICATION_TOKEN_SECRET\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="tokenSecret" placeholder="{{\'APPLICATION_TOKEN_SECRET\' | translate}}" class="form-control" data-ng-model="item.tokenSecret" required/>\n <span data-ng-show="forms.formSetting.tokenSecret.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TOKEN SECRET-->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" data-ng-click="next()"/>\n\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n\n </wizard>\n\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/freshdesk/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-handbag"></i>\n <a href="/freshdesk/list">{{ \'APPLICATION_FRESHDESK\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-handbag font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_FRESHDESK\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/freshdesk/wizard">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ACCOUNT\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/freshdesk/view/configuration/list/create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_CONFIGURATION\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.name.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.name.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START CHANNEL -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.channel.$touched || form.channel.$submitted) && form.channel.$invalid}">\n <label class="control-label">{{\'APPLICATION_CHANNEL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.channel" name="channel" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_CHANNEL\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="channel.value as channel in channels | filter: $select.search">\n <div data-ng-bind="channel.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.channel.$touched || form.channel.$submitted) && form.channel.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START CHANNEL -->\n\n <!-- START VOICE SUBTYPE -->\n <div data-ng-if="item.channel===\'voice\'" class="form-group" data-ng-class="{\'has-error\': (form.channel.$touched || form.channel.$submitted) && form.channel.$invalid}">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.type" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_TYPE\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="type in [\'Queue\',\'Outbound\'] | filter: $select.search">\n <div data-ng-bind="type | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.type.$touched || form.type.$submitted) && form.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START CHANNEL -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'), +a.put("app/freshdesk/view/configuration/list/list.html",'<div ui-view class="profile-content">\n <div class="row">\n <div class="col-md-12">\n <div class="portlet light" data-ng-init="initView()">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_CONFIGURATIONS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="#" data-ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_CONFIGURATION\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/freshdesk/view/configuration/view/view.html",'<div class="row" data-ng-init="initView();getConfiguration();getCustomVariables();getFields();getTags();">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_CONFIGURATION\' | translate}}: {{configurationName}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_SUBJECT\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_DESCRIPTION\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{\'APPLICATION_FIELDS\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_4" data-toggle="tab">{{\'APPLICATION_TAGS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- SUBJECT TAB -->\n <div class="tab-pane ui-padding active" id="tab_1_1">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">All following fields will be join by blank space:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItem(\'subject\')"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div id="subject-item-list" ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="subjectItem in subjectConfig">\n <div class="col-md-3">\n <ui-select ng-model="subjectItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeType(subjectItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in fieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-8" data-ng-if="subjectItem.type==\'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="subjectItem.content" data-ng-change="updateField(subjectItem)">\n </div>\n </div>\n <div class="col-md-8" data-ng-if="subjectItem.type==\'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="subjectItem.variableName" data-ng-change="updateField(subjectItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices group-by="groupVariableByGroup" repeat="variable.name as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-8" data-ng-if="subjectItem.type==\'customVariable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="subjectItem.VariableId" data-ng-change="updateField(subjectItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in customVariables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(subjectItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END SUBJECT TAB -->\n <!-- DESCRIPTION TAB -->\n <div class="tab-pane ui-padding" id="tab_1_2">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">All following fields will be join by new line:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItem(\'description\')"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div id="description-item-list" ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="descriptionItem in descriptionConfig">\n <div class="col-md-2">\n <ui-select ng-model="descriptionItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeDescType(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in descFieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-9" data-ng-if="descriptionItem.type==\'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="descriptionItem.content" data-ng-change="updateField(descriptionItem)">\n </div>\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\'">\n <input type="text" class="form-control" placeholder="Key" data-ng-model="descriptionItem.key" data-ng-change="updateField(descriptionItem)">\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\'">\n <ui-select ng-model="descriptionItem.keyType" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeDescType(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in fieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\' && descriptionItem.keyType==\'string\'">\n <input type="text" class="form-control" placeholder="Value" data-ng-model="descriptionItem.keyContent" data-ng-change="updateField(descriptionItem)">\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\' && descriptionItem.keyType==\'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="descriptionItem.variableName" data-ng-change="updateField(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices group-by="groupVariableByGroup" repeat="variable.name as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\' && descriptionItem.keyType==\'customVariable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="descriptionItem.VariableId" data-ng-change="updateField(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in customVariables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(descriptionItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END DESCRIPTION TAB -->\n <!-- FIELDS TAB -->\n <div class="tab-pane ui-padding" id="tab_1_3">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">Add how to fill the fields present in your account:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItem(\'field\')"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div id="field-item-list" ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="fieldItem in fieldConfig">\n <div class="col-md-3">\n <ui-select ng-model="fieldItem.idField" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeFieldType(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.label}}</ui-select-match>\n <ui-select-choices repeat="item.name as item in accountFields | filter: $select.search">\n <div ng-bind-html="item.label | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-8" data-ng-if="getSystemFieldOptions(fieldItem.idField)">\n <div class="form-group">\n <ui-select ng-model="fieldItem.content" theme="bootstrap" ng-disabled="disabled" data-ng-change="updateField(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="item in getSystemFieldOptions(fieldItem.idField) | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField)">\n <div class="form-group">\n <ui-select ng-model="fieldItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeType(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in fieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search | ucfirst"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="fieldItem.content" data-ng-change="updateField(fieldItem)">\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="fieldItem.variableName" data-ng-change="updateField(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices group-by="groupVariableByGroup" repeat="variable.name as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'customVariable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="fieldItem.VariableId" data-ng-change="updateField(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in customVariables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(fieldItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END FIELDS TAB -->\n <!-- TAG TAB -->\n <div class="tab-pane ui-padding" id="tab_1_4">\n <div class="row">\n <div class="col-md-12">\n <span class="caption-subject">Select tags that you want add in the ticket:</span>\n </div>\n </div>\n <hr>\n <form name="forms.tags" data-ng-submit="updateTags()" novalidate>\n <!-- TAG -->\n <div class="form-group">\n <ui-select multiple data-ng-model="selectedTags.tags" theme="bootstrap" name="tags" ng-disabled="disabled">\n <ui-select-match placeholder="{{ \'APPLICATION_TAGS\' | translate }}">{{$item.name}}</ui-select-match>\n <ui-select-choices repeat="tag.id as tag in tags | filter: $select.search">\n {{tag.name}}\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END TAG -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END TAG TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/freshdesk/view/view.account.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACCOUNT\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERALS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.formSetting" data-ng-submit="forms.formSetting.$valid && updateItem()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.name" required/>\n <span data-ng-show="forms.formSetting.name.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="account.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="account.username" required/>\n <span data-ng-show="forms.formSetting.username.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START REMOTE ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.remoteUri.$invalid}">\n <label class="control-label">{{\'APPLICATION_REMOTE_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remoteUri" placeholder="{{\'APPLICATION_REMOTE_ADDRESS\' | translate}}" class="form-control" data-ng-model="account.remoteUri" required />\n <span data-ng-show="forms.formSetting.remoteUri.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START API KEY -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.apiKey.$invalid}">\n <label class="control-label">{{\'APPLICATION_API_KEY\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="apiKey" placeholder="{{\'APPLICATION_API_KEY\' | translate}}" class="form-control" data-ng-model="account.apiKey" required/>\n <span data-ng-show="forms.formSetting.apiKey.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END API KEY -->\n\n <!-- START SERVER URL -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.serverUrl.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}}</label>\n <input type="url" name="serverUrl" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="account.serverUrl"/>\n <span class="help-block">\n {{\'DESCRIPTION_SERVER_URL\' | translate}}.\n </span>\n <span class="help-block help-block-info">\n {{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n </span>\n </div>\n <!-- END SERVER URL -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/freshdesk/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-handbag"></i>\n <a href="/freshdesk/list">{{ \'APPLICATION_FRESHDESK\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <a href="#">{{account.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img src="assets/images/media/freshdesk.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{account.name}}\n </div>\n <div class="profile-usertitle-job">\n {{account.remoteUri}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.freshdesk.view.account\')}">\n <a ng-href="/freshdesk/view/{{account.id}}/account">\n <i class="icon-user"></i>\n {{ \'APPLICATION_ACCOUNT\' | translate }} </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.freshdesk.view.configurations\') || $state.is(\'main.freshdesk.view.configuration\')}">\n <a ng-href="/freshdesk/view/{{account.id}}/configurations/list">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_CONFIGURATIONS\' | translate }} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/freshdesk/wizard/wizard.html",'<!-- BEGIN PAGE HEADER-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-handbag"></i>\n <a href="/freshdesk/list">{{ \'APPLICATION_FRESHDESK\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n<!-- END PAGE HEADER-->\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initWizard()">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACCOUNT\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_ACCOUNT_INFO\' | translate}}" canexit="exitValidation(forms.formSetting.$valid)">\n <form name="forms.formSetting" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="forms.formSetting.name.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="item.username" required ng-remote-validate="/api/freshdesk/accounts/validate/username"/>\n <span data-ng-show="forms.formSetting.username.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formSetting.username.$touched || forms.formSetting.$submitted) && forms.formSetting.username.$error.ngRemoteValidate" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_EXIST_USERNAME\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n\n <!-- START REMOTE ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.remoteUri.$invalid}">\n <label class="control-label">{{\'APPLICATION_REMOTE_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remoteUri" placeholder="{{\'APPLICATION_REMOTE_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.remoteUri" required ng-remote-validate="/api/freshdesk/accounts/validate/remoteUri"/>\n <span data-ng-show="forms.formSetting.remoteUri.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formSetting.remoteUri.$touched || forms.formSetting.$submitted) && forms.formSetting.remoteUri.$error.ngRemoteValidate" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_EXIST_DOMAIN\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START API KEY -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.apiKey.$invalid}">\n <label class="control-label">{{\'APPLICATION_API_KEY\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="apiKey" placeholder="{{\'APPLICATION_API_KEY\' | translate}}" class="form-control" data-ng-model="item.apiKey" required/>\n <span data-ng-show="forms.formSetting.apiKey.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END API KEY -->\n\n <!-- START SERVER URL -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.serverUrl.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}}</label>\n <input type="url" name="serverUrl" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.serverUrl"/>\n <span class="help-block">\n {{\'DESCRIPTION_SERVER_URL\' | translate}}.\n </span>\n <span class="help-block help-block-info">\n {{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n </span>\n </div>\n <!-- END SERVER URL -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" data-ng-click="next()"/>\n\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n\n </wizard>\n\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/iframe/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-chrome"></i>\n <a href="#" data-ng-if="!Auth.isAgent()">{{ \'APPLICATION_IFRAME\' | translate }}</a>\n <a href="#" data-ng-if="Auth.isAgent()">{{ iframe.title || iframe.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar" data-ng-if="!Auth.isAgent()">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img src="assets/images/media/iframe.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{iframe.title}}\n </div>\n <div class="profile-usertitle-job">\n {{ \'APPLICATION_IFRAME\' | translate }}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div class="profile-content" data-ng-if="!Auth.isAgent()">\n <div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_IFRAME\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERALS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.formSetting" data-ng-submit="forms.formSetting.$valid && updateItem()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="iframe.title" required/>\n <span data-ng-show="forms.formSetting.name.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START REMOTE ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.remoteUri.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remoteUri" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="iframe.remoteUri" required />\n <span data-ng-show="forms.formSetting.remoteUri.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}" />\n </form>\n </div>\n <!-- END GENERAL TAB -->\n\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- END PROFILE CONTENT -->\n\n <div class="row" data-ng-if="Auth.isAgent()">\n <div class="col-md-12">\n <iframe ng-if="url" style="height: 600px" src="{{url}}" />\n </div>\n </div>\n\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), +a.put("app/integration/list/list.html",'\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-game-controller"></i>\n <a href="/integrations/list">{{ \'APPLICATION_INTEGRATIONS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initList()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-eye font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_INTEGRATIONS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <span class="btn green-jungle btn-file">\n <span> <i class="icon-plus"></i> New App </span>\n <input type="file" accept=".zip" nv-file-select="" uploader="uploader"/>\n </span>\n <a class="btn btn-icon-only btn-default" href="#" ng-csv="displayedIntegrations" filename="integrations.csv">\n <i class="icon-cloud-download"></i></a>\n <a class="btn btn-icon-only btn-default fullscreen" href="#"></a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <table st-table="displayedIntegrations" st-safe-src="integrations" class="table table-striped table-bordered table-hover">\n <div class="table-responsive">\n <thead>\n <tr>\n <th colspan="6">\n <div class="row">\n <div class="col-md-6">\n <select class="form-control input-small select2me" data-ng-model="integrationsByPage">\n <option value="10">10</option>\n <option value="25">25</option>\n <option value="50">50</option>\n <option value="{{integrations.length}}">{{ \'APPLICATION_ALL\' | translate }}</option>\n </select>\n </div>\n <div class="col-md-6">\n <div class="input-group input-medium pull-right">\n <input st-search placeholder="{{ \'APPLICATION_SEARCH\' | translate }}" class="form-control" type="search" />\n <span class="input-group-addon">\n <i class="fa fa-search"></i>\n </span>\n </div>\n </div>\n </div>\n </th>\n </tr>\n <tr>\n <th st-sort="id" width="5%" st-sort-default="reverse">{{ \'APPLICATION_ID\' | translate }}</th>\n <th st-sort="fullname">{{ \'APPLICATION_NAME\' | translate }}</th>\n <th st-sort="name">{{ \'APPLICATION_FILENAME\' | translate }}</th>\n <th st-sort="name">{{ \'APPLICATION_VERSION\' | translate }}</th>\n <th st-sort="name">{{ \'APPLICATION_DESCRIPTION\' | translate }}</th>\n <th>{{ \'APPLICATION_ACTIONS\' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n <tr data-ng-repeat="integration in displayedIntegrations">\n <td>{{integration.id}}</td>\n <td>{{integration.name}}</td>\n <td>{{integration.filename}}</td>\n <td>{{integration.version}}</td>\n <td>{{integration.description}}</td>\n <td>\n <span class="btn default btn-xs blue-stripe btn-file">\n <span> {{ \'APPLICATION_UPDATE\' | translate }} </span>\n <input type="file" accept=".zip" nv-file-select="" uploader="uploader"/>\n </span>\n <a class="btn default btn-xs red-stripe" data-ng-click="deleteItem(integration.name, integration.id)">\n {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </td>\n </tr>\n <tr data-ng-hide="integrations.length">\n <td colspan="6" style="text-align:center;">\n <i>No integrations available</i>\n </td>\n </tr>\n </tbody>\n <tfoot>\n <tr>\n <td>\n <div class="input-icon right">\n <i class="fa fa-search"></i>\n <input st-search="id" class="form-control" type="search"/>\n </div>\n </td>\n <td>\n <div class="input-icon right">\n <i class="fa fa-search"></i>\n <input st-search="name" placeholder="{{ \'APPLICATION_SEARCH\' | translate }} {{ \'APPLICATION_BY\' | translate | lowercase }} {{ \'APPLICATION_NAME\' | translate | lowercase}}" class="form-control" type="search"/>\n </div>\n </td>\n <td>\n <div class="input-icon right">\n <i class="fa fa-search"></i>\n <input st-search="filename" placeholder="{{ \'APPLICATION_SEARCH\' | translate }} {{ \'APPLICATION_BY\' | translate | lowercase }} {{ \'APPLICATION_FILENAME\' | translate | lowercase}}" class="form-control" type="search"/>\n </div>\n </td>\n <td>\n </td>\n <td>\n </td>\n <td>\n </td>\n </tr>\n <tr>\n <td colspan="6" class="text-center">\n <div st-pagination class="pagination" st-items-by-page="integrationsByPage" st-displayed-pages="7"></div>\n </td>\n </tr>\n </tfoot>\n </div>\n </table>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/jscripty/project/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_PROJECT\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/jscripty/project/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-slack"></i>\n <a href="/jscripty/projects/list">{{ \'APPLICATION_PROJECTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_PROJECTS\' | translate }}</a> </span>\n </div>\n <div class="actions" ng-show="!Auth.isAgent()">\n <div class="btn-group">\n <a class="btn btn-default" href="#" data-ng-click="gridOptions.getPage();">\n <i class="icon-reload"></i>\n </a>\n </div>\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_PROJECT\' | translate }}\n </a>\n </div>\n <!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> -->\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n\n <!-- <div class="table-responsive"> -->\n\n\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/jscripty/project/report/report.detail.html",'<div class="portlet light bordered" data-ng-init="getProjectDetail();initView()">\n<div class="portlet-title">\n<div class="caption font-green-sharp">\n<i class="fa fa-list font-green-sharp"></i>\n<span class="caption-subject">{{ \'APPLICATION_SUMMARY\' | translate }}</a> </span>\n</div>\n<div class="actions">\n <div class="btn-group">\n <button class="btn btn-icon-only btn-primary" data-ng-click="pdf(\'header\',projectDetail)">\n <i class="fa fa-download"></i>\n </button>\n <!-- <button class="btn btn-icon-only btn-default" data-ng-click="accordion.expandAll()">\n <i class="fa fa-folder-open-o"></i>\n </button>\n <button class="btn btn-icon-only btn-default" data-ng-click="accordion.collapseAll()">\n <i class="fa fa-folder"></i>\n </button> -->\n </div>\n</div>\n</div>\n<div id=\'detail\' class="portlet-body">\n <div class="alert alert-success text-center" ng-show="!projectDetail.length">\n <h4>{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</h4>\n </div>\n <div class="row" ng-show="projectDetail.length">\n <div class="col-md-10 col-md-offset-1">\n <div id="header" class="panel panel-info">\n <div class="panel-heading">\n <strong>Project Name: </strong>{{project.name}}<br>\n <strong>Project Id: </strong>{{project.id}}<br>\n <strong>Completed: </strong>{{projectStats.completed}}<br>\n <strong>Incomplete: </strong>{{projectStats.incomplete}}<br>\n <strong>% Completed: </strong>{{projectStats.completed * 100 /(projectStats.completed + projectStats.incomplete) | number:2}}<br>\n </div>\n </div><br>\n <v-accordion class="vAccordion--default" multiple control="accordion">\n <v-pane id="{{question.question_id }}" ng-repeat="question in projectDetail" expanded="true">\n <v-pane-header>\n Question Id: {{question.question_id}}\n </v-pane-header>\n <v-pane-content>\n <div ng-class=" {{question.graphData.length > 0}} ? \'col-md-8\' : \'col-md-12\'">\n <div class="row">\n <div class="col-md-10 col-md-offset-1 ">\n <h4><strong>{{question.question_label}}</strong> : {{question.question_text}}</h4>\n <br><br>\n <table ng-if="question.choices.length" class="table table-hover" style="table-layout: fixed; width: 100%">\n <thead>\n <tr>\n <th>Response</th>\n <th> #Response </th>\n <th> % </th>\n </tr>\n </thead>\n <tbody>\n <tr ng-if="!choice.other_option" ng-repeat="choice in question.choices ">\n <td style="word-wrap: break-word">{{choice.value}}</td>\n <td>{{choice.count}}</td>\n <td>{{choice.percentage | number:2}}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n <div class="row" ng-if="question.question_other_label">\n <!-- <div class="row" ng-if="choice.other_option" ng-repeat="choice in question.choices "> -->\n <!-- <div class="col-md-10 col-md-offset-1 ">\n <strong>{{choice.value}}</strong> <span class="badge">{{choice.count}}</span><br>\n </div> -->\n <!-- accordions can be nested :) -->\n <v-accordion >\n <v-pane >\n <!-- ng-repeat="subpane in pane.subpanes" ng-disabled="subpane.isDisabled" -->\n <v-pane-header>\n <strong>{{question.question_other_label}}</strong><br>\n </v-pane-header>\n <v-pane-content>\n <table ng-if="question.choices.length" class="table table-hover" style="table-layout: fixed; width: 100%">\n <thead>\n <tr>\n <th>Response</th>\n <th> #Response </th>\n <!-- <th> % </th> -->\n </tr>\n </thead>\n <tbody>\n\n <tr ng-if="choice.other_option" ng-repeat="choice in question.choices ">\n <td style="word-wrap: break-word">{{choice.value}}</td>\n <td>{{choice.count}}</td>\n <!-- <td>{{choice.percentage | number:2}}</td> -->\n </tr>\n </tbody>\n </table>\n </v-pane-content>\n </v-pane>\n </v-accordion>\n </div>\n <div class="row">\n <div class="col-md-10 col-md-offset-1 ">\n <h4> <strong>Total Respondents: {{question.total}}</strong></h4><br>\n </div>\n </div>\n </div>\n <div class=" col-md-4 pull-right " ng-if="question.graphType == \'bar\' && question.graphData">\n <canvas class="chart chart-bar" chart-data="question.graphData" chart-labels="question.graphLabels" chart-legend="true">\n </canvas>\n </div>\n <div class="col-md-4 pull-right " ng-if="question.graphType == \'pie\' && question.graphData">\n <canvas class="chart chart-pie" chart-data="question.graphData" chart-labels="question.graphLabels" chart-legend="true">\n </canvas>\n </div>\n </v-pane-content>\n </v-pane>\n </v-accordion>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/jscripty/project/report/report.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-edit"></i>\n <a href="/jscripty/projects/list">{{ \'APPLICATION_JSCRIPTY\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-slack"></i>\n <a href="/jscripty/projects/list">{{ \'APPLICATION_PROJECTS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-book-open"></i>\n <a href="">{{ \'APPLICATION_REPORTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img src="assets/images/media/report.png" class="img-responsive" >\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{project.name}}[{{project.id}}]\n </div>\n <div class="profile-usertitle-job">\n\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.jscripty.projects.report.sessions\')|| $state.is(\'main.jscripty.projects.report.sessionDetail\')}">\n <a data-ng-href=\'/jscripty/projects/report/{{projectId}}/sessions\'>\n <i class="icon-settings"></i>\n Sessions</a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.jscripty.projects.report.summary\') || $state.is( \'main.jscripty.projects.report.questionDetail\')}">\n <a data-ng-href=\'/jscripty/projects/report/{{projectId}}/summary\'>\n <i class="fa fa-bar-chart"></i>\n Questions</a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.jscripty.projects.report.detail\')}">\n <a data-ng-href=\'/jscripty/projects/report/{{projectId}}/detail\'>\n <i class="fa fa-list"></i>\n Summary</a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.jscripty.projects.report.inputs\')}">\n <a data-ng-href=\'/jscripty/projects/report/{{projectId}}/inputs\'>\n <i class="fa fa-edit"></i>\n Inputs</a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n\n </div>\n\n </div>\n\n <div class="profile-content margin-top-20">\n <div class="row">\n <div class="col-md-12">\n <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">\n <div class="dashboard-stat2">\n <div class="display">\n <div class="number">\n <h3 class="font-green-sharp">{{projectStats.started}}</h3>\n <small>Started</small>\n </div>\n <div class="icon">\n <i class="icon-pie-chart"></i>\n </div>\n </div>\n <div class="progress-info">\n <div class="progress">\n <span style="width: 100%;" class="progress-bar progress-bar-success green-sharp">\n </span>\n </div>\n <div class="status">\n </div>\n </div>\n </div>\n </div>\n <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">\n <div class="dashboard-stat2">\n <div class="display">\n <div class="number">\n <h3 class="font-red-haze">{{projectStats.incomplete}}</h3>\n <small>Incomplete</small>\n </div>\n <div class="icon">\n <i class="icon-chart"></i>\n </div>\n </div>\n <div class="progress-info">\n <div class="progress">\n <span style="width: 100%;" class="progress-bar progress-bar-success red-haze">\n </span>\n </div>\n <div class="status">\n </div>\n </div>\n </div>\n </div>\n <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">\n <div class="dashboard-stat2">\n <div class="display">\n <div class="number">\n <h3 class="font-blue-sharp">{{projectStats.completed}}</h3>\n <small>Completed</small>\n </div>\n <div class="icon">\n <i class="icon-like"></i>\n </div>\n </div>\n <div class="progress-info">\n <div class="progress">\n <span style="width: 100%;" class="progress-bar progress-bar-success blue-sharp">\n </span>\n </div>\n <div class="status">\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class="row">\n <div ui-view class="col-md-12">\n </div>\n </div>\n </div>\n </div>\n </div>\n'),a.put("app/jscripty/project/report/report.inputs.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light bordered" data-ng-init="getQuestionInputs()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="fa fa-edit font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_INPUTS\' | translate }}</a> </span>\n </div>\n <div class="tools">\n <!-- <a href="" class="fullscreen" data-original-title="" title="">\n </a> -->\n </div>\n </div>\n <div class="portlet-body" >\n <div ui-grid="gridOptions" ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/jscripty/project/report/report.question.detail.html",'<div class="row" data-ng-init="getDetail()">\n <div class="col-md-12">\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="fa fa-list font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_DETAIL\' | translate }}</a> </span>\n </div>\n </div>\n <div class="portlet-body" >\n <div class="alert alert-success text-center" ng-show="!questionDetail">\n <h4>{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</h4>\n </div>\n <div class="row margin-top-20" ng-show="questionDetail">\n <div class="col-md-10 col-md-offset-1">\n <div class="panel panel-info" >\n <div class="panel-heading">\n <h3 class="panel-title">\n\n <i class="fa-chart "></i>Question Id: {{questionDetail.question_id}}\n </div>\n <div class="panel-body">\n <div class="row">\n <div class="col-md-12">\n <h4><strong>{{questionDetail.question_label}}</strong></h4>\n </div>\n </div>\n <div class="row">\n <div class="col-md-10 col-md-offset-1 ">\n <strong><h4>{{questionDetail.question_text}}</h4></strong><br>\n </div>\n </div>\n <div class="row">\n <div class="col-md-6">\n <div class="row">\n <div class="col-md-10 col-md-offset-1 ">\n <!-- <div class="alert alert-success text-center" ng-show="!questionDetail.choices.length">\n <h4>{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</h4>\n </div> -->\n <table ng-if="questionDetail.choices.length" class="table table-hover" style="table-layout: fixed; width: 100%">\n <thead>\n <tr>\n <th style="width=5%"> Value </th>\n <th style="width=5%"> Count </th>\n <th ng-if="question.graphType != \'PolarArea\'" style="width=5%"> % </th>\n </tr>\n </thead>\n <tbody>\n <tr ng-if="!choice.other_option" ng-repeat="choice in questionDetail.choices ">\n <td style="word-wrap: break-word">{{choice.value}}</td>\n <td>{{choice.count}}</td>\n <td ng-if="question.graphType != \'PolarArea\'">{{choice.percentage | number:2}}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n <div class="row" ng-if="choice.other_option" ng-repeat="choice in questionDetail.choices ">\n <div class="col-md-6 col-md-offset-3 ">\n <strong><a href="">{{choice.value}}</a> </strong> <span class="badge">{{choice.count}}</span><br>\n\n </div>\n </div>\n <div class="row">\n <div class="col-md-10 col-md-offset-1 ">\n <h4> <strong>Total: {{questionDetail.total}}</strong></h4><br>\n </div>\n </div>\n </div>\n <div class="col-md-6 pull-right ">\n <canvas id="base" class="chart-base" chart-type="questionDetail.graphType"\n chart-data="questionDetail.graphData" chart-labels="questionDetail.graphLabels" chart-legend="true">\n </canvas>\n <!-- <button class="btn btn-success btn-sm pull-right" ng-click="toggle(questionDetail)">{{questionDetail.graphType}}</button> -->\n </div>\n </div>\n\n </div>\n\n </div>\n\n </div>\n </div>\n\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/jscripty/project/report/report.session.detail.html",'\n\n<div class="row" data-ng-init="getSessionDetails()">\n <div class="col-md-12">\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="fa fa-list font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_DETAIL\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group">\n <button class="btn btn-icon-only btn-primary" data-ng-click="pdf(\'header\',sessionQuestions)">\n <i class="fa fa-download"></i>\n </button>\n <!-- <button class="btn btn-icon-only btn-default" data-ng-click="accordion.expandAll()">\n <i class="fa fa-plus-square-o"></i>\n </button>\n <button class="btn btn-icon-only btn-default" data-ng-click="accordion.collapseAll()">\n <i class="icon-collapse-alt"></i>\n </button> -->\n </div>\n </div>\n </div>\n <div class="portlet-body" style="height: auto;">\n <div class="row margin-top-20">\n <div class="col-md-10 col-md-offset-1">\n <div id = "header" class="panel panel-info">\n <div class="panel-heading">\n <strong>Project Name: </strong>{{project.name}}<br>\n <strong>Project Id: </strong>{{project.id}}<br>\n <strong>Session Id: </strong>{{session.session_id}}<br>\n <strong>Status: </strong>{{session.status}}<br>\n <strong>Started At: </strong>{{session.createdAt}}<br>\n <strong>Closed At: </strong>{{session.completedAt}}<br>\n </div>\n </div>\n <v-accordion class="vAccordion--default" multiple control="accordion">\n <v-pane id="{{question.question_id }}" ng-repeat=" question in sessionQuestions | orderBy:\'index\'"" expanded="true">\n <v-pane-header>\n Question Id: {{question.question_id}}\n </v-pane-header>\n <v-pane-content>\n <h4><strong>{{question.question_label}}</strong> : {{question.question_text}}</h4>\n <div ng-if="question.question_type == \'question\'">\n <h4><strong>Answer: </strong>{{question.question_answer}}</h4>\n </div>\n <div ng-if="question.question_other_label">\n <h4>\n <strong>{{question.question_other_label}}: </strong>\n {{question.question_other_answer || \'No Value\'}}\n </h4>\n </div>\n <table class="table table-hover" ng-if="question.ReportJscriptyInputs.length">\n <thead>\n <tr>\n <th > Label </th>\n <th >Answer </th>\n </tr>\n </thead>\n <tbody>\n <tr ng-repeat="input in question.ReportJscriptyInputs |orderBy:\'id\'">\n <td>{{input.input_label}}</td>\n <td>{{input.input_value || \'No Value\'}}</td>\n </tr>\n </tbody>\n </table>\n </v-pane-content>\n </v-pane>\n </v-accordion>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/jscripty/project/report/report.sessions.html",'\n <div class="row" >\n <div class="col-md-12">\n <div class="portlet light bordered" data-ng-init="getProjectSessions()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-settings font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_SESSIONS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group">\n <a class="btn btn-default" href="#" data-ng-click="gridOptions.getPage();initView()">\n <i class="icon-reload"></i>\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body" >\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n'),a.put("app/jscripty/project/report/report.summary.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light bordered" data-ng-init="getQuestionSummary()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="fa fa-bar-chart font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_QUESTIONS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group">\n <!-- <a class="btn btn-default" href="#" data-ng-click="gridOptions.getPage();initView()">\n <i class="icon-reload"></i>\n </a> -->\n </div>\n </div>\n </div>\n <div class="portlet-body" >\n <div ui-grid="gridOptions" ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/jscripty/project/view/view.html",'<div class="row" data-ng-init="getProject()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-edit"></i>\n <a href="/jscripty/projects/list">{{ \'APPLICATION_JSCRIPTY\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-slack"></i>\n <a href="/jscripty/projects/list">{{ \'APPLICATION_PROJECTS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <a ng-href="/jscripty/projects/view/{{jscriptyProject.id}}">{{jscriptyProject.name}}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div id="geEditor" class="geEditor"></div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n<script>\n\n\n</script>\n'),a.put("app/landing/landing.html",'<!-- BEGIN LOGO -->\n<div class="logo">\n <a href="index.html">\n <img ng-src="api/settings/logo/login" alt="logo" class="custom-login-logo" onError="this.onerror=null"/>\n </a>\n</div>\n<!-- END LOGO -->\n\n<!-- BEGIN LANDING -->\n<div data-ng-init="initLanding()">\n <div data-ng-show="message" class="col-md-12 page-500" style="padding-bottom: 50px;">\n <div class="number">\n Oops!\n </div>\n <div class=" details" style="color: white;">\n <h3>{{message | translate}}.</h3>\n <p>\n Please contact your administrator.<br><br>\n </p>\n </div>\n </div>\n</div>\n<!-- END LANDING -->\n\n<div class="copyright">\n xCALLY Motion v. {{info.version}} | 2016 - {{year + 1}} © Powered by Xenialab <ng-bind-html data-ng-if="license.custom && !settings.defaultFooterWhiteLabel && settings.footerWhiteLabel" ng-bind-html="\'| \'+settings.footerWhiteLabel"></ng-bind-html>\n</div>\n'), +a.put("app/login/login.html",'<!-- BEGIN LOGO -->\n<div class="logo" data-ng-init="getInfo()">\n <a>\n <img ng-src="api/settings/logo/login" alt="logo" class="custom-login-logo" onError="this.onerror=null"/>\n </a>\n</div>\n<!-- END LOGO -->\n<!-- BEGIN LOGIN -->\n<div class="content">\n <!-- BEGIN LOGIN FORM -->\n <form class="login-form" name="loginForm" data-ng-if="!forgotPassword" data-ng-submit="login(loginForm)" novalidate>\n <h3 class="form-title">Sign In</h3>\n <div class="alert alert-success" data-ng-show="recovered">\n <button class="close" data-close="alert"></button>\n <span>{{\'MESSAGE_ACCOUNT_RECOVERED\' | translate}}</span>\n </div>\n <div class="alert alert-danger" data-ng-class="{\'display-hide\': !loginForm.$submitted || !errorLogin}">\n <button class="close" data-close="alert"></button>\n <span>{{ errorLog ? errorLog : (\'MESSAGE_INSERT_USER_OR_PASS\' | translate)}}</span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': loginForm.$submitted && loginForm.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}</label>\n <div class="input-icon">\n <i class="fa fa-user"></i>\n <input ng-enter="login(loginForm)" class="form-control form-control-solid placeholder-no-fix" type="text" autocomplete="off" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" name="name" ng-model="userLogin.name" required/>\n </div>\n <span data-ng-show="loginForm.$submitted && loginForm.name.$invalid" class="help-block">{{\'MESSAGE_REQUIRED_FIELD\' | translate}}</span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': loginForm.$submitted && loginForm.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}</label>\n <div class="input-icon">\n <i class="fa fa-lock"></i>\n <input ng-enter="login(loginForm)" class="form-control form-control-solid placeholder-no-fix" type="password" autocomplete="off" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" name="password" ng-model="userLogin.password" required/>\n </div>\n <span data-ng-show="loginForm.$submitted && loginForm.password.$invalid" class="help-block">{{\'MESSAGE_REQUIRED_FIELD\' | translate}}</span>\n <span class="help-block"><a href="#" data-ng-click="toggleForgotPassword(true)" class="forget-password">{{\'APPLICATION_FORGOT_PASSWORD\' | translate}}?</a></span>\n </div>\n <div class="form-actions">\n <button type="submit" class="btn btn-success uppercase">{{\'APPLICATION_LOGIN\' | translate}}</button>\n <label class="rememberme check">\n <input type="checkbox" data-ng-model="userLogin.remember"> {{\'APPLICATION_REMEMBER_ME\' | translate}}\n </label>\n <!-- <label class="rememberme check">\n <input type="checkbox" name="remember" value="1"/>Remember </label> -->\n <!-- <a href="javascript:;" id="forget-password" class="forget-password">Forgot Password?</a> -->\n </div>\n </form>\n <form name="forgetForm" data-ng-if="forgotPassword" data-ng-submit="forgetForm.$valid && recover()" novalidate>\n <h3>{{\'APPLICATION_FORGOT_PASSWORD\' | translate}}?</h3>\n <p>\n {{\'APPLICATION_INSERT_EMAIL_TO_RESET\' | translate}}\n </p>\n <div class="alert alert-success" data-ng-show="showRecoverMessage">\n <button class="close" data-close="alert"></button>\n <span>{{\'MESSAGE_CHECK_YOUR_EMAIL_RECOVER\' | translate}}</span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': forgetForm.$submitted && forgetForm.email.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}</label>\n <div class="input-icon">\n <i class="fa fa-envelope"></i>\n <input class="form-control form-control-solid placeholder-no-fix" type="email" placeholder="{{\'APPLICATION_EMAIL\' | translate}}" name="email" ng-model="userLogin.email" required/>\n </div>\n <span data-ng-show="forgetForm.$submitted && forgetForm.email.$invalid" class="help-block">{{\'MESSAGE_REQUIRED_FIELD\' | translate}}</span>\n </div>\n <div class="form-actions">\n <button type="button" id="back-btn" data-ng-click="toggleForgotPassword(false)" class="btn btn-default">{{\'APPLICATION_BACK\' | translate}}</button>\n <button type="submit" class="btn btn-success uppercase pull-right">{{\'APPLICATION_SUBMIT\' | translate}}</button>\n </div>\n </form>\n <div class="login-options">\n <h4>{{\'APPLICATION_FOLLOW_US\' | translate}}</h4>\n <ul class="social-icons">\n <li>\n <a class="social-icon-color facebook" data-original-title="facebook" href="https://www.facebook.com/xcallymotion" target="_blank"></a>\n </li>\n <li>\n <a class="social-icon-color twitter" data-original-title="Twitter" href="https://twitter.com/xcallymotion" target="_blank"></a>\n </li>\n <li>\n <a class="social-icon-color googleplus" data-original-title="Google Plus" href="https://plus.google.com/+Xcally" target="_blank"></a>\n </li>\n <li>\n <a class="social-icon-color linkedin" data-original-title="Linkedin" href="https://www.linkedin.com/company/xcally" target="_blank"></a>\n </li>\n </ul>\n </div>\n</div>\n<div class="copyright">\n xCALLY Motion v. {{info.version}} | 2016 - {{year + 1}} © Powered by Xenialab <ng-bind-html data-ng-if="license.custom && !settings.defaultFooterWhiteLabel && settings.footerWhiteLabel" ng-bind-html="\'| \'+settings.footerWhiteLabel"></ng-bind-html>\n</div>\n<!-- END LOGIN -->\n'),a.put("app/main/about.modal.html",'<div class="center-text">\n<div class="modal-header no-border">\n<button type="button" ng-click="$dismiss()" class="close">×</button>\n <!-- <h3 class="modal-title center-text">{{ \'APPLICATION_ABOUT\' | translate }}</h3> -->\n</div>\n<div class="modal-body" style="padding-top:0px;">\n <div class="mbottom20" data-ng-init="getInfo()">\n <a>\n <img ng-src="api/settings/logo/about" alt="logo" class="custom-login-logo about-logo" onError="this.onerror=null"/>\n </a>\n</div>\n<div class="mbottom20">\n <b class="sounds-title-icon">xCALLY Motion</b><br>\n <small>v. {{info.version}}</small><br><br>\n <small>2016 - {{year + 1}} © Powered by Xenialab</small><br>\n <small><a href="https://www.xcallymotion.com">www.xcallymotion.com</a></small><br>\n <ng-bind-html data-ng-if="license.custom && !settings.defaultFooterWhiteLabel && settings.footerWhiteLabel" ng-bind-html="settings.footerWhiteLabel"></ng-bind-html>\n</div>\n<div class="mbottom20">\n <span><b>{{\'APPLICATION_USEFUL_LINKS\' | translate}}</b></span><br>\n <small><a href="https://wiki.xcallymotion.com/display/XMD/Welcome" target="_blank">Wiki</a></small><br>\n <small><a href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></small><br>\n <small><a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></small><br>\n</div>\n <div class="login-options" style=\'margin-bottom:0px;\'>\n <h4>{{\'APPLICATION_FOLLOW_US\' | translate}}</h4>\n <ul class="social-icons">\n <li>\n <a class="social-icon-color facebook" data-original-title="facebook" href="https://www.facebook.com/xcallymotion" target="_blank"></a>\n </li>\n <li>\n <a class="social-icon-color twitter" data-original-title="Twitter" href="https://twitter.com/xcallymotion" target="_blank"></a>\n </li>\n <li>\n <a class="social-icon-color googleplus" data-original-title="Google Plus" href="https://plus.google.com/+Xcally" target="_blank"></a>\n </li>\n <li>\n <a class="social-icon-color linkedin" data-original-title="Linkedin" href="https://www.linkedin.com/company/xcally" target="_blank"></a>\n </li>\n </ul>\n</div>\n<div class="login-options" style=\'margin-bottom:0px;\'>\n<h4>{{\'APPLICATION_CONTACT_US\' | translate}}:</h4>\n<div class="float-right" style="margin-top:10px;margin-bottom:10px;">\n <a href="mailto:support@xcally.com">support@xcally.com</a></small>\n</div>\n</div>\n</div>\n</div>\n<!-- <div class="modal-footer">\n <button class="btn default" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div> -->\n'),a.put("app/main/audioFileDownload.play.modal.html",'<!-- <div class="modal-header">\n <button ng-if="modal.dismissable" type="button" ng-click="$dismiss()" class="close">×</button>\n <h4 ng-if="modal.title" ng-bind="modal.title | translate" class="modal-title"></h4>\n</div> -->\n<div class="modal-body" style="text-align:center;">\n <audio controls autoplay ng-src="{{audio}}" preload="none" controlsList="nodownload">\n Your browser does not support the audio tag.</audio>\n</div>\n<!-- <div class="modal-footer">\n <button class="btn default" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div> -->\n'),a.put("app/main/chooseContact.modal.html",'<div class="modal-header" data-ng-init="getContacts()">\n <h3 class="modal-title">{{ \'APPLICATION_CHOOSE_CONTACT\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <table st-table="rowCollection" class="table table-striped">\n <tbody>\n <tr>\n <th>{{\'APPLICATION_NAME\' | translate}}</th>\n <th>{{\'APPLICATION_LIST\' | translate}}</th>\n <th></th>\n </tr>\n <tr ng-repeat="contact in contacts">\n <td>{{contact.firstName}} {{contact.lastName || \'\'}}</td>\n <td>{{contact.List.name}}</td>\n <td>\n <button class="btn default btn-xs green-stripe" data-ng-click="open(contact)">\n {{ \'APPLICATION_OPEN\' | translate}}\n </button>\n </td>\n </tr>\n <tr data-ng-hide="contacts.length">\n <td colspan="3" style="text-align:center;">\n <i>{{ \'MESSAGE_NO_CONTACTS_AVAILABLE\' | translate }}</i>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="open()"><i class="icon-plus"></i> {{ \'APPLICATION_NEW_CONTACT\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/main/closeEditedTab.modal.html",'<div class="modal-header" data-ng-init="getContacts()">\n <h3 class="modal-title">{{ \'APPLICATION_WARNING\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <p>{{\'MESSAGE_CLOSE_EDITED_TAB\' | translate}}</p>\n</div>\n<div class="modal-footer">\n <button class="btn btn-danger" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/main/closeEditedTab.modal.jscripty.html",' <div class="modal-header" data-ng-init="init()">\n <h3 class="modal-title">{{ \'APPLICATION_WARNING\' | translate }}</h3>\n <!-- <h3 ng-if="projectStatus == \'incomplete\'" class="modal-title">{{ \'APPLICATION_WARNING\' | translate }}</h3> -->\n\n</div>\n<div class="modal-body">\n<!-- <div ng-if="projectStatus == \'incomplete\'" class="modal-body"> -->\n <p>{{\'MESSAGE_CLOSE_INCOMPLETE\' | translate}}</p>\n</div>\n\n\n<div class="modal-footer">\n <button class="btn btn-danger" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/main/cm.disposition.modal.html",'<div class="modal-header">\n <button ng-if="modal.dismissable" type="button" ng-click="$dismiss()" class="close">×</button>\n <h4 ng-if="modal.title" ng-bind="modal.title | translate" class="modal-title"></h4>\n</div>\n<div class="modal-body">\n <form name="form" novalidate data-ng-init="initDisposition()">\n <div class="form-group">\n <ui-select data-ng-model="item.agentDisposition" name="agentDisposition" theme="bootstrap" data-ng-disabled="!dispositions.length" required>\n <ui-select-match placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="disposition.name as disposition in dispositions | filter: $select.search">\n <div ng-bind-html="disposition.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="note note-warning" data-ng-hide="dispositions.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_DISPOSITIONS_AVAILABLE\' | translate }}\n </p>\n </div>\n</form>\n <!-- <div ng-if="modal.html" ng-bind-html="modal.html"></div> -->\n</div>\n<div class="modal-footer">\n <button class="btn btn-danger" type="button" ng-click="ok()" data-ng-disabled="!item.agentDisposition">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n <!-- <button ng-repeat="button in modal.buttons" ng-class="button.classes" ng-click="button.click($event)" ng-bind="button.text" class="btn"></button> -->\n</div>\n'),a.put("app/main/company.info.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_COMPANY_INFO\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{ \'APPLICATION_ADDRESS\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{ \'APPLICATION_SHIPMENT_ADDRESS\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateCompany()" novalidate>\n <div class="row">\n <div class="col-md-6">\n <!-- START NAME -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}</label>\n <input readonly type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="company.name" required/>\n </div>\n <!-- END NAME -->\n\n <!-- START VAT -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_VAT\' | translate}}</label>\n <input readonly type="text" name="vat" placeholder="{{\'APPLICATION_VAT\' | translate}}" class="form-control" data-ng-model="company.vat"/>\n </div>\n <!-- END VAT -->\n\n <!-- START COMPANYID -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_COMPANY_ID\' | translate}}</label>\n <input readonly type="text" name="companyId" placeholder="{{\'APPLICATION_COMPANY_ID\' | translate}}" class="form-control" data-ng-model="company.companyId"/>\n </div>\n <!-- END COMPANYID -->\n\n <!-- START WEBSITE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_WEBSITE\' | translate}}</label>\n <input readonly type="text" name="website" placeholder="{{\'APPLICATION_WEBSITE\' | translate}}" class="form-control" data-ng-model="company.website"/>\n </div>\n <!-- END WEBSITE -->\n\n <!-- START EMAIL -->\n <div class="form-group" >\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}</label>\n <input readonly type="email" name="email" placeholder="{{\'APPLICATION_EMAIL\' | translate}}" class="form-control" data-ng-model="company.email"/>\n </div>\n <!-- END EMAIL -->\n </div>\n <div class="col-md-6">\n <!-- START PHONE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}</label>\n <input readonly type="text" name="phone" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="company.phone"/>\n </div>\n <!-- END PHONE -->\n\n <!-- START FAX -->\n <div class="form-group" >\n <label class="control-label">{{\'APPLICATION_FAX\' | translate}}</label>\n <input readonly type="text" name="fax" placeholder="{{\'APPLICATION_FAX\' | translate}}" class="form-control" data-ng-model="company.fax"/>\n </div>\n <!-- END FAX -->\n\n <!-- START TYPE -->\n <div class="form-group" >\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}</label>\n <input readonly type="text" name="type" placeholder="{{\'APPLICATION_TYPE\' | translate}}" class="form-control" data-ng-model="company.type"/>\n </div>\n <!-- END TYPE -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea readonly type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="company.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n </div>\n </div>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.address" novalidate>\n <!-- START STREET -->\n <div class="form-group" >\n <label class="control-label">{{\'APPLICATION_STREET\' | translate}}</label>\n <input readonly type="text" name="street" placeholder="{{\'APPLICATION_STREET\' | translate}}" class="form-control" data-ng-model="company.street"/>\n </div>\n <!-- END STREET -->\n\n <!-- START POSTALCODE -->\n <div class="form-group" >\n <label class="control-label">{{\'APPLICATION_POSTALCODE\' | translate}}</label>\n <input readonly type="text" name="postalCode" placeholder="{{\'APPLICATION_POSTALCODE\' | translate}}" class="form-control" data-ng-model="company.postalCode"/>\n </div>\n <!-- END POSTALCODE -->\n\n <!-- START CITY -->\n <div class="form-group" >\n <label class="control-label">{{\'APPLICATION_CITY\' | translate}}</label>\n <input readonly type="text" name="city" placeholder="{{\'APPLICATION_CITY\' | translate}}" class="form-control" data-ng-model="company.city"/>\n </div>\n <!-- END CITY -->\n <!-- START COUNTRY -->\n <div class="form-group" >\n <label class="control-label">{{\'APPLICATION_COUNTRY\' | translate}}</label>\n <input readonly type="text" name="country" placeholder="{{\'APPLICATION_COUNTRY\' | translate}}" class="form-control" data-ng-model="company.country"/>\n </div>\n <!-- END COUNTRY -->\n </form>\n </div>\n <div class="tab-pane" id="tab_1_3">\n <form name="forms.shipmentAddress" novalidate>\n <!-- START STREET -->\n <div class="form-group" >\n <label class="control-label">{{\'APPLICATION_STREET\' | translate}}</label>\n <input readonly type="text" name="sStreet" placeholder="{{\'APPLICATION_STREET\' | translate}}" class="form-control" data-ng-model="company.sStreet"/>\n </div>\n <!-- END STREET -->\n\n <!-- START POSTALCODE -->\n <div class="form-group" >\n <label class="control-label">{{\'APPLICATION_POSTALCODE\' | translate}}</label>\n <input readonly type="text" name="sPostalCode" placeholder="{{\'APPLICATION_POSTALCODE\' | translate}}" class="form-control" data-ng-model="company.sPostalCode"/>\n </div>\n <!-- END POSTALCODE -->\n\n <!-- START CITY -->\n <div class="form-group" >\n <label class="control-label">{{\'APPLICATION_CITY\' | translate}}</label>\n <input readonly type="text" name="sCity" placeholder="{{\'APPLICATION_CITY\' | translate}}" class="form-control" data-ng-model="company.sCity"/>\n </div>\n <!-- END CITY -->\n <!-- START COUNTRY -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_COUNTRY\' | translate}}</label>\n <input readonly type="text" name="sCountry" placeholder="{{\'APPLICATION_COUNTRY\' | translate}}" class="form-control" data-ng-model="company.sCountry"/>\n </div>\n <!-- END COUNTRY -->\n </form>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/main/customDateFilter.modal.html",'<div class="modal-body">\n <uib-datepicker ng-model="dateTime.filterDate"\n class="well well-sm">\n </uib-datepicker>\n <uib-timepicker data-ng-if="hasTime" ng-model="dateTime.time" show-meridian="false"></uib-timepicker>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="setFilterDate(dateTime.filterDate)">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancelDateFilter()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/main/customDateFilterHeader.html",'<input class="ui-grid-filter-input date-time-filter-buttons pointer-cursor" style="width:90%;padding:inherit;" data-ng-click="openDatePicker(colFilter)" placeholder="{{ colFilter.name }}" readonly value="{{colFilter.term | date:\'dd-MM-yyyy\'}}">\n<span role="button" class="ui-grid-filter-button-select cancel-custom-date-range-filter-button ng-scope" data-ng-click="removeFilter(colFilter, $index)" data-ng-if="!colFilter.disableCancelFilterButton" data-ng-disabled="colFilter.term === undefined || colFilter.term === null || colFilter.term === \'\'" data-ng-show="colFilter.term !== undefined && colFilter.term != null" tabindex="0" aria-hidden="false" aria-disabled="false" style="right:22px;">\n <i class="ui-grid-icon-cancel cancel-custom-date-range-filter" ui-grid-one-bind-aria-label="aria.removeFilter" aria-label="Remove Filter"> </i>\n</span>\n'),a.put("app/main/customTagsFilter.modal.html",'<div class="modal-body" data-ng-init="initModal()">\n <!-- START TAGS -->\n<div class="form-group">\n <label class="control-label">{{\'APPLICATION_TAGS\' | translate}}</label>\n <ui-select multiple=\'true\' data-ng-model="item.myTags" theme="bootstrap">\n <ui-select-match placeholder="{{ \'APPLICATION_TAGS\' | translate }}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter: $select.search">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n</div>\n<!-- END TAGS -->\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="setFilterTags()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancelTagsFilter()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/main/customTagsFilterHeader.html",'<input class="ui-grid-filter-input pointer-cursor" style="width:90%;padding:inherit;" data-ng-click="openTags(colFilter)" placeholder="{{ colFilter.name }}" readonly value="{{colFilter.term}}">\n<span role="button" class="ui-grid-filter-button-select cancel-custom-date-range-filter-button ng-scope" data-ng-click="removeFilter(colFilter, $index)" data-ng-if="!colFilter.disableCancelFilterButton" data-ng-disabled="colFilter.term === undefined || colFilter.term === null || colFilter.term === \'\'" data-ng-show="colFilter.term !== undefined && colFilter.term != null" tabindex="0" aria-hidden="false" aria-disabled="false" style="right:5px;">\n <i class="ui-grid-icon-cancel cancel-custom-date-range-filter" ui-grid-one-bind-aria-label="aria.removeFilter" aria-label="Remove Filter"> </i>\n</span>\n'),a.put("app/main/keepMeLogged.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_WARNING\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <p>{{\'MESSAGE_SOMEONE_LOGGED_YOU_OUT\' | translate}}</p>\n</div>\n<div class="modal-footer">\n <button class="btn btn-danger" type="button" ng-click="close()">{{ \'APPLICATION_YES\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_NO\' | translate }}</button>\n</div>\n'),a.put("app/main/main.html",'<!-- BEGIN HEADER -->\n<div data-ng-include="\'components/header/header.html\'" data-ng-controller="HeaderController" class="page-header navbar navbar-fixed-top">\n</div>\n<!-- END HEADER -->\n\n<div class="clearfix">\n</div>\n<!-- BEGIN CONTAINER -->\n<div class="page-container">\n\n <!-- BEGIN SIDEBAR -->\n <div data-ng-include="\'components/sidebar/sidebar.html\'" data-ng-controller="SidebarController" class="page-sidebar-wrapper">\n </div>\n <!-- END SIDEBAR -->\n\n <!-- BEGIN CONTENT -->\n <div class="page-content-wrapper">\n <div class="page-content" data-ng-class="{\'demo\': !license.expiration}">\n\n <!-- BEGIN PAGE CONTENT -->\n <uib-tabset>\n <uib-tab select="addWorkspace()" active="mainTab.active">\n <uib-tab-heading>\n Motion <i class="icon-rocket"></i>\n </uib-tab-heading>\n <div class="hide" data-ng-if="!Auth.isAgent() && activeTour.main" ng-joy-ride="activeTour.main" config="tourConfig.main" on-finish="onTourFinish()" on-skip="onTourSkip()"></div>\n <div ui-view class=""></div>\n </uib-tab>\n <uib-tab class="motion-{{workspace.type}}-uib-tab" data-ng-repeat="workspace in workspaces" active="workspace.active" data-ng-switch="workspace.type" select="select(workspace)" deselect="deselect(workspace)">\n <uib-tab-heading data-ng-mouseup="$event.which === 2 && closeTab($index)">\n <i data-ng-if="workspace.class" class="prova" data-ng-class="workspace.class"></i> {{workspace.name | truncate: 25: \'...\': true}} <span class="badge badge-danger" data-ng-if="workspace.unread">{{workspace.unread}}</span> <i class="icon-close pointer-cursor" data-ng-click="closeTab($index)"></i>\n </uib-tab-heading>\n <div class="" data-ng-switch="workspace.type">\n <new-contact data-ng-switch-when="newContact" workspace="workspace" index="$index" on-submit="createContact(index,item,data)"></new-contact>\n <contact data-ng-switch-when="contact" workspace="workspace" index="$index" on-submit="updateContact(index,item)"></contact>\n <jscripty data-ng-switch-when="jscripty" workspace="workspace" index="$index" on-submit="closeJscriptyTab(index)"></jscripty>\n <!-- <jscripty data-ng-switch-when="jscripty" workspace="workspace" index="$index" on-submit="closeTab(index,item)"></jscripty> -->\n <chat-room data-ng-switch-when="chatRoom" workspace="workspace" index="$index" on-submit="closeTab(index)"></chat-room>\n <fax-room data-ng-switch-when="faxRoom" workspace="workspace" index="$index" on-submit="closeTab(index)"></fax-room>\n <mail-room data-ng-switch-when="mailRoom" workspace="workspace" index="$index" on-submit="closeTab(index)"></mail-room>\n <sms-room data-ng-switch-when="smsRoom" workspace="workspace" index="$index" on-submit="closeTab(index)"></sms-room>\n <openchannel-room data-ng-switch-when="openchannelRoom" workspace="workspace" index="$index" on-submit="closeTab(index)"></openchannel-room>\n <tiger-dial-disposal data-ng-switch-when="tdDisposal" workspace="workspace" index="$index"></tiger-dial-disposal>\n <web-popup data-ng-switch-when="webPopup" workspace="workspace" index="$index"></web-popup>\n </div>\n </uib-tab>\n </uib-tabset>\n <!-- END PAGE CONTENT -->\n\n </div>\n </div>\n <!-- END CONTENT -->\n\n</div>\n<!-- END CONTAINER -->\n\n<!-- BEGIN FOOTER -->\n<div data-ng-include="\'components/footer/footer.html\'" data-ng-controller="FooterController" class="page-footer">\n</div>\n<!-- END FOOTER -->\n\n<!-- BEGIN JAVASCRIPTS(Load javascripts at bottom, this will reduce page load time) -->\n<!-- BEGIN CORE PLUGINS -->\n<!--[if lt IE 9]>\n<script src="../../assets/global/plugins/respond.min.js"></script>\n<script src="../../assets/global/plugins/excanvas.min.js"></script>\n<![endif]-->\n\n<!-- END JAVASCRIPTS -->\n'),a.put("app/main/mergeContact.choose.modal.html",'<div class="modal-header" data-ng-init="initView()">\n <h3 class="modal-title">{{ \'APPLICATION_CHOOSE_CONTACT_TO_MERGE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <!-- START TABLE -->\n<div data-ng-if="gridOptions" ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n</div>\n<!-- END TABLE -->\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/main/mergeContact.merge.modal.html",'<div class="modal-header" data-ng-init="initView()">\n <h3 class="modal-title">{{ \'APPLICATION_MERGE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="forms.general" data-ng-submit="submit({index:index,item:contact})" novalidate>\n <!-- BEGIN PORTLET -->\n <div class="portlet light ">\n <div class="portlet-body row">\n <div class="col-md-4">\n <!-- START FIRSTNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.firstName.$touched || forms.general.$submitted) && forms.general.firstName.$invalid}">\n <label class="control-label">{{\'APPLICATION_FIRSTNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input data-ng-if="fields.firstName.length <= 1" type="text" name="firstName" placeholder="{{\'APPLICATION_FIRSTNAME\' | translate}}" class="form-control" data-ng-model="contact.firstName" required/>\n <ui-select data-ng-if="fields.firstName.length > 1" data-ng-model="contact.firstName" theme="bootstrap" name="firstName" required>\n <ui-select-match placeholder="{{ \'APPLICATION_FIRSTNAME\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="field in fields.firstName | filter: $select.search track by $index">\n <div ng-bind-html="field | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.firstName.$touched || forms.general.$submitted) && forms.general.firstName.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FIRSTNAME -->\n\n <!-- START LASTNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.lastName.$touched || forms.general.$submitted) && forms.general.lastName.$invalid}">\n <label class="control-label">{{\'APPLICATION_LASTNAME\' | translate}}</label>\n <input data-ng-if="fields.lastName.length <= 1" type="text" name="lastName" placeholder="{{\'APPLICATION_LASTNAME\' | translate}}" class="form-control" data-ng-model="contact.lastName"/>\n <ui-select data-ng-if="fields.lastName.length > 1" data-ng-model="contact.lastName" theme="bootstrap" name="lastName">\n <ui-select-match placeholder="{{ \'APPLICATION_LASTNAME\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="field in fields.lastName | filter: $select.search track by $index">\n <div ng-bind-html="field | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.lastName.$touched || forms.general.$submitted) && forms.general.lastName.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END LASTNAME -->\n\n <!-- START COMPANY -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.CompanyId.$invalid && forms.general.$submitted}">\n <label class="control-label">{{\'APPLICATION_COMPANY\' | translate}}</label>\n <ui-select data-ng-model="contact.CompanyId" theme="bootstrap" name="CompanyId" ng-disabled="!companies.length">\n <ui-select-match placeholder="{{ \'APPLICATION_COMPANY\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="company.id as company in companies | filter: $select.search" null-option="scope.noCompany">\n <div ng-bind-html="company.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="companies.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_COMPANIES_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/contactmanager/companies/list">{{\'APPLICATION_COMPANIES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="forms.general.CompanyId.$invalid && forms.general.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END COMPANY -->\n </div>\n <div class="col-md-4">\n <!-- START PHONE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.phone.$touched || forms.general.$submitted) && forms.general.phone.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}</label>\n <input data-ng-if="fields.phone.length <= 1" type="text" name="phone" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="contact.phone"/>\n <ui-select data-ng-if="fields.phone.length > 1" data-ng-model="contact.phone" theme="bootstrap" name="phone">\n <ui-select-match placeholder="{{ \'APPLICATION_PHONE\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="field in fields.phone | filter: $select.search track by $index">\n <div ng-bind-html="field | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.phone.$touched || forms.general.$submitted) && forms.general.phone.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PHONE -->\n <!-- START MOBILE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.mobile.$touched || forms.general.$submitted) && forms.general.mobile.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOBILE\' | translate}}</label>\n <input data-ng-if="fields.mobile.length <= 1" type="text" name="mobile" placeholder="{{\'APPLICATION_MOBILE\' | translate}}" class="form-control" data-ng-model="contact.mobile"/>\n <ui-select data-ng-if="fields.mobile.length > 1" data-ng-model="contact.mobile" theme="bootstrap" name="mobile">\n <ui-select-match placeholder="{{ \'APPLICATION_MOBILE\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="field in fields.mobile | filter: $select.search track by $index">\n <div ng-bind-html="field | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.mobile.$touched || forms.general.$submitted) && forms.general.mobile.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MOBILE -->\n <!-- START EMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.email.$touched || forms.general.$submitted) && forms.general.email.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}</label>\n <input data-ng-if="fields.email.length <= 1" type="email" name="email" placeholder="{{\'APPLICATION_EMAIL\' | translate}}" class="form-control" data-ng-model="contact.email"/>\n <ui-select data-ng-if="fields.email.length > 1" data-ng-model="contact.email" theme="bootstrap" name="email">\n <ui-select-match placeholder="{{ \'APPLICATION_EMAIL\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="field in fields.email | filter: $select.search track by $index">\n <div ng-bind-html="field | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.email.$touched || forms.general.$submitted) && forms.general.email.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n </div>\n <div class="col-md-4">\n <!-- START FAX -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.fax.$touched || forms.general.$submitted) && forms.general.fax.$invalid}">\n <label class="control-label">{{\'APPLICATION_FAX\' | translate}}</label>\n <input data-ng-if="fields.fax.length <= 1" type="text" name="fax" placeholder="{{\'APPLICATION_FAX\' | translate}}" class="form-control" data-ng-model="contact.fax"/>\n <ui-select data-ng-if="fields.fax.length > 1" data-ng-model="contact.fax" theme="bootstrap" name="fax">\n <ui-select-match placeholder="{{ \'APPLICATION_FAX\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="field in fields.fax | filter: $select.search track by $index">\n <div ng-bind-html="field | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.fax.$touched || forms.general.$submitted) && forms.general.fax.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FAX -->\n <!-- START TAGS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.tags.$invalid && forms.general.$submitted}">\n <label class="control-label">{{\'APPLICATION_TAGS\' | translate}}</label>\n <ui-select multiple=\'true\' data-ng-model="contact.tags" theme="bootstrap" name="tags" ng-disabled="disabled">\n <ui-select-match placeholder="{{ \'APPLICATION_TAGS\' | translate }}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter: $select.search">\n <div ng-bind-html="tag | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.general.tags.$invalid && forms.general.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TAGS -->\n <!-- START LIST -->\n <div class="form-group" data-ng-if="contact.id">\n <label class="control-label">{{\'APPLICATION_LIST\' | translate}}</label>\n <input type="text" name="list" placeholder="{{\'APPLICATION_LIST\' | translate}}" class="form-control" data-ng data-ng-model="contact.List.name" disabled/>\n </div>\n <!-- END LIST -->\n </div>\n </div>\n </div>\n <div class="portlet light upborder">\n <div class="portlet-body row">\n <div class="col-md-4">\n <!-- START STREET -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.street.$touched || forms.general.$submitted) && forms.general.street.$invalid}">\n <label class="control-label">{{\'APPLICATION_STREET\' | translate}}</label>\n <input data-ng-if="fields.street.length <= 1" type="text" name="street" placeholder="{{\'APPLICATION_STREET\' | translate}}" class="form-control" data-ng-model="contact.street"/>\n <ui-select data-ng-if="fields.street.length > 1" data-ng-model="contact.street" theme="bootstrap" name="street">\n <ui-select-match placeholder="{{ \'APPLICATION_STREET\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="field in fields.street | filter: $select.search track by $index">\n <div ng-bind-html="field | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.street.$touched || forms.general.$submitted) && forms.general.street.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END STREET -->\n\n <!-- START POSTALCODE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.postalCode.$touched || forms.general.$submitted) && forms.general.postalCode.$invalid}">\n <label class="control-label">{{\'APPLICATION_POSTALCODE\' | translate}}</label>\n <input data-ng-if="fields.postalCode.length <= 1" type="text" name="postalCode" placeholder="{{\'APPLICATION_POSTALCODE\' | translate}}" class="form-control" data-ng-model="contact.postalCode"/>\n <ui-select data-ng-if="fields.postalCode.length > 1" data-ng-model="contact.postalCode" theme="bootstrap" name="postalCode">\n <ui-select-match placeholder="{{ \'APPLICATION_POSTALCODE\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="field in fields.postalCode | filter: $select.search track by $index">\n <div ng-bind-html="field | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.postalCode.$touched || forms.general.$submitted) && forms.general.postalCode.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END POSTALCODE -->\n\n <!-- START CITY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.city.$touched || forms.general.$submitted) && forms.general.city.$invalid}">\n <label class="control-label">{{\'APPLICATION_CITY\' | translate}}</label>\n <input data-ng-if="fields.city.length <= 1" type="text" name="city" placeholder="{{\'APPLICATION_CITY\' | translate}}" class="form-control" data-ng-model="contact.city"/>\n <ui-select data-ng-if="fields.city.length > 1" data-ng-model="contact.city" theme="bootstrap" name="city">\n <ui-select-match placeholder="{{ \'APPLICATION_CITY\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="field in fields.city | filter: $select.search track by $index">\n <div ng-bind-html="field | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.city.$touched || forms.general.$submitted) && forms.general.city.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CITY -->\n </div>\n <div class="col-md-4">\n <!-- START COUNTRY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.country.$touched || forms.general.$submitted) && forms.general.country.$invalid}">\n <label class="control-label">{{\'APPLICATION_COUNTRY\' | translate}}</label>\n <input data-ng-if="fields.country.length <= 1" type="text" name="country" placeholder="{{\'APPLICATION_COUNTRY\' | translate}}" class="form-control" data-ng-model="contact.country"/>\n <ui-select data-ng-if="fields.country.length > 1" data-ng-model="contact.country" theme="bootstrap" name="country">\n <ui-select-match placeholder="{{ \'APPLICATION_COUNTRY\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="field in fields.country | filter: $select.search track by $index">\n <div ng-bind-html="field | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.country.$touched || forms.general.$submitted) && forms.general.country.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END COUNTRY -->\n\n <!-- START DATEOFBIRTH -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.dateOfBirth.$touched || forms.general.$submitted) && forms.general.dateOfBirth.$invalid}">\n <label class="control-label">{{\'APPLICATION_DATEOFBIRTH\' | translate}}</label>\n <input data-ng-if="fields.dateOfBirth.length <= 1" type="date" name="dateOfBirth" placeholder="{{\'APPLICATION_DATEOFBIRTH\' | translate}}" class="form-control" data-ng-model="contact.dateOfBirth"/>\n <ui-select data-ng-if="fields.dateOfBirth.length > 1" data-ng-model="contact.dateOfBirth" theme="bootstrap" name="dateOfBirth">\n <ui-select-match placeholder="{{ \'APPLICATION_DATEOFBIRTH\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="field in fields.dateOfBirth | filter: $select.search track by $index">\n <div ng-bind-html="field | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.dateOfBirth.$touched || forms.general.$submitted) && forms.general.dateOfBirth.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DATEOFBIRTH -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea style="resize: vertical;" data-ng-if="fields.description.length <= 1" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="contact.description"/></textarea>\n <ui-select data-ng-if="fields.description.length > 1" data-ng-model="contact.description" theme="bootstrap" name="description">\n <ui-select-match placeholder="{{ \'APPLICATION_DESCRIPTION\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="field in fields.description | filter: $select.search track by $index">\n <div ng-bind-html="field | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END DESCRIPTION -->\n </div>\n <div class="col-md-4">\n <!-- START URL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.url.$touched || forms.general.$submitted) && forms.general.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input data-ng-if="fields.url.length <= 1" type="text" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="contact.url"/>\n <ui-select data-ng-if="fields.url.length > 1" data-ng-model="contact.url" theme="bootstrap" name="url">\n <ui-select-match placeholder="{{ \'APPLICATION_URL\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="field in fields.url | filter: $select.search track by $index">\n <div ng-bind-html="field | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.url.$touched || forms.general.$submitted) && forms.general.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END URL -->\n </div>\n </div>\n </div>\n <div class="portlet light upborder" data-ng-if="customFields.length">\n <div class="portlet-body">\n <div class="row">\n <div class="col-md-4" data-ng-repeat="customField in customFields">\n <div data-ng-if="customField.type==\'text\'" class="form-group" data-ng-class="{\'has-error\': (forms.general[customField.name].$touched || forms.general.$submitted) && forms.general[customField.name].$invalid}">\n <label class="control-label">{{customField.alias}}</label>\n <input data-ng-if="fields[customField.name].length <= 1" type="text" name="{{customField.name}}" placeholder="{{customField.alias}}" class="form-control" data-ng-model="contact[customField.name]"/>\n <ui-select data-ng-if="fields[customField.name].length > 1" data-ng-model="contact[customField.name]" theme="bootstrap" name="{{customField.name}}">\n <ui-select-match placeholder="{{customField.name}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="field in fields[customField.name] | filter: $select.search track by $index">\n <div ng-bind-html="field | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general[customField.name].$touched || forms.general.$submitted) && forms.general[customField.name].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div data-ng-if="customField.type==\'select\'" class="form-group" data-ng-class="{\'has-error\': forms.general[customField.name].$invalid && forms.general.$submitted}">\n <label class="control-label">{{customField.alias}}</label>\n <ui-select data-ng-model="contact[customField.name]" theme="bootstrap" name="{{customField.name}}" data-ng-disabled="disabled">\n <ui-select-match allow-clear placeholder="{{customField.alias}}">{{$select.selected.value}}</ui-select-match>\n <ui-select-choices repeat="choice.value as choice in customField.values | filter: $select.search">\n <div ng-bind-html="choice.value | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.general[customField.name].$invalid && forms.general.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- END PORTLET -->\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="merge()" ng-disabled="forms.general.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'), +a.put("app/main/template/actionBuilder/template.actionBuilderIntegration.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" data-ng-change="changeIntegration()" required>\n <ui-select-match placeholder="{{ \'APPLICATION_INTEGRATION\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="integration.state as integration in integrations | filter: $select.search">\n <div ng-bind-html="integration.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{\'APPLICATION_INTEGRATION\' | translate}}\n </span>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div class="form-group col-md-6" data-ng-if="element.data1 && accounts && randomName" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data2" name="data2{{randomName}}" theme="bootstrap" data-ng-change="changeAccount();" required>\n <ui-select-match placeholder="{{\'APPLICATION_ACCOUNT\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in accounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{\'APPLICATION_ACCOUNT\' | translate}}\n </span>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div class="form-group col-md-6" data-ng-if="element.data2 && configurations && randomName" data-ng-class="{\'has-error\': (form[\'data3\'+randomName].$touched || form.$submitted) && form[\'data3\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data3" name="data3{{randomName}}" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_CONFIGURATION\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="config.id as config in configurations | filter: $select.search">\n <div ng-bind-html="config.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{\'APPLICATION_CONFIGURATION\' | translate}}\n </span>\n <span data-ng-show="(form[\'data3\'+randomName].$touched || form.$submitted) && form[\'data3\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("app/main/template/actionBuilder/template.actionBuilderJscripty.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required>\n <ui-select-match>{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="project.id as project in projects | filter: $select.search">\n <div ng-bind-html="project.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("app/main/template/actionBuilder/template.actionBuilderMotionBar.html",'<!-- data1: 0 POPUP, 1 URL, 2 WINAPP -->\n<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required data-ng-change="changeMode();">\n <ui-select-match placeholder="{{ \'APPLICATION_TYPE\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="motionAction.value as motionAction in motionActions | filter: $select.search">\n <div ng-bind-html="motionAction.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'APPLICATION_TYPE\' | translate }}\n </span>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<!-- data1:0 data2:Template -->\n<div data-ng-if="randomName && element.data1==0" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data2" name="data2{{randomName}}" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_TEMPLATE\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'APPLICATION_TEMPLATE\' | translate }}\n </span>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<!-- data1:1 data2:URL -->\n<div data-ng-if="randomName && element.data1==1" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <input type="text" ng-model="element.data2" name="data2{{randomName}}" class="form-control" required placeholder="{{ \'APPLICATION_URL\' | translate }}"/>\n <span class="help-block">\n {{ \'APPLICATION_URL\' | translate }}\n </span>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<!-- data1:2 data2:Application data3:Arguments -->\n<div data-ng-if="randomName && element.data1==2" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <input type="text" ng-model="element.data2" name="data2{{randomName}}" class="form-control" required placeholder="{{ \'APPLICATION_APPLICATION\' | translate }}"/>\n <span class="help-block">\n {{ \'APPLICATION_APPLICATION\' | translate }}\n </span>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div data-ng-if="randomName && element.data1==2" class="form-group col-md-6">\n <input type="text" ng-model="element.data3" name="data3{{randomName}}" class="form-control" placeholder="{{ \'APPLICATION_ARGUMENTS\' | translate }}"/>\n <span class="help-block">\n {{ \'APPLICATION_ARGUMENTS\' | translate }}\n </span>\n</div>\n'),a.put("app/main/template/actionBuilder/template.actionBuilderStatus.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required>\n <ui-select-match>{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="status.value as status in states | filter: $select.search">\n <div ng-bind-html="status.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("app/main/template/actionBuilder/template.actionBuilderTemplate.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required>\n <ui-select-match>{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <input type="text" ng-model="element.data2" name="data2{{randomName}}" class="form-control" required/>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div class="col-md-6">\n <input type="text" ng-model="element.data3" class="form-control"/>\n</div>\n'),a.put("app/main/template/actionBuilder/template.actionBuilderUrlForward.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_TYPE\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{\'APPLICATION_TYPE\' | translate}}\n </span>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div class="form-group col-md-12" data-ng-if="element.data1 && randomName" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <input type="url" ng-model="element.data2" placeholder="{{ \'APPLICATION_URL\' | translate }}" name="data2{{randomName}}" class="form-control" required/>\n <span class="help-block">\n {{\'APPLICATION_URL\' | translate}}\n </span>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("app/main/template/template.conditionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-4" data-ng-class="{\'has-error\': (form[\'field\'+randomName].$touched || form.$submitted) && form[\'field\'+randomName].$invalid}">\n <ui-select data-ng-model="element.field" name="field{{randomName}}" theme="bootstrap" data-ng-change="checkCondition(element.field)" required>\n <ui-select-match>{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="condition.value as condition in service.services[serviceindex].conditions | filter: $select.search">\n <div ng-bind-html="condition.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'field\'+randomName].$touched || form.$submitted) && form[\'field\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div data-ng-if="randomName && element.field" class="form-group col-md-4" data-ng-class="{\'has-error\': (form[\'operator\'+randomName].$touched || form.$submitted) && form[\'operator\'+randomName].$invalid}">\n <ui-select data-ng-model="element.operator" name="operator{{randomName}}" theme="bootstrap" required>\n <ui-select-match>{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="operator.value as operator in _.find(service.services[serviceindex].conditions,{value:element.field}).operators | filter: $select.search">\n <div ng-bind-html="operator.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'operator\'+randomName].$touched || form.$submitted) && form[\'operator\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div class="col-md-4" data-ng-if="elementType === \'input\' && randomName && element.field" data-ng-class="{\'has-error\': (form[\'value\'+randomName].$touched || form.$submitted) && form[\'value\'+randomName].$invalid}">\n <input type="text" ng-model="element.value" class="form-control" name="value{{randomName}}" required/>\n <span data-ng-show="(form[\'value\'+randomName].$touched || form.$submitted) && form[\'value\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div class="form-group col-md-4" data-ng-if="elementType === \'select\' && randomName && element.field" data-ng-class="{\'has-error\': (form[\'value\'+randomName].$touched || form.$submitted) && form[\'value\'+randomName].$invalid}">\n <ui-select data-ng-model="element.value" name="value{{randomName}}" theme="bootstrap" required>\n <ui-select-match>{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="value.value as value in values| filter: $select.search">\n <div ng-bind-html="value.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'value\'+randomName].$touched || form.$submitted) && form[\'value\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("app/main/template/template.contactTab.html",'<div class="row margin-top-20 contact-tab-container">\n <div class="col-md-12 contact-tab">\n <form name="forms.general" data-ng-submit="submit({index:index,item:contact,data:workspace.data})" novalidate>\n <!-- BEGIN PROFILE CONTENT -->\n <div class="profile-content">\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#tab_1_1{{contact.id || \'\'}}" data-toggle="tab">{{\'APPLICATION_DETAIL\' | translate}}</a>\n </li>\n <li data-ng-if="contact.id">\n <a href="#tab_1_2{{contact.id || \'\'}}" data-toggle="tab">{{\'APPLICATION_CUSTOMER_JOURNEY\' | translate}}</a>\n </li>\n</ul>\n<div class="tab-content">\n <div class="tab-pane fade active in" id="tab_1_1{{contact.id || \'\'}}">\n <!--end add-portfolio-->\n <div class="row portfolio-block" data-ng-if="workspace.data && workspace.data.uniqueid && workspace.data.agentcalledAt">\n <div class="col-md-3">\n <div class="portfolio-text">\n <img src="assets/images/media/CmCall.png" alt=""/>\n <div class="portfolio-text-info">\n <h4>{{\'MESSAGE_INBOUND_CALL_FROM\' | translate}} - {{workspace.data.calleridnum}}</h4>\n <p>\n {{\'MESSAGE_CALL_UNIQUEID\' | translate}} : {{workspace.data.uniqueid}}\n </p>\n </div>\n </div>\n </div>\n <div class="col-md-2 portfolio-stat">\n <div>{{\'APPLICATION_QUEUE\' | translate}} </div>\n <p> {{workspace.data.queue}} </p>\n </div>\n <div class="col-md-3 portfolio-stat">\n <div>{{\'APPLICATION_AGENT\' | translate}} </div>\n <p> {{workspace.data.membername}} </p>\n </div>\n <div class="col-md-2 portfolio-stat">\n <div>{{\'APPLICATION_DATE\' | translate}} </div>\n <p> {{workspace.data.agentcalledAt | date:\'dd/MM/yyyy HH:mm:ss\'}} </p>\n </div>\n <div class="col-md-2 portfolio-stat">\n <button class="btn" data-ng-class="{\'grey-cascade\':contact.disposed || !enableDisposal,\'green-haze\':enableDisposal && !contact.disposed}" type="button" data-ng-click="dispose()" data-ng-disabled="contact.disposed || !enableDisposal">\n <i class="icon-target"></i> {{\'APPLICATION_DISPOSITION\' | translate}}\n </button>\n </div>\n </div>\n <!--end row-->\n <!-- BEGIN PORTLET -->\n <div class="portlet light ">\n <div class="portlet-title">\n <div class="caption caption-md">\n <i class="icon-bar-chart theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_DETAIL\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group btn-group-devided" data-toggle="buttons">\n <button type="submit" data-ng-if="contact.id" title="{{\'APPLICATION_COPY\' | translate}}" class="btn btn-circle green btn-sm" data-ng-click="copy(contact.id)"><i class="fa fa-files-o"></i></button>\n <button type="submit" data-ng-if="contact.ListId" class="btn btn-circle purple btn-sm" title="{{\'APPLICATION_MERGE\' | translate}}" data-ng-click="merge(contact)"><i class="icon-link"></i></button>\n <label class="btn btn-transparent grey-salsa btn-circle btn-sm active" data-ng-click="detail.tab=\'main\'">\n <input type="radio" class="toggle">{{\'APPLICATION_MAIN\' | translate}}</label>\n <label class="btn btn-transparent grey-salsa btn-circle btn-sm" data-ng-click="detail.tab=\'other\'">\n <input type="radio" class="toggle">{{\'APPLICATION_OTHER\' | translate}}</label>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <div data-ng-class="{\'hidden\':detail.tab != \'main\'}" class="portlet-body contact-portlet row">\n <div class="col-md-4">\n <!-- START FIRSTNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.firstName.$touched || forms.general.$submitted) && forms.general.firstName.$invalid}">\n <label class="control-label">{{\'APPLICATION_FIRSTNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="firstName" placeholder="{{\'APPLICATION_FIRSTNAME\' | translate}}" class="form-control" data-ng-model="contact.firstName" required/>\n <span data-ng-show="(forms.general.firstName.$touched || forms.general.$submitted) && forms.general.firstName.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FIRSTNAME -->\n\n <!-- START LASTNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.lastName.$touched || forms.general.$submitted) && forms.general.lastName.$invalid}">\n <label class="control-label">{{\'APPLICATION_LASTNAME\' | translate}}</label>\n <input type="text" name="lastName" placeholder="{{\'APPLICATION_LASTNAME\' | translate}}" class="form-control" data-ng-model="contact.lastName"/>\n <span data-ng-show="(forms.general.lastName.$touched || forms.general.$submitted) && forms.general.lastName.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END LASTNAME -->\n\n <!-- START COMPANY -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.CompanyId.$invalid && forms.general.$submitted}">\n <label class="control-label">{{\'APPLICATION_COMPANY\' | translate}}</label>\n <div class="input-group">\n <ui-select data-ng-model="contact.CompanyId" theme="bootstrap" name="CompanyId" ng-disabled="!companies.length" required>\n <ui-select-match placeholder="{{ \'APPLICATION_COMPANY\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="company.id as company in companies | filter: $select.search" null-option="scope.noCompany">\n <div ng-bind-html="company.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="input-group-btn">\n <button type="button" data-ng-click="companyInfo(contact.CompanyId)" class="btn btn-default" data-ng-disabled="!contact.CompanyId">\n <span class="icon-info" data-ng-class="{\'font-blue\':contact.CompanyId}"></span>\n </button>\n </span>\n </div>\n <div class="note note-warning" data-ng-hide="companies.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_COMPANIES_AVAILABLE\' | translate }}\n </p>\n <p data-ng-if="!Auth.isAgent()">\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/contactmanager/companies/list">{{\'APPLICATION_COMPANIES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="forms.general.CompanyId.$invalid && forms.general.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END COMPANY -->\n </div>\n <div class="col-md-4">\n <!-- START PHONE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.phone.$touched || forms.general.$submitted) && forms.general.phone.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}</label>\n <div class="input-group">\n <input type="text" name="phone" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="contact.phone"/>\n <span class="input-group-btn" uib-dropdown>\n <button data-ng-if="Auth.isAgent()" type="button" uib-dropdown-toggle class="btn btn-default" data-ng-disabled="!contact.phone || !agent.phoneBarRemoteControl" >\n <span class="icon-earphones-alt" data-ng-class="{\'font-blue\':contact.phone && agent.phoneBarRemoteControl}" uib-tooltip="{{!agent.phoneBarRemoteControl ? (\'APPLICATION_ENABLE_REMOTE_PHONEBAR\' | translate) : (\'APPLICATION_MOTION_BAR_CONTROLS\' | translate)}}" ></span>\n </button>\n <ul class="dropdown-menu" uib-dropdown-menu role="menu" aria-labelledby="single-button">\n <li role="menuitem"><a href="#" data-ng-click="callPhoneBar(contact.phone,\'call\')"><i class="icon-phone"></i> {{\'APPLICATION_CALL\' | translate}}</a></li>\n <li role="menuitem"><a href="#" data-ng-click="callPhoneBar(contact.phone,\'transfer\')"><i class="glyphicon glyphicon-random"></i> {{\'APPLICATION_TRANSFER\' | translate}}</a></li>\n </ul>\n <button type="button" data-ng-click="openRoom(null,\'smsRoom\',{to:contact.phone})" class="btn btn-default" data-ng-disabled="!contact.phone || !license.messaging">\n <span class="glyphicon glyphicon-comment" data-ng-class="{\'font-blue\':contact.phone && license.messaging}"></span>\n </button>\n </span>\n </div>\n <span data-ng-show="(forms.general.phone.$touched || forms.general.$submitted) && forms.general.phone.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PHONE -->\n <!-- START MOBILE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.mobile.$touched || forms.general.$submitted) && forms.general.mobile.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOBILE\' | translate}}</label>\n <div class="input-group">\n <input type="text" name="mobile" placeholder="{{\'APPLICATION_MOBILE\' | translate}}" class="form-control" data-ng-model="contact.mobile"/>\n <span class="input-group-btn" uib-dropdown>\n <button data-ng-if="Auth.isAgent()" type="button" uib-dropdown-toggle class="btn btn-default" data-ng-disabled="!contact.mobile || !agent.phoneBarRemoteControl" >\n <span class="icon-earphones-alt" data-ng-class="{\'font-blue\':contact.mobile && agent.phoneBarRemoteControl}" uib-tooltip="{{!agent.phoneBarRemoteControl ? (\'APPLICATION_ENABLE_REMOTE_PHONEBAR\' | translate) : (\'APPLICATION_MOTION_BAR_CONTROLS\' | translate)}}" ></span>\n </button>\n <ul class="dropdown-menu" uib-dropdown-menu role="menu" aria-labelledby="single-button">\n <li role="menuitem"><a href="#" data-ng-click="callPhoneBar(contact.mobile,\'call\')"><i class="icon-phone"></i> {{\'APPLICATION_CALL\' | translate}}</a></li>\n <li role="menuitem"><a href="#" data-ng-click="callPhoneBar(contact.mobile,\'transfer\')"><i class="glyphicon glyphicon-random"></i> {{\'APPLICATION_TRANSFER\' | translate}}</a></li>\n </ul>\n <button type="button" data-ng-click="openRoom(null,\'smsRoom\',{to:contact.mobile})" class="btn btn-default" data-ng-disabled="!contact.mobile || !license.messaging">\n <span class="glyphicon glyphicon-comment" data-ng-class="{\'font-blue\':contact.mobile && license.messaging}"></span>\n </button>\n </span>\n </div>\n <span data-ng-show="(forms.general.mobile.$touched || forms.general.$submitted) && forms.general.mobile.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MOBILE -->\n <!-- START EMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.email.$touched || forms.general.$submitted) && forms.general.email.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}</label>\n <div class="input-group">\n <input type="text" name="email" placeholder="{{\'APPLICATION_EMAIL\' | translate}}" class="form-control" data-ng-model="contact.email"/>\n <span class="input-group-btn">\n <button type="button" data-ng-click="openRoom(null,\'mailRoom\',{to:contact.email})" class="btn btn-default" data-ng-disabled="!contact.email || !license.mail">\n <span class="icon-envelope" data-ng-class="{\'font-blue\':contact.email && license.mail}"></span>\n </button>\n </span>\n </div>\n <span data-ng-show="(forms.general.email.$touched || forms.general.$submitted) && forms.general.email.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n </div>\n <div class="col-md-4">\n <!-- START FAX -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.fax.$touched || forms.general.$submitted) && forms.general.fax.$invalid}">\n <label class="control-label">{{\'APPLICATION_FAX\' | translate}}</label>\n <div class="input-group">\n <input type="text" name="fax" placeholder="{{\'APPLICATION_FAX\' | translate}}" class="form-control" data-ng-model="contact.fax"/>\n <span class="input-group-btn">\n <button type="button" data-ng-click="openRoom(null,\'faxRoom\',{to:contact.fax})" class="btn btn-default" data-ng-disabled="!contact.fax || !license.fax">\n <span class="fa fa-fax" data-ng-class="{\'font-blue\':contact.fax && license.fax}"></span>\n </button>\n </span>\n </div>\n <span data-ng-show="(forms.general.fax.$touched || forms.general.$submitted) && forms.general.fax.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FAX -->\n <!-- START TAGS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.tags.$invalid && forms.general.$submitted}">\n <label class="control-label">{{\'APPLICATION_TAGS\' | translate}}</label>\n <ui-select multiple=\'true\' data-ng-model="contact.tags" theme="bootstrap" name="tags" ng-disabled="disabled">\n <ui-select-match placeholder="{{ \'APPLICATION_TAGS\' | translate }}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter: $select.search">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.general.tags.$invalid && forms.general.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TAGS -->\n <!-- START LIST -->\n <div class="form-group" data-ng-if="contact.id">\n <label class="control-label">{{\'APPLICATION_LIST\' | translate}}</label>\n <input type="text" name="list" placeholder="{{\'APPLICATION_LIST\' | translate}}" class="form-control" data-ng-model="contact.List.name" disabled/>\n </div>\n <!-- END LIST -->\n <!-- START LIST -->\n <div data-ng-if="!contact.id" class="form-group" data-ng-class="{\'has-error\': forms.general.ListId.$invalid && forms.general.$submitted}">\n <label class="control-label">{{\'APPLICATION_LIST\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="contact.ListId" theme="bootstrap" name="ListId" data-ng-change="getCustomFields()" required>\n <ui-select-match placeholder="{{ \'APPLICATION_LIST\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="list.id as list in lists | filter: $select.search">\n <div ng-bind-html="list.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="lists.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_LISTS_AVAILABLE\' | translate }}\n </p>\n <p data-ng-if="!Auth.isAgent()">\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/contactmanager/lists/list">{{\'APPLICATION_LISTS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="forms.general.ListId.$invalid && forms.general.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END LIST -->\n </div>\n </div>\n <div data-ng-class="{\'hidden\':detail.tab != \'other\'}" class="portlet-body contact-portlet row">\n <div class="col-md-4">\n <!-- START STREET -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.street.$touched || forms.general.$submitted) && forms.general.street.$invalid}">\n <label class="control-label">{{\'APPLICATION_STREET\' | translate}}</label>\n <input type="text" name="street" placeholder="{{\'APPLICATION_STREET\' | translate}}" class="form-control" data-ng-model="contact.street"/>\n <span data-ng-show="(forms.general.street.$touched || forms.general.$submitted) && forms.general.street.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END STREET -->\n\n <!-- START POSTALCODE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.postalCode.$touched || forms.general.$submitted) && forms.general.postalCode.$invalid}">\n <label class="control-label">{{\'APPLICATION_POSTALCODE\' | translate}}</label>\n <input type="text" name="postalCode" placeholder="{{\'APPLICATION_POSTALCODE\' | translate}}" class="form-control" data-ng-model="contact.postalCode"/>\n <span data-ng-show="(forms.general.postalCode.$touched || forms.general.$submitted) && forms.general.postalCode.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END POSTALCODE -->\n\n <!-- START CITY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.city.$touched || forms.general.$submitted) && forms.general.city.$invalid}">\n <label class="control-label">{{\'APPLICATION_CITY\' | translate}}</label>\n <input type="text" name="city" placeholder="{{\'APPLICATION_CITY\' | translate}}" class="form-control" data-ng-model="contact.city"/>\n <span data-ng-show="(forms.general.city.$touched || forms.general.$submitted) && forms.general.city.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CITY -->\n </div>\n <div class="col-md-4">\n <!-- START COUNTRY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.country.$touched || forms.general.$submitted) && forms.general.country.$invalid}">\n <label class="control-label">{{\'APPLICATION_COUNTRY\' | translate}}</label>\n <input type="text" name="country" placeholder="{{\'APPLICATION_COUNTRY\' | translate}}" class="form-control" data-ng-model="contact.country"/>\n <span data-ng-show="(forms.general.country.$touched || forms.general.$submitted) && forms.general.country.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END COUNTRY -->\n\n <!-- START DATEOFBIRTH -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.dateOfBirth.$touched || forms.general.$submitted) && forms.general.dateOfBirth.$invalid}">\n <label class="control-label">{{\'APPLICATION_DATEOFBIRTH\' | translate}}</label>\n <input name="dateOfBirth" type="date" placeholder="{{\'APPLICATION_DATEOFBIRTH\' | translate}}" class="form-control date-picker" data-ng-model="contact.dateOfBirth"/>\n <span data-ng-show="(forms.general.dateOfBirth.$touched || forms.general.$submitted) && forms.general.dateOfBirth.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DATEOFBIRTH -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea style="resize: vertical;" type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="contact.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n </div>\n <div class="col-md-4">\n <!-- START URL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.url.$touched || forms.general.$submitted) && forms.general.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="text" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="contact.url"/>\n <span data-ng-show="(forms.general.url.$touched || forms.general.$submitted) && forms.general.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END URL -->\n\n <!-- START CREATED_BY -->\n <div class="form-group" data-ng-if="contact.id">\n <label class="control-label">{{\'APPLICATION_CREATED_BY\' | translate}}</label>\n <input type="text" name="createdBy" placeholder="{{\'APPLICATION_CREATED_BY\' | translate}}" class="form-control" data-ng-model="contact.User.name" disabled/>\n </div>\n <!-- END CREATED_BY -->\n </div>\n </div>\n </div>\n <button type="submit" class="btn btn-circle green-haze btn-sm" data-ng-disabled="forms.general.$invalid">{{contact.id ? \'APPLICATION_UPDATE\' : \'APPLICATION_SAVE\' | translate}}</button>\n </div>\n <!-- END PORTLET -->\n <!-- BEGIN PORTLET -->\n <div class="portlet light" data-ng-if="customFields.length">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_CUSTOM_FIELDS\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <div class="row">\n <div class="col-md-4" data-ng-repeat="customField in customFields track by $index">\n <div data-ng-if="customField.type==\'text\'" class="form-group" data-ng-class="{\'has-error\': (forms.general[customField.name].$touched || forms.general.$submitted) && forms.general[customField.name].$invalid}">\n <label class="control-label">{{customField.alias}}<span data-ng-if="customField.required" class="required" aria-required="true">*</span></label>\n <input type="text" name="{{customField.name}}" placeholder="{{customField.alias}}" class="form-control" data-ng-model="contact[customField.name]" data-ng-required="customField.required"/>\n <span data-ng-show="(forms.general[customField.name].$touched || forms.general.$submitted) && forms.general[customField.name].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div data-ng-if="customField.type==\'select\'" class="form-group" data-ng-class="{\'has-error\': forms.general[customField.name].$invalid && forms.general.$submitted}">\n <label class="control-label">{{customField.alias}}<span data-ng-if="customField.required" class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="contact[customField.name]" theme="bootstrap" name="{{customField.name}}" data-ng-disabled="disabled" data-ng-required="customField.required">\n <ui-select-match allow-clear placeholder="{{customField.alias}}">{{$select.selected.value}}</ui-select-match>\n <ui-select-choices repeat="choice.value as choice in customField.values | filter: $select.search">\n <div ng-bind-html="choice.value | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.general[customField.name].$invalid && forms.general.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n <button type="submit" class="btn btn-circle green-haze btn-sm" data-ng-disabled="forms.general.$invalid">{{contact.id ? \'APPLICATION_UPDATE\' : \'APPLICATION_SAVE\' | translate}}</button>\n </div>\n </div>\n <!-- END PORTLET -->\n </div>\n <div class="tab-pane fade" id="tab_1_2{{contact.id || \'\'}}">\n <!-- BEGIN PORTLET -->\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_CUSTOMER_JOURNEY\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_2_1{{contact.id || \'\'}}" data-toggle="tab">{{ \'APPLICATION_DAILY\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_2_2{{contact.id || \'\'}}" data-toggle="tab">{{ \'APPLICATION_HISTORY\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <!--BEGIN TABS-->\n <div class="tab-content">\n <div class="tab-pane active" id="tab_2_1{{contact.id || \'\'}}">\n <div class="contact-portlet">\n <div class="actions">\n <div class="btn-group btn-group-devided" data-toggle="buttons">\n <label class="btn btn-transparent grey-salsa btn-circle btn-sm" data-ng-class="{\'active\':log.daily.show === \'phone\'}" data-ng-click="updateLog(\'daily\',\'phone\',\'general\',\'inbound\')">\n <input type="radio" class="toggle">{{\'APPLICATION_PHONES\' | translate}}</label>\n <label class="btn btn-transparent grey-salsa btn-circle btn-sm" data-ng-class="{\'active\':log.daily.show === \'email\'}" data-ng-click="updateLog(\'daily\',\'email\',\'general\',\'room\')">\n <input type="radio" class="toggle">{{\'APPLICATION_EMAILS\' | translate}}</label>\n <label class="btn btn-transparent grey-salsa btn-circle btn-sm" data-ng-class="{\'active\':log.daily.show === \'chat\'}" data-ng-click="updateLog(\'daily\',\'chat\',\'general\',\'room\')">\n <input type="radio" class="toggle">{{\'APPLICATION_CHAT\' | translate}}</label>\n <label class="btn btn-transparent grey-salsa btn-circle btn-sm" data-ng-class="{\'active\':log.daily.show === \'fax\'}" data-ng-click="updateLog(\'daily\',\'fax\',\'general\',\'room\')">\n <input type="radio" class="toggle">{{\'APPLICATION_FAX\' | translate}}</label>\n <label class="btn btn-transparent grey-salsa btn-circle btn-sm" data-ng-class="{\'active\':log.daily.show === \'sms\'}" data-ng-click="updateLog(\'daily\',\'sms\',\'general\',\'room\')">\n <input type="radio" class="toggle">{{\'APPLICATION_SMS\' | translate}}</label>\n </div><span data-ng-if="log.daily.show==\'phone\'"> |</span>\n <div class="btn-group btn-group-devided" data-toggle="buttons" data-ng-if="log.daily.show==\'phone\'">\n <label class="btn btn-transparent grey-salsa btn-circle btn-sm" data-ng-class="{\'active\':log.daily.type === \'inbound\'}" data-ng-click="updateLog(\'daily\',false,false,\'inbound\')">\n <input type="radio" class="toggle">{{\'APPLICATION_INBOUND\' | translate}}</label>\n <label class="btn btn-transparent grey-salsa btn-circle btn-sm" data-ng-class="{\'active\':log.daily.type === \'outbound\'}" data-ng-click="updateLog(\'daily\',false,\'general\',\'outbound\')">\n <input type="radio" class="toggle">{{\'APPLICATION_OUTBOUND\' | translate}}</label>\n </div><span data-ng-if="log.daily.show==\'phone\'"> |</span>\n <div class="btn-group btn-group-devided" data-toggle="buttons" data-ng-if="log.daily.show==\'phone\'">\n <label class="btn btn-transparent grey-salsa btn-circle btn-sm" data-ng-class="{\'active\':log.daily.detail === \'general\'}" data-ng-click="updateLog(\'daily\',false,\'general\',false)">\n <input type="radio" class="toggle">{{\'APPLICATION_GENERAL\' | translate}}</label>\n <label data-ng-if="log.daily.type===\'inbound\'" class="btn btn-transparent grey-salsa btn-circle btn-sm" data-ng-class="{\'active\':log.daily.detail === \'queue\'}" data-ng-click="updateLog(\'daily\',false,\'queue\',\'inbound\')">\n <input type="radio" class="toggle">{{\'APPLICATION_QUEUES\' | translate}}</label>\n </div>\n </div>\n <div data-ng-if="gridOptionsdaily" name="gridOptionsdaily" ui-grid="gridOptionsdaily" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptionsdaily.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n </div>\n </div>\n <div class="tab-pane" id="tab_2_2{{contact.id || \'\'}}">\n <div class="contact-portlet">\n <div class="actions">\n <div class="btn-group btn-group-devided" data-toggle="buttons">\n'+" <label class=\"btn btn-transparent grey-salsa btn-circle btn-sm\" data-ng-class=\"{'active':log.history.show === 'phone'}\" data-ng-click=\"updateLog('history','phone','general','inbound')\">\n <input type=\"radio\" class=\"toggle\">{{'APPLICATION_PHONES' | translate}}</label>\n <label class=\"btn btn-transparent grey-salsa btn-circle btn-sm\" data-ng-class=\"{'active':log.history.show === 'email'}\" data-ng-click=\"updateLog('history','email','general','room')\">\n <input type=\"radio\" class=\"toggle\">{{'APPLICATION_EMAILS' | translate}}</label>\n <label class=\"btn btn-transparent grey-salsa btn-circle btn-sm\" data-ng-class=\"{'active':log.history.show === 'chat'}\" data-ng-click=\"updateLog('history','chat','general','room')\">\n <input type=\"radio\" class=\"toggle\">{{'APPLICATION_CHAT' | translate}}</label>\n <label class=\"btn btn-transparent grey-salsa btn-circle btn-sm\" data-ng-class=\"{'active':log.history.show === 'fax'}\" data-ng-click=\"updateLog('history','fax','general','room')\">\n <input type=\"radio\" class=\"toggle\">{{'APPLICATION_FAX' | translate}}</label>\n <label class=\"btn btn-transparent grey-salsa btn-circle btn-sm\" data-ng-class=\"{'active':log.history.show === 'sms'}\" data-ng-click=\"updateLog('history','sms','general','room')\">\n <input type=\"radio\" class=\"toggle\">{{'APPLICATION_SMS' | translate}}</label>\n </div><span data-ng-if=\"log.history.show=='phone'\"> |</span>\n <div class=\"btn-group btn-group-devided\" data-toggle=\"buttons\" data-ng-if=\"log.history.show=='phone'\">\n <label class=\"btn btn-transparent grey-salsa btn-circle btn-sm\" data-ng-class=\"{'active':log.history.type === 'inbound'}\" data-ng-click=\"updateLog('history',false,false,'inbound')\">\n <input type=\"radio\" class=\"toggle\">{{'APPLICATION_INBOUND' | translate}}</label>\n <label class=\"btn btn-transparent grey-salsa btn-circle btn-sm\" data-ng-class=\"{'active':log.history.type === 'outbound'}\" data-ng-click=\"updateLog('history',false,'general','outbound')\">\n <input type=\"radio\" class=\"toggle\">{{'APPLICATION_OUTBOUND' | translate}}</label>\n </div><span data-ng-if=\"log.history.show=='phone'\"> |</span>\n <div class=\"btn-group btn-group-devided\" data-toggle=\"buttons\" data-ng-if=\"log.history.show=='phone'\">\n <label class=\"btn btn-transparent grey-salsa btn-circle btn-sm\" data-ng-class=\"{'active':log.history.detail === 'general'}\" data-ng-click=\"updateLog('history',false,'general',false)\">\n <input type=\"radio\" class=\"toggle\">{{'APPLICATION_GENERAL' | translate}}</label>\n <label data-ng-if=\"log.history.type==='inbound'\" class=\"btn btn-transparent grey-salsa btn-circle btn-sm\" data-ng-class=\"{'active':log.history.detail === 'queue'}\" data-ng-click=\"updateLog('history',false,'queue','inbound')\">\n <input type=\"radio\" class=\"toggle\">{{'APPLICATION_QUEUES' | translate}}</label>\n </div>\n </div>\n <div data-ng-if=\"gridOptionshistory\" name=\"gridOptionshistory\" ui-grid=\"gridOptionshistory\" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter ui-grid-draggable-rows class=\"ui-grid\">\n <div class=\"watermark\" ng-show=\"!gridOptionshistory.data.length\">{{'MESSAGE_NO_RESULTS_AVAILABLE' | translate}}</div>\n </div>\n </div>\n </div>\n </div>\n <!--END TABS-->\n </div>\n </div>\n <!-- END PORTLET -->\n </div>\n <!-- END PROFILE CONTENT -->\n </form>\n</div>\n </div>\n</div>\n"), +a.put("app/main/template/template.jscriptyTab.html",'<div class="portlet light bordered">\n <!-- BEGIN PORTLET BODY -->\n <div class="portlet-body">\n <div class="row">\n <!-- BEGIN SIDEBAR -->\n <div class="profile-sidebar" style="width: 250px;">\n <!-- PORTLET MAIN -->\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li ng-repeat= \'question in questions track by $index\' ng-class="{active: $index == count}">\n <a ng-click="setCurrentQuestion($index)" >\n <i class="fa fa-check"></i> <label ng-if="attribute.nodeName == \'label\'" ng-repeat=\'attribute in question.value.attributes track by $index\'>{{attribute.value}}</label>\n </a>\n </li>\n </ul>\n </div>\n <!-- END SIDEBAR MENU -->\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END SIDEBAR -->\n <div class="profile-content">\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="fa fa-edit font-green-sharp"></i>\n <span ng-if="attribute.nodeName ==\'label\'" ng-repeat=\'attribute in currentQuestion.value.attributes\' class="caption-subject">{{attribute.value}} </span>\n </div>\n\n </div>\n <div class="portlet-body form ">\n <div class="row">\n <div class="col-md-10 col-md-offset-1 ">\n <form >\n <div class="form-body" style="height: 400px; overflow-y: auto;overflow-x:hidden">\n\n <!-- Question -->\n <div class="form-group" style="word-wrap: break-word;" >\n <h3 ng-if="attribute.nodeName ==\'question\' || attribute.nodeName ==\'text\'" ng-repeat=\'attribute in currentQuestion.value.attributes\'>{{attribute.value}}</h3>\n </div>\n <!-- Buttons -->\n\n <div ng-if ="(edge.source.id == currentQuestion.id) && edge.value" ng-repeat=\'edge in currentQuestion.edges track by $index\' class="row">\n <div class="col-md-8 col-md-offset-2">\n <input checked="checked" type="radio" ng-model="currentQuestion.button" ng-value="edge" >\n <label ng-show="(edge.source.id == currentQuestion.id) && edge.value">{{edge.value}}</label><br><br>\n </div>\n </div>\n <!-- Question Other Option -->\n\n <div class="form-group" ng-if= "attribute.nodeName ==\'other\' && attribute.value " ng-repeat=\'attribute in currentQuestion.value.attributes track by $index\'>\n <br>\n <div class="col-md-2">\n <label class="control-label">{{attribute.value}}</label>\n </div>\n <div class="col-md-8">\n <textarea style="overflow:auto" ng-model="currentQuestion.otheranswer" placeholder="Enter text" rows="8" cols="40" ></textarea>\n </div>\n </div>\n <!-- Inputs -->\n <div class="row margin-top-10" ng-repeat=\'question in currentQuestion.children track by $index\'>\n <div class="col-md-10 col-md-offset-1">\n <div ng-repeat=\'attribute in question.value.attributes track by $index\'>\n <div ng-switch="attribute.nodeName">\n <div ng-class="col-md-2" ng-switch-when="label">\n <label class="control-label" style=" display:block;word-break:break-all;" >{{attribute.value}}</label>\n </div>\n <div ng-class="attribute.value != \'checkbox\' ? \'col-md-10 pull-right\': \'col-md-2\'" ng-switch-when="type" ng-switch="attribute.value">\n <input class="form-control" ng-switch-when="text" type="text" ng-model="question.answer" />\n <input class="form-control" ng-switch-when="number" type="number" ng-model="question.answer" />\n <input class=" pull-right" ng-switch-when="checkbox" type="checkbox" ng-model="question.answer" />\n <!-- ng-true-value="\'Selected\'" ng-false-value="\'Not Selected\'" -->\n <textarea class="form-control" ng-switch-when="textarea" ng-model="question.answer" rows="8" cols="40"></textarea>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- actions -->\n <div class="form-actions">\n <div ng-switch="attribute.nodeName" class="btn-set pull-left">\n <button class="btn red-haze " ng-click="end()">\n <span class="fa fa-times" > Close</span>\n </button>\n <!-- <button class="btn red-haze " ng-click="end()">\n <span ng-if="attribute.nodeName ==\'end\'" ng-repeat=\'attribute in currentQuestion.value.attributes\' class="fa fa-times" > Finish</span>\n </button> -->\n <button class="btn blue-haze" ng-show="count" ng-click="back()"><span class="glyphicon glyphicon-chevron-left"></span>Back</button>\n </div>\n <div class="btn-set pull-right">\n <button ng-show=" currentQuestion.button" class="btn blue-hoki" ng-click="next(currentQuestion.button.target, currentQuestion.button.value)">Next<span class="glyphicon glyphicon-chevron-right" ></span></button>\n <button ng-repeat=\'edge in currentQuestion.edges track by $index\' ng-show="(edge.source.id == currentQuestion.id) && !edge.value" class="btn blue-hoki" ng-click="next(edge.target)">Next<span class="glyphicon glyphicon-chevron-right" ></span></button>\n </div>\n </div>\n </form>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- END PORTLET BODY -->\n</div>\n'),a.put("app/main/template/template.notification.html",'<div class="ui-notification alert alert-block" ng-class="class" style="width: 350px; margin-top: 50px;">\n <h4 ng-show="title" class="alert-heading"><i class="{{icon}}"></i> {{title}}</h4>\n <hr>\n <p ng-bind-html="message"></p>\n <br>\n <p>\n <a class="btn btn-success close-notification" href="#" ng-click="nAccept()"><i class="glyphicon glyphicon-ok"></i> {{acceptBtn}} </a>\n <a class="btn btn-danger close-notification" href="#" ng-click="nReject()"><i class="glyphicon glyphicon-remove"></i> {{rejectBtn}} </a>\n </p>\n</div>\n'),a.put("app/main/template/template.reportBuilderView.html",'<div class="alert alert-warning alert-group">\n <div class="form-inline" data-ng-class="{\'has-error\': forms.report.$submitted && !group.rules.length}">\n <select ng-options="o.name as o.name for o in operators" ng-model="group.operator" class="form-control input-sm"></select>\n <button style="margin-left: 5px" type="button" ng-click="addCondition()" class="btn btn-sm btn-success"><span class="glyphicon glyphicon-plus-sign"></span> {{\'APPLICATION_ADD_CONDITION\' | translate}}</button>\n <button style="margin-left: 5px" type="button" ng-click="addGroup()" class="btn btn-sm btn-success"><span class="glyphicon glyphicon-plus-sign"></span> {{\'APPLICATION_ADD_GROUP\' | translate}}</button>\n <button style="margin-left: 5px" type="button" ng-click="removeGroup()" class="btn btn-sm btn-danger"><span class="glyphicon glyphicon-minus-sign"></span> {{\'APPLICATION_REMOVE_GROUP\' | translate}}</button>\n </div>\n <div class="group-conditions">\n <div ng-repeat="rule in group.rules | orderBy:\'index\'" class="condition">\n <div ng-switch="rule.hasOwnProperty(\'group\')">\n <div ng-switch-when="true">\n <report-builder group="rule.group" fields="fields" forms="forms"></report-builder>\n </div>\n <div ng-switch-default="ng-switch-default">\n <div class="row">\n <div class="col-md-2" data-ng-class="{\'has-error\': forms.report.$submitted && !rule.field}">\n <ui-select data-ng-model="rule.field" theme="bootstrap" dynamic-name="randomName()" required>\n <ui-select-match placeholder="" ><span ng-bind-html="$select.selected.name"></span></ui-select-match>\n <ui-select-choices repeat="field.value as field in fields | filter: $select.search">\n <div ng-bind-html="field.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.report.$submitted && !rule.field" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="col-md-1">\n <ui-select data-ng-model="rule.condition" theme="bootstrap" dynamic-name="randomName()" data-ng-change="inputIsRequired(rule)" data-ng-init="inputIsRequired(rule)">\n <ui-select-match placeholder="">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="condition.name as condition in conditions | filter: $select.search">\n <div ng-bind-html="condition.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-2" data-ng-class="{\'has-error\': forms.report.$submitted && !rule.value}" data-ng-if="rule.required">\n <input type="text" ng-model="rule.value" class="form-control" dynamic-name="randomName()" data-ng-required="requiredInput"/>\n <span data-ng-show="forms.report.$submitted && !rule.value" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <button style="margin-left: 5px" ng-click="removeCondition($index)" class="btn btn-sm btn-danger" type="button"><span class="glyphicon glyphicon-minus-sign"></span></button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n'),a.put("app/main/template/template.tigerDialDisposal.html",'<div class="row margin-top-20 contact-tab-container">\n <div class="portlet light bordered">\n <div class="row portfolio-block" data-ng-if="workspace.spooler.destcalleridnum && workspace.spooler.queue && workspace.spooler.agentconnectAt">\n <div class="col-md-2">\n <div class="portfolio-text">\n <img src="assets/images/media/outboundroute.png" class="td-disposal-logo" alt=""/>\n </div>\n </div>\n <div class="col-md-3 portfolio-stat">\n <div>{{\'APPLICATION_CALLED_NUMBER\' | translate}} </div>\n <p> {{workspace.spooler.destcalleridnum}} </p>\n </div>\n <div class="col-md-3 portfolio-stat">\n <div>{{\'APPLICATION_QUEUE\' | translate}} </div>\n <p> {{workspace.spooler.queue}} </p>\n </div>\n <div class="col-md-3 portfolio-stat">\n <div>{{\'APPLICATION_DATE\' | translate}} </div>\n <p> {{workspace.spooler.agentconnectAt | date:\'dd/MM/yyyy HH:mm:ss\'}} </p>\n </div>\n</div>\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <span class="caption-subject">{{ workspace.spooler.calleridname }} {{ \'APPLICATION_MOTION_DIALER\' | translate }} {{ \'APPLICATION_DISPOSITION\' | translate }} </span>\n </div>\n </div>\n <div class="portlet-body">\n <div class="padding-bottom row">\n <div class="col-md-12" data-ng-form="tdForm">\n <!-- START RETRIEVE -->\n <div class="form-group" data-ng-class="{\'has-error\': (tdForm.retrieve.$touched || tdForm.$submitted) && tdForm.retrieve.$invalid}">\n <label class="control-label">{{ \'APPLICATION_STATUS\' | translate }}<span class="required" aria-required="true">*</span></label>\n <select name="retrieve" class="form-control" data-ng-model="entitySpooler.retrieve" required>\n <option value="CLOSED">CLOSE</option>\n <option value="OPEN">OPEN</option>\n <option value="BLACK_LIST">BLACKLIST</option>\n <option value="PLANNED">PLANNING</option>\n <option value="PLANNED_PEER">PLANNING AGENT</option>\n </select>\n <span data-ng-show="(tdForm.retrieve.$touched || tdForm.$submitted) && tdForm.retrieve.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END RETRIEVE -->\n <!-- START PLANNING DATE -->\n <div class="form-group" data-ng-if="entitySpooler.retrieve == \'PLANNED\' || entitySpooler.retrieve == \'PLANNED_PEER\'" data-ng-class="{\'has-error\': (tdForm.date.$touched || tdForm.$submitted) && tdForm.date.$invalid}">\n <label class="control-label">PLANNING DATE<span class="required" aria-required="true">*</span></label>\n <uib-datepicker name="date" ng-model="entitySpooler.planningtime" required data-ng-init="entitySpooler.planningtime = moment();"></uib-datepicker>\n <span data-ng-show="(tdForm.date.$touched || tdForm.$submitted) && tdForm.date.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PLANNING DATE -->\n <!-- START PLANNING TIME -->\n <div class="form-group" data-ng-if="entitySpooler.retrieve == \'PLANNED\' || entitySpooler.retrieve == \'PLANNED_PEER\'" data-ng-class="{\'has-error\': (tdForm.time.$touched || tdForm.$submitted) && tdForm.time.$invalid}">\n <label class="control-label">PLANNING TIME<span class="required" aria-required="true">*</span></label>\n <uib-timepicker name="time" ng-model="entitySpooler.planningtime" required show-meridian="false" show-seconds="false"></uib-timepicker>\n <span data-ng-show="(tdForm.time.$touched || tdForm.$submitted) && tdForm.time.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PLANNING TIME -->\n <!-- START PLANNING PEER -->\n <div class="form-group" data-ng-if="entitySpooler.retrieve == \'PLANNED_PEER\'" data-ng-class="{\'has-error\': (tdForm.agent.$touched || tdForm.$submitted) && tdForm.agent.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input name="agent" class="form-control" data-ng-model="entitySpooler.planningpeer" readonly required>\n <span data-ng-show="(tdForm.agent.$touched || tdForm.$submitted) && tdForm.agent.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PLANNING PEER -->\n <button type="button" class="btn btn-circle green-haze btn-sm" data-ng-disabled="!tdForm.$valid" data-ng-click="save()">{{\'APPLICATION_SAVE\' | translate}}</button>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/main/template/template.webPopup.html",'<div class="alert" ng-class="class">\n <h3 data-ng-show="workspace.data.subject" class="alert-heading"><i class="{{icon}}"></i>{{workspace.data.subject}}</h3>\n <hr data-ng-show="workspace.data.subject">\n <div ng-bind-html="html"></div>\n</div>\n'),a.put("app/market/market.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-handbag"></i>\n <a href="/market">Market Place</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <!-- Our Integration -->\n <div class="headline">\n <h3>Our Integrations</h3>\n </div>\n <div class="row thumbnails" data-ng-repeat="group in groupedIntegration">\n <div class="col-md-3" data-ng-repeat="integration in group">\n <div class="our-integrations">\n <h3> {{integration.name}} <small> {{integration.author}}</small></h3>\n <img data-ng-src="{{integration.logo}}" alt="{{integration.name}}" class="img-responsive"/>\n <div class="integration-info" data-ng-if="!integration.downloading">\n <p>\n {{integration.description}}\n </p>\n <div class="pull-right">\n <a data-ng-disabled="isProgressing" data-ng-if="!integration.active" data-ng-click="installIntegration(integration)" href="#" class="btn btn-xs green-meadow">Install <i class="fa fa-download"></i></a>\n <a data-ng-disabled="isProgressing" data-ng-if="integration.active" data-ng-click="uninstallIntegration(integration)" href="#" class="btn btn-xs red-sunglo">Uninstall <i class="fa fa-trash"></i></a>\n <a href="{{integration.link}}" class="btn btn-xs grey-cascade" target="_blank">More <i class="fa fa-link"></i></a>\n </div>\n </div>\n <div class="integration-info" data-ng-if="integration.downloading">\n <div>\n <uib-progressbar class="progress-striped active" value="percentage" type="success"><i style="color:black;">{{status}}</i></uib-progressbar>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!--/thumbnails-->\n <!-- //End Meer Our Team -->\n </div>\n</div>\n'),a.put("app/motiondialer/blacklist/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_CONTACT\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START PHONE -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.phone.$touched || form.$submitted) && form.phone.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="phone" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="item.phone" required/>\n <span data-ng-show="(form.phone.$touched || form.$submitted) && form.phone.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PHONE -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/motiondialer/blacklist/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-control-forward"></i>\n <a href="#">Motion Dialer</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-doc"></i>\n <a href="#">{{ \'APPLICATION_BLACKLIST\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-doc font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_BLACKLIST\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group">\n <button class="btn green-jungle " ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_CONTACT\' | translate }}\n </button>\n <span class="btn default btn-file">\n <span class="fileinput-new"><i class="icon-cloud-upload"></i> {{\'APPLICATION_IMPORT_FROM_CSV\' | translate}}</span>\n <input type="file" nv-file-select="" uploader="uploader"/>\n </span>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/motiondialer/blacklist/list/list.import.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_IMPORT_FROM_CSV\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START PHONE -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.phone.$touched || form.$submitted) && form.phone.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}</label>\n <ui-select data-ng-model="item.phone" theme="bootstrap" name="phone" data-ng-disabled="disabled" required>\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_PHONE\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END PHONE -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <ui-select data-ng-model="item.description" theme="bootstrap" name="description" data-ng-disabled="disabled">\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_DESCRIPTION\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n <!-- START PROGRESS -->\n <div>\n <p>{{\'APPLICATION_IMPORT_SUCCEEDED\' | translate}}: {{import.succeeded}}/{{csvLength}}</p>\n <div class="progress progress-sm" style="">\n <div class="progress-bar progress-bar-info" role="progressbar" ng-style="{ \'width\': import.success + \'%\' }"></div>\n </div>\n </div>\n <div>\n <p>{{\'APPLICATION_IMPORT_FAILED\' | translate}}: {{import.failed}}/{{csvLength}}</p>\n <div class="progress progress-sm" style="">\n <div class="progress-bar progress-bar-danger" role="progressbar" ng-style="{ \'width\': import.fail + \'%\' }"></div>\n </div>\n <div class="has-error" data-ng-if="noPhone.length">\n <span class="help-block help-block-error">\n {{\'APPLICATION_CONTACTS_WITHOUT_PHONE\' | translate}}: {{noPhone}}\n </span>\n </div>\n <div class="has-error" data-ng-if="duplicates.length">\n <span class="help-block help-block-error">\n {{\'APPLICATION_DUPLICATED_CONTACTS\' | translate}}: {{duplicates}}\n </span>\n </div>\n </div>\n <!-- END PROGRESS -->\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="start()" ng-disabled="form.$invalid || !form.phone || submitted">{{ \'APPLICATION_SUBMIT\' | translate }}</button>\n <button class="btn default" type="button" ng-click="close()" data-ng-if="!importing">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n <button class="btn default" type="button" ng-click="stop()" data-ng-if="importing">{{ \'APPLICATION_STOP\' | translate }}</button>\n</div>\n'),a.put("app/motiondialer/info/view/view.about.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_ABOUT\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <form class="form-horizontal form-row-seperated">\n <div class="form-body">\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">Specification</label>\n <div class="col-md-9">\n <input type="text" class="form-control" value="{{properties.SpecificationTitle}} ({{properties.SpecificationVersion}}) - {{properties.SpecificationVendor}}" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">Implementation</label>\n <div class="col-md-9">\n <input type="text" class="form-control" value="{{properties.ImplementationTitle}} ({{properties.ImplementationVersion}}) - {{properties.ImplementationVendor}}" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">Start Time</label>\n <div class="col-md-9">\n <input type="text" class="form-control" data-ng-model="properties.StartTime" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">Uptime</label>\n <div class="col-md-9">\n <input type="text" class="form-control" data-ng-model="properties.Uptime" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">Operating System</label>\n <div class="col-md-9">\n <input type="text" class="form-control" value="{{properties.OsName}} {{properties.OsVersion}} {{properties.OsArch}}" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">Processors</label>\n <div class="col-md-9">\n <input type="text" class="form-control" data-ng-model="properties.Processors" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">System Start Time</label>\n <div class="col-md-9">\n <input type="text" class="form-control" data-ng-model="properties.SystemStartTime" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">System Uptime</label>\n <div class="col-md-9">\n <input type="text" class="form-control" data-ng-model="properties.SystemUptime" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">File System</label>\n <div class="col-md-9">\n <input type="text" class="form-control" value="Usable: {{properties.FileSystem.Usable | number:2}} Free: {{properties.FileSystem.Free | number:2}} Total: {{properties.FileSystem.Total | number:2}}" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n </div>\n </form>\n </div>\n </div>\n </div>\n</div>\n'), +a.put("app/motiondialer/info/view/view.details.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_DETAILS\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <form class="form-horizontal form-row-seperated">\n <div class="form-body">\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">Java Specification Name</label>\n <div class="col-md-9">\n <input type="text" class="form-control" data-ng-model="properties.JavaSpecificationName" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">Java Home</label>\n <div class="col-md-9">\n <input type="text" class="form-control" data-ng-model="properties.JavaHome" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">JavaVm</label>\n <div class="col-md-9">\n <input type="text" class="form-control" value="{{properties.JavaVmName}} ({{properties.JavaVmVersion}} {{properties.JavaVmInfo}}) - {{properties.JavaVmVendor}}" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">Java</label>\n <div class="col-md-9">\n <input type="text" class="form-control" value="Java ({{properties.JavaVersion}} {{properties.JavaClassVersion}}) - {{properties.JavaVendor}}" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">Java Runtime</label>\n <div class="col-md-9">\n <input type="text" class="form-control" value="{{properties.JavaRuntimeName}} ({{JavaRuntimeVersion}})" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">Java Rmi Server Hostname</label>\n <div class="col-md-9">\n <input type="text" class="form-control" value="{{properties.JavaRmiServerHostname}}" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">User</label>\n <div class="col-md-9">\n <input type="text" class="form-control" value="{{properties.UserName}} {{properties.UserLanguage}}-{{properties.UserCountry}} {{properties.UserTimezone}}" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">User Home</label>\n <div class="col-md-9">\n <input type="text" class="form-control" value="{{properties.UserHome}}" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">Hostname</label>\n <div class="col-md-9">\n <input type="text" class="form-control" value="{{properties.Hostname}}" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n </div>\n </form>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/motiondialer/info/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getProperties()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-control-forward"></i>\n <a href="#">Motion Dialer</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-info"></i>\n <a href="/motiondialer/info/view/properties">{{ \'APPLICATION_INFO\' | translate }}</a>\n <i data-ng-show="variable" class="fa fa-angle-right"></i>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/template.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{ \'APPLICATION_INFO\' | translate }}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.motiondialer.info.view.about\')}">\n <a data-ng-href="/motiondialer/info/view/about">\n <i class="icon-globe"></i>\n {{ \'APPLICATION_ABOUT\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.motiondialer.info.view.details\')}">\n <a data-ng-href="/motiondialer/info/view/details">\n <i class="icon-support"></i>\n {{ \'APPLICATION_DETAILS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.motiondialer.info.view.logs\')}">\n <a data-ng-href="/motiondialer/info/view/logs">\n <i class="icon-list"></i>\n {{ \'APPLICATION_LOGS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/motiondialer/info/view/view.logs.html",'<div class="row" data-ng-init="initLogs()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_LOGS\' | translate}}</span>\n </div>\n <button class="btn btn-default float-right" href="#" data-ng-click="initLogs()" data-ng-disabled="loading">\n <i class="icon-refresh"></i>\n </button>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="table1" name="table1" ui-grid-resize-columns ui-grid-pagination ui-grid-auto-resize ui-grid-exporter class="ui-grid">\n <div class="watermark" data-ng-show="!table1.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n <span us-spinner spinner-key="logs-spinner" spinner-start-active="true"></span>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/motiondialer/process/list/list.create.queue.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_PROCESS\' | translate }} {{\'APPLICATION_QUEUE\' | translate}}</h3>\n</div>\n<div class="modal-body">\n <form name="form" ng-init="initModal()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n <!-- START LIST -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.list.$touched || form.$submitted) && form.list.$invalid}">\n <label class="control-label">{{\'APPLICATION_LIST\' | translate}}<span class="required" aria-required="true">*</span></label>\n <select name="list" class="form-control" data-ng-model="item.list" ng-options="list.name for list in lists" required>\n </select>\n <span data-ng-show="(form.list.$touched || form.$submitted) && form.list.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END LIST -->\n <!-- START QUEUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.queue.$touched || form.$submitted) && form.queue.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <select name="queue" class="form-control" data-ng-model="item.queue" ng-options="queue.name for queue in queues" required>\n </select>\n <span data-ng-show="(form.queue.$touched || form.$submitted) && form.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE -->\n <!-- START TIMEOUT QUEUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.timeout.$touched || form.$submitted) && form.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="item.timeout" required/>\n <span data-ng-show="(form.timeout.$touched || form.$submitted) && form.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.timeout.$error.max || form.timeout.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END MAX RETRIES -->\n <!-- START TRUNK -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.device.$touched || form.$submitted) && form.device.$invalid}">\n <label class="control-label">{{\'APPLICATION_TRUNK\' | translate}}<span class="required" aria-required="true">*</span></label>\n <select name="device" class="form-control" data-ng-model="item.device" ng-options="trunk.name for trunk in trunks" required>\n <option value="fake">{{\'APPLICATION_SELECT\' | translate}} {{\'APPLICATION_TRUNK\' | translate}}</option>\n </select>\n <span data-ng-show="(form.queue.$touched || form.$submitted) && form.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TRUNK -->\n <!-- START FETCH SORT -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_FETCH_SORT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <select name="fetch_sort" class="form-control" data-ng-model="item.fetch_sort" ng-options="fetch_sort for fetch_sort in [\'ASC\', \'DESC\']" required>\n </select>\n <span class="help-block">{{\'DESCRIPTION_TD_FETCH_SORT\' | translate}}</span>\n </div>\n <!-- END FETCH SORT-->\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/motiondialer/process/list/list.create.square.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_PROCESS\' | translate }} {{ \'APPLICATION_CALLYSQUARE\' | translate | trusted}}</h3>\n</div>\n<div class="modal-body">\n <form name="form" ng-init="initModal()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n <!-- START LIST -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.list.$touched || form.$submitted) && form.list.$invalid}">\n <label class="control-label">{{\'APPLICATION_LIST\' | translate}}<span class="required" aria-required="true">*</span></label>\n <select name="list" class="form-control" data-ng-model="item.list" ng-options="list.name for list in lists" required>\n </select>\n <span data-ng-show="(form.list.$touched || form.$submitted) && form.list.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END LIST -->\n <!-- START PROJECT -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.project.$touched || form.$submitted) && form.project.$invalid}">\n <label class="control-label">{{\'APPLICATION_PROJECT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <select name="project" class="form-control" data-ng-model="item.project" ng-options="project.name for project in projects" required>\n </select>\n <span data-ng-show="(form.project.$touched || form.$submitted) && form.project.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PROJECT -->\n <!-- START TRUNK -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.device.$touched || form.$submitted) && form.device.$invalid}">\n <label class="control-label">{{\'APPLICATION_TRUNK\' | translate}}<span class="required" aria-required="true">*</span></label>\n <select name="device" class="form-control" data-ng-model="item.device" ng-options="trunk.name for trunk in trunks" required>\n <option value="fake">{{\'APPLICATION_SELECT\' | translate}} {{\'APPLICATION_TRUNK\' | translate}}</option>\n </select>\n <span data-ng-show="(form.device.$touched || form.$submitted) && form.device.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TRUNK -->\n <!-- START FETCH SORT -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_FETCH_SORT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <select name="fetch_sort" class="form-control" data-ng-model="item.fetch_sort" ng-options="fetch_sort for fetch_sort in [\'ASC\', \'DESC\']" required>\n </select>\n <span class="help-block">{{\'DESCRIPTION_TD_FETCH_SORT\' | translate}}</span>\n </div>\n <!-- END FETCH SORT-->\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/motiondialer/process/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-control-forward"></i>\n <a href="#">Motion Dialer</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-settings"></i>\n <a href="#">{{ \'APPLICATION_PROCESSES\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_PROCESSES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group">\n <button class="btn green-jungle dropdown-toggle" data-toggle="dropdown" data-close-others="true">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_PROCESS\' | translate }}\n </button>\n <ul class="dropdown-menu pull-right">\n <li>\n <a href="#" ng-click="createProcessQueue()">{{ \'APPLICATION_QUEUE\' | translate }}</a>\n </li>\n <li>\n <a href="#" ng-click="createProcessSquare()">{{ \'APPLICATION_CALLYSQUARE\' | translate | trusted}}</a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/motiondialer/process/view/view.create.interval.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_INTERVAL\' | translate }} </h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="splittedInterval.alwaysTime"><uib-timepicker name="t_from" data-ng-model="splittedInterval.t_from" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="splittedInterval.alwaysTime"><uib-timepicker name="t_to" data-ng-model="splittedInterval.t_to" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="splittedInterval.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label>\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="splittedInterval.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="splittedInterval.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="splittedInterval.md_from" theme="bootstrap" name="md_from">\n <ui-select-match>{{$select.selected === \'always\' ? \'APPLICATION_ALWAYS\' : $select.selected | translate}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search">\n {{monthDay === \'always\' ? \'APPLICATION_ALWAYS\' : monthDay | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="splittedInterval.md_to" theme="bootstrap" name="md_to">\n <ui-select-match>{{$select.selected === \'always\' ? \'APPLICATION_ALWAYS\' : $select.selected | translate}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search">\n {{monthDay === \'always\' ? \'APPLICATION_ALWAYS\' : monthDay | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="splittedInterval.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.monthsNumber | filter: $select.search">\n {{month.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="splittedInterval.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.monthsNumber | filter: $select.search">\n {{month.name | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/motiondialer/process/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getProcess()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-control-forward"></i>\n <a href="#">Motion Dialer</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-settings"></i>\n <a href="/motiondialer/processes/list">{{ \'APPLICATION_PROCESSES\' | translate }}</a>\n <i data-ng-show="process.name" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="process.name">\n <a href="#">{{process.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/account.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{process.name}} ({{ (process.status === \'RUN\') ? \'RUNNING...\' : \'STOPPED\' }})\n </div>\n <div class="profile-usertitle-job">\n <a href="#" data-ng-click="goToContacts(process.list.id_source)">{{ \'APPLICATION_LIST\' | translate}} {{process.list ? process.list.name : \'#\'+process.id_list}} ({{process.fetch_sort}})</a>\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n <div class="profile-userbuttons">\n <button data-ng-show="process.status" type="button" class="btn btn-circle btn-sm" data-ng-class="{\'green-meadow\': process.status == \'STOP\', \'red-sunglo\': process.status == \'RUN\'}" data-ng-click="runOrStop()">{{ (process.status === \'RUN\') ? \'STOP\' : \'RUN\' }}</button>\n </div>\n <div class="profile-userbuttons">\n <button style="cursor:default" data-ng-show="process.runtime" type="button" class="btn btn-circle btn-sm" data-ng-class="{\'green-meadow\': process.runtime.completed, \'yellow-crusta\': !process.runtime.completed}">{{process.runtime.completed ? \'Complete\' : \'Incomplete\'}}</button>\n <button style="cursor:default" class="btn btn-circle btn-sm" data-ng-class="{\'green-meadow\': !process.runtime.outOfTime, \'red-sunglo\': process.runtime.outOfTime}"><i data-ng-class="{\'icon-clock\': !process.runtime.outOfTime, \'icon-close\': process.runtime.outOfTime}"></i> {{process.runtime.outOfTime ? \'Out of time\' : \'On time\'}}</button>\n </div>\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.motiondialer.processes.view.overview\')}">\n <a data-ng-href="/motiondialer/processes/view/{{process.id}}/overview">\n <i class="icon-home"></i>\n {{ \'APPLICATION_OVERVIEW\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.motiondialer.processes.view.settings\')}">\n <a data-ng-href="/motiondialer/processes/view/{{process.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.motiondialer.processes.view.intervals\')}">\n <a data-ng-href="/motiondialer/processes/view/{{process.id}}/intervals">\n <i class="icon-clock"></i>\n {{ \'APPLICATION_INTERVALS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.motiondialer.processes.view.spooler\')}">\n <a data-ng-href="/motiondialer/processes/view/{{process.id}}/spooler">\n <i class="icon-options-vertical"></i>\n {{ \'APPLICATION_SPOOLER\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/motiondialer/process/view/view.intervals.html",'<div class="row" data-ng-init="initIntervals()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-clock theme-font"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_PROCESS\' | translate}} {{ \'APPLICATION_INTERVALS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_allow" data-toggle="tab">{{ \'APPLICATION_ALLOW\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_disallow" data-toggle="tab">{{ \'APPLICATION_DISALLOW\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- ALLOW TAB -->\n <div class="tab-pane active" id="tab_allow">\n <button class="btn green-jungle margin-bottom-10" ng-click="createInterval(true)">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_INTERVAL\' | translate }} ({{ \'APPLICATION_ALLOW\' | translate }})\n </button>\n <table class="table table-bordered table-hover">\n <thead>\n <tr role="row" class="heading">\n <th>\n {{ \'APPLICATION_VALUE\' | translate}}\n </th>\n <th>\n {{ \'APPLICATION_ACTIONS\' | translate}}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr ng-repeat="interval in process.intervals track by $index">\n <td>\n {{interval}}\n </td>\n <td>\n <button href="javascript:;" data-ng-click="editInterval(true, interval, $index)" class="btn blue-hoki btn-sm"> {{ \'APPLICATION_EDIT\' | translate}} </button>\n <button data-ng-if="$index > 0" data-ng-click="deleteInterval(interval, $index, true)" class="btn red-sunglo btn-sm"> {{ \'APPLICATION_DELETE\' | translate}} </button>\n </td>\n </tr>\n <tr ng-show="!process.intervals.length"><td colspan=2>{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</td></tr>\n </tbody>\n </table>\n </div>\n <!-- END ALLOW TAB -->\n <!-- DISALLOW TAB -->\n <div class="tab-pane" id="tab_disallow">\n <button class="btn green-jungle margin-bottom-10" ng-click="createInterval(false)">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_INTERVAL\' | translate }} ({{ \'APPLICATION_DISALLOW\' | translate }})\n </button>\n <table class="table table-bordered table-hover">\n <thead>\n <tr role="row" class="heading">\n <th>\n {{ \'APPLICATION_VALUE\' | translate}}\n </th>\n <th>\n {{ \'APPLICATION_ACTIONS\' | translate}}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr ng-repeat="interval in process.not_intervals track by $index">\n <td>\n {{interval}}\n </td>\n <td>\n <button href="javascript:;" data-ng-click="editInterval(false, interval)" class="btn blue-hoki btn-sm"> {{ \'APPLICATION_EDIT\' | translate}} </button>\n <button href="javascript:;" data-ng-click="deleteInterval($index, interval, false)" class="btn red-sunglo btn-sm"> {{ \'APPLICATION_DELETE\' | translate}} </button>\n </td>\n </tr>\n <tr ng-show="!process.not_intervals.length"><td colspan=2>{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</td></tr>\n </tbody>\n </table>\n\n </div>\n <!-- END DISALLOW TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'), +a.put("app/motiondialer/process/view/view.overview.html",'<div class="row" data-ng-init="getSummary()">\n <div class="col-md-12">\n <!-- BEGIN PORTLET -->\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-bar-chart theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_OVERVIEW\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_summary" data-toggle="tab">{{ \'APPLICATION_SUMMARY\' | translate}}</a>\n </li>\n <li ng-show="process.runtime">\n <a href="#" data-target="#tab_advanced" data-toggle="tab">{{ \'APPLICATION_ADVANCED\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- START SUMMARY TAB -->\n <div class="tab-pane active" id="tab_summary">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n <div class="row number-stats margin-bottom-30">\n <div class="col-md-6 col-sm-6 col-xs-6">\n <div class="stat-left">\n <div class="stat-number">\n <div class="title">\n {{\'APPLICATION_TOTAL\' | translate}}\n </div>\n <div class="number">\n {{total}}\n </div>\n </div>\n </div>\n </div>\n <div class="col-md-6 col-sm-6 col-xs-6">\n <div class="stat-right">\n <div class="stat-number">\n <div class="title">\n {{\'APPLICATION_FRESH\' | translate}}\n </div>\n <div class="number">\n {{process.runtime.fresh || 0}}\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="table-scrollable table-scrollable-borderless">\n <table class="table table-hover table-light">\n <thead>\n <tr class="uppercase">\n <th>\n {{\'APPLICATION_STATUS\' | translate}}\n </th>\n <th>\n {{\'APPLICATION_VALUE\' | translate}}\n </th>\n <th>\n {{\'APPLICATION_RATE\' | translate}}\n </th>\n <th>\n {{\'APPLICATION_DESCRIPTION\' | translate}}\n </th>\n </tr>\n </thead>\n <tr ng-repeat="sum in summary">\n <td>\n <a href="#" class="primary-link">{{\'APPLICATION_TD_\' + sum[0] | translate}}</a>\n </td>\n <td>\n {{sum[1]}}\n </td>\n <td>\n <span class="bold theme-font">{{ total ? ((sum[1]/total)*100).toFixed(2) : 0 }}%</span>\n </td>\n <td>\n {{\'DESCRIPTION_TD_\' + sum[0] | translate}}\n </td>\n </tr>\n </table>\n </div>\n </div>\n <!-- END SUMMARY TAB -->\n <!-- START SUMMARY TAB -->\n <div class="tab-pane" id="tab_advanced" ng-show="process.runtime">\n <div class="row number-stats margin-bottom-30">\n <div class="col-md-6 col-sm-6 col-xs-6">\n <div class="stat-left">\n <div class="stat-number">\n <div class="title">\n {{\'APPLICATION_SUCCESS\' | translate}}\n </div>\n <div class="number">\n {{process.runtime.success || 0}}\n </div>\n </div>\n </div>\n </div>\n <div class="col-md-6 col-sm-6 col-xs-6">\n <div class="stat-right">\n <div class="stat-number">\n <div class="title">\n {{\'APPLICATION_FAILED\' | translate}}\n </div>\n <div class="number">\n {{process.runtime.failed || 0}}\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="table-scrollable table-scrollable-borderless">\n <table class="table table-hover table-light">\n <thead>\n <tr class="uppercase">\n <th>\n {{\'APPLICATION_STATUS\' | translate}}\n </th>\n <th>\n {{\'APPLICATION_VALUE\' | translate}}\n </th>\n <th>\n {{\'APPLICATION_DESCRIPTION\' | translate}}\n </th>\n </tr>\n </thead>\n <tr ng-repeat="(key, value) in process.runtime">\n <td>\n <a href="#" class="primary-link">{{\'APPLICATION_\' + key.toUpperCase() | translate}}</a>\n </td>\n <td ng-switch on="key">\n <span ng-switch-when="avgDial">{{value | number:2}}</span>\n <span ng-switch-when="avgDuration">{{value | number:2}}</span>\n <span ng-switch-when="avgProgress">{{value | number:2}}</span>\n <span ng-switch-when="completed">{{((value)? \'APPLICATION_YES\' : \'APPLICATION_NO\') | translate}}</span>\n <span ng-switch-when="outOfTime">{{((value)? \'APPLICATION_YES\' : \'APPLICATION_NO\') | translate}}</span>\n <span ng-switch-default>{{value}}</span>\n </td>\n <td>\n {{\'DESCRIPTION_TD_\' + key.toUpperCase() | translate}}\n </td>\n </tr>\n </table>\n </div>\n </div>\n <!-- END SUMMARY TAB -->\n </div>\n </div>\n </div>\n <!-- END PORTLET -->\n </div>\n</div>\n'),a.put("app/motiondialer/process/view/view.run.process.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_STATUS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <p>\n Do you want to {{ status }} the process?\n </p>\n</div>\n<div class="modal-footer">\n <button class="btn default green-meadow" type="button" ng-click="yes()">{{ \'APPLICATION_YES\' | translate }}</button>\n <button class="btn default" type="button" ng-click="no()">{{ \'APPLICATION_NO\' | translate }}</button>\n</div>\n'),a.put("app/motiondialer/process/view/view.settings.html",'<div class="row" data-ng-init="initSettings()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_PROCESS\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_general" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_channel" data-toggle="tab">{{ \'APPLICATION_CHANNEL\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_advanced" data-toggle="tab">{{ \'APPLICATION_ADVANCED\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_status" data-toggle="tab">{{ \'APPLICATION_STATUS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_general">\n <form name="form" data-ng-submit="form.$valid && updateProcess()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="process.name" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n <!-- START QUEUE -->\n <div data-ng-show="process.queue != \'none\'" class="form-group" data-ng-class="{\'has-error\': (form.queue.$touched || form.$submitted) && form.queue.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="process.queue" name="queue" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="queue.name as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.queue.$touched || form.$submitted) && form.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE -->\n <!-- START MAX RETRIES -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.max_retries.$touched || form.$submitted) && form.max_retries.$invalid}">\n <label class="control-label">{{\'APPLICATION_MAX_RETRIES\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" max="100" name="max_retries" placeholder="{{\'APPLICATION_MAX_RETRIES\' | translate}}" class="form-control" data-ng-model="process.max_retries" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_MAX_RETRIES\' | translate}}</span>\n <span data-ng-show="(form.max_retries.$touched || form.$submitted) && form.max_retries.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.max_retries.$error.max || form.max_retries.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END MAX RETRIES -->\n <!-- START RETRY TIME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.retry_time.$touched || form.$submitted) && form.retry_time.$invalid}">\n <label class="control-label">{{\'APPLICATION_RETRY_TIME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="retry_time" placeholder="{{\'APPLICATION_RETRY_TIME\' | translate}}" class="form-control" data-ng-model="process.retry_time" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_RETRY_TIME\' | translate}}</span>\n <span data-ng-show="(form.retry_time.$touched || form.$submitted) && form.retry_time.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.retry_time.$error.max || form.retry_time.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END RETRY TIME -->\n <!-- START RETRY TIME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.wait_time.$touched || form.$submitted) && form.wait_time.$invalid}">\n <label class="control-label">{{\'APPLICATION_WAIT_TIME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1000" name="wait_time" placeholder="{{\'APPLICATION_WAIT_TIME\' | translate}}" class="form-control" data-ng-model="process.wait_time" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_WAIT_TIME\' | translate}}</span>\n <span data-ng-show="(form.wait_time.$touched || form.$submitted) && form.wait_time.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.wait_time.$error.max || form.wait_time.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END WAIT TIME -->\n <!-- START AUTO CLOSED -->\n <!-- <div class="form-group">\n <label class="control-label">{{\'APPLICATION_AUTO_CLOSED\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-model="process.auto_closed"\n type="checkbox"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-animate="false">\n <span class="help-block">{{\'DESCRIPTION_TD_AUTO_CLOSED\' | translate}}</span>\n </div> -->\n <!-- END AUTO CLOSED -->\n <!-- START WEIGHT -->\n <!-- END WEIGHT -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_AUTODIAL_LEVEL\' | translate}}</label></br>\n <slider ng-model="process.weight" min="0" step="1" max="50"></slider>\n <label>{{\'APPLICATION_VALUE\' | translate}}: {{process.weight}}</label>\n <span class="help-block">{{\'DESCRIPTION_TD_WEIGHT\' | translate}}</span>\n </div>\n <!-- START DISPOSAL -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_TD_DISPOSAL\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-model="process.disposal"\n type="checkbox"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-animate="false">\n <span class="help-block">{{\'DESCRIPTION_TD_DISPOSAL\' | translate}}</span>\n </div>\n <!-- END DISPOSAL -->\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="process.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n <!-- CHANNEL TAB -->\n <div class="tab-pane" id="tab_channel">\n <form name="form" data-ng-submit="form.$valid && updateProcess()" novalidate>\n <!-- START CONTEXT -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.context.$touched || form.$submitted) && form.context.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONTEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="context" placeholder="{{\'APPLICATION_CONTEXT\' | translate}}" class="form-control" data-ng-model="process.context" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_CONTEXT\' | translate}}</span>\n <span data-ng-show="(form.context.$touched || form.$submitted) && form.context.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONTEXT -->\n <!-- START EXTENSION -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.extension.$touched || form.$submitted) && form.extension.$invalid}">\n <label class="control-label">{{\'APPLICATION_EXTENSION\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="extension" placeholder="{{\'APPLICATION_EXTENSION\' | translate}}" class="form-control" data-ng-model="process.extension" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_EXTENSION\' | translate}}</span><a href="/channels/voice/routes/internal/list">Link {{\'APPLICATION_INTERNAL\' | translate}}</a>\n <span data-ng-show="(form.extension.$touched || form.$submitted) && form.extension.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EXTENSION -->\n <!-- START PRIORITY -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.priority.$touched || form.$submitted) && form.priority.$invalid}">\n <label class="control-label">{{\'APPLICATION_PRIORITY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="priority" placeholder="{{\'APPLICATION_PRIORITY\' | translate}}" class="form-control" data-ng-model="process.priority" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_PRIORITY\' | translate}}</span>\n <span data-ng-show="(form.priority.$touched || form.$submitted) && form.priority.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.priority.$error.max || form.priority.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END PRIORITY -->\n <!-- START PREFIX -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_PREFIX\' | translate}}</label>\n <input type="text" name="prefix_code" placeholder="{{\'APPLICATION_PREFIX\' | translate}}" class="form-control" data-ng-model="process.prefix_code"/>\n <span class="help-block">{{\'DESCRIPTION_TD_PREFIX\' | translate}}</span>\n </div>\n <!-- END PREFIX -->\n <!-- START TECHNOLOGY -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_TECHNOLOGY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <select name="tech" class="form-control" data-ng-model="process.tech" ng-options="tech for tech in techs" required>\n </select>\n <span class="help-block">{{\'DESCRIPTION_TD_TECHNOLOGY\' | translate}}</span>\n </div>\n <!-- END TECHNOLOGY -->\n <!-- START DEVICE -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.device.$touched || form.$submitted) && form.device.$invalid}">\n <label class="control-label">{{\'APPLICATION_TRUNK\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="device" placeholder="{{\'APPLICATION_TRUNK\' | translate}}" class="form-control" data-ng-model="process.device" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_TRUNK\' | translate}}</span>\n <span data-ng-show="(form.device.$touched || form.$submitted) && form.device.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DEVICE -->\n <!-- START CALLERID -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.callerid.$touched || form.$submitted) && form.callerid.$invalid}">\n <label class="control-label">{{\'APPLICATION_CALLERID\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="callerid" placeholder="{{\'APPLICATION_CALLERID\' | translate}}" class="form-control" data-ng-model="process.callerid" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_CALLERID\' | translate}}</span>\n <span data-ng-show="(form.callerid.$touched || form.$submitted) && form.callerid.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CALLERID -->\n <!-- START CODEC -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALLOWED_CODECS\' | translate}}</label>\n <ui-select multiple data-ng-model="process.codecs" name="codecs" theme="bootstrap" data-ng-disabled="disabled">\n <ui-select-match placeholder="Select codec...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="codec in codecs">\n {{codec}}\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END CODEC -->\n <!-- START DIAL FORMAT -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DIAL_FORMAT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <select name="dial_format" class="form-control" data-ng-model="process.dial_format" ng-options="dial_format for dial_format in dialFormats" required>\n </select>\n <span class="help-block">{{\'DESCRIPTION_TD_DIAL_FORMAT\' | translate}}</span>\n </div>\n <!-- END DIAL FORMAT -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END CHANNEL TAB -->\n <!-- ADVANCED TAB -->\n <div class="tab-pane" id="tab_advanced">\n <form name="form" data-ng-submit="form.$valid && updateProcess()" novalidate>\n <!-- START CHECK DUPLICATE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_CHECK_DUPLICATE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <select name="check_duplicate" class="form-control" data-ng-model="process.check_duplicate" ng-options="check_duplicate for check_duplicate in checkDuplicates" required>\n </select>\n <span class="help-block">{{\'DESCRIPTION_TD_CHECK_DUPLICATE\' | translate}}</span>\n </div>\n <!-- END CHECK DUPLICATE -->\n <!-- START CHECK BLACKLIST -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_CHECK_BLACKLIST\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-model="process.check_blacklist"\n type="checkbox"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-animate="false">\n <span class="help-block">{{\'DESCRIPTION_TD_CHECK_BLACKLIST\' | translate}}</span>\n </div>\n <!-- END CHECK BLACKLIST -->\n <!-- START CHECK PHONE LENGHT -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.check_phone_length.$touched || form.$submitted) && form.check_phone_length.$invalid}">\n <label class="control-label">{{\'APPLICATION_CHECK_PHONE_LENGHT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="check_phone_length" placeholder="{{\'APPLICATION_CHECK_PHONE_LENGHT\' | translate}}" class="form-control" data-ng-model="process.check_phone_length" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_CHECK_PHONE_LENGHT\' | translate}}</span>\n <span data-ng-show="(form.check_phone_length.$touched || form.$submitted) && form.check_phone_length.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.check_phone_length.$error.max || form.check_phone_length.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END CHECK PHONE LENGHT -->\n <!-- START TIME SLICE -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.time_slice.$touched || form.$submitted) && form.time_slice.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIME_SLICE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="time_slice" placeholder="{{\'APPLICATION_TIME_SLICE\' | translate}}" class="form-control" data-ng-model="process.time_slice" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_TIME_SLICE\' | translate}}</span>\n <span data-ng-show="(form.time_slice.$touched || form.$submitted) && form.time_slice.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.time_slice.$error.max || form.time_slice.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END TIME SLICE -->\n <!-- START MISSED -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_CHECK_MISSED\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-model="process.missed"\n type="checkbox"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-animate="false">\n <span class="help-block">{{\'DESCRIPTION_TD_CHECK_MISSED\' | translate}}</span>\n </div>\n <!-- END MISSED -->\n <!-- START CHANNEL LIMIT -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.channel_limit.$touched || form.$submitted) && form.channel_limit.$invalid}">\n <label class="control-label">{{\'APPLICATION_CHANNEL_LIMIT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="0" name="channel_limit" placeholder="{{\'APPLICATION_CHANNEL_LIMIT\' | translate}}" class="form-control" data-ng-model="process.channel_limit" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_CHANNEL_LIMIT\' | translate}}</span>\n <span data-ng-show="(form.channel_limit.$touched || form.$submitted) && form.channel_limit.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.channel_limit.$error.max || form.channel_limit.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END CHANNEL LIMIT -->\n <!-- START CONTEXT FOR OTHER CALLS -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_CONTEXT_FOR_OTHER_CALLS\' | translate}}</label>\n <input type="text" name="context_for_other_calls" placeholder="{{\'APPLICATION_CONTEXT_FOR_OTHER_CALLS\' | translate}}" class="form-control" data-ng-model="process.context_for_other_calls"/>\n <span class="help-block">{{\'DESCRIPTION_TD_CONTEXT_FOR_OTHER_CALLS\' | translate}}</span>\n </div>\n <!-- END CONTEXT FOR OTHER CALLS -->\n <!-- START EXTENSION FOR OTHER CALLS-->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_EXTENSION_FOR_OTHER_CALLS\' | translate}}</label>\n <input type="text" name="extension_for_other_calls" placeholder="{{\'APPLICATION_EXTENSION_FOR_OTHER_CALLS\' | translate}}" class="form-control" data-ng-model="process.extension_for_other_calls"/>\n <span class="help-block">{{\'DESCRIPTION_TD_EXTENSION_FOR_OTHER_CALLS\' | translate}}</span>\n </div>\n <!-- END EXTENSION FOR OTHER CALLS-->\n <!-- START PRIORITY FOR OTHER CALLS-->\n <div class="form-group" data-ng-class="{\'has-error\': (form.priority_for_other_calls.$touched || form.$submitted) && form.priority_for_other_calls.$invalid}">\n <label class="control-label">{{\'APPLICATION_PRIORITY_FOR_OTHER_CALLS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="priority_for_other_calls" placeholder="{{\'APPLICATION_PRIORITY_FOR_OTHER_CALLS\' | translate}}" class="form-control" data-ng-model="process.priority_for_other_calls"/>\n <span class="help-block">{{\'DESCRIPTION_TD_PRIORITY_FOR_OTHER_CALLS\' | translate}}</span>\n <span data-ng-show="form.priority_for_other_calls.$error.max || form.priority_for_other_calls.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END PRIORITY FOR OTHER CALLS -->\n <!-- START TIMEZONE -->\n <!-- <div class="form-group">\n <label class="control-label">{{\'APPLICATION_EXTENDED_TIME_INTERVAL\' | translate}}</label>\n <input type="text" name="timezone" placeholder="08:30-20:30" class="form-control" data-ng-model="process.timezone"/>\n <span class="help-block">{{\'DESCRIPTION_TD_EXTENDED_TIME_INTERVAL\' | translate}}</span>\n </div> -->\n <!-- END TIMEZONE -->\n\n <!-- START AUTO TIMEZONE MANAGEMENT -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_AUTO_TIMEZONE_MANAGEMENT\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-model="process.auto_timezone_management"\n type="checkbox"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-animate="false">\n <span class="help-block">{{\'DESCRIPTION_TD_AUTO_TIMEZONE_MANAGEMENT\' | translate}}</span>\n </div>\n <!-- END AUTO TIMEZONE MANAGEMENT -->\n <!-- START IGNORE STRINGS-->\n <!-- COMMENTED: BECAUSE IGNORE_STRINGS IS AN ARRAY NOT A STRING-->\n <!-- <div class="form-group">\n <label class="control-label">{{\'APPLICATION_IGNORE_STRINGS\' | translate}}</label>\n <input type="text" name="ignore_strings" placeholder="{{\'APPLICATION_IGNORE_STRINGS\' | translate}}" class="form-control" data-ng-model="process.ignore_strings"/>\n <span class="help-block">{{\'DESCRIPTION_TD_IGNORE_STRINGS\' | translate}}</span>\n </div> -->\n <!-- END IGNORE STRINGS-->\n <!-- START MIN OPERATOR -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.min_operator.$touched || form.$submitted) && form.min_operator.$invalid}">\n <label class="control-label">{{\'APPLICATION_MIN_OPERATOR\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="min_operator" placeholder="{{\'APPLICATION_MIN_OPERATOR\' | translate}}" class="form-control" data-ng-model="process.min_operator" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_MIN_OPERATOR\' | translate}}</span>\n <span data-ng-show="(form.min_operator.$touched || form.$submitted) && form.min_operator.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.min_operator.$error.max || form.min_operator.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END MIN OPERATOR -->\n <!-- START ALERT MAX CALLS -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.alert_max_calls.$touched || form.$submitted) && form.alert_max_calls.$invalid}">\n <label class="control-label">{{\'APPLICATION_ALERT_MAX_CALLS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="0" name="alert_max_calls" placeholder="{{\'APPLICATION_ALERT_MAX_CALLS\' | translate}}" class="form-control" data-ng-model="process.alert_max_calls" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_ALERT_MAX_CALLS\' | translate}}</span>\n <span data-ng-show="(form.alert_max_calls.$touched || form.$submitted) && form.alert_max_calls.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.alert_max_calls.$error.max || form.alert_max_calls.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END ALERT MAX CALLS -->\n <!-- START ALERT TIME SLICE -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.alert_time_slice.$touched || form.$submitted) && form.alert_time_slice.$invalid}">\n <label class="control-label">{{\'APPLICATION_ALERT_TIME_SLICE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="alert_time_slice" placeholder="{{\'APPLICATION_ALERT_TIME_SLICE\' | translate}}" class="form-control" data-ng-model="process.alert_time_slice" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_ALERT_TIME_SLICE\' | translate}}</span>\n <span data-ng-show="(form.alert_time_slice.$touched || form.$submitted) && form.alert_time_slice.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.alert_time_slice.$error.max || form.alert_time_slice.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END ALERT TIME SLICE -->\n <!-- START DROP MAX COUNT -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.drop_max_count.$touched || form.$submitted) && form.drop_max_count.$invalid}">\n <label class="control-label">{{\'APPLICATION_DROP_MAX_COUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="0" name="drop_max_count" placeholder="{{\'APPLICATION_DROP_MAX_COUNT\' | translate}}" class="form-control" data-ng-model="process.drop_max_count" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_DROP_MAX_COUNT\' | translate}}</span>\n <span data-ng-show="(form.drop_max_count.$touched || form.$submitted) && form.drop_max_count.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.drop_max_count.$error.max || form.drop_max_count.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END DROP MAX COUNT -->\n <!-- START SUCCESS CALL SIZE -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.success_call_size.$touched || form.$submitted) && form.success_call_size.$invalid}">\n <label class="control-label">{{\'APPLICATION_SUCCESS_CALL_SIZE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="success_call_size" placeholder="{{\'APPLICATION_SUCCESS_CALL_SIZE\' | translate}}" class="form-control" data-ng-model="process.success_call_size" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_SUCCESS_CALL_SIZE\' | translate}}</span>\n <span data-ng-show="(form.success_call_size.$touched || form.$submitted) && form.success_call_size.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.success_call_size.$error.max || form.success_call_size.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END SUCCESS CALL SIZE -->\n <!-- START IGNORE STRINGS-->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_TIME_EXPIRED\' | translate}}</label>\n <input type="text" name="expiredtime" placeholder="yyyy-MM-dd HH:mm:ss" class="form-control" data-ng-model="process.expiredtime"/>\n <span class="help-block">{{\'DESCRIPTION_TD_TIME_EXPIRED\' | translate}}</span>\n </div>\n <!-- END IGNORE STRINGS-->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ANDVANCED TAB -->\n <!-- START STATUS TAB -->\n <div class="tab-pane" id="tab_status">\n <form name="form" data-ng-submit="form.$valid && updateProcess()" novalidate>\n <table class="table table-bordered table-hover">\n <thead>\n <tr role="row" class="heading">\n <th>\n {{ \'APPLICATION_VALUE\' | translate}}\n </th>\n <th>\n {{ \'APPLICATION_MAX_RETRIES\' | translate}}\n </th>\n <th>\n {{ \'APPLICATION_RETRY_TIME\' | translate}} [min]\n </th>\n <th>\n {{ \'APPLICATION_DESCRIPTION\' | translate}}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>\n {{ \'APPLICATION_AMD\' | translate}}\n </td>\n <td>\n <input type="number" min="0" name="amd_max_retries"class="form-control" data-ng-model="process.amd_max_retries" required/>\n <span data-ng-show="(form.amd_max_retries.$touched || form.$submitted) && form.amd_max_retries.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.amd_max_retries.$error.max || form.amd_max_retries.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n <input type="number" min="0" name="amd_retry_time" class="form-control" data-ng-model="process.amd_retry_time" required/>\n <span data-ng-show="(form.amd_retry_time.$touched || form.$submitted) && form.amd_retry_time.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.amd_retry_time.$error.max || form.amd_retry_time.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n {{ \'DESCRIPTION_TD_STATUS_AMD\' | translate}}\n </td>\n </tr>\n <tr>\n <td>\n {{ \'APPLICATION_BUSY\' | translate}}\n </td>\n <td>\n <input type="number" min="0" name="busy_max_retries"class="form-control" data-ng-model="process.busy_max_retries" required/>\n <span data-ng-show="(form.busy_max_retries.$touched || form.$submitted) && form.busy_max_retries.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.busy_max_retries.$error.max || form.busy_max_retries.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n <input type="number" min="0" name="busy_retry_time"class="form-control" data-ng-model="process.busy_retry_time" required/>\n <span data-ng-show="(form.busy_retry_time.$touched || form.$submitted) && form.busy_retry_time.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.busy_retry_time.$error.max || form.busy_retry_time.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n {{ \'DESCRIPTION_TD_STATUS_BUSY\' | translate}}\n </td>\n </tr>\n <tr>\n <td>\n {{ \'APPLICATION_CONGESTION\' | translate}}\n </td>\n <td>\n <input type="number" min="0" name="congestion_max_retries"class="form-control" data-ng-model="process.congestion_max_retries" required/>\n <span data-ng-show="(form.congestion_max_retries.$touched || form.$submitted) && form.congestion_max_retries.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.congestion_max_retries.$error.max || form.congestion_max_retries.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n <input type="number" min="0" name="congestion_retry_time"class="form-control" data-ng-model="process.congestion_retry_time" required/>\n <span data-ng-show="(form.congestion_retry_time.$touched || form.$submitted) && form.congestion_retry_time.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.congestion_retry_time.$error.max || form.congestion_retry_time.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n {{ \'DESCRIPTION_TD_STATUS_CONGESTION\' | translate}}\n </td>\n </tr>\n <tr>\n <td>\n {{ \'APPLICATION_DROP\' | translate}}\n </td>\n <td>\n <input type="number" min="0" name="drop_max_retries"class="form-control" data-ng-model="process.drop_max_retries" required/>\n <span data-ng-show="(form.drop_max_retries.$touched || form.$submitted) && form.drop_max_retries.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.drop_max_retries.$error.max || form.drop_max_retries.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n <input type="number" min="0" name="drop_retry_time"class="form-control" data-ng-model="process.drop_retry_time" required/>\n <span data-ng-show="(form.drop_retry_time.$touched || form.$submitted) && form.drop_retry_time.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.drop_retry_time.$error.max || form.drop_retry_time.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n {{ \'DESCRIPTION_TD_STATUS_DROP\' | translate}}\n </td>\n </tr>\n <tr>\n <td>\n {{ \'APPLICATION_FAILED\' | translate}}\n </td>\n <td>\n <input type="number" min="0" name="failed_max_retries"class="form-control" data-ng-model="process.failed_max_retries" required/>\n <span data-ng-show="(form.failed_max_retries.$touched || form.$submitted) && form.failed_max_retries.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.failed_max_retries.$error.max || form.failed_max_retries.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n <input type="number" min="0" name="failed_retry_time"class="form-control" data-ng-model="process.failed_retry_time" required/>\n <span data-ng-show="(form.failed_retry_time.$touched || form.$submitted) && form.failed_retry_time.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.failed_retry_time.$error.max || form.failed_retry_time.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n {{ \'DESCRIPTION_TD_STATUS_FAILED\' | translate}}\n </td>\n </tr>\n <tr>\n <td>\n {{ \'APPLICATION_NOANSWER\' | translate}}\n </td>\n <td>\n <input type="number" min="0" name="noanswer_max_retries"class="form-control" data-ng-model="process.noanswer_max_retries" required/>\n <span data-ng-show="(form.noanswer_max_retries.$touched || form.$submitted) && form.noanswer_max_retries.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.noanswer_max_retries.$error.max || form.noanswer_max_retries.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n <input type="number" min="0" name="noanswer_retry_time"class="form-control" data-ng-model="process.noanswer_retry_time" required/>\n <span data-ng-show="(form.noanswer_retry_time.$touched || form.$submitted) && form.noanswer_retry_time.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.noanswer_retry_time.$error.max || form.noanswer_retry_time.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n {{ \'DESCRIPTION_TD_STATUS_NOANSWER\' | translate}}\n </td>\n </tr>\n <tr>\n <td>\n {{ \'APPLICATION_NOSUCHEXTENSION\' | translate}}\n </td>\n <td>\n <input type="number" min="0" name="nosuchextension_max_retries"class="form-control" data-ng-model="process.nosuchextension_max_retries" required/>\n <span data-ng-show="(form.nosuchextension_max_retries.$touched || form.$submitted) && form.nosuchextension_max_retries.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.nosuchextension_max_retries.$error.max || form.nosuchextension_max_retries.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n <input type="number" min="0" name="nosuchextension_retry_time"class="form-control" data-ng-model="process.nosuchextension_retry_time" required/>\n <span data-ng-show="(form.nosuchextension_retry_time.$touched || form.$submitted) && form.nosuchextension_retry_time.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.nosuchextension_retry_time.$error.max || form.nosuchextension_retry_time.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n {{ \'DESCRIPTION_TD_STATUS_NOSUCHEXTENSION\' | translate}}\n </td>\n </tr>\n <tr>\n <td>\n {{ \'APPLICATION_RINGTIMEOUT\' | translate}}\n </td>\n <td>\n <input type="number" min="0" name="ringtimeout_max_retries"class="form-control" data-ng-model="process.ringtimeout_max_retries" data-ng-init="!process.ringtimeout_max_retries && (process.ringtimeout_max_retries = 0)" required/>\n <span data-ng-show="(form.ringtimeout_max_retries.$touched || form.$submitted) && form.ringtimeout_max_retries.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.ringtimeout_max_retries.$error.max || form.ringtimeout_max_retries.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n <input type="number" min="0" name="ringtimeout_retry_time" class="form-control" data-ng-model="process.ringtimeout_retry_time" data-ng-init="!process.ringtimeout_retry_time && (process.ringtimeout_retry_time = 0)" required/>\n <span data-ng-show="(form.ringtimeout_retry_time.$touched || form.$submitted) && form.ringtimeout_retry_time.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.ringtimeout_retry_time.$error.max || form.ringtimeout_retry_time.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n {{ \'DESCRIPTION_TD_STATUS_RINGTIMEOUT\' | translate}}\n </td>\n </tr>\n </tbody>\n </table>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END STATUS TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'), +a.put("app/motiondialer/process/view/view.spooler.edit.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_EDIT\' | translate }} {{ \'APPLICATION_CONTACT\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <!-- START RETRIEVE -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.retrieve.$touched || form.$submitted) && form.retrieve.$invalid}" ng-init="initModal()">\n <label class="control-label">{{ \'APPLICATION_STATUS\' | translate }}<span class="required" aria-required="true">*</span></label>\n <select name="retrieve" class="form-control" data-ng-model="entitySpooler.retrieve" required>\n <option value="CLOSED">CLOSE</option>\n <option value="OPEN">OPEN</option>\n <option value="BLACK_LIST">BLACKLIST</option>\n <option value="PLANNED">PLANNING</option>\n <option value="PLANNED_PEER">PLANNING AGENT</option>\n </select>\n <span data-ng-show="(form.retrieve.$touched || form.$submitted) && form.retrieve.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END RETRIEVE -->\n <!-- START PLANNING DATE -->\n <div class="form-group" data-ng-if="entitySpooler.retrieve == \'PLANNED\' || entitySpooler.retrieve == \'PLANNED_PEER\'" data-ng-class="{\'has-error\': (form.date.$touched || form.$submitted) && form.date.$invalid}">\n <label class="control-label">PLANNING DATE<span class="required" aria-required="true">*</span></label>\n <uib-datepicker name="date" ng-model="entitySpooler.planningtime" required init-date="initDate"></uib-datepicker>\n <span data-ng-show="(form.date.$touched || form.$submitted) && form.date.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PLANNING DATE -->\n <!-- START PLANNING TIME -->\n <div class="form-group" data-ng-if="entitySpooler.retrieve == \'PLANNED\' || entitySpooler.retrieve == \'PLANNED_PEER\'" data-ng-class="{\'has-error\': (form.time.$touched || form.$submitted) && form.time.$invalid}">\n <label class="control-label">PLANNING TIME<span class="required" aria-required="true">*</span></label>\n <uib-timepicker name="time" ng-model="entitySpooler.planningtime" required show-meridian="false" show-seconds="false"></uib-timepicker>\n <span data-ng-show="(form.time.$touched || form.$submitted) && form.time.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PLANNING TIME -->\n <!-- START PLANNING PEER -->\n <div class="form-group" data-ng-if="entitySpooler.retrieve == \'PLANNED_PEER\'" data-ng-class="{\'has-error\': (form.agent.$touched || form.$submitted) && form.agent.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <select name="agent" class="form-control" data-ng-model="entitySpooler.planningpeer" ng-options="agent for agent in agents" required>\n </select>\n <span data-ng-show="(form.agent.$touched || form.$submitted) && form.agent.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PLANNING PEER -->\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/motiondialer/process/view/view.spooler.history.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_HISTORY\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <json-formatter json="historySpooler" open="2"></json-formatter>\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/motiondialer/process/view/view.spooler.html",'<div class="row" data-ng-init="getSpooler()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_SPOOLER\' | translate}} </span>\n </div>\n <div class="actions">\n <a class="btn btn-default" href="#" data-ng-click="getSpooler()">\n <i class="icon-refresh"></i>\n </a>\n </div>\n </div>\n\n <div class="portlet-body">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/reset/reset.html",'<!-- BEGIN LOGO -->\n<div class="logo" data-ng-init="getInfo()">\n <a href="index.html">\n <img ng-src="api/settings/logo/login" alt="logo" class="custom-login-logo" onError="this.onerror=null"/>\n </a>\n</div>\n<!-- END LOGO -->\n<!-- BEGIN RESET -->\n<div class="content">\n <!-- BEGIN RESET FORM -->\n <form name="resetForm" data-ng-submit="resetForm.$valid && reset()" novalidate>\n <h3>{{\'APPLICATION_RESET_PASSWORD\' | translate}}</h3>\n <p>\n {{\'APPLICATION_INSERT_NEW_PASSWORD_RESET\' | translate}}\n </p>\n <div class="form-group" data-ng-class="{\'has-error\': resetForm.$submitted && resetForm.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_NEW_PASSWORD\' | translate}}</label>\n <div class="input-icon">\n <i class="icon-key"></i>\n <input class="form-control form-control-solid placeholder-no-fix" type="password" placeholder="{{\'APPLICATION_NEW_PASSWORD\' | translate}}" name="password" ng-model="userReset.password" data-ng-pattern="setting.securePassword ? settings.patternPassword : settings.patternPasswordLight" required/>\n </div>\n <span class="help-block">\n {{setting.securePassword ? \'MESSAGE_PASSWORD_FORMAT\' : \'MESSAGE_PASSWORD_LIGHT_FORMAT\' | translate}}\n </span>\n <span data-ng-show="resetForm.$submitted && resetForm.password.$invalid" class="help-block">{{\'MESSAGE_REQUIRED_FIELD\' | translate}}</span>\n <span data-ng-show="(resetForm.password.$touched || resetForm.$submitted) && resetForm.password.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': resetForm.$submitted && resetForm.rePassword.$invalid}">\n <label class="control-label">{{\'APPLICATION_RE_TYPE_NEW_PASSWORD\' | translate}}</label>\n <div class="input-icon">\n <i class="icon-key"></i>\n <input class="form-control form-control-solid placeholder-no-fix" type="password" placeholder="{{\'APPLICATION_RE_TYPE_NEW_PASSWORD\' | translate}}" name="rePassword" ng-model="userReset.rePassword" nx-equal="userReset.password" required/>\n </div>\n <span data-ng-show="resetForm.$submitted && resetForm.rePassword.$invalid" class="help-block">{{\'MESSAGE_REQUIRED_FIELD\' | translate}}</span>\n <span data-ng-show="(resetForm.password.$touched || resetForm.$submitted) && resetForm.$error.nxEqual" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_PASSWORD\' | translate}}.\n </span>\n </div>\n <div class="form-actions">\n <button type="submit" class="btn btn-success uppercase">{{\'APPLICATION_SUBMIT\' | translate}}</button>\n </div>\n </form>\n <!-- END RESET FORM-->\n <div class="login-options">\n <h4>{{\'APPLICATION_FOLLOW_US\' | translate}}</h4>\n <ul class="social-icons">\n <li>\n <a class="social-icon-color facebook" data-original-title="facebook" href="https://www.facebook.com/xenialab"></a>\n </li>\n <li>\n <a class="social-icon-color twitter" data-original-title="Twitter" href="https://twitter.com/xenialab"></a>\n </li>\n <li>\n <a class="social-icon-color googleplus" data-original-title="Goole Plus" href="#"></a>\n </li>\n <li>\n <a class="social-icon-color linkedin" data-original-title="Linkedin" href="#"></a>\n </li>\n </ul>\n </div>\n</div>\n<div class="copyright">\n xCALLY Motion v. {{info.version}} | 2016 - {{year + 1}} © Powered by Xenialab <ng-bind-html data-ng-if="license.custom && !settings.defaultFooterWhiteLabel && settings.footerWhiteLabel" ng-bind-html="\'| \'+settings.footerWhiteLabel"></ng-bind-html>\n</div>\n<!-- END RESET -->\n'),a.put("app/salesforce/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-cloud"></i>\n <a href="/salesforce/list">{{ \'APPLICATION_SALESFORCE\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="fa fa-cloud font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_SALESFORCE\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/salesforce/wizard" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ACCOUNT\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/salesforce/view/configuration/list/create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_CONFIGURATION\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.name.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.name.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START CHANNEL -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.channel.$touched || form.channel.$submitted) && form.channel.$invalid}">\n <label class="control-label">{{\'APPLICATION_CHANNEL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.channel" name="channel" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_CHANNEL\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="channel.value as channel in channels | filter: $select.search">\n <div data-ng-bind="channel.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.channel.$touched || form.channel.$submitted) && form.channel.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START CHANNEL -->\n\n <!-- START VOICE SUBTYPE -->\n <div data-ng-if="item.channel===\'voice\'" class="form-group" data-ng-class="{\'has-error\': (form.channel.$touched || form.channel.$submitted) && form.channel.$invalid}">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.type" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_TYPE\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="type in [\'Queue\',\'Outbound\'] | filter: $select.search">\n <div data-ng-bind="type | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.type.$touched || form.type.$submitted) && form.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START CHANNEL -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/salesforce/view/configuration/list/list.html",'<div ui-view class="profile-content">\n <div class="row">\n <div class="col-md-12">\n <div class="portlet light" data-ng-init="initView()">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_CONFIGURATIONS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="#" data-ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_CONFIGURATION\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/salesforce/view/configuration/view/view.html",'<div class="row" data-ng-init="initView();getConfiguration();getCustomVariables();getFields();">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_CONFIGURATION\' | translate}}: {{configurationName}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_SUBJECT\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_DESCRIPTION\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{\'APPLICATION_FIELDS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- SUBJECT TAB -->\n <div class="tab-pane ui-padding active" id="tab_1_1">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">All following fields will be join by blank space:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItem(\'subject\')"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div id="subject-item-list" ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="subjectItem in subjectConfig">\n <div class="col-md-3">\n <ui-select ng-model="subjectItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeType(subjectItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in fieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-8" data-ng-if="subjectItem.type==\'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="subjectItem.content" data-ng-change="updateField(subjectItem)">\n </div>\n </div>\n <div class="col-md-8" data-ng-if="subjectItem.type==\'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="subjectItem.variableName" data-ng-change="updateField(subjectItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices group-by="groupVariableByGroup" repeat="variable.name as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-8" data-ng-if="subjectItem.type==\'customVariable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="subjectItem.VariableId" data-ng-change="updateField(subjectItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in customVariables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(subjectItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END SUBJECT TAB -->\n <!-- DESCRIPTION TAB -->\n <div class="tab-pane ui-padding" id="tab_1_2">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">All following fields will be join by new line:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItem(\'description\')"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div id="description-item-list" ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="descriptionItem in descriptionConfig">\n <div class="col-md-2">\n <ui-select ng-model="descriptionItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeDescType(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in descFieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-9" data-ng-if="descriptionItem.type==\'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="descriptionItem.content" data-ng-change="updateField(descriptionItem)">\n </div>\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\'">\n <input type="text" class="form-control" placeholder="Key" data-ng-model="descriptionItem.key" data-ng-change="updateField(descriptionItem)">\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\'">\n <ui-select ng-model="descriptionItem.keyType" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeDescType(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in fieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\' && descriptionItem.keyType==\'string\'">\n <input type="text" class="form-control" placeholder="Value" data-ng-model="descriptionItem.keyContent" data-ng-change="updateField(descriptionItem)">\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\' && descriptionItem.keyType==\'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="descriptionItem.variableName" data-ng-change="updateField(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices group-by="groupVariableByGroup" repeat="variable.name as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\' && descriptionItem.keyType==\'customVariable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="descriptionItem.VariableId" data-ng-change="updateField(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in customVariables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(descriptionItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END DESCRIPTION TAB -->\n <!-- FIELDS TAB -->\n <div class="tab-pane ui-padding" id="tab_1_3">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">Add how to fill the fields present in your account:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItem(\'field\')"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div id="field-item-list" ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="fieldItem in fieldConfig">\n <div class="col-md-3">\n <ui-select ng-model="fieldItem.idField" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeFieldType(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.label}}</ui-select-match>\n <ui-select-choices repeat="item.name as item in accountFields | filter: $select.search">\n <div ng-bind-html="item.label | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-8" data-ng-if="getSystemFieldOptions(fieldItem.idField)">\n <div class="form-group">\n <ui-select ng-model="fieldItem.content" theme="bootstrap" ng-disabled="disabled" data-ng-change="updateField(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.label}}</ui-select-match>\n <ui-select-choices repeat="item.value as item in getSystemFieldOptions(fieldItem.idField) | filter: $select.search">\n <div ng-bind-html="item.label | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField)">\n <div class="form-group">\n <ui-select ng-model="fieldItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeType(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in fieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search | ucfirst"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="fieldItem.content" data-ng-change="updateField(fieldItem)">\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="fieldItem.variableName" data-ng-change="updateField(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices group-by="groupVariableByGroup" repeat="variable.name as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'customVariable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="fieldItem.VariableId" data-ng-change="updateField(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in customVariables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(fieldItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END FIELDS TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/salesforce/view/view.account.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACCOUNT\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERALS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.formSetting" data-ng-submit="forms.formSetting.$valid && updateItem()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.name" required/>\n <span data-ng-show="forms.formSetting.name.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="account.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="account.username" required/>\n <span data-ng-show="forms.formSetting.username.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START REMOTE ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.remoteUri.$invalid}">\n <label class="control-label">{{\'APPLICATION_URI\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remoteUri" placeholder="{{\'APPLICATION_URI\' | translate}}" class="form-control" data-ng-model="account.remoteUri" required />\n <span data-ng-show="forms.formSetting.remoteUri.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="account.password" required/>\n <span data-ng-show="forms.formSetting.password.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START CLIENT ID -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.clientId.$invalid}">\n <label class="control-label">{{\'APPLICATION_CLIENT_ID\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="clientId" placeholder="{{\'APPLICATION_CLIENT_ID\' | translate}}" class="form-control" data-ng-model="account.clientId" required/>\n <span data-ng-show="forms.formSetting.clientId.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CLIENT ID -->\n\n <!-- START CLIENT SECRET -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.clientSecret.$invalid}">\n <label class="control-label">{{\'APPLICATION_CLIENT_SECRET\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="clientSecret" placeholder="{{\'APPLICATION_CLIENT_SECRET\' | translate}}" class="form-control" data-ng-model="account.clientSecret" required/>\n <span data-ng-show="forms.formSetting.clientSecret.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CLIENT SECRET -->\n\n <!-- START SECURITY TOKEN -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.securityToken.$invalid}">\n <label class="control-label">{{\'APPLICATION_SECURITY_TOKEN\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="securityToken" placeholder="{{\'APPLICATION_SECURITY_TOKEN\' | translate}}" class="form-control" data-ng-model="account.securityToken" required/>\n <span data-ng-show="forms.formSetting.securityToken.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SECURITY TOKEN -->\n\n <!-- START SERVER URL -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.serverUrl.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}}</label>\n <input type="url" name="serverUrl" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="account.serverUrl"/>\n <span class="help-block">\n {{\'DESCRIPTION_SERVER_URL\' | translate}}.\n </span>\n <span class="help-block help-block-info">\n {{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n </span>\n </div>\n <!-- END SERVER URL -->\n\n <!-- START AUTH TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.authType.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTEGRATION_TYPE\' | translate}}</label>\n <ui-select data-ng-model="account.integrationType" name="integrationType" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_INTEGRATION_TYPE\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="type in [\'classic\', \'embedded\'] | filter: $select.search">\n <div data-ng-bind="type | capitalize | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.formSetting.authType.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START AUTH TYPE -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'), +a.put("app/salesforce/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-cloud"></i>\n <a href="/salesforce/list">{{ \'APPLICATION_SALESFORCE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <a href="#">{{account.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img src="assets/images/media/salesforce.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{account.name}}\n </div>\n <div class="profile-usertitle-job">\n {{account.remoteUri}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.salesforce.view.account\')}">\n <a ng-href="/salesforce/view/{{account.id}}/account">\n <i class="icon-user"></i>\n {{ \'APPLICATION_ACCOUNT\' | translate }} </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.salesforce.view.configurations\') || $state.is(\'main.salesforce.view.configuration\')}">\n <a ng-href="/salesforce/view/{{account.id}}/configurations/list">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_CONFIGURATIONS\' | translate }} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/salesforce/wizard/wizard.html",'<!-- BEGIN PAGE HEADER-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-cloud"></i>\n <a href="/salesforce/list">{{ \'APPLICATION_SALESFORCE\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n<!-- END PAGE HEADER-->\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initWizard()">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACCOUNT\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_ACCOUNT_INFO\' | translate}}" canexit="exitValidation(forms.formSetting.$valid)">\n <form name="forms.formSetting" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="forms.formSetting.name.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="item.username" required ng-remote-validate="/api/salesforce/accounts/validate/username"/>\n <span data-ng-show="forms.formSetting.username.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formSetting.username.$touched || forms.formSetting.$submitted) && forms.formSetting.username.$error.ngRemoteValidate" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_EXIST_USERNAME\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n\n <!-- START REMOTE ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.remoteUri.$invalid}">\n <label class="control-label">{{\'APPLICATION_URI\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remoteUri" placeholder="{{\'APPLICATION_URI\' | translate}}" class="form-control" data-ng-model="item.remoteUri" required/>\n <span data-ng-show="forms.formSetting.remoteUri.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.password" required/>\n <span data-ng-show="forms.formSetting.password.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START CLIENT ID -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.clientId.$invalid}">\n <label class="control-label">{{\'APPLICATION_CLIENT_ID\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="clientId" placeholder="{{\'APPLICATION_CLIENT_ID\' | translate}}" class="form-control" data-ng-model="item.clientId" required/>\n <span data-ng-show="forms.formSetting.clientId.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CLIENT ID -->\n\n <!-- START CLIENT SECRET -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.clientSecret.$invalid}">\n <label class="control-label">{{\'APPLICATION_CLIENT_SECRET\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="clientSecret" placeholder="{{\'APPLICATION_CLIENT_SECRET\' | translate}}" class="form-control" data-ng-model="item.clientSecret" required/>\n <span data-ng-show="forms.formSetting.clientSecret.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CLIENT SECRET -->\n\n <!-- START SECURITY TOKEN -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.securityToken.$invalid}">\n <label class="control-label">{{\'APPLICATION_SECURITY_TOKEN\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="securityToken" placeholder="{{\'APPLICATION_SECURITY_TOKEN\' | translate}}" class="form-control" data-ng-model="item.securityToken" required/>\n <span data-ng-show="forms.formSetting.securityToken.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SECURITY TOKEN -->\n\n <!-- START SERVER URL -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.serverUrl.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}}</label>\n <input type="url" name="serverUrl" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.serverUrl"/>\n <span class="help-block">\n {{\'DESCRIPTION_SERVER_URL\' | translate}}.\n </span>\n <span class="help-block help-block-info">\n {{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n </span>\n </div>\n <!-- END SERVER URL -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" data-ng-click="next()"/>\n\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n\n </wizard>\n\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/setting/customization/view/general/general.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_GENERAL_CUSTOMIZATION\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_LOGO\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{ \'APPLICATION_FOOTER_WHITE_LABEL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- CHANGE LOGO TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <div class="col-md-6 col-sm-6" >\n <div class="portlet light bordered" style="min-height:411px;">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-pie-chart font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_MAIN\' | translate }}</span>\n </div>\n <div class="actions">\n </div>\n </div>\n <div class="portlet-body">\n <form action="#" role="form" class="row">\n <!-- START STATUS -->\n <div class="form-group col-md-6 col-sm-6">\n <label class="control-label">{{\'APPLICATION_DEFAULT\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="settings.defaultLogo"\n data-ng-init="settings.defaultLogo = license.custom ? settings.defaultLogo : true"\n type="checkbox"\n name="defaultLogo"\n data-ng-change="update()"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END STATUS -->\n <div class="form-group col-md-6 col-sm-6" data-ng-if="!settings.defaultLogo && license.custom">\n <div class="fileinput fileinput-new" data-provides="fileinput">\n <div class="fileinput-new thumbnail">\n <img ng-src="assets/images/media/noProfileImage.png" alt=""/>\n </div>\n <div class="fileinput-preview fileinput-exists thumbnail">\n </div>\n <div>\n <span class="btn default btn-file" data-ng-show="!uploader.queue[0]">\n <span> {{ \'APPLICATION_SELECT_IMAGE\' | translate }} </span>\n <input type="file" nv-file-select="" uploader="uploader"/><br/>\n </span>\n <button type="button" class="btn default" data-ng-show="uploader.queue[0]" data-dismiss="fileinput" ng-click="uploader.queue[0].remove()">\n {{ \'APPLICATION_REMOVE\' | translate }}\n </button>\n <button type="button" class="btn green-haze" data-ng-show="uploader.queue[0]" data-ng-click="uploader.queue[0].upload()" ng-disabled="uploader.queue[0].isReady || uploader.queue[0].isUploading || uploader.queue[0].isSuccess">\n {{ \'APPLICATION_CONFIRM\' | translate }}\n </button>\n </div>\n <p>\n </br> {{ \'MESSAGE_SUPPORTED_FORMATS\' | translate }} <b>jpg, png, jpeg</b>.\n </p>\n </div>\n </div>\n </form>\n <div data-ng-show="uploader2.isHTML5" >\n <div data-ng-repeat="item in uploader.queue" nowrap style="border-top-style:none">\n <strong>{{ item.file.name }}</strong> {{ item.file.size/1024/1024|number:2 }} MB\n <button type="button" class="btn btn-danger btn-xs" data-ng-click="item.remove()">\n <span class="glyphicon glyphicon-trash"></span> Remove\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="col-md-6 col-sm-6">\n <div class="portlet light bordered" style="min-height:411px;">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-pie-chart font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_LOGIN\' | translate }}</span>\n </div>\n <div class="actions">\n </div>\n </div>\n <div class="portlet-body">\n <form action="#" role="form" class="row">\n <!-- START STATUS -->\n <div class="form-group col-md-6 col-sm-6">\n <label class="control-label">{{\'APPLICATION_DEFAULT\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="settings.defaultLoginLogo"\n data-ng-init="settings.defaultLoginLogo = license.custom ? settings.defaultLoginLogo : true"\n type="checkbox"\n name="defaultLoginLogo"\n data-ng-change="update()"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END STATUS -->\n <div class="form-group col-md-6 col-sm-6" data-ng-if="!settings.defaultLoginLogo && license.custom">\n <div class="fileinput fileinput-new" data-provides="fileinput">\n <div class="fileinput-new thumbnail">\n <img ng-src="assets/images/media/noProfileImage.png" alt=""/>\n </div>\n <div class="fileinput-preview fileinput-exists thumbnail">\n </div>\n <div>\n <span class="btn default btn-file" data-ng-show="!uploader2.queue[0]">\n <span> {{ \'APPLICATION_SELECT_IMAGE\' | translate }} </span>\n <input type="file" nv-file-select="" uploader="uploader2"/><br/>\n </span>\n <button type="button" class="btn default" data-ng-show="uploader2.queue[0]" data-dismiss="fileinput" ng-click="uploader2.queue[0].remove()">\n {{ \'APPLICATION_REMOVE\' | translate }}\n </button>\n <button type="button" class="btn green-haze" data-ng-show="uploader2.queue[0]" data-ng-click="uploader2.queue[0].upload()" ng-disabled="uploader2.queue[0].isReady || uploader2.queue[0].isUploading || uploader2.queue[0].isSuccess">\n {{ \'APPLICATION_CONFIRM\' | translate }}\n </button>\n </div>\n <p>\n </br> {{ \'MESSAGE_SUPPORTED_FORMATS\' | translate }} <b>jpg, png, jpeg</b>.\n </p>\n </div>\n </div>\n </form>\n <div data-ng-show="uploader2.isHTML5" >\n <div data-ng-repeat="item in uploader.queue" nowrap style="border-top-style:none">\n <strong>{{ item.file.name }}</strong> {{ item.file.size/1024/1024|number:2 }} MB\n <button type="button" class="btn btn-danger btn-xs" data-ng-click="item.remove()">\n <span class="glyphicon glyphicon-trash"></span> Remove\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- END CHANGE LOGO TAB -->\n <!-- CHANGE FOOTER WHITE LABEL TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.footerWhiteLabel" data-ng-submit="forms.footerWhiteLabel.$valid && update()" novalidate>\n <!-- START DEFAULT -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DEFAULT\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="settings.defaultFooterWhiteLabel"\n type="checkbox"\n name="defaultFooterWhiteLabel"\n data-ng-change="update()"\n data-ng-init="settings.defaultFooterWhiteLabel = license.custom ? settings.defaultFooterWhiteLabel : true"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END DEFAULT -->\n <!-- START LABEL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.footerWhiteLabel.footerWhiteLabel.$touched || forms.footerWhiteLabel.$submitted) && forms.footerWhiteLabel.footerWhiteLabel.$invalid}">\n <label class="control-label">{{\'APPLICATION_FOOTER_WHITE_LABEL\' | translate}}<span data-ng-if="!settings.defaultFooterWhiteLabel" class="required" aria-required="true">*</span></label>\n <textarea name="footer" placeholder="{{\'APPLICATION_FOOTER_WHITE_LABEL\' | translate}}" class="form-control" data-ng-model="settings.footerWhiteLabel" data-ng-disabled="settings.defaultFooterWhiteLabel || !license.custom" data-ng-required="!settings.defaultFooterWhiteLabel && license.custom"/></textarea>\n <span data-ng-show="(forms.footerWhiteLabel.footerWhiteLabel.$touched || forms.footerWhiteLabel.$submitted) && forms.footerWhiteLabel.footerWhiteLabel.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END LABEL -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}" data-ng-disabled="!license.custom"/>\n </form>\n </div>\n <!-- END CHANGE FOOTER WHITE LABEL TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/setting/customization/view/motionbar/motionbar.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_MOTION_BAR_CUSTOMIZATION\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_LOGO\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- CHANGE LOGO TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <div class="col-md-12 col-sm-12" >\n <div class="portlet light bordered" style="min-height:411px;">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-pie-chart font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_MAIN\' | translate }}</span>\n </div>\n <div class="actions">\n </div>\n </div>\n <div class="portlet-body">\n <form action="#" role="form" class="row">\n <!-- START STATUS -->\n <div class="form-group col-md-6 col-sm-6">\n <label class="control-label">{{\'APPLICATION_DEFAULT\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="settings.defaultMotionBarLogo"\n data-ng-init="settings.defaultMotionBarLogo = license.preferred ? settings.defaultMotionBarLogo : true"\n type="checkbox"\n name="defaultMotionBarLogo"\n data-ng-change="update()"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END STATUS -->\n <div class="form-group col-md-6 col-sm-6" data-ng-if="!settings.defaultMotionBarLogo && license.preferred">\n <div class="fileinput fileinput-new" data-provides="fileinput">\n <div class="fileinput-new thumbnail">\n <img ng-src="assets/images/media/noProfileImage.png" alt=""/>\n </div>\n <div class="fileinput-preview fileinput-exists thumbnail">\n </div>\n <div>\n <span class="btn default btn-file" data-ng-show="!uploader.queue[0]">\n <span> {{ \'APPLICATION_SELECT_IMAGE\' | translate }} </span>\n <input type="file" nv-file-select="" uploader="uploader"/><br/>\n </span>\n <button type="button" class="btn default" data-ng-show="uploader.queue[0]" data-dismiss="fileinput" ng-click="uploader.queue[0].remove()">\n {{ \'APPLICATION_REMOVE\' | translate }}\n </button>\n <button type="button" class="btn green-haze" data-ng-show="uploader.queue[0]" data-ng-click="uploader.queue[0].upload()" ng-disabled="uploader.queue[0].isReady || uploader.queue[0].isUploading || uploader.queue[0].isSuccess">\n {{ \'APPLICATION_CONFIRM\' | translate }}\n </button>\n </div>\n <p>\n </br> {{ \'MESSAGE_SUPPORTED_FORMATS\' | translate }} <b>jpg, png, jpeg</b>.\n </p>\n </div>\n </div>\n </form>\n <div data-ng-show="uploader.isHTML5" >\n <div data-ng-repeat="item in uploader.queue" nowrap style="border-top-style:none">\n <strong>{{ item.file.name }}</strong> {{ item.file.size/1024/1024|number:2 }} MB\n <button type="button" class="btn btn-danger btn-xs" data-ng-click="item.remove()">\n <span class="glyphicon glyphicon-trash"></span> Remove\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- END CHANGE LOGO TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/setting/customization/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-settings"></i>\n <a href="#">{{ \'APPLICATION_SETTINGS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-globe"></i>\n <a href="#">{{ \'APPLICATION_CUSTOMIZATION\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img src="assets/images/media/customize.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{ \'APPLICATION_CUSTOMIZATION\' | translate }}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.setting.customization.view.general\')}">\n <a ng-href="/setting/customization/view/general">\n <i class="icon-picture"></i>\n {{ \'APPLICATION_GENERAL\' | translate }} </a>\n </li>\n <li data-ng-if="license.preferred" data-ng-class="{active: $state.is(\'main.setting.customization.view.motionbar\')}">\n <a ng-href="/setting/customization/view/motionbar">\n <i class="icon-screen-desktop"></i>\n {{ \'APPLICATION_MOTION_BAR\' | translate }} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/setting/general/view/main/main.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_GENERAL_SETTINGS\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="forms.main" data-ng-submit="forms.main.$valid && update()" novalidate>\n <!-- START MIN INTERNAL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.main.min_internal.$touched || forms.main.$submitted) && forms.main.min_internal.$invalid}">\n <label class="control-label">{{\'APPLICATION_MIN_INTERNAL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="min_internal" placeholder="{{\'APPLICATION_MIN_INTERNAL\' | translate}}" class="form-control" data-ng-model="settings.min_internal" required/>\n <span data-ng-show="(forms.main.min_internal.$touched || forms.main.$submitted) && forms.main.min_internal.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MIN INTERNAL -->\n\n <!-- START MIN MAILBOX -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.main.min_mailbox.$touched || forms.main.$submitted) && forms.main.min_mailbox.$invalid}">\n <label class="control-label">{{\'APPLICATION_MIN_MAILBOX\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="min_mailbox" placeholder="{{\'APPLICATION_MIN_MAILBOX\' | translate}}" class="form-control" data-ng-model="settings.min_mailbox" required/>\n <span data-ng-show="(forms.main.min_mailbox.$touched || forms.main.$submitted) && forms.main.min_mailbox.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MIN MAILBOX -->\n\n <!-- START MAIL ROUTING -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.main.mailRoutingCapacity.$touched || forms.main.$submitted) && forms.main.mailRoutingCapacity.$invalid}">\n <label class="control-label">{{\'APPLICATION_MAIL_ROUTING_BUFFER_CAPACITY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" max="50" name="mailRoutingCapacity" placeholder="{{\'APPLICATION_MAIL_ROUTING_BUFFER_CAPACITY\' | translate}}" class="form-control" data-ng-model="settings.mailRoutingCapacity" required/>\n <span class="help-block">\n {{\'APPLICATION_MAIL_ROUTING_BUFFER_CAPACITY_DESC\' | translate}}\n </span>\n <span data-ng-show="(forms.main.mailRoutingCapacity.$touched || forms.main.$submitted) && forms.main.mailRoutingCapacity.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MAIL ROUTING -->\n\n <!-- START CHAT ROUTING -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.main.chatRoutingCapacity.$touched || forms.main.$submitted) && forms.main.chatRoutingCapacity.$invalid}">\n <label class="control-label">{{\'APPLICATION_CHAT_ROUTING_BUFFER_CAPACITY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" max="50" name="chatRoutingCapacity" placeholder="{{\'APPLICATION_CHAT_ROUTING_BUFFER_CAPACITY\' | translate}}" class="form-control" data-ng-model="settings.chatRoutingCapacity" required/>\n <span class="help-block">\n {{\'APPLICATION_CHAT_ROUTING_BUFFER_CAPACITY_DESC\' | translate}}\n </span>\n <span data-ng-show="(forms.main.chatRoutingCapacity.$touched || forms.main.$submitted) && forms.main.chatRoutingCapacity.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CHAT ROUTING -->\n\n <!-- START AGI PORT -->\n <!-- NOTE: CUSTOM AGI PORT DEPRECATED -->\n <!-- <div class="form-group" data-ng-class="{\'has-error\': (forms.main.agi_port.$touched || forms.main.$submitted) && forms.main.agi_port.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGI_PORT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="agi_port" placeholder="{{\'APPLICATION_AGI_PORT\' | translate}}" class="form-control" data-ng-model="settings.agi_port" required/>\n <span data-ng-show="(forms.main.agi_port.$touched || forms.main.$submitted) && forms.main.agi_port.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div> -->\n <!-- END AGI PORT -->\n\n <!-- START SECURE PASSWORD -->\n <div class="form-group">\n <label class="control-label">\n {{\'APPLICATION_SECURE_PASSWORD\' | translate}}\n </label><br>\n <input\n bs-switch\n data-ng-model="settings.securePassword"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <!-- END SECURE PASSWORD -->\n\n <!-- START AUTO LOGOUT -->\n <div class="form-group">\n <label class="control-label">\n {{\'APPLICATION_AGENT_AUTO_LOGOUT\' | translate}}\n </label><br>\n <input\n bs-switch\n data-ng-model="settings.logoutOnWindowClose"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <!-- END AUTO LOGOUT -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n </div>\n </div>\n</div>\n'), +a.put("app/setting/general/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-settings"></i>\n <a href="#">{{ \'APPLICATION_SETTINGS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-globe"></i>\n <a href="#">{{ \'APPLICATION_GENERAL\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img src="assets/images/media/customize.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{ \'APPLICATION_GENERAL\' | translate }}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.setting.general.view.main\')}">\n <a ng-href="/setting/general/view/main">\n <i class="icon-picture"></i>\n {{ \'APPLICATION_MAIN\' | translate }} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/setting/license/view/update.modal.html",'<div class="modal-header" data-ng-init="getLicense()">\n <h3 class="modal-title">{{ \'APPLICATION_UPDATE_LICENSE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START LICENSE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_LICENSE\' | translate}}</label>\n <textarea type="text" style="min-height:95px;" name="description" placeholder="{{\'APPLICATION_LICENSE\' | translate}}" class="form-control" data-ng-model="item.license"></textarea>\n </div>\n <!-- END LICENSE -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="update()" ng-disabled="form.$invalid">{{ \'APPLICATION_UPDATE\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/setting/license/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-settings"></i>\n <a href="#">{{ \'APPLICATION_SETTINGS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-info"></i>\n <a href="#">{{ \'APPLICATION_LICENSE\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE CONTENT -->\n <div class="profile-content">\n <div class="row" data-ng-if="item.expirationTime > -1 && !item.demo">\n <div class="col-md-12">\n <div class="note note-warning">\n <h4 class="block"><strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_YOUR_LICENSE_WILL_EXPIRE\' | translate}} <strong>{{license.expirationTime}}</strong> {{\'MESSAGE_DAYS\' | translate}}.</h4>\n <p data-ng-if="item.token !== item.token2">\n {{\'MESSAGE_SEND_EMAIL_TO\' | translate}} <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, my new token is: {{license.token2}}. Old token: {{license.token}}">license@xcally.com</a>.\n </p>\n <p data-ng-if="item.token !== item.token2">\n {{\'APPLICATION_OLD\' | translate | uppercase}} Token: <strong>{{license.token}}</strong>\n </p>\n <p data-ng-if="item.token !== item.token2">\n {{\'APPLICATION_NEW\' | translate | uppercase}} Token: <strong>{{license.token2}}</strong>\n </p>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-6">\n <div class="pricing hover-effect">\n <div class="pricing-head">\n <h3 data-ng-switch="license.months">\n <div ng-switch-when="1">{{\'APPLICATION_MONTH_TO_MONTH\' | translate}}</div>\n <div ng-switch-when="12">{{\'APPLICATION_YEARLY\' | translate}}</div>\n <div ng-switch-when="36">{{\'APPLICATION_PERPETUAL\' | translate}}</div>\n <div ng-switch-default>{{\'APPLICATION_UNKNOWN\' | translate}}</div>\n <div class="h5" data-ng-if="item.token === item.token2">{{license.token || \'unknown\'}} </div><div class="h5" data-ng-if="item.token !== item.token2"><div><b>{{\'APPLICATION_OLD_UID\' | translate}}:</b> {{license.token || \'unknown\'}}</div><div><b>{{\'APPLICATION_NEW_UID\' | translate}}:</b> {{license.token2 || \'unknown\'}}</div> </div>\n </h3>\n <h4><i>{{license.expiration ? (license.expiration | date:\'medium\') : \'DEMO\'}}</i>\n <span data-ng-show="license.expiration">Expiration Date </span>\n </h4>\n </div>\n <ul class="pricing-content list-unstyled">\n <li class="row">\n <div class="col-md-9">\n <i class="icon-eye"></i> {{\'APPLICATION_USERS\' | translate}}:\n </div>\n <div class="col-md-3 text-center">\n {{(license.users || license.users >= 0) ? license.users : \'unknown\'}}\n </div>\n </li>\n <li class="row">\n <div class="col-md-9">\n <i class="icon-people"></i> {{\'APPLICATION_AGENTS\' | translate}} ({{\'APPLICATION_CONCURRENTS\' | translate}}):\n </div>\n <div class="col-md-3 text-center">\n {{(license.agents || license.agents >= 0) ? license.agents : \'unknown\'}}\n </div>\n </li>\n <li class="row">\n <div class="col-md-9">\n <i class="icon-phone"></i> {{\'APPLICATION_TELEPHONES\' | translate}}:\n </div>\n <div class="col-md-3 text-center">\n {{(license.telephones || license.telephones >= 0) ? license.telephones : \'unknown\'}}\n </div>\n </li>\n <li class="row">\n <div class="col-md-9">\n <i class="icon-bubble"></i> {{\'APPLICATION_CHAT\' | translate}}:\n </div>\n <div class="col-md-3 text-center">\n <span class="label label-sm" data-ng-class="license.chat ? \'label-success\' : \'label-danger\'">{{license.chat ? \'APPLICATION_ENABLED\' : \'APPLICATION_DISABLED\' | translate}}</span>\n </div>\n </li>\n <li class="row">\n <div class="col-md-9">\n <i class="icon-envelope"></i> {{\'APPLICATION_MAIL\' | translate}}:\n </div>\n <div class="col-md-3 text-center">\n <span class="label label-sm" data-ng-class="license.mail ? \'label-success\' : \'label-danger\'">{{license.mail ? \'APPLICATION_ENABLED\' : \'APPLICATION_DISABLED\' | translate}}</span>\n </div>\n </li>\n <li class="row">\n <div class="col-md-9">\n <i class="fa fa-fax"></i> {{\'APPLICATION_FAX\' | translate}}:\n </div>\n <div class="col-md-3 text-center">\n <span class="label label-sm" data-ng-class="license.fax ? \'label-success\' : \'label-danger\'">{{license.fax ? \'APPLICATION_ENABLED\' : \'APPLICATION_DISABLED\' | translate}}</span>\n </div>\n </li>\n <li class="row">\n <div class="col-md-9">\n <i class="glyphicon glyphicon-comment"></i> {{\'APPLICATION_SMS\' | translate}}:\n </div>\n <div class="col-md-3 text-center">\n <span class="label label-sm" data-ng-class="license.messaging ? \'label-success\' : \'label-danger\'">{{license.messaging ? \'APPLICATION_ENABLED\' : \'APPLICATION_DISABLED\' | translate}}</span>\n </div>\n </li>\n <li class="row">\n <div class="col-md-9">\n <i class="icon-globe"></i> {{\'APPLICATION_OPEN_CHANNEL\' | translate}}:\n </div>\n <div class="col-md-3 text-center">\n <span class="label label-sm" data-ng-class="license.openchannel ? \'label-success\' : \'label-danger\'">{{license.openchannel ? \'APPLICATION_ENABLED\' : \'APPLICATION_DISABLED\' | translate}}</span>\n </div>\n </li>\n <li class="row">\n <div class="col-md-9">\n <i class="icon-notebook"></i> {{\'APPLICATION_CONTACT_MANAGER\' | translate}}:\n </div>\n <div class="col-md-3 text-center">\n <span class="label label-sm" data-ng-class="license.cm ? \'label-success\' : \'label-danger\'">{{license.cm ? \'APPLICATION_ENABLED\' : \'APPLICATION_DISABLED\' | translate}}</span>\n </div>\n </li>\n <li class="row">\n <div class="col-md-9">\n <i class="icon-control-forward"></i> {{\'APPLICATION_MOTION_DIALER\' | translate}}:\n </div>\n <div class="col-md-3 text-center">\n <span class="label label-sm" data-ng-class="license.dialer ? \'label-success\' : \'label-danger\'">{{license.dialer ? \'APPLICATION_ENABLED\' : \'APPLICATION_DISABLED\' | translate}}</span>\n </div>\n </li>\n <li class="row">\n <div class="col-md-9">\n <i class="fa fa-edit"></i> {{\'APPLICATION_JSCRIPTY\' | translate}}:\n </div>\n <div class="col-md-3 text-center">\n <span class="label label-sm" data-ng-class="license.jscripty ? \'label-success\' : \'label-danger\'">{{license.jscripty ? \'APPLICATION_ENABLED\' : \'APPLICATION_DISABLED\' | translate}}</span>\n </div>\n </li>\n <li class="row">\n <div class="col-md-9">\n <i class="icon-equalizer"></i> {{\'APPLICATION_CUSTOMIZATION\' | translate}}:\n </div>\n <div class="col-md-3 text-center">\n <span class="label label-sm" data-ng-class="license.custom ? \'label-success\' : \'label-danger\'">{{license.custom ? \'APPLICATION_ENABLED\' : \'APPLICATION_DISABLED\' | translate}}</span>\n </div>\n </li>\n <li class="row">\n <div class="col-md-9">\n <i class="icon-cloud-download"></i> {{\'APPLICATION_UPDATE\' | translate}}:\n </div>\n <div class="col-md-3 text-center">\n <span class="label label-sm" data-ng-class="license.update ? \'label-success\' : \'label-danger\'">{{license.update ? \'APPLICATION_ENABLED\' : \'APPLICATION_DISABLED\' | translate}}</span>\n </div>\n </li>\n </ul>\n <div class="pricing-footer">\n <p>\n {{license.description}}\n </p>\n <a href="https://www.xcallymotion.com/prices" target="_blank" class="btn yellow-crusta">\n {{\'APPLICATION_PRICES\' | translate}} <i class="m-icon-swapright m-icon-white"></i>\n </a>\n <a href="#" class="btn purple-plum" data-ng-click="updateLicense()">\n {{\'APPLICATION_UPDATE\' | translate}} <i class="icon-refresh m-icon-white"></i>\n </a>\n </div>\n </div>\n </div>\n <div class="col-md-6">\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-info font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_LICENSE_REQUEST\' | translate }}</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="form" novalidate data-ng-submit="form.$valid && submitRequest()">\n\n <!-- START USERS -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.users.$touched || form.$submitted) && form.users.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <div class="input-icon">\n <i class="icon-eye"></i>\n <input type="number" name="users" placeholder="{{\'APPLICATION_USERS\' | translate}}" class="form-control" data-ng-model="item.users" min="0" required>\n </div>\n <span data-ng-show="(form.users.$touched || form.$submitted) && form.users.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERS -->\n\n <!-- START AGENTS -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.agents.$touched || form.$submitted) && form.agents.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENTS\' | translate}} ({{\'APPLICATION_CONCURRENTS\' | translate}})<span class="required" aria-required="true">*</span></label>\n <div class="input-icon">\n <i class="icon-people"></i>\n <input type="number" name="agents" placeholder="{{\'APPLICATION_AGENTS\' | translate}} ({{\'APPLICATION_CONCURRENTS\' | translate}})" class="form-control" data-ng-model="item.agents" min="0" required>\n </div>\n <span data-ng-show="(form.users.$touched || form.$submitted) && form.users.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END AGENTS -->\n\n <!-- START TELEPHONES -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.telephones.$touched || form.$submitted) && form.telephones.$invalid}">\n <label class="control-label">{{\'APPLICATION_TELEPHONES\' | translate}}<span class="required" aria-required="true">*</span></label>\n <div class="input-icon">\n <i class="icon-phone"></i>\n <input type="number" name="telephones" placeholder="{{\'APPLICATION_TELEPHONES\' | translate}}" class="form-control" data-ng-model="item.telephones" min="0" required>\n </div>\n <span data-ng-show="(form.telephones.$touched || form.$submitted) && form.telephones.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TELEPHONES -->\n\n <!-- START PLAN -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.plan.$touched || form.$submitted) && form.plan.$invalid}">\n <label class="control-label">{{\'APPLICATION_PLAN\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.months" name="plan" theme="bootstrap" on-select="updateRequestExpiration()" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="plan.value as plan in plans | filter: $select.search">\n <div ng-bind-html="plan.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.plan.$touched || form.$submitted) && form.plan.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PLAN -->\n\n <!-- START EMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.email.$touched || form.$submitted) && form.email.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <div class="input-icon">\n <i class="icon-envelope"></i>\n <input type="email" name="email" placeholder="{{\'APPLICATION_EMAIL\' | translate}}" class="form-control" data-ng-model="item.email" min="0" required>\n </div>\n <span data-ng-show="(form.email.$touched || form.$submitted) && form.email.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n\n <!-- START NOTES -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.notes.$touched || form.$submitted) && form.notes.$invalid}">\n <label class="control-label">{{\'APPLICATION_NOTES\' | translate}}</label>\n <div class="input-icon">\n <i class="icon-note"></i>\n <textarea name="notes" placeholder="{{\'APPLICATION_NOTES\' | translate}}" class="form-control" data-ng-model="item.notes" min="0"></textarea>\n </div>\n <span data-ng-show="(form.notes.$touched || form.$submitted) && form.notes.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NOTES -->\n\n <div class="row">\n <div class="form-group col-md-4 col-xs-6">\n <label class="control-label">{{\'APPLICATION_CHAT\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.chat"\n type="checkbox"\n name="chat"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <div class="form-group col-md-4 col-xs-6">\n <label class="control-label">{{\'APPLICATION_MAIL\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.mail"\n type="checkbox"\n name="mail"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <div class="form-group col-md-4 col-xs-6">\n <label class="control-label">{{\'APPLICATION_FAX\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.fax"\n type="checkbox"\n name="fax"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <div class="form-group col-md-4 col-xs-6">\n <label class="control-label">{{\'APPLICATION_SMS\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.messaging"\n type="checkbox"\n name="messaging"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <div class="form-group col-md-4 col-xs-6">\n <label class="control-label">{{\'APPLICATION_OPEN_CHANNEL\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.openchannel"\n type="checkbox"\n name="openchannel"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <div class="form-group col-md-4 col-xs-6">\n <label class="control-label">{{\'APPLICATION_CONTACT_MANAGER\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.cm"\n type="checkbox"\n name="cm"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <div class="form-group col-md-4 col-xs-6">\n <label class="control-label">{{\'APPLICATION_MOTION_DIALER\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.dialer"\n type="checkbox"\n name="dialer"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <div class="form-group col-md-4 col-xs-6">\n <label class="control-label">{{\'APPLICATION_JSCRIPTY\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.jscripty"\n type="checkbox"\n name="jscripty"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <div class="form-group col-md-4 col-xs-6">\n <label class="control-label">{{\'APPLICATION_CUSTOMIZATION\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.custom"\n type="checkbox"\n name="custom"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <div class="form-group col-md-4 col-xs-6">\n <label class="control-label">{{\'APPLICATION_UPDATE\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.update"\n type="checkbox"\n name="update"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n </div>\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_SUBMIT\' | translate}} {{\'APPLICATION_REQUEST\' | translate}}"/>\n </form>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/setting/network/view/externip/externip.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{title}}</h3>\n</div>\n<div class="modal-body" data-ng-init="initModal()">\n <form name="form" novalidate>\n\n <!-- START ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.address.$touched || form.$submitted) && form.address.$invalid}">\n <label class="control-label">{{\'APPLICATION_ADDRESS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="address" placeholder="{{\'APPLICATION_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.value" required data-ng-pattern="/^(25[0-5]|2[0-4][0-9]|1?[0-9]{1,2})(.(25[0-5]|2[0-4][0-9]|1?[0-9]{1,2})){3}$/"/>\n <span data-ng-show="(form.address.$touched || form.$submitted) && form.address.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(form.address.$touched || form.$submitted) && form.address.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END ADDRESS -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'), +a.put("app/setting/network/view/externip/externip.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-globe font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_EXTERNIP\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="#" data-toggle="dropdown" data-ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_EXTERNIP\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/setting/network/view/localnet/localnet.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{title}}</h3>\n</div>\n<div class="modal-body" data-ng-init="initModal()">\n <form name="form" novalidate>\n\n <!-- START ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.address.$touched || form.$submitted) && form.address.$invalid}">\n <label class="control-label">{{\'APPLICATION_ADDRESS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="address" placeholder="{{\'APPLICATION_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.address" required data-ng-pattern="/^(25[0-5]|2[0-4][0-9]|1?[0-9]{1,2})(.(25[0-5]|2[0-4][0-9]|1?[0-9]{1,2})){3}$/"/>\n <span data-ng-show="(form.address.$touched || form.$submitted) && form.address.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(form.address.$touched || form.$submitted) && form.address.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END ADDRESS -->\n\n <!-- START MASK -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.mask.$touched || form.$submitted) && form.mask.$invalid}">\n <label class="control-label">{{\'APPLICATION_MASK\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="mask" placeholder="{{\'APPLICATION_MASK\' | translate}}" class="form-control" data-ng-model="item.mask" required data-ng-pattern="/^(25[0-5]|2[0-4][0-9]|1?[0-9]{1,2})(.(25[0-5]|2[0-4][0-9]|1?[0-9]{1,2})){3}$/"/>\n <span data-ng-show="(form.mask.$touched || form.$submitted) && form.mask.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(form.mask.$touched || form.$submitted) && form.mask.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END MASK -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/setting/network/view/localnet/localnet.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-desktop font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_LOCALNET\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="#" data-toggle="dropdown" data-ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_LOCALNET\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/setting/network/view/stunaddr/stunaddr.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-desktop font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_STUNADDR\' | translate }}</a> </span>\n </div>\n <div class="actions">\n </div>\n </div>\n <div class="portlet-body">\n <form name="form" data-ng-submit="form.$valid && update()" novalidate>\n\n <!-- START ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.address.$touched || form.$submitted) && form.address.$invalid}">\n <label class="control-label">{{\'APPLICATION_ADDRESS\' | translate}}</label>\n <input type="text" name="stunaddr" placeholder="{{\'APPLICATION_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.stunaddr"/>\n <span class="help-block">\n {{\'DESCRIPTION_STUNADDR\' | translate}}\n </span>\n </div>\n <!-- END ADDRESS -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/setting/network/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-settings"></i>\n <a href="#">{{ \'APPLICATION_SETTINGS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-globe"></i>\n <a href="#">{{ \'APPLICATION_NETWORK\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img src="assets/images/media/business.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{ \'APPLICATION_NETWORK\' | translate }}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.setting.network.view.localnet\')}">\n <a ng-href="/setting/network/view/localnet">\n <i class="icon-screen-desktop"></i>\n {{ \'APPLICATION_LOCALNET\' | translate }} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.setting.network.view.externip\')}">\n <a ng-href="/setting/network/view/externip">\n <i class="icon-globe"></i>\n {{ \'APPLICATION_EXTERNIP\' | translate }} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.setting.network.view.stunaddr\')}">\n <a ng-href="/setting/network/view/stunaddr">\n <i class="icon-fire"></i>\n {{ \'APPLICATION_STUNADDR\' | translate }} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/setting/smtp/view/view.html",'<div class="row" data-ng-init="initView();">\n <div class="col-md-12">\n\n <form name="forms.info" data-ng-submit="forms.info.$valid && updateItem()" novalidate>\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACCOUNT\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <!-- GENERAL TAB -->\n\n <div class="note note-danger" data-ng-show="item.account.MailServerOut.state === \'DISCONNECTED\' || item.account.MailServerOut.state === \'ERROR\'">\n <p> ERROR </p>\n <json-formatter open="1" json="item.account.MailServerOut.source"></json-formatter>\n </div>\n\n <div class="note note-success" data-ng-show="item.account.MailServerOut.state === \'CONNECTED\'">\n <p> CONNECTED </p>\n </div>\n\n <div class="note note-info" data-ng-show="item.account.MailServerOut.state === \'CONNECTING\'">\n <p> TRYING... </p>\n </div>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.account.name" required/>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid && forms.info.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.address.$touched || forms.info.$submitted) && forms.info.address.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL_ADDRESS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="address" placeholder="{{\'APPLICATION_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.account.address" required/>\n <span data-ng-show="(forms.info.address.$touched || forms.info.$submitted) && forms.info.address.$invalid && forms.info.address.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ADDRESS -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.account.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START SERVICE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_SERVICE\' | translate}}</label><br>\n <input\n bs-switch\n data-ng-model="item.account.service"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <!-- END SERVICE -->\n <!-- END GENERAL TAB -->\n </div>\n </div>\n\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">SMTP</span>\n </div>\n </div>\n <div class="portlet-body">\n <!-- SMTP TAB -->\n <!-- START HOST -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.host.$touched || forms.info.$submitted) && forms.info.host.$invalid}">\n <label class="control-label">{{\'APPLICATION_HOST\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="host" placeholder="{{\'APPLICATION_HOST\' | translate}}" class="form-control" data-ng-model="item.account.MailServerOut.host" required/>\n <span data-ng-show="(forms.info.host.$touched || forms.info.$submitted) && forms.info.host.$invalid && forms.info.host.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END HOST -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.username.$touched || forms.info.$submitted) && forms.info.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="item.account.MailServerOut.username" required/>\n <span data-ng-show="(forms.info.username.$touched || forms.info.$submitted) && forms.info.username.$invalid && forms.info.username.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.account.MailServerOut.password" required/>\n <span data-ng-show="(forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$invalid && forms.info.password.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START PORT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.port.$touched || forms.info.$submitted) && forms.info.port.$invalid}">\n <label class="control-label">{{\'APPLICATION_PORT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="port" placeholder="{{\'APPLICATION_PORT\' | translate}}" class="form-control" data-ng-model="item.account.MailServerOut.port" required/>\n <span data-ng-show="(forms.info.form.$touched || forms.info.$submitted) && forms.info.port.$invalid && forms.info.port.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.form.$touched || forms.info.$submitted) && forms.info.port.$invalid && forms.info.port.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PORT -->\n\n <!-- START SSL -->\n <div class="form-group">\n <label class="control-label">SSL</label><br>\n <input\n bs-switch\n data-ng-model="item.account.MailServerOut.ssl"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <!-- END SSL -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n <input class="btn blue-madison" type="button" value="Test" data-ng-click="test()" data-ng-if="item.account.id"/>\n <input class="btn red" type="button" value="{{\'APPLICATION_DELETE\' | translate}}" data-ng-if="item.account.id" data-ng-click="delete(\'Service SMTP\',item.account.id);"/>\n\n <!-- END SMTP TAB -->\n </div>\n </div>\n </form>\n\n </div>\n</div>\n'),a.put("app/setting/system/view/console/console.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()" data-ng-click="cmdFocus()">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_ASTERISK_CONSOLE\' | translate}}\n <button class="btn btn-default" href="#" data-ng-click="output = \'\';cmdFocus();">\n <i class="icon-ban"></i>\n </button></span>\n </div>\n </div>\n <div class="portlet-body">\n <span us-spinner spinner-key="console-spinner" spinner-start-active="true"></span>\n <div class="well" style="height:400px;overflow-y:scroll;" schroll-bottom="output" data-ng-bind-html="output"></div>\n <form name="forms.console" data-ng-submit="forms.console.$valid && sendCmd() && !busy" novalidate>\n <!-- START COMMAND -->\n <div class="form-group">\n <input type="text" name="command" id="command" placeholder="{{\'APPLICATION_INSERT_COMMAND\' | translate}}" class="form-control" data-ng-model="item.command" data-ng-disabled="busy" autocomplete="off" data-ng-keyup="keyUp($event)"/>\n </div>\n <span class="help-block">\n {{ \'DESCRIPTION_ENTER_TO_COMMAND\' | translate }}\n </span>\n <button type="submit" class="hide"></button>\n <!-- END COMMAND -->\n </form>\n </div>\n </div>\n</div>\n'),a.put("app/setting/system/view/general/general.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="row ">\n <div class="col-md-6 col-sm-6">\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-pie-chart font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_MEMORY\' | translate }} (<b>{{ \'APPLICATION_TOTAL\' | translate }}</b>: {{system.memory.Total}} MB)</a> </span>\n </div>\n <div class="actions">\n <a class="btn btn-default" href="#" data-ng-click="initView()" data-ng-disabled="loading">\n <i class="icon-refresh"></i>\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="memory-spinner" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n <canvas class="chart chart-pie" chart-data="system.memory.values" chart-labels="system.memory.labels" chart-legend="true">\n </canvas>\n </div>\n </div>\n </div>\n <div class="col-md-6 col-sm-6">\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-pie-chart font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_DISK\' | translate }} (<b>{{ \'APPLICATION_TOTAL\' | translate }}</b>: {{system.mount.size}} GB)</a> </span>\n </div>\n <div class="actions">\n <div class="portlet-input input-inline input-medium">\n <div class="input-group">\n <ui-select data-ng-model="system.mount" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_DISK\' | translate}}">{{$select.selected.mount}}</ui-select-match>\n <ui-select-choices repeat="disk in system.disks | filter: $select.search">\n <div ng-bind-html="disk.mount | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="input-group-btn">\n <button class="btn btn-default" href="#" data-ng-click="initView()" data-ng-disabled="loading">\n <i class="icon-refresh"></i>\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="disk-spinner" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n <canvas class="chart chart-pie" chart-data="system.mount.values" chart-labels="system.mount.labels" chart-legend="true">\n </canvas>\n <!-- END Portlet PORTLET-->\n </div>\n </div>\n </div>\n </div>\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-pie-chart font-green-sharp"></i>\n <span class="caption-subject">CPU (<b>{{ \'APPLICATION_NUMBER_OF_CORES\' | translate }}</b>: {{system.cpu.cores.length}}, <b>MOTION</b>: {{system.cpu.motion}} % )</a> </span>\n </div>\n <div class="actions">\n <a class="btn btn-default" href="#" data-ng-click="initView()" data-ng-disabled="loading">\n <i class="icon-refresh"></i>\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <div class="row">\n <div class="col-md-2 col-sm-4" data-ng-repeat="cpu in system.cpu.cores">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="cpu-spinner" spinner-start-active="false"></span>\n <!-- END UI-GRID SPINNER -->\n <canvas class="chart chart-doughnut" chart-data="cpu.values" chart-labels="cpu.labels" chart-colours="cpu.colours" chart-legend="true">\n </canvas>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/setting/system/view/logs/logs.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getLog()">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_LOGS\' | translate}}\n </div>\n <div class="actions">\n <div class="portlet-input input-inline input-medium">\n <div class="input-group">\n <ui-select data-ng-model="item.filename" theme="bootstrap" on-select="getLog()" required>\n <ui-select-match placeholder="{{\'APPLICATION_FILENAME\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices position=\'down\' repeat="logfile in logfiles | filter: $select.search">\n <div ng-bind-html="logfile | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="input-group-btn">\n <button class="btn btn-default" href="#" data-ng-click="getLog()" data-ng-disabled="loading">\n <i class="icon-refresh"></i>\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <pre class="log-pre" schroll-bottom="log">\n <!-- BEGIN LOGS SPINNER -->\n <span us-spinner spinner-key="logs-spinner" spinner-start-active="true"></span>\n <!-- END LOGS SPINNER -->\n {{log}}\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/setting/system/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-settings"></i>\n <a href="#">{{ \'APPLICATION_SETTINGS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-pie-chart"></i>\n <a href="#">{{ \'APPLICATION_SYSTEM\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img src="assets/images/media/customize.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{ \'APPLICATION_SYSTEM\' | translate }}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.setting.system.view.general\')}">\n <a ng-href="/setting/system/view/general">\n <i class="icon-pie-chart"></i>\n {{ \'APPLICATION_GENERAL\' | translate }} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.setting.system.view.logs\')}">\n <a ng-href="/setting/system/view/logs">\n <i class="icon-list"></i>\n {{ \'APPLICATION_LOGS\' | translate }} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.setting.system.view.console\')}">\n <a ng-href="/setting/system/view/console">\n <i class="icon-chemistry"></i>\n {{ \'APPLICATION_ASTERISK_CONSOLE\' | translate }} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/setting/update/list/landing.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-settings"></i>\n <a href="#">{{ \'APPLICATION_SETTINGS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-cloud-download"></i>\n <a href="#">{{ \'APPLICATION_UPDATES\' | translate }}</a>\n </li>\n </ul>\n </div>\n <!-- BEGIN PAGE CONTENT-->\n <div class="row" data-ng-init="initCounter()">\n <div class="col-md-12 page-500">\n <div class="number">\n <timer interval="1000" countdown="360">{{countdown}}</timer>\n </div>\n <div class="details">\n <h3>Wait! xCALLY Motion update in progess...</h3>\n <p>\n We are updating it!<br/>\n xCALLY Motion Team<br/><br/>\n </p>\n </div>\n </div>\n </div>\n <!-- END PAGE CONTENT-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/setting/update/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-settings"></i>\n <a href="#">{{ \'APPLICATION_SETTINGS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-cloud-download"></i>\n <a href="#">{{ \'APPLICATION_UPDATES\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <!-- <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-cloud-download font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_UPDATES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <a class="btn btn-default" href="#" data-ng-click="pull()">\n <i class="icon-cloud-download"></i> {{ \'APPLICATION_UPDATE\' | translate }}\n </a>\n </div>\n </div>\n <div class="portlet-body" data-ng-init="initView()"> -->\n <!-- START TABLE -->\n <!-- <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div> -->\n <!-- END TABLE -->\n <!-- </div> -->\n <!-- END Portlet PORTLET-->\n <!-- </div> -->\n <div class="row">\n <div class="col-md-12">\n <!-- BEGIN INLINE NOTIFICATIONS PORTLET-->\n <div class="portlet">\n <div class="portlet-title">\n <div class="caption">\n <i class="icon-cloud-download font-green-sharp"></i>{{ \'APPLICATION_UPDATE\' | translate }}\n </div>\n <div class="actions">\n <button class="btn btn-default" href="#" data-ng-click="pull()">\n <i class="icon-cloud-download"></i> {{ \'APPLICATION_UPDATE\' | translate }}\n </button>\n </div>\n </div>\n <div class="portlet-body" data-ng-init="initView()">\n <div class="row margin-bottom-40">\n <!-- Pricing -->\n <div class="col-md-6">\n <div class="pricing hover-effect current-version">\n <div class="pricing-head">\n <h3>{{ \'APPLICATION_CURRENT_VERSION\' | translate }} <span>\n {{ \'APPLICATION_LAST_PERFORMED_UPDATE\' | translate }} </span>\n </h3>\n <h4>v. {{currentVersion.version}}</h4>\n </div>\n <ul class="pricing-content list-unstyled">\n <li>\n <i class="icon-clock"></i><b> {{\'APPLICATION_RELEASED_AT\' | translate}}:</b> {{currentVersion.createdAt}}\n </li>\n <li>\n <i class="icon-list"></i> <a target="_blank" href="https://wiki.xcallymotion.com/display/XMD/Motion+GUI#MotionGUI-Version{{currentVersion.version}}">{{\'APPLICATION_CHANGELOG\' | translate}}</a>\n </li>\n </ul>\n <div class="pricing-footer">\n </div>\n </div>\n </div>\n <div class="col-md-6">\n <div class="pricing hover-effect" data-ng-class="{\'disabled-update\':currentVersion.version==latestVersion.version}">\n <div class="pricing-head">\n <h3>{{ \'APPLICATION_LATEST_VERSION\' | translate }} <span>\n {{ \'APPLICATION_LAST_SOFTWARE_UPDATE_AVAILABLE\' | translate }} </span>\n </h3>\n <h4>v. {{latestVersion.version}}</h4>\n </div>\n <ul class="pricing-content list-unstyled">\n <li>\n <i class="icon-clock"></i><b> {{\'APPLICATION_RELEASED_AT\' | translate}}:</b> {{latestVersion.createdAt}}\n </li>\n <li>\n <i class="icon-list"></i> <a target="_blank" href="https://wiki.xcallymotion.com/display/XMD/Motion+GUI#MotionGUI-Version{{latestVersion.version}}">{{\'APPLICATION_CHANGELOG\' | translate}}</a>\n </li>\n </ul>\n <div class="pricing-footer">\n </div>\n </div>\n </div>\n <!--//End Pricing -->\n </div>\n </div>\n </div>\n <!-- END INLINE NOTIFICATIONS PORTLET-->\n </div>\n </div>\n\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), +a.put("app/setting/update/list/list.pull.html",'<div class="modal-header">\n <button data-ng-if="modal.dismissable" type="button" data-ng-click="$dismiss()" class="close">×</button>\n <h4 ng-if="modal.title" ng-bind="modal.title" class="modal-title"></h4>\n</div>\n<div class="modal-body">\n <p data-ng-if="modal.text" data-ng-bind="modal.text"></p>\n <div data-ng-if="modal.html" data-ng-bind-html="modal.html"></div>\n</div>\n<div class="modal-footer">\n <button data-ng-repeat="button in modal.buttons" data-ng-class="button.classes" data-ng-click="button.click($event)" data-ng-bind="button.text" class="btn"></button>\n</div>\n'),a.put("app/square/odbc/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_ODBC\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DSN -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.dsn.$touched || form.$submitted) && form.dsn.$invalid}">\n <label class="control-label">{{\'APPLICATION_ODBC\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="dsn" placeholder="DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion" class="form-control" data-ng-model="item.dsn" required/>\n <p class="help-block">Es. DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion</p>\n <span data-ng-show="(form.dsn.$touched || form.$submitted) && form.dsn.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DSN -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/square/odbc/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-superscript"></i>\n <a>Cally ²</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="#">{{ \'APPLICATION_ODBCS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ODBCS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <button class="btn green-jungle " ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ODBC\' | translate }}\n </button>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/square/odbc/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getOdbc()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-superscript"></i>\n <a>Cally ²</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="/square/odbc/list">{{ \'APPLICATION_ODBCS\' | translate }}</a>\n <i data-ng-show="odbc" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="odbc">\n <a href="#">{{odbc.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/odbc.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{odbc.name}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.square.odbc.view.settings\')}">\n <a data-ng-href="/square/odbc/view/{{odbc.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/square/odbc/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_ODBC\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateOdbc()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="odbc.name" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DSN -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.odbc.dsn.$touched || forms.odbc.$submitted) && forms.odbc.dsn.$invalid}">\n <label class="control-label">{{\'APPLICATION_ODBC\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="dsn" placeholder="{{\'APPLICATION_DSN\' | translate}}" class="form-control" data-ng-model="odbc.dsn" required/>\n <p class="help-block">Es. DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion</p>\n <span data-ng-show="(forms.odbc.dsn.$touched || forms.odbc.$submitted) && forms.odbc.dsn.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DSN -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="odbc.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/square/project/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_PROJECT\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/square/project/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-superscript"></i>\n <a>Cally ²</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-slack"></i>\n <a href="#">{{ \'APPLICATION_PROJECTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_PROJECTS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <button class="btn green-jungle " ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_PROJECT\' | translate }}\n </button>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/square/project/view/projectNotes.modal.html",'<div class="yellow-notes">\n<div class="modal-header">\n <button ng-if="modal.dismissable" type="button" ng-click="$dismiss()" class="close">×</button>\n <h4 class="modal-title">{{\'APPLICATION_NOTES\' | translate}}</h4>\n</div>\n<div class="modal-body" style="text-align:center;">\n<textarea name="name" class="notes-textarea" placeholder="{{\'MESSAGE_INSERT_YOUR_TEXT_HERE\' | translate}}" data-ng-model="notes.value"></textarea>\n</div>\n<div class="modal-footer" >\n <button class="btn green-haze" type="button" ng-click="close()">{{ \'APPLICATION_SAVE\' | translate }}</button>\n</div>\n</div>\n'),a.put("app/square/project/view/view.html",'<div class="row" data-ng-init="getProject()">\n <div class="col-md-12">\n <div class="page-bar" style="margin-bottom: 0px;">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-superscript"></i>\n <a>Cally ²</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-slack"></i>\n <a href="/square/projects/list">{{ \'APPLICATION_PROJECTS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <a ng-href="/square/projects/view/{{squareProject.id}}">{{squareProject.name}}</a>\n </li>\n </ul>\n </div>\n\n <h4 class="text-success bold"> {{squareProject.name}} <button class="btn btn-xs yellow-saffron" type="button" data-ng-click="editNotes()"><i class="icon-note"></i> {{\'APPLICATION_NOTES\' | translate}}</button></h4> <p class="text-muted"> {{squareProject.description}} </p>\n\n <div id="geEditor" class="geEditor"></div>\n </div>\n</div>\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n\n </div>\n</div>\n\n<!-- END PAGE CONTENT-->\n<script></script>\n'),a.put("app/square/realtime/view/general/general.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="init()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-pagination ui-grid-auto-resize>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/square/realtime/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-superscript"></i>\n <a href="#">Cally ²</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-energy"></i>\n <a href="/square/realtime/view/general">{{ \'APPLICATION_REALTIME\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <div>\n <nav class="navbar navbar-default" role="navigation">\n <div class="collapse navbar-collapse">\n <ul class="nav navbar-nav">\n <li data-ng-class="{\'active\': $state.is(\'main.square.realtime.view.general\')}">\n <a href="/square/realtime/view/general">\n {{\'APPLICATION_GENERAL\' | translate}}\n </a>\n </li>\n </ul>\n </div>\n </nav>\n </div>\n <div ui-view></div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/square/recording/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-superscript"></i>\n <a href="#">Cally ²</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-microphone"></i>\n <a href="#">{{ \'APPLICATION_RECORDINGS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="fa fa-play font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_RECORDINGS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/agent/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-puzzle"></i>\n <a href="#">{{ \'APPLICATION_STAFF\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-people"></i>\n <a href="#">{{ \'APPLICATION_AGENTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-people font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_AGENTS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group" data-ng-show="Auth.getCurrentUser().role === \'admin\'">\n <button type="button" class="btn green-jungle" data-toggle="dropdown" data-hover="dropdown" data-delay="1000" data-close-others="true" aria-expanded="true">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_AGENT\' | translate }} <i class="fa fa-angle-down"></i>\n </button>\n <ul class="dropdown-menu" role="menu">\n <li>\n <a href="/staff/agents/wizard">\n Standard\n </a>\n </li>\n <li>\n <a href="/staff/agents/bulk">\n {{ \'APPLICATION_BULK\' | translate }}\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/agent/view/view.account.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_ACCOUNT\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li data-ng-class="{\'active\': Auth.isAdmin() || userModules[4]}" data-ng-show="Auth.isAdmin() || userModules[4]">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_PERSONAL_INFO\' | translate}}</a>\n </li>\n <li data-ng-show="Auth.isAdmin() || userModules[4]">\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{ \'APPLICATION_CHANGE_AVATAR\' | translate}}</a>\n </li>\n <li data-ng-show="Auth.isAdmin() || userModules[4] || agent.id === Auth.getCurrentUser().id" data-ng-class="{\'active\': !Auth.isAdmin() && agent.id === Auth.getCurrentUser().id}">\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{ \'APPLICATION_CHANGE_PASSWORD\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- PERSONAL INFO TAB -->\n <div class="tab-pane" data-ng-class="{\'active\': Auth.isAdmin() || userModules[4]}" data-ng-show="Auth.isAdmin() || userModules[4]" id="tab_1_1">\n <form name="forms.info" data-ng-submit="forms.info.$valid && updateItem()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.fullname.$touched || forms.info.$submitted) && forms.info.fullname.$invalid}">\n <label class="control-label">{{\'APPLICATION_FULLNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="fullname" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="agent.fullname" required/>\n <span data-ng-show="(forms.info.fullname.$touched || forms.info.$submitted) && forms.info.fullname.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}</label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="agent.name" disabled/>\n </div>\n <!-- END USERNAME -->\n\n <!-- START EMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="email" name="email" placeholder="{{\'APPLICATION_EMAIL\' | translate}}" class="form-control" data-ng-model="agent.email" required/>\n <span data-ng-show="(forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$error.email" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n\n <!-- START PHONE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.phone.$touched || forms.info.$submitted) && forms.info.phone.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}</label>\n <input type="text" name="phone" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="agent.phone"/>\n </div>\n <!-- END PHONE -->\n\n <!-- START MOBILE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.mobile.$touched || forms.info.$submitted) && forms.info.mobile.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOBILE\' | translate}}</label>\n <input type="text" name="mobile" placeholder="{{\'APPLICATION_MOBILE\' | translate}}" class="form-control" data-ng-model="agent.mobile"/>\n </div>\n <!-- END MOBILE -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="agent.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START LOGIN IN PAUSE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_LOGIN_IN_PAUSE\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="agent.loginInPause"\n type="checkbox"\n name="auth"\n switch-active="{{ recordSwitch.isActive }}"\n switch-on-text="{{ recordSwitch.onText }}"\n switch-off-text="{{ recordSwitch.offText }}"\n switch-on-color="{{ recordSwitch.onColor }}"\n switch-off-color="{{ recordSwitch.offColor }}"\n switch-animate="{{ recordSwitch.animate }}"\n switch-size="{{ recordSwitch.size }}"\n switch-label="{{ recordSwitch.label }}"\n switch-icon="{{ recordSwitch.icon }}"\n switch-radio-off="{{ recordSwitch.radioOff }}"\n switch-label-width="{{ recordSwitch.labelWidth }}"\n switch-handle-width="{{ recordSwitch.handleWidth }}">\n </div>\n <!-- END LOGIN IN PAUSE -->\n\n <!-- START WEB BAR -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_SHOW_WEB_BAR\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="agent.showWebBar"\n type="checkbox"\n name="auth"\n switch-active="{{ recordSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ recordSwitch.onColor }}"\n switch-off-color="{{ recordSwitch.offColor }}"\n switch-animate="{{ recordSwitch.animate }}"\n switch-size="{{ recordSwitch.size }}"\n switch-label="{{ recordSwitch.label }}"\n switch-icon="{{ recordSwitch.icon }}"\n switch-radio-off="{{ recordSwitch.radioOff }}"\n switch-label-width="{{ recordSwitch.labelWidth }}"\n switch-handle-width="{{ recordSwitch.handleWidth }}">\n </div>\n <!-- END WEB BAR -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END PERSONAL INFO TAB -->\n <!-- CHANGE AVATAR TAB -->\n <div class="tab-pane" data-ng-show="Auth.isAdmin() || userModules[4]" id="tab_1_2">\n <form action="#" role="form">\n <div class="form-group">\n <div class="fileinput fileinput-new" data-provides="fileinput">\n <div class="fileinput-new thumbnail" style="width: 200px; height: 150px;">\n <img ng-src="assets/images/media/noProfileImage.png" alt=""/>\n </div>\n <div class="fileinput-preview fileinput-exists thumbnail" style="max-width: 200px; max-height: 150px;">\n </div>\n <div>\n <span class="btn default btn-file" data-ng-show="!uploader.queue[0]">\n <span> {{ \'APPLICATION_SELECT_IMAGE\' | translate }} </span>\n <input type="file" nv-file-select="" uploader="uploader" /><br/>\n </span>\n <button type="button" class="btn default" data-ng-show="uploader.queue[0]" data-dismiss="fileinput" ng-click="uploader.queue[0].remove()">\n {{ \'APPLICATION_REMOVE\' | translate }}\n </button>\n <button type="button" class="btn green-haze" data-ng-show="uploader.queue[0]" data-ng-click="uploader.queue[0].upload()" ng-disabled="uploader.queue[0].isReady || uploader.queue[0].isUploading || uploader.queue[0].isSuccess">\n {{ \'APPLICATION_CONFIRM\' | translate }}\n </button>\n </div>\n <p>\n </br> {{ \'MESSAGE_SUPPORTED_FORMATS\' | translate }} <b>jpg, png, jpeg</b>.\n </p>\n </div>\n </div>\n </form>\n <div class="row">\n <div class="col-md-2">\n <table class="table" border="0">\n <tbody>\n <tr data-ng-repeat="item in uploader.queue">\n <td style="border-top-style:none">\n <strong>\n {{ item.file.name }}\n </strong>\n </td>\n <td data-ng-show="uploader.isHTML5" nowrap style="border-top-style:none">\n {{ item.file.size/1024/1024|number:2 }} MB\n </td>\n <td nowrap style="border-top-style:none">\n <button type="button" class="btn btn-danger btn-xs" data-ng-click="item.remove()">\n <span class="glyphicon glyphicon-trash"></span> Remove\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n <!-- END CHANGE AVATAR TAB -->\n <!-- CHANGE PASSWORD TAB -->\n <div class="tab-pane" data-ng-show="Auth.isAdmin() || userModules[4] || agent.id === Auth.getCurrentUser().id" data-ng-class="{\'active\': !Auth.isAdmin() && agent.id === Auth.getCurrentUser().id}" id="tab_1_3">\n <form name="forms.changePwd" data-ng-submit="forms.changePwd.$valid && updatePassword()" novalidate>\n <!-- START CURRENT PWD -->\n <div class="form-group" data-ng-if="!(Auth.isAdmin() || userModules[4])" data-ng-class="{\'has-error\': (forms.changePwd.current_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.current_pwd.$invalid}">\n <label class="control-label">{{\'APPLICATION_CURRENT_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="current_pwd" placeholder="{{\'APPLICATION_CURRENT_PASSWORD\' | translate}}" class="form-control" data-ng-model="agent.currentPwd" required/>\n <span data-ng-show="(forms.changePwd.current_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.current_pwd.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CURRENT PWD -->\n <!-- START NEW PWD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.changePwd.new_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.new_pwd.$invalid}">\n <label class="control-label">{{\'APPLICATION_NEW_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="new_pwd" placeholder="{{\'APPLICATION_NEW_PASSWORD\' | translate}}" class="form-control" data-ng-model="agent.newPwd" data-ng-pattern="setting.securePassword ? settings.patternPassword : settings.patternPasswordLight" required/>\n <span class="help-block">\n {{setting.securePassword ? \'MESSAGE_PASSWORD_FORMAT\' : \'MESSAGE_PASSWORD_LIGHT_FORMAT\' | translate}}\n </span>\n <span data-ng-show="(forms.changePwd.current_pwd.$touched || forms.info.$submitted) && forms.changePwd.current_pwd.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n <span data-ng-show="(forms.changePwd.new_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.new_pwd.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NEW PWD -->\n <!-- START RE-NEW PWD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.changePwd.re_new_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.re_new_pwd.$invalid}">\n <label class="control-label">{{\'APPLICATION_RE_TYPE_NEW_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="re_new_pwd" placeholder="{{\'APPLICATION_RE_TYPE_NEW_PASSWORD\' | translate}}" class="form-control" data-ng-model="agent.reNewPwd" nx-equal="agent.newPwd" required/>\n <span data-ng-show="(forms.changePwd.new_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.new_pwd.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END RE-NEW PWD -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END CHANGE PASSWORD TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'), +a.put("app/staff/agent/view/view.chat.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_CHAT\' | translate}}</span>\n </div>\n </div>\n\n <div class="portlet-body">\n <!-- START CHAT TAB -->\n <form name="form" data-ng-submit="patchItem()" novalidate>\n <!-- START CAPACITY -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.capacity.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_CAPACITY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="chatCapacity" placeholder="{{\'APPLICATION_CAPACITY\' | translate}}" class="form-control" data-ng-model="agent.chatCapacity" min="0" required/>\n <span class="help-block">\n {{\'MESSAGE_ZERO_MEANS_UNLIMITED\' | translate}}\n </span>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CAPACITY -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n <!-- END CHAT TAB -->\n </div>\n </div>\n </div>\n</div>\n</div>\n'),a.put("app/staff/agent/view/view.fax.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_FAX\' | translate}}</span>\n </div>\n </div>\n\n <div class="portlet-body">\n <!-- START CHAT TAB -->\n <form name="form" data-ng-submit="patchItem()" novalidate>\n <!-- START CAPACITY -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.capacity.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_CAPACITY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="faxCapacity" placeholder="{{\'APPLICATION_CAPACITY\' | translate}}" class="form-control" data-ng-model="agent.faxCapacity" min="0" required/>\n <span class="help-block">\n {{\'MESSAGE_ZERO_MEANS_UNLIMITED\' | translate}}\n </span>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CAPACITY -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n <!-- END CHAT TAB -->\n </div>\n </div>\n </div>\n</div>\n</div>\n'),a.put("app/staff/agent/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-puzzle"></i>\n <a href="#">{{ \'APPLICATION_STAFF\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-people"></i>\n <a href="/staff/agents/list">{{ \'APPLICATION_AGENTS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <a href="#">{{agent.fullname}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-userpic">\n <img ng-src="api/users/avatar/{{agent.userpic ? agent.userpic : \'unknown_avatar\'}}" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n\n <!-- START SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{agent.fullname}}\n </div>\n <div class="profile-usertitle-job">\n {{agent.role}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.staff.agents.view.account\')}">\n <a data-ng-href="/staff/agents/view/{{agent.id}}/account">\n <i class="icon-user"></i>\n {{ \'APPLICATION_ACCOUNT\' | translate}} </a>\n </li>\n\n <li data-ng-class="{active: $state.includes(\'main.staff.agents.view.queues\')}" data-ng-show="Auth.isAdmin() || userModules[7]">\n <a data-ng-href="/staff/agents/view/{{agent.id}}/queues/voice">\n <i class="icon-docs"></i>\n {{ \'APPLICATION_QUEUES\' | translate}} </a>\n </li>\n\n <li data-ng-class="{active: $state.is(\'main.staff.agents.view.voice\')}" data-ng-show="Auth.isAdmin() || userModules[7]">\n <a data-ng-href="/staff/agents/view/{{agent.id}}/voice">\n <i class="icon-earphones-alt"></i>\n {{ \'APPLICATION_VOICE\' | translate}} </a>\n </li>\n\n <li data-ng-class="{active: $state.is(\'main.staff.agents.view.chat\'),\'disabled-link\':!license.chat}" data-ng-show="Auth.isAdmin() || userModules[8]">\n <a data-ng-href="{{license.chat ? \'/staff/agents/view/\'+agent.id+\'/chat\' : \'javascript:;\'}}" class="disable-target">\n <i class="icon-bubble"></i>\n {{ \'APPLICATION_CHAT\' | translate}} </a>\n </li>\n\n <!-- <li data-ng-class="{active: $state.is(\'main.staff.agents.view.mail\'),\'disabled-link\':!license.mail}" data-ng-show="Auth.isAdmin() || userModules[9]">\n <a data-ng-href="{{license.mail ? \'/staff/agents/view/\'+agent.id+\'/mail\' : \'javascript:;\'}}" class="disable-target">\n <i class="icon-envelope"></i>\n {{ \'APPLICATION_MAIL\' | translate}} </a>\n </li> -->\n\n <!-- <li data-ng-class="{active: $state.is(\'main.staff.agents.view.fax\'),\'disabled-link\':!license.fax}" data-ng-show="Auth.isAdmin() || userModules[10]">\n <a data-ng-href="{{license.fax ? \'/staff/agents/view/\'+agent.id+\'/fax\' : \'javascript:;\'}}" class="disable-target">\n <i class="fa fa-fax"></i>\n {{ \'APPLICATION_FAX\' | translate}} </a>\n </li> -->\n\n <!-- <li data-ng-class="{active: $state.is(\'main.staff.agents.view.sms\'),\'disabled-link\':!license.messaging}" data-ng-show="Auth.isAdmin() || userModules[11]">\n <a data-ng-href="{{license.messaging ? \'/staff/agents/view/\'+agent.id+\'/sms\' : \'javascript:;\'}}" class="disable-target">\n <i class=" glyphicon glyphicon-comment "></i>\n {{ \'APPLICATION_SMS\' | translate}} </a>\n </li> -->\n <!-- <li data-ng-class="{active: $state.is(\'main.staff.agents.view.openchannel\'),\'disabled-link\':!license.openchannel}" data-ng-show="Auth.isAdmin() || userModules[20]">\n <a data-ng-href="{{license.openchannel ? \'/staff/agents/view/\'+agent.id+\'/openchannel\' : \'javascript:;\'}}" class="disable-target">\n <i class=" icon-globe "></i>\n {{ \'APPLICATION_OPEN_CHANNEL\' | translate}} </a>\n </li> -->\n\n <li data-ng-class="{active: $state.is(\'main.staff.agents.view.motionbar\')}" data-ng-show="Auth.isAdmin()">\n <a data-ng-href="/staff/agents/view/{{agent.id}}/motionbar">\n <i class="icon-screen-desktop"></i>\n {{ \'APPLICATION_MOTION_BAR\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/agent/view/view.mail.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_MAIL\' | translate}}</span>\n </div>\n </div>\n\n <div class="portlet-body">\n <!-- START CHAT TAB -->\n <form name="form" data-ng-submit="patchItem()" novalidate>\n <!-- START CAPACITY -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.capacity.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_CAPACITY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="mailCapacity" placeholder="{{\'APPLICATION_CAPACITY\' | translate}}" class="form-control" data-ng-model="agent.mailCapacity" min="0" required/>\n <span class="help-block">\n {{\'MESSAGE_ZERO_MEANS_UNLIMITED\' | translate}}\n </span>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CAPACITY -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n <!-- END CHAT TAB -->\n </div>\n </div>\n </div>\n</div>\n</div>\n'),a.put("app/staff/agent/view/view.motionbar.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_MOTION_BAR\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li data-ng-class="{\'active\': Auth.isAdmin()}" data-ng-show="Auth.isAdmin()">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n <li data-ng-show="Auth.isAdmin()">\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{ \'APPLICATION_CALL_FORWARDING\' | translate}}</a>\n </li>\n <li data-ng-show="Auth.isAdmin()">\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{ \'APPLICATION_ADVANCED\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- START GENERAL TAB -->\n <div class="tab-pane" data-ng-class="{\'active\': Auth.isAdmin()}" data-ng-show="Auth.isAdmin()" id="tab_1_1">\n <form name="forms.general" data-ng-submit="updateItem()" novalidate>\n\n <!-- START ENABLE_SETTINGS -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_ENABLE_SETTINGS\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="agent.phoneBarEnableSettings"\n type="checkbox"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END ENABLE_SETTINGS -->\n\n <!-- START AUTO_ANSWER -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_AUTO_ANSWER\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="agent.phoneBarAutoAnswer"\n type="checkbox"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END AUTO_ANSWER -->\n\n <!-- START ENABLE_RECORDING -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_ENABLE_RECORDING\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="agent.phoneBarEnableRecording"\n type="checkbox"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END ENABLE_RECORDING -->\n\n <!-- START SHOW_OMNI_DESKTOP -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_SHOW_OMNI_DESKTOP_BUTTON\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="agent.phoneBarShowOmniDesktop"\n type="checkbox"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END SHOW_OMNI_DESKTOP -->\n\n <!-- START RINGINUSE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_RINGINUSE\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="agent.phoneBarRingInUse"\n type="checkbox"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END RINGINUSE -->\n\n <!-- START DND -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DND\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="agent.phoneBarDnd"\n type="checkbox"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END DND -->\n\n <!-- START DND -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_UNANSWERED_CALL_BADGE\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="agent.phoneBarUnansweredCallBadge"\n type="checkbox"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END DND -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n <!-- START CALL FORWARDING TAB -->\n <div class="tab-pane" data-ng-show="Auth.isAdmin()" id="tab_1_2">\n <form name="forms.callForwarding" data-ng-submit="updateItem()" novalidate>\n\n <!-- START UNCONDITIONAL -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_UNCONDITIONAL\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="agent.phoneBarUnconditional"\n type="checkbox"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END UNCONDITIONAL -->\n\n\n <!-- START UNCONDITIONAL NUMBER -->\n <div class="form-group" data-ng-if="agent.phoneBarUnconditional" data-ng-class="{\'has-error\': (forms.callForwarding.phoneBarUnconditionalNumber.$touched || forms.callForwarding.$submitted) && forms.callForwarding.phoneBarUnconditionalNumber.$invalid}">\n <input type="text" name="phoneBarUnconditionalNumber" placeholder="{{\'APPLICATION_NUMBER\' | translate}}" class="form-control" data-ng-model="agent.phoneBarUnconditionalNumber" required/>\n <span class="help-block">\n <!-- {{ \'DESCRIPTION_VOICE_HOST\' | translate }} -->\n </span>\n <span data-ng-show="(forms.callForwarding.phoneBarUnconditionalNumber.$touched || forms.callForwarding.$submitted) && forms.callForwarding.phoneBarUnconditionalNumber.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END UNCONDITIONAL NUMBER -->\n\n <!-- START NO REPLY -->\n <!-- <div class="form-group">\n <label class="control-label">{{\'APPLICATION_NO_REPLY\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="agent.phoneBarNoReply"\n type="checkbox"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div> -->\n <!-- END NO REPLY -->\n\n <!-- START NO REPLY -->\n <!-- <div class="form-group" data-ng-if="agent.phoneBarNoReply" data-ng-class="{\'has-error\': (forms.callForwarding.phoneBarNoReplyNumber.$touched || forms.callForwarding.$submitted) && forms.callForwarding.phoneBarNoReplyNumber.$invalid}">\n <input type="text" name="phoneBarNoReplyNumber" placeholder="{{\'APPLICATION_NUMBER\' | translate}}" class="form-control" data-ng-model="agent.phoneBarNoReplyNumber" required/>\n <span class="help-block">\n </span>\n <span data-ng-show="(forms.callForwarding.phoneBarNoReplyNumber.$touched || forms.callForwarding.$submitted) && forms.callForwarding.phoneBarNoReplyNumber.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div> -->\n <!-- END REPLY -->\n\n <!-- START BUSY -->\n <!-- <div class="form-group">\n <label class="control-label">{{\'APPLICATION_BUSY\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="agent.phoneBarBusy"\n type="checkbox"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div> -->\n <!-- END BUSY -->\n\n <!-- START BUSY NUMBER -->\n <!-- <div class="form-group" data-ng-if="agent.phoneBarBusy" data-ng-class="{\'has-error\': (forms.callForwarding.phoneBarBusyNumber.$touched || forms.callForwarding.$submitted) && forms.callForwarding.phoneBarBusyNumber.$invalid}">\n <input type="text" name="phoneBarBusyNumber" placeholder="{{\'APPLICATION_NUMBER\' | translate}}" class="form-control" data-ng-model="agent.phoneBarBusyNumber" required/>\n <span class="help-block">\n </span>\n <span data-ng-show="(forms.callForwarding.phoneBarBusyNumber.$touched || forms.callForwarding.$submitted) && forms.callForwarding.phoneBarBusyNumber.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div> -->\n <!-- END BUSY NUMBER -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END CALL FORWARDING TAB -->\n <!-- START ADVANCED TAB -->\n <div class="tab-pane" data-ng-show="Auth.isAdmin()" id="tab_1_3">\n <form name="forms.advanced" data-ng-submit="updateItem()" novalidate>\n\n <!-- START ENABLE REMOTE CONTROL -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_REMOTE_CONTROL\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="agent.phoneBarRemoteControl"\n type="checkbox"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END ENABLE REMOTE CONTROL -->\n\n\n <!-- START REMOTE CONTROL PORT -->\n <div class="form-group" data-ng-if="agent.phoneBarRemoteControl" data-ng-class="{\'has-error\': (forms.advanced.phoneBarRemoteControlPort.$touched || forms.advanced.$submitted) && forms.advanced.phoneBarRemoteControlPort.$invalid}">\n <label class="control-label">{{\'APPLICATION_REMOTE_CONTROL\' | translate}} {{\'APPLICATION_PORT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="phoneBarRemoteControlPort" placeholder="{{\'APPLICATION_REMOTE_CONTROL\' | translate}} {{\'APPLICATION_PORT\' | translate}}" class="form-control" data-ng-model="agent.phoneBarRemoteControlPort" required/>\n <span class="help-block">Default: 9888</span>\n <span data-ng-show="(forms.advanced.phoneBarRemoteControlPort.$touched || forms.advanced.$submitted) && forms.advanced.phoneBarRemoteControlPort.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.advanced.phoneBarRemoteControlPort.$error.max || form.advanced.phoneBarRemoteControlPort.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END REMOTE CONTROL PORT -->\n\n <!-- START SIP EXPIRES -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.phoneBarExpires.$touched || forms.advanced.$submitted) && forms.advanced.phoneBarExpires.$invalid}">\n <label class="control-label">SIP {{\'APPLICATION_EXPIRES\' | translate}} [sec]<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="phoneBarExpires" placeholder="SIP {{\'APPLICATION_EXPIRES\' | translate}}" class="form-control" data-ng-model="agent.phoneBarExpires" required/>\n <span class="help-block">Default: 120</span>\n <span data-ng-show="(forms.advanced.phoneBarExpires.$touched || forms.advanced.$submitted) && forms.advanced.phoneBarExpires.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.advanced.phoneBarExpires.$error.max || form.advanced.phoneBarExpires.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}} (min 1).\n </span>\n </div>\n <!-- END SIP EXPIRES -->\n\n <!-- START SIP PORT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.phoneBarListenPort.$touched || forms.advanced.$submitted) && forms.advanced.phoneBarListenPort.$invalid}">\n <label class="control-label">SIP {{\'APPLICATION_PORT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="0" max="65535" name="phoneBarListenPort" placeholder="SIP {{\'APPLICATION_PORT\' | translate}}" class="form-control" data-ng-model="agent.phoneBarListenPort" required/>\n <span class="help-block">Default: 5060</span>\n <span data-ng-show="(forms.advanced.phoneBarListenPort.$touched || forms.advanced.$submitted) && forms.advanced.phoneBarListenPort.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.advanced.phoneBarListenPort.$error.max || form.advanced.phoneBarListenPort.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}} (0-65535).\n </span>\n </div>\n <!-- END SIP PORT -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/staff/agent/view/view.openchannel.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_OPEN_CHANNEL\' | translate}}</span>\n </div>\n </div>\n\n <div class="portlet-body">\n <!-- START CHAT TAB -->\n <form name="form" data-ng-submit="patchItem()" novalidate>\n <!-- START CAPACITY -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.capacity.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_CAPACITY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="openchannelCapacity" placeholder="{{\'APPLICATION_CAPACITY\' | translate}}" class="form-control" data-ng-model="agent.openchannelCapacity" min="0" required/>\n <span class="help-block">\n {{\'MESSAGE_ZERO_MEANS_UNLIMITED\' | translate}}\n </span>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CAPACITY -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n <!-- END CHAT TAB -->\n </div>\n </div>\n </div>\n</div>\n</div>\n'),a.put("app/staff/agent/view/view.queues.chat.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12" data-ng-init="initChatQueues()">\n <!-- BEGIN FORM-->\n <form action="#" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="params.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="params.penalty=params.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!params.penalty" data-ng-click="params.penalty=params.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-queues-chat">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), +a.put("app/staff/agent/view/view.queues.fax.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12" data-ng-init="initFaxQueues()">\n <!-- BEGIN FORM-->\n <form action="#" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="params.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="params.penalty=params.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!params.penalty" data-ng-click="params.penalty=params.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-queues-fax">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/agent/view/view.queues.html","<!-- BEGIN PAGE CONTENT-->\n<div class=\"row\" data-ng-init=\"initView()\">\n <div class=\"col-md-12\">\n <div>\n <nav class=\"navbar navbar-default\" role=\"navigation\">\n <div class=\"collapse navbar-collapse\">\n <ul class=\"nav navbar-nav\">\n <li data-ng-class=\"{'active': $state.is('main.staff.agents.view.queues.voice')}\">\n <a href=\"/staff/agents/view/{{agent.id}}/queues/voice\">\n <i class=\"icon-earphones-alt\"></i> {{'APPLICATION_VOICE' | translate}}\n </a>\n </li>\n <li data-ng-class=\"{'active': $state.is('main.staff.agents.view.queues.chat'),'disabled-link':!license.chat}\" data-ng-show=\"Auth.isAdmin() || userModules[8]\">\n <a href=\"{{license.chat ? '/staff/agents/view/'+agent.id+'/queues/chat' : 'javascript:;'}}\" class=\"disable-target\">\n <i class=\"icon-bubble\"></i> {{'APPLICATION_CHAT' | translate}}\n </a>\n </li>\n <li data-ng-class=\"{'active': $state.is('main.staff.agents.view.queues.mail'),'disabled-link':!license.mail}\" data-ng-show=\"Auth.isAdmin() || userModules[9]\">\n <a href=\"{{license.mail ? '/staff/agents/view/'+agent.id+'/queues/mail' : 'javascript:;'}}\" class=\"disable-target\">\n <i class=\"icon-envelope\"></i>{{'APPLICATION_MAIL' | translate}}\n </a>\n </li>\n <li data-ng-class=\"{'active': $state.is('main.staff.agents.view.queues.fax'),'disabled-link':!license.fax}\" data-ng-show=\"Auth.isAdmin() || userModules[10]\">\n <a href=\"{{license.fax ? '/staff/agents/view/'+agent.id+'/queues/fax' : 'javascript:;'}}\" class=\"disable-target\">\n <i class=\"fa fa-fax\"></i> {{'APPLICATION_FAX' | translate}}\n </a>\n </li>\n <li data-ng-class=\"{'active': $state.is('main.staff.agents.view.queues.sms'),'disabled-link':!license.messaging}\" data-ng-show=\"Auth.isAdmin() || userModules[11]\">\n <a href=\"{{license.messaging ? '/staff/agents/view/'+agent.id+'/queues/sms' : 'javascript:;'}}\" class=\"disable-target\">\n <i class=\"glyphicon glyphicon-comment\"></i> {{'APPLICATION_SMS' | translate}}\n </a>\n </li>\n <li data-ng-class=\"{'active': $state.is('main.staff.agents.view.queues.openchannel'),'disabled-link':!license.openchannel}\" data-ng-show=\"Auth.isAdmin() || userModules[20]\">\n <a href=\"{{license.openchannel ? '/staff/agents/view/'+agent.id+'/queues/openchannel' : 'javascript:;'}}\" class=\"disable-target\">\n <i class=\"icon-globe\"></i> {{'APPLICATION_OPEN_CHANNEL' | translate}}\n </a>\n </li>\n </ul>\n </div>\n </nav>\n </div>\n <div ui-view></div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n"),a.put("app/staff/agent/view/view.queues.mail.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12" data-ng-init="initMailQueues()">\n <!-- BEGIN FORM-->\n <form action="#" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="params.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="params.penalty=params.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!params.penalty" data-ng-click="params.penalty=params.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-queues-mail">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/agent/view/view.queues.openchannel.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12" data-ng-init="initOpenchannelQueues()">\n <!-- BEGIN FORM-->\n <form action="#" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="params.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="params.penalty=params.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!params.penalty" data-ng-click="params.penalty=params.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-queues-openchannel">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/agent/view/view.queues.sms.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12" data-ng-init="initSmsQueues()">\n <!-- BEGIN FORM-->\n <form action="#" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="params.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="params.penalty=params.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!params.penalty" data-ng-click="params.penalty=params.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-queues-sms">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/agent/view/view.queues.voice.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12" data-ng-init="initVoiceQueues()">\n <!-- BEGIN FORM-->\n <form action="#" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="params.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="params.penalty=params.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!params.penalty" data-ng-click="params.penalty=params.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-queues-voice">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/agent/view/view.sms.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_SMS\' | translate}}</span>\n </div>\n </div>\n\n <div class="portlet-body">\n <!-- START CHAT TAB -->\n <form name="form" data-ng-submit="patchItem()" novalidate>\n <!-- START CAPACITY -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.capacity.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_CAPACITY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="smsCapacity" placeholder="{{\'APPLICATION_CAPACITY\' | translate}}" class="form-control" data-ng-model="agent.smsCapacity" min="0" required/>\n <span class="help-block">\n {{\'MESSAGE_ZERO_MEANS_UNLIMITED\' | translate}}\n </span>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CAPACITY -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n <!-- END CHAT TAB -->\n </div>\n </div>\n </div>\n</div>\n</div>\n'),a.put("app/staff/agent/view/view.voice.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_VOICE\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="forms.voice" data-ng-submit="updateItem()" novalidate>\n\n <!-- START INTERNAL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.voice.internal.$touched || forms.voice.$submitted) && forms.voice.internal.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERNAL_NUMBER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="internal" placeholder="{{\'APPLICATION_INTERNAL_NUMBER\' | translate}}" class="form-control" data-ng-model="agent.internal" required disabled/>\n <span data-ng-show="(forms.voice.internal.$touched || forms.voice.$submitted) && forms.voice.internal.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERNAL -->\n\n <!-- START TRANSPORT -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TRANSPORT\' | translate}}</label>\n <ui-select multiple name="transport" ng-model="agent.transport" theme="bootstrap">\n <ui-select-match placeholder="Select transport...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="transport in [\'udp\', \'tcp\', \'ws\', \'wss\'] | filter: $select.search">\n {{transport}}\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_TRANSPORT\' | translate }}\n </span>\n </div>\n <!-- END TRANSPORT -->\n\n <!-- START HOST -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.voice.host.$touched || forms.voice.$submitted) && forms.voice.host.$invalid}">\n <label class="control-label">{{\'APPLICATION_HOST\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="host" placeholder="{{\'APPLICATION_HOST\' | translate}}" class="form-control" data-ng-model="agent.host" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_HOST\' | translate }}\n </span>\n <span data-ng-show="(forms.voice.host.$touched || forms.voice.$submitted) && forms.voice.host.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END HOST -->\n\n <!-- START NAT -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_NAT\' | translate}}</label>\n <ui-select multiple data-ng-model="agent.nat" name="nat" theme="bootstrap">\n <ui-select-match placeholder="{{ \'APPLICATION_SEARCH_FILTER\' | translate }}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="nat in [\'yes\', \'no\', \'never\', \'route\', \'force_rport\', \'comedia\'] | filter: $select.search">\n {{nat}}\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_NAT\' | translate }}\n </span>\n </div>\n <!-- END NAT -->\n\n <!-- START TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.voice.type.$touched || forms.voice.$submitted) && forms.voice.type.$invalid}">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="agent.type" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_SEARCH_FILTER\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="type in [\'friend\', \'user\', \'peer\'] | filter: $select.search">\n <div ng-bind-html="type | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_TYPE\' | translate }}\n </span>\n <span data-ng-show="(forms.voice.type.$touched || forms.voice.$submitted) && forms.voice.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TYPE -->\n\n <!-- START CODEC -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALLOWED_CODECS\' | translate}}</label>\n <ui-select multiple ng-model="agent.allow" name="allow" theme="bootstrap" ng-disabled="disabled">\n <ui-select-match placeholder="Select codec...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="allow in [\'g722\', \'g729\', \'ilbc\', \'gsm\', \'ulaw\', \'alaw\', \'opus\'] | filter: $select.search">\n {{allow}}\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CODEC\' | translate }}\n </span>\n </div>\n <!-- END CODEC -->\n\n <!-- START CHANSPY -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_CHANSPY\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="agent.chanspy"\n type="checkbox"\n name="auth"\n switch-active="{{ recordSwitch.isActive }}"\n switch-on-text="{{ recordSwitch.onText }}"\n switch-off-text="{{ recordSwitch.offText }}"\n switch-on-color="{{ recordSwitch.onColor }}"\n switch-off-color="{{ recordSwitch.offColor }}"\n switch-animate="{{ recordSwitch.animate }}"\n switch-size="{{ recordSwitch.size }}"\n switch-label="{{ recordSwitch.label }}"\n switch-icon="{{ recordSwitch.icon }}"\n switch-radio-off="{{ recordSwitch.radioOff }}"\n switch-label-width="{{ recordSwitch.labelWidth }}"\n switch-handle-width="{{ recordSwitch.handleWidth }}">\n </div>\n <!-- END CHANSPY -->\n\n <!-- START CALLGROUP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.voice.callgroup.$touched || forms.voice.$submitted) && forms.voice.callgroup.$invalid}">\n <label class="control-label">{{\'APPLICATION_CALLGROUP\' | translate}}</label>\n <input type="text" name="callgroup" placeholder="{{\'APPLICATION_CALLGROUP\' | translate}}" class="form-control" data-ng-model="agent.callgroup"/>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CALLGROUP\' | translate }}\n </span>\n <span data-ng-show="(forms.voice.callgroup.$touched || forms.voice.$submitted) && forms.voice.callgroup.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CALLGROUP -->\n\n <!-- START PICKUPGROUP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.voice.pickupgroup.$touched || forms.voice.$submitted) && forms.voice.pickupgroup.$invalid}">\n <label class="control-label">{{\'APPLICATION_PICKUPGROUP\' | translate}}</label>\n <input type="text" name="pickupgroup" placeholder="{{\'APPLICATION_PICKUPGROUP\' | translate}}" class="form-control" data-ng-model="agent.pickupgroup"/>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_PICKUPGROUP\' | translate }}\n </span>\n <span data-ng-show="(forms.voice.pickupgroup.$touched || forms.voice.$submitted) && forms.voice.pickupgroup.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PICKUPGROUP -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/staff/agent/wizard/wizard-bulk.html",'<div class="col-md-12">\n <!-- BEGIN PAGE HEADER-->\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-people"></i>\n <a href="/agents/list">{{ \'APPLICATION_AGENTS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-options"></i>\n <a href="/agents/wizard">{{ \'APPLICATION_WIZARD\' | translate }}</a>\n </li>\n </ul>\n </div>\n <!-- END PAGE HEADER-->\n\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered" data-ng-init="getFirstFreeInternal(); item.amount = 2; item.startIndex = 0;">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-user font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_AGENT\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItems()">\n <wz-step title="{{\'APPLICATION_ACCOUNT\' | translate}}" canexit="exitValidation(forms.info.$valid)">\n <form name="forms.info" novalidate>\n\n <!-- START AMOUNT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.amount.$touched || forms.info.$submitted) && forms.info.amount.$invalid}">\n <label class="control-label">{{\'APPLICATION_AMOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="amount" min="2" max="{{maxAmount}}" placeholder="{{\'APPLICATION_AMOUNT\' | translate}}" class="form-control" data-ng-model="item.amount" required>\n <span data-ng-show="(forms.info.amount.$touched || forms.info.$submitted) && forms.info.amount.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span class="help-block help-block-info">\n {{\'MESSAGE_STARTING_FROM_INTERNAL\' | translate}} <b>{{item.minInternal}}</b> {{\'MESSAGE_MAX_NUM_OF_BULK_AGENTS_IS\' | translate}} <b>{{maxAmount}}</b>\n </span>\n </div>\n <!-- END AMOUNT -->\n\n <!-- START START INDEX -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.startIndex.$touched || forms.info.$submitted) && forms.info.startIndex.$invalid}">\n <label class="control-label">{{\'APPLICATION_START_INDEX\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="startIndex" min="0" placeholder="{{\'APPLICATION_START_INDEX\' | translate}}" class="form-control" data-ng-model="item.startIndex" required>\n <span data-ng-show="(forms.info.startIndex.$touched || forms.info.$submitted) && forms.info.startIndex.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END START INDEX -->\n\n <!-- START MIN INTERNAL-->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.internal.$touched || forms.info.$submitted) && forms.info.minInternal.$invalid}">\n <label class="control-label">{{\'APPLICATION_MIN_INTERNAL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="minInternal" min="0" placeholder="{{\'APPLICATION_MIN_INTERNAL\' | translate}}" class="form-control" data-ng-change="getAmount()" data-ng-model="item.minInternal" required>\n <span data-ng-show="(forms.info.minInternal.$touched || forms.info.$submitted) && forms.info.minInternal.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MIN INTERNAL-->\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.fullname.$touched || forms.info.$submitted) && forms.info.fullname.$invalid}">\n <label class="control-label">{{\'APPLICATION_FULLNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="fullname" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.fullname" required/>\n <span data-ng-show="(forms.info.fullname.$touched || forms.info.$submitted) && forms.info.fullname.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="item.name" data-ng-pattern="settings.patternName" required>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START EMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="email" name="email" placeholder="{{\'APPLICATION_EMAIL\' | translate}}" class="form-control" data-ng-model="item.email" required>\n <span data-ng-show="(forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$error.email" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.password" data-ng-pattern="setting.securePassword ? settings.patternPassword : settings.patternPasswordLight" required/>\n <span class="help-block">\n {{setting.securePassword ? \'MESSAGE_PASSWORD_FORMAT\' : \'MESSAGE_PASSWORD_LIGHT_FORMAT\' | translate}}\n </span>\n <span data-ng-show="(forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START RE PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.rpassword.$touched || forms.info.$submitted) && forms.info.rpassword.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONFIRM_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="rpassword" placeholder="{{\'APPLICATION_CONFIRM_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.rpassword" nx-equal="item.password" required/>\n <span data-ng-show="(forms.info.rpassword.$touched || forms.info.$submitted) && forms.info.rpassword.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.rpassword.$touched || forms.info.$submitted) && forms.info.rpassword.$error.nxEqual" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_PASSWORD\' | translate}}.\n </span>\n </div>\n <!-- END RE PASSWORD -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_VOICE\' | translate}}" canexit="exitValidation(forms.voice.$valid)">\n <form name="forms.voice" novalidate>\n\n <!-- START TRANSPORT -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TRANSPORT\' | translate}}</label>\n <ui-select multiple name="transport" ng-model="item.transport" theme="bootstrap" ng-disabled="disabled">\n <ui-select-match placeholder="Select transport...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="transport in [\'udp\', \'tcp\', \'ws\', \'wss\'] | filter: $select.search">\n {{transport}}\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_TRANSPORT\' | translate }}\n </span>\n </div>\n <!-- END TRANSPORT -->\n\n <!-- START CODEC -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALLOWED_CODECS\' | translate}}</label>\n <ui-select multiple ng-model="item.allow" name="allow" theme="bootstrap" ng-disabled="disabled">\n <ui-select-match placeholder="Select codec...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="allow in [\'g722\', \'g729\', \'ilbc\', \'gsm\', \'ulaw\', \'alaw\', \'opus\'] | filter: $select.search">\n {{allow}}\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CODEC\' | translate }}\n </span>\n </div>\n <!-- END CODEC -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END PORTLET-->\n</div>\n'),a.put("app/staff/agent/wizard/wizard.html",'<div class="col-md-12">\n <!-- BEGIN PAGE HEADER-->\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-puzzle"></i>\n <a href="#">{{ \'APPLICATION_STAFF\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-people"></i>\n <a href="/staff/agents/list">{{ \'APPLICATION_AGENTS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-options"></i>\n <a href="/agents/wizard">{{ \'APPLICATION_WIZARD\' | translate }}</a>\n </li>\n </ul>\n </div>\n <!-- END PAGE HEADER-->\n\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered" data-ng-init="getFirstFreeInternal();">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-user font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_AGENT\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_ACCOUNT\' | translate}}" canexit="exitValidation(forms.info.$valid)">\n <form name="forms.info" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.fullname.$touched || forms.info.$submitted) && forms.info.fullname.$invalid}">\n <label class="control-label">{{\'APPLICATION_FULLNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="fullname" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.fullname" required/>\n <span data-ng-show="(forms.info.fullname.$touched || forms.info.$submitted) && forms.info.fullname.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="item.name" data-ng-pattern="settings.patternName" required>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START EMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="email" name="email" placeholder="{{\'APPLICATION_EMAIL\' | translate}}" class="form-control" data-ng-model="item.email" required>\n <span data-ng-show="(forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$error.email" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.phone.$touched || forms.info.$submitted) && forms.info.phone.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}</label>\n <input type="text" name="phone" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="item.phone"/>\n </div>\n <!-- END NAME -->\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.mobile.$touched || forms.info.$submitted) && forms.info.mobile.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOBILE\' | translate}}</label>\n <input type="text" name="mobile" placeholder="{{\'APPLICATION_MOBILE\' | translate}}" class="form-control" data-ng-model="item.mobile"/>\n </div>\n <!-- END NAME -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.password" data-ng-pattern="setting.securePassword ? settings.patternPassword : settings.patternPasswordLight" required/>\n <span class="help-block">\n {{setting.securePassword ? \'MESSAGE_PASSWORD_FORMAT\' : \'MESSAGE_PASSWORD_LIGHT_FORMAT\' | translate}}\n </span>\n <span data-ng-show="(forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START RE PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.rpassword.$touched || forms.info.$submitted) && forms.info.rpassword.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONFIRM_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="rpassword" placeholder="{{\'APPLICATION_CONFIRM_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.rpassword" nx-equal="item.password" required/>\n <span data-ng-show="(forms.info.rpassword.$touched || forms.info.$submitted) && forms.info.rpassword.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.rpassword.$touched || forms.info.$submitted) && forms.info.rpassword.$error.nxEqual" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_PASSWORD\' | translate}}.\n </span>\n </div>\n <!-- END RE PASSWORD -->\n\n <!-- START INTERNAL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.internal.$touched || forms.info.$submitted) && forms.info.internal.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERNAL_NUMBER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <div class="input-group">\n <input type="number" min="1" name="internal" placeholder="{{\'APPLICATION_INTERNAL_NUMBER\' | translate}}" class="form-control" data-ng-model="item.internal" data-ng-disabled="!item.internalEnabled" data-ng-required="item.internalEnabled"/>\n <span class="input-group-addon">\n <input type="checkbox" data-ng-model="item.internalEnabled">\n </span>\n </div>\n <span data-ng-show="(forms.info.internal.$touched || forms.info.$submitted) && forms.info.internal.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERNAL -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_VOICE\' | translate}}" canexit="exitValidation(forms.voice.$valid)">\n <form name="forms.voice" novalidate>\n\n <!-- START TRANSPORT -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TRANSPORT\' | translate}}</label>\n <ui-select multiple name="transport" ng-model="item.transport" theme="bootstrap" ng-disabled="disabled">\n <ui-select-match placeholder="Select transport...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="transport in [\'udp\', \'tcp\', \'ws\', \'wss\'] | filter: $select.search">\n {{transport}}\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_TRANSPORT\' | translate }}\n </span>\n </div>\n <!-- END TRANSPORT -->\n\n <!-- START CODEC -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALLOWED_CODECS\' | translate}}</label>\n <ui-select multiple ng-model="item.allow" name="allow" theme="bootstrap" ng-disabled="disabled">\n <ui-select-match placeholder="Select codec...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="allow in [\'g722\', \'g729\', \'ilbc\', \'gsm\', \'ulaw\', \'alaw\', \'opus\'] | filter: $select.search">\n {{allow}}\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CODEC\' | translate }}\n </span>\n </div>\n <!-- END CODEC -->\n\n <!-- <div class="form-body" data-ng-init="initVoiceQueues()">\n <label class="control-label">{{ \'APPLICATION_QUEUES\' | translate}}</label>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-queues-voice">\n </div>\n </div>\n </div> -->\n\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n </form>\n </wz-step>\n\n <!-- <wz-step title="{{\'APPLICATION_CHAT\' | translate}}">\n <form name="forms.chat">\n <div class="form-body" data-ng-init="initChatQueues()">\n <label class="control-label">{{ \'APPLICATION_QUEUES\' | translate}}</label>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-queues-chat">\n </div>\n </div>\n </div>\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n </form>\n </wz-step> -->\n\n <!-- <wz-step title="{{\'APPLICATION_MAIL\' | translate}}">\n <form name="forms.mail">\n <div class="form-body" data-ng-init="initMailQueues()">\n <label class="control-label">{{ \'APPLICATION_QUEUES\' | translate}}</label>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-queues-mail">\n </div>\n </div>\n </div>\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n </form>\n </wz-step> -->\n\n\n <!-- <wz-step title="{{\'APPLICATION_SMS\' | translate}}">\n <form name="forms.sms">\n <div class="form-body" data-ng-init="initSmsQueues()">\n <label class="control-label">{{ \'APPLICATION_QUEUES\' | translate}}</label>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-queues-sms">\n </div>\n </div>\n </div>\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n </form>\n </wz-step> -->\n\n <!-- <wz-step title="{{\'APPLICATION_FAX\' | translate}}">\n <form name="forms.fax">\n <div class="form-body" data-ng-init="initFaxQueues()">\n <label class="control-label">{{ \'APPLICATION_QUEUES\' | translate}}</label>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-queues-fax">\n </div>\n </div>\n </div>\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n </form>\n </wz-step> -->\n\n <!-- <wz-step title="{{\'APPLICATION_OPEN_CHANNEL\' | translate}}">\n <form name="forms.openchannel">\n <div class="form-body" data-ng-init="initOpenchannelQueues()">\n <label class="control-label">{{ \'APPLICATION_QUEUES\' | translate}}</label>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-queues-openchannel">\n </div>\n </div>\n </div>\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n </form>\n </wz-step> -->\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END PORTLET-->\n</div>\n'), +a.put("app/staff/team/list/create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_TEAM\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/staff/team/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-puzzle"></i>\n <a href="#">{{ \'APPLICATION_STAFF\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-shield"></i>\n <a href="/staff/teams/list">{{ \'APPLICATION_TEAMS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-shield font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_TEAMS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <a class="btn green-jungle" href="#" data-ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_TEAM\' | translate }}\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/team/view/view.agents.html",'<div class="row" data-ng-init="initAgents()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_AGENTS\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <!-- GENERAL TAB -->\n <!-- BEGIN PORTLET-->\n <!-- BEGIN FORM-->\n <form action="index.html" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-team">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n <!-- END PORTLET-->\n <!-- END GENERAL TAB -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/staff/team/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-puzzle"></i>\n <a href="#">{{ \'APPLICATION_STAFF\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-shield"></i>\n <a href="/staff/teams/list">{{ \'APPLICATION_TEAMS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <a href="#">{{team.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img ng-src="assets/images/media/team.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{team.name}}\n </div>\n\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.staff.teams.view.settings\')}">\n <a data-ng-href="/staff/teams/view/{{team.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.staff.teams.view.agents\')}">\n <a data-ng-href="/staff/teams/view/{{team.id}}/agents">\n <i class="icon-people"></i>\n {{ \'APPLICATION_AGENTS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content"></div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/team/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_ACCOUNT\' | translate}}</span>\n </div>\n </div>\n\n <div class="portlet-body">\n <!-- PERSONAL INFO TAB -->\n <div>\n\n <form name="forms.info" data-ng-submit="updateItem()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="team.name" required/>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="team.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END PERSONAL INFO TAB -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/staff/telephone/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-puzzle"></i>\n <a href="#">{{ \'APPLICATION_STAFF\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-phone"></i>\n <a href="/staff/telephones/list">{{ \'APPLICATION_TELEPHONES\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-phone font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_TELEPHONES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <a class="btn green-jungle" href="/staff/telephones/wizard" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_TELEPHONE\' | translate }}\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/telephone/view/view.account.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_ACCOUNT\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_ACCOUNT\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-ng-show="Auth.isAdmin() || item.id === getCurrentTelephone().id" data-target="#tab_1_2" data-toggle="tab">{{ \'APPLICATION_CHANGE_PASSWORD\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- PERSONAL INFO TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.info" data-ng-submit="forms.info.$valid && updateItem()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.fullname.$touched || forms.info.$submitted) && forms.info.fullname.$invalid}">\n <label class="control-label">{{\'APPLICATION_FULLNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="fullname" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.fullname" required/>\n <span data-ng-show="(forms.info.fullname.$touched || forms.info.$submitted) && forms.info.fullname.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}</label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="item.name" disabled/>\n </div>\n <!-- END USERNAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END PERSONAL INFO TAB -->\n\n <!-- CHANGE PASSWORD TAB -->\n <div class="tab-pane" id="tab_1_2" data-ng-show="Auth.isAdmin() || item.id === getCurrentTelephone().id">\n <form name="forms.changePwd" data-ng-submit="forms.changePwd.$valid && updatePassword()" novalidate>\n <!-- START CURRENT PWD -->\n <!-- <div class="form-group" data-ng-if="!Auth.isAdmin()" data-ng-class="{\'has-error\': (forms.changePwd.current_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.current_pwd.$invalid}">\n <label class="control-label">{{\'APPLICATION_CURRENT_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="current_pwd" placeholder="{{\'APPLICATION_CURRENT_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.currentPwd" required/>\n <span data-ng-show="(forms.changePwd.current_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.current_pwd.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div> -->\n <!-- END CURRENT PWD -->\n <!-- START NEW PWD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.changePwd.new_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.new_pwd.$invalid}">\n <label class="control-label">{{\'APPLICATION_NEW_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="new_pwd" placeholder="{{\'APPLICATION_NEW_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.newPwd" data-ng-pattern="setting.securePassword ? settings.patternPassword : settings.patternPasswordLight" required/>\n <span class="help-block">\n {{setting.securePassword ? \'MESSAGE_PASSWORD_FORMAT\' : \'MESSAGE_PASSWORD_LIGHT_FORMAT\' | translate}}\n </span>\n <span data-ng-show="(forms.changePwd.new_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.new_pwd.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NEW PWD -->\n <!-- START RE-NEW PWD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.changePwd.re_new_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.re_new_pwd.$invalid}">\n <label class="control-label">{{\'APPLICATION_RE_TYPE_NEW_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="re_new_pwd" placeholder="{{\'APPLICATION_RE_TYPE_NEW_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.reNewPwd" nx-equal="item.newPwd" required/>\n <span data-ng-show="(forms.changePwd.new_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.new_pwd.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END RE-NEW PWD -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END CHANGE PASSWORD TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/staff/telephone/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-puzzle"></i>\n <a href="#">{{ \'APPLICATION_STAFF\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-phone"></i>\n <a href="/staff/telephones/list">{{ \'APPLICATION_TELEPHONES\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <a href="#">{{item.fullname}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR TELEPHONEPIC -->\n <div class="profile-userpic">\n <img data-ng-src="assets/images/media/telephone.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR TELEPHONEPIC -->\n <!-- SIDEBAR TELEPHONE TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{item.fullname}}\n </div>\n <div class="profile-usertitle-job">\n {{item.role}}\n </div>\n </div>\n <!-- END SIDEBAR TELEPHONE TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.staff.telephones.view.account\')}">\n <a data-ng-href="/staff/telephones/view/{{item.id}}/account">\n <i class="icon-phone"></i>\n {{ \'APPLICATION_ACCOUNT\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.staff.telephones.view.voice\')}" data-ng-show="Auth.isAdmin()">\n <a data-ng-href="/staff/telephones/view/{{item.id}}/voice">\n <i class="icon-earphones-alt"></i>\n {{ \'APPLICATION_VOICE\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/telephone/view/view.voice.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_ACCOUNT\' | translate}} {{ \'APPLICATION_VOICE\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="forms.info" data-ng-submit="updateItem()" novalidate>\n\n <!-- START INTERNAL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.internal.$touched || forms.info.$submitted) && forms.info.internal.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERNAL_NUMBER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="internal" placeholder="{{\'APPLICATION_INTERNAL_NUMBER\' | translate}}" class="form-control" data-ng-model="item.internal" required readonly/>\n <span data-ng-show="(forms.info.internal.$touched || forms.info.$submitted) && forms.info.internal.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.internal.$touched || forms.info.$submitted) && forms.info.internal.$error.ngRemoteValidate" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_EXIST_INTERNAL\' | translate}}.\n </span>\n </div>\n <!-- END INTERNAL -->\n\n <!-- START TRANSPORT -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TRANSPORT\' | translate}}</label>\n <ui-select multiple name="transport" ng-model="item.transport" theme="bootstrap" ng-disabled="disabled">\n <ui-select-match placeholder="Select transport...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="transport in [\'udp\', \'tcp\', \'ws\', \'wss\'] | filter: $select.search">\n {{transport}}\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_TRANSPORT\' | translate }}\n </span>\n </div>\n <!-- END TRANSPORT -->\n\n <!-- START CODEC -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALLOWED_CODECS\' | translate}}</label>\n <ui-select multiple ng-model="item.allow" name="allow" theme="bootstrap" ng-disabled="disabled">\n <ui-select-match placeholder="Select codec...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="allow in [\'g722\', \'g729\', \'ilbc\', \'gsm\', \'ulaw\', \'alaw\', \'opus\'] | filter: $select.search">\n {{allow}}\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CODEC\' | translate }}\n </span>\n </div>\n <!-- END CODEC -->\n\n <!-- START CALLGROUP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.voice.callgroup.$touched || forms.voice.$submitted) && forms.voice.callgroup.$invalid}">\n <label class="control-label">{{\'APPLICATION_CALLGROUP\' | translate}}</label>\n <input type="text" name="callgroup" placeholder="{{\'APPLICATION_CALLGROUP\' | translate}}" class="form-control" data-ng-model="item.callgroup"/>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CALLGROUP\' | translate }}\n </span>\n <span data-ng-show="(forms.voice.callgroup.$touched || forms.voice.$submitted) && forms.voice.callgroup.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CALLGROUP -->\n\n <!-- START PICKUPGROUP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.voice.pickupgroup.$touched || forms.voice.$submitted) && forms.voice.pickupgroup.$invalid}">\n <label class="control-label">{{\'APPLICATION_PICKUPGROUP\' | translate}}</label>\n <input type="text" name="pickupgroup" placeholder="{{\'APPLICATION_PICKUPGROUP\' | translate}}" class="form-control" data-ng-model="item.pickupgroup"/>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_PICKUPGROUP\' | translate }}\n </span>\n <span data-ng-show="(forms.voice.pickupgroup.$touched || forms.voice.$submitted) && forms.voice.pickupgroup.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PICKUPGROUP -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/staff/telephone/wizard/wizard.html",'<div class="col-md-12">\n <!-- BEGIN PAGE HEADER-->\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-puzzle"></i>\n <a href="#">{{ \'APPLICATION_STAFF\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-phone"></i>\n <a href="/staff/telephones/list">{{ \'APPLICATION_TELEPHONES\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-options"></i>\n <a href="/staff/telephones/wizard">{{ \'APPLICATION_WIZARD\' | translate }}</a>\n </li>\n </ul>\n </div>\n <!-- END PAGE HEADER-->\n\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered" data-ng-init="getFirstFreeInternal();">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-phone font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_TELEPHONE\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_ACCOUNT\' | translate}}" canexit="exitValidation(forms.info.$valid)">\n <form name="forms.info" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.fullname.$touched || forms.info.$submitted) && forms.info.fullname.$invalid}">\n <label class="control-label">{{\'APPLICATION_FULLNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="fullname" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.fullname" required/>\n <span data-ng-show="(forms.info.fullname.$touched || forms.info.$submitted) && forms.info.fullname.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="item.name" ata-ng-pattern="settings.patternName" required />\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$error.ngRemoteValidate" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_EXIST_USERNAME\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.password" data-ng-pattern="setting.securePassword ? settings.patternPassword : settings.patternPasswordLight" required/>\n <span class="help-block">\n {{setting.securePassword ? \'MESSAGE_PASSWORD_FORMAT\' : \'MESSAGE_PASSWORD_LIGHT_FORMAT\' | translate}}\n </span>\n <span data-ng-show="(forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START RE PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.rpassword.$touched || forms.info.$submitted) && forms.info.rpassword.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONFIRM_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="rpassword" placeholder="{{\'APPLICATION_CONFIRM_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.rpassword" nx-equal="item.password" required/>\n <span data-ng-show="(forms.info.rpassword.$touched || forms.info.$submitted) && forms.info.rpassword.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.rpassword.$touched || forms.info.$submitted) && forms.info.rpassword.$error.nxEqual" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_PASSWORD\' | translate}}.\n </span>\n </div>\n <!-- END RE PASSWORD -->\n\n <!-- START INTERNAL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.internal.$touched || forms.info.$submitted) && forms.info.internal.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERNAL_NUMBER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <div class="input-group">\n <input type="number" min="1" name="internal" placeholder="{{\'APPLICATION_INTERNAL_NUMBER\' | translate}}" class="form-control" data-ng-model="item.internal" data-ng-disabled="!item.internalEnabled" data-ng-required="item.internalEnabled"/>\n <span class="input-group-addon">\n <input type="checkbox" data-ng-model="item.internalEnabled">\n </span>\n </div>\n <span data-ng-show="(forms.info.internal.$touched || forms.info.$submitted) && forms.info.internal.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERNAL -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_VOICE\' | translate}}" canexit="exitValidation(forms.voice.$valid)">\n <form name="forms.voice" novalidate>\n\n <!-- START TRANSPORT -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TRANSPORT\' | translate}}</label>\n <ui-select multiple name="transport" ng-model="item.transport" theme="bootstrap" ng-disabled="disabled">\n <ui-select-match placeholder="Select transport...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="transport in [\'udp\', \'tcp\', \'ws\', \'wss\'] | filter: $select.search">\n {{transport}}\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_TRANSPORT\' | translate }}\n </span>\n </div>\n <!-- END TRANSPORT -->\n\n <!-- START CODEC -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALLOWED_CODECS\' | translate}}</label>\n <ui-select multiple ng-model="item.allow" name="allow" theme="bootstrap" ng-disabled="disabled">\n <ui-select-match placeholder="Select codec...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="allow in [\'g722\', \'g729\', \'ilbc\', \'gsm\', \'ulaw\', \'alaw\', \'opus\'] | filter: $select.search">\n {{allow}}\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CODEC\' | translate }}\n </span>\n </div>\n <!-- END CODEC -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END PORTLET-->\n</div>\n'), +a.put("app/staff/user/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-puzzle"></i>\n <a href="#">{{ \'APPLICATION_STAFF\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-eye"></i>\n <a href="#">{{ \'APPLICATION_USERS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-eye font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_USERS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <a class="btn green-jungle" href="/staff/users/wizard" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_USER\' | translate }}\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/user/view/view.account.html",'<div class="row" data-ng-init="checkUser()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_ACCOUNT\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_PERSONAL_INFO\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{ \'APPLICATION_CHANGE_AVATAR\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-ng-show="Auth.isAdmin() || user.id === getCurrentUser().id" data-target="#tab_1_3" data-toggle="tab">{{ \'APPLICATION_CHANGE_PASSWORD\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- PERSONAL INFO TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.info" data-ng-submit="updateItem()" novalidate>\n\n <!-- START ROLE -->\n <div class="form-group" data-ng-if="Auth.getCurrentUser().role === \'admin\' && Auth.getCurrentUser().id !== user.id">\n <label class="control-label">{{ \'APPLICATION_ROLE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select name="role" data-ng-model="user.role" theme="bootstrap" required>\n <ui-select-match placeholder="Select role...">{{$select.selected | uppercase}}</ui-select-match>\n <ui-select-choices repeat="role in [\'user\', \'admin\'] | filter: $select.search">\n {{role | uppercase}}\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END ROLE -->\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.fullname.$touched || forms.info.$submitted) && forms.info.fullname.$invalid}">\n <label class="control-label">{{\'APPLICATION_FULLNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="fullname" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="user.fullname" required/>\n <span data-ng-show="(forms.info.fullname.$touched || forms.info.$submitted) && forms.info.fullname.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}</label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="user.name" disabled/>\n </div>\n <!-- END USERNAME -->\n\n <!-- START EMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="email" name="email" placeholder="{{\'APPLICATION_EMAIL\' | translate}}" class="form-control" data-ng-model="user.email" required/>\n <span data-ng-show="(forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$error.email" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="user.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END PERSONAL INFO TAB -->\n\n <!-- CHANGE AVATAR TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form action="#" role="form">\n <div class="form-group">\n <div class="fileinput fileinput-new" data-provides="fileinput">\n <div class="fileinput-new thumbnail" style="width: 200px; height: 150px;">\n <img ng-src="assets/images/media/noProfileImage.png" alt=""/>\n </div>\n <div class="fileinput-preview fileinput-exists thumbnail" style="max-width: 200px; max-height: 150px;">\n </div>\n <div>\n <span class="btn default btn-file" data-ng-show="!uploader.queue[0]">\n <span> {{ \'APPLICATION_SELECT_IMAGE\' | translate }} </span>\n <input type="file" nv-file-select="" uploader="uploader" /><br/>\n </span>\n <button type="button" class="btn default" data-ng-show="uploader.queue[0]" data-dismiss="fileinput" ng-click="uploader.queue[0].remove()">\n <span> {{ \'APPLICATION_REMOVE\' | translate }} </span>\n </button>\n <button type="button" class="btn green-haze" data-ng-show="uploader.queue[0]" data-ng-click="uploader.queue[0].upload()" ng-disabled="uploader.queue[0].isReady || uploader.queue[0].isUploading || uploader.queue[0].isSuccess">\n <span> {{ \'APPLICATION_CONFIRM\' | translate }} </span>\n </button>\n </div>\n <p>\n </br> {{ \'MESSAGE_SUPPORTED_FORMATS\' | translate }} <b>jpg, png, jpeg</b>.\n </p>\n </div>\n </div>\n </form>\n <div class="row">\n <div class="col-md-2">\n <table class="table" border="0">\n <tbody>\n <tr data-ng-repeat="item in uploader.queue">\n <td style="border-top-style:none">\n <strong>\n {{ item.file.name }}\n </strong>\n </td>\n <td data-ng-show="uploader.isHTML5" nowrap style="border-top-style:none">\n {{ item.file.size/1024/1024|number:2 }} MB\n </td>\n <td nowrap style="border-top-style:none">\n <button type="button" class="btn btn-danger btn-xs" data-ng-click="item.remove()">\n <span class="glyphicon glyphicon-trash"></span> Remove\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n <!-- END CHANGE AVATAR TAB -->\n <!-- CHANGE PASSWORD TAB -->\n <div class="tab-pane" id="tab_1_3" data-ng-show="Auth.isAdmin() || user.id === getCurrentUser().id">\n <form name="forms.changePwd" data-ng-submit="forms.changePwd.$valid && updatePassword()" novalidate>\n <!-- START CURRENT PWD -->\n <div class="form-group" data-ng-if="!Auth.isAdmin()" data-ng-class="{\'has-error\': (forms.changePwd.current_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.current_pwd.$invalid}">\n <label class="control-label">{{\'APPLICATION_CURRENT_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="current_pwd" placeholder="{{\'APPLICATION_CURRENT_PASSWORD\' | translate}}" class="form-control" data-ng-model="user.currentPwd" required/>\n <span data-ng-show="(forms.changePwd.current_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.current_pwd.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CURRENT PWD -->\n <!-- START NEW PWD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.changePwd.new_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.new_pwd.$invalid}">\n <label class="control-label">{{\'APPLICATION_NEW_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="new_pwd" placeholder="{{\'APPLICATION_NEW_PASSWORD\' | translate}}" class="form-control" data-ng-model="user.newPwd" data-ng-pattern="setting.securePassword ? settings.patternPassword : settings.patternPasswordLight" required/>\n <span class="help-block">\n {{setting.securePassword ? \'MESSAGE_PASSWORD_FORMAT\' : \'MESSAGE_PASSWORD_LIGHT_FORMAT\' | translate}}\n </span>\n <span data-ng-show="(forms.changePwd.current_pwd.$touched || forms.info.$submitted) && forms.changePwd.current_pwd.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n <span data-ng-show="(forms.changePwd.new_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.new_pwd.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NEW PWD -->\n <!-- START RE-NEW PWD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.changePwd.re_new_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.re_new_pwd.$invalid}">\n <label class="control-label">{{\'APPLICATION_RE_TYPE_NEW_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="re_new_pwd" placeholder="{{\'APPLICATION_RE_TYPE_NEW_PASSWORD\' | translate}}" class="form-control" data-ng-model="user.reNewPwd" nx-equal="user.newPwd" required/>\n <span data-ng-show="(forms.changePwd.new_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.new_pwd.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END RE-NEW PWD -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END CHANGE PASSWORD TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/staff/user/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-puzzle"></i>\n <a href="#">{{ \'APPLICATION_STAFF\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-eye"></i>\n <a href="/staff/users/list">{{ \'APPLICATION_USERS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <a href="#">{{user.fullname}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-userpic">\n <img ng-src="api/users/avatar/{{user.userpic ? user.userpic : \'unknown_avatar\'}}" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{user.fullname}}\n </div>\n <div class="profile-usertitle-job">\n {{user.role}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.staff.users.view.account\')}">\n <a data-ng-href="/staff/users/view/{{user.id}}/account">\n <i class="icon-user"></i>\n {{ \'APPLICATION_ACCOUNT\' | translate}}\n </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.staff.users.view.voice\')}" data-ng-show="Auth.isAdmin()">\n <a data-ng-href="/staff/users/view/{{user.id}}/voice">\n <i class="icon-earphones-alt"></i>\n {{ \'APPLICATION_VOICE\' | translate}}\n </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.staff.users.view.permit\')}" data-ng-show="Auth.isAdmin() && user.role != \'admin\'">\n <a data-ng-href="/staff/users/view/{{user.id}}/permit/voice">\n <i class="icon-key"></i>\n {{ \'APPLICATION_PERMITS\' | translate}}\n </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/user/view/view.permit.chat.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12" data-ng-init="initChatQueues()">\n <!-- BEGIN FORM-->\n <form action="#" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-permit">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/user/view/view.permit.fax.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12" data-ng-init="initFaxQueues()">\n <!-- BEGIN FORM-->\n <form action="#" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-permit">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/user/view/view.permit.html","<!-- BEGIN PAGE CONTENT-->\n<div class=\"row\">\n <div class=\"col-md-12\">\n <div>\n <nav class=\"navbar navbar-default\" role=\"navigation\">\n <div class=\"collapse navbar-collapse\">\n <ul class=\"nav navbar-nav\">\n <li data-ng-class=\"{'active': $state.is('main.staff.users.view.permit.voice')}\">\n <a href=\"/staff/users/view/{{user.id}}/permit/voice\">\n <i class=\"icon-earphones-alt\"></i> {{'APPLICATION_VOICE' | translate}}\n </a>\n </li>\n <li data-ng-class=\"{'active': $state.is('main.staff.users.view.permit.chat'),'disabled-link':!license.chat}\" data-ng-show=\"Auth.isAdmin() || userModules[8]\">\n <a href=\"{{license.chat ? '/staff/users/view/'+user.id+'/permit/chat' : 'javascript:;'}}\" class=\"disable-target\">\n <i class=\"icon-bubble\"></i> {{'APPLICATION_CHAT' | translate}}\n </a>\n </li>\n <li data-ng-class=\"{'active': $state.is('main.staff.users.view.permit.mail'),'disabled-link':!license.mail}\" data-ng-show=\"Auth.isAdmin() || userModules[9]\">\n <a href=\"{{license.mail ? '/staff/users/view/'+user.id+'/permit/mail' : 'javascript:;'}}\" class=\"disable-target\">\n <i class=\"icon-envelope\"></i>{{'APPLICATION_MAIL' | translate}}\n </a>\n </li>\n <li data-ng-class=\"{'active': $state.is('main.staff.users.view.permit.fax'),'disabled-link':!license.fax}\" data-ng-show=\"Auth.isAdmin() || userModules[10]\">\n <a href=\"{{license.fax ? '/staff/users/view/'+user.id+'/permit/fax' : 'javascript:;'}}\" class=\"disable-target\">\n <i class=\"fa fa-fax\"></i> {{'APPLICATION_FAX' | translate}}\n </a>\n </li>\n <li data-ng-class=\"{'active': $state.is('main.staff.users.view.permit.sms'),'disabled-link':!license.messaging}\" data-ng-show=\"Auth.isAdmin() || userModules[11]\">\n <a href=\"{{license.messaging ? '/staff/users/view/'+user.id+'/permit/sms' : 'javascript:;'}}\" class=\"disable-target\">\n <i class=\"glyphicon glyphicon-comment\"></i> {{'APPLICATION_SMS' | translate}}\n </a>\n </li>\n <li data-ng-class=\"{'active': $state.is('main.staff.users.view.permit.openchannel'),'disabled-link':!license.openchannel}\" data-ng-show=\"Auth.isAdmin() || userModules[20]\">\n <a href=\"{{license.openchannel ? '/staff/users/view/'+user.id+'/permit/openchannel' : 'javascript:;'}}\" class=\"disable-target\">\n <i class=\"icon-globe\"></i> {{'APPLICATION_OPEN_CHANNEL' | translate}}\n </a>\n </li>\n <li data-ng-class=\"{'active': $state.is('main.staff.users.view.permit.modules')}\" data-ng-if=\"user.role !== 'admin'\">\n <a href=\"/staff/users/view/{{user.id}}/permit/modules\">\n <i class=\"icon-menu\"></i> {{'APPLICATION_MODULES' | translate}}\n </a>\n </li>\n </ul>\n </div>\n </nav>\n </div>\n <div ui-view></div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n"),a.put("app/staff/user/view/view.permit.mail.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12" data-ng-init="initMailQueues()">\n <!-- BEGIN FORM-->\n <form action="#" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-permit">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/user/view/view.permit.modules.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row left-margin" data-ng-init="getModules()">\n <div data-ng-repeat="module in modules" data-ng-if="!module.ModuleId && ((module.id === 8 && license.chat) || (module.id === 9 && license.mail) || (module.id === 10 && license.fax) || (module.id === 11 && license.messaging) || (module.id === 20 && license.openchannel) || !_.includes([8,9,10,11,20],module.id))">\n <div class="form-group" data-ng-class="{\'left-margin-40\':module.ModuleId}">\n <span data-ng-if="module.ModuleId">└──</span> <input\n bs-switch\n class="form-control"\n ng-model="module.status"\n type="checkbox"\n data-ng-change="updatePermissions(module)"\n switch-active="{{ moduleSwitch.isActive }}"\n switch-on-text="{{ moduleSwitch.onText }}"\n switch-off-text="{{ moduleSwitch.offText }}"\n switch-on-color="{{ moduleSwitch.onColor }}"\n switch-off-color="{{ moduleSwitch.offColor }}"\n switch-animate="{{ moduleSwitch.animate }}"\n switch-size="{{ moduleSwitch.size }}"\n switch-label="{{ moduleSwitch.label }}"\n switch-icon="{{ moduleSwitch.icon }}"\n switch-radio-off="{{ moduleSwitch.radioOff }}"\n switch-label-width="{{ moduleSwitch.labelWidth }}"\n switch-handle-width="{{ moduleSwitch.handleWidth }}">\n <label class="control-label">{{module.title | translate | trusted}}</label>\n </div>\n <div ng-slide-down="module.status" lazy-render duration="0.5">\n <div data-ng-repeat="subModule in module.SubModules" data-ng-if="(subModule.id === 8 && license.chat) || (subModule.id === 9 && license.mail) || (subModule.id === 10 && license.fax) || (subModule.id === 11 && license.messaging) || (subModule.id === 20 && license.openchannel) || !_.includes([8,9,10,11,20],subModule.id)">\n <div class="form-group" data-ng-class="{\'left-margin-40\':module.ModuleId}">\n <span>└──</span> <input\n bs-switch\n class="form-control"\n ng-model="subModule.status"\n type="checkbox"\n data-ng-change="updatePermissions(subModule)"\n switch-active="{{ moduleSwitch.isActive }}"\n switch-on-text="{{ moduleSwitch.onText }}"\n switch-off-text="{{ moduleSwitch.offText }}"\n switch-on-color="{{ moduleSwitch.onColor }}"\n switch-off-color="{{ moduleSwitch.offColor }}"\n switch-animate="{{ moduleSwitch.animate }}"\n switch-size="{{ moduleSwitch.size }}"\n switch-label="{{ moduleSwitch.label }}"\n switch-icon="{{ moduleSwitch.icon }}"\n switch-radio-off="{{ moduleSwitch.radioOff }}"\n switch-label-width="{{ moduleSwitch.labelWidth }}"\n switch-handle-width="{{ moduleSwitch.handleWidth }}">\n <label class="control-label">{{subModule.title | translate}}</label>\n </div>\n <div ng-slide-down="subModule.status" lazy-render duration="0.5">\n <div data-ng-repeat="subModule2 in subModule.SubModules" class="form-group" data-ng-class="{\'left-margin-40\':module.ModuleId}">\n <span style="margin-left:40px">└──</span> <input\n bs-switch\n class="form-control"\n ng-model="subModule2.status"\n type="checkbox"\n data-ng-change="updatePermissions(subModule2)"\n switch-active="{{ moduleSwitch.isActive }}"\n switch-on-text="{{ moduleSwitch.onText }}"\n switch-off-text="{{ moduleSwitch.offText }}"\n switch-on-color="{{ moduleSwitch.onColor }}"\n switch-off-color="{{ moduleSwitch.offColor }}"\n switch-animate="{{ moduleSwitch.animate }}"\n switch-size="{{ moduleSwitch.size }}"\n switch-label="{{ moduleSwitch.label }}"\n switch-icon="{{ moduleSwitch.icon }}"\n switch-radio-off="{{ moduleSwitch.radioOff }}"\n switch-label-width="{{ moduleSwitch.labelWidth }}"\n switch-handle-width="{{ moduleSwitch.handleWidth }}">\n <label class="control-label">{{subModule2.title | translate}}</label>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- END PAGE CONTENT-->\n'),a.put("app/staff/user/view/view.permit.openchannel.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12" data-ng-init="initOpenchannelQueues()">\n <!-- BEGIN FORM-->\n <form action="#" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-permit">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/user/view/view.permit.sms.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12" data-ng-init="initSmsQueues()">\n <!-- BEGIN FORM-->\n <form action="#" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-permit">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/user/view/view.permit.voice.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12" data-ng-init="initVoiceQueues()">\n <!-- BEGIN FORM-->\n <form action="#" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-permit">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/user/view/view.voice.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_ACCOUNT\' | translate}} {{ \'APPLICATION_VOICE\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="forms.info" data-ng-submit="updateItem()" novalidate>\n\n <!-- START INTERNAL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.internal.$touched || forms.info.$submitted) && forms.info.internal.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERNAL_NUMBER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="internal" placeholder="{{\'APPLICATION_INTERNAL_NUMBER\' | translate}}" class="form-control" data-ng-model="user.internal" required readonly/>\n <span data-ng-show="(forms.info.internal.$touched || forms.info.$submitted) && forms.info.internal.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.internal.$touched || forms.info.$submitted) && forms.info.internal.$error.ngRemoteValidate" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_EXIST_INTERNAL\' | translate}}.\n </span>\n </div>\n <!-- END INTERNAL -->\n\n <!-- START TRANSPORT -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TRANSPORT\' | translate}}</label>\n <ui-select multiple name="transport" ng-model="user.transport" theme="bootstrap" ng-disabled="disabled">\n <ui-select-match placeholder="Select transport...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="transport in [\'udp\', \'tcp\', \'ws\', \'wss\'] | filter: $select.search">\n {{transport}}\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_TRANSPORT\' | translate }}\n </span>\n </div>\n <!-- END TRANSPORT -->\n\n <!-- START CODEC -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALLOWED_CODECS\' | translate}}</label>\n <ui-select multiple ng-model="user.allow" name="allow" theme="bootstrap" ng-disabled="disabled">\n <ui-select-match placeholder="Select codec...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="allow in [\'g722\', \'g729\', \'ilbc\', \'gsm\', \'ulaw\', \'alaw\', \'opus\'] | filter: $select.search">\n {{allow}}\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CODEC\' | translate }}\n </span>\n </div>\n <!-- END CODEC -->\n\n <!-- START CALLGROUP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.voice.callgroup.$touched || forms.voice.$submitted) && forms.voice.callgroup.$invalid}">\n <label class="control-label">{{\'APPLICATION_CALLGROUP\' | translate}}</label>\n <input type="text" name="callgroup" placeholder="{{\'APPLICATION_CALLGROUP\' | translate}}" class="form-control" data-ng-model="user.callgroup"/>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CALLGROUP\' | translate }}\n </span>\n <span data-ng-show="(forms.voice.callgroup.$touched || forms.voice.$submitted) && forms.voice.callgroup.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CALLGROUP -->\n\n <!-- START PICKUPGROUP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.voice.pickupgroup.$touched || forms.voice.$submitted) && forms.voice.pickupgroup.$invalid}">\n <label class="control-label">{{\'APPLICATION_PICKUPGROUP\' | translate}}</label>\n <input type="text" name="pickupgroup" placeholder="{{\'APPLICATION_PICKUPGROUP\' | translate}}" class="form-control" data-ng-model="user.pickupgroup"/>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_PICKUPGROUP\' | translate }}\n </span>\n <span data-ng-show="(forms.voice.pickupgroup.$touched || forms.voice.$submitted) && forms.voice.pickupgroup.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PICKUPGROUP -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/staff/user/wizard/wizard.html",'<div class="col-md-12">\n <!-- BEGIN PAGE HEADER-->\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-puzzle"></i>\n <a href="#">{{ \'APPLICATION_STAFF\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-eye"></i>\n <a href="/staff/users/list">{{ \'APPLICATION_USERS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-options"></i>\n <a href="/staff/users/wizard">{{ \'APPLICATION_WIZARD\' | translate }}</a>\n </li>\n </ul>\n </div>\n <!-- END PAGE HEADER-->\n\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered" data-ng-init="initWizard();">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-user font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_USER\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_ACCOUNT\' | translate}}" canexit="exitValidation(forms.info.$valid)">\n <form name="forms.info" novalidate>\n\n <!-- START ROLE -->\n <div class="form-group" data-ng-if="Auth.getCurrentUser().role === \'admin\'">\n <label class="control-label">{{ \'APPLICATION_ROLE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select name="role" data-ng-model="item.role" theme="bootstrap" required>\n <ui-select-match placeholder="Select role...">{{$select.selected | uppercase}}</ui-select-match>\n <ui-select-choices repeat="role in [\'user\', \'admin\'] | filter: $select.search">\n {{role | uppercase}}\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END ROLE -->\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.fullname.$touched || forms.info.$submitted) && forms.info.fullname.$invalid}">\n <label class="control-label">{{\'APPLICATION_FULLNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="fullname" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.fullname" required/>\n <span data-ng-show="(forms.info.fullname.$touched || forms.info.$submitted) && forms.info.fullname.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="item.name" data-ng-pattern="settings.patternName" required />\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START EMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="email" name="email" placeholder="{{\'APPLICATION_EMAIL\' | translate}}" class="form-control" data-ng-model="item.email" required />\n <span data-ng-show="(forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$error.email" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.password" data-ng-pattern="setting.securePassword ? settings.patternPassword : settings.patternPasswordLight" required/>\n <span class="help-block">\n {{setting.securePassword ? \'MESSAGE_PASSWORD_FORMAT\' : \'MESSAGE_PASSWORD_LIGHT_FORMAT\' | translate}}\n </span>\n <span data-ng-show="(forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START RE PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.rpassword.$touched || forms.info.$submitted) && forms.info.rpassword.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONFIRM_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="rpassword" placeholder="{{\'APPLICATION_CONFIRM_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.rpassword" nx-equal="item.password" required/>\n <span data-ng-show="(forms.info.rpassword.$touched || forms.info.$submitted) && forms.info.rpassword.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.rpassword.$touched || forms.info.$submitted) && forms.info.rpassword.$error.nxEqual" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_PASSWORD\' | translate}}.\n </span>\n </div>\n <!-- END RE PASSWORD -->\n\n <!-- START INTERNAL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.internal.$touched || forms.info.$submitted) && forms.info.internal.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERNAL_NUMBER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <div class="input-group">\n <input type="number" min="1" name="internal" placeholder="{{\'APPLICATION_INTERNAL_NUMBER\' | translate}}" class="form-control" data-ng-model="item.internal" data-ng-disabled="!item.internalEnabled" data-ng-required="item.internalEnabled"/>\n <span class="input-group-addon">\n <input type="checkbox" data-ng-model="item.internalEnabled">\n </span>\n </div>\n <span data-ng-show="(forms.info.internal.$touched || forms.info.$submitted) && forms.info.internal.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERNAL -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END PORTLET-->\n</div>\n'), +a.put("app/sugarcrm/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-handbag"></i>\n <a href="/sugarcrm/list">{{ \'APPLICATION_SUGARCRM\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-handbag font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_SUGARCRM\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/sugarcrm/wizard" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ACCOUNT\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/sugarcrm/view/configuration/list/create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_CONFIGURATION\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.name.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.name.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START CHANNEL -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.channel.$touched || form.channel.$submitted) && form.channel.$invalid}">\n <label class="control-label">{{\'APPLICATION_CHANNEL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.channel" name="channel" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_CHANNEL\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="channel.value as channel in channels | filter: $select.search">\n <div data-ng-bind="channel.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.channel.$touched || form.channel.$submitted) && form.channel.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START CHANNEL -->\n\n <!-- START VOICE SUBTYPE -->\n <div data-ng-if="item.channel===\'voice\'" class="form-group" data-ng-class="{\'has-error\': (form.channel.$touched || form.channel.$submitted) && form.channel.$invalid}">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.type" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_TYPE\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="type in [\'Queue\',\'Outbound\'] | filter: $select.search">\n <div data-ng-bind="type | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.type.$touched || form.type.$submitted) && form.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START CHANNEL -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/sugarcrm/view/configuration/list/list.html",'<div ui-view class="profile-content">\n <div class="row">\n <div class="col-md-12">\n <div class="portlet light" data-ng-init="initView()">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_CONFIGURATIONS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="#" data-ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_CONFIGURATION\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/sugarcrm/view/configuration/view/view.html",'<div class="row" data-ng-init="initView();getConfiguration();getCustomVariables();getFields();getModules();">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_CONFIGURATION\' | translate}}: {{configurationName}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_SUBJECT\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_DESCRIPTION\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{\'APPLICATION_FIELDS\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_4" data-toggle="tab">{{\'APPLICATION_MAPPING\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- SUBJECT TAB -->\n <div class="tab-pane ui-padding active" id="tab_1_1">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">All following fields will be join by blank space:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItem(\'subject\')"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div id="subject-item-list" ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="subjectItem in subjectConfig">\n <div class="col-md-3">\n <ui-select ng-model="subjectItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeType(subjectItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in fieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-8" data-ng-if="subjectItem.type==\'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="subjectItem.content" data-ng-change="updateField(subjectItem)">\n </div>\n </div>\n <div class="col-md-8" data-ng-if="subjectItem.type==\'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="subjectItem.variableName" data-ng-change="updateField(subjectItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices group-by="groupVariableByGroup" repeat="variable.name as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-8" data-ng-if="subjectItem.type==\'customVariable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="subjectItem.VariableId" data-ng-change="updateField(subjectItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in customVariables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(subjectItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END SUBJECT TAB -->\n <!-- DESCRIPTION TAB -->\n <div class="tab-pane ui-padding" id="tab_1_2">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">All following fields will be join by new line:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItem(\'description\')"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div id="description-item-list" ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="descriptionItem in descriptionConfig">\n <div class="col-md-2">\n <ui-select ng-model="descriptionItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeDescType(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in descFieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-9" data-ng-if="descriptionItem.type==\'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="descriptionItem.content" data-ng-change="updateField(descriptionItem)">\n </div>\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\'">\n <input type="text" class="form-control" placeholder="Key" data-ng-model="descriptionItem.key" data-ng-change="updateField(descriptionItem)">\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\'">\n <ui-select ng-model="descriptionItem.keyType" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeDescType(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in fieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\' && descriptionItem.keyType==\'string\'">\n <input type="text" class="form-control" placeholder="Value" data-ng-model="descriptionItem.keyContent" data-ng-change="updateField(descriptionItem)">\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\' && descriptionItem.keyType==\'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="descriptionItem.variableName" data-ng-change="updateField(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices group-by="groupVariableByGroup" repeat="variable.name as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\' && descriptionItem.keyType==\'customVariable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="descriptionItem.VariableId" data-ng-change="updateField(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in customVariables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(descriptionItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END DESCRIPTION TAB -->\n <!-- FIELDS TAB -->\n <div class="tab-pane ui-padding" id="tab_1_3">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">Add how to fill the fields present in your account:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItem(\'field\')"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div id="field-item-list" ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="fieldItem in fieldConfig">\n <div class="col-md-3">\n <ui-select ng-model="fieldItem.idField" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeFieldType(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.label}}</ui-select-match>\n <ui-select-choices repeat="item.name as item in accountFields | filter: $select.search">\n <div ng-bind-html="item.label | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-8" data-ng-if="getSystemFieldOptions(fieldItem.idField)">\n <div class="form-group">\n <ui-select ng-model="fieldItem.content" theme="bootstrap" ng-disabled="disabled" data-ng-change="updateField(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="item.value as item in getSystemFieldOptions(fieldItem.idField) | filter: $select.search">\n <div ng-bind-html="item.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField)">\n <div class="form-group">\n <ui-select ng-model="fieldItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeType(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in fieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search | ucfirst"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="fieldItem.content" data-ng-change="updateField(fieldItem)">\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="fieldItem.variableName" data-ng-change="updateField(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices group-by="groupVariableByGroup" repeat="variable.name as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'customVariable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="fieldItem.VariableId" data-ng-change="updateField(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in customVariables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(fieldItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END FIELDS TAB -->\n <!-- TAG TAB -->\n <div class="tab-pane ui-padding" id="tab_1_4">\n\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="false"></span>\n <!-- END UI-GRID SPINNER -->\n\n <div class="row">\n <div class="col-md-12">\n <span class="caption-subject">Select the mapping procedure that the current configuration will use:</span>\n </div>\n </div>\n <hr>\n <form name="forms.mapping" data-ng-submit="updateMapping()" novalidate>\n\n <!-- DEFAULT MAPPING -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DEFAULT_MAPPING\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="mapping.defaultMapping"\n type="checkbox",\n name="defaultMapping"\n switch-active="{{ defaultMappingSwitch.isActive }}"\n switch-on-text="{{ defaultMappingSwitch.onText }}"\n switch-off-text="{{ defaultMappingSwitch.offText }}"\n switch-on-color="{{ defaultMappingSwitch.onColor }}"\n switch-off-color="{{ defaultMappingSwitch.offColor }}"\n switch-animate="{{ defaultMappingSwitch.animate }}"\n switch-size="{{ defaultMappingSwitch.size }}"\n switch-label="{{ defaultMappingSwitch.label }}"\n switch-icon="{{ defaultMappingSwitch.icon }}"\n switch-radio-off="{{ defaultMappingSwitch.radioOff }}"\n switch-label-width="{{ defaultMappingSwitch.labelWidth }}"\n switch-handle-width="{{ defaultMappingSwitch.handleWidth }}">\n </div>\n <!-- END DEFAULT MAPPING -->\n\n <div class="row" data-ng-if="!mapping.defaultMapping">\n <div class="col-md-6">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.mapping.mappingModule.$touched || forms.mapping.$submitted) && forms.mapping.mappingModule.$invalid}">\n <label class="control-label">{{\'APPLICATION_MAPPING_MODULE\' | translate}} <span class="required" aria-required="true">*</span></label>\n <ui-select ng-model="mapping.mappingModule" theme="bootstrap" name="mappingModule" required ng-disabled="disabled" data-ng-change="updateMappingModule()">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.label}}</ui-select-match>\n <ui-select-choices repeat="item.key as item in accountModules | filter: $select.search">\n <div ng-bind-html="item.label | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.mapping.mappingModule.$touched || forms.mapping.$submitted) && forms.mapping.mappingModule.$invalid && forms.mapping.mappingModule.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n\n <div class="row" data-ng-if="!mapping.defaultMapping">\n <div class="col-md-12">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.mapping.mappingFields.$touched || forms.mapping.$submitted) && forms.mapping.mappingFields.$invalid}">\n <label class="control-label">{{\'APPLICATION_MAPPING_FIELDS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <ui-select multiple data-ng-model="mapping.mappingFields" theme="bootstrap" name="mappingFields" ng-disabled="disabled" required>\n <ui-select-match placeholder="{{ \'APPLICATION_MAPPING_FIELDS\' | translate }}">{{$item.label}}</ui-select-match>\n <ui-select-choices repeat="moduleField.name as moduleField in moduleFields | filter: $select.search">\n {{moduleField.label}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.mapping.mappingFields.$touched || forms.mapping.$submitted) && forms.mapping.mappingFields.$invalid && forms.mapping.mappingFields.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}" data-ng-disabled="forms.mapping.$invalid"/>\n </form>\n </div>\n <!-- END TAG TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/sugarcrm/view/view.account.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACCOUNT\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERALS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.formSetting" data-ng-submit="forms.formSetting.$valid && updateItem()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.name" required/>\n <span data-ng-show="forms.formSetting.name.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="account.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="account.username" required/>\n <span data-ng-show="forms.formSetting.username.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START REMOTE ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.remoteUri.$invalid}">\n <label class="control-label">{{\'APPLICATION_REMOTE_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remoteUri" placeholder="{{\'APPLICATION_REMOTE_ADDRESS\' | translate}}" class="form-control" data-ng-model="account.remoteUri" required />\n <span data-ng-show="forms.formSetting.remoteUri.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="account.password" required/>\n <span data-ng-show="forms.formSetting.apiKey.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START SERVER URL -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.serverUrl.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}}</label>\n <input type="url" name="serverUrl" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="account.serverUrl"/>\n <span class="help-block">\n {{\'DESCRIPTION_SERVER_URL\' | translate}}.\n </span>\n <span class="help-block help-block-info">\n {{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n </span>\n </div>\n <!-- END SERVER URL -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/sugarcrm/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-handbag"></i>\n <a href="/sugarcrm/list">{{ \'APPLICATION_SUGARCRM\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <a href="#">{{account.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img src="assets/images/media/sugarcrm.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{account.name}}\n </div>\n <div class="profile-usertitle-job">\n {{account.remoteUri}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.sugarcrm.view.account\')}">\n <a ng-href="/sugarcrm/view/{{account.id}}/account">\n <i class="icon-user"></i>\n {{ \'APPLICATION_ACCOUNT\' | translate }} </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.sugarcrm.view.configurations\') || $state.is(\'main.sugarcrm.view.configuration\')}">\n <a ng-href="/sugarcrm/view/{{account.id}}/configurations/list">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_CONFIGURATIONS\' | translate }} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), +a.put("app/sugarcrm/wizard/wizard.html",'<!-- BEGIN PAGE HEADER-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-handbag"></i>\n <a href="/sugarcrm/list">{{ \'APPLICATION_SUGARCRM\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n<!-- END PAGE HEADER-->\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initWizard()">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACCOUNT\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_ACCOUNT_INFO\' | translate}}" canexit="exitValidation(forms.formSetting.$valid)">\n <form name="forms.formSetting" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="forms.formSetting.name.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="item.username" required/>\n <span data-ng-show="forms.formSetting.username.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n\n <!-- START REMOTE ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.remoteUri.$invalid}">\n <label class="control-label">{{\'APPLICATION_REMOTE_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remoteUri" placeholder="{{\'APPLICATION_REMOTE_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.remoteUri" required ng-remote-validate="/api/sugarcrm/accounts/validate/remoteUri"/>\n <span data-ng-show="forms.formSetting.remoteUri.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formSetting.remoteUri.$touched || forms.formSetting.$submitted) && forms.formSetting.remoteUri.$error.ngRemoteValidate" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_EXIST_DOMAIN\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.password" required/>\n <span data-ng-show="forms.formSetting.apiKey.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START SERVER URL -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.serverUrl.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}}</label>\n <input type="url" name="serverUrl" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.serverUrl"/>\n <span class="help-block">\n {{\'DESCRIPTION_SERVER_URL\' | translate}}.\n </span>\n <span class="help-block help-block-info">\n {{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n </span>\n </div>\n <!-- END SERVER URL -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" data-ng-click="next()"/>\n\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n\n </wizard>\n\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/answer/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_CANNED_ANSWER\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.key.$touched || form.$submitted) && form.key.$invalid}">\n <label class="control-label">{{\'APPLICATION_KEY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="key" placeholder="{{\'APPLICATION_KEY\' | translate}}" class="form-control" data-ng-model="item.key" required/>\n <span data-ng-show="(form.key.$touched || form.$submitted) && form.key.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START VALUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.value.$touched || form.$submitted) && form.value.$invalid}">\n <label class="control-label">{{\'APPLICATION_VALUE\' | translate}}<span class="required" aria-required="true">*</span></label></label>\n <textarea type="text" name="value" placeholder="{{\'APPLICATION_VALUE\' | translate}}" class="form-control" data-ng-model="item.value" required></textarea>\n <span data-ng-show="(form.value.$touched || form.$submitted) && form.value.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END VALUE -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/tools/answer/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-magic-wand"></i>\n <a href="#">{{ \'APPLICATION_CANNED_ANSWERS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-magic-wand font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_CANNED_ANSWERS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <a class="btn green-jungle" href="#" data-toggle="dropdown" data-ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_CANNED_ANSWER\' | translate }}\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/answer/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getAnswer()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-magic-wand"></i>\n <a href="/tools/answers/list">{{ \'APPLICATION_CANNED_ANSWER\' | translate }}</a>\n <i data-ng-show="answer" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="answer">\n <a href="#">{{answer.key}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/answer.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{answer.name}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.tools.answers.view.settings\')}">\n <a data-ng-href="/tools/answers/view/{{answer.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}}\n </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/answer/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_CANNED_ANSWER\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateAnswer()" novalidate>\n\n <!-- START KEY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.key.$touched || forms.general.$submitted) && forms.general.key.$invalid}">\n <label class="control-label">{{\'APPLICATION_KEY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="key" placeholder="{{\'APPLICATION_KEY\' | translate}}" class="form-control" data-ng-model="answer.key" required/>\n <span data-ng-show="(forms.general.key.$touched || forms.general.$submitted) && forms.general.key.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END KEY -->\n\n <!-- START VALUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.value.$touched || forms.general.$submitted) && forms.general.value.$invalid}">\n <label class="control-label">{{\'APPLICATION_VALUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <textarea type="text" name="value" placeholder="{{\'APPLICATION_VALUE\' | translate}}" class="form-control" data-ng-model="answer.value" required></textarea>\n <span data-ng-show="(forms.general.value.$touched || forms.general.$submitted) && forms.general.value.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END VALUE -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="answer.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/tools/automation/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bulb"></i>\n <a href="#">{{ \'APPLICATION_AUTOMATIONS\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-bulb font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_AUTOMATIONS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle " href="/tools/automations/wizard">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_AUTOMATION\' | translate }}\n </a>\n </div>\n <!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> -->\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/automation/view/view.html",'<!-- BEGIN PAGE HEADER-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-settings"></i>\n <a href="/tools/automations/list">{{ \'APPLICATION_AUTOMATIONS\' | translate }}</a>\n <i class="fa fa-angle-right" data-ng-show="automation"></i>\n </li>\n <li data-ng-show="automation">\n <a href="#">{{ automation.description || automation.name }}</a>\n </li>\n </ul>\n </div>\n\n<!-- END PAGE HEADER-->\n\n<!-- BEGIN PAGE CONTENT-->\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/automation.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{ automation.name }}\n </div>\n <div class="profile-usertitle-job">\n {{ automation.description }}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.tools.automations.view.settings\')}">\n <a href="/tools/automations/view/{{automation.id}}/settings">\n <i class="icon-bulb"></i>\n {{ \'APPLICATION_SETTINGS\' | translate }} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/automation/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERALS\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_CONDITIONS\' | translate}} & {{\'APPLICATION_ACTIONS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <form name="forms.general" data-ng-submit="exitValidation(forms.general.$valid) && updateAutomation()" novalidate>\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="automation.name" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START CHANNEL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.channel.$touched || forms.general.$submitted) && forms.general.channel.$invalid}">\n <label class="control-label">{{\'APPLICATION_CHANNEL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="channel" placeholder="{{\'APPLICATION_CHANNEL\' | translate}}" class="form-control" data-ng-model="automation.channel" required readonly/>\n <span data-ng-show="(forms.general.channel.$touched || forms.general.$submitted) && forms.general.channel.$invalid && forms.general.channel.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CHANNEL -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.timeout.$touched && forms.general.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} ({{\'APPLICATION_MINUTES\' | translate}})</label>\n <input type="number" name="timeout" min="10" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}} (min 10 {{\'APPLICATION_MINUTES\' | translate}})" class="form-control" data-ng-model="automation.timeout" data-ng-init="item.timeout = 10" required/>\n <span data-ng-show="forms.general.timeout.$touched && forms.general.name.$invalid && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START STATUS -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_STATUS\' | translate}}</label>\n </br>\n <input bs-switch class="form-control" ng-model="automation.status" type="checkbox" name="status" switch-active="{{ recordSwitch.isActive }}" switch-on-text="{{ recordSwitch.onText }}" switch-off-text="{{ recordSwitch.offText }}" switch-on-color="{{ recordSwitch.onColor }}"\n switch-off-color="{{ recordSwitch.offColor }}" switch-animate="{{ recordSwitch.animate }}" switch-size="{{ recordSwitch.size }}" switch-label="{{ recordSwitch.label }}" switch-icon="{{ recordSwitch.icon }}" switch-radio-off="{{ recordSwitch.radioOff }}"\n switch-label-width="{{ recordSwitch.labelWidth }}" switch-handle-width="{{ recordSwitch.handleWidth }}">\n </div>\n <!-- END STATUS -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="automation.description" />\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}" />\n </div>\n <!-- END GENERAL TAB -->\n <div class="tab-pane" id="tab_1_2">\n <!-- All -->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <i class="icon-tag font-blue-hoki"></i>\n <span class="caption-subject" ng-bind-html="\'APPLICATION_MEET_ALL_CONDITIONS\' | translate"></span>:\n </div>\n </div>\n <div class="portlet-body">\n <div class="portlet light bordered" ng-repeat="all in automation.All">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <span class="caption-subject">{{ \'APPLICATION_ALL\' | translate }} #{{$index+1}}</span>\n </div>\n <div class="actions">\n <a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeCondition(\'All\',$index)"><i class="fa fa-trash"></i></a>\n </div>\n </div>\n <div class="portlet-body">\n <div class="padding-bottom row">\n <div class="col-md-12">\n <condition-builder element="all" serviceindex="automation.channel" service="$automations" form="forms.general"></condition-builder>\n </div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-12">\n <button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addCondition(\'All\')">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_CONDITION\' | translate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Any -->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <i class="icon-tag font-blue-hoki"></i>\n <span class="caption-subject" ng-bind-html="\'APPLICATION_MEET_ANY_CONDITIONS\' | translate"></span>:\n </div>\n </div>\n <div class="portlet-body">\n <div class="portlet light bordered" ng-repeat="any in automation.Any">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <span class="caption-subject">{{ \'APPLICATION_ANY\' | translate }} #{{$index+1}}</span>\n </div>\n <div class="actions">\n <a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeCondition(\'Any\',$index)"><i class="fa fa-trash"></i></a>\n </div>\n </div>\n <div class="portlet-body">\n <div class="padding-bottom row">\n <div class="col-md-12">\n <condition-builder element="any" serviceindex="automation.channel" service="$automations" form="forms.general"></condition-builder>\n </div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-12">\n <button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addCondition(\'Any\')">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_CONDITION\' | translate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Actions -->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <i class="icon-tag font-blue-hoki"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACTIONS\' | translate }}</span>:\n </div>\n </div>\n <div class="portlet-body">\n <div class="portlet light bordered" ng-repeat="action in automation.Actions">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <span class="caption-subject">{{ \'APPLICATION_ACTIONS\' | translate }} #{{$index+1}}</span>\n </div>\n <div class="actions">\n <a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeAction($index)"><i class="fa fa-trash"></i></a>\n </div>\n </div>\n <div class="portlet-body">\n <div class="padding-bottom row">\n <div class="col-md-12">\n <div class="form-group col-md-6" data-ng-class="{\'has-error\': (forms.general[\'action\'+$index].$touched || forms.general.$submitted) && forms.general[\'action\'+$index].$invalid}">\n <ui-select data-ng-model="action.action" theme="bootstrap" data-ng-change="resetActionData(action)" name="action{{$index}}" required>\n <ui-select-match placeholder="{{ \'APPLICATION_ACTION\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="tAction.value as tAction in $automations.services[automation.channel].actions | filter: $select.search">\n <div ng-bind-html="tAction.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'APPLICATION_ACTION\' | translate }}\n </span>\n <span data-ng-show="(forms.general[\'action\'+$index].$touched || forms.general.$submitted) && forms.general[\'action\'+$index].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div ng-switch="action.action">\n <action-builder-status ng-switch-when="status" element="action" form="forms.settings"></action-builder-status>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-12">\n <button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addAction()">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_ACTION\' | translate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class="has-error" data-ng-show="forms.general.$submitted && !automation.All.length && !automation.Any.length">\n <span class="help-block help-block-error form-control">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INSERT_AT_LEAST_ONE_CONDITION\' | translate}}.\n </span>\n </div>\n <div class="has-error" data-ng-show="forms.general.$submitted && !automation.Actions.length">\n <span class="help-block help-block-error form-control">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INSERT_AT_LEAST_ONE_ACTION\' | translate}}.\n </span>\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}" />\n </div>\n </div>\n </form>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/tools/automation/wizard/wizard.html",'<div class="row">\n <div class="col-md-12">\n <!-- BEGIN PAGE HEADER-->\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-settings"></i>\n <a href="/tools/automations/list">{{ \'APPLICATION_AUTOMATIONS\' | translate }}</a>\n </li>\n </ul>\n </div>\n <!-- END PAGE HEADER-->\n\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-bulb font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_AUTOMATIONS\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_GENERAL\' | translate}}" canexit="exitValidation(forms.general.$valid)">\n <form name="forms.general" data-ng-submit="submit()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.name.$touched && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="forms.general.name.$touched && forms.general.name.$invalid && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START STATUS -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_STATUS\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.status"\n type="checkbox"\n name="status"\n data-ng-init="item.status = 0"\n switch-active="{{ statusSwitch.isActive }}"\n switch-on-text="{{ statusSwitch.onText }}"\n switch-off-text="{{ statusSwitch.offText }}"\n switch-on-color="{{ statusSwitch.onColor }}"\n switch-off-color="{{ statusSwitch.offColor }}"\n switch-animate="{{ statusSwitch.animate }}"\n switch-size="{{ statusSwitch.size }}"\n switch-label="{{ statusSwitch.label }}"\n switch-icon="{{ statusSwitch.icon }}"\n switch-radio-off="{{ statusSwitch.radioOff }}"\n switch-label-width="{{ statusSwitch.labelWidth }}"\n switch-handle-width="{{ statusSwitch.handleWidth }}">\n </div>\n <!-- END STATUS -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n </form>\n </wz-step>\n <wz-step title="{{\'APPLICATION_SETTINGS\' | translate}}" canexit="exitSettingsValidation(forms.settings.$valid)">\n <form name="forms.settings" novalidate>\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <i class="icon-tag font-blue-hoki"></i>\n <span class="caption-subject">{{ \'APPLICATION_CHANNEL\' | translate }}</span>\n </div>\n </div>\n <div class="portlet-body">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.channel.$touched || forms.settings.$submitted) && forms.settings.channel.$invalid}">\n <label class="control-label">{{ \'APPLICATION_CHANNEL\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.channel" name="channel" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_CHANNEL\' | translate }}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="channel in $automations.channels | filter: $select.search">\n <div ng-bind-html="channel | highlight: $select.search | capitalize"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.channel.$touched || forms.settings.$submitted) && forms.settings.channel.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n\n <!-- All -->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <i class="icon-tag font-blue-hoki"></i>\n <span class="caption-subject" ng-bind-html="\'APPLICATION_MEET_ALL_CONDITIONS\' | translate"></span>:\n </div>\n </div>\n <div class="portlet-body">\n <div class="portlet light bordered" ng-repeat="all in item.All">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <span class="caption-subject">{{ \'APPLICATION_ALL\' | translate }} #{{$index+1}}</span>\n </div>\n <div class="actions">\n <a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeCondition(\'All\',$index)"><i class="fa fa-trash"></i></a>\n </div>\n </div>\n <div class="portlet-body">\n <div class="padding-bottom row">\n <div class="col-md-12">\n <condition-builder element="all" serviceindex="item.channel" service="$automations" form="forms.general"></condition-builder>\n </div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-12">\n <button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addCondition(\'All\')">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_CONDITION\' | translate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Any -->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <i class="icon-tag font-blue-hoki"></i>\n <span class="caption-subject" ng-bind-html="\'APPLICATION_MEET_ANY_CONDITIONS\' | translate"></span>:\n </div>\n </div>\n <div class="portlet-body">\n <div class="portlet light bordered" ng-repeat="any in item.Any">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <span class="caption-subject">{{ \'APPLICATION_ANY\' | translate }} #{{$index+1}}</span>\n </div>\n <div class="actions">\n <a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeCondition(\'Any\',$index)"><i class="fa fa-trash"></i></a>\n </div>\n </div>\n <div class="portlet-body">\n <div class="padding-bottom row">\n <div class="col-md-12">\n <condition-builder element="any" serviceindex="item.channel" service="$automations" form="forms.general"></condition-builder>\n </div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-12">\n <button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addCondition(\'Any\')">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_CONDITION\' | translate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Actions -->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <i class="icon-tag font-blue-hoki"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACTIONS\' | translate }}</span>:\n </div>\n </div>\n <div class="portlet-body">\n <div class="portlet light bordered" ng-repeat="action in item.Actions">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <span class="caption-subject">{{ \'APPLICATION_ACTIONS\' | translate }} #{{$index+1}}</span>\n </div>\n <div class="actions">\n <a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeAction($index)"><i class="fa fa-trash"></i></a>\n </div>\n </div>\n <div class="portlet-body">\n <div class="padding-bottom row">\n <div class="col-md-12">\n <div class="form-group col-md-6" data-ng-class="{\'has-error\': (forms.general[\'action\'+$index].$touched || forms.general.$submitted) && forms.general[\'action\'+$index].$invalid}">\n <ui-select data-ng-model="action.action" theme="bootstrap" data-ng-change="resetActionData(action)" name="action{{$index}}" required>\n <ui-select-match placeholder="{{ \'APPLICATION_ACTION\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="tAction.value as tAction in $automations.services[item.channel].actions | filter: $select.search">\n <div ng-bind-html="tAction.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'APPLICATION_ACTION\' | translate }}\n </span>\n <span data-ng-show="(forms.general[\'action\'+$index].$touched || forms.general.$submitted) && forms.general[\'action\'+$index].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div ng-switch="action.action">\n <action-builder-status ng-switch-when="status" element="action" form="forms.settings"></action-builder-status>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-12">\n <button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addAction()">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_ACTION\' | translate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class="has-error" data-ng-show="forms.settings.$submitted && !item.All.length && !item.Any.length">\n <span class="help-block help-block-error form-control">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INSERT_AT_LEAST_ONE_CONDITION\' | translate}}.\n </span>\n </div>\n <div class="has-error" data-ng-show="forms.settings.$submitted && !item.Actions.length">\n <span class="help-block help-block-error form-control">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INSERT_AT_LEAST_ONE_ACTION\' | translate}}.\n </span>\n </div>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n </form>\n </wz-step>\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), +a.put("app/tools/interval/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_INTERVAL\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/tools/interval/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-clock"></i>\n <a href="#">{{ \'APPLICATION_INTERVALS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_INTERVALS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <button class="btn green-jungle " ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_INTERVAL\' | translate }}\n </button>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/interval/view/subinterval/list/list.html",'<div ui-view class="profile-content">\n <div class="row">\n <div class="col-md-12">\n <div class="portlet light" data-ng-init="initView()">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SUBINTERVALS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group">\n <a class="btn green-jungle" href="/tools/intervals/view/{{stateParams.id}}/subintervals/view/">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_SUBINTERVAL\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/tools/interval/view/subinterval/view/view.html",'<div class="row" data-ng-init="initSubInterval()">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_SUBINTERVAL\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="addOrUpdateSubInterval()">\n <wz-step title="{{\'APPLICATION_SETTINGS\' | translate}}" canexit="exitValidation(forms.subinterval.name.$valid)">\n <form name="forms.subinterval" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.subinterval.name.$touched || forms.subinterval.$submitted) && forms.subinterval.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="subinterval.name" required/>\n <span data-ng-show="(forms.subinterval.name.$touched || forms.subinterval.$submitted) && forms.subinterval.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="splittedInterval.alwaysTime"><uib-timepicker name="t_from" data-ng-model="splittedInterval.t_from" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="splittedInterval.alwaysTime"><uib-timepicker name="t_to" data-ng-model="splittedInterval.t_to" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n <label class="control-label pointer-cursor margin-top20"><input\n bs-switch\n class="form-control"\n ng-model="splittedInterval.alwaysTime"\n type="checkbox"\n switch-active="{{ switch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ switch.onColor }}"\n switch-off-color="{{ switch.offColor }}"\n switch-animate="{{ switch.animate }}"\n switch-size="{{ switch.size }}"\n switch-label="{{ switch.label }}"\n switch-icon="{{ switch.icon }}"\n switch-radio-off="{{ switch.radioOff }}"\n switch-label-width="{{ switch.labelWidth }}"\n switch-handle-width="{{ switch.handleWidth }}"> {{\'APPLICATION_ALWAYS\' | translate}}</label>\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="splittedInterval.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="splittedInterval.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="splittedInterval.md_from" theme="bootstrap" name="md_from">\n <ui-select-match>{{$select.selected===\'always\' ? ($select.selected | capitalize) : $select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="splittedInterval.md_to && splittedInterval.md_to!==\'always\' && monthDay>splittedInterval.md_to && monthDay!==\'always\'">\n {{monthDay===\'always\' ? (monthDay | capitalize) : monthDay}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="splittedInterval.md_to" theme="bootstrap" name="md_to">\n <ui-select-match>{{$select.selected===\'always\' ? ($select.selected | capitalize) : $select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="splittedInterval.md_from && splittedInterval.md_from!==\'always\' && monthDay<splittedInterval.md_from && monthDay!==\'always\'">\n {{monthDay===\'always\' ? (monthDay | capitalize) : monthDay}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="splittedInterval.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{month.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="splittedInterval.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{month.name | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n\n\n\n <button class="btn green-haze" type="submit" ng-click="next()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n </form>\n </wz-step>\n\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/interval/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getInterval()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-clock"></i>\n <a href="/tools/intervals/list">{{ \'APPLICATION_INTERVALS\' | translate }}</a>\n <i data-ng-show="interval" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="interval">\n <a href="#">{{interval.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/interval.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{interval.name}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.tools.intervals.view.settings\')}">\n <a ng-href="/tools/intervals/view/{{interval.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.tools.intervals.view.subintervals.list\') || $state.is(\'main.tools.intervals.view.subintervals.view\')}">\n <a ng-href="/tools/intervals/view/{{interval.id}}/subintervals/list">\n <i class="icon-list"></i>\n {{ \'APPLICATION_SUBINTERVALS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/interval/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_INTERVAL\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateInterval()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="interval.name" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="interval.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/tools/pause/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_PAUSE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" data-ng-pattern="/^[^#]/" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/tools/pause/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-pause"></i>\n <a href="#">{{ \'APPLICATION_PAUSES\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="fa fa-pause font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_PAUSES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <a class="btn green-jungle" href="#" data-toggle="dropdown" data-ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_PAUSE\' | translate }}\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/pause/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getPause()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-control-pause"></i>\n <a href="/tools/pauses/list">{{ \'APPLICATION_PAUSES\' | translate }}</a>\n <i data-ng-show="pause" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="pause">\n <a href="#">{{pause.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/pause.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{pause.name}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.tools.pauses.view.settings\')}">\n <a data-ng-href="/tools/pauses/view/{{pause.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}}\n </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/pause/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_PAUSE\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updatePause()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="pause.name" data-ng-pattern="/^[^#]/" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="pause.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/tools/scheduler/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-calendar"></i>\n <a href="#">{{ \'APPLICATION_SCHEDULER\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-link font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_SCHEDULES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <a class="btn green-jungle" href="/tools/scheduler/wizard" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_SCHEDULE\' | translate }}\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/scheduler/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-calendar"></i>\n <a href="/tools/scheduler/list">{{ \'APPLICATION_SCHEDULER\' | translate }}</a>\n <i data-ng-show="schedule" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="schedule">\n <a href="#">{{schedule.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/scheduler.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{schedule.name}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.tools.scheduler.view.settings\')}">\n <a data-ng-href="/tools/scheduler/view/{{schedule.id}}/settings"><i class="icon-settings"></i> {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/scheduler/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_SCHEDULE\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab" data-ng-click="refreshSlider()">{{ \'APPLICATION_CONFIGURATION\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && forms.config.$valid && updateSchedule()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.$submitted && forms.general.name.$invalid) || forms.general.name.$error.pattern}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="schedule.name" data-ng-pattern="settings.patternName" required/>\n <span data-ng-show="forms.general.$submitted && forms.general.name.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START ACTIVE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_ACTIVE\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="schedule.active"\n type="checkbox"\n name="status"\n switch-active="{{ switches.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ switches.onColor }}"\n switch-off-color="{{ switches.offColor }}"\n switch-animate="{{ switches.animate }}"\n switch-size="{{ switches.size }}"\n switch-label="{{ switches.label }}"\n switch-icon="{{ switches.icon }}"\n switch-radio-off="{{ switches.radioOff }}"\n switch-label-width="{{ switches.labelWidth }}"\n switch-handle-width="{{ switches.handleWidth }}">\n </div>\n <!-- END ACTIVE -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="schedule.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n <!-- CONFIG TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.config" data-ng-switch="schedule.reportType" data-ng-submit="forms.config.$valid && forms.general.$valid && updateSchedule()" data-ng-if="schedule.type===\'report\'" data-ng-init="initReports()" novalidate>\n\n <div class="row">\n\n <!-- START TYPE -->\n <div class="form-group col-md-2" data-ng-class="{\'has-error\': (forms.config.type.$touched || forms.config.$submitted) && forms.config.type.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="schedule.reportType" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_TYPE\' | translate }}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="report in [\'default\', \'custom\'] | filter: $select.search">\n <div ng-bind-html="report | capitalize | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.type.$touched || forms.config.$submitted) && forms.config.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TYPE -->\n\n\n <!-- START REPORT -->\n <div data-ng-switch-when="default" class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.config.reportId.$touched || forms.config.$submitted) && forms.config.reportId.$invalid}">\n <label class="control-label">{{ \'APPLICATION_REPORT\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="schedule.reportId" name="reportId" theme="bootstrap" on-select="setReportTree($item,$model)" required>\n <ui-select-match placeholder="{{ \'APPLICATION_REPORT\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices group-by="\'parent\'" repeat="report.id as report in defRep | filter: $select.search">\n <div ng-bind-html="report.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.reportId.$touched || forms.config.$submitted) && forms.config.reportId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END REPORT -->\n\n <!-- START REPORT -->\n <div data-ng-switch-when="custom" class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.config.reportId.$touched || forms.config.$submitted) && forms.config.reportId.$invalid}">\n <label class="control-label">{{ \'APPLICATION_REPORT\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="schedule.reportId" name="reportId" theme="bootstrap" on-select="setReportTree($item,$model)" required>\n <ui-select-match placeholder="{{ \'APPLICATION_REPORT\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices group-by="\'parent\'" repeat="report.id as report in cusRep | filter: $select.search">\n <div ng-bind-html="report.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.reportId.$touched || forms.config.$submitted) && forms.config.reportId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END REPORT -->\n\n <!-- START REPORT -->\n <div class="form-group col-md-2" data-ng-class="{\'has-error\': (forms.config.reportOutput.$touched || forms.config.$submitted) && forms.config.reportOutput.$invalid}">\n <label class="control-label">{{ \'APPLICATION_OUTPUT\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="schedule.reportOutput" name="reportOutput" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_OUTPUT\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="output in [\'CSV\',\'PDF\'] | filter: $select.search">\n <div ng-bind-html="output | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.reportOutput.$touched || forms.config.$submitted) && forms.config.reportOutput.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END REPORT -->\n\n </div>\n\n <!-- START TODAY -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_RUN_ON\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n data-ng-model="switchValues.today"\n type="checkbox"\n name="status"\n data-ng-change="checkToday()"\n switch-active="{{ switches.isActive }}"\n switch-on-text="{{ \'APPLICATION_TODAY\' | translate }}"\n switch-off-text="{{ \'APPLICATION_RANGE\' | translate }}"\n switch-on-color="{{ switches.onColor }}"\n switch-off-color="{{ switches.offColor }}"\n switch-animate="{{ switches.animate }}"\n switch-size="{{ switches.size }}"\n switch-label="{{ switches.label }}"\n switch-icon="{{ switches.icon }}"\n switch-radio-off="{{ switches.radioOff }}"\n switch-label-width="{{ switches.labelWidth }}"\n switch-handle-width="{{ switches.handleWidth }}">\n </div>\n <!-- END TODAY -->\n\n <!-- START VALIDITY -->\n <div class="form-group" data-ng-if="switchValues.today">\n <label class="control-label">{{\'APPLICATION_VALIDITY\' | translate}}</label>\n <rzslider rz-slider-model="schedule.validityStart" rz-slider-high="schedule.validityEnd" rz-slider-options="validitySlider"></rzslider>\n </div>\n <!-- END VALIDITY -->\n\n <!-- START RANGE -->\n <div class="form-group" data-ng-if="!switchValues.today" data-ng-class="{\'has-error\': (forms.config.range.$touched || forms.config.$submitted) && forms.config.range.$invalid}">\n <label class="control-label">{{ \'APPLICATION_REPORT_RANGE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="schedule.reportRange" name="range" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_RANGE\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="range.value as range in reportRanges | filter: $select.search">\n <div ng-bind-html="range.name | highlight: $select.search | translate"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.range.$touched || forms.config.$submitted) && forms.config.range.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END RANGE -->\n\n <!-- START TODAY CRON -->\n <div class="form-group" data-ng-if="switchValues.today" data-ng-class="{\'has-error\': (forms.config.cron.$touched || forms.config.$submitted) && forms.config.cron.$invalid}">\n <label class="control-label">{{ \'APPLICATION_EXECUTE_EVERY\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="schedule.cron" name="cron" theme="bootstrap" data-ng-required="switchValues.today">\n <ui-select-match placeholder="{{ \'APPLICATION_EXECUTE_EVERY\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="cron.value as cron in todayCron | filter: $select.search">\n <div ng-bind-html="cron.name | highlight: $select.search | translate"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.cron.$touched || forms.config.$submitted) && forms.config.cron.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TODAY -->\n <div class="row" data-ng-if="!switchValues.today">\n <!-- START CRONTYPE EXEC -->\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.config.cronType.$touched || forms.config.$submitted) && forms.config.cronType.$invalid}">\n <label class="control-label">{{ \'APPLICATION_EXECUTE_EVERY\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="rangeExec.type" name="cronType" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_EXECUTE_EVERY\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in cronTypes | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | translate"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.cronType.$touched || forms.config.$submitted) && forms.config.cronType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CRONTYPE -->\n\n <!-- START WEEKDAY -->\n <div class="form-group col-md-4" data-ng-if="schedule.cronType === \'weekly\'" data-ng-class="{\'has-error\': (forms.config.weekDay.$touched || forms.config.$submitted) && forms.config.weekDay.$invalid}">\n <label class="control-label">{{ \'APPLICATION_WEEKDAYS\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select multiple data-ng-model="rangeExec.weekDays" name="weekDay" theme="bootstrap" data-ng-required="schedule.cronType === \'weekly\'">\n <ui-select-match placeholder="{{ \'APPLICATION_WEEKDAYS\' | translate }}">{{$item.name | translate}}</ui-select-match>\n <ui-select-choices repeat="day.value as day in weekDays | filter: $select.search">\n <div ng-bind-html="day.name | highlight: $select.search | translate"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.weekDay.$touched || forms.config.$submitted) && forms.config.weekDay.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group col-md-4" data-ng-if="schedule.cronType === \'monthly\'" data-ng-class="{\'has-error\': (forms.config.monthDay.$touched || forms.config.$submitted) && forms.config.monthDay.$invalid}">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="rangeExec.monthDay" name="monthDay" theme="bootstrap" data-ng-required="schedule.cronType === \'monthly\'">\n <ui-select-match placeholder="{{ \'APPLICATION_MONTHDAY\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="day in monthDays | filter: $select.search">\n <div ng-bind-html="day | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.monthDay.$touched || forms.config.$submitted) && forms.config.monthDay.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START HOUR -->\n <div class="form-group col-md-4" data-ng-if="schedule.cronType" data-ng-class="{\'has-error\': (forms.config.hour.$touched || forms.config.$submitted) && forms.config.hour.$invalid}">\n <label class="control-label">{{ \'APPLICATION_HOUR\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="rangeExec.hour" name="hour" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_HOUR\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="hour in hours | filter: $select.search">\n <div ng-bind-html="hour | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.hour.$touched || forms.config.$submitted) && forms.config.hour.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END HOUR -->\n </div>\n\n <!-- START SEND MAIL -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_SEND_MAIL\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n data-ng-model="schedule.sendMail"\n type="checkbox"\n name="status"\n switch-active="{{ switches.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ switches.onColor }}"\n switch-off-color="{{ switches.offColor }}"\n switch-animate="{{ switches.animate }}"\n switch-size="{{ switches.size }}"\n switch-label="{{ switches.label }}"\n switch-icon="{{ switches.icon }}"\n switch-radio-off="{{ switches.radioOff }}"\n switch-label-width="{{ switches.labelWidth }}"\n switch-handle-width="{{ switches.handleWidth }}">\n </div>\n <!-- END SEND MAIL -->\n <div class="row">\n <!-- START ACCOUNT -->\n <div class="form-group col-md-6" data-ng-class="{\'has-error\': (forms.config.MailServerOutId.$touched || forms.config.$submitted) && forms.config.MailServerOutId.$invalid}">\n <label class="control-label">{{ \'APPLICATION_ACCOUNT\' | translate }}<span class="required" data-ng-if="schedule.sendMail" aria-required="true">*</span></label>\n <ui-select data-ng-model="schedule.MailServerOutId" name="MailServerOutId" theme="bootstrap" data-ng-disabled="!schedule.sendMail" data-ng-required="schedule.sendMail">\n <ui-select-match placeholder="{{ \'APPLICATION_ACCOUNT\' | translate }}">{{$select.selected.username}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in mailServers | filter: $select.search">\n <div ng-bind-html="account.username | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.MailServerOutId.$touched || forms.config.$submitted) && forms.config.MailServerOutId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <div class="note note-warning" data-ng-hide="mailServers.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_ACCOUNTS_AVAILABLE\' | translate }}\n </p>\n </div>\n </div>\n <!-- END ACCOUNT -->\n\n <!-- START EMAIL -->\n <div class="form-group col-md-6" data-ng-class="{\'has-error\': (forms.config.$submitted && forms.config.email.$invalid) || forms.config.email.$error.pattern}">\n <label class="control-label">{{\'APPLICATION_EMAIL_ADDRESS\' | translate}}<span data-ng-if="schedule.sendMail" class="required" aria-required="true">*</span></label>\n <input type="email" name="email" placeholder="{{\'APPLICATION_EMAIL_ADDRESS\' | translate}}" class="form-control" data-ng-model="schedule.email" data-ng-disabled="!schedule.sendMail" data-ng-required="schedule.sendMail"/>\n <span data-ng-show="forms.config.$submitted && forms.config.email.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END CONFIG TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n<!-- <pre>\n {{rangeExec | json}}\n</pre>\n<pre>\n {{schedule | json}}\n</pre> -->\n'), +a.put("app/tools/scheduler/wizard/wizard.html",'<div class="col-md-12">\n <!-- BEGIN PAGE HEADER-->\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-calendar"></i>\n <a href="/tools/scheduler/list">{{ \'APPLICATION_SCHEDULER\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-options"></i>\n <a href="#">{{ \'APPLICATION_WIZARD\' | translate }}</a>\n </li>\n </ul>\n </div>\n <!-- END PAGE HEADER-->\n\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-link font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_SCHEDULE\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_GENERAL\' | translate}}" canexit="exitValidation(forms.general.$valid)">\n <form name="forms.general" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.$submitted && forms.general.name.$invalid) || forms.general.name.$error.pattern}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" data-ng-pattern="settings.patternName" required/>\n <span data-ng-show="forms.general.$submitted && forms.general.name.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START ACTIVE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_ACTIVE\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.active"\n type="checkbox"\n name="status"\n data-ng-init="item.active = 0"\n switch-active="{{ switches.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ switches.onColor }}"\n switch-off-color="{{ switches.offColor }}"\n switch-animate="{{ switches.animate }}"\n switch-size="{{ switches.size }}"\n switch-label="{{ switches.label }}"\n switch-icon="{{ switches.icon }}"\n switch-radio-off="{{ switches.radioOff }}"\n switch-label-width="{{ switches.labelWidth }}"\n switch-handle-width="{{ switches.handleWidth }}">\n </div>\n <!-- END ACTIVE -->\n\n <!-- START TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.type.$touched || forms.general.$submitted) && forms.general.type.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.type" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_TYPE\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in scheduleTypes | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | translate"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.type.$touched || forms.general.$submitted) && forms.general.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TYPE -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <button class="btn green-haze" type="submit" ng-click="next(true)">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIGURATION\' | translate}}" canexit="exitValidation(forms.config.$valid)">\n <form name="forms.config" data-ng-switch="item.reportType" data-ng-if="item.type===\'report\'" data-ng-init="initReports()" novalidate>\n <div class="row">\n\n <!-- START TYPE -->\n <div class="form-group col-md-2" data-ng-class="{\'has-error\': (forms.config.type.$touched || forms.config.$submitted) && forms.config.type.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.reportType" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_TYPE\' | translate }}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="report in [\'default\', \'custom\'] | filter: $select.search">\n <div ng-bind-html="report | capitalize | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.type.$touched || forms.config.$submitted) && forms.config.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TYPE -->\n\n <!-- START DEFAULT REPORT -->\n <div data-ng-switch-when="default" class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.config.reportId.$touched || forms.config.$submitted) && forms.config.reportId.$invalid}">\n <label class="control-label">{{ \'APPLICATION_REPORT\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.reportId" name="reportId" theme="bootstrap" on-select="setReportTree($item,$model)" required>\n <ui-select-match placeholder="{{ \'APPLICATION_REPORT\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices group-by="\'parent\'" repeat="report.id as report in defRep | filter: $select.search">\n <div ng-bind-html="report.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.reportId.$touched || forms.config.$submitted) && forms.config.reportId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DEFAULT REPORT -->\n\n <!-- START CUSTOM REPORT -->\n <div data-ng-switch-when="custom" class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.config.reportId.$touched || forms.config.$submitted) && forms.config.reportId.$invalid}">\n <label class="control-label">{{ \'APPLICATION_REPORT\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.reportId" name="reportId" theme="bootstrap" on-select="setReportTree($item,$model)" required>\n <ui-select-match placeholder="{{ \'APPLICATION_REPORT\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices group-by="\'parent\'" repeat="report.id as report in cusRep | filter: $select.search">\n <div ng-bind-html="report.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.reportId.$touched || forms.config.$submitted) && forms.config.reportId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CUSTOM REPORT -->\n\n <!-- START OUTPUT -->\n <div class="form-group col-md-2" data-ng-class="{\'has-error\': (forms.config.reportOutput.$touched || forms.config.$submitted) && forms.config.reportOutput.$invalid}">\n <label class="control-label">{{ \'APPLICATION_OUTPUT\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.reportOutput" name="reportOutput" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_OUTPUT\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="output in [\'CSV\',\'PDF\'] | filter: $select.search">\n <div ng-bind-html="output | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.reportOutput.$touched || forms.config.$submitted) && forms.config.reportOutput.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OUTPUT -->\n\n </div>\n\n <!-- START TODAY -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_RUN_ON\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n data-ng-model="switchValues.today"\n type="checkbox"\n name="status"\n data-ng-change="checkToday()"\n switch-active="{{ switches.isActive }}"\n switch-on-text="{{ \'APPLICATION_TODAY\' | translate }}"\n switch-off-text="{{ \'APPLICATION_RANGE\' | translate }}"\n switch-on-color="{{ switches.onColor }}"\n switch-off-color="{{ switches.offColor }}"\n switch-animate="{{ switches.animate }}"\n switch-size="{{ switches.size }}"\n switch-label="{{ switches.label }}"\n switch-icon="{{ switches.icon }}"\n switch-radio-off="{{ switches.radioOff }}"\n switch-label-width="{{ switches.labelWidth }}"\n switch-handle-width="{{ switches.handleWidth }}">\n </div>\n <!-- END TODAY -->\n\n <!-- START VALIDITY -->\n <div class="form-group" data-ng-if="switchValues.today">\n <label class="control-label">{{\'APPLICATION_VALIDITY\' | translate}}</label>\n <rzslider rz-slider-model="item.validityStart" rz-slider-high="item.validityEnd" rz-slider-options="validitySlider" data-ng-init="item.validityStart = 8;item.validityEnd = 16;"></rzslider>\n </div>\n <!-- END VALIDITY -->\n\n <!-- START RANGE -->\n <div class="form-group" data-ng-if="!switchValues.today" data-ng-class="{\'has-error\': (forms.config.range.$touched || forms.config.$submitted) && forms.config.range.$invalid}">\n <label class="control-label">{{ \'APPLICATION_REPORT_RANGE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.reportRange" name="range" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_RANGE\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="range.value as range in reportRanges | filter: $select.search">\n <div ng-bind-html="range.name | highlight: $select.search | translate"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.range.$touched || forms.config.$submitted) && forms.config.range.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END RANGE -->\n\n <!-- START TODAY CRON EXEC -->\n <div class="form-group" data-ng-if="switchValues.today" data-ng-class="{\'has-error\': (forms.config.cron.$touched || forms.config.$submitted) && forms.config.cron.$invalid}">\n <label class="control-label">{{ \'APPLICATION_EXECUTE_EVERY\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.cron" name="cron" theme="bootstrap" data-ng-required="switchValues.today">\n <ui-select-match placeholder="{{ \'APPLICATION_EXECUTE_EVERY\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="cron.value as cron in todayCron | filter: $select.search">\n <div ng-bind-html="cron.name | highlight: $select.search | translate"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.cron.$touched || forms.config.$submitted) && forms.config.cron.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TODAY CRON -->\n <div class="row" data-ng-if="!switchValues.today">\n <!-- START CRONTYPE EXEC -->\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.config.cronType.$touched || forms.config.$submitted) && forms.config.cronType.$invalid}">\n <label class="control-label">{{ \'APPLICATION_EXECUTE_EVERY\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="rangeExec.type" name="cronType" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_EXECUTE_EVERY\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in cronTypes | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | translate"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.cronType.$touched || forms.config.$submitted) && forms.config.cronType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CRONTYPE -->\n\n <!-- START WEEKDAY -->\n <div class="form-group col-md-4" data-ng-if="item.cronType === \'weekly\'" data-ng-class="{\'has-error\': (forms.config.weekDay.$touched || forms.config.$submitted) && forms.config.weekDay.$invalid}">\n <label class="control-label">{{ \'APPLICATION_WEEKDAYS\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select multiple data-ng-model="rangeExec.weekDays" name="weekDay" theme="bootstrap" data-ng-required="item.cronType === \'weekly\'">\n <ui-select-match placeholder="{{ \'APPLICATION_WEEKDAYS\' | translate }}">{{$item.name | translate}}</ui-select-match>\n <ui-select-choices repeat="day.value as day in weekDays | filter: $select.search">\n <div ng-bind-html="day.name | highlight: $select.search | translate"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.weekDay.$touched || forms.config.$submitted) && forms.config.weekDay.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group col-md-4" data-ng-if="item.cronType === \'monthly\'" data-ng-class="{\'has-error\': (forms.config.monthDay.$touched || forms.config.$submitted) && forms.config.monthDay.$invalid}">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="rangeExec.monthDay" name="monthDay" theme="bootstrap" data-ng-required="item.cronType === \'monthly\'">\n <ui-select-match placeholder="{{ \'APPLICATION_MONTHDAY\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="day in monthDays | filter: $select.search">\n <div ng-bind-html="day | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.monthDay.$touched || forms.config.$submitted) && forms.config.monthDay.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START HOUR -->\n <div class="form-group col-md-4" data-ng-if="item.cronType" data-ng-class="{\'has-error\': (forms.config.hour.$touched || forms.config.$submitted) && forms.config.hour.$invalid}">\n <label class="control-label">{{ \'APPLICATION_HOUR\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="rangeExec.hour" name="hour" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_HOUR\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="hour in hours | filter: $select.search">\n <div ng-bind-html="hour | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.hour.$touched || forms.config.$submitted) && forms.config.hour.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END HOUR -->\n </div>\n\n <!-- START SEND MAIL -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_SEND_MAIL\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n data-ng-model="item.sendMail"\n type="checkbox"\n name="status"\n data-ng-init="item.sendMail = 0"\n switch-active="{{ switches.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ switches.onColor }}"\n switch-off-color="{{ switches.offColor }}"\n switch-animate="{{ switches.animate }}"\n switch-size="{{ switches.size }}"\n switch-label="{{ switches.label }}"\n switch-icon="{{ switches.icon }}"\n switch-radio-off="{{ switches.radioOff }}"\n switch-label-width="{{ switches.labelWidth }}"\n switch-handle-width="{{ switches.handleWidth }}">\n </div>\n <!-- END SEND MAIL -->\n <div class="row">\n <!-- START ACCOUNT -->\n <div class="form-group col-md-6" data-ng-class="{\'has-error\': (forms.config.MailServerOutId.$touched || forms.config.$submitted) && forms.config.MailServerOutId.$invalid}">\n <label class="control-label">{{ \'APPLICATION_ACCOUNT\' | translate }}<span class="required" data-ng-if="item.sendMail" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.MailServerOutId" name="MailServerOutId" theme="bootstrap" data-ng-disabled="!item.sendMail" data-ng-required="item.sendMail">\n <ui-select-match placeholder="{{ \'APPLICATION_ACCOUNT\' | translate }}">{{$select.selected.username}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in mailServers | filter: $select.search">\n <div ng-bind-html="account.username | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.MailServerOutId.$touched || forms.config.$submitted) && forms.config.MailServerOutId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <div class="note note-warning" data-ng-hide="mailServers.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_ACCOUNTS_AVAILABLE\' | translate }}\n </p>\n </div>\n </div>\n <!-- END ACCOUNT -->\n\n <!-- START EMAIL -->\n <div class="form-group col-md-6" data-ng-class="{\'has-error\': (forms.config.$submitted && forms.config.email.$invalid) || forms.config.email.$error.pattern}">\n <label class="control-label">{{\'APPLICATION_EMAIL_ADDRESS\' | translate}}<span data-ng-if="item.sendMail" class="required" aria-required="true">*</span></label>\n <input type="email" name="email" placeholder="{{\'APPLICATION_EMAIL_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.email" required data-ng-disabled="!item.sendMail" data-ng-required="item.sendMail"/>\n <span data-ng-show="forms.config.$submitted && forms.config.email.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n </div>\n\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <button class="btn green-haze" type="submit" ng-click="next()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END PORTLET-->\n</div>\n<!-- <pre>\n {{rangeExec | json}}\n</pre>\n<pre>\n {{item | json}}\n</pre> -->\n'),a.put("app/tools/sound/list/list.html",'<div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-music-tone-alt"></i>\n <a href="#">{{ \'APPLICATION_SOUNDS\' | translate }}</a>\n </li>\n </ul>\n <div class="page-toolbar">\n </div>\n</div>\n<!-- END PAGE HEADER-->\n<!-- BEGIN PAGE CONTENT-->\n<!-- Audio Portlets -->\n<div class="headline">\n <h3><i class="icon-music-tone-alt sounds-title-icon"></i> {{ \'APPLICATION_SOUNDS\' | translate }}</h3>\n</div>\n<div class="portlet light bg-inverse">\n <div class="portlet-title collapsible" ng-click="isCollapsed = !isCollapsed">\n <div class="caption">\n <i class="icon-puzzle font-red-flamingo"></i>\n <span class="caption-subject bold font-red-flamingo uppercase">\n {{\'APPLICATION_FILE_UPLOAD\' | translate}} </span>\n </div>\n <div class="tools">\n <a href="" ng-class="{\'collapse\': !isCollapsed, \'expand\' : isCollapsed}">\n </a>\n </div>\n </div>\n <div class="portlet-body" ng-slide-down="!isCollapsed">\n <div class="row" nv-file-drop="" uploader="uploader" filters="queueLimit, customFilter">\n <div class="col-md-4">\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-settings font-green-sharp"></i>\n <span class="caption-subject bold uppercase">{{\'APPLICATION_SELECT_FILES\' | translate}}</span>\n <span class="caption-helper hide"></span>\n </div>\n <div class="actions">\n </div>\n </div>\n <div class="portlet-body">\n <div ng-show="uploader.isHTML5">\n <div class="file-drop-zone margin-bottom-20" nv-file-over="" uploader="uploader" over-class="file-drop-zone-over">\n Base drop zone\n </div>\n </div>\n <span class="btn default btn-file">\n <span class="fileinput-new">\n {{\'APPLICATION_FILE_UPLOAD\' | translate}}</span>\n <input type="file" nv-file-select="" uploader="uploader" />\n </span>\n <span class="btn default btn-file">\n <span class="fileinput-new">\n {{\'APPLICATION_MULTI_FILE_UPLOAD\' | translate}}</span>\n <input type="file" nv-file-select="" uploader="uploader" multiple /><br/>\n </span>\n <p>\n </br>\n {{ \'MESSAGE_SUPPORTED_FORMATS\' | translate }} <b>wav, mp3, gsm, ogg</b>.\n </p>\n <p>\n {{ \'MESSAGE_MAXIMUM_SOUND_UPLOAD_SIZE\' | translate }} <b>15 Mb</b>.\n </p>\n </div>\n </div>\n </div>\n <div class="col-md-8">\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-settings font-green-sharp"></i>\n <span class="caption-subject bold uppercase">{{\'APPLICATION_UPLOAD_QUEUE\' | translate}}</span>\n <span class="caption-helper">{{\'APPLICATION_QUEUE_LENGTH\' | translate}}: {{ uploader.queue.length }}</span>\n </div>\n <div class="actions">\n </div>\n </div>\n <div class="portlet-body">\n <div class="table-scrollable table-scrollable-borderless">\n <table class="table table-hover table-light">\n <thead>\n <tr class="uppercase">\n <th width="50%">{{\'APPLICATION_NAME\' | translate}}</th>\n <th ng-show="uploader.isHTML5">{{\'APPLICATION_SIZE\' | translate}}</th>\n <th ng-show="uploader.isHTML5">{{\'APPLICATION_PROGRESS\' | translate}}</th>\n <th>{{\'APPLICATION_STATUS\' | translate}}</th>\n <th>{{\'APPLICATION_MESSAGE\' | translate}}</th>\n <th>{{\'APPLICATION_ACTIONS\' | translate}}</th>\n </tr>\n </thead>\n <tbody>\n <tr ng-repeat="item in uploader.queue">\n <td><strong>{{ item.file.name }}</strong></td>\n <td ng-show="uploader.isHTML5" nowrap>{{ item.file.size/1024/1024|number:2 }} MB</td>\n <td ng-show="uploader.isHTML5">\n <div class="progress progress-sm" style="margin-bottom: 0;">\n <div class="progress-bar progress-bar-info" role="progressbar" ng-style="{ \'width\': item.progress + \'%\' }"></div>\n </div>\n </td>\n <td class="text-center">\n <span ng-show="item.isSuccess" class="text-success"><i class="glyphicon glyphicon-ok"></i></span>\n <span ng-show="item.isCancel" class="text-info"><i class="glyphicon glyphicon-ban-circle"></i></span>\n <span ng-show="item.isError" class="text-danger"><i class="glyphicon glyphicon-remove"></i></span>\n <span ng-show="item.isUploading" class="text-info"><i class="glyphicon glyphicon-upload"></i></span>\n </td>\n <td class="text-center">\n <span ng-show="item.responseMessage" class="text-danger">{{item.responseMessage}}</span>\n </td>\n <td nowrap>\n <button type="button" class="btn btn-success btn-xs" ng-click="item.upload()" ng-disabled="item.isReady || item.isUploading || item.isSuccess">\n <span class="glyphicon glyphicon-upload"></span> {{\'APPLICATION_UPLOAD\' | translate}}\n </button>\n <button type="button" class="btn btn-warning btn-xs" ng-click="item.cancel()" ng-disabled="!item.isUploading">\n <span class="glyphicon glyphicon-ban-circle"></span> {{\'APPLICATION_CANCEL\' | translate}}\n </button>\n <button type="button" class="btn btn-danger btn-xs" ng-click="item.remove()">\n <span class="glyphicon glyphicon-trash"></span> {{\'APPLICATION_REMOVE\' | translate}}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <div>\n <p>{{\'APPLICATION_UPLOAD_QUEUE_PROGRESS\' | translate}}:</p>\n <div class="progress progress-sm" style="">\n <div class="progress-bar progress-bar-info" role="progressbar" ng-style="{ \'width\': uploader.progress + \'%\' }"></div>\n </div>\n </div>\n <button type="button" class="btn btn-success btn-s" ng-click="uploader.uploadAll()" ng-disabled="!uploader.getNotUploadedItems().length">\n <span class="glyphicon glyphicon-upload"></span> {{\'APPLICATION_UPLOAD_ALL\' | translate}}\n </button>\n <button type="button" class="btn btn-warning btn-s" ng-click="uploader.cancelAll()" ng-disabled="!uploader.isUploading">\n <span class="glyphicon glyphicon-ban-circle"></span> {{\'APPLICATION_CANCEL_ALL\' | translate}}\n </button>\n <button type="button" class="btn btn-danger btn-s" ng-click="uploader.clearQueue()" ng-disabled="!uploader.queue.length">\n <span class="glyphicon glyphicon-trash"></span> {{\'APPLICATION_REMOVE_ALL\' | translate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div class="row thumbnails" data-ng-init="initList()">\n <div class="row" ng-show="sounds.length == 0">\n <div class="col-md-12 page-404">\n <div class="details">\n <h3>{{ \'MESSAGE_NO_SOUNDS\' | translate }}</h3>\n <p>\n <a href="/">\n {{ \'MESSAGE_RETURN_HOME\' | translate }} </a>\n {{ \'MESSAGE_OR_UPLOAD_SOUND_FILE\' | translate }}\n </p>\n </div>\n </div>\n </div>\n <div class="audio-portlet-wrapper animate-repeat" ng-repeat="sound in sounds">\n <div class="audio-portlet">\n <div class="audio-portlet-title"><a href="#" editable-text="sound.display_name" onbeforesave="updateAudio(sound.id,{display_name : $data})">{{ sound.display_name || "Empty" }}</a></div>\n <img src="../assets/images/note_placeholder.png" alt="" class="img-responsive"/>\n <div class="file-info">\n <div class="audio-tag-wrapper">\n <audio-file-download params="{id:sound.id,controller:\'stream\'}" resource="Sound"></audio-file-download>\n </div>\n <p id="description_div">\n <a href="#" editable-text="sound.description" onbeforesave="updateAudio(sound.id,{description : $data})">{{ sound.description || "Empty" }}</a>\n </p>\n <p class="float-right">\n <button class="btn btn-xs green-meadow" uib-tooltip-template="\'audioInfoTemplate.html\'"><i class="icon-list"></i></button>\n <motion-file-download params="{id:sound.id,controller:\'download\'}" resource="Sound" mimetype="\'audio/\'+sound.original_format" tooltiptext="Download" filename="sound.display_name+\'.\'+sound.original_format" btnclass="{{downloadButtonClass}}" btncontent=\'{{downloadButtonContent}}\'></motion-file-download>\n <button uib-tooltip="Delete" class="btn btn-xs red-sunglo" ng-click="delete(sound.display_name, sound.id)" tooltip="Delete"><i class="icon-close" ></i></button>\n </p>\n </div>\n </div>\n </div>\n <script type="text/ng-template" id="audioInfoTemplate.html">\n <div>\n <ul class="list-unstyled">\n <li><b>Format : </b>{{sound.original_format}}</li>\n <li><b>Duration : </b>{{sound.original_duration | date: \'mm:ss\'}}</li>\n <li><b>Channels : </b>{{sound.original_channelCount}}</li>\n <li><b>Bitrate : </b>{{sound.original_bitRate/1024}} kbs</li>\n <li><b>Sample Rate : </b>{{sound.original_sampleRate/1000}} KHz</li>\n </ul>\n </div>\n </script>\n</div>\n<!-- End Audio Portlets -->\n'), +a.put("app/tools/tag/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_TAG\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required data-ng-pattern="settings.patternName"/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/tools/tag/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-tag"></i>\n <a href="#">{{ \'APPLICATION_TAGS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_TAGS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <button class="btn green-jungle " ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_TAG\' | translate }}\n </button>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/tag/view/view.chat.html",'<div class="row" >\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_TAGGED_CHAT\' | translate}}</span>\n </div>\n </div>\n\n <div class="portlet-body" data-ng-if="tag" data-ng-init="initChat()">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="false"></span>\n <!-- END UI-GRID SPINNER -->\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/tools/tag/view/view.contacts.html",'<div class="row" >\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_TAGGED_CONTACTS\' | translate}}</span>\n </div>\n </div>\n\n <div class="portlet-body" data-ng-if="tag" data-ng-init="initContacts()">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="false"></span>\n <!-- END UI-GRID SPINNER -->\n <!-- START TABLE -->\n <div ui-grid="gridOptions" data-ng-if="readyGrid && gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/tools/tag/view/view.fax.html",'<div class="row" >\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_TAGGED_FAX\' | translate}}</span>\n </div>\n </div>\n\n <div class="portlet-body" data-ng-if="tag" data-ng-init="initFax()">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="false"></span>\n <!-- END UI-GRID SPINNER -->\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/tools/tag/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getTag()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-tag"></i>\n <a href="/tools/tags/list">{{ \'APPLICATION_TAGS\' | translate }}</a>\n <i data-ng-show="tag" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="tag">\n <a href="#">{{tag.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/tag.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{tag.name}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.tools.tags.view.settings\')}">\n <a data-ng-href="/tools/tags/view/{{tag.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.tools.tags.view.chat\')}">\n <a data-ng-href="{{license.chat ? \'/tools/tags/view/\'+tag.id+\'/chat\' : \'#\'}}" data-ng-class="{\'disabled-link\':!license.chat}">\n <i class="icon-bubble"></i>\n {{ \'APPLICATION_CHAT\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.tools.tags.view.mail\')}">\n <a data-ng-href="{{license.mail ? \'/tools/tags/view/\'+tag.id+\'/mail\' : \'#\'}}" data-ng-class="{\'disabled-link\':!license.mail}">\n <i class="icon-envelope"></i>\n {{ \'APPLICATION_MAIL\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.tools.tags.view.fax\')}">\n <a data-ng-href="{{license.fax ? \'/tools/tags/view/\'+tag.id+\'/fax\' : \'#\'}}" data-ng-class="{\'disabled-link\':!license.fax}">\n <i class="fa fa-fax"></i>\n {{ \'APPLICATION_FAX\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.tools.tags.view.sms\')}" >\n <a data-ng-href="{{license.messaging ? \'/tools/tags/view/\'+tag.id+\'/sms\' : \'#\'}}" data-ng-class="{\'disabled-link\':!license.messaging}">\n <i class="glyphicon glyphicon-comment"></i>\n {{ \'APPLICATION_SMS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.tools.tags.view.contacts\')}">\n <a data-ng-href="{{license.cm ? \'/tools/tags/view/\'+tag.id+\'/contacts\' : \'#\'}}" data-ng-class="{\'disabled-link\':!license.cm}">\n <i class="fa fa-users"></i>\n {{ \'APPLICATION_CONTACTS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/tag/view/view.mail.html",'<div class="row" >\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_TAGGED_MAIL\' | translate}}</span>\n </div>\n </div>\n\n <div class="portlet-body" data-ng-if="tag" data-ng-init="initMail()">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="false"></span>\n <!-- END UI-GRID SPINNER -->\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/tools/tag/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_TAG\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="false"></span>\n <!-- END UI-GRID SPINNER -->\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateTag()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="tag.name" required data-ng-pattern="settings.patternName"/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="tag.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/tools/tag/view/view.sms.html",'<div class="row" >\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_TAGGED_SMS\' | translate}}</span>\n </div>\n </div>\n\n <div class="portlet-body" data-ng-if="tag" data-ng-init="initSms()">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/tools/template/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="#">{{ \'APPLICATION_TEMPLATES\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-wrench font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_TEMPLATES\' | translate }}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/tools/templates/wizard">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_TEMPLATE\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/template/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initItem()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="/tools/templates/list">{{ \'APPLICATION_TEMPLATES\' | translate }}</a>\n <i data-ng-show="item" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="item">\n <a href="#">{{item.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/template.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{item.name}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.tools.templates.view.settings\')}">\n <a data-ng-href="/tools/templates/view/{{item.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}}\n </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/template/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n\n <form name="form" data-ng-submit="form.$valid && updateItem()" class="form-horizontal" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': form.name.$invalid && form.$submitted}">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-2">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}:<span class="required" aria-required="true">*</span></label>\n </div>\n <div class="col-md-10">\n <input type="text" name="name" class="form-control todo-taskbody-taskdesc" placeholder="{{\'APPLICATION_NAME\' | translate}}..." data-ng-model="item.name" required>\n <span data-ng-show="form.name.$invalid && form.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group" data-ng-class="{\'has-error\': form.description.$invalid && form.$submitted}">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-2">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}:</label>\n </div>\n <div class="col-md-10">\n <input type="text" name="description" class="form-control todo-taskbody-taskdesc" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}..." rows="8" data-ng-model="item.description">\n <span data-ng-show="form.description.$invalid && form.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n <!-- END NAME -->\n\n <hr>\n\n <!-- START SUBJECT -->\n <div class="form-group row" data-ng-class="{\'has-error\': form.subject.$invalid && form.$submitted}">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-2">\n <label class="control-label">{{\'APPLICATION_SUBJECT\' | translate}}:</label>\n </div>\n <div class="col-md-10">\n <input type="text" name="subject" class="form-control todo-taskbody-taskdesc" placeholder="{{\'APPLICATION_SUBJECT\' | translate}}..." rows="8" data-ng-model="item.subject">\n <span data-ng-show="form.subject.$invalid && form.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n <!-- END SUJBECT -->\n\n <!-- START HTML -->\n <div class="form-group row" data-ng-class="{\'has-error\': form.text.$invalid && form.$submitted}">\n <div class="col-md-12">\n <div ckeditor="options" ng-model="item.html"></div>\n <span data-ng-show="form.text.$invalid && form.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <!-- END HTML -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/tools/template/wizard/wizard.html",'<div class="row">\n <div class="col-md-12">\n <!-- BEGIN PAGE HEADER-->\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="/tools/templates/list">{{ \'APPLICATION_TEMPLATES\' | translate }}</a>\n </li>\n </ul>\n </div>\n <!-- END PAGE HEADER-->\n\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered" data-ng-init="initWizard()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_TEMPLATES\' | translate }} FORM</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="form" data-ng-submit="form.$valid && createItem()" class="form-horizontal" novalidate>\n <!-- START HEAD -->\n <div class="form">\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': form.name.$invalid && form.$submitted}">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}:<span class="required" aria-required="true">*</span></label>\n </div>\n <div class="col-md-11">\n <input type="text" name="name" class="form-control todo-taskbody-taskdesc" placeholder="{{\'APPLICATION_NAME\' | translate}}..." data-ng-model="item.name" required>\n <span data-ng-show="form.name.$invalid && form.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group" data-ng-class="{\'has-error\': form.description.$invalid && form.$submitted}">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}:</label>\n </div>\n <div class="col-md-11">\n <input type="text" name="description" class="form-control todo-taskbody-taskdesc" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}..." rows="8" data-ng-model="item.description">\n <span data-ng-show="form.description.$invalid && form.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n <!-- END NAME -->\n\n <!-- START SUBJECT -->\n <div class="form-group" data-ng-class="{\'has-error\': form.subject.$invalid && form.$submitted}">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <label class="control-label">{{\'APPLICATION_SUBJECT\' | translate}}:</label>\n </div>\n <div class="col-md-11">\n <input type="text" name="subject" class="form-control todo-taskbody-taskdesc" placeholder="{{\'APPLICATION_SUBJECT\' | translate}}..." rows="8" data-ng-model="item.subject">\n <span data-ng-show="form.subject.$invalid && form.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n <!-- END SUJBECT -->\n\n <!-- START HTML -->\n <div class="form-group row" data-ng-class="{\'has-error\': form.text.$invalid && form.$submitted}">\n <div class="col-md-12">\n <div ckeditor="options" ng-model="item.html"></div>\n <span data-ng-show="form.text.$invalid && form.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <!-- END HTML -->\n\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" data-ng-click="goNext()"/>\n </form>\n </div>\n </div>\n <!-- END PORTLET-->\n </div>\n</div>\n'),a.put("app/tools/trigger/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bulb"></i>\n <a href="#">{{ \'APPLICATION_TRIGGERS\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-bulb font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_TRIGGERS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle " href="/tools/triggers/wizard">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_TRIGGER\' | translate }}\n </a>\n </div>\n <!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> -->\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/trigger/view/view.html",'<!-- BEGIN PAGE HEADER-->\n<div class="row" data-ng-init="initView();">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bulb"></i>\n <a href="/tools/triggers/list">{{ \'APPLICATION_TRIGGERS\' | translate }}</a>\n <i class="fa fa-angle-right" data-ng-show="trigger"></i>\n </li>\n <li data-ng-show="trigger">\n <a href="#">{{ trigger.description || trigger.name }}</a>\n </li>\n </ul>\n </div>\n\n<!-- END PAGE HEADER-->\n\n<!-- BEGIN PAGE CONTENT-->\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/trigger.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{ trigger.name }}\n </div>\n <div class="profile-usertitle-job">\n {{ trigger.description }}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.tools.triggers.view.settings\')}">\n <a href="/tools/triggers/view/{{trigger.id}}/settings">\n <i class="icon-bulb"></i>\n {{ \'APPLICATION_SETTINGS\' | translate }} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/trigger/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERALS\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_CONDITIONS\' | translate}} & {{\'APPLICATION_ACTIONS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <form name="forms.general" data-ng-submit="exitValidation(forms.general.$valid) && updateTrigger()" novalidate>\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="trigger.name" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START CHANNEL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.channel.$touched || forms.general.$submitted) && forms.general.channel.$invalid}">\n <label class="control-label">{{\'APPLICATION_CHANNEL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="channel" placeholder="{{\'APPLICATION_CHANNEL\' | translate}}" class="form-control" data-ng-model="trigger.channel" required readonly/>\n <span data-ng-show="(forms.general.channel.$touched || forms.general.$submitted) && forms.general.channel.$invalid && forms.general.channel.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CHANNEL -->\n\n <!-- START STATUS -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_STATUS\' | translate}}</label>\n </br>\n <input bs-switch class="form-control" ng-model="trigger.status" type="checkbox" name="status" switch-active="{{ recordSwitch.isActive }}" switch-on-text="{{ recordSwitch.onText }}" switch-off-text="{{ recordSwitch.offText }}" switch-on-color="{{ recordSwitch.onColor }}"\n switch-off-color="{{ recordSwitch.offColor }}" switch-animate="{{ recordSwitch.animate }}" switch-size="{{ recordSwitch.size }}" switch-label="{{ recordSwitch.label }}" switch-icon="{{ recordSwitch.icon }}" switch-radio-off="{{ recordSwitch.radioOff }}"\n switch-label-width="{{ recordSwitch.labelWidth }}" switch-handle-width="{{ recordSwitch.handleWidth }}">\n </div>\n <!-- END STATUS -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="trigger.description" />\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}" />\n </div>\n <!-- END GENERAL TAB -->\n <div class="tab-pane" id="tab_1_2">\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <i class="icon-tag font-blue-hoki"></i>\n <span class="caption-subject" ng-bind-html="\'APPLICATION_MEET_ALL_CONDITIONS\' | translate"></span>:\n </div>\n </div>\n <div class="portlet-body">\n <div class="portlet light bordered" ng-repeat="all in trigger.All">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <span class="caption-subject">{{ \'APPLICATION_ALL\' | translate }} #{{$index+1}}</span>\n </div>\n <div class="actions">\n <a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeCondition(\'All\',$index)"><i class="fa fa-trash"></i></a>\n </div>\n </div>\n <div class="portlet-body">\n <div class="padding-bottom row">\n <div class="col-md-12">\n <condition-builder element="all" serviceindex="trigger.channel" service="$triggers" form="forms.general"></condition-builder>\n </div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-12">\n <button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addCondition(\'All\')">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_CONDITION\' | translate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <i class="icon-tag font-blue-hoki"></i>\n <span class="caption-subject" ng-bind-html="\'APPLICATION_MEET_ANY_CONDITIONS\' | translate"></span>:\n </div>\n </div>\n <div class="portlet-body">\n <div class="portlet light bordered" ng-repeat="any in trigger.Any">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <span class="caption-subject">{{ \'APPLICATION_ANY\' | translate }} #{{$index+1}}</span>\n </div>\n <div class="actions">\n <a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeCondition(\'Any\',$index)"><i class="fa fa-trash"></i></a>\n </div>\n </div>\n <div class="portlet-body">\n <div class="padding-bottom row">\n <div class="col-md-12">\n <condition-builder element="any" serviceindex="trigger.channel" service="$triggers" form="forms.general"></condition-builder>\n </div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-12">\n <button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addCondition(\'Any\')">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_CONDITION\' | translate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <i class="icon-tag font-blue-hoki"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACTIONS\' | translate }}</span>:\n </div>\n </div>\n <div class="portlet-body">\n <div class="portlet light bordered" ng-repeat="action in trigger.Actions">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <span class="caption-subject">{{ \'APPLICATION_ACTIONS\' | translate }} #{{$index+1}}</span>\n </div>\n <div class="actions">\n <a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeAction($index)"><i class="fa fa-trash"></i></a>\n </div>\n </div>\n <div class="portlet-body">\n <div class="padding-bottom row">\n <div class="col-md-12">\n <div class="form-group col-md-6" data-ng-class="{\'has-error\': (forms.general[\'action\'+$index].$touched || forms.general.$submitted) && forms.general[\'action\'+$index].$invalid}">\n <ui-select data-ng-model="action.action" theme="bootstrap" name="action{{$index}}" data-ng-change="resetActionData(action)" required>\n <ui-select-match placeholder="{{ \'APPLICATION_ACTION\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="tAction.value as tAction in $triggers.services[trigger.channel].actions | filter: $select.search">\n <div ng-bind-html="tAction.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general[\'action\'+$index].$touched || forms.general.$submitted) && forms.general[\'action\'+$index].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div ng-switch="action.action">\n <action-builder-template ng-switch-when="template" element="action" form="forms.general"></action-builder-template>\n <action-builder-account-template ng-switch-when="accountTemplate" element="action" form="forms.general"></action-builder-account-template>\n <action-builder-integration ng-switch-when="integration" element="action" form="forms.general"></action-builder-integration>\n <action-builder-motion-bar ng-switch-when="motionbar" element="action" form="forms.general"></action-builder-motion-bar>\n <action-builder-jscripty ng-switch-when="jscripty" element="action" form="forms.general"></action-builder-jscripty>\n <action-builder-url-forward ng-switch-when="urlForward" element="action" form="forms.general"></action-builder-url-forward>\n <action-builder-close ng-switch-when="close" element="action" form="forms.general"></action-builder-close>\n <action-builder-forward ng-switch-when="forward" element="action" form="forms.general"></action-builder-forward>\n <action-builder-tag ng-switch-when="tag" element="action" form="forms.general"></action-builder-tag>\n <action-builder-http ng-switch-when="http" element="action" form="forms.general"></action-builder-http>\n <action-builder-email ng-switch-when="email" element="action" form="forms.general"></action-builder-email>\n <action-builder-account-email ng-switch-when="accountEmail" element="action" form="forms.general"></action-builder-account-email>\n <action-builder-account-sms ng-switch-when="accountSms" element="action" form="forms.general"></action-builder-account-sms>\n <action-builder-cm ng-switch-when="contactManager" element="action" form="forms.general"></action-builder-cm>\n <action-builder-web-popup ng-switch-when="webPopup" element="action" form="forms.general"></action-builder-web-popup>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-12">\n <button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addAction()">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_ACTION\' | translate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n <!-- <div class="has-error" data-ng-show="forms.general.$submitted && !trigger.All.length && !trigger.Any.length">\n <span class="help-block help-block-error form-control">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INSERT_AT_LEAST_ONE_CONDITION\' | translate}}.\n </span>\n </div> -->\n <div class="has-error" data-ng-show="forms.general.$submitted && !trigger.Actions.length">\n <span class="help-block help-block-error form-control">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INSERT_AT_LEAST_ONE_ACTION\' | translate}}.\n </span>\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}" />\n </div>\n </div>\n </form>\n </div>\n </div>\n</div>\n</div>\n'), +a.put("app/tools/trigger/wizard/wizard.html",'<div class="row">\n <div class="col-md-12">\n <!-- BEGIN PAGE HEADER-->\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bulb"></i>\n <a href="/tools/triggers/list">{{ \'APPLICATION_TRIGGERS\' | translate }}</a>\n </li>\n </ul>\n </div>\n <!-- END PAGE HEADER-->\n\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-bulb font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_TRIGGERS\' | translate }} WIZARD</span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_GENERAL\' | translate}}" canexit="exitValidation(forms.general.$valid)">\n <form name="forms.general" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START STATUS -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_STATUS\' | translate}}</label>\n </br>\n <input bs-switch class="form-control" ng-model="item.status" type="checkbox" name="status" data-ng-init="item.status = 0" switch-active="{{ statusSwitch.isActive }}" switch-on-text="{{ statusSwitch.onText }}" switch-off-text="{{ statusSwitch.offText }}"\n switch-on-color="{{ statusSwitch.onColor }}" switch-off-color="{{ statusSwitch.offColor }}" switch-animate="{{ statusSwitch.animate }}" switch-size="{{ statusSwitch.size }}" switch-label="{{ statusSwitch.label }}" switch-icon="{{ statusSwitch.icon }}"\n switch-radio-off="{{ statusSwitch.radioOff }}" switch-label-width="{{ statusSwitch.labelWidth }}" switch-handle-width="{{ statusSwitch.handleWidth }}">\n </div>\n <!-- END STATUS -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description" />\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()" />\n </form>\n </wz-step>\n <wz-step title="{{\'APPLICATION_SETTINGS\' | translate}}" canexit="exitSettingsValidation(forms.settings.$valid)">\n <form name="forms.settings" novalidate>\n\n <!-- Channel -->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <i class="icon-tag font-blue-hoki"></i>\n <span class="caption-subject">{{ \'APPLICATION_CHANNEL\' | translate }}</span>\n </div>\n </div>\n <div class="portlet-body">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.channel.$touched || forms.settings.$submitted) && forms.settings.channel.$invalid}">\n <label class="control-label">{{ \'APPLICATION_CHANNEL\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.channel" name="channel" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_CHANNEL\' | translate }}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="channel in $triggers.channels | filter: $select.search">\n <div ng-bind-html="channel | highlight: $select.search | capitalize"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.channel.$touched || forms.settings.$submitted) && forms.settings.channel.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n\n <!-- All -->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <i class="icon-tag font-blue-hoki"></i>\n <span class="caption-subject" ng-bind-html="\'APPLICATION_MEET_ALL_CONDITIONS\' | translate"></span>:\n </div>\n </div>\n <div class="portlet-body">\n <div class="portlet light bordered" ng-repeat="all in item.All">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <span class="caption-subject">{{ \'APPLICATION_ALL\' | translate }} #{{$index+1}}</span>\n </div>\n <div class="actions">\n <a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeCondition(\'All\',$index)"><i class="fa fa-trash"></i></a>\n </div>\n </div>\n <div class="portlet-body">\n <div class="padding-bottom row">\n <div class="col-md-12">\n <condition-builder element="all" serviceindex="item.channel" service="$triggers" form="forms.general"></condition-builder>\n </div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-12">\n <button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addCondition(\'All\')">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_CONDITION\' | translate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Any -->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <i class="icon-tag font-blue-hoki"></i>\n <span class="caption-subject" ng-bind-html="\'APPLICATION_MEET_ANY_CONDITIONS\' | translate"></span>:\n </div>\n </div>\n <div class="portlet-body">\n <div class="portlet light bordered" ng-repeat="any in item.Any">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <span class="caption-subject">{{ \'APPLICATION_ANY\' | translate }} #{{$index+1}}</span>\n </div>\n <div class="actions">\n <a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeCondition(\'Any\',$index)"><i class="fa fa-trash"></i></a>\n </div>\n </div>\n <div class="portlet-body">\n <div class="padding-bottom row">\n <div class="col-md-12">\n <condition-builder element="any" serviceindex="item.channel" service="$triggers" form="forms.general"></condition-builder>\n </div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-12">\n <button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addCondition(\'Any\')">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_CONDITION\' | translate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Actions -->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <i class="icon-tag font-blue-hoki"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACTIONS\' | translate }}</span>:\n </div>\n </div>\n <div class="portlet-body">\n <div class="portlet light bordered" ng-repeat="action in item.Actions">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <span class="caption-subject">{{ \'APPLICATION_ACTIONS\' | translate }} #{{$index+1}}</span>\n </div>\n <div class="actions">\n <a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeAction($index)"><i class="fa fa-trash"></i></a>\n </div>\n </div>\n <div class="portlet-body">\n <div class="padding-bottom row">\n <!-- <div class="col-md-12"> -->\n <div class="form-group col-md-6" data-ng-class="{\'has-error\': (forms.general[\'action\'+$index].$touched || forms.general.$submitted) && forms.general[\'action\'+$index].$invalid}">\n <ui-select data-ng-model="action.action" theme="bootstrap" data-ng-change="resetActionData(action)" name="action{{$index}}" required>\n <ui-select-match placeholder="{{ \'APPLICATION_ACTION\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="tAction.value as tAction in $triggers.services[item.channel].actions | filter: $select.search">\n <div ng-bind-html="tAction.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <!-- <span class="help-block">\n {{ \'APPLICATION_ACTION\' | translate }}\n </span> -->\n <span data-ng-show="(forms.general[\'action\'+$index].$touched || forms.general.$submitted) && forms.general[\'action\'+$index].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div ng-switch="action.action">\n <action-builder-template ng-switch-when="template" element="action" form="forms.general"></action-builder-template>\n <action-builder-account-template ng-switch-when="accountTemplate" element="action" form="forms.general"></action-builder-account-template>\n <action-builder-integration ng-switch-when="integration" element="action" form="forms.general"></action-builder-integration>\n <action-builder-motion-bar ng-switch-when="motionbar" element="action" form="forms.general"></action-builder-motion-bar>\n <action-builder-jscripty ng-switch-when="jscripty" element="action" form="forms.general"></action-builder-jscripty>\n <action-builder-url-forward ng-switch-when="urlForward" element="action" form="forms.general"></action-builder-url-forward>\n <action-builder-close ng-switch-when="close" element="action" form="forms.general"></action-builder-close>\n <action-builder-forward ng-switch-when="forward" element="action" form="forms.general"></action-builder-forward>\n <action-builder-tag ng-switch-when="tag" element="action" form="forms.general"></action-builder-tag>\n <action-builder-http ng-switch-when="http" element="action" form="forms.general"></action-builder-http>\n <action-builder-email ng-switch-when="email" element="action" form="forms.general"></action-builder-email>\n <action-builder-account-email ng-switch-when="accountEmail" element="action" form="forms.general"></action-builder-account-email>\n <action-builder-account-sms ng-switch-when="accountSms" element="action" form="forms.general"></action-builder-account-sms>\n <action-builder-cm ng-switch-when="contactManager" element="action" form="forms.general"></action-builder-cm>\n <action-builder-web-popup ng-switch-when="webPopup" element="action" form="forms.general"></action-builder-web-popup>\n </div>\n <!-- </div> -->\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-12">\n <button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addAction()">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_ACTION\' | translate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- <div class="has-error" data-ng-show="forms.settings.$submitted && !item.All.length && !item.Any.length">\n <span class="help-block help-block-error form-control">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INSERT_AT_LEAST_ONE_CONDITION\' | translate}}.\n </span>\n </div> -->\n <div class="has-error" data-ng-show="forms.settings.$submitted && !item.Actions.length">\n <span class="help-block help-block-error form-control">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INSERT_AT_LEAST_ONE_ACTION\' | translate}}.\n </span>\n </div>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()" />\n </form>\n </wz-step>\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}" />\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END PORTLET-->\n</div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/trunk/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-link"></i>\n <a href="#">{{ \'APPLICATION_TRUNKS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-link font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_TRUNKS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <a class="btn green-jungle" href="/tools/trunks/wizard" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_TRUNK\' | translate }}\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/trunk/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-link"></i>\n <a href="/tools/trunks/list">{{ \'APPLICATION_TRUNKS\' | translate }}</a>\n <i data-ng-show="trunk" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="trunk">\n <a href="#">{{trunk.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/trunk.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{trunk.name}}\n </div>\n <p data-ng-if="trunk.active && trunk.registry && trunk.status">({{trunk.status}})</p>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.tools.trunks.view.settings\')}">\n <a data-ng-href="/tools/trunks/view/{{trunk.name}}/settings"><i class="icon-settings"></i> {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/trunk/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_TRUNK\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{ \'APPLICATION_ADVANCED\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{ \'APPLICATION_OTHER_FIELDS\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body" data-ng-init="getContexts();">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateTrunk()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="trunk.name" data-ng-pattern="settings.patternName" required readonly/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START ACTIVE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_ACTIVE\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="trunk.active"\n type="checkbox"\n name="auth"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-off-color="{{ activeSwitch.offColor }}"\n switch-on-color="{{ activeSwitch.onColor }}"\n switch-animate="{{ activeSwitch.animate }}"\n switch-size="{{ activeSwitch.size }}"\n switch-label="{{ activeSwitch.label }}"\n switch-icon="{{ activeSwitch.icon }}"\n switch-radio-off="{{ activeSwitch.radioOff }}"\n switch-label-width="{{ activeSwitch.labelWidth }}"\n switch-handle-width="{{ activeSwitch.handleWidth }}">\n </div>\n <!-- END ACTIVE -->\n <div class="row">\n\n <div class="col-md-6">\n\n <!-- START HOST -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.host.$touched || forms.general.$submitted) && forms.general.host.$invalid}">\n <label class="control-label">{{\'APPLICATION_HOST\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="host" placeholder="{{\'APPLICATION_HOST\' | translate}}" class="form-control" data-ng-model="trunk.host" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_HOST\' | translate }}\n </span>\n <span data-ng-show="(forms.general.host.$touched || forms.general.$submitted) && forms.general.host.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END HOST -->\n\n <!-- START SECRET -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.secret.$touched || forms.general.$submitted) && forms.general.secret.$invalid}">\n <label class="control-label">{{\'APPLICATION_SECRET\' | translate}}</label>\n <input type="password" name="secret" placeholder="{{\'APPLICATION_SECRET\' | translate}}" class="form-control" data-ng-model="trunk.secret">\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_SECRET\' | translate }}\n </span>\n <span data-ng-show="(forms.general.secret.$touched || forms.general.$submitted) && forms.general.secret.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SECRET -->\n\n <!-- START CONTEXT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.context.$touched || forms.general.$submitted) && forms.general.context.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONTEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="trunk.context" name="context" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="context.name as context in voiceContexts | filter: $select.search">\n <div ng-bind-html="context.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_VOICE_CONTEXT\' | translate }}\n </span>\n <span data-ng-show="(forms.general.context.$touched || forms.general.$submitted) && forms.general.context.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONTEXT -->\n\n <!-- START CALLERID -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.callerid.$touched || forms.general.$submitted) && forms.general.callerid.$invalid}">\n <label class="control-label">{{\'APPLICATION_CALLERID\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="callerid" pattern=\'^"[a-zA-Z0-9_.-]*" <[a-zA-Z0-9_.-]*>\' placeholder="{{\'APPLICATION_CALLERID\' | translate}}" class="form-control" data-ng-model="trunk.callerid"/>\n <span class="help-block">\n {{ \'DESCRIPTION_OUTBOUND_CALLERID\' | translate }} "name" <number>\n </span>\n <span data-ng-show="(forms.general.callerid.$touched || forms.general.$submitted) && forms.general.callerid.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CALLERID -->\n\n <!-- START TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.type.$touched || forms.general.$submitted) && forms.general.type.$invalid}">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="trunk.type" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in [\'user\',\'peer\',\'friend\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search | capitalize"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_TYPE\' | translate }}\n </span>\n <span data-ng-show="(forms.general.type.$touched || forms.general.$submitted) && forms.general.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TYPE -->\n\n <!-- START DTMFMODE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.dtmfmode.$touched || forms.general.$submitted) && forms.general.dtmfmode.$invalid}">\n <label class="control-label">{{\'APPLICATION_DTMFMODE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="trunk.dtmfmode" name="dtmfmode" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="item in [\'rfc2833\', \'info\', \'shortinfo\', \'inband\',\'auto\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_DTMFMODE\' | translate }}\n </span>\n <span data-ng-show="(forms.general.dtmfmode.$touched || forms.general.$submitted) && forms.general.dtmfmode.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DTMFMODE -->\n\n </div>\n\n <div class="col-md-6">\n\n <!-- START DEFAULT USER -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.$submitted && forms.general.defaultuser.$invalid}">\n <label class="control-label">{{\'APPLICATION_DEFAULT_USER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="defaultuser" placeholder="{{\'APPLICATION_DEFAULT_USER\' | translate}}" class="form-control" data-ng-model="trunk.defaultuser" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_DEFAULT_USER\' | translate }}\n </span>\n <span data-ng-show="forms.general.$submitted && (forms.general.defaultuser.$invalid)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DEFAULT USER -->\n\n <!-- START NAT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.nat.$touched || forms.general.$submitted) && forms.general.nat.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select multiple data-ng-model="trunk.nat" name="nat" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\', \'no\', \'never\', \'route\', \'force_rport\', \'comedia\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_NAT\' | translate }}\n </span>\n <span data-ng-show="(forms.general.nat.$touched || forms.general.$submitted) && forms.general.nat.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAT -->\n\n <!-- START QUALIFY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.qualify.$touched || forms.general.$submitted) && forms.general.qualify.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUALIFY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="trunk.qualify" name="qualify" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\',\'no\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search | capitalize"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_QUALIFY\' | translate }}\n </span>\n <span data-ng-show="(forms.general.qualify.$touched || forms.general.$submitted) && forms.general.qualify.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUALIFY -->\n\n <!-- START ALLOW -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.allow.$touched || forms.general.$submitted) && forms.general.allow.$invalid}">\n <label class="control-label">{{\'APPLICATION_ALLOW_CODEC\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select multiple data-ng-model="trunk.allow" name="allow" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="item in [\'g723\',\'gsm\',\'ulaw\',\'alaw\',\'g726\',\'g722\',\'g729\',\'ilbc\',\'opus\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_ALLOW_CODEC\' | translate }}\n </span>\n <span data-ng-show="(forms.general.allow.$touched || forms.general.$submitted) && forms.general.allow.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ALLOW -->\n\n <!-- START INSECURE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.insecure.$touched || forms.general.$submitted) && forms.general.insecure.$invalid}">\n <label class="control-label">{{\'APPLICATION_INSECURE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select multiple data-ng-model="trunk.insecure" name="insecure" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="item in [\'port\',\'invite\',\'very\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_INSECURE\' | translate }}\n </span>\n <span data-ng-show="(forms.general.insecure.$touched || forms.general.$submitted) && forms.general.insecure.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INSECURE -->\n\n <!-- START CALLLIMIT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.call_limit.$touched || forms.general.$submitted) && forms.general.call_limit.$invalid}">\n <label class="control-label">{{\'APPLICATION_CALLLIMIT\' | translate}}</label>\n <input type="number" min="0" name="call-limit" placeholder="{{\'APPLICATION_CALLLIMIT\' | translate}}" class="form-control" data-ng-model="trunk.call_limit"/>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_CALLLIMIT\' | translate }}\n </span>\n </div>\n <!-- END CALLLIMIT -->\n\n </div>\n </div>\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="trunk.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n <!-- ADVANCED TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.advanced" data-ng-submit="forms.advanced.$valid && updateTrunk()" novalidate>\n <div class="row">\n <div class="col-md-6">\n\n <!-- START REGISTRY -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_REGISTRY\' | translate}}</label>\n <input type="text" name="registry" placeholder="{{\'APPLICATION_REGISTRY\' | translate}}" class="form-control" data-ng-model="trunk.registry"/>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_REGISTRY\' | translate }}\n </span>\n </div>\n <!-- END REGISTRY -->\n\n <!-- START DIRECTMEDIA -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.directmedia.$touched || forms.advanced.$submitted) && forms.advanced.directmedia.$invalid}">\n <label class="control-label">{{\'APPLICATION_DIRECTMEDIA\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="trunk.directmedia" name="directmedia" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\', \'no\', \'nonat\', \'update\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search | capitalize"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_DIRECTMEDIA\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.directmedia.$touched || forms.advanced.$submitted) && forms.advanced.directmedia.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DIRECTMEDIA -->\n\n <!-- START CALLCOUNTER -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.callcounter.$touched || forms.advanced.$submitted) && forms.advanced.callcounter.$invalid}">\n <label class="control-label">{{\'APPLICATION_CALLCOUNTER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="trunk.callcounter" name="callcounter" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\',\'no\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search | capitalize"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_CALLCOUNTER\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.callcounter.$touched || forms.advanced.$submitted) && forms.advanced.callcounter.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CALLCOUNTER -->\n\n <!-- START FROMDOMAIN -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.advanced.$submitted && forms.advanced.fromdomain.$invalid}">\n <label class="control-label">{{\'APPLICATION_FROMDOMAIN\' | translate}}</label>\n <input type="text" name="fromdomain" placeholder="{{\'APPLICATION_FROMDOMAIN\' | translate}}" class="form-control" data-ng-model="trunk.fromdomain" />\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_FROMDOMAIN\' | translate }}\n </span>\n <span data-ng-show="forms.advanced.$submitted && (forms.advanced.fromdomain.$invalid)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FROMDOMAIN -->\n\n <!-- START FROMUSER -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.advanced.$submitted && forms.advanced.fromuser.$invalid}">\n <label class="control-label">{{\'APPLICATION_FROMUSER\' | translate}}</label>\n <input type="text" name="fromuser" placeholder="{{\'APPLICATION_FROMUSER\' | translate}}" class="form-control" data-ng-model="trunk.fromuser" />\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_FROMUSER\' | translate }}\n </span>\n <span data-ng-show="forms.advanced.$submitted && (forms.advanced.fromuser.$invalid)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FROMUSER -->\n\n </div>\n <div class="col-md-6">\n\n <!-- START OUTBOUNDPROXY -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.advanced.$submitted && forms.advanced.outboundproxy.$invalid}">\n <label class="control-label">{{\'APPLICATION_OUTBOUNDPROXY\' | translate}}</label>\n <input type="text" name="outboundproxy" placeholder="{{\'APPLICATION_OUTBOUNDPROXY\' | translate}}" class="form-control" data-ng-model="trunk.outboundproxy" />\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_OUTBOUNDPROXY\' | translate }}\n </span>\n <span data-ng-show="forms.advanced.$submitted && (forms.advanced.outboundproxy.$invalid)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OUTBOUNDPROXY -->\n\n <!-- START USEREQPHONE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.usereqphone.$touched || forms.advanced.$submitted) && forms.advanced.usereqphone.$invalid}">\n <label class="control-label">{{\'APPLICATION_USEREQPHONE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="trunk.usereqphone" name="usereqphone" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\',\'no\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search | capitalize"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_USEREQPHONE\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.usereqphone.$touched || forms.advanced.$submitted) && forms.advanced.usereqphone.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USEREQPHONE -->\n\n <!-- START TRUSTRPID -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.trustrpid.$touched || forms.advanced.$submitted) && forms.advanced.trustrpid.$invalid}">\n <label class="control-label">{{\'APPLICATION_TRUSTRPID\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="trunk.trustrpid" name="trustrpid" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\',\'no\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search | capitalize"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_TRUSTRPID\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.trustrpid.$touched || forms.advanced.$submitted) && forms.advanced.trustrpid.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TRUSTRPID -->\n\n <!-- START SENDRPID -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.sendrpid.$touched || forms.advanced.$submitted) && forms.advanced.sendrpid.$invalid}">\n <label class="control-label">{{\'APPLICATION_SENDRPID\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="trunk.sendrpid" name="sendrpid" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\',\'no\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search | capitalize"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_SENDRPID\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.sendrpid.$touched || forms.advanced.$submitted) && forms.advanced.sendrpid.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SENDRPID -->\n\n <!-- START ENCRYPTION -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.encryption.$touched || forms.advanced.$submitted) && forms.advanced.encryption.$invalid}">\n <label class="control-label">{{\'APPLICATION_ENCRYPTION\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="trunk.encryption" name="encryption" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\',\'no\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search | capitalize"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_ENCRYPTION\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.encryption.$touched || forms.advanced.$submitted) && forms.advanced.encryption.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ENCRYPTION -->\n\n <!-- START PORT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.port.$touched || forms.advanced.$submitted) && forms.advanced.port.$invalid}">\n <label class="control-label">{{\'APPLICATION_PORT\' | translate}}</label>\n <input type="number" min="0" name="port" placeholder="{{\'APPLICATION_PORT\' | translate}}" class="form-control" data-ng-model="trunk.port"/>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_PORT\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.port.$touched || forms.advanced.$submitted) && forms.advanced.port.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PORT -->\n\n <!-- START TRANSPORT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.transport.$touched || forms.advanced.$submitted) && forms.advanced.transport.$invalid}">\n <label class="control-label">{{\'APPLICATION_TRANSPORT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select multiple data-ng-model="trunk.transport" name="transport" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="item in [\'udp\',\'wss\',\'ws\',\'tcp\',\'tls\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_TRANSPORT\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.transport.$touched || forms.advanced.$submitted) && forms.advanced.transport.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TRANSPORT -->\n\n </div>\n </div>\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n <!-- START OTHER FIELDS TAB -->\n <div class="tab-pane" id="tab_1_3">\n <form name="forms.otherFields" data-ng-submit="forms.otherFields.$valid && updateTrunk()" novalidate>\n <div class="row">\n <div class="col-md-6">\n <!-- START OTHER FIELDS-->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_OTHER_FIELDS\' | translate}}</label>\n <textarea name="otherFields" placeholder="{{\'APPLICATION_OTHER_FIELDS\' | translate}}" class="form-control otherfields-col" data-ng-model="trunk.otherFields"></textarea>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_OTHER_FIELDS\' | translate }}\n </span>\n </div>\n <!-- END OTHER FIELDS -->\n </div>\n <div class="col-md-6">\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_EXAMPLE\' | translate}}</label>\n <div class="well">\n <div>host=dynamicp</div>\n <div>secret=********</div>\n <div>regcontext=tammari-internal</div>\n <div>regexten=1005</div>\n <div>dtmfmode=rfc2833</div>\n <div>insecure=invite,port</div>\n <div>canreinvite=yes</div>\n <div>nat=yes</div>\n <div>qualify=yes</div>\n <div>context=merus-sipphone</div>\n <div>pickupgroup=1</div>\n <div>callgroup=1</div>\n <div>mailbox=1000@default</div>\n </div>\n </div>\n </div>\n </div>\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n\n </div>\n <!-- END OTHER FIELDS TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'), +a.put("app/tools/trunk/wizard/wizard.html",'<div class="col-md-12" data-ng-init="initWizard()">\n <!-- BEGIN PAGE HEADER-->\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-link"></i>\n <a href="/tools/trunks/list">{{ \'APPLICATION_TRUNKS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-options"></i>\n <a href="#">{{ \'APPLICATION_WIZARD\' | translate }}</a>\n </li>\n </ul>\n </div>\n <!-- END PAGE HEADER-->\n\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-link font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_TRUNK\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_GENERAL\' | translate}}" canexit="exitValidation(forms.general.$valid)">\n <form name="forms.general" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.$submitted && forms.general.name.$invalid) || forms.general.name.$error.pattern}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" data-ng-pattern="settings.simplePatternName" required/>\n <span data-ng-show="forms.general.$submitted && forms.general.name.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START HOST -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.$submitted && forms.general.host.$invalid}">\n <label class="control-label">{{\'APPLICATION_HOST\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="host" placeholder="{{\'APPLICATION_HOST\' | translate}}" class="form-control" data-ng-model="item.host" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_HOST\' | translate }}\n </span>\n <span data-ng-show="forms.general.$submitted && forms.general.host.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END HOST -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.$submitted && forms.general.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_SECRET\' | translate}}</label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.secret"/>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_SECRET\' | translate }}\n </span>\n <span data-ng-show="forms.general.$submitted && forms.general.password.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START DEFAULT USER -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.$submitted && forms.general.defaultuser.$invalid}">\n <label class="control-label">{{\'APPLICATION_DEFAULT_USER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="defaultuser" placeholder="{{\'APPLICATION_DEFAULT\' | translate}} {{\'APPLICATION_USER\' | translate}}" class="form-control" data-ng-model="item.defaultuser" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_DEFAULT_USER\' | translate }}\n </span>\n <span data-ng-show="forms.general.$submitted && (forms.general.defaultuser.$invalid)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_PASSWORD\' | translate}}.\n </span>\n </div>\n <!-- END DEFAULT USER -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <button class="btn green-haze" type="submit" ng-click="next(true)">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_ADVANCED\' | translate}}" canexit="exitValidation(forms.advanced.$valid)">\n <form name="forms.advanced" novalidate>\n\n <!-- START REGISTRY -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_REGISTRY\' | translate}}</label>\n <input type="text" name="registry" placeholder="{{\'APPLICATION_REGISTRY\' | translate}}" class="form-control" data-ng-model="item.registry"/>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_REGISTRY\' | translate }}\n </span>\n </div>\n <!-- END REGISTRY -->\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <button class="btn green-haze" type="submit" ng-click="next()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END PORTLET-->\n</div>\n'),a.put("app/tools/variable/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_VARIABLE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/tools/variable/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-eye"></i>\n <a href="#">{{ \'APPLICATION_VARIABLES\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_VARIABLES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <button class="btn green-jungle " ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_VARIABLE\' | translate }}\n </button>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/variable/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getVariable()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-eye"></i>\n <a href="/tools/variables/list">{{ \'APPLICATION_VARIABLES\' | translate }}</a>\n <i data-ng-show="variable" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="variable">\n <a href="#">{{variable.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/variable.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{variable.name}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.tools.variables.view.settings\')}">\n <a data-ng-href="/tools/variables/view/{{variable.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/variable/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_VARIABLE\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateVariable()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="variable.name" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="variable.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/tools/yourdashboard/list/clone.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_CLONE_DASHBOARD\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="forms.dashboard" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.dashboard.name.$touched || forms.dashboard.$submitted) && forms.dashboard.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(forms.dashboard.name.$touched || forms.dashboard.$submitted) && forms.dashboard.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="forms.dashboard.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/tools/yourdashboard/list/create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_DASHBOARD\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="forms.dashboard" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.dashboard.name.$touched || forms.dashboard.$submitted) && forms.dashboard.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(forms.dashboard.name.$touched || forms.dashboard.$submitted) && forms.dashboard.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="forms.dashboard.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/tools/yourdashboard/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-tachometer"></i>\n <a href="/tools/yourdashboards/list">{{ \'APPLICATION_YOUR_DASHBOARDS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_YOUR_DASHBOARDS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <button class="btn green-jungle " ng-click="create()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_DASHBOARD\' | translate }}\n </button>\n </div>\n <!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> -->\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/yourdashboard/show/leaveEditedDashboard.modal.html",'<div class="modal-header" data-ng-init="getContacts()">\n <h3 class="modal-title">{{ \'APPLICATION_WARNING\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <p>{{\'MESSAGE_LEAVE_EDITED_PAGE\' | translate}}</p>\n</div>\n<div class="modal-footer">\n <button class="btn btn-danger" type="button" ng-click="close()">{{ \'APPLICATION_CONTINUE\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/tools/yourdashboard/show/show.html",'<div class="row" style="min-height: 466px;" id="yourDashboardView">\n <div class="col-md-12" ng-init="getDashboard()">\n <adf-dashboard\n data-ng-if="dashboard"\n name="{{dashboard.name}}"\n collapsible="{{dashboard.collapsible}}"\n maximizable="{{dashboard.maximizable}}"\n enableconfirmdelete="{{dashboard.enableconfirmdelete}}"\n structure="{{dashboard.structure}}"\n editable="{{dashboard.editable}}"\n adf-model="dashboard.model"/>\n </div>\n</div>\n'),a.put("app/tools/yourdashboard/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getDashboard()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-tachometer"></i>\n <a href="/tools/yourdashboards/list">{{ \'APPLICATION_YOUR_DASHBOARDS\' | translate }}</a>\n <i data-ng-show="dashboard" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="dashboard">\n <a href="#">{{dashboard.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/dashboard.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{dashboard.name}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.tools.yourdashboards.view.settings\')}">\n <a data-ng-href="/tools/yourdashboards/view/{{dashboard.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/yourdashboard/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_DASHBOARD\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateDashboard()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="dashboard.name" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START REFRESH_TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.timeout.$touched || forms.general.$submitted) && forms.general.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_REFRESH_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="5" name="name" placeholder="{{\'APPLICATION_REFRESH_TIMEOUT\' | translate}}" class="form-control" data-ng-model="dashboard.timeout" required/>\n <span data-ng-show="(forms.general.timeout.$touched || forms.general.$submitted) && forms.general.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END REFRESH_TIMEOUT -->\n\n <!-- START VISIBLE TO ADMIN -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_VISIBLE_TO_ADMIN\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="dashboard.admin"\n type="checkbox"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END VISIBLE TO ADMIN -->\n\n <!-- START VISIBLE TO USER -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_VISIBLE_TO_USER\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="dashboard.user"\n type="checkbox"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END VISIBLE TO USER -->\n\n <!-- START VISIBLE TO AGENT -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_VISIBLE_TO_AGENT\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="dashboard.agent"\n type="checkbox"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END VISIBLE TO AGENT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="dashboard.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/zendesk/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-heart"></i>\n <a href="/zendesk/list">{{ \'APPLICATION_ZENDESK\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-heart font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ZENDESK\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/zendesk/wizard" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ACCOUNT\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/zendesk/view/configuration/list/create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_CONFIGURATION\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.name.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.name.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START CHANNEL -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.channel.$touched || form.channel.$submitted) && form.channel.$invalid}">\n <label class="control-label">{{\'APPLICATION_CHANNEL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.channel" name="channel" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_CHANNEL\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="channel.value as channel in channels | filter: $select.search">\n <div data-ng-bind="channel.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.channel.$touched || form.channel.$submitted) && form.channel.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START CHANNEL -->\n\n <!-- START VOICE SUBTYPE -->\n <div data-ng-if="item.channel===\'voice\'" class="form-group" data-ng-class="{\'has-error\': (form.channel.$touched || form.channel.$submitted) && form.channel.$invalid}">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.type" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_TYPE\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="type in [\'Queue\',\'Outbound\'] | filter: $select.search">\n <div data-ng-bind="type | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.type.$touched || form.type.$submitted) && form.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START CHANNEL -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'), +a.put("app/zendesk/view/configuration/list/list.html",'<div ui-view class="profile-content">\n <div class="row">\n <div class="col-md-12">\n <div class="portlet light" data-ng-init="initView()">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_CONFIGURATIONS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="#" data-ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_CONFIGURATION\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/zendesk/view/configuration/view/view.html",'<div class="row" data-ng-init="initView();getConfiguration();getCustomVariables();getFields();getTags();">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_CONFIGURATION\' | translate}}: {{configurationName}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_SUBJECT\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_DESCRIPTION\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{\'APPLICATION_FIELDS\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_4" data-toggle="tab">{{\'APPLICATION_TAGS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- SUBJECT TAB -->\n <div class="tab-pane ui-padding active" id="tab_1_1">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">All following fields will be join by blank space:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItem(\'subject\')"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div id="subject-item-list" ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="subjectItem in subjectConfig">\n <div class="col-md-3">\n <ui-select ng-model="subjectItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeType(subjectItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in fieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-8" data-ng-if="subjectItem.type==\'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="subjectItem.content" data-ng-change="updateField(subjectItem)">\n </div>\n </div>\n <div class="col-md-8" data-ng-if="subjectItem.type==\'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="subjectItem.variableName" data-ng-change="updateField(subjectItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices group-by="groupVariableByGroup" repeat="variable.name as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-8" data-ng-if="subjectItem.type==\'customVariable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="subjectItem.VariableId" data-ng-change="updateField(subjectItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in customVariables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(subjectItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END SUBJECT TAB -->\n <!-- DESCRIPTION TAB -->\n <div class="tab-pane ui-padding" id="tab_1_2">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">All following fields will be join by new line:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItem(\'description\')"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div id="description-item-list" ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="descriptionItem in descriptionConfig">\n <div class="col-md-2">\n <ui-select ng-model="descriptionItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeDescType(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in descFieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-9" data-ng-if="descriptionItem.type==\'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="descriptionItem.content" data-ng-change="updateField(descriptionItem)">\n </div>\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\'">\n <input type="text" class="form-control" placeholder="Key" data-ng-model="descriptionItem.key" data-ng-change="updateField(descriptionItem)">\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\'">\n <ui-select ng-model="descriptionItem.keyType" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeDescType(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in fieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\' && descriptionItem.keyType==\'string\'">\n <input type="text" class="form-control" placeholder="Value" data-ng-model="descriptionItem.keyContent" data-ng-change="updateField(descriptionItem)">\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\' && descriptionItem.keyType==\'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="descriptionItem.variableName" data-ng-change="updateField(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices group-by="groupVariableByGroup" repeat="variable.name as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\' && descriptionItem.keyType==\'customVariable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="descriptionItem.VariableId" data-ng-change="updateField(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in customVariables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(descriptionItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END DESCRIPTION TAB -->\n <!-- FIELDS TAB -->\n <div class="tab-pane ui-padding" id="tab_1_3">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">Add how to fill the fields present in your account:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItem(\'field\')"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div id="field-item-list" ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="fieldItem in fieldConfig">\n <div class="col-md-3">\n <ui-select ng-model="fieldItem.idField" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeFieldType(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.id as item in accountFields | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-8" data-ng-if="getSystemFieldOptions(fieldItem.idField)">\n <div class="form-group">\n <ui-select ng-model="fieldItem.content" theme="bootstrap" ng-disabled="disabled" data-ng-change="updateField(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="item.value as item in getSystemFieldOptions(fieldItem.idField) | filter: $select.search">\n <div ng-bind-html="item.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField)">\n <div class="form-group">\n <ui-select ng-model="fieldItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeType(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in fieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search | ucfirst"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="fieldItem.content" data-ng-change="updateField(fieldItem)">\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="fieldItem.variableName" data-ng-change="updateField(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices group-by="groupVariableByGroup" repeat="variable.name as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'customVariable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="fieldItem.VariableId" data-ng-change="updateField(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in customVariables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(fieldItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END FIELDS TAB -->\n <!-- TAG TAB -->\n <div class="tab-pane ui-padding" id="tab_1_4">\n <div class="row">\n <div class="col-md-12">\n <span class="caption-subject">Select tags that you want add in the ticket:</span>\n </div>\n </div>\n <hr>\n <form name="forms.tags" data-ng-submit="updateTags()" novalidate>\n <!-- TAG -->\n <div class="form-group">\n <ui-select multiple data-ng-model="selectedTags.tags" theme="bootstrap" name="tags" ng-disabled="disabled">\n <ui-select-match placeholder="{{ \'APPLICATION_TAGS\' | translate }}">{{$item.name}}</ui-select-match>\n <ui-select-choices repeat="tag.id as tag in tags | filter: $select.search">\n {{tag.name}}\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END TAG -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END TAG TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/zendesk/view/view.account.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACCOUNT\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERALS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.formSetting" data-ng-submit="forms.formSetting.$valid && updateItem()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.name" required/>\n <span data-ng-show="forms.formSetting.name.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="account.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formSetting.type.$touched || forms.formSetting.$submitted) && forms.formSetting.type.$invalid}">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}</label>\n <ui-select data-ng-model="account.type" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_TYPE\' | translate}}">{{\'APPLICATION_\'+$select.selected | uppercase | translate}}</ui-select-match>\n <ui-select-choices repeat="type in [\'integrationTab\', \'newTab\'] | filter: $select.search">\n <div data-ng-bind="\'APPLICATION_\'+type | uppercase | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.formSetting.type.$invalid && (forms.formSetting.type.$touched || forms.formSetting.$submitted)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START TYPE -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.username" required/>\n <span data-ng-show="forms.formSetting.username.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START REMOTE ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.remoteUri.$invalid}">\n <label class="control-label">{{\'APPLICATION_URI\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remoteUri" placeholder="{{\'APPLICATION_URI\' | translate}}" class="form-control" data-ng-model="account.remoteUri" required />\n <span data-ng-show="forms.formSetting.remoteUri.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START AUTH TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.authType.$invalid}">\n <label class="control-label">{{\'APPLICATION_AUTHENTICATION_TYPE\' | translate}}</label>\n <ui-select data-ng-model="account.authType" name="authType" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_AUTHENTICATION_TYPE\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="type in [\'password\', \'token\'] | filter: $select.search">\n <div data-ng-bind="type | capitalize | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.formSetting.authType.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START AUTH TYPE -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.password.$invalid}" ng-slide-down="account.authType == \'password\'" lazy-render duration="1">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.password" required/>\n <span data-ng-show="forms.formSetting.password.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START TOKEN -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.token.$invalid}" ng-slide-down="account.authType == \'token\'" lazy-render duration="1">\n <label class="control-label">{{\'APPLICATION_TOKEN\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="token" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.token" required/>\n <span data-ng-show="forms.formSetting.token.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TOKEN -->\n\n <!-- START SERVER URL -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.serverUrl.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}}</label>\n <input type="url" name="serverUrl" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="account.serverUrl"/>\n <span class="help-block">\n {{\'DESCRIPTION_SERVER_URL\' | translate}}.\n </span>\n <span class="help-block help-block-info">\n {{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n </span>\n </div>\n <!-- END SERVER URL -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/zendesk/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-heart"></i>\n <a href="/zendesk/list">{{ \'APPLICATION_ZENDESK\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <a href="#">{{account.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img src="assets/images/media/zendesk.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{account.name}}\n </div>\n <div class="profile-usertitle-job">\n {{account.remoteUri}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.zendesk.view.account\')}">\n <a ng-href="/zendesk/view/{{account.id}}/account">\n <i class="icon-user"></i>\n {{ \'APPLICATION_ACCOUNT\' | translate }} </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.zendesk.view.configurations\') || $state.is(\'main.zendesk.view.configuration\')}">\n <a ng-href="/zendesk/view/{{account.id}}/configurations/list">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_CONFIGURATIONS\' | translate }} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/zendesk/wizard/wizard.html",'<!-- BEGIN PAGE HEADER-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-heart"></i>\n <a href="/zendesk/list">{{ \'APPLICATION_ZENDESK\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n<!-- END PAGE HEADER-->\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initWizard()">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACCOUNT\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_ACCOUNT_INFO\' | translate}}" canexit="exitValidation(forms.formSetting.$valid)">\n <form name="forms.formSetting" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="forms.formSetting.name.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formSetting.type.$touched || forms.formSetting.$submitted) && forms.formSetting.type.$invalid}">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}</label>\n <ui-select data-ng-model="item.type" name="type" theme="bootstrap" data-ng-init="item.type = \'integrationTab\'" required>\n <ui-select-match placeholder="{{\'APPLICATION_TYPE\' | translate}}">{{\'APPLICATION_\'+$select.selected | uppercase | translate}}</ui-select-match>\n <ui-select-choices repeat="type in [\'integrationTab\', \'newTab\'] | filter: $select.search">\n <div data-ng-bind="\'APPLICATION_\'+type | uppercase | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.formSetting.type.$invalid && (forms.formSetting.type.$touched || forms.formSetting.$submitted)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START TYPE -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.username" required ng-remote-validate="/api/zendesk/accounts/validate/username"/>\n <span data-ng-show="forms.formSetting.username.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formSetting.username.$touched || forms.formSetting.$submitted) && forms.formSetting.username.$error.ngRemoteValidate" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_EXIST_USERNAME\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START REMOTE ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.remoteUri.$invalid}">\n <label class="control-label">{{\'APPLICATION_URI\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remoteUri" placeholder="{{\'APPLICATION_URI\' | translate}}" class="form-control" data-ng-model="item.remoteUri" required ng-remote-validate="/api/zendesk/accounts/validate/remoteUri"/>\n <span data-ng-show="forms.formSetting.remoteUri.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formSetting.remoteUri.$touched || forms.formSetting.$submitted) && forms.formSetting.remoteUri.$error.ngRemoteValidate" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_EXIST_DOMAIN\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START AUTH TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.authType.$invalid}">\n <label class="control-label">{{\'APPLICATION_AUTHENTICATION_TYPE\' | translate}}</label>\n <ui-select data-ng-model="item.authType" name="authType" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_AUTHENTICATION_TYPE\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="type in [\'password\', \'token\'] | filter: $select.search">\n <div data-ng-bind="type | capitalize | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.formSetting.authType.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START AUTH TYPE -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.password.$invalid}" ng-slide-down="item.authType == \'password\'" lazy-render duration="1">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.password" required/>\n <span data-ng-show="forms.formSetting.password.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START TOKEN -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.token.$invalid}" ng-slide-down="item.authType == \'token\'" lazy-render duration="1">\n <label class="control-label">{{\'APPLICATION_TOKEN\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="token" placeholder="{{\'APPLICATION_TOKEN\' | translate}}" class="form-control" data-ng-model="item.token" required/>\n <span data-ng-show="forms.formSetting.token.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TOKEN -->\n\n <!-- START SERVER URL -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.serverUrl.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}}</label>\n <input type="url" name="serverUrl" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.serverUrl"/>\n <span class="help-block">\n {{\'DESCRIPTION_SERVER_URL\' | translate}}.\n </span>\n <span class="help-block help-block-info">\n {{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n </span>\n </div>\n <!-- END SERVER URL -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" data-ng-click="next()"/>\n\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n\n </wizard>\n\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), +a.put("components/directives/action/accountEmail/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_ACCOUNT\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in accounts.rows | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data6\'+randomName].$touched || form.$submitted) && form[\'data6\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data6" name="data6{{randomName}}" theme="bootstrap">\n <ui-select-match allow-clear placeholder="{{\'APPLICATION_TEMPLATE\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data6\'+randomName].$touched || form.$submitted) && form[\'data6\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <input type="text" ng-model="element.data2" name="data2{{randomName}}" class="form-control" placeholder="{{\'APPLICATION_TO\' | translate}}" required/>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data3\'+randomName].$touched || form.$submitted) && form[\'data3\'+randomName].$invalid}">\n <input type="text" ng-model="element.data3" name="data3{{randomName}}" class="form-control" placeholder="{{\'APPLICATION_CC\' | translate}}"/>\n <span data-ng-show="(form[\'data3\'+randomName].$touched || form.$submitted) && form[\'data3\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName && !element.data6" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data4\'+randomName].$touched || form.$submitted) && form[\'data4\'+randomName].$invalid}">\n <input type="text" ng-model="element.data4" name="data4{{randomName}}" class="form-control" placeholder="{{\'APPLICATION_SUBJECT\' | translate}}"/>\n <span data-ng-show="(form[\'data4\'+randomName].$touched || form.$submitted) && form[\'data4\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName" class="form-group col-md-12" data-ng-class="{\'has-error\': (form[\'data5\'+randomName].$touched || form.$submitted) && form[\'data5\'+randomName].$invalid}">\n <textarea rows="10" ng-model="element.data5" name="data5{{randomName}}" class="form-control" placeholder="{{\'APPLICATION_TEXT\' | translate}}" data-ng-required="!element.data6"></textarea>\n <span data-ng-show="(form[\'data5\'+randomName].$touched || form.$submitted) && form[\'data5\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/directives/action/accountSms/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_ACCOUNT\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in accounts.rows | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <input type="text" ng-model="element.data2" name="data2{{randomName}}" class="form-control" placeholder="{{\'APPLICATION_TO\' | translate}}" required/>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName" class="form-group col-md-12" data-ng-class="{\'has-error\': (form[\'data3\'+randomName].$touched || form.$submitted) && form[\'data3\'+randomName].$invalid}">\n <textarea rows="10" ng-model="element.data3" name="data3{{randomName}}" class="form-control" placeholder="{{\'APPLICATION_TEXT\' | translate}}"></textarea>\n <span data-ng-show="(form[\'data3\'+randomName].$touched || form.$submitted) && form[\'data3\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/directives/action/accountTemplate/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_ACCOUNT\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in accounts.rows | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data2" name="data2{{randomName}}" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_TEMPLATE\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates.rows | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data3\'+randomName].$touched || form.$submitted) && form[\'data3\'+randomName].$invalid}">\n <input type="text" ng-model="element.data3" name="data3{{randomName}}" class="form-control" placeholder="{{\'APPLICATION_TO\' | translate}}" required/>\n <span data-ng-show="(form[\'data3\'+randomName].$touched || form.$submitted) && form[\'data3\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/directives/action/close/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <input type="text" ng-model="element.data1" name="data1{{randomName}}" class="form-control" placeholder="{{ \'APPLICATION_DISPOSITION\' | translate }}"/>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/directives/action/cm/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" on-select="element.data2 = element.data1 ? element.data2 : false">\n <ui-select-match allow-clear>{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="list.id as list in lists | filter: $select.search">\n <div ng-bind-html="list.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName && element.data1" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <input\n bs-switch\n class="form-control"\n ng-init="element.data2 = element.data1 && element.data2 == \'1\' ? true : false"\n ng-model="element.data2"\n type="checkbox"\n name="auth"\n switch-active="{{ switch.isActive }}"\n switch-on-text="{{ switch.onText }}"\n switch-off-text="{{ switch.offText }}"\n switch-on-color="{{ switch.onColor }}"\n switch-off-color="{{ switch.offColor }}"\n switch-animate="{{ switch.animate }}"\n switch-size="{{ switch.size }}"\n switch-label="{{ switch.label }}"\n switch-icon="{{ switch.icon }}"\n switch-radio-off="{{ switch.radioOff }}"\n switch-label-width="{{ switch.labelWidth }}"\n switch-handle-width="{{ switch.handleWidth }}">\n <span class="help-block">\n {{\'APPLICATION_AUTO_CREATE\' | translate}}\n </span>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/directives/action/email/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data5\'+randomName].$touched || form.$submitted) && form[\'data5\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data5" name="data5{{randomName}}" theme="bootstrap">\n <ui-select-match allow-clear placeholder="{{\'APPLICATION_TEMPLATE\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data5\'+randomName].$touched || form.$submitted) && form[\'data5\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <input type="text" ng-model="element.data1" name="data1{{randomName}}" class="form-control" placeholder="{{\'APPLICATION_TO\' | translate}}" required/>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <input type="text" ng-model="element.data2" name="data2{{randomName}}" class="form-control" placeholder="{{\'APPLICATION_CC\' | translate}}"/>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName && !element.data5" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data3\'+randomName].$touched || form.$submitted) && form[\'data3\'+randomName].$invalid}">\n <input type="text" ng-model="element.data3" name="data3{{randomName}}" class="form-control" placeholder="{{\'APPLICATION_SUBJECT\' | translate}}"/>\n <span data-ng-show="(form[\'data3\'+randomName].$touched || form.$submitted) && form[\'data3\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName" class="form-group col-md-12" data-ng-class="{\'has-error\': (form[\'data4\'+randomName].$touched || form.$submitted) && form[\'data4\'+randomName].$invalid}">\n <textarea rows="10" ng-model="element.data4" name="data4{{randomName}}" class="form-control" placeholder="{{\'APPLICATION_TEXT\' | translate}}" data-ng-required="!element.data5"></textarea>\n <span data-ng-show="(form[\'data4\'+randomName].$touched || form.$submitted) && form[\'data4\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/directives/action/forward/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <input type="text" ng-model="element.data1" name="data1{{randomName}}" class="form-control" placeholder="{{ \'APPLICATION_TO\' | translate }}" required/>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/directives/action/http/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="method in methods | filter: $select.search">\n <div ng-bind-html="method | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <input type="text" ng-model="element.data2" name="data2{{randomName}}" class="form-control" placeholder="URL" required/>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/directives/action/integration/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" data-ng-change="changeIntegration()" required>\n <ui-select-match placeholder="{{ \'APPLICATION_INTEGRATION\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="integration.state as integration in integrations | filter: $select.search">\n <div ng-bind-html="integration.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{\'APPLICATION_INTEGRATION\' | translate}}\n </span>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div class="form-group col-md-6" data-ng-if="element.data1 && accounts && randomName" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data2" name="data2{{randomName}}" theme="bootstrap" data-ng-change="changeAccount();" required>\n <ui-select-match placeholder="{{\'APPLICATION_ACCOUNT\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in accounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{\'APPLICATION_ACCOUNT\' | translate}}\n </span>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div class="form-group col-md-6" data-ng-if="element.data2 && configurations && randomName" data-ng-class="{\'has-error\': (form[\'data3\'+randomName].$touched || form.$submitted) && form[\'data3\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data3" name="data3{{randomName}}" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_CONFIGURATION\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="config.id as config in configurations | filter: $select.search">\n <div ng-bind-html="config.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{\'APPLICATION_CONFIGURATION\' | translate}}\n </span>\n <span data-ng-show="(form[\'data3\'+randomName].$touched || form.$submitted) && form[\'data3\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/directives/action/jscripty/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required>\n <ui-select-match>{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="project.id as project in projects | filter: $select.search">\n <div ng-bind-html="project.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/directives/action/motionbar/actionBuilder.html",'<!-- data1: 0 POPUP, 1 URL, 2 WINAPP -->\n<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required data-ng-change="changeMode();">\n <ui-select-match placeholder="{{ \'APPLICATION_TYPE\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="motionAction.value as motionAction in motionActions | filter: $select.search">\n <div ng-bind-html="motionAction.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'APPLICATION_TYPE\' | translate }}\n </span>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<!-- data1:0 data2:Template -->\n<div data-ng-if="randomName && element.data1==0" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data2" name="data2{{randomName}}" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_TEMPLATE\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'APPLICATION_TEMPLATE\' | translate }}\n </span>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<!-- data1:1 data2:URL -->\n<div data-ng-if="randomName && element.data1==1" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <input type="text" ng-model="element.data2" name="data2{{randomName}}" class="form-control" required placeholder="{{ \'APPLICATION_URL\' | translate }}"/>\n <span class="help-block">\n {{ \'APPLICATION_URL\' | translate }}\n </span>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<!-- data1:2 data2:Application data3:Arguments -->\n<div data-ng-if="randomName && element.data1==2" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <input type="text" ng-model="element.data2" name="data2{{randomName}}" class="form-control" required placeholder="{{ \'APPLICATION_APPLICATION\' | translate }}"/>\n <span class="help-block">\n {{ \'APPLICATION_APPLICATION\' | translate }}\n </span>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div data-ng-if="randomName && element.data1==2" class="form-group col-md-6">\n <input type="text" ng-model="element.data3" name="data3{{randomName}}" class="form-control" placeholder="{{ \'APPLICATION_ARGUMENTS\' | translate }}"/>\n <span class="help-block">\n {{ \'APPLICATION_ARGUMENTS\' | translate }}\n </span>\n</div>\n'),a.put("components/directives/action/status/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required>\n <ui-select-match>{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="status.value as status in states | filter: $select.search">\n <div ng-bind-html="status.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/directives/action/tag/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select multiple data-ng-model="data.tags" name="data1{{randomName}}" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_TAG\' | translate}}">{{$item.name}}</ui-select-match>\n <ui-select-choices repeat="tag.name as tag in tags | filter:$select.search" class="">\n {{tag.name}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/directives/action/template/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_TEMPLATE\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <input type="text" ng-model="element.data2" name="data2{{randomName}}" class="form-control" placeholder="{{\'APPLICATION_TO\' | translate}}" required/>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/directives/action/urlforward/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_TYPE\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{\'APPLICATION_TYPE\' | translate}}\n </span>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div class="form-group col-md-12" data-ng-if="element.data1 && randomName" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <input type="url" ng-model="element.data2" placeholder="{{ \'APPLICATION_URL\' | translate }}" name="data2{{randomName}}" class="form-control" required/>\n <span class="help-block">\n {{\'APPLICATION_URL\' | translate}}\n </span>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/directives/action/webPopup/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data2" name="data2{{randomName}}" theme="bootstrap" on-select="typeChange()" required>\n <ui-select-match placeholder="{{ \'APPLICATION_TYPE\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="type in [\'motion\',\'browser\'] | filter: $select.search">\n <div ng-bind-html="type | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div data-ng-if="randomName && element.data2 == \'motion\'" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_TEMPLATE\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'APPLICATION_TEMPLATE\' | translate }}\n </span>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div class="form-group col-md-12" data-ng-if="randomName && element.data2 == \'browser\'" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <input type="url" ng-model="element.data1" placeholder="{{ \'APPLICATION_URL\' | translate }}" name="data1{{randomName}}" class="form-control" required/>\n <span class="help-block">\n {{\'APPLICATION_URL\' | translate}}\n </span>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"), +a.put("components/directives/condition/conditionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-4" data-ng-class="{\'has-error\': (form[\'field\'+randomName].$touched || form.$submitted) && form[\'field\'+randomName].$invalid}">\n <ui-select data-ng-model="element.field" name="field{{randomName}}" theme="bootstrap" data-ng-change="checkCondition(element.field)" required>\n <ui-select-match>{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="condition.value as condition in service.services[serviceindex].conditions | filter: $select.search">\n <div ng-bind-html="condition.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'field\'+randomName].$touched || form.$submitted) && form[\'field\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div data-ng-if="randomName && element.field" class="form-group col-md-4" data-ng-class="{\'has-error\': (form[\'operator\'+randomName].$touched || form.$submitted) && form[\'operator\'+randomName].$invalid}">\n <ui-select data-ng-model="element.operator" name="operator{{randomName}}" theme="bootstrap" required>\n <ui-select-match>{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="operator.value as operator in _.find(service.services[serviceindex].conditions,{value:element.field}).operators | filter: $select.search">\n <div ng-bind-html="operator.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'operator\'+randomName].$touched || form.$submitted) && form[\'operator\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div class="col-md-4" data-ng-if="elementType === \'input\' && randomName && element.field" data-ng-class="{\'has-error\': (form[\'value\'+randomName].$touched || form.$submitted) && form[\'value\'+randomName].$invalid}">\n <input type="text" ng-model="element.value" class="form-control" name="value{{randomName}}" required/>\n <span data-ng-show="(form[\'value\'+randomName].$touched || form.$submitted) && form[\'value\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div class="form-group col-md-4" data-ng-if="elementType === \'select\' && randomName && element.field" data-ng-class="{\'has-error\': (form[\'value\'+randomName].$touched || form.$submitted) && form[\'value\'+randomName].$invalid}">\n <ui-select data-ng-model="element.value" name="value{{randomName}}" theme="bootstrap" required>\n <ui-select-match>{{ translateName ? (\'APPLICATION_TRIGGER_\'+$select.selected.name | uppercase | translate) : $select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="value.value as value in values | filter: $select.search">\n <div ng-bind-html="(translateName ? (\'APPLICATION_TRIGGER_\'+value.name | uppercase | translate) : value.name) | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'value\'+randomName].$touched || form.$submitted) && form[\'value\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/factories/xNotificationLicense/xNotificationLicense.html",'<div class="ui-notification alert alert-block" ng-class="class" style="width: 410px;">\n <h4 class="alert-heading">\n <i class="{{icon}}"></i> {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_YOUR_LICENSE_IS_GOING_TO_EXPIRE\' | translate}}! <a ng-click="more()" style="color: blue;">More.</a>\n </h4>\n</div>\n'),a.put("components/footer/footer.html",'<!-- BEGIN FOOTER -->\n<div class="page-footer" data-ng-init="initFooter()">\n <div class="page-footer-inner">\n xCALLY Motion v. {{info.version}} | 2016 - {{year + 1}} © Powered by Xenialab <ng-bind-html data-ng-if="license.custom && !settings.defaultFooterWhiteLabel && settings.footerWhiteLabel" ng-bind-html="\'| \'+settings.footerWhiteLabel"></ng-bind-html>\n </div>\n <div class="scroll-to-top">\n <i class="icon-arrow-up"></i>\n </div>\n</div>\n<!-- END FOOTER -->\n'),a.put("components/header/header.html",'<!-- BEGIN HEADER INNER -->\n<div class="page-header-inner" data-ng-init="initHeader()">\n <!-- BEGIN LOGO -->\n <div class="page-logo">\n <a href="/">\n <img ng-src="api/settings/logo/main" alt="logo" class="logo-default custom-logo" onError="this.onerror=null"/>\n </a>\n <div class="menu-toggler sidebar-toggler" data-ng-click="toggleSidebar()"></div>\n </div>\n\n <!-- END LOGO -->\n <!-- BEGIN HEADER SEARCH BOX -->\n <!-- DOC: Apply "search-form-expanded" right after the "search-form" class to have half expanded search box -->\n <form ng-repeat="call in activeCalls | limitTo:2" class="search-form search-form-expanded">\n <div class="input-group">\n <input type="text" class="form-control" value="{{call.calleridnum}}" readonly>\n <span class="input-group-btn">\n <a href="javascript:;" class="btn submit inactive-link"><i class="icon-earphones-alt"></i></a>\n </span>\n </div>\n </form>\n <!-- END HEADER SEARCH BOX -->\n <!-- BEGIN RESPONSIVE MENU TOGGLER -->\n <a href="javascript:;" class="menu-toggler responsive-toggler" data-toggle="collapse" data-target=".navbar-collapse"></a>\n <!-- END RESPONSIVE MENU TOGGLER -->\n <!-- BEGIN TOP NAVIGATION MENU -->\n <div class="top-menu">\n <ul class="nav navbar-nav pull-right">\n <!-- DOC: Apply "dropdown-dark" class after below "dropdown-extended" to change the dropdown styte -->\n\n <!-- BEGIN USER LOGIN DROPDOWN -->\n <!-- DOC: Apply "dropdown-dark" class after below "dropdown-extended" to change the dropdown styte -->\n <li class="dropdown dropdown-user">\n <a href="#" class="dropdown-toggle" dropdown-menu-hover data-toggle="dropdown" data-close-others="true">\n <img class="img-circle" data-ng-src="api/users/avatar/{{getCurrentUser().userpic || \'unknown_avatar\'}}" alt="...">\n <span class="username username-hide-on-mobile">\n {{ getCurrentUser().fullname }}\n </span>\n <i class="fa fa-angle-down"></i>\n </a>\n <ul class="dropdown-menu dropdown-menu-default">\n <li>\n <a ng-href=" {{getCurrentUser().role === \'agent\' ? \'/staff/agents/view/\'+getCurrentUser().id+\'/account\' : \'/staff/users/view/\'+getCurrentUser().id+\'/account\'}}">\n <i class="icon-key"></i>{{\'APPLICATION_CHANGE_PASSWORD\' | translate}}\n </a>\n </li>\n <li data-ng-click="logout()">\n <a href="#">\n <i class="icon-logout"></i> Log Out\n </a>\n </li>\n </ul>\n </li>\n <!-- END USER LOGIN DROPDOWN -->\n <!-- BEGIN QUICK SIDEBAR TOGGLER -->\n <!-- DOC: Apply "dropdown-dark" class after below "dropdown-extended" to change the dropdown styte -->\n <!-- <li class="dropdown dropdown-quick-sidebar-toggler" data-ng-click="toggleQuickSidebar()">\n <a href="#" class="dropdown-toggle">\n <i class="icon-logout"></i>\n </a>\n </li> -->\n <!-- END QUICK SIDEBAR TOGGLER -->\n</ul>\n<ul class="nav navbar-nav pull-right" data-ng-if="getCurrentUser().role == \'admin\'">\n <li class="dropdown dropdown-user">\n <a href="/setting/license/view" class="dropdown-toggle" dropdown-menu-hover data-toggle="dropdown" data-close-others="true">\n <i class="icon-info"></i> <span class="username username-hide-on-mobile right-margin-10">{{\'APPLICATION_LICENSE_STATUS\' | translate}}</span>\n </a>\n </li>\n</ul>\n<ul class="nav navbar-nav pull-right">\n <!-- BEGIN LANGUAGE BAR -->\n <li class="dropdown dropdown-language">\n <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">\n <img ng-src="assets/images/flags/{{ language }}.png">\n <i class="fa fa-angle-down"></i>\n </a>\n <ul class="dropdown-menu dropdown-menu-default scrollable-menu">\n <li>\n <a href="#" ng-click="changeLanguage(\'ar\')">\n <img alt="" src="assets/images/flags/ar.png"> {{\'APPLICATION_ARABIC\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'da\')">\n <img alt="" src="assets/images/flags/da.png"> {{\'APPLICATION_DANISH\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'de\')">\n <img alt="" src="assets/images/flags/de.png"> {{\'APPLICATION_GERMAN\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'en_EN\')">\n <img alt="" src="assets/images/flags/en_EN.png"> {{\'APPLICATION_ENGLISH\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'es\')">\n <img alt="" src="assets/images/flags/es.png"> {{\'APPLICATION_SPANISH\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'fi\')">\n <img alt="" src="assets/images/flags/fi.png"> {{\'APPLICATION_FINNISH\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'fr\')">\n <img alt="" src="assets/images/flags/fr.png"> {{\'APPLICATION_FRENCH\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'hi\')">\n <img alt="" src="assets/images/flags/hi.png"> {{\'APPLICATION_HINDI\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'it\')">\n <img alt="" src="assets/images/flags/it.png"> {{\'APPLICATION_ITALIAN\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'ja\')">\n <img alt="" src="assets/images/flags/ja.png"> {{\'APPLICATION_JAPANASE\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'ko\')">\n <img alt="" src="assets/images/flags/ko.png"> {{\'APPLICATION_KOREAN\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'nl\')">\n <img alt="" src="assets/images/flags/nl.png"> {{\'APPLICATION_DUTCH\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'no\')">\n <img alt="" src="assets/images/flags/no.png"> {{\'APPLICATION_NORWEGIAN\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'pt-BR\')">\n <img alt="" src="assets/images/flags/pt-BR.png"> {{\'APPLICATION_PORTUGUESE_BRAZIL\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'pt-PT\')">\n <img alt="" src="assets/images/flags/pt-PT.png"> {{\'APPLICATION_PORTUGUESE_PORTUGAL\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'ru\')">\n <img alt="" src="assets/images/flags/ru.png"> {{\'APPLICATION_RUSSIAN\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'sv\')">\n <img alt="" src="assets/images/flags/sv.png"> {{\'APPLICATION_SWEDISH\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'tr\')">\n <img alt="" src="assets/images/flags/tr.png"> {{\'APPLICATION_TURKISH\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'fa\')">\n <img alt="" src="assets/images/flags/fa.png"> {{\'APPLICATION_PERSIAN\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'zh-CN\')">\n <img alt="" src="assets/images/flags/zh-CN.png"> {{\'APPLICATION_CHINESE_SIMPLIFIED\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'zh-TW\')">\n <img alt="" src="assets/images/flags/zh-TW.png"> {{\'APPLICATION_CHINESE_TRADITIONAL\' | translate}}\n </a>\n </li>\n </ul>\n </li>\n <!-- END LANGUAGE BAR -->\n</ul>\n<ul data-ng-if="getCurrentUser().role === \'agent\' && headerAgent.showWebBar" class="nav navbar-nav pull-right header-ul-with-separator padding-side-7" data-ng-class="{\'paused-header\':headerAgent.voicePause || headerAgent.mailPause || headerAgent.chatPause || headerAgent.faxPause || headerAgent.smsPause || headerAgent.openchannelPause}">\n <li class="dropdown dropdown-user" >\n <a href="#" class="dropdown-toggle custom-header-a" dropdown-menu-hover data-toggle="dropdown" data-close-others="true" style="cursor:default;">\n <div>{{(headerAgent.voicePause || headerAgent.mailPause || headerAgent.chatPause || headerAgent.faxPause || headerAgent.smsPause || headerAgent.openchannelPause) ? ((!headerAgent.voicePause || !headerAgent.mailPause || !headerAgent.chatPause || !headerAgent.faxPause || !headerAgent.smsPause || !headerAgent.openchannelPause) ? \'(\'+(\'APPLICATION_PARTIAL\' | translate) + \') \'+headerAgent.pauseType : headerAgent.pauseType) : \'READY\'}}</div>\n <div data-ng-if="headerAgent.voicePause || headerAgent.mailPause || headerAgent.chatPause || headerAgent.faxPause || headerAgent.smsPause || headerAgent.openchannelPause"><css-timer start-time="headerAgent.lastPauseAt"></css-timer></div>\n </a>\n </li>\n <li class="dropdown dropdown-user" data-ng-if="headerAgent.voicePause || headerAgent.mailPause || headerAgent.chatPause || headerAgent.faxPause || headerAgent.smsPause || headerAgent.openchannelPause">\n <a href="#" class="dropdown-toggle padding-side-7 header-bar-button header-bar-button-controls" dropdown-menu-hover data-toggle="dropdown" data-close-others="true" data-ng-click="headerPause(\'unpause\')">\n <i class="fa fa-play font-green"></i></a>\n </li>\n <li class="dropdown dropdown-user" data-ng-if="headerAgent.voicePause || headerAgent.mailPause || headerAgent.chatPause || headerAgent.faxPause || headerAgent.smsPause || headerAgent.openchannelPause">\n <a href="#" class="dropdown-toggle header-bar-button" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">\n <i class="fa fa-angle-down"></i>\n </a>\n <ul class="dropdown-menu dropdown-menu-default scrollable-menu">\n <li data-ng-if="headerAgent.voicePause">\n <a href="#" data-ng-click="headerPause(\'unpause\',null,\'voice\')">\n <i class="fa fa-play font-green"></i> {{\'APPLICATION_VOICE\' | translate}}\n </a>\n </li>\n <li data-ng-if="headerAgent.mailPause">\n <a href="#" data-ng-click="headerPause(\'unpause\',null,\'mail\')">\n <i class="fa fa-play font-green"></i> {{\'APPLICATION_MAIL\' | translate}}\n </a>\n </li>\n <li data-ng-if="headerAgent.chatPause">\n <a href="#" data-ng-click="headerPause(\'unpause\',null,\'chat\')">\n <i class="fa fa-play font-green"></i> {{\'APPLICATION_CHAT\' | translate}}\n </a>\n </li>\n <li data-ng-if="headerAgent.faxPause">\n <a href="#" data-ng-click="headerPause(\'unpause\',null,\'fax\')">\n <i class="fa fa-play font-green"></i> {{\'APPLICATION_FAX\' | translate}}\n </a>\n </li>\n <li data-ng-if="headerAgent.smsPause">\n <a href="#" data-ng-click="headerPause(\'unpause\',null,\'sms\')">\n <i class="fa fa-play font-green"></i> {{\'APPLICATION_SMS\' | translate}}\n </a>\n </li>\n <li data-ng-if="headerAgent.openchannelPause">\n <a href="#" data-ng-click="headerPause(\'unpause\',null,\'openchannel\')">\n <i class="fa fa-play font-green"></i> {{\'APPLICATION_OPEN_CHANNEL\' | translate}}\n </a>\n </li>\n </ul>\n </li>\n <li class="dropdown dropdown-user">\n <a href="#" class="dropdown-toggle padding-side-7 header-bar-button header-bar-button-controls" dropdown-menu-hover data-toggle="dropdown" data-close-others="true" data-ng-click="headerPause(\'pause\',\'DEFAULT PAUSE\')">\n <i class="fa fa-pause font-yellow"></i></a>\n </li>\n <li class="dropdown dropdown-user" data-ng-if="headerPauses.length">\n <a href="#" class="dropdown-toggle header-bar-button" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">\n <i class="fa fa-angle-down"></i>\n </a>\n <ul class="dropdown-menu dropdown-menu-default scrollable-menu">\n <li data-ng-repeat="pause in headerPauses">\n <a href="#" data-ng-click="headerPause(\'pause\',pause.name)">\n {{pause.name}}\n </a>\n </li>\n </ul>\n </li>\n </ul>\n <ul class="nav navbar-nav pull-right" data-ng-if="getCurrentUser().role === \'agent\'" >\n <li data class="dropdown dropdown-extended dropdown-notification" id="header_agent_notification_bar" data-ng-click="agentNotifications.agent.new = 0;">\n <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">\n <i class="icon-earphones-alt"></i>\n <span class="badge badge-default" data-ng-if="agentNotifications.agent.new">\n {{agentNotifications.agent.new}} </span>\n </a>\n <ul class="dropdown-menu tabbed-dropdown">\n <li class="external">\n <h3><span class="bold">{{\'APPLICATION_LAST_VOICE_NOTIFICATIONS\' | translate}}</span></h3>\n </li>\n <li>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_INBOUND\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{ \'APPLICATION_OUTBOUND\' | translate}}</a>\n </li>\n </ul>\n\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="agent-spinner-grid" data-ng-if="busyLoad.agent.busy" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n <ul class="dropdown-menu-list scrollable-menu" style="height: 250px;" data-handle-color="#637283" infinite-scroll="loadNotifications(\'agent\')" can-load=\'!busyLoad.agent.busy\' treshold="261">\n <li data-ng-repeat="notification in agentNotifications.agent.rows">\n <a href="javascript:;" style="cursor:default;">\n <div class="row">\n <div class="col-md-1">\n <img src="assets/images/media/inboundroute.png" style="width:25px;height:25px;" alt="">\n </div>\n <div class="col-md-10">\n <div>{{\'APPLICATION_VOICE_NEW_CALL\' | translate}}<span data-ng-if="notification.status && notification.status !== \'none\'" class="badge float-right" data-ng-class="{\'badge-success\':notification.status === \'taken\',\'badge-danger\':notification.status === \'lost\',\'badge-warning\':notification.status === \'rejected\' || notification.status === \'busy\',\'badge-info\':notification.status === \'taken_elsewhere\'}">{{\'APPLICATION_VOICE_\'+notification.status.toUpperCase() | translate}}</span></div>\n <div><span class="time float-left" style="max-width:none !important;"><span am-time-ago="notification.updatedAt"></span></span></div>\n </div>\n </div>\n <div>\n <span class="message">{{notification.dialstring ? \'APPLICATION_TO\' : \'APPLICATION_FROM\' | translate}}: <span class="span-link" data-ng-click="chooseContact(notification.calleridnum)">{{notification.calleridnum}}</span></span>\n </div>\n <div data-ng-if="notification.status === \'taken_elsewhere\'">\n <span class="message">{{\'APPLICATION_AGENT_NAME\' | translate}}: <span ><b>{{notification.answeredelsewheremembername}}</b></span></span>\n </div>\n <div data-ng-if="notification.status === \'taken\' && notification.lastevent === \'complete\'">\n <span class="message">{{\'APPLICATION_COMPLETED_BY\' | translate}}: <span ><b>{{\'APPLICATION_VOICE_\'+notification.reason.toUpperCase() | translate}}</b></span></span>\n </div>\n </a>\n </li>\n </ul>\n </div>\n <div class="tab-pane" id="tab_1_2">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="dial-spinner-grid" data-ng-if="busyLoad.dial.busy" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n <ul class="dropdown-menu-list scrollable-menu" style="height: 250px;" data-handle-color="#637283" infinite-scroll="loadNotifications(\'dial\')" can-load=\'!busyLoad.dial.busy\' treshold="261">\n <li data-ng-repeat="notification in agentNotifications.dial.rows">\n <a href="javascript:;" style="cursor:default;">\n <div class="row">\n <div class="col-md-1">\n <img src="assets/images/media/outboundroute.png" style="width:25px;height:25px;" alt="">\n </div>\n <div class="col-md-10">\n <div>{{\'APPLICATION_VOICE_NEW_CALL\' | translate}}<span data-ng-if="notification.status && notification.status !== \'none\'" class="badge float-right" data-ng-class="{\'badge-success\':notification.status === \'taken\',\'badge-danger\':notification.status === \'lost\',\'badge-warning\':notification.status === \'rejected\',\'badge-info\':notification.status === \'taken_elsewhere\'}">{{\'APPLICATION_VOICE_\'+notification.status.toUpperCase() | translate}}</span></div>\n <div><span class="time float-left" style="max-width:none !important;"><span am-time-ago="notification.updatedAt"></span></span></div>\n </div>\n </div>\n <div>\n <span class="message">{{\'APPLICATION_TO\' | translate}}: <span class="span-link" data-ng-click="chooseContact(notification.destcalleridnum)">{{notification.destcalleridnum}}</span></span>\n </div>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </li>\n </ul>\n </li>\n <li data ng-if="license.mail" class="dropdown dropdown-extended dropdown-notification" id="header_mail_notification_bar" data-ng-click="agentNotifications.mail.new = 0;">\n <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">\n <i class="icon-envelope-open"></i>\n <span class="badge badge-default" data-ng-if="agentNotifications.mail.new">\n {{agentNotifications.mail.new}} </span>\n </a>\n <ul class="dropdown-menu">\n <li class="external">\n <h3><span class="bold">{{\'APPLICATION_LAST_MAIL_NOTIFICATIONS\' | translate}}</span></h3>\n </li>\n <li>\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="mail-spinner-grid" data-ng-if="busyLoad.mail.busy" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n <ul class="dropdown-menu-list scrollable-menu" style="height: 250px;" data-handle-color="#637283" infinite-scroll="loadNotifications(\'mail\')" can-load=\'!busyLoad.mail.busy\' treshold="261">\n <li data-ng-repeat="notification in agentNotifications.mail.rows">\n <a href="javascript:;" style="cursor:default;">\n <div class="row">\n <div class="col-md-1">\n <img src="assets/images/media/enquiry.png" style="width:25px;height:25px;" alt="">\n </div>\n <div class="col-md-10">\n <div>{{\'APPLICATION_NEW_MESSAGE\' | translate}}<span data-ng-if="notification.status && notification.status !== \'none\'" class="badge float-right" data-ng-class="{\'badge-success pointer-cursor\':notification.status === \'taken\',\'badge-danger\':notification.status === \'lost\',\'badge-warning\':notification.status === \'rejected\'}" data-ng-click="notification.status === \'taken\' && openRoom(notification.roomid, \'mailRoom\')">{{\'APPLICATION_MESSAGE_\'+notification.status.toUpperCase() | translate}} <i data-ng-if="notification.status === \'taken\'" class="fa fa-envelope"></i></span></div>\n <div><span class="time float-left" style="max-width:none !important;"><span am-time-ago="notification.updatedAt"></span></span></div>\n </div>\n </div>\n <div>\n <span class="message">{{\'APPLICATION_FROM\' | translate}}: <span class="span-link" data-ng-click="openContact(\'mail\',notification.accountid,notification.from)">{{notification.from}}</span></span>\n </div>\n </a>\n </li>\n </ul>\n </li>\n </ul>\n </li>\n <li data ng-if="license.chat" class="dropdown dropdown-extended dropdown-notification" id="header_chat_notification_bar" data-ng-click="agentNotifications.chat.new = 0;">\n <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">\n <i class="icon-bubble"></i>\n <span class="badge badge-default" data-ng-if="agentNotifications.chat.new">\n {{agentNotifications.chat.new}} </span>\n </a>\n <ul class="dropdown-menu">\n <li class="external">\n <h3><span class="bold">{{\'APPLICATION_LAST_CHAT_NOTIFICATIONS\' | translate}}</span></h3>\n </li>\n <li>\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="chat-spinner-grid" data-ng-if="busyLoad.chat.busy" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n <ul class="dropdown-menu-list scrollable-menu" style="height: 250px;" data-handle-color="#637283" infinite-scroll="loadNotifications(\'chat\')" can-load=\'!busyLoad.chat.busy\' treshold="261">\n <li data-ng-repeat="notification in agentNotifications.chat.rows">\n <a href="javascript:;" style="cursor:default;">\n <div class="row">\n <div class="col-md-1">\n <img src="assets/images/media/website.png" style="width:25px;height:25px;" alt="">\n </div>\n <div class="col-md-10">\n <div>{{\'APPLICATION_NEW_CHAT_REQUEST\' | translate}}<span data-ng-if="notification.status && notification.status !== \'none\'" class="badge float-right" data-ng-class="{\'badge-success pointer-cursor\':notification.status === \'taken\',\'badge-danger\':notification.status === \'lost\',\'badge-warning\':notification.status === \'rejected\'}" data-ng-click="notification.status === \'taken\' && openRoom(notification.roomid, \'chatRoom\')">{{\'APPLICATION_CHAT_\'+notification.status.toUpperCase() | translate}} <i data-ng-if="notification.status === \'taken\'" class="fa fa-envelope"></i></span></div>\n <div><span class="time float-left" style="max-width:none !important;"><span am-time-ago="notification.updatedAt"></span></span></div>\n </div>\n </div>\n <div>\n <span class="message">{{\'APPLICATION_FROM\' | translate}}: <span class="span-link" data-ng-click="openContact(\'chat\',notification.websiteid,notification.visitoremail)">{{notification.visitoremail}}</span></span>\n </div>\n </a>\n </li>\n </ul>\n </li>\n </ul>\n </li>\n <li data ng-if="license.fax" class="dropdown dropdown-extended dropdown-notification" id="header_fax_notification_bar" data-ng-click="agentNotifications.fax.new = 0;">\n <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">\n <i class="fa fa-fax"></i>\n <span class="badge badge-default" data-ng-if="agentNotifications.fax.new">\n {{agentNotifications.fax.new}} </span>\n </a>\n <ul class="dropdown-menu">\n <li class="external">\n <h3><span class="bold">{{\'APPLICATION_LAST_FAX_NOTIFICATIONS\' | translate}}</span></h3>\n </li>\n <li>\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="fax-spinner-grid" data-ng-if="busyLoad.fax.busy" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n <ul class="dropdown-menu-list scrollable-menu" style="height: 250px;" data-handle-color="#637283" infinite-scroll="loadNotifications(\'fax\')" can-load=\'!busyLoad.fax.busy\' treshold="261">\n <li data-ng-repeat="notification in agentNotifications.fax.rows">\n <a href="javascript:;" style="cursor:default;">\n <div class="row">\n <div class="col-md-1">\n <img src="assets/images/media/fax.png" style="width:25px;height:25px;" alt="">\n </div>\n <div class="col-md-10">\n <div>{{\'APPLICATION_NEW_FAX_REQUEST\' | translate}}<span data-ng-if="notification.status && notification.status !== \'none\'" class="badge float-right" data-ng-class="{\'badge-success pointer-cursor\':notification.status === \'taken\',\'badge-danger\':notification.status === \'lost\',\'badge-warning\':notification.status === \'rejected\'}" data-ng-click="notification.status === \'taken\' && openRoom(notification.roomid, \'faxRoom\')">{{\'APPLICATION_FAX_\'+notification.status.toUpperCase() | translate}} <i data-ng-if="notification.status === \'taken\'" class="fa fa-envelope"></i></span></div>\n <div><span class="time float-left" style="max-width:none !important;"><span am-time-ago="notification.updatedAt"></span></span></div>\n </div>\n </div>\n <div>\n <span class="message">{{\'APPLICATION_FROM\' | translate}}: <span class="span-link" data-ng-click="openContact(\'fax\',notification.accountid,notification.from)">{{notification.from}}</span></span>\n </div>\n </a>\n </li>\n </ul>\n </li>\n </ul>\n </li>\n <li data ng-if="license.messaging" class="dropdown dropdown-extended dropdown-notification" id="header_sms_notification_bar" data-ng-click="agentNotifications.sms.new = 0;">\n <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">\n <i class="glyphicon glyphicon-comment"></i>\n <span class="badge badge-default" data-ng-if="agentNotifications.sms.new">\n {{agentNotifications.sms.new}} </span>\n </a>\n <ul class="dropdown-menu">\n <li class="external">\n <h3><span class="bold">{{\'APPLICATION_LAST_SMS_NOTIFICATIONS\' | translate}}</span></h3>\n </li>\n <li>\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="sms-spinner-grid" data-ng-if="busyLoad.sms.busy" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n <ul class="dropdown-menu-list scrollable-menu" style="height: 250px;" data-handle-color="#637283" infinite-scroll="loadNotifications(\'sms\')" can-load=\'!busyLoad.sms.busy\' treshold="261">\n <li data-ng-repeat="notification in agentNotifications.sms.rows">\n <a href="javascript:;" style="cursor:default;">\n <div class="row">\n <div class="col-md-1">\n <img src="assets/images/media/sms.png" style="width:25px;height:25px;" alt="">\n </div>\n <div class="col-md-10">\n <div>{{\'APPLICATION_NEW_SMS_REQUEST\' | translate}}<span data-ng-if="notification.status && notification.status !== \'none\'" class="badge float-right" data-ng-class="{\'badge-success pointer-cursor\':notification.status === \'taken\',\'badge-danger\':notification.status === \'lost\',\'badge-warning\':notification.status === \'rejected\'}" data-ng-click="notification.status === \'taken\' && openRoom(notification.roomid, \'smsRoom\')">{{\'APPLICATION_SMS_\'+notification.status.toUpperCase() | translate}} <i data-ng-if="notification.status === \'taken\'" class="fa fa-envelope"></i></span></div>\n <div><span class="time float-left" style="max-width:none !important;"><span am-time-ago="notification.updatedAt"></span></span></div>\n </div>\n </div>\n <div>\n <span class="message">{{\'APPLICATION_FROM\' | translate}}: <span class="span-link" data-ng-click="openContact(\'sms\',notification.accountid,notification.from)">{{notification.from}}</span></span>\n </div>\n </a>\n </li>\n </ul>\n </li>\n </ul>\n </li>\n <li data ng-if="license.openchannel" class="dropdown dropdown-extended dropdown-notification" id="header_openchannel_notification_bar" data-ng-click="agentNotifications.openchannel.new = 0;">\n <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">\n <i class="icon-globe"></i>\n <span class="badge badge-default" data-ng-if="agentNotifications.openchannel.new">\n {{agentNotifications.openchannel.new}} </span>\n </a>\n <ul class="dropdown-menu">\n <li class="external">\n <h3><span class="bold">{{\'APPLICATION_LAST_OPENCHANNEL_NOTIFICATIONS\' | translate}}</span></h3>\n </li>\n <li>\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="openchannel-spinner-grid" data-ng-if="busyLoad.openchannel.busy" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n <ul class="dropdown-menu-list scrollable-menu" style="height: 250px;" data-handle-color="#637283" infinite-scroll="loadNotifications(\'openchannel\')" can-load=\'!busyLoad.openchannel.busy\' treshold="261">\n <li data-ng-repeat="notification in agentNotifications.openchannel.rows">\n <a href="javascript:;" style="cursor:default;">\n <div class="row">\n <div class="col-md-1">\n <img src="assets/images/media/openchannel.png" style="width:25px;height:25px;" alt="">\n </div>\n <div class="col-md-10">\n'+" <div>{{'APPLICATION_NEW_OPENCHANNEL_REQUEST' | translate}}<span data-ng-if=\"notification.status && notification.status !== 'none'\" class=\"badge float-right\" data-ng-class=\"{'badge-success pointer-cursor':notification.status === 'taken','badge-danger':notification.status === 'lost','badge-warning':notification.status === 'rejected'}\" data-ng-click=\"notification.status === 'taken' && openRoom(notification.roomid, 'openchannelRoom')\">{{'APPLICATION_OPENCHANNEL_'+notification.status.toUpperCase() | translate}} <i data-ng-if=\"notification.status === 'taken'\" class=\"fa fa-envelope\"></i></span></div>\n <div><span class=\"time float-left\" style=\"max-width:none !important;\"><span am-time-ago=\"notification.updatedAt\"></span></span></div>\n </div>\n </div>\n <!-- <div>\n <span class=\"message\">{{'APPLICATION_FROM' | translate}}: <span class=\"span-link\" data-ng-click=\"openContact('openchannel',notification.accountid,notification.from)\">{{notification.from}}</span></span>\n </div> -->\n </a>\n </li>\n </ul>\n </li>\n </ul>\n </li>\n </ul>\n </div>\n <!-- END TOP NAVIGATION MENU -->\n </div>\n <!-- END HEADER INNER -->\n"), +a.put("components/modal/delete.html",'<div class="modal-header">\n <button ng-if="modal.dismissable" type="button" ng-click="$dismiss()" class="close">×</button>\n <h4 ng-if="modal.title" ng-bind="modal.title" class="modal-title"></h4>\n</div>\n<div class="modal-body">\n <p ng-if="modal.text" ng-bind="modal.text"></p>\n <div ng-if="modal.html" ng-bind-html="modal.html"></div>\n</div>\n<div class="modal-footer">\n <button ng-repeat="button in modal.buttons" ng-class="button.classes" ng-click="button.click($event)" ng-bind="button.text" class="btn"></button>\n</div>\n'),a.put("components/sidebar/sidebar.html",'<div id="page-sidebar" class="page-sidebar navbar-collapse collapse" data-ng-init="initSidebar()">\n <!-- BEGIN SIDEBAR MENU -->\n <!-- DOC: Apply "page-sidebar-menu-light" class right after "page-sidebar-menu" to enable light sidebar menu style(without borders) -->\n <!-- DOC: Apply "page-sidebar-menu-hover-submenu" class right after "page-sidebar-menu" to enable hoverable(hover vs accordion) sub menu mode -->\n <!-- DOC: Apply "page-sidebar-menu-closed" class right after "page-sidebar-menu" to collapse("page-sidebar-closed" class must be applied to the body element) the sidebar sub menu mode -->\n <!-- DOC: Set data-auto-scroll="false" to disable the sidebar from auto scrolling/focusing -->\n <!-- DOC: Set data-keep-expand="true" to keep the submenues expanded -->\n <!-- DOC: Set data-auto-speed="200" to adjust the sub menu slide up/down speed -->\n <ul data-ng-click="mainTab.active=true" class="page-sidebar-menu" data-keep-expanded="false" data-auto-scroll="true" data-slide-speed="200" data-ng-class="{\'page-sidebar-menu-closed\': settings.layout.pageSidebarClosed}" data-ng-init="getSidebarIntegrations()">\n <!-- DOC: To remove the search box from the sidebar you just need to completely remove the below "sidebar-search-wrapper" LI element -->\n <li class="sidebar-search-wrapper">\n <!-- BEGIN RESPONSIVE QUICK SEARCH FORM -->\n <!-- DOC: Apply "sidebar-search-bordered" class the below search form to have bordered search box -->\n <!-- DOC: Apply "sidebar-search-bordered sidebar-search-solid" class the below search form to have bordered & solid search box -->\n <form class="sidebar-search sidebar-search-bordered" action="extra_search.html" method="POST">\n <a href="javascript:;" class="remove">\n <i class="icon-close"></i>\n </a>\n </form>\n <!-- END RESPONSIVE QUICK SEARCH FORM -->\n </li>\n\n <!-- START DASHBOARD CASE -->\n <li class="start" data-ng-if="::(Auth.isAdmin() || Auth.isAgent() || userModules[1])" data-ng-class="{active: $state.includes(\'main.dashboard\')}">\n <a href="/dashboard/voice">\n <i class="icon-rocket"></i>\n <span class="title">{{\'APPLICATION_DASHBOARD\' | translate}}</span>\n <span data-ng-if="$state.includes(\'main.dashboard\')" class="selected"></span>\n </a>\n </li>\n <!-- END DASHBOARD CASE -->\n\n <!-- START YOURDASHBOARD LIST CASE -->\n <li data-ng-if="::(!Auth.isUser() || userModules[2])" data-ng-class="{active: $state.is(\'main.tools.yourdashboards.show\')}">\n <a href="javascript:;">\n <i class="fa fa-tachometer"></i>\n <span class="title" >{{\'APPLICATION_YOUR_DASHBOARDS\' | translate}}</span>\n <span class="arrow" data-ng-class="{ open: $state.includes(\'main.tools.yourdashboards.show\') }"></span>\n </a>\n <ul class="sub-menu" data-ng-init="getSidebarDashboards()">\n <li data-ng-class="{active: $stateParams.id == dashboard.id && $state.includes(\'main.tools.yourdashboards.show\')}" data-ng-repeat="dashboard in dashboards" data-ng-if="dashboard[Auth.getRole()]">\n <a href="/tools/yourdashboards/show/{{dashboard.id}}" >\n <i class="icon-screen-desktop"></i>\n <span class="title" >{{dashboard.name}} </span>\n </a>\n </li>\n </ul>\n </li>\n <!-- END YOURDASHBOARD LIST CASE -->\n\n <!-- START STAFF LIST CASE -->\n <li data-ng-class="{active: $state.includes(\'main.staff\')}">\n <a href="javascript:;" data-ng-if="::(Auth.isAdmin() || userModules[3])">\n <i class="icon-puzzle"></i>\n <span class="title" >{{\'APPLICATION_STAFF\' | translate}}</span>\n <span class="arrow" data-ng-class="{open: $state.includes(\'main.staff\')}"></span>\n </a>\n <ul class="sub-menu">\n <!-- START USERS CASE -->\n <li data-ng-if="::(Auth.isAdmin())" data-ng-class="{active: $state.includes(\'main.staff.users\')}">\n <a href="/staff/users/list">\n <i class="icon-eye"></i>\n <span class="title" >{{\'APPLICATION_USERS\' | translate}}</span>\n <span data-ng-if="$state.includes(\'main.staff.users\')" class="selected"></span>\n </a>\n </li>\n <!-- END USERS CASE -->\n\n <!-- START AGENTS CASE -->\n <li data-ng-if="::(Auth.isAdmin() || userModules[4])" data-ng-class="{active: $state.includes(\'main.staff.agents\')}">\n <a href="/staff/agents/list">\n <i class="icon-people"></i>\n <span class="title" >{{\'APPLICATION_AGENTS\' | translate}}</span>\n <span data-ng-if="$state.includes(\'main.staff.agents\')" class="selected"></span>\n </a>\n </li>\n <!-- END AGENTS CASE -->\n\n <!-- START TELEPHONES CASE -->\n <li data-ng-if="::(Auth.isAdmin())" data-ng-class="{active: $state.includes(\'main.staff.telephones\')}">\n <a href="/staff/telephones/list">\n <i class="icon-phone"></i>\n <span class="title" >{{\'APPLICATION_TELEPHONES\' | translate}}</span>\n <span data-ng-if="$state.includes(\'main.staff.telephones\')" class="selected"></span>\n </a>\n </li>\n <!-- END TELEPHONES CASE -->\n\n <!-- START TEAMS CASE -->\n <li data-ng-if="::(Auth.isAdmin())" data-ng-class="{active: $state.includes(\'main.staff.teams\')}">\n <a href="/staff/teams/list">\n <i class="icon-shield"></i>\n <span class="title" >{{\'APPLICATION_TEAMS\' | translate}}</span>\n <span data-ng-if="$state.includes(\'main.staff.teams\')" class="selected"></span>\n </a>\n </li>\n <!-- END TEAMS CASE -->\n </ul>\n </li>\n <!-- END STAFF LIST CASE -->\n\n <!-- START CONTACT MANAGER LIST CASE -->\n <li data-ng-if="::(Auth.isAdmin() || Auth.isAgent() || userModules[5])" data-ng-class="{active: $state.includes(\'main.contactmanager\')}">\n <a href="javascript:;" data-ng-class="{\'disabled-link\':!license.cm}">\n <i class="icon-notebook"></i>\n <span class="title disable-target" >{{\'APPLICATION_CONTACT_MANAGER\' | translate}}</span>\n <span class="arrow" data-ng-class="{ open: $state.includes(\'main.contactmanager.contacts\')\n || $state.includes(\'main.contactmanager.companies\')\n || $state.includes(\'main.contactmanager.lists\') || $state.includes(\'main.contactmanager.customfields\') }"></span>\n </a>\n <ul class="sub-menu" data-ng-if="license.cm">\n <!-- START CONTACTS CASE -->\n <li data-ng-class="{active: $state.includes(\'main.contactmanager.contacts\')}">\n <a href="/contactmanager/contacts/list">\n <i class=" fa fa-users"></i>\n <span class="title" >{{\'APPLICATION_CONTACTS\' | translate}}</span>\n <span data-ng-if="$state.includes(\'main.contactmanager.contacts\')" class="selected"></span>\n </a>\n </li>\n <!-- END CONTACTS CASE -->\n <!-- START COMPANIES CASE -->\n <li data-ng-class="{active: $state.includes(\'main.contactmanager.companies\')}" data-ng-if="::(Auth.isAdmin() || Auth.isUser())">\n <a href="/contactmanager/companies/list">\n <i class="icon-briefcase"></i>\n <span class="title" >{{\'APPLICATION_COMPANIES\' | translate}}</span>\n <span data-ng-if="$state.includes(\'main.contactmanager.companies\')" class="selected"></span>\n </a>\n </li>\n <!-- END COMPANIES CASE -->\n <!-- START LISTS CASE -->\n <li data-ng-class="{active: $state.includes(\'main.contactmanager.lists\')}" data-ng-if="::(Auth.isAdmin() || Auth.isUser())">\n <a href="/contactmanager/lists/list">\n <i class="fa fa-list-ul"></i>\n <span class="title" >{{\'APPLICATION_LISTS\' | translate}}</span>\n <span data-ng-if="$state.includes(\'main.contactmanager.lists\')" class="selected"></span>\n </a>\n </li>\n <!-- END LISTS CASE -->\n <!-- START CUSTOM_FIELDS CASE -->\n <li data-ng-class="{active: $state.includes(\'main.contactmanager.customfields\')}" data-ng-if="::(Auth.isAdmin() || Auth.isUser())">\n <a href="/contactmanager/customfields/list">\n <i class="icon-pencil"></i>\n <span class="title" >{{\'APPLICATION_CUSTOM_FIELDS\' | translate}}</span>\n <span data-ng-if="$state.includes(\'main.contactmanager.customfields\')" class="selected"></span>\n </a>\n </li>\n <!-- END CUSTOM_FIELDS CASE -->\n </ul>\n </li>\n <!-- END CONTACT MANAGER LIST CASE -->\n\n <!-- START CHANNEL LIST CASE -->\n <li data-ng-if="::(Auth.isAdmin() || Auth.isAgent() || userModules[6])" data-ng-class="{active: $state.includes(\'main.channels\')}">\n <a href="javascript:;">\n <i class="fa fa-spinner"></i>\n <span class="title" >{{\'APPLICATION_CHANNELS\' | translate}}</span>\n <span class="arrow" data-ng-class="{open: $state.includes(\'main.channels\')}"></span>\n </a>\n <ul class="sub-menu">\n <!-- START VOICE CASE -->\n <li data-ng-if="::(Auth.isAdmin() || Auth.isAgent() || userModules[7])" data-ng-class="{ active: $state.includes(\'main.channels.voice\') }">\n <a href="javascript:;">\n <i class="icon-earphones-alt"></i>\n <span class="title">{{ \'APPLICATION_VOICE\' | translate}}</span>\n <span class="arrow" data-ng-class="{ open: $state.includes(\'main.channels.voice\') }"></span>\n </a>\n\n <ul class="sub-menu">\n <li data-ng-if="::(Auth.isAdmin())" data-ng-class="{active: $state.includes(\'main.channels.voice.queues\')}">\n <a href="/channels/voice/queues/list">\n <i class="icon-docs"></i>\n <span class="title">{{\'APPLICATION_QUEUES\' | translate}}</span>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin() || userModules[21])">\n <a href="javascript:;">\n <i class="icon-directions"></i>\n <span class="title"> {{ \'APPLICATION_ROUTES\' | translate}} </span>\n <span class="arrow" data-ng-class="{ open: $state.includes(\'main.channels.voice.routes\') }"></span>\n <ul class="sub-menu">\n <li data-ng-class="{active: $state.includes(\'main.channels.voice.routes.inbound\')}">\n <a href="/channels/voice/routes/inbound/list">\n <i class="icon-call-in"></i>\n <span class="title"> {{\'APPLICATION_INBOUND\' | translate}} </span>\n </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.channels.voice.routes.outbound\')}">\n <a href="/channels/voice/routes/outbound/list">\n <i class="icon-call-out"></i>\n <span class="title"> {{\'APPLICATION_OUTBOUND\' | translate}} </span>\n </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.channels.voice.routes.internal\')}">\n <a href="/channels/voice/routes/internal/list">\n <i class="icon-reload"></i>\n <span class="title"> {{\'APPLICATION_INTERNALS\' | translate}} </span>\n </a>\n </li>\n </ul>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin() || userModules[22])" data-ng-class="{active: $state.includes(\'main.channels.voice.contexts\')}">\n <a href="/channels/voice/contexts/list">\n <i class="icon-docs"></i>\n <span class="title"> {{\'APPLICATION_CONTEXTS\' | translate}} </span>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin() || userModules[23])" data-ng-class="{active: $state.includes(\'main.channels.voice.voicemails\')}">\n <a href="/channels/voice/voicemails/list">\n <i class="icon-envelope-letter"></i>\n <span class="title"> {{\'APPLICATION_VOICEMAILS\' | translate}} </span>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin() || userModules[24])" data-ng-class="{active: $state.includes(\'main.channels.voice.mohs\')}">\n <a href="/channels/voice/mohs/list">\n <i class="icon-music-tone"></i>\n <span class="title"> {{\'APPLICATION_MOH\' | translate}} </span>\n </a>\n </li>\n <!-- START RECORDING CASE -->\n <li data-ng-if="::(Auth.isAdmin() || Auth.isAgent() || userModules[25])" data-ng-class="{active: $state.includes(\'main.channels.voice.recordings\')}">\n <a href="/channels/voice/recordings/list">\n <i class="icon-control-play"></i>\n <span class="title">{{\'APPLICATION_RECORDINGS\' | translate}}</span>\n </a>\n </li>\n <!-- END RECORDING CASE -->\n <!-- START REALTIME CASE -->\n <li data-ng-if="::(Auth.isAdmin() || userModules[26])" data-ng-class="{active: $state.includes(\'main.channels.voice.realtime\')}">\n <a href="/channels/voice/realtime/view/agents">\n <i class="icon-energy"></i>\n <span class="title">{{\'APPLICATION_REALTIME\' | translate}}</span>\n </a>\n </li>\n <!-- END REALTIME CASE -->\n <!-- START CHANSPY CASE -->\n <li data-ng-if="::(Auth.isAdmin() || userModules[27])" data-ng-class="{active: $state.includes(\'main.channels.voice.chanspy\')}">\n <a href="/channels/voice/chanspy/list">\n <i class="fa fa-user-secret"></i>\n <span class="title" >{{\'APPLICATION_CHANSPY\' | translate}}</span>\n <!-- <span data-ng-if="$state.includes(\'main.chanspy\')" class="selected"></span> -->\n </a>\n </li>\n <!-- END CHANSPY CASE -->\n <!-- START CHANSPY CASE -->\n <li data-ng-if="::(Auth.isAdmin() || userModules[28])" data-ng-class="{active: $state.includes(\'main.channels.voice.dispositions\')}">\n <a href="/channels/voice/dispositions/list">\n <i class="icon-target"></i>\n <span class="title" >{{\'APPLICATION_DISPOSITIONS\' | translate}}</span>\n </a>\n </li>\n <!-- END CHANSPY CASE -->\n </ul>\n </li>\n <!-- END VOICE CASE -->\n\n <!-- START CHAT CASE -->\n <li data-ng-if="::(Auth.isAdmin() || Auth.isAgent() || userModules[8])" data-ng-class="{active: $state.includes(\'main.channels.chat\')}">\n <a href="javascript:;" data-ng-class="{\'disabled-link\':!license.chat}">\n <i class="icon-bubble"></i>\n <span class="title disable-target">{{\'APPLICATION_CHAT\' | translate}}</span>\n <span class="arrow" data-ng-class="{open: $state.includes(\'main.channels.chat\')}"></span>\n </a>\n <ul class="sub-menu" data-ng-if="license.chat">\n <li data-ng-if="::(Auth.isAdmin() || userModules[29])" data-ng-class="{active: $state.includes(\'main.channels.chat.websites\')}">\n <a href="/channels/chat/websites/list">\n <i class="icon-globe"></i>\n <span class="title"> {{\'APPLICATION_WEB_SITES\' | translate}} </span>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin() || userModules[30])" data-ng-class="{active: $state.includes(\'main.channels.chat.queues\')}">\n <a href="/channels/chat/queues/list">\n <i class="icon-docs"></i>\n <span class="title"> {{\'APPLICATION_QUEUES\' | translate}} </span>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin() || Auth.isAgent() || userModules[31])" data-ng-class="{active: $state.includes(\'main.channels.chat.room\')}">\n <a href="/channels/chat/room/internal/list">\n <i class="fa fa-users"></i>\n <span class="title"> {{\'APPLICATION_INTERACTIONS\' | translate}} </span>\n </a>\n </li>\n <!-- <li data-ng-if="::(Auth.isAdmin() || userModules[8])" data-ng-class="{active: $state.includes(\'main.channels.chat.online\')}">\n <a href="/channels/chat/online/list">\n <i class="icon-login"></i>\n <span class="title"> {{\'APPLICATION_ONLINE_MESSAGES\' | translate}} </span>\n </a>\n </li> -->\n <li data-ng-if="::(Auth.isAdmin() || userModules[32])" data-ng-class="{active: $state.includes(\'main.channels.chat.offline\')}">\n <a href="/channels/chat/offline/list">\n <i class="icon-logout"></i>\n <span class="title"> {{\'APPLICATION_OFFLINE_MESSAGES\' | translate}} </span>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin() || userModules[33])" data-ng-class="{active: $state.includes(\'main.channels.chat.realtime\')}">\n <a href="/channels/chat/realtime/view/agents">\n <i class="icon-energy"></i>\n <span class="title">{{\'APPLICATION_REALTIME\' | translate}}</span>\n </a>\n </li>\n </ul>\n </li>\n <!-- END CHAT CASE -->\n\n <!-- START MAIL CASE -->\n <li data-ng-if="::(Auth.isAdmin() || Auth.isAgent() || userModules[9])" data-ng-class="{active: $state.includes(\'main.channels.mail\')}" >\n <a href="javascript:;" data-ng-class="{\'disabled-link\':!license.mail}">\n <i class="icon-envelope"></i>\n <span class="title disable-target">{{\'APPLICATION_MAIL\' | translate}}</span>\n <span class="arrow" data-ng-class="{ open: $state.includes(\'main.channels.mail\') }"></span>\n </a>\n\n <ul class="sub-menu" data-ng-if="license.mail">\n <li data-ng-if="::(Auth.isAdmin() || userModules[34])" data-ng-class="{active: $state.includes(\'main.channels.mail.accounts\') || $state.includes(\'main.channels.mail.account\')}">\n <a href="/channels/mail/accounts/list">\n <i class="icon-notebook"></i>\n <span class="title"> {{\'APPLICATION_ACCOUNTS\' | translate}} </span>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin() || userModules[35])" data-ng-class="{active: $state.includes(\'main.channels.mail.queues\') || $state.includes(\'main.channels.mail.queue\')}">\n <a href="/channels/mail/queues/list">\n <i class="icon-docs"></i>\n <span class="title"> {{\'APPLICATION_QUEUES\' | translate}} </span>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin() || Auth.isAgent() || userModules[36])" data-ng-class="{active: $state.includes(\'main.channels.mail.inbox\')}">\n <a href="/channels/mail/inbox/view">\n <i class="icon-note"></i>\n <span class="title"> {{\'APPLICATION_INBOX\' | translate}} </span>\n </a>\n </li>\n <!-- START REALTIME CASE -->\n <li data-ng-if="::(Auth.isAdmin() || userModules[37])" data-ng-class="{active: $state.includes(\'main.channels.mail.realtime\')}">\n <a href="/channels/mail/realtime/view/agents">\n <i class="icon-energy"></i>\n <span class="title">{{\'APPLICATION_REALTIME\' | translate}}</span>\n </a>\n </li>\n <!-- END REALTIME CASE -->\n </ul>\n </li>\n <!-- END MAIL CASE -->\n\n <!-- START FAX CASE -->\n <li data-ng-if="::(Auth.isAdmin() || Auth.isAgent() || userModules[10])" data-ng-class="{active: $state.includes(\'main.channels.fax\')}">\n <a href="javascript:;" data-ng-class="{\'disabled-link\':!license.fax}">\n <i class="fa fa-fax"></i>\n <span class="title disable-target"> {{ \'APPLICATION_FAX\' | translate}}</span>\n <span class="arrow" data-ng-class="{ open: $state.includes(\'main.channels.fax\') }"></span>\n </a>\n <ul class="sub-menu" data-ng-if="license.fax">\n <li data-ng-if="::(Auth.isAdmin() || userModules[38])" data-ng-class="{active: $state.includes(\'main.channels.fax.accounts\')}">\n <a href="/channels/fax/accounts/list">\n <i class="icon-notebook"></i>\n <span class="title"> {{ \'APPLICATION_ACCOUNTS\' | translate}} </span>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin() || userModules[39])" data-ng-class="{active: $state.includes(\'main.channels.fax.queues\')}">\n <a href="/channels/fax/queues/list">\n <i class="icon-docs"></i>\n <span class="title"> {{ \'APPLICATION_QUEUES\' | translate }} </span>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin() || Auth.isAgent() || userModules[40])" data-ng-class="{active: $state.includes(\'main.channels.fax.inbox\')}">\n <a href="/channels/fax/inbox/view">\n <i class="icon-note"></i>\n <span class="title"> {{ \'APPLICATION_INBOX\' | translate }} </span>\n </a>\n </li>\n <!-- START REALTIME CASE -->\n <li data-ng-if="::(Auth.isAdmin() || userModules[41])" data-ng-class="{active: $state.includes(\'main.channels.fax.realtime\')}">\n <a href="/channels/fax/realtime/view/agents">\n <i class="icon-energy"></i>\n <span class="title">{{\'APPLICATION_REALTIME\' | translate}}</span>\n </a>\n </li>\n <!-- END REALTIME CASE -->\n </ul>\n </li>\n <!-- END FAX CASE -->\n\n <!-- START SMS CASE -->\n <li data-ng-if="::(Auth.isAdmin() || Auth.isAgent() || userModules[11])" data-ng-class="{active: $state.includes(\'main.channels.sms\')}">\n <a href="javascript:;" data-ng-class="{\'disabled-link\':!license.messaging}">\n <i class="glyphicon glyphicon-comment"></i>\n <span class="title disable-target">{{\'APPLICATION_SMS\' | translate}}</span>\n <span class="arrow" data-ng-class="{ open: $state.includes(\'main.channels.sms\') }"></span>\n </a>\n\n <ul class="sub-menu" data-ng-if="license.messaging">\n <li data-ng-if="::(Auth.isAdmin() || userModules[42])" data-ng-class="{active: $state.includes(\'main.channels.sms.accounts\') || $state.includes(\'main.channels.sms.account\')}">\n <a href="/channels/sms/accounts/list">\n <i class="icon-notebook"></i>\n <span class="title"> {{\'APPLICATION_ACCOUNTS\' | translate}} </span>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin() || userModules[43])" data-ng-class="{active: $state.includes(\'main.channels.sms.queues\') || $state.includes(\'main.channels.sms.queue\')}">\n <a href="/channels/sms/queues/list">\n <i class="icon-docs"></i>\n <span class="title"> {{\'APPLICATION_QUEUES\' | translate}} </span>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin() || Auth.isAgent() || userModules[44])" data-ng-class="{active: $state.includes(\'main.channels.sms.inbox\')}">\n <a href="/channels/sms/inbox/view">\n <i class="icon-note"></i>\n <span class="title"> {{\'APPLICATION_INBOX\' | translate}} </span>\n </a>\n </li>\n <!-- START REALTIME CASE -->\n <li data-ng-if="::(Auth.isAdmin() || userModules[45])" data-ng-class="{active: $state.includes(\'main.channels.sms.realtime\')}">\n <a href="/channels/sms/realtime/view/agents">\n <i class="icon-energy"></i>\n <span class="title">{{\'APPLICATION_REALTIME\' | translate}}</span>\n </a>\n </li>\n <!-- END REALTIME CASE -->\n </ul>\n </li>\n\n <!-- END SMS CASE -->\n\n <!-- START OPENCHANNEL CASE -->\n <li data-ng-if="::(Auth.isAdmin() || Auth.isAgent()|| userModules[20])" data-ng-class="{active: $state.includes(\'main.channels.openchannel\')}">\n <a href="javascript:;" data-ng-class="{\'disabled-link\':!license.openchannel}" >\n <i class="icon-globe"></i>\n <span class="title disable-target">{{\'APPLICATION_OPEN_CHANNEL\' | translate}}</span>\n <span class="arrow" data-ng-class="{ open: $state.includes(\'main.channels.openchannel\') }"></span>\n </a>\n <ul class="sub-menu" data-ng-if="license.openchannel" >\n <li data-ng-if="::(Auth.isAdmin()|| userModules[46])" data-ng-class="{active: $state.includes(\'main.channels.openchannel.accounts\') || $state.includes(\'main.channels.openchannel.account\')}">\n <a href="/channels/openchannel/accounts/list">\n <i class="icon-notebook"></i>\n <span class="title"> {{\'APPLICATION_ACCOUNTS\' | translate}} </span>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin()|| userModules[47])" data-ng-class="{active: $state.includes(\'main.channels.openchannel.queues\') || $state.includes(\'main.channels.openchannel.queue\')}">\n <a href="/channels/openchannel/queues/list">\n <i class="icon-docs"></i>\n <span class="title"> {{\'APPLICATION_QUEUES\' | translate}} </span>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin() || Auth.isAgent()|| userModules[48])" data-ng-class="{active: $state.includes(\'main.channels.openchannel.inbox\')}">\n <a href="/channels/openchannel/inbox/view">\n <i class="icon-note"></i>\n <span class="title"> {{\'APPLICATION_INBOX\' | translate}} </span>\n </a>\n </li>\n <!-- START REALTIME CASE -->\n <li data-ng-if="::(Auth.isAdmin() || userModules[49])" data-ng-class="{active: $state.includes(\'main.channels.openchannel.realtime\')}">\n <a href="/channels/openchannel/realtime/view/agents">\n <i class="icon-energy"></i>\n <span class="title">{{\'APPLICATION_REALTIME\' | translate}}</span>\n </a>\n </li>\n <!-- END REALTIME CASE -->\n </ul>\n </li>\n\n <!-- END OPENCHANNEL CASE -->\n <!-- START REALTIME CASE -->\n <li data-ng-if="::(Auth.isAdmin() || userModules[12])" data-ng-class="{active: $state.includes(\'main.channels.realtime\')}">\n <a href="/channels/realtime/view/agents">\n <i class="icon-energy"></i>\n <span class="title">{{\'APPLICATION_OMNI_REALTIME\' | translate}}</span>\n </a>\n </li>\n <!-- END REALTIME CASE -->\n </ul>\n </li>\n <!-- END CHANNEL LIST CASE -->\n\n <!-- START TOOLS LIST CASE -->\n <li data-ng-if="::(Auth.isAdmin() || userModules[13])" data-ng-class="{active: $state.includes(\'main.tools\') && !$state.is(\'main.tools.yourdashboards.show\')}">\n <a href="javascript:;">\n <i class="icon-wrench"></i>\n <span class="title" >{{\'APPLICATION_TOOLS\' | translate}}</span>\n <span class="arrow" data-ng-class="{ open: $state.includes(\'main.tools\') && !$state.is(\'main.tools.yourdashboards.show\')}"></span>\n </a>\n <ul class="sub-menu">\n <li data-ng-class="{active: $state.includes(\'main.tools.triggers\')}" data-ng-if="::(Auth.isAdmin() || userModules[50])">\n <a href="/tools/triggers/list">\n <i class="icon-bulb"></i>\n <span class="title"> {{\'APPLICATION_TRIGGERS\' | translate}} </span>\n </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.tools.automations\')}" data-ng-if="::(Auth.isAdmin() || userModules[51])">\n <a href="/tools/automations/list">\n <i class="icon-settings"></i>\n <span class="title"> {{\'APPLICATION_AUTOMATIONS\' | translate}} </span>\n </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.tools.trunks\')}" data-ng-if="::(Auth.isAdmin() || userModules[52])">\n <a href="/tools/trunks/list">\n <i class="icon-link"></i>\n <span class="title"> {{\'APPLICATION_TRUNKS\' | translate}} </span>\n </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.tools.intervals\')}" data-ng-if="::(Auth.isAdmin() || userModules[53])">\n <a href="/tools/intervals/list">\n <i class="icon-clock"></i>\n <span class="title"> {{\'APPLICATION_INTERVALS\' | translate}} </span>\n </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.tools.variables\')}" data-ng-if="::(Auth.isAdmin() || userModules[54])">\n <a href="/tools/variables/list">\n <i class="fa fa-eye"></i>\n <span class="title" >{{\'APPLICATION_VARIABLES\' | translate}} </span>\n </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.tools.tags\')}" data-ng-if="::(Auth.isAdmin() || userModules[55])">\n <a href="/tools/tags/list">\n <i class="icon-tag"></i>\n <span class="title" >{{\'APPLICATION_TAGS\' | translate}} </span>\n </a>\n </li>\n <!-- START TEMPLATE CASE -->\n <li data-ng-class="{active: $state.includes(\'main.tools.templates\')}" data-ng-if="::(Auth.isAdmin() || userModules[56])">\n <a href="/tools/templates/list">\n <i class="icon-docs"></i>\n <span class="title"> {{\'APPLICATION_TEMPLATES\' | translate}} </span>\n </a>\n </li>\n <!-- END TEMPLATE CASE -->\n\n <!-- START PAUSE CASE -->\n <li data-ng-class="{active: $state.includes(\'main.tools.pauses\')}" data-ng-if="::(Auth.isAdmin() || userModules[57])">\n <a href="/tools/pauses/list">\n <i class="icon-control-pause"></i>\n <span class="title"> {{\'APPLICATION_PAUSES\' | translate}} </span>\n </a>\n </li>\n <!-- END PAUSE CASE -->\n\n <!-- START ANSWER CASE -->\n <li data-ng-class="{active: $state.includes(\'main.tools.answers\')}" data-ng-if="::(Auth.isAdmin() || userModules[58])">\n <a href="/tools/answers/list">\n <i class="icon-magic-wand"></i>\n <span class="title"> {{\'APPLICATION_CANNED_ANSWERS\' | translate}} </span>\n </a>\n </li>\n <!-- END ANSWER CASE -->\n\n <!-- START DASHBOARD MANAGER CASE -->\n <li data-ng-class="{active: $state.includes(\'main.tools.yourdashboards\') && !$state.is(\'main.tools.yourdashboards.show\')}" data-ng-if="::(Auth.isAdmin() || userModules[59])">\n <a href="/tools/yourdashboards/list">\n <i class="fa fa-tachometer"></i>\n <span class="title"> {{\'APPLICATION_DASHBOARDS_MANAGER\' | translate}} </span>\n </a>\n </li>\n <!-- END DASHBOARD MANAGER CASE -->\n\n <!-- START SOUND CASE -->\n <li data-ng-class="{active: $state.includes(\'main.tools.sounds\')}" data-ng-if="::(Auth.isAdmin() || userModules[60])">\n <a href="/tools/sounds/list">\n <i class="icon-music-tone-alt"></i>\n <span class="title" >{{\'APPLICATION_SOUNDS\' | translate}}</span>\n <!-- <span data-ng-if="$state.includes(\'main.sounds\')" class="selected"></span> -->\n </a>\n </li>\n <!-- END SOUND CASE -->\n\n <!-- START SCHEDULE CASE -->\n <li data-ng-class="{active: $state.includes(\'main.tools.scheduler\')}" data-ng-if="::(Auth.isAdmin() || userModules[61])">\n <a href="/tools/scheduler/list">\n <i class="icon-calendar"></i>\n <span class="title" >{{\'APPLICATION_SCHEDULER\' | translate}}</span>\n <!-- <span data-ng-if="$state.includes(\'main.sounds\')" class="selected"></span> -->\n </a>\n </li>\n <!-- END SCHEDULE CASE -->\n </ul>\n </li>\n <!-- END TOOLS LIST CASE -->\n\n <!-- START CALLYSQUARE CASE -->\n <li data-ng-if="::(Auth.isAdmin() || userModules[14])" data-ng-class="{active: $state.includes(\'main.square\')}">\n <a href="javascript:;">\n <i class="fa fa-superscript"></i>\n <span class="title" >Cally ²</span>\n <span class="arrow"></span>\n </a>\n <ul class="sub-menu">\n <li data-ng-class="{active: $state.includes(\'main.square.projects\')}">\n <a href="/square/projects/list">\n <i class="fa fa-slack"></i>\n <span class="title" >{{\'APPLICATION_PROJECTS\' | translate}} </span>\n </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.square.odbc\')}">\n <a href="/square/odbc/list">\n <i class="fa fa-database"></i>\n <span class="title" >{{\'APPLICATION_ODBC\' | translate}} </span>\n </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.square.recordings\')}">\n <a href="/square/recordings/list">\n <i class="icon-microphone"></i>\n <span class="title" >{{\'APPLICATION_RECORDINGS\' | translate}} </span>\n </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.square.realtime.view.general\')}">\n <a href="/square/realtime/view/general">\n <i class="icon-energy"></i>\n <span class="title" >{{\'APPLICATION_REALTIME\' | translate}} </span>\n </a>\n </li>\n </ul>\n </li>\n <!-- END CALLYSQUARE CASE -->\n <!-- START JSCRIPTY LIST -->\n <li data-ng-show="::(Auth.isAdmin() || Auth.isAgent() || userModules[15])" data-ng-class="{active: $state.includes(\'main.jscripty\')}">\n <a href="javascript:;" data-ng-class="{\'disabled-link\':!license.jscripty}" >\n <i class="icon-note"></i>\n <span class="title disable-target" >{{\'APPLICATION_JSCRIPTY\' | translate}} </span>\n <span class="arrow"></span>\n </a>\n <ul class="sub-menu" data-ng-if="license.jscripty">\n <!-- -->\n <!-- START PROJECTS CASE -->\n <li data-ng-show="Auth.isAdmin() || Auth.isAgent() || userModules[15]" data-ng-class="{active: $state.includes(\'main.jscripty.projects\')}">\n <a href="/jscripty/projects/list">\n <i class="fa fa-slack"></i>\n <span class="title" >{{\'APPLICATION_PROJECTS\' | translate}} </span>\n </a>\n </li>\n <!-- END PROJECTS CASE -->\n </ul>\n </li>\n <!-- END JSCRIPTY LIST -->\n\n <!-- START MOTION DIALER LIST CASE-->\n <li data-ng-if="::(Auth.isAdmin() || userModules[16])" data-ng-class="{active: $state.includes(\'main.motiondialer\')}">\n <a href="javascript:;" data-ng-class="{\'disabled-link\':!license.dialer}">\n <i class="icon-control-forward"></i>\n <span class="title disable-target" >{{\'APPLICATION_MOTION_DIALER\' | translate}} </span>\n <span class="arrow"></span>\n </a>\n <ul class="sub-menu" data-ng-if="license.dialer">\n <li data-ng-class="{active: $state.includes(\'main.motiondialer.blacklist\')}">\n <a href="/motiondialer/blacklist/list">\n <i class="icon-doc"></i>\n <span class="title" >{{\'APPLICATION_BLACKLIST\' | translate}} </span>\n </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.motiondialer.processes\')}">\n <a href="/motiondialer/processes/list">\n <i class="icon-settings"></i>\n <span class="title" >{{\'APPLICATION_PROCESSES\' | translate}} </span>\n </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.motiondialer.info\')}">\n <a href="/motiondialer/info/view/about">\n <i class="icon-info"></i>\n <span class="title" >{{\'APPLICATION_INFO\' | translate}} </span>\n </a>\n </li>\n </ul>\n </li>\n <!-- END MOTION DIALER LIST CASE-->\n\n <!-- START ANALYTIC LIST CASE -->\n <li data-ng-if="::(Auth.isAdmin() || userModules[17])" data-ng-class="{active: $state.includes(\'main.analytics.reports\')\n || $state.includes(\'main.analytics.extracted\')\n || $state.includes(\'main.analytics.metrics\')}" data-ng-if="::(Auth.isAdmin())">\n <a href="javascript:;">\n <i class="icon-calculator"></i>\n <span class="title" >{{\'APPLICATION_ANALYTICS\' | translate}}</span>\n <span class="arrow" data-ng-class="{ open: $state.includes(\'main.analytics.reports\')\n || $state.includes(\'main.analytics.extracted\')\n || $state.includes(\'main.analytics.metrics\') }"></span>\n </a>\n <ul class="sub-menu">\n <!-- START REPORT CASE -->\n <li data-ng-class="{active: $state.includes(\'main.analytics.reports\')}">\n <a href="/analytics/reports/list">\n <i class="icon-book-open"></i>\n <span class="title" >{{\'APPLICATION_REPORTS\' | translate}}</span>\n <span data-ng-if="$state.includes(\'main.analytics.reports\')" class="selected"></span>\n </a>\n </li>\n <!-- END REPORT CASE -->\n <!-- START EXTRA REPORT CASE -->\n <li data-ng-class="{active: $state.includes(\'main.analytics.extracted\')}">\n <a href="/analytics/extracted/list">\n <i class="fa fa-file-pdf-o"></i>\n <span class="title" >{{\'APPLICATION_EXTRACTED_REPORTS\' | translate}}</span>\n <span data-ng-if="$state.includes(\'main.analytics.extracted\')" class="selected"></span>\n </a>\n </li>\n <!-- END EXTRA REPORT CASE -->\n <!-- START METRICS CASE -->\n <li data-ng-class="{active: $state.includes(\'main.analytics.metrics\')}">\n <a href="/analytics/metrics/list">\n <i class="icon-calculator"></i>\n <span class="title" >{{\'APPLICATION_METRICS\' | translate}}</span>\n <span data-ng-if="$state.includes(\'main.metrics.reports\')" class="selected"></span>\n </a>\n </li>\n <!-- END METRICS CASE -->\n </ul>\n </li>\n <!-- END ANALYTIC LIST CASE -->\n\n <!-- START SETTINGS LIST -->\n <li data-ng-if="::(Auth.isAdmin() || userModules[18])" data-ng-class="{active: $state.includes(\'main.setting\')}">\n <a href="javascript:;">\n <i class="icon-settings"></i>\n <span class="title" >{{\'APPLICATION_SETTINGS\' | translate}}</span>\n <span class="arrow"></span>\n </a>\n <ul class="sub-menu">\n <!-- START GENERAL CASE -->\n <li data-ng-class="{active: $state.includes(\'main.setting.general\')}">\n <a href="/setting/general/view/main">\n <i class="icon-settings"></i>\n <span class="title"> {{\'APPLICATION_GENERAL\' | translate}} </span>\n </a>\n </li>\n <!-- END GENERAL CASE -->\n\n <!-- START UPDATES CASE -->\n <li data-ng-class="{active: $state.includes(\'main.setting.updates\')}">\n <a href="{{license.update ? \'/setting/updates/list\' : \'javascript:;\'}}" data-ng-class="{\'disabled-link\':!license.update}">\n <i class="icon-cloud-download"></i>\n <span class="title disable-target" >{{\'APPLICATION_UPDATES\' | translate}}</span>\n <!-- <span data-ng-if="$state.includes(\'main.updates\')" class="selected"></span> -->\n </a>\n </li>\n <!-- END UPDATES CASE -->\n\n <!-- START SMTP CASE -->\n <li data-ng-class="{active: $state.includes(\'main.setting.smtp\')}">\n <a href="/setting/smtp/view">\n <i class="icon-envelope"></i>\n <span class="title">SMTP</span>\n <!-- <span data-ng-if="$state.includes(\'main.smtp\')" class="selected"></span> -->\n </a>\n </li>\n <!-- END SMTP CASE -->\n\n <!-- START LICENSE CASE -->\n <li data-ng-class="{active: $state.includes(\'main.setting.license\')}">\n <a href="/setting/license/view">\n <i class="icon-info"></i>\n <span class="title"> {{\'APPLICATION_LICENSE\' | translate}} </span>\n </a>\n </li>\n <!-- END LICENSE CASE -->\n\n <!-- START NETWORK CASE -->\n <li data-ng-class="{active: $state.includes(\'main.setting.network\')}">\n <a href="/setting/network/view/localnet">\n <i class="icon-globe"></i>\n <span class="title"> {{\'APPLICATION_NETWORK\' | translate}} </span>\n </a>\n </li>\n <!-- END NETWORK CASE -->\n\n <!-- START SYSTEM CASE -->\n <li data-ng-class="{active: $state.includes(\'main.setting.system\')}">\n <a href="/setting/system/view/general">\n <i class="icon-pie-chart"></i>\n <span class="title"> {{\'APPLICATION_SYSTEM\' | translate}} </span>\n </a>\n </li>\n <!-- END SYSTEM CASE -->\n\n <!-- START CUSTOMIZATION CASE -->\n <li data-ng-class="{active: $state.includes(\'main.setting.customization\')}">\n <a href="/setting/customization/view/general">\n <i class="icon-equalizer"></i>\n <span class="title"> {{\'APPLICATION_CUSTOMIZATION\' | translate}} </span>\n </a>\n </li>\n <!-- END CUSTOMIZATION CASE -->\n </ul>\n </li>\n <!-- END SETTINGS LIST -->\n\n <!-- START INTEGRATION CASE -->\n <li data-ng-if=" (Auth.isAdmin() || Auth.isAgent() || userModules[19]) && integration.active" data-ng-repeat="integration in integrations" data-ng-class="{active: $state.includes(\'main.{{integration.state}}\')}">\n <a href="/{{integration.state}}/list" ng-switch on="integration.state" data-ng-if="integration.state !== \'iframe\' && (Auth.isAdmin() || userModules[19])">\n <i ng-switch-when="zendesk" class="icon-heart"></i>\n <i ng-switch-when="salesforce" class="fa fa-cloud"></i>\n <i ng-switch-default class="icon-handbag"></i>\n <span class="title" >{{integration.name}}</span>\n <span data-ng-if="$state.includes(\'main.{{integration.state}}\')" class="selected"></span>\n </a>\n <a href="/{{integration.state}}/view" data-ng-if="integration.state === \'iframe\'">\n <i class="fa fa-chrome"></i>\n <span class="title" data-ng-if="Auth.isAdmin() || userModules[19]">{{integration.name}}</span>\n <span class="title" data-ng-if="Auth.isAgent()">{{integration.title || integration.name}}</span>\n <span data-ng-if="$state.includes(\'main.{{integration.state}}\')" class="selected"></span>\n </a>\n </li>\n\n <li data-ng-if="::(Auth.isAdmin())" data-ng-class="{active: $state.is(\'main.market\')}">\n <a href="/market">\n <i class="icon-handbag"></i>\n <span class="title" translate>Market Place</span>\n <span data-ng-if="$state.includes(\'main.market\')" class="selected"></span>\n </a>\n </li>\n <!-- END INTEGRATIONS CASE -->\n <li>\n <a href="javascript:;" data-ng-click="activeTour.main = true" data-ng-if="::(!Auth.isAgent())">\n <i class="icon-location-pin"></i>\n <span class="title">{{\'APPLICATION_TAKE_A_TOUR\' | translate}}</span>\n </a>\n </li>\n <li>\n <a href="javascript:;" data-ng-click="about()">\n <i class="icon-info"></i>\n <span class="title">{{\'APPLICATION_ABOUT\' | translate}}</span>\n </a>\n </li>\n\n</ul>\n<!-- END SIDEBAR MENU -->\n</div>\n'); +}]); \ No newline at end of file diff --git a/public/app/b7d73a56.app.js b/public/app/b7d73a56.app.js deleted file mode 100644 index 30a413f..0000000 --- a/public/app/b7d73a56.app.js +++ /dev/null @@ -1,93 +0,0 @@ -"use strict";angular.module("xCallyShuttleApp",["adf","adf.structures.base","adf.widget.clock","adf.widget.iframe","adf.widget.counter","adf.widget.pie-chart","angular-md5","angular.filter","angularFileUpload","ngLetterAvatar","vAccordion","btford.socket-io","chart.js","checklist-model","colorpicker.module","frapontillo.bootstrap-switch","LocalStorageModule","mgo-angular-wizard","ng-slide-down","ngAnimate","ngBootstrap","ngCookies","ngCsv","ngFileSaver","ngJsTree","ngMap","ngPapaParse","ngResource","ngSanitize","notification","oc.lazyLoad","pascalprecht.translate","remoteValidation","smart-table","sprintf","timer","toastr","permission","ui-notification","ui.bootstrap.modal","ui.bootstrap.dropdown","ui.bootstrap.popover","ui.bootstrap.timepicker","ui.bootstrap.tooltip","ui.bootstrap.tpls","ui.bootstrap.accordion","ui.bootstrap.progressbar","ui.bootstrap.buttons","ui.bootstrap.typeahead","ui.grid","ui.grid.autoResize","ui.grid.draggable-rows","ui.grid.exporter","ui.grid.grouping","ui.grid.moveColumns","ui.grid.pagination","ui.grid.treeView","ui.grid.selection","ui.grid.exporter","ui.grid.resizeColumns","ui.router","ui.navbar","ui.select","ui.sortable","xeditable","ngAudio","truncate","ngScrollbars","ngEmoticons","angularSpinner","builder","builder.components","validator","angular-clipboard","ng-code-mirror","angularMoment","jsonFormatter","ui.bootstrap-slider","ui.bootstrap.datepicker","prettyBytes","bootstrapLightbox","rzModule","ckeditor","ngTagsInput","ngJoyRide","adf.widget.linklist"]).constant("CKEDITOR_BASEPATH","assets/plugins/ckeditor/").config(["$stateProvider","$urlRouterProvider","$locationProvider","$httpProvider","$translateProvider","localStorageServiceProvider","dashboardProvider","ScrollBarsProvider","tagsInputConfigProvider",function(a,b,c,d,e,f,g,h,i){i.setActiveInterpolation("tagsInput",{placeholder:!0}),b.otherwise(function(a){var b=a.get("$state");b.go("landing")}),e.useStaticFilesLoader({prefix:"assets/languages/locale-",suffix:".json"}),e.preferredLanguage("en_EN"),e.fallbackLanguage("en_EN"),e.useLocalStorage(),e.useSanitizeValueStrategy(null),c.html5Mode(!0),d.interceptors.push("authInterceptor"),g.structure("4-4-4",{rows:[{columns:[{styleClass:"col-md-4"},{styleClass:"col-md-4"},{styleClass:"col-md-4"}]}]}).structure("3-3-3-3",{rows:[{columns:[{styleClass:"col-md-3"},{styleClass:"col-md-3"},{styleClass:"col-md-3"},{styleClass:"col-md-3"}]}]}),f.setPrefix("motion"),h.defaults={scrollButtons:{scrollAmount:"auto",enable:!0},axis:"y"}}]).factory("authInterceptor",["$rootScope","$q","$cookieStore","$location",function(a,b,c,d){return{request:function(a){return a.headers=a.headers||{},c.get("token")?a.headers.Authorization="Bearer "+c.get("token"):d.path().match(/\/reset\/.[0-9]*/)||d.path("/login"),a}}}]).run(["$rootScope","$location","$state","$stateParams","$window","$q","Auth","RoleStore","editableThemes","editableOptions","License","User","PermissionStore","localStorageService","xAlert","$http",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){a.$state=c,a.$stateParams=d,i.bs3.inputClass="input-sm",i.bs3.buttonsClass="btn-xs",j.theme="bs3",a.$on("$stateChangeStart",function(a,c){g.isLoggedInAsync(function(a){!c.authenticate||a||b.path().match(/\/reset\/.[0-9]*/)||b.path("/login")})}),a.updateTableConfig=function(a,b){var c=_.find(a,{name:"All"});c&&(c.value=b)},a.settings={patternName:"[A-Za-z0-9._\\+*!\\-\\[\\]]+",simplePatternName:"[A-Za-z0-9._]+",patternPassword:"^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@#$%^&\\-_=+\\[\\{\\]\\}.])[0-9a-zA-Z~!@#$%^&\\-_=+\\[\\{\\]\\}.]{8,}$",patternPasswordLight:"^.{6,}$",patternGateway:"^(?:yes|no|[0-9]+)$",patternFaxdetect:"^(?:yes|no|t38|cng|[0-9]+)$",layout:{pageSidebarClosed:n.get("sidebarClosed")||!1,pageQuickSidebarOpened:!1,pageBodySolid:!1,pageAutoScrollOnLoad:1e3}},k.get().$promise.then(function(b){a.license=b.license,a.settings.soundPath=b.soundPath||"/var/opt/motion/server/files/sounds/converted",a.settings.footerWhiteLabel=b.footerWhiteLabel,a.settings.defaultFooterWhiteLabel=b.defaultFooterWhiteLabel,a.settings.logoutOnWindowClose=b.logoutOnWindowClose,m.definePermission("hasCm",function(){return a.license.cm}),m.definePermission("hasChat",function(){return a.license.chat}),m.definePermission("hasMail",function(){return a.license.mail}),m.definePermission("hasFax",function(){return a.license.fax}),m.definePermission("hasSms",function(){return a.license.messaging}),m.definePermission("hasDialer",function(){return a.license.dialer}),m.definePermission("hasJscripty",function(){return a.license.jscripty}),m.definePermission("hasUpdate",function(){return a.license.update}),m.definePermission("hasCustom",function(){return a.license.custom}),m.definePermission("hasOpenChannel",function(){return a.license.openchannel}),m.definePermission("hasPreferred",function(){return a.license.preferred})})["catch"](function(a){o.error(a)}),m.definePermission("agent",function(){return g.isAgent()}),m.definePermission("admin",function(){return g.isAdmin()}),m.definePermission("user",function(a,b){var c=f.defer(),d=g.getCurrentUser().$promise;return d?d.then(function(a){_.includes(_.map(a.Modules,"id"),b.toState.data.permissions.id)&&"user"===a.role?c.resolve():c.reject()})["catch"](function(){c.reject()}):c.resolve(),c.promise})}]),angular.module("xCallyShuttleApp").controller("AdminResetCtrl",["$scope","Auth","User","xAlert","$translate","$location","Setting","$rootScope",function(a,b,c,d,e,f,g,h){a.getInfo=function(){return g.get({controller:"info"}).$promise.then(function(b){return a.info=b,g.get({id:1}).$promise}).then(function(b){a.setting=b,!b.firstLogin&&f.path("/landing")})["catch"](function(a){console.error(a)})},h.bodyLayout="login",a.updatePassword=function(){var h={newPassword:a.user.password,id:b.getCurrentUser().id};return c.changePassword(h).$promise.then(function(){return g.update({id:1,firstLogin:!1}).$promise}).then(function(){d.show(e.instant("MESSAGE_WELL_DONE"),"success"),f.path("/landing")})["catch"](function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("adminreset",{url:"/adminreset",templateUrl:"app/adminreset/adminreset.html",controller:"AdminResetCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/login.css"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.analytics",{url:"/analytics",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:17}}})}]),angular.module("xCallyShuttleApp").factory("Extracted",["$resource",function(a){return a("/api/analytics/extracted/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.analytics.extracted",{url:"/extracted",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("AnalyticExtractedListCtrl",["$scope","$translate","gridOptions","Extracted","uiGridConstants",function(a,b,c,d,e){a.moment=moment,a.Extracted=d,a.initView=function(){var b={exporterCsvFilename:"ExtractedReports.csv",columnDefs:[{name:"name"},{name:"createdAt",displayName:"APPLICATION_RUN_DATE",filterHeaderTemplate:'<div class="ui-grid-filter-container row"><div ng-repeat="colFilter in col.filters" class="col-md-6 col-md-offset-0 col-sm-5 col-sm-offset-0 col-xs-5 col-xs-offset-0"><div custom-grid-date-filter-header></div></div></div>',filters:[{name:"From",condition:e.filter.GREATER_THAN_OR_EQUAL,hasTime:!0},{name:"To",condition:e.filter.LESS_THAN_OR_EQUAL,hasTime:!0}]},{name:"startDate",displayName:"APPLICATION_START_DATE",filterHeaderTemplate:'<div class="ui-grid-filter-container row"><div ng-repeat="colFilter in col.filters" class="col-md-6 col-md-offset-0 col-sm-5 col-sm-offset-0 col-xs-5 col-xs-offset-0"><div custom-grid-date-filter-header></div></div></div>',filters:[{name:"From",condition:e.filter.GREATER_THAN_OR_EQUAL,hasTime:!0},{name:"To",condition:e.filter.LESS_THAN_OR_EQUAL,hasTime:!0}],sort:{direction:e.DESC,priority:0}},{name:"endDate",displayName:"APPLICATION_END_DATE",filterHeaderTemplate:'<div class="ui-grid-filter-container row"><div ng-repeat="colFilter in col.filters" class="col-md-6 col-md-offset-0 col-sm-5 col-sm-offset-0 col-xs-5 col-xs-offset-0"><div custom-grid-date-filter-header></div></div></div>',filters:[{name:"From",condition:e.filter.GREATER_THAN_OR_EQUAL,hasTime:!0},{name:"To",condition:e.filter.LESS_THAN_OR_EQUAL,hasTime:!0}]},{name:"output"},{name:"type"},{name:"status"},{name:"action",width:140,buttons:[{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"},{directive:"<motion-file-download data-ng-show=\"row.entity.status == 'completed'\" resource=\"grid.appScope.Extracted\" params=\"{id:row.entity.id,controller:'download'}\" mimetype=\"'application/'+row.entity.output.toLowerCase()\" filename=\"row.entity.name+'_'+row.entity.startDate.toString()+'_'+row.entity.endDate.toString()+'.'+row.entity.output.toLowerCase()\"></motion-file-download>"}]}]};a.gridOptions=c.gridOptions(d,b,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.analytics.extracted.list",{url:"/list",templateUrl:"app/analytic/extracted/list/list.html",controller:"AnalyticExtractedListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").factory("DefaultMetric",["$resource",function(a){return a("/api/analytics/metrics/default/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("AnalyticMetricListCreateModalCtrl",["$scope","$uibModalInstance","Metric","xAlert","$translate","report",function(a,b,c,d,e,f){a.forms={dashboard:void 0},a.item={},a.tables=f.tables,a.ok=function(){return c.save(a.item).$promise.then(function(){b.close()})["catch"](function(a){d.error(a)})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("AnalyticMetricListCtrl",["$scope","xAlert","Modal","$uibModal","$log","gridOptions","Metric","DefaultMetric","$translate",function(a,b,c,d,e,f,g,h,i){a.$translate=i,a.initView=function(){var b={exporterCsvFilename:"Metrics.csv",columnDefs:[{name:"name"},{name:"table",cellTemplate:"<div style=\"padding:5px\">{{'APPLICATION_'+row.entity.table.toUpperCase() | translate}}</div>"},{name:"description"},{name:"action",width:125,buttons:[{"class":"blue-hoki",href:"/analytics/metrics/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=f.gridOptions(g,b,a)},a.showMetric=function(a){d.open({animation:!0,templateUrl:"app/analytic/metric/list/view.modal.html",controller:"AnalyticMetricListViewModalCtrl",resolve:{metric:a}})},a.cloneMetric=function(c){return h.get({id:c,controller:"clone"}).$promise.then(function(){b.show(i.instant("MESSAGE_WELL_DONE"),"success"),a.gridOptions.getPage()})["catch"](function(a){b.error(a)})},a.create=function(){var c=d.open({animation:!0,templateUrl:"app/analytic/metric/list/create.modal.html",controller:"AnalyticMetricListCreateModalCtrl"});c.result.then(function(){b.show(i.instant("MESSAGE_WELL_DONE")+"!","success"),a.gridOptions.getPage()},function(){e.info("Modal dismissed at: "+new Date)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.analytics.metrics.list",{url:"/list",templateUrl:"app/analytic/metric/list/list.html",controller:"AnalyticMetricListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("AnalyticMetricListViewModalCtrl",["$scope","$uibModalInstance","metric","xAlert","$translate","report",function(a,b,c,d,e,f){a.item=c,a.tables=f.tables,a.close=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").factory("Metric",["$resource",function(a){return a("/api/analytics/metrics/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.analytics.metrics",{url:"/metrics",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("AnalyticMetricViewCtrl",["$scope","xAlert","$translate","$stateParams","$location","Metric","report",function(a,b,c,d,e,f,g){a.tables=g.tables,a.getMetric=function(){return f.get({id:d.id}).$promise.then(function(b){a.metric=b})["catch"](function(a){e.path("/analytics/metrics/list")})},a.updateMetric=function(){return f.update({id:d.id},a.metric).$promise.then(function(){b.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){b.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.analytics.metrics.view",{url:"/view/:id",templateUrl:"app/analytic/metric/view/view.html",controller:"AnalyticMetricViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.analytics.metrics.view.settings",{url:"/settings",templateUrl:"app/analytic/metric/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").factory("CustomReport",["$resource",function(a){return a("/api/analytics/reports/custom/:precontroller/:id/:controller/:action",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("DefaultReport",["$resource",function(a){return a("/api/analytics/reports/default/:id/:controller/:action",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("ReportListCopyModalCtrl",["$scope","$uibModalInstance","$log","customTreeData",function(a,b,c,d){a.customTreeData=d,a.forms={dashboard:void 0},a.customTreeConfig={multiple:!1,animation:!0,core:{error:function(a){c.error("treeCtrl: error from js tree - "+angular.toJson(a))},check_callback:!0}},a.ac=function(){return!0},a.initCustomScopeTree=function(){a.customTree=a.customTreeInstance.jstree(!0),a.customTree.deselect_all(),a.customTree.open_all()},a.ok=function(){a.customTree.get_selected(!0).length?b.close({parent:a.customTree.get_selected(!0).pop().id}):a.showAlert=!0},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("ReportListCreateModalCtrl",["$scope","$uibModalInstance","path",function(a,b,c){a.path=c,a.forms={dashboard:void 0},a.item={},a.ok=function(){a.item.model=JSON.stringify({title:a.item.name}),b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("ReportListExtractModalCtrl",["$scope","$uibModalInstance","$translate",function(a,b,c){a.daily=!1,a.dailySwitch={onText:c.instant("APPLICATION_TODAY"),offText:c.instant("APPLICATION_RANGE"),isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"primary"},a.dates={startDate:moment().subtract(1,"days").startOf("day"),endDate:moment().subtract(1,"days").endOf("day")},a.ranges={},a.ranges[c.instant("APPLICATION_YESTERDAY")]=[moment().subtract(1,"days").startOf("day"),moment().subtract(1,"days").endOf("day")],a.ranges[c.instant("APPLICATION_LAST_SEVEN_DAYS")]=[moment().subtract("days",7).startOf("day"),moment().subtract(1,"days").endOf("day")],a.ranges[c.instant("APPLICATION_LAST_THIRTY_DAYS")]=[moment().subtract("days",30),moment()],a.ranges[c.instant("APPLICATION_LAST_MONTH")]=[moment().subtract(1,"months").startOf("month"),moment().subtract(1,"months").endOf("month")],a.timepicker={timePickerIncrement:1,timePicker12Hour:!1},a.dailyTime={start:moment("00:00","HH:mm"),end:moment("23:59","HH:mm")},a.maxdate=moment().subtract(1,"days").endOf("day").format("YYYY-MM-DD HH:mm"),a.extract=function(c){var d={startDate:moment(a.dates.startDate).format("YYYY-MM-DD"),endDate:moment(a.dates.endDate).format("YYYY-MM-DD"),startTime:a.daily?moment(a.dailyTime.start).format("HH:mm"):moment(a.dates.startDate).format("HH:mm"),endTime:a.daily?moment(a.dailyTime.end).format("HH:mm"):moment(a.dates.endDate).format("HH:mm"),daily:a.daily,action:c};b.close(d)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("AnalyticReportListCtrl",["$scope","xAlert","$translate","$location","$log","Modal","$uibModal","FileSaver","Blob","gridOptions","CustomReport","DefaultReport","ReportTree","localStorageService",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){function o(){var b=n.get("lastMotionReportNode")||!1,c=n.get("lastMotionReportTree")||!1;return b&&c?(a[c+"Tree"].open_node({id:b}),a[c+"Tree"].select_node({id:b}),!0):!1}function p(b,c){var d={parent:c.id};a.selectedNode=b?a.defaultTree.get_path(c," / "):a.customTree.get_path(c," / "),a.gridOptions?a.gridOptions.getPage({parent:c.id},b?l:k):a.gridOptions=j.gridOptions(b?l:k,q,a,d)}var q={exporterCsvFilename:"reports.csv",columnDefs:[{name:"name"},{name:"description"},{name:"manage",width:120,buttons:[{"class":"{{grid.appScope.defaultTreeActive ? 'display-none' : 'blue-hoki'}}",href:"/analytics/reports/view/{{row.entity.id}}/settings",title:c.instant("APPLICATION_SETTINGS"),name:"settings"},{"class":"{{grid.appScope.defaultTreeActive ? 'display-none' : 'red-sunglo'}}",title:c.instant("APPLICATION_DELETE"),name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"},{"class":"green",title:c.instant("APPLICATION_COPY"),name:"copy",onClick:"grid.appScope.copy(row.entity.id)"},{"class":"purple",title:c.instant("APPLICATION_EXPORT"),name:"export",onClick:"grid.appScope.export(row.entity.id)"}]},{name:"actions",width:60,buttons:[{"class":"yellow",name:"preview",title:c.instant("APPLICATION_PREVIEW"),onClick:"grid.appScope.preview(row.entity.id)"},{"class":"green-turquoise",name:"run",title:c.instant("APPLICATION_RUN"),onClick:"grid.appScope.extract(row.entity.id)"}]}]};a.searchField="",a.ac=function(){return!0},a.initDefaultScopeTree=function(){a.defaultTree=a.defaultTreeInstance.jstree(!0),a.defaultTree.deselect_all(),a.defaultTree.close_all(),a.defaultTreeReady=!0,a.defaultTreeActive=!0,a.previousDefaultNode=""},a.initCustomScopeTree=function(){a.customTree=a.customTreeInstance.jstree(!0),a.customTree.deselect_all(),a.customTree.close_all(),a.customTreeReady=!0,a.previousCustomNode=""},a.$watchGroup(["defaultTreeReady","customTreeReady"],function(b,c,d){b[0]&&b[1]&&(o()||(a.defaultTree.open_node({id:1}),a.customTree.open_node({id:1}),a.defaultTree.select_node({id:"1"})))}),a.updateCustomTree=function(){var c={tree:angular.toJson(a.customTree.get_json("#",{flat:!0}))};return m.update({id:2},c).$promise.then(function(a){console.log("Custom Tree Updated")})["catch"](function(a){b.error(a)})},a.configTrees=function(){a.defaultTreeConfig={multiple:!1,animation:!0,core:{error:function(a){e.error("treeCtrl: error from js tree - "+angular.toJson(a))},check_callback:!0,themes:{name:"default",url:"../../../assets/css/jstree-metronic/style.css"}},plugins:["search"]},a.customTreeConfig={multiple:!1,animation:!0,core:{error:function(a){e.error("treeCtrl: error from js tree - "+angular.toJson(a))},check_callback:function(a,b,c,d,e){return console.log(a),!0},themes:{name:"default",url:"../../../assets/css/jstree-metronic/style.css"}},plugins:["contextmenu","dnd","search"],contextmenu:{items:function(b,d){var e={create:{label:c.instant("APPLICATION_CREATE"),action:function(c){a.customTree.create_node(b),a.customTree.open_node(b)}},rename:{label:c.instant("APPLICATION_RENAME"),action:function(c){a.customTree.edit(b)}},remove:{label:c.instant("APPLICATION_REMOVE"),action:function(c){a.deleteNode(b)}}};return"#"===b.parent&&(delete e.rename,delete e.remove),d(e),e}}}},a.deleteNode=function(d){var f=g.open({animation:!0,templateUrl:"app/analytic/report/list/deleteNode.modal.html",controller:["$scope","$uibModalInstance","node",function(a,b,c){a.node=c,a.ok=function(){b.close()},a.cancel=function(){b.dismiss("cancel")}}],resolve:{node:function(){return d.text}}});f.result.then(function(){return k["delete"]({precontroller:"node",id:d.id}).$promise.then(function(){b.show(c.instant("MESSAGE_WELL_DONE"),"success"),a.customTree.delete_node(d),a.previousCustomNode==d.id&&a.customTree.select_node({id:d.parent})})["catch"](function(a){b.error(a)})},function(){e.info("Modal dismissed at: "+new Date)})},a.searchTrees=function(){a.defaultTree.search(a.searchField),a.customTree.search(a.searchField)},a.selectDefaultNode=function(){if(a.customTreeReady){a.previousCustomNode="";var b=a.defaultTree.get_selected(!0),c=b.pop();if(a.defaultTree.deselect_node(b[0],!0),a.customTree.deselect_all(),a.defaultTree.select_node(c,!0),c.id===a.previousDefaultNode)return void console.log("def");a.previousDefaultNode=c.id,n.set("lastMotionReportNode",c.id),n.set("lastMotionReportTree","default"),a.defaultTreeActive=!0,p(!0,c)}},a.selectCustomNode=function(){if(a.defaultTreeReady){a.previousDefaultNode="";var b=a.customTree.get_selected(!0),c=b.pop();if(a.customTree.deselect_node(b[0],!0),a.defaultTree.deselect_all(),a.customTree.select_node(c,!0),c.id===a.previousCustomNode)return void console.log("cus");a.previousCustomNode=c.id,n.set("lastMotionReportNode",c.id),n.set("lastMotionReportTree","custom"),a.defaultTreeActive=!1,p(!1,c)}},a.getTrees=function(){return m.query().$promise.then(function(b){a.defaultTreeData=JSON.parse(b[0].tree),a.customTreeData=JSON.parse(b[1].tree),a.configTrees()})["catch"](function(a){b.error(a)})},a.create=function(){var c=g.open({animation:!0,templateUrl:"app/analytic/report/list/create.modal.html",controller:"ReportListCreateModalCtrl",resolve:{path:function(){return a.selectedNode}}});c.result.then(function(c){return c.parent=a.previousCustomNode,k.save(c).$promise.then(function(a){d.path("/analytics/reports/view/"+a.id+"/settings")})["catch"](function(a){b.error(a)})},function(){e.info("Modal dismissed at: "+new Date)})},a.copy=function(d){var f=a.defaultTreeActive?l:k,h=g.open({animation:!0,templateUrl:"app/analytic/report/list/copy.modal.html",controller:"ReportListCopyModalCtrl",resolve:{customTreeData:function(){return a.customTree.get_json("#",{flat:!0})}}});h.result.then(function(e){return f.save({id:d,controller:"copy"},e).$promise.then(function(){a.gridOptions.getPage(),b.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){b.error(a)})},function(){e.info("Modal dismissed at: "+new Date)})},a["export"]=function(c){var d=a.defaultTreeActive?l:k;return d.get({id:c,controller:"export"}).$promise.then(function(a){var b=new i([angular.toJson(a)],{type:"application/json;charset=utf-8"});h.saveAs(b,a.name+".json")})["catch"](function(a){b.error(a)})},a["import"]=function(d){var e=JSON.parse(d);e.parent=a.previousCustomNode;var f=!(!e.name||!e.parent),g=!0;return _.forEach(e.Fields,function(a){a.field&&a.alias||(g=!1)}),f&&g?k.save({controller:"import"},e).$promise.then(function(){a.gridOptions.getPage(),b.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){b.error(a)}):void b.show(c.instant("MESSAGE_INVALID_JSON"),"danger")},a.preview=function(b){g.open({animation:!0,templateUrl:"app/analytic/report/list/preview.modal.html",controller:"ReportListPreviewModalCtrl",size:"full",resolve:{report:function(){return{id:b,tree:a.defaultTreeActive?"default":"custom"}}}})},a.extract=function(d){var f=g.open({animation:!0,templateUrl:"app/analytic/report/list/extract.modal.html",controller:"ReportListExtractModalCtrl",size:"md",resolve:{report:function(){return{id:d,tree:a.defaultTreeActive?"default":"custom"}}}});f.result.then(function(e){e.daily||delete e.daily;var f=a.defaultTreeActive?l:k;return f.get(_.merge({id:d,controller:"extract"},e)).$promise.then(function(){b.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){b.error(a)})},function(){e.info("Modal dismissed at: "+new Date)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.analytics.reports.list",{url:"/list",templateUrl:"app/analytic/report/list/list.html",controller:"AnalyticReportListCtrl"})}]),angular.module("xCallyShuttleApp").controller("ReportListPreviewModalCtrl",["$scope","$uibModalInstance","report","xAlert","$translate","$timeout","CustomReport","DefaultReport",function(a,b,c,d,e,f,g,h){a.daily=!1,a.dailySwitch={onText:e.instant("APPLICATION_TODAY"),offText:e.instant("APPLICATION_RANGE"),isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"primary"},a.dates={startDate:moment().subtract(1,"days").startOf("day"),endDate:moment().subtract(1,"days").endOf("day")},a.ranges={},a.ranges[e.instant("APPLICATION_YESTERDAY")]=[moment().subtract(1,"days").startOf("day"),moment().subtract(1,"days").endOf("day")],a.ranges[e.instant("APPLICATION_LAST_SEVEN_DAYS")]=[moment().subtract("days",7).startOf("day"),moment().subtract(1,"days").endOf("day")],a.ranges[e.instant("APPLICATION_LAST_THIRTY_DAYS")]=[moment().subtract("days",30),moment()],a.ranges[e.instant("APPLICATION_LAST_MONTH")]=[moment().subtract(1,"months").startOf("month"),moment().subtract(1,"months").endOf("month")],a.timepicker={timePickerIncrement:1,timePicker12Hour:!1},a.dailyTime={start:moment("00:00","HH:mm"),end:moment("23:59","HH:mm")},a.maxdate=moment().subtract(1,"days").endOf("day").format("YYYY-MM-DD HH:mm");var i={offset:0,limit:25,sort:null,where:{},order:{}};a.gridOptions={paginationPageSizes:[10,25,50],paginationPageSize:25,useExternalPagination:!0,enableSorting:!1,enableFiltering:!0,useExternalFiltering:!0,enableGrouping:!1,enableColumnMenus:!1,treeRowHeaderAlwaysVisible:!1,gridMenuShowHideColumns:!1,enableGridMenu:!1,onRegisterApi:function(b){a.gridApi=b,b.pagination.on.paginationChanged(a,function(b,c){i.offset=(b-1)*c,i.limit=c,a.getPage()}),b.core.on.filterChanged(a,function(){var b=this.grid,c={};b.columns.forEach(function(a){a.filters[0].term&&(c[a.field]=a.filters[0].term)}),i.where=c,a.getPage()})}},a.getPage=function(){var b={offset:i.offset,limit:i.limit,startDate:moment(a.dates.startDate).format("YYYY-MM-DD"),endDate:moment(a.dates.endDate).format("YYYY-MM-DD"),startTime:a.daily?moment(a.dailyTime.start).format("HH:mm"):moment(a.dates.startDate).format("HH:mm"),endTime:a.daily?moment(a.dailyTime.end).format("HH:mm"):moment(a.dates.endDate).format("HH:mm"),daily:a.daily};_.forOwn(i.where,function(a,c){b[c]=a});var e="custom"===c.tree?g:h;return e.get(_.merge({id:c.id,controller:"preview"},b)).$promise.then(function(b){a.gridOptions.totalItems=b.count,a.gridOptions.paginationPageSizes[3]=b.count,a.gridOptions.data=b.rows,a.showResult=!0})["catch"](function(a){d.error(a)})},a.cancel=function(){b.dismiss("cancel")},f(function(){a.getPage()})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.analytics.reports",{url:"/reports",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").factory("ReportAgent",["$resource",function(a){return a("/api/report/agents/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("ReportIntegration",["$resource",function(a){return a("/api/report/integrations/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("ReportMember",["$resource",function(a){return a("/api/report/members/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("ReportTree",["$resource",function(a){return a("/api/analytics/reports/trees/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("AnalyticReportViewCtrl",["$scope","xAlert","$translate","$stateParams","$location","ReportAgent","ReportCall","ReportMailSession","ReportSmsSession","ReportMember","ReportQueue","ReportIntegration","ReportChatSession","DefaultReport","CustomReport","Metric","report",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){function r(c){var d=_.find(a.tables,{value:c}).resource;d.get({controller:"describe"}).$promise.then(function(b){a.tableFields=_.map(b,function(a,b){return"$promise"!==b&&"$resolved"!==b?{name:b,value:b}:void 0})})["catch"](function(a){b.error(a)})["finally"](function(){s(c)})}function s(c){return p.get({controller:"table",table:c}).$promise.then(function(b){_.forEach(b.rows,function(b){a.tableFields.push({name:"<strong>Metric.</strong>"+b.name,alias:b.name,value:b.metric,MetricId:b.id})})})["catch"](function(a){b.error(a)})}function t(a){return String(a).replace(/</g,"<").replace(/>/g,">")}function u(a){if(!a)return"";for(var b="(",c=0;c<a.rules.length;c++)if(c>0&&(b+=" <strong>"+a.operator+"</strong> "),a.rules[c].group)b+=u(a.rules[c].group);else switch(b+=a.rules[c].field,a.rules[c].condition){case"IS NULL":case"IS NOT NULL":b+=" "+t(a.rules[c].condition);break;case"IS EMPTY":b+=" = ''";break;case"IS NOT EMPTY":b+=" != ''";break;default:b+=" "+t(a.rules[c].condition)+" "+a.rules[c].value}return b+")"}a.$translate=c,a.tempReport={},a.tables=q.tables;var v={group:{operator:"AND",rules:[]}};a.getReport=function(){return a.firstLoad=!0,o.get({id:d.id}).$promise.then(function(b){a.report=b,_.forEach(a.report.Fields,function(a){delete a.id}),a.report.conditions=a.report.conditions?JSON.parse(a.report.conditions):_.clone(v,!0),a.report.Fields.length&&a.getPreview()})["catch"](function(a){console.error(a),e.path("/analytics/reports/list")})},a.randomName=function(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")},a.$watch("report.table",function(b,c){b&&(r(b),c&&(a.tempReport[c]={conditions:a.report.conditions,fields:a.report.Fields}),a.firstLoad?a.firstLoad=!1:a.tempReport[b]?(a.report.Fields=a.tempReport[b].fields,a.report.conditions=a.tempReport[b].conditions):(a.report.Fields=[],a.report.conditions=_.clone(v,!0)))},!0),a.setMetricId=function(b,c){a.report.Fields[c].MetricId=b.MetricId?b.MetricId:null,a.report.Fields[c].alias=b.MetricId?b.alias:b.name},a.groupByField=[{name:"APPLICATION_YES",value:!0},{name:"APPLICATION_NO",value:!1}],a.functions=[{name:"Sum",value:"SUM"},{name:"Count",value:"COUNT"},{name:"Count Distinct",value:"COUNT DISTINCT"},{name:"Maximum",value:"MAX"},{name:"Minimum",value:"MIN"},{name:"Average",value:"AVG"},{name:"Group Concat",value:"GROUP_CONCAT"},{name:"Group Concat(asc)",value:"GROUP_CONCAT ASC"},{name:"Group Concat(desc)",value:"GROUP_CONCAT DESC"}],a.formatFunctions=[{name:"Sec To Time",value:"SEC_TO_TIME"},{name:"Date",value:"DATE"},{name:"Hour",value:"HOUR"},{name:"Round",value:"ROUND"},{name:"Unix TimeStamp",value:"UNIX_TIMESTAMP"}],a.addField=function(){a.report.Fields.push({groupBy:!1,custom:!1})},a.removeField=function(b){a.report.Fields.splice(b,1)},a.sortableOptions={"ui-floating":!0,cancel:".unsortable",handle:".report-field-handle",axis:"y"},a.toggleCustom=function(b){b.custom=!b.custom,b.custom||_.find(a.tableFields,{value:b.field})||(b.field=null)},a.updateReport=function(){if(a.report.Fields.length){var e=angular.copy(a.report);return console.log(e.conditions),e.conditions=angular.toJson(e.conditions),_.forEach(e.Fields,function(a){a.custom&&delete a.MetricId}),o.update({id:d.id},e).$promise.then(function(){b.show(c.instant("MESSAGE_WELL_DONE")+"!","success"),a.getPreview()})["catch"](function(a){b.error(a)})}b.show(c.instant("MESSAGE_SELECT_A_FIELD"),"danger")},a.$watch("report.conditions",function(b){a.output=b?u(b.group):"()"},!0),a.getPreview=function(){return a.gridOptions=null,o.get({id:d.id,controller:"preview",limit:20}).$promise.then(function(b){a.gridOptions={enableFiltering:!0,treeRowHeaderAlwaysVisible:!1,enableGridMenu:!0, -data:b.rows}})["catch"](function(a){console.log(a),b.show(c.instant(a.message||"MESSAGE_QUERY_NOT_VALID"),"warning")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.analytics.reports.view",{url:"/view/:id",templateUrl:"app/analytic/report/view/view.html",controller:"AnalyticReportViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.analytics.reports.view.settings",{url:"/settings",templateUrl:"app/analytic/report/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels",{url:"/channels",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:6}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat",{url:"/chat",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:8}}})}]),angular.module("xCallyShuttleApp").factory("ChatEnquiry",["$resource",function(a){return a("/api/chat/enquiries/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("ChatReport",["$resource",function(a){return a("/api/report/chats/:id/:controller1/:controller2",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("ChatVisitor",["$resource",function(a){return a("/api/chat/visitors/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("ChatMessage",["$resource",function(a){return a("/api/chat/messages/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("ChatRoom",["$resource",function(a){return a("/api/chat/rooms/:id/:controller",{id:"@id"},{me:{method:"GET",isArray:!0,params:{id:"me"}},users:{method:"GET",params:{id:"users"}},externals:{method:"GET",isArray:!0,params:{id:"type",controller:"external"}},groups:{method:"GET",isArray:!0,params:{id:"groups"}},update:{method:"PUT"},patch:{method:"PATCH"}})}]),angular.module("xCallyShuttleApp").controller("ChatOfflineListCtrl",["$scope","ChatEnquiry","gridOptions","uiGridConstants",function(a,b,c,d){a.initView=function(){var e={exporterCsvFilename:"chat_offline_messages.csv",columnDefs:[{name:"username",cellClass:"text-center"},{name:"email",cellClass:"text-center"},{name:"ChatWebsite.name",displayName:"Website",cellClass:"text-center"},{name:"createdAt",displayName:"createdAt",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span am-time-ago="row.entity.createdAt"></span></div>',field:"createdAt",sort:{direction:d.DESC,priority:0}},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/channels/chat/offline/view/{{row.entity.id}}",name:"detail"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.fullname, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,e,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.offline.list",{url:"/list",templateUrl:"app/channels/chat/offline/list/list.html",controller:"ChatOfflineListCtrl"})}]),angular.module("xCallyShuttleApp").directive("enquiryMessage",["$rootScope","$translate","MailMessage","List","xAlert",function(a,b,c,d,e){return{restrict:"E",scope:{message:"=",listId:"="},templateUrl:"app/channels/chat/offline/message/message.directive.html",link:function(c){c.openContact=function(f){return c.listId?d.save({listId:c.listId,controller:"contacts"},{email:f}).$promise.then(function(b){var c=_.find(a.$root.workspaces,{contactID:b.id});c?c.active=!0:a.$root.workspaces.push({active:!0,"class":"icon-user",contactID:b.id,name:b.email,type:"contact"})})["catch"](function(a){e.error(a)}):void e.show(b.instant("MESSAGE_NO_LIST_CONFIGURED"),"info")}}}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.offline",{url:"/offline",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:32}}})}]),angular.module("xCallyShuttleApp").controller("ChatOfflineViewCtrl",["$scope","$stateParams","$translate","$rootScope","ChatEnquiry","List","xAlert",function(a,b,c,d,e,f,g){a.initView=function(){return e.get({id:b.id}).$promise.then(function(b){a.enquiry=b})["catch"](function(a){g.error(a)})},a.openContact=function(b){return a.enquiry.ChatWebsite.ListId?f.save({listId:a.enquiry.ChatWebsite.ListId,controller:"contacts"},{email:b}).$promise.then(function(a){var b=_.find(d.$root.workspaces,{contactID:a.id});b?b.active=!0:d.$root.workspaces.push({active:!0,"class":"icon-user",contactID:a.id,name:a.email,type:"contact"})})["catch"](function(a){g.error(a)}):void g.show(c.instant("MESSAGE_NO_LIST_CONFIGURED"),"info")}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.offline.view",{url:"/view/:id",templateUrl:"app/channels/chat/offline/view/view.html",controller:"ChatOfflineViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("ChatOnlineListCtrl",["$scope","ChatRoom","gridOptions",function(a,b,c){a.initView=function(){var d={exporterCsvFilename:"chat_online_messages.csv",columnDefs:[{name:"ChatVisitor.fullname",displayName:"APPLICATION_FULLNAME",cellClass:"text-center"},{name:"ChatVisitor.email",displayName:"APPLICATION_EMAIL",cellClass:"text-center"},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/channels/chat/online/view/{{row.entity.id}}/detail",name:"detail"}]}]};a.gridOptions=c.gridOptions(b,d,a,{id:"online"})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.online.list",{url:"/list",templateUrl:"app/channels/chat/online/list/list.html",controller:"ChatOnlineListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.online",{url:"/online",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:8}}})}]),angular.module("xCallyShuttleApp").controller("ChatOnlineViewCtrl",["$scope","$stateParams","ChatRoom",function(a,b,c){a.initView=function(){return a.config={autoHideScrollbar:!1,theme:"light",advanced:{updateOnContentResize:!0},setHeight:400,scrollInertia:0},c.get({id:b.id}).$promise.then(function(b){a.chatRoom=b})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.online.view",{url:"/view/:id",templateUrl:"app/channels/chat/online/view/view.html",controller:"ChatOnlineViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.chat.online.view.detail",{url:"/detail",templateUrl:"app/channels/chat/online/view/view.detail.html",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/news.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("PreviewCtrl",["$scope",function(a){a.message="Hello"}]),angular.module("xCallyShuttleApp").directive("preview",["$rootScope",function(a){return{templateUrl:"app/channels/chat/preview/preview.html",restrict:"EA",link:function(a,b,c){}}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("preview",{url:"/preview",templateUrl:"app/channels/chat/preview/preview.html",controller:"PreviewCtrl",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:8}}})}]),angular.module("xCallyShuttleApp").factory("ChatQueue",["$resource",function(a){return a("/api/chat/queues/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("ChatQueueListCtrl",["$scope","ChatQueue","gridOptions","Auth","$uibModal",function(a,b,c,d,e){a.initView=function(){a.Auth=d;var e={exporterCsvFilename:"chat_queues.csv",columnDefs:[{name:"name"},{name:"description"},{name:"strategy"},{name:"timeout"},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/channels/chat/queues/view/{{row.entity.id}}/settings",name:"settings"},{"class":"green-meadow",href:"/channels/chat/queues/view/{{row.entity.id}}/agents",name:"agents",hide:"user"===d.getCurrentUser().role},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,e,a)},a.createItem=function(){var b=e.open({animation:!0,templateUrl:"app/channels/chat/queue/list/list.create.modal.html",controller:"ChatQueueListCreateCtrl",size:"lg"});b.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("ChatQueueListCreateCtrl",["$scope","$uibModalInstance","$translate","xAlert","ChatQueue","Team","strategies",function(a,b,c,d,e,f,g){a.form={},a.strategies=g,a.item={penalty:0,agents:[]},a.getTeams=function(){return f.get({controller:"associations"}).$promise.then(function(b){a.teams=b.rows}).then(function(){ComponentsDropdowns.bindQueue(a.teams,[],function(){return{select:function(b){a.item.agents=_.union(a.item.agents,b)},deselect:function(b){a.item.agents=_.difference(a.item.agents,b)}}})})["catch"](function(a){console.error(a)})},a.save=function(){return e.save(a.item).$promise.then(function(a){d.show(c.instant("MESSAGE_WELL_DONE"),"success"),b.close(a)})["catch"](function(a){d.error(a)})},a.cancel=function(){b.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.queues.list",{url:"/list",templateUrl:"app/channels/chat/queue/list/list.html",controller:"ChatQueueListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.queues",{url:"/queues",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:30}}})}]),angular.module("xCallyShuttleApp").controller("ChatQueueViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","ChatQueue","Team","Auth","strategies",function(a,b,c,d,e,f,g,h,i){a.Auth=h,a.strategies=i;var j=function(){return{select:function(b){return f.save({id:a.queue.id,controller:"agents"},{agents:b,penalty:a.queue.penalty}).$promise.then(function(){a.getTeams()})["catch"](function(a){console.log(a)})},deselect:function(b){return f["delete"]({id:a.queue.id,controller:"agents",agents:b}).$promise.then(function(){a.getTeams()})["catch"](function(a){console.log(a)})}}};a.getQueue=function(){b.get("/api/chat/queues/"+e.id).success(function(b){b.penalty=0,a.queue=b}).error(function(a){console.error(a)})},a.updateChatQueue=function(){var f=angular.copy(a.queue);b.put("/api/chat/queues/"+e.id,f).success(function(){c.show(d.instant("MESSAGE_WELL_DONE")+"!","success")}).error(function(b){a.queue=f,b.errors.forEach(function(a){c.error(err)})})},a.getTeams=function(){return g.get({controller:"associations"}).$promise.then(function(b){return a.teams=b.rows,f.get({id:e.id,controller:"agents"}).$promise}).then(function(b){ComponentsDropdowns.bindChatQueue(a.teams,_.map(b.rows,function(a){return{id:a.id,penalty:a.UserHasChatQueue.penalty}}),j)})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.queues.view",{url:"/view/:id",templateUrl:"app/channels/chat/queue/view/view.html",controller:"ChatQueueViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.chat.queues.view.settings",{url:"/settings",templateUrl:"app/channels/chat/queue/view/view.settings.html"}).state("main.channels.chat.queues.view.agents",{url:"/agents",templateUrl:"app/channels/chat/queue/view/view.agents.html",cache:!1,serie:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.realtime",{url:"/realtime",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:33}}})}]),angular.module("xCallyShuttleApp").controller("ChatRealtimeViewAgentCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","Agent","Pause","Action","ChatQueue","usSpinnerService","$q","uiGridConstants","Auth","$timeout",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){function p(){return k.spin("grid-spinner"),g.get(u).$promise.then(function(b){a.gridOptions.totalItems=b.count,a.gridOptions.data=[],b.rows.forEach(function(a){r(a)})})["catch"](function(a){f.error(a)})["finally"](function(){k.stop("grid-spinner")})}function q(){e.socket.on("agent:save",function(b){b=b.newValues||b;var c=_.find(a.gridOptions.data,{agentId:b.id,isAgent:!0});c&&(c.online=_.has(b,"online")?b.online:c.online,c.lastLoginAt=_.has(b,"lastLoginAt")?b.lastLoginAt:c.lastLoginAt,c.pause=_.has(b,"chatPause")?b.chatPause:c.chatPause,c.pauseType=_.has(b,"pauseType")?b.pauseType:c.pauseType,c.lastPauseAt=_.has(b,"lastPauseAt")?b.lastPauseAt:c.lastPauseAt,c.ipaddr=_.has(b,"ipaddr")?b.ipaddr:c.ipaddr,c.port=_.has(b,"port")?b.port:c.port,c.fullcontact=_.has(b,"fullcontact")?b.fullcontact:c.fullcontact,c.useragent=_.has(b,"useragent")?b.useragent:c.useragent,c.lastms=_.has(b,"lastms")?b.lastms:c.lastms,c.internal=_.has(b,"internal")?b.internal:c.internal,_.map(a.gridOptions.data,function(a){a.isAgent||a.agentId!==b.id||(a.online=_.has(b,"online")?b.online:a.online)}))}),e.socket.on("agent:remove",function(b){_.remove(a.gridOptions.data,{agentId:b.id})}),e.socket.on("user_has_chat_queue:save",function(b){var c=_.includes(_.map(a.CurrentUser.PChatQueues,"id"),b.ChatQueueId)||n.isAdmin();if(c){var d=_.find(a.gridOptions.data,{agentId:b.UserId,isAgent:!0});if(d){var e=a.gridOptions.data.indexOf(d);a.gridOptions.data.splice(e+1,0,{isAgent:!1,agentId:b.UserId,queue:b.queue,queueId:b.ChatQueueId,agent:b.membername,online:d.online})}}}),e.socket.on("user_has_chat_queue:remove",function(b){_.remove(a.gridOptions.data,{agentId:b.UserId,queueId:b.ChatQueueId})})}function r(b){a.gridOptions.data.push({isAgent:!0,agentId:b.id,agent:b.name,online:b.online,lastLoginAt:b.lastLoginAt,lastPauseAt:b.lastPauseAt,pause:b.chatPause,pauseType:b.pauseType,ipaddr:b.ipaddr,port:b.port,fullcontact:b.fullcontact,useragent:b.useragent,lastms:b.lastms,internal:b.internal,$$treeLevel:0}),b.ChatQueues&&b.ChatQueues.forEach(function(c){a.gridOptions.data.push({isAgent:!1,agentId:b.id,queue:c.name,queueId:c.id,agent:b.name,online:b.online})})}function s(){return h.get().$promise.then(function(b){a.pauses=b.rows,e.syncUpdates("pause",a.pauses)})["catch"](function(a){f.error(a)})}function t(){return j.get().$promise.then(function(b){a.chatQueues=b.rows,e.syncUpdates("chat_queue",a.chatQueues)})["catch"](function(a){f.error(a)})}a.chatQueues=[];var u={controller:"realtime",controller1:"chat",offset:0,limit:10};a.moment=moment,a.initAgents=function(){a.gridOptions={enableGridMenu:!0,headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,useExternalPagination:!0,useExternalSorting:!0,useExternalFiltering:!0,multiSelect:!0,showTreeExpandNoChildren:!0,columnDefs:[{name:"name",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.isAgent">{{row.entity.agent}} <{{row.entity.internal}}></div>'},{name:"online",displayName:"APPLICATION_ONLINE",width:150,headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.online != null && row.entity.isAgent"><i class="fa" data-ng-class="{\'font-green\':row.entity.online, \'font-red\':!row.entity.online,\'fa-user\':row.entity.online,\'fa-user-times\':!row.entity.online}"></i> <i data-ng-if="row.entity.online" class="fa fa-sign-out font-red pointer-cursor" title="logout" data-ng-click="grid.appScope.agentLogout(row.entity.agent,row.entity.agentId)"></i> <span data-ng-if="row.entity.online && grid.appScope.showTimers" class="left-margin"><css-timer start-time="row.entity.lastLoginAt"></css-timer></span></div>',filter:{type:m.filter.SELECT,selectOptions:[{value:"true",label:"ONLINE"},{value:"false",label:"OFFLINE"}]}},{name:"chatPause",displayName:"APPLICATION_PAUSE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'</div><div data-ng-if="row.entity.pause != null && row.entity.online" class="ui-grid-vcenter"><i data-ng-if="row.entity.pause" data-ng-click="grid.appScope.pause(row.entity,\'unpause\')" class="fa fa-play font-green pointer-cursor left-margin" title="{{\'APPLICATION_RESUME\' | translate}}"></i><i class="fa fa-pause font-yellow pointer-cursor" data-ng-click="grid.appScope.pause(row.entity,\'pause\',\'DEFAULT PAUSE\')" title="{{\'APPLICATION_DEFAULT_PAUSE\' | translate}}"></i><select data-ng-if="grid.appScope.pauses.length" class="pause-select pointer-cursor" data-ng-model="grid.appScope.pauseType" data-ng-change="grid.appScope.pause(row.entity,\'pause\',grid.appScope.pauseType)"><option class="pointer-cursor" data-ng-repeat="pause in grid.appScope.pauses">{{pause.name}}</option></select> <span data-ng-if="row.entity.pause">({{row.entity.pauseType}})</span><span data-ng-if="row.entity.pause && grid.appScope.showTimers" class="left-margin"><css-timer start-time="row.entity.lastPauseAt"></css-timer></span></div>',filter:{type:m.filter.SELECT,selectOptions:[{value:"true",label:"PAUSED"},{value:"false",label:"NOT PAUSED"}]},enableSorting:!1,enableColumnMenu:!1},{name:"queue",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"action",displayName:"",width:170,cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><button data-ng-if="row.entity.queueId" class="btn btn-xs red-sunglo" data-ng-click="grid.appScope.leaveQueue(row.entity.agentId,row.entity.queueId)"><i class="icon-ban"></i> {{\'APPLICATION_LEAVE\' | translate}}</button><button data-ng-if="row.entity.isAgent && row.treeNode.children.length < grid.appScope.chatQueues.length" class="btn btn-xs blue-hoki" data-ng-click="grid.appScope.joinQueue(row.entity.agentId)"><i class="icon-plus"></i> {{\'APPLICATION_JOIN_QUEUE\' | translate}}</button><div>',enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1}],data:[],gridMenuTitleFilter:function(a){var b=l.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){v(a.gridApi.core.getVisibleRows(a.gridApi.grid).length)}),a.gridApi.treeBase.on.rowExpanded(a,function(b){v(a.gridApi.core.getVisibleRows(a.gridApi.grid).length+b.treeNode.children.length)}),a.gridApi.treeBase.on.rowCollapsed(a,function(b){v(a.gridApi.core.getVisibleRows(a.gridApi.grid).length-b.treeNode.children.length)}),a.gridApi.core.on.sortChanged(a,function(a,b){0===b.length?u.order=null:u.order=b[0].name+" "+b[0].sort.direction.toUpperCase(),p()}),a.gridApi.pagination.on.paginationChanged(a,function(a,b){u.offset=(a-1)*b,u.limit=b,p()}),a.gridApi.core.on.filterChanged(a,function(){var a=this.grid;a.columns.forEach(function(a){a.filters[0].term?u[a.name]=a.filters[0].term:delete u[a.name]}),p()})}},p(),s(),t(),o(function(){q()})};var v=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("agent"),e.unsyncUpdates("user_has_chat_queue")}),a.pause=function(b,c,e){return e&&(a.pauseType=null),i.save({name:c,agent:b.agentId,data2:b.agent,type:e||"DEFAULT PAUSE",data4:e||"DEFAULT PAUSE",channel:"chat"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.joinQueue=function(e){var g=c.open({animation:!0,templateUrl:"app/channels/chat/realtime/view/agent/queue.modal.add.html",controller:"ChatRealtimeViewAgentQueueModalCtrl",resolve:{queues:function(){return _.reject(a.chatQueues,function(b){return!!_.find(a.gridOptions.data,{queue:b.name,isAgent:!1,agentId:e})})}}});g.result.then(function(b){return i.save({name:"QueueAdd",agent:e,queues:_.filter(a.chatQueues,function(a){return _.includes(b.queues,a.id)}),channel:"chat",data1:e,data3:b.queues.join(","),data4:"chat"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},function(){b.info("Modal dismissed at: "+new Date)})},a.leaveQueue=function(a,b){return i.save({name:"QueueRemove",agent:a,queueId:b,channel:"chat",data1:a,data3:b,data4:"chat"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.showInfo=function(a){c.open({animation:!0,templateUrl:"app/channels/chat/realtime/view/agent/agent.modal.info.html",controller:"ChatRealtimeViewAgentInfoModalCtrl",resolve:{agent:a}})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.realtime.view.agents",{url:"/agents",templateUrl:"app/channels/chat/realtime/view/agent/agent.html",controller:"ChatRealtimeViewAgentCtrl"})}]),angular.module("xCallyShuttleApp").controller("ChatRealtimeViewAgentInfoModalCtrl",["$scope","$uibModalInstance","$http","agent",function(a,b,c,d){a.agent=d,a.close=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("ChatRealtimeViewAgentQueueModalCtrl",["$scope","$uibModalInstance","$http","queues",function(a,b,c,d){a.queues=d,a.item={},a.save=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("ChatRealtimeViewApplicationCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","ReportChatSession","usSpinnerService","$q","uiGridConstants","$timeout",function(a,b,c,d,e,f,g,h,i,j,k){function l(){return h.spin("spinner-grid"),g.get({controller:"waiting",controller2:"applications"}).$promise.then(function(b){a.gridOptions.data=b.rows})["catch"](function(a){f.error(a)})["finally"](function(){m(),h.stop("spinner-grid")})}function m(){e.socket.on("report_chat_session:save",function(b){var c=_.find(a.gridOptions.data,{id:b.id});c?(_.merge(c,b),b.leaveAt&&k(function(){_.remove(a.gridOptions.data,{id:b.id})},1e4)):b.leaveAt||a.gridOptions.data.push(b)}),e.socket.on("report_chat_session:remove",function(b){_.remove(a.gridOptions.data,{id:b.id})})}a.moment=moment,a.initApplications=function(){a.gridOptions={headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,columnDefs:[{name:"uniqueid",displayName:"APPLICATION_UNIQUEID",headerCellFilter:"translate"},{name:"websitename",displayName:"APPLICATION_WEBSITE",headerCellFilter:"translate"},{name:"application",displayName:"APPLICATION_APPLICATION",headerCellFilter:"translate"},{name:"status",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span data-ng-if="!row.entity.leaveAt">{{\'APPLICATION_QUEUESTATUS_WAITING\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.abandon">{{\'APPLICATION_QUEUESTATUS_ABANDON\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.complete">{{\'APPLICATION_QUEUESTATUS_COMPLETE\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.timeout">{{\'APPLICATION_TIMEOUT\' | translate}}</span> <span data-ng-if="!row.entity.leaveAt && grid.appScope.showTimers"><css-timer start-time="row.entity.updatedAt"></css-timer></span></div>',enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1},{name:"membername",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.membername || ''}}</span></div>"},{name:"queuename",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.queuename || ''}}</span></div>"}],data:[],gridMenuTitleFilter:function(a){var b=i.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){n(a.gridOptions.data.length)})}},l()};var n=function(a){var b=a?30*a+60:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("report_chat_session")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.realtime.view.applications",{url:"/applications",templateUrl:"app/channels/chat/realtime/view/application/application.html",controller:"ChatRealtimeViewApplicationCtrl"})}]),angular.module("xCallyShuttleApp").controller("ChatRealtimeViewCtrl",["$scope",function(a){a.agents=[{name:"Queues",link:"main.chat.realtime.view.agent.queues"},{name:"Timeline",link:"main.chat.realtime.view.agent.timeline"}],a.sessions=[{name:"Sessions",link:"main.chat.realtime.view.sessions"}],a.timerSwitch={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"primary"},a.showTimers=!1}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.realtime.view",{url:"/view",templateUrl:"app/channels/chat/realtime/view/view.html",controller:"ChatRealtimeViewCtrl"})}]),angular.module("xCallyShuttleApp").factory("ReportChatSession",["$resource",function(a){return a("/api/report/chat/sessions/:id/:controller/:controller2",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.room.external",{url:"/external",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("ChatRoomExternalListCtrl",["$scope","$timeout","socket","Auth","ChatRoom","usSpinnerService","Tag","$uibModal","uibButtonConfig","uiGridConstants",function(a,b,c,d,e,f,g,h,i,j){function k(){return g.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a)})}a.openChat=function(b){return e.get({id:b.id}).$promise.then(function(b){var c=_.find(a.workspaces,{id:b.id,type:"chatRoom"});c?c.active=!0:a.workspaces.push({id:b.id,name:b.ChatVisitor.fullname,type:"chatRoom","class":"icon-bubble",active:!0})})["catch"](function(a){console.error(a)})},a.initView=function(){i.activeClass="green-haze",a.id=[],a.query={status:"OPEN",tags:[]},a.gridOptions={enableGridMenu:!1,enableFiltering:!0,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,flatEntityAccess:!0,showGridFooter:!0,fastWatch:!0,columnDefs:[{name:"tags",displayName:"",headerCellTemplate:'<i class="icon-tag" style="margin-top: 8px; margin-left: 8px;"></i>',cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><i data-ng-class=\"row.entity.tags.length ? 'icon-tag' : ''\" title=\"{{row.entity.tags}}\"></i></div>",width:30,enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"id",displayName:"ID",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><span>#{{row.entity.id}}</span></div>",width:75,enableSorting:!0,enableFiltering:!0,enableColumnMenu:!1},{name:"userpic",displayName:"",width:35,cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div> <ng-letter-avatar height="20" width="20" fontsize="12" data="{{row.entity.ChatVisitor.fullname}}" avatarcustombgcolor="#B0B0B0" charCount="2" avatarcustomborder="border:2px solid #EA4C61" shape="round"></ng-letter-avatar> </div>',enableColumnMenu:!1,enableSorting:!1,enableFiltering:!1},{name:"agent",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span style="padding-left: 5px;" class="pull-left">{{row.entity.Users[0].fullname}}</span></div>',enableSorting:!0,enableFiltering:!0,enableColumnMenu:!0},{name:"fullname",displayName:"APPLICATION_CUSTOMER_NAME",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span style="padding-left: 5px;" class="pull-left">{{row.entity.ChatVisitor.fullname}}</span></div>',enableSorting:!0,enableFiltering:!0,enableColumnMenu:!0},{name:"contact",displayName:"APPLICATION_CUSTOMER_EMAIL",headerCellFilter:"translate"},{name:"website",displayName:"APPLICATION_WEBSITE",headerCellFilter:"translate",cellClass:"text-center"},{name:"disposition",displayName:"APPLICATION_DISPOSITION",headerCellFilter:"translate"},{name:"createdAt",displayName:"APPLICATION_CREATED_AT",headerCellFilter:"translate",cellFilter:"date:'dd/MM/yyyy HH:mm'",width:120,enableFiltering:!1,sort:{direction:j.DESC}},{name:"action",displayName:"APPLICATION_ACTION",headerCellFilter:"translate",cellTemplate:'<div><a class="btn btn-xs green-meadow" href="#" data-ng-click="grid.appScope.openChat(row.entity)"><i class="icon-bubble"></i></a></div>',cellClass:"ui-grid-vcenter",width:75,enableFiltering:!1,enableSorting:!1,enableColumnMenu:!1}],data:[],onRegisterApi:function(b){a.gridApi=b,a.gridApi.selection&&(a.gridApi.selection.on.rowSelectionChanged(a,function(b){b.isSelected?a.id.push(a.gridApi.grid.options.primaryKey?b.entity[a.gridApi.grid.options.primaryKey]:b.entity.id):_.pull(a.id,a.gridApi.grid.options.primaryKey?b.entity[a.gridApi.grid.options.primaryKey]:b.entity.id)}),a.gridApi.selection.on.rowSelectionChangedBatch(a,function(b){b[0].isSelected?a.id=_.union(a.id,_.map(b,a.gridApi.grid.options.primaryKey?"entity."+a.gridApi.grid.options.primaryKey:"entity.id")):_.map(b,a.gridApi.grid.options.primaryKey?"entity."+a.gridApi.grid.options.primaryKey:"entity.id").forEach(function(b){_.pull(a.id,b)})}))}},a.getPage(),k()},a.tagItems=function(){h.open({animation:!0,templateUrl:"app/channels/chat/room/view.tags.modal.html",controller:"ChatRoomViewModalTagCtrl",resolve:{id:function(){return a.id}}}).result.then(function(){a.gridApi.selection.clearSelectedRows(),a.id=[]})},a.onChanged=function(){a.getPage()},a.$watch("query.status",function(){a.getPage()},!0),a.getPage=function(){return f.spin("spinner-grid"),e.get(_.merge({id:"externals"},a.query)).$promise.then(function(b){a.gridOptions.data=b.rows})["catch"](function(a){console.error(a)})["finally"](function(){f.stop("spinner-grid")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.room.external.list",{url:"/list",templateUrl:"app/channels/chat/room/external/list/list.html",controller:"ChatRoomExternalListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.room.group",{url:"/group",template:"<div ui-view></div>", -"abstract":!0})}]),angular.module("xCallyShuttleApp").controller("ChatRoomGroupListCtrl",["$scope","$timeout","Auth","ChatRoom","usSpinnerService","Tag","uibButtonConfig","uiGridConstants","$uibModal",function(a,b,c,d,e,f,g,h,i){function j(){return f.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a)})}a.getFullnames=function(a){var b=_.without(_.map(a.Users,"fullname"),c.getCurrentUser().fullname);return a.ChatVisitor&&b.unshift(a.ChatVisitor.fullname),b.join(", ")},a.openChat=function(b){return d.get({id:b.id}).$promise.then(function(c){var d=_.find(a.workspaces,{id:c.id,type:"chatRoom"});d?d.active=!0:a.workspaces.push({id:c.id,data:b,name:a.getFullnames(c),type:"chatRoom","class":"icon-bubble",active:!0})})["catch"](function(a){console.error(a)})},a.initView=function(){g.activeClass="green-haze",a.id=[],a.query={status:"OPEN",tags:[]},a.currentUser=c.getCurrentUser(),a.gridOptions={enableGridMenu:!1,enableColumnResizing:!0,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,flatEntityAccess:!0,showGridFooter:!0,fastWatch:!0,columnDefs:[{name:"tags",displayName:"",headerCellTemplate:'<i class="icon-tag" style="margin-top: 8px; margin-left: 8px;"></i>',cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><i data-ng-class=\"row.entity.tags.length ? 'icon-tag' : ''\" title=\"{{row.entity.tags}}\"></i></div>",width:30,enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"id",displayName:"ID",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><span>#{{row.entity.id}}</span></div>",width:75,enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"userpic",displayName:"",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div> <ng-letter-avatar data-ng-if="row.entity.ChatVisitor" height="20" width="20" fontsize="12" data="{{row.entity.ChatVisitor.fullname}}" avatarcustombgcolor="#B0B0B0" charCount="2" avatarcustomborder="border:2px solid #EA4C61" shape="round"></ng-letter-avatar> <ng-letter-avatar data-ng-repeat="user in row.entity.Users | filter:{ id: \'!\' + grid.appScope.currentUser.id} track by user.id" style="margin-right: 3px;" height="20" width="20" fontsize="12" data="{{user.fullname}}" avatarcustombgcolor="#B0B0B0" charCount="2" avatarcustomborder="border:2px solid #3399CC" shape="round"></ng-letter-avatar> </div>',enableColumnMenu:!1,enableSorting:!1,enableFiltering:!1},{name:"Users",displayName:"APPLICATION_MEMBERS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{grid.appScope.getFullnames(row.entity)}}</div>",enableSorting:!0,enableFiltering:!0,enableColumnMenu:!0},{name:"contact",displayName:"APPLICATION_CUSTOMER_EMAIL",headerCellFilter:"translate"},{name:"website",displayName:"APPLICATION_WEBSITE",headerCellFilter:"translate",cellClass:"text-center"},{name:"disposition",displayName:"APPLICATION_DISPOSITION",headerCellFilter:"translate"},{name:"createdAt",displayName:"APPLICATION_CREATED_AT",headerCellFilter:"translate",cellFilter:"date:'dd/MM/yyyy HH:mm'",width:120,enableFiltering:!1,sort:{direction:h.DESC}},{name:"action",displayName:"APPLICATION_ACTION",headerCellFilter:"translate",cellTemplate:'<div><a class="btn btn-xs green-meadow" href="#" data-ng-click="grid.appScope.openChat(row.entity)"><i class="icon-bubble"></i></a></div>',cellClass:"ui-grid-vcenter",width:75,enableFiltering:!1,enableSorting:!1,enableColumnMenu:!1}],data:[]},a.getPage(),j()},a.tagItems=function(){i.open({animation:!0,templateUrl:"app/channels/chat/room/view.tags.modal.html",controller:"ChatRoomViewModalTagCtrl",resolve:{id:function(){return a.id}}}).result.then(function(){a.gridApi.selection.clearSelectedRows(),a.id=[]})},a.onChanged=function(){a.getPage()},a.$watch("query.status",function(){a.getPage()},!0),a.getPage=function(){return e.spin("spinner-grid"),d.get(_.merge({id:"groups"},a.query)).$promise.then(function(b){a.gridOptions.data=b.rows})["catch"](function(a){console.error(a)})["finally"](function(){e.stop("spinner-grid")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.room.group.list",{url:"/list",templateUrl:"app/channels/chat/room/group/list/list.html",controller:"ChatRoomGroupListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.room.internal",{url:"/internal",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("ChatRoomInternalListCtrl",["$scope","$timeout","socket","Auth","ChatRoom","usSpinnerService",function(a,b,c,d,e,f){a.openChat=function(b){return e.users({users:[d.getCurrentUser().id,b.id]}).$promise.then(function(c){var d=_.find(a.workspaces,{id:c.id,type:"chatRoom"});d?d.active=!0:a.workspaces.push({id:c.id,name:b.fullname,type:"chatRoom","class":"icon-bubble",active:!0})})["catch"](function(a){console.error(a)})},a.initView=function(){a.gridOptions={enableGridMenu:!1,enableFiltering:!0,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,flatEntityAccess:!0,showGridFooter:!0,fastWatch:!0,columnDefs:[{name:"userpic",displayName:"",width:35,cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div> <ng-letter-avatar height="20" width="20" fontsize="12" data="{{row.entity.fullname}}" avatarcustombgcolor="#B0B0B0" charCount="2" avatarcustomborder="border:2px solid #3399CC" shape="round"></ng-letter-avatar> </div>',enableColumnMenu:!1,enableSorting:!1,enableFiltering:!1},{name:"fullname",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",enableSorting:!0,enableFiltering:!0,enableColumnMenu:!0},{name:"action",cellTemplate:'<div><a class="btn btn-xs green-meadow" href="#" data-ng-click="grid.appScope.openChat(row.entity)"><i class="icon-bubble"></i></a></div>',cellClass:"ui-grid-vcenter",width:75,enableFiltering:!1,enableSorting:!1,enableColumnMenu:!1}],data:[]},c.socket.on("user:save",function(b){if(b.online&&d.getCurrentUser().id!==b.id){var c=_.find(a.gridOptions.data,{id:b.id});c?_.merge(c,b):a.gridOptions.data.push(b)}else _.remove(a.gridOptions.data,{id:b.id})}),b(function(){c.socket.on("agent:save",function(b){if(b.online&&d.getCurrentUser().id!==b.id){var c=_.find(a.gridOptions.data,{id:b.id});c?_.merge(c,b):a.gridOptions.data.push(b)}else _.remove(a.gridOptions.data,{id:b.id})})}),e.get({id:"agents"}).$promise.then(function(b){a.gridOptions.data=b.rows})["catch"](function(a){console.error(a)})["finally"](function(){f.stop("spinner-grid")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.room.internal.list",{url:"/list",templateUrl:"app/channels/chat/room/internal/list/list.html",controller:"ChatRoomInternalListCtrl"})}]),angular.module("xCallyShuttleApp").controller("ChatRoomAddCtrl",["$scope","$uibModalInstance","Agent","items",function(a,b,c,d){a.items=d,a.agents=c.get(function(b){a.agents=b,a.items.forEach(function(b){_.remove(a.agents.rows,{id:b.id})})}),a.selected={items:[]},a.ok=function(){b.close(_.union(_.map(a.selected.items,"id"),_.map(a.items,"id")))},a.cancel=function(){b.dismiss()}}]),angular.module("xCallyShuttleApp").controller("ChatRoomCloseCtrl",["$scope","$uibModalInstance","closed","ChatWebsite","websiteId",function(a,b,c,d,e){a.modal={title:"APPLICATION_CONFIRM_CLOSE",text:"MESSAGE_ARE_YOU_SURE_YOU_WANT_TO_CLOSE_THE_CHAT"},a.initDisposition=function(){return d.get({websiteId:e,controller:"dispositions"}).$promise.then(function(b){a.dispositions=b.rows})["catch"](function(a){console.error(a)})},a.item={},a.closed=c,a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss()}}]),angular.module("xCallyShuttleApp").directive("chatRoom",["$interval","$rootScope","$uibModal","$notification","$window","socket","Auth","ChatRoom","ngAudio","xAlert","Tag","CannedAnswer","List","$translate",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){return{restrict:"E",scope:{workspace:"="},templateUrl:"app/channels/chat/room/room.directive.html",link:function(a){a.user=g.getCurrentUser(),a.ChatRoom=h,a.message={body:""},a.openContact=function(c){return a.chatRoom.ChatWebsite.List?m.save({listId:a.chatRoom.ChatWebsite.List.id,controller:"contacts"},{email:c}).$promise.then(function(a){var c=_.find(b.$root.workspaces,{contactID:a.id});c?c.active=!0:b.$root.workspaces.push({active:!0,"class":"icon-user",contactID:a.id,name:a.email,type:"contact"})})["catch"](function(a){console.error(a)}):void j.show(n.instant("MESSAGE_NO_LIST_CONFIGURED"),"info")},a.modelOptions={debounce:{"default":500,blur:250},getterSetter:!0},a.form={},a.panelLeft="col-md-4",a.panelRight="col-md-8",a.onSelect=function(){a.message.body=a.modelOptions.selectedAnswer,delete a.modelOptions.selectedAnswer},a.togglePanelLeft=function(){a.panelLeft?(a.panelLeft=null,a.panelRight="col-md-12"):(a.panelLeft="col-md-4",a.panelRight="col-md-8")},a.options={link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},code:{highlight:!0,lineNumbers:!1},basicVideo:!0},a.getAnswers=function(a){return l.get({key:a}).$promise.then(function(a){return console.log(a),_.map(a.rows,"value")})},a.isMyRoom=function(b){return!!_.find(b,{id:a.user.id})},h.get({id:a.workspace.id}).$promise.then(function(c){a.chatRoom=c,a.form.tags=c.tags,a.chatRoom.ChatVisitor&&(a.chatRoom.ChatVisitors=[],a.chatRoom.ChatVisitors.push(a.chatRoom.ChatVisitor)),f.socket.on("chat_room:save",function(b){a.chatRoom.id===b.id&&_.merge(a.chatRoom,b)}),f.socket.on("user_has_chat_room:save",function(b){return b.UserId!=a.user.id&&b.ChatRoomId==a.chatRoom.id?h.get({id:"agents",controller:b.UserId}).$promise.then(function(b){var c=_.map(a.chatRoom.Users,"fullname");a.chatRoom.ChatVisitor&&c.unshift(a.chatRoom.ChatVisitor.fullname),a.chatRoom.Users.push(b),a.workspace.name=_.without(c,g.getCurrentUser().fullname).join(", ")})["catch"](function(a){console.error(a)}):void 0}),f.socket.on("chat_message:save",function(c){a.chatRoom.id==c.ChatRoomId&&(a.user.id!=c.UserId&&a.chatRoom.ChatMessages.push(c),c.UserId?c.UserId!==g.getCurrentUser().id&&!b.settings.layout.onFocus&&e.Notification&&_.includes(c.userids,g.getCurrentUser().id)&&d("CHAT CHANNEL",{icon:"assets/images/media/channels/chat64.png",body:"NEW Chat Message!",delay:5e3}):!b.settings.layout.onFocus&&e.Notification&&_.includes(c.userids,g.getCurrentUser().id)&&d("CHAT CHANNEL",{icon:"assets/images/media/channels/chat64.png",body:"NEW Chat Message!",delay:5e3}),a.workspace.active||(i.load("api/xchatty/assets?resource=notification/xc_blubb.mp3").play(),a.workspace.unread++))})})["catch"](function(a){console.error(a)}),k.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a)}),a.closeRoom=function(b){return c.open({animation:!0,templateUrl:"app/channels/chat/room/room.close.html",controller:"ChatRoomCloseCtrl",resolve:{closed:function(){return"CLOSED"===a.chatRoom.status},websiteId:function(){return a.chatRoom.ChatWebsiteId}}}).result.then(function(a){var c={id:b,status:"CLOSED",completeReason:"agent"};return a.disposition&&(c.disposition=a.disposition),h.update(c).$promise["catch"](function(a){j.error(a)})})},a.onChanged=function(b){return h.update({id:b},{tags:a.form.tags}).$promise["catch"](function(a){console.error(a)})},a.addAgent=function(b){c.open({animation:!0,templateUrl:"app/channels/chat/room/room.add.html",controller:"ChatRoomAddCtrl",resolve:{items:function(){return _.map(a.chatRoom.Users||[],function(a){return{id:a.id,fullname:a.fullname}})}}}).result.then(function(a){return h.update({id:b,controller:"users"},{users:a}).$promise["catch"](function(a){j.error(a)})})},a.sendMessage=function(){var b={body:angular.copy(a.message.body),createdAt:moment().format(),UserId:a.user.id,User:{fullname:a.user.fullname}};return a.message.body.trim().length?(a.chatRoom.ChatMessages.push(b),a.message.body="",h.save({id:a.chatRoom.id,controller:"messages"},{body:b.body}).$promise["catch"](function(a){console.error(a)})):void 0}}}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.room",{url:"/room",templateUrl:"app/channels/chat/room/room.html",data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:31}},resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/inbox.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("ChatRoomViewModalTagCtrl",["$scope","$uibModalInstance","$translate","$stateParams","Tag","ChatRoom","xAlert","id",function(a,b,c,d,e,f,g,h){a.initModal=function(){return a.tags=[],a.item={tags:[]},a.modal={dismissable:!0,title:"APPLICATION_MESSAGE_SEND_RETRY",text:"MESSAGE_MESSAGE_SEND_RETRY",buttons:[{"class":"btn-success",text:"APPLICATION_TAG",click:function(){var d={status:!0};return f.patch({id:h},{tags:a.item.tags}).$promise["catch"](function(){d.status=!1,g.show(c.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})["finally"](function(){b.close(d)})}},{"class":"default",text:"APPLICATION_CANCEL",click:function(a){b.dismiss(a)}}]},e.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").controller("ChatVisitorListCtrl",["$scope","ChatVisitor","gridOptions","$uibModal",function(a,b,c,d){a.initView=function(){var d={exporterCsvFilename:"chat_visitors.csv",columnDefs:[{name:"fullname",cellClass:"text-center"},{name:"email",cellClass:"text-center"},{name:"origin",cellClass:"text-center"},{name:"createdAt",displayName:"createdAt",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span am-time-ago="row.entity.createdAt"></span></div>'},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/channels/chat/visitors/view/{{row.entity.id}}/profile",name:"profile"}]}]};a.gridOptions=c.gridOptions(b,d,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.visitors.list",{url:"/list",templateUrl:"app/channels/chat/visitor/list/list.html",controller:"ChatVisitorListCtrl"})}]),angular.module("xCallyShuttleApp").controller("ChatVisitorViewCtrl",["$scope","$stateParams","ChatVisitor",function(a,b,c){a.initView=function(){return c.get({id:b.id}).$promise.then(function(b){a.chatVisitor=b})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.visitors.view",{url:"/view/:id",templateUrl:"app/channels/chat/visitor/view/view.html",controller:"ChatVisitorViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.chat.visitors.view.profile",{url:"/profile",templateUrl:"app/channels/chat/visitor/view/view.profile.html"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.visitors",{url:"/visitors",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:8}}})}]),angular.module("xCallyShuttleApp").factory("ChatApplication",["$resource",function(a){return a("/api/chat/applications/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("ChatWebsite",["$resource",function(a){return a("/api/chat/websites/:websiteId/:controller/:id",{id:"@websiteId"},{update:{method:"PUT"},updateFields:{method:"PUT",isArray:!0}})}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteListCtrl",["$scope","gridOptions","ChatWebsite",function(a,b,c){a.initView=function(){var d={exporterCsvFilename:"chat_websites.csv",columnDefs:[{name:"name"},{name:"description"},{name:"address"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/channels/chat/websites/view/{{row.entity.id}}/embedding/view",name:"embedding"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=b.gridOptions(c,d,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.list",{url:"/list",templateUrl:"app/channels/chat/website/list/list.html",controller:"ChatWebsiteListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.actions",{url:"/actions",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteViewActionListCtrl",["$scope","gridOptions","ChatWebsite","$http","$translate","$stateParams","socket","xAlert","Modal",function(a,b,c,d,e,f,g,h,i){a.initActons=function(){var d={draggable:!0,exporterCsvFilename:"chat_applications.csv",enableSorting:!1,enableFiltering:!1,columnDefs:[{name:"app",cellClass:"text-center"},{name:"name",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><span>{{row.entity.ChatQueue ? row.entity.ChatQueue.name : row.entity.User.name}}</span></div>"},{name:"timeout",cellClass:"text-center"},{name:"interval",displayName:"APPLICATION_TIME_INTERVAL",cellClass:"text-center",cellTemplate:"<div><span>{{row.entity.Interval ? row.entity.Interval.name : row.entity.interval}}</span></div>"},{name:"action",width:125,buttons:[{"class":"blue-hoki",href:"/channels/chat/websites/view/{{row.entity.ChatWebsiteId}}/actions/view/{{row.entity.id}}",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.app, row.entity.id)"}]}]};a.gridOptions=b.gridOptions(c,d,a,{websiteId:f.websiteId,controller:"applications"})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.actions.list",{url:"/list",templateUrl:"app/channels/chat/website/view/action/list/list.html",controller:"ChatWebsiteViewActionListCtrl"})}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteViewActionViewCtrl",["$scope","$http","$stateParams","$translate","$location","xAlert","WizardHandler","socket","application","interval","ChatWebsite","ChatQueue","Agent","Interval","Template","MailAccount","SmsAccount",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initAction=function(){return a.$application=i.application,a.$stateParams=c,a.$interval=j.interval,a.forms={},a.apps=[{name:"Queue",value:"queue"},{name:"Agent",value:"agent"},{name:"SendMail",value:"sendMail"},{name:"SendSMS",value:"sendSms"}],k.get({websiteId:c.websiteId,controller:"applications",id:c.actionId}).$promise.then(function(b){if(a.application=b,a.application.alwaysTime=!1,a.application.IntervalId)a.application.intType="list";else switch(a.application.interval){case"*,*,*,*":a.application.intType="always";break;default:a.application.intType="custom"}if("always"===a.application.intType||"custom"===a.application.intType){var c=a.application.interval.split(",");"*"===c[0]?a.application.alwaysTime=!0:(a.application.t_from=moment(new Date),a.application.t_to=moment(new Date),a.application.t_from.hour(c[0].split("-")[0].split(":")[0]),a.application.t_from.minute(c[0].split("-")[0].split(":")[1]),a.application.t_to.hour(c[0].split("-")[1].split(":")[0]),a.application.t_to.minute(c[0].split("-")[1].split(":")[1])),"*"===c[1]?(a.application.wd_from="always",a.application.wd_to="always"):(a.application.wd_from=c[1].split("-")[0],a.application.wd_to=c[1].split("-")[1]),"*"===c[2]?(a.application.md_from="always",a.application.md_to="always"):(a.application.md_from=c[2].split("-")[0],a.application.md_to=c[2].split("-")[1]),"*"===c[3]?(a.application.m_from="always",a.application.m_to="always"):(a.application.m_from=c[3].split("-")[0],a.application.m_to=c[3].split("-")[1])}a.$watch("application.t_from",function(b){a.application.t_from_hm=moment(b).format("HH:mm")}),a.$watch("application.t_to",function(b){a.application.t_to_hm=moment(b).format("HH:mm")})})["catch"](function(a){f.error(a)})},a.getQueues=function(){return l.get().$promise.then(function(b){a.queues=b.rows})["catch"](function(a){f.error(a)})},a.getAgents=function(){return m.get().$promise.then(function(b){a.agents=b.rows})["catch"](function(a){f.error(a)})},a.getIntervals=function(){return n.get().$promise.then(function(b){a.intervals=b.rows})["catch"](function(a){f.error(a)})},a.getSmsAccounts=function(){return q.get().$promise.then(function(b){a.smsAccounts=b.rows})["catch"](function(a){console.error(a)})},a.getTemplates=function(){return o.get().$promise.then(function(b){a.templates=b.rows})["catch"](function(a){console.error(a)})},a.getMailAccounts=function(){return p.get({custom:!0}).$promise.then(function(b){a.mailAccounts=b.rows})["catch"](function(a){console.error(a)})},a.updateItem=function(){switch(a.application.intType){case"always":a.application.interval="*,*,*,*",a.application.IntervalId=null;break;case"list":var b=_.find(a.intervals,{id:a.application.IntervalId});a.application.interval=b?"":"*,*,*,*",a.application.IntervalId=b?a.application.IntervalId:null;break;case"custom":var g,h,i,j,l;g=a.application.t_from&&a.application.t_to&&!a.application.alwaysTime?moment(a.application.t_from).format("HH:mm")+"-"+moment(a.application.t_to).format("HH:mm"):"*",a.application.wd_from&&"always"!==a.application.wd_from?(h=a.application.wd_from,a.application.wd_to&&"always"!==a.application.wd_to&&(h+="-"+a.application.wd_to)):h="*",a.application.md_from&&"always"!==a.application.md_from?(i=a.application.md_from,a.application.md_to&&"always"!==a.application.md_to&&(i+="-"+a.application.md_to)):i="*",a.application.m_from&&"always"!==a.application.m_from?(j=a.application.m_from,a.application.m_to&&"always"!==a.application.m_to&&(j+="-"+a.application.m_to)):j="*",l=g+","+h+","+i+","+j,a.application.interval=l,a.application.IntervalId=null}return k.update({websiteId:c.websiteId,controller:"applications",id:c.actionId},a.application).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success"),e.path("/channels/chat/websites/view/"+c.websiteId+"/actions/list")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.actions.view",{url:"/view/:actionId",templateUrl:"app/channels/chat/website/view/action/view/view.html",controller:"ChatWebsiteViewActionViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteViewActionWizardCtrl",["$scope","$http","Agent","Interval","ChatQueue","$stateParams","$translate","$location","xAlert","WizardHandler","socket","application","interval","ChatWebsite","Template","MailAccount","SmsAccount",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initWizard=function(){a.apps=[{name:"Queue",value:"queue"},{name:"Agent",value:"agent"},{name:"SendMail",value:"sendMail"},{name:"SendSMS",value:"sendSms"}],a.$application=l.application,a.$stateParams=f,a.$interval=m.interval,a.forms={},a.application={app:"queue",intType:"always",alwaysTime:!0},a.$watch("application.t_from",function(b){a.application.t_from_hm=moment(b).format("HH:mm")}),a.$watch("application.t_to",function(b){a.application.t_to_hm=moment(b).format("HH:mm")})},a.getQueues=function(){return e.get().$promise.then(function(b){a.queues=b.rows})["catch"](function(a){console.error(a)})},a.getAgents=function(){return c.get().$promise.then(function(b){a.agents=b.rows})["catch"](function(a){i.error(a)})},a.getIntervals=function(){return d.get().$promise.then(function(b){a.intervals=b.rows})["catch"](function(a){i.error(a)})},a.getSmsAccounts=function(){return q.get().$promise.then(function(b){a.smsAccounts=b.rows})["catch"](function(a){console.error(a)})},a.getTemplates=function(){return o.get().$promise.then(function(b){a.templates=b.rows})["catch"](function(a){console.error(a)})},a.getMailAccounts=function(){return p.get().$promise.then(function(b){a.mailAccounts=b.rows})["catch"](function(a){console.error(a)})},a.createItem=function(){switch(a.application.intType){case"always":a.application.interval="*,*,*,*",a.application.IntervalId=null;break;case"list":var b=_.find(a.intervals,{id:a.application.IntervalId});a.application.interval=b?"":"*,*,*,*",a.application.IntervalId=b?a.application.IntervalId:null;break;case"custom":var c,d,e,j,k;c=a.application.t_from&&a.application.t_to&&!a.application.alwaysTime?moment(a.application.t_from).format("HH:mm")+"-"+moment(a.application.t_to).format("HH:mm"):"*",a.application.wd_from&&"always"!==a.application.wd_from?(d=a.application.wd_from,a.application.wd_to&&"always"!==a.application.wd_to&&(d+="-"+a.application.wd_to)):d="*",a.application.md_from&&"always"!==a.application.md_from?(e=a.application.md_from,a.application.md_to&&"always"!==a.application.md_to&&(e+="-"+a.application.md_to)):e="*",a.application.m_from&&"always"!==a.application.m_from?(j=a.application.m_from,a.application.m_to&&"always"!==a.application.m_to&&(j+="-"+a.application.m_to)):j="*",k=c+","+d+","+e+","+j,a.application.interval=k,a.application.IntervalId=null}return n.save({websiteId:f.websiteId,controller:"applications"},a.application).$promise.then(function(){i.show(g.instant("MESSAGE_WELL_DONE"),"success"),h.path("/channels/chat/websites/view/"+f.websiteId+"/actions/list")})["catch"](function(a){i.error(a)})},a.formValidation=function(a){return a},a.next=function(){j.wizard().next()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.actions.wizard",{url:"/wizard",templateUrl:"app/channels/chat/website/view/action/wizard/wizard.html",controller:"ChatWebsiteViewActionWizardCtrl"})}]),angular.module("xCallyShuttleApp").factory("ChatDisposition",["$resource",function(a){return a("/api/chat/dispositions/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteViewModalDispositionAddCtrl",["$scope","$uibModalInstance","ChatWebsite","id","xAlert","$translate",function(a,b,c,d,e,f){a.ok=function(){return c.save({websiteId:d,controller:"dispositions"},{name:a.name}).$promise.then(function(a){b.close(a)})["catch"](function(a){e.show(f.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteDispositionViewCtrl",["$scope","$stateParams","$uibModal","$translate","ChatWebsite","xAlert",function(a,b,c,d,e,f){a.initView=function(){return e.get({websiteId:b.websiteId,controller:"dispositions"}).$promise.then(function(b){a.dispositions=b.rows})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.updateDisposition=function(a,c){return e.update({websiteId:b.websiteId,controller:"dispositions",id:a},{name:c}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.deleteDisposition=function(c){return console.log("delete"),e.remove({websiteId:b.websiteId,controller:"dispositions",id:c}).$promise.then(function(){_.remove(a.dispositions,{id:c})})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.addDisposition=function(){return c.open({animation:!0,templateUrl:"app/channels/chat/website/view/disposition/modal/add.modal.html",controller:"ChatWebsiteViewModalDispositionAddCtrl",resolve:{id:function(){return b.websiteId}}}).result.then(function(b){b&&a.dispositions.push(b)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.dispositions",{url:"/dispositions",controller:"ChatWebsiteDispositionViewCtrl",templateUrl:"app/channels/chat/website/view/disposition/view/view.html"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.embedding",{url:"/embedding",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteViewEmbeddingViewCtrl",["$scope","$stateParams","$translate","clipboard","xAlert","ChatWebsite",function(a,b,c,d,e,f){a.initView=function(){return f.get({websiteId:b.websiteId,controller:"snippet"}).$promise.then(function(b){a.snippetCode=b.html})["catch"](function(a){e.error(a)})},a.copyToClipboard=function(){d.copyText(a.snippetCode),e.show(c.instant("MESSAGE_TEXT_COPIED_CLIPBOARD")+"!","success")}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.embedding.view",{url:"/view",templateUrl:"app/channels/chat/website/view/embedding/view/view.html",controller:"ChatWebsiteViewEmbeddingViewCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.form",{url:"/forms",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteViewFormViewCtrl",["$scope","$builder","$validator","$stateParams","$translate","ChatWebsite","xAlert",function(a,b,c,d,e,f,g){a.saveForm=function(a){var c=angular.copy(b.forms[a]);return c.length>3?g.show("You can insert at least 3 input elements","danger"):(_.forEach(c,function(a){delete a.id}),f.updateFields({websiteId:d.websiteId,controller:"fields",id:a},c).$promise.then(function(){g.show(e.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){g.error(a)}))},a.getChatWebsiteFields=function(a){return f.query({websiteId:d.websiteId,controller:"fields",id:a}).$promise.then(function(c){_.forEach(c,function(c){b.addFormObject(a,c)})})["catch"](function(a){g.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.form.view",{url:"/view",templateUrl:"app/channels/chat/website/view/form/view/view.html",controller:"ChatWebsiteViewFormViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteHooksViewCtrl",["$scope","ChatWebsite","Pause","$http","$stateParams","$translate","$location","xAlert",function(a,b,c,d,e,f,g,h){a.account={},a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.CONST_TIMEOUT=3e4,a.initView=function(){a.types=[{value:"",name:"-- None --"},{name:"HTTP GET",value:"GET"},{name:"HTTP POST",value:"POST"}],c.get().$promise.then(function(b){a.pauses=b.rows})["catch"](function(a){h.error(a)}),b.get({id:e.websiteId}).$promise.then(function(b){console.log(b),a.account=b,a.account.actions.length<1&&a.account.actions.push({action:"pause",enabled:!1,type:null})})["catch"](function(a){h.error(a)})},a.resetActionData=function(a){a.type=null},a.updateItem=function(){return console.log(a.account),b.update({id:e.websiteId},a.account).$promise.then(function(){h.show(f.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){h.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.hooks",{url:"/hooks",controller:"ChatWebsiteHooksViewCtrl",templateUrl:"app/channels/chat/website/view/hooks/view/view.html"})}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteViewProactiveListCtrl",["$scope","gridOptions","ChatWebsite","$http","$translate","$stateParams","$uibModal",function(a,b,c,d,e,f,g){ -a.initProactiveActions=function(){var d={exporterCsvFilename:"telephones.csv",columnDefs:[{name:"name"},{name:"type"},{name:"action",width:125,buttons:[{"class":"blue-hoki",onClick:"grid.appScope.createItem(row.entity)",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=b.gridOptions(c,d,a,{websiteId:f.websiteId,controller:"proactive"})},a.createItem=function(b){var c=g.open({animation:!0,templateUrl:"app/channels/chat/website/view/proactive/list/list.create.modal.html",controller:"ChatWebsiteProactiveListCreateCtrl",resolve:{item:b}});c.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteProactiveListCreateCtrl",["$scope","$translate","$uibModalInstance","$stateParams","ChatWebsite","xAlert","item",function(a,b,c,d,e,f,g){a.form={},a.item=g||{},a.title=g?b.instant("APPLICATION_EDIT_PROACTIVE_ACTION"):b.instant("APPLICATION_NEW_PROACTIVE_ACTION"),a.possibleType=[{type:"mouseOver",title:"Mouse Over"},{type:"timeout",title:"Timeout"}],a.save=function(){return g?e.update({websiteId:d.websiteId,controller:"proactive",id:a.item.id},a.item).$promise.then(function(a){f.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){f.error(a)}):e.save({websiteId:d.websiteId,controller:"proactive"},a.item).$promise.then(function(a){f.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){f.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.proactive.list",{url:"/list",templateUrl:"app/channels/chat/website/view/proactive/list/list.html",controller:"ChatWebsiteViewProactiveListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.proactive",{url:"/proactive",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteSettingViewCtrl",["$scope","$stateParams","$translate","$location","$timeout","socket","xAlert","ChatWebsite","List",function(a,b,c,d,e,f,g,h,i){a.initView=function(){return i.get().$promise.then(function(b){a.lists=b.rows})["catch"](function(a){console.error(a)})},a.updateItemChatWebsite=function(){return h.update({id:b.websiteId},{ListId:a.chatWebsite.ListId}).$promise.then(function(){g.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){g.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.settings",{url:"/settings",controller:"ChatWebsiteSettingViewCtrl",templateUrl:"app/channels/chat/website/view/setting/view/view.html"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.snippet",{url:"/snippet",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteViewSnippetViewCtrl",["$scope","$http","$stateParams","$translate","Template","$rootScope","FileUploader","$cookieStore","xAlert","ChatWebsite","MailAccount",function(a,b,c,d,e,f,g,h,i,j,k){a.$translate=d,a.isServiceMailAccount=!1,a.statePreview={state:"online"},a.radioSwitch={isActive:!!f.license.custom,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"};var l=a.uploader=new g({url:"api/chat/websites/"+c.websiteId+"/logo",queueLimit:1,withCredentials:!0,headers:{Authorization:"Bearer "+h.get("token")}});l.filters.push({name:"imageFilter",fn:function(a){var b="|"+a.type.slice(a.type.lastIndexOf("/")+1)+"|";return-1!=="|jpg|png|jpeg|".indexOf(b)}}),l.onSuccessItem=function(b,c){a.chatWebsite.logo=c.logo,i.show(d.instant("MESSAGE_WELL_DONE"),"success")},l.onErrorItem=function(){i.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")},l.onCompleteAll=function(){l.clearQueue()},a.enquirySwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.fidelitySwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.lang={HeaderCurrentlyChatting:"Live Chat",HeaderOffline:"Contact us",OperatorOfflineMessage:"It appears as if all operators are currently offline.",OfflineMessage:"<strong>We're not online.</strong><br/>It doesn't mean we're not there to help - leave your message below and we'll be in touch as soon as possible.",EnquiryMessagePlaceholder:"Your message...",EnquiryButtonText:"Leave message",EnquirySubmitSuccess:"Your message was sucessfully submitted - we will contact you as soon as possible.",OperatorComposing:"{fullname} is typing...",FirstMessageText:"",ExitChatButtonText:"Exit Chat",ExitChatQuestionText:"Are you sure?",ExitChatButtonConfirmText:"Yes",ExitChatButtonCancelText:"No",MessagePlaceholderText:"Your message...",MessageSendButtonText:"Send",ValidationEmailRequired:"Please enter your email address",ValidationEmailInvalid:"Please enter a valid email address",ValidationEmailMaxLength:"The email address may not exceed 85 characters",ValidationUsernameRequired:"Please enter your name",ValidationUsernameMaxLength:"The name may not exceed 45 characters",ValidationEnquiryRequired:"Please enter your enquiry",ValidationEnquiryMaxLength:"The enquiry may not exceed 1500 characters",ValidationMessageRequired:"Please enter your message",ValidationMessageMaxLength:"The message may not exceed 750 characters"},a.initView=function(){return j.get({id:c.websiteId}).$promise.then(function(b){return a.chatWebsite=b,e.get().$promise}).then(function(b){a.templates=b.rows})["catch"](function(a){i.error(a)})},a.getServiceMailAccount=function(){return k.get({accountId:"service"}).$promise.then(function(){a.isServiceMailAccount=!0})["catch"](function(){a.isServiceMailAccount=!1})},a.updateItem=function(){return j.update({id:a.chatWebsite.id},a.chatWebsite).$promise.then(function(){i.show(d.instant("MESSAGE_CHAT_WEBSITE_UPDATE_SUCCESS")+"!","success")})["catch"](function(a){i.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view.snippet.view",{url:"/view",templateUrl:"app/channels/chat/website/view/snippet/view/view.html",controller:"ChatWebsiteViewSnippetViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteViewCtrl",["$scope","xAlert","$http","$location","$stateParams","$translate","WizardHandler","ChatApplication","ChatWebsite",function(a,b,c,d,e,f,g,h,i){a.initView=function(){return i.get({id:e.websiteId}).$promise.then(function(b){a.chatWebsite=b})["catch"](function(a){b.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.view",{url:"/view/:websiteId",templateUrl:"app/channels/chat/website/view/view.html",controller:"ChatWebsiteViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites",{url:"/websites",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:29}}})}]),angular.module("xCallyShuttleApp").controller("ChatWebsiteWizardCtrl",["$scope","$http","$location","$translate","WizardHandler","xAlert","ChatWebsite",function(a,b,c,d,e,f,g){a.$translate=d,a.next=function(){e.wizard().next()},a.exitValidation=function(a){return a},a.initWizard=function(){a.forms={formSetting:void 0,formAppearance:void 0,formLabel:void 0,formFunctionality:void 0},a.item={},a.item.remote=c.protocol()+"://"+location.host,a.item.color="#000080",a.item.color_focus="#000080",a.item.color_button="#000080",a.item.header_shape="rounded",a.item.animation=!0,a.item.header_online="We are here!",a.item.online_message="<strong>Questions?</strong><br />Insert your name and email address to start a live-chat with our support team.",a.item.name_title="Name",a.item.username_placeholder="Your name",a.item.email_title="Email Address",a.item.email_placeholder="Your e-mail address",a.item.start_chat_button="Chat",a.item.rating_message="Would you like rate this chat?",a.item.rating_send="Send",a.item.rating_skip="Skip",a.item.header_offline="Contact us",a.item.offline_message="<strong>We're not online.</strong><br />It doesn't mean we're not there to help - leave your message below and we'll be in touch as soon as possible.",a.item.message_title="Message",a.item.enquiry_message_placeholder="Your message...",a.item.enquiry_button="Leave message",a.item.agents_busy="In this moment all agents are busy. Try again!",a.item.download_transcript=!0},a.createItem=function(){return g.save(a.item).$promise.then(function(){f.show(d.instant("MESSAGE_CHAT_WEBSITE_CREATE_SUCCESS"),"success"),c.path("/channels/chat/websites/list")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.chat.websites.wizard",{url:"/wizard",templateUrl:"app/channels/chat/website/wizard/wizard.html",controller:"ChatWebsiteWizardCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.accounts",{url:"/accounts",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:38}}})}]),angular.module("xCallyShuttleApp").controller("FaxAccountListCtrl",["$scope","$uibModal","gridOptions","FaxAccount",function(a,b,c,d){a.initView=function(){var b={exporterCsvFilename:"chat_websites.csv",columnDefs:[{name:"name"},{name:"description"},{name:"localstationid"},{name:"TrunkName",displayName:"APPLICATION_TRUNK"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/channels/fax/accounts/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(d,b,a)},a.createItem=function(){var c=b.open({animation:!0,templateUrl:"app/channels/fax/account/list/list.create.modal.html",controller:"FaxAccountListCreateCtrl"});c.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("FaxAccountListCreateCtrl",["$scope","$uibModalInstance","$translate","xAlert","FaxAccount","Trunk",function(a,b,c,d,e,f){a.initWizard=function(){return a.form={},a.item={},a.trunks=[],f.get().$promise.then(function(b){a.trunks=b.rows})["catch"](function(a){d.error(a)})},a.save=function(){return e.save(a.item).$promise.then(function(a){d.show(c.instant("MESSAGE_WELL_DONE"),"success"),b.close(a)})["catch"](function(a){d.error(a)})},a.cancel=function(){b.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.accounts.list",{url:"/list",templateUrl:"app/channels/fax/account/list/list.html",controller:"FaxAccountListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.accounts.view.actions",{url:"/actions",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("FaxAccountViewActionListCtrl",["$scope","gridOptions","FaxAccount","$http","$translate","$stateParams",function(a,b,c,d,e,f){a.initActons=function(){var d={draggable:!0,exporterCsvFilename:"fax_applications.csv",enableSorting:!1,enableFiltering:!1,columnDefs:[{name:"app",cellClass:"text-center"},{name:"name",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span>{{row.entity.app == "queue" ? row.entity.FaxQueue.name : row.entity.User.name}}</span></div>'},{name:"timeout",cellClass:"text-center"},{name:"interval",displayName:"APPLICATION_TIME_INTERVAL",cellClass:"text-center",cellTemplate:"<div><span>{{row.entity.Interval ? row.entity.Interval.name : row.entity.interval}}</span></div>"},{name:"action",width:125,buttons:[{"class":"blue-hoki",href:"/channels/fax/accounts/view/{{row.entity.FaxAccountId}}/actions/view/{{row.entity.id}}",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.app, row.entity.id)"}]}]};a.gridOptions=b.gridOptions(c,d,a,{accountId:f.accountId,controller:"applications"})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.accounts.view.actions.list",{url:"/list",templateUrl:"app/channels/fax/account/view/action/list/list.html",controller:"FaxAccountViewActionListCtrl"})}]),angular.module("xCallyShuttleApp").controller("FaxAccountViewActionViewCtrl",["$scope","$http","$stateParams","$translate","$location","xAlert","WizardHandler","socket","application","interval","Agent","Interval","FaxQueue","FaxAccount","Template","MailAccount","SmsAccount",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initAction=function(){return a.$application=i.application,a.$stateParams=c,a.$interval=j.interval,a.forms={},a.apps=[{name:"Queue",value:"queue"},{name:"Agent",value:"agent"},{name:"SendMail",value:"sendMail"},{name:"SendSMS",value:"sendSms"}],n.get({accountId:c.accountId,controller:"applications",id:c.actionId}).$promise.then(function(b){if(a.application=b,a.application.alwaysTime=!1,a.application.IntervalId)a.application.intType="list";else switch(a.application.interval){case"*,*,*,*":a.application.intType="always";break;default:a.application.intType="custom"}if("always"===a.application.intType||"custom"===a.application.intType){var c=a.application.interval.split(",");"*"===c[0]?a.application.alwaysTime=!0:(a.application.t_from=moment(new Date),a.application.t_to=moment(new Date),a.application.t_from.hour(c[0].split("-")[0].split(":")[0]),a.application.t_from.minute(c[0].split("-")[0].split(":")[1]),a.application.t_to.hour(c[0].split("-")[1].split(":")[0]),a.application.t_to.minute(c[0].split("-")[1].split(":")[1])),"*"===c[1]?(a.application.wd_from="always",a.application.wd_to="always"):(a.application.wd_from=c[1].split("-")[0],a.application.wd_to=c[1].split("-")[1]),"*"===c[2]?(a.application.md_from="always",a.application.md_to="always"):(a.application.md_from=c[2].split("-")[0],a.application.md_to=c[2].split("-")[1]),"*"===c[3]?(a.application.m_from="always",a.application.m_to="always"):(a.application.m_from=c[3].split("-")[0],a.application.m_to=c[3].split("-")[1])}a.$watch("application.t_from",function(b){a.application.t_from_hm=moment(b).format("HH:mm")}),a.$watch("application.t_to",function(b){a.application.t_to_hm=moment(b).format("HH:mm")})})["catch"](function(a){f.error(a)})},a.getQueues=function(){return m.get().$promise.then(function(b){a.queues=b.rows})["catch"](function(a){console.error(a)})},a.getAgents=function(){return k.get().$promise.then(function(b){a.agents=b.rows})["catch"](function(a){console.error(a)})},a.getIntervals=function(){return l.get().$promise.then(function(b){a.intervals=b.rows})["catch"](function(a){console.error(a)})},a.getSmsAccounts=function(){return q.get().$promise.then(function(b){a.smsAccounts=b.rows})["catch"](function(a){console.error(a)})},a.getTemplates=function(){return o.get().$promise.then(function(b){a.templates=b.rows})["catch"](function(a){console.error(a)})},a.getMailAccounts=function(){return p.get().$promise.then(function(b){a.mailAccounts=b.rows})["catch"](function(a){console.error(a)})},a.updateItem=function(){switch(a.application.intType){case"always":a.application.interval="*,*,*,*",a.application.IntervalId=null;break;case"list":var b=_.find(a.intervals,{id:a.application.IntervalId});a.application.interval=b?"":"*,*,*,*",a.application.IntervalId=b?a.application.IntervalId:null;break;case"custom":var g,h,i,j,k;g=a.application.t_from&&a.application.t_to&&!a.application.alwaysTime?moment(a.application.t_from).format("HH:mm")+"-"+moment(a.application.t_to).format("HH:mm"):"*",a.application.wd_from&&"always"!==a.application.wd_from?(h=a.application.wd_from,a.application.wd_to&&"always"!==a.application.wd_to&&(h+="-"+a.application.wd_to)):h="*",a.application.md_from&&"always"!==a.application.md_from?(i=a.application.md_from,a.application.md_to&&"always"!==a.application.md_to&&(i+="-"+a.application.md_to)):i="*",a.application.m_from&&"always"!==a.application.m_from?(j=a.application.m_from,a.application.m_to&&"always"!==a.application.m_to&&(j+="-"+a.application.m_to)):j="*",k=g+","+h+","+i+","+j,a.application.interval=k,a.application.IntervalId=null}return n.update({accountId:c.accountId,controller:"applications",id:c.actionId},a.application).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success"),e.path("/channels/fax/accounts/view/"+c.accountId+"/actions/list")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.accounts.view.actions.view",{url:"/view/:actionId",templateUrl:"app/channels/fax/account/view/action/view/view.html",controller:"FaxAccountViewActionViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("FaxAccountViewActionWizardCtrl",["$scope","$http","Agent","FaxQueue","Interval","$stateParams","$translate","$location","xAlert","WizardHandler","socket","application","interval","FaxAccount","Template","MailAccount","SmsAccount",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initWizard=function(){a.apps=[{name:"Queue",value:"queue"},{name:"Agent",value:"agent"},{name:"SendMail",value:"sendMail"},{name:"SendSMS",value:"sendSms"}],a.$application=l.application,a.$stateParams=f,a.$interval=m.interval,a.forms={},a.application={alwaysTime:!0},a.$watch("application.t_from",function(b){a.application.t_from_hm=moment(b).format("HH:mm")}),a.$watch("application.t_to",function(b){a.application.t_to_hm=moment(b).format("HH:mm")})},a.getQueues=function(){return d.get().$promise.then(function(b){a.queues=b.rows})["catch"](function(a){console.error(a)})},a.getAgents=function(){return c.get().$promise.then(function(b){a.agents=b.rows})["catch"](function(a){console.error(a)})},a.getIntervals=function(){return e.get().$promise.then(function(b){a.intervals=b.rows})["catch"](function(a){console.error(a)})},a.getSmsAccounts=function(){return q.get().$promise.then(function(b){a.smsAccounts=b.rows})["catch"](function(a){console.error(a)})},a.getTemplates=function(){return o.get().$promise.then(function(b){a.templates=b.rows})["catch"](function(a){console.error(a)})},a.getMailAccounts=function(){return p.get().$promise.then(function(b){a.mailAccounts=b.rows})["catch"](function(a){console.error(a)})},a.createItem=function(){switch(a.application.intType){case"always":a.application.interval="*,*,*,*",a.application.IntervalId=null;break;case"list":var b=_.find(a.intervals,{id:a.application.IntervalId});a.application.interval=b?"":"*,*,*,*",a.application.IntervalId=b?a.application.IntervalId:null;break;case"custom":var c,d,e,j,k;c=a.application.t_from&&a.application.t_to&&!a.application.alwaysTime?moment(a.application.t_from).format("HH:mm")+"-"+moment(a.application.t_to).format("HH:mm"):"*",a.application.wd_from&&"always"!==a.application.wd_from?(d=a.application.wd_from,a.application.wd_to&&"always"!==a.application.wd_to&&(d+="-"+a.application.wd_to)):d="*",a.application.md_from&&"always"!==a.application.md_from?(e=a.application.md_from,a.application.md_to&&"always"!==a.application.md_to&&(e+="-"+a.application.md_to)):e="*",a.application.m_from&&"always"!==a.application.m_from?(j=a.application.m_from,a.application.m_to&&"always"!==a.application.m_to&&(j+="-"+a.application.m_to)):j="*",k=c+","+d+","+e+","+j,a.application.interval=k,a.application.IntervalId=null}return n.save({accountId:f.accountId,controller:"applications"},a.application).$promise.then(function(){i.show(g.instant("MESSAGE_WELL_DONE"),"success"),h.path("/channels/fax/accounts/view/"+f.accountId+"/actions/list")})["catch"](function(a){i.error(a)})},a.formValidation=function(a){return a},a.next=function(){j.wizard().next()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.accounts.view.actions.wizard",{url:"/wizard",templateUrl:"app/channels/fax/account/view/action/wizard/wizard.html",controller:"FaxAccountViewActionWizardCtrl"})}]),angular.module("xCallyShuttleApp").factory("FaxDisposition",["$resource",function(a){return a("/api/fax/dispositions/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("FaxInboxViewModaDispositionAddCtrl",["$scope","$uibModalInstance","FaxAccount","id","xAlert",function(a,b,c,d,e){a.ok=function(){return c.save({accountId:d,controller:"dispositions"},{name:a.name}).$promise.then(function(a){b.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("FaxAccountDispositionViewCtrl",["$scope","$stateParams","$uibModal","$translate","FaxAccount","xAlert",function(a,b,c,d,e,f){a.initView=function(){return e.get({accountId:b.accountId,controller:"dispositions"}).$promise.then(function(b){a.dispositions=b.rows})["catch"](function(a){f.error(a)})},a.updateDisposition=function(a,c){return e.update({accountId:b.accountId,controller:"dispositions",id:a},{name:c}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){f.error(a)})},a.deleteDisposition=function(c){return e.remove({accountId:b.accountId,controller:"dispositions",id:c}).$promise.then(function(){_.remove(a.dispositions,{id:c})})["catch"](function(a){f.error(a)})},a.addDisposition=function(){return c.open({animation:!0,templateUrl:"app/channels/fax/account/view/disposition/modal/add.modal.html",controller:"FaxInboxViewModaDispositionAddCtrl",resolve:{id:function(){return b.accountId}}}).result.then(function(b){b&&a.dispositions.push(b)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.accounts.view.dispositions",{url:"/dispositions",controller:"FaxAccountDispositionViewCtrl",templateUrl:"app/channels/fax/account/view/disposition/view/view.html"})}]),angular.module("xCallyShuttleApp").controller("FaxAccountHooksViewCtrl",["$scope","FaxAccount","Pause","$http","$stateParams","clipboard","$translate","$location","xAlert","List",function(a,b,c,d,e,f,g,h,i,j){a.account={},a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.CONST_TIMEOUT=3e4,a.initView=function(){a.types=[{value:"",name:"-- None --"},{name:"HTTP GET",value:"GET"},{name:"HTTP POST",value:"POST"}],c.get().$promise.then(function(b){a.pauses=b.rows})["catch"](function(a){i.error(a)}),b.get({id:e.accountId}).$promise.then(function(b){a.account=b,a.account.actions.length<1&&a.account.actions.push({action:"pause",enabled:!1,type:null})})["catch"](function(a){i.error(a)})},a.resetActionData=function(a){a.type=null},a.updateItemFaxAccount=function(){return console.log(a.account),b.update({id:e.accountId},a.account).$promise.then(function(){i.show(g.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){i.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.accounts.view.hooks",{url:"/hooks",controller:"FaxAccountHooksViewCtrl",templateUrl:"app/channels/fax/account/view/hooks/view/view.html"})}]),angular.module("xCallyShuttleApp").controller("FaxAccountSettingViewCtrl",["$scope","$stateParams","$translate","FaxAccount","List","Trunk","xAlert",function(a,b,c,d,e,f,g){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initView=function(){return a.rate=["2400","4800","7200","9600","12000","14400"],a.techs=["SIP","IAX","DADHI","KHOMP"],f.get().$promise.then(function(b){a.trunks=b.rows})["catch"](function(a){g.error(a)}),e.get().$promise.then(function(b){a.lists=b.rows})["catch"](function(a){g.error(a)}),d.get({id:b.accountId}).$promise.then(function(b){a.account=b})["catch"](function(a){g.error(a)})},a.updateItemFaxAccount=function(){return d.update({id:b.accountId},a.account).$promise.then(function(){g.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){g.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.accounts.view.settings",{url:"/settings",controller:"FaxAccountSettingViewCtrl",templateUrl:"app/channels/fax/account/view/setting/view/view.html"})}]),angular.module("xCallyShuttleApp").controller("FaxAccountViewCtrl",["$scope","$http","$stateParams","$translate","$location","WizardHandler","socket","xAlert","Modal","FaxAccount",function(a,b,c,d,e,f,g,h,i,j){a.initView=function(){return j.get({id:c.accountId}).$promise.then(function(b){a.account=b})["catch"](function(a){h.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.accounts.view",{url:"/view/:accountId",templateUrl:"app/channels/fax/account/view/view.html",controller:"FaxAccountViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]})}]}})}]),angular.module("xCallyShuttleApp").controller("FaxAccountWizardCtrl",["$scope","$http","$location","$translate","xAlert","WizardHandler","Trunk","FaxAccount",function(a,b,c,d,e,f,g,h){a.translate=d,a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initWizard=function(){return a.$translate=d,a.forms={},a.item={},a.rate=["2400","4800","7200","9600","12000","14400"],a.techs=["SIP","IAX","DADHI","KHOMP"],a.item.headerinfo="xCALLY Motion Fax",a.item.ecm="yes",a.item.minrate="4800",a.item.maxrate="14400",a.item.modem="v17,v27,v29",a.item.gateway="no",a.item.faxdetect="no",a.item.t38timeout=5e3,a.item.tech="SIP",g.get().$promise.then(function(b){a.trunks=b.rows})["catch"](function(a){e.error(a)})},a.next=function(){f.wizard().next()},a.previous=function(){f.wizard().previous()},a.exitValidation=function(a){return a},a.createItem=function(){return h.save(a.item).$promise.then(function(a){e.show(d.instant("MESSAGE_WELL_DONE"),"success"),c.path("/channels/fax/accounts/list")})["catch"](function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.accounts.wizard",{url:"/wizard",templateUrl:"app/channels/fax/account/wizard/wizard.html",controller:"FaxAccountWizardCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax",{url:"/fax",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:10}}})}]),angular.module("xCallyShuttleApp").factory("FaxAccount",["$resource",function(a){return a("/api/fax/accounts/:accountId/:controller/:id",{id:"@accountId"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("FaxAttachment",["$resource",function(a){return a("/api/fax/attachments/:id/:controller",{id:"@id"})}]),angular.module("xCallyShuttleApp").factory("FaxMessage",["$resource",function(a){return a("/api/fax/messages/:id/:controller",{id:"@id",controller:"@controller"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("FaxReport",["$resource",function(a){return a("/api/report/faxs/:id/:controller1/:controller2",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("FaxRoom",["$resource",function(a){return a("/api/fax/rooms/:id/:controller",{id:"@id",controller:"@controller"},{update:{method:"PUT"},patch:{method:"PATCH"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.inbox",{url:"/inbox",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:40}}})}]),angular.module("xCallyShuttleApp").controller("FaxInboxInfoModalCtrl",["$scope","$translate","$uibModalInstance","$stateParams","xAlert","messageId","FaxMessage",function(a,b,c,d,e,f,g){a.data=null,a.initInfo=function(){g.get({id:f}).$promise.then(function(b){a.data={channel:b.channel,channelstate:b.channelstate,channelstatedesc:b.channelstatedesc,uniqueid:b.uniqueid,localstationid:b.localstationid,remotestationid:b.remotestationid,pagestransferred:b.pagestransferred,resolution:b.resolution,transferrate:b.transferrate,lastStatus:b.lastStatus,error:b.error,retry:b.retry}})["catch"](function(b){switch(b.status){case 404:a.data=null;break;default:e.error(b)}})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").directive("faxMessage",["$rootScope","$translate","$uibModal","FaxMessage","List","xAlert",function(a,b,c,d,e,f){return{restrict:"E",scope:{message:"=",listId:"="},templateUrl:"app/channels/fax/inbox/message/message.directive.html",link:function(g){g.openContact=function(c){return g.listId?e.save({listId:g.listId,controller:"contacts"},{fax:c}).$promise.then(function(b){var c=_.find(a.$root.workspaces,{contactID:b.id});c?c.active=!0:a.$root.workspaces.push({active:!0,"class":"icon-user",contactID:b.id,name:b.fax,type:"contact"})})["catch"](function(a){f.error(a)}):void f.show(b.instant("MESSAGE_NO_LIST_CONFIGURED"),"info")},g.info=function(a){c.open({animation:!0,templateUrl:"app/channels/fax/inbox/message/info.modal.html",controller:"FaxInboxInfoModalCtrl",resolve:{messageId:function(){return a.id}}})},g.retry=function(a){return d.update({id:a,status:"SENDING"}).$promise["catch"](function(a){console.error(a)})}}}}]),angular.module("xCallyShuttleApp").directive("faxNote",["$translate","Modal","Auth","FaxMessage","xAlert",function(a,b,c,d,e){return{restrict:"E",scope:{message:"="},templateUrl:"app/channels/fax/inbox/note/note.directive.html",link:function(f){f.Auth=c,f.deleteNote=b.confirm["delete"](function(){return d.remove({id:f.message.id}).$promise.then(function(){e.show(a.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){e.error(a)})})}}}]),angular.module("xCallyShuttleApp").controller("FaxInboxViewModalNoteCtrl",["$scope","$uibModalInstance","$translate","id","FaxRoom","xAlert",function(a,b,c,d,e,f){a.initModal=function(){a.item={}},a.ok=function(){return e.save({id:d,controller:"messages"},{text:a.item.text,status:"NOTE"}).$promise.then(function(){f.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})["finally"](function(){b.close()})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").directive("faxRoom",["$cookieStore","$translate","$uibModal","$timeout","FaxAccount","FaxRoom","FaxMessage","FileUploader","xAlert","usSpinnerService","socket","Tag","Auth","FaxAttachment","List",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){return{restrict:"E",scope:{workspace:"="},templateUrl:"app/channels/fax/inbox/room/room.directive.html",link:function(m){function p(a){if(a){var b=_.words(a),c=_.map(b,function(a){return a?a[0]:""});return c.join("").toUpperCase()}return!1}m.$on("$destroy",function(){}),m.initForm=function(){m.forms={compose:{}}},m.getContacts=function(a){return m.listId?o.get({listId:m.listId,controller:"contacts",fax:a}).$promise.then(function(a){return a.rows})["catch"](function(a){console.error(a)}):[]},m.setList=function(a){m.listId=a};var q=[];m.expanded=!0,m.modelOptions={debounce:{"default":500,blur:250},getterSetter:!0},m.panelLeft=null,m.panelRight="col-md-12",m.form={from:"",to:m.workspace.data&&m.workspace.data.to?[m.workspace.data.to]:[], -disabled:!1},k.socket.on("fax_message:remove",function(a){_.remove(m.faxRoom.FaxMessages,{id:a.id})}),k.socket.on("fax_message:save",function(a){return m.workspace.id&&a.FaxRoomId==m.workspace.id?(m.workspace.active||m.workspace.unread++,g.get({id:a.id}).$promise.then(function(a){m.faxRoom||(m.faxRoom={FaxMessages:[]});var b=_.findIndex(m.faxRoom.FaxMessages,{id:a.id});b>-1?_.merge(m.faxRoom.FaxMessages[b],a):m.faxRoom.FaxMessages.unshift(a),m.panelLeft="col-md-6",m.panelRight="col-md-6"})["catch"](function(a){console.error(a)})):void 0});var r=m.uploader=new h({url:"api/fax/attachments",autoUpload:!0,withCredentials:!0,queueLimit:1,headers:{Authorization:"Bearer "+a.get("token")}});return r.filters.push({name:"uploadFilter",fn:function(a){var b="|"+a.type.slice(a.type.lastIndexOf("/")+1)+"|";return-1!=="|pdf|tiff|tif".indexOf(b)}}),r.onWhenAddingFileFailed=function(a,c){switch(c.name){case"queueLimit":i.show(b.instant("MESSAGE_QUEUE_LIMIT_EXCEEDED"),"danger");break;case"uploadFilter":i.show(b.instant("MESSAGE_WRONG_FILE_FORMAT"),"danger");break;default:i.show(b.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")}},r.removeFromQueue=function(a){var c=this;return n["delete"]({id:a.basename}).$promise.then(function(){var b=c.getIndexOfItem(a),d=c.queue[b];d.isUploading&&d.cancel(),c.queue.splice(b,1),d._destroy(),c.progress=c._getTotalProgress(),q=_.reject(q,{basename:a.basename})})["catch"](function(){i.show(b.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},r.onErrorItem=function(){i.show(b.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")},r.onSuccessItem=function(a,b){var c={path:b.path,name:b.name,basename:b.basename,type:b.type};a=_.merge(a,c),q.push(c)},m.getMessageMailId=function(a){var b=a.UserId?"imgFaxUserId"+a.UserId:"imgFaxVisitorId";return b+=m.faxRoom.id.toString()+a.id.toString()},m.togglePanelLeft=function(){m.panelLeft?(m.panelLeft=null,m.panelRight="col-md-12"):(m.panelLeft="col-md-6",m.panelRight="col-md-6")},m.closeRoom=function(){return c.open({animation:!0,templateUrl:"app/channels/fax/inbox/status/status.modal.html",controller:"FaxInboxStatusModalCtrl",resolve:{status:function(){return m.faxRoom.status},accountId:function(){return m.faxRoom.FaxAccount.id}}}).result.then(function(a){return f.update({id:m.workspace.id},a).$promise["catch"](function(a){i.error(a)})})},m.loadAgents=function(){c.open({animation:!0,templateUrl:"app/channels/fax/inbox/view/view.agents.modal.html",controller:"FaxInboxViewModalAgentCtrl",resolve:{roomId:function(){return m.workspace.id}}})},m.cancel=function(){m.form.disabled=!1,m.form.from="",m.form.to=""},m.loadNote=function(){c.open({animation:!0,templateUrl:"app/channels/fax/inbox/note/note.modal.html",controller:"FaxInboxViewModalNoteCtrl",resolve:{id:function(){return m.workspace.id}}})},m.getMessageFaxId=function(a){var b=a.UserId?"imgFaxUserId"+a.UserId:"imgFaxVisitorId";return b+=m.faxRoom.id.toString()+a.id.toString()},m.getMessageRoomAvatar=function(a,b,c,e){d(function(){var d=b?"#imgFaxUserId"+b:"#imgFaxVisitorId";d+=m.faxRoom.id.toString()+a.toString(),angular.element(d).avatar({useGravatar:!1,initials:e?[]:p(c),fallbackImage:e?"api/users/avatar/"+e:"api/users/avatar/unknown_avatar"})})},m.onChanged=function(){return f.update({id:m.workspace.id},{tags:m.form.tags}).$promise["catch"](function(a){i.error(a)})},m.sendFax=function(){j.spin("spinner-grid");var a={from:m.form.from,to:m.form.to[0].fax||"",status:"SENDING",FaxAttachments:q,FaxRoomId:m.faxRoom?m.faxRoom.id:null},c=_.find(m.faxAccounts,{localstationid:m.form.from});return c?e.save({accountId:c.id,controller:"send"},a).$promise.then(function(a){return r.queue=[],q=[],i.show(b.instant("MESSAGE_WELL_DONE"),"success"),m.SmsRoom?m.SmsRoom:f.get({id:"messages",controller:a.id}).$promise}).then(function(a){a&&(m.workspace.id=a.id,m.workspace.name=a.contact,m.faxRoom=a,m.panelLeft="col-md-6",m.panelRight="col-md-6",m.expanded=!1)})["catch"](function(a){i.error(a)})["finally"](function(){j.stop("spinner-grid")}):(console.log("Can not find account"),void j.stop("spinner-grid"))},l.get().$promise.then(function(a){m.tags=_.map(a.rows,"name")})["catch"](function(a){console.error(a)}),e.get().$promise.then(function(a){m.faxAccounts=a.rows})["catch"](function(a){console.error(a)}),m.workspace.id?(m.panelLeft="col-md-6",m.panelRight="col-md-6",f.get({id:m.workspace.id}).$promise.then(function(a){m.faxRoom=a,m.form.from=a.FaxAccount.localstationid,m.form.tags=a.tags,m.workspace.name=a.contact||"No number",m.expanded=!1;var b=_.findLast(a.FaxMessages,{status:"RECEIVED"});return b&&(m.form.to=[{fax:b.from}]),k.socket.on("fax_room:save",function(a){a.id===m.workspace.id&&_.merge(m.faxRoom,a)}),a})["catch"](function(a){i.error(a)})["finally"](function(){j.stop("spinner-grid"),m.form.disabled=!1})):(m.panelLeft=null,m.panelRight="col-md-12",j.stop("spinner-grid"),void 0)}}}]),angular.module("xCallyShuttleApp").controller("FaxInboxStatusModalCtrl",["$scope","$uibModalInstance","FaxAccount","status","accountId",function(a,b,c,d,e){a.modal={title:"APPLICATION_CONFIRM_CLOSE",text:"MESSAGE_ARE_YOU_SURE_YOU_WANT_TO_CLOSE_THE_FAX"},a.initDisposition=function(){return a.item={disposition:null,status:"CLOSED"},c.get({accountId:e,controller:"dispositions"}).$promise.then(function(b){a.dispositions=b.rows})["catch"](function(a){console.error(a)})},a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.inbox.view.account",{url:"/account/:id",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:10}}})}]),angular.module("xCallyShuttleApp").controller("FaxInboxViewAccountListCtrl",["$scope","$rootScope","$uibModal","$translate","$stateParams","$state","Tag","usSpinnerService","socket","FaxAccount","FaxRoom","gridOptions","uiGridConstants","Auth","Modal","xAlert","localStorageService","uibButtonConfig",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){a.openRoom=function(b){var c=_.find(a.workspaces,{id:b,type:"faxRoom"});return c?c.active=!0:a.workspaces.push({id:b,type:"faxRoom","class":"fa fa-fax",active:!0}),b&&"agent"===n.getCurrentUser().role&&"PENDING"!==a.query.status&&"CLOSED"!==a.query.status?k.patch({id:b},{status:"OPEN",openReason:"agent"}).$promise["catch"](function(a){console.error(a)}):void 0},a.getPage=function(){h.spin("spinner-grid");var b={accountId:e.id,controller:"rooms"};return a.query&&_.merge(b,a.query),j.query(b).$promise.then(function(b){q.set("faxAccountId",e.id),a.gridOptions.data=b,i.socket.on("fax_room:save",function(b){if(b.FaxAccountId==e.id){var c=_.find(a.gridOptions.data,{id:b.id});c?c.status!==b.status?_.remove(a.gridOptions.data,{id:b.id}):_.merge(c,b):a.query.status===b.status&&a.gridOptions.data.push(b)}}),i.socket.on("fax_room:remove",function(b){_.remove(a.gridOptions.data,{id:b.id})})})["catch"](function(a){p.error(a)})["finally"](function(){h.stop("spinner-grid")})},a.initView=function(){r.activeClass="green-haze",a.id=[],a.isAdmin=n.isAdmin(),a.isAgent=n.isAgent(),a.uncheckable=!1,a.query={status:q.get("faxStatus")?q.get("faxStatus"):"NEW",tags:q.get("faxTags")?q.get("faxTags"):[]},a.$watch("query.status",function(b,c){b!==c&&(q.set("faxStatus",a.query.status),a.getPage())},!0),j.get().$promise.then(function(b){a.faxAccounts=b.rows})["catch"](function(a){console.error(a)}),g.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a)}),a.gridOptions={exporterCsvFilename:"fax_rooms.csv",enableRowHeaderSelection:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,enableFiltering:!0,enableSorting:!0,enableGridMenu:!1,flatEntityAccess:!0,showGridFooter:!0,fastWatch:!0,enableSelectAll:!0,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,columnDefs:[{name:"lastEvent",displayName:"",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div> <span data-ng-class=\"{'icon-arrow-up font-green': row.entity.lastEvent === 'SENT', 'icon-arrow-up font-yellow': row.entity.lastEvent === 'SENDING', 'icon-arrow-down font-green': row.entity.lastEvent === 'RECEIVED', 'icon-close font-red': row.entity.lastEvent === 'FAILED', 'icon-question': !row.entity.lastEvent}\"> </span> </div>",width:30,enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"tags",displayName:"",headerCellTemplate:'<i class="icon-tag" style="margin-top: 8px; margin-left: 8px;"></i>',cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><i data-ng-class=\"row.entity.tags.length ? 'icon-tag' : ''\" title=\"{{row.entity.tags}}\"></i></div>",width:30,enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"id",displayName:"Id",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><span>#{{row.entity.id}}</span></div>",width:75,enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"contact",cellClass:"text-center"},{name:"disposition",displayName:"APPLICATION_DISPOSITION",headerCellFilter:"translate"},{name:"createdAt",cellFilter:"date:'dd/MM/yyyy HH:mm'",width:120,enableFiltering:!1},{name:"updatedAt",cellFilter:"date:'dd/MM/yyyy HH:mm'",width:120,enableFiltering:!1,sort:{direction:m.DESC}},{name:"action",cellTemplate:'<div> <a class="btn btn-icon-only font-green" data-ng-hide="row.entity.waiting" data-ng-click="grid.appScope.openRoom(row.entity.id, row.entity.contact)"><i class="fa fa-fax" aria-hidden="true"></i></a> <a class="btn btn-icon-only font-red" data-ng-show="grid.appScope.isAdmin" data-ng-click="grid.appScope.deleteItem(row.entity.id, row.entity.id)"><i class="fa fa-trash" aria-hidden="true"></i> </div>',enableSorting:!1,cellClass:"ui-grid-vcenter",width:70,enableFiltering:!1,enableColumnMenu:!1}],data:[],onRegisterApi:function(b){a.gridApi=b,a.gridApi.selection&&(a.gridApi.selection.on.rowSelectionChanged(a,function(b){b.isSelected?a.id.push(a.gridApi.grid.options.primaryKey?b.entity[a.gridApi.grid.options.primaryKey]:b.entity.id):_.pull(a.id,a.gridApi.grid.options.primaryKey?b.entity[a.gridApi.grid.options.primaryKey]:b.entity.id)}),a.gridApi.selection.on.rowSelectionChangedBatch(a,function(b){b[0].isSelected?a.id=_.union(a.id,_.map(b,a.gridApi.grid.options.primaryKey?"entity."+a.gridApi.grid.options.primaryKey:"entity.id")):_.map(b,a.gridApi.grid.options.primaryKey?"entity."+a.gridApi.grid.options.primaryKey:"entity.id").forEach(function(b){_.pull(a.id,b)})}))}},a.getPage(a.query)},a.onChanged=function(){q.set("faxTags",a.query.tags),a.getPage(a.query)},a.loadAgents=function(a){c.open({animation:!0,templateUrl:"app/channels/fax/inbox/view/view.agents.modal.html",controller:"FaxInboxViewModalAgentCtrl",resolve:{roomId:a}})},a.tagItems=function(){c.open({animation:!0,templateUrl:"app/channels/fax/inbox/view/view.tags.modal.html",controller:"FaxInboxViewModalTagCtrl",resolve:{id:function(){return a.id}}}).result.then(function(){a.gridApi.selection.clearSelectedRows(),a.id=[]})},a.deleteItem=o.confirm["delete"](function(b){var c={id:b};return k.remove(c).$promise.then(function(){a.getPage(),p.show(d.instant("MESSAGE_WELL_DONE")+"!","success"),a.gridApi.selection.clearSelectedRows(),a.id=[]})["catch"](function(a){p.error(a)})}),a.deleteItems=o.confirm["delete"](function(){var b={ids:a.id};return k["delete"](b).$promise.then(function(){a.getPage(),p.show(d.instant("MESSAGE_WELL_DONE")+"!","success"),a.gridApi.selection.clearSelectedRows(),a.id=[]})["catch"](function(a){p.error(a)})}),a.disposeItems=function(){return c.open({animation:!0,templateUrl:"app/channels/fax/inbox/status/status.modal.html",controller:"FaxInboxStatusModalCtrl",resolve:{status:function(){return null},accountId:function(){return e.id}}}).result.then(function(b){return k.patch({id:a.id},b).$promise.then(function(){a.gridApi.selection.clearSelectedRows(),a.id=[]})["catch"](function(a){p.error(a)})})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.inbox.view.account.list",{url:"/list",templateUrl:"app/channels/fax/inbox/view/account/list/list.html",controller:"FaxInboxViewAccountListCtrl",data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:10}}})}]),angular.module("xCallyShuttleApp").controller("FaxInboxViewModalAgentCtrl",["$scope","$uibModalInstance","$translate","$stateParams","Agent","FaxRoom","xAlert","roomId",function(a,b,c,d,e,f,g,h){a.initModal=function(){a.agents=[],a.item={agents:[]},e.get().$promise.then(function(b){b.rows.forEach(function(b){a.agents.push(b)})})["catch"](function(a){console.error(a)}),f.query({id:h,controller:"agents"}).$promise.then(function(b){b.forEach(function(b){a.agents.push(b),a.item.agents.push(b.id)})})["catch"](function(a){console.error(a)}),a.modal={dismissable:!0,title:"APPLICATION_MESSAGE_SEND_RETRY",text:"MESSAGE_MESSAGE_SEND_RETRY",buttons:[{classes:"btn btn-success",text:"APPLICATION_RETRY",click:function(a){b.close(a)}},{classes:"btn default",text:"APPLICATION_CANCEL",click:function(a){b.dismiss(a)}}]}},a.ok=function(){return f.update({id:h,controller:"agents",agents:a.item.agents}).$promise.then(function(){g.show(c.instant("MESSAGE_WELL_DONE"),"success"),b.close()})["catch"](function(a){console.error(a)})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("FaxInboxViewCtrl",["$scope","$timeout","$location","localStorageService","FaxAccount","xAlert",function(a,b,c,d,e,f){a.initView=function(){return e.get().$promise.then(function(b){var e=null;if(a.faxAccounts=b.rows,a.faxAccounts.length){var f,g=d.get("faxAccountId");f=g&&_.find(a.faxAccounts,{id:Number(g)})?g:a.faxAccounts[0].id,e="/channels/fax/inbox/view/account/"+f+"/list"}e&&c.path(e)})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.inbox.view",{url:"/view",templateUrl:"app/channels/fax/inbox/view/view.html",controller:"FaxInboxViewCtrl",reload:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/inbox.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("FaxInboxViewModalStatusCtrl",["$scope","$uibModalInstance","$translate","$stateParams","$location","FaxRoom","xAlert","id","status",function(a,b,c,d,e,f,g,h,i){a.initModal=function(){a.modal={dismissable:!0,title:"APPLICATION_STATUS",html:"<p>"+c.instant("MESSAGE_CHANGE_STATUS")+"<strong> "+i+"</strong>?</p>",status:i,buttons:[{classes:"btn btn-success",text:"APPLICATION_CONFIRM",click:function(a){return f.update({id:h},{status:i}).$promise.then(function(){g.show(c.instant("MESSAGE_STATUS_UPDATE_SUCCESS"),"success"),b.close(a)})["catch"](function(a){g.error(a)})}},{classes:"btn default",text:"APPLICATION_CANCEL",click:function(a){b.dismiss(a)}}]}}}]),angular.module("xCallyShuttleApp").controller("FaxInboxViewModalTagCtrl",["$scope","$uibModalInstance","$translate","$stateParams","Tag","FaxRoom","xAlert","id",function(a,b,c,d,e,f,g,h){console.log(h),a.initModal=function(){return a.tags=[],a.item={tags:[]},a.modal={dismissable:!0,title:"APPLICATION_MESSAGE_SEND_RETRY",text:"MESSAGE_MESSAGE_SEND_RETRY",buttons:[{"class":"btn-success",text:"APPLICATION_TAG",click:function(){var d={status:!0};return f.patch({id:h},{tags:a.item.tags}).$promise["catch"](function(){d.status=!1,g.show(c.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})["finally"](function(){b.close(d)})}},{"class":"default",text:"APPLICATION_CANCEL",click:function(a){b.dismiss(a)}}]},e.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").factory("FaxQueue",["$resource",function(a){return a("/api/fax/queues/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("FaxQueueListCtrl",["$scope","FaxQueue","gridOptions","Auth","$uibModal",function(a,b,c,d,e){a.initView=function(){a.Auth=d;var e={exporterCsvFilename:"fax_queues.csv",columnDefs:[{name:"name"},{name:"description"},{name:"strategy"},{name:"timeout"},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/channels/fax/queues/view/{{row.entity.id}}/settings",name:"settings"},{"class":"green-meadow",href:"/channels/fax/queues/view/{{row.entity.id}}/agents",name:"agents",hide:"user"===d.getCurrentUser().role},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,e,a)},a.createItem=function(){var b=e.open({animation:!0,templateUrl:"app/channels/fax/queue/list/list.create.modal.html",controller:"FaxQueueListCreateCtrl",size:"lg"});b.result.then(function(b){console.log(b),a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("FaxQueueListCreateCtrl",["$scope","$uibModalInstance","$translate","xAlert","FaxQueue","Team","strategies",function(a,b,c,d,e,f,g){a.form={},a.strategies=g,a.item={penalty:0,agents:[]},a.getTeams=function(){return f.get({controller:"associations"}).$promise.then(function(b){a.teams=b.rows}).then(function(){ComponentsDropdowns.bindQueue(a.teams,[],function(){return{select:function(b){a.item.agents=_.union(a.item.agents,b)},deselect:function(b){a.item.agents=_.difference(a.item.agents,b)}}})})["catch"](function(a){console.error(a)})},a.save=function(){return e.save(a.item).$promise.then(function(a){d.show(c.instant("MESSAGE_WELL_DONE"),"success"),b.close(a)})["catch"](function(a){d.error(a)})},a.cancel=function(){b.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.queues.list",{url:"/list",templateUrl:"app/channels/fax/queue/list/list.html",controller:"FaxQueueListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.queues",{url:"/queues",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:39}}})}]),angular.module("xCallyShuttleApp").controller("FaxQueueViewCtrl",["$scope","$http","$translate","$stateParams","xAlert","FaxQueue","Team","Auth","strategies",function(a,b,c,d,e,f,g,h,i){a.Auth=h,a.strategies=i;var j=function(){return{select:function(b){return f.save({id:a.queue.id,controller:"agents"},{agents:b,penalty:a.queue.penalty}).$promise.then(function(){a.getTeams()})["catch"](function(a){console.error(a)})},deselect:function(b){return f["delete"]({id:a.queue.id,controller:"agents",agents:b}).$promise.then(function(){a.getTeams()})["catch"](function(a){console.error(a)})}}};a.getQueue=function(){return f.get({id:d.id}).$promise.then(function(b){b.penalty=0,a.queue=b})["catch"](function(a){e.error(a)})},a.updateFaxQueue=function(){return f.update({id:d.id},{name:a.queue.name,description:a.queue.description,timeout:a.queue.timeout,strategy:a.queue.strategy}).$promise.then(function(){e.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){e.error(a)})},a.getTeams=function(){return g.get({controller:"associations"}).$promise.then(function(b){return a.teams=b.rows,f.get({id:d.id,controller:"agents"}).$promise}).then(function(b){ComponentsDropdowns.bindMailQueue(a.teams,_.map(b.rows,function(a){return{id:a.id,penalty:a.UserHasFaxQueue.penalty}}),j)})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.queues.view",{url:"/view/:id",templateUrl:"app/channels/fax/queue/view/view.html",controller:"FaxQueueViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.fax.queues.view.settings",{url:"/settings",templateUrl:"app/channels/fax/queue/view/view.settings.html"}).state("main.channels.fax.queues.view.agents",{url:"/agents",templateUrl:"app/channels/fax/queue/view/view.agents.html",cache:!1,serie:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.realtime",{url:"/realtime",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:41}}})}]),angular.module("xCallyShuttleApp").controller("FaxRealtimeViewAgentCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","Agent","Pause","Action","FaxQueue","usSpinnerService","$q","uiGridConstants","Auth","$timeout",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){function p(){return k.spin("grid-spinner"),g.get(u).$promise.then(function(b){a.gridOptions.totalItems=b.count,a.gridOptions.data=[],b.rows.forEach(function(a){r(a)})})["catch"](function(a){f.error(a)})["finally"](function(){k.stop("grid-spinner")})}function q(){e.socket.on("agent:save",function(b){b=b.newValues||b;var c=_.find(a.gridOptions.data,{agentId:b.id,isAgent:!0});c&&(c.online=_.has(b,"online")?b.online:c.online,c.lastLoginAt=_.has(b,"lastLoginAt")?b.lastLoginAt:c.lastLoginAt,c.pause=_.has(b,"faxPause")?b.faxPause:c.faxPause,c.pauseType=_.has(b,"pauseType")?b.pauseType:c.pauseType,c.lastPauseAt=_.has(b,"lastPauseAt")?b.lastPauseAt:c.lastPauseAt,c.ipaddr=_.has(b,"ipaddr")?b.ipaddr:c.ipaddr,c.port=_.has(b,"port")?b.port:c.port,c.fullcontact=_.has(b,"fullcontact")?b.fullcontact:c.fullcontact,c.useragent=_.has(b,"useragent")?b.useragent:c.useragent,c.lastms=_.has(b,"lastms")?b.lastms:c.lastms,c.internal=_.has(b,"internal")?b.internal:c.internal,_.map(a.gridOptions.data,function(a){a.isAgent||a.agentId!==b.id||(a.online=_.has(b,"online")?b.online:a.online)}))}),e.socket.on("agent:remove",function(b){_.remove(a.gridOptions.data,{agentId:b.id})}),e.socket.on("user_has_fax_queue:save",function(b){var c=_.includes(_.map(a.CurrentUser.PFaxQueues,"id"),b.FaxQueueId)||n.isAdmin();if(c){var d=_.find(a.gridOptions.data,{agentId:b.UserId,isAgent:!0});if(d){var e=a.gridOptions.data.indexOf(d);a.gridOptions.data.splice(e+1,0,{isAgent:!1,agentId:b.UserId,queue:b.queue,queueId:b.FaxQueueId,agent:b.membername,online:d.online})}}}),e.socket.on("user_has_fax_queue:remove",function(b){_.remove(a.gridOptions.data,{agentId:b.UserId,queueId:b.FaxQueueId})})}function r(b){a.gridOptions.data.push({isAgent:!0,agentId:b.id,agent:b.name,online:b.online,lastLoginAt:b.lastLoginAt,lastPauseAt:b.lastPauseAt,pause:b.faxPause,pauseType:b.pauseType,ipaddr:b.ipaddr,port:b.port,fullcontact:b.fullcontact,useragent:b.useragent,lastms:b.lastms,internal:b.internal,$$treeLevel:0}),b.FaxQueues&&b.FaxQueues.forEach(function(c){a.gridOptions.data.push({isAgent:!1,agentId:b.id,queue:c.name,queueId:c.id,agent:b.name,online:b.online})})}function s(){return h.get().$promise.then(function(b){a.pauses=b.rows,e.syncUpdates("pause",a.pauses)})["catch"](function(a){f.error(a)})}function t(){return j.get().$promise.then(function(b){a.faxQueues=b.rows,e.syncUpdates("fax_queue",a.faxQueues)})["catch"](function(a){f.error(a)})}a.faxQueues=[];var u={controller:"realtime",controller1:"fax",offset:0,limit:10};a.moment=moment,a.initAgents=function(){a.gridOptions={enableGridMenu:!0,headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,useExternalPagination:!0,useExternalSorting:!0,useExternalFiltering:!0,multiSelect:!0,showTreeExpandNoChildren:!0,columnDefs:[{name:"name",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.isAgent">{{row.entity.agent}} <{{row.entity.internal}}></div>'},{name:"online",displayName:"APPLICATION_ONLINE",width:150,headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.online != null && row.entity.isAgent"><i class="fa" data-ng-class="{\'font-green\':row.entity.online, \'font-red\':!row.entity.online,\'fa-user\':row.entity.online,\'fa-user-times\':!row.entity.online}"></i> <i data-ng-if="row.entity.online" class="fa fa-sign-out font-red pointer-cursor" title="logout" data-ng-click="grid.appScope.agentLogout(row.entity.agent,row.entity.agentId)"></i> <span data-ng-if="row.entity.online && grid.appScope.showTimers" class="left-margin"><css-timer start-time="row.entity.lastLoginAt"></css-timer></span></div>',filter:{type:m.filter.SELECT,selectOptions:[{value:"true",label:"ONLINE"},{value:"false",label:"OFFLINE"}]}},{name:"faxPause",width:300,displayName:"APPLICATION_PAUSE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.pause != null && row.entity.online" class="ui-grid-vcenter"><i data-ng-if="row.entity.pause" data-ng-click="grid.appScope.pause(row.entity,\'unpause\')" class="fa fa-play font-green pointer-cursor left-margin" title="{{\'APPLICATION_RESUME\' | translate}}"></i><i class="fa fa-pause font-yellow pointer-cursor" data-ng-click="grid.appScope.pause(row.entity,\'pause\',\'DEFAULT PAUSE\')" title="{{\'APPLICATION_DEFAULT_PAUSE\' | translate}}"></i><select data-ng-if="grid.appScope.pauses.length" class="pause-select pointer-cursor" data-ng-model="grid.appScope.pauseType" data-ng-change="grid.appScope.pause(row.entity,\'pause\',grid.appScope.pauseType)"><option class="pointer-cursor" data-ng-repeat="pause in grid.appScope.pauses">{{pause.name}}</option></select> <span data-ng-if="row.entity.pause">({{row.entity.pauseType}})</span><span data-ng-if="row.entity.pause && grid.appScope.showTimers" class="left-margin"><css-timer start-time="row.entity.lastPauseAt"></css-timer></span></div>',filter:{type:m.filter.SELECT,selectOptions:[{value:"true",label:"PAUSED"},{value:"false",label:"NOT PAUSED"}]},enableSorting:!1,enableColumnMenu:!1},{name:"queue",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"action",displayName:"",width:170,cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><button data-ng-if="row.entity.queueId" class="btn btn-xs red-sunglo" data-ng-click="grid.appScope.leaveQueue(row.entity.agentId,row.entity.queueId)"><i class="icon-ban"></i> {{\'APPLICATION_LEAVE\' | translate}}</button><button data-ng-if="row.entity.isAgent && row.treeNode.children.length < grid.appScope.faxQueues.length" class="btn btn-xs blue-hoki" data-ng-click="grid.appScope.joinQueue(row.entity.agentId)"><i class="icon-plus"></i> {{\'APPLICATION_JOIN_QUEUE\' | translate}}</button><div>',enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1}],data:[],gridMenuTitleFilter:function(a){var b=l.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){v(a.gridApi.core.getVisibleRows(a.gridApi.grid).length)}),a.gridApi.treeBase.on.rowExpanded(a,function(b){v(a.gridApi.core.getVisibleRows(a.gridApi.grid).length+b.treeNode.children.length)}),a.gridApi.treeBase.on.rowCollapsed(a,function(b){v(a.gridApi.core.getVisibleRows(a.gridApi.grid).length-b.treeNode.children.length)}),a.gridApi.core.on.sortChanged(a,function(a,b){0===b.length?u.order=null:u.order=b[0].name+" "+b[0].sort.direction.toUpperCase(),p()}),a.gridApi.pagination.on.paginationChanged(a,function(a,b){u.offset=(a-1)*b,u.limit=b,p()}),a.gridApi.core.on.filterChanged(a,function(){var a=this.grid;a.columns.forEach(function(a){a.filters[0].term?u[a.name]=a.filters[0].term:delete u[a.name]}),p()})}},p(),s(),t(),o(function(){q()})};var v=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("agent"),e.unsyncUpdates("user_has_fax_queue")}),a.pause=function(b,c,e){return e&&(a.pauseType=null),i.save({name:c,agent:b.agentId,data2:b.agent,type:e||"DEFAULT PAUSE",data4:e||"DEFAULT PAUSE",channel:"fax"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.joinQueue=function(e){var g=c.open({animation:!0,templateUrl:"app/channels/fax/realtime/view/agent/queue.modal.add.html",controller:"FaxRealtimeViewAgentQueueModalCtrl",resolve:{queues:function(){return _.reject(a.faxQueues,function(b){return!!_.find(a.gridOptions.data,{queue:b.name,isAgent:!1,agentId:e})})}}});g.result.then(function(b){return i.save({name:"QueueAdd",agent:e,queues:_.filter(a.faxQueues,function(a){return _.includes(b.queues,a.id)}),channel:"fax",data1:e,data3:b.queues.join(","),data4:"fax"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},function(){b.info("Modal dismissed at: "+new Date)})},a.leaveQueue=function(a,b){return i.save({name:"QueueRemove",agent:a,queueId:b,channel:"fax",data1:a,data3:b,data4:"fax"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.showInfo=function(a){c.open({animation:!0,templateUrl:"app/channels/fax/realtime/view/agent/agent.modal.info.html",controller:"FaxRealtimeViewAgentInfoModalCtrl",resolve:{agent:a}})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.realtime.view.agents",{url:"/agents",templateUrl:"app/channels/fax/realtime/view/agent/agent.html",controller:"FaxRealtimeViewAgentCtrl"})}]),angular.module("xCallyShuttleApp").controller("FaxRealtimeViewAgentInfoModalCtrl",["$scope","$uibModalInstance","$http","agent",function(a,b,c,d){a.agent=d,a.close=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("FaxRealtimeViewAgentQueueModalCtrl",["$scope","$uibModalInstance","$http","queues",function(a,b,c,d){a.queues=d,a.item={},a.save=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("FaxRealtimeViewApplicationCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","ReportFaxSession","usSpinnerService","$q","uiGridConstants","$timeout",function(a,b,c,d,e,f,g,h,i,j,k){function l(){return h.spin("spinner-grid"),g.get({controller:"waiting",controller2:"applications"}).$promise.then(function(b){a.gridOptions.data=b.rows})["catch"](function(a){f.error(a)})["finally"](function(){m(),h.stop("spinner-grid")})}function m(){e.socket.on("report_fax_session:save",function(b){var c=_.find(a.gridOptions.data,{id:b.id});c?(_.merge(c,b),b.leaveAt&&k(function(){_.remove(a.gridOptions.data,{id:b.id})},1e4)):b.leaveAt||a.gridOptions.data.push(b)}),e.socket.on("report_fax_session:remove",function(b){_.remove(a.gridOptions.data,{id:b.id})})}a.moment=moment,a.initApplications=function(){a.gridOptions={headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,columnDefs:[{name:"uniqueid",displayName:"APPLICATION_UNIQUEID",headerCellFilter:"translate"},{name:"accountname",displayName:"APPLICATION_ACCOUNT",headerCellFilter:"translate"},{name:"application",displayName:"APPLICATION_APPLICATION",headerCellFilter:"translate"},{name:"status",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span data-ng-if="!row.entity.leaveAt">{{\'APPLICATION_QUEUESTATUS_WAITING\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.complete">{{\'APPLICATION_QUEUESTATUS_COMPLETE\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.timeout">{{\'APPLICATION_TIMEOUT\' | translate}}</span> <span data-ng-if="!row.entity.leaveAt && grid.appScope.showTimers"><css-timer start-time="row.entity.updatedAt"></css-timer></span></div>', -enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1},{name:"membername",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.membername || ''}}</span></div>"},{name:"queuename",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.queuename || ''}}</span></div>"}],data:[],gridMenuTitleFilter:function(a){var b=i.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){n(a.gridOptions.data.length)})}},l()};var n=function(a){var b=a?30*a+60:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("report_fax_session")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.realtime.view.applications",{url:"/applications",templateUrl:"app/channels/fax/realtime/view/application/application.html",controller:"FaxRealtimeViewApplicationCtrl"})}]),angular.module("xCallyShuttleApp").controller("FaxRealtimeViewCtrl",["$scope",function(a){a.agents=[{name:"Queues",link:"main.channels.fax.realtime.view.agents.queues"},{name:"Timeline",link:"main.channels.fax.realtime.view.agents.timeline"}],a.sessions=[{name:"Sessions",link:"main.channels.fax.realtime.view.sessions"}],a.tree={queues:[{name:"Queues",link:"main.channels.fax.realtime.view.agents.queues"},{name:"Timeline",link:"main.channels.fax.realtime.view.agents.timeline"}],sessions:[{name:"Sessions",link:"main.channels.fax.realtime.view.sessions"}]},a.timerSwitch={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"primary"},a.showTimers=!1}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.fax.realtime.view",{url:"/view",templateUrl:"app/channels/fax/realtime/view/view.html",controller:"FaxRealtimeViewCtrl"})}]),angular.module("xCallyShuttleApp").factory("ReportFaxSession",["$resource",function(a){return a("/api/report/fax/sessions/:id/:controller/:controller2",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("MailAccount",["$resource",function(a){return a("/api/mail/accounts/:accountId/:controller/:id",{id:"@accountId"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.accounts",{url:"/accounts",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:34}}})}]),angular.module("xCallyShuttleApp").controller("MailAccountListCtrl",["$scope","$stateParams","gridOptions","MailAccount","socket",function(a,b,c,d,e){a.$on("$destroy",function(){e.unsyncUpdates("mail_server_in")}),a.initView=function(){e.socket.on("mail_server_in:save",function(b){var c=_.find(a.gridOptions.data,{id:b.MailAccountId});c&&(c.MailServerIn.state=b.state,c.MailServerIn.source=JSON.parse(b.source))});var f={exporterCsvFilename:"mail_accounts.csv",columnDefs:[{name:"name"},{name:"description"},{name:"address"},{name:"MailServerIn.state",width:100,cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div> <span data-ng-if="row.entity.MailServerIn" class="label label-sm" data-ng-class="row.entity.MailServerIn.state === \'CONNECTED\' ? \'label-success\' : \'label-danger\'">{{row.entity.MailServerIn.state}}</span> <span data-ng-if="!row.entity.MailServerIn" class="label label-sm label-info" >{{\'APPLICATION_DISABLED\' | translate | uppercase}}</span> </div>',displayName:"IMAP",enableSorting:!1,enableFiltering:!1},{name:"MailServerOut.state",width:110,cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><span class=\"label label-sm\" data-ng-class=\"row.entity.MailServerOut.state === 'CONNECTED' ? 'label-success' : 'label-danger'\">{{row.entity.MailServerOut.state}}</span></div>",displayName:"SMTP",enableSorting:!1,enableFiltering:!1},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/channels/mail/accounts/view/{{row.entity.id}}/settings",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(d,f,a,{accountId:b.accountId})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.accounts.list",{url:"/list",templateUrl:"app/channels/mail/account/list/list.html",controller:"MailAccountListCtrl"})}]),angular.module("xCallyShuttleApp").factory("MailServerIn",["$resource",function(a){return a("/api/mail/servers/in/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("MailServerOut",["$resource",function(a){return a("/api/mail/servers/out/:id/:controller",{id:"@id"},{update:{method:"PUT"},test:{method:"GET"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.accounts.view.actions",{url:"/actions",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("MailAccountViewActionListCtrl",["$scope","gridOptions","MailAccount","$http","$translate","$stateParams",function(a,b,c,d,e,f){a.initActons=function(){var d={draggable:!0,exporterCsvFilename:"mail_applications.csv",enableSorting:!1,enableFiltering:!1,columnDefs:[{name:"app",cellClass:"text-center"},{name:"name",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span>{{row.entity.app == "queue" ? row.entity.MailQueue.name : row.entity.User.name}}</span></div>'},{name:"timeout",cellClass:"text-center"},{name:"interval",displayName:"APPLICATION_TIME_INTERVAL",cellClass:"text-center",cellTemplate:"<div><span>{{row.entity.Interval ? row.entity.Interval.name : row.entity.interval}}</span></div>"},{name:"action",width:125,buttons:[{"class":"blue-hoki",href:"/channels/mail/accounts/view/{{row.entity.MailAccountId}}/actions/view/{{row.entity.id}}",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.app, row.entity.id)"}]}]};a.gridOptions=b.gridOptions(c,d,a,{accountId:f.accountId,controller:"applications"})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.accounts.view.actions.list",{url:"/list",templateUrl:"app/channels/mail/account/view/action/list/list.html",controller:"MailAccountViewActionListCtrl"})}]),angular.module("xCallyShuttleApp").controller("MailAccountViewActionViewCtrl",["$scope","$http","$stateParams","$translate","$location","xAlert","WizardHandler","socket","application","interval","Agent","Interval","MailQueue","MailAccount","Template","SmsAccount",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initAction=function(){return a.$application=i.application,a.$stateParams=c,a.$interval=j.interval,a.forms={},a.apps=[{name:"Queue",value:"queue"},{name:"Agent",value:"agent"},{name:"SendMail",value:"sendMail"},{name:"ReplyMail",value:"replyMail"},{name:"SendSMS",value:"sendSms"}],a.types=[{key:"APPLICATION_REPLY",value:"reply"},{key:"APPLICATION_REPLY_TO_ALL",value:"replyAll"}],n.get({accountId:c.accountId,controller:"applications",id:c.actionId}).$promise.then(function(b){if(a.application=b,a.application.alwaysTime=!1,a.application.IntervalId)a.application.intType="list";else switch(a.application.interval){case"*,*,*,*":a.application.intType="always";break;default:a.application.intType="custom"}if("always"===a.application.intType||"custom"===a.application.intType){var c=a.application.interval.split(",");"*"===c[0]?a.application.alwaysTime=!0:(a.application.t_from=moment(new Date),a.application.t_to=moment(new Date),a.application.t_from.hour(c[0].split("-")[0].split(":")[0]),a.application.t_from.minute(c[0].split("-")[0].split(":")[1]),a.application.t_to.hour(c[0].split("-")[1].split(":")[0]),a.application.t_to.minute(c[0].split("-")[1].split(":")[1])),"*"===c[1]?(a.application.wd_from="always",a.application.wd_to="always"):(a.application.wd_from=c[1].split("-")[0],a.application.wd_to=c[1].split("-")[1]),"*"===c[2]?(a.application.md_from="always",a.application.md_to="always"):(a.application.md_from=c[2].split("-")[0],a.application.md_to=c[2].split("-")[1]),"*"===c[3]?(a.application.m_from="always",a.application.m_to="always"):(a.application.m_from=c[3].split("-")[0],a.application.m_to=c[3].split("-")[1])}a.$watch("application.t_from",function(b){a.application.t_from_hm=moment(b).format("HH:mm")}),a.$watch("application.t_to",function(b){a.application.t_to_hm=moment(b).format("HH:mm")})})["catch"](function(a){console.error(a),f.error(a)})},a.getQueues=function(){return m.get().$promise.then(function(b){a.queues=b.rows})["catch"](function(a){console.error(a)})},a.getAgents=function(){return k.get().$promise.then(function(b){a.agents=b.rows})["catch"](function(a){console.error(a)})},a.getIntervals=function(){return l.get().$promise.then(function(b){a.intervals=b.rows})["catch"](function(a){console.error(a)})},a.getTemplates=function(){return o.get().$promise.then(function(b){a.templates=b.rows})["catch"](function(a){console.error(a)})},a.getMailAccounts=function(){return n.get().$promise.then(function(b){a.mailAccounts=b.rows})["catch"](function(a){console.error(a)})},a.getSmsAccounts=function(){return p.get().$promise.then(function(b){a.smsAccounts=b.rows})["catch"](function(a){console.error(a)})},a.updateItem=function(){switch(a.application.intType){case"always":a.application.interval="*,*,*,*",a.application.IntervalId=null;break;case"list":var b=_.find(a.intervals,{id:a.application.IntervalId});a.application.interval=b?"":"*,*,*,*",a.application.IntervalId=b?a.application.IntervalId:null;break;case"custom":var g,h,i,j,k;g=a.application.t_from&&a.application.t_to&&!a.application.alwaysTime?moment(a.application.t_from).format("HH:mm")+"-"+moment(a.application.t_to).format("HH:mm"):"*",a.application.wd_from&&"always"!==a.application.wd_from?(h=a.application.wd_from,a.application.wd_to&&"always"!==a.application.wd_to&&(h+="-"+a.application.wd_to)):h="*",a.application.md_from&&"always"!==a.application.md_from?(i=a.application.md_from,a.application.md_to&&"always"!==a.application.md_to&&(i+="-"+a.application.md_to)):i="*",a.application.m_from&&"always"!==a.application.m_from?(j=a.application.m_from,a.application.m_to&&"always"!==a.application.m_to&&(j+="-"+a.application.m_to)):j="*",k=g+","+h+","+i+","+j,a.application.interval=k,a.application.IntervalId=null}return n.update({accountId:c.accountId,controller:"applications",id:c.actionId},a.application).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success"),e.path("/channels/mail/accounts/view/"+c.accountId+"/actions/list")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.accounts.view.actions.view",{url:"/view/:actionId",templateUrl:"app/channels/mail/account/view/action/view/view.html",controller:"MailAccountViewActionViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("MailAccountViewActionWizardCtrl",["$scope","$http","Agent","Template","MailQueue","MailAccount","Interval","$stateParams","$translate","$location","xAlert","WizardHandler","socket","application","interval","SmsAccount",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initWizard=function(){a.apps=[{name:"Queue",value:"queue"},{name:"Agent",value:"agent"},{name:"SendMail",value:"sendMail"},{name:"ReplyMail",value:"replyMail"},{name:"SendSMS",value:"sendSms"}],a.types=[{key:"APPLICATION_REPLY",value:"reply"},{key:"APPLICATION_REPLY_TO_ALL",value:"replyAll"}],a.$application=n.application,a.$stateParams=h,a.$interval=o.interval,a.forms={},a.application={alwaysTime:!0},a.$watch("application.t_from",function(b){a.application.t_from_hm=moment(b).format("HH:mm")}),a.$watch("application.t_to",function(b){a.application.t_to_hm=moment(b).format("HH:mm")})},a.getQueues=function(){return e.get().$promise.then(function(b){a.queues=b.rows})["catch"](function(a){console.error(a)})},a.getAgents=function(){return c.get().$promise.then(function(b){a.agents=b.rows})["catch"](function(a){console.error(a)})},a.getTemplates=function(){return d.get().$promise.then(function(b){a.templates=b.rows})["catch"](function(a){console.error(a)})},a.getSmsAccounts=function(){return p.get().$promise.then(function(b){a.smsAccounts=b.rows})["catch"](function(a){console.error(a)})},a.getMailAccounts=function(){return f.get().$promise.then(function(b){a.mailAccounts=b.rows})["catch"](function(a){console.error(a)})},a.getIntervals=function(){return g.get().$promise.then(function(b){a.intervals=b.rows})["catch"](function(a){console.error(a)})},a.createItem=function(){switch(a.application.intType){case"always":a.application.interval="*,*,*,*",a.application.IntervalId=null;break;case"list":var b=_.find(a.intervals,{id:a.application.IntervalId});a.application.interval=b?"":"*,*,*,*",a.application.IntervalId=b?a.application.IntervalId:null;break;case"custom":var c,d,e,g,i;c=a.application.t_from&&a.application.t_to&&!a.application.alwaysTime?moment(a.application.t_from).format("HH:mm")+"-"+moment(a.application.t_to).format("HH:mm"):"*",a.application.wd_from&&"always"!==a.application.wd_from?(d=a.application.wd_from,a.application.wd_to&&"always"!==a.application.wd_to&&(d+="-"+a.application.wd_to)):d="*",a.application.md_from&&"always"!==a.application.md_from?(e=a.application.md_from,a.application.md_to&&"always"!==a.application.md_to&&(e+="-"+a.application.md_to)):e="*",a.application.m_from&&"always"!==a.application.m_from?(g=a.application.m_from,a.application.m_to&&"always"!==a.application.m_to&&(g+="-"+a.application.m_to)):g="*",i=c+","+d+","+e+","+g,a.application.interval=i,a.application.IntervalId=null}return f.save({accountId:h.accountId,controller:"applications"},a.application).$promise.then(function(){j.path("/channels/mail/accounts/view/"+h.accountId+"/actions/list")})["catch"](function(a){console.error(a)})},a.formValidation=function(a){return a},a.next=function(){l.wizard().next()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.accounts.view.actions.wizard",{url:"/wizard",templateUrl:"app/channels/mail/account/view/action/wizard/wizard.html",controller:"MailAccountViewActionWizardCtrl"})}]),angular.module("xCallyShuttleApp").factory("MailDisposition",["$resource",function(a){return a("/api/mail/dispositions/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("MailInboxViewModaDispositionAddCtrl",["$scope","$uibModalInstance","MailAccount","id","xAlert","$translate",function(a,b,c,d,e,f){a.ok=function(){return c.save({accountId:d,controller:"dispositions"},{name:a.name}).$promise.then(function(a){b.close(a)})["catch"](function(a){e.show(f.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("MailAccountDispositionViewCtrl",["$scope","$stateParams","$uibModal","$translate","MailAccount","xAlert",function(a,b,c,d,e,f){a.initView=function(){return e.get({accountId:b.accountId,controller:"dispositions"}).$promise.then(function(b){a.dispositions=b.rows})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.updateDisposition=function(a,c){return e.update({accountId:b.accountId,controller:"dispositions",id:a},{name:c}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.deleteDisposition=function(c){return console.log("delete"),e.remove({accountId:b.accountId,controller:"dispositions",id:c}).$promise.then(function(){_.remove(a.dispositions,{id:c})})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.addDisposition=function(){return c.open({animation:!0,templateUrl:"app/channels/mail/account/view/disposition/modal/add.modal.html",controller:"MailInboxViewModaDispositionAddCtrl",resolve:{id:function(){return b.accountId}}}).result.then(function(b){b&&a.dispositions.push(b)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.accounts.view.dispositions",{url:"/dispositions",controller:"MailAccountDispositionViewCtrl",templateUrl:"app/channels/mail/account/view/disposition/view/view.html"})}]),angular.module("xCallyShuttleApp").controller("MailAccountHooksViewCtrl",["$scope","MailAccount","Pause","$http","$stateParams","clipboard","$translate","$location","xAlert","List",function(a,b,c,d,e,f,g,h,i,j){a.account={},a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.CONST_TIMEOUT=3e4,a.initView=function(){a.types=[{value:"",name:"-- None --"},{name:"HTTP GET",value:"GET"},{name:"HTTP POST",value:"POST"}],c.get().$promise.then(function(b){a.pauses=b.rows})["catch"](function(a){i.error(a)}),b.get({id:e.accountId}).$promise.then(function(b){a.account=b,a.account.actions.length<1&&a.account.actions.push({action:"pause",enabled:!1,type:null})})["catch"](function(a){i.error(a)})},a.resetActionData=function(a){a.type=null},a.updateItemMailAccount=function(){return console.log(a.account),b.update({id:e.accountId},a.account).$promise.then(function(){i.show(g.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){i.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.accounts.view.hooks",{url:"/hooks",controller:"MailAccountHooksViewCtrl",templateUrl:"app/channels/mail/account/view/hooks/view/view.html"})}]),angular.module("xCallyShuttleApp").controller("MailAccountOtherViewCtrl",["$scope","$rootScope","$stateParams","$translate","xAlert","MailAccount",function(a,b,c,d,e,f){a.initView=function(){return a.options={language:b.language,allowedContent:!0,entities:!1,skin:"office2013",contentsCss:"/assets/css/global/richparams.css",extraPlugins:"autogrow",autoGrow_minHeight:450,disableNativeSpellChecker:!1,toolbar:[{name:"clipboard",items:["Cut","Copy","Paste","PasteText","PasteFromWord","-","Undo","Redo"]},{name:"links",items:["Link","Unlink","Anchor"]},{name:"insert",items:["Image","Table","HorizontalRule","SpecialChar"]},{name:"tools",items:["Maximize"]},{name:"document",items:["Source"]},"/",{name:"basicstyles",items:["Bold","Italic","Underline","Strike","Subscript","Superscript","-","RemoveFormat"]},{name:"paragraph",items:["NumberedList","BulletedList","-","Outdent","Indent","-","Blockquote"]},{name:"styles",items:["Styles","Format"]},"/",{name:"motion",items:["voice","chat","mail"]}]},f.get({id:c.accountId}).$promise.then(function(b){console.log(b),a.account=b})["catch"](function(a){e.error(a)})},a.updateItemMailAccount=function(){return f.update({id:c.accountId},{whiteLabel:a.account.whiteLabel,signature:a.account.signature}).$promise.then(function(){e.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.accounts.view.other",{url:"/other",controller:"MailAccountOtherViewCtrl",templateUrl:"app/channels/mail/account/view/other/view/view.html"})}]),angular.module("xCallyShuttleApp").controller("MailAccountSettingViewCtrl",["$scope","$http","$stateParams","$translate","$location","$timeout","socket","xAlert","MailAccount","MailMessage","MailServerIn","MailServerOut","usSpinnerService","List","Template",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){a.imapDisabled=!1,a.smtpDisabled=!1,a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.CONST_TIMEOUT=3e4,a.$on("$destroy",function(){g.socket.removeAllListeners("mail_message:sent"),g.socket.removeAllListeners("mail_message:failed"),g.socket.removeAllListeners("mail_server_in:state"),g.socket.removeAllListeners("mail_server_out:state")}),a.initView=function(){return g.socket.on("mail_message:sent",function(){h.show(d.instant("MESSAGE_WELL_DONE"),"success"),m.stop("spinner-grid")}),g.socket.on("mail_message:failed",function(){h.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger"),m.stop("spinner-grid")}),n.get().$promise.then(function(b){a.lists=b.rows})["catch"](function(a){console.error(a)}),o.get().$promise.then(function(b){a.templates=b.rows})["catch"](function(a){console.error(a)}),i.get({id:c.accountId}).$promise.then(function(b){a.account=b,a.account.MailServerIn&&(a.account.MailServerIn.source=JSON.parse(a.account.MailServerIn.source),a.account.MailServerOut.source=JSON.parse(a.account.MailServerOut.source),g.socket.on("mail_server_in:state",function(b){if(b.id===a.account.MailServerIn.id)switch(a.account.MailServerIn.state=b.state,a.account.MailServerIn.source=JSON.parse(b.source),b.state){case"CONNECTING":break;default:m.stop("spinner-grid"),a.imapDisabled=!1}})),g.socket.on("mail_server_out:state",function(b){if(b.id===a.account.MailServerOut.id)switch(a.account.MailServerOut.state=b.state,a.account.MailServerOut.source=JSON.parse(b.source),b.state){case"CONNECTING":break;default:m.stop("spinner-grid"),a.smtpDisabled=!1}})})["catch"](function(a){h.error(a)})},a.updateItemMailAccount=function(){return i.update({id:c.accountId},{name:a.account.name,description:a.account.description,address:a.account.address,fidelity:a.account.fidelity,timeout:a.account.timeout,service:a.account.service,ListId:a.account.ListId,TemplateId:a.account.TemplateId}).$promise.then(function(){h.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){h.error(a)})},a.updateItemMailServerIn=function(){var b=angular.copy(a.account.MailServerIn);return delete b.source,m.spin("spinner-grid"),a.imapDisabled=!0,k.update({id:b.id},b).$promise.then(function(){h.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){h.error(a)})},a.updateItemMailServerOut=function(){var b=angular.copy(a.account.MailServerOut);return delete b.source,m.spin("spinner-grid"),a.smtpDisabled=!0,l.update({id:b.id},b).$promise.then(function(){h.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){h.error(a)})},a.test=function(){return m.spin("spinner-grid"),a.smtpDisabled=!0,l.update({id:a.account.MailServerOut.id},{state:"CONNECTING"}).$promise["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.accounts.view.settings",{url:"/settings",controller:"MailAccountSettingViewCtrl",templateUrl:"app/channels/mail/account/view/setting/view/view.html"})}]),angular.module("xCallyShuttleApp").controller("MailAccountViewCtrl",["$scope","$stateParams","MailAccount",function(a,b,c){a.initView=function(){return c.get({id:b.accountId}).$promise.then(function(b){a.account=b})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.accounts.view",{url:"/view/:accountId",controller:"MailAccountViewCtrl",templateUrl:"app/channels/mail/account/view/view.html",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]})}]}})}]),angular.module("xCallyShuttleApp").controller("MailAccountWizardCtrl",["$scope","$http","$location","$translate","WizardHandler","xAlert","MailAccount",function(a,b,c,d,e,f,g){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initWizard=function(){a.forms={},a.item={MailServerIn:{port:993,ssl:!0,"delete":!1,protocol:"IMAP",filter:"UNSEEN",mailbox:"INBOX",keepalive:!0,authTimeout:5,connTimeout:10},MailServerOut:{port:465,ssl:!0}}},a.goNext=function(){e.wizard().next()},a.formValidation=function(a){return a},a.createItem=function(){return g.save(a.item).$promise.then(function(){c.path("/channels/mail/accounts/list")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.accounts.wizard",{url:"/wizard",templateUrl:"app/channels/mail/account/wizard/wizard.html",controller:"MailAccountWizardCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.inbox",{url:"/inbox",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:36}}})}]),angular.module("xCallyShuttleApp").controller("MailInboxInfoModalCtrl",["$scope","$translate","$uibModalInstance","$stateParams","xAlert","uniqueId","ReportSquare",function(a,b,c,d,e,f,g){a.data=null,a.initInfo=function(){g.get({controller:"show",uniqueid:f}).$promise.then(function(b){a.data={id:b.id,channel:b.channel,uniqueid:b.uniqueid,callerid:b.callerid,calleridname:b.calleridname,project_name:b.project_name,extension:b.extension}})["catch"](function(b){switch(b.status){case 404:a.data=null;break;default:e.error(b)}})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").directive("mailMessage",["$rootScope","$translate","MailMessage","List","xAlert","Lightbox","$uibModal",function(a,b,c,d,e,f,g){return{restrict:"E",scope:{message:"=",listId:"="},templateUrl:"app/channels/mail/inbox/message/message.directive.html",link:function(h){h.openPreview=function(a){f.openModal(["api/mail/attachments/"+a],0)},h.openContact=function(c){return h.listId?d.save({listId:h.listId,controller:"contacts"},{email:c}).$promise.then(function(b){var c=_.find(a.$root.workspaces,{contactID:b.id});c?c.active=!0:a.$root.workspaces.push({active:!0,"class":"icon-user",contactID:b.id,name:b.email,type:"contact"})})["catch"](function(a){console.error(a)}):void e.show(b.instant("MESSAGE_NO_LIST_CONFIGURED"),"info")},h.info=function(a){g.open({animation:!0,templateUrl:"app/channels/mail/inbox/message/info.modal.html",controller:"MailInboxInfoModalCtrl",resolve:{uniqueId:function(){return a}}})},h.retry=function(a){return c.update({id:a,status:"SENDING"}).$promise["catch"](function(a){console.error(a)})}}}}]),angular.module("xCallyShuttleApp").directive("mailNote",["$translate","Modal","Auth","MailMessage","xAlert",function(a,b,c,d,e){return{restrict:"E",scope:{message:"="},templateUrl:"app/channels/mail/inbox/note/note.directive.html",link:function(f){f.Auth=c,f.deleteNote=b.confirm["delete"](function(){return d.remove({id:f.message.id}).$promise.then(function(){e.show(a.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){e.error(a)})})}}}]),angular.module("xCallyShuttleApp").controller("MailInboxViewModalNoteCtrl",["$scope","$uibModalInstance","$translate","id","MailRoom","xAlert",function(a,b,c,d,e,f){a.initModal=function(){a.item={}},a.ok=function(){return e.save({id:d,controller:"messages",controller2:"send"},{text:a.item.text,status:"NOTE"}).$promise.then(function(){f.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(){f.show(c.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})["finally"](function(){b.close()})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").directive("mailRoom",["$rootScope","$cookieStore","$translate","$uibModal","$timeout","Tag","CannedAnswer","MailAttachment","List","MailAccount","MailRoom","MailMessage","FileUploader","xAlert","usSpinnerService","socket","Auth",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){return{restrict:"E",scope:{workspace:"="},templateUrl:"app/channels/mail/inbox/room/room.directive.html",link:function(e){function r(a,b){var c="";return b&&b.signature&&(c+="<br>"+b.signature),a&&(c+="<br><blockquote>"+a.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\n/g,"<br>")+"</blockquote>"),c}e.onCKReady=function(a){e.ckEditorInstance=a},e.$on("$destroy",function(){});var s=[];e.user=q.getCurrentUser(),e.getContacts=function(a){return e.listId?i.get({listId:e.listId,controller:"contacts",email:a}).$promise.then(function(a){return a.rows})["catch"](function(a){console.error(a)}):[]},e.setList=function(a){e.listId=a},e.options={language:a.language,allowedContent:!0,entities:!1,skin:"office2013",extraPlugins:"autogrow",autoGrow_minHeight:600,autoGrow_maxHeight:600,disableNativeSpellChecker:!1,toolbar:[{name:"clipboard",items:["Cut","Copy","Paste","-","Undo","Redo"]},{name:"links",items:["Link","Unlink","Anchor"]},{name:"insert",items:["Image","Table","HorizontalRule","SpecialChar"]},{name:"tools",items:["Maximize"]},"/",{name:"basicstyles",items:["Bold","Italic","Underline","Strike","Subscript","Superscript","-","RemoveFormat"]},{name:"paragraph",items:["NumberedList","BulletedList","-","Outdent","Indent","-","Blockquote"]},{name:"styles",items:["Styles","Format"]}]},e.expanded=!0,e.modelOptions={debounce:{"default":500,blur:250},getterSetter:!0},e.panelLeft=null,e.panelRight="col-md-12",e.forms={},e.form={from:[],to:e.workspace.data&&e.workspace.data.to?[e.workspace.data.to]:[],cc:[],bcc:[],tags:[],html:"",disabled:!1},p.socket.on("mail_message:remove",function(a){_.remove(e.mailRoom.MailMessages,{id:a.id})}),p.socket.on("mail_message:save",function(a){return e.workspace.id&&a.MailRoomId==e.workspace.id?(e.workspace.active||e.workspace.unread++,l.get({id:a.id}).$promise.then(function(a){e.mailRoom||(e.mailRoom={MailMessages:[]});var b=_.findIndex(e.mailRoom.MailMessages,{id:a.id});b>-1?_.merge(e.mailRoom.MailMessages[b],a):e.mailRoom.MailMessages.unshift(a),e.panelLeft="col-md-6",e.panelRight="col-md-6"})["catch"](function(a){console.error(a)})):void 0});var t=e.uploader=new m({url:"api/mail/attachments",autoUpload:!0,withCredentials:!0,headers:{Authorization:"Bearer "+b.get("token")}});return t.onErrorItem=function(){n.show(c.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")},t.removeFromQueue=function(a){var b=this;return h["delete"]({id:a.basename}).$promise.then(function(){var c=b.getIndexOfItem(a),d=b.queue[c];d.isUploading&&d.cancel(),b.queue.splice(c,1),d._destroy(),b.progress=b._getTotalProgress(),s=_.reject(s,{basename:a.basename})})["catch"](function(){n.show(c.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},t.onSuccessItem=function(a,b){var c={size:b.size,path:b.path,name:b.name,basename:b.basename,type:b.type};a=_.merge(a,c),s.push(c)},e.openRoom=function(b){var c=_.find(a.workspaces,{id:b,type:"mailRoom"});c?c.active=!0:a.workspaces.push({id:b,type:"mailRoom","class":"icon-envelope",active:!0})},e.togglePanelLeft=function(){e.panelLeft?(e.panelLeft=null,e.panelRight="col-md-12"):(e.panelLeft="col-md-6",e.panelRight="col-md-6")},e.onSelectAnswer=function(){e.ckEditorInstance.insertHtml(e.modelOptions.selectedAnswer),delete e.modelOptions.selectedAnswer},e.getAnswers=function(a){return g.get({key:a}).$promise.then(function(a){return _.map(a.rows,"value")})},e.closeRoom=function(){return d.open({animation:!0,templateUrl:"app/channels/mail/inbox/status/status.modal.html",controller:"MailInboxStatusModalCtrl",resolve:{accountId:function(){return e.mailRoom.MailAccountId}}}).result.then(function(a){return k.patch({id:e.workspace.id},a).$promise["catch"](function(a){n.error(a)})})},e.loadNote=function(){return d.open({animation:!0,templateUrl:"app/channels/mail/inbox/note/note.modal.html",controller:"MailInboxViewModalNoteCtrl",resolve:{id:function(){return e.workspace.id; -}}})},e.onChanged=function(){return k.update({id:e.workspace.id},{tags:e.form.tags}).$promise["catch"](function(a){console.error(a)})},e.sendMail=function(){o.spin("spinner-grid"),e.form.disabled=!0;var a={},b={subject:e.form.subject||(e.mailRoom?e.mailRoom.subject:null),from:e.form.from,to:_.map(e.form.to,"email"),cc:_.map(e.form.cc,"email"),bcc:_.map(e.form.bcc,"email"),html:e.form.html||null,text:e.form.text||null,inReplyTo:a.messageId||null,status:"SENDING",MailAttachments:s};return e.mailRoom?(a=_.last(e.mailRoom.MailMessages,{status:"RECEIVED"}),b.inReplyTo=a.messageId||null,k.save({id:e.workspace.id,controller:"messages",controller2:"send"},b).$promise.then(function(){e.form.html="",t.queue=[],s=[],n.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(){n.show(c.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})["finally"](function(){o.stop("spinner-grid"),e.form.disabled=!1})):l.save(b).$promise.then(function(a){n.show(c.instant("MESSAGE_MAIL_MESSAGE_SEND_SUCCESS"),"success"),e.form.html="",t.queue=[],s=[],e.workspace.id=a.id,e.workspace.name=a.subject,e.mailRoom=a,e.expanded=!1,p.socket.on("mail_room:save",function(a){e.workspace.id&&a.id===e.workspace.id&&_.merge(e.mailRoom,a)})})["catch"](function(){n.show(c.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})["finally"](function(){o.stop("spinner-grid"),e.form.disabled=!1})},f.get().$promise.then(function(a){e.tags=_.map(a.rows,"name")})["catch"](function(a){console.error(a)}),j.get().$promise.then(function(a){e.mailAccounts=a.rows})["catch"](function(a){console.error(a)}),e.workspace.id?(e.panelLeft="col-md-6",e.panelRight="col-md-6",k.get({id:e.workspace.id}).$promise.then(function(a){e.mailRoom=a,e.expanded=!1,e.listId=a.MailAccount.ListId,e.workspace.name=a.subject||"No subject",e.form.from.push(a.MailAccount.address),e.form.tags=a.tags;var b=_.findLast(e.mailRoom.MailMessages,{status:"RECEIVED"});return b?(e.form.to=_.map(_.union(b.from,b.to),function(a){return{email:a}}),e.form.to=_.remove(e.form.to,function(b){return b.email!==a.MailAccount.address}),e.form.cc=_.map(b.cc,function(a){return{email:a}}),e.form.bcc=_.map(b.bcc,function(a){return{email:a}}),e.form.subject="Re: "+(b.subject||"No subject"),e.form.html=r(b.text,a.MailAccount)):e.form.html=r("",a.MailAccount),p.socket.on("mail_room:save",function(a){a.id===e.workspace.id&&_.merge(e.mailRoom,a)}),a})["catch"](function(a){console.error(a)})["finally"](function(){o.stop("spinner-grid"),e.form.disabled=!1})):(e.panelLeft=null,e.panelRight="col-md-12",e.workspace.mailAccountId?j.get({id:e.workspace.mailAccountId}).$promise.then(function(a){e.form.from.push(a.address),e.form.html=r("",a),e.listId=a.ListId,o.stop("spinner-grid")})["catch"](function(a){o.stop("spinner-grid"),console.error(a)}):void o.stop("spinner-grid"))}}}]),angular.module("xCallyShuttleApp").controller("MailInboxStatusModalCtrl",["$scope","$uibModalInstance","MailAccount","accountId",function(a,b,c,d){a.modal={title:"APPLICATION_CONFIRM_CLOSE",text:"MESSAGE_ARE_YOU_SURE_YOU_WANT_TO_CLOSE_THE_MAIL"},a.initDisposition=function(){return a.item={disposition:null,status:"CLOSED"},c.get({accountId:d,controller:"dispositions"}).$promise.then(function(b){a.dispositions=b.rows})["catch"](function(a){console.error(a)})},a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.inbox.view.account",{url:"/account/:id",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:9}}})}]),angular.module("xCallyShuttleApp").controller("MailInboxViewAccountListCtrl",["$scope","$rootScope","$uibModal","$translate","$stateParams","$state","Tag","uibButtonConfig","usSpinnerService","socket","MailAccount","MailRoom","uiGridConstants","Auth","Modal","xAlert","localStorageService",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){a.openRoom=function(b,c,d){if(!d){var f=_.find(a.workspaces,{id:b,type:"mailRoom"});if(f&&b?f.active=!0:a.workspaces.push({id:b,subject:c,type:"mailRoom","class":"icon-envelope",active:!0,mailAccountId:e.id}),b&&"agent"===n.getCurrentUser().role&&"PENDING"!==a.query.status&&"CLOSED"!==a.query.status)return l.patch({id:b},{status:"OPEN",openReason:"agent"}).$promise["catch"](function(a){console.error(a)})}},a.getPage=function(){i.spin("spinner-grid");var b={accountId:e.id,controller:"rooms"};return a.query&&_.merge(b,a.query),k.query(b).$promise.then(function(b){q.set("mailAccountId",e.id),a.gridOptions.data=b,j.socket.on("mail_room:save",function(b){if(b.MailAccountId==e.id){var c=_.find(a.gridOptions.data,{id:b.id});c?c.status!==b.status?_.remove(a.gridOptions.data,{id:b.id}):_.merge(c,b):a.query.status!==b.status||a.query.tags.length&&!_.isEqual(a.query.tags,b.tags)||a.gridOptions.data.push(b)}}),j.socket.on("mail_room:remove",function(b){_.remove(a.gridOptions.data,{id:b.id})})})["catch"](function(a){p.error(a)})["finally"](function(){i.stop("spinner-grid")})},a.initView=function(){h.activeClass="green-haze",a.id=[],a.isAdmin=n.isAdmin(),a.isAgent=n.isAgent(),a.uncheckable=!1,a.query={status:q.get("mailStatus")?q.get("mailStatus"):"NEW",tags:q.get("mailTags")?q.get("mailTags"):[]},a.$watch("query.status",function(b,c){b!==c&&(q.set("mailStatus",a.query.status),a.getPage())},!0),k.get().$promise.then(function(b){a.mailAccounts=b.rows})["catch"](function(a){console.error(a)}),g.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a)}),a.gridOptions={exporterCsvFilename:"mail_rooms.csv",enableRowHeaderSelection:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,enableFiltering:!0,enableSorting:!0,enableGridMenu:!1,flatEntityAccess:!0,showGridFooter:!0,fastWatch:!0,enableSelectAll:!0,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,columnDefs:[{name:"lastEvent",displayName:"",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div> <span data-ng-class=\"{'icon-arrow-up font-green': row.entity.lastEvent === 'SENT', 'icon-arrow-up font-yellow': row.entity.lastEvent === 'SENDING', 'icon-arrow-down font-green': row.entity.lastEvent === 'RECEIVED', 'icon-close font-red': row.entity.lastEvent === 'FAILED', 'icon-question': !row.entity.lastEvent}\"> </span> </div>",width:30,enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"attachment",displayName:"",headerCellTemplate:'<i class="icon-paper-clip" style="margin-top: 8px; margin-left: 8px;"></i>',cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><i data-ng-class=\"row.entity.attachment ? 'icon-paper-clip' : ''\"></i></div>",width:30,enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"tags",displayName:"",headerCellTemplate:'<i class="icon-tag" style="margin-top: 8px; margin-left: 8px;"></i>',cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><i data-ng-class=\"row.entity.tags.length ? 'icon-tag' : ''\" title=\"{{row.entity.tags}}\"></i></div>",width:30,enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"id",displayName:"Id",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><span>#{{row.entity.id}}</span></div>",width:75,enableSorting:!0,enableFiltering:!0,enableColumnMenu:!1},{name:"subject"},{name:"from",cellClass:"text-center"},{name:"disposition",displayName:"APPLICATION_DISPOSITION",headerCellFilter:"translate"},{name:"createdAt",cellFilter:"date:'dd/MM/yyyy HH:mm'",width:120,enableFiltering:!1},{name:"updatedAt",cellFilter:"date:'dd/MM/yyyy HH:mm'",width:120,enableFiltering:!1,sort:{direction:m.DESC}},{name:"action",cellTemplate:'<div> <a class="btn btn-icon-only" data-ng-disabled="row.entity.waiting" data-ng-class="row.entity.waiting ? \'font-blue\' : \'font-green\'" data-ng-click="grid.appScope.openRoom(row.entity.id, row.entity.subject, row.entity.waiting)"><i class="fa" data-ng-class="row.entity.waiting ? \'fa-repeat\' : \'fa-envelope\' " aria-hidden="true"></i></a> <a class="btn btn-icon-only font-red" data-ng-show="grid.appScope.isAdmin && !row.entity.waiting" data-ng-click="grid.appScope.deleteItem(row.entity.id, row.entity.id)"><i class="fa fa-trash" aria-hidden="true"></i></a> </div>',enableSorting:!1,cellClass:"ui-grid-vcenter",width:70,enableFiltering:!1,enableColumnMenu:!1}],data:[],onRegisterApi:function(b){a.gridApi=b,a.gridApi.selection&&(a.gridApi.selection.on.rowSelectionChanged(a,function(b){b.isSelected?a.id.push(a.gridApi.grid.options.primaryKey?b.entity[a.gridApi.grid.options.primaryKey]:b.entity.id):_.pull(a.id,a.gridApi.grid.options.primaryKey?b.entity[a.gridApi.grid.options.primaryKey]:b.entity.id)}),a.gridApi.selection.on.rowSelectionChangedBatch(a,function(b){b[0].isSelected?a.id=_.union(a.id,_.map(b,a.gridApi.grid.options.primaryKey?"entity."+a.gridApi.grid.options.primaryKey:"entity.id")):_.map(b,a.gridApi.grid.options.primaryKey?"entity."+a.gridApi.grid.options.primaryKey:"entity.id").forEach(function(b){_.pull(a.id,b)})}))}},a.getPage()},a.onChanged=function(){q.set("mailTags",a.query.tags),a.getPage()},a.tagItems=function(){return c.open({animation:!0,templateUrl:"app/channels/mail/inbox/view/view.tags.modal.html",controller:"MailInboxViewModalTagCtrl",resolve:{id:function(){return a.id}}}).result.then(function(){a.gridApi.selection.clearSelectedRows(),a.id=[]})},a.disposeItems=function(){return c.open({animation:!0,templateUrl:"app/channels/mail/inbox/status/status.modal.html",controller:"MailInboxStatusModalCtrl",resolve:{status:function(){return null},accountId:function(){return e.id}}}).result.then(function(b){return l.patch({id:a.id},b).$promise.then(function(){a.gridApi.selection.clearSelectedRows(),a.id=[]})["catch"](function(a){p.error(a)})})},a.deleteItem=o.confirm["delete"](function(b){var c={id:b};return l.remove(c).$promise.then(function(){a.getPage(),p.show(d.instant("MESSAGE_WELL_DONE")+"!","success"),a.gridApi.selection.clearSelectedRows(),a.id=[]})["catch"](function(a){p.error(a)})}),a.deleteItems=o.confirm["delete"](function(){var b={ids:a.id};return l["delete"](b).$promise.then(function(){a.getPage(),p.show(d.instant("MESSAGE_WELL_DONE")+"!","success"),a.gridApi.selection.clearSelectedRows(),a.id=[]})["catch"](function(a){p.error(a)})})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.inbox.view.account.list",{url:"/list",templateUrl:"app/channels/mail/inbox/view/account/list/list.html",controller:"MailInboxViewAccountListCtrl",data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:9}}})}]),angular.module("xCallyShuttleApp").controller("MailInboxViewModalAgentCtrl",["$scope","$uibModalInstance","$translate","$stateParams","Agent","Auth","MailRoom","xAlert","roomId",function(a,b,c,d,e,f,g,h,i){var j=[];a.initModal=function(){return a.agents=[],a.item={agents:[]},e.get().$promise.then(function(b){for(var c=0;c<b.rows.length;c++)a.agents.push(b.rows[c]);return g.query({id:i,controller:"agents"}).$promise}).then(function(b){for(var c=0;c<b.length;c++)f.isAgent()||a.item.agents.push(b[c]),j.push(b[c].id)})["catch"](function(a){console.error(a)})},a.ok=function(){return j=f.isAgent()?_.union(j,a.item.agents):angular.copy(a.item.agents),g.update({id:i,controller:"agents",agents:j}).$promise.then(function(){h.show(c.instant("MESSAGE_WELL_DONE"),"success"),b.close()})["catch"](function(a){console.error(a)})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("MailInboxViewCtrl",["$scope","$timeout","$location","localStorageService","MailAccount",function(a,b,c,d,e){a.initView=function(){return e.get().$promise.then(function(b){var e=null;if(a.mailAccounts=b.rows,a.mailAccounts.length){var f,g=d.get("mailAccountId");f=g&&_.find(a.mailAccounts,{id:Number(g)})?g:a.mailAccounts[0].id,e="/channels/mail/inbox/view/account/"+f+"/list"}e&&c.path(e)})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.inbox.view",{url:"/view",templateUrl:"app/channels/mail/inbox/view/view.html",controller:"MailInboxViewCtrl",reload:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/inbox.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("MailInboxViewModalTagCtrl",["$scope","$uibModalInstance","$translate","$stateParams","Tag","MailRoom","xAlert","id",function(a,b,c,d,e,f,g,h){a.initModal=function(){return a.tags=[],a.item={tags:[]},a.modal={dismissable:!0,title:"APPLICATION_MESSAGE_SEND_RETRY",text:"MESSAGE_MESSAGE_SEND_RETRY",buttons:[{"class":"btn-success",text:"APPLICATION_TAG",click:function(){var d={status:!0};return f.patch({id:h},{tags:a.item.tags}).$promise["catch"](function(){d.status=!1,g.show(c.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})["finally"](function(){b.close(d)})}},{"class":"default",text:"APPLICATION_CANCEL",click:function(a){b.dismiss(a)}}]},e.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").controller("MailInboxViewModalTemplateCtrl",["$scope","$uibModalInstance","Template",function(a,b,c){a.initModal=function(){return a.item={},c.get().$promise.then(function(b){a.templates=b.rows})["catch"](function(a){console.error(a)})},a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail",{url:"/mail",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:9}}})}]),angular.module("xCallyShuttleApp").factory("MailReport",["$resource",function(a){return a("/api/report/mails/:id/:controller1/:controller2",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("MailRoom",["$resource",function(a){return a("/api/mail/rooms/:id/:controller/:controller2",{id:"@id",controller:"@controller"},{update:{method:"PUT"},patch:{method:"PATCH"}})}]),angular.module("xCallyShuttleApp").factory("MailAttachment",["$resource",function(a){return a("/api/mail/attachments/:id/:controller",{id:"@id"})}]),angular.module("xCallyShuttleApp").factory("MailMessage",["$resource",function(a){return a("/api/mail/messages/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("MailQueueListCtrl",["$scope","MailQueue","gridOptions","$uibModal","Auth",function(a,b,c,d,e){a.initView=function(){a.Auth=e;var d={exporterCsvFilename:"voice_queues.csv",columnDefs:[{name:"name"},{name:"description"},{name:"timeout"},{name:"strategy"},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/channels/mail/queues/view/{{row.entity.id}}/settings",name:"settings"},{"class":"green-meadow",href:"/channels/mail/queues/view/{{row.entity.id}}/agents",name:"agents",hide:"user"===e.getCurrentUser().role},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.createItem=function(){var b=d.open({animation:!0,templateUrl:"app/channels/mail/queue/list/list.create.modal.html",controller:"MailQueueListCreateCtrl",size:"lg"});b.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("MailQueueListCreateCtrl",["$scope","$uibModalInstance","$translate","xAlert","MailQueue","Team","strategies",function(a,b,c,d,e,f,g){a.form={},a.strategies=g,a.item={penalty:0,agents:[]},a.getTeams=function(){return f.get({controller:"associations"}).$promise.then(function(b){a.teams=b.rows}).then(function(){ComponentsDropdowns.bindQueue(a.teams,[],function(){return{select:function(b){a.item.agents=_.union(a.item.agents,b)},deselect:function(b){a.item.agents=_.difference(a.item.agents,b)}}})})["catch"](function(a){console.error(a)})},a.save=function(){return e.save(a.item).$promise.then(function(a){b.close(a)})["catch"](function(a){d.error(a)})},a.cancel=function(){b.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.queues.list",{url:"/list",templateUrl:"app/channels/mail/queue/list/list.html",controller:"MailQueueListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}})}]),angular.module("xCallyShuttleApp").factory("MailQueue",["$resource",function(a){return a("/api/mail/queues/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.queues",{url:"/queues",template:"<div ui-view></div>","abstract":!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/scripts/components-dropdowns.js"]})}]},data:{permissions:{only:["admin","user"],redirectTo:"landing",id:35}}})}]),angular.module("xCallyShuttleApp").controller("MailQueueViewCtrl",["$scope","$http","$translate","$stateParams","xAlert","Team","MailQueue","Auth","strategies",function(a,b,c,d,e,f,g,h,i){a.Auth=h,a.strategies=i;var j=function(){return{select:function(b){return g.save({id:a.queue.id,controller:"agents"},{agents:b,penalty:a.queue.penalty}).$promise.then(function(){a.getTeams()})["catch"](function(a){console.error(a)})},deselect:function(b){return g["delete"]({id:a.queue.id,controller:"agents",agents:b}).$promise.then(function(){a.getTeams()})["catch"](function(a){console.error(a)})}}};a.getQueue=function(){return g.get({id:d.id}).$promise.then(function(b){b.penalty=0,a.queue=b})["catch"](function(a){console.error(a)})},a.updateMailQueue=function(){return g.update({id:d.id},{name:a.queue.name,description:a.queue.description,timeout:a.queue.timeout,strategy:a.queue.strategy}).$promise.then(function(){e.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){e.error(a)})},a.getTeams=function(){return f.get({controller:"associations"}).$promise.then(function(b){return a.teams=b.rows,g.get({id:d.id,controller:"agents"}).$promise}).then(function(b){ComponentsDropdowns.bindMailQueue(a.teams,_.map(b.rows,function(a){return{id:a.id,penalty:a.UserHasMailQueue.penalty}}),j)})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.queues.view",{url:"/view/:id",templateUrl:"app/channels/mail/queue/view/view.html",controller:"MailQueueViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.mail.queues.view.settings",{url:"/settings",templateUrl:"app/channels/mail/queue/view/view.settings.html"}).state("main.channels.mail.queues.view.agents",{url:"/agents",templateUrl:"app/channels/mail/queue/view/view.agents.html",cache:!1,serie:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.realtime",{url:"/realtime",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:37}}})}]),angular.module("xCallyShuttleApp").controller("MailRealtimeViewAgentCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","Agent","Pause","Action","MailQueue","usSpinnerService","$q","uiGridConstants","Auth","$timeout",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){function p(){return k.spin("grid-spinner"),g.get(u).$promise.then(function(b){a.gridOptions.totalItems=b.count,a.gridOptions.data=[],b.rows.forEach(function(a){r(a)})})["catch"](function(a){f.error(a)})["finally"](function(){k.stop("grid-spinner")})}function q(){e.socket.on("agent:save",function(b){b=b.newValues||b;var c=_.find(a.gridOptions.data,{agentId:b.id,isAgent:!0});c&&(c.online=_.has(b,"online")?b.online:c.online,c.lastLoginAt=_.has(b,"lastLoginAt")?b.lastLoginAt:c.lastLoginAt,c.pause=_.has(b,"mailPause")?b.mailPause:c.mailPause,c.pauseType=_.has(b,"pauseType")?b.pauseType:c.pauseType,c.lastPauseAt=_.has(b,"lastPauseAt")?b.lastPauseAt:c.lastPauseAt,c.ipaddr=_.has(b,"ipaddr")?b.ipaddr:c.ipaddr,c.port=_.has(b,"port")?b.port:c.port,c.fullcontact=_.has(b,"fullcontact")?b.fullcontact:c.fullcontact,c.useragent=_.has(b,"useragent")?b.useragent:c.useragent,c.lastms=_.has(b,"lastms")?b.lastms:c.lastms,c.internal=_.has(b,"internal")?b.internal:c.internal,_.map(a.gridOptions.data,function(a){a.isAgent||a.agentId!==b.id||(a.online=_.has(b,"online")?b.online:a.online)}))}),e.socket.on("agent:remove",function(b){_.remove(a.gridOptions.data,{agentId:b.id})}),e.socket.on("user_has_mail_queue:save",function(b){var c=_.includes(_.map(a.CurrentUser.PMailQueues,"id"),b.MailQueueId)||n.isAdmin();if(c){var d=_.find(a.gridOptions.data,{agentId:b.UserId,isAgent:!0});if(d){var e=a.gridOptions.data.indexOf(d);a.gridOptions.data.splice(e+1,0,{isAgent:!1,agentId:b.UserId,queue:b.queue,queueId:b.MailQueueId,agent:b.membername,online:d.online})}}}),e.socket.on("user_has_mail_queue:remove",function(b){_.remove(a.gridOptions.data,{agentId:b.UserId,queueId:b.MailQueueId})})}function r(b){a.gridOptions.data.push({isAgent:!0,agentId:b.id,agent:b.name,online:b.online,lastLoginAt:b.lastLoginAt,lastPauseAt:b.lastPauseAt,pause:b.mailPause,pauseType:b.pauseType,ipaddr:b.ipaddr,port:b.port,fullcontact:b.fullcontact,useragent:b.useragent,lastms:b.lastms,internal:b.internal,$$treeLevel:0}),b.MailQueues&&b.MailQueues.forEach(function(c){a.gridOptions.data.push({isAgent:!1,agentId:b.id,queue:c.name,queueId:c.id,agent:b.name,online:b.online})})}function s(){return h.get().$promise.then(function(b){a.pauses=b.rows,e.syncUpdates("pause",a.pauses)})["catch"](function(a){f.error(a)})}function t(){return j.get().$promise.then(function(b){a.mailQueues=b.rows,e.syncUpdates("mail_queue",a.mailQueues)})["catch"](function(a){f.error(a)})}a.mailQueues=[];var u={controller:"realtime",controller1:"mail",offset:0,limit:10};a.moment=moment,a.initAgents=function(){a.gridOptions={enableGridMenu:!0,headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,useExternalPagination:!0,useExternalSorting:!0,useExternalFiltering:!0,multiSelect:!0,showTreeExpandNoChildren:!0,columnDefs:[{name:"name",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.isAgent">{{row.entity.agent}} <{{row.entity.internal}}></div>'},{name:"online",displayName:"APPLICATION_ONLINE",width:150,headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.online != null && row.entity.isAgent"><i class="fa" data-ng-class="{\'font-green\':row.entity.online, \'font-red\':!row.entity.online,\'fa-user\':row.entity.online,\'fa-user-times\':!row.entity.online}"></i> <i data-ng-if="row.entity.online" class="fa fa-sign-out font-red pointer-cursor" title="logout" data-ng-click="grid.appScope.agentLogout(row.entity.agent,row.entity.agentId)"></i> <span data-ng-if="row.entity.online && grid.appScope.showTimers" class="left-margin"><css-timer start-time="row.entity.lastLoginAt"></css-timer></span></div>',filter:{type:m.filter.SELECT,selectOptions:[{value:"true",label:"ONLINE"},{value:"false",label:"OFFLINE"}]}},{name:"mailPause",displayName:"APPLICATION_PAUSE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.pause != null && row.entity.online" class="ui-grid-vcenter"><i data-ng-if="row.entity.pause" data-ng-click="grid.appScope.pause(row.entity,\'unpause\')" class="fa fa-play font-green pointer-cursor left-margin" title="{{\'APPLICATION_RESUME\' | translate}}"></i><i class="fa fa-pause font-yellow pointer-cursor" data-ng-click="grid.appScope.pause(row.entity,\'pause\',\'DEFAULT PAUSE\')" title="{{\'APPLICATION_DEFAULT_PAUSE\' | translate}}"></i><select data-ng-if="grid.appScope.pauses.length" class="pause-select pointer-cursor" data-ng-model="grid.appScope.pauseType" data-ng-change="grid.appScope.pause(row.entity,\'pause\',grid.appScope.pauseType)"><option class="pointer-cursor" data-ng-repeat="pause in grid.appScope.pauses">{{pause.name}}</option></select> <span data-ng-if="row.entity.pause">({{row.entity.pauseType}})</span><span data-ng-if="row.entity.pause && grid.appScope.showTimers" class="left-margin"><css-timer start-time="row.entity.lastPauseAt"></css-timer></span></div>',filter:{type:m.filter.SELECT,selectOptions:[{value:"true",label:"PAUSED"},{value:"false",label:"NOT PAUSED"}]},enableSorting:!1,enableColumnMenu:!1},{name:"queue",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"action",displayName:"",width:170,cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><button data-ng-if="row.entity.queueId" class="btn btn-xs red-sunglo" data-ng-click="grid.appScope.leaveQueue(row.entity.agentId,row.entity.queueId)"><i class="icon-ban"></i> {{\'APPLICATION_LEAVE\' | translate}}</button><button data-ng-if="row.entity.isAgent && row.treeNode.children.length < grid.appScope.mailQueues.length" class="btn btn-xs blue-hoki" data-ng-click="grid.appScope.joinQueue(row.entity.agentId)"><i class="icon-plus"></i> {{\'APPLICATION_JOIN_QUEUE\' | translate}}</button><div>',enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1}],data:[],gridMenuTitleFilter:function(a){var b=l.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){v(a.gridApi.core.getVisibleRows(a.gridApi.grid).length)}),a.gridApi.treeBase.on.rowExpanded(a,function(b){v(a.gridApi.core.getVisibleRows(a.gridApi.grid).length+b.treeNode.children.length)}),a.gridApi.treeBase.on.rowCollapsed(a,function(b){v(a.gridApi.core.getVisibleRows(a.gridApi.grid).length-b.treeNode.children.length)}),a.gridApi.core.on.sortChanged(a,function(a,b){0===b.length?u.order=null:u.order=b[0].name+" "+b[0].sort.direction.toUpperCase(),p()}),a.gridApi.pagination.on.paginationChanged(a,function(a,b){u.offset=(a-1)*b,u.limit=b,p()}),a.gridApi.core.on.filterChanged(a,function(){var a=this.grid;a.columns.forEach(function(a){a.filters[0].term?u[a.name]=a.filters[0].term:delete u[a.name]}),p()})}},p(),s(),t(),o(function(){q()})};var v=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("agent"),e.unsyncUpdates("user_has_mail_queue")}),a.pause=function(b,c,e){return e&&(a.pauseType=null),i.save({name:c,agent:b.agentId,data2:b.agent,type:e||"DEFAULT PAUSE",data4:e||"DEFAULT PAUSE",channel:"mail"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.joinQueue=function(e){var g=c.open({animation:!0,templateUrl:"app/channels/mail/realtime/view/agent/queue.modal.add.html",controller:"MailRealtimeViewAgentQueueModalCtrl",resolve:{queues:function(){return _.reject(a.mailQueues,function(b){return!!_.find(a.gridOptions.data,{queue:b.name,isAgent:!1,agentId:e})})}}});g.result.then(function(b){return i.save({name:"QueueAdd",agent:e,queues:_.filter(a.mailQueues,function(a){return _.includes(b.queues,a.id)}),channel:"mail",data1:e,data3:b.queues.join(","),data4:"mail"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},function(){b.info("Modal dismissed at: "+new Date)})},a.leaveQueue=function(a,b){return i.save({name:"QueueRemove",agent:a,queueId:b,channel:"mail",data1:a,data3:b,data4:"mail"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.showInfo=function(a){c.open({animation:!0,templateUrl:"app/channels/mail/realtime/view/agent/agent.modal.info.html",controller:"MailRealtimeViewAgentInfoModalCtrl",resolve:{agent:a}})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.realtime.view.agents",{url:"/agents",templateUrl:"app/channels/mail/realtime/view/agent/agent.html",controller:"MailRealtimeViewAgentCtrl"})}]),angular.module("xCallyShuttleApp").controller("MailRealtimeViewAgentInfoModalCtrl",["$scope","$uibModalInstance","$http","agent",function(a,b,c,d){a.agent=d,a.close=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("MailRealtimeViewAgentQueueModalCtrl",["$scope","$uibModalInstance","$http","queues",function(a,b,c,d){a.queues=d,a.item={},a.save=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("MailRealtimeViewApplicationCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","ReportMailSession","usSpinnerService","$q","uiGridConstants","$timeout",function(a,b,c,d,e,f,g,h,i,j,k){function l(){return h.spin("spinner-grid"),g.get({controller:"waiting",controller2:"applications"}).$promise.then(function(b){a.gridOptions.data=b.rows})["catch"](function(a){f.error(a)})["finally"](function(){m(),h.stop("spinner-grid")})}function m(){e.socket.on("report_mail_session:save",function(b){var c=_.find(a.gridOptions.data,{id:b.id});c?(_.merge(c,b),b.leaveAt&&k(function(){_.remove(a.gridOptions.data,{id:b.id})},1e4)):b.leaveAt||a.gridOptions.data.push(b)}),e.socket.on("report_mail_session:remove",function(b){_.remove(a.gridOptions.data,{id:b.id})})}a.moment=moment,a.initApplications=function(){a.gridOptions={headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,columnDefs:[{name:"uniqueid",displayName:"APPLICATION_UNIQUEID",headerCellFilter:"translate"},{name:"application",displayName:"APPLICATION_APPLICATION",headerCellFilter:"translate"},{name:"status",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span data-ng-if="!row.entity.leaveAt">{{\'APPLICATION_QUEUESTATUS_WAITING\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.complete">{{\'APPLICATION_QUEUESTATUS_COMPLETE\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.timeout">{{\'APPLICATION_TIMEOUT\' | translate}}</span> <span data-ng-if="!row.entity.leaveAt && grid.appScope.showTimers"><css-timer start-time="row.entity.updatedAt"></css-timer></span></div>',enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1},{name:"membername",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.membername || ''}}</span></div>"},{name:"queuename",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.queuename || ''}}</span></div>"}],data:[],gridMenuTitleFilter:function(a){var b=i.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){ -n(a.gridOptions.data.length)})}},l()};var n=function(a){var b=a?30*a+60:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("report_mail_session")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.realtime.view.applications",{url:"/applications",templateUrl:"app/channels/mail/realtime/view/application/application.html",controller:"MailRealtimeViewApplicationCtrl"})}]),angular.module("xCallyShuttleApp").controller("MailRealtimeViewCtrl",["$scope","$state",function(a,b){a.agents=[{name:"Queues",link:"main.channels.mail.realtime.view.agents.queues"},{name:"Timeline",link:"main.channels.mail.realtime.view.agents.timeline"}],a.sessions=[{name:"Sessions",link:"main.channels.mail.realtime.view.sessions"}],a.tree={queues:[{name:"Queues",link:"main.channels.mail.realtime.view.agents.queues"},{name:"Timeline",link:"main.channels.mail.realtime.view.agents.timeline"}],sessions:[{name:"Sessions",link:"main.channels.mail.realtime.view.sessions"}]},a.timerSwitch={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"primary"},a.showTimers=!1}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.mail.realtime.view",{url:"/view",templateUrl:"app/channels/mail/realtime/view/view.html",controller:"MailRealtimeViewCtrl"})}]),angular.module("xCallyShuttleApp").factory("ReportMailSession",["$resource",function(a){return a("/api/report/mail/sessions/:id/:controller/:controller2",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("OpenChannelAccount",["$resource",function(a){return a("/api/openchannel/accounts/:accountId/:controller/:id",{id:"@accountId"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.accounts",{url:"/accounts",template:"<div ui-view></div>",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:46}}})}]),angular.module("xCallyShuttleApp").controller("OpenChannelAccountListCtrl",["$scope","OpenChannelAccount","gridOptions","$stateParams","xAlert","$translate",function(a,b,c,d,e,f){a.initView=function(){var e={exporterCsvFilename:"openchannel_accounts.csv",columnDefs:[{name:"id",displayName:"ID",cellClass:"text-center",width:75,enableSorting:!1,enableFiltering:!1},{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/channels/openchannel/accounts/view/{{row.entity.id}}/settings",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,e,a,{accountId:d.accountId})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.accounts.list",{url:"/list",templateUrl:"app/channels/openchannel/account/list/list.html",controller:"OpenChannelAccountListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.accounts.view.actions",{url:"/actions",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").factory("OpenChannelApplication",["$resource",function(a){return a("/api/openchannel/applications/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("OpenChannelAccountViewActionListCtrl",["$scope","gridOptions","OpenChannelAccount","$http","$translate","$stateParams","xAlert",function(a,b,c,d,e,f,g){a.initActions=function(){var d={draggable:!0,exporterCsvFilename:"openchannel_applications.csv",enableSorting:!1,enableFiltering:!1,columnDefs:[{name:"app",cellClass:"text-center"},{name:"name",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span>{{row.entity.app == "queue" ? row.entity.OpenchannelQueue.name : row.entity.User.name}}</span></div>'},{name:"timeout",cellClass:"text-center"},{name:"interval",displayName:"APPLICATION_TIME_INTERVAL",cellClass:"text-center",cellTemplate:"<div><span>{{row.entity.Interval ? row.entity.Interval.name : row.entity.interval}}</span></div>"},{name:"action",width:125,buttons:[{"class":"blue-hoki",href:"/channels/openchannel/accounts/view/{{row.entity.OpenchannelAccountId}}/actions/view/{{row.entity.id}}",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.app, row.entity.id)"}]}]};a.gridOptions=b.gridOptions(c,d,a,{accountId:f.accountId,controller:"applications"})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.accounts.view.actions.list",{url:"/list",templateUrl:"app/channels/openchannel/account/view/action/list/list.html",controller:"OpenChannelAccountViewActionListCtrl"})}]),angular.module("xCallyShuttleApp").controller("OpenChannelAccountViewActionViewCtrl",["$scope","$http","$stateParams","$translate","$location","xAlert","WizardHandler","socket","application","interval","Agent","Interval","OpenChannelQueue","OpenChannelAccount","OpenChannelApplication","Template","MailAccount","SmsAccount",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initAction=function(){return a.$application=i.application,a.$stateParams=c,a.$interval=j.interval,a.forms={},a.apps=[{name:"Queue",value:"queue"},{name:"Agent",value:"agent"},{name:"SendMail",value:"sendMail"},{name:"SendSMS",value:"sendSms"}],o.get({id:c.actionId}).$promise.then(function(b){if(a.application=b,a.application.alwaysTime=!1,a.application.IntervalId)a.application.intType="list";else switch(a.application.interval){case"*,*,*,*":a.application.intType="always";break;default:a.application.intType="custom"}if("always"===a.application.intType||"custom"===a.application.intType){var c=a.application.interval.split(",");"*"===c[0]?a.application.alwaysTime=!0:(a.application.t_from=moment(new Date),a.application.t_to=moment(new Date),a.application.t_from.hour(c[0].split("-")[0].split(":")[0]),a.application.t_from.minute(c[0].split("-")[0].split(":")[1]),a.application.t_to.hour(c[0].split("-")[1].split(":")[0]),a.application.t_to.minute(c[0].split("-")[1].split(":")[1])),"*"===c[1]?(a.application.wd_from="always",a.application.wd_to="always"):(a.application.wd_from=c[1].split("-")[0],a.application.wd_to=c[1].split("-")[1]),"*"===c[2]?(a.application.md_from="always",a.application.md_to="always"):(a.application.md_from=c[2].split("-")[0],a.application.md_to=c[2].split("-")[1]),"*"===c[3]?(a.application.m_from="always",a.application.m_to="always"):(a.application.m_from=c[3].split("-")[0],a.application.m_to=c[3].split("-")[1])}a.$watch("application.t_from",function(b){a.application.t_from_hm=moment(b).format("HH:mm")}),a.$watch("application.t_to",function(b){a.application.t_to_hm=moment(b).format("HH:mm")})})["catch"](function(a){f.error(a)})},a.getQueues=function(){return m.get().$promise.then(function(b){a.queues=b.rows})["catch"](function(a){console.error(a)})},a.getSmsAccounts=function(){return r.get().$promise.then(function(b){a.smsAccounts=b.rows})["catch"](function(a){console.error(a)})},a.getAgents=function(){return k.get().$promise.then(function(b){a.agents=b.rows})["catch"](function(a){console.error(a)})},a.getIntervals=function(){return l.get().$promise.then(function(b){a.intervals=b.rows})["catch"](function(a){console.error(a)})},a.updateItem=function(){switch(a.application.intType){case"always":a.application.interval="*,*,*,*",a.application.IntervalId=null;break;case"list":var b=_.find(a.intervals,{id:a.application.IntervalId});a.application.interval=b?"":"*,*,*,*",a.application.IntervalId=b?a.application.IntervalId:null;break;case"custom":var g,h,i,j,k;g=a.application.t_from&&a.application.t_to&&!a.application.alwaysTime?moment(a.application.t_from).format("HH:mm")+"-"+moment(a.application.t_to).format("HH:mm"):"*",a.application.wd_from&&"always"!==a.application.wd_from?(h=a.application.wd_from,a.application.wd_to&&"always"!==a.application.wd_to&&(h+="-"+a.application.wd_to)):h="*",a.application.md_from&&"always"!==a.application.md_from?(i=a.application.md_from,a.application.md_to&&"always"!==a.application.md_to&&(i+="-"+a.application.md_to)):i="*",a.application.m_from&&"always"!==a.application.m_from?(j=a.application.m_from,a.application.m_to&&"always"!==a.application.m_to&&(j+="-"+a.application.m_to)):j="*",k=g+","+h+","+i+","+j,a.application.interval=k,a.application.IntervalId=null}return n.update({accountId:c.accountId,controller:"applications",id:c.actionId},a.application).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success"),e.path("/channels/openchannel/accounts/view/"+c.accountId+"/actions/list")})["catch"](function(a){f.error(a)})},a.getTemplates=function(){return p.get().$promise.then(function(b){a.templates=b.rows})["catch"](function(a){console.error(a)})},a.getMailAccounts=function(){return q.get().$promise.then(function(b){a.mailAccounts=b.rows})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.accounts.view.actions.view",{url:"/view/:actionId",templateUrl:"app/channels/openchannel/account/view/action/view/view.html",controller:"OpenChannelAccountViewActionViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("OpenChannelAccountViewActionWizardCtrl",["$scope","$http","Agent","OpenChannelQueue","Interval","$stateParams","$translate","$location","xAlert","WizardHandler","socket","application","interval","OpenChannelApplication","OpenChannelAccount","Template","MailAccount","SmsAccount",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initWizard=function(){a.apps=[{name:"Queue",value:"queue"},{name:"Agent",value:"agent"},{name:"SendMail",value:"sendMail"},{name:"SendSMS",value:"sendSms"}],a.$application=l.application,a.$stateParams=f,a.$interval=m.interval,a.forms={},a.application={alwaysTime:!0},a.$watch("application.t_from",function(b){a.application.t_from_hm=moment(b).format("HH:mm")}),a.$watch("application.t_to",function(b){a.application.t_to_hm=moment(b).format("HH:mm")})},a.getQueues=function(){return d.get().$promise.then(function(b){a.queues=b.rows})["catch"](function(a){console.error(a)})},a.getAgents=function(){return c.get().$promise.then(function(b){a.agents=b.rows})["catch"](function(a){console.error(a)})},a.getSmsAccounts=function(){return r.get().$promise.then(function(b){a.smsAccounts=b.rows})["catch"](function(a){console.error(a)})},a.getIntervals=function(){return e.get().$promise.then(function(b){a.intervals=b.rows})["catch"](function(a){console.error(a)})},a.createItem=function(){switch(a.application.intType){case"always":a.application.interval="*,*,*,*",a.application.IntervalId=null;break;case"list":var b=_.find(a.intervals,{id:a.application.IntervalId});a.application.interval=b?"":"*,*,*,*",a.application.IntervalId=b?a.application.IntervalId:null;break;case"custom":var c,d,e,j,k;c=a.application.t_from&&a.application.t_to&&!a.application.alwaysTime?moment(a.application.t_from).format("HH:mm")+"-"+moment(a.application.t_to).format("HH:mm"):"*",a.application.wd_from&&"always"!==a.application.wd_from?(d=a.application.wd_from,a.application.wd_to&&"always"!==a.application.wd_to&&(d+="-"+a.application.wd_to)):d="*",a.application.md_from&&"always"!==a.application.md_from?(e=a.application.md_from,a.application.md_to&&"always"!==a.application.md_to&&(e+="-"+a.application.md_to)):e="*",a.application.m_from&&"always"!==a.application.m_from?(j=a.application.m_from,a.application.m_to&&"always"!==a.application.m_to&&(j+="-"+a.application.m_to)):j="*",k=c+","+d+","+e+","+j,a.application.interval=k,a.application.IntervalId=null}return o.save({accountId:f.accountId,controller:"applications"},a.application).$promise.then(function(){i.show(g.instant("MESSAGE_WELL_DONE"),"success"),h.path("/channels/openchannel/accounts/view/"+f.accountId+"/actions/list")})["catch"](function(a){i.error(a)})},a.formValidation=function(a){return a},a.next=function(){j.wizard().next()},a.getMailAccounts=function(){return q.get().$promise.then(function(b){a.mailAccounts=b.rows})["catch"](function(a){console.error(a)})},a.getTemplates=function(){return p.get().$promise.then(function(b){a.templates=b.rows})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.accounts.view.actions.wizard",{url:"/wizard",templateUrl:"app/channels/openchannel/account/view/action/wizard/wizard.html",controller:"OpenChannelAccountViewActionWizardCtrl"})}]),angular.module("xCallyShuttleApp").controller("OpenChannelAccountApiViewCtrl",["$scope","OpenChannelAccount","$http","$stateParams","clipboard","$translate","$location","xAlert",function(a,b,c,d,e,f,g,h){a.copyToClipboard=function(a){e.copyText(a),h.show(f.instant("MESSAGE_TEXT_COPIED_CLIPBOARD")+"!","success")},a.initView=function(){b.get({id:d.accountId}).$promise.then(function(b){a.account=b,a.receiveurl=a.account.remote+"/api/openchannel/accounts/"+a.account.id+"/receive"})["catch"](function(a){h.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.accounts.view.api",{url:"/api",controller:"OpenChannelAccountApiViewCtrl",templateUrl:"app/channels/openchannel/account/view/api/view/view.html"})}]),angular.module("xCallyShuttleApp").factory("OpenChannelDisposition",["$resource",function(a){return a("/api/openchannel/dispositions/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("OpenChannelInboxViewModaDispositionAddCtrl",["$scope","$uibModalInstance","OpenChannelAccount","id",function(a,b,c,d){a.ok=function(){return c.save({accountId:d,controller:"dispositions"},{name:a.name}).$promise.then(function(a){b.close(a)})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("OpenChannelAccountDispositionViewCtrl",["$scope","$stateParams","$uibModal","$translate","OpenChannelAccount","xAlert",function(a,b,c,d,e,f){a.initView=function(){return e.get({accountId:b.accountId,controller:"dispositions"}).$promise.then(function(b){a.dispositions=b.rows})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.updateDisposition=function(a,c){return e.update({accountId:b.accountId,controller:"dispositions",id:a},{name:c}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.deleteDisposition=function(c){return console.log("delete"),e.remove({accountId:b.accountId,controller:"dispositions",id:c}).$promise.then(function(){_.remove(a.dispositions,{id:c})})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.addDisposition=function(){return c.open({animation:!0,templateUrl:"app/channels/openchannel/account/view/disposition/modal/add.modal.html",controller:"OpenChannelInboxViewModaDispositionAddCtrl",resolve:{id:function(){return b.accountId}}}).result.then(function(b){b&&a.dispositions.push(b)})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.accounts.view.dispositions",{url:"/dispositions",controller:"OpenChannelAccountDispositionViewCtrl",templateUrl:"app/channels/openchannel/account/view/disposition/view/view.html"})}]),angular.module("xCallyShuttleApp").controller("OpenChannelAccountHooksViewCtrl",["$scope","OpenChannelAccount","Pause","$http","$stateParams","$translate","$location","xAlert",function(a,b,c,d,e,f,g,h){a.account={},a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.CONST_TIMEOUT=3e4,a.initView=function(){a.types=[{value:"",name:"-- None --"},{name:"HTTP GET",value:"GET"},{name:"HTTP POST",value:"POST"}],c.get().$promise.then(function(b){a.pauses=b.rows})["catch"](function(a){h.error(a)}),b.get({id:e.accountId}).$promise.then(function(b){a.account=b,a.account.actions.length<1&&a.account.actions.push({action:"pause",enabled:!1,type:null})})["catch"](function(a){h.error(a)})},a.resetActionData=function(a){a.type=null},a.updateItem=function(){return console.log(a.account),b.update({id:e.accountId},a.account).$promise.then(function(){h.show(f.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){h.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.accounts.view.hooks",{url:"/hooks",controller:"OpenChannelAccountHooksViewCtrl",templateUrl:"app/channels/openchannel/account/view/hooks/view/view.html"})}]),angular.module("xCallyShuttleApp").controller("OpenChannelAccountSettingViewCtrl",["$scope","OpenChannelAccount","$http","$stateParams","clipboard","$translate","$location","xAlert","List",function(a,b,c,d,e,f,g,h,i){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.CONST_TIMEOUT=3e4,a.types=[{name:"HTTP GET",value:"GET"},{name:"HTTP POST",value:"POST"}],a.account={},a.initView=function(){i.get().$promise.then(function(b){a.lists=b.rows})["catch"](function(a){console.error(a)}),b.get({id:d.accountId}).$promise.then(function(b){a.account=b})["catch"](function(a){h.error(a)})},a.updateItem=function(){return b.update({id:d.accountId},a.account).$promise.then(function(){h.show(f.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){h.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.accounts.view.settings",{url:"/settings",controller:"OpenChannelAccountSettingViewCtrl",templateUrl:"app/channels/openchannel/account/view/setting/view/view.html"})}]),angular.module("xCallyShuttleApp").controller("OpenChannelAccountViewCtrl",["$scope","OpenChannelAccount","$http","$stateParams","clipboard","$translate","$location","xAlert","List",function(a,b,c,d,e,f,g,h,i){a.initView=function(){return a.account={},b.get({id:d.accountId}).$promise.then(function(b){a.account=b})["catch"](function(a){h.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.accounts.view",{url:"/view/:accountId",templateUrl:"app/channels/openchannel/account/view/view.html",controller:"OpenChannelAccountViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]})}]}})}]),angular.module("xCallyShuttleApp").controller("OpenChannelAccountWizardCtrl",["$scope","$http","$location","$translate","WizardHandler","xAlert","OpenChannelAccount",function(a,b,c,d,e,f,g){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initWizard=function(){a.forms={},a.item={},a.item.remote=c.protocol()+"://"+location.host},a.goNext=function(){e.wizard().next()},a.formValidation=function(a){return a},a.createItem=function(){return g.save(a.item).$promise.then(function(){c.path("/channels/openchannel/accounts/list")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.accounts.wizard",{url:"/wizard",templateUrl:"app/channels/openchannel/account/wizard/wizard.html",controller:"OpenChannelAccountWizardCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.inbox",{url:"/inbox",template:"<div ui-view></div>",data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:48}}})}]),angular.module("xCallyShuttleApp").controller("OpenChannelInboxInfoModalCtrl",["$scope","$translate","$uibModalInstance","$stateParams","xAlert","data",function(a,b,c,d,e,f){a.data=null,a.initInfo=function(){f&&(a.data=_.isEmpty(JSON.parse(f))?null:JSON.parse(f))},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").directive("message",["$rootScope","OpenChannelMessage","List","xAlert","$translate","$uibModal",function(a,b,c,d,e,f){return{restrict:"E",scope:{Message:"=message",accounttype:"=accounttype",listId:"="},templateUrl:"app/channels/openchannel/inbox/message/message.html",link:function(b){b.openContact=function(f,g){if(b.listId){if(!g)return;var h;switch(f){case"phone":h={phone:g};break;case"email":h={email:g};break;default:return}return c.save({listId:b.listId,controller:"contacts"},h).$promise.then(function(b){var c=_.find(a.$root.workspaces,{contactID:b.id});c?c.active=!0:a.$root.workspaces.push({active:!0,"class":"icon-user",contactID:b.id,name:b.phone,type:"contact"})})["catch"](function(a){console.error(a)})}d.show(e.instant("MESSAGE_NO_LIST_CONFIGURED"),"info")},b.info=function(a){f.open({animation:!0,templateUrl:"app/channels/openchannel/inbox/message/info.modal.html",controller:"OpenChannelInboxInfoModalCtrl",resolve:{data:function(){return a}}})}}}}]),angular.module("xCallyShuttleApp").directive("openchannelRoom",["OpenChannelReport","$cookieStore","$translate","$uibModal","$timeout","Tag","CannedAnswer","Auth","OpenChannelAccount","OpenChannelRoom","OpenChannelMessage","xAlert","usSpinnerService","socket","$stateParams","$rootScope",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){return{restrict:"E",scope:{workspace:"=",index:"=",submit:"&onSubmit"},templateUrl:"app/channels/openchannel/inbox/room/room.directive.html",link:function(a){a.modelOptions={debounce:{"default":500,blur:250},getterSetter:!0},a.panelLeft=null,a.panelRight="col-md-12",a.togglePanelLeft=function(){a.panelLeft?(a.panelLeft=null,a.panelRight="col-md-12"):(a.panelLeft="col-md-6",a.panelRight="col-md-6")},a.form={disabled:!1,from:"",to:a.workspace.data&&a.workspace.data.to?a.workspace.data.to:"",body:""},n.socket.on("openchannel_message:save",function(b){return a.workspace.id&&b.OpenchannelRoomId==a.workspace.id?k.get({id:b.id}).$promise.then(function(b){a.Room||(a.Room={OpenchannelMessages:[]});var c=_.findIndex(a.Room.OpenchannelMessages,{id:b.id});c>-1?_.merge(a.Room.OpenchannelMessages[c],b):a.Room.OpenchannelMessages.unshift(b),a.panelLeft="col-md-6",a.panelRight="col-md-6"})["catch"](function(a){console.error(a)}):void 0}),n.socket.on("openchannel_message:update",function(b){if(a.Room&&b.OpenchannelRoomId==a.workspace.id){var c=_.find(a.Room.OpenchannelMessages,{id:b.id});c&&_.merge(c,b)}}),n.socket.on("openchannel_room:save",function(b){a.Room&&b.id==a.workspace.id&&(a.Room.status=b.status,a.Room.disposition=b.disposition)}),a.closeRoom=function(b){return d.open({animation:!0,templateUrl:"app/channels/openchannel/inbox/view/view.status.modal.html",controller:"OpenChannelInboxViewModalStatusCtrl",resolve:{closed:function(){return"CLOSED"===a.Room.status},accountId:function(){return a.Room.OpenchannelAccountId}}}).result.then(function(a){var c={id:b,status:"CLOSED"};return a.disposition&&(c.disposition=a.disposition),j.update(c).$promise["catch"](function(a){l.error(a)})})},a.openRoom=function(a,b){var c=_.find(p.workspaces,{id:a,type:"openchannelRoom"});c?c.active=!0:p.workspaces.push({id:a,name:b,type:"openchannelRoom","class":"icon-globe",active:!0})},f.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a)}),i.get().$promise.then(function(b){a.Accounts=b.rows})["catch"](function(a){console.error(a)}),a.workspace.id?(a.panelLeft="col-md-6",a.panelRight="col-md-6",j.get({id:a.workspace.id}).$promise.then(function(b){a.Room=b,a.form.from=a.Room.OpenchannelAccount.name,a.form.to=a.Room.contact,a.form.tags=a.Room.tags})["catch"](function(a){console.error(a)})["finally"](function(){m.stop("spinner-grid"),a.form.disabled=!1})):m.stop("spinner-grid"),a.onSelect=function(){a.form.body+=a.modelOptions.selectedAnswer,delete a.modelOptions.selectedAnswer},a.onSelectAnswer=function(b){a.form.body+=b,a.selectedAnswer=""},a.getAnswers=function(a){return g.get({key:a}).$promise.then(function(a){return _.map(a.rows,"value")})},a.loadAgents=function(){d.open({animation:!0,templateUrl:"app/channels/openchannel/inbox/view/view.agents.modal.html",controller:"OpenChannelInboxViewModalAgentCtrl",resolve:{roomId:function(){return a.workspace.id}}})},a.onChanged=function(){return j.patch({id:a.workspace.id},{tags:a.form.tags}).$promise["catch"](function(a){console.error(a)})},a.sendMessage=function(){m.spin("spinner-grid");var b=_.find(a.Accounts,{name:a.form.from}).id;if(b){var d={from:a.form.from,to:a.form.to,body:a.form.body,OpenchannelRoomId:a.Room?a.Room.id:null};return i.save({accountId:b,controller:"send"},d).$promise.then(function(b){return l.show(c.instant("MESSAGE_WELL_DONE"),"success"),a.Room?a.Room:j.get({id:"messages",controller:b.id}).$promise}).then(function(b){b&&(a.form.body="",a.workspace.id=b.id,a.workspace.name=b.contact,a.Room=b,a.panelLeft="col-md-6",a.panelRight="col-md-6")})["catch"](function(a){l.error(a)})["finally"](function(){m.stop("spinner-grid")})}}}}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.inbox.view.account",{url:"/account/:id",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("OpenChannelInboxViewAccountListCtrl",["$scope","$rootScope","$uibModal","$translate","$stateParams","$state","Tag","usSpinnerService","socket","OpenChannelAccount","OpenChannelRoom","gridOptions","uiGridConstants","Auth","Modal","xAlert","uibButtonConfig","localStorageService",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){a.loadAgents=function(a){c.open({animation:!0,templateUrl:"app/channels/openchannel/inbox/view/view.agents.modal.html",controller:"OpenChannelInboxViewModalAgentCtrl",resolve:{roomId:a}})},a.initView=function(){q.activeClass="green-haze",a.id=[],a.isAdmin=n.isAdmin(),a.isAgent=n.isAgent(),a.uncheckable=!1,a.query={status:r.get("openchannelStatus")?r.get("openchannelStatus"):"NEW",tags:r.get("openchannelTags")?r.get("openchannelTags"):[]},a.$watch("query.status",function(b,c){b!==c&&(r.set("openchannelStatus",a.query.status),a.getPage())},!0),g.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a)}),a.gridOptions={exporterCsvFilename:"openchannel_rooms.csv",enableRowHeaderSelection:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,enableFiltering:!0,enableSorting:!0,enableGridMenu:!1,flatEntityAccess:!0,showGridFooter:!0,fastWatch:!0,enableSelectAll:!0,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,columnDefs:[{name:"lastEvent",displayName:"",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div> <span data-ng-class=\"{'icon-arrow-up font-green': row.entity.lastEvent === 'SENT', 'icon-arrow-up font-yellow': row.entity.lastEvent === 'SENDING', 'icon-arrow-down font-green': row.entity.lastEvent === 'RECEIVED', 'icon-close font-red': row.entity.lastEvent === 'FAILED', 'icon-question': !row.entity.lastEvent}\"> </span> </div>",width:30,enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"tags",displayName:"",headerCellTemplate:'<i class="icon-tag" style="margin-top: 8px; margin-left: 8px;"></i>',cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><i data-ng-class=\"row.entity.tags.length ? 'icon-tag' : ''\" title=\"{{row.entity.tags}}\"></i></div>",width:30,enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"id",displayName:"Id",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><span>#{{row.entity.id}}</span></div>",width:75,enableSorting:!1,enableFiltering:!0,enableColumnMenu:!1},{name:"contact",cellClass:"text-center"},{name:"disposition",cellClass:"text-center"},{name:"createdAt",cellFilter:"date:'dd/MM/yyyy HH:mm'",width:120,enableFiltering:!1},{name:"updatedAt",cellFilter:"date:'dd/MM/yyyy HH:mm'",width:120,enableFiltering:!1,sort:{direction:m.DESC}},{name:"action",cellTemplate:'<div> <a class="btn btn-icon-only font-green" data-ng-click="grid.appScope.openRoom(row.entity.id, row.entity.contact)"><i class="glyphicon glyphicon-comment" aria-hidden="true"></i></a> <a class="btn btn-icon-only font-red" data-ng-show="grid.appScope.isAdmin" data-ng-click="grid.appScope.deleteItem(row.entity.id,row.entity.id)"><i class="fa fa-trash" aria-hidden="true"></i> </div>',enableSorting:!1,cellClass:"ui-grid-vcenter",width:90,enableFiltering:!1,enableColumnMenu:!1}],data:[],onRegisterApi:function(b){a.gridApi=b,a.gridApi.selection&&(a.gridApi.selection.on.rowSelectionChanged(a,function(b){b.isSelected?a.id.push(a.gridApi.grid.options.primaryKey?b.entity[a.gridApi.grid.options.primaryKey]:b.entity.id):_.pull(a.id,a.gridApi.grid.options.primaryKey?b.entity[a.gridApi.grid.options.primaryKey]:b.entity.id)}),a.gridApi.selection.on.rowSelectionChangedBatch(a,function(b){b[0].isSelected?a.id=_.union(a.id,_.map(b,a.gridApi.grid.options.primaryKey?"entity."+a.gridApi.grid.options.primaryKey:"entity.id")):_.map(b,a.gridApi.grid.options.primaryKey?"entity."+a.gridApi.grid.options.primaryKey:"entity.id").forEach(function(b){_.pull(a.id,b)})}))}},i.socket.on("openchannel_room:remove",function(b){_.remove(a.workspaces,{id:b.id,type:"openchannelRoom"}),_.remove(a.gridOptions.data,{id:b.id})}),a.getPage(a.query)},a.onChanged=function(){a.getPage(a.query)},a.tagItems=function(){return c.open({animation:!0,templateUrl:"app/channels/openchannel/inbox/view/view.tags.modal.html",controller:"OpenChannelInboxViewModalTagCtrl",resolve:{id:function(){return a.id}}}).result.then(function(){a.gridApi.selection.clearSelectedRows(),a.id=[],a.getPage()})},a.openRoom=function(b,c){var d=_.find(a.workspaces,{id:b,type:"openchannelRoom"});return d?d.active=!0:a.workspaces.push({id:b,name:c,type:"openchannelRoom","class":"icon-globe",active:!0}),b&&"agent"===n.getCurrentUser().role&&"PENDING"!==a.query.status&&"CLOSED"!==a.query.status?k.patch({id:b},{status:"OPEN",openReason:"agent"}).$promise["catch"](function(a){console.error(a)}):void 0},a.getPage=function(b){h.spin("spinner-grid");var c={accountId:e.id,controller:"rooms"};return b&&_.merge(c,b),a.query&&_.merge(c,a.query),j.query(c).$promise.then(function(b){r.set("openchannelAccountId",e.id),a.gridOptions.data=b,i.socket.on("openchannel_room:save",function(b){if(b.OpenchannelAccountId==e.id){var c=_.find(a.gridOptions.data,{id:b.id});c?c.status!==b.status?_.remove(a.gridOptions.data,{id:b.id}):_.merge(c,b):a.query.status===b.status&&a.gridOptions.data.push(b)}}),i.socket.on("openchannel_room:remove",function(b){_.remove(a.gridOptions.data,{id:b.id})})})["catch"](function(a){p.error(a)})["finally"](function(){h.stop("spinner-grid")})},a.deleteItem=o.confirm["delete"](function(b){var c={id:b};return console.log(c),k["delete"](c).$promise.then(function(){a.getPage(),p.show(d.instant("MESSAGE_WELL_DONE")+"!","success"),a.gridApi.selection.clearSelectedRows(),a.id=[]})["catch"](function(a){p.error(a)})}),a.deleteItems=o.confirm["delete"](function(){var b={ids:a.id};return k["delete"](b).$promise.then(function(){a.getPage(),p.show(d.instant("MESSAGE_WELL_DONE")+"!","success"),a.gridApi.selection.clearSelectedRows(),a.id=[]})["catch"](function(a){p.error(a)})})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){ -a.state("main.channels.openchannel.inbox.view.account.list",{url:"/list",templateUrl:"app/channels/openchannel/inbox/view/account/list/list.html",controller:"OpenChannelInboxViewAccountListCtrl"})}]),angular.module("xCallyShuttleApp").controller("OpenChannelInboxViewModalAgentCtrl",["$scope","$uibModalInstance","$translate","$stateParams","Agent","OpenChannelRoom","xAlert","roomId",function(a,b,c,d,e,f,g,h){a.initModal=function(){a.agents=[],a.item={agents:[]},e.get().$promise.then(function(b){b.rows.forEach(function(b){a.agents.push(b)})})["catch"](function(a){console.error(a)}),f.query({id:h,controller:"agents"}).$promise.then(function(b){b.forEach(function(b){a.agents.push(b),a.item.agents.push(b.id)})})["catch"](function(a){console.error(a)}),a.modal={dismissable:!0,title:"APPLICATION_MESSAGE_SEND_RETRY",text:"MESSAGE_MESSAGE_SEND_RETRY",buttons:[{classes:"btn btn-success",text:"APPLICATION_RETRY",click:function(a){b.close(a)}},{classes:"btn default",text:"APPLICATION_CANCEL",click:function(a){b.dismiss(a)}}]}},a.ok=function(){return f.update({id:h,controller:"agents",agents:a.item.agents}).$promise.then(function(){g.show(c.instant("MESSAGE_WELL_DONE"),"success"),b.close()})["catch"](function(a){console.error(a)})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("OpenChannelInboxViewCtrl",["$scope","$location","$stateParams","$translate","$uibModal","socket","Auth","xAlert","OpenChannelRoom","OpenChannelAccount","localStorageService",function(a,b,c,d,e,f,g,h,i,j,k){a.initView=function(){j.get().$promise.then(function(c){var d=null;if(a.openchannelAccounts=c.rows,a.openchannelAccounts.length){var e,f=k.get("openchannelAccountId");e=f&&_.find(a.openchannelAccounts,{id:Number(f)})?f:a.openchannelAccounts[0].id,d="/channels/openchannel/inbox/view/account/"+e+"/list"}d&&b.path(d)})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.inbox.view",{url:"/view",templateUrl:"app/channels/openchannel/inbox/view/view.html",controller:"OpenChannelInboxViewCtrl",reload:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/inbox.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("OpenChannelInboxViewModalStatusCtrl",["$scope","$uibModalInstance","closed","OpenChannelAccount","accountId",function(a,b,c,d,e){a.modal={title:"APPLICATION_CONFIRM_CLOSE",text:"MESSAGE_ARE_YOU_SURE_YOU_WANT_TO_CLOSE"},a.initDisposition=function(){return d.get({accountId:e,controller:"dispositions"}).$promise.then(function(b){a.dispositions=b.rows})["catch"](function(a){console.error(a)})},a.item={},a.closed=c,a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss()}}]),angular.module("xCallyShuttleApp").controller("OpenChannelInboxViewModalTagCtrl",["$scope","$uibModalInstance","$translate","$stateParams","Tag","OpenChannelRoom","xAlert","id",function(a,b,c,d,e,f,g,h){a.initModal=function(){return a.tags=[],a.item={tags:[]},a.modal={dismissable:!0,title:"APPLICATION_MESSAGE_SEND_RETRY",text:"MESSAGE_MESSAGE_SEND_RETRY",buttons:[{"class":"btn-success",text:"APPLICATION_TAG",click:function(){var d={status:!0};return f.patch({id:h},{tags:a.item.tags}).$promise.then(function(){g.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(){d.status=!1,g.show(c.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})["finally"](function(){b.close(d)})}},{"class":"default",text:"APPLICATION_CANCEL",click:function(a){b.dismiss(a)}}]},e.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel",{url:"/openchannel",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:20}}})}]),angular.module("xCallyShuttleApp").factory("OpenChannelReport",["$resource",function(a){return a("/api/report/openchannel/:id/:controller1/:controller2",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("OpenChannelRoom",["$resource",function(a){return a("/api/openchannel/rooms/:id/:controller",{id:"@id",controller:"@controller"},{update:{method:"PUT"},patch:{method:"PATCH"}})}]),angular.module("xCallyShuttleApp").factory("OpenChannelMessage",["$resource",function(a){return a("/api/openchannel/messages/:id/:controller",{id:"@id",controller:"@controller"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("OpenChannelQueueListCtrl",["$scope","OpenChannelQueue","gridOptions","$uibModal","xAlert","Auth",function(a,b,c,d,e,f){a.initView=function(){a.Auth=f;var d={exporterCsvFilename:"openchanel_queues.csv",columnDefs:[{name:"name"},{name:"description"},{name:"timeout"},{name:"strategy"},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/channels/openchannel/queues/view/{{row.entity.id}}/settings",name:"settings"},{"class":"green-meadow",href:"/channels/openchannel/queues/view/{{row.entity.id}}/agents",name:"agents",hide:"user"===f.getCurrentUser().role},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.createItem=function(){var b=d.open({animation:!0,templateUrl:"app/channels/openchannel/queue/list/list.create.modal.html",controller:"OpenChannelQueueListCreateCtrl",size:"lg"});b.result.then(function(b){console.log(b),a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("OpenChannelQueueListCreateCtrl",["$scope","$uibModalInstance","$translate","xAlert","OpenChannelQueue","Team","strategies",function(a,b,c,d,e,f,g){a.form={},a.strategies=g,a.item={penalty:0,agents:[]},a.getTeams=function(){return f.get({controller:"associations"}).$promise.then(function(b){a.teams=b.rows}).then(function(){ComponentsDropdowns.bindQueue(a.teams,[],function(){return{select:function(b){a.item.agents=_.union(a.item.agents,b)},deselect:function(b){a.item.agents=_.difference(a.item.agents,b)}}})})["catch"](function(a){console.error(a)})},a.save=function(){return console.log(a.item),e.save(a.item).$promise.then(function(a){b.close(a)})["catch"](function(a){d.error(a)})},a.cancel=function(){b.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.queues.list",{url:"/list",templateUrl:"app/channels/openchannel/queue/list/list.html",controller:"OpenChannelQueueListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}})}]),angular.module("xCallyShuttleApp").factory("OpenChannelQueue",["$resource",function(a){return a("/api/openchannel/queues/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.queues",{url:"/queues",template:"<div ui-view></div>",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:47}}})}]),angular.module("xCallyShuttleApp").controller("OpenChannelQueueViewCtrl",["$scope","$http","Auth","$translate","$stateParams","xAlert","Team","OpenChannelQueue","strategies",function(a,b,c,d,e,f,g,h,i){a.strategies=i,a.Auth=c;var j=function(){return{select:function(b){return h.save({id:a.queue.id,controller:"agents"},{agents:b,penalty:a.queue.penalty}).$promise.then(function(b){console.log("sel",b),a.getTeams()})["catch"](function(a){console.error(a)})},deselect:function(b){return h["delete"]({id:a.queue.id,controller:"agents",agents:b}).$promise.then(function(b){console.log("desel",b),a.getTeams()})["catch"](function(a){console.error(a)})}}};a.getQueue=function(){return h.get({id:e.id}).$promise.then(function(b){b.penalty=0,a.queue=b})["catch"](function(a){console.error(a)})},a.updateQueue=function(){return h.update({id:e.id},{name:a.queue.name,description:a.queue.description,timeout:a.queue.timeout,strategy:a.queue.strategy}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.getTeams=function(){return g.get({controller:"associations"}).$promise.then(function(b){return a.teams=b.rows,console.log(b.rows),h.get({id:e.id,controller:"agents"}).$promise}).then(function(b){console.log(b),ComponentsDropdowns.bindQueue(a.teams,_.map(b.rows,function(a){return{id:a.id,penalty:a.UserHasOpenchannelQueue.penalty}}),j)})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.queues.view",{url:"/view/:id",templateUrl:"app/channels/openchannel/queue/view/view.html",controller:"OpenChannelQueueViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.openchannel.queues.view.settings",{url:"/settings",templateUrl:"app/channels/openchannel/queue/view/view.settings.html"}).state("main.channels.openchannel.queues.view.agents",{url:"/agents",templateUrl:"app/channels/openchannel/queue/view/view.agents.html",cache:!1,serie:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.realtime",{url:"/realtime",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:49}}})}]),angular.module("xCallyShuttleApp").controller("OpenChannelRealtimeViewAgentCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","Agent","Pause","Action","OpenChannelQueue","usSpinnerService","$q","uiGridConstants","$timeout",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){function o(){return k.spin("grid-spinner"),g.get(t).$promise.then(function(b){a.gridOptions.totalItems=b.count,a.gridOptions.data=[],b.rows.forEach(function(a){q(a)})})["catch"](function(a){f.error(a)})["finally"](function(){k.stop("grid-spinner")})}function p(){e.socket.on("agent:save",function(b){b=b.newValues||b;var c=_.find(a.gridOptions.data,{agentId:b.id,isAgent:!0});c&&(c.online=_.has(b,"online")?b.online:c.online,c.lastLoginAt=_.has(b,"lastLoginAt")?b.lastLoginAt:c.lastLoginAt,c.pause=_.has(b,"openchannelPause")?b.openchannelPause:c.openchannelPause,c.pauseType=_.has(b,"pauseType")?b.pauseType:c.pauseType,c.lastPauseAt=_.has(b,"lastPauseAt")?b.lastPauseAt:c.lastPauseAt,c.ipaddr=_.has(b,"ipaddr")?b.ipaddr:c.ipaddr,c.port=_.has(b,"port")?b.port:c.port,c.fullcontact=_.has(b,"fullcontact")?b.fullcontact:c.fullcontact,c.useragent=_.has(b,"useragent")?b.useragent:c.useragent,c.lastms=_.has(b,"lastms")?b.lastms:c.lastms,c.internal=_.has(b,"internal")?b.internal:c.internal,_.map(a.gridOptions.data,function(a){a.isAgent||a.agentId!==b.id||(a.online=_.has(b,"online")?b.online:a.online)}))}),e.socket.on("agent:remove",function(b){_.remove(a.gridOptions.data,{agentId:b.id})}),e.socket.on("user_has_openchannel_queue:save",function(b){console.log("new queue",b);var c=_.find(a.gridOptions.data,{agentId:b.UserId,isAgent:!0}),d=a.gridOptions.data.indexOf(c);a.gridOptions.data.splice(d+1,0,{isAgent:!1,agentId:b.UserId,queue:b.queue,queueId:b.OpenchannelQueueId,agent:b.membername,online:c.online})}),e.socket.on("user_has_openchannel_queue:remove",function(b){_.remove(a.gridOptions.data,{agentId:b.UserId,queueId:b.OpenchannelQueueId})})}function q(b){a.gridOptions.data.push({isAgent:!0,agentId:b.id,agent:b.name,online:b.online,lastLoginAt:b.lastLoginAt,lastPauseAt:b.lastPauseAt,pause:b.openchannelPause,pauseType:b.pauseType,ipaddr:b.ipaddr,port:b.port,fullcontact:b.fullcontact,useragent:b.useragent,lastms:b.lastms,internal:b.internal,$$treeLevel:0}),b.OpenchannelQueues&&b.OpenchannelQueues.forEach(function(c){a.gridOptions.data.push({isAgent:!1,agentId:b.id,queue:c.name,queueId:c.id,agent:b.name,online:b.online})})}function r(){return h.get().$promise.then(function(b){a.pauses=b.rows,e.syncUpdates("pause",a.pauses)})["catch"](function(a){f.error(a)})}function s(){return j.get().$promise.then(function(b){a.openchannelQueues=b.rows,e.syncUpdates("openchannel_queue",a.openchannelQueues)})["catch"](function(a){f.error(a)})}a.openchannelQueues=[];var t={controller:"realtime",controller1:"openchannel",offset:0,limit:10};a.moment=moment,a.initAgents=function(){a.gridOptions={enableGridMenu:!0,headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,useExternalPagination:!0,useExternalSorting:!0,useExternalFiltering:!0,multiSelect:!0,showTreeExpandNoChildren:!0,columnDefs:[{name:"name",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.isAgent">{{row.entity.agent}} <{{row.entity.internal}}></div>'},{name:"online",displayName:"APPLICATION_ONLINE",width:150,headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.online != null && row.entity.isAgent"><i class="fa" data-ng-class="{\'font-green\':row.entity.online, \'font-red\':!row.entity.online,\'fa-user\':row.entity.online,\'fa-user-times\':!row.entity.online}"></i> <i data-ng-if="row.entity.online" class="fa fa-sign-out font-red pointer-cursor" title="logout" data-ng-click="grid.appScope.agentLogout(row.entity.agent,row.entity.agentId)"></i> <span data-ng-if="row.entity.online && grid.appScope.showTimers" class="left-margin"><css-timer start-time="row.entity.lastLoginAt"></css-timer></span></div>',filter:{type:m.filter.SELECT,selectOptions:[{value:"true",label:"ONLINE"},{value:"false",label:"OFFLINE"}]}},{name:"openchannelPause",displayName:"APPLICATION_PAUSE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.pause != null && row.entity.online" class="ui-grid-vcenter"><i data-ng-if="row.entity.pause" data-ng-click="grid.appScope.pause(row.entity,\'unpause\')" class="fa fa-play font-green pointer-cursor left-margin" title="{{\'APPLICATION_RESUME\' | translate}}"></i><i class="fa fa-pause font-yellow pointer-cursor" data-ng-click="grid.appScope.pause(row.entity,\'pause\',\'DEFAULT PAUSE\')" title="{{\'APPLICATION_DEFAULT_PAUSE\' | translate}}"></i><select data-ng-if="grid.appScope.pauses.length" class="pause-select pointer-cursor" data-ng-model="grid.appScope.pauseType" data-ng-change="grid.appScope.pause(row.entity,\'pause\',grid.appScope.pauseType)"><option class="pointer-cursor" data-ng-repeat="pause in grid.appScope.pauses">{{pause.name}}</option></select> <span data-ng-if="row.entity.pause" class="left-margin">({{row.entity.pauseType}})</span><span data-ng-if="row.entity.pause && grid.appScope.showTimers" class="left-margin"><css-timer start-time="row.entity.lastPauseAt"></css-timer></span></div>',filter:{type:m.filter.SELECT,selectOptions:[{value:"true",label:"PAUSED"},{value:"false",label:"NOT PAUSED"}]},enableSorting:!1,enableColumnMenu:!1},{name:"queue",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"action",displayName:"",width:170,cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><button data-ng-if="row.entity.queueId" class="btn btn-xs red-sunglo" data-ng-click="grid.appScope.leaveQueue(row.entity.agentId,row.entity.queueId)"><i class="icon-ban"></i> {{\'APPLICATION_LEAVE\' | translate}}</button><button data-ng-if="row.entity.isAgent && row.treeNode.children.length < grid.appScope.openchannelQueues.length" class="btn btn-xs blue-hoki" data-ng-click="grid.appScope.joinQueue(row.entity.agentId)"><i class="icon-plus"></i> {{\'APPLICATION_JOIN_QUEUE\' | translate}}</button><div>',enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1}],data:[],gridMenuTitleFilter:function(a){var b=l.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){u(a.gridApi.core.getVisibleRows(a.gridApi.grid).length)}),a.gridApi.treeBase.on.rowExpanded(a,function(b){u(a.gridApi.core.getVisibleRows(a.gridApi.grid).length+b.treeNode.children.length)}),a.gridApi.treeBase.on.rowCollapsed(a,function(b){u(a.gridApi.core.getVisibleRows(a.gridApi.grid).length-b.treeNode.children.length)}),a.gridApi.core.on.sortChanged(a,function(a,b){0===b.length?t.order=null:t.order=b[0].name+" "+b[0].sort.direction.toUpperCase(),o()}),a.gridApi.pagination.on.paginationChanged(a,function(a,b){t.offset=(a-1)*b,t.limit=b,o()}),a.gridApi.core.on.filterChanged(a,function(){var a=this.grid;a.columns.forEach(function(a){a.filters[0].term?t[a.name]=a.filters[0].term:delete t[a.name]}),o()})}},o(),r(),s(),n(function(){p()})};var u=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("agent"),e.unsyncUpdates("user_has_openchannel_queue")}),a.pause=function(b,c,e){return e&&(a.pauseType=null),i.save({name:c,agent:b.agentId,data2:b.agent,type:e||"DEFAULT PAUSE",data4:e||"DEFAULT PAUSE",channel:"openchannel"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.joinQueue=function(e){var g=c.open({animation:!0,templateUrl:"app/channels/openchannel/realtime/view/agent/queue.modal.add.html",controller:"OpenChannelRealtimeViewAgentQueueModalCtrl",resolve:{queues:function(){return _.reject(a.openchannelQueues,function(b){return!!_.find(a.gridOptions.data,{queue:b.name,isAgent:!1,agentId:e})})}}});g.result.then(function(b){return i.save({name:"QueueAdd",agent:e,queues:_.filter(a.openchannelQueues,function(a){return _.includes(b.queues,a.id)}),channel:"openchannel",data1:e,data3:b.queues.join(","),data4:"openchannel"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},function(){b.info("Modal dismissed at: "+new Date)})},a.leaveQueue=function(a,b){return i.save({name:"QueueRemove",agent:a,queueId:b,channel:"openchannel",data1:a,data3:b,data4:"openchannel"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.showInfo=function(a){c.open({animation:!0,templateUrl:"app/channels/openchannel/realtime/view/agent/agent.modal.info.html",controller:"OpenChannelRealtimeViewAgentInfoModalCtrl",resolve:{agent:a}})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.realtime.view.agents",{url:"/agents",templateUrl:"app/channels/openchannel/realtime/view/agent/agent.html",controller:"OpenChannelRealtimeViewAgentCtrl"})}]),angular.module("xCallyShuttleApp").controller("OpenChannelRealtimeViewAgentInfoModalCtrl",["$scope","$uibModalInstance","$http","agent",function(a,b,c,d){a.agent=d,a.close=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("OpenChannelRealtimeViewAgentQueueModalCtrl",["$scope","$uibModalInstance","$http","queues",function(a,b,c,d){a.queues=d,a.item={},a.save=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("OpenChannelRealtimeViewApplicationCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","ReportOpenChannelSession","usSpinnerService","$q","uiGridConstants","$timeout",function(a,b,c,d,e,f,g,h,i,j,k){function l(){return h.spin("spinner-grid"),g.get({controller:"waiting",controller2:"applications"}).$promise.then(function(b){a.gridOptions.data=b.rows})["catch"](function(a){f.error(a)})["finally"](function(){m(),h.stop("spinner-grid")})}function m(){e.socket.on("report_openchannel_session:save",function(b){var c=_.find(a.gridOptions.data,{id:b.id});c?(_.merge(c,b),b.leaveAt&&k(function(){_.remove(a.gridOptions.data,{id:b.id})},1e4)):b.leaveAt||a.gridOptions.data.push(b)}),e.socket.on("report_openchannel_session:remove",function(b){_.remove(a.gridOptions.data,{id:b.id})})}a.moment=moment,a.initApplications=function(){a.gridOptions={headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,columnDefs:[{name:"uniqueid",displayName:"APPLICATION_UNIQUEID",headerCellFilter:"translate"},{name:"accountname",displayName:"APPLICATION_ACCOUNT",headerCellFilter:"translate"},{name:"application",displayName:"APPLICATION_APPLICATION",headerCellFilter:"translate"},{name:"status",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span data-ng-if="!row.entity.leaveAt">{{\'APPLICATION_QUEUESTATUS_WAITING\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.complete">{{\'APPLICATION_QUEUESTATUS_COMPLETE\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.timeout">{{\'APPLICATION_TIMEOUT\' | translate}}</span> <span data-ng-if="!row.entity.leaveAt && grid.appScope.showTimers"><css-timer start-time="row.entity.updatedAt"></css-timer></span></div>',enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1},{name:"membername",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.membername || ''}}</span></div>"},{name:"queuename",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.queuename || ''}}</span></div>"}],data:[],gridMenuTitleFilter:function(a){var b=i.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){n(a.gridOptions.data.length)})}},l()};var n=function(a){var b=a?30*a+60:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("report_openchannel_session")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.realtime.view.applications",{url:"/applications",templateUrl:"app/channels/openchannel/realtime/view/application/application.html",controller:"OpenChannelRealtimeViewApplicationCtrl"})}]),angular.module("xCallyShuttleApp").controller("OpenChannelRealtimeViewCtrl",["$scope","$state",function(a,b){a.agents=[{name:"Queues",link:"main.channels.openchannel.realtime.view.agents.queues"},{name:"Timeline",link:"main.channels.openchannel.realtime.view.agents.timeline"}],a.sessions=[{name:"Sessions",link:"main.channels.openchannel.realtime.view.sessions"}],a.tree={queues:[{name:"Queues",link:"main.channels.openchannel.realtime.view.agents.queues"},{name:"Timeline",link:"main.channels.openchannel.realtime.view.agents.timeline"}],sessions:[{name:"Sessions",link:"main.channels.openchannel.realtime.view.sessions"}]},a.timerSwitch={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"primary"},a.showTimers=!1}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.openchannel.realtime.view",{url:"/view",templateUrl:"app/channels/openchannel/realtime/view/view.html",controller:"OpenChannelRealtimeViewCtrl"})}]),angular.module("xCallyShuttleApp").factory("ReportOpenChannelSession",["$resource",function(a){return a("/api/report/openchannel/sessions/:id/:controller/:controller2",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.realtime",{url:"/realtime",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:12}}})}]),angular.module("xCallyShuttleApp").controller("RealtimeViewAgentCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","Agent","Pause","Action","usSpinnerService","$q","uiGridConstants","$timeout",function(a,b,c,d,e,f,g,h,i,j,k,l,m){function n(b){return j.spin("grid-spinner"),g.get(q).$promise.then(function(b){a.gridOptions.totalItems=b.count,a.gridOptions.data=b.rows})["catch"](function(a){f.error(a)})["finally"](function(){b&&m(function(){o()}),j.stop("grid-spinner")})}function o(){e.socket.on("agent:save",function(b){b=b.newValues||b;var c=_.find(a.gridOptions.data,{id:b.id});c&&_.merge(c,b)}),e.socket.on("agent:remove",function(b){_.remove(a.gridOptions.data,{id:b.id})})}function p(){return h.get().$promise.then(function(b){a.pauses=b.rows,e.syncUpdates("pause",a.pauses)})["catch"](function(a){f.error(a)})}var q={controller:"realtime",offset:0,limit:10};a.moment=moment,a._=_,a.initAgents=function(){a.gridOptions={enableGridMenu:!0,headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,useExternalPagination:!0,useExternalSorting:!0,useExternalFiltering:!0,showTreeExpandNoChildren:!0,columnDefs:[{name:"name",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.name}} <{{row.entity.internal}}></div>",minWidth:250},{name:"online",displayName:"APPLICATION_ONLINE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.online != null"><i class="fa" data-ng-class="{\'font-green\':row.entity.online, \'font-red\':!row.entity.online,\'fa-user\':row.entity.online,\'fa-user-times\':!row.entity.online}"></i> <i data-ng-if="row.entity.online" class="fa fa-sign-out font-red pointer-cursor" title="logout" data-ng-click="grid.appScope.agentLogout(row.entity.name,row.entity.id)"></i> <span data-ng-if="row.entity.online && grid.appScope.showTimers" class="left-margin"><css-timer start-time="row.entity.lastLoginAt"></css-timer></span></div>',filter:{type:l.filter.SELECT,selectOptions:[{value:"true",label:"ONLINE"},{value:"false",label:"OFFLINE"}]}},{name:"pauseStatus",displayName:"APPLICATION_PAUSE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span class="left-margin"><i data-ng-if="row.entity.voicePause || row.entity.mailPause || row.entity.chatPause || row.entity.faxPause || row.entity.smsPause" data-ng-click="grid.appScope.pause(row.entity,\'unpause\',null,null)" class="fa fa-play font-green pointer-cursor" title="{{\'APPLICATION_RESUME\' | translate}}"></i> <i class="fa fa-pause font-yellow pointer-cursor" data-ng-click="grid.appScope.pause(row.entity,\'pause\',\'DEFAULT PAUSE\')" title="{{\'APPLICATION_DEFAULT_PAUSE\' | translate}}"></i></span><select data-ng-if="grid.appScope.pauses.length" class="pause-select pointer-cursor" data-ng-model="grid.appScope.pauseType" data-ng-change="grid.appScope.pause(row.entity,\'pause\',grid.appScope.pauseType)"><option class="pointer-cursor" data-ng-repeat="pause in grid.appScope.pauses">{{pause.name}}</option></select><span data-ng-if="row.entity.voicePause || row.entity.mailPause || row.entity.chatPause || row.entity.faxPause || row.entity.smsPause || row.entity.openchannelPause"> [{{row.entity.pauseType}}]<span data-ng-if="grid.appScope.showTimers"><css-timer start-time="row.entity.lastPauseAt"></css-timer></span></span></div>',enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"voicePause",displayName:"APPLICATION_VOICE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.online"><span class="left-margin"><i data-ng-if="row.entity.voicePause" data-ng-click="grid.appScope.pause(row.entity,\'unpause\',null,\'voice\')" class="fa fa-play font-green pointer-cursor" title="{{\'APPLICATION_RESUME\' | translate}}"></i><span data-ng-if="row.entity.voicePause && grid.appScope._.startsWith(row.entity.pauseType,\'#\')"> * </span></span></div>',filter:{type:l.filter.SELECT,selectOptions:[{value:"true",label:d.instant("APPLICATION_PAUSED")},{value:"connect",label:d.instant("APPLICATION_NOT_PAUSED")}]},enableSorting:!1,enableColumnMenu:!1},{name:"mailPause",displayName:"APPLICATION_MAIL",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.online"><span class="left-margin"><i data-ng-if="row.entity.mailPause" data-ng-click="grid.appScope.pause(row.entity,\'unpause\',null,\'mail\')" class="fa fa-play font-green pointer-cursor" title="{{\'APPLICATION_RESUME\' | translate}}"></i></span></div>',filter:{type:l.filter.SELECT,selectOptions:[{value:"true",label:d.instant("APPLICATION_PAUSED")},{value:"connect",label:d.instant("APPLICATION_NOT_PAUSED")}]},enableSorting:!1,enableColumnMenu:!1},{name:"chatPause",displayName:"APPLICATION_CHAT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.online"><span class="left-margin"><i data-ng-if="row.entity.chatPause" data-ng-click="grid.appScope.pause(row.entity,\'unpause\',null,\'chat\')" class="fa fa-play font-green pointer-cursor" title="{{\'APPLICATION_RESUME\' | translate}}"></i></span></div>',filter:{type:l.filter.SELECT,selectOptions:[{value:"true",label:d.instant("APPLICATION_PAUSED")},{value:"connect",label:d.instant("APPLICATION_NOT_PAUSED")}]},enableSorting:!1,enableColumnMenu:!1},{name:"faxPause",displayName:"APPLICATION_FAX",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.online"><span class="left-margin"><i data-ng-if="row.entity.faxPause" data-ng-click="grid.appScope.pause(row.entity,\'unpause\',null,\'fax\')" class="fa fa-play font-green pointer-cursor" title="{{\'APPLICATION_RESUME\' | translate}}"></i></span></div>',filter:{type:l.filter.SELECT,selectOptions:[{value:"true",label:d.instant("APPLICATION_PAUSED")},{value:"connect",label:d.instant("APPLICATION_NOT_PAUSED")}]},enableSorting:!1,enableColumnMenu:!1},{name:"smsPause",displayName:"APPLICATION_SMS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.online"><span class="left-margin"><i data-ng-if="row.entity.smsPause" data-ng-click="grid.appScope.pause(row.entity,\'unpause\',null,\'sms\')" class="fa fa-play font-green pointer-cursor" title="{{\'APPLICATION_RESUME\' | translate}}"></i></span></div>',filter:{type:l.filter.SELECT,selectOptions:[{value:"true",label:d.instant("APPLICATION_PAUSED")},{value:"connect",label:d.instant("APPLICATION_NOT_PAUSED")}]},enableSorting:!1,enableColumnMenu:!1},{name:"openchannelPause",displayName:"APPLICATION_OPENCHANNEL",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.online"><span class="left-margin"><i data-ng-if="row.entity.openchannelPause" data-ng-click="grid.appScope.pause(row.entity,\'unpause\',null,\'openchannel\')" class="fa fa-play font-green pointer-cursor" title="{{\'APPLICATION_RESUME\' | translate}}"></i></span></div>',filter:{type:l.filter.SELECT,selectOptions:[{value:"true",label:d.instant("APPLICATION_PAUSED")},{value:"connect",label:d.instant("APPLICATION_NOT_PAUSED")}]},enableSorting:!1,enableColumnMenu:!1}],data:[],gridMenuTitleFilter:function(a){var b=k.defer(); -return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){r(a.gridApi.core.getVisibleRows(a.gridApi.grid).length)}),a.gridApi.core.on.sortChanged(a,function(a,b){0===b.length?q.order=null:q.order=b[0].name+" "+b[0].sort.direction.toUpperCase(),n()}),a.gridApi.pagination.on.paginationChanged(a,function(a,b){q.offset=(a-1)*b,q.limit=b,n()}),a.gridApi.core.on.filterChanged(a,function(){var a=this.grid;a.columns.forEach(function(a){a.filters[0].term?q[a.name]=a.filters[0].term:delete q[a.name]}),n()})}},n(!0),p()};var r=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("agent")}),a.pause=function(b,c,e,g){return e&&(a.pauseType=null),i.save({name:c,agent:b.id,data2:b.name,type:e||"DEFAULT PAUSE",data4:e||"DEFAULT PAUSE",channel:g||"all"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.realtime.view.agents",{url:"/agents",templateUrl:"app/channels/realtime/view/agent/agent.html",controller:"RealtimeViewAgentCtrl"})}]),angular.module("xCallyShuttleApp").controller("RealtimeViewAgentLogoutModalCtrl",["$scope","$uibModalInstance","name",function(a,b,c){a.agent=c,a.logout=function(){b.close()}}]),angular.module("xCallyShuttleApp").controller("RealtimeViewAgentQueueModalCtrl",["$scope","$uibModalInstance","$http","queues",function(a,b,c,d){a.queues=d,a.item={},a.save=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("RealtimeViewCtrl",["$scope",function(a){a.timerSwitch={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"primary"},a.showTimers=!1}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.realtime.view",{url:"/view",templateUrl:"app/channels/realtime/view/view.html",controller:"RealtimeViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}})}]),angular.module("xCallyShuttleApp").factory("ReportCall",["$resource",function(a){return a("/api/report/calls/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("ReportDial",["$resource",function(a){return a("/api/report/dials/:id/:controller/:controller2",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("SmsAccount",["$resource",function(a){return a("/api/sms/accounts/:accountId/:controller/:id",{id:"@accountId"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.accounts",{url:"/accounts",template:"<div ui-view></div>",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:42}}})}]),angular.module("xCallyShuttleApp").controller("SmsAccountListCtrl",["$scope","SmsAccount","gridOptions","$stateParams","xAlert","$translate",function(a,b,c,d,e,f){a.message="Hello",a.initView=function(){var e={exporterCsvFilename:"sms_accounts.csv",columnDefs:[{name:"id",displayName:"ID",cellClass:"text-center",width:75,enableSorting:!1,enableFiltering:!1},{name:"name"},{name:"description"},{name:"type",displayName:"APPLICATION_ACCOUNT_TYPE"},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/channels/sms/accounts/view/{{row.entity.id}}/settings",name:"profile"},{"class":"green-jungle",name:"check",onClick:"grid.appScope.checkAccount(row.entity.id)"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,e,a,{accountId:d.accountId})},a.checkAccount=function(a){return b.get({accountId:a,controller:"check"}).$promise.then(function(){e.show(f.instant("MESSAGE_ACCOUNT_VERIFIED"),"success")})["catch"](function(a){e.show(f.instant("MESSAGE_ACCOUNT_INVALID"),"danger")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.accounts.list",{url:"/list",templateUrl:"app/channels/sms/account/list/list.html",controller:"SmsAccountListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.accounts.view.actions",{url:"/actions",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").factory("SmsApplication",["$resource",function(a){return a("/api/sms/applications/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("SmsAccountViewActionListCtrl",["$scope","gridOptions","SmsAccount","$http","$translate","$stateParams","xAlert",function(a,b,c,d,e,f,g){a.initActions=function(){var d={draggable:!0,exporterCsvFilename:"sms_applications.csv",enableSorting:!1,enableFiltering:!1,columnDefs:[{name:"app",cellClass:"text-center"},{name:"name",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span>{{row.entity.app == "queue" ? row.entity.SmsQueue.name : row.entity.User.name}}</span></div>'},{name:"timeout",cellClass:"text-center"},{name:"interval",displayName:"APPLICATION_TIME_INTERVAL",cellClass:"text-center",cellTemplate:"<div><span>{{row.entity.Interval ? row.entity.Interval.name : row.entity.interval}}</span></div>"},{name:"action",width:125,buttons:[{"class":"blue-hoki",href:"/channels/sms/accounts/view/{{row.entity.SmsAccountId}}/actions/view/{{row.entity.id}}",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.app, row.entity.id)"}]}]};a.gridOptions=b.gridOptions(c,d,a,{accountId:f.accountId,controller:"applications"})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.accounts.view.actions.list",{url:"/list",templateUrl:"app/channels/sms/account/view/action/list/list.html",controller:"SmsAccountViewActionListCtrl"})}]),angular.module("xCallyShuttleApp").controller("SmsAccountViewActionViewCtrl",["$scope","$http","$stateParams","$translate","$location","xAlert","WizardHandler","socket","application","interval","Agent","Interval","SmsQueue","SmsAccount","Template","MailAccount","SmsApplication",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initAction=function(){return a.$application=i.application,a.$stateParams=c,a.$interval=j.interval,a.forms={},a.apps=[{name:"Queue",value:"queue"},{name:"Agent",value:"agent"},{name:"SendMail",value:"sendMail"},{name:"SendSMS",value:"sendSms"}],q.get({id:c.actionId}).$promise.then(function(b){if(a.application=b,a.application.alwaysTime=!1,a.application.IntervalId)a.application.intType="list";else switch(a.application.interval){case"*,*,*,*":a.application.intType="always";break;default:a.application.intType="custom"}if("always"===a.application.intType||"custom"===a.application.intType){var c=a.application.interval.split(",");"*"===c[0]?a.application.alwaysTime=!0:(a.application.t_from=moment(new Date),a.application.t_to=moment(new Date),a.application.t_from.hour(c[0].split("-")[0].split(":")[0]),a.application.t_from.minute(c[0].split("-")[0].split(":")[1]),a.application.t_to.hour(c[0].split("-")[1].split(":")[0]),a.application.t_to.minute(c[0].split("-")[1].split(":")[1])),"*"===c[1]?(a.application.wd_from="always",a.application.wd_to="always"):(a.application.wd_from=c[1].split("-")[0],a.application.wd_to=c[1].split("-")[1]),"*"===c[2]?(a.application.md_from="always",a.application.md_to="always"):(a.application.md_from=c[2].split("-")[0],a.application.md_to=c[2].split("-")[1]),"*"===c[3]?(a.application.m_from="always",a.application.m_to="always"):(a.application.m_from=c[3].split("-")[0],a.application.m_to=c[3].split("-")[1])}a.$watch("application.t_from",function(b){a.application.t_from_hm=moment(b).format("HH:mm")}),a.$watch("application.t_to",function(b){a.application.t_to_hm=moment(b).format("HH:mm")})})["catch"](function(a){f.error(a)})},a.getQueues=function(){return m.get().$promise.then(function(b){a.queues=b.rows})["catch"](function(a){console.error(a)})},a.getAgents=function(){return k.get().$promise.then(function(b){a.agents=b.rows})["catch"](function(a){console.error(a)})},a.getIntervals=function(){return l.get().$promise.then(function(b){a.intervals=b.rows})["catch"](function(a){console.error(a)})},a.getTemplates=function(){return o.get().$promise.then(function(b){a.templates=b.rows})["catch"](function(a){console.error(a)})},a.getMailAccounts=function(){return p.get().$promise.then(function(b){a.mailAccounts=b.rows})["catch"](function(a){console.error(a)})},a.getSmsAccounts=function(){return n.get().$promise.then(function(b){a.smsAccounts=b.rows})["catch"](function(a){console.error(a)})},a.updateItem=function(){switch(a.application.intType){case"always":a.application.interval="*,*,*,*",a.application.IntervalId=null;break;case"list":var b=_.find(a.intervals,{id:a.application.IntervalId});a.application.interval=b?"":"*,*,*,*",a.application.IntervalId=b?a.application.IntervalId:null;break;case"custom":var g,h,i,j,k;g=a.application.t_from&&a.application.t_to&&!a.application.alwaysTime?moment(a.application.t_from).format("HH:mm")+"-"+moment(a.application.t_to).format("HH:mm"):"*",a.application.wd_from&&"always"!==a.application.wd_from?(h=a.application.wd_from,a.application.wd_to&&"always"!==a.application.wd_to&&(h+="-"+a.application.wd_to)):h="*",a.application.md_from&&"always"!==a.application.md_from?(i=a.application.md_from,a.application.md_to&&"always"!==a.application.md_to&&(i+="-"+a.application.md_to)):i="*",a.application.m_from&&"always"!==a.application.m_from?(j=a.application.m_from,a.application.m_to&&"always"!==a.application.m_to&&(j+="-"+a.application.m_to)):j="*",k=g+","+h+","+i+","+j,a.application.interval=k,a.application.IntervalId=null}return n.update({accountId:c.accountId,controller:"applications",id:c.actionId},a.application).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success"),e.path("/channels/sms/accounts/view/"+c.accountId+"/actions/list")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.accounts.view.actions.view",{url:"/view/:actionId",templateUrl:"app/channels/sms/account/view/action/view/view.html",controller:"SmsAccountViewActionViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("SmsAccountViewActionWizardCtrl",["$scope","$http","Agent","SmsQueue","Interval","$stateParams","$translate","$location","xAlert","WizardHandler","socket","application","interval","SmsAccount","Template","MailAccount",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initWizard=function(){a.apps=[{name:"Queue",value:"queue"},{name:"Agent",value:"agent"},{name:"SendMail",value:"sendMail"},{name:"SendSMS",value:"sendSms"}],a.$application=l.application,a.$stateParams=f,a.$interval=m.interval,a.forms={},a.application={alwaysTime:!0},a.$watch("application.t_from",function(b){a.application.t_from_hm=moment(b).format("HH:mm")}),a.$watch("application.t_to",function(b){a.application.t_to_hm=moment(b).format("HH:mm")})},a.getQueues=function(){return d.get().$promise.then(function(b){console.log(b),a.queues=b.rows})["catch"](function(a){console.error(a)})},a.getAgents=function(){return c.get().$promise.then(function(b){a.agents=b.rows})["catch"](function(a){console.error(a)})},a.getIntervals=function(){return e.get().$promise.then(function(b){a.intervals=b.rows})["catch"](function(a){console.error(a)})},a.getTemplates=function(){return o.get().$promise.then(function(b){a.templates=b.rows})["catch"](function(a){console.error(a)})},a.getMailAccounts=function(){return p.get().$promise.then(function(b){a.mailAccounts=b.rows})["catch"](function(a){console.error(a)})},a.getSmsAccounts=function(){return n.get().$promise.then(function(b){a.smsAccounts=b.rows})["catch"](function(a){console.error(a)})},a.createItem=function(){switch(a.application.intType){case"always":a.application.interval="*,*,*,*",a.application.IntervalId=null;break;case"list":var b=_.find(a.intervals,{id:a.application.IntervalId});a.application.interval=b?"":"*,*,*,*",a.application.IntervalId=b?a.application.IntervalId:null;break;case"custom":var c,d,e,j,k;c=a.application.t_from&&a.application.t_to&&!a.application.alwaysTime?moment(a.application.t_from).format("HH:mm")+"-"+moment(a.application.t_to).format("HH:mm"):"*",a.application.wd_from&&"always"!==a.application.wd_from?(d=a.application.wd_from,a.application.wd_to&&"always"!==a.application.wd_to&&(d+="-"+a.application.wd_to)):d="*",a.application.md_from&&"always"!==a.application.md_from?(e=a.application.md_from,a.application.md_to&&"always"!==a.application.md_to&&(e+="-"+a.application.md_to)):e="*",a.application.m_from&&"always"!==a.application.m_from?(j=a.application.m_from,a.application.m_to&&"always"!==a.application.m_to&&(j+="-"+a.application.m_to)):j="*",k=c+","+d+","+e+","+j,a.application.interval=k,a.application.IntervalId=null}return n.save({accountId:f.accountId,controller:"applications"},a.application).$promise.then(function(){i.show(g.instant("MESSAGE_WELL_DONE"),"success"),h.path("/channels/sms/accounts/view/"+f.accountId+"/actions/list")})["catch"](function(a){i.error(a)})},a.formValidation=function(a){return a},a.next=function(){j.wizard().next()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.accounts.view.actions.wizard",{url:"/wizard",templateUrl:"app/channels/sms/account/view/action/wizard/wizard.html",controller:"SmsAccountViewActionWizardCtrl"})}]),angular.module("xCallyShuttleApp").controller("SmsAccountApiViewCtrl",["$scope","SmsAccount","$http","$stateParams","clipboard","$translate","$location","xAlert",function(a,b,c,d,e,f,g,h){a.copyToClipboard=function(a){e.copyText(a),h.show(f.instant("MESSAGE_TEXT_COPIED_CLIPBOARD")+"!","success")},a.initView=function(){b.get({id:d.accountId}).$promise.then(function(b){a.account=b,a.deliveryurl=a.account.remote+"/api/sms/accounts/"+a.account.id+"/messageStatus",a.receiveurl=a.account.remote+"/api/sms/accounts/"+a.account.id+"/receive"})["catch"](function(a){h.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.accounts.view.api",{url:"/api",controller:"SmsAccountApiViewCtrl",templateUrl:"app/channels/sms/account/view/api/view/view.html"})}]),angular.module("xCallyShuttleApp").factory("SmsDisposition",["$resource",function(a){return a("/api/sms/dispositions/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("SmsInboxViewModaDispositionAddCtrl",["$scope","$uibModalInstance","SmsAccount","id",function(a,b,c,d){a.ok=function(){return c.save({accountId:d,controller:"dispositions"},{name:a.name}).$promise.then(function(a){b.close(a)})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("SmsAccountDispositionViewCtrl",["$scope","$stateParams","$uibModal","$translate","SmsAccount","xAlert",function(a,b,c,d,e,f){a.initView=function(){return e.get({accountId:b.accountId,controller:"dispositions"}).$promise.then(function(b){a.dispositions=b.rows})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.updateDisposition=function(a,c){return e.update({accountId:b.accountId,controller:"dispositions",id:a},{name:c}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.deleteDisposition=function(c){return console.log("delete"),e.remove({accountId:b.accountId,controller:"dispositions",id:c}).$promise.then(function(){_.remove(a.dispositions,{id:c})})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.addDisposition=function(){return c.open({animation:!0,templateUrl:"app/channels/sms/account/view/disposition/modal/add.modal.html",controller:"SmsInboxViewModaDispositionAddCtrl",resolve:{id:function(){return b.accountId}}}).result.then(function(b){b&&a.dispositions.push(b)})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.accounts.view.dispositions",{url:"/dispositions",controller:"SmsAccountDispositionViewCtrl",templateUrl:"app/channels/sms/account/view/disposition/view/view.html"})}]),angular.module("xCallyShuttleApp").controller("SmsAccountHooksViewCtrl",["$scope","SmsAccount","Pause","$http","$stateParams","clipboard","$translate","$location","xAlert",function(a,b,c,d,e,f,g,h,i){a.account={},a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.CONST_TIMEOUT=3e4,a.initView=function(){a.types=[{value:"",name:"-- None --"},{name:"HTTP GET",value:"GET"},{name:"HTTP POST",value:"POST"}],c.get().$promise.then(function(b){a.pauses=b.rows})["catch"](function(a){i.error(a)}),b.get({id:e.accountId}).$promise.then(function(b){a.account=b,a.account.actions.length<1&&a.account.actions.push({action:"pause",enabled:!1,type:null})})["catch"](function(a){i.error(a)})},a.resetActionData=function(a){a.type=null},a.updateItemSmsAccount=function(){return console.log(a.account),b.update({id:e.accountId},a.account).$promise.then(function(){i.show(g.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){i.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.accounts.view.hooks",{url:"/hooks",controller:"SmsAccountHooksViewCtrl",templateUrl:"app/channels/sms/account/view/hooks/view/view.html"})}]),angular.module("xCallyShuttleApp").controller("SmsAccountSettingViewCtrl",["$scope","SmsAccount","Pause","$http","$stateParams","clipboard","$translate","$location","xAlert","List",function(a,b,c,d,e,f,g,h,i,j){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.CONST_TIMEOUT=3e4,a.types=[{name:"HTTP GET",value:"GET"},{name:"HTTP POST",value:"POST"}],a.account={},a.initView=function(){j.get().$promise.then(function(b){a.lists=b.rows})["catch"](function(a){console.error(a)}),b.get({id:e.accountId}).$promise.then(function(b){a.account=b})["catch"](function(a){i.error(a)})},a.updateItemSmsAccount=function(){return b.update({id:e.accountId},a.account).$promise.then(function(){i.show(g.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){i.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.accounts.view.settings",{url:"/settings",controller:"SmsAccountSettingViewCtrl",templateUrl:"app/channels/sms/account/view/setting/view/view.html"})}]),angular.module("xCallyShuttleApp").controller("SmsAccountViewCtrl",["$scope","SmsAccount","$http","$stateParams","clipboard","$translate","$location","xAlert","List",function(a,b,c,d,e,f,g,h,i){a.initView=function(){return a.account={},b.get({id:d.accountId}).$promise.then(function(b){a.account=b,console.log(b)})["catch"](function(a){h.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.accounts.view",{url:"/view/:accountId",templateUrl:"app/channels/sms/account/view/view.html",controller:"SmsAccountViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]})}]}})}]),angular.module("xCallyShuttleApp").controller("SmsAccountWizardCtrl",["$scope","$http","$location","$translate","WizardHandler","xAlert","SmsAccount",function(a,b,c,d,e,f,g){a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initWizard=function(){a.forms={},a.item={},a.item.remote=c.protocol()+"://"+location.host},a.goNext=function(){e.wizard().next()},a.formValidation=function(a){return a},a.createItem=function(){return console.log(a.item),g.save(a.item).$promise.then(function(){c.path("/channels/sms/accounts/list")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.accounts.wizard",{url:"/wizard",templateUrl:"app/channels/sms/account/wizard/wizard.html",controller:"SmsAccountWizardCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.inbox",{url:"/inbox",template:"<div ui-view></div>",data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:44}}})}]),angular.module("xCallyShuttleApp").directive("smsRoom",["$cookieStore","$translate","$uibModal","$timeout","Tag","CannedAnswer","Auth","SmsAccount","SmsRoom","SmsMessage","xAlert","usSpinnerService","socket","$stateParams","$rootScope",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){return{restrict:"E",scope:{workspace:"=",index:"=",submit:"&onSubmit"},templateUrl:"app/channels/sms/inbox/room/room.directive.html",link:function(a){a.modelOptions={debounce:{"default":500,blur:250},getterSetter:!0},a.panelLeft=null,a.panelRight="col-md-12",a.togglePanelLeft=function(){a.panelLeft?(a.panelLeft=null,a.panelRight="col-md-12"):(a.panelLeft="col-md-6",a.panelRight="col-md-6")},a.form={disabled:!1,from:"",to:a.workspace.data&&a.workspace.data.to?a.workspace.data.to:"",body:""},m.socket.on("sms_message:save",function(b){return a.workspace.id&&b.SmsRoomId==a.workspace.id?j.get({id:b.id}).$promise.then(function(b){a.SmsRoom||(a.SmsRoom={SmsMessages:[]});var c=_.findIndex(a.SmsRoom.SmsMessages,{id:b.id});c>-1?_.merge(a.SmsRoom.SmsMessages[c],b):a.SmsRoom.SmsMessages.unshift(b),a.panelLeft="col-md-6",a.panelRight="col-md-6"})["catch"](function(a){console.error(a)}):void 0}),m.socket.on("sms_message:update",function(b){if(a.SmsRoom&&b.SmsRoomId==a.workspace.id){var c=_.find(a.SmsRoom.SmsMessages,{id:b.id});c&&_.merge(c,b)}}),m.socket.on("sms_room:save",function(b){a.SmsRoom&&b.id==a.workspace.id&&(a.SmsRoom.status=b.status,a.SmsRoom.disposition=b.disposition)}),a.closeRoom=function(b){return c.open({animation:!0,templateUrl:"app/channels/sms/inbox/view/view.status.modal.html",controller:"SmsInboxViewModalStatusCtrl",resolve:{closed:function(){return"CLOSED"===a.SmsRoom.status},accountId:function(){return a.SmsRoom.SmsAccountId}}}).result.then(function(a){var c={id:b,status:"CLOSED"};return a.disposition&&(c.disposition=a.disposition),i.update(c).$promise["catch"](function(a){k.error(a)})})},a.openRoom=function(a,b){var c=_.find(o.workspaces,{id:a,type:"smsRoom"});c?c.active=!0:o.workspaces.push({id:a,name:b,type:"smsRoom","class":"glyphicon glyphicon-comment",active:!0})},e.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a)}),h.get().$promise.then(function(b){a.smsAccounts=b.rows})["catch"](function(a){console.error(a)}),a.workspace.id?(a.panelLeft="col-md-6",a.panelRight="col-md-6",i.get({id:a.workspace.id}).$promise.then(function(b){a.SmsRoom=b,a.form.from=a.SmsRoom.SmsAccount.phone,a.form.to=a.SmsRoom.contact,a.form.tags=a.SmsRoom.tags})["catch"](function(a){console.error(a)})["finally"](function(){l.stop("spinner-grid"),a.form.disabled=!1})):l.stop("spinner-grid"),a.onSelect=function(){a.form.body+=a.modelOptions.selectedAnswer,delete a.modelOptions.selectedAnswer},a.onSelectAnswer=function(b){a.form.body+=b,a.selectedAnswer=""},a.getAnswers=function(a){return f.get({key:a}).$promise.then(function(a){return _.map(a.rows,"value")})},a.onChanged=function(){return i.patch({id:a.workspace.id},{tags:a.form.tags}).$promise["catch"](function(a){console.error(a)})},a.sendSMS=function(){l.spin("spinner-grid");var c=_.find(a.smsAccounts,{phone:a.form.from}),d={body:a.form.body,SmsRoomId:a.SmsRoom?a.SmsRoom.id:null};return"twilio"===c.type?(d.from=/^[\+][0-9]+$/.test(a.form.from)?a.form.from:"+"+a.form.from,d.to=/^[\+][0-9]+$/.test(a.form.to)?a.form.to:"+"+a.form.to):(d.from=/^[\+][0-9]+$/.test(a.form.from)?a.form.from.replace("+",""):a.form.from,d.to=/^[\+][0-9]+$/.test(a.form.to)?a.form.to.replace("+",""):a.form.to),c?h.save({accountId:c.id,controller:"send"},d).$promise.then(function(c){return k.show(b.instant("MESSAGE_WELL_DONE"),"success"),a.SmsRoom?a.SmsRoom:i.get({id:"messages",controller:c.id}).$promise}).then(function(b){b&&(a.form.body="",a.workspace.id=b.id,a.workspace.name=b.contact,a.SmsRoom=b,a.panelLeft="col-md-6",a.panelRight="col-md-6")})["catch"](function(a){k.error(a)})["finally"](function(){l.stop("spinner-grid")}):void console.log("Can not find account")}}}}]),angular.module("xCallyShuttleApp").controller("SmsInboxInfoModalCtrl",["$scope","$translate","$uibModalInstance","$stateParams","xAlert","data","uniqueId","ReportSquare",function(a,b,c,d,e,f,g,h){a.data=null,a.initInfo=function(){f&&(a.data=_.isEmpty(JSON.parse(f))?null:JSON.parse(f)),g&&h.get({controller:"show",uniqueid:g}).$promise.then(function(b){a.data={id:b.id,channel:b.channel,uniqueid:b.uniqueid,callerid:b.callerid,calleridname:b.calleridname,project_name:b.project_name,extension:b.extension}})["catch"](function(b){switch(b.status){case 404:a.data=null;break;default:e.error(b)}})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").directive("sms",["$rootScope","SmsMessage","List","xAlert","$translate","$uibModal",function(a,b,c,d,e,f){return{restrict:"E",scope:{smsMessage:"=message",accounttype:"=accounttype",listId:"="},templateUrl:"app/channels/sms/inbox/sms/sms.html",link:function(b){b.openContact=function(f){return b.listId?c.save({listId:b.listId,controller:"contacts"},{mobile:f}).$promise.then(function(b){var c=_.find(a.$root.workspaces,{contactID:b.id});c?c.active=!0:a.$root.workspaces.push({active:!0,"class":"icon-user",contactID:b.id,name:b.phone,type:"contact"})})["catch"](function(a){console.error(a)}):void d.show(e.instant("MESSAGE_NO_LIST_CONFIGURED"),"info")},b.info=function(a,b){f.open({animation:!0,templateUrl:"app/channels/sms/inbox/sms/info.modal.html",controller:"SmsInboxInfoModalCtrl",resolve:{data:function(){return b},uniqueId:function(){return a}}})}}}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.inbox.view.account",{url:"/account/:id",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:11}}})}]),angular.module("xCallyShuttleApp").controller("SmsInboxViewAccountListCtrl",["$scope","$rootScope","$uibModal","$translate","$stateParams","$state","Tag","usSpinnerService","socket","SmsAccount","SmsRoom","gridOptions","uiGridConstants","Auth","Modal","xAlert","uibButtonConfig","localStorageService",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){a.initView=function(){q.activeClass="green-haze",a.id=[],a.isAdmin=n.isAdmin(),a.isAgent=n.isAgent(),a.uncheckable=!1,a.query={status:r.get("smsStatus")?r.get("smsStatus"):"NEW",tags:r.get("smsTags")?r.get("smsTags"):[]},a.$watch("query.status",function(b,c){b!==c&&(r.set("smsStatus",a.query.status),a.getPage())},!0),g.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a)}),a.gridOptions={exporterCsvFilename:"sms_rooms.csv",enableRowHeaderSelection:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,enableFiltering:!0,enableSorting:!0,enableGridMenu:!1,flatEntityAccess:!0,showGridFooter:!0,fastWatch:!0,enableSelectAll:!0,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,columnDefs:[{name:"lastEvent",displayName:"",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div> <span data-ng-class=\"{'icon-arrow-up font-green': row.entity.lastEvent === 'SENT', 'icon-arrow-up font-yellow': row.entity.lastEvent === 'SENDING', 'icon-arrow-down font-green': row.entity.lastEvent === 'RECEIVED', 'icon-close font-red': row.entity.lastEvent === 'FAILED', 'icon-question': !row.entity.lastEvent}\"> </span> </div>",width:30,enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"tags",displayName:"",headerCellTemplate:'<i class="icon-tag" style="margin-top: 8px; margin-left: 8px;"></i>',cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><i data-ng-class=\"row.entity.tags.length ? 'icon-tag' : ''\" title=\"{{row.entity.tags}}\"></i></div>",width:30,enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"id",displayName:"Id",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><span>#{{row.entity.id}}</span></div>",width:75,enableSorting:!1,enableFiltering:!0,enableColumnMenu:!1},{name:"contact",cellClass:"text-center"},{name:"disposition",cellClass:"text-center"},{name:"createdAt",cellFilter:"date:'dd/MM/yyyy HH:mm'",width:120,enableFiltering:!1},{name:"updatedAt",cellFilter:"date:'dd/MM/yyyy HH:mm'",width:120,enableFiltering:!1,sort:{direction:m.DESC}},{name:"action",cellTemplate:'<div> <a class="btn btn-icon-only font-green" data-ng-click="grid.appScope.openRoom(row.entity.id, row.entity.contact)"><i class="glyphicon glyphicon-comment" aria-hidden="true"></i></a> <a class="btn btn-icon-only font-red" data-ng-show="grid.appScope.isAdmin" data-ng-click="grid.appScope.deleteItem(row.entity.id,row.entity.id)"><i class="fa fa-trash" aria-hidden="true"></i> </div>',enableSorting:!1,cellClass:"ui-grid-vcenter",width:90,enableFiltering:!1,enableColumnMenu:!1}],data:[],onRegisterApi:function(b){a.gridApi=b,a.gridApi.selection&&(a.gridApi.selection.on.rowSelectionChanged(a,function(b){b.isSelected?a.id.push(a.gridApi.grid.options.primaryKey?b.entity[a.gridApi.grid.options.primaryKey]:b.entity.id):_.pull(a.id,a.gridApi.grid.options.primaryKey?b.entity[a.gridApi.grid.options.primaryKey]:b.entity.id)}),a.gridApi.selection.on.rowSelectionChangedBatch(a,function(b){b[0].isSelected?a.id=_.union(a.id,_.map(b,a.gridApi.grid.options.primaryKey?"entity."+a.gridApi.grid.options.primaryKey:"entity.id")):_.map(b,a.gridApi.grid.options.primaryKey?"entity."+a.gridApi.grid.options.primaryKey:"entity.id").forEach(function(b){_.pull(a.id,b)})}))}},i.socket.on("sms_room:remove",function(b){_.remove(a.workspaces,{id:b.id,type:"smsRoom"}),_.remove(a.gridOptions.data,{id:b.id})}),a.getPage(a.query)},a.onChanged=function(){a.getPage(a.query)},a.tagItems=function(){return c.open({animation:!0,templateUrl:"app/channels/sms/inbox/view/view.tags.modal.html",controller:"SmsInboxViewModalTagCtrl",resolve:{id:function(){return a.id}}}).result.then(function(){a.gridApi.selection.clearSelectedRows(),a.id=[],a.getPage()})},a.disposeItems=function(){return c.open({animation:!0,templateUrl:"app/channels/sms/inbox/view/view.status.modal.html",controller:"SmsInboxViewModalStatusCtrl",resolve:{accountId:function(){return e.id}}}).result.then(function(b){return console.log(b,a.id),k.patch({id:a.id},b).$promise.then(function(){a.gridApi.selection.clearSelectedRows(),a.id=[]})["catch"](function(a){p.error(a)})})},a.openRoom=function(b,c){var d=_.find(a.workspaces,{id:b,type:"smsRoom"});return d?d.active=!0:a.workspaces.push({id:b,name:c,type:"smsRoom","class":"glyphicon glyphicon-comment",active:!0}),b&&"agent"===n.getCurrentUser().role&&"PENDING"!==a.query.status&&"CLOSED"!==a.query.status?k.patch({id:b},{status:"OPEN",openReason:"agent"}).$promise["catch"](function(a){ -console.error(a)}):void 0},a.getPage=function(b){h.spin("spinner-grid");var c={accountId:e.id,controller:"rooms"};return b&&_.merge(c,b),a.query&&_.merge(c,a.query),j.query(c).$promise.then(function(b){r.set("smsAccountId",e.id),a.gridOptions.data=b,i.socket.on("sms_room:save",function(b){if(console.log("data",b),console.log(b.SmsAccountId,e.id),b.SmsAccountId==e.id){var c=_.find(a.gridOptions.data,{id:b.id});c?c.status!==b.status?_.remove(a.gridOptions.data,{id:b.id}):_.merge(c,b):a.query.status===b.status&&a.gridOptions.data.push(b)}}),i.socket.on("sms_room:remove",function(b){_.remove(a.gridOptions.data,{id:b.id})})})["catch"](function(a){p.error(a)})["finally"](function(){h.stop("spinner-grid")})},a.deleteItem=o.confirm["delete"](function(b){var c={id:b};return console.log(c),k["delete"](c).$promise.then(function(){a.getPage(),p.show(d.instant("MESSAGE_WELL_DONE")+"!","success"),a.gridApi.selection.clearSelectedRows(),a.id=[]})["catch"](function(a){p.error(a)})}),a.deleteItems=o.confirm["delete"](function(){var b={ids:a.id};return k["delete"](b).$promise.then(function(){a.getPage(),p.show(d.instant("MESSAGE_WELL_DONE")+"!","success"),a.gridApi.selection.clearSelectedRows(),a.id=[]})["catch"](function(a){p.error(a)})})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.inbox.view.account.list",{url:"/list",templateUrl:"app/channels/sms/inbox/view/account/list/list.html",controller:"SmsInboxViewAccountListCtrl",data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:11}}})}]),angular.module("xCallyShuttleApp").controller("SmsInboxViewModalAgentCtrl",["$scope","$uibModalInstance","$translate","$stateParams","Agent","SmsRoom","xAlert","roomId",function(a,b,c,d,e,f,g,h){a.initModal=function(){a.agents=[],a.item={agents:[]},e.get().$promise.then(function(b){b.rows.forEach(function(b){a.agents.push(b)})})["catch"](function(a){console.error(a)}),f.query({id:h,controller:"agents"}).$promise.then(function(b){b.forEach(function(b){a.agents.push(b),a.item.agents.push(b.id)})})["catch"](function(a){console.error(a)}),a.modal={dismissable:!0,title:"APPLICATION_MESSAGE_SEND_RETRY",text:"MESSAGE_MESSAGE_SEND_RETRY",buttons:[{classes:"btn btn-success",text:"APPLICATION_RETRY",click:function(a){b.close(a)}},{classes:"btn default",text:"APPLICATION_CANCEL",click:function(a){b.dismiss(a)}}]}},a.ok=function(){return f.update({id:h,controller:"agents",agents:a.item.agents}).$promise.then(function(){g.show(c.instant("MESSAGE_WELL_DONE"),"success"),b.close()})["catch"](function(a){console.error(a)})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("SmsInboxViewCtrl",["$scope","$location","$stateParams","$translate","$uibModal","socket","Auth","xAlert","SmsRoom","SmsAccount","localStorageService",function(a,b,c,d,e,f,g,h,i,j,k){a.initView=function(){return j.get().$promise.then(function(c){var d=null;if(a.smsAccounts=c.rows,a.smsAccounts.length){var e,f=k.get("smsAccountId");e=f&&_.find(a.smsAccounts,{id:Number(f)})?f:a.smsAccounts[0].id,d="/channels/sms/inbox/view/account/"+e+"/list"}d&&b.path(d)})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.inbox.view",{url:"/view",templateUrl:"app/channels/sms/inbox/view/view.html",controller:"SmsInboxViewCtrl",reload:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/inbox.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("SmsInboxViewModalStatusCtrl",["$scope","$uibModalInstance","SmsAccount","accountId",function(a,b,c,d){a.modal={title:"APPLICATION_CONFIRM_CLOSE",text:"MESSAGE_ARE_YOU_SURE_YOU_WANT_TO_CLOSE_THE_SMS"},a.initDisposition=function(){return a.item={status:"CLOSED"},c.get({accountId:d,controller:"dispositions"}).$promise.then(function(b){a.dispositions=b.rows})["catch"](function(a){console.error(a)})},a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss()}}]),angular.module("xCallyShuttleApp").controller("SmsInboxViewModalTagCtrl",["$scope","$uibModalInstance","$translate","$stateParams","Tag","SmsRoom","xAlert","id",function(a,b,c,d,e,f,g,h){console.log(h),a.initModal=function(){return a.tags=[],a.item={tags:[]},a.modal={dismissable:!0,title:"APPLICATION_MESSAGE_SEND_RETRY",text:"MESSAGE_MESSAGE_SEND_RETRY",buttons:[{"class":"btn-success",text:"APPLICATION_TAG",click:function(){var d={status:!0};return f.patch({id:h},{tags:a.item.tags}).$promise.then(function(){g.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(){d.status=!1,g.show(c.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})["finally"](function(){b.close(d)})}},{"class":"default",text:"APPLICATION_CANCEL",click:function(a){b.dismiss(a)}}]},e.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").controller("SmsInboxViewModalTemplateCtrl",["$scope","$uibModalInstance","Template",function(a,b,c){a.initModal=function(){return a.item={},c.get().$promise.then(function(b){a.templates=b.rows})["catch"](function(a){console.error(a)})},a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("SmsQueueListCtrl",["$scope","SmsQueue","gridOptions","$uibModal","xAlert","Auth",function(a,b,c,d,e,f){a.initView=function(){a.Auth=f;var d={exporterCsvFilename:"voice_queues.csv",columnDefs:[{name:"name"},{name:"description"},{name:"timeout"},{name:"strategy"},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/channels/sms/queues/view/{{row.entity.id}}/settings",name:"settings"},{"class":"green-meadow",href:"/channels/sms/queues/view/{{row.entity.id}}/agents",name:"agents",hide:"user"===f.getCurrentUser().role},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.createItem=function(){var b=d.open({animation:!0,templateUrl:"app/channels/sms/queue/list/list.create.modal.html",controller:"SmsQueueListCreateCtrl",size:"lg"});b.result.then(function(b){console.log(b),a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("SmsQueueListCreateCtrl",["$scope","$uibModalInstance","$translate","xAlert","SmsQueue","Team","strategies",function(a,b,c,d,e,f,g){a.form={},a.strategies=g,a.item={penalty:0,agents:[]},a.getTeams=function(){return f.get({controller:"associations"}).$promise.then(function(b){a.teams=b.rows}).then(function(){ComponentsDropdowns.bindQueue(a.teams,[],function(){return{select:function(b){a.item.agents=_.union(a.item.agents,b)},deselect:function(b){a.item.agents=_.difference(a.item.agents,b)}}})})["catch"](function(a){console.error(a)})},a.save=function(){return console.log(a.item),e.save(a.item).$promise.then(function(a){b.close(a)})["catch"](function(a){d.error(a)})},a.cancel=function(){b.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.queues.list",{url:"/list",templateUrl:"app/channels/sms/queue/list/list.html",controller:"SmsQueueListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}})}]),angular.module("xCallyShuttleApp").factory("SmsQueue",["$resource",function(a){return a("/api/sms/queues/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.queues",{url:"/queues",template:"<div ui-view></div>",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:43}}})}]),angular.module("xCallyShuttleApp").controller("SmsQueueViewCtrl",["$scope","$http","Auth","$translate","$stateParams","xAlert","Team","SmsQueue","strategies",function(a,b,c,d,e,f,g,h,i){a.strategies=i,a.Auth=c;var j=function(){return{select:function(b){return h.save({id:a.queue.id,controller:"agents"},{agents:b,penalty:a.queue.penalty}).$promise.then(function(b){console.log("sel",b),a.getTeams()})["catch"](function(a){console.error(a)})},deselect:function(b){return h["delete"]({id:a.queue.id,controller:"agents",agents:b}).$promise.then(function(b){console.log("desel",b),a.getTeams()})["catch"](function(a){console.error(a)})}}};a.getQueue=function(){return h.get({id:e.id}).$promise.then(function(b){b.penalty=0,a.queue=b})["catch"](function(a){console.error(a)})},a.updateSmsQueue=function(){return h.update({id:e.id},{name:a.queue.name,description:a.queue.description,timeout:a.queue.timeout,strategy:a.queue.strategy}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.getTeams=function(){return g.get({controller:"associations"}).$promise.then(function(b){return a.teams=b.rows,console.log(b.rows),h.get({id:e.id,controller:"agents"}).$promise}).then(function(b){console.log(b),ComponentsDropdowns.bindSmsQueue(a.teams,_.map(b.rows,function(a){return{id:a.id,penalty:a.UserHasSmsQueue.penalty}}),j)})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.queues.view",{url:"/view/:id",templateUrl:"app/channels/sms/queue/view/view.html",controller:"SmsQueueViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.sms.queues.view.settings",{url:"/settings",templateUrl:"app/channels/sms/queue/view/view.settings.html"}).state("main.channels.sms.queues.view.agents",{url:"/agents",templateUrl:"app/channels/sms/queue/view/view.agents.html",cache:!1,serie:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.realtime",{url:"/realtime",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:45}}})}]),angular.module("xCallyShuttleApp").controller("SmsRealtimeViewAgentCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","Agent","Pause","Action","SmsQueue","usSpinnerService","$q","uiGridConstants","$timeout",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){function o(){return k.spin("grid-spinner"),g.get(t).$promise.then(function(b){a.gridOptions.totalItems=b.count,a.gridOptions.data=[],b.rows.forEach(function(a){q(a)})})["catch"](function(a){f.error(a)})["finally"](function(){k.stop("grid-spinner")})}function p(){e.socket.on("agent:save",function(b){b=b.newValues||b;var c=_.find(a.gridOptions.data,{agentId:b.id,isAgent:!0});c&&(c.online=_.has(b,"online")?b.online:c.online,c.lastLoginAt=_.has(b,"lastLoginAt")?b.lastLoginAt:c.lastLoginAt,c.pause=_.has(b,"smsPause")?b.smsPause:c.smsPause,c.pauseType=_.has(b,"pauseType")?b.pauseType:c.pauseType,c.lastPauseAt=_.has(b,"lastPauseAt")?b.lastPauseAt:c.lastPauseAt,c.ipaddr=_.has(b,"ipaddr")?b.ipaddr:c.ipaddr,c.port=_.has(b,"port")?b.port:c.port,c.fullcontact=_.has(b,"fullcontact")?b.fullcontact:c.fullcontact,c.useragent=_.has(b,"useragent")?b.useragent:c.useragent,c.lastms=_.has(b,"lastms")?b.lastms:c.lastms,c.internal=_.has(b,"internal")?b.internal:c.internal,_.map(a.gridOptions.data,function(a){a.isAgent||a.agentId!==b.id||(a.online=_.has(b,"online")?b.online:a.online)}))}),e.socket.on("agent:remove",function(b){_.remove(a.gridOptions.data,{agentId:b.id})}),e.socket.on("user_has_sms_queue:save",function(b){console.log("new queue",b);var c=_.find(a.gridOptions.data,{agentId:b.UserId,isAgent:!0}),d=a.gridOptions.data.indexOf(c);a.gridOptions.data.splice(d+1,0,{isAgent:!1,agentId:b.UserId,queue:b.queue,queueId:b.SmsQueueId,agent:b.membername,online:c.online})}),e.socket.on("user_has_sms_queue:remove",function(b){_.remove(a.gridOptions.data,{agentId:b.UserId,queueId:b.SmsQueueId})})}function q(b){a.gridOptions.data.push({isAgent:!0,agentId:b.id,agent:b.name,online:b.online,lastLoginAt:b.lastLoginAt,lastPauseAt:b.lastPauseAt,pause:b.smsPause,pauseType:b.pauseType,ipaddr:b.ipaddr,port:b.port,fullcontact:b.fullcontact,useragent:b.useragent,lastms:b.lastms,internal:b.internal,$$treeLevel:0}),b.SmsQueues&&b.SmsQueues.forEach(function(c){a.gridOptions.data.push({isAgent:!1,agentId:b.id,queue:c.name,queueId:c.id,agent:b.name,online:b.online})})}function r(){return h.get().$promise.then(function(b){a.pauses=b.rows,e.syncUpdates("pause",a.pauses)})["catch"](function(a){f.error(a)})}function s(){return j.get().$promise.then(function(b){a.smsQueues=b.rows,e.syncUpdates("sms_queue",a.smsQueues)})["catch"](function(a){f.error(a)})}a.smsQueues=[];var t={controller:"realtime",controller1:"sms",offset:0,limit:10};a.moment=moment,a.initAgents=function(){a.gridOptions={enableGridMenu:!0,headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,useExternalPagination:!0,useExternalSorting:!0,useExternalFiltering:!0,multiSelect:!0,showTreeExpandNoChildren:!0,columnDefs:[{name:"name",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.isAgent">{{row.entity.agent}} <{{row.entity.internal}}></div>'},{name:"online",displayName:"APPLICATION_ONLINE",width:150,headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.online != null && row.entity.isAgent"><i class="fa" data-ng-class="{\'font-green\':row.entity.online, \'font-red\':!row.entity.online,\'fa-user\':row.entity.online,\'fa-user-times\':!row.entity.online}"></i> <i data-ng-if="row.entity.online" class="fa fa-sign-out font-red pointer-cursor" title="logout" data-ng-click="grid.appScope.agentLogout(row.entity.agent,row.entity.agentId)"></i> <span data-ng-if="row.entity.online && grid.appScope.showTimers" class="left-margin"><css-timer start-time="row.entity.lastLoginAt"></css-timer></span></div>',filter:{type:m.filter.SELECT,selectOptions:[{value:"true",label:"ONLINE"},{value:"false",label:"OFFLINE"}]}},{name:"smsPause",displayName:"APPLICATION_PAUSE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.pause != null && row.entity.online" class="ui-grid-vcenter"><i data-ng-if="row.entity.pause" data-ng-click="grid.appScope.pause(row.entity,\'unpause\')" class="fa fa-play font-green pointer-cursor left-margin" title="{{\'APPLICATION_RESUME\' | translate}}"></i><i class="fa fa-pause font-yellow pointer-cursor" data-ng-click="grid.appScope.pause(row.entity,\'pause\',\'DEFAULT PAUSE\')" title="{{\'APPLICATION_DEFAULT_PAUSE\' | translate}}"></i><select data-ng-if="grid.appScope.pauses.length" class="pause-select pointer-cursor" data-ng-model="grid.appScope.pauseType" data-ng-change="grid.appScope.pause(row.entity,\'pause\',grid.appScope.pauseType)"><option class="pointer-cursor" data-ng-repeat="pause in grid.appScope.pauses">{{pause.name}}</option></select> <span data-ng-if="row.entity.pause" class="left-margin">({{row.entity.pauseType}})</span><span data-ng-if="row.entity.pause && grid.appScope.showTimers" class="left-margin"><css-timer start-time="row.entity.lastPauseAt"></css-timer></span></div>',filter:{type:m.filter.SELECT,selectOptions:[{value:"true",label:"PAUSED"},{value:"false",label:"NOT PAUSED"}]},enableSorting:!1,enableColumnMenu:!1},{name:"queue",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"action",displayName:"",width:170,cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><button data-ng-if="row.entity.queueId" class="btn btn-xs red-sunglo" data-ng-click="grid.appScope.leaveQueue(row.entity.agentId,row.entity.queueId)"><i class="icon-ban"></i> {{\'APPLICATION_LEAVE\' | translate}}</button><button data-ng-if="row.entity.isAgent && row.treeNode.children.length < grid.appScope.smsQueues.length" class="btn btn-xs blue-hoki" data-ng-click="grid.appScope.joinQueue(row.entity.agentId)"><i class="icon-plus"></i> {{\'APPLICATION_JOIN_QUEUE\' | translate}}</button><div>',enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1}],data:[],gridMenuTitleFilter:function(a){var b=l.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){u(a.gridApi.core.getVisibleRows(a.gridApi.grid).length)}),a.gridApi.treeBase.on.rowExpanded(a,function(b){u(a.gridApi.core.getVisibleRows(a.gridApi.grid).length+b.treeNode.children.length)}),a.gridApi.treeBase.on.rowCollapsed(a,function(b){u(a.gridApi.core.getVisibleRows(a.gridApi.grid).length-b.treeNode.children.length)}),a.gridApi.core.on.sortChanged(a,function(a,b){0===b.length?t.order=null:t.order=b[0].name+" "+b[0].sort.direction.toUpperCase(),o()}),a.gridApi.pagination.on.paginationChanged(a,function(a,b){t.offset=(a-1)*b,t.limit=b,o()}),a.gridApi.core.on.filterChanged(a,function(){var a=this.grid;a.columns.forEach(function(a){a.filters[0].term?t[a.name]=a.filters[0].term:delete t[a.name]}),o()})}},o(),r(),s(),n(function(){p()})};var u=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("agent"),e.unsyncUpdates("user_has_sms_queue")}),a.pause=function(b,c,e){return e&&(a.pauseType=null),i.save({name:c,agent:b.agentId,data2:b.agent,type:e||"DEFAULT PAUSE",data4:e||"DEFAULT PAUSE",channel:"sms"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.joinQueue=function(e){var g=c.open({animation:!0,templateUrl:"app/channels/sms/realtime/view/agent/queue.modal.add.html",controller:"SmsRealtimeViewAgentQueueModalCtrl",resolve:{queues:function(){return _.reject(a.smsQueues,function(b){return!!_.find(a.gridOptions.data,{queue:b.name,isAgent:!1,agentId:e})})}}});g.result.then(function(b){return i.save({name:"QueueAdd",agent:e,queues:_.filter(a.smsQueues,function(a){return _.includes(b.queues,a.id)}),channel:"sms",data1:e,data3:b.queues.join(","),data4:"sms"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},function(){b.info("Modal dismissed at: "+new Date)})},a.leaveQueue=function(a,b){return i.save({name:"QueueRemove",agent:a,queueId:b,channel:"sms",data1:a,data3:b,data4:"sms"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.showInfo=function(a){c.open({animation:!0,templateUrl:"app/channels/sms/realtime/view/agent/agent.modal.info.html",controller:"SmsRealtimeViewAgentInfoModalCtrl",resolve:{agent:a}})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.realtime.view.agents",{url:"/agents",templateUrl:"app/channels/sms/realtime/view/agent/agent.html",controller:"SmsRealtimeViewAgentCtrl"})}]),angular.module("xCallyShuttleApp").controller("SmsRealtimeViewAgentInfoModalCtrl",["$scope","$uibModalInstance","$http","agent",function(a,b,c,d){a.agent=d,a.close=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("SmsRealtimeViewAgentQueueModalCtrl",["$scope","$uibModalInstance","$http","queues",function(a,b,c,d){a.queues=d,a.item={},a.save=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("SmsRealtimeViewApplicationCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","ReportSmsSession","usSpinnerService","$q","uiGridConstants","$timeout",function(a,b,c,d,e,f,g,h,i,j,k){function l(){return h.spin("spinner-grid"),g.get({controller:"waiting",controller2:"applications"}).$promise.then(function(b){a.gridOptions.data=b.rows})["catch"](function(a){f.error(a)})["finally"](function(){m(),h.stop("spinner-grid")})}function m(){e.socket.on("report_sms_session:save",function(b){var c=_.find(a.gridOptions.data,{id:b.id});c?(_.merge(c,b),b.leaveAt&&k(function(){_.remove(a.gridOptions.data,{id:b.id})},1e4)):b.leaveAt||a.gridOptions.data.push(b)}),e.socket.on("report_sms_session:remove",function(b){_.remove(a.gridOptions.data,{id:b.id})})}a.moment=moment,a.initApplications=function(){a.gridOptions={headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,columnDefs:[{name:"uniqueid",displayName:"APPLICATION_UNIQUEID",headerCellFilter:"translate"},{name:"accountname",displayName:"APPLICATION_ACCOUNT",headerCellFilter:"translate"},{name:"application",displayName:"APPLICATION_APPLICATION",headerCellFilter:"translate"},{name:"status",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span data-ng-if="!row.entity.leaveAt">{{\'APPLICATION_QUEUESTATUS_WAITING\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.complete">{{\'APPLICATION_QUEUESTATUS_COMPLETE\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.timeout">{{\'APPLICATION_TIMEOUT\' | translate}}</span> <span data-ng-if="!row.entity.leaveAt && grid.appScope.showTimers"><css-timer start-time="row.entity.updatedAt"></css-timer></span></div>',enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1},{name:"membername",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.membername || ''}}</span></div>"},{name:"queuename",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.queuename || ''}}</span></div>"}],data:[],gridMenuTitleFilter:function(a){var b=i.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){n(a.gridOptions.data.length)})}},l()};var n=function(a){var b=a?30*a+60:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("report_sms_session")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.realtime.view.applications",{url:"/applications",templateUrl:"app/channels/sms/realtime/view/application/application.html",controller:"SmsRealtimeViewApplicationCtrl"})}]),angular.module("xCallyShuttleApp").controller("SmsRealtimeViewCtrl",["$scope","$state",function(a,b){a.agents=[{name:"Queues",link:"main.channels.sms.realtime.view.agents.queues"},{name:"Timeline",link:"main.channels.sms.realtime.view.agents.timeline"}],a.sessions=[{name:"Sessions",link:"main.channels.sms.realtime.view.sessions"}],a.tree={queues:[{name:"Queues",link:"main.channels.sms.realtime.view.agents.queues"},{name:"Timeline",link:"main.channels.sms.realtime.view.agents.timeline"}],sessions:[{name:"Sessions",link:"main.channels.sms.realtime.view.sessions"}]},a.timerSwitch={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"primary"},a.showTimers=!1}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms.realtime.view",{url:"/view",templateUrl:"app/channels/sms/realtime/view/view.html",controller:"SmsRealtimeViewCtrl"})}]),angular.module("xCallyShuttleApp").factory("ReportSmsSession",["$resource",function(a){return a("/api/report/sms/sessions/:id/:controller/:controller2",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.sms",{url:"/sms",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:11}}})}]),angular.module("xCallyShuttleApp").factory("SmsQueue",["$resource",function(a){return a("/api/sms/queues/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("SmsReport",["$resource",function(a){return a("/api/report/sms/:id/:controller1/:controller2",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("SmsMessage",["$resource",function(a){return a("/api/sms/messages/:id/:controller",{id:"@id",controller:"@controller"},{update:{method:"PUT"},patch:{method:"PATCH"}})}]),angular.module("xCallyShuttleApp").factory("SmsRoom",["$resource",function(a){return a("/api/sms/rooms/:id/:controller",{id:"@id",controller:"@controller"},{update:{method:"PUT"},patch:{method:"PATCH"}})}]),angular.module("xCallyShuttleApp").factory("ChanSpy",["$resource",function(a){return a("/api/chanspy/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.chanspy",{url:"/chanspy",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:27}}})}]),angular.module("xCallyShuttleApp").controller("ChanSpyListCtrl",["$scope","$uibModal","ChanSpy","gridOptions",function(a,b,c,d){a.initView=function(){var b={exporterCsvFilename:"chanspy.csv",columnDefs:[{name:"name"},{name:"prefix"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/channels/voice/chanspy/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){var c=b.open({animation:!0,templateUrl:"app/channels/voice/chanspy/list/list.create.modal.html",controller:"ChanSpyListCreateCtrl"});c.result.then(function(b){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("ChanSpyListCreateCtrl",["$scope","$translate","$uibModalInstance","ChanSpy","xAlert",function(a,b,c,d,e){a.form={},a.item={auth:!1,record:!1},a.recordSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.authSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.options=[{name:"APPLICATION_CHANSPY_OPTION_b",value:"b"},{name:"APPLICATION_CHANSPY_OPTION_B",value:"B"},{name:"APPLICATION_CHANSPY_OPTION_E",value:"E"},{name:"APPLICATION_CHANSPY_OPTION_o",value:"o"},{name:"APPLICATION_CHANSPY_OPTION_q",value:"q"},{name:"APPLICATION_CHANSPY_OPTION_s",value:"s"},{name:"APPLICATION_CHANSPY_OPTION_S",value:"S"},{name:"APPLICATION_CHANSPY_OPTION_w",value:"w"},{name:"APPLICATION_CHANSPY_OPTION_W",value:"W"}],a.save=function(){return a.item.options=a.item.options.join(""),d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.chanspy.list",{url:"/list",templateUrl:"app/channels/voice/chanspy/list/list.html",controller:"ChanSpyListCtrl"})}]),angular.module("xCallyShuttleApp").controller("ChanSpyViewCtrl",["$scope","$translate","$stateParams","xAlert","ChanSpy",function(a,b,c,d,e){a.recordSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.authSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.options=[{name:"APPLICATION_CHANSPY_OPTION_b",value:"b"},{name:"APPLICATION_CHANSPY_OPTION_B",value:"B"},{name:"APPLICATION_CHANSPY_OPTION_E",value:"E"},{name:"APPLICATION_CHANSPY_OPTION_o",value:"o"},{name:"APPLICATION_CHANSPY_OPTION_q",value:"q"},{name:"APPLICATION_CHANSPY_OPTION_s",value:"s"},{name:"APPLICATION_CHANSPY_OPTION_S",value:"S"},{name:"APPLICATION_CHANSPY_OPTION_w",value:"w"},{name:"APPLICATION_CHANSPY_OPTION_W",value:"W"}],a.getChanSpy=function(){return e.get({id:c.id}).$promise.then(function(b){b.options=b.options.split(""),a.chanspy=b})["catch"](function(a){d.error(a)})},a.updateChanSpy=function(){var f=angular.copy(a.chanspy);return f.options=f.options.join(""),e.update({id:c.id},f).$promise.then(function(){d.show(b.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.chanspy.view",{url:"/view/:id",templateUrl:"app/channels/voice/chanspy/view/view.html",controller:"ChanSpyViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.voice.chanspy.view.settings",{url:"/settings",templateUrl:"app/channels/voice/chanspy/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").factory("VoiceContext",["$resource",function(a){return a("/api/voice/contexts/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.contexts",{url:"/contexts",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:22}}})}]),angular.module("xCallyShuttleApp").controller("VoiceContextListCtrl",["$scope","VoiceContext","gridOptions","$uibModal","xAlert","$translate",function(a,b,c,d,e,f){a.initView=function(){var d={exporterCsvFilename:"voice_contexts.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{"class":"{{row.entity.defaultEntry ? 'blue-hoki disabled' : 'blue-hoki'}}",href:"/channels/voice/contexts/view/{{row.entity.id}}/settings",name:"settings"},{"class":"{{row.entity.defaultEntry ? 'red-sunglo disabled' : 'red-sunglo'}}",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.createItem=function(){var c=d.open({animation:!0,templateUrl:"app/channels/voice/context/list/create.modal.html",controller:["$scope","$uibModalInstance",function(a,b){a.form={},a.item={},a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]});c.result.then(function(c){return b.save(c).$promise.then(function(){a.gridOptions.getPage(),e.show(f.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){e.error(a)})})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.contexts.list",{url:"/list",templateUrl:"app/channels/voice/context/list/list.html",controller:"VoiceContextListCtrl"})}]),angular.module("xCallyShuttleApp").controller("VoiceContextViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","$location",function(a,b,c,d,e,f){a.getContext=function(){b.get("/api/voice/contexts/"+e.id).success(function(b){a.context=b}).error(function(a){console.error(a),f.path("/voice/contexts/list")})},a.updateVoiceContext=function(){var f=angular.copy(a.context); -b.put("/api/voice/contexts/"+e.id,f).success(function(){c.show(d.instant("MESSAGE_WELL_DONE")+"!","success")}).error(function(b){c.error(b),a.context=f})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.contexts.view",{url:"/view/:id",templateUrl:"app/channels/voice/context/view/view.html",controller:"VoiceContextViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.voice.contexts.view.settings",{url:"/settings",templateUrl:"app/channels/voice/context/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.dispositions",{url:"/dispositions",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:28}}})}]),angular.module("xCallyShuttleApp").controller("VoiceDispositionListCtrl",["$scope","$stateParams","$uibModal","$translate","VoiceDisposition","xAlert",function(a,b,c,d,e,f){a.initView=function(){return e.get().$promise.then(function(b){a.dispositions=b.rows})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.updateDisposition=function(a,b){return e.update({id:a},{name:b}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.deleteDisposition=function(b){return e.remove({id:b}).$promise.then(function(){_.remove(a.dispositions,{id:b}),f.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){console.error(a),f.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.addDisposition=function(){return c.open({animation:!0,templateUrl:"app/channels/voice/disposition/list/modal/add.modal.html",controller:"VoiceDispositionListModalDispositionAddCtrl"}).result.then(function(b){b&&(a.dispositions.push(b),f.show(d.instant("MESSAGE_WELL_DONE")+"!","success"))})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.dispositions.list",{url:"/list",templateUrl:"app/channels/voice/disposition/list/list.html",controller:"VoiceDispositionListCtrl"})}]),angular.module("xCallyShuttleApp").controller("VoiceDispositionListModalDispositionAddCtrl",["$scope","$uibModalInstance","VoiceDisposition","xAlert","$translate",function(a,b,c,d,e){a.ok=function(){return c.save({name:a.name}).$promise.then(function(a){b.close(a)})["catch"](function(a){d.show(e.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").factory("VoiceDisposition",["$resource",function(a){return a("/api/voice/dispositions/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("VoiceMohListCtrl",["$scope","gridOptions","VoiceMoh","$uibModal","xAlert","$translate",function(a,b,c,d,e,f){a.initView=function(){var d={exporterCsvFilename:"voice_mohs.csv",columnDefs:[{name:"name"},{name:"mode"},{name:"directory"},{name:"sort"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/channels/voice/mohs/view/{{row.entity.id}}/settings",name:"settings"},{"class":"{{row.entity.defaultEntry ? 'red-sunglo disabled' : 'red-sunglo'}}",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=b.gridOptions(c,d,a)},a.createItem=function(){var b=d.open({animation:!0,templateUrl:"app/channels/voice/moh/list/create.modal.html",controller:["$scope","$uibModalInstance",function(a,b){a.form={},a.item={},a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]});b.result.then(function(b){return c.save(b).$promise.then(function(){a.gridOptions.getPage(),e.show(f.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){e.error(a)})})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.mohs.list",{url:"/list",templateUrl:"app/channels/voice/moh/list/list.html",controller:"VoiceMohListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").factory("VoiceMoh",["$resource",function(a){return a("/api/voice/musiconholds/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.mohs",{url:"/mohs",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:24}}})}]),angular.module("xCallyShuttleApp").controller("VoiceMohViewCtrl",["$scope","$http","xAlert","$translate","VoiceMoh","$stateParams","socket","Modal","$sce","$location","Sound",function(a,b,c,d,e,f,g,h,i,j,k){a.$translate=d,a.audioSources={},a.sortOptions=[{value:"random",name:"APPLICATION_RANDOM"},{value:"alpha",name:"APPLICATION_ALPHABETICAL"}],a.getMoh=function(){return e.get({id:f.id}).$promise.then(function(b){delete b.stamp,a.moh=b})["catch"](function(a){c.error(a)})},a.updateVoiceMoh=function(){return e.update({id:f.id},a.moh).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){c.error(a)})},a.addMohs=function(){return e.save({id:f.id,controller:"files"},a.item).$promise.then(function(){j.path("/channels/voice/mohs/view/"+f.id+"/audios")})["catch"](function(a){c.error(a)})},a.getAudioFiles=function(){return e.get({id:f.id,controller:"files"}).$promise.then(function(b){a.audioFiles=b.files,a.mohPath=b.path,a.audioFiles.forEach(function(a){l(a)})})["catch"](function(a){c.error(a)})},a.getSecureSrc=function(a){return i.trustAsResourceUrl(a)},a.getSounds=function(){return a.item={sounds:[]},k.get().$promise.then(function(b){a.soundList=b.rows})["catch"](function(a){c.error(a)})};var l=function(c){b.get("/api/voice/musiconholds/stream",{params:{path:encodeURI(a.mohPath+"/"+c)}}).success(function(b){a.audioSources[c]="data:audio/ogg;base64,"+b}).error(function(a){console.error(a)})};a.deleteItem=h.confirm["delete"](function(e){b["delete"]("/api/voice/musiconholds/"+f.id+"/files",{params:{filename:e}}).success(function(){_.remove(a.audioFiles,function(a){return a===e}),c.show(d.instant("MESSAGE_WELL_DONE")+"!","success")}).error(function(a){c.error(a)})})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.mohs.view",{url:"/view/:id",templateUrl:"app/channels/voice/moh/view/view.html",controller:"VoiceMohViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.voice.mohs.view.settings",{url:"/settings",templateUrl:"app/channels/voice/moh/view/view.settings.html"}).state("main.channels.voice.mohs.view.audios",{url:"/audios",templateUrl:"app/channels/voice/moh/view/view.audios.html",cache:!1}).state("main.channels.voice.mohs.view.add",{url:"/add",templateUrl:"app/channels/voice/moh/view/view.addFiles.html",cache:!1})}]),angular.module("xCallyShuttleApp").controller("VoiceQueueListCtrl",["$scope","$rootScope","$uibModal","VoiceQueue","gridOptions","Auth",function(a,b,c,d,e,f){a.initView=function(){a.Auth=f;var b={exporterCsvFilename:"voice_queues.csv",primaryKey:"name",columnDefs:[{name:"name"},{name:"strategy"},{name:"description"},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/channels/voice/queues/view/{{row.entity.name}}/settings",name:"settings"},{"class":"green-meadow",href:"/channels/voice/queues/view/{{row.entity.name}}/agents",name:"agents",hide:"user"===f.getCurrentUser().role},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.name)"}]}]};a.gridOptions=e.gridOptions(d,b,a)},a.createItem=function(){var b=c.open({animation:!0,templateUrl:"app/channels/voice/queue/list/list.create.modal.html",controller:"VoiceQueueListCreateCtrl",size:"lg"});b.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("VoiceQueueListCreateCtrl",["$scope","$uibModalInstance","$translate","xAlert","VoiceQueue","Team",function(a,b,c,d,e,f){a.form={},a.item={penalty:0,agents:[]},a.getTeams=function(){return f.get({controller:"associations"}).$promise.then(function(b){a.teams=b.rows}).then(function(){ComponentsDropdowns.bindQueue(a.teams,[],function(){return{select:function(b){a.item.agents=_.union(a.item.agents,b),console.log(a.item.agents)},deselect:function(b){a.item.agents=_.difference(a.item.agents,b),console.log(a.item.agents)}}})})["catch"](function(a){console.error(a)})},a.save=function(){return e.save(a.item).$promise.then(function(a){d.show(c.instant("MESSAGE_WELL_DONE"),"success"),b.close(a)})["catch"](function(a){d.error(a)})},a.cancel=function(){b.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.queues.list",{url:"/list",templateUrl:"app/channels/voice/queue/list/list.html",controller:"VoiceQueueListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.queues",{url:"/queues",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin"],redirectTo:"landing"}}})}]),angular.module("xCallyShuttleApp").factory("ReportQueue",["$resource",function(a){return a("/api/report/queues/:id/:controller/:controller2",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("UserHasVoiceQueue",["$resource",function(a){return a("/api/voice/user_has_queues/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("VoiceQueueViewCtrl",["$scope","xAlert","$translate","$stateParams","socket","$location","VoiceQueue","Team","Auth","VoiceMoh","Sound","Setting",function(a,b,c,d,e,f,g,h,i,j,k,l){a.Auth=i,a.binaryChoices=[{name:"Yes",value:1},{name:"No",value:0}],a.recordSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.autoPauseValues=[{name:"No",value:"no"},{name:"Yes",value:"all"}],a.monitorFormats=[{name:"wav",value:"wav"},{name:"gsm",value:"gsm"},{name:"Inactive",value:""}],a.queueAnnounces=[{display_name:"Default",path:null},{display_name:"Disabled",path:""}];var m=function(){return{select:function(b){return g.save({id:a.queue.name,controller:"agents"},{agents:b,penalty:a.queue.penalty}).$promise.then(function(){a.getTeams()})["catch"](function(a){console.log(a)})},deselect:function(b){return g["delete"]({id:a.queue.name,controller:"agents",agents:b}).$promise.then(function(){a.getTeams()})["catch"](function(a){console.log(a)})}}};a.getQueue=function(){return g.get({id:d.id}).$promise.then(function(b){b.joinempty=""===b.joinempty?[]:b.joinempty.split(","),b.leavewhenempty=""===b.leavewhenempty?[]:b.leavewhenempty.split(","),b.periodic_announce=""===b.periodic_announce?[]:b.periodic_announce.split(","),b.setinterfacevar="yes"===b.setinterfacevar,b.setqueuevar="yes"===b.setqueuevar,b.setqueueentryvar="yes"===b.setqueueentryvar,b.penalty=0,a.queue=b})["catch"](function(a){f.path("/channels/voice/queues/list")})},a.updateVoiceQueue=function(){var e=angular.copy(a.queue);return e.joinempty=e.joinempty.join(","),e.leavewhenempty=e.leavewhenempty.join(","),e.periodic_announce=e.periodic_announce.join(","),e.setinterfacevar=e.setinterfacevar?"yes":"no",e.setqueuevar=e.setqueuevar?"yes":"no",e.setqueueentryvar=e.setqueueentryvar?"yes":"no",e.context||(e.context=null),g.update({id:d.id},e).$promise.then(function(){b.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){b.error(a)})},a.getTeams=function(){return h.get({controller:"associations"}).$promise.then(function(b){return a.teams=b.rows,g.get({id:d.id,controller:"agents"}).$promise}).then(function(b){ComponentsDropdowns.bindQueue(a.teams,_.map(b.rows,function(a){return{id:a.id,penalty:a.UserHasVoiceQueue.penalty}}),m)})["catch"](function(a){console.error(a)})},a.getMohs=function(){return j.get().$promise.then(function(b){a.voiceMohs=b.rows,e.syncUpdates("voice_musiconhold",a.voiceMohs)})["catch"](function(a){b.error(a)})},a.getSounds=function(){var b;return l.get({id:1}).$promise.then(function(a){return b=a,k.get().$promise}).then(function(c){var d=b.soundPath||"/var/opt/motion/server/files/sounds/converted";_.forEach(c.rows,function(a){a.path=(d+"/"+a.save_name).replace(/\/+/g,"/").replace(/\\+/g,"\\")}),a.queueAnnounces=a.queueAnnounces.concat(c.rows),a.periodicAnnounces=angular.copy(c.rows),c.rows.unshift({display_name:"None",path:""}),a.sounds=c.rows,e.syncUpdates("sound",a.sounds)})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.queues.view",{url:"/view/:id",templateUrl:"app/channels/voice/queue/view/view.html",controller:"VoiceQueueViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.voice.queues.view.settings",{url:"/settings",templateUrl:"app/channels/voice/queue/view/view.settings.html"}).state("main.channels.voice.queues.view.agents",{url:"/agents",templateUrl:"app/channels/voice/queue/view/view.agents.html",cache:!1,serie:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}})}]),angular.module("xCallyShuttleApp").factory("VoiceQueue",["$resource",function(a){return a("/api/voice/queues/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.realtime",{url:"/realtime",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:26}}})}]),angular.module("xCallyShuttleApp").controller("VoiceRealtimeViewAbandonedCtrl",["$scope","$translate","socket","xAlert","ReportQueue","usSpinnerService","$q","Auth","uiGridConstants",function(a,b,c,d,e,f,g,h,i){function j(){return f.spin("spinner-grid"),e.get({controller:"abandoned",controller2:"all"}).$promise.then(function(b){a.gridOptions.data=b.rows})["catch"](function(a){d.error(a)})["finally"](function(){k(),f.stop("spinner-grid")})}function k(){c.socket.on("report_queue:update",function(b){if(b.queuecallerabandon){var c=_.find(a.gridOptions.data,{id:b.id});c?_.merge(c,b):a.gridOptions.data.unshift(b)}})}a.radioSwitch={size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"success",onColor:"danger"};a.initAbandoned=function(){a.agent=h.getCurrentUser(),a.gridOptions={exporterCsvFilename:"abandoned_calls.csv",enableRowHeaderSelection:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,enableFiltering:!0,enableSorting:!0,enableGridMenu:!1,flatEntityAccess:!0,showGridFooter:!0,fastWatch:!0,enableSelectAll:!1,enableHorizontalScrollbar:0,enableVerticalScrollbar:1,columnDefs:[{name:"queue",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter"},{name:"calleridnum",displayName:"APPLICATION_CALLERIDNUM",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter"},{name:"updatedAt",displayName:"APPLICATION_DATE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.updatedAt | date:'yyyy-MM-dd HH:mm:ss'}}</div>"},{name:"lastAssignedTo",cellClass:"text-center ui-grid-vcenter",displayName:"APPLICATION_LAST_ASSIGNED_TO",headerCellFilter:"translate"},{name:"assigned",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellTemplate:'<div class="centered-uigrid-td"><input data-ng-change="grid.appScope.updateItem(row.entity)", bs-switch ng-model="row.entity.assigned" type="checkbox" switch-active="{{ !row.entity.assigned || grid.appScope.agent.name === row.entity.lastAssignedTo }}" switch-on-text="{{ \'APPLICATION_ASSIGNED\' | translate }}" switch-off-text="{{ \'APPLICATION_FREE\' | translate }}" switch-on-color="{{ grid.appScope.radioSwitch.onColor }}" switch-off-color="{{ grid.appScope.radioSwitch.offColor }}" switch-animate="{{ grid.appScope.radioSwitch.animate }}" switch-size="{{ grid.appScope.radioSwitch.size }}" switch-label="{{ grid.appScope.radioSwitch.label }}" switch-icon="{{ grid.appScope.radioSwitch.icon }}" switch-radio-off="{{ grid.appScope.radioSwitch.radioOff }}" switch-label-width="{{ grid.appScope.radioSwitch.labelWidth }}" switch-handle-width="{{ grid.appScope.radioSwitch.handleWidth }}"></div>',enableFiltering:!1}],data:[],gridMenuTitleFilter:function(a){var c=g.defer();return c.resolve(b.instant(a)),c.promise},onRegisterApi:function(b){a.gridApi=b}},j()},a.updateItem=function(c){return e.update({id:c.id},{assigned:c.assigned,lastAssignedTo:c.assigned?a.agent.name:void 0}).$promise.then(function(){d.show(b.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){d.error(a)})};a.$on("$destroy",function(){c.unsyncUpdates("report_queue")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.realtime.view.abandoned",{url:"/abandoned",templateUrl:"app/channels/voice/realtime/view/abandoned/abandoned.html",controller:"VoiceRealtimeViewAbandonedCtrl"})}]),angular.module("xCallyShuttleApp").controller("VoiceRealtimeViewAgentCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","Agent","Pause","Action","VoiceQueue","usSpinnerService","$q","uiGridConstants","Auth","$timeout",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){function p(){return k.spin("grid-spinner"),g.get(u).$promise.then(function(b){a.gridOptions.totalItems=b.count,a.gridOptions.data=[],b.rows.forEach(function(a){r(a)})})["catch"](function(a){f.error(a)})["finally"](function(){k.stop("grid-spinner")})}function q(){e.socket.on("agent:save",function(b){b=b.newValues||b;var c=_.find(a.gridOptions.data,{agentId:b.id,isAgent:!0});c&&(c.online=b.hasOwnProperty("online")?b.online:c.online,c.lastLoginAt=b.hasOwnProperty("lastLoginAt")?b.lastLoginAt:c.lastLoginAt,c.pause=b.hasOwnProperty("voicePause")?b.voicePause:c.pause,c.pauseType=b.hasOwnProperty("pauseType")?b.pauseType:c.pauseType,c.lastPauseAt=b.hasOwnProperty("lastPauseAt")?b.lastPauseAt:c.lastPauseAt,c.status=b.hasOwnProperty("status")?b.status:c.status,c.statusAt=b.hasOwnProperty("statusAt")?b.statusAt:c.statusAt,c.queueStatus=b.hasOwnProperty("queueStatus")?b.queueStatus:c.queueStatus,c.queueStatusAt=b.hasOwnProperty("queueStatusAt")?b.queueStatusAt:c.queueStatusAt,c.lastQueue=b.hasOwnProperty("lastQueue")?b.lastQueue:c.lastQueue,c.ipaddr=b.hasOwnProperty("ipaddr")?b.ipaddr:c.ipaddr,c.port=b.hasOwnProperty("port")?b.port:c.port,c.fullcontact=b.hasOwnProperty("fullcontact")?b.fullcontact:c.fullcontact,c.useragent=b.hasOwnProperty("useragent")?b.useragent:c.useragent,c.lastms=b.hasOwnProperty("lastms")?b.lastms:c.lastms,c.internal=b.hasOwnProperty("internal")?b.internal:c.internal,_.map(a.gridOptions.data,function(a){a.isAgent||a.agentId!==b.id||(a.online=b.hasOwnProperty("online")?b.online:a.online)}))}),e.socket.on("agent:remove",function(b){_.remove(a.gridOptions.data,{agentId:b.id})})}function r(b){a.gridOptions.data.push({isAgent:!0,agentId:b.id,agent:b.name,online:b.online,lastLoginAt:b.lastLoginAt,lastPauseAt:b.lastPauseAt,pause:b.voicePause,pauseType:b.pauseType,status:b.status||"UNKNOWN",statusAt:b.statusAt,queueStatus:b.queueStatus||"READY",queueStatusAt:b.queueStatusAt,lastQueue:b.lastQueue,ipaddr:b.ipaddr,port:b.port,fullcontact:b.fullcontact,useragent:b.useragent,lastms:b.lastms,internal:b.internal})}function s(){return h.get().$promise.then(function(b){a.pauses=b.rows,e.syncUpdates("pause",a.pauses)})["catch"](function(a){f.error(a)})}function t(){return j.get().$promise.then(function(b){a.voiceQueues=b.rows,e.syncUpdates("voice_queue",a.voiceQueues)})["catch"](function(a){f.error(a)})}a.voiceQueues=[];var u={controller:"realtime",controller1:"voice",offset:0,limit:10};a.moment=moment,a._=_,a.initAgents=function(){a.gridOptions={enableGridMenu:!0,headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,useExternalPagination:!0,useExternalSorting:!0,useExternalFiltering:!0,multiSelect:!0,columnDefs:[{name:"name",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.isAgent">{{row.entity.agent}} <{{row.entity.internal}}></div>'},{name:"online",displayName:"APPLICATION_ONLINE",width:150,headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.online != null && row.entity.isAgent"><i class="fa" data-ng-class="{\'font-green\':row.entity.online, \'font-red\':!row.entity.online,\'fa-user\':row.entity.online,\'fa-user-times\':!row.entity.online}"></i> <i data-ng-if="row.entity.online" class="fa fa-sign-out font-red pointer-cursor" title="logout" data-ng-click="grid.appScope.agentLogout(row.entity.agent,row.entity.agentId)"></i> <span data-ng-if="row.entity.online && grid.appScope.showTimers" class="left-margin"><css-timer start-time="row.entity.lastLoginAt"></css-timer></span></div>',filter:{type:m.filter.SELECT,selectOptions:[{value:"true",label:"ONLINE"},{value:"false",label:"OFFLINE"}]}},{name:"status",displayName:"APPLICATION_PHONE_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div data-ng-if=\"row.entity.isAgent\">{{'APPLICATION_'+row.entity.status | translate}} <span data-ng-if=\"row.entity.statusAt && (row.entity.status === 'BUSY' || row.entity.status === 'ONHOLD' || row.entity.status === 'INUSE')\"><span data-ng-if=\"grid.appScope.showTimers\"><css-timer start-time=\"row.entity.statusAt\"></css-timer></span></span></div>",filter:{type:m.filter.SELECT,selectOptions:[{value:"UNKNOWN",label:d.instant("APPLICATION_UNKNOWN")},{value:"NOT_INUSE",label:d.instant("APPLICATION_NOT_INUSE")},{value:"INUSE",label:d.instant("APPLICATION_INUSE")},{value:"BUSY",label:d.instant("APPLICATION_BUSY")},{value:"INVALID",label:d.instant("APPLICATION_INVALID")},{value:"UNAVAILABLE",label:d.instant("APPLICATION_UNAVAILABLE")},{value:"RINGING",label:d.instant("APPLICATION_RINGING")},{value:"RINGINUSE",label:d.instant("APPLICATION_RINGINUSE")},{value:"ONHOLD",label:d.instant("APPLICATION_ONHOLD")}]}},{name:"queueStatus",displayName:"APPLICATION_QUEUE_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.isAgent && row.entity.online" class="ui-grid-vcenter"><span class="left-margin"><i data-ng-if="row.entity.pause" data-ng-click="grid.appScope.pause(row.entity,\'unpause\')" class="fa fa-play font-green pointer-cursor" title="{{\'APPLICATION_RESUME\' | translate}}"></i><i class="fa fa-pause font-yellow pointer-cursor" data-ng-click="grid.appScope.pause(row.entity,\'pause\',\'DEFAULT PAUSE\')" title="{{\'APPLICATION_DEFAULT_PAUSE\' | translate}}"></i></span><select data-ng-if="grid.appScope.pauses.length" class="pause-select pointer-cursor" data-ng-model="grid.appScope.pauseType" data-ng-change="grid.appScope.pause(row.entity,\'pause\',grid.appScope.pauseType)"><option class="pointer-cursor" data-ng-repeat="pause in grid.appScope.pauses">{{pause.name}}</option></select><span data-ng-if="!row.entity.pause || grid.appScope._.startsWith(row.entity.pauseType,\'#\')"> {{\'APPLICATION_\'+row.entity.queueStatus.toUpperCase() | translate}}</span><span data-ng-if="row.entity.pause && grid.appScope._.startsWith(row.entity.pauseType,\'#\')"> * </span><span data-ng-if="row.entity.pause && !grid.appScope._.startsWith(row.entity.pauseType,\'#\')"> {{\'APPLICATION_PAUSED\' | translate}}</span><span data-ng-if="(row.entity.queueStatus!==\'complete\' && (!row.entity.pause || row.entity.pauseType === \'ACW\'))"> [{{row.entity.lastQueue}}]</span><span data-ng-if="row.entity.pause && !grid.appScope._.startsWith(row.entity.pauseType,\'#\')"> [{{row.entity.pauseType}}]</span><span data-ng-if="row.entity.queueStatusAt && (row.entity.queueStatus!==\'complete\' || (row.entity.pause)) && grid.appScope.showTimers"><css-timer start-time="(row.entity.pause && !grid.appScope._.startsWith(row.entity.pauseType,\'#\')) ? row.entity.lastPauseAt : row.entity.queueStatusAt"></css-timer></span></div>',filter:{type:m.filter.SELECT,selectOptions:[{value:"connect",label:d.instant("APPLICATION_CONNECT")},{value:"complete",label:d.instant("APPLICATION_COMPLETE")},{value:"called",label:d.instant("APPLICATION_CALLED")},{value:"paused",label:d.instant("APPLICATION_PAUSED")}]},enableSorting:!1,enableColumnMenu:!1},{name:"action",displayName:"",width:170,cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><button data-ng-if="row.entity.queue" class="btn btn-xs red-sunglo" data-ng-click="grid.appScope.leaveQueue(row.entity.agentId,row.entity.queue)"><i class="icon-ban"></i> {{\'APPLICATION_LEAVE\' | translate}}</button><button data-ng-if="row.entity.isAgent" class="btn btn-xs blue-hoki" data-ng-click="grid.appScope.joinQueue(row.entity.agentId)"><i class="icon-plus"></i> {{\'APPLICATION_QUEUES\' | translate}}</button> <button data-ng-if="row.entity.isAgent" class="btn btn-xs blue-madison" data-ng-click="grid.appScope.showInfo(row.entity)"><i class="icon-info"></i></button><div>',enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1}],data:[],gridMenuTitleFilter:function(a){var b=l.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){v(a.gridApi.core.getVisibleRows(a.gridApi.grid).length)}),a.gridApi.core.on.sortChanged(a,function(a,b){0===b.length?u.order=null:u.order=b[0].name+" "+b[0].sort.direction.toUpperCase(),p()}),a.gridApi.pagination.on.paginationChanged(a,function(a,b){u.offset=(a-1)*b,u.limit=b,p()}),a.gridApi.core.on.filterChanged(a,function(){var a=this.grid;a.columns.forEach(function(a){a.filters[0].term?u[a.name]=a.filters[0].term:delete u[a.name]}),p()})}},p(),s(),t(),o(function(){q()})};var v=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("agent"),e.unsyncUpdates("user_has_voice_queue")}),a.pause=function(b,c,e){return e&&(a.pauseType=null),i.save({name:c,agent:b.agentId,data2:b.agent,type:e||"DEFAULT PAUSE",data4:e||"DEFAULT PAUSE",channel:"voice"}).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.joinQueue=function(a){c.open({animation:!0,templateUrl:"app/channels/voice/realtime/view/agent/queue.modal.add.html",controller:"VoiceRealtimeViewAgentQueueModalCtrl",resolve:{id:a}})},a.showInfo=function(a){c.open({animation:!0,templateUrl:"app/channels/voice/realtime/view/agent/agent.modal.info.html",controller:"VoiceRealtimeViewAgentInfoModalCtrl",resolve:{agent:a}})},a.$on("$destroy",function(){e.unsyncUpdates("agent"),e.unsyncUpdates("user_has_voice_queue")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.realtime.view.agents",{url:"/agents",templateUrl:"app/channels/voice/realtime/view/agent/agent.html",controller:"VoiceRealtimeViewAgentCtrl"})}]),angular.module("xCallyShuttleApp").controller("VoiceRealtimeViewAgentInfoModalCtrl",["$scope","$uibModalInstance","agent",function(a,b,c){a.agent=c,a.close=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("VoiceRealtimeViewAgentQueueModalCtrl",["$scope","$uibModalInstance","$http","id","Agent","xAlert","usSpinnerService","$translate","Action","socket","VoiceQueue",function(a,b,c,d,e,f,g,h,i,j,k){a.item={},a.params={penalty:0};var l=function(a,b){var c=a?30*a+130:177;angular.element(document.getElementsByName(b)[0]).css("height",c+"px")};a.enableLeave=!0,a.init=function(){a.queueTable={enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,enableSorting:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,columnDefs:[{name:"name",headerCellFilter:"translate",displayName:"APPLICATION_QUEUE",cellClass:"text-center ui-grid-vcenter"},{name:"penalty",headerCellFilter:"translate",displayName:"APPLICATION_PENALTY",cellClass:"text-center ui-grid-vcenter"},{name:"loggedAt",displayName:"logged At",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span am-time-ago="row.entity.loggedAt"></span></div>'},{name:"action",displayName:"",width:170,cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><button class="btn btn-xs red-sunglo" data-ng-click="grid.appScope.leaveQueue(row.entity.name)" data-ng-disabled="!grid.appScope.enableLeave"><i class="icon-ban"></i> {{\'APPLICATION_LEAVE\' | translate}}</button>',enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1}],data:[],onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){l(a.queueTable.paginationPageSize>a.queueTable.data.length?a.queueTable.data.length:a.queueTable.paginationPageSize,"queueTable")}),a.gridApi.pagination.on.paginationChanged(a,function(b,c){l(c>a.queueTable.data.length?a.queueTable.data.length:c,"queueTable")})}},a.queues=[];var b={};return e.get({id:d,controller:"voice",controller1:"queues"}).$promise.then(function(a){return _.forEach(_.filter(a.rows,function(a){return a.UserHasVoiceQueue.logged===!0}),function(a){b[a.name]=a}),k.get().$promise}).then(function(c){_.forEach(c.rows,function(c){b[c.name]?a.queueTable.data.push({name:c.name,loggedAt:b[c.name].UserHasVoiceQueue.loggedAt,penalty:b[c.name].UserHasVoiceQueue.penalty}):a.queues.push({name:c.name})}),g.stop("agentqueue-spinner")})["catch"](function(a){f.error(a)})},a.joinQueue=function(){return g.spin("agentqueue-spinner"),a.enableLeave=!1,i.save({name:"QueueAdd",agent:d,queues:a.item.queues,channel:"voice",data1:d,data2:a.params.penalty,data3:a.item.queues.join(","),data4:"voice"}).$promise.then(function(){a.item.queues=[],f.show(h.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.leaveQueue=function(b){return g.spin("agentqueue-spinner"),a.enableLeave=!1,i.save({name:"QueueRemove",agent:d,queue:b,channel:"voice",data1:d,data3:b,data4:"voice"}).$promise.then(function(){f.show(h.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},j.socket.on("user_has_voice_queue:save",function(b){if(b.UserId==d){var c=_.find(a.queueTable.data,function(a){return a.name===b.queue});if(!c&&b.logged)a.queueTable.data.push({name:b.queue,loggedAt:b.loggedAt,penalty:b.penalty}),_.remove(a.queues,{name:b.queue}),g.stop("agentqueue-spinner"),a.enableLeave=!0;else if(c&&!b.logged){var e=_.remove(a.queueTable.data,{name:b.queue});a.queues.push(e[0])}}}),j.socket.on("user_has_voice_queue:remove",function(b){if(b.UserId==d){ -var c=_.remove(a.queueTable.data,{name:b.queue});a.queues.push(c[0]),g.stop("agentqueue-spinner"),a.enableLeave=!0}}),a.close=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("VoiceRealtimeViewOutboundCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","ReportDial","Pause","Action","usSpinnerService","$q","uiGridConstants","$timeout","Auth",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){function o(){return j.spin("spinner-grid"),g.get({controller:"active",controller2:"calls"}).$promise.then(function(b){a.gridOptions.data=b.rows})["catch"](function(a){f.error(a)})["finally"](function(){p(),j.stop("spinner-grid")})}function p(){e.socket.on("report_dial:save",function(b){a.gridOptions.data.unshift(b)}),e.socket.on("report_dial:update",function(b){var c=_.find(a.gridOptions.data,{uniqueid:b.uniqueid});c&&(_.merge(c,b),!c.endtime||c.answertime&&c.answertime==c.endtime||m(function(){_.remove(a.gridOptions.data,{uniqueid:c.uniqueid})},3e3))})}a.moment=moment,a.initDials=function(){a.gridOptions={paginationPageSizes:[10,25,50,75],paginationPageSize:10,headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,columnDefs:[{name:"uniqueid",displayName:"APPLICATION_UNIQUEID",headerCellFilter:"translate",cellClass:"text-center"},{name:"agent",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.channel.split('/')[1].split('-')[0]}}</div>"},{name:"calleridnum",displayName:"APPLICATION_CALLERID",headerCellFilter:"translate",cellClass:"text-center"},{name:"dialstring",cellClass:"text-center"},{name:"status",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span data-ng-if="!row.entity.endtime && !row.entity.answertime">{{\'APPLICATION_RINGING\' | translate}}</span><span data-ng-if="row.entity.answertime && !row.entity.endtime">{{\'APPLICATION_TALKING\' | translate}}</span><span data-ng-if="row.entity.answertime && row.entity.endtime">{{\'APPLICATION_COMPLETE\' | translate}}</span><span data-ng-if="row.entity.endtime && !row.entity.answertime">{{\'APPLICATION_\'+row.entity.dialstatus | translate}}</span><span data-ng-if="!row.entity.endtime && grid.appScope.showTimers"> <css-timer start-time="row.entity.updatedAt"></css-timer></span></div>',enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1}],data:[],gridMenuTitleFilter:function(a){var b=k.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){q(a.gridOptions.data.length)})}},o()};var q=function(a){var b=a?30*a+100:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("report_dial")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.realtime.view.outbound",{url:"/outbound",templateUrl:"app/channels/voice/realtime/view/outbound/outbound.html",controller:"VoiceRealtimeViewOutboundCtrl"})}]),angular.module("xCallyShuttleApp").controller("VoiceRealtimeViewParameterCtrl",["$scope","$translate","Dashboard","VoiceQueue","Auth","socket","uiGridConstants",function(a,b,c,d,e,f,g){function h(a){var b=a?30*a+150:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")}function i(b){var c=_.find(a.gridOptions.data,{name:b.queue});c&&(c[b.type]+=b.amount)}var j={offset:0,limit:10};a.initParameters=function(){switch(a.user=e.getCurrentUser(),a.$on("$destroy",function(){f.socket.removeAllListeners("voice:inbound")}),a.user.role){case"admin":c.get({id:"voice",controller:"init"}).$promise.then(function(b){for(var c in b.queues)b.queues[c].waiting=b.queues[c].waiting||0,b.queues[c].active=b.queues[c].active||0,b.queues[c].complete=b.queues[c].complete||0,b.queues[c].abandon=b.queues[c].abandon||0,b.queues[c].unmanaged=b.queues[c].unmanaged||0,b.queues[c].holdtime=b.queues[c].holdtime||0,b.queues[c].talktime=b.queues[c].talktime||0,a.gridOptions.data.push(b.queues[c])})["catch"](function(a){console.error(a)});break;case"user":c.get({id:"voice",controller:"init"}).$promise.then(function(b){for(var c in b.queues){var d=_.find(a.user.PVoiceQueues,{name:c});d&&(b.queues[c].waiting=b.queues[c].waiting||0,b.queues[c].active=b.queues[c].active||0,b.queues[c].complete=b.queues[c].complete||0,b.queues[c].abandon=b.queues[c].abandon||0,b.queues[c].unmanaged=b.queues[c].unmanaged||0,b.queues[c].holdtime=b.queues[c].holdtime||0,b.queues[c].talktime=b.queues[c].talktime||0,a.gridOptions.data.push(b.queues[c]))}})["catch"](function(a){console.error(a)})}f.socket.on("voice:inbound",function(a){i(a)})},a.gridOptions={headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,enableSorting:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,columnDefs:[{name:"name",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter"},{name:"waiting",displayName:"APPLICATION_WAITING",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"active",displayName:"APPLICATION_ACTIVE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"complete",displayName:"APPLICATION_ANSWERED",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",enableSorting:!1,enableColumnMenu:!1,filters:[{condition:g.filter.GREATER_THAN_OR_EQUAL,placeholder:"from"},{condition:g.filter.LESS_THAN_OR_EQUAL,placeholder:"to"}]},{name:"abandon",displayName:"APPLICATION_ABANDONED",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",enableSorting:!1,enableColumnMenu:!1,filters:[{condition:g.filter.GREATER_THAN_OR_EQUAL,placeholder:"from"},{condition:g.filter.LESS_THAN_OR_EQUAL,placeholder:"to"}]},{name:"unmanaged",displayName:"APPLICATION_UNMANAGED",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",enableSorting:!1,enableColumnMenu:!1,filters:[{condition:g.filter.GREATER_THAN_OR_EQUAL,placeholder:"from"},{condition:g.filter.LESS_THAN_OR_EQUAL,placeholder:"to"}]},{name:"holdtime",displayName:"APPLICATION_HOLDTIME",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.holdtime | secToTime | date:'HH:mm:ss'}}</div>",enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"talktime",displayName:"APPLICATION_TALKTIME",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.talktime | secToTime | date:'HH:mm:ss'}}</div>",enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"totalCalls",displayName:"APPLICATION_TOTAL_CALLS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.complete + row.entity.abandon + row.entity.unmanaged}}</div>",enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1}],data:[],onRegisterApi:function(b){a.gridApi=b,a.gridApi.core.on.sortChanged(a,function(a,b){0===b.length?j.order=null:j.order=b[0].name+" "+b[0].sort.direction.toUpperCase()}),a.gridApi.pagination.on.paginationChanged(a,function(a,b){h(b),j.offset=(a-1)*b,j.limit=b}),a.gridApi.core.on.filterChanged(a,function(){var a=this.grid;a.columns.forEach(function(a){a.filters.length>1?a.filters.forEach(function(b){b.term?64===b.condition?j[a.name+"_uiFrom"]=b.term:256===b.condition&&(j[a.name+"_uiTo"]=b.term):64===b.condition?delete j[a.name+"_uiFrom"]:256===b.condition&&delete j[a.name+"_uiTo"]}):a.filters.length&&a.filters[0].term?j[a.name]=a.filters[0].term:delete j[a.name]})})}}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.realtime.view.parameters",{url:"/parameters",templateUrl:"app/channels/voice/realtime/view/parameter/parameter.html",controller:"VoiceRealtimeViewParameterCtrl"})}]),angular.module("xCallyShuttleApp").controller("VoiceRealtimeViewQueueCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","VoiceQueue","usSpinnerService","$q",function(a,b,c,d,e,f,g,h,i){function j(){return h.spin("spinner-grid"),g.get().$promise.then(function(b){a.queues=b.rows})["catch"](function(a){f.error(a)})["finally"](function(){k(),h.stop("spinner-grid")})}function k(){e.socket.on("voice_queue:save",function(b){_.find(a.queues,{name:b.name})||a.queues.push(b)}),e.socket.on("voice_queue:remove",function(b){_.remove(a.queues,{name:b.name})}),e.socket.on("user_has_voice_queue:save",function(b){if(b.queue===a.item.queue){var c=_.find(a.gridOptions.data,{id:b.UserId});c?(c.voicePause=b.paused,c.pauseType=b.reason):a.gridOptions.data.push({id:b.UserId,name:b.membername,voicePause:b.paused,pauseType:b.reason})}}),e.socket.on("user_has_voice_queue:remove",function(b){b.queue===a.item.queue&&_.remove(a.gridOptions.data,{id:b.UserId})})}a.moment=moment,a.item={},a.initQueues=function(){a.gridOptions={enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,enableSorting:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,columnDefs:[{name:"name",displayName:"APPLICATION_AGENT_NAME",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter"},{name:"paused",displayName:"APPLICATION_PAUSED",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div\">{{(row.entity.voicePause ? 'APPLICATION_YES' : 'APPLICATION_NO') | translate}}</div>"},{name:"pauseType",displayName:"APPLICATION_REASON",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.voicePause">{{row.entity.pauseType}}</div>'}],data:[],gridMenuTitleFilter:function(a){var b=i.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){l(a.gridOptions.paginationPageSize>a.gridOptions.data.length?a.gridOptions.data.length:a.gridOptions.paginationPageSize)}),a.gridApi.pagination.on.paginationChanged(a,function(b,c){l(c>a.gridOptions.data.length?a.gridOptions.data.length:c)})}},j(!0)},a.getAgents=function(b){return b?g.get({id:b,controller:"agents"}).$promise.then(function(b){a.gridOptions.data=_.filter(b.rows,function(a){return a.UserHasVoiceQueue.logged===!0})})["catch"](function(a){f.error(a)}):void(a.gridOptions.data=[])};var l=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("voice_queue"),e.unsyncUpdates("user_has_voice_queue")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.realtime.view.queues",{url:"/queues",templateUrl:"app/channels/voice/realtime/view/queue/queue.html",controller:"VoiceRealtimeViewQueueCtrl"})}]),angular.module("xCallyShuttleApp").controller("VoiceRealtimeViewQueueCallsCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","ReportQueue","Pause","Action","usSpinnerService","$q","uiGridConstants","$timeout",function(a,b,c,d,e,f,g,h,i,j,k,l,m){function n(){return j.spin("spinner-grid"),g.get({controller:"waiting",controller2:"calls"}).$promise.then(function(b){a.gridOptions.data=b.rows,p(10)})["catch"](function(a){f.error(a)})["finally"](function(){o(),j.stop("spinner-grid")})}function o(){e.socket.on("report_queue:save",function(b){a.gridOptions.data.unshift(b)}),e.socket.on("report_queue:update",function(b){var c=_.find(a.gridOptions.data,{id:b.id});if(c){var d={queuecallerabandon:b.queuecallerabandon,queuecallerleave:b.queuecallerleave};delete b.queuecallerabandon,delete b.queuecallerleave,_.merge(c,b),d.queuecallerabandon&&(c.queuecallerabandon=d.queuecallerabandon),d.queuecallerleave&&(c.queuecallerleave=d.queuecallerleave),(c.queuecallerabandon||c.queuecallercomplete||c.queuecallerexitreason)&&m(function(){_.remove(a.gridOptions.data,{id:b.id})},3e3)}})}a.moment=moment,a.initQueues=function(){a.gridOptions={headerCellFilter:"translate",paginationPageSizes:[10,25,50,75],paginationPageSize:10,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,columnDefs:[{name:"queue",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate"},{name:"status",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span data-ng-if="!row.entity.queuecallerleaveAt && !row.entity.queuecallerexit">{{\'APPLICATION_QUEUESTATUS_WAITING\' | translate}}</span><span data-ng-if="row.entity.queuecallerleaveAt && !row.entity.queuecallerabandon && !row.entity.queuecallercomplete && !row.entity.queuecallerexit">{{\'APPLICATION_ACTIVE\' | translate}}</span><span data-ng-if="row.entity.queuecallerleaveAt && row.entity.queuecallerabandon">{{\'APPLICATION_QUEUESTATUS_ABANDON\' | translate}}</span><span data-ng-if="row.entity.queuecallerleaveAt && row.entity.queuecallercomplete">{{\'APPLICATION_QUEUESTATUS_COMPLETE\' | translate}}</span><span data-ng-if="row.entity.queuecallerexitreason">{{row.entity.queuecallerexitreason}}</span><span data-ng-if="!row.entity.queuecallercomplete && !row.entity.queuecallerabandon && !row.entity.queuecallerexit && grid.appScope.showTimers"> <css-timer start-time="row.entity.updatedAt"></css-timer></span></div>',enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1},{name:"caller",displayName:"APPLICATION_CALLER",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.calleridnum || ''}} {{row.entity.calleridname || ''}}</div>",enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1},{name:"position",displayName:"APPLICATION_POSITION",headerCellFilter:"translate"},{name:"lastAssignedTo",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1}],data:[],gridMenuTitleFilter:function(a){var b=k.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.pagination.on.paginationChanged(a,function(a,b){p(b)})}},n()};var p=function(a){var b=a?30*a+100:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("report_queue")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.realtime.view.queuecalls",{url:"/queuecalls",templateUrl:"app/channels/voice/realtime/view/queuecalls/queuecalls.html",controller:"VoiceRealtimeViewQueueCallsCtrl"})}]),angular.module("xCallyShuttleApp").controller("VoiceRealtimeViewTelephoneCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","Telephone","Pause","Action","usSpinnerService","$q","uiGridConstants","$timeout",function(a,b,c,d,e,f,g,h,i,j,k,l,m){function n(){return j.spin("spinner-grid"),g.get(p).$promise.then(function(b){a.gridOptions.totalItems=b.count,a.gridOptions.data=b.rows})["catch"](function(a){f.error(a)})["finally"](function(){j.stop("spinner-grid")})}function o(){e.socket.on("agent:save",function(b){var c=_.find(a.gridOptions.data,{id:b.id});c&&(c.status=b.status,c.statusAt=b.statusAt,c.ipaddr=b.ipaddr,c.port=b.port,c.fullcontact=b.fullcontact,c.useragent=b.useragent,c.lastms=b.lastms,c.internal=b.internal)}),e.socket.on("agent:remove",function(b){_.remove(a.gridOptions.data,{id:b.id})})}var p={offset:0,limit:10};a.moment=moment,a.initTelephones=function(){a.gridOptions={enableGridMenu:!0,headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,useExternalPagination:!0,useExternalSorting:!0,useExternalFiltering:!0,multiSelect:!0,showTreeExpandNoChildren:!0,columnDefs:[{name:"name",displayName:"APPLICATION_TELEPHONE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.name}} <{{row.entity.internal}}></div>"},{name:"status",displayName:"APPLICATION_PHONE_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{'APPLICATION_'+row.entity.status | translate}} <span data-ng-if=\"row.entity.statusAt && (row.entity.status === 'BUSY' || row.entity.status === 'ONHOLD' || row.entity.status === 'INUSE')\"><span data-ng-if=\"grid.appScope.showTimers\"><css-timer start-time=\"row.entity.statusAt\"></css-timer></span></span></div>",filter:{type:l.filter.SELECT,selectOptions:[{value:"UNKNOWN",label:d.instant("APPLICATION_UNKNOWN")},{value:"NOT_INUSE",label:d.instant("APPLICATION_NOT_INUSE")},{value:"INUSE",label:d.instant("APPLICATION_INUSE")},{value:"BUSY",label:d.instant("APPLICATION_BUSY")},{value:"INVALID",label:d.instant("APPLICATION_INVALID")},{value:"UNAVAILABLE",label:d.instant("APPLICATION_UNAVAILABLE")},{value:"RINGING",label:d.instant("APPLICATION_RINGING")},{value:"RINGINUSE",label:d.instant("APPLICATION_RINGINUSE")},{value:"ONHOLD",label:d.instant("APPLICATION_ONHOLD")}]}},{name:"action",displayName:"",width:170,cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><button class="btn btn-xs blue-madison" data-ng-click="grid.appScope.showInfo(row.entity)"><i class="icon-info"></i></button><div>',enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1}],data:[],gridMenuTitleFilter:function(a){var b=k.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){q(a.gridOptions.data.length)}),a.gridApi.core.on.sortChanged(a,function(a,b){0===b.length?p.order=null:p.order=b[0].name+" "+b[0].sort.direction.toUpperCase(),n()}),a.gridApi.pagination.on.paginationChanged(a,function(a,b){p.offset=(a-1)*b,p.limit=b,n()}),a.gridApi.core.on.filterChanged(a,function(){var a=this.grid;a.columns.forEach(function(a){a.filters[0].term?p[a.name]=a.filters[0].term:delete p[a.name]}),n()})}},n(),m(function(){o()})};var q=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("agent")}),a.showInfo=function(a){c.open({animation:!0,templateUrl:"app/channels/voice/realtime/view/telephone/telephone.modal.info.html",controller:"VoiceRealtimeViewTelephoneInfoModalCtrl",resolve:{telephone:a}})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.realtime.view.telephones",{url:"/telephones",templateUrl:"app/channels/voice/realtime/view/telephone/telephone.html",controller:"VoiceRealtimeViewTelephoneCtrl",data:{permissions:{only:["admin","user"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").controller("VoiceRealtimeViewTelephoneInfoModalCtrl",["$scope","$uibModalInstance","$http","telephone",function(a,b,c,d){a.telephone=d,a.close=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("VoiceRealtimeViewCtrl",["$scope","Auth",function(a,b){a.Auth=b,a.timerSwitch={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"primary"},a.showTimers=!1}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.realtime.view",{url:"/view",templateUrl:"app/channels/voice/realtime/view/view.html",controller:"VoiceRealtimeViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("VoiceRecordingListCtrl",["$scope","$translate","$sce","Recording","gridOptions","xAlert","uiGridConstants","Auth",function(a,b,c,d,e,f,g,h){a.Recording=d,a.updateRating=function(a,c){return d.update({id:a,rating:c}).$promise.then(function(){f.show(b.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.initView=function(){var b={exporterCsvFilename:"recordings.csv",rowHeight:30,primaryKey:"id",columnDefs:[{name:"uniqueid"},{name:"customerPhone",displayName:"APPLICATION_CUSTOMER_PHONE",cellClass:"text-center ui-grid-vcenter"},{name:"membername"},{name:"type",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div><i data-ng-class=\"{'icon-call-in font-green':row.entity.type === 'inbound','icon-call-out font-red':row.entity.type === 'outbound','icon-control-forward font-red':row.entity.type === 'tigerdial','icon-question':row.entity.type === 'unknown','icon-earphones font-purple':row.entity.type === 'internal','fa fa-user-secret font-blue':row.entity.type === 'chanspy'}\"></i></div>",filter:{type:g.filter.SELECT,selectOptions:[{value:"inbound",label:"Inbound"},{value:"internal",label:"Internal"},{value:"outbound",label:"Outbound"},{value:"tigerdial",label:"Motion Dialer"},{value:"chanspy",label:"ChanSpy"},{value:"unknown",label:"Unknown"}]}},{name:"queue"},{name:"createdAt",displayName:"APPLICATION_DATE",headerCellFilter:"translate",filterHeaderTemplate:'<div class="ui-grid-filter-container row"><div ng-repeat="colFilter in col.filters" class="col-md-6 col-md-offset-0 col-sm-5 col-sm-offset-0 col-xs-5 col-xs-offset-0"><div custom-grid-date-filter-header></div></div></div>',filters:[{name:"From",condition:g.filter.GREATER_THAN_OR_EQUAL},{name:"To",condition:g.filter.LESS_THAN_OR_EQUAL}],sort:{direction:g.DESC,priority:0}},{name:"rating",filter:{type:g.filter.SELECT,selectOptions:[{value:1,label:"1"},{value:2,label:"2"},{value:3,label:"3"},{value:4,label:"4"},{value:5,label:"5"}]},cellClass:"ui-grid-vcenter",width:"100",cellTemplate:'<div><uib-rating data-ng-model="row.entity.rating" data-ng-click="grid.appScope.updateRating(row.entity.id, row.entity.rating)" aria-labelledby="default-rating"></uib-rating></div>'},{name:"audio",displayName:"",width:100,enableSorting:!1,enableFiltering:!1,cellClass:"ui-grid-vcenter",cellTemplate:"<div><audio-file-download data-ng-if=\"row.entity.value.split('.').pop() == 'wav'\" params=\"{id:row.entity.id,controller:'stream'}\" resource=\"grid.appScope.Recording\"></audio-file-download><span data-ng-if=\"row.entity.value.split('.').pop() == 'gsm'\" title=\"{{'MESSAGE_GSM_PREVIEW_NOT_SUPPORTED' | translate}}\">{{'MESSAGE_GSM_PREVIEW_NOT_SUPPORTED' | translate}}</span></div>"},{name:"action",width:80,buttons:[{directive:"<motion-file-download params=\"{id:row.entity.id,controller:'stream'}\" resource=\"grid.appScope.Recording\" mimetype=\"'audio/'+row.entity.value.split('.').pop()\" btnclass=\"btn btn-xs blue-hoki\" filename=\"row.entity.uniqueid+'.'+row.entity.value.split('.').pop()\"></motion-file-download>"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.uniqueid, row.entity.id)",hide:!h.isAdmin()}]}]};a.gridOptions=e.gridOptions(d,b,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.recordings.list",{url:"/list",templateUrl:"app/channels/voice/recording/list/list.html",controller:"VoiceRecordingListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Recording",["$resource",function(a){return a("/api/voice/recordings/:id/:controller",{id:"@id"},{update:{method:"PUT"},patch:{method:"PATCH"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.recordings",{url:"/recordings",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:25}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.routes.inbound",{url:"/inbound",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("VoiceRouteInboundListCreateCtrl",["$scope","$uibModalInstance","Route","application","xAlert","$location","$translate","VoiceContext","socket",function(a,b,c,d,e,f,g,h,i){a.$application=d.application,a.forms={route:void 0},a.getContexts=function(){return h.get().$promise.then(function(b){a.voiceContexts=b.rows,i.syncUpdates("voice_context",a.voiceContexts)})["catch"](function(a){e.error(a)})},a.item={type:"inbound",appdata:"Inbound Call from ${CALLERID(num)}",context:"from-voip-provider"},a.ok=function(){return a.item.exten=a.$application.checkUnderscore(a.item.exten),c.save(a.item).$promise.then(function(a){b.close(a),f.path("/channels/voice/routes/inbound/view/"+a.id+"/applications")})["catch"](function(a){console.log(a),e.error(a)})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("VoiceRouteInboundListCtrl",["$scope","$http","socket","$translate","$rootScope","xAlert","Modal","stResource","gridOptions","Route","$uibModal","$location","$log",function(a,b,c,d,e,f,g,h,i,j,k,l,m){a.initView=function(){var b={exporterCsvFilename:"InboundRoutes.csv",columnDefs:[{name:"exten",displayName:"APPLICATION_PHONE_NUMBER"},{name:"description"},{name:"applications",cellClass:"ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.Applications.length"><span data-ng-repeat="app in row.entity.Applications | limitTo:2">{{app.app}}({{app.appdata[0]}}), </span>...</div><div data-ng-if="!row.entity.Applications.length">{{\'MESSAGE_NO_AVAILABLE_APPLICATIONS\' | translate}}</div>',enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/channels/voice/routes/inbound/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.exten, row.entity.id)"}]}]};a.gridOptions=i.gridOptions(j,b,a,{type:"inbound"})},a.create=function(){k.open({animation:!0,templateUrl:"app/channels/voice/route/inbound/list/create.modal.html",controller:"VoiceRouteInboundListCreateCtrl"})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.routes.inbound.list",{url:"/list",templateUrl:"app/channels/voice/route/inbound/list/list.html",controller:"VoiceRouteInboundListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("VoiceRouteInboundViewCtrl",["$scope","$translate","$stateParams","socket","$location","WizardHandler","Modal","xAlert","application","interval","Route","VoiceQueue","Sound","SquareProject","VoiceContext","Interval","VoiceMail","User","Agent","Telephone","Trunk","Team",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v){function w(b){var c,d;if("always"===b.intType)c=null,d="*,*,*,*";else if("list"===b.intType)d=b.IntervalId?_.find(a.Intervals,{id:b.IntervalId}).name:"*,*,*,*",c=b.IntervalId||null;else if("custom"===b.intType){c=null;var e,f,g,h;e=b.t_from&&b.t_to&&!b.alwaysTime?moment(b.t_from).format("HH:mm")+"-"+moment(b.t_to).format("HH:mm"):"*",b.wd_from&&"always"!==b.wd_from?(f=b.wd_from,b.wd_to&&"always"!==b.wd_to&&(f+="-"+b.wd_to)):f="*",b.md_from&&"always"!==b.md_from?(g=b.md_from,b.md_to&&"always"!==b.md_to&&(g+="-"+b.md_to)):g="*",b.m_from&&"always"!==b.m_from?(h=b.m_from,b.m_to&&"always"!==b.m_to&&(h+="-"+b.m_to)):h="*",d=e+","+f+","+g+","+h}void 0===a.selectedApp?(a.application.interval=d,a.application.IntervalId=c):(a.route.Applications[a.selectedApp].interval=d,a.route.Applications[a.selectedApp].IntervalId=c)}function x(){if(a.interval.intType=a.route.Applications[a.selectedApp].IntervalId?"list":"*,*,*,*"===a.route.Applications[a.selectedApp].interval?"always":"custom",a.interval.IntervalId=a.route.Applications[a.selectedApp].IntervalId,!a.route.Applications[a.selectedApp].IntervalId){var b,c=a.route.Applications[a.selectedApp].interval?a.route.Applications[a.selectedApp].interval.split(","):["*","*","*","*"];c.forEach(function(c,d){switch(d){case 0:"*"!==c?(b=c.split("-"),a.interval.t_from=moment(b[0],"HH:mm"),a.interval.t_to=moment(b[1],"HH:mm"),a.interval.alwaysTime=!1):(a.interval.t_from=moment(new Date),a.interval.t_to=moment(new Date),a.interval.alwaysTime=!0);break;case 1:"*"!==c?(b=c.split("-"),a.interval.wd_from=b[0],a.interval.wd_to=b[1]?b[1]:"always"):(a.interval.wd_from="always",a.interval.wd_to="always");break;case 2:"*"!==c?(b=c.split("-"),a.interval.md_from=b[0],a.interval.md_to=b[1]?b[1]:"always"):(a.interval.md_from="always",a.interval.md_to="always");break;case 3:"*"!==c?(b=c.split("-"),a.interval.m_from=b[0],a.interval.m_to=b[1]?b[1]:"always"):(a.interval.m_from="always",a.interval.m_to="always")}})}}a.alwaysSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.$translate=b,a.selectedApp=void 0,a.showGrid=!0,a.$application=i.application,a.$interval=j.interval,a.selectedRows=[],a._=_,a.gridOptions={enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableSorting:!1,rowTemplate:'<div grid="grid" class="ui-grid-draggable-row" draggable="true"><div ng-repeat="(colRenderIndex, col) in colContainer.renderedColumns track by col.colDef.name" class="ui-grid-cell" ng-class="{ \'ui-grid-row-header-cell\': col.isRowHeader, \'custom\': true }" ui-grid-cell></div></div>',columnDefs:[{name:"app",headerCellFilter:"translate",displayName:"APPLICATION_APPLICATION",enableColumnMenu:!1},{name:"appType",headerCellFilter:"translate",displayName:"APPLICATION_INFO",cellClass:"ui-grid-vcenter",cellTemplate:"<div>{{'APPLICATION_APPS_'+(row.entity.appType || (grid.appScope._.find(grid.appScope.$application.applications,{value:row.entity.app}) ? row.entity.app : 'custom')).toUpperCase() | translate}}</div>",enableColumnMenu:!1},{name:"appdata",headerCellFilter:"translate",displayName:"APPLICATION_ARGUMENTS",cellClass:"ui-grid-vcenter",cellTemplate:"<div>{{row.entity.appdata.join(',')}}</div>",enableColumnMenu:!1},{name:"interval",headerCellFilter:"translate",displayName:"APPLICATION_TIME_INTERVAL",enableColumnMenu:!1},{name:"action",enableColumnMenu:!1,headerCellFilter:"translate",displayName:"APPLICATION_ACTION",width:125,cellClass:"ui-grid-vcenter",cellTemplate:'<div><a class="btn btn-xs blue-hoki" data-ng-click="grid.appScope.openApplication(grid.appScope.gridOptions.data.indexOf(row.entity))"><i class="icon-settings"></i></a><a class="btn btn-xs red-sunglo" data-ng-click="grid.appScope.deleteApp(row.entity.app+\' application\', grid.appScope.gridOptions.data.indexOf(row.entity))"><i class="fa fa-trash"></i></a></div>'}],onRegisterApi:function(b){b.selection.on.rowSelectionChanged(a,function(b){b.isSelected?a.selectedRows.push(b.entity):_.pull(a.selectedRows,b.entity)}),b.selection.on.rowSelectionChangedBatch(a,function(b){b[0].isSelected?a.selectedRows=_.map(b,"entity"):a.selectedRows=[]}),b.draggableRows.on.rowDropped(a,function(b,c){a.updateRoute()}),b.grid.registerDataChangeCallback(function(){y(a.gridOptions.data.length)})}};var y=function(a){var b=a?30*a+120:177;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px")};a.initApplication=function(b){b&&(a.selectedApp=void 0),a.forms={settings:void 0,interval:void 0},a.application={},a.interval={intType:"always",t_from:moment(new Date),t_to:moment(new Date),wd_from:"always",wd_to:"always",md_from:"always",md_to:"always",m_from:"always",m_to:"always",alwaysTime:!0},a.main={app:""}},a.$watch("interval",function(a){a&&w(a)},!0),a.updateSetAppdata=function(){a.application.variable&&a.application.value&&"Set"===a.main.app.value?a.application.appdata[0]=a.application.variable+"="+a.application.value:a.application.appdata[0]=null; -},a.updateSetAppdataSettings=function(){a.application.variable&&a.application.value&&"Set"===a.main.app.value?a.route.Applications[a.selectedApp].appdata[0]=a.application.variable+"="+a.application.value:a.route.Applications[a.selectedApp].appdata[0]=null},a.updateVideoOnAppdata=function(){a.application.domain&&a.application.theme&&"Set"===a.main.app.value&&"videoOn"===a.main.app.type?a.application.appdata[0]="_xcally_motion_video_room_id=https://"+a.application.domain+"/split_agent_popup.php?theme="+a.application.theme+"&room=${SIP_HEADER(X-Split-Id)}":a.application.appdata[0]=null},a.updateVideoOnAppdataSettings=function(){a.application.domain&&a.application.theme&&"Set"===a.main.app.value&&"videoOn"===a.main.app.type?a.route.Applications[a.selectedApp].appdata[0]="_xcally_motion_video_room_id=https://"+a.application.domain+"/split_agent_popup.php?theme="+a.application.theme+"&room=${SIP_HEADER(X-Split-Id)}":a.route.Applications[a.selectedApp].appdata[0]=null},a.$watch("main.app",function(b){if(b){var c,d,e={},f={};switch(void 0===a.selectedApp&&(a.application={appType:b.type,app:b.value,interval:a.application.interval||"*,*,*,*",appdata:[]}),b.value){case"Queue":c=l,d=m;break;case"Playback":c=m;break;case"AGI":c=n;break;case"Goto":c=o;break;case"Voicemail":c=q;break;case"Dial":switch(b.type){case"internalDial":c=r,e={controller:"all"};break;case"externalDial":c=u}}if(c)return c.get(e).$promise.then(function(b){a.items=b.rows}).then(function(){return d?d.get(f).$promise:void 0}).then(function(b){b&&(a.items2=b.rows)})["catch"](function(a){h.error(a)})}},!0),a.deselectAndRedirect=function(b){a.selectedApp=void 0,e.path(b)},a.initRingGroup=function(){var b,c,d;return void 0===a.selectedApp?a.usersArray=[]:a.usersArray=_.map(a.route.Applications[a.selectedApp].appdata[0].split("&"),function(a){return a.split("/")[1]}),r.get().$promise.then(function(a){return b=a,s.get().$promise}).then(function(a){return c=a,t.get().$promise}).then(function(e){d=e,ComponentsDropdowns.bindUserByRole(b,c,d,function(b){a.usersArray=_.union(b,a.usersArray),void 0===a.selectedApp?(a.application.appdata[0]=null,a.application.appdata[0]=_.map(a.usersArray,function(a){return"SIP/"+a}).join("&")):(a.route.Applications[a.selectedApp].appdata[0]=null,a.route.Applications[a.selectedApp].appdata[0]=_.map(a.usersArray,function(a){return"SIP/"+a}).join("&"))},function(b){a.usersArray=_.difference(a.usersArray,b),void 0===a.selectedApp?(a.application.appdata[0]=null,a.application.appdata[0]=_.map(a.usersArray,function(a){return"SIP/"+a}).join("&")):(a.route.Applications[a.selectedApp].appdata[0]=null,a.route.Applications[a.selectedApp].appdata[0]=_.map(a.usersArray,function(a){return"SIP/"+a}).join("&"))},a.route.Applications[a.selectedApp]?a.route.Applications[a.selectedApp].appdata:null)})["catch"](function(a){console.error(a)})},a.getIntervals=function(){return p.get().$promise.then(function(b){a.Intervals=b.rows,d.syncUpdates("interval",a.Intervals)})["catch"](function(a){h.error(a)})},a.getRoute=function(){return k.get({id:c.id}).$promise.then(function(b){a.route=b,a.gridOptions.data=b.Applications,y(a.gridOptions.data.length)})["catch"](function(a){e.path("/channels/voice/routes/inbound/list")})},a.getApplication=function(){if(void 0===a.selectedApp)e.path("/channels/voice/routes/inbound/list");else{if(a.showGrid=!0,a.route.Applications[a.selectedApp].appType)a.main.app=_.find(a.$application.applications,{type:a.route.Applications[a.selectedApp].appType});else{var b=_.find(a.$application.applications,{value:a.route.Applications[a.selectedApp].app});if(b)a.main.app=b;else{a.main.app=_.find(a.$application.applications,{type:"custom"});var c=a.route.Applications[a.selectedApp].appdata.join(",");a.route.Applications[a.selectedApp].appdata=[c],a.route.Applications[a.selectedApp].appType="custom"}}if("Set"===a.main.app.value&&!a.main.app.type){var d=a.route.Applications[a.selectedApp].appdata[0].split("=");a.application.variable=d[0],a.application.value=d[1]}if("Set"===a.main.app.value&&"videoOn"===a.main.app.type){var f=new Url(a.route.Applications[a.selectedApp].appdata[0].split("=").slice(1).join("="));a.application.domain=f.host+(f.port?":"+f.port:""),a.application.theme=f.query.theme}x()}},a.openApplication=function(b){a.selectedApp=b,a.showGrid=!1,e.path("/channels/voice/routes/inbound/view/"+c.id+"/applications/settings")},a.updateRoute=function(d){return a.route.exten=a.$application.checkUnderscore(a.route.exten),_.forEach(a.route.Applications,function(a){if("custom"!==a.appType)switch(a.app){case"Dial":var b;switch(a.appType){case"externalDial":b=3;break;case"internalDial":b=2;break;default:b=2}a.appdata[b]=a.appdata[b]||"",a.appdata[b]+=(_.includes(a.appdata[b],"x")?"":"x")+(_.includes(a.appdata[b],"X")?"":"X");break;case"Queue":a.appdata[1]=a.appdata[1]||"",a.appdata[1]+=(_.includes(a.appdata[1],"x")?"":"x")+(_.includes(a.appdata[1],"X")?"":"X")}}),k.update({id:a.route.id},a.route).$promise.then(function(f){a.selectedApp=void 0,h.show(b.instant("MESSAGE_WELL_DONE")+"!","success"),d&&e.path("/channels/voice/routes/inbound/view/"+c.id+"/"+d)})["catch"](function(a){console.log(a),h.error(a)})},a.getContexts=function(){return o.get().$promise.then(function(b){a.voiceContexts=b.rows,d.syncUpdates("voice_context",a.voiceContexts)})["catch"](function(a){h.error(a)})},a.deleteApp=g.confirm["delete"](function(b){a.route.Applications.splice(b,1),a.updateRoute()}),a.deleteItems=g.confirm["delete"](function(){_.remove(a.route.Applications,function(b){return _.includes(a.selectedRows,b)}),a.selectedRows=[],a.updateRoute()}),a.addApplication=function(){a.route.Applications.push(a.application),a.updateRoute("applications")},a.goNext=function(){f.wizard().next()},a.previous=function(){f.wizard().previous()},a.formValidation=function(a){return a},a.$on("destroy",function(){d.unsyncUpdates("voice_extension")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.routes.inbound.view",{url:"/view/:id",templateUrl:"app/channels/voice/route/inbound/view/view.html",controller:"VoiceRouteInboundViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.voice.routes.inbound.view.settings",{url:"/settings",templateUrl:"app/channels/voice/route/inbound/view/view.settings.html"}).state("main.channels.voice.routes.inbound.view.applications",{url:"/applications",templateUrl:"app/channels/voice/route/inbound/view/view.applications.html"}).state("main.channels.voice.routes.inbound.view.application",{url:"/application",templateUrl:"app/channels/voice/route/view.application.html",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}}).state("main.channels.voice.routes.inbound.view.applications.settings",{url:"/settings",templateUrl:"app/channels/voice/route/view.applicationSettings.html",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.routes.internal",{url:"/internal",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("VoiceRouteInternalListCreateCtrl",["$scope","$uibModalInstance","Route","application","$location","$translate","xAlert","VoiceContext","socket",function(a,b,c,d,e,f,g,h,i){a.$application=d.application,a.forms={route:void 0},a.getContexts=function(){return h.get().$promise.then(function(b){a.voiceContexts=b.rows,i.syncUpdates("voice_context",a.voiceContexts)})["catch"](function(a){g.error(a)})},a.item={type:"internal",appdata:"Internal Call from ${CALLERID(num)}",context:"from-sip"},a.ok=function(){return a.item.exten=a.$application.checkUnderscore(a.item.exten),c.save(a.item).$promise.then(function(a){b.close(a),e.path("/channels/voice/routes/internal/view/"+a.id+"/applications")})["catch"](function(a){g.error(a)})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("VoiceRouteInternalListCtrl",["$scope","$http","socket","$translate","$rootScope","xAlert","Modal","stResource","gridOptions","Route","$uibModal","$location","$log",function(a,b,c,d,e,f,g,h,i,j,k,l,m){a.initView=function(){var b={exporterCsvFilename:"InternalRoutes.csv",columnDefs:[{name:"exten",displayName:"APPLICATION_PHONE_NUMBER"},{name:"description"},{name:"applications",cellClass:"ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.Applications.length"><span data-ng-repeat="app in row.entity.Applications | limitTo:2">{{app.app}}({{app.appdata[0]}}),</span>...</div><div data-ng-if="!row.entity.Applications.length">{{\'MESSAGE_NO_AVAILABLE_APPLICATIONS\' | translate}}</div>',enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/channels/voice/routes/internal/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.exten, row.entity.id)"}]}]};a.gridOptions=i.gridOptions(j,b,a,{type:"internal"})},a.create=function(){k.open({animation:!0,templateUrl:"app/channels/voice/route/internal/list/create.modal.html",controller:"VoiceRouteInternalListCreateCtrl"})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.routes.internal.list",{url:"/list",templateUrl:"app/channels/voice/route/internal/list/list.html",controller:"VoiceRouteInternalListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("VoiceRouteInternalViewCtrl",["$scope","$translate","$stateParams","socket","$location","WizardHandler","Modal","xAlert","application","interval","Route","VoiceQueue","Sound","SquareProject","VoiceContext","Interval","VoiceMail","User","Agent","Telephone","Trunk",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u){function v(b){var c,d;if("always"===b.intType)c=null,d="*,*,*,*";else if("list"===b.intType)d=b.IntervalId?_.find(a.Intervals,{id:b.IntervalId}).name:"*,*,*,*",c=b.IntervalId||null;else if("custom"===b.intType){c=null;var e,f,g,h;e=b.t_from&&b.t_to&&!b.alwaysTime?moment(b.t_from).format("HH:mm")+"-"+moment(b.t_to).format("HH:mm"):"*",b.wd_from&&"always"!==b.wd_from?(f=b.wd_from,b.wd_to&&"always"!==b.wd_to&&(f+="-"+b.wd_to)):f="*",b.md_from&&"always"!==b.md_from?(g=b.md_from,b.md_to&&"always"!==b.md_to&&(g+="-"+b.md_to)):g="*",b.m_from&&"always"!==b.m_from?(h=b.m_from,b.m_to&&"always"!==b.m_to&&(h+="-"+b.m_to)):h="*",d=e+","+f+","+g+","+h}void 0===a.selectedApp?(a.application.interval=d,a.application.IntervalId=c):(a.route.Applications[a.selectedApp].interval=d,a.route.Applications[a.selectedApp].IntervalId=c)}function w(){if(a.interval.intType=a.route.Applications[a.selectedApp].IntervalId?"list":"*,*,*,*"===a.route.Applications[a.selectedApp].interval?"always":"custom",a.interval.IntervalId=a.route.Applications[a.selectedApp].IntervalId,!a.route.Applications[a.selectedApp].IntervalId){var b,c=a.route.Applications[a.selectedApp].interval?a.route.Applications[a.selectedApp].interval.split(","):["*","*","*","*"];c.forEach(function(c,d){switch(d){case 0:"*"!==c?(b=c.split("-"),a.interval.t_from=moment(b[0],"HH:mm"),a.interval.t_to=moment(b[1],"HH:mm"),a.interval.alwaysTime=!1):(a.interval.t_from=moment(new Date),a.interval.t_to=moment(new Date),a.interval.alwaysTime=!0);break;case 1:"*"!==c?(b=c.split("-"),a.interval.wd_from=b[0],a.interval.wd_to=b[1]?b[1]:"always"):(a.interval.wd_from="always",a.interval.wd_to="always");break;case 2:"*"!==c?(b=c.split("-"),a.interval.md_from=b[0],a.interval.md_to=b[1]?b[1]:"always"):(a.interval.md_from="always",a.interval.md_to="always");break;case 3:"*"!==c?(b=c.split("-"),a.interval.m_from=b[0],a.interval.m_to=b[1]?b[1]:"always"):(a.interval.m_from="always",a.interval.m_to="always")}})}}a.alwaysSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.$translate=b,a.selectedApp=void 0,a.showGrid=!0,a.$application=angular.copy(i.application),_.remove(a.$application.applications,{value:"videoOn"}),a.$interval=j.interval,a._=_,a.selectedRows=[],a.gridOptions={enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableSorting:!1,rowTemplate:'<div grid="grid" class="ui-grid-draggable-row" draggable="true"><div ng-repeat="(colRenderIndex, col) in colContainer.renderedColumns track by col.colDef.name" class="ui-grid-cell" ng-class="{ \'ui-grid-row-header-cell\': col.isRowHeader, \'custom\': true }" ui-grid-cell></div></div>',columnDefs:[{name:"app",headerCellFilter:"translate",displayName:"APPLICATION_APPLICATION",enableColumnMenu:!1},{name:"appType",headerCellFilter:"translate",displayName:"APPLICATION_INFO",cellClass:"ui-grid-vcenter",cellTemplate:"<div>{{'APPLICATION_APPS_'+(row.entity.appType || (grid.appScope._.find(grid.appScope.$application.applications,{value:row.entity.app}) ? row.entity.app : 'custom')).toUpperCase() | translate}}</div>",enableColumnMenu:!1},{name:"appdata",headerCellFilter:"translate",displayName:"APPLICATION_ARGUMENTS",cellClass:"ui-grid-vcenter",cellTemplate:"<div>{{row.entity.appdata.join(',')}}</div>",enableColumnMenu:!1},{name:"interval",headerCellFilter:"translate",displayName:"APPLICATION_TIME_INTERVAL",enableColumnMenu:!1},{name:"action",enableColumnMenu:!1,headerCellFilter:"translate",displayName:"APPLICATION_ACTION",width:125,cellClass:"ui-grid-vcenter",cellTemplate:'<div><a class="btn btn-xs blue-hoki" data-ng-click="grid.appScope.openApplication(grid.appScope.gridOptions.data.indexOf(row.entity))"><i class="icon-settings"></i></a><a class="btn btn-xs red-sunglo" data-ng-click="grid.appScope.deleteApp(row.entity.app+\' application\', grid.appScope.gridOptions.data.indexOf(row.entity))"><i class="fa fa-trash"></i></a></div>'}],onRegisterApi:function(b){b.selection.on.rowSelectionChanged(a,function(b){b.isSelected?a.selectedRows.push(b.entity):_.pull(a.selectedRows,b.entity)}),b.selection.on.rowSelectionChangedBatch(a,function(b){b[0].isSelected?a.selectedRows=_.map(b,"entity"):a.selectedRows=[]}),b.draggableRows.on.rowDropped(a,function(b,c){a.updateRoute()}),b.grid.registerDataChangeCallback(function(){x(a.gridOptions.data.length)})}},a.deleteItems=g.confirm["delete"](function(){_.remove(a.route.Applications,function(b){return _.includes(a.selectedRows,b)}),a.selectedRows=[],a.updateRoute()}),a.initRingGroup=function(){var b,c,d;return void 0===a.selectedApp?a.usersArray=[]:a.usersArray=_.map(a.route.Applications[a.selectedApp].appdata[0].split("&"),function(a){return a.split("/")[1]}),r.get().$promise.then(function(a){return b=a,s.get().$promise}).then(function(a){return c=a,t.get().$promise}).then(function(e){d=e,ComponentsDropdowns.bindUserByRole(b,c,d,function(b){a.usersArray=_.union(b,a.usersArray),void 0===a.selectedApp?(a.application.appdata[0]=null,a.application.appdata[0]=_.map(a.usersArray,function(a){return"SIP/"+a}).join("&")):(a.route.Applications[a.selectedApp].appdata[0]=null,a.route.Applications[a.selectedApp].appdata[0]=_.map(a.usersArray,function(a){return"SIP/"+a}).join("&"))},function(b){a.usersArray=_.difference(a.usersArray,b),void 0===a.selectedApp?(a.application.appdata[0]=null,a.application.appdata[0]=_.map(a.usersArray,function(a){return"SIP/"+a}).join("&")):(a.route.Applications[a.selectedApp].appdata[0]=null,a.route.Applications[a.selectedApp].appdata[0]=_.map(a.usersArray,function(a){return"SIP/"+a}).join("&"))},a.route.Applications[a.selectedApp]?a.route.Applications[a.selectedApp].appdata:null)})["catch"](function(a){console.error(a)})};var x=function(a){var b=a?30*a+120:177;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px")};a.initApplication=function(b){b&&(a.selectedApp=void 0),a.forms={settings:void 0,interval:void 0},a.application={},a.interval={intType:"always",t_from:moment(new Date),t_to:moment(new Date),wd_from:"always",wd_to:"always",md_from:"always",md_to:"always",m_from:"always",m_to:"always",alwaysTime:!0},a.main={app:""}},a.$watch("interval",function(a){a&&v(a)},!0),a.updateSetAppdata=function(){a.application.variable&&a.application.value&&"Set"===a.main.app.value?a.application.appdata[0]=a.application.variable+"="+a.application.value:a.application.appdata[0]=null},a.updateSetAppdataSettings=function(){a.application.variable&&a.application.value&&"Set"===a.main.app.value?a.route.Applications[a.selectedApp].appdata[0]=a.application.variable+"="+a.application.value:a.application.appdata[0]=null},a.$watch("main.app",function(b){if(b){var c,d,e={},f={};switch(void 0===a.selectedApp&&(a.application={appType:b.type,app:b.value,interval:a.application.interval||"*,*,*,*",appdata:[]}),b.value){case"Queue":c=l,d=m;break;case"Playback":c=m;break;case"AGI":c=n;break;case"Goto":c=o;break;case"Voicemail":c=q;break;case"Dial":switch(b.type){case"internalDial":c=r,e={controller:"all"};break;case"externalDial":c=u}}if(c)return c.get(e).$promise.then(function(b){a.items=b.rows}).then(function(){return d?d.get(f).$promise:void 0}).then(function(b){b&&(a.items2=b.rows)})["catch"](function(a){h.error(a)})}},!0),a.deselectAndRedirect=function(b){a.selectedApp=void 0,e.path(b)},a.getIntervals=function(){return p.get().$promise.then(function(b){a.Intervals=b.rows,d.syncUpdates("interval",a.Intervals)})["catch"](function(a){h.error(a)})},a.getRoute=function(){return k.get({id:c.id}).$promise.then(function(b){a.route=b,a.gridOptions.data=b.Applications,x(a.gridOptions.data.length)})["catch"](function(a){e.path("/channels/voice/routes/internal/list")})},a.getApplication=function(){if(void 0===a.selectedApp)e.path("/channels/voice/routes/internal/list");else{if(a.showGrid=!0,a.route.Applications[a.selectedApp].appType)a.main.app=_.find(a.$application.applications,{type:a.route.Applications[a.selectedApp].appType});else{var b=_.find(a.$application.applications,{value:a.route.Applications[a.selectedApp].app});if(b)a.main.app=b;else{a.main.app=_.find(a.$application.applications,{type:"custom"});var c=a.route.Applications[a.selectedApp].appdata.join(",");a.route.Applications[a.selectedApp].appdata=[c],a.route.Applications[a.selectedApp].appType="custom"}}if("Set"===a.main.app.value){var d=a.route.Applications[a.selectedApp].appdata[0].split("=");a.application.variable=d[0],a.application.value=d[1]}w()}},a.openApplication=function(b){a.selectedApp=b,a.showGrid=!1,e.path("/channels/voice/routes/internal/view/"+c.id+"/applications/settings")},a.updateRoute=function(d){return a.route.exten=a.$application.checkUnderscore(a.route.exten),_.forEach(a.route.Applications,function(a){if("custom"!==a.appType)switch(a.app){case"Dial":var b;switch(a.appType){case"externalDial":b=3;break;case"internalDial":b=2;break;default:b=2}a.appdata[b]=a.appdata[b]||"",a.appdata[b]+=(_.includes(a.appdata[b],"x")?"":"x")+(_.includes(a.appdata[b],"X")?"":"X");break;case"Queue":a.appdata[1]=a.appdata[1]||"",a.appdata[1]+=(_.includes(a.appdata[1],"x")?"":"x")+(_.includes(a.appdata[1],"X")?"":"X")}}),k.update({id:a.route.id},a.route).$promise.then(function(f){a.selectedApp=void 0,h.show(b.instant("MESSAGE_WELL_DONE")+"!","success"),d&&e.path("/channels/voice/routes/internal/view/"+c.id+"/"+d)})["catch"](function(a){h.error(a)})},a.getContexts=function(){return o.get().$promise.then(function(b){a.voiceContexts=b.rows,d.syncUpdates("voice_context",a.voiceContexts)})["catch"](function(a){h.error(a)})},a.deleteApp=g.confirm["delete"](function(b){a.route.Applications.splice(b,1),a.updateRoute()}),a.addApplication=function(){a.route.Applications.push(a.application),a.updateRoute("applications")},a.goNext=function(){f.wizard().next()},a.previous=function(){f.wizard().previous()},a.formValidation=function(a){return a},a.$on("destroy",function(){d.unsyncUpdates("voice_extension")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.routes.internal.view",{url:"/view/:id",templateUrl:"app/channels/voice/route/internal/view/view.html",controller:"VoiceRouteInternalViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.voice.routes.internal.view.settings",{url:"/settings",templateUrl:"app/channels/voice/route/internal/view/view.settings.html"}).state("main.channels.voice.routes.internal.view.applications",{url:"/applications",templateUrl:"app/channels/voice/route/internal/view/view.applications.html"}).state("main.channels.voice.routes.internal.view.application",{url:"/application",templateUrl:"app/channels/voice/route/view.application.html",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}}).state("main.channels.voice.routes.internal.view.applications.settings",{url:"/settings",templateUrl:"app/channels/voice/route/view.applicationSettings.html",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}})}]),angular.module("xCallyShuttleApp").controller("VoiceRouteOutboundListCreateCtrl",["$scope","$uibModalInstance","Route","application","xAlert","$translate","$location","Tag","VoiceContext","socket",function(a,b,c,d,e,f,g,h,i,j){a.$application=d.application,a.forms={route:void 0},a.getContexts=function(){return i.get().$promise.then(function(b){a.voiceContexts=b.rows,j.syncUpdates("voice_context",a.voiceContexts)})["catch"](function(a){e.error(a)})},a.item={type:"outbound",appdata:"Outbound Call to ${CALLERID(dnid)}",context:"from-sip"},a.getTags=function(){return h.get().$promise.then(function(b){b.rows.unshift({name:"--"}),a.tags=b.rows})["catch"](function(a){e.error(a)})},a.ok=function(){return a.item.exten=a.$application.checkUnderscore(a.item.exten),c.save(a.item).$promise.then(function(a){b.close(a),g.path("/channels/voice/routes/outbound/view/"+a.id+"/routes")})["catch"](function(a){e.error(a)})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("VoiceRouteOutboundListCtrl",["$scope","$http","socket","$translate","$rootScope","xAlert","Modal","stResource","gridOptions","Route","$uibModal","$location","$log",function(a,b,c,d,e,f,g,h,i,j,k,l,m){a.initView=function(){var b={exporterCsvFilename:"OutboundRoutes.csv",columnDefs:[{name:"exten",displayName:"APPLICATION_DESTINATION_PATTERN"},{name:"description"},{name:"applications",cellClass:"ui-grid-vcenter",cellTemplate:'<div data-ng-if="row.entity.Applications.length"><span data-ng-repeat="app in row.entity.Applications | limitTo:2">{{app.app}}({{app.appdata[0]}}),</span>...</div><div data-ng-if="!row.entity.Applications.length">{{\'MESSAGE_NO_AVAILABLE_APPLICATIONS\' | translate}}</div>',enableSorting:!1,enableFiltering:!1,enableColumnMenu:!1},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/channels/voice/routes/outbound/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.exten, row.entity.id)"}]}]};a.gridOptions=i.gridOptions(j,b,a,{type:"outbound"})},a.create=function(){k.open({animation:!0,templateUrl:"app/channels/voice/route/outbound/list/create.modal.html",controller:"VoiceRouteOutboundListCreateCtrl"})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.routes.outbound.list",{url:"/list",templateUrl:"app/channels/voice/route/outbound/list/list.html",controller:"VoiceRouteOutboundListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.routes.outbound",{url:"/outbound",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("VoiceRouteOutboundViewCtrl",["$scope","xAlert","$translate","$stateParams","socket","$location","WizardHandler","Modal","application","interval","Route","Trunk","VoiceContext","Interval","Tag",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){function p(b){var c,d;if("always"===b.intType)c=null,d="*,*,*,*";else if("list"===b.intType)d=b.IntervalId?_.find(a.Intervals,{id:b.IntervalId}).name:"*,*,*,*",c=b.IntervalId||null;else if("custom"===b.intType){c=null;var e,f,g,h;e=b.t_from&&b.t_to&&!b.alwaysTime?moment(b.t_from).format("HH:mm")+"-"+moment(b.t_to).format("HH:mm"):"*",b.wd_from&&"always"!==b.wd_from?(f=b.wd_from,b.wd_to&&"always"!==b.wd_to&&(f+="-"+b.wd_to)):f="*",b.md_from&&"always"!==b.md_from?(g=b.md_from,b.md_to&&"always"!==b.md_to&&(g+="-"+b.md_to)):g="*",b.m_from&&"always"!==b.m_from?(h=b.m_from,b.m_to&&"always"!==b.m_to&&(h+="-"+b.m_to)):h="*",d=e+","+f+","+g+","+h}void 0===a.selectedApp?(a.application.interval=d,a.application.IntervalId=c):(a.route.Applications[a.selectedApp].interval=d,a.route.Applications[a.selectedApp].IntervalId=c)}function q(){if(a.interval.intType=a.route.Applications[a.selectedApp].IntervalId?"list":"*,*,*,*"===a.route.Applications[a.selectedApp].interval?"always":"custom",a.interval.IntervalId=a.route.Applications[a.selectedApp].IntervalId,!a.route.Applications[a.selectedApp].IntervalId){var b,c=a.route.Applications[a.selectedApp].interval?a.route.Applications[a.selectedApp].interval.split(","):["*","*","*","*"];c.forEach(function(c,d){switch(d){case 0:"*"!==c?(b=c.split("-"),a.interval.t_from=moment(b[0],"HH:mm"),a.interval.t_to=moment(b[1],"HH:mm"),a.interval.alwaysTime=!1):(a.interval.t_from=moment(new Date),a.interval.t_to=moment(new Date),a.interval.alwaysTime=!0);break;case 1:"*"!==c?(b=c.split("-"),a.interval.wd_from=b[0],a.interval.wd_to=b[1]?b[1]:"always"):(a.interval.wd_from="always",a.interval.wd_to="always");break;case 2:"*"!==c?(b=c.split("-"),a.interval.md_from=b[0],a.interval.md_to=b[1]?b[1]:"always"):(a.interval.md_from="always",a.interval.md_to="always");break;case 3:"*"!==c?(b=c.split("-"),a.interval.m_from=b[0],a.interval.m_to=b[1]?b[1]:"always"):(a.interval.m_from="always",a.interval.m_to="always")}})}}a.$translate=c,a.selectedApp=void 0,a.showGrid=!0,a.$application=i.application,a.$interval=j.interval,a._=_,a.recordSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.alwaysSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.selectedRows=[],a.gridOptions={enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableSorting:!1,rowTemplate:'<div grid="grid" class="ui-grid-draggable-row" draggable="true"><div ng-repeat="(colRenderIndex, col) in colContainer.renderedColumns track by col.colDef.name" class="ui-grid-cell" ng-class="{ \'ui-grid-row-header-cell\': col.isRowHeader, \'custom\': true }" ui-grid-cell></div></div>',columnDefs:[{name:"app",displayName:"APPLICATION_APPLICATION",cellClass:"ui-grid-vcenter",cellTemplate:"<div><span data-ng-if=\"row.entity.appType === 'externalDial'\">Default</span><span data-ng-if=\"row.entity.appType !== 'externalDial'\">{{row.entity.app}}</span></div>",headerCellFilter:"translate",enableColumnMenu:!1},{name:"appType",headerCellFilter:"translate",displayName:"APPLICATION_INFO",cellClass:"ui-grid-vcenter",cellTemplate:"<div>{{'APPLICATION_APPS_'+(row.entity.appType || (grid.appScope._.find(grid.appScope.$application.applications,{value:row.entity.app}) ? row.entity.app : 'custom')).toUpperCase() | translate}}</div>",enableColumnMenu:!1},{name:"appdata",displayName:"APPLICATION_ARGUMENTS",headerCellFilter:"translate",cellClass:"ui-grid-vcenter",cellTemplate:"<div>{{row.entity.appdata.join(',')}}</div>",enableColumnMenu:!1},{name:"interval",displayName:"APPLICATION_TIME_INTERVAL",headerCellFilter:"translate",enableColumnMenu:!1},{name:"action",displayName:"APPLICATION_ACTION",headerCellFilter:"translate",width:125,enableColumnMenu:!1,cellClass:"ui-grid-vcenter",cellTemplate:'<div><a class="btn btn-xs blue-hoki" data-ng-click="grid.appScope.openApplication(grid.appScope.gridOptions.data.indexOf(row.entity))"><i class="icon-settings"></i></a><a class="btn btn-xs red-sunglo" data-ng-click="grid.appScope.deleteApp(row.entity.app+\' application\', grid.appScope.gridOptions.data.indexOf(row.entity))"><i class="fa fa-trash"></i></a></div>'}],onRegisterApi:function(b){b.selection.on.rowSelectionChanged(a,function(b){b.isSelected?a.selectedRows.push(b.entity):_.pull(a.selectedRows,b.entity)}),b.selection.on.rowSelectionChangedBatch(a,function(b){b[0].isSelected?a.selectedRows=_.map(b,"entity"):a.selectedRows=[]}),b.draggableRows.on.rowDropped(a,function(b,c){a.updateRoute()}),b.grid.registerDataChangeCallback(function(){r(a.gridOptions.data.length)})}},a.deleteItems=h.confirm["delete"](function(){_.remove(a.route.Applications,function(b){return _.includes(a.selectedRows,b)}),a.selectedRows=[],a.updateRoute()});var r=function(a){var b=a?30*a+120:177;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px")};a.initApplication=function(b){b&&(a.selectedApp=void 0),a.forms={info:void 0,interval:void 0},a.application={},a.interval={intType:"always",t_from:moment(new Date),t_to:moment(new Date),wd_from:"always",wd_to:"always",md_from:"always",md_to:"always",m_from:"always",m_to:"always",alwaysTime:!0},a.main={app:""},a.applications=[{name:"Default",value:"Dial",type:"outboundDial"},{name:"Custom",value:"custom",type:"custom"}]},a.$watch("interval",function(a){a&&p(a)},!0),a.$watch("main.app",function(c){if(c){var d,e;switch(void 0===a.selectedApp&&(a.application={appType:c.type,app:c.value,interval:a.application.interval||"*,*,*,*",appdata:[]}),c.value){case"Dial":d=l;break;default:d=null,e=null}if(d)return d.get().$promise.then(function(b){a.items=b.rows}).then(function(){return e?e.get().$promise:void 0}).then(function(b){b&&(a.items2=b.rows)})["catch"](function(a){b.error(a)})}},!0),a.deselectAndRedirect=function(b){a.selectedApp=void 0,f.path(b)},a.getIntervals=function(){return n.get().$promise.then(function(b){a.Intervals=b.rows,e.syncUpdates("interval",a.Intervals)})["catch"](function(a){b.error(a)})},a.getRoute=function(){return k.get({id:d.id}).$promise.then(function(b){a.route=b,a.gridOptions.data=b.Applications,r(a.gridOptions.data.length)})["catch"](function(a){f.path("/channels/voice/routes/outbound/list")})},a.getApplication=function(){if(void 0===a.selectedApp)f.path("/channels/voice/routes/outbound/list");else{if(a.showGrid=!0,a.route.Applications[a.selectedApp].appType)a.main.app=_.find(a.applications,{type:a.route.Applications[a.selectedApp].appType});else{a.main.app=_.find(a.applications,{ -type:"custom"});var b=a.route.Applications[a.selectedApp].appdata.join(",");a.route.Applications[a.selectedApp].appdata=[b],a.route.Applications[a.selectedApp].appType="custom"}q()}},a.openApplication=function(b){a.selectedApp=b,a.showGrid=!1,f.path("/channels/voice/routes/outbound/view/"+d.id+"/routes/settings")},a.updateRoute=function(e){return a.route.exten=a.$application.checkUnderscore(a.route.exten),_.forEach(a.route.Applications,function(a){"outboundDial"===a.appType&&(a.appdata[4]=a.appdata[4]||"",a.appdata[4]+=(_.includes(a.appdata[4],"x")?"":"x")+(_.includes(a.appdata[4],"X")?"":"X"))}),k.update({id:a.route.id},a.route).$promise.then(function(g){a.selectedApp=void 0,b.show(c.instant("MESSAGE_WELL_DONE")+"!","success"),e&&f.path("/channels/voice/routes/outbound/view/"+d.id+"/"+e)})["catch"](function(a){b.error(a)})},a.getContexts=function(){return m.get().$promise.then(function(b){a.voiceContexts=b.rows,e.syncUpdates("voice_context",a.voiceContexts)})["catch"](function(a){b.error(a)})},a.getTags=function(){return o.get().$promise.then(function(b){b.rows.unshift({name:"--"}),a.tags=b.rows})["catch"](function(a){b.error(a)})},a.deleteApp=h.confirm["delete"](function(b){a.route.Applications.splice(b,1),a.updateRoute()}),a.addApplication=function(){a.route.Applications.push(a.application),a.updateRoute("routes")},a.goNext=function(){g.wizard().next()},a.previous=function(){g.wizard().previous()},a.formValidation=function(a){return a},a.$on("destroy",function(){e.unsyncUpdates("voice_extension")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.routes.outbound.view",{url:"/view/:id",templateUrl:"app/channels/voice/route/outbound/view/view.html",controller:"VoiceRouteOutboundViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.voice.routes.outbound.view.settings",{url:"/settings",templateUrl:"app/channels/voice/route/outbound/view/view.settings.html"}).state("main.channels.voice.routes.outbound.view.routes",{url:"/routes",templateUrl:"app/channels/voice/route/outbound/view/view.routes.html"}).state("main.channels.voice.routes.outbound.view.route",{url:"/route",templateUrl:"app/channels/voice/route/outbound/view/view.route.html"}).state("main.channels.voice.routes.outbound.view.routes.settings",{url:"/settings",templateUrl:"app/channels/voice/route/outbound/view/view.routeSettings.html"})}]),angular.module("xCallyShuttleApp").factory("Route",["$resource",function(a){return a("/api/voice/extensions/:id",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.routes",{url:"/routes",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:21}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice",{url:"/voice",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:7}}})}]),angular.module("xCallyShuttleApp").controller("VoiceVoicemailListCtrl",["$scope","VoiceMail","gridOptions",function(a,b,c){a.initView=function(){var d={exporterCsvFilename:"voice_mails.csv",primaryKey:"uniqueid",columnDefs:[{name:"mailbox"},{name:"fullname"},{name:"email"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/channels/voice/voicemails/view/{{row.entity.uniqueid}}/settings",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.mailbox, row.entity.uniqueid)"}]}]};a.gridOptions=c.gridOptions(b,d,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.voicemails.list",{url:"/list",templateUrl:"app/channels/voice/voicemail/list/list.html",controller:"VoiceVoicemailListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("VoiceVoicemailViewCtrl",["$scope","VoiceMail","VoiceMailMessage","VoiceContext","$http","xAlert","$translate","$stateParams","socket","$sce","Modal","$location","gridOptions","uiGridConstants",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){function o(){var b={exporterCsvFilename:"voice_mail_messages.csv",primaryKey:"id",columnDefs:[{name:"callerid"},{name:"stamp",displayName:"APPLICATION_DATE",cellClass:"ui-grid-vcenter",cellTemplate:"<div>{{grid.appScope.moment(row.entity.stamp).format('YYYY-MM-DD HH:mm:ss')}}</div>",sort:{direction:n.DESC,priority:0}},{name:"duration",cellClass:"ui-grid-vcenter",cellTemplate:"<div>{{row.entity.duration*1000 | date:'mm:ss'}}</div>"},{name:"audio",displayName:"",width:225,enableSorting:!1,enableFiltering:!1,buttons:[{directive:'<audio-file-download params="{id:row.entity.id,controller:\'download\'}" resource="grid.appScope.VoiceMailMessage"></audio-file-download>'}]},{name:"action",width:150,buttons:[{directive:'<motion-file-download params="{id:row.entity.id,controller:\'download\'}" resource="grid.appScope.VoiceMailMessage" mimetype="audio/wav" btnclass="btn btn-xs blue-hoki" filename="row.entity.msg_id+\'.wav\'"></motion-file-download>'},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.id, row.entity.id)"}]}]};a.gridOptions=m.gridOptions(c,b,a,{mailbox:a.voicemail.mailbox,context:a.voicemail.context})}a.moment=moment,a["switch"]={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.VoiceMailMessage=c,a.getVoicemail=function(){return b.get({id:h.uniqueid}).$promise.then(function(b){delete b.password,delete b.stamp,a.voicemail=b})["catch"](function(a){l.path("/voice/voicemails/list")})},a.updateVoiceVoicemail=function(){return b.update({id:h.uniqueid},a.voicemail).$promise.then(function(){f.show(g.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})},a.getContexts=function(){return d.get().$promise.then(function(b){a.voiceContexts=b.rows})["catch"](function(a){f.error(a)})},a.getMessages=function(){return a.voicemail?void o():b.get({id:h.uniqueid}).$promise.then(function(b){delete b.password,delete b.stamp,a.voicemail=b,o()})["catch"](function(a){l.path("/voice/voicemails/view/"+h.uniqueid+"/settings")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.voicemails.view",{url:"/view/:uniqueid",templateUrl:"app/channels/voice/voicemail/view/view.html",controller:"VoiceVoicemailViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.channels.voice.voicemails.view.settings",{url:"/settings",templateUrl:"app/channels/voice/voicemail/view/view.settings.html"}).state("main.channels.voice.voicemails.view.messages",{url:"/messages",templateUrl:"app/channels/voice/voicemail/view/view.messages.html"})}]),angular.module("xCallyShuttleApp").factory("VoiceMail",["$resource",function(a){return a("/api/voice/voicemails/:id/:controller",{uniqueid:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.voicemails",{url:"/voicemails",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:23}}})}]),angular.module("xCallyShuttleApp").factory("VoiceMailMessage",["$resource",function(a){return a("/api/voice/voicemails/messages/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("VoiceVoicemailWizardCtrl",["$scope","VoiceMail","xAlert","WizardHandler","$location","Setting",function(a,b,c,d,e,f){a.initWizard=function(){a.form={},a.item={context:"from-voicemail"}},a.next=function(){d.wizard().next()},a.previous=function(){d.wizard().previous()},a.exitValidation=function(a){return a},a.getFirstFreeMailbox=function(){f.get({controller:"mailbox"}).$promise.then(function(b){a.item.mailbox=b.value})["catch"](function(a){c.error(a)})},a.createItem=function(){return a.item.customer_id=a.item.mailbox,b.save(a.item).$promise.then(function(){e.path("/channels/voice/voicemails/list")})["catch"](function(a){c.error(data)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.channels.voice.voicemails.wizard",{url:"/wizard",templateUrl:"app/channels/voice/voicemail/wizard/wizard.html",controller:"VoiceVoicemailWizardCtrl"})}]),angular.module("xCallyShuttleApp").factory("VoiceQueue",["$resource",function(a){return a("/api/voice/queues/:id/:controller/:controller2",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("Company",["$resource",function(a){return a("/api/contactmanager/companies/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.contactmanager.companies",{url:"/companies",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:5}}})}]),angular.module("xCallyShuttleApp").controller("CompanyListCreateModalCtrl",["$scope","$uibModalInstance",function(a,b){a.forms={dashboard:void 0},a.item={},a.ok=function(){a.item.model=JSON.stringify({title:a.item.name}),b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("ContactManagerCompanyListCtrl",["$scope","$translate","xAlert","Modal","$uibModal","$log","Company","gridOptions","$location","$state",function(a,b,c,d,e,f,g,h,i,j){a.initView=function(){var b={exporterCsvFilename:"Companies.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:100,buttons:[{"class":"blue-hoki",name:"profile",href:"/contactmanager/companies/view/{{row.entity.id}}/settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"},{"class":"green-turquoise",name:"contacts",onClick:"grid.appScope.goToContacts(row.entity.id)"}]}]};a.gridOptions=h.gridOptions(g,b,a)},a.goToContacts=function(a){j.go("main.contactmanager.contacts.list",{companyId:a})},a.create=function(){var a=e.open({animation:!0,size:"lg",templateUrl:"app/contactmanager/company/list/create.modal.html",controller:"CompanyListCreateModalCtrl"});a.result.then(function(a){return g.save(a).$promise.then(function(a){i.path("/contactmanager/companies/view/"+a.id+"/settings")})["catch"](function(a){c.error(a)})},function(){f.info("Modal dismissed at: "+new Date)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.contactmanager.companies.list",{url:"/list",templateUrl:"app/contactmanager/company/list/list.html",controller:"ContactManagerCompanyListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("ContactManagerCompanyViewCtrl",["$scope","xAlert","$translate","$stateParams","$location","Company",function(a,b,c,d,e,f){a.getCompany=function(){return f.get({id:d.id}).$promise.then(function(b){a.company=b})["catch"](function(a){e.path("/contactmanager/companies/list")})},a.updateCompany=function(){return f.update({id:d.id},a.company).$promise.then(function(){b.show(c.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){b.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.contactmanager.companies.view",{url:"/view/:id",templateUrl:"app/contactmanager/company/view/view.html",controller:"ContactManagerCompanyViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.contactmanager.companies.view.settings",{url:"/settings",templateUrl:"app/contactmanager/company/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").factory("Contact",["$resource",function(a){return a("/api/contactmanager/contacts/:id/:controller/:controller2",{id:"@id"},{update:{method:"PUT"},search:{method:"POST"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.contactmanager.contacts",{url:"/contacts",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("ContactManagerListCopyModalCtrl",["$scope","$uibModalInstance","xAlert","List","Contact","$translate",function(a,b,c,d,e,f){a.item={},a.getLists=function(){return d.get().$promise.then(function(b){a.lists=b.rows})["catch"](function(a){c.error(a)})},a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("ContactManagerListImportModalCtrl",["$scope","$uibModalInstance","indexes","csv","xAlert","socket","List","Contact","$translate","Company","companyId","listId",function(a,b,c,d,e,f,g,h,i,j,k,l){function m(a){var b,c;if(!a)return 0;for(a=a.toString(),b=c=a.length;b--;){var d=a[b].charCodeAt();d>=56320&&57343>=d&&b--,d>127&&2047>=d?c++:d>2047&&65535>=d&&(c+=2)}return c}function n(b){if(b>=a.csvLength||a.stopped)return void(a.importing=!1);for(var c,f=[],g="",j=b;b+200>j&&j<a.csvLength;j++)c={},_.forOwn(a.item,function(b,e){switch(e){case"tags":c.tags=[],a.item.tags.forEach(function(a){d[j][a]&&c.tags.push(d[j][a])});break;default:c[e]=d[j][b]}}),c.ListId=a.item.ListId,c.CompanyId=a.item.CompanyId||null,c.firstName?f.push(c):(a["import"].fail+=1*a.addingQuote,a["import"].failed++,g+=(g?",(":"(")+(j+2)+")");return m(JSON.stringify(f))<=5e7?h.save({controller:"bulk"},{contacts:f}).$promise.then(function(c){a["import"].success+=c.ok*a.addingQuote,a["import"].succeeded+=c.ok,a["import"].fail+=c.ko*a.addingQuote,a["import"].failed+=c.ko,c.failed.length&&(_.forEach(c.failed,function(a,d){c.failed[d]+=b+2}),a.failedRows+=(a.failedRows?",":"")+_.sortBy(c.failed).join(",")),g&&(a.failedRows+=(a.failedRows?",":"")+g),n(j)})["catch"](function(b){a.stopped=!0,e.error(b),n(j)}):(a.stopped=!0,e.show(i.instant("MESSAGE_REQUEST_TOO_BIG"),"warning"),n(j),void 0)}a.indexes=c,a.importing=!1,a.submitted=!1,a.stopped=!1,a["import"]={success:0,fail:0,succeeded:0,failed:0},a.csvLength=d.length,a.addingQuote=100/a.csvLength,a.forms={csv:void 0},a.item={CompanyId:k||null,ListId:l||null},a.start=function(){a.importing=!0,a.submitted=!0,a.failedRows="",n(0)},a.getLists=function(){return g.get().$promise.then(function(b){a.lists=b.rows,a.item.ListId||(a.item.ListId=a.lists[0]?a.lists[0].id:null),a.getCustomFields()})["catch"](function(a){e.error(a)})},a.getCompanies=function(){return j.get().$promise.then(function(b){a.companies=b.rows})["catch"](function(a){e.error(a)})},a.getCustomFields=function(){return g.get({listId:a.item.ListId,controller:"customfields",id:"all"}).$promise.then(function(b){b.rows.forEach(function(a){a.values=JSON.parse(a.values)}),a.customFields=b.rows,f.socket.on("custom_field:remove",function(b){_.remove(a.customFields,function(a){return b.id==a.id})}),f.socket.on("custom_field:save",function(b){if(b.ListId===a.item.ListId){var c=_.find(a.customFields,{id:b.id});c||("string"==typeof b.values&&(b.values=JSON.parse(b.values)),a.customFields.push(b))}})})["catch"](function(a){console.error(a),e.error(a)})},a.close=function(){b.close()},a.stop=function(){a.stopped=!0}}]),angular.module("xCallyShuttleApp").controller("ContactManagerContactListCtrl",["$scope","$translate","Modal","FileUploader","Papa","$uibModal","$log","Contact","gridOptions","List","uiGridConstants","xAlert","socket","$stateParams","Auth","Company","usSpinnerService","$http","$rootScope","CustomField",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t){function u(){m.socket.on("contact_manager:save",function(){a.gridOptions.getPage()})}a.Auth=o,a.isAgent=o.isAgent(),a.agent=o.getCurrentUser(),a.initView=function(){var c;return j.get().$promise.then(function(b){return a.lists=[],b.rows.forEach(function(b){a.lists.push({value:b.id,label:b.name})}),t.get({controller:"all"}).$promise}).then(function(b){return a.customFields=b.rows,p.get().$promise}).then(function(b){a.companies=[],b.rows.forEach(function(b){a.companies.push({value:b.id,label:b.name})})}).then(function(){var d=[{"class":"blue-hoki",name:"profile",onClick:"grid.appScope.openContactTab(row.entity)"}];o.isAgent()||(d.push({"class":"green",title:b.instant("APPLICATION_COPY"),name:"copy",onClick:"grid.appScope.copy(row.entity.id)"}),d.push({"class":"red-sunglo",name:"delete",title:b.instant("APPLICATION_DELETE"),onClick:"grid.appScope.deleteItem(row.entity.fullname, row.entity.id)"})),c={exporterMenuAllData:!1,exporterMenuVisibleData:!1,exporterMenuSelectedData:!1,exporterCsvFilename:"Contacts.csv",columnDefs:[{name:"id",width:56},{name:"firstName"},{name:"lastName"},{name:"phone",displayName:"APPLICATION_PHONE",cellTemplate:'<div class="ui-grid-cell-contents">{{row.entity.phone}} <a href="#" data-ng-if="grid.appScope.isAgent && row.entity.phone && grid.appScope.agent.phoneBarRemoteControl" data-ng-click="grid.appScope.callPhoneBar(row.entity.phone,\'call\')" title="Call {{row.entity.phone}}"><i class="icon-phone"></i></a> <a href="#" data-ng-if="grid.appScope.isAgent && row.entity.phone && grid.appScope.agent.phoneBarRemoteControl" data-ng-click="grid.appScope.callPhoneBar(row.entity.phone,\'transfer\')" title="Call {{row.entity.phone}}"><i class="glyphicon glyphicon-random"></i></a></div>'},{name:"mobile",displayName:"APPLICATION_MOBILE",cellTemplate:'<div class="ui-grid-cell-contents">{{row.entity.mobile}} <a href="#" data-ng-if="grid.appScope.isAgent && row.entity.mobile && grid.appScope.agent.phoneBarRemoteControl" data-ng-click="grid.appScope.callPhoneBar(row.entity.mobile,\'call\')" title="Call {{row.entity.mobile}}"><i class="icon-phone"></i></a> <a href="#" data-ng-if="grid.appScope.isAgent && row.entity.mobile && grid.appScope.agent.phoneBarRemoteControl" data-ng-click="grid.appScope.callPhoneBar(row.entity.mobile,\'transfer\')" title="Transfer call to {{row.entity.mobile}}"><i class="glyphicon glyphicon-random"></i></a></div>'},{name:"email",displayName:"APPLICATION_EMAIL",cellTemplate:'<div class="ui-grid-cell-contents"><a href="#" data-ng-if="grid.appScope.license.mail && row.entity.email && grid.appScope.isAgent" data-ng-click="grid.appScope.openRoom(null,\'mailRoom\',{to:row.entity.email})">{{row.entity.email}}</a><span data-ng-if="!grid.appScope.license.mail || !grid.appScope.isAgent">{{row.entity.email}}</span></div>'},{name:"ListId",displayName:"APPLICATION_LIST",field:"List",filter:{type:k.filter.SELECT,term:n.listId||null,selectOptions:a.lists},cellTemplate:'<div class="centered-uigrid-td"><a data-ng-if="!grid.appScope.isAgent" href="/contactmanager/lists/view/{{row.entity.ListId}}/settings">{{row.entity.List}}</a><span data-ng-if="grid.appScope.isAgent">{{row.entity.List}}</span></div>'},{name:"CompanyId",displayName:"APPLICATION_COMPANY",field:"Company",filter:{type:k.filter.SELECT,term:n.companyId||null,selectOptions:a.companies},cellTemplate:'<div class="centered-uigrid-td"><a data-ng-if="!grid.appScope.isAgent" href="/contactmanager/companies/view/{{row.entity.CompanyId}}/settings">{{row.entity.Company}}</a><span data-ng-if="grid.appScope.isAgent">{{row.entity.Company}}</span></div>'},{name:"tags",filterHeaderTemplate:'<div class="ui-grid-filter-container"><div ng-repeat="colFilter in col.filters" class="col-md-12 col-md-offset-0 col-sm-12 col-sm-offset-0 col-xs-12 col-xs-offset-0"><div custom-grid-tags-filter-header></div></div></div>',filters:[{name:"tags"}],cellTemplate:"<div class=\"centered-uigrid-td\">{{row.entity.tags.join(',')}}</div>"}]},_.forEach(a.customFields,function(a){c.columnDefs.push({name:a.name,displayName:a.alias,visible:!1})}),c.columnDefs.push({name:"action",width:100,buttons:d}),a.gridOptions=i.gridOptions(h,c,a),u()})["catch"](function(a){l.error(a)})},a.callPhoneBar=function(c,d){var e;switch(d){case"call":e="http://127.0.0.1:"+a.agent.phoneBarRemoteControlPort+"/api/originate/"+c;break;case"transfer":e="http://127.0.0.1:"+a.agent.phoneBarRemoteControlPort+"/api/transfer?number="+c;break;default:e="http://127.0.0.1:"+a.agent.phoneBarRemoteControlPort+"/api/originate/"+c}return r.get(e).success(function(){l.show(b.instant("MESSAGE_WELL_DONE"),"success")}).error(function(a){console.error(a),l.error({message:b.instant("MESSAGE_UNABLE_TO_CONTACT_PHONEBAR")})})},a.openRoom=function(a,b,c){var d=_.find(s.workspaces,{id:a,type:b});if(d)d.active=!0;else{var e;switch(b){case"mailRoom":e="icon-envelope";break;case"chatRoom":e="fa fa-users";break;case"faxRoom":e="fa fa-fax";break;case"smsRoom":e="glyphicon glyphicon-comment"}s.workspaces.push({id:a,type:b,"class":e,active:!0,data:c})}},d.FileSelect.prototype.isEmptyAfterSelection=function(){return!0};var v=a.uploader=new d({queueLimit:1,clearInputAfterAddedToQueue:!0});v.onAfterAddingFile=function(b){e.parse(b._file,{header:!0,complete:function(b){a.uploader.clearQueue(),a["import"](b.data)},error:function(a){console.log(a)}})},a.extractAll=function(){q.spin("grid-spinner");var b=_.clone(a.gridOptions.pagOpt);return delete b.limit,delete b.offset,h.get(_.merge({controller:"extract",controller2:"all"},b)).$promise.then(function(a){return q.stop("grid-spinner"),a.rows})["catch"](function(a){l.error(a)})},a["import"]=function(b){m.unsyncUpdates("contact_manager");var c=f.open({animation:!0,size:"lg",backdrop:"static",keyboard:!1,templateUrl:"app/contactmanager/contact/list/import.modal.html",controller:"ContactManagerListImportModalCtrl",resolve:{indexes:function(){return _.keys(b[0])},csv:function(){return b},companyId:function(){return a.gridOptions.columnDefs[7].filter.term||null},listId:function(){return a.gridOptions.columnDefs[6].filter.term||null}}});c.result.then(function(){console.log("result"),u(),a.gridOptions.getPage()},function(){g.info("Modal dismissed at: "+new Date)})},a.copy=function(b){var c=f.open({animation:!0,size:"small",templateUrl:"app/contactmanager/contact/list/copy.modal.html",controller:"ContactManagerListCopyModalCtrl"});c.result.then(function(c){return h.save({id:b,controller:"copy"},c).$promise.then(function(b){a.openContactTab({firstName:b.firstName,lastName:b.lastName,id:b.id})})["catch"](function(a){l.error(a)})},function(){g.info("Modal dismissed at: "+new Date)})},a.$on("$destroy",function(){m.unsyncUpdates("contact_manager")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.contactmanager.contacts.list",{url:"/list",templateUrl:"app/contactmanager/contact/list/list.html",params:{listId:null,companyId:null},controller:"ContactManagerContactListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.contactmanager",{url:"/contactmanager",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:5}}})}]),angular.module("xCallyShuttleApp").factory("CustomField",["$resource",function(a){return a("/api/contactmanager/customfields/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.contactmanager.customfields",{url:"/customfields",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:5}}})}]),angular.module("xCallyShuttleApp").controller("CustomFieldListCreateModalCtrl",["$scope","$uibModalInstance","$translate",function(a,b,c){a.$translate=c,a.forms={dashboard:void 0},a.item={},a.choices=[{value:""}],a.bsSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.addField=function(){a.choices.push({})},a.removeField=function(b){a.choices.splice(b,1)},a.types=[{name:"APPLICATION_TEXT",value:"text"},{name:"APPLICATION_SELECT",value:"select"}],a.ok=function(){"select"===a.item.type&&(a.item.values=angular.toJson(a.choices)),b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("ContactManagerCustomFieldListCtrl",["$scope","$translate","xAlert","Modal","$uibModal","$log","CustomField","gridOptions",function(a,b,c,d,e,f,g,h){a.initView=function(){var b={exporterCsvFilename:"customfields.csv",primaryKey:"id",columnDefs:[{name:"alias",displayName:"APPLICATION_NAME"},{name:"name",displayName:"APPLICATION_FIELD"},{name:"type"},{name:"action",width:200,buttons:[{"class":"blue-hoki",href:"/contactmanager/customfields/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)",name:"delete"}]}]};a.gridOptions=h.gridOptions(g,b,a)},a.create=function(){var d=e.open({animation:!0,size:"lg",templateUrl:"app/contactmanager/customfield/list/create.modal.html",controller:"CustomFieldListCreateModalCtrl"});d.result.then(function(d){return g.save(d).$promise.then(function(){a.gridOptions.getPage(),c.show(b.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){c.error(a)})},function(){f.info("Modal dismissed at: "+new Date)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.contactmanager.customfields.list",{url:"/list",templateUrl:"app/contactmanager/customfield/list/list.html",controller:"ContactManagerCustomFieldListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("ContactManagerCustomFieldViewCtrl",["$scope","xAlert","$translate","$stateParams","$location","CustomField",function(a,b,c,d,e,f){function g(a){var b=a.split(""),c=0,d=0;return b.shift(),b.forEach(function(a,b){"{"===a?c++:"}"===a&&(c--,c||(d=b+1))}),d?JSON.parse("["+a.substr(1,d)+"]"):[]}a.bsSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.getCustomField=function(){return f.get({id:d.id}).$promise.then(function(b){if(a.customField=b,"select"===a.customField.type)try{a.choices=JSON.parse(a.customField.values)}catch(c){a.choices=g(a.customField.values)}})["catch"](function(){e.path("/contactmanager/customfields/list")})},a.addField=function(){a.choices.push({})},a.removeField=function(b){a.choices.splice(b,1)},a.updateCustomField=function(){var e=angular.copy(a.customField);return"select"===e.type&&(e.values=angular.toJson(a.choices)),f.update({id:d.id},a.customField).$promise.then(function(){b.show(c.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){b.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.contactmanager.customfields.view",{url:"/view/:id",templateUrl:"app/contactmanager/customfield/view/view.html",controller:"ContactManagerCustomFieldViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.contactmanager.customfields.view.settings",{url:"/settings",templateUrl:"app/contactmanager/customfield/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").factory("List",["$resource",function(a){return a("/api/contactmanager/lists/:listId/:controller/:id",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.contactmanager.lists",{url:"/lists",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:5}}})}]),angular.module("xCallyShuttleApp").controller("ContactManagerListListCreateModalCtrl",["$scope","$uibModalInstance",function(a,b){a.forms={dashboard:void 0},a.item={},a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("ContactManagerListListCtrl",["$scope","$http","$translate","Modal","xAlert","$uibModal","$log","List","gridOptions","$state","MotionDialerList","$rootScope",function(a,b,c,d,e,f,g,h,i,j,k,l){a.initView=function(){var b={exporterCsvFilename:"Lists.csv",columnDefs:[{name:"id"},{name:"name"},{name:"description"},{name:"action",width:100,buttons:[{"class":"blue-hoki",name:"settings",href:"/contactmanager/lists/view/{{row.entity.id}}/settings"},{"class":"green-turquoise",name:"contacts",onClick:"grid.appScope.goToContacts(row.entity.id)"},{"class":"{{row.entity.defaultEntry ? 'red-sunglo disabled' : 'red-sunglo'}}",name:"delete",onClick:"grid.appScope.deleteList(row.entity.name, row.entity.id)"}]}]};a.gridOptions=i.gridOptions(h,b,a)},a.goToContacts=function(a){j.go("main.contactmanager.contacts.list",{listId:a})},a.deleteList=d.confirm["delete"](function(b){return l.license.dialer?k.find({id_source:b}).$promise.then(function(a){return a&&a.status>0?a.response.RMI.rows[0]?k["delete"]({id:a.response.RMI.rows[0].id}).$promise:{status:1}:void e.show(a?a.message||"Please, check your connection!":"Please, check your connection!","danger")}).then(function(d){if(d&&d.status>0)return h.remove({id:b}).$promise.then(function(){a.gridOptions.getPage(),e.show(c.instant("MESSAGE_WELL_DONE"),"success")});var f="Please, check your connection!";d&&(f=d.response&&d.response.RMI?d.response.RMI.errors||d.message||"Please, check your connection!":d.message||"Please, check your connection!"),e.show(f,"danger")})["catch"](function(a){e.error(a)}):h.remove({id:b}).$promise.then(function(){a.gridOptions.getPage(),e.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){e.error(a)})}),a.create=function(){var d=f.open({animation:!0,templateUrl:"app/contactmanager/list/list/create.modal.html",controller:"ContactManagerListListCreateModalCtrl"});d.result.then(function(d){b.post("/api/contactmanager/lists/",d).then(function(){a.gridOptions.getPage(),e.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){e.error(a)})},function(){g.info("Modal dismissed at: "+new Date)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.contactmanager.lists.list",{url:"/list",templateUrl:"app/contactmanager/list/list/list.html",controller:"ContactManagerListListCtrl"})}]),angular.module("xCallyShuttleApp").controller("ContactManagerListCustomFieldViewCreateModalCtrl",["$scope","$uibModalInstance","$translate",function(a,b,c){a.$translate=c,a.forms={dashboard:void 0},a.item={},a.choices=[{value:""}],a.bsSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.addField=function(){a.choices.push({})},a.removeField=function(b){a.choices.splice(b,1)},a.types=[{name:"APPLICATION_TEXT",value:"text"},{name:"APPLICATION_SELECT",value:"select"}],a.ok=function(){"select"===a.item.type&&(a.item.values=angular.toJson(a.choices)),b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("ContactManagerListViewCtrl",["$scope","xAlert","$translate","$stateParams","socket","$location","$uibModal","$log","Modal","List","Team","gridOptions",function(a,b,c,d,e,f,g,h,i,j,k,l){function m(a){var b=a.split(""),c=0,d=0;return b.shift(),b.forEach(function(a,b){"{"===a?c++:"}"===a&&(c--,c||(d=b+1))}),d?JSON.parse("["+a.substr(1,d)+"]"):[]}var n=[{name:"firstName",value:"firstName"},{name:"lastName",value:"lastName"},{name:"CompanyId",value:"CompanyId"},{name:"phone",value:"phone"},{name:"mobile", -value:"mobile"},{name:"email",value:"email"},{name:"fax",value:"fax"},{name:"tags",value:"tags"},{name:"ListId",value:"ListId"},{name:"street",value:"street"},{name:"postalCode",value:"postalCode"},{name:"city",value:"city"},{name:"country",value:"country"},{name:"dateOfBirth",value:"dateOfBirth"},{name:"description",value:"description"},{name:"url",value:"url"}];a.bsSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"};var o=function(){return{select:function(b){return j.save({listId:a.list.id,controller:"agents"},{agents:b}).$promise.then(function(){a.getTeams()})["catch"](function(a){console.log(a)})},deselect:function(b){return j["delete"]({listId:a.list.id,controller:"agents",agents:b}).$promise.then(function(){a.getTeams()})["catch"](function(a){console.log(a)})}}};a.initVariables=function(){return j.get({listId:d.id,controller:"customfields",id:"all"}).$promise.then(function(b){if(a.variables=_.clone(n),b.rows.forEach(function(b){try{"select"===b.type&&(b.values=JSON.parse(b.values)),a.variables.push({name:b.alias,value:b.name})}catch(c){console.log("Cf not valid:",b.alias)}}),a.list&&a.list.variables&&a.list.variables.length)for(var c=a.list.variables.length;c--;)_.find(a.variables,{value:a.list.variables[c].value})||a.list.variables.splice(c,1)})["catch"](function(a){console.error(a),b.error(a)})},a.getList=function(){return j.get({listId:d.id}).$promise.then(function(b){if(b.variables)try{b.variables=JSON.parse(b.variables)}catch(c){console.log("invalid or outdated variables format"),b.variables=[]}else b.variables=[];a.list=b})["catch"](function(){f.path("/contactmanager/lists/list")})},a.updateList=function(){var e=_.clone(a.list);return e.variables=e.variables.length?angular.toJson(e.variables):"",j.update({id:d.id},e).$promise.then(function(){b.show(c.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){b.error(a)})},a.convertList=function(){a.list.isTdList=!0,a.updateList()},a.getTeams=function(){return k.get({controller:"associations"}).$promise.then(function(b){return a.teams=b.rows,a.list?void 0:a.getList()}).then(function(){return a.list.defaultEntry&&f.path("/contactmanager/lists/list"),j.get({listId:d.id,controller:"agents"}).$promise}).then(function(b){ComponentsDropdowns.bindQueue(a.teams,_.map(b.rows,function(a){return{id:a.id}}),o)})["catch"](function(a){console.error(a)})},a.initCustomFields=function(){var b={exporterCsvFilename:"customfields.csv",primaryKey:"id",columnDefs:[{name:"alias",displayName:"APPLICATION_NAME"},{name:"name",displayName:"APPLICATION_FIELD"},{name:"type"},{name:"action",width:200,buttons:[{"class":"blue-hoki",href:"/contactmanager/lists/view/{{grid.appScope.$stateParams.id}}/customfields/settings/{{row.entity.id}}",name:"settings"},{"class":"red-sunglo",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)",name:"delete"}]}]};a.gridOptions=l.gridOptions(j,b,a,{listId:d.id,controller:"customfields"})},a.create=function(){var e=g.open({animation:!0,templateUrl:"app/contactmanager/list/view/create.modal.html",controller:"ContactManagerListCustomFieldViewCreateModalCtrl"});e.result.then(function(e){return j.save({listId:d.id,controller:"customfields"},e).$promise.then(function(){a.gridOptions.getPage(),b.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){b.error(a)})},function(){h.info("Modal dismissed at: "+new Date)})},a.getCustomField=function(){return j.get({listId:d.id,controller:"customfields",id:d.cfId}).$promise.then(function(b){if(a.customField=b,"select"===a.customField.type)try{a.choices=JSON.parse(a.customField.values)}catch(c){a.choices=m(a.customField.values)}})["catch"](function(a){console.error(a)})},a.updateCustomField=function(){var e=angular.copy(a.customField);return"select"===e.type&&(e.values=angular.toJson(a.choices)),j.update({listId:d.id,controller:"customfields",id:d.cfId},e).$promise.then(function(){b.show(c.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){b.error(a)})},a.addField=function(){a.choices.push({})},a.removeField=function(b){a.choices.splice(b,1)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.contactmanager.lists.view",{url:"/view/:id",templateUrl:"app/contactmanager/list/view/view.html",controller:"ContactManagerListViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.contactmanager.lists.view.settings",{url:"/settings",templateUrl:"app/contactmanager/list/view/view.settings.html"}).state("main.contactmanager.lists.view.agents",{url:"/agents",templateUrl:"app/contactmanager/list/view/view.agents.html",cache:!1,serie:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}}).state("main.contactmanager.lists.view.customfields",{url:"/customfields",templateUrl:"app/contactmanager/list/view/view.customFields.html"}).state("main.contactmanager.lists.view.customfields.settings",{url:"/settings/:cfId",templateUrl:"app/contactmanager/list/view/view.customFieldSettings.html",controller:"ContactManagerListViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("DashboardChatCtrl",["$scope","Auth","ChatRoom","socket","Agent","$translate","$q","ReportChatSession","$timeout",function(a,b,c,d,e,f,g,h,i){a.Auth=b,a.moment=moment,a.$on("$destroy",function(){d.socket.removeAllListeners("dashboard:chat")}),a.roomStatus={"new":0,open:0,closed:0,abandon:0,unmanaged:0},a.routingStats={waiting:0,timeout:0},a.charts={interactions:{labels:[f.instant("APPLICATION_DASHBOARD_NEW"),f.instant("APPLICATION_DASHBOARD_OPEN"),f.instant("APPLICATION_DASHBOARD_PENDING"),f.instant("APPLICATION_DASHBOARD_CLOSED")],values:[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed],colours:["#44B6AE","#578EBE","#35AA47","#8775A7"]}};var j=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px")};a.initAgent=function(){a.table1={enableGridMenu:!1,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,paginationPageSizes:[10,25,50],paginationPageSize:10,columnDefs:[{name:"UserHasChatQueue.queue",headerCellFilter:"translate",displayName:"APPLICATION_QUEUE",cellClass:"text-center ui-grid-vcenter"}],data:[],onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){j(a.table1.paginationPageSize>a.table1.data.length?a.table1.data.length:a.table1.paginationPageSize,"table1")}),a.gridApi.pagination.on.paginationChanged(a,function(b,c){j(c>a.table1.data.length?a.table1.data.length:c,"table1")})}},a.table2={headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,columnDefs:[{name:"roomid",displayName:"APPLICATION_INTERACTION_ID",headerCellFilter:"translate"},{name:"accountname",displayName:"APPLICATION_ACCOUNT_NAME",headerCellFilter:"translate"},{name:"application",displayName:"APPLICATION_APPLICATION",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.application}} <span data-ng-if=\"row.entity.application == 'queue' && row.entity.queuename\">({{row.entity.queuename}})</span></div>"},{name:"status",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span data-ng-if="!row.entity.leaveAt">{{\'APPLICATION_QUEUESTATUS_WAITING\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.complete">{{\'APPLICATION_QUEUESTATUS_COMPLETE\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.timeout">{{\'APPLICATION_TIMEOUT\' | translate}}</span><span data-ng-if="!row.entity.leaveAt"> [<css-timer start-time="row.entity.updatedAt"></css-timer>]</span></div>',enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1},{name:"membername",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.membername || ''}}</span></div>"}],data:[],gridMenuTitleFilter:function(a){var b=g.defer();return b.resolve(f.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){})}},e.get({id:b.getCurrentUser().id,controller:"chat",controller1:"queues"}).$promise.then(function(b){a.table1.data=b.rows})["finally"](function(){j(a.table1.paginationPageSize>a.table1.data.length?a.table1.data.length:a.table1.paginationPageSize,"table1"),d.socket.on("user_has_chat_queue:save",function(c){c.UserId!=b.getCurrentUser().id||_.find(a.table1.data,{id:c.ChatQueueId})||a.table1.data.push({id:c.ChatQueueId,UserHasChatQueue:c})}),d.socket.on("user_has_chat_queue:remove",function(c){c.UserId===b.getCurrentUser().id&&_.remove(a.table1.data,{id:c.ChatQueueId})})})["catch"](function(a){console.error(a)}),h.get({controller:"waiting",controller2:"applications"}).$promise.then(function(b){a.table2.data=b.rows})["finally"](function(){d.socket.on("report_chat_session:save",function(b){var c=_.find(a.table2.data,{id:b.id});c?(_.merge(c,b),b.leaveAt&&i(function(){_.remove(a.table2.data,{id:b.id})},1e4)):b.leaveAt||a.table2.data.push(b)}),d.socket.on("report_chat_session:remove",function(b){_.remove(a.table2.data,{id:b.id})})})["catch"](function(a){console.log(a)})},a.initRoomStats=function(){return c.get({id:"dashboard"}).$promise.then(function(b){a.roomStatus=b,a.charts={interactions:{labels:[f.instant("APPLICATION_DASHBOARD_NEW"),f.instant("APPLICATION_DASHBOARD_OPEN"),f.instant("APPLICATION_UNMANAGED"),f.instant("APPLICATION_DASHBOARD_CLOSED"),f.instant("APPLICATION_DASHBOARD_ABANDONED")],values:[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.unmanaged,a.roomStatus.closed,a.roomStatus.abandon],colours:["#44B6AE","#578EBE","#35AA47","#8775A7","#F3C200"]}},d.socket.on("dashboard:chat",function(b){a.roomStatus=b.roomStatus,a.charts.interactions.values=[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.unmanaged,a.roomStatus.closed,a.roomStatus.abandon]})})["catch"](function(a){console.error(a)})},a.initRoutingStats=function(){return h.get({id:"dashboard"}).$promise.then(function(b){a.routingStats=b})["catch"](function(a){console.error(a)})},a.initSocketListening=function(){d.socket.on("dashboard:chat",function(b){a.roomStatus=b.roomStatus,a.routingStats=b.routingStats,a.charts.interactions.values=[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.unmanaged,a.roomStatus.closed,a.roomStatus.abandon]})}}]),angular.module("xCallyShuttleApp").controller("DashboardCtrl",["$scope","$translate","Auth",function(a,b,c){}]),angular.module("xCallyShuttleApp").factory("Dashboard",["$resource",function(a){return a("/api/dashboards/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.dashboard",{"abstract":!0,url:"/dashboard",templateUrl:"app/dashboard/dashboard.html",controller:"DashboardCtrl",data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:1}}}).state("main.dashboard.voice",{url:"/voice",controller:"DashboardVoiceCtrl",templateUrl:"app/dashboard/voice/voice.html"}).state("main.dashboard.chat",{url:"/chat",controller:"DashboardChatCtrl",templateUrl:"app/dashboard/chat/chat.html",data:{permissions:{redirectTo:"landing",id:8}}}).state("main.dashboard.mail",{url:"/mail",controller:"DashboardMailCtrl",templateUrl:"app/dashboard/mail/mail.html",data:{permissions:{redirectTo:"landing",id:9}}}).state("main.dashboard.fax",{url:"/fax",controller:"DashboardFaxCtrl",templateUrl:"app/dashboard/fax/fax.html",data:{permissions:{redirectTo:"landing",id:10}}}).state("main.dashboard.sms",{url:"/sms",controller:"DashboardSmsCtrl",templateUrl:"app/dashboard/sms/sms.html",data:{permissions:{redirectTo:"landing",id:11}}}).state("main.dashboard.openchannel",{url:"/openchannel",controller:"DashboardOpenChannelCtrl",templateUrl:"app/dashboard/openchannel/openchannel.html",data:{permissions:{redirectTo:"landing",id:20}}})}]),angular.module("xCallyShuttleApp").controller("DashboardFaxCtrl",["$scope","Auth","FaxRoom","socket","Agent","$translate","$q","ReportFaxSession","$timeout",function(a,b,c,d,e,f,g,h,i){a.Auth=b,a.moment=moment,a.$on("$destroy",function(){d.socket.removeAllListeners("dashboard:fax")}),a.roomStatus={"new":0,open:0,pending:0,closed:0},a.routingStats={waiting:0,timeout:0},a.charts={interactions:{labels:[f.instant("APPLICATION_DASHBOARD_NEW"),f.instant("APPLICATION_DASHBOARD_OPEN"),f.instant("APPLICATION_DASHBOARD_PENDING"),f.instant("APPLICATION_DASHBOARD_CLOSED")],values:[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed],colours:["#44B6AE","#578EBE","#35AA47","#8775A7"]}};var j=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px")};a.initAgent=function(){a.table1={enableGridMenu:!1,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,paginationPageSizes:[10,25,50],paginationPageSize:10,columnDefs:[{name:"UserHasFaxQueue.queue",headerCellFilter:"translate",displayName:"APPLICATION_QUEUE",cellClass:"text-center ui-grid-vcenter"}],data:[],onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){j(a.table1.paginationPageSize>a.table1.data.length?a.table1.data.length:a.table1.paginationPageSize,"table1")}),a.gridApi.pagination.on.paginationChanged(a,function(b,c){j(c>a.table1.data.length?a.table1.data.length:c,"table1")})}},a.table2={headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,columnDefs:[{name:"roomid",displayName:"APPLICATION_INTERACTION_ID",headerCellFilter:"translate"},{name:"accountname",displayName:"APPLICATION_ACCOUNT_NAME",headerCellFilter:"translate"},{name:"application",displayName:"APPLICATION_APPLICATION",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.application}} <span data-ng-if=\"row.entity.application == 'queue' && row.entity.queuename\">({{row.entity.queuename}})</span></div>"},{name:"status",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span data-ng-if="!row.entity.leaveAt">{{\'APPLICATION_QUEUESTATUS_WAITING\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.complete">{{\'APPLICATION_QUEUESTATUS_COMPLETE\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.timeout">{{\'APPLICATION_TIMEOUT\' | translate}}</span><span data-ng-if="!row.entity.leaveAt"> [<css-timer start-time="row.entity.updatedAt"></css-timer>]</span></div>',enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1},{name:"membername",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.membername || ''}}</span></div>"}],data:[],gridMenuTitleFilter:function(a){var b=g.defer();return b.resolve(f.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){})}},e.get({id:b.getCurrentUser().id,controller:"fax",controller1:"queues"}).$promise.then(function(b){a.table1.data=b.rows})["finally"](function(){j(a.table1.paginationPageSize>a.table1.data.length?a.table1.data.length:a.table1.paginationPageSize,"table1"),d.socket.on("user_has_fax_queue:save",function(c){c.UserId!=b.getCurrentUser().id||_.find(a.table1.data,{id:c.FaxQueueId})||a.table1.data.push({id:c.FaxQueueId,UserHasFaxQueue:c})}),d.socket.on("user_has_fax_queue:remove",function(c){c.UserId===b.getCurrentUser().id&&_.remove(a.table1.data,{id:c.FaxQueueId})})})["catch"](function(a){console.error(a)}),h.get({controller:"waiting",controller2:"applications"}).$promise.then(function(b){a.table2.data=b.rows})["finally"](function(){d.socket.on("report_fax_session:save",function(b){var c=_.find(a.table2.data,{id:b.id});c?(_.merge(c,b),b.leaveAt&&i(function(){_.remove(a.table2.data,{id:b.id})},1e4)):b.leaveAt||a.table2.data.push(b)}),d.socket.on("report_fax_session:remove",function(b){_.remove(a.table2.data,{id:b.id})})})["catch"](function(a){console.log(a)})},a.initRoomStats=function(){return c.get({id:"dashboard"}).$promise.then(function(b){a.roomStatus=b,a.charts={interactions:{labels:[f.instant("APPLICATION_DASHBOARD_NEW"),f.instant("APPLICATION_DASHBOARD_OPEN"),f.instant("APPLICATION_DASHBOARD_PENDING"),f.instant("APPLICATION_DASHBOARD_CLOSED")],values:[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed],colours:["#44B6AE","#578EBE","#35AA47","#8775A7"]}},d.socket.on("dashboard:fax",function(b){a.roomStatus=b.roomStatus,a.charts.interactions.values=[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed]})})["catch"](function(a){console.error(a)})},a.initRoutingStats=function(){return h.get({id:"dashboard"}).$promise.then(function(b){a.routingStats=b})["catch"](function(a){console.error(a)})},a.initSocketListening=function(){d.socket.on("dashboard:fax",function(b){a.roomStatus=b.roomStatus,a.routingStats=b.routingStats,a.charts.interactions.values=[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed]})}}]),angular.module("xCallyShuttleApp").controller("DashboardMailCtrl",["$scope","Auth","MailRoom","socket","Agent","$translate","$q","ReportMailSession","$timeout",function(a,b,c,d,e,f,g,h,i){a.Auth=b,a.moment=moment,a.$on("$destroy",function(){d.socket.removeAllListeners("dashboard:mail")}),a.roomStatus={"new":0,open:0,pending:0,closed:0},a.routingStats={waiting:0,timeout:0},a.charts={interactions:{labels:[f.instant("APPLICATION_DASHBOARD_NEW"),f.instant("APPLICATION_DASHBOARD_OPEN"),f.instant("APPLICATION_DASHBOARD_PENDING"),f.instant("APPLICATION_DASHBOARD_CLOSED")],values:[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed],colours:["#44B6AE","#578EBE","#35AA47","#8775A7"]}};var j=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px")};a.initAgent=function(){a.table1={enableGridMenu:!1,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,paginationPageSizes:[10,25,50],paginationPageSize:10,columnDefs:[{name:"UserHasMailQueue.queue",headerCellFilter:"translate",displayName:"APPLICATION_QUEUE",cellClass:"text-center ui-grid-vcenter"}],data:[],onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){j(a.table1.paginationPageSize>a.table1.data.length?a.table1.data.length:a.table1.paginationPageSize,"table1")}),a.gridApi.pagination.on.paginationChanged(a,function(b,c){j(c>a.table1.data.length?a.table1.data.length:c,"table1")})}},a.table2={headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,columnDefs:[{name:"roomid",displayName:"APPLICATION_INTERACTION_ID",headerCellFilter:"translate"},{name:"accountname",displayName:"APPLICATION_ACCOUNT_NAME",headerCellFilter:"translate"},{name:"application",displayName:"APPLICATION_APPLICATION",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.application}} <span data-ng-if=\"row.entity.application == 'queue' && row.entity.queuename\">({{row.entity.queuename}})</span></div>"},{name:"status",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span data-ng-if="!row.entity.leaveAt">{{\'APPLICATION_QUEUESTATUS_WAITING\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.complete">{{\'APPLICATION_QUEUESTATUS_COMPLETE\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.timeout">{{\'APPLICATION_TIMEOUT\' | translate}}</span><span data-ng-if="!row.entity.leaveAt"> [<css-timer start-time="row.entity.updatedAt"></css-timer>]</span></div>',enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1},{name:"membername",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.membername || ''}}</span></div>"}],data:[],gridMenuTitleFilter:function(a){var b=g.defer();return b.resolve(f.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){})}},e.get({id:b.getCurrentUser().id,controller:"mail",controller1:"queues"}).$promise.then(function(b){a.table1.data=b.rows})["finally"](function(){j(a.table1.paginationPageSize>a.table1.data.length?a.table1.data.length:a.table1.paginationPageSize,"table1"),d.socket.on("user_has_mail_queue:save",function(c){c.UserId!=b.getCurrentUser().id||_.find(a.table1.data,{id:c.MailQueueId})||a.table1.data.push({id:c.MailQueueId,UserHasMailQueue:c})}),d.socket.on("user_has_mail_queue:remove",function(c){c.UserId===b.getCurrentUser().id&&_.remove(a.table1.data,{id:c.MailQueueId})})})["catch"](function(a){console.error(a)}),h.get({controller:"waiting",controller2:"applications"}).$promise.then(function(b){a.table2.data=b.rows})["finally"](function(){d.socket.on("report_mail_session:save",function(b){var c=_.find(a.table2.data,{id:b.id});c?(_.merge(c,b),b.leaveAt&&i(function(){_.remove(a.table2.data,{id:b.id})},1e4)):b.leaveAt||a.table2.data.push(b)}),d.socket.on("report_mail_session:remove",function(b){_.remove(a.table2.data,{id:b.id})})})["catch"](function(a){console.log(a)})},a.initRoomStats=function(){return c.get({id:"dashboard"}).$promise.then(function(b){a.roomStatus=b,a.charts={interactions:{labels:[f.instant("APPLICATION_DASHBOARD_NEW"),f.instant("APPLICATION_DASHBOARD_OPEN"),f.instant("APPLICATION_DASHBOARD_PENDING"),f.instant("APPLICATION_DASHBOARD_CLOSED")],values:[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed],colours:["#44B6AE","#578EBE","#35AA47","#8775A7"]}},d.socket.on("dashboard:mail",function(b){a.roomStatus=b.roomStatus,a.charts.interactions.values=[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed]})})["catch"](function(a){console.error(a)})},a.initRoutingStats=function(){return h.get({id:"dashboard"}).$promise.then(function(b){a.routingStats=b})["catch"](function(a){console.error(a)})},a.initSocketListening=function(){d.socket.on("dashboard:mail",function(b){a.roomStatus=b.roomStatus,a.routingStats=b.routingStats,a.charts.interactions.values=[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed]})}}]),angular.module("xCallyShuttleApp").controller("DashboardOpenChannelCtrl",["$scope","Auth","OpenChannelRoom","socket","Agent","$translate","$q","ReportOpenChannelSession","$timeout",function(a,b,c,d,e,f,g,h,i){a.Auth=b,a.moment=moment,a.$on("$destroy",function(){d.socket.removeAllListeners("dashboard:openchannel")}),a.roomStatus={"new":0,open:0,pending:0,closed:0},a.routingStats={waiting:0,timeout:0},a.charts={interactions:{labels:[f.instant("APPLICATION_DASHBOARD_NEW"),f.instant("APPLICATION_DASHBOARD_OPEN"),f.instant("APPLICATION_DASHBOARD_PENDING"),f.instant("APPLICATION_DASHBOARD_CLOSED")],values:[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed],colours:["#44B6AE","#578EBE","#35AA47","#8775A7"]}};var j=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px")};a.initAgent=function(){a.table1={enableGridMenu:!1,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,paginationPageSizes:[10,25,50],paginationPageSize:10,columnDefs:[{name:"UserHasOpenchannelQueue.queue",headerCellFilter:"translate",displayName:"APPLICATION_QUEUE",cellClass:"text-center ui-grid-vcenter"}],data:[],onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){j(a.table1.paginationPageSize>a.table1.data.length?a.table1.data.length:a.table1.paginationPageSize,"table1")}),a.gridApi.pagination.on.paginationChanged(a,function(b,c){j(c>a.table1.data.length?a.table1.data.length:c,"table1")})}},a.table2={headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,columnDefs:[{name:"roomid",displayName:"APPLICATION_INTERACTION_ID",headerCellFilter:"translate"},{name:"accountname",displayName:"APPLICATION_ACCOUNT_NAME",headerCellFilter:"translate"},{name:"application",displayName:"APPLICATION_APPLICATION",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.application}} <span data-ng-if=\"row.entity.application == 'queue' && row.entity.queuename\">({{row.entity.queuename}})</span></div>"},{name:"status",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span data-ng-if="!row.entity.leaveAt">{{\'APPLICATION_QUEUESTATUS_WAITING\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.complete">{{\'APPLICATION_QUEUESTATUS_COMPLETE\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.timeout">{{\'APPLICATION_TIMEOUT\' | translate}}</span><span data-ng-if="!row.entity.leaveAt"> [<css-timer start-time="row.entity.updatedAt"></css-timer>]</span></div>',enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1},{name:"membername",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.membername || ''}}</span></div>"}],data:[],gridMenuTitleFilter:function(a){var b=g.defer();return b.resolve(f.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){})}},e.get({id:b.getCurrentUser().id,controller:"openchannel",controller1:"queues"}).$promise.then(function(b){a.table1.data=b.rows})["finally"](function(){j(a.table1.paginationPageSize>a.table1.data.length?a.table1.data.length:a.table1.paginationPageSize,"table1"),d.socket.on("user_has_openchannel_queue:save",function(c){c.UserId!=b.getCurrentUser().id||_.find(a.table1.data,{id:c.OpenchannelQueueId})||a.table1.data.push({id:c.OpenchannelQueueId,UserHasOpenchannelQueue:c})}),d.socket.on("user_has_openchannel_queue:remove",function(c){c.UserId===b.getCurrentUser().id&&_.remove(a.table1.data,{id:c.OpenchannelQueueId})})})["catch"](function(a){console.error(a)}),h.get({controller:"waiting",controller2:"applications"}).$promise.then(function(b){a.table2.data=b.rows})["finally"](function(){d.socket.on("report_openchannel_session:save",function(b){var c=_.find(a.table2.data,{id:b.id});c?(_.merge(c,b),b.leaveAt&&i(function(){_.remove(a.table2.data,{id:b.id})},1e4)):b.leaveAt||a.table2.data.push(b)}),d.socket.on("report_openchannel_session:remove",function(b){_.remove(a.table2.data,{id:b.id})})})["catch"](function(a){console.log(a)})},a.initRoomStats=function(){return c.get({id:"dashboard"}).$promise.then(function(b){a.roomStatus=b,a.charts={interactions:{labels:[f.instant("APPLICATION_DASHBOARD_NEW"),f.instant("APPLICATION_DASHBOARD_OPEN"),f.instant("APPLICATION_DASHBOARD_PENDING"),f.instant("APPLICATION_DASHBOARD_CLOSED")],values:[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed],colours:["#44B6AE","#578EBE","#35AA47","#8775A7"]}},d.socket.on("dashboard:openchannel",function(b){a.roomStatus=b.roomStatus,a.charts.interactions.values=[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed]})})["catch"](function(a){console.error(a)})},a.initRoutingStats=function(){return h.get({id:"dashboard"}).$promise.then(function(b){a.routingStats=b})["catch"](function(a){console.error(a)})},a.initSocketListening=function(){d.socket.on("dashboard:openchannel",function(b){a.roomStatus=b.roomStatus,a.routingStats=b.routingStats,a.charts.interactions.values=[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed]})}}]),angular.module("xCallyShuttleApp").controller("DashboardSmsCtrl",["$scope","Auth","SmsRoom","socket","Agent","$translate","$q","ReportSmsSession","$timeout",function(a,b,c,d,e,f,g,h,i){a.Auth=b,a.moment=moment,a.$on("$destroy",function(){d.socket.removeAllListeners("dashboard:sms")}),a.roomStatus={"new":0,open:0,pending:0,closed:0},a.routingStats={waiting:0,timeout:0},a.charts={interactions:{labels:[f.instant("APPLICATION_DASHBOARD_NEW"),f.instant("APPLICATION_DASHBOARD_OPEN"),f.instant("APPLICATION_DASHBOARD_PENDING"),f.instant("APPLICATION_DASHBOARD_CLOSED")],values:[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed],colours:["#44B6AE","#578EBE","#35AA47","#8775A7"]}};var j=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px")};a.initAgent=function(){a.table1={enableGridMenu:!1,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,paginationPageSizes:[10,25,50],paginationPageSize:10,columnDefs:[{name:"UserHasSmsQueue.queue",headerCellFilter:"translate",displayName:"APPLICATION_QUEUE",cellClass:"text-center ui-grid-vcenter"}],data:[],onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){j(a.table1.paginationPageSize>a.table1.data.length?a.table1.data.length:a.table1.paginationPageSize,"table1")}),a.gridApi.pagination.on.paginationChanged(a,function(b,c){j(c>a.table1.data.length?a.table1.data.length:c,"table1")})}},a.table2={headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,columnDefs:[{name:"roomid",displayName:"APPLICATION_INTERACTION_ID",headerCellFilter:"translate"},{name:"accountname",displayName:"APPLICATION_ACCOUNT_NAME",headerCellFilter:"translate"},{name:"application",displayName:"APPLICATION_APPLICATION",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.application}} <span data-ng-if=\"row.entity.application == 'queue' && row.entity.queuename\">({{row.entity.queuename}})</span></div>"},{name:"status",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span data-ng-if="!row.entity.leaveAt">{{\'APPLICATION_QUEUESTATUS_WAITING\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.complete">{{\'APPLICATION_QUEUESTATUS_COMPLETE\' | translate}}</span><span data-ng-if="row.entity.leaveAt && row.entity.timeout">{{\'APPLICATION_TIMEOUT\' | translate}}</span><span data-ng-if="!row.entity.leaveAt"> [<css-timer start-time="row.entity.updatedAt"></css-timer>]</span></div>',enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1},{name:"membername",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.membername || ''}}</span></div>"}],data:[],gridMenuTitleFilter:function(a){var b=g.defer();return b.resolve(f.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){})}},e.get({id:b.getCurrentUser().id,controller:"sms",controller1:"queues"}).$promise.then(function(b){a.table1.data=b.rows})["finally"](function(){j(a.table1.paginationPageSize>a.table1.data.length?a.table1.data.length:a.table1.paginationPageSize,"table1"),d.socket.on("user_has_sms_queue:save",function(c){c.UserId!=b.getCurrentUser().id||_.find(a.table1.data,{id:c.SmsQueueId})||a.table1.data.push({id:c.SmsQueueId,UserHasSmsQueue:c})}),d.socket.on("user_has_sms_queue:remove",function(c){c.UserId===b.getCurrentUser().id&&_.remove(a.table1.data,{id:c.SmsQueueId})})})["catch"](function(a){console.error(a)}),h.get({controller:"waiting",controller2:"applications"}).$promise.then(function(b){a.table2.data=b.rows})["finally"](function(){d.socket.on("report_sms_session:save",function(b){var c=_.find(a.table2.data,{id:b.id});c?(_.merge(c,b), -b.leaveAt&&i(function(){_.remove(a.table2.data,{id:b.id})},1e4)):b.leaveAt||a.table2.data.push(b)}),d.socket.on("report_sms_session:remove",function(b){_.remove(a.table2.data,{id:b.id})})})["catch"](function(a){console.log(a)})},a.initRoomStats=function(){return c.get({id:"dashboard"}).$promise.then(function(b){a.roomStatus=b,a.charts={interactions:{labels:[f.instant("APPLICATION_DASHBOARD_NEW"),f.instant("APPLICATION_DASHBOARD_OPEN"),f.instant("APPLICATION_DASHBOARD_PENDING"),f.instant("APPLICATION_DASHBOARD_CLOSED")],values:[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed],colours:["#44B6AE","#578EBE","#35AA47","#8775A7"]}},d.socket.on("dashboard:sms",function(b){a.roomStatus=b.roomStatus,a.charts.interactions.values=[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed]})})["catch"](function(a){console.error(a)})},a.initRoutingStats=function(){return h.get({id:"dashboard"}).$promise.then(function(b){a.routingStats=b})["catch"](function(a){console.error(a)})},a.initSocketListening=function(){d.socket.on("dashboard:sms",function(b){a.roomStatus=b.roomStatus,a.routingStats=b.routingStats,a.charts.interactions.values=[a.roomStatus["new"],a.roomStatus.open,a.roomStatus.pending,a.roomStatus.closed]})}}]),angular.module("xCallyShuttleApp").controller("DashboardVoiceCtrl",["$scope","$rootScope","$timeout","Auth","ReportQueue","ReportCall","Agent","Dashboard","socket",function(a,b,c,d,e,f,g,h,i){a.moment=moment,a.radioSwitch={size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"success",onColor:"danger"};var j=function(a,b){var c=a?30*a+130:177;angular.element(document.getElementsByName(b)[0]).css("height",c+"px")};a.initUser=function(){var b;return a.user=d.getCurrentUser(),a.voice={},a.$on("$destroy",function(){b&&(b.terminate(),i.socket.removeAllListeners("voice:inbound"),i.socket.removeAllListeners("voice:outbound:global"))}),e.get({controller:"dashboard"}).$promise.then(function(b){return a.voice.queues=b,f.get({controller:"dashboard"}).$promise}).then(function(b){a.voice.outbound=b})["catch"](function(a){console.error(a)})["finally"](function(){i.socket.on("voice:inbound",function(b){(a.voice.queues[b.type]>0||b.amount>0)&&(a.voice.queues[b.type]+=b.amount)}),i.socket.on("voice:outbound:global",function(b){_.merge(a.voice.outbound,b)})})},a.initAgent=function(){return d.getCurrentUser().$promise.then(function(b){return a.agent=b,a.timerSwitch={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"primary"},a.showTimers=!1,a.table1={enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,enableSorting:!0,showGridFooter:!0,paginationPageSizes:[10,25,50],paginationPageSize:10,columnDefs:[{name:"queue",headerCellFilter:"translate",displayName:"APPLICATION_QUEUE",cellClass:"text-center ui-grid-vcenter"},{name:"loggedAt",displayName:"logged At",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span am-time-ago="row.entity.loggedAt"></span></div>'}],data:[],onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){j(a.table1.paginationPageSize>a.table1.data.length?a.table1.data.length:a.table1.paginationPageSize,"table1")}),a.gridApi.pagination.on.paginationChanged(a,function(b,c){j(c>a.table1.data.length?a.table1.data.length:c,"table1")})}},a.table2={enableGridMenu:!1,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,multiSelect:!1,paginationPageSizes:[10,25,50],paginationPageSize:10,columnDefs:[{name:"queue",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate"},{name:"status",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><span data-ng-if="!row.entity.queuecallerleaveAt && !row.entity.queuecallerexit">{{\'APPLICATION_QUEUESTATUS_WAITING\' | translate}}</span><span data-ng-if="row.entity.queuecallerleaveAt && !row.entity.queuecallerabandon && !row.entity.queuecallercomplete && !row.entity.queuecallerexit">{{\'APPLICATION_ACTIVE\' | translate}}</span><span data-ng-if="row.entity.queuecallerleaveAt && row.entity.queuecallerabandon">{{\'APPLICATION_QUEUESTATUS_ABANDON\' | translate}}</span><span data-ng-if="row.entity.queuecallerleaveAt && row.entity.queuecallercomplete">{{\'APPLICATION_QUEUESTATUS_COMPLETE\' | translate}}</span><span data-ng-if="row.entity.queuecallerexitreason"> {{row.entity.queuecallerexitreason}}</span><span data-ng-if="!row.entity.queuecallercomplete && !row.entity.queuecallerabandon && !row.entity.queuecallerexit && grid.appScope.showTimers"> <css-timer start-time="row.entity.updatedAt"></css-timer></div>',enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1},{name:"caller",displayName:"APPLICATION_CALLER",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.calleridnum || ''}} {{row.entity.calleridname || ''}}</span></div>",enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1},{name:"position",displayName:"APPLICATION_POSITION",headerCellFilter:"translate"},{name:"lastAssignedTo",displayName:"APPLICATION_AGENT",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter"}],data:[],onRegisterApi:function(b){a.gridApi1=b,a.gridApi1.grid.registerDataChangeCallback(function(){j(a.gridApi1.core.getVisibleRows(a.gridApi1.grid).length,"table2")})}},a.table3={exporterCsvFilename:"abandoned_calls.csv",enableRowHeaderSelection:!0,paginationPageSizes:[10,25,50],paginationPageSize:10,enableFiltering:!0,enableSorting:!0,enableGridMenu:!1,flatEntityAccess:!0,showGridFooter:!0,fastWatch:!0,enableSelectAll:!1,enableHorizontalScrollbar:0,enableVerticalScrollbar:0,columnDefs:[{name:"queue",displayName:"APPLICATION_QUEUE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter"},{name:"caller",displayName:"APPLICATION_CALLER",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.calleridnum || ''}} {{row.entity.calleridname || ''}}</div>"},{name:"createdAt",displayName:"APPLICATION_DATE",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.updatedAt | date:'yyyy-MM-dd HH:mm:ss'}}</div>"},{name:"lastAssignedTo",cellClass:"text-center ui-grid-vcenter",displayName:"APPLICATION_LAST_ASSIGNED_TO",headerCellFilter:"translate"},{name:"assigned",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",cellTemplate:'<div class="centered-uigrid-td"><input data-ng-change="grid.appScope.updateItem(row.entity)", bs-switch ng-model="row.entity.assigned" type="checkbox" switch-active="{{ !row.entity.assigned || grid.appScope.agent.name === row.entity.lastAssignedTo }}" switch-on-text="{{ \'APPLICATION_ASSIGNED\' | translate }}" switch-off-text="{{ \'APPLICATION_FREE\' | translate }}" switch-on-color="{{ grid.appScope.radioSwitch.onColor }}" switch-off-color="{{ grid.appScope.radioSwitch.offColor }}" switch-animate="{{ grid.appScope.radioSwitch.animate }}" switch-size="{{ grid.appScope.radioSwitch.size }}" switch-label="{{ grid.appScope.radioSwitch.label }}" switch-icon="{{ grid.appScope.radioSwitch.icon }}" switch-radio-off="{{ grid.appScope.radioSwitch.radioOff }}" switch-label-width="{{ grid.appScope.radioSwitch.labelWidth }}" switch-handle-width="{{ grid.appScope.radioSwitch.handleWidth }}"></div>',enableFiltering:!1}],data:[],onRegisterApi:function(b){a.gridApi2=b,a.gridApi2.grid.registerDataChangeCallback(function(){j(a.gridApi2.core.getVisibleRows(a.gridApi2.grid).length,"table3")})}},g.get({id:a.agent.id,controller:"voice",controller1:"queues"}).$promise}).then(function(b){a.table1.data=_.map(b.rows,function(a){return{queue:a.UserHasVoiceQueue.queue,loggedAt:a.UserHasVoiceQueue.loggedAt,callstaken:a.UserHasVoiceQueue.callstaken,lastcall:a.UserHasVoiceQueue.lastcall}})}).then(function(){return j(a.table1.paginationPageSize>a.table1.data.length?a.table1.data.length:a.table1.paginationPageSize,"table1"),i.socket.on("user_has_voice_queue:remove",function(b){b.UserId===a.agent.id&&_.remove(a.table1.data,{queue:b.queue})}),i.socket.on("user_has_voice_queue:save",function(b){if(b.UserId===a.agent.id||b.membername===a.agent.name){var c=_.find(a.table1.data,{queue:b.queue});c?_.merge(c,b):!c&&b.logged&&a.table1.data.unshift({queue:b.queue,loggedAt:moment(),lastcall:null,callstaken:0})}}),e.get({id:"waiting",controller:"calls"}).$promise}).then(function(b){return a.table2.data=b.rows,e.get({controller:"abandoned",controller2:"all"}).$promise}).then(function(b){a.table3.data=b.rows,i.socket.on("report_queue:save",function(b){a.table2.data.push(b)}),i.socket.on("report_queue:update",function(b){var d=_.find(a.table2.data,{id:b.id});if(d&&(_.merge(d,b),(d.queuecallerabandon||d.queuecallercomplete||d.queuecallerexitreason||b.queuecallerleaveAt)&&c(function(){_.remove(a.table2.data,{id:b.id})},3e3)),b.queuecallerabandon){var e=_.find(a.table3.data,{id:b.id});e?_.merge(e,b):a.table3.data.unshift(b)}})})["catch"](function(a){console.error(a)})},a.updateItem=function(b){return e.update({id:b.id},{assigned:b.assigned,lastAssignedTo:b.assigned?a.agent.name:void 0}).$promise["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.desk",{url:"/desk",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").factory("DeskAccount",["$resource",function(a){return a("/api/desk/accounts/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("DeskListCtrl",["$scope","$http","$rootScope","xAlert","$translate","socket","Modal","stResource",function(a,b,c,d,e,f,g,h){a.conf={accountsByPage:{name:"10",value:10}},a.accountsByPage=[{name:"10",value:10},{name:"25",value:25},{name:"50",value:50},{name:"All",value:0}],a.accounts={checked:[]},a.check=function(b,c){c?a.accounts.checked=angular.copy(_.map(a.displayedDeskAccounts,"id")):a.accounts.checked=[]},a.getAccounts=function(b){return _.map(a.displayedDeskAccounts,function(a){var c={};return b.forEach(function(b){c[b]=a[b]}),c})},a.initList=function(b){f.unsyncUpdates("desk_account"),b.url="/api/desk/accounts",h.getPage(b).then(function(d){a.displayedDeskAccounts=d.rows,b.pagination.numberOfPages=d.total_pages,c.updateTableConfig(a.accountsByPage,a.displayedDeskAccounts.length),c.updateTableConfig(a.conf.accountsByPage,a.displayedDeskAccounts.length)}),f.socket.on("desk_account:save",function(){a.initList(b)}),f.socket.on("desk_account:remove",function(c){a.accounts.checked=_.without(a.accounts.checked,c.id),a.initList(b)})},a.deleteItem=g.confirm["delete"](function(a){b["delete"]("/api/desk/accounts/"+a).success(function(){d.show(e.instant("MESSAGE_WELL_DONE")+"!","success")}).error(function(a){d.error(a)})}),a.deleteItems=g.confirm["delete"](function(){b["delete"]("/api/desk/accounts",{params:{id:a.accounts.checked}}).success(function(){d.show(e.instant("MESSAGE_WELL_DONE"),"success")}).error(function(a){d.error(a)})}),a.checkAccount=function(a){b.get("/api/desk/accounts/"+a+"/check").then(function(){d.show(e.instant("MESSAGE_ACCOUNT_VERIFIED"),"success")})["catch"](function(){d.show(e.instant("MESSAGE_ACCOUNT_INVALID"),"danger")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.desk.list",{url:"/list",templateUrl:"app/desk/list/list.html",controller:"DeskListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("DeskViewCtrl",["$scope","$http","$stateParams","$translate","$location","WizardHandler","socket","xAlert","Modal","desk_com",function(a,b,c,d,e,f,g,h,i,j){a.$stateParams=c,a.config={autoHideScrollbar:!1,theme:"dark",advanced:{updateOnContentResize:!0},setHeight:500,scrollInertia:0},a.initConfiguration=function(){a.formsConfiguration={},a.configuration={}},a.goNext=function(){f.wizard().next()},a.formValidation=function(a){return a},a.$on("$destroy",function(){g.unsyncUpdates("desk_configuration"),g.unsyncUpdates("desk_field")}),a.initView=function(){b.get("/api/desk/accounts/"+c.id).success(function(b){a.account=b}).error(function(a){h.error(a)})},a.updateItem=function(){b.put("/api/desk/accounts/"+c.id,a.account).success(function(){h.show(d.instant("MESSAGE_WELL_DONE")+".","success")}).error(function(){h.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG")+".","danger")})},a.getConfigurations=function(){b.get("/api/desk/configurations",{params:{AccountId:c.id}}).success(function(b){a.configurations=b,g.socket.on("desk_configuration:remove",function(b){_.remove(a.configurations,{id:b.id})})}).error(function(a){h.error(a)})},a.deleteConfiguration=i.confirm["delete"](function(a){b["delete"]("api/desk/configurations/"+a).success(function(){h.show(d.instant("MESSAGE_WELL_DONE"),"success")}).error(function(){h.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})}),a.createConfiguration=function(){a.configuration.AccountId=c.id,b.post("api/desk/configurations",a.configuration).success(function(a){e.path("desk/view/"+c.id+"/configurations/settings/"+a.id)}).error(function(){h.show("Something went wrong!","danger")})},a.fieldType=["string","variable"],a.descFieldType=["string","key_value"],a.getFields=function(){b.get("/api/desk/accounts/"+c.id+"/fields").success(function(b){a.accountFields=j.fields.concat(b)}).error(function(a){h.error(a)})},a.getConfiguration=function(){b.get("/api/desk/configurations/"+c.configurationId).success(function(b){a.configurationName=b.name,a.subjectConfig=b.Subject,a.descriptionConfig=b.Description,a.fieldConfig=b.Field,g.socket.on("desk_field:remove",function(b){_.remove(a.subjectConfig,{id:b.id}),_.remove(a.descriptionConfig,{id:b.id}),_.remove(a.fieldConfig,{id:b.id})})}).error(function(a){h.error(a)})},a.getVariables=function(){b.get("/api/variables").success(function(b){a.variables=b.rows}).error(function(a){h.error(a)})},a.removeItem=function(a){b["delete"]("api/desk/fields/"+a.id).success(function(){h.show(d.instant("MESSAGE_WELL_DONE"),"success")}).error(function(){h.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.addItemSubject=function(){var d={type:"string",content:""};b.post("/api/desk/configurations/"+c.configurationId+"/subject",d).success(function(b){a.subjectConfig.push(b)}).error(function(){h.show("Something went wrong!","danger")})},a.addItemDescription=function(){var d={type:"string",content:""};b.post("/api/desk/configurations/"+c.configurationId+"/description",d).success(function(b){a.descriptionConfig.push(b)}).error(function(){h.show("Something went wrong!","danger")})},a.addItemField=function(){var d={content:""};b.post("/api/desk/configurations/"+c.configurationId+"/field",d).success(function(b){a.fieldConfig.push(b)}).error(function(){h.show("Something went wrong!","danger")})},a.updateField=function(a){b.put("/api/desk/fields/"+a.id,a).success(function(){}).error(function(){h.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG")+".","danger")})},a.changeType=function(b){"variable"===b.type?b.content="":"string"===b.type&&(b.VariableId=null),a.updateField(b)},a.changeDescType=function(b){"key_value"===b.type?(b.content="","string"===b.keyType?b.VariableId=null:"variable"===b.keyType&&(b.keyContent="")):"string"===b.type&&(b.VariableId=null,b.key="",b.keyContent=""),a.updateField(b)},a.changeFieldType=function(b){if(b.content="",b.idField){var c=_.find(a.accountFields,"id",b.idField);c&&(b.customField=_.result(c,"custom",!0))}a.updateField(b)},a.getSystemFieldOptions=function(b){if(b){var c=_.find(a.accountFields,"id",b);return c?c.data.choices?c.data.choices:null:void 0}}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.desk.view",{url:"/view/:id",templateUrl:"app/desk/view/view.html",controller:"DeskViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.desk.view.account",{url:"/account",templateUrl:"app/desk/view/view.account.html"}).state("main.desk.view.configurations",{url:"/configurations",templateUrl:"app/desk/view/view.configurations.html"}).state("main.desk.view.configurations.settings",{url:"/settings/:configurationId",templateUrl:"app/desk/view/view.configurationSettings.html",controller:"DeskViewCtrl"}).state("main.desk.view.configuration",{url:"/configuration",templateUrl:"app/desk/view/view.configuration.html"})}]),angular.module("xCallyShuttleApp").controller("DeskWizardCtrl",["$scope","$http","$location","$translate","xAlert","WizardHandler",function(a,b,c,d,e,f){a.translate=d,a.initWizard=function(){a.$translate=d,a.forms={},a.item={}},a.next=function(){f.wizard().next()},a.exitValidation=function(a){return a},a.createItem=function(){console.log(a.item),b.post("api/desk/accounts",a.item).success(function(){e.show(d.instant("MESSAGE_WELL_DONE")+".","success"),c.path("/desk/list")}).error(function(){e.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG")+".","danger")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.desk.wizard",{url:"/wizard",templateUrl:"app/desk/wizard/wizard.html",controller:"DeskWizardCtrl"})}]),angular.module("xCallyShuttleApp").factory("FreshdeskAccount",["$resource",function(a){return a("/api/freshdesk/accounts/:id/:controller",{id:"@id"},{update:{method:"PUT"},fields:{params:{controller:"fields"},isArray:!0},check:{params:{controller:"check"}}})}]).factory("FreshdeskConfiguration",["$resource",function(a){return a("/api/freshdesk/accounts/:accountId/configurations/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]).factory("FreshdeskField",["$resource",function(a){return a("/api/freshdesk/accounts/:accountId/configurations/:configurationId/fields/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.freshdesk",{url:"/freshdesk",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").controller("FreshdeskListCtrl",["$scope","FreshdeskAccount","gridOptions","xAlert","$translate",function(a,b,c,d,e){a.initView=function(){var d={exporterCsvFilename:"freshdesk_account.csv",columnDefs:[{name:"name",displayName:"APPLICATION_NAME"},{name:"username"},{name:"remoteUri",displayName:"APPLICATION_URI"},{name:"action",width:250,buttons:[{"class":"blue-hoki",href:"/freshdesk/view/{{row.entity.id}}/account",name:"profile"},{"class":"green-jungle",name:"check",onClick:"grid.appScope.checkAccount(row.entity.id)"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.checkAccount=function(a){return b.get({id:a,controller:"check"}).$promise.then(function(){d.show(e.instant("MESSAGE_ACCOUNT_VERIFIED"),"success")})["catch"](function(){d.show(e.instant("MESSAGE_ACCOUNT_INVALID"),"danger")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.freshdesk.list",{url:"/list",templateUrl:"app/freshdesk/list/list.html",controller:"FreshdeskListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.freshdesk.view.configurations",{url:"/configurations",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("FreshdeskViewConfigurationListCtrl",["$scope","$stateParams","$translate","gridOptions","FreshdeskConfiguration","$uibModal",function(a,b,c,d,e,f){a.initView=function(){var c={exporterCsvFilename:"freshdesk_configurations.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:125,buttons:[{"class":"blue-hoki",href:"/freshdesk/view/{{row.entity.AccountId}}/configurations/view/{{row.entity.id}}",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(e,c,a,{accountId:b.id})},a.createItem=function(){var b=f.open({animation:!0,templateUrl:"app/freshdesk/view/configuration/list/create.modal.html",controller:"FreshdeskCreateConfigurationCtrl"});b.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("FreshdeskCreateConfigurationCtrl",["$scope","$translate","$uibModalInstance","FreshdeskConfiguration","xAlert","$stateParams","channel",function(a,b,c,d,e,f,g){a.form={},a.item={},a.channels=g,a.item.channel="voice",a.item.type="Queue",a.save=function(){return d.save({accountId:f.id},a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.freshdesk.view.configurations.list",{url:"/list",templateUrl:"app/freshdesk/view/configuration/list/list.html",controller:"FreshdeskViewConfigurationListCtrl"})}]),angular.module("xCallyShuttleApp").controller("FreshdeskViewConfigurationViewCtrl",["$scope","$filter","$stateParams","$translate","socket","variable","xAlert","FreshdeskAccount","FreshdeskConfiguration","FreshdeskField","Variable","Tag",function(a,b,c,d,e,f,g,h,i,j,k,l){a.$on("$destroy",function(){e.unsyncUpdates("freshdesk_field")}),a.config={autoHideScrollbar:!1,theme:"dark",advanced:{updateOnContentResize:!0},setHeight:300,scrollInertia:0},a.fieldType=[{type:"string",title:"String"},{type:"variable",title:"Variable"},{type:"customVariable",title:"Custom Variable"}],a.descFieldType=[{type:"string",title:"String"},{type:"keyValue",title:"Key Value"}],a.groupVariableByGroup=function(a){switch(a.group){case"voice_queue":return"Voice: Queue";default:return"Other"}},a.initView=function(){a.configurationName="",a.subjectConfig=[],a.descriptionConfig=[],a.fieldConfig=[],a.selectedTags={tags:[]},a.variables=f},a.getConfiguration=function(){return i.get({accountId:c.id,id:c.configurationId}).$promise.then(function(b){a.configurationName=b.name,a.subjectConfig=b.Subject,a.descriptionConfig=b.Description,a.fieldConfig=b.Field,a.selectedTags={tags:_.map(b.Tags,function(a){return a.id})},e.socket.on("freshdesk_field:remove",function(b){_.remove(a.subjectConfig,{id:b.id}),_.remove(a.descriptionConfig,{id:b.id}),_.remove(a.fieldConfig,{id:b.id})})})["catch"](function(a){g.error(a)})},a.getCustomVariables=function(){return k.get().$promise.then(function(b){a.customVariables=b.rows})["catch"](function(a){g.error(a)})},a.getFields=function(){return h.fields({id:c.id}).$promise.then(function(c){a.accountFields=b("freshdesk")(c)})["catch"](function(a){g.error(a)})},a.addItem=function(b){var d={};switch(b){case"subject":case"description":d={type:"string",content:""};break;case"field":d={content:""}}return i.save({accountId:c.id,id:c.configurationId,controller:b},d).$promise.then(function(c){switch(b){case"subject":a.subjectConfig.push(c);break;case"description":a.descriptionConfig.push(c);break;case"field":a.fieldConfig.push(c)}})["catch"](function(a){g.error(a)})},a.changeFieldType=function(b){if(b.content="",b.variableName="",b.nameField="",b.VariableId=null,b.idField){var c=_.find(a.accountFields,"name",b.idField);c&&(b.customField=!c["default"])}a.updateField(b)},a.changeType=function(b){"variable"===b.type?(b.content="",b.variableName=""):"string"===b.type?(b.VariableId=null,b.variableName=""):"customVariable"===b.type&&(b.VariableId=null,b.content=""),a.updateField(b)},a.updateField=function(a){return j.update({accountId:c.id,configurationId:c.configurationId,id:a.id},a).$promise.then(function(){})["catch"](function(a){g.error(a)})},a.removeItem=function(a){return j["delete"]({accountId:c.id,configurationId:c.configurationId,id:a.id}).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){g.error(a)})},a.changeDescType=function(b){"keyValue"===b.type?(b.content="","string"===b.keyType?(b.VariableId=null,b.variableName=""):"variable"===b.keyType?(b.keyContent="",b.VariableId=null):"customVariable"===b.keyType&&(b.keyContent="",b.variableName="")):"string"===b.type&&(b.VariableId=null,b.variableName="",b.key="",b.keyContent=""),a.updateField(b)},a.getSystemFieldOptions=function(b){if(b){var c=_.find(a.accountFields,"name",b);return c&&c.hasOwnProperty("choices")?_.isArray(c.choices)?c.choices.length?c.choices:[]:_.keys(c.choices).length?_.keys(c.choices):[]:!1}},a.getTags=function(){return l.get().$promise.then(function(b){a.tags=b.rows})["catch"](function(a){g.error(a)})},a.updateTags=function(){return i.update({accountId:c.id,id:c.configurationId,controller:"tags"},a.selectedTags.tags).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE")+".","success")})["catch"](function(a){g.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.freshdesk.view.configurations.view",{url:"/view/:configurationId",templateUrl:"app/freshdesk/view/configuration/view/view.html",controller:"FreshdeskViewConfigurationViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("FreshdeskViewCtrl",["$scope","$http","$stateParams","$translate","$location","$filter","WizardHandler","socket","xAlert","Modal","FreshdeskAccount",function(a,b,c,d,e,f,g,h,i,j,k){a.initView=function(){return k.get({id:c.id}).$promise.then(function(b){a.account=b})["catch"](function(a){i.error(a)})},a.updateItem=function(){return k.update({id:c.id},a.account).$promise.then(function(){i.show(d.instant("MESSAGE_WELL_DONE")+".","success")})["catch"](function(a){i.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.freshdesk.view",{url:"/view/:id",templateUrl:"app/freshdesk/view/view.html",controller:"FreshdeskViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.freshdesk.view.account",{url:"/account",templateUrl:"app/freshdesk/view/view.account.html"})}]),angular.module("xCallyShuttleApp").controller("FreshdeskWizardCtrl",["$scope","$http","$location","$translate","xAlert","WizardHandler","FreshdeskAccount",function(a,b,c,d,e,f,g){a.translate=d,a.initWizard=function(){a.$translate=d,a.forms={},a.item={},a.item.serverUrl=c.protocol()+"://"+location.host},a.next=function(){f.wizard().next()},a.exitValidation=function(a){return a},a.createItem=function(){return g.save(a.item).$promise.then(function(){e.show(d.instant("MESSAGE_WELL_DONE")+".","success"),c.path("/freshdesk/list")})["catch"](function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.freshdesk.wizard",{url:"/wizard",templateUrl:"app/freshdesk/wizard/wizard.html",controller:"FreshdeskWizardCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.iframe",{url:"/iframe",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("IframeViewCtrl",["$scope","Auth","Integration","xAlert","$translate","$sce",function(a,b,c,d,e,f){a.Auth=b,a.initView=function(){return c.get({state:"iframe"}).$promise.then(function(c){a.iframe=_.first(c.rows),a.iframe.remoteUri?a.url=f.trustAsResourceUrl(a.iframe.remoteUri):b.isAgent()&&d.show(e.instant("MESSAGE_NO_IFRAME_CONFIGURED")+".","danger")})["catch"](function(a){d.error(a)})},a.updateItem=function(){return b.isAgent()?void 0:c.update({id:a.iframe.id},a.iframe).$promise.then(function(){d.show(e.instant("MESSAGE_WELL_DONE")+".","success")})["catch"](function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.iframe.view",{url:"/view",templateUrl:"app/iframe/view/view.html",controller:"IframeViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}})}]),angular.module("xCallyShuttleApp").factory("Integration",["$resource",function(a){return a("/api/integrations/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.integrations",{url:"/integrations",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:19}}})}]),angular.module("xCallyShuttleApp").controller("IntegrationListCtrl",["$scope","Modal","socket","FileUploader","Integration","xAlert",function(a,b,c,d,e,f){a.integrationsByPage=10;var g=a.uploader=new d({url:"api/integrations",autoUpload:!0,removeAfterUpload:!0});g.filters.push({name:"zipFilter",fn:function(a){var b="|"+a.type.slice(a.type.lastIndexOf("/")+1)+"|";return-1!=="|zip|".indexOf(b)}}),g.onSuccessItem=function(a,b,c,d){console.info("onSuccessItem",a,b,c,d),f.show(b.name,"success")},g.onErrorItem=function(a,b,c,d){console.info("onErrorItem",a,b,c,d),b.errors.forEach(function(a){f.error(err)})},a.deleteItem=b.confirm["delete"](function(a){e["delete"]({id:a},function(){f.show("Integration Removed","success")},function(a){f.error(a)})}),a.initList=function(){a.integrations=e.query({},function(a){c.syncUpdates("integration",a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.integrations.list",{url:"/list",templateUrl:"app/integration/list/list.html",controller:"IntegrationListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.js"]})}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.jscripty",{url:"/jscripty",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").factory("JscriptyProject",["$resource",function(a){return a("/api/jscripty/projects/:id/:controller/:action/:action2",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("JscriptyProjectListCtrl",["$scope","$uibModal","JscriptyProject","gridOptions","Auth",function(a,b,c,d,e){a.Auth=e,a.initView=function(){var b={exporterCsvFilename:"jscriptyProjects.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:300,buttons:[{"class":"blue-hoki",icon:"icon-settings",href:"/jscripty/projects/view/{{row.entity.id}}",hide:e.isAgent()},{"class":" green-turquoise",icon:"fa fa-play",onClick:"grid.appScope.openJscriptyTab(row.entity)"},{"class":"purple",icon:"icon-book-open",href:"/jscripty/projects/report/{{row.entity.id}}/sessions",hide:e.isAgent()},{"class":"red-sunglo",icon:"fa fa-trash",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)",hide:e.isAgent()}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){var c=b.open({animation:!0,templateUrl:"app/jscripty/project/list/list.create.modal.html",controller:"JscriptyProjectListCreateCtrl"});c.result.then(function(b){console.log(b),a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("JscriptyProjectListCreateCtrl",["$scope","$translate","$uibModalInstance","JscriptyProject","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){console.log(a),e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.jscripty.projects.list",{url:"/list",templateUrl:"app/jscripty/project/list/list.html", -controller:"JscriptyProjectListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.jscripty.projects",{url:"/projects",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("JscriptyProjectReportCtrl",["$scope","uiGridConstants","$http","$state","$stateParams","socket","Auth","Modal","xAlert","$translate","$rootScope","gridOptions","JscriptyProject","$location",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){a.projectStats={started:0,incomplete:0,completed:0},a.projectId=e.id,a.initView=function(){m.get({id:e.id}).$promise.then(function(b){a.project=b})["catch"](function(a){i.error(a)}),m.get({id:e.id,controller:"sessions"}).$promise.then(function(b){var c=_.groupBy(b.rows,"status");a.projectStats.started=c.started?c.started.length:0,a.projectStats.completed=c.completed?c.completed.length:0,a.projectStats.incomplete=c.incomplete?c.incomplete.length:0})["catch"](function(a){i.error(a)})},a.pdf=function(a,b){var c=[];if(a){var d=html2canvas(document.getElementById(a)),e=d.parse(),f=d.render(e),g=f.toDataURL("image/png");c.push({image:g,width:500,style:"img"})}b.length&&_.forEach(b,function(a){var b=html2canvas(document.getElementById(a.question_id)),d=b.parse(),e=b.render(d),f=e.toDataURL("image/png");c.push({image:f,width:500,style:"img"})});var h={content:c};pdfMake.createPdf(h).download("Project_summary.pdf")},a.getProjectSessions=function(){var c={exporterCsvFilename:"jscriptyProjects.csv",columnDefs:[{name:"session_id",displayName:"APPLICATION_SESSIONID"},{name:"queue",displayName:"APPLICATION_QUEUE"},{name:"membername",displayName:"APPLICATION_AGENT"},{name:"calleridnum",displayName:"APPLICATION_CALLERIDNUM"},{name:"createdAt",displayName:"APPLICATION_STARTEDAT",filterHeaderTemplate:'<div class="ui-grid-filter-container row"><div ng-repeat="colFilter in col.filters" class="col-md-6 col-md-offset-0 col-sm-5 col-sm-offset-0 col-xs-5 col-xs-offset-0"><div custom-grid-date-filter-header></div></div></div>',filters:[{name:"From",condition:b.filter.GREATER_THAN_OR_EQUAL},{name:"To",condition:b.filter.LESS_THAN_OR_EQUAL}]},{name:"completedAt",displayName:"APPLICATION_COMPLETEDAT",filterHeaderTemplate:'<div class="ui-grid-filter-container row"><div ng-repeat="colFilter in col.filters" class="col-md-6 col-md-offset-0 col-sm-5 col-sm-offset-0 col-xs-5 col-xs-offset-0"><div custom-grid-date-filter-header></div></div></div>',filters:[{name:"From",condition:b.filter.GREATER_THAN_OR_EQUAL},{name:"To",condition:b.filter.LESS_THAN_OR_EQUAL}]},{name:"status",displayName:"APPLICATION_STATUS"},{name:"last_question_id",displayName:"APPLICATION_LASTQUESTIONID"},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/jscripty/projects/report/{{row.entity.projectId}}/session/{{row.entity.session_id}}",name:"Detail"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteSession(row.entity.session_id)"}]}]};a.gridOptions=l.gridOptions(m,c,a,{id:e.id,controller:"sessions"})},a.deleteSession=function(b){m["delete"]({id:e.id,controller:"sessions",action:b}).$promise.then(function(b){a.gridOptions.getPage(),a.initView(),i.show(j.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){i.error(a)})},a.getSessionDetails=function(){m.get({id:e.id,controller:"sessions",action:e.sessionId}).$promise.then(function(b){a.session=b,a.sessionQuestions=b.ReportJscriptyQuestions})["catch"](function(a){i.error(a)})},a.getQuestionSummary=function(){var b={exporterCsvFilename:"jscriptyProjects.csv",columnDefs:[{name:"question_id",displayName:"APPLICATION_QUESTIONID"},{name:"question_type",displayName:"APPLICATION_QUESTIONTYPE"},{name:"question_label",displayName:"APPLICATION_QUESTIONLABEL"},{name:"question_text",displayName:"APPLICATION_QUESTION"},{name:"count",displayName:"APPLICATION_COUNT",enableFiltering:!1},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/jscripty/projects/report/"+e.id+"/detail/{{row.entity.question_id}}",name:"Detail"}]}]};a.gridOptions=l.gridOptions(m,b,a,{id:e.id,controller:"questions",action:"summary"})},a.getQuestionInputs=function(){var b={exporterCsvFilename:"jscriptyProjects.csv",columnDefs:[{name:"session_id",displayName:"APPLICATION_SESSIONID"},{name:"question_id",displayName:"APPLICATION_QUESTIONID",enableFiltering:!1},{name:"question_label",displayName:"APPLICATION_QUESTIONLABEL",enableFiltering:!1},{name:"question_text",displayName:"APPLICATION_QUESTION",enableFiltering:!1},{name:"input_label",displayName:"APPLICATION_INPUTLABEL",enableFiltering:!1},{name:"input_value",cellTemplate:'<div uib-tooltip="{{row.entity.input_value}}">{{row.entity.input_value}}</div>',displayName:"APPLICATION_INPUTVALUE",enableFiltering:!1}]};a.gridOptions=l.gridOptions(m,b,a,{id:e.id,controller:"inputs"})},a.getProjectDetail=function(){a.projectDetail=[],m.query({id:e.id,controller:"questions",action:"detail"}).$promise.then(function(b){console.log(e.questionId),e.questionId?a.projectDetail.push(_.find(b,function(a){return a.question_id==parseInt(e.questionId)})):a.projectDetail=b,console.log(a.projectDetail)})["catch"](function(a){i.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.jscripty.projects.report",{url:"/report/:id",templateUrl:"app/jscripty/project/report/report.html",controller:"JscriptyProjectReportCtrl"}).state("main.jscripty.projects.report.sessions",{url:"/sessions",templateUrl:"app/jscripty/project/report/report.sessions.html"}).state("main.jscripty.projects.report.summary",{url:"/summary",templateUrl:"app/jscripty/project/report/report.summary.html"}).state("main.jscripty.projects.report.inputs",{url:"/inputs",templateUrl:"app/jscripty/project/report/report.inputs.html"}).state("main.jscripty.projects.report.detail",{url:"/detail",templateUrl:"app/jscripty/project/report/report.detail.html"}).state("main.jscripty.projects.report.questionDetail",{url:"/detail/:questionId",controller:"JscriptyProjectReportCtrl",templateUrl:"app/jscripty/project/report/report.detail.html"}).state("main.jscripty.projects.report.sessionDetail",{url:"/session/:sessionId",controller:"JscriptyProjectReportCtrl",templateUrl:"app/jscripty/project/report/report.session.detail.html"})}]),angular.module("xCallyShuttleApp").controller("JscriptyProjectViewCtrl",["$scope","$http","$state","$stateParams","socket","Auth","Modal","xAlert","$translate","$rootScope",function(a,b,c,d,e,f,g,h,i,j){a.jscriptyProject={},a.getProject=function(){b.get("/api/jscripty/projects/"+d.id).success(function(b){a.jscriptyProject=b,angular.element(document).ready(function(){window.onerror=function(a,b,c){try{if(null!=a&&-1!=a.indexOf("Script error."));else{var d=new Image;d.src="assets/plugins/mxgraph/images/1x1.png?msg="+encodeURIComponent(a)+"&url="+encodeURIComponent(b)+"&lnum="+encodeURIComponent(c)}}catch(e){}},b.token=f.getToken();var a=new EditorUi(new Editor);a.openString(b.draft,b.name,b),a.editor.graphChangeListener=function(a,b){var c=b.properties.rtChange||!1;c||(this.modified=!0)}}),e.syncUpdates("jscripty_project",[b],function(a,c,d){c.id===b.id})})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.jscripty.projects.view",{url:"/view/:id",templateUrl:"app/jscripty/project/view/view.html",controller:"JscriptyProjectViewCtrl",authenticate:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",serie:!0,cache:!1,files:["assets/plugins/mxgraph/css/common.css","assets/plugins/mxgraph/css/explorer.css","assets/plugins/mxgraph/styles/grapheditor.css","assets/plugins/mxgraph/styles/custom.css","assets/plugins/jscripty/js/custom.js","assets/plugins/mxgraph/js/mxClient.js","assets/plugins/jscripty/js/Editor.js","assets/plugins/jscripty/js/Graph.js","assets/plugins/jscripty/js/EditorUi.js","assets/plugins/jscripty/js/Actions.js","assets/plugins/jscripty/js/Menus.js","assets/plugins/jscripty/js/Sidebar.js","assets/plugins/jscripty/js/Toolbar.js","assets/plugins/jscripty/js/Dialogs.js"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("LandingCtrl",["$scope","$location","$window","$timeout","Auth","Setting","YourDashboard",function(a,b,c,d,e,f,g){function h(b,c){var d,f,g=b.length;for(d=0;g>d;d++)if(_.includes(c,b[d].id))if(b[d].SubModules&&b[d].SubModules.length){if(f=h(b[d].SubModules,c))return f}else switch(b[d].id){case 2:var i={};i[e.getRole()]=!0;var j=_.find(a.tempDashboards,i);if(j)return f="/tools/yourdashboards/show/"+j.id,delete a.tempDashboards,f;break;default:return b[d].path}}function i(c){c||(a.message="MESSAGE_NO_AVAILABLE_MODULES"),d(function(){b.path(c)},500)}a.initLanding=function(){a.year=moment().year();var c;return f.get({controller:"info"}).$promise.then(function(b){return a.info=b,f.get({id:1}).$promise.then(function(a){return a})["catch"](function(){return null})}).then(function(d){var f,j=e.getCurrentUser().$promise;return j?j.then(function(e){if(f=e,c&&"admin"===e.role&&d.firstLogin)return void b.path("/adminreset");switch(f.role){case"user":if(_.includes(_.map(e.Modules,"id"),2))return g.get().$promise.then(function(b){a.tempDashboards=b.rows,i(h(f.Modules,_.map(e.Modules,"id")))})["catch"](function(){_.remove(f.Modules,{id:2}),i(h(f.Modules,_.map(e.Modules,"id")))});i(h(f.Modules,_.map(e.Modules,"id")));break;case"admin":case"agent":i("/dashboard/voice")}})["catch"](function(a){console.error(a),b.path("/login")}):void b.path("/login")})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("landing",{url:"/landing",templateUrl:"app/landing/landing.html",controller:"LandingCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/error.css","assets/css/login.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("LoginCtrl",["$scope","Auth","$location","$window","$rootScope","Setting","xAlert","$stateParams",function(a,b,c,d,e,f,g,h){a.year=moment().year(),a.recovered=h.reset,a.userLogin={},a.userSignUp={},a.loginSubmitted=!1,a.signupSubmitted=!1,a.errorLogin=!1,a.errorSignup=!1,a.errorLog="",a.forgotPassword=!1,a.showRecoverMessage=!1,a.flagLogin1=!1,a.getInfo=function(){return f.get({controller:"info"}).$promise.then(function(b){a.info=b})["catch"](function(a){g.error(a)})},a.toggleLogin=function(){a.flagLogin1=!a.flagLogin1},a.toggleForgotPassword=function(b){a.showRecoverMessage=!1,a.userLogin.email="",a.forgotPassword=b},e.bodyLayout="login",a.$on("$viewContentLoaded",function(){Metronic.init(),Layout.init()}),a.recover=function(){b.recover({email:a.userLogin.email}).then(function(){a.showRecoverMessage=!0})["catch"](function(b){a.showRecoverMessage=!1,g.error(b)})},a.login=function(d){a.loginSubmitted=!0,d.$valid?b.login({name:a.userLogin.name,password:a.userLogin.password,remember:a.userLogin.remember}).then(function(){c.path("/landing")})["catch"](function(b){a.errorLog=b.message||"error",a.errorLogin=!0}):a.errorLogin=!0},a.signup=function(c){a.signupSubmitted=!0,c.$valid?b.createUser({email:a.userSignUp.email,fullname:a.userSignUp.fullname,name:a.userSignUp.name,password:a.userSignUp.password,role:a.userSignUp.role,online:!0})["catch"](function(b){a.errorLog=b.message||"error",a.errorSignup=!0}):a.errorSignup=!0},a.loginOauth=function(a){d.location.href="/auth/"+a}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("login",{url:"/login",templateUrl:"app/login/login.html",params:{reset:null},controller:"LoginCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/login.css"]}])}]}})}]),angular.module("xCallyShuttleApp").factory("Action",["$resource",function(a){return a("/api/actions/:name/:controller",{name:"@name"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("Ami",["$resource",function(a){return a("/api/ami/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("ChooseContactModalCtrl",["$scope","$uibModalInstance","data","xAlert","$translate","Contact",function(a,b,c,d,e,f){a.open=function(a){b.close(a)},a.getContacts=function(){return f.search({controller:"listcontact"},c).$promise.then(function(b){a.contacts=b.rows})["catch"](function(a){d.error(a)})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("CloseEditedTabModalCtrl",["$scope","$uibModalInstance",function(a,b){a.close=function(){b.close()},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("CloseEditedTabModalJscriptyCtrl",["$scope","$uibModalInstance","project","JscriptyProject","xAlert",function(a,b,c,d,e){a.init=function(){a.project=c},a.close=function(){d.update({id:a.project.projectId,controller:"sessions",action:a.project.sessionId},{status:"incomplete",completedAt:Date(),last_question_id:a.project.lastQuestionId}).$promise.then(function(a){e.show("Project Ended","success")}),b.close()},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("ContactManagerSetDisposition",["$scope","$uibModalInstance","VoiceDisposition",function(a,b,c){a.initDisposition=function(){return c.get().$promise.then(function(b){a.dispositions=b.rows})["catch"](function(a){console.error(a)})},a.item={},a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss()}}]),angular.module("xCallyShuttleApp").controller("customGridDateFilterModalCtrl",["$scope","$rootScope","$log","$uibModalInstance","term","hasTime",function(a,b,c,d,e,f){if(a.hasTime=f,a.dateTime={},e)if(f){var g=e.split(" ");a.dateTime.filterDate=moment(g[0]),a.dateTime.time=e[1]?moment(g[1],"HH:mm"):moment()}else a.dateTime.filterDate=moment(e);else f&&(a.dateTime.time=moment());a.setFilterDate=function(b){d.close({date:moment(b).format("YYYY-MM-DD").toString(),time:f?a.dateTime.time?moment(a.dateTime.time).format("HH:mm").toString():moment().format("HH:mm").toString():null})},a.cancelDateFilter=function(){d.dismiss()}}]),angular.module("xCallyShuttleApp").controller("customGridTagsModalCtrl",["$scope","$rootScope","$log","$uibModalInstance","term","Tag","xAlert",function(a,b,c,d,e,f,g){a.initModal=function(){return a.item={},f.get().$promise.then(function(b){a.tags=_.map(b.rows,"name"),a.item.myTags=e})["catch"](function(a){console.log("error retrieving tags"),g.error(a),d.dismiss()})},a.setFilterTags=function(){d.close(a.item.myTags)},a.cancelTagsFilter=function(){d.dismiss()}}]),angular.module("xCallyShuttleApp").factory("templateVariable",["$translate",function(a){return[{id:"voice",label:a.instant("APPLICATION_VOICE"),title:a.instant("APPLICATION_VOICE"),groups:[{label:a.instant("APPLICATION_QUEUE"),values:[{value:"{{uniqueid}}",label:a.instant("APPLICATION_UNIQUEID"),description:a.instant("APPLICATION_UNIQUEID")},{value:"{{calleridnum}}",label:a.instant("APPLICATION_CALLERIDNUM"),description:a.instant("APPLICATION_CALLERIDNUM")},{value:"{{calleridname}}",label:a.instant("APPLICATION_CALLERIDNAME"),description:a.instant("APPLICATION_CALLERIDNAME")},{value:"{{queue}}",label:a.instant("APPLICATION_QUEUE"),description:a.instant("APPLICATION_QUEUE")},{value:"{{interface}}",label:a.instant("APPLICATION_INTERFACE"),description:a.instant("APPLICATION_INTERFACE")},{value:"{{membername}}",label:a.instant("APPLICATION_MEMBERNAME"),description:a.instant("APPLICATION_MEMBERNAME")},{value:"{{holdtime}}",label:a.instant("APPLICATION_HOLDTIME"),description:a.instant("APPLICATION_HOLDTIME")},{value:"{{talktime}}",label:a.instant("APPLICATION_TALKTIME"),description:a.instant("APPLICATION_TALKTIME")},{value:"{{connectedlinenum}}",label:a.instant("APPLICATION_CONNECTEDLINENUM"),description:a.instant("APPLICATION_CONNECTEDLINENUM")},{value:"{{connectedlinename}}",label:a.instant("APPLICATION_CONNECTEDLINENAME"),description:a.instant("APPLICATION_CONNECTEDLINENAME")},{value:"{{agentconnectAt}}",label:a.instant("APPLICATION_CONNECTED_AT"),description:a.instant("APPLICATION_CONNECTED_AT")},{value:"{{agentcalledAt}}",label:a.instant("APPLICATION_CALLED_AT"),description:a.instant("APPLICATION_CALLED_AT")},{value:"{{agentcompleteAt}}",label:a.instant("APPLICATION_COMPLETED_AT"),description:a.instant("APPLICATION_AGENT_CALLED_AT")},{value:"{{reason}}",label:a.instant("APPLICATION_REASON"),description:a.instant("APPLICATION_REASON")},{value:"{{lastevent}}",label:a.instant("APPLICATION_LAST_EVENT"),description:a.instant("APPLICATION_LAST_EVENT")},{value:"{{channel}}",label:a.instant("APPLICATION_CHANNEL"),description:a.instant("APPLICATION_CHANNEL")}]}]},{id:"chat",label:a.instant("APPLICATION_CHAT"),title:a.instant("APPLICATION_CHAT"),groups:[{label:a.instant("APPLICATION_VARIABLES"),values:[{value:"{{username}}",label:a.instant("APPLICATION_USERNAME"),description:a.instant("APPLICATION_USERNAME")},{value:"{{email}}",label:a.instant("APPLICATION_MAIL"),description:a.instant("APPLICATION_MAIL")},{value:"{{text}}",label:a.instant("APPLICATION_TEXT"),description:a.instant("APPLICATION_TEXT")},{value:"{{chatWebsite}}",label:a.instant("APPLICATION_WEBSITE"),description:a.instant("APPLICATION_WEBSITE")}]}]},{id:"mail",label:a.instant("APPLICATION_MAIL"),title:a.instant("APPLICATION_MAIL"),groups:[{label:a.instant("APPLICATION_INTERACTION"),values:[{value:"{{interactionId}}",label:a.instant("APPLICATION_INTERACTION_ID"),description:a.instant("APPLICATION_INTERACTION_ID")},{value:"{{subject}}",label:a.instant("APPLICATION_SUBJECT"),description:a.instant("APPLICATION_SUBJECT")},{value:"{{{body}}}",label:a.instant("APPLICATION_MESSAGE"),description:a.instant("APPLICATION_MESSAGE")},{value:"{{accountName}}",label:a.instant("APPLICATION_ACCOUNT"),description:a.instant("APPLICATION_ACCOUNT")},{value:"{{from}}",label:"From",description:"From"},{value:"{{to}}",label:"To",description:"To"},{value:"{{cc}}",label:"Cc",description:"Cc"},{value:"{{agentName}}",label:a.instant("APPLICATION_AGENT_NAME"),description:a.instant("APPLICATION_AGENT_NAME")},{value:"{{agentEmail}}",label:a.instant("APPLICATION_AGENT_EMAIL"),description:a.instant("APPLICATION_AGENT_EMAIL")},{value:"{{createdAt}}",label:a.instant("APPLICATION_CREATED_AT"),description:a.instant("APPLICATION_CREATED_AT")}]}]},{id:"sms",label:a.instant("APPLICATION_SMS"),title:a.instant("APPLICATION_SMS"),groups:[{label:a.instant("APPLICATION_INTERACTION"),values:[{value:"{{SmsRoomId}}",label:a.instant("APPLICATION_INTERACTION_ID"),description:a.instant("APPLICATION_INTERACTION_ID")},{value:"{{{body}}}",label:a.instant("APPLICATION_MESSAGE"),description:a.instant("APPLICATION_MESSAGE")},{value:"{{from}}",label:"From",description:"From"},{value:"{{to}}",label:"To",description:"To"},{value:"{{createdAt}}",label:a.instant("APPLICATION_CREATED_AT"),description:a.instant("APPLICATION_CREATED_AT")}]}]},{id:"openchannel",label:a.instant("APPLICATION_OPENCHANNEL"),title:a.instant("APPLICATION_OPENCHANNEL"),groups:[{label:a.instant("APPLICATION_INTERACTION"),values:[{value:"{{OpenchannelRoomId}}",label:a.instant("APPLICATION_INTERACTION_ID"),description:a.instant("APPLICATION_INTERACTION_ID")},{value:"{{{body}}}",label:a.instant("APPLICATION_MESSAGE"),description:a.instant("APPLICATION_MESSAGE")},{value:"{{from}}",label:"From",description:"From"},{value:"{{to}}",label:"To",description:"To"},{value:"{{createdAt}}",label:a.instant("APPLICATION_CREATED_AT"),description:a.instant("APPLICATION_CREATED_AT")}]}]},{id:"fax",label:a.instant("APPLICATION_FAX"),title:a.instant("APPLICATION_FAX"),groups:[{label:a.instant("APPLICATION_INTERACTION"),values:[{value:"{{FaxRoomId}}",label:a.instant("APPLICATION_INTERACTION_ID"),description:a.instant("APPLICATION_INTERACTION_ID")},{value:"{{uniqueid}}",label:a.instant("APPLICATION_UNIQUEID"),description:a.instant("APPLICATION_UNIQUEID")},{value:"{{calleridnum}}",label:a.instant("APPLICATION_CALLERIDNUM"),description:a.instant("APPLICATION_CALLERIDNUM")},{value:"{{calleridname}}",label:a.instant("APPLICATION_CALLERIDNAME"),description:a.instant("APPLICATION_CALLERIDNAME")},{value:"{{channel}}",label:a.instant("APPLICATION_CHANNEL"),description:a.instant("APPLICATION_CHANNEL")},{value:"{{from}}",label:"From",description:"From"},{value:"{{to}}",label:"To",description:"To"},{value:"{{accountName}}",label:a.instant("APPLICATION_ACCOUNT"),description:a.instant("APPLICATION_ACCOUNT")}]}]}]}]),angular.module("xCallyShuttleApp").controller("gridDatePickerFilterCtrl",["$scope","$timeout","$uibModal","uiGridConstants",function(a,b,c,d){b(function(){a.col.colDef.name;a.openDatePicker=function(b){var d=c.open({templateUrl:"app/main/customDateFilter.modal.html",controller:"customGridDateFilterModalCtrl",size:"md",windowClass:"custom-date-filter-modal",resolve:{term:[function(){return b.term||null}],hasTime:b.hasTime||!1}});d.result.then(function(c){a.colFilter.listTerm=[],a.colFilter.term=c.date,b.hasTime&&(a.colFilter.term+=" "+c.time)})}})}]),angular.module("xCallyShuttleApp").factory("gridOptions",["Modal","xAlert","$translate","$interval","$q","usSpinnerService",function(a,b,c,d,e,f){return{gridOptions:function(d,g,h,i,j,k,l){function m(a,b){a.filter&&a.filter.term&&b&&(o[a.name]=a.filter.term),a.filters&&(a.filters.length>1?a.filters.forEach(function(b){b.term?64===b.condition?o[a.name+"_uiFrom"]=b.term:256===b.condition&&(o[a.name+"_uiTo"]=b.term):64===b.condition?delete o[a.name+"_uiFrom"]:256===b.condition&&delete o[a.name+"_uiTo"]}):a.filters.length&&a.filters[0].term?o[a.name]=a.filters[0].term:delete o[a.name])}h.id=[];var n=k?"gridOptions"+k:"gridOptions",o={offset:0,limit:10},p={offset:0,limit:10};g.draggable&&(g.rowTemplate='<div grid="grid" class="ui-grid-draggable-row" draggable="true"><div ng-repeat="(colRenderIndex, col) in colContainer.renderedColumns track by col.colDef.name" class="ui-grid-cell" ng-class="{ \'ui-grid-row-header-cell\': col.isRowHeader, \'custom\': true }" ui-grid-cell></div></div>',g.useExternalPagination=!1,g.enablePaginationControls=!1,g.showGridFooter=!1);var q=function(a){var b=a&&a>h[n].paginationPageSize?h[n].paginationPageSize:a,c=b?30*b+120:177,d=angular.element(document.getElementsByName(n)).length?angular.element(document.getElementsByName(n)[0]):angular.element(document.getElementsByClassName("ui-grid")[0]);d.css("height",c+"px")},r=function(a,b){return h[n].enablePaginationControls||(delete o.offset,delete o.limit),f.spin("spinner-grid"),i=a||i,d=b||d,d.get(i?_.merge(o,i):o).$promise.then(function(a){h[n].totalItems=a.count,h[n].data=a.rows,q(a.rows.length),l&&l()})["catch"](function(a){console.error(a)})["finally"](function(){f.stop("spinner-grid")})};return h.deleteItem=a.confirm["delete"](function(a){var e=i?angular.copy(i):{};return _.merge(e,{id:a}),d.remove(e).$promise.then(function(){r(),b.show(c.instant("MESSAGE_WELL_DONE")+"!","success"),h.gridApi.selection.clearSelectedRows(),h.id=[]})["catch"](function(a){b.error(a)})}),h.deleteItems=a.confirm["delete"](function(){var a=i?angular.copy(i):{};return _.merge(a,{ids:h.id}),d["delete"](a).$promise.then(function(){r(),b.show(c.instant("MESSAGE_WELL_DONE")+"!","success"),h.gridApi.selection.clearSelectedRows(),h.id=[]})["catch"](function(a){b.error(a)})}),g.columnDefs.forEach(function(a){m(a,!0),a.hasOwnProperty("displayName")||(a.displayName="APPLICATION_"+a.name.toUpperCase()),a.headerCellFilter="translate",a.hasOwnProperty("buttons")&&(a.displayName="",a.cellClass="ui-grid-vcenter",a.enableSorting=!1,a.enableFiltering=!1,a.enableColumnMenu=!1,a.cellTemplate="<div>",a.buttons.forEach(function(b){if(b.directive)a.cellTemplate+=b.directive;else{if(a.cellTemplate+="<a",a.cellTemplate+=b.hide?' data-ng-hide="'+b.hide+'" ':" ",a.cellTemplate+=b["class"]?' class="btn btn-xs '+b["class"]+'" ':" ",a.cellTemplate+=b.href?' data-ng-href="'+b.href+'" ':" ",a.cellTemplate+=b.uisref?' ui-sref="'+b.uisref+'" ':" ",a.cellTemplate+=b.onClick?' data-ng-click="'+b.onClick+'" ':" ",a.cellTemplate+=b.title?' title="'+b.title+'"':"",a.cellTemplate+=">",a.cellTemplate+=b.icon?'<i class="'+b.icon+'"></i>':"",b.name)switch(b.name){case"delete":a.cellTemplate+='<i class="icon-trash" title="'+b.name+'"></i>';break;case"profile":case"settings":case"detail":case"embedding":a.cellTemplate+='<i class="icon-settings" title="'+b.name+'"></i>';break;case"view":a.cellTemplate+='<i class="icon-doc" title="'+b.name+'"></i>';break;case"clone":a.cellTemplate+='<i class="icon-docs" title="'+b.name+'"></i>';break;case"permits":a.cellTemplate+='<i class="icon-key"></i>';break;case"copy":a.cellTemplate+='<i class="fa fa-files-o" title="'+b.name+'"></i>';break;case"select":a.cellTemplate+='<i class="icon-check" title="'+b.name+'"></i>';break;case"preview":a.cellTemplate+='<i class="icon-magnifier" title="'+b.name+'"></i>';break;case"contacts":a.cellTemplate+='<i class="fa fa-users" title="'+b.name+'"></i>';break;case"download":case"export":a.cellTemplate+='<i class="fa fa-download" title="'+b.name+'"></i>';break;case"agents":a.cellTemplate+='<i class="icon-people" title="'+b.name+'"></i>';break;case"run":a.cellTemplate+='<i class="fa fa-cogs" title="'+b.name+'"></i>';break;case"mailRoom":a.cellTemplate+='<i class="fa fa-envelope"></i>';break;case"chatRoom":a.cellTemplate+='<i class="fa fa-users"></i>';break;case"faxRoom":a.cellTemplate+='<i class="fa fa-fax"></i>';break;case"smsRoom":a.cellTemplate+='<i class="glyphicon glyphicon-comment"></i>';break;case"check":a.cellTemplate+='<i class="fa fa-check" title="'+b.name+'"></i>';break;case"queues":a.cellTemplate+='<i class="icon-docs" title="'+b.name+'"></i>';break;default:a.cellTemplate+="{{'APPLICATION_"+b.name.toUpperCase()+"' | translate}}"}else a.cellTemplate+=b.displayName?"{{'"+b.displayName+"' | translate}}":"";a.cellTemplate+="</a> "}}),a.cellTemplate+="<div>",delete a.buttons)}),_.merge({enableGridMenu:!0,headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableRowSelection:!0,enableSelectAll:!0,enableFiltering:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,useExternalPagination:!0,useExternalSorting:!0,useExternalFiltering:!0,multiSelect:!0,getPage:r,pagOpt:o,gridMenuTitleFilter:function(a){var b=e.defer();return b.resolve(c.instant(a)),b.promise},exporterAllDataFn:function(){return p.offset=o.offset,p.limit=o.limit,o={offset:0,limit:null},r().then(function(){o.offset=p.offset,o.limit=p.limit,r()})},exporterFieldCallback:function(a,b,c,d){if("applications"===c.field&&b.entity.Applications){var e="";return _.forEach(b.entity.Applications,function(a){e+=a.app+"("+a.appdata.join(",")+")"}),e}return d},exporterHeaderFilter:c.instant,onRegisterApi:function(a){h.gridApi=a,h.gridApi.selection&&(h.gridApi.selection.on.rowSelectionChanged(h,function(a){a.isSelected?h.id.push(h.gridApi.grid.options.primaryKey?a.entity[h.gridApi.grid.options.primaryKey]:a.entity.id):_.pull(h.id,h.gridApi.grid.options.primaryKey?a.entity[h.gridApi.grid.options.primaryKey]:a.entity.id)}),h.gridApi.selection.on.rowSelectionChangedBatch(h,function(a){a[0].isSelected?h.id=_.union(h.id,_.map(a,h.gridApi.grid.options.primaryKey?"entity."+h.gridApi.grid.options.primaryKey:"entity.id")):_.map(a,h.gridApi.grid.options.primaryKey?"entity."+h.gridApi.grid.options.primaryKey:"entity.id").forEach(function(a){_.pull(h.id,a)})})),h.gridApi.core.on.sortChanged(h,function(a,b){0===b.length?o.order=null:o.order=b[0].name+" "+b[0].sort.direction.toUpperCase(),r()});for(var e=0;e<h.gridOptions.columnDefs.length;e++)if(h.gridOptions.columnDefs[e].hasOwnProperty("sort")){o.order=h.gridOptions.columnDefs[e].name+" "+h.gridOptions.columnDefs[e].sort.direction.toUpperCase();break}h.gridApi.pagination.on.paginationChanged(h,function(a,b){o.offset=(a-1)*b,o.limit=b,r()}),h.gridApi.core.on.filterChanged(h,function(){var a=this.grid;a.columns.forEach(function(a){m(a)}),r()}),h.gridApi.draggableRows&&h.gridApi.draggableRows.on.rowDropped(h,function(a){a.fromIndex!==a.toIndex&&d.update(i,h[n].data).$promise.then(function(){b.show(c.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){b.error(a)})["finally"](function(){r()})}),j||r()}},g)}}}]),angular.module("xCallyShuttleApp").controller("gridTagsFilterCtrl",["$scope","$timeout","$uibModal","uiGridConstants",function(a,b,c,d){b(function(){a.col.colDef.name;a.openTags=function(b){var d=c.open({templateUrl:"app/main/customTagsFilter.modal.html",controller:"customGridTagsModalCtrl",size:"md",resolve:{term:[function(){if(b.term){var a=b.term.split(";");return a.pop(),a}return[]}]}});d.result.then(function(b){a.colFilter.listTerm=[],b.length&&(a.colFilter.term=b.join(";")+";")})}})}]),angular.module("xCallyShuttleApp").controller("MainCtrl",["$scope","$rootScope","$translate","$timeout","socket","Auth","xAlert","$uibModal","$log","$state","Contact","$window","$location","localStorageService","YourDashboard","Setting","AuthResource","$cookieStore",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){function s(d){b.activeTour={main:!1},b.tourConfig={main:[{type:"function",fn:function(){b.tempTourPath=m.path()}},{type:"title",heading:c.instant("TOUR_MAIN_WELCOME"),text:'<div class="row"><div id="title-text" class="col-md-12"><span class="main-text">'+c.instant("TOUR_MAIN_DISCOVER_MOTION")+"</span><br/></div></div>",curtainClass:"myCurtainClass"}]},(f.isAdmin()||b.userModules[1])&&(b.tourConfig.main=b.tourConfig.main.concat([{type:"location_change",path:"/dashboard/voice"},{type:"title",heading:c.instant("TOUR_MAIN_DASHBOARD"),text:c.instant("TOUR_MAIN_DASHBOARD_MESSAGE"),curtainClass:"myCurtainClass"}])),(f.isAdmin()||b.userModules[2])&&d&&(b.tourConfig.main=b.tourConfig.main.concat([{type:"location_change",path:"/tools/yourdashboards/show/"+d.id},{type:"title",heading:c.instant("TOUR_MAIN_YOURDASHBOARD"),text:c.instant("TOUR_MAIN_YOURDASHBOARD_MESSAGE"),curtainClass:"myCurtainClass"}]),delete a.tempDashboards),(f.isAdmin()||b.userModules[4])&&(b.tourConfig.main=b.tourConfig.main.concat([{type:"location_change",path:"/staff/agents/list"},{type:"title",heading:c.instant("TOUR_MAIN_AGENTS"),text:c.instant("TOUR_MAIN_AGENTS_MESSAGE"),curtainClass:"myCurtainClass"}])),f.isAdmin()&&(b.tourConfig.main=b.tourConfig.main.concat([{type:"location_change",path:"/channels/voice/queues/list"},{type:"title",heading:c.instant("TOUR_MAIN_VOICE_QUEUE"),text:c.instant("TOUR_MAIN_VOICE_QUEUE_ADD_MESSAGE"),curtainClass:"myCurtainClass"}])),b.license.chat&&(f.isAdmin()||b.userModules[30])&&(b.tourConfig.main=b.tourConfig.main.concat([{type:"location_change",path:"/channels/chat/queues/list"},{type:"title",heading:c.instant("TOUR_MAIN_CHAT_QUEUE"),text:c.instant("TOUR_MAIN_CHAT_QUEUE_MESSAGE"),curtainClass:"myCurtainClass"}])),b.license.openchannel&&(f.isAdmin()||b.userModules[46])&&(b.tourConfig.main=b.tourConfig.main.concat([{type:"location_change",path:"/channels/openchannel/accounts/list"},{type:"title",heading:c.instant("TOUR_MAIN_OPENCHANNEL"),text:c.instant("TOUR_MAIN_OPENCHANNEL_MESSAGE"),curtainClass:"myCurtainClass"}])),(f.isAdmin()||b.userModules[14])&&(b.tourConfig.main=b.tourConfig.main.concat([{type:"location_change",path:"/square/projects/list"},{type:"title",heading:c.instant("TOUR_MAIN_SQUARE_PROJECT"),text:c.instant("TOUR_MAIN_SQUARE_PROJECT_MESSAGE"),curtainClass:"myCurtainClass"}])),(f.isAdmin()||b.userModules[52])&&(b.tourConfig.main=b.tourConfig.main.concat([{type:"location_change",path:"/tools/trunks/list"},{type:"title",heading:c.instant("TOUR_MAIN_TRUNKS"),text:c.instant("TOUR_MAIN_TRUNKS_MESSAGE"),curtainClass:"myCurtainClass"}])),(f.isAdmin()||b.userModules[52])&&(b.tourConfig.main=b.tourConfig.main.concat([{type:"location_change",path:"/tools/triggers/list"},{type:"title",heading:c.instant("TOUR_MAIN_TRIGGERS"),text:c.instant("TOUR_MAIN__MESSAGE"),curtainClass:"myCurtainClass"}])),b.license.jscripty&&(f.isAdmin()||b.userModules[50])&&(b.tourConfig.main=b.tourConfig.main.concat([{type:"location_change",path:"/jscripty/projects/list"},{type:"title",heading:c.instant("TOUR_MAIN_JSCRIPTY"),text:c.instant("TOUR_MAIN_JSCRIPTY_MESSAGE"), -curtainClass:"myCurtainClass"}])),(f.isAdmin()||b.userModules[17])&&(b.tourConfig.main=b.tourConfig.main.concat([{type:"location_change",path:"/analytics/reports/list"},{type:"title",heading:c.instant("TOUR_MAIN_REPORTS"),text:c.instant("TOUR_MAIN_REPORTS_MESSAGE"),curtainClass:"myCurtainClass"}])),b.tourConfig.main=b.tourConfig.main.concat([{type:"title",heading:c.instant("TOUR_MAIN_END"),text:c.instant("TOUR_MAIN_END_MESSAGE"),curtainClass:"myCurtainClass"}]),n.get("skipTour")||(b.activeTour.main=!0)}a.awesomeThings=[],b.workspaces=[],a.Auth=f,b.userModules={},a.keepMeLoggedModalInstance=void 0,a.agentLogout=function(a,b){var d=h.open({animation:!0,templateUrl:"app/channels/realtime/view/agent/agent.modal.logout.html",controller:"RealtimeViewAgentLogoutModalCtrl",resolve:{name:function(){return a}}});d.result.then(function(){return q.get({controller:"logout",controller2:"agent",param:b}).$promise.then(function(){g.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){console.error(a)})},function(){i.info("Modal dismissed at: "+new Date)})},b.initTours=function(){return f.isAdmin()||b.userModules[2]?o.get().$promise.then(function(a){var b={};b[f.getRole()]=!0,s(_.find(a.rows,b))})["catch"](function(a){console.log(a)}):void s()},b.onTourFinish=function(){n.set("skipTour",!0),b.tempTourPath&&m.path(b.tempTourPath)},b.onTourSkip=function(){n.set("skipTour",!0)},a.select=function(a){switch(a.type){case"chatRoom":case"mailRoom":case"faxRoom":a.unread=0}},e.socket.on("agent:save",function(c){!c.online&&f.isAgent()&&(a.keepMeLoggedModalInstance||(a.keepMeLoggedModalInstance=h.open({animation:!0,backdrop:"static",keyboard:!1,templateUrl:"app/main/keepMeLogged.modal.html",controller:["$scope","$uibModalInstance",function(a,b){a.close=function(){b.close(!0)},a.cancel=function(){b.close(!1)}}]}),a.keepMeLoggedModalInstance.result.then(function(a){a?(b.settings.logoutOnWindowClose=!1,l.location.reload()):(f.logout(),m.path("/login"))})))}),a.openTdTab=function(a){b.workspaces.push({type:"tdDisposal",name:"Motion Dialer Disposition","class":"icon-control-forward",active:!0,spooler:a})},a.deselect=function(){},l.onbeforeunload=function(){if(f.isAgent()&&b.settings.logoutOnWindowClose){var a=new XMLHttpRequest;a.open("GET","/auth/local/logout",!1),a.setRequestHeader("Content-type","application/json"),a.setRequestHeader("Authorization","Bearer "+r.get("token")),a.send(),f.logout()}return null},a.isAdmin=f.isAdmin,a.isLoggedIn=f.isLoggedIn,a.getCurrentUser=f.getCurrentUser,a.CurrentUser=f.getCurrentUser(),e.socket.on("user_has_voice_queue_permit:change",function(){a.CurrentUser=f.getCurrentUser()}),e.socket.on("user_has_chat_queue_permit:change",function(){a.CurrentUser=f.getCurrentUser()}),e.socket.on("user_has_mail_queue_permit:change",function(){a.CurrentUser=f.getCurrentUser()}),e.socket.on("user_has_fax_queue_permit:change",function(){a.CurrentUser=f.getCurrentUser()}),e.socket.on("user_has_sms_queue_permit:change",function(){a.CurrentUser=f.getCurrentUser()}),a.mainTab={active:!0},a.closeJscriptyTab=function(a){if(b.workspaces[a].edited){var c=h.open({animation:!0,templateUrl:"app/main/closeEditedTab.modal.jscripty.html",controller:"CloseEditedTabModalJscriptyCtrl",resolve:{project:b.workspaces[a]}});c.result.then(function(){b.workspaces.splice(a,1)})}else b.workspaces.splice(a,1)},b.closeTab=function(a){var c;b.workspaces[a].edited?"jscripty"===b.workspaces[a].type?b.workspaces[a].end():(c=h.open({animation:!0,templateUrl:"app/main/closeEditedTab.modal.html",controller:"CloseEditedTabModalCtrl"}),c.result.then(function(){b.workspaces.splice(a,1)},function(){i.info("Modal dismissed at: "+new Date)})):b.workspaces.splice(a,1)},a.createContact=function(d,e,f){var h=_.clone(e);return h.CompanyId||delete h.CompanyId,h.dateOfBirth&&(h.dateOfBirth=moment(h.dateOfBirth).format("DD/MM/YYYY")),k.save(h).$promise.then(function(e){b.workspaces.splice(d,1);var h=e.firstName;e.lastName&&(h+=" "+e.lastName),a.openContactTab({firstName:e.firstName,lastName:e.lastName,id:e.id},f),g.show(c.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){g.error(a)})};var t=function(b){var c=h.open({animation:!0,templateUrl:"app/main/chooseContact.modal.html",controller:"ChooseContactModalCtrl",resolve:{data:function(){return b}}});c.result.then(function(c){c?a.openContactTab(c,b):a.newContact(b)},function(){i.info("Modal dismissed at: "+new Date)})};a.updateContact=function(a,d){var e=angular.copy(d);return e.CompanyId||(e.CompanyId=null),e.dateOfBirth&&(e.dateOfBirth=moment(e.dateOfBirth).format("DD/MM/YYYY")),k.update({id:e.id},e).$promise.then(function(){b.workspaces[a].edited=!1,g.show(c.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){g.error(a)})},e.socket.on("report_integration:contactmanager",function(a){t(a)}),e.socket.on("report_integration:webPopup",function(a){"motion"===a.type?b.workspaces.push({type:"webPopup",name:"Web Popup","class":"icon-info",active:!0,data:a}):l.open(a.url||"","_blank")}),e.socket.on("report_integration:jscripty",function(b){a.openJscriptyTab({name:"Jscripty",id:b.projectId,calleridnum:b.calleridnum,calleridname:b.calleridname,queue:b.queue,membername:b.membername})}),e.socket.on("report_integration:sugarcrm",function(a){l.open(a.url,"_blank")}),e.socket.on("report_integration:freshdesk",function(a){l.open(a.url,"_blank")}),e.socket.on("report_integration:zendesk",function(a){l.open(a.url,"_blank")}),e.socket.on("report_integration:salesforce",function(a){console.log("data",a,f.getCurrentUser()),"classic"===a.integrationType&&a.membername===f.getCurrentUser().name&&l.open(a.url,"_blank")}),e.socket.on("report_integration:tdDisposal",function(b){a.openTdTab(b)}),b.openContactTab=function(a,c){var d=_.find(b.workspaces,{contactID:a.id});if(d)d.active=!0,d.data=c,d.synchCall();else{var e=a.firstName;a.lastName&&(e+=" "+a.lastName),b.workspaces.push({name:e,type:"contact",contactID:a.id,"class":"icon-user",active:!0,data:c||null})}},a.openJscriptyTab=function(a){b.workspaces.push({name:a.name,type:"jscripty",active:!0,data:a})},a.newContact=function(a){b.workspaces.push({name:"New Contact",type:"newContact","class":"icon-user",active:!0,data:a||null})},a.$on("$viewContentLoaded",function(){Metronic.init()}),b.language=c.use(),a.changeLanguage=function(a){return c.use(a).then(function(a){b.language=a,-1!==["main.jscripty.projects.view","main.square.projects.view"].indexOf(j.current.name)&&l.location.reload()})["catch"](function(a){console.error(a)})},d(function(){p.get({id:1}).$promise.then(function(c){"admin"===a.CurrentUser.role&&c.firstLogin?m.path("/adminreset"):f.getCurrentUser().$promise.then(function(a){a.Modules.forEach(function(a){b.userModules[a.id]=!0}),b.initTours()})["catch"](function(a){g.error(a)})})["catch"](function(a){g.error(a)})}),a.$on("$destroy",function(){e.unsyncUpdates("user_has_voice_queue_permit"),e.unsyncUpdates("user_has_chat_queue_permit"),e.unsyncUpdates("user_has_mail_queue_permit"),e.unsyncUpdates("user_has_fax_queue_permit"),e.unsyncUpdates("user_has_sms_queue_permit")})}]),angular.module("xCallyShuttleApp").directive("ngSpinnerBar",["$rootScope",function(a){return{link:function(b,c){c.addClass("hide"),a.$on("$stateChangeStart",function(){"spinner-page"===c[0].id&&c.removeClass("hide")}),a.$on("$stateChangeSuccess",function(){"spinner-page"===c[0].id&&(c.addClass("hide"),$("body").removeClass("page-on-load"),Layout.setSidebarMenuActiveLink("match"),setTimeout(function(){Metronic.scrollTop()},1e3))}),a.$on("$spinnerStart",function(){"spinner-request"===c[0].id&&c.removeClass("hide")}),a.$on("$spinnerStop",function(){"spinner-request"===c[0].id&&c.addClass("hide")}),a.$on("$stateNotFound",function(){"spinner-page"===c[0].id&&c.addClass("hide")}),a.$on("$stateChangeError",function(){"spinner-page"===c[0].id&&c.addClass("hide")})}}}]).directive("a",function(){return{restrict:"E",link:function(a,b,c){(c.ngClick||""===c.href||"#"===c.href)&&b.on("click",function(a){a.preventDefault()})}}}).directive("nxEqual",function(){return{require:"ngModel",link:function(a,b,c,d){return c.nxEqual?(a.$watch(c.nxEqual,function(a){d.$setValidity("nxEqual",a===d.$viewValue)}),void d.$parsers.push(function(b){var e=b===a.$eval(c.nxEqual);return d.$setValidity("nxEqual",e),e?b:void 0})):void console.error("nxEqual expects a model as an argument!")}}}).directive("ngEnter",function(){return function(a,b,c){b.bind("keydown keypress",function(b){13===b.which&&(a.$apply(function(){a.$eval(c.ngEnter)}),b.preventDefault())})}}).directive("dropdownMenuHover",function(){return{link:function(a,b){b.dropdownHover()}}}).directive("uiSelectRequired",function(){return{require:"ngModel",link:function(a,b,c,d){d.$validators.uiSelectRequired=function(a){return a&&a.length}}}}).directive("rpattern",function(){return{restrict:"A",require:"ngModel",link:function(a,b,c,d){function e(a,b){return null==b||""===b||!h||a.test(b)?(d.$setValidity("pattern",!0),b):void d.$setValidity("pattern",!1)}var f,g=c.rpattern,h=!0;g&&(g.match(/^\/(.*)\/$/)?(g=new RegExp(g.substr(1,g.length-2)),f=function(a){return e(g,a)}):f=function(b){var c=a.$eval(g);if(!c||!c.test)throw new Error("Expected "+g+" to be a RegExp but was "+c);return e(c,b)}),d.$formatters.push(f),d.$parsers.push(f),c.$observe("required",function(a){h=a,f(d.$viewValue)})}}}).directive("newContact",["$compile","xAlert","socket","$translate","$timeout","List","Tag","Company","ReportCall","$uibModal","$rootScope","Auth",function(a,b,c,d,e,f,g,h,i,j,k,l){return{restrict:"E",scope:{workspace:"=",index:"=",submit:"&onSubmit"},templateUrl:"app/main/template/template.contactTab.html",compile:function(a,m){return function(a,m,n){function o(){a.$watch("contact",function(b,c){angular.equals(b,c)||(a.workspace.edited=!0)},!0)}a.license=k.license,a.Auth=l,a.firstLoad=!0,a.detail={tab:"main"},a.contact={CompanyId:"",disposed:!1},a.submitButtonLabel=d.instant("APPLICATION_CONFIRM"),a.getAgent=function(){return l.getCurrentUser().$promise.then(function(b){a.agent=b})["catch"](function(a){b.error(a)})},a.companyInfo=function(b){j.open({animation:!0,size:"lg",templateUrl:"app/main/company.info.modal.html",controller:["$scope","$uibModalInstance","company",function(a,b,c){a.company=c,a.close=function(){b.dismiss("cancel")}}],resolve:{company:_.find(a.companies,{id:b})}})},a.callPhoneBar=function(c,e){var f;switch(e){case"call":f="http://127.0.0.1:"+a.agent.phoneBarRemoteControlPort+"/api/originate/"+c;break;case"transfer":f="http://127.0.0.1:"+a.agent.phoneBarRemoteControlPort+"/api/transfer?number="+c;break;default:f="http://127.0.0.1:"+a.agent.phoneBarRemoteControlPort+"/api/originate/"+c}return $http.get(f).success(function(){b.show(d.instant("MESSAGE_WELL_DONE"),"success")}).error(function(a){console.error(a),b.error({message:d.instant("MESSAGE_UNABLE_TO_CONTACT_PHONEBAR")})})},a.dispose=function(){return j.open({animation:!0,templateUrl:"app/main/cm.disposition.modal.html",controller:"ContactManagerSetDisposition"}).result.then(function(c){return i.update({id:a.workspace.data.uniqueid},c).$promise.then(function(){a.contact.disposed=!0,a.workspace.data.agentDisposition=c.agentDisposition,b.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){b.error(a)})})},a.init=function(){if(a.getTags(),a.getCompanies(),a.getLists(),a.getAgent(),a.workspace.data){if(a.enableDisposal=!1,"queue"===a.workspace.data.subtypeChannel?(a.contact.firstName=a.workspace.data.calleridname?a.workspace.data.calleridname:a.workspace.data.messageId?a.workspace.data.messageId:a.workspace.data.uniqueid?a.workspace.data.uniqueid:"",a.workspace.data.calleridnum&&(a.contact.phone=a.workspace.data.calleridnum)):(a.contact.firstName=a.workspace.data.destcalleridname?a.workspace.data.destcalleridname:a.workspace.data.messageId?a.workspace.data.messageId:a.workspace.data.uniqueid?a.workspace.data.uniqueid:"",a.workspace.data.destcalleridnum&&(a.contact.phone=a.workspace.data.destcalleridnum)),a.workspace.data.from&&(a.contact.email=a.workspace.data.from),a.workspace.data.uniqueid)return i.get({id:a.workspace.data.uniqueid}).$promise.then(function(){a.enableDisposal=!0})["catch"](function(){c.socket.on("report_call:save",function(b){b.uniqueid===a.workspace.data.uniqueid&&(a.enableDisposal=!0)})});a.workspace.data.CompanyId&&(a.contact.CompanyId=a.workspace.data.CompanyId)}},a.openRoom=function(a,b,c){var d=_.find(k.workspaces,{id:a,type:b});if(d)d.active=!0;else{var e;switch(b){case"mailRoom":e="icon-envelope";break;case"chatRoom":e="fa fa-users";break;case"faxRoom":e="fa fa-fax";break;case"smsRoom":e="glyphicon glyphicon-comment"}k.workspaces.push({id:a,type:b,"class":e,active:!0,data:c})}},a.getLists=function(){return f.get().$promise.then(function(b){if(a.lists=b.rows,c.syncUpdates("list",a.lists),a.workspace.data&&a.workspace.data.ListId&&_.find(a.lists,{id:a.workspace.data.ListId}))a.contact.ListId=a.workspace.data.ListId;else{var d=_.find(a.lists,{defaultEntry:!0});a.contact.ListId=d?d.id:a.lists[0]?a.lists[0].id:null}a.getCustomFields()})["catch"](function(a){b.error(a)})},a.getCustomFields=function(){return f.get({listId:a.contact.ListId,controller:"customfields",id:"all"}).$promise.then(function(b){a.customFields=[],b.rows.forEach(function(b){try{"select"===b.type&&(b.values=JSON.parse(b.values)),a.customFields.push(b)}catch(c){console.log("Cf not valid:",b.alias)}}),!a.firstLoad||a.workspace.data?(a.workspace.edited=!0,a.firstLoad=!1):(a.firstLoad=!1,o())})["catch"](function(a){console.error(a),b.error(a)})},a.getTags=function(){return g.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a),b.error(a)})},a.getCompanies=function(){return h.get().$promise.then(function(b){a.companies=b.rows,a.companies.unshift({id:"",name:"-- None --"}),c.syncUpdates("company",a.companies)})["catch"](function(a){console.error(a),b.error(a)})},e(function(){a.init()})}}}}]).directive("contact",["$compile","xAlert","socket","$timeout","List","Tag","Company","Contact","$translate","gridOptions","$uibModal","ReportCall","$rootScope","usSpinnerService","uiGridConstants","$log","Auth","$http",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){return{restrict:"E",scope:{workspace:"=",index:"=",submit:"&onSubmit"},templateUrl:"app/main/template/template.contactTab.html",compile:function(a,j){return function(a,j,s){function t(b){var c=[],d={};_.forEach(a.columns[a.log[b].show][a.log[b].detail].indexes,function(e,f){d={name:e,displayName:a.columns[a.log[b].show][a.log[b].detail].header[f],headerCellFilter:"translate",enableSorting:!1,enableColumnMenu:!1},"createdAt"===e&&(d.cellTemplate="<div class=\"centered-uigrid-td\">{{row.entity.createdAt | date:'dd/MM/yyyy HH:mm:ss'}}</div>",d.filterHeaderTemplate='<div class="ui-grid-filter-container row"><div ng-repeat="colFilter in col.filters" class="col-md-6 col-md-offset-0 col-sm-5 col-sm-offset-0 col-xs-5 col-xs-offset-0"><div custom-grid-date-filter-header></div></div></div>',d.filters=[{name:"From",condition:o.filter.GREATER_THAN_OR_EQUAL},{name:"To",condition:o.filter.LESS_THAN_OR_EQUAL}]),c.push(d)}),a.columns[a.log[b].show][a.log[b].detail].actions&&c.push(a.columns[a.log[b].show][a.log[b].detail].actions),c.forEach(function(a){u(a,b,!0),a.hasOwnProperty("displayName")||(a.displayName="APPLICATION_"+a.name.toUpperCase()),a.headerCellFilter="translate",a.hasOwnProperty("buttons")&&(a.displayName="",a.cellClass="ui-grid-vcenter",a.enableSorting=!1,a.enableFiltering=!1,a.enableColumnMenu=!1,a.cellTemplate="<div>",a.buttons.forEach(function(b){if(b.directive)a.cellTemplate+=b.directive;else{if(a.cellTemplate+="<a",a.cellTemplate+=b.hide?' data-ng-hide="'+b.hide+'" ':" ",a.cellTemplate+=b["class"]?' class="btn btn-xs '+b["class"]+'" ':" ",a.cellTemplate+=b.href?' data-ng-href="'+b.href+'" ':" ",a.cellTemplate+=b.uisref?' ui-sref="'+b.uisref+'" ':" ",a.cellTemplate+=b.onClick?' data-ng-click="'+b.onClick+'" ':" ",a.cellTemplate+=b.title?' title="'+b.title+'"':"",a.cellTemplate+=">",a.cellTemplate+=b.icon?'<i class="'+b.icon+'"></i>':"",b.name)switch(b.name){case"delete":a.cellTemplate+='<i class="fa fa-trash"></i>';break;case"profile":case"settings":case"detail":case"embedding":a.cellTemplate+='<i class="icon-settings"></i>';break;case"agents":a.cellTemplate+='<i class="icon-people"></i>';break;case"run":a.cellTemplate+='<i class="fa fa-cogs"></i>';break;case"mailRoom":a.cellTemplate+='<i class="fa fa-envelope"></i>';break;case"chatRoom":a.cellTemplate+='<i class="fa fa-users"></i>';break;case"faxRoom":a.cellTemplate+='<i class="fa fa-fax"></i>';break;case"smsRoom":a.cellTemplate+='<i class="glyphicon glyphicon-comment"></i>';break;default:a.cellTemplate+="{{'APPLICATION_"+b.name.toUpperCase()+"' | translate}}"}else a.cellTemplate+=b.displayName?"{{'"+b.displayName+"' | translate}}":"";a.cellTemplate+="</a> "}}),a.cellTemplate+="<div>",delete a.buttons)});var e={enablePaginationControls:!0,exporterCsvFilename:b+".csv",columnDefs:c,enableGridMenu:!0,headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:10,useExternalPagination:!0,useExternalSorting:!0,useExternalFiltering:!0,showTreeExpandNoChildren:!0,data:[],gridMenuTitleFilter:function(a){var b=$q.defer();return b.resolve(i.instant(a)),b.promise},onRegisterApi:function(c){a.gridApi=c,a.gridApi.grid.registerDataChangeCallback(function(){}),a.gridApi.core.on.sortChanged(a,function(a,c){0===c.length?w.order=null:w.order=c[0].name+" "+c[0].sort.direction.toUpperCase(),x(b)}),a.gridApi.pagination.on.paginationChanged(a,function(a,c){w.offset=(a-1)*c,w.limit=c,x(b)}),a.gridApi.core.on.filterChanged(a,function(){var a=this.grid;a.columns.forEach(function(a){u(a,b)}),x(b)})}};x(b,e)}function u(a,b,c){a.filter&&a.filter.term&&c&&(w[b][a.name]=a.filter.term),a.filters&&(a.filters.length>1?a.filters.forEach(function(c){c.term?64===c.condition?w[b][a.name+"_uiFrom"]=c.term:256===c.condition&&(w[b][a.name+"_uiTo"]=c.term):64===c.condition?delete w[b][a.name+"_uiFrom"]:256===c.condition&&delete w[b][a.name+"_uiTo"]}):a.filters.length&&a.filters[0].term?w[b][a.name]=a.filters[0].term:delete w[b][a.name])}function v(){a.$watch("contact",function(b,c){b.disposed!==c.disposed||angular.equals(b,c)||(a.workspace.edited=!0)},!0)}a.moment=moment,a.license=m.license,a.detail={tab:"main"},a.log={daily:{show:"phone",type:"inbound",detail:"general"},history:{show:"phone",type:"inbound",detail:"general"}},a.columns={phone:{general:{header:["APPLICATION_SOURCE","APPLICATION_DESTINATION","APPLICATION_CALL_STATUS","APPLICATION_DISPOSITION","APPLICATION_DATE"],indexes:["source","destination","disposition","agentDisposition","createdAt"]},queue:{header:["APPLICATION_CALLERID","APPLICATION_QUEUE","APPLICATION_DATE"],indexes:["calleridnum","queue","createdAt"]}},email:{general:{header:["APPLICATION_FROM","APPLICATION_TO","APPLICATION_SUBJECT","APPLICATION_DISPOSITION","APPLICATION_DATE"],indexes:["from","account","subject","disposition","createdAt"],actions:{name:"action",displayName:"",width:40,buttons:[{"class":"green",name:"mailRoom",onClick:"grid.appScope.openRoom(row.entity.id, 'mailRoom')"}]}}},chat:{general:{header:["APPLICATION_WEBSITE","APPLICATION_VISITOR","APPLICATION_DISPOSITION","APPLICATION_DATE"],indexes:["website","contact","disposition","createdAt"],actions:{name:"action",displayName:"",width:40,buttons:[{"class":"green",name:"chatRoom",onClick:"grid.appScope.openRoom(row.entity.id, 'chatRoom')"}]}}},fax:{general:{header:["APPLICATION_FROM","APPLICATION_TO","APPLICATION_DISPOSITION","APPLICATION_DATE"],indexes:["contact","account","disposition","createdAt"],actions:{name:"action",displayName:"",width:40,buttons:[{"class":"green",name:"faxRoom",onClick:"grid.appScope.openRoom(row.entity.id, 'faxRoom')"}]}}},sms:{general:{header:["APPLICATION_ACCOUNT","APPLICATION_FROM","APPLICATION_DISPOSITION","APPLICATION_DATE"],indexes:["account","contact","disposition","createdAt"],actions:{name:"action",displayName:"",width:40,buttons:[{"class":"green",name:"smsRoom",onClick:"grid.appScope.openRoom(row.entity.id, 'smsRoom')"}]}}}},a.Auth=q,a.getAgent=function(){return q.getCurrentUser().$promise.then(function(b){a.agent=b})["catch"](function(a){b.error(a)})},a.getLists=function(){return e.get().$promise.then(function(b){a.lists=b.rows,c.syncUpdates("list",a.lists)})["catch"](function(a){b.error(a)})},a.callPhoneBar=function(c,d){var e;switch(d){case"call":e="http://127.0.0.1:"+a.agent.phoneBarRemoteControlPort+"/api/originate/"+c;break;case"transfer":e="http://127.0.0.1:"+a.agent.phoneBarRemoteControlPort+"/api/transfer?number="+c;break;default:e="http://127.0.0.1:"+a.agent.phoneBarRemoteControlPort+"/api/originate/"+c}return r.get(e).success(function(){b.show(i.instant("MESSAGE_WELL_DONE"),"success")}).error(function(a){console.error(a),b.error({message:i.instant("MESSAGE_UNABLE_TO_CONTACT_PHONEBAR")})})},a.copy=function(a){var c=k.open({animation:!0,size:"small",templateUrl:"app/contactmanager/contact/list/copy.modal.html",controller:"ContactManagerListCopyModalCtrl"});c.result.then(function(c){return h.save({id:a,controller:"copy"},c).$promise.then(function(a){m.openContactTab({firstName:a.firstName,lastName:a.lastName,id:a.id})})["catch"](function(a){b.error(a)})},function(){p.info("Modal dismissed at: "+new Date)})},a.merge=function(c){var d=k.open({animation:!0,size:"lg",templateUrl:"app/main/mergeContact.choose.modal.html",controller:"ContactManagerMergeContactChoose",resolve:{listId:c.ListId,mergecontact:c.id}});d.result.then(function(d){var e=k.open({animation:!0,size:"lg",templateUrl:"app/main/mergeContact.merge.modal.html",controller:"ContactManagerMergeContactMerge",resolve:{contactId:d,mergeContact:c}});e.result.then(function(e){return e.oldContact=c.id,h.save({id:d,controller:"merge"},e).$promise.then(function(b){m.workspaces.splice(a.index,1),_.remove(m.workspaces,{contactID:b.id}),m.openContactTab({firstName:b.firstName,lastName:b.lastName,id:b.id})})["catch"](function(a){b.error(a)})},function(){p.info("Modal dismissed at: "+new Date)})},function(){p.info("Modal dismissed at: "+new Date)})},a.dispose=function(){return k.open({animation:!0,templateUrl:"app/main/cm.disposition.modal.html",controller:"ContactManagerSetDisposition"}).result.then(function(c){return c.contactId=a.contact.id,l.update({id:a.workspace.data.uniqueid},c).$promise.then(function(){a.contact.disposed=!0,b.show(i.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){b.error(a)})})},a.companyInfo=function(b){k.open({animation:!0,size:"lg",templateUrl:"app/main/company.info.modal.html",controller:["$scope","$uibModalInstance","company",function(a,b,c){a.company=c,a.close=function(){b.dismiss("cancel")}}],resolve:{company:_.find(a.companies,{id:b})}})},a.updateLog=function(b,c,d,e){c&&(a.log[b].show=c),d&&(a.log[b].detail=d),e&&(a.log[b].type=e),t(b)},a.openRoom=function(a,b,c){var d=_.find(m.workspaces,{id:a,type:b});if(d)d.active=!0;else{var e;switch(b){case"mailRoom":e="icon-envelope";break;case"chatRoom":e="fa fa-users";break;case"faxRoom":e="fa fa-fax";break;case"smsRoom":e="glyphicon glyphicon-comment"}m.workspaces.push({id:a,type:b,"class":e,active:!0,data:c})}};var w={daily:{offset:0,limit:10},history:{offset:0,limit:10}},x=function(b,c){return n.spin("spinner-grid"),h.get(_.merge(_.merge({id:a.workspace.contactID,controller:"log",logType:b,order:"createdAt DESC"},a.log[b]),w[b])).$promise.then(function(d){c&&(a["gridOptions"+b]=c),a["gridOptions"+b].totalItems=d.count,a["gridOptions"+b].data=d.rows,y("gridOptions"+b,d.rows.length)})["catch"](function(a){console.error(a)})["finally"](function(){n.stop("spinner-grid")})},y=function(a,b){var c=b?30*b+120:177;angular.element(document.getElementsByName(a)[0]).css("height",c+"px")};a.getContact=function(){return h.get({id:a.workspace.contactID}).$promise.then(function(b){b.dateOfBirth&&(b.dateOfBirth=moment(b.dateOfBirth,"DD/MM/YYYY").toDate()),b.CompanyId||(b.CompanyId=""),a.contact=b,a.getCustomFields(b.ListId),v(),a.updateLog("daily"),a.updateLog("history")}).then(function(){a.workspace.data&&a.workspace.synchCall()})["catch"](function(a){console.error(a),b.error(a)})},a.getTags=function(){return f.get().$promise.then(function(b){a.tags=_.map(b.rows,"name")})["catch"](function(a){console.error(a),b.error(a)})},a.getCompanies=function(){return g.get().$promise.then(function(b){a.companies=b.rows,a.companies.unshift({id:"",name:"-- None --"}),c.syncUpdates("company",a.companies)})["catch"](function(a){console.error(a),b.error(a)})},a.getCustomFields=function(c){return a.customFields=[],e.get({listId:c,controller:"customfields",id:"all"}).$promise.then(function(b){b.rows.forEach(function(b){try{"select"===b.type&&(b.values=JSON.parse(b.values)),a.customFields.push(b)}catch(c){console.log("Cf not valid:",b.alias)}})})["catch"](function(a){console.error(a),b.error(a)})},a.workspace.synchCall=function(){return a.contact.disposed=!1,a.enableDisposal=!1,a.workspace.data&&a.workspace.data.uniqueid?a.workspace.data.agentDisposition?(a.contact.disposed=!0,l.update({id:a.workspace.data.uniqueid},{contactId:a.contact.id}).$promise.then(function(){console.log("contactId updated")})["catch"](function(a){b.error(a)})):l.get({id:a.workspace.data.uniqueid}).$promise.then(function(){a.enableDisposal=!0})["catch"](function(){c.socket.on("report_call:save",function(b){b.uniqueid===a.workspace.data.uniqueid&&(a.enableDisposal=!0)})}):void(a.contact.disposed=!0)},d(function(){a.getTags(),a.getCompanies(),a.getLists(),a.getContact(),a.getAgent()})}}}}]).directive("jscripty",["$compile","xAlert","$http","socket","JscriptyProject",function(a,b,c,d,e){return{restrict:"E",scope:{workspace:"=",index:"=",submit:"&onSubmit"},templateUrl:"app/main/template/template.jscriptyTab.html",compile:function(a,d){return function(a,d,f){a.count=0,a.questions=[];var g,h=a.workspace.data.id;c.get("/api/jscripty/projects/"+h+"/download").success(function(b){b?c.post("/api/jscripty/projects/"+h+"/sessions",{projectId:h,status:"started",queue:a.workspace.data.queue,calleridnum:a.workspace.data.calleridnum,callername:a.workspace.data.callername,membername:a.workspace.data.membername}).success(function(c){g=c.session_id,a.workspace.edited=!0,a.workspace.sessionId=g,a.workspace.projectId=h;var d=mxUtils.parseXml(b),e=new mxCodec(d);a.decObj=e.decode(d.documentElement);var f=_.find(a.decObj.cells,function(a){return a.vertex&&"start"==a.value.nodeName});if("OFF"==f.getAttribute("state")){var j=_.find(f.edges,function(a){return a.source.id==f.id}).target;a.questions[a.count]=a.currentQuestion=i(j)}else a.questions[a.count]=a.currentQuestion=f;a.saveQuestions()}):(console.log("No project published!"),alert("No project published!"),a.submit({index:a.index}))}),a.next=function(b,c){switch(a.currentQuestion.answer&&a.currentQuestion.answer!=c&&(a.questions=_.take(a.questions,a.count+1)),a.currentQuestion.answer=c,b.value.nodeName){case"question":b=i(b)}a.questions[a.count]=a.currentQuestion,a.currentQuestion=b,a.count++,a.questions[a.count]=b,a.saveQuestions()};var i=function(a){var b=[];return a.options=[],_.forEach(a.edges,function(c,d){if(c.source.id==a.id&&c.value){var e=String(c.value).split(",");e.length>1?(_.forEach(e,function(b,d){var e=Object.create(c);e.setValue(b),a.edges.push(e),a.options.push(b)}),b.push(c)):a.options.push(e[0])}}),_.forEach(b,function(b){_.remove(a.edges,function(a){return a.value==b.value&&a.id==b.id})}),a};a.end=function(){a.saveQuestions(),a.workspace.lastQuestionId=a.questions[a.questions.length-1].id,"end"==a.questions[a.questions.length-1].value.nodeName&&(a.workspace.edited=!1,e.update({id:h,controller:"sessions",action:g},{status:"completed",completedAt:Date(),last_question_id:a.questions[a.questions.length-1].id}).$promise.then(function(a){b.show("Project Ended","success")})),a.submit({index:a.index})},a.workspace.end=a.end,a.back=function(){a.count--,a.currentQuestion=a.questions[a.count]},a.setCurrentQuestion=function(b){a.count=b,a.currentQuestion=a.questions[a.count]},a.saveQuestions=function(){for(var c=[],d=[],f=0;f<a.questions.length;f++){if(a.questions[f].children)for(var i=a.questions[f].children,j=0;j<i.length;j++)d[j]={input_id:i[j].id,input_type:i[j].getAttribute("type"),input_label:i[j].getAttribute("label"),input_value:"checkbox"!=i[j].getAttribute("type")||i[j].answer?i[j].answer:!1};c[f]={sessionId:g,projectId:h,question_id:a.questions[f].id,question_type:a.questions[f].value.nodeName,question_label:a.questions[f].getAttribute("label"),question_text:a.questions[f].getAttribute("question")||a.questions[f].getAttribute("text"),question_other_label:a.questions[f].getAttribute("other"),question_other_answer:a.questions[f].otheranswer,question_answer:a.questions[f].answer,question_options:a.questions[f].options?JSON.stringify({options:a.questions[f].options}):null,index:f,ReportJscriptyInputs:d},d=[]}e.save({id:h,controller:"sessions",action:g,action2:"questions"},c).$promise.then(function(a){})["catch"](function(a){b.error(a)})}}}}}]).directive("reportBuilder",["$compile",function(a){return{restrict:"E",scope:{group:"=",fields:"=",forms:"=",firstCall:"="},templateUrl:"app/main/template/template.reportBuilderView.html",compile:function(b,c){var d,e;return d=b.contents().remove(),function(b,c,f){b.operators=[{name:"AND"},{name:"OR"}],b.conditions=[{name:"="},{name:"!="},{name:"<"},{name:"<="},{name:">"},{name:">="},{name:"LIKE"},{name:"NOT LIKE"},{name:"IS NULL"},{name:"IS NOT NULL"},{name:"IS EMPTY"},{name:"IS NOT EMPTY"}],b.inputIsRequired=function(a){if(a.condition)switch(a.condition){case"IS NULL":case"IS NOT NULL":case"IS EMPTY":case"IS NOT EMPTY":a.required=!1;break;default:a.required=!0}},b.addCondition=function(){b.group.rules.push({condition:"=",field:"",value:""})},b.removeCondition=function(a){b.group.rules.splice(a,1)},b.addGroup=function(){b.group.rules.push({group:{operator:"AND",rules:[{condition:"=",field:"",value:""}]}})},b.randomName=function(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")},b.removeGroup=function(){b.$parent.group&&b.$parent.group.rules.splice(b.$parent.$index,1)},e||(e=a(d)),c.append(e(b,function(a){return a}))}}}}]).directive("dynamicName",["$compile",function(a){return{restrict:"A",terminal:!0,priority:1e3,link:function(b,c,d){c.attr("name",b.$eval(d.dynamicName)),c.removeAttr("dynamic-name"),a(c)(b)}}}]).directive("onReadFile",["$parse",function(a){return{restrict:"A",scope:!1,link:function(b,c,d){var e=a(d.onReadFile);c.on("change",function(a){var c=new FileReader;c.onload=function(a){b.$apply(function(){e(b,{$fileContent:a.target.result})})},c.readAsText((a.srcElement||a.target).files[0])})}}}]).directive("motionFileDownload",["xAlert","$translate","$timeout","$location","FileSaver","$compile",function(a,b,c,d,e,f){return{restrict:"E",template:'<a uib-tooltip=\'{{tooltiptext}}\' class="{{btnclass || \'btn default btn-xs blue-hoki\'}}" href="" data-ng-click="download()" ><i class="icon-cloud-download"></i>{{btncontent || \'\'}}</a>',scope:{mimetype:"=",filename:"=",resource:"=",params:"=",btnclass:"@",btncontent:"@",tooltiptext:"@"},link:function(b,c,d){var f=c.children()[0];b.$on("download-start",function(){$(f).attr("disabled","disabled")}),b.$on("downloaded",function(a,c){var d=base64ToBlob(c,b.mimetype);e.saveAs(d,b.filename),$(f).attr("disabled",!1)}),b.download=function(){return b.$emit("download-start"),b.resource.get(b.params).$promise.then(function(a){b.$emit("downloaded",a.downloadString)})["catch"](function(b){a.error(b),$(f).attr("disabled",!1)})}}}}]).directive("audioFileDownload",["xAlert","$translate","$uibModal",function(a,b,c){return{restrict:"E",template:'<button type="button" class="btn default btn-xs blue-hoki" data-ng-click="download()"><i class="fa fa-play"></i> {{ \'APPLICATION_PREVIEW\' | translate}}</button>', -scope:{resource:"=",params:"="},link:function(b,d,e){var f=d.children()[0];b.$on("download-start",function(a,c){b.tempHtml=$(f).html(),$(f).attr("disabled","disabled").html('<i class="icon-refresh"></i> Loading...')}),b.$on("downloaded",function(a,d){c.open({animation:!0,size:"small",templateUrl:"app/main/audioFileDownload.play.modal.html",controller:["$scope","$uibModalInstance","$sce","audio",function(a,b,c,d){a.audio=c.trustAsResourceUrl("data:audio/wav;base64,"+d.data),a.close=function(){b.dismiss("cancel")}}],resolve:{audio:function(){return{data:d}}}});$(f).html(b.tempHtml).attr("disabled",!1)}),b.$on("error",function(a,c){$(f).html(b.tempHtml).attr("disabled",!1)}),b.download=function(){return b.$emit("download-start"),b.resource.get(b.params).$promise.then(function(a){b.$emit("downloaded",a.downloadString)})["catch"](function(c){a.error(c),b.$emit("error")})}}}}]).directive("uiRequired",function(){return{require:"ngModel",link:function(a,b,c,d){d.$validators.required=function(a,b){return!(b&&0===b.length&&"true"===c.uiRequired)},c.$observe("uiRequired",function(){d.$setValidity("required",!("true"===c.uiRequired&&d.$viewValue&&0===d.$viewValue.length))})}}}).directive("schrollBottom",function(){return{scope:{schrollBottom:"="},link:function(a,b){a.$watchCollection("schrollBottom",function(a){a&&$(b).scrollTop($(b)[0].scrollHeight)})}}}).directive("customGridDateFilterHeader",function(){return{templateUrl:"app/main/customDateFilterHeader.html",controller:"gridDatePickerFilterCtrl"}}).directive("customGridTagsFilterHeader",function(){return{templateUrl:"app/main/customTagsFilterHeader.html",controller:"gridTagsFilterCtrl"}}).directive("infiniteScroll",["$window",function(a){return{link:function(a,b,c){var d=parseInt(c.threshold)||0,e=b[0];b.bind("scroll",function(){a.$eval(c.canLoad)&&e.scrollTop+e.offsetHeight>=e.scrollHeight-d&&a.$apply(c.infiniteScroll)})}}}]).directive("tigerDialDisposal",["$compile","xAlert","socket","$translate","$timeout","$rootScope","MotionDialerSpooler","Auth",function(a,b,c,d,e,f,g,h){return{restrict:"E",scope:{workspace:"=",index:"="},templateUrl:"app/main/template/template.tigerDialDisposal.html",compile:function(a,c){return function(a,c,i){a.moment=moment,a.entitySpooler={},a.forms={td:{}},a.init=function(){return h.getCurrentUser().$promise.then(function(b){a.entitySpooler.planningpeer="SIP/"+b.name})["catch"](function(a){b.error(a)})},a.save=function(){var c;switch(a.entitySpooler.retrieve){case"CLOSED":c=g.close({id:parseInt(a.workspace.spooler.ticketId)});break;case"OPEN":c=g.open({id:parseInt(a.workspace.spooler.ticketId)});break;case"BLACK_LIST":c=g.blacklist({id:parseInt(a.workspace.spooler.ticketId)});break;case"PLANNED":c=g.planning({id:parseInt(a.workspace.spooler.ticketId),date:moment(a.entitySpooler.planningtime).format("YYYY-MM-DD HH:mm")});break;case"PLANNED_PEER":c=g.planningpeer({id:parseInt(a.workspace.spooler.ticketId),date:moment(a.entitySpooler.planningtime).format("YYYY-MM-DD HH:mm"),peer:a.entitySpooler.planningpeer})}c?c.$promise.then(function(c){c.status>0?b.show(d.instant("MESSAGE_WELL_DONE"),"success"):c.response?c.response.RMI.errors.forEach(function(c){c?(b.show(c.field+": "+c.error,"danger"),f.workspaces.splice(a.index,1)):b.show("Please, check your connection!","danger")}):b.show("Please, check your connection!","danger")})["catch"](function(a){b.error(a)}):b.show("RETRIEVE NOT FOUND","danger")},e(function(){a.init()})}}}}]).directive("cssTimer",["$window","$interval",function(a,b){return{restrict:"EA",template:"<span>{{ millis | formatMilliseconds | date:format }}</span>",scope:{interval:"@",format:"@",startTime:"="},link:function(a,c,d){function e(){a.millis=Math.abs((new Date).getTime()-new Date(a.startTime).getTime())+1e3,a.activeInterval=b(function(){a.millis+=a.interval},a.interval)}a.interval||(a.interval=1e3),a.format||(a.format="HH:mm:ss"),e(),a.$watch("startTime",function(c,d){b.cancel(a.activeInterval),e()},!0)}}}]).directive("webPopup",["$compile","xAlert","socket","$translate","$timeout","List","Tag","Company","ReportCall","$uibModal","$rootScope","Auth","$sce",function(a,b,c,d,e,f,g,h,i,j,k,l,m){return{restrict:"E",scope:{workspace:"=",index:"="},templateUrl:"app/main/template/template.webPopup.html",compile:function(a,b){return function(a,b,c){a.html=m.trustAsHtml(a.workspace.data.html)}}}}]),angular.module("xCallyShuttleApp").filter("propsFilter",function(){return function(a,b){var c=[];return angular.isArray(a)?a.forEach(function(a){for(var d=!1,e=Object.keys(b),f=0;f<e.length;f++){var g=e[f],h=b[g].toLowerCase();if(-1!==a[g].toString().toLowerCase().indexOf(h)){d=!0;break}}d&&c.push(a)}):c=a,c}}).filter("capitalize",function(){return function(a){return a?a.replace(/([^\W_]+[^\s-]*) */g,function(a){return a.charAt(0).toUpperCase()+a.substr(1).toLowerCase()}):""}}).filter("salesforce",function(){var a=["CallDisposition","CallDurationInSeconds","CallObject","CallType","IsArchived","Priority","Status","Type"];return function(b){return _.remove(b,function(b){return b.custom===!1&&a.indexOf(b.name)<0}),b}}).filter("sugarcrm",function(){var a=["id","name","date_entered","date_modified","modified_user_id","modified_by_name","created_by","created_by_name","description","deleted","assigned_user_id","assigned_user_name","duration_hours","duration_minutes","date_start","date_end","parent_type","parent_name","parent_id","accept_status","contact_name","contact_id"];return function(b){return _.remove(b,function(b){return a.indexOf(b.name)>=0}),b}}).filter("freshdesk",function(){var a=["requester","subject","agent","description","status","priority","group","source","ticket_type","group","company"];return function(b){return _.remove(b,function(b){return a.indexOf(b.name)>=0}),b}}).filter("zendesk",function(){var a=["subject","assignee","description"];return function(b){return _.remove(b,function(b){return a.indexOf(b.type)>=0}),b}}).filter("slice",function(){return function(a,b,c){return a?a.slice(b,c):void 0}}).filter("trusted",["$sce",function(a){var b=document.createElement("div");return function(c){return b.innerHTML=c,a.trustAsHtml(b.textContent)}}]).filter("formatMilliseconds",[function(){return function(a){return new Date(1970,0,1).setMilliseconds(a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main",{"abstract":!0,templateUrl:"app/main/main.html",controller:"MainCtrl",resolve:{authorization:["$q","Auth","$state","$timeout","$location","localStorageService",function(a,b,c,d,e,f){return b.getToken()?a.when():(f.remove("loggedIn"),d(function(){e.path("/login")}),a.reject())}],deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/plugins/mxgraph/js/mxClient.js","assets/plugins/ckeditor/ckeditor.js","assets/css/login.css"]}])}]}})}]),angular.module("xCallyShuttleApp").factory("xAlert",["$translate","Notification","$state",function(a,b,c){return{show:function(c,d){switch(d){case"success":b.success({message:c,title:'<i class="glyphicon glyphicon-ok"></i> <strong>'+a.instant("MESSAGE_SUCCESS")+"!</strong>",delay:5e3});break;case"info":b.info({message:c,title:'<i class="glyphicon glyphicon-info-sign"></i> <strong>'+a.instant("MESSAGE_INFO")+"!</strong>",delay:5e3});break;case"danger":b.error({message:c,title:'<i class="glyphicon glyphicon-exclamation-sign"></i> <strong>'+a.instant("MESSAGE_ERROR")+"!</strong>",delay:1e4});break;case"warning":b.warning({message:c,title:'<i class="glyphicon glyphicon-warning-sign"></i> <strong>'+a.instant("MESSAGE_WARNING")+"!</strong>",delay:1e4});break;default:b.info(c)}},error:function(d){var e,f;d?d.status&&401===d.status?(e="Unauthorized!",f=!0):d.data?(e=d.data.translatedMessage||d.data.message||d.data||"Generic Error",d.data.errors&&d.data.errors.length&&_.forEach(d.data.errors,function(a){a.message&&(e+=", "+a.message)})):e=d.translatedMessage||d.message||"Generic Error":e="Generic Error",b.error({message:a.instant(e),title:'<i class="glyphicon glyphicon-exclamation-sign"></i> <strong>'+a.instant("MESSAGE_ERROR")+"!</strong>",delay:1e4}),f&&c.go("login")}}}]).factory("stResource",["$q","$filter","$timeout","$rootScope","$http","$translate","xAlert",function(a,b,c,d,e,f,g){return{getPage:function(b){var c={page:Math.ceil(b.pagination.start/b.pagination.number),per_page:b.pagination.number};b.sort.predicate&&(c.sort_by=b.sort.predicate,c.sort_order=b.sort.reverse?"DESC":"ASC"),_.forIn(b.search.predicateObject,function(a,b){c[b]=a}),b.search.params&&(c.clientQuery={},_.forIn(b.search.params,function(a,b){c.clientQuery[b]=a})),d.$broadcast("$spinnerStart"),e.get(b.url,{params:c}).success(function(a){f.resolve(a),d.$broadcast("$spinnerStop")}).error(function(a){g.error(a),d.$broadcast("$spinnerStop")});var f=a.defer();return f.promise}}}]).factory("xNotification",["$translate","Notification","$rootScope",function(a,b,c){return{show:function(d,e,f,g,h,i){var j=c.$new(),k={message:e,title:d,templateUrl:"app/main/template/template.notification.html",delay:g,scope:j};switch(j.acceptBtn=a.instant("APPLICATION_ACCEPT"),j.rejectBtn=a.instant("APPLICATION_REJECT"),j.nAccept=h,j.nReject=i,f){case"chat":j["class"]="alert-info",j.icon="icon-bubble";break;case"mail":j["class"]="alert-success",j.icon="icon-envelope";break;case"fax":j["class"]="alert-warning",j.icon="fa fa-fax";break;case"sms":j["class"]="alert-danger",j.icon="glyphicon glyphicon-comment";break;case"openchannel":j["class"]="alert-danger",j.icon="icon-globe";break;default:j["class"]="alert-info"}return new b(k)}}}]),angular.module("xCallyShuttleApp").controller("ContactManagerMergeContactChoose",["$scope","$translate","Contact","gridOptions","List","uiGridConstants","xAlert","$stateParams","Company","$uibModalInstance","listId","mergecontact",function(a,b,c,d,e,f,g,h,i,j,k,l){a.initView=function(){var b;return e.get().$promise.then(function(b){return a.lists=[],a.customFields=[],b.rows.forEach(function(b,c){_.forEach(b.CustomFields,function(b){a.customFields.push({name:b.name,alias:b.alias})}),a.lists.push({value:b.id,label:b.name})}),i.get().$promise}).then(function(b){a.companies=[],b.rows.forEach(function(b,c){a.companies.push({value:b.id,label:b.name})})}).then(function(){var e=[{"class":"blue-hoki",name:"select",onClick:"grid.appScope.choose(row.entity.id)"}];b={exporterCsvFilename:"Contacts.csv",columnDefs:[{name:"firstName"},{name:"lastName"},{name:"phone"},{name:"email"},{name:"ListId",displayName:"APPLICATION_LIST",field:"List.name",enableFiltering:!1},{name:"CompanyId",displayName:"APPLICATION_COMPANY",field:"Company.name",filter:{type:f.filter.SELECT,term:h.companyId||null,selectOptions:a.companies}}]},_.forEach(a.customFields,function(a){b.columnDefs.push({name:a.name,displayName:a.alias,visible:!1})}),b.columnDefs.push({name:"action",width:30,buttons:e}),a.gridOptions=d.gridOptions(c,b,a,{ListId:k,mergecontact:l})})["catch"](function(a){g.error(a)})},a.choose=function(a){j.close(a)},a.cancel=function(){j.dismiss()}}]),angular.module("xCallyShuttleApp").controller("ContactManagerMergeContactMerge",["$scope","$translate","Contact","xAlert","Company","$uibModalInstance","contactId","List","mergeContact","Tag",function(a,b,c,d,e,f,g,h,i,j){a.initView=function(){return e.get().$promise.then(function(b){return a.companies=b.rows,a.companies.unshift({id:"",name:"-- None --"}),j.get().$promise}).then(function(b){return a.tags=_.map(b.rows,"name"),c.get({id:g}).$promise}).then(function(b){a.fields={},a.contact={};var c=_.merge(_.keys(b),_.keys(i));return _.forEach(c,function(c){switch(c){case"tags":a.contact.tags=_.union(b.tags||[],i.tags||[]);break;case"$promise":case"$resolved":break;default:a.fields[c]=[],b[c]&&a.fields[c].push(b[c]),i[c]&&b[c]!==i[c]&&a.fields[c].push(i[c]),a.contact[c]=a.fields[c][0]||null}}),h.get({listId:b.ListId,controller:"customfields"}).$promise}).then(function(b){a.customFields=b.rows,a.customFields.forEach(function(a){a.values=JSON.parse(a.values)})})["catch"](function(a){d.error(a)})},a.merge=function(){a.contact.CompanyId||(a.contact.CompanyId=null),f.close(a.contact)},a.cancel=function(){f.dismiss()}}]),angular.module("xCallyShuttleApp").factory("Widget",["$resource",function(a){return a("/api/widgets/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("MarketCtrl",["$scope","$http","$translate","socket","xAlert","Modal","$timeout","Integration",function(a,b,c,d,e,f,g,h){function i(a,b){return Math.floor(Math.random()*(b-a+1))+a}a.initView=function(){return h.get().$promise.then(function(b){a.integrations=b.rows,a.groupedIntegration=_.chunk(a.integrations,4),d.syncUpdates("integration",a.integrations,function(){a.groupedIntegration=_.chunk(a.integrations,4)})})["catch"](function(a){e.error(a,"danger")})},a.isProgressing=!1,a.$on("$destroy",function(){d.unsyncUpdates("integration")}),a.installIntegration=function(b){return navigator.onLine?(a.status="Downloading",a.percentage=i(1,50),a.isProgressing=!0,b.downloading=!0,h.update({id:b.id},{active:!0}).$promise.then(function(){g(function(){a.percentage=i(51,99),a.status="Installing"},2500),g(function(){a.percentage=100,a.isProgressing=!1,a.status="Completed!",b.downloading=!1,e.show(c.instant("MESSAGE_WELL_DONE")+".","success")},5e3)})["catch"](function(){b.downloading=!1,a.percentage=0,a.isProgressing=!1,e.show(c.instant("MESSAGE_SOMETHING_WENT_WRONG")+".","danger")})):void e.show(c.instant("MESSAGE_NO_INTERNET_CONNECTION")+".","danger")},a.uninstallIntegration=function(b){return navigator.onLine?(a.status="Uninstalling",a.percentage=i(1,99),a.isProgressing=!0,b.downloading=!0,h.update({id:b.id},{active:!1}).$promise.then(function(){g(function(){a.percentage=100,a.isProgressing=!1,a.status="Completed!",b.downloading=!1,e.show(c.instant("MESSAGE_WELL_DONE")+".","success")},5e3)})["catch"](function(){b.downloading=!1,a.percentage=0,a.isProgressing=!1,e.show(c.instant("MESSAGE_SOMETHING_WENT_WRONG")+".","danger")})):void e.show(c.instant("MESSAGE_NO_INTERNET_CONNECTION")+".","danger")}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.market",{url:"/market",templateUrl:"app/market/market.html",controller:"MarketCtrl",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").controller("MotionbarCtrl",["$scope","$stateParams","$cookieStore","$window","$location","Auth",function(a,b,c,d,e,f){console.log(b),b.token&&b.userId&&b.role&&b.redirectTo?(f.loginWithToken(b.token,b.userId,b.role),d.location.href=decodeURIComponent(b.redirectTo)):e.path("/login")}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("motionbar",{url:"/motionbar?redirectTo&token&userId&role",template:"<div ui-view></div>",controller:"MotionbarCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.motiondialer.blacklist",{url:"/blacklist",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("MotionDialerBlackListListCtrl",["$scope","$uibModal","$translate","xAlert","Modal","MotionDialerBlackList","uiGridConstants","FileUploader","Papa",function(a,b,c,d,e,f,g,h,i){function j(c){var d=b.open({animation:!0,backdrop:"static",keyboard:!1,templateUrl:"app/motiondialer/blacklist/list/list.import.modal.html",controller:"MotionDialerBlackListImportCtrl",resolve:{indexes:function(){return _.keys(c[0])},csv:function(){return c}}});d.result.then(function(b){a.gridOptions.data=a.gridOptions.data.concat(b)})}a.initView=function(){a.gridOptions={paginationPageSizes:[10,25,50,75],paginationPageSize:10,enableFiltering:!0,enableSorting:!0,enableGridMenu:!0,flatEntityAccess:!0,showGridFooter:!0,fastWatch:!0,columnDefs:[{name:"id",width:60},{name:"phone"},{name:"description",enableSorting:!1},{name:"updatedtime",sort:{direction:g.DESC},enableFiltering:!1},{name:"action",cellTemplate:'<div><a class="btn btn-xs red-sunglo" data-ng-click="grid.appScope.deleteItem(row.entity.phone, row.entity.id)"><i class="icon-trash"></i></a></div>',enableSorting:!1,cellClass:"ui-grid-vcenter",enableFiltering:!1}]},f.list({page:1,size:6e5}).$promise.then(function(b){b.status>0?a.gridOptions.data=b.response.RMI.rows:d.show("Please, check your connection!","danger")})["catch"](function(a){d.error(a)})},a.createItem=function(){var c=b.open({animation:!0,templateUrl:"app/motiondialer/blacklist/list/list.create.modal.html",controller:"MotionDialerBlackListListCreateCtrl"});c.result.then(function(b){a.gridOptions.data.push(b.response.RMI)})},a.deleteItem=e.confirm["delete"](function(b){return f["delete"]({id:b}).$promise.then(function(e){e.status>0?(_.remove(a.gridOptions.data,{id:b}),d.show(c.instant("MESSAGE_WELL_DONE"),"success")):d.show(e.message||"Please, check your connection!","danger")})["catch"](function(a){d.error(a)})});var k=a.uploader=new h({queueLimit:1,clearInputAfterAddedToQueue:!0});k.onAfterAddingFile=function(b){i.parse(b._file,{header:!0,complete:function(b){a.uploader.clearQueue(),j(b.data)},error:function(a){d.error(a)}})}}]),angular.module("xCallyShuttleApp").controller("MotionDialerBlackListListCreateCtrl",["$scope","$translate","$uibModalInstance","MotionDialerBlackList","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.insert(a.item).$promise.then(function(a){a.status>0?(e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)):e.show(a.message||"Please, check your connection!","danger")})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").controller("MotionDialerBlackListImportCtrl",["$scope","$uibModalInstance","$stateParams","indexes","csv","MotionDialerBlackList",function(a,b,c,d,e,f){function g(b){if(b>=a.csvLength||a.stopped)return void(a.importing=!1);var c={phone:"",description:""};return _.forOwn(a.item,function(a,d){c[d]=e[b][a]}),c.phone?f.insert(c).$promise.then(function(c){c.status>0?c.response.RMI.Key&&c.response.RMI.Key.indexOf("Found duplicate")>-1?(a["import"].fail+=h,a["import"].failed++,a.duplicates.push(b+2)):(a["import"].success+=h,a["import"].succeeded++,i.push(c.response.RMI)):(console.log(c),a["import"].fail+=h,a["import"].failed++)})["catch"](function(b){console.log(b),a["import"].fail+=h,a["import"].failed++})["finally"](function(){g(b+1)}):(a.noPhone.push(b+2),a["import"].fail+=h,a["import"].failed++,g(b+1),void 0)}a.form={},a.item={},a.indexes=d,a.importing=!1,a.submitted=!1,a.stopped=!1,a["import"]={success:0,fail:0,succeeded:0,failed:0},a.csvLength=e.length;var h=100/a.csvLength,i=[];a.start=function(){a.noPhone=[],a.duplicates=[],a.importing=!0,a.submitted=!0,g(0)},a.close=function(){b.close(i)},a.stop=function(){a.stopped=!0}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.motiondialer.blacklist.list",{url:"/list",templateUrl:"app/motiondialer/blacklist/list/list.html",controller:"MotionDialerBlackListListCtrl",authenticate:!0})}]),angular.module("xCallyShuttleApp").factory("MotionDialerBlackList",["$resource",function(a){return a("/api/rest/blacklist/:controller",null,{list:{method:"POST",params:{controller:"list"}},insert:{method:"POST",params:{controller:"insert"}},"delete":{method:"POST",params:{controller:"delete"}},find:{method:"POST",params:{controller:"find"}},update:{method:"POST",params:{controller:"update"}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.motiondialer.info",{url:"/info",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").factory("MotionDialerSystem",["$resource",function(a){return a("/api/rest/system/:controller",null,{properties:{method:"POST",params:{controller:"properties"}}})}]),angular.module("xCallyShuttleApp").controller("MotionDialerInfoViewCtrl",["$scope","xAlert","MotionDialerSystem","MotionDialerProcess","$translate","$q","usSpinnerService",function(a,b,c,d,e,f,g){a.getProperties=function(){return c.properties().$promise.then(function(c){c.status>0?a.properties=c.response.RMI:b.show(c.message||"Please, check your connection!","danger")})["catch"](function(a){b.error(a)})};var h=function(a,b){var c=a?30*a+130:177;angular.element(document.getElementsByName(b)[0]).css("height",c+"px")};a.getLogs=function(){return a.loading=!0,g.spin("logs-spinner"),d.logs().$promise.then(function(c){a.loading=!1,g.stop("logs-spinner"),c.status>0?a.table1.data=c.response.RMI.rows:b.show(c.message||"Please, check your connection!","danger")})["catch"](function(c){a.loading=!1,g.stop("logs-spinner"),b.error(c)})},a.initLogs=function(){a.table1={enableGridMenu:!0,exporterMenuVisibleData:!1,exporterCsvFilename:"Motion Dialer Logs.csv",enableHorizontalScrollbar:0,headerCellFilter:"translate",exporterHeaderFilter:e.instant,enableVerticalScrollbar:0,enableFiltering:!0,enableSorting:!0,showGridFooter:!0,paginationPageSizes:[10,25,50],paginationPageSize:10,gridMenuTitleFilter:function(a){var b=f.defer();return b.resolve(e.instant(a)),b.promise},columnDefs:[{name:"timeStamp",headerCellFilter:"translate",displayName:"APPLICATION_DATE",cellFilter:'date:"yyyy-MM-dd HH:mm:ss"',width:145},{name:"renderedMessage",headerCellFilter:"translate",displayName:"APPLICATION_MESSAGE",cellTooltip:!0}],data:[],onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){h(a.table1.paginationPageSize>a.table1.data.length?a.table1.data.length:a.table1.paginationPageSize,"table1")}),a.gridApi.pagination.on.paginationChanged(a,function(b,c){h(c>a.table1.data.length?a.table1.data.length:c,"table1")})}},a.getLogs()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.motiondialer.info.view",{url:"/view",templateUrl:"app/motiondialer/info/view/view.html",controller:"MotionDialerInfoViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.motiondialer.info.view.about",{url:"/about",templateUrl:"app/motiondialer/info/view/view.about.html"}).state("main.motiondialer.info.view.details",{url:"/details",templateUrl:"app/motiondialer/info/view/view.details.html"}).state("main.motiondialer.info.view.logs",{url:"/logs",templateUrl:"app/motiondialer/info/view/view.logs.html"})}]),angular.module("xCallyShuttleApp").factory("MotionDialerContact",["$resource",function(a){return a("/api/rest/contact/:controller",null,{list:{method:"POST",params:{controller:"list"}},insert:{method:"POST",params:{controller:"insert"}},"delete":{method:"POST",params:{controller:"delete"}},find:{method:"POST",params:{controller:"find"}},update:{method:"POST",params:{controller:"update"}}})}]),angular.module("xCallyShuttleApp").factory("MotionDialerList",["$resource",function(a){return a("/api/rest/list/:controller",null,{list:{method:"POST",params:{controller:"list"}},insert:{method:"POST",params:{controller:"insert"}},"delete":{method:"POST",params:{controller:"delete"}},find:{method:"POST",params:{controller:"find"}},update:{method:"POST",params:{controller:"update"}}})}]),angular.module("xCallyShuttleApp").factory("MotionDialerTimezone",function(){return{list:function(){return[{group:"US (Common)",zones:[{value:"America/Puerto_Rico",name:"Puerto Rico (Atlantic)"},{value:"America/New_York",name:"New York (Eastern)"},{value:"America/Chicago",name:"Chicago (Central)"},{value:"America/Denver",name:"Denver (Mountain)"},{value:"America/Phoenix",name:"Phoenix (MST)"},{value:"America/Los_Angeles",name:"Los Angeles (Pacific)"},{value:"America/Anchorage",name:"Anchorage (Alaska)"},{value:"Pacific/Honolulu",name:"Honolulu (Hawaii)"}]},{group:"America",zones:[{value:"America/Adak",name:"Adak"},{value:"America/Anchorage",name:"Anchorage"},{value:"America/Anguilla",name:"Anguilla"},{value:"America/Antigua",name:"Antigua"},{value:"America/Araguaina",name:"Araguaina"},{value:"America/Argentina/Buenos_Aires",name:"Argentina - Buenos Aires"},{value:"America/Argentina/Catamarca",name:"Argentina - Catamarca"},{value:"America/Argentina/ComodRivadavia",name:"Argentina - ComodRivadavia"},{value:"America/Argentina/Cordoba",name:"Argentina - Cordoba"},{value:"America/Argentina/Jujuy",name:"Argentina - Jujuy"},{value:"America/Argentina/La_Rioja",name:"Argentina - La Rioja"},{value:"America/Argentina/Mendoza",name:"Argentina - Mendoza"},{value:"America/Argentina/Rio_Gallegos",name:"Argentina - Rio Gallegos"},{value:"America/Argentina/Salta",name:"Argentina - Salta"},{value:"America/Argentina/San_Juan",name:"Argentina - San Juan"},{value:"America/Argentina/San_Luis",name:"Argentina - San Luis"},{value:"America/Argentina/Tucuman",name:"Argentina - Tucuman"},{value:"America/Argentina/Ushuaia",name:"Argentina - Ushuaia"},{value:"America/Aruba",name:"Aruba"},{value:"America/Asuncion",name:"Asuncion"},{value:"America/Atikokan",name:"Atikokan"},{value:"America/Atka",name:"Atka"},{value:"America/Bahia",name:"Bahia"},{value:"America/Barbados",name:"Barbados"},{value:"America/Belem",name:"Belem"},{value:"America/Belize",name:"Belize"},{value:"America/Blanc-Sablon",name:"Blanc-Sablon"},{value:"America/Boa_Vista",name:"Boa Vista"},{value:"America/Bogota",name:"Bogota"},{value:"America/Boise",name:"Boise"},{value:"America/Buenos_Aires",name:"Buenos Aires"},{value:"America/Cambridge_Bay",name:"Cambridge Bay"},{value:"America/Campo_Grande",name:"Campo Grande"},{value:"America/Cancun",name:"Cancun"},{value:"America/Caracas",name:"Caracas"},{value:"America/Catamarca",name:"Catamarca"},{value:"America/Cayenne",name:"Cayenne"},{value:"America/Cayman",name:"Cayman"},{value:"America/Chicago",name:"Chicago"},{value:"America/Chihuahua",name:"Chihuahua"},{value:"America/Coral_Harbour",name:"Coral Harbour"},{value:"America/Cordoba",name:"Cordoba"},{value:"America/Costa_Rica",name:"Costa Rica"},{value:"America/Cuiaba",name:"Cuiaba"},{value:"America/Curacao",name:"Curacao"},{value:"America/Danmarkshavn",name:"Danmarkshavn"},{value:"America/Dawson",name:"Dawson"},{value:"America/Dawson_Creek",name:"Dawson Creek"},{value:"America/Denver",name:"Denver"},{value:"America/Detroit",name:"Detroit"},{value:"America/Dominica",name:"Dominica"},{value:"America/Edmonton",name:"Edmonton"},{value:"America/Eirunepe",name:"Eirunepe"},{value:"America/El_Salvador",name:"El Salvador"},{value:"America/Ensenada",name:"Ensenada"},{value:"America/Fortaleza",name:"Fortaleza"},{value:"America/Fort_Wayne",name:"Fort Wayne"},{value:"America/Glace_Bay",name:"Glace Bay"},{value:"America/Godthab",name:"Godthab"},{value:"America/Goose_Bay",name:"Goose Bay"},{value:"America/Grand_Turk",name:"Grand Turk"},{value:"America/Grenada",name:"Grenada"},{value:"America/Guadeloupe",name:"Guadeloupe"},{value:"America/Guatemala",name:"Guatemala"},{value:"America/Guayaquil",name:"Guayaquil"},{value:"America/Guyana",name:"Guyana"},{value:"America/Halifax",name:"Halifax"},{value:"America/Havana",name:"Havana"},{value:"America/Hermosillo",name:"Hermosillo"},{value:"America/Indiana/Indianapolis",name:"Indiana - Indianapolis"},{value:"America/Indiana/Knox",name:"Indiana - Knox"},{value:"America/Indiana/Marengo",name:"Indiana - Marengo"},{value:"America/Indiana/Petersburg",name:"Indiana - Petersburg"},{value:"America/Indiana/Tell_City",name:"Indiana - Tell City"},{value:"America/Indiana/Vevay",name:"Indiana - Vevay"},{value:"America/Indiana/Vincennes",name:"Indiana - Vincennes"},{value:"America/Indiana/Winamac",name:"Indiana - Winamac"},{value:"America/Indianapolis",name:"Indianapolis"},{value:"America/Inuvik",name:"Inuvik"},{value:"America/Iqaluit",name:"Iqaluit"},{value:"America/Jamaica",name:"Jamaica"},{value:"America/Jujuy",name:"Jujuy"},{value:"America/Juneau",name:"Juneau"},{value:"America/Kentucky/Louisville",name:"Kentucky - Louisville"},{value:"America/Kentucky/Monticello",name:"Kentucky - Monticello"},{value:"America/Knox_IN",name:"Knox IN"},{value:"America/La_Paz",name:"La Paz"},{value:"America/Lima",name:"Lima"},{value:"America/Los_Angeles",name:"Los Angeles"},{value:"America/Louisville",name:"Louisville"},{value:"America/Maceio",name:"Maceio"},{value:"America/Managua",name:"Managua"},{value:"America/Manaus",name:"Manaus"},{value:"America/Marigot",name:"Marigot"},{value:"America/Martinique",name:"Martinique"},{value:"America/Matamoros",name:"Matamoros"},{value:"America/Mazatlan",name:"Mazatlan"},{value:"America/Mendoza",name:"Mendoza"},{value:"America/Menominee",name:"Menominee"},{value:"America/Merida",name:"Merida"},{value:"America/Mexico_City",name:"Mexico City"},{value:"America/Miquelon",name:"Miquelon"},{value:"America/Moncton",name:"Moncton"},{value:"America/Monterrey",name:"Monterrey"},{value:"America/Montevideo",name:"Montevideo"},{value:"America/Montreal",name:"Montreal"},{value:"America/Montserrat",name:"Montserrat"},{value:"America/Nassau",name:"Nassau"},{value:"America/New_York",name:"New York"},{value:"America/Nipigon",name:"Nipigon"},{value:"America/Nome",name:"Nome"},{value:"America/Noronha",name:"Noronha"},{value:"America/North_Dakota/Center",name:"North Dakota - Center"},{value:"America/North_Dakota/New_Salem",name:"North Dakota - New Salem"},{value:"America/Ojinaga",name:"Ojinaga"},{value:"America/Panama",name:"Panama"},{value:"America/Pangnirtung",name:"Pangnirtung"},{value:"America/Paramaribo",name:"Paramaribo"},{value:"America/Phoenix",name:"Phoenix"},{value:"America/Port-au-Prince",name:"Port-au-Prince"},{value:"America/Porto_Acre",name:"Porto Acre"},{value:"America/Port_of_Spain",name:"Port of Spain"},{value:"America/Porto_Velho",name:"Porto Velho"},{value:"America/Puerto_Rico",name:"Puerto Rico"},{value:"America/Rainy_River",name:"Rainy River"},{value:"America/Rankin_Inlet",name:"Rankin Inlet"},{value:"America/Recife",name:"Recife"},{value:"America/Regina",name:"Regina"},{value:"America/Resolute",name:"Resolute"},{value:"America/Rio_Branco",name:"Rio Branco"},{value:"America/Rosario",name:"Rosario"},{value:"America/Santa_Isabel",name:"Santa Isabel"},{value:"America/Santarem",name:"Santarem"},{value:"America/Santiago",name:"Santiago"},{value:"America/Santo_Domingo",name:"Santo Domingo"},{value:"America/Sao_Paulo",name:"Sao Paulo"},{value:"America/Scoresbysund",name:"Scoresbysund"},{value:"America/Shiprock",name:"Shiprock"},{value:"America/St_Barthelemy",name:"St Barthelemy"},{value:"America/St_Johns",name:"St Johns"},{value:"America/St_Kitts",name:"St Kitts"},{value:"America/St_Lucia",name:"St Lucia"},{value:"America/St_Thomas",name:"St Thomas"},{value:"America/St_Vincent",name:"St Vincent"},{value:"America/Swift_Current",name:"Swift Current"},{value:"America/Tegucigalpa",name:"Tegucigalpa"},{value:"America/Thule",name:"Thule"},{value:"America/Thunder_Bay",name:"Thunder Bay"},{value:"America/Tijuana",name:"Tijuana"},{value:"America/Toronto",name:"Toronto"},{value:"America/Tortola",name:"Tortola"},{value:"America/Vancouver",name:"Vancouver"},{value:"America/Virgin",name:"Virgin"},{value:"America/Whitehorse",name:"Whitehorse"},{value:"America/Winnipeg",name:"Winnipeg"},{value:"America/Yakutat",name:"Yakutat"},{value:"America/Yellowknife",name:"Yellowknife"}]},{group:"Europe",zones:[{value:"Europe/Amsterdam",name:"Amsterdam"},{value:"Europe/Andorra",name:"Andorra"},{value:"Europe/Athens",name:"Athens"},{value:"Europe/Belfast",name:"Belfast"},{value:"Europe/Belgrade",name:"Belgrade"},{value:"Europe/Berlin",name:"Berlin"},{value:"Europe/Bratislava",name:"Bratislava"},{value:"Europe/Brussels",name:"Brussels"},{value:"Europe/Bucharest",name:"Bucharest"},{value:"Europe/Budapest",name:"Budapest"},{value:"Europe/Chisinau",name:"Chisinau"},{value:"Europe/Copenhagen",name:"Copenhagen"},{value:"Europe/Dublin",name:"Dublin"},{value:"Europe/Gibraltar",name:"Gibraltar"},{value:"Europe/Guernsey",name:"Guernsey"},{value:"Europe/Helsinki",name:"Helsinki"},{value:"Europe/Isle_of_Man",name:"Isle of Man"},{value:"Europe/Istanbul",name:"Istanbul"},{value:"Europe/Jersey",name:"Jersey" -},{value:"Europe/Kaliningrad",name:"Kaliningrad"},{value:"Europe/Kiev",name:"Kiev"},{value:"Europe/Lisbon",name:"Lisbon"},{value:"Europe/Ljubljana",name:"Ljubljana"},{value:"Europe/London",name:"London"},{value:"Europe/Luxembourg",name:"Luxembourg"},{value:"Europe/Madrid",name:"Madrid"},{value:"Europe/Malta",name:"Malta"},{value:"Europe/Mariehamn",name:"Mariehamn"},{value:"Europe/Minsk",name:"Minsk"},{value:"Europe/Monaco",name:"Monaco"},{value:"Europe/Moscow",name:"Moscow"},{value:"Europe/Nicosia",name:"Nicosia"},{value:"Europe/Oslo",name:"Oslo"},{value:"Europe/Paris",name:"Paris"},{value:"Europe/Podgorica",name:"Podgorica"},{value:"Europe/Prague",name:"Prague"},{value:"Europe/Riga",name:"Riga"},{value:"Europe/Rome",name:"Rome"},{value:"Europe/Samara",name:"Samara"},{value:"Europe/San_Marino",name:"San Marino"},{value:"Europe/Sarajevo",name:"Sarajevo"},{value:"Europe/Simferopol",name:"Simferopol"},{value:"Europe/Skopje",name:"Skopje"},{value:"Europe/Sofia",name:"Sofia"},{value:"Europe/Stockholm",name:"Stockholm"},{value:"Europe/Tallinn",name:"Tallinn"},{value:"Europe/Tirane",name:"Tirane"},{value:"Europe/Tiraspol",name:"Tiraspol"},{value:"Europe/Uzhgorod",name:"Uzhgorod"},{value:"Europe/Vaduz",name:"Vaduz"},{value:"Europe/Vatican",name:"Vatican"},{value:"Europe/Vienna",name:"Vienna"},{value:"Europe/Vilnius",name:"Vilnius"},{value:"Europe/Volgograd",name:"Volgograd"},{value:"Europe/Warsaw",name:"Warsaw"},{value:"Europe/Zagreb",name:"Zagreb"},{value:"Europe/Zaporozhye",name:"Zaporozhye"},{value:"Europe/Zurich",name:"Zurich"}]},{group:"Asia",zones:[{value:"Asia/Aden",name:"Aden"},{value:"Asia/Almaty",name:"Almaty"},{value:"Asia/Amman",name:"Amman"},{value:"Asia/Anadyr",name:"Anadyr"},{value:"Asia/Aqtau",name:"Aqtau"},{value:"Asia/Aqtobe",name:"Aqtobe"},{value:"Asia/Ashgabat",name:"Ashgabat"},{value:"Asia/Ashkhabad",name:"Ashkhabad"},{value:"Asia/Baghdad",name:"Baghdad"},{value:"Asia/Bahrain",name:"Bahrain"},{value:"Asia/Baku",name:"Baku"},{value:"Asia/Bangkok",name:"Bangkok"},{value:"Asia/Beirut",name:"Beirut"},{value:"Asia/Bishkek",name:"Bishkek"},{value:"Asia/Brunei",name:"Brunei"},{value:"Asia/Calcutta",name:"Calcutta"},{value:"Asia/Choibalsan",name:"Choibalsan"},{value:"Asia/Chongqing",name:"Chongqing"},{value:"Asia/Chungking",name:"Chungking"},{value:"Asia/Colombo",name:"Colombo"},{value:"Asia/Dacca",name:"Dacca"},{value:"Asia/Damascus",name:"Damascus"},{value:"Asia/Dhaka",name:"Dhaka"},{value:"Asia/Dili",name:"Dili"},{value:"Asia/Dubai",name:"Dubai"},{value:"Asia/Dushanbe",name:"Dushanbe"},{value:"Asia/Gaza",name:"Gaza"},{value:"Asia/Harbin",name:"Harbin"},{value:"Asia/Ho_Chi_Minh",name:"Ho Chi Minh"},{value:"Asia/Hong_Kong",name:"Hong Kong"},{value:"Asia/Hovd",name:"Hovd"},{value:"Asia/Irkutsk",name:"Irkutsk"},{value:"Asia/Istanbul",name:"Istanbul"},{value:"Asia/Jakarta",name:"Jakarta"},{value:"Asia/Jayapura",name:"Jayapura"},{value:"Asia/Jerusalem",name:"Jerusalem"},{value:"Asia/Kabul",name:"Kabul"},{value:"Asia/Kamchatka",name:"Kamchatka"},{value:"Asia/Karachi",name:"Karachi"},{value:"Asia/Kashgar",name:"Kashgar"},{value:"Asia/Kathmandu",name:"Kathmandu"},{value:"Asia/Katmandu",name:"Katmandu"},{value:"Asia/Kolkata",name:"Kolkata"},{value:"Asia/Krasnoyarsk",name:"Krasnoyarsk"},{value:"Asia/Kuala_Lumpur",name:"Kuala Lumpur"},{value:"Asia/Kuching",name:"Kuching"},{value:"Asia/Kuwait",name:"Kuwait"},{value:"Asia/Macao",name:"Macao"},{value:"Asia/Macau",name:"Macau"},{value:"Asia/Magadan",name:"Magadan"},{value:"Asia/Makassar",name:"Makassar"},{value:"Asia/Manila",name:"Manila"},{value:"Asia/Muscat",name:"Muscat"},{value:"Asia/Nicosia",name:"Nicosia"},{value:"Asia/Novokuznetsk",name:"Novokuznetsk"},{value:"Asia/Novosibirsk",name:"Novosibirsk"},{value:"Asia/Omsk",name:"Omsk"},{value:"Asia/Oral",name:"Oral"},{value:"Asia/Phnom_Penh",name:"Phnom Penh"},{value:"Asia/Pontianak",name:"Pontianak"},{value:"Asia/Pyongyang",name:"Pyongyang"},{value:"Asia/Qatar",name:"Qatar"},{value:"Asia/Qyzylorda",name:"Qyzylorda"},{value:"Asia/Rangoon",name:"Rangoon"},{value:"Asia/Riyadh",name:"Riyadh"},{value:"Asia/Saigon",name:"Saigon"},{value:"Asia/Sakhalin",name:"Sakhalin"},{value:"Asia/Samarkand",name:"Samarkand"},{value:"Asia/Seoul",name:"Seoul"},{value:"Asia/Shanghai",name:"Shanghai"},{value:"Asia/Singapore",name:"Singapore"},{value:"Asia/Taipei",name:"Taipei"},{value:"Asia/Tashkent",name:"Tashkent"},{value:"Asia/Tbilisi",name:"Tbilisi"},{value:"Asia/Tehran",name:"Tehran"},{value:"Asia/Tel_Aviv",name:"Tel Aviv"},{value:"Asia/Thimbu",name:"Thimbu"},{value:"Asia/Thimphu",name:"Thimphu"},{value:"Asia/Tokyo",name:"Tokyo"},{value:"Asia/Ujung_Pandang",name:"Ujung Pandang"},{value:"Asia/Ulaanbaatar",name:"Ulaanbaatar"},{value:"Asia/Ulan_Bator",name:"Ulan Bator"},{value:"Asia/Urumqi",name:"Urumqi"},{value:"Asia/Vientiane",name:"Vientiane"},{value:"Asia/Vladivostok",name:"Vladivostok"},{value:"Asia/Yakutsk",name:"Yakutsk"},{value:"Asia/Yekaterinburg",name:"Yekaterinburg"},{value:"Asia/Yerevan",name:"Yerevan"}]},{group:"Africa",zones:[{value:"Africa/Abidjan",name:"Abidjan"},{value:"Africa/Accra",name:"Accra"},{value:"Africa/Addis_Ababa",name:"Addis Ababa"},{value:"Africa/Algiers",name:"Algiers"},{value:"Africa/Asmara",name:"Asmara"},{value:"Africa/Asmera",name:"Asmera"},{value:"Africa/Bamako",name:"Bamako"},{value:"Africa/Bangui",name:"Bangui"},{value:"Africa/Banjul",name:"Banjul"},{value:"Africa/Bissau",name:"Bissau"},{value:"Africa/Blantyre",name:"Blantyre"},{value:"Africa/Brazzaville",name:"Brazzaville"},{value:"Africa/Bujumbura",name:"Bujumbura"},{value:"Africa/Cairo",name:"Cairo"},{value:"Africa/Casablanca",name:"Casablanca"},{value:"Africa/Ceuta",name:"Ceuta"},{value:"Africa/Conakry",name:"Conakry"},{value:"Africa/Dakar",name:"Dakar"},{value:"Africa/Dar_es_Salaam",name:"Dar es Salaam"},{value:"Africa/Djibouti",name:"Djibouti"},{value:"Africa/Douala",name:"Douala"},{value:"Africa/El_Aaiun",name:"El Aaiun"},{value:"Africa/Freetown",name:"Freetown"},{value:"Africa/Gaborone",name:"Gaborone"},{value:"Africa/Harare",name:"Harare"},{value:"Africa/Johannesburg",name:"Johannesburg"},{value:"Africa/Kampala",name:"Kampala"},{value:"Africa/Khartoum",name:"Khartoum"},{value:"Africa/Kigali",name:"Kigali"},{value:"Africa/Kinshasa",name:"Kinshasa"},{value:"Africa/Lagos",name:"Lagos"},{value:"Africa/Libreville",name:"Libreville"},{value:"Africa/Lome",name:"Lome"},{value:"Africa/Luanda",name:"Luanda"},{value:"Africa/Lubumbashi",name:"Lubumbashi"},{value:"Africa/Lusaka",name:"Lusaka"},{value:"Africa/Malabo",name:"Malabo"},{value:"Africa/Maputo",name:"Maputo"},{value:"Africa/Maseru",name:"Maseru"},{value:"Africa/Mbabane",name:"Mbabane"},{value:"Africa/Mogadishu",name:"Mogadishu"},{value:"Africa/Monrovia",name:"Monrovia"},{value:"Africa/Nairobi",name:"Nairobi"},{value:"Africa/Ndjamena",name:"Ndjamena"},{value:"Africa/Niamey",name:"Niamey"},{value:"Africa/Nouakchott",name:"Nouakchott"},{value:"Africa/Ouagadougou",name:"Ouagadougou"},{value:"Africa/Porto-Novo",name:"Porto-Novo"},{value:"Africa/Sao_Tome",name:"Sao Tome"},{value:"Africa/Timbuktu",name:"Timbuktu"},{value:"Africa/Tripoli",name:"Tripoli"},{value:"Africa/Tunis",name:"Tunis"},{value:"Africa/Windhoek",name:"Windhoek"}]},{group:"Australia",zones:[{value:"Australia/ACT",name:"ACT"},{value:"Australia/Adelaide",name:"Adelaide"},{value:"Australia/Brisbane",name:"Brisbane"},{value:"Australia/Broken_Hill",name:"Broken Hill"},{value:"Australia/Canberra",name:"Canberra"},{value:"Australia/Currie",name:"Currie"},{value:"Australia/Darwin",name:"Darwin"},{value:"Australia/Eucla",name:"Eucla"},{value:"Australia/Hobart",name:"Hobart"},{value:"Australia/LHI",name:"LHI"},{value:"Australia/Lindeman",name:"Lindeman"},{value:"Australia/Lord_Howe",name:"Lord Howe"},{value:"Australia/Melbourne",name:"Melbourne"},{value:"Australia/North",name:"North"},{value:"Australia/NSW",name:"NSW"},{value:"Australia/Perth",name:"Perth"},{value:"Australia/Queensland",name:"Queensland"},{value:"Australia/South",name:"South"},{value:"Australia/Sydney",name:"Sydney"},{value:"Australia/Tasmania",name:"Tasmania"},{value:"Australia/Victoria",name:"Victoria"},{value:"Australia/West",name:"West"},{value:"Australia/Yancowinna",name:"Yancowinna"}]},{group:"Indian",zones:[{value:"Indian/Antananarivo",name:"Antananarivo"},{value:"Indian/Chagos",name:"Chagos"},{value:"Indian/Christmas",name:"Christmas"},{value:"Indian/Cocos",name:"Cocos"},{value:"Indian/Comoro",name:"Comoro"},{value:"Indian/Kerguelen",name:"Kerguelen"},{value:"Indian/Mahe",name:"Mahe"},{value:"Indian/Maldives",name:"Maldives"},{value:"Indian/Mauritius",name:"Mauritius"},{value:"Indian/Mayotte",name:"Mayotte"},{value:"Indian/Reunion",name:"Reunion"}]},{group:"Atlantic",zones:[{value:"Atlantic/Azores",name:"Azores"},{value:"Atlantic/Bermuda",name:"Bermuda"},{value:"Atlantic/Canary",name:"Canary"},{value:"Atlantic/Cape_Verde",name:"Cape Verde"},{value:"Atlantic/Faeroe",name:"Faeroe"},{value:"Atlantic/Faroe",name:"Faroe"},{value:"Atlantic/Jan_Mayen",name:"Jan Mayen"},{value:"Atlantic/Madeira",name:"Madeira"},{value:"Atlantic/Reykjavik",name:"Reykjavik"},{value:"Atlantic/South_Georgia",name:"South Georgia"},{value:"Atlantic/Stanley",name:"Stanley"},{value:"Atlantic/St_Helena",name:"St Helena"}]},{group:"Pacific",zones:[{value:"Pacific/Apia",name:"Apia"},{value:"Pacific/Auckland",name:"Auckland"},{value:"Pacific/Chatham",name:"Chatham"},{value:"Pacific/Easter",name:"Easter"},{value:"Pacific/Efate",name:"Efate"},{value:"Pacific/Enderbury",name:"Enderbury"},{value:"Pacific/Fakaofo",name:"Fakaofo"},{value:"Pacific/Fiji",name:"Fiji"},{value:"Pacific/Funafuti",name:"Funafuti"},{value:"Pacific/Galapagos",name:"Galapagos"},{value:"Pacific/Gambier",name:"Gambier"},{value:"Pacific/Guadalcanal",name:"Guadalcanal"},{value:"Pacific/Guam",name:"Guam"},{value:"Pacific/Honolulu",name:"Honolulu"},{value:"Pacific/Johnston",name:"Johnston"},{value:"Pacific/Kiritimati",name:"Kiritimati"},{value:"Pacific/Kosrae",name:"Kosrae"},{value:"Pacific/Kwajalein",name:"Kwajalein"},{value:"Pacific/Majuro",name:"Majuro"},{value:"Pacific/Marquesas",name:"Marquesas"},{value:"Pacific/Midway",name:"Midway"},{value:"Pacific/Nauru",name:"Nauru"},{value:"Pacific/Niue",name:"Niue"},{value:"Pacific/Norfolk",name:"Norfolk"},{value:"Pacific/Noumea",name:"Noumea"},{value:"Pacific/Pago_Pago",name:"Pago Pago"},{value:"Pacific/Palau",name:"Palau"},{value:"Pacific/Pitcairn",name:"Pitcairn"},{value:"Pacific/Ponape",name:"Ponape"},{value:"Pacific/Port_Moresby",name:"Port Moresby"},{value:"Pacific/Rarotonga",name:"Rarotonga"},{value:"Pacific/Saipan",name:"Saipan"},{value:"Pacific/Samoa",name:"Samoa"},{value:"Pacific/Tahiti",name:"Tahiti"},{value:"Pacific/Tarawa",name:"Tarawa"},{value:"Pacific/Tongatapu",name:"Tongatapu"},{value:"Pacific/Truk",name:"Truk"},{value:"Pacific/Wake",name:"Wake"},{value:"Pacific/Wallis",name:"Wallis"},{value:"Pacific/Yap",name:"Yap"}]},{group:"Antarctica",zones:[{value:"Antarctica/Casey",name:"Casey"},{value:"Antarctica/Davis",name:"Davis"},{value:"Antarctica/DumontDUrville",name:"DumontDUrville"},{value:"Antarctica/Macquarie",name:"Macquarie"},{value:"Antarctica/Mawson",name:"Mawson"},{value:"Antarctica/McMurdo",name:"McMurdo"},{value:"Antarctica/Palmer",name:"Palmer"},{value:"Antarctica/Rothera",name:"Rothera"},{value:"Antarctica/South_Pole",name:"South Pole"},{value:"Antarctica/Syowa",name:"Syowa"},{value:"Antarctica/Vostok",name:"Vostok"}]},{group:"Arctic",zones:[{value:"Arctic/Longyearbyen",name:"Longyearbyen"}]},{group:"UTC",zones:[{value:"UTC",name:"UTC"}]},{group:"Manual Offsets",zones:[{value:"UTC-12",name:"UTC-12"},{value:"UTC-11",name:"UTC-11"},{value:"UTC-10",name:"UTC-10"},{value:"UTC-9",name:"UTC-9"},{value:"UTC-8",name:"UTC-8"},{value:"UTC-7",name:"UTC-7"},{value:"UTC-6",name:"UTC-6"},{value:"UTC-5",name:"UTC-5"},{value:"UTC-4",name:"UTC-4"},{value:"UTC-3",name:"UTC-3"},{value:"UTC-2",name:"UTC-2"},{value:"UTC-1",name:"UTC-1"},{value:"UTC+0",name:"UTC+0"},{value:"UTC+1",name:"UTC+1"},{value:"UTC+2",name:"UTC+2"},{value:"UTC+3",name:"UTC+3"},{value:"UTC+4",name:"UTC+4"},{value:"UTC+5",name:"UTC+5"},{value:"UTC+6",name:"UTC+6"},{value:"UTC+7",name:"UTC+7"},{value:"UTC+8",name:"UTC+8"},{value:"UTC+9",name:"UTC+9"},{value:"UTC+10",name:"UTC+10"},{value:"UTC+11",name:"UTC+11"},{value:"UTC+12",name:"UTC+12"},{value:"UTC+13",name:"UTC+13"},{value:"UTC+14",name:"UTC+14"}]}]}}}),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.motiondialer",{url:"/motiondialer",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:16}}})}]),angular.module("xCallyShuttleApp").controller("MotionDialerProcessListCtrl",["$scope","$uibModal","$translate","xAlert","Modal","MotionDialerProcess","uiGridConstants","usSpinnerService",function(a,b,c,d,e,f,g,h){a.initView=function(){return a.gridOptions={paginationPageSizes:[10,25,50,75],paginationPageSize:10,enableFiltering:!0,enableSorting:!0,enableGridMenu:!0,flatEntityAccess:!0,showGridFooter:!0,fastWatch:!0,columnDefs:[{name:"id",width:60},{name:"name"},{name:"queue",enableSorting:!1},{name:"extension",enableSorting:!1},{name:"list_name",cellClass:"ui-grid-vcenter",cellTemplate:"<div>{{row.entity.list ? row.entity.list.name : row.entity.list_name}}</div>",headerCellFilter:"translate",enableSorting:!1},{name:"status",cellTemplate:"<div><a class=\"btn btn-xs\" data-ng-class=\"row.entity.status == 'STOP' ? 'red-sunglo' : 'green-meadow'\" data-ng-href=\"#\">{{ (row.entity.status === 'RUN') ? 'RUNNING' : 'STOPPED'}}</a></div>",cellClass:"ui-grid-vcenter",filter:{type:g.filter.SELECT,selectOptions:[{value:"RUN",label:"RUNNING"},{value:"STOP",label:"STOPPED"}]}},{name:"updatedtime",sort:{direction:g.DESC},enableFiltering:!1},{name:"action",cellTemplate:'<div><a class="btn btn-xs blue-hoki" href="/motiondialer/processes/view/{{row.entity.id}}/overview"><i class="icon-settings"></i></a><a class="btn btn-xs red-sunglo" data-ng-click="grid.appScope.deleteItem(row.entity.name, row.entity.id)"><i class="icon-trash"></i></a></div>',enableSorting:!1,cellClass:"ui-grid-vcenter",enableFiltering:!1}]},f.list({page:1,size:6e5}).$promise.then(function(b){b.status>0?a.gridOptions.data=b.response.RMI.rows:d.show("Please, check your connection!","danger")})["catch"](function(a){d.error(a)})["finally"](function(){h.stop("spinner-grid")})},a.createProcessQueue=function(){var c=b.open({animation:!0,templateUrl:"app/motiondialer/process/list/list.create.queue.modal.html",controller:"MotionDialerProcessListCreateQueueCtrl"});c.result.then(function(b){a.gridOptions.data.push(b.response.RMI)})},a.createProcessSquare=function(){var c=b.open({animation:!0,templateUrl:"app/motiondialer/process/list/list.create.square.modal.html",controller:"MotionDialerProcessListCreateSquareCtrl"});c.result.then(function(b){a.gridOptions.data.push(b.response.RMI)})},a.deleteItem=e.confirm["delete"](function(b){return f["delete"]({id:b}).$promise.then(function(e){e.status>0?(_.remove(a.gridOptions.data,{id:b}),d.show(c.instant("MESSAGE_WELL_DONE"),"success")):d.show(e.message||"Please, check your connection!","danger")})["catch"](function(a){d.error(a)})})}]),angular.module("xCallyShuttleApp").controller("MotionDialerProcessListCreateQueueCtrl",["$scope","$translate","$uibModalInstance","MotionDialerProcess","MotionDialerList","Trunk","VoiceQueue","Route","xAlert","List",function(a,b,c,d,e,f,g,h,i,j){a.form={},a.item={fetch_sort:"ASC",timeout:3},a.initModal=function(){var b;return g.get().$promise.then(function(b){return a.queues={},b&&(a.queues=b.rows),f.get().$promise}).then(function(b){return a.trunks={},b&&(a.trunks=b.rows),a.trunks.push({name:"fake"}),j.get().$promise}).then(function(a){return a&&a.rows.length?(b=a.rows,console.log(b),e.list({page:1,size:6e5}).$promise):void 0}).then(function(c){if(a.lists=[],c&&c.status>0){console.log(c.response.RMI.rows);var d;_.forEach(b,function(b){d=_.find(c.response.RMI.rows,{name:b.name}),d&&a.lists.push(d)})}else i.show("Please, check your connection!","danger")})["catch"](function(a){i.error(a)})},a.save=function(){var e="_process_"+a.item.name+Math.round(1e5*Math.random()),f="Generated by Motion Dialer, Process Queue"+(a.item.description?", "+a.item.description:"");return h.save({appdata:"Internal Call (MotionDialer)",context:"from-sip",exten:e.replace(/\s/g,"_"),type:"internal",description:f,Applications:[{appdata:["CDR(type)=tigerdial"],app:"Set",interval:"*,*,*,*",type:"internal"},{appdata:["QUEUE_PRIO=99"],app:"Set",interval:"*,*,*,*",type:"internal"},{appdata:["CALLERID(name)=${AUTODIAL_NAME}"],app:"Set",interval:"*,*,*,*",type:"internal"},{appdata:["CALLERID(num)=${AUTODIAL_PHONE}"],app:"Set",interval:"*,*,*,*",type:"internal"},{appdata:[a.item.queue.name,"","","",a.item.timeout],app:"Queue",interval:"*,*,*,*",type:"internal"}]}).$promise.then(function(b){return d.insert({name:a.item.name,id_list:a.item.list.id,queue:a.item.queue.name,device:a.item.device.name,context:"from-sip",extension:e.replace(/\s/g,"_"),description:a.item.description,auto_closed:!0,fetch_sort:a.item.fetch_sort,context_for_other_calls:"from-sip",extension_for_other_calls:"_TIGER-DIAL-PEER-DO-NOT-DELETE",hooks:[{target:"http://localhost:9000/api/report/integrations/tdDisposal",type:"http",http_method:"POST",json:"true",event:"hangup"}]}).$promise}).then(function(d){d.status>0?(i.show(b.instant("MESSAGE_WELL_DONE"),"success"),d.response.RMI.list=a.item.list,c.close(d)):i.show(d.message||"Please, check your connection!","danger")})["catch"](function(a){i.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").controller("MotionDialerProcessListCreateSquareCtrl",["$scope","$translate","$uibModalInstance","MotionDialerProcess","MotionDialerList","SquareProject","Trunk","Route","xAlert","List",function(a,b,c,d,e,f,g,h,i,j){a.form={},a.item={fetch_sort:"ASC"},a.initModal=function(){var b;return f.get().$promise.then(function(b){return a.projects={},b&&(a.projects=b.rows),g.get().$promise}).then(function(b){return a.trunks={},b&&(a.trunks=b.rows),a.trunks.push({name:"fake"}),j.get().$promise}).then(function(a){return a&&a.rows.length?(b=a.rows,e.list({page:1,size:6e5}).$promise):void 0}).then(function(c){if(a.lists=[],c&&c.status>0){var d;_.forEach(b,function(b){d=_.find(c.response.RMI.rows,{name:b.name}),d&&a.lists.push(d)})}else i.show("Please, check your connection!","danger")})["catch"](function(a){i.error(a)})},a.save=function(){var e="_process_"+a.item.name+Math.round(1e5*Math.random()),f="Generated by Motion Dialer, Process Square"+(a.item.description?", "+a.item.description:"");return h.save({appdata:"Internal Call (MotionDialer)",context:"from-sip",exten:e.replace(/\s/g,"_"),type:"internal",description:f,Applications:[{appdata:["CDR(type)=tigerdial"],app:"Set",interval:"*,*,*,*",type:"internal"},{appdata:["agi://127.0.0.1/square",a.item.project.name],app:"AGI",interval:"*,*,*,*",type:"internal"}]}).$promise.then(function(b){return d.insert({name:a.item.name,id_list:a.item.list.id,queue:"none",device:a.item.device.name,context:"from-sip",extension:e.replace(/\s/g,"_"),description:a.item.description,auto_closed:!0,channel_limit:15,fetch_sort:a.item.fetch_sort}).$promise}).then(function(d){d.status>0?(i.show(b.instant("MESSAGE_WELL_DONE"),"success"),d.response.RMI.list=a.item.list,c.close(d)):i.show(d.message||"Please, check your connection!","danger")})["catch"](function(a){i.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.motiondialer.processes.list",{url:"/list",templateUrl:"app/motiondialer/process/list/list.html",controller:"MotionDialerProcessListCtrl",authenticate:!0})}]),angular.module("xCallyShuttleApp").factory("MotionDialerProcess",["$resource",function(a){return a("/api/rest/process/:controller",null,{list:{method:"POST",params:{controller:"list"}},insert:{method:"POST",params:{controller:"insert"}},"delete":{method:"POST",params:{controller:"delete"}},find:{method:"POST",params:{controller:"find"}},update:{method:"POST",params:{controller:"update"}},logs:{method:"GET",params:{controller:"logs"}}})}]),angular.module("xCallyShuttleApp").factory("MotionDialerSpooler",["$resource",function(a){return a("/api/rest/spooler/:controller/:retrieve/:peer",null,{list:{method:"POST",params:{controller:"list"}},"delete":{method:"POST",params:{controller:"delete"}},find:{method:"POST",params:{controller:"find"}},summary:{method:"POST",params:{controller:"summary"}},close:{method:"POST",params:{controller:"retrieve",retrieve:"close"}},open:{method:"POST",params:{controller:"retrieve",retrieve:"open"}},blacklist:{method:"POST",params:{controller:"retrieve",retrieve:"blacklist"}},planning:{method:"POST",params:{controller:"retrieve",retrieve:"planning"}},planningpeer:{method:"POST",params:{controller:"retrieve",retrieve:"planning",peer:"peer"}},fresh:{method:"POST",params:{controller:"fresh"}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.motiondialer.processes",{url:"/processes",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("MotionDialerProcessViewCtrl",["$scope","$translate","$stateParams","$uibModal","$state","xAlert","uiGridConstants","usSpinnerService","MotionDialerProcess","MotionDialerSpooler","Modal","VoiceQueue",function(a,b,c,d,e,f,g,h,i,j,k,l){function m(){return j.fresh({id_process:parseInt(c.id)}).$promise.then(function(b){b.status>0?(a.process.runtime||(a.process.runtime={}),a.process.runtime.fresh=b.response.RMI.value):f.show(b.message||"Please, check your connection!","danger")})["catch"](function(a){f.error(a)})}a.process={},a.techs=["SIP","IAX","LOCAL","KHOMP"],a.dialFormats=["tech/device/number","tech/number@device"],a.checkDuplicates=["ALWAYS","IFOPEN","NO"],a.codecs=["g729","ilbc","gsm","ulaw","alaw"],a._=_,a.getProcess=function(){return i.find({id:parseInt(c.id)}).$promise.then(function(b){b.status>0?(b.response.RMI.codecs=b.response.RMI.codecs.split(","),a.process=b.response.RMI,a.process.hooks&&a.process.hooks.length?a.process.disposal=!0:a.process.disposal=!1,m()):f.show(b.message||"Please, check your connection!","danger")})["catch"](function(a){f.error(a)})},a.getSummary=function(){return j.summary({id_process:parseInt(c.id)}).$promise.then(function(b){if(b.status>0){a.summary=b.response.RMI.totals,a.total=0;for(var c=0;c<a.summary.length;c++)a.total+=a.summary[c][1]}else f.show(b.message||"Please, check your connection!","danger")})["catch"](function(a){f.error(a)})["finally"](function(){h.stop("spinner-grid")})},a.updateProcess=function(){var c=_.clone(a.process);return delete c.updatedtime,delete c.id_list,delete c.createdtime,delete c.runtime,delete c.fetch_sort,delete c.list,c.codecs=c.codecs.join(","),""===c.timezone&&delete c.timezone,c.disposal?c.hooks=[{target:"http://localhost:9000/api/report/integrations/tdDisposal",type:"http",http_method:"POST",json:"true",event:"hangup"}]:c.hooks=[],delete c.disposal,i.update(c).$promise.then(function(c){c.status>0?(c.response.RMI.codecs=c.response.RMI.codecs.split(","),a.process=c.response.RMI,a.process.hooks&&a.process.hooks.length?a.process.disposal=!0:a.process.disposal=!1,f.show(b.instant("MESSAGE_WELL_DONE"),"success")):c.response.RMI.errors.forEach(function(a){a?f.show(a.field+": "+a.error,"danger"):f.show("Please, check your connection!","danger")})})["catch"](function(a){f.error(a)})},a.getSpooler=function(){return h.spin("spinner-grid"),a.gridOptions||(a.gridOptions={paginationPageSizes:[10,25,50,75],paginationPageSize:10,enableFiltering:!0,enableSorting:!0,enableGridMenu:!0,flatEntityAccess:!0,showGridFooter:!0,fastWatch:!0,headerCellFilter:"translate",columnDefs:[{name:"name"},{name:"phones",cellTemplate:"<div>{{row.entity.phones.join(',')}}</div>",cellClass:"ui-grid-vcenter"},{name:"retrieve",displayName:"APPLICATION_STATUS",headerCellFilter:"translate",filter:{type:g.filter.SELECT,selectOptions:[{value:"PLANNED_PEER",label:"PLANNED PEER"},{value:"PLANNED",label:"PLANNED"},{value:"BLACK_LIST",label:"BLACKLIST"},{value:"OPEN",label:"OPEN"},{value:"CLOSED",label:"CLOSED"},{value:"MAX_ATTEMPTS",label:"MAX ATTEMPTS"},{value:"COUNTER_BLOCK",label:"COUNTER BLOCK"},{value:"PLANNED_REQUEST",label:"PLANNED REQUEST"},{value:"DELETE",label:"DELETE"}]}},{name:"counter",cellTemplate:"<div>{{grid.appScope.getCounter(row.entity)}}</div>",cellClass:"ui-grid-vcenter",enableFiltering:!1},{name:"planningtime",cellTemplate:"<div><span data-ng-if=\"row.entity.retrieve === 'PLANNED_PEER' || row.entity.retrieve === 'PLANNED'\">{{row.entity.planningtime | date:'yyyy-MM-dd HH:mm'}}</span></div>",cellClass:"ui-grid-vcenter",enableFiltering:!1},{name:"planningpeer",cellTemplate:"<div><span data-ng-if=\"row.entity.retrieve === 'PLANNED_PEER'\">{{row.entity.planningpeer}}</span></div>",cellClass:"ui-grid-vcenter",enableFiltering:!1},{name:"action",cellTemplate:'<div><a class="btn btn-xs green" data-ng-click="grid.appScope.historySpooler(row.entity.history)"><i class="icon-info"></i></a> <a class="btn btn-xs blue-hoki" data-ng-click="grid.appScope.editSpooler(row.entity)"><i class="icon-settings"></i></a></div>',enableSorting:!1,cellClass:"ui-grid-vcenter",enableFiltering:!1}]}),j.list({id_process:parseInt(c.id),page:1,size:6e5}).$promise.then(function(b){b.status>0?a.gridOptions.data=b.response.RMI.rows:f.show(b.message||"Please, check your connection!","danger")})["catch"](function(a){f.error(a)})["finally"](function(){h.stop("spinner-grid")})},a.deleteSpooler=k.confirm["delete"](function(c){return j["delete"]({id:c}).$promise.then(function(d){d.status>0?(_.remove(a.gridOptions.data,{id:c}),f.show(b.instant("MESSAGE_WELL_DONE"),"success")):f.show(d.message||"Please, check your connection!","danger")})["catch"](function(a){f.error(a)})}),a.historySpooler=function(b){var c=d.open({animation:!0,templateUrl:"app/motiondialer/process/view/view.spooler.history.modal.html",controller:"MotionDialerViewSpoolerHistoryCtrl",resolve:{historySpooler:function(){return b}}});c.result.then(function(b){a.gridOptions.data.push(b.response.RMI)})},a.editSpooler=function(a){var b=d.open({animation:!0,templateUrl:"app/motiondialer/process/view/view.spooler.edit.modal.html",controller:"MotionDialerViewSpoolerEditCtrl",resolve:{entitySpooler:function(){return _.clone(a)}}});b.result.then(function(b){_.merge(a,b)})},a.initSettings=function(){return a.queues=null,l.get().$promise.then(function(b){b&&(a.queues=b.rows)})["catch"](function(a){f.error(a)})},a.createInterval=function(b){var c=d.open({animation:!0,templateUrl:"app/motiondialer/process/view/view.create.interval.modal.html",controller:"MotionDialerViewCreateIntervalCtrl",resolve:{objectProcess:function(){return a.process},intervalType:function(){return b},intervalValue:function(){return null},intervalIndex:function(){return null}}});c.result.then(function(b){a.process=b})},a.editInterval=function(b,c,e){var f=d.open({animation:!0,templateUrl:"app/motiondialer/process/view/view.create.interval.modal.html",controller:"MotionDialerViewCreateIntervalCtrl",resolve:{objectProcess:function(){return a.process},intervalType:function(){return b},intervalValue:function(){return c},intervalIndex:function(){return e}}});f.result.then(function(b){a.process=b})},a.deleteInterval=k.confirm["delete"](function(c,d){var e={id:a.process.id};return d?(e.intervals=[],e.intervals=e.intervals.concat(a.process.intervals),e.intervals.splice(c,1)):(e.not_intervals=[],e.not_intervals=e.not_intervals.concat(a.process.not_intervals),e.not_intervals.splice(c,1)),i.update(e).$promise.then(function(c){c.status>0?(c.response.RMI.codecs=c.response.RMI.codecs.split(","),a.process=c.response.RMI,f.show(b.instant("MESSAGE_WELL_DONE"),"success")):c.response.RMI.errors.forEach(function(a){a?f.show(a.field+": "+a.error,"danger"):f.show("Please, check your connection!","danger")})})["catch"](function(a){f.error(a)})}),a.runOrStop=function(){var b=d.open({animation:!0,templateUrl:"app/motiondialer/process/view/view.run.process.modal.html",controller:"MotionDialerViewRunProcessCtrl",resolve:{statusProcess:function(){return a.process.status}}});b.result.then(function(b){a.process.status=b.status})},a.goToContacts=function(a){a&&e.go("main.contactmanager.contacts.list",{listId:a})},a.getCounter=function(a){return a.counter+a.counter_amd+a.counter_busy+a.counter_congestion+a.counter_drop+a.counter_failed+a.counter_noanswer+a.counter_nosuchextension+a.counter_ringtimeout}}]),angular.module("xCallyShuttleApp").controller("MotionDialerViewCreateIntervalCtrl",["$scope","$translate","$uibModalInstance","$stateParams","MotionDialerProcess","xAlert","objectProcess","intervalType","intervalValue","intervalIndex","interval",function(a,b,c,d,e,f,g,h,i,j,k){function l(a){var b,c=a.split("|"),d={};return c.forEach(function(a,c){switch(c){case 0:"*"!==a?(b=a.split("-"),d.t_from=moment(b[0],"HH:mm"),d.t_to=moment(b[1],"HH:mm"),d.alwaysTime=!1):(d.t_from=moment(new Date),d.t_to=moment(new Date),d.alwaysTime=!0);break;case 1:"*"!==a?(b=a.split("-"),d.wd_from=b[0].toLowerCase(),d.wd_to=b[1]?b[1].toLowerCase():"always"):(d.wd_from="always",d.wd_to="always");break;case 2:"*"!==a?(b=a.split("-"),d.md_from=b[0],d.md_to=b[1]?b[1]:"always"):(d.md_from="always",d.md_to="always");break;case 3:"*"!==a?(b=a.split("-"),d.m_from=b[0],d.m_to=b[1]?b[1]:"always"):(d.m_from="always",d.m_to="always")}}),d}function m(a){var b,c,d,e;return b=a.t_from&&a.t_to&&!a.alwaysTime?moment(a.t_from).format("HH:mm")+"-"+moment(a.t_to).format("HH:mm"):"*",a.wd_from&&"always"!==a.wd_from?(c=a.wd_from.toUpperCase(),a.wd_to&&"always"!==a.wd_to&&(c+="-"+a.wd_to.toUpperCase())):c="*",a.md_from&&"always"!==a.md_from?(d=a.md_from,a.md_to&&"always"!==a.md_to&&(d+="-"+a.md_to)):d="*",a.m_from&&"always"!==a.m_from?(e=a.m_from,a.m_to&&"always"!==a.m_to&&(e+="-"+a.m_to)):e="*",b+"|"+c+"|"+d+"|"+e}a.isNew=!1,a.form={},a.$interval=k.interval,i||(i=h?"8:00-20:00|MON-FRI|*|*":"00:01-07:59|SAT-SUN|*|*",a.isNew=!0),a.splittedInterval=l(i),a.save=function(){var d=m(a.splittedInterval);console.log(d);var i={id:g.id};return h?(i.intervals=[],i.intervals=i.intervals.concat(g.intervals),a.isNew?i.intervals.push(d):i.intervals[j]=d):(i.not_intervals=[],i.not_intervals=i.not_intervals.concat(g.not_intervals),a.isNew?i.not_intervals.push(d):i.not_intervals[j]=d),console.log(i),e.update(i).$promise.then(function(a){a.status>0?(a.response.RMI.codecs=a.response.RMI.codecs.split(","),f.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a.response.RMI)):a.response.RMI.errors.forEach(function(a){a?f.show(a.field+": "+a.error,"danger"):f.show("Please, check your connection!","danger")})})["catch"](function(a){f.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.motiondialer.processes.view",{url:"/view/:id",templateUrl:"app/motiondialer/process/view/view.html",controller:"MotionDialerProcessViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.motiondialer.processes.view.overview",{url:"/overview",templateUrl:"app/motiondialer/process/view/view.overview.html"}).state("main.motiondialer.processes.view.settings",{url:"/settings",templateUrl:"app/motiondialer/process/view/view.settings.html"}).state("main.motiondialer.processes.view.intervals",{url:"/intervals",templateUrl:"app/motiondialer/process/view/view.intervals.html"}).state("main.motiondialer.processes.view.spooler",{url:"/spooler",templateUrl:"app/motiondialer/process/view/view.spooler.html"})}]),angular.module("xCallyShuttleApp").controller("MotionDialerViewRunProcessCtrl",["$scope","$stateParams","$uibModalInstance","$translate","statusProcess","MotionDialerProcess","xAlert",function(a,b,c,d,e,f,g){a.status="RUN"===e?"STOP":"RUN",a.yes=function(){f.update({id:parseInt(b.id),status:a.status}).$promise.then(function(a){a.status>0?(g.show(d.instant("MESSAGE_WELL_DONE"),"success"), -c.close(a.response.RMI)):g.show(a.message||"Please, check your connection!","danger")})["catch"](function(a){g.error(a)})},a.no=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").controller("MotionDialerViewSpoolerEditCtrl",["$scope","$translate","$uibModalInstance","$stateParams","MotionDialerSpooler","xAlert","entitySpooler","Agent",function(a,b,c,d,e,f,g,h){a.moment=moment,a.entitySpooler=g,_.includes(["PLANNED","PLANNED_PEER"],a.entitySpooler.retrieve)||(a.entitySpooler.planningtime=moment()),a.initModal=function(){return h.get().$promise.then(function(b){a.agents=[],b&&b.rows.forEach(function(b){a.agents.push("SIP/"+b.name)})})["catch"](function(a){f.error(a)})},a.save=function(){var d;switch(a.entitySpooler.retrieve){case"CLOSED":d=e.close({id:parseInt(a.entitySpooler.id)});break;case"OPEN":d=e.open({id:parseInt(a.entitySpooler.id)});break;case"BLACK_LIST":d=e.blacklist({id:parseInt(a.entitySpooler.id)});break;case"PLANNED":d=e.planning({id:parseInt(a.entitySpooler.id),date:moment(a.entitySpooler.planningtime).format("YYYY-MM-DD HH:mm")});break;case"PLANNED_PEER":d=e.planningpeer({id:parseInt(a.entitySpooler.id),date:moment(a.entitySpooler.planningtime).format("YYYY-MM-DD HH:mm"),peer:a.entitySpooler.planningpeer})}d?d.$promise.then(function(d){console.log(d),d.status>0?(f.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a.entitySpooler)):d.response.RMI.errors.forEach(function(a){a?f.show(a.field+": "+a.error,"danger"):f.show("Please, check your connection!","danger")})})["catch"](function(a){f.error(a)}):f.show("RETRIEVE NOT FOUND","danger")},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").controller("MotionDialerViewSpoolerHistoryCtrl",["$scope","$translate","$uibModalInstance","$stateParams","MotionDialerSpooler","xAlert","historySpooler",function(a,b,c,d,e,f,g){a.historySpooler=g,a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").factory("ReportMotionDialer",["$resource",function(a){return a("/api/report/motiondialer/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("ResetCtrl",["$scope","Auth","$location","$window","$rootScope","Setting","xAlert","$stateParams","$state",function(a,b,c,d,e,f,g,h,i){a.userReset={},a.getInfo=function(){return f.get({controller:"info"}).$promise.then(function(b){return a.info=b,f.get({id:1}).$promise}).then(function(b){a.setting=b})["catch"](function(a){console.error(a)})},e.bodyLayout="login",a.$on("$viewContentLoaded",function(){Metronic.init(),Layout.init()}),a.reset=function(){b.reset({token:h.token,password:a.userReset.password}).then(function(){i.go("login",{reset:!0})})["catch"](function(a){g.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("reset",{url:"/reset/:token",templateUrl:"app/reset/reset.html",controller:"ResetCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/login.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("SalesforceListCtrl",["$scope","SalesforceAccount","gridOptions","xAlert","$translate",function(a,b,c,d,e){a.initView=function(){var d={exporterCsvFilename:"salesforce_account.csv",columnDefs:[{name:"name",displayName:"APPLICATION_NAME"},{name:"username"},{name:"remoteUri",displayName:"APPLICATION_URI"},{name:"action",buttons:[{"class":"blue-hoki",href:"/salesforce/view/{{row.entity.id}}/account",name:"profile"},{"class":"green-jungle",name:"check",onClick:"grid.appScope.checkAccount(row.entity.id)"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.checkAccount=function(a){return b.check({id:a}).$promise.then(function(){d.show(e.instant("MESSAGE_ACCOUNT_VERIFIED"),"success")})["catch"](function(){d.show(e.instant("MESSAGE_ACCOUNT_INVALID"),"danger")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.salesforce.list",{url:"/list",templateUrl:"app/salesforce/list/list.html",controller:"SalesforceListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").factory("SalesforceAccount",["$resource",function(a){return a("/api/salesforce/accounts/:id/:controller",{id:"@id"},{update:{method:"PUT"},fields:{params:{controller:"fields"},isArray:!0},check:{params:{controller:"check"}}})}]).factory("SalesforceConfiguration",["$resource",function(a){return a("/api/salesforce/accounts/:accountId/configurations/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]).factory("SalesforceField",["$resource",function(a){return a("/api/salesforce/accounts/:accountId/configurations/:configurationId/fields/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.salesforce",{url:"/salesforce",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.salesforce.view.configurations",{url:"/configurations",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("SalesforceViewConfigurationListCtrl",["$scope","$stateParams","$translate","gridOptions","SalesforceConfiguration","$uibModal",function(a,b,c,d,e,f){a.initView=function(){var c={exporterCsvFilename:"salesforce_configurations.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:125,buttons:[{"class":"blue-hoki",href:"/salesforce/view/{{row.entity.AccountId}}/configurations/view/{{row.entity.id}}",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(e,c,a,{accountId:b.id})},a.createItem=function(){var b=f.open({animation:!0,templateUrl:"app/salesforce/view/configuration/list/create.modal.html",controller:"SalesforceCreateConfigurationCtrl"});b.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("SalesforceCreateConfigurationCtrl",["$scope","$translate","$uibModalInstance","SalesforceConfiguration","xAlert","$stateParams","channel",function(a,b,c,d,e,f,g){a.form={},a.item={},a.channels=g,a.item.channel="voice",a.item.type="Queue",a.save=function(){return d.save({accountId:f.id},a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.salesforce.view.configurations.list",{url:"/list",templateUrl:"app/salesforce/view/configuration/list/list.html",controller:"SalesforceViewConfigurationListCtrl"})}]),angular.module("xCallyShuttleApp").controller("SalesforceViewConfigurationViewCtrl",["$scope","$filter","$stateParams","$translate","socket","variable","xAlert","SalesforceAccount","SalesforceConfiguration","SalesforceField","Variable",function(a,b,c,d,e,f,g,h,i,j,k){a.$on("$destroy",function(){e.unsyncUpdates("salesforce_field")}),a.config={autoHideScrollbar:!1,theme:"dark",advanced:{updateOnContentResize:!0},setHeight:300,scrollInertia:0},a.fieldType=[{type:"string",title:"String"},{type:"variable",title:"Variable"},{type:"customVariable",title:"Custom Variable"}],a.descFieldType=[{type:"string",title:"String"},{type:"keyValue",title:"Key Value"}],a.groupVariableByGroup=function(a){switch(a.group){case"voice_queue":return"Voice: Queue";default:return"Other"}},a.initView=function(){a.configurationName="",a.subjectConfig=[],a.descriptionConfig=[],a.fieldConfig=[],a.variables=f},a.getConfiguration=function(){return i.get({accountId:c.id,id:c.configurationId}).$promise.then(function(b){a.configurationName=b.name,a.subjectConfig=b.Subject,a.descriptionConfig=b.Description,a.fieldConfig=b.Field,e.socket.on("salesforce_field:remove",function(b){_.remove(a.subjectConfig,{id:b.id}),_.remove(a.descriptionConfig,{id:b.id}),_.remove(a.fieldConfig,{id:b.id})})})["catch"](function(a){g.error(a)})},a.getCustomVariables=function(){return k.get().$promise.then(function(b){a.customVariables=b.rows})["catch"](function(a){g.error(a)})},a.getFields=function(){return h.fields({id:c.id}).$promise.then(function(c){a.accountFields=_.sortBy(b("salesforce")(c),["name"])})["catch"](function(a){g.error(a)})},a.addItem=function(b){var d={};switch(b){case"subject":case"description":d={type:"string",content:""};break;case"field":d={content:""}}return i.save({accountId:c.id,id:c.configurationId,controller:b},d).$promise.then(function(c){switch(b){case"subject":a.subjectConfig.push(c);break;case"description":a.descriptionConfig.push(c);break;case"field":a.fieldConfig.push(c)}})["catch"](function(a){g.error(a)})},a.changeType=function(b){"variable"===b.type?(b.content="",b.variableName=""):"string"===b.type?(b.VariableId=null,b.variableName=""):"customVariable"===b.type&&(b.VariableId=null,b.content=""),a.updateField(b)},a.updateField=function(a){return j.update({accountId:c.id,configurationId:c.configurationId,id:a.id},a).$promise.then(function(){})["catch"](function(a){g.error(a)})},a.removeItem=function(a){return j["delete"]({accountId:c.id,configurationId:c.configurationId,id:a.id}).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){g.error(a)})},a.changeDescType=function(b){"keyValue"===b.type?(b.content="","string"===b.keyType?(b.VariableId=null,b.variableName=""):"variable"===b.keyType?(b.keyContent="",b.VariableId=null):"customVariable"===b.keyType&&(b.keyContent="",b.variableName="")):"string"===b.type&&(b.VariableId=null,b.variableName="",b.key="",b.keyContent=""),a.updateField(b)},a.getSystemFieldOptions=function(b){if(b){var c=_.find(a.accountFields,"name",b);if(c)switch(c.type){case"picklist":return c.picklistValues;default:return}}},a.changeFieldType=function(b){b.content="",b.variableName="",b.nameField="",b.VariableId=null,a.updateField(b)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.salesforce.view.configurations.view",{url:"/view/:configurationId",templateUrl:"app/salesforce/view/configuration/view/view.html",controller:"SalesforceViewConfigurationViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("SalesforceViewCtrl",["$scope","$http","$stateParams","$translate","$location","WizardHandler","socket","xAlert","Modal","$filter","SalesforceAccount",function(a,b,c,d,e,f,g,h,i,j,k){a.initView=function(){return k.get({id:c.id}).$promise.then(function(b){a.account=b})["catch"](function(a){h.error(a)})},a.updateItem=function(){return k.update({id:c.id},a.account).$promise.then(function(){h.show(d.instant("MESSAGE_WELL_DONE")+".","success")})["catch"](function(a){h.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.salesforce.view",{url:"/view/:id",templateUrl:"app/salesforce/view/view.html",controller:"SalesforceViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.salesforce.view.account",{url:"/account",templateUrl:"app/salesforce/view/view.account.html"})}]),angular.module("xCallyShuttleApp").controller("SalesforceWizardCtrl",["$scope","$http","$location","$translate","xAlert","WizardHandler","SalesforceAccount",function(a,b,c,d,e,f,g){a.translate=d,a.initWizard=function(){a.$translate=d,a.forms={},a.item={},a.item.serverUrl=c.protocol()+"://"+location.host},a.next=function(){f.wizard().next()},a.exitValidation=function(a){return a},a.createItem=function(){return g.save(a.item).$promise.then(function(){e.show(d.instant("MESSAGE_WELL_DONE")+".","success"),c.path("/salesforce/list")})["catch"](function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.salesforce.wizard",{url:"/wizard",templateUrl:"app/salesforce/wizard/wizard.html",controller:"SalesforceWizardCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.customization",{url:"/customization",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("CustomizationGeneralViewCtrl",["$scope","gridOptions","$uibModal","FileUploader","$cookieStore","xAlert","$translate","Setting","$rootScope",function(a,b,c,d,e,f,g,h,i){a.radioSwitch={isActive:!!i.license.custom,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"};var j=a.uploader=new d({url:"api/settings/logo/main",queueLimit:1,withCredentials:!0,headers:{Authorization:"Bearer "+e.get("token")}});j.filters.push({name:"imageFilter",fn:function(a){var b="|"+a.type.slice(a.type.lastIndexOf("/")+1)+"|";return-1!=="|jpg|png|jpeg|".indexOf(b)}}),j.onSuccessItem=function(a,b){i.settings.logo=b.logo,f.show(g.instant("MESSAGE_WELL_DONE"),"success")},j.onErrorItem=function(){f.show(g.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")},j.onCompleteAll=function(){j.clearQueue()};var k=a.uploader2=new d({url:"api/settings/logo/login",queueLimit:1,withCredentials:!0,headers:{Authorization:"Bearer "+e.get("token")}});k.filters.push({name:"imageFilter",fn:function(a){var b="|"+a.type.slice(a.type.lastIndexOf("/")+1)+"|";return-1!=="|jpg|png|jpeg|".indexOf(b)}}),k.onSuccessItem=function(a,b){f.show(g.instant("MESSAGE_WELL_DONE"),"success")},k.onErrorItem=function(){f.show(g.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")},k.onCompleteAll=function(){k.clearQueue()},a.initView=function(){return h.get({id:1}).$promise.then(function(b){a.settings={defaultLogo:b.defaultLogo,defaultLoginLogo:b.defaultLoginLogo,footerWhiteLabel:b.footerWhiteLabel,defaultFooterWhiteLabel:b.defaultFooterWhiteLabel}})["catch"](function(a){f.error(a)})},a.update=function(){return h.update({id:1},a.settings).$promise.then(function(b){_.merge(i.settings,a.settings),f.show(g.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.customization.view.general",{url:"/general",templateUrl:"app/setting/customization/view/general/general.html",controller:"CustomizationGeneralViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/scripts/jquery.sparkline.min.js","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.js","assets/scripts/profile.js"]})}]}})}]),angular.module("xCallyShuttleApp").controller("CustomizationMotionBarViewCtrl",["$scope","gridOptions","$uibModal","FileUploader","$cookieStore","xAlert","$translate","Setting","$rootScope","$location",function(a,b,c,d,e,f,g,h,i,j){!i.license.preferred&&j.path("/landing"),a.radioSwitch={isActive:!!i.license.preferred,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"};var k=a.uploader=new d({url:"api/settings/logo/motionbar",queueLimit:1,withCredentials:!0,headers:{Authorization:"Bearer "+e.get("token")}});k.filters.push({name:"imageFilter",fn:function(a){var b="|"+a.type.slice(a.type.lastIndexOf("/")+1)+"|";return-1!=="|jpg|png|jpeg|".indexOf(b)}}),k.onSuccessItem=function(a,b){f.show(g.instant("MESSAGE_WELL_DONE"),"success")},k.onErrorItem=function(){f.show(g.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")},k.onCompleteAll=function(){k.clearQueue()},a.initView=function(){return h.get({id:1}).$promise.then(function(b){a.settings={defaultMotionBarLogo:b.defaultMotionBarLogo}})["catch"](function(a){f.error(a)})},a.update=function(){return h.update({id:1},a.settings).$promise.then(function(a){f.show(g.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.customization.view.motionbar",{url:"/motionbar",templateUrl:"app/setting/customization/view/motionbar/motionbar.html",controller:"CustomizationMotionBarViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/scripts/jquery.sparkline.min.js","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.js","assets/scripts/profile.js"]})}]}})}]),angular.module("xCallyShuttleApp").controller("CustomizationViewCtrl",["$scope",function(a){}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.customization.view",{url:"/view",templateUrl:"app/setting/customization/view/view.html",controller:"CustomizationViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.general",{url:"/general",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("GeneralMainViewCtrl",["$scope","xAlert","$translate","Setting",function(a,b,c,d){a.initView=function(){return d.get({id:1}).$promise.then(function(b){a.settings={agi_port:b.agi_port,min_internal:b.min_internal,min_mailbox:b.min_mailbox,securePassword:b.securePassword,mailRoutingCapacity:b.mailRoutingCapacity,chatRoutingCapacity:b.chatRoutingCapacity,logoutOnWindowClose:b.logoutOnWindowClose}})["catch"](function(a){b.error(a)})},a.update=function(){return d.update({id:1},a.settings).$promise.then(function(){b.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){b.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.general.view.main",{url:"/main",templateUrl:"app/setting/general/view/main/main.html",controller:"GeneralMainViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("GeneralViewCtrl",["$scope",function(a){}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.general.view",{url:"/view",templateUrl:"app/setting/general/view/view.html",controller:"GeneralViewCtrl"})}]),angular.module("xCallyShuttleApp").factory("License",["$resource",function(a){return a("/api/licenses/:id/:controller",{id:"@id"},{request:{method:"POST",params:{id:"request"}},update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.license",{url:"/license",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("LicenseUpdateCtrl",["$scope","$translate","$uibModalInstance","xAlert","licenseString","License",function(a,b,c,d,e,f){a.form={},a.item={license:e.value},a.update=function(){return f.update(a.item).$promise.then(function(a){d.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){d.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").controller("LicenseViewCtrl",["$scope","$rootScope","$translate","License","xAlert","$window","$uibModal",function(a,b,c,d,e,f,g){a.radioSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.initView=function(){return d.get(function(b){a.item=b.license,b.months||(a.item.months=1),a.updateRequestExpiration(),a.licenseString=b.licenseString})},a.updateRequestExpiration=function(){a.requestExpiration=moment().add(a.item.months||1,"month").format()},a.plans=[{name:"APPLICATION_MONTH_TO_MONTH",value:1},{name:"APPLICATION_YEARLY",value:12},{name:"APPLICATION_PERPETUAL",value:36}],a.submitRequest=function(){return d.request(_.assign({},a.item,{expiration:a.requestExpiration}),function(){e.show(c.instant("MESSAGE_WELL_DONE"),"success")},function(a){switch(a.status){case 304:e.show(a.statusText,"info");break;default:e.error(a)}})},a.updateLicense=function(){var b=g.open({animation:!0,templateUrl:"app/setting/license/view/update.modal.html",controller:"LicenseUpdateCtrl",resolve:{licenseString:{value:a.licenseString}}});b.result.then(function(){f.location.reload()})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.license.view",{url:"/view",templateUrl:"app/setting/license/view/view.html",controller:"LicenseViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/pricing-tables.css"]}])}]}})}]),angular.module("xCallyShuttleApp").factory("Externip",["$resource",function(a){return a("/api/network/externips/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("Localnet",["$resource",function(a){return a("/api/network/localnets/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.network",{url:"/network",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("ExternipCtrl",["$scope","$uibModal","gridOptions","Externip",function(a,b,c,d){a.initView=function(){var b={exporterCsvFilename:"network_externip.csv",columnDefs:[{name:"value"},{name:"action",buttons:[{"class":"blue-hoki",onClick:"grid.appScope.createItem(row.entity)",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(d,b,a)},a.createItem=function(c){var d=b.open({animation:!0,templateUrl:"app/setting/network/view/externip/externip.create.modal.html",controller:"ExternipCreateCtrl",resolve:{item:c}});d.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("ExternipCreateCtrl",["$scope","$translate","$uibModalInstance","$stateParams","Externip","xAlert","item",function(a,b,c,d,e,f,g){a.initModal=function(){a.form={},a.item=g||{},a.title=g?b.instant("APPLICATION_EDIT_EXTERNIP"):b.instant("APPLICATION_NEW_EXTERNIP")},a.save=function(){return g?e.update({id:a.item.id},a.item).$promise.then(function(a){f.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){f.error(a)}):e.save({},a.item).$promise.then(function(a){f.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){f.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.network.view.externip",{url:"/externip",templateUrl:"app/setting/network/view/externip/externip.html",controller:"ExternipCtrl"})}]),angular.module("xCallyShuttleApp").controller("LocalnetCtrl",["$scope","gridOptions","Localnet","$uibModal",function(a,b,c,d){a.initView=function(){var d={exporterCsvFilename:"network_localnet.csv",columnDefs:[{name:"value"},{name:"action",buttons:[{"class":"blue-hoki",onClick:"grid.appScope.createItem(row.entity)",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=b.gridOptions(c,d,a)},a.createItem=function(b){var c=d.open({animation:!0,templateUrl:"app/setting/network/view/localnet/localnet.create.modal.html",controller:"LocalnetCreateCtrl",resolve:{item:b}});c.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("LocalnetCreateCtrl",["$scope","$translate","$uibModalInstance","$stateParams","Localnet","xAlert","item",function(a,b,c,d,e,f,g){a.initModal=function(){if(a.form={},a.item=g||{},a.title=g?b.instant("APPLICATION_EDIT_LOCALNET"):b.instant("APPLICATION_NEW_LOCALNET"),g&&g.value){var c=a.item.value.split("/");c.length>1&&(a.item.address=c[0],a.item.mask=c[1])}},a.save=function(){var d=a.item.address+"/"+a.item.mask;return g?e.update({id:a.item.id},{value:d}).$promise.then(function(a){f.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){f.error(a)}):e.save({},{value:d}).$promise.then(function(a){f.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){f.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.network.view.localnet",{url:"/localnet",templateUrl:"app/setting/network/view/localnet/localnet.html",controller:"LocalnetCtrl"})}]),angular.module("xCallyShuttleApp").controller("StunaddrCtrl",["$scope","Setting","xAlert","$translate",function(a,b,c,d){a.initView=function(){return b.get({id:1}).$promise.then(function(b){a.item={stunaddr:b.stunaddr}})["catch"](function(a){c.error(a)})},a.update=function(){return b.update({id:1},a.item).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){c.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.network.view.stunaddr",{url:"/stunaddr",templateUrl:"app/setting/network/view/stunaddr/stunaddr.html",controller:"StunaddrCtrl"})}]),angular.module("xCallyShuttleApp").controller("NetworkViewCtrl",function(){}),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.network.view",{url:"/view",templateUrl:"app/setting/network/view/view.html",controller:"NetworkViewCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting",{url:"/setting",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:18}}})}]),angular.module("xCallyShuttleApp").factory("Setting",["$resource",function(a){return a("/api/settings/:id/:controller/:param",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("Smtp",["$resource",function(a){return a("/api/mail/servers/out/:id/:controller/:controller2",{id:"@id"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.smtp",{url:"/smtp",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("SmtpViewCtrl",["$scope","$stateParams","$translate","socket","MailServerOut","Setting","MailAccount","xAlert","Modal",function(a,b,c,d,e,f,g,h,i){a.initView=function(){return a.smtpDisabled=!1,a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.CONST_TIMEOUT=3e4,a.item={account:{service:!0,MailServerOut:{ssl:!1}}},a.$on("$destroy",function(){d.socket.removeAllListeners("mail_server_out:state")}),d.socket.on("mail_server_out:state",function(b){a.item&&Number(b.id)===a.item.account.MailServerOut.id&&(a.item.account.MailServerOut.state=b.state,a.item.account.MailServerOut.source=JSON.parse(b.source))}),f.get({id:"smtp"}).$promise.then(function(b){a.item.account=b})["catch"](function(b){switch(b.status){case 404:a.item.account.name=null,a.item.account.address=null,a.item.account.description="Custom account",a.item.account.MailServerOut={port:465,ssl:!0},h.show("Service SMTP server not configured.","info");break;default:h.error(b)}})},a.updateItem=function(){return a.item.account.id?(delete a.item.account.MailServerOut.state,delete a.item.account.MailServerOut.source,f.update({id:"smtp",controller:a.item.account.id},a.item.account).$promise.then(function(){h.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){h.error(a)})):f.save({id:"smtp"},{description:a.item.account.description,name:a.item.account.name,address:a.item.account.address,service:a.item.account.service,custom:!0,MailServerOut:a.item.account.MailServerOut}).$promise.then(function(b){a.item.account=b,h.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){h.error(a)})},a.test=function(){return e.get({id:a.item.account.MailServerOut.id,controller:"test"}).$promise["catch"](function(a){console.error(a)})},a["delete"]=i.confirm["delete"](function(){return f["delete"]({id:"smtp"}).$promise.then(function(){h.show(c.instant("MESSAGE_WELL_DONE")+"!","success"),a.item={account:{service:!0,name:null,address:null,description:"Custom account",MailServerOut:{port:465,ssl:!0}}}})["catch"](function(a){h.error(a)})})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.smtp.view",{url:"/view",templateUrl:"app/setting/smtp/view/view.html",controller:"SmtpViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.system",{url:"/system",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("SystemViewConsoleCtrl",["$scope","Setting","xAlert","usSpinnerService","$timeout","$translate","socket",function(a,b,c,d,e,f,g){function h(b){var c=_.findIndex(a.commandHistory.commands,function(a){return a===b});-1!==c&&a.commandHistory.commands.splice(c,1),a.commandHistory.commands.unshift(b)}a.output="<b>"+f.instant("APPLICATION_CONSOLE_WELCOME")+"</b><br/>",a.item={command:""},a.commandHistory={commands:[],index:-1},a.busy=!1,a.cmdFocus=function(){e(function(){angular.element("#command").trigger("focus")})},a.sendCmd=function(){return a.commandHistory.index=-1,a.tmp=a.item.command,a.item.command="",a.output+="<b>motion*CLI> "+a.tmp+"</b><br>",a.tmp?(h(a.tmp.trim()),a.busy=!0,d.spin("console-spinner"),b.save({controller:"asterisk"},{command:a.tmp}).$promise["catch"](function(a){c.error(a)})):void 0},g.socket.on("console:result",function(b){a.output+=b.content.replace(/(?:\r\n|\r|\n)/g,"<br />").replace("Response: Follows<br />Privilege: Command<br />","").replace(/ActionID: .[0-9]*<br \/>/,"").replace(/ActionID: .[0-9]*/,"")+"<br>",d.stop("console-spinner"),a.busy=!1,a.cmdFocus()}),g.socket.on("console:error",function(b){d.stop("console-spinner"),a.output+="command error:"+b.data.message+"<br>",a.busy=!1,a.cmdFocus()}),a.keyUp=function(b){switch(b.keyCode){case 40:a.commandHistory.commands[a.commandHistory.index-1]?a.item.command=a.commandHistory.commands[--a.commandHistory.index]:(a.item.command="",a.commandHistory.index=-1);break;case 38:a.commandHistory.commands[a.commandHistory.index+1]&&(a.item.command=a.commandHistory.commands[++a.commandHistory.index]);break;case 37:break;case 39:break;default:a.commandHistory.index=-1}},e(function(){angular.element("#command").trigger("focus"),d.stop("console-spinner")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.system.view.console",{url:"/console",templateUrl:"app/setting/system/view/console/console.html",controller:"SystemViewConsoleCtrl"})}]),angular.module("xCallyShuttleApp").controller("SystemViewGeneralCtrl",["$scope","$stateParams","$translate","socket","Setting","xAlert","usSpinnerService",function(a,b,c,d,e,f,g){function h(b){a.system.memory={labels:_.keys(b.memory.details),values:_.values(_.map(b.memory.details,function(a){return Math.round(a/1024)})),Total:Math.round(b.memory.Total/1024)},g.stop("memory-spinner"),a.system.disks=[],_.forEach(b.disks,function(b){a.system.disks.push({mount:b.mount,size:Number((b.size/1048576).toFixed(2)),values:_.values(_.map(b.details,function(a){return Number((a/1048576).toFixed(2))})),labels:_.keys(b.details)})}),a.system.mount=a.system.disks[0],g.stop("disk-spinner"),a.system.cpu={motion:Math.round(b.cpu.motion),cores:[]},_.forEach(b.cpu.cores,function(b){delete b.nice,delete b.irq,a.system.cpu.cores.push({labels:_.keys(b),values:_.values(b),colours:["#803690","#DCDCDC","#00ADF9"]})}),g.stop("cpu-spinner"),a.loading=!1}a.system={mount:void 0},a.initView=function(){return g.spin("memory-spinner"), -g.spin("disk-spinner"),g.spin("cpu-spinner"),a.loading=!0,e.get({controller:"system"}).$promise.then(function(a){h(a)})["catch"](function(b){g.stop("memory-spinner"),g.stop("disk-spinner"),g.stop("cpu-spinner"),a.loading=!1,f.error(b)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.system.view.general",{url:"/general",templateUrl:"app/setting/system/view/general/general.html",controller:"SystemViewGeneralCtrl"})}]),angular.module("xCallyShuttleApp").controller("SystemViewLogsCtrl",["$scope","$stateParams","$translate","socket","Setting","xAlert","usSpinnerService",function(a,b,c,d,e,f,g){a.logfiles=["access","motion-info","motion-error","dashboard-info","dashboard-error","agi-info","agi-error","ami-info","ami-error","api-info","api-error","chat-info","chat-error","mail-info","mail-error","fax-info","fax-error","sms-info","sms-error","openchannel-info","openchannel-error"],a.item={filename:"access"},a.getLog=function(){return a.log="",a.loading=!0,g.spin("logs-spinner"),e.get({controller:"logs",filename:a.item.filename}).$promise.then(function(b){a.log=b.log,a.loading=!1,g.stop("logs-spinner")})["catch"](function(b){g.stop("logs-spinner"),a.loading=!1,f.error(b)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.system.view.logs",{url:"/logs",templateUrl:"app/setting/system/view/logs/logs.html",controller:"SystemViewLogsCtrl"})}]),angular.module("xCallyShuttleApp").controller("SystemViewCtrl",["$scope",function(a){}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.system.view",{url:"/view",templateUrl:"app/setting/system/view/view.html",controller:"SystemViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("UpdateListCtrl",["$scope","gridOptions","$uibModal","$location","Update","xAlert","$log","$translate","$state",function(a,b,c,d,e,f,g,h,i){a.initCounter=function(){a.$on("timer-stopped",function(a,b){f.show(h.instant("MESSAGE_UPDATE_COMPLETED"),"success"),i.go("main.setting.updates.list")})},a.initView=function(){return e.get({controller:"current"}).$promise.then(function(b){a.currentVersion=b.currentVersion,a.latestVersion=b.latestVersion})["catch"](function(a){f.error(a)})},a.pull=function(){var b=c.open({animation:!0,templateUrl:"app/setting/update/list/list.pull.html",controller:"UpdateListPullCtrl"});b.result.then(function(){return d.path("/setting/updates/landing"),e.pull().$promise.then(function(b){var c=!1;b&&(b.summary&&_.forOwn(b.summary,function(a){a&&(c=!0)}),(b.insertions&&!_.isEmpty(b.insertions)||b.deletions&&!_.isEmpty(b.deletions))&&(c=!0)),c?(a.$broadcast("timer-stop"),document.getElementsByTagName("timer")[0].stop()):(f.show(h.instant("MESSAGE_NO_UPDATES"),"success"),d.path("/setting/updates/list"))})["catch"](function(a){console.log(a),f.error(a),d.path("/setting/updates/list")})},function(){g.info("Modal dismissed at: "+new Date)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.updates.list",{url:"/list",templateUrl:"app/setting/update/list/list.html",controller:"UpdateListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"css",insertBefore:"#ng_load_plugins_before",files:["assets/css/pricing-table.css"]}])}]}}).state("main.setting.updates.landing",{url:"/landing",templateUrl:"app/setting/update/list/landing.html",controller:"UpdateListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"css",insertBefore:"#ng_load_plugins_before",files:["assets/css/error.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("UpdateListPullCtrl",["$scope","$uibModalInstance",function(a,b){a.modal={dismissable:!0,title:"Confirm Update",html:"Are you sure you want to update?",buttons:[{classes:"btn btn-success",text:"Update",click:function(){b.close()}},{classes:"btn default",text:"Cancel",click:function(){b.dismiss("cancel")}}]}}]),angular.module("xCallyShuttleApp").factory("Update",["$resource",function(a){return a("/api/updates/:id/:controller",{id:"@id"},{pull:{method:"GET",params:{id:"pull"}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.updates",{url:"/updates",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("SquareOdbcListCtrl",["$scope","$uibModal","$translate","SquareOdbc","gridOptions","xAlert",function(a,b,c,d,e,f){a.initView=function(){var b={exporterCsvFilename:"odbc.csv",columnDefs:[{name:"name"},{name:"dsn",displayName:"APPLICATION_ODBC"},{name:"description"},{name:"action",width:250,buttons:[{"class":"blue-hoki",href:"/square/odbc/view/{{row.entity.id}}/settings",name:"settings"},{"class":"green-jungle",name:"check",onClick:"grid.appScope.checkConnection(row.entity.id)"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=e.gridOptions(d,b,a)},a.createItem=function(){var c=b.open({animation:!0,templateUrl:"app/square/odbc/list/list.create.modal.html",controller:"SquareOdbcListCreateCtrl"});c.result.then(function(){a.gridOptions.getPage()})},a.checkConnection=function(a){return d.get({id:a,controller:"check"}).$promise.then(function(){f.show(c.instant("MESSAGE_CONNECTION_VERIFIED"),"success")})["catch"](function(){f.show(c.instant("MESSAGE_CONNECTION_INVALID"),"danger")})}}]),angular.module("xCallyShuttleApp").controller("SquareOdbcListCreateCtrl",["$scope","$translate","$uibModalInstance","SquareOdbc","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.item.dsn||(a.item.dsn="DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion"),a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.odbc.list",{url:"/list",templateUrl:"app/square/odbc/list/list.html",controller:"SquareOdbcListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.odbc",{url:"/odbc",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").factory("SquareOdbc",["$resource",function(a){return a("/api/square/odbc/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("SquareOdbcViewCtrl",["$scope","$translate","$stateParams","SquareOdbc","xAlert",function(a,b,c,d,e){a.odbc={},a.getOdbc=function(){return d.get({id:c.id}).$promise.then(function(b){a.odbc=b})["catch"](function(a){e.error(a)})},a.updateOdbc=function(){var f=angular.copy(a.odbc);return d.update({id:c.id},f).$promise.then(function(){e.show(b.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.odbc.view",{url:"/view/:id",templateUrl:"app/square/odbc/view/view.html",controller:"SquareOdbcViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.square.odbc.view.settings",{url:"/settings",templateUrl:"app/square/odbc/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("SquareProjectListCtrl",["$scope","$uibModal","SquareProject","gridOptions","uiGridConstants",function(a,b,c,d,e){a.initView=function(){var b={exporterCsvFilename:"projects.csv",columnDefs:[{name:"name"},{name:"description"},{name:"createdAt",displayName:"APPLICATION_CREATED_AT",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.createdAt | date:'yyyy-MM-dd HH:mm:ss'}}</div>",filterHeaderTemplate:'<div class="ui-grid-filter-container row"><div ng-repeat="colFilter in col.filters" class="col-md-6 col-md-offset-0 col-sm-5 col-sm-offset-0 col-xs-5 col-xs-offset-0"><div custom-grid-date-filter-header></div></div></div>',filters:[{name:"From",condition:e.filter.GREATER_THAN_OR_EQUAL,hasTime:!0},{name:"To",condition:e.filter.LESS_THAN_OR_EQUAL,hasTime:!0}]},{name:"updatedAt",displayName:"APPLICATION_UPDATED_AT",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.updatedAt | date:'yyyy-MM-dd HH:mm:ss'}}</div>",filterHeaderTemplate:'<div class="ui-grid-filter-container row"><div ng-repeat="colFilter in col.filters" class="col-md-6 col-md-offset-0 col-sm-5 col-sm-offset-0 col-xs-5 col-xs-offset-0"><div custom-grid-date-filter-header></div></div></div>',filters:[{name:"From",condition:e.filter.GREATER_THAN_OR_EQUAL,hasTime:!0},{name:"To",condition:e.filter.LESS_THAN_OR_EQUAL,hasTime:!0}]},{name:"action",width:160,buttons:[{"class":"blue-hoki",href:"/square/projects/view/{{row.entity.id}}",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){var c=b.open({animation:!0,templateUrl:"app/square/project/list/list.create.modal.html",controller:"SquareProjectListCreateCtrl"});c.result.then(function(b){console.log(b),a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("SquareProjectListCreateCtrl",["$scope","$translate","$uibModalInstance","$location","SquareProject","xAlert",function(a,b,c,d,e,f){a.form={},a.item={},a.save=function(){return e.save(a.item).$promise.then(function(a){c.close(a),d.path("/square/projects/view/"+a.id)})["catch"](function(a){f.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.projects.list",{url:"/list",templateUrl:"app/square/project/list/list.html",controller:"SquareProjectListCtrl",authenticate:!0})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.projects",{url:"/projects",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").factory("SquareProject",["$resource",function(a){return a("/api/square/projects/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("SquareProjectViewCtrl",["$scope","$stateParams","Auth","xAlert","SquareProject","socket","$translate","$log","$uibModal",function(a,b,c,d,e,f,g,h,i){a.squareProject={},a.$on("$destroy",function(){f.unsyncUpdates("square_project")}),a.getProject=function(){return e.get({id:b.id}).$promise.then(function(b){a.squareProject=b,angular.element(document).ready(function(){window.onerror=function(a,b,c){try{if(null!==a&&-1!==a.indexOf("Script error."));else{var e=new Image;e.src="assets/plugins/mxgraph/images/1x1.png?msg="+encodeURIComponent(a)+"&url="+encodeURIComponent(b)+"&lnum="+encodeURIComponent(c)}}catch(f){d.error(f)}},b.token=c.getToken();var a=new EditorUi(new Editor);a.openString(b.preproduction,b.name,b),a.editor.graphChangeListener=function(a,b){var c=b.properties.rtChange||!1;c||(this.modified=!0)}}),f.socket.on("square_project:save",function(c){c.id===b.id&&(a.squareProject=_.merge(a.squareProject,c))})})["catch"](function(a){d.error(a)})},a.editNotes=function(){var c=i.open({animation:!0,templateUrl:"app/square/project/view/projectNotes.modal.html",controller:["$scope","$uibModalInstance","notes",function(a,b,c){a.notes=c,a.close=function(){b.close(a.notes)},a.cancel=function(){b.dismiss("cancel")}}],resolve:{notes:{value:a.squareProject.notes}}});c.result.then(function(a){return e.update({id:b.id},{notes:a.value}).$promise.then(function(){d.show(g.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){d.error(a)})},function(){h.info("Modal dismissed at: "+new Date)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.projects.view",{url:"/view/:id",templateUrl:"app/square/project/view/view.html",controller:"SquareProjectViewCtrl",authenticate:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",serie:!0,cache:!1,files:["assets/plugins/mxgraph/css/common.css","assets/plugins/mxgraph/css/explorer.css","assets/plugins/mxgraph/styles/grapheditor.css","assets/plugins/mxgraph/styles/custom.css","assets/plugins/square/js/custom.js","assets/plugins/mxgraph/js/mxClient.js","assets/plugins/square/js/Editor.js","assets/plugins/square/js/Graph.js","assets/plugins/square/js/EditorUi.js","assets/plugins/square/js/Actions.js","assets/plugins/square/js/Menus.js","assets/plugins/square/js/Sidebar.js","assets/plugins/square/js/Toolbar.js","assets/plugins/square/js/Dialogs.js"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.realtime",{url:"/realtime",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:14}}})}]),angular.module("xCallyShuttleApp").factory("ReportSquare",["$resource",function(a){return a("/api/report/square/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("ReportSquareDetail",["$resource",function(a){return a("/api/report/square/details/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("SquareRealtimeViewGeneralCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","ReportSquare","usSpinnerService","$q","uiGridConstants",function(a,b,c,d,e,f,g,h,i,j){function k(b){return h.spin("spinner-grid"),g.get(m).$promise.then(function(b){a.gridOptions.totalItems=b.count,a.gridOptions.data=b.rows})["catch"](function(a){f.error(a)})["finally"](function(){b&&l(),h.stop("spinner-grid")})}function l(){e.socket.on("report_square:save",function(b){if(b.leaveAt){var c=_.remove(a.gridOptions.data,{id:b.id});c&&k()}else{var d=_.find(a.gridOptions.data,{id:b.id});if(!d&&a.gridOptions.data.length<m.limit){var e=_.clone(m);if(_.forEach(["offset","limit","controller","order"],function(a){delete e[a]}),_.isEmpty(e))a.gridOptions.data.push(b);else{var f=!0;_.forOwn(e,function(a,c){_.includes(b[c],a)||(f=!1)}),f&&a.gridOptions.data.push(b)}}}})}var m={controller:"realtime",offset:0,limit:25};a.moment=moment,a.init=function(){a.gridOptions={enableGridMenu:!0,headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:25,useExternalPagination:!0,useExternalSorting:!0,useExternalFiltering:!0,showTreeExpandNoChildren:!0,columnDefs:[{name:"uniqueid"},{name:"callerid"},{name:"extension"},{name:"project_name",displayName:"APPLICATION_PROJECT",headerCellFilter:"translate"},{name:"joinAt",displayName:"APPLICATION_ELAPSED_TIME",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><css-timer start-time="row.entity.joinAt"></css-timer></div>',enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1}],data:[],gridMenuTitleFilter:function(a){var b=i.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){n(a.gridApi.core.getVisibleRows(a.gridApi.grid).length)}),a.gridApi.core.on.sortChanged(a,function(a,b){0===b.length?m.order=null:m.order=b[0].name+" "+b[0].sort.direction.toUpperCase(),k()}),a.gridApi.pagination.on.paginationChanged(a,function(a,b){m.offset=(a-1)*b,m.limit=b,k()}),a.gridApi.core.on.filterChanged(a,function(){var a=this.grid;a.columns.forEach(function(a){a.filters[0].term?m[a.name]=a.filters[0].term:delete m[a.name]}),k()})}},k(!0)};var n=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("report_square")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.realtime.view.general",{url:"/general",templateUrl:"app/square/realtime/view/general/general.html",controller:"SquareRealtimeViewGeneralCtrl"})}]),angular.module("xCallyShuttleApp").controller("SquareRealtimeViewCtrl",["$scope",function(a){}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.realtime.view",{url:"/view",templateUrl:"app/square/realtime/view/view.html",controller:"SquareRealtimeViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("SquareRecordingListCtrl",["$scope","SquareRecording","gridOptions","uiGridConstants",function(a,b,c,d){a.SquareRecording=b;a.initView=function(){var e={exporterCsvFilename:"recordings.csv",rowHeight:30,columnDefs:[{name:"uniqueid"},{name:"callerid",displayName:"APPLICATION_CALLERIDNUM"},{name:"filename"},{name:"extension"},{name:"projectName",displayName:"APPLICATION_PROJECT"},{name:"createdAt",displayName:"APPLICATION_DATE",cellFilter:"date:'yyyy-MM-dd HH:mm'",filterHeaderTemplate:'<div class="ui-grid-filter-container row"><div ng-repeat="colFilter in col.filters" class="col-md-6 col-md-offset-0 col-sm-5 col-sm-offset-0 col-xs-5 col-xs-offset-0"><div custom-grid-date-filter-header></div></div></div>',filters:[{name:"From",condition:d.filter.GREATER_THAN_OR_EQUAL,hasTime:!0},{name:"To",condition:d.filter.LESS_THAN_OR_EQUAL,hasTime:!0}],sort:{direction:d.DESC,priority:0}},{name:"audio",displayName:"",width:100,enableSorting:!1,enableFiltering:!1,cellClass:"ui-grid-vcenter",cellTemplate:"<div><audio-file-download data-ng-if=\"row.entity.savePath.split('.').pop() == 'wav'\" params=\"{id:row.entity.id,controller:'stream'}\" resource=\"grid.appScope.SquareRecording\"></audio-file-download><span data-ng-if=\"row.entity.value.split('.').pop() == 'gsm'\" title=\"{{'MESSAGE_GSM_PREVIEW_NOT_SUPPORTED' | translate}}\">{{'MESSAGE_GSM_PREVIEW_NOT_SUPPORTED' | translate}}</span></div>"},{name:"action",width:80,buttons:[{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.filename || row.entity.uniqueid, row.entity.id)"},{directive:"<motion-file-download params=\"{id:row.entity.id,controller:'stream'}\" resource=\"grid.appScope.SquareRecording\" mimetype=\"'audio/'+row.entity.value.split('.').pop()\" btnclass=\"btn btn-xs blue-hoki\" filename=\"(row.entity.filename || row.entity.uniqueid)+'.'+row.entity.savePath.split('.').pop()\"></motion-file-download>"}]}]};a.gridOptions=c.gridOptions(b,e,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.recordings.list",{url:"/list",templateUrl:"app/square/recording/list/list.html",controller:"SquareRecordingListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.recordings",{url:"/recordings",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").factory("SquareRecording",["$resource",function(a){return a("/api/square/recordings/:id/:controller",{id:"@id"},{update:{method:"PUT"},patch:{method:"PATCH"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square",{url:"/square",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:14}}})}]),angular.module("xCallyShuttleApp").factory("Agent",["$resource",function(a){return a("/api/agents/:id/:controller/:controller1/:controller2/:controller3",{id:"@id"},{changePassword:{method:"PUT",params:{controller:"password"}},update:{method:"PUT"},patch:{method:"PATCH"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.agents",{url:"/agents",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:4}}})}]),angular.module("xCallyShuttleApp").controller("AgentListCtrl",["$scope","$timeout","Agent","Auth","gridOptions",function(a,b,c,d,e){a.initView=function(){a.Auth=d;var b={exporterCsvFilename:"agents.csv",columnDefs:[{name:"fullname"},{name:"name",displayName:"APPLICATION_USERNAME"},{name:"internal"},{name:"email"},{name:"description"},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/staff/agents/view/{{row.entity.id}}/account",name:"profile"},{"class":"green-meadow",href:"/staff/agents/view/{{row.entity.id}}/queues/voice",name:"queues"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.fullname, row.entity.id)"}]}]};a.gridOptions=e.gridOptions(c,b,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.agents.list",{url:"/list",templateUrl:"app/staff/agent/list/list.html",controller:"AgentListCtrl",data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:4}}})}]),angular.module("xCallyShuttleApp").controller("AgentViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","$cookieStore","Agent","FileUploader","Auth","MailQueue","User","VoiceQueue","ChatQueue","FaxQueue","SmsQueue","OpenChannelQueue","Setting",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){a.Auth=i,a.forms={},a.params={penalty:0},a.radioSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.recordSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"};var r=function(b){return{select:function(c,d){return g.save(c,{values:d,penalty:a.params.penalty}).$promise.then(function(){b()})["catch"](function(a){console.log(a)})},deselect:function(a){return g["delete"](a).$promise.then(function(){b()})["catch"](function(a){console.log(a)})}}};a.initVoiceQueues=function(){var b={},c={};return a.penalty=0,l.get().$promise.then(function(a){return b.queues=_.map(a.rows,function(a){return{name:a.name}}),g.get({id:e.id,controller:"voice",controller2:"queues"}).$promise}).then(function(a){c.queues=_.map(a.rows,function(a){return{name:a.name,penalty:a.UserHasVoiceQueue.penalty}})}).then(function(){ComponentsDropdowns.bindAgent(b,c,"voice",e.id,r,a.initVoiceQueues)})["catch"](function(a){console.error(a)})},a.initChatQueues=function(){var b={},c={};return a.penalty=0,m.get().$promise.then(function(a){return b.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name}}),g.get({id:e.id,controller:"chat",controller2:"queues"}).$promise}).then(function(a){c.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name,penalty:a.UserHasChatQueue.penalty}})}).then(function(){ComponentsDropdowns.bindAgent(b,c,"chat",e.id,r,a.initChatQueues)})["catch"](function(a){console.error(a)})},a.initMailQueues=function(){var b={},c={};return a.penalty=0,j.get().$promise.then(function(a){return b.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name}}),g.get({id:e.id,controller:"mail",controller2:"queues"}).$promise}).then(function(a){c.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name,penalty:a.UserHasMailQueue.penalty}})}).then(function(){ComponentsDropdowns.bindAgent(b,c,"mail",e.id,r,a.initMailQueues)})["catch"](function(a){console.error(a)})},a.initSmsQueues=function(){var b={},c={};return a.penalty=0,o.get().$promise.then(function(a){return b.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name}}),g.get({id:e.id,controller:"sms",controller2:"queues"}).$promise}).then(function(a){c.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name,penalty:a.UserHasSmsQueue.penalty}})}).then(function(){ComponentsDropdowns.bindAgent(b,c,"sms",e.id,r,a.initSmsQueues)})["catch"](function(a){console.error(a)})},a.initFaxQueues=function(){var b={},c={};return a.penalty=0,n.get().$promise.then(function(a){return b.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name}}),g.get({id:e.id,controller:"fax",controller2:"queues"}).$promise}).then(function(a){c.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name,penalty:a.UserHasFaxQueue.penalty}})}).then(function(){ComponentsDropdowns.bindAgent(b,c,"fax",e.id,r,a.initFaxQueues)})["catch"](function(a){console.error(a)})},a.initOpenchannelQueues=function(){var b={},c={};return a.penalty=0,p.get().$promise.then(function(a){return b.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name}}),g.get({id:e.id,controller:"openchannel",controller2:"queues"}).$promise}).then(function(a){c.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name,penalty:a.UserHasOpenchannelQueue.penalty}})}).then(function(){ComponentsDropdowns.bindAgent(b,c,"openchannel",e.id,r,a.initOpenchannelQueues)})["catch"](function(a){console.error(a)})},a.updatePassword=function(){var b={newPassword:a.agent.newPwd};return i.isAgent()?b.oldPassword=a.agent.currentPwd:b.id=e.id,k.changePassword(b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success"),a.agent.newPwd="",a.agent.reNewPwd="",a.agent.currentPwd="",a.forms.changePwd.$setPristine(),a.forms.changePwd.$setUntouched()})["catch"](function(a){c.error(a)})};var s=a.uploader=new h({url:"api/users/"+e.id+"/avatar",queueLimit:1,withCredentials:!0,headers:{Authorization:"Bearer "+f.get("token")}});s.filters.push({name:"imageFilter",fn:function(a){var b="|"+a.type.slice(a.type.lastIndexOf("/")+1)+"|";return-1!=="|jpg|png|jpeg|".indexOf(b)}}),s.onSuccessItem=function(b,e){a.agent.userpic=e.userpic,a.agent.id===i.getCurrentUser().id&&(i.getCurrentUser().userpic=e.userpic),c.show(d.instant("MESSAGE_WELL_DONE"),"success")},s.onErrorItem=function(){c.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")},s.onCompleteAll=function(){s.clearQueue()},a.initView=function(){return g.get({id:e.id}).$promise.then(function(b){return a.agent=b,a.agent.transport=a.agent.transport?a.agent.transport.split(","):[],a.agent.allow=a.agent.allow?a.agent.allow.split(";"):[],a.agent.nat=a.agent.nat?a.agent.nat.split(","):[],q.get({id:1}).$promise}).then(function(b){a.setting=b})["catch"](function(a){c.error(a)})},a.patchItem=function(){return g.update({id:e.id},{chatCapacity:a.agent.chatCapacity,mailCapacity:a.agent.mailCapacity,faxCapacity:a.agent.faxCapacity,smsCapacity:a.agent.smsCapacity,openchannelCapacity:a.agent.openchannelCapacity}).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){c.error(a)})},a.updateItem=function(){var b=angular.copy(a.agent);return delete b.password,delete b.md5secret,b.transport=b.transport.join(","),b.allow=b.allow.join(";"),b.nat=b.nat.join(","),g.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){c.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.agents.view",{url:"/view/:id",templateUrl:"app/staff/agent/view/view.html",controller:"AgentViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]},data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.account",{url:"/account",templateUrl:"app/staff/agent/view/view.account.html",data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:4}},resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/scripts/jquery.sparkline.min.js","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.js","assets/scripts/profile.js"]})}]}}).state("main.staff.agents.view.voice",{url:"/voice",templateUrl:"app/staff/agent/view/view.voice.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.chat",{url:"/chat",templateUrl:"app/staff/agent/view/view.chat.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.mail",{url:"/mail",templateUrl:"app/staff/agent/view/view.mail.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.fax",{url:"/fax",templateUrl:"app/staff/agent/view/view.fax.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.sms",{url:"/sms",templateUrl:"app/staff/agent/view/view.sms.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.openchannel",{url:"/openchannel",templateUrl:"app/staff/agent/view/view.openchannel.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.motionbar",{url:"/motionbar",templateUrl:"app/staff/agent/view/view.motionbar.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.queues",{url:"/queues",templateUrl:"app/staff/agent/view/view.queues.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}},cache:!1,serie:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}}).state("main.staff.agents.view.queues.voice",{url:"/voice",templateUrl:"app/staff/agent/view/view.queues.voice.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:7}}}).state("main.staff.agents.view.queues.chat",{url:"/chat",templateUrl:"app/staff/agent/view/view.queues.chat.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:8}}}).state("main.staff.agents.view.queues.mail",{url:"/mail",templateUrl:"app/staff/agent/view/view.queues.mail.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:9}}}).state("main.staff.agents.view.queues.fax",{url:"/fax",templateUrl:"app/staff/agent/view/view.queues.fax.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:10}}}).state("main.staff.agents.view.queues.sms",{url:"/sms",templateUrl:"app/staff/agent/view/view.queues.sms.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:11}}}).state("main.staff.agents.view.queues.openchannel",{url:"/openchannel",templateUrl:"app/staff/agent/view/view.queues.openchannel.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:20}}})}]),angular.module("xCallyShuttleApp").controller("AgentWizardCtrl",["$scope","$rootScope","$location","$translate","$http","Agent","VoiceQueue","ChatQueue","MailQueue","SmsQueue","FaxQueue","OpenChannelQueue","Setting","xAlert","WizardHandler",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){a.maxAmount=1e3,a._data={voice:{queues:[]},chat:{queues:[]},mail:{queues:[]},sms:{queues:[]},fax:{queues:[]},openchannel:{queues:[]}},a._agent=angular.copy(a._data),a.forms={info:void 0,voice:void 0},a.item={role:"agent",allow:["alaw","ulaw","gsm"],transport:["udp"],context:"from-sip"},a.next=function(){o.wizard().next()},a.getAmount=function(){return m.get({controller:"internal",internal:a.item.minInternal}).$promise.then(function(b){a.item.minInternal=Number(b.value),a.maxAmount=b.range||1e3})["catch"](function(a){n.error(a)})},a.exitValidation=function(a){return a},a.getFirstFreeInternal=function(){return m.get({controller:"internal"}).$promise.then(function(b){return a.internal=b,a.item.internal=b.value,a.item.minInternal=b.value,a.maxAmount=b.range||1e3,m.get({id:1}).$promise}).then(function(b){a.setting=b})["catch"](function(a){n.error(a)})},a.createItem=function(){var b=angular.copy(a.item);return delete b.minInternal,b.transport&&(b.transport=b.transport.join(",")),a.item.allow&&(b.allow=b.allow.join(";")),b.channels=a._agent,f.save(b).$promise.then(function(a){c.path("/staff/agents/view/"+a.id+"/queues/voice")})["catch"](function(a){console.log(a),n.error(a); -})},a.createItems=function(){var b=angular.copy(a.item);return delete b.internal,b.transport&&(b.transport=b.transport.join(",")),b.allow&&(b.allow=b.allow.join(";")),f.save({id:"bulk"},b).$promise.then(function(){c.path("/staff/agents/list")})["catch"](function(a){console.log(a),n.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.agents.wizard",{url:"/wizard",templateUrl:"app/staff/agent/wizard/wizard.html",controller:"AgentWizardCtrl",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}},resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}}).state("main.staff.agents.bulk",{url:"/bulk",templateUrl:"app/staff/agent/wizard/wizard-bulk.html",controller:"AgentWizardCtrl",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff",{url:"/staff",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("TeamCreateCtrl",["$scope","$uibModalInstance","Team","xAlert",function(a,b,c,d){a.form={},a.item={},a.ok=function(){return c.save(a.item).$promise.then(function(){b.close(a.item)})["catch"](function(a){d.error(a)})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("TeamListCtrl",["$scope","Team","gridOptions","$uibModal",function(a,b,c,d){a.initView=function(){var d={exporterCsvFilename:"teams.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:100,buttons:[{"class":"{{row.entity.defaultEntry ? 'blue-hoki disabled' : 'blue-hoki'}}",href:"/staff/teams/view/{{row.entity.id}}/settings",name:"profile"},{"class":"{{row.entity.defaultEntry ? 'green-turquoise disabled' : 'green-turquoise'}}",name:"agents",href:"/staff/teams/view/{{row.entity.id}}/agents"},{"class":"{{row.entity.defaultEntry ? 'red-sunglo disabled' : 'red-sunglo'}}",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.createItem=function(){d.open({animation:!0,templateUrl:"app/staff/team/list/create.modal.html",controller:"TeamCreateCtrl"}).result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.teams.list",{url:"/list",templateUrl:"app/staff/team/list/list.html",controller:"TeamListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Team",["$resource",function(a){return a("/api/teams/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.teams",{url:"/teams",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin"],redirectTo:"landing"}}})}]),angular.module("xCallyShuttleApp").controller("TeamViewCtrl",["$scope","$http","$stateParams","$translate","Team","Agent","xAlert",function(a,b,c,d,e,f,g){var h=function(){return{select:function(b){return console.log("agents",b),e.save({id:a.team.id,controller:"agents"},{agents:b})},deselect:function(b){return e["delete"]({id:a.team.id,controller:"agents",agents:b})}}};a.initView=function(){return e.get({id:c.id}).$promise.then(function(b){a.team=b})["catch"](function(a){g.error(a)})},a.initAgents=function(){return f.get().$promise.then(function(b){return a.agents=b.rows,e.get({id:c.id,controller:"agents"}).$promise}).then(function(b){ComponentsDropdowns.bindTeam(_.map(b.rows,"id"),_.map(a.agents,function(a){return{id:a.id,name:a.name,fullname:a.fullname,internal:a.internal}}),h)})["catch"](function(a){g.error(a)})},a.updateItem=function(){var b=angular.copy(a.team);return e.update({id:c.id},b).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){g.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.teams.view",{url:"/view/:id",templateUrl:"app/staff/team/view/view.html",controller:"TeamViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.staff.teams.view.agents",{url:"/agents",templateUrl:"app/staff/team/view/view.agents.html",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]}])}]}}).state("main.staff.teams.view.settings",{url:"/settings",templateUrl:"app/staff/team/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("TelephoneListCtrl",["$scope","Telephone","gridOptions",function(a,b,c){a.initView=function(){var d={exporterCsvFilename:"telephones.csv",columnDefs:[{name:"fullname"},{name:"name"},{name:"internal"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/staff/telephones/view/{{row.entity.id}}/account",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.fullname, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.telephones.list",{url:"/list",templateUrl:"app/staff/telephone/list/list.html",controller:"TelephoneListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").factory("Telephone",["$resource",function(a){return a("/api/telephones/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.telephones",{url:"/telephones",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin"],redirectTo:"landing"}}})}]),angular.module("xCallyShuttleApp").controller("TelephoneViewCtrl",["$scope","$http","$stateParams","$translate","$cookieStore","Auth","xAlert","Telephone","Setting","User",function(a,b,c,d,e,f,g,h,i,j){a.initView=function(){return a.Auth=f,a.forms={},h.get({id:c.id}).$promise.then(function(b){return delete b.password,a.item=b,a.item.transport=a.item.transport?a.item.transport.split(","):[],a.item.allow=a.item.allow?a.item.allow.split(";"):[],i.get({id:1}).$promise}).then(function(b){a.setting=b})["catch"](function(a){g.error(a)})},a.updateItem=function(){var b=angular.copy(a.item);return b.transport=b.transport.join(","),b.allow=b.allow.join(";"),h.update(b).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){g.error(a)})},a.updatePassword=function(){var b={newPassword:a.item.newPwd,id:c.id};return j.changePassword(b).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE"),"success"),a.item.newPwd="",a.item.reNewPwd="",a.forms.changePwd.$setPristine(),a.forms.changePwd.$setUntouched()})["catch"](function(a){g.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.telephones.view",{url:"/view/:id",templateUrl:"app/staff/telephone/view/view.html",controller:"TelephoneViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.staff.telephones.view.account",{url:"/account",templateUrl:"app/staff/telephone/view/view.account.html",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css","assets/scripts/jquery.sparkline.min.js","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.js","assets/scripts/profile.js"]})}]}}).state("main.staff.telephones.view.voice",{url:"/voice",templateUrl:"app/staff/telephone/view/view.voice.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").controller("TelephoneWizardCtrl",["$scope","$http","$location","WizardHandler","xAlert","$translate","Telephone","Setting",function(a,b,c,d,e,f,g,h){a.forms={},a.item={allow:["alaw","ulaw","gsm"],transport:["udp"],context:"from-sip"},a.next=function(){d.wizard().next()},a.exitValidation=function(a){return a},a.getFirstFreeInternal=function(){return h.get({controller:"internal"}).$promise.then(function(b){return a.item.internal=b.value,h.get({id:1}).$promise}).then(function(b){a.setting=b})["catch"](function(a){e.error(a)})},a.createItem=function(){var b=angular.copy(a.item);return b.transport&&(b.transport=b.transport.join(",")),a.item.allow&&(b.allow=b.allow.join(";")),g.save(b).$promise.then(function(){c.path("/staff/telephones/list")})["catch"](function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.telephones.wizard",{url:"/wizard",templateUrl:"app/staff/telephone/wizard/wizard.html",controller:"TelephoneWizardCtrl"})}]),angular.module("xCallyShuttleApp").controller("UserListCtrl",["$scope","$timeout","User","Auth","gridOptions",function(a,b,c,d,e){function f(a){if(a){var b=_.words(a),c=_.map(b,function(a){return a?a[0]:""});return c.join("").toUpperCase()}return!1}a.getUserAvatar=function(a,c,d){b(function(){angular.element("#userImg"+a).avatar({useGravatar:!1,initials:d?[]:f(c),fallbackImage:"api/users/avatar/"+d,size:80})})},a.isAdmin=function(a){return"admin"===a},a.initView=function(){var b={exporterCsvFilename:"users.csv",columnDefs:[{name:"fullname"},{name:"name",displayName:"APPLICATION_USERNAME"},{name:"internal"},{name:"email"},{name:"description"},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/staff/users/view/{{row.entity.id}}/account",name:"profile"},{"class":"green-meadow",href:"/staff/users/view/{{row.entity.id}}/permit/voice",name:"permits",hide:"grid.appScope.isAdmin(row.entity.role)"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.fullname, row.entity.id)"}]}]};a.gridOptions=e.gridOptions(c,b,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.users.list",{url:"/list",templateUrl:"app/staff/user/list/list.html",controller:"UserListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Module",["$resource",function(a){return a("/api/modules/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("User",["$resource",function(a){return a("/api/users/:id/:controller/:controller2/:controller3",{id:"@id"},{changePassword:{method:"PUT",params:{controller:"password"}},update:{method:"PUT"},me:{method:"GET",params:{id:"me"}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.users",{url:"/users",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("UserViewCtrl",["$scope","$stateParams","$cookieStore","$translate","FileUploader","User","Auth","xAlert","MailQueue","VoiceQueue","ChatQueue","FaxQueue","SmsQueue","OpenChannelQueue","Team","Module","Setting","$location",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){function s(a,b){var c,d,e=b.length;for(c=0;e>c;c++){if(b[c].id===a)return b[c];if(b[c].SubModules&&b[c].SubModules.length&&(d=s(a,b[c].SubModules)))return d}}function t(b){var c=s(b.ModuleId,a.modules);if(b.status===!0)c.status=!0;else{var d=_.filter(c.SubModules,{status:!0});d.length||(c.status=!1)}c.ModuleId&&t(c)}function u(a,b){a.forEach(function(a){a.status=b,a.SubModules&&a.SubModules.length&&u(a.SubModules,b)})}function v(a,b){b.forEach(function(b){_.find(a,{id:b.id})?b.status=!0:b.status=!1,b.SubModules&&b.SubModules.length&&v(a,b.SubModules)})}function w(a,b){return a=_.union(a,_.map(_.filter(b,{status:!0}),"id")),b.forEach(function(b){b.SubModules&&b.SubModules.length&&(a=_.union(a,w(a,b.SubModules)))}),a}a.Auth=g,a._=_,a.forms={},a.moduleSwitch={onText:"On",offText:"Off",isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.checkUser=function(){var a=g.getCurrentUser();g.isAdmin()||Number(b.id)===a.id||r.path("main.dashboard.voice")},a.initVoiceQueues=function(){var a={},c={};return j.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"voice",controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"voice",b.id,f)})["catch"](function(a){console.error(a)})},a.initChatQueues=function(){var a={},c={};return k.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{id:a.id,name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"chat",controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"chat",b.id,f)})["catch"](function(a){console.error(a)})},a.initMailQueues=function(){var a={},c={};return i.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{id:a.id,name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"mail",controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"mail",b.id,f)})["catch"](function(a){console.error(a)})},a.initSmsQueues=function(){var a={},c={};return m.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{id:a.id,name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"sms",controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"sms",b.id,f)})["catch"](function(a){console.error(a)})},a.initFaxQueues=function(){var a={},c={};return l.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{id:a.id,name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"fax",controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"fax",b.id,f)})["catch"](function(a){console.error(a)})},a.initOpenchannelQueues=function(){var a={},c={};return n.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{id:a.id,name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"openchannel",controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"openchannel",b.id,f)})["catch"](function(a){console.error(a)})},a.initView=function(){return f.get({id:b.id}).$promise.then(function(b){return a.user=b,a.user.transport=a.user.transport?a.user.transport.split(","):[],a.user.allow=a.user.allow?a.user.allow.split(";"):[],q.get({id:1}).$promise}).then(function(b){a.setting=b})["catch"](function(a){h.error(a)})},a.updateItem=function(){var c=angular.copy(a.user);return delete c.password,delete c.md5secret,c.transport=c.transport.join(","),c.allow=c.allow.join(";"),f.update({id:b.id},c).$promise.then(function(){h.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){h.error(a)})},a.updatePassword=function(){var c={newPassword:a.user.newPwd};return g.isAdmin()?c.id=b.id:c.oldPassword=a.user.currentPwd,f.changePassword(c).$promise.then(function(){h.show(d.instant("MESSAGE_WELL_DONE"),"success"),a.user.newPwd="",a.user.reNewPwd="",a.user.currentPwd="",a.forms.changePwd.$setPristine(),a.forms.changePwd.$setUntouched()})["catch"](function(a){h.error(a)})};var x=a.uploader=new e({url:"api/users/"+b.id+"/avatar",queueLimit:1,withCredentials:!0,headers:{Authorization:"Bearer "+c.get("token")}});x.filters.push({name:"imageFilter",fn:function(a){var b="|"+a.type.slice(a.type.lastIndexOf("/")+1)+"|";return-1!=="|jpg|png|jpeg|".indexOf(b)}}),a.getModules=function(){return a.associatedModules=[],p.get().$promise.then(function(c){return a.modules=_.filter(c.rows,function(a){return!a.ModuleId}),f.query({id:b.id,controller:"allowed",controller2:"modules"}).$promise}).then(function(b){v(b,a.modules)})["catch"](function(a){h.error(a)})},a.updatePermissions=function(c){c.ModuleId&&t(c),c.SubModules&&c.SubModules.length&&u(c.SubModules,c.status);var e=w([],a.modules);return f.save({id:b.id,controller:"allowed",controller2:"modules"},{modules:e}).$promise.then(function(){h.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){h.error(a)})},x.onSuccessItem=function(b,c){a.user.userpic=c.userpic,a.user.id===g.getCurrentUser().id&&(g.getCurrentUser().userpic=c.userpic),h.show(d.instant("MESSAGE_WELL_DONE"),"success")},x.onErrorItem=function(){h.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")},x.onCompleteAll=function(){x.clearQueue()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.users.view",{url:"/view/:id",templateUrl:"app/staff/user/view/view.html",controller:"UserViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.staff.users.view.account",{url:"/account",templateUrl:"app/staff/user/view/view.account.html",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css","assets/scripts/jquery.sparkline.min.js","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.js","assets/scripts/profile.js"]})}]}}).state("main.staff.users.view.voice",{url:"/voice",templateUrl:"app/staff/user/view/view.voice.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}}).state("main.staff.users.view.permit",{url:"/permit",templateUrl:"app/staff/user/view/view.permit.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}},cache:!1,serie:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}}).state("main.staff.users.view.permit.voice",{url:"/voice",templateUrl:"app/staff/user/view/view.permit.voice.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}}).state("main.staff.users.view.permit.chat",{url:"/chat",templateUrl:"app/staff/user/view/view.permit.chat.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.chat"}}}).state("main.staff.users.view.permit.mail",{url:"/mail",templateUrl:"app/staff/user/view/view.permit.mail.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.mail"}}}).state("main.staff.users.view.permit.fax",{url:"/fax",templateUrl:"app/staff/user/view/view.permit.fax.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.fax"}}}).state("main.staff.users.view.permit.sms",{url:"/sms",templateUrl:"app/staff/user/view/view.permit.sms.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.sms"}}}).state("main.staff.users.view.permit.openchannel",{url:"/openchannel",templateUrl:"app/staff/user/view/view.permit.openchannel.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.openchannel"}}}).state("main.staff.users.view.permit.modules",{url:"/modules",templateUrl:"app/staff/user/view/view.permit.modules.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").controller("UserWizardCtrl",["$scope","$location","WizardHandler","xAlert","$translate","User","Setting","Auth",function(a,b,c,d,e,f,g,h){a.initWizard=function(){return a.Auht=h,a.forms={info:void 0,voice:void 0},a.item={role:"user",host:"dynamic",context:"from-sip"},g.get({controller:"internal"}).$promise.then(function(b){return a.item.internal=b.value,g.get({id:1}).$promise}).then(function(b){a.setting=b})["catch"](function(a){d.error(a)})},a.next=function(){c.wizard().next()},a.exitValidation=function(a){return a},a.createItem=function(){return f.save(a.item).$promise.then(function(a){b.path("user"===a.role?"/staff/users/view/"+a.id+"/permit/voice":"/staff/users/view/"+a.id+"/account")})["catch"](function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.users.wizard",{url:"/wizard",templateUrl:"app/staff/user/wizard/wizard.html",controller:"UserWizardCtrl"})}]),angular.module("xCallyShuttleApp").controller("SugarcrmListCtrl",["$scope","SugarcrmAccount","gridOptions","xAlert","$translate",function(a,b,c,d,e){a.initView=function(){var d={exporterCsvFilename:"sugarcrm_account.csv",columnDefs:[{name:"name",displayName:"APPLICATION_NAME"},{name:"username"},{name:"remoteUri",displayName:"APPLICATION_URI"},{name:"action",width:250,buttons:[{"class":"blue-hoki",href:"/sugarcrm/view/{{row.entity.id}}/account",name:"profile"},{"class":"green-jungle",name:"check",onClick:"grid.appScope.checkAccount(row.entity.id)"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.checkAccount=function(a){return b.get({id:a,controller:"check"}).$promise.then(function(){d.show(e.instant("MESSAGE_ACCOUNT_VERIFIED"),"success")})["catch"](function(){d.show(e.instant("MESSAGE_ACCOUNT_INVALID"),"danger")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm.list",{url:"/list",templateUrl:"app/sugarcrm/list/list.html",controller:"SugarcrmListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").factory("SugarcrmAccount",["$resource",function(a){return a("/api/sugarcrm/accounts/:id/:controller",{id:"@id"},{update:{method:"PUT"},fields:{params:{controller:"fields"},isArray:!0},moduleFields:{params:{controller:"fields"},isArray:!0},check:{params:{controller:"check"}},modules:{params:{controller:"modules"},isArray:!0}})}]).factory("SugarcrmConfiguration",["$resource",function(a){return a("/api/sugarcrm/accounts/:accountId/configurations/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]).factory("SugarcrmField",["$resource",function(a){return a("/api/sugarcrm/accounts/:accountId/configurations/:configurationId/fields/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm",{url:"/sugarcrm",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm.view.configurations",{url:"/configurations",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("SugarcrmViewConfigurationListCtrl",["$scope","$stateParams","$translate","gridOptions","SugarcrmConfiguration","$uibModal",function(a,b,c,d,e,f){a.initView=function(){var c={exporterCsvFilename:"sugarcrm_configurations.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:125,buttons:[{"class":"blue-hoki",href:"/sugarcrm/view/{{row.entity.AccountId}}/configurations/view/{{row.entity.id}}",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(e,c,a,{accountId:b.id})},a.createItem=function(){var b=f.open({animation:!0,templateUrl:"app/sugarcrm/view/configuration/list/create.modal.html",controller:"SugarcrmCreateConfigurationCtrl"});b.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("SugarcrmCreateConfigurationCtrl",["$scope","$translate","$uibModalInstance","SugarcrmConfiguration","xAlert","$stateParams","channel",function(a,b,c,d,e,f,g){a.form={},a.item={},a.channels=g,a.item.channel="voice",a.item.type="Queue",a.save=function(){return d.save({accountId:f.id},a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm.view.configurations.list",{url:"/list",templateUrl:"app/sugarcrm/view/configuration/list/list.html",controller:"SugarcrmViewConfigurationListCtrl"})}]),angular.module("xCallyShuttleApp").controller("SugarcrmViewConfigurationViewCtrl",["$scope","$filter","$stateParams","$translate","socket","variable","xAlert","SugarcrmAccount","SugarcrmConfiguration","SugarcrmField","Variable","usSpinnerService",function(a,b,c,d,e,f,g,h,i,j,k,l){a.$on("$destroy",function(){e.unsyncUpdates("sugarcrm_field")}),a.config={autoHideScrollbar:!1,theme:"dark",advanced:{updateOnContentResize:!0},setHeight:300,scrollInertia:0},a.fieldType=[{type:"string",title:"String"},{type:"variable",title:"Variable"},{type:"customVariable",title:"Custom Variable"}],a.descFieldType=[{type:"string",title:"String"},{type:"keyValue",title:"Key Value"}],a.defaultMappingSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.groupVariableByGroup=function(a){switch(a.group){case"voice_queue":return"Voice: Queue";default:return"Other"}},a.initView=function(){a.configurationName="",a.subjectConfig=[],a.descriptionConfig=[],a.fieldConfig=[],a.variables=f,a.mapping={}},a.getConfiguration=function(){return i.get({accountId:c.id,id:c.configurationId}).$promise.then(function(b){a.configurationName=b.name,a.subjectConfig=b.Subject,a.descriptionConfig=b.Description,a.fieldConfig=b.Field,a.mapping.defaultMapping=b.defaultMapping,a.mapping.mappingModule=b.mappingModule,a.mapping.mappingFields=b.mappingFields,a.getModuleFields(),e.socket.on("sugarcrm_field:remove",function(b){_.remove(a.subjectConfig,{id:b.id}),_.remove(a.descriptionConfig,{id:b.id}),_.remove(a.fieldConfig,{id:b.id})})})["catch"](function(a){g.error(a)})},a.getCustomVariables=function(){return k.get().$promise.then(function(b){a.customVariables=b.rows})["catch"](function(a){g.error(a)})},a.getFields=function(){return h.fields({id:c.id}).$promise.then(function(c){a.accountFields=_.sortBy(b("sugarcrm")(c),["name"]),_.forEach(c,function(a){a.options=_.toArray(a.options)})})["catch"](function(a){g.error(a)})},a.getModules=function(){return h.modules({id:c.id}).$promise.then(function(b){a.accountModules=b})["catch"](function(a){g.error(a)})},a.getModuleFields=function(){return!a.mapping.defaultMapping&&a.mapping.mappingModule?h.moduleFields({id:c.id,module:a.mapping.mappingModule}).$promise.then(function(b){a.moduleFields=b})["catch"](function(a){g.error(a)})["finally"](function(){l.stop("spinner-grid")}):void 0},a.addItem=function(b){var d={};switch(b){case"subject":case"description":d={type:"string",content:""};break;case"field":d={content:""}}return i.save({accountId:c.id,id:c.configurationId,controller:b},d).$promise.then(function(c){switch(b){case"subject":a.subjectConfig.push(c);break;case"description":a.descriptionConfig.push(c);break;case"field":a.fieldConfig.push(c)}})["catch"](function(a){g.error(a)})},a.changeType=function(b){"variable"===b.type?(b.content="",b.variableName=""):"string"===b.type?(b.VariableId=null,b.variableName=""):"customVariable"===b.type&&(b.VariableId=null,b.content=""),a.updateField(b)},a.updateField=function(a){return j.update({accountId:c.id,configurationId:c.configurationId,id:a.id},a).$promise.then(function(){})["catch"](function(a){g.error(a)})},a.removeItem=function(a){return j["delete"]({accountId:c.id,configurationId:c.configurationId,id:a.id}).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){g.error(a)})},a.changeFieldType=function(b){b.content="",b.variableName="",b.nameField="",b.VariableId=null,a.updateField(b)},a.changeDescType=function(b){"keyValue"===b.type?(b.content="","string"===b.keyType?(b.VariableId=null,b.variableName=""):"variable"===b.keyType?(b.keyContent="",b.VariableId=null):"customVariable"===b.keyType&&(b.keyContent="",b.variableName="")):"string"===b.type&&(b.VariableId=null,b.variableName="",b.key="",b.keyContent=""),a.updateField(b)},a.getSystemFieldOptions=function(b){if(b){var c=_.find(a.accountFields,"name",b);return c?c.options.length>0?c.options:null:void 0}},a.updateMapping=function(){return a.mapping.defaultMapping&&(a.mapping.mappingModule=null,a.mapping.mappingFields=[]),i.update({accountId:c.id,id:c.configurationId},a.mapping).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE")+".","success")})["catch"](function(a){g.error(a)})},a.updateMappingModule=function(){l.spin("spinner-grid"),a.mapping.mappingFields=[],a.getModuleFields()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm.view.configurations.view",{url:"/view/:configurationId",templateUrl:"app/sugarcrm/view/configuration/view/view.html",controller:"SugarcrmViewConfigurationViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("SugarcrmViewCtrl",["$scope","$http","$stateParams","$translate","$location","$filter","WizardHandler","socket","xAlert","Modal","SugarcrmAccount",function(a,b,c,d,e,f,g,h,i,j,k){a.initView=function(){return k.get({id:c.id}).$promise.then(function(b){a.account=b})["catch"](function(a){i.error(a)})},a.updateItem=function(){return k.update({id:c.id},a.account).$promise.then(function(){i.show(d.instant("MESSAGE_WELL_DONE")+".","success")})["catch"](function(a){i.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm.view",{url:"/view/:id",templateUrl:"app/sugarcrm/view/view.html",controller:"SugarcrmViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.sugarcrm.view.account",{url:"/account",templateUrl:"app/sugarcrm/view/view.account.html"})}]),angular.module("xCallyShuttleApp").controller("SugarcrmkWizardCtrl",["$scope","$http","$location","$translate","xAlert","WizardHandler","SugarcrmAccount",function(a,b,c,d,e,f,g){a.translate=d,a.initWizard=function(){a.$translate=d,a.forms={},a.item={},a.item.serverUrl=c.protocol()+"://"+location.host},a.next=function(){f.wizard().next()},a.exitValidation=function(a){return a},a.createItem=function(){return g.save(a.item).$promise.then(function(){e.show(d.instant("MESSAGE_WELL_DONE")+".","success"),c.path("/sugarcrm/list")})["catch"](function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm.wizard",{url:"/wizard",templateUrl:"app/sugarcrm/wizard/wizard.html",controller:"SugarcrmkWizardCtrl"})}]),angular.module("xCallyShuttleApp").factory("CannedAnswer",["$resource",function(a){return a("/api/answers/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){ -a.state("main.tools.answers",{url:"/answers",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:58}}})}]),angular.module("xCallyShuttleApp").controller("AnswerListCtrl",["$scope","$uibModal","CannedAnswer","gridOptions",function(a,b,c,d){a.initView=function(){var b={exporterCsvFilename:"answers.csv",columnDefs:[{name:"key",displayName:"APPLICATION_KEY"},{name:"value"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/answers/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.key, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){b.open({animation:!0,templateUrl:"app/tools/answer/list/list.create.modal.html",controller:"AnswerListCreateCtrl"}).result.then(function(b){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("AnswerListCreateCtrl",["$scope","$translate","$uibModalInstance","CannedAnswer","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.answers.list",{url:"/list",templateUrl:"app/tools/answer/list/list.html",controller:"AnswerListCtrl"})}]),angular.module("xCallyShuttleApp").controller("AnswerViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","$location","CannedAnswer",function(a,b,c,d,e,f,g){a.getAnswer=function(){return g.get({id:e.id}).$promise.then(function(b){a.answer=b})["catch"](function(a){c.error(a)})},a.updateAnswer=function(){var b=angular.copy(a.answer);return g.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){c.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.answers.view",{url:"/view/:id",templateUrl:"app/tools/answer/view/view.html",controller:"AnswerViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.answers.view.settings",{url:"/settings",templateUrl:"app/tools/answer/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").factory("Automation",["$resource",function(a){return a("/api/automations/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.automations",{url:"/automations",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:51}}})}]),angular.module("xCallyShuttleApp").controller("AutomationListCtrl",["$scope","$http","$translate","xAlert","Automation","gridOptions",function(a,b,c,d,e,f){a.onText="On",a.offText="Off",a.isActive=!0,a.size="mini",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initView=function(){var b={exporterCsvFilename:"Automations.csv",columnDefs:[{name:"name"},{name:"description"},{name:"channel"},{name:"status",cellTemplate:'<div class="centered-uigrid-td"><input data-ng-change="grid.appScope.updateItem(row.entity)", bs-switch ng-model="row.entity.status" type="checkbox" switch-active="{{ grid.appScope.isActive }}" switch-on-text="{{ grid.appScope.onText }}" switch-off-text="{{ grid.appScope.offText }}" switch-on-color="{{ grid.appScope.onColor }}" switch-off-color="{{ grid.appScope.offColor }}" switch-animate="{{ grid.appScope.animate }}" switch-size="{{ grid.appScope.size }}" switch-label="{{ grid.appScope.label }}" switch-icon="{{ grid.appScope.icon }}" switch-radio-off="{{ grid.appScope.radioOff }}" switch-label-width="{{ grid.appScope.labelWidth }}" switch-handle-width="{{ grid.appScope.handleWidth }}"></div>',width:100,enableFiltering:!1},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/automations/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=f.gridOptions(e,b,a)},a.updateItem=function(a){return e.update({id:a.id},a).$promise.then(function(){d.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){console.error(a),d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.automations.list",{url:"/list",templateUrl:"app/tools/automation/list/list.html",controller:"AutomationListCtrl"})}]),angular.module("xCallyShuttleApp").controller("AutomationViewCtrl",["$scope","$stateParams","$http","$translate","xAlert","automations","Automation","$location",function(a,b,c,d,e,f,g,h){a.$automations=f,a.recordSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.forms={general:{}},a.addCondition=function(b){a.automation[b].push({field:"",operator:"",value:""})},a.removeCondition=function(b,c){a.automation[b].splice(c,1)},a.addAction=function(){a.automation.Actions.push({action:"",data1:"",data2:"",data3:"",data4:"",data5:""})},a.resetActionData=function(a){a.data1="",a.data2="",a.data3="",a.data4="",a.data5=""},a.removeAction=function(b){a.automation.Actions.splice(b,1)},a.initView=function(){return g.get({id:b.id}).$promise.then(function(b){a.automation=b})["catch"](function(a){e.error(a),h.path("/tools/automations/list")})},a.updateAutomation=function(){return g.update({id:b.id},a.automation).$promise.then(function(){e.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){console.error(a),e.error(a)})},a.exitValidation=function(b){return console.log(b&&(a.automation.All.length||a.automation.Any.length)&&a.automation.Actions.length),!(!b||!a.automation.All.length&&!a.automation.Any.length||!a.automation.Actions.length)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.automations.view",{url:"/view/:id",templateUrl:"app/tools/automation/view/view.html",controller:"AutomationViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]})}]}}).state("main.tools.automations.view.settings",{url:"/settings",templateUrl:"app/tools/automation/view/view.settings.html"}).state("main.tools.automations.view.routes",{url:"/routes",templateUrl:"app/tools/automation/view/view.routes.html"}).state("main.tools.automations.view.application",{url:"/application",templateUrl:"app/tools/automation/view/view.application.html"})}]),angular.module("xCallyShuttleApp").controller("AutomationWizardCtrl",["$scope","$http","$location","xAlert","automations","WizardHandler","Automation",function(a,b,c,d,e,f,g){a.$automations=e,a.statusSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.tempData={voice:{},mail:{},chat:{},fax:{}},a.item={All:[],Any:[],Actions:[]},a.forms={general:void 0,settings:void 0},a.addCondition=function(b){a.item[b].push({field:"",operator:"",value:""})},a.removeCondition=function(b,c){a.item[b].splice(c,1)},a.addAction=function(){a.item.Actions.push({action:"",data1:"",data2:"",data3:"",data4:"",data5:""})},a.resetActionData=function(a){a.data1="",a.data2="",a.data3="",a.data4="",a.data5=""},a.removeAction=function(b){a.item.Actions.splice(b,1)},a.$watch("item.channel",function(b,c){c&&(a.tempData[c].All=_.clone(a.item.All,!0),a.tempData[c].Any=_.clone(a.item.Any,!0),a.tempData[c].Actions=_.clone(a.item.Actions,!0)),a.item.All=a.tempData[b].All?a.tempData[b].All:[],a.item.Any=a.tempData[b].Any?a.tempData[b].Any:[],a.item.Actions=a.tempData[b].Actions?a.tempData[b].Actions:[]},!0),a.item.channel="mail",a.createItem=function(){return g.save(a.item).$promise.then(function(){c.path("/tools/automations/list")})["catch"](function(a){console.error(a),d.error(a)})},a.next=function(){f.wizard().next()},a.previous=function(){f.wizard().previous()},a.exitValidation=function(a){return a},a.exitSettingsValidation=function(b){return!(!b||!a.item.All.length&&!a.item.Any.length||!a.item.Actions.length)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.automations.wizard",{url:"/wizard",templateUrl:"app/tools/automation/wizard/wizard.html",controller:"AutomationWizardCtrl"})}]),angular.module("xCallyShuttleApp").factory("Interval",["$resource",function(a){return a("/api/intervals/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]).factory("SubInterval",["$resource",function(a){return a("/api/intervals/:intervalId/subintervals/:id",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals",{url:"/intervals",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:53}}})}]),angular.module("xCallyShuttleApp").controller("IntervalListCtrl",["$scope","$uibModal","Interval","gridOptions",function(a,b,c,d){a.initView=function(){var b={exporterCsvFilename:"intervals.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/intervals/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){var c=b.open({animation:!0,templateUrl:"app/tools/interval/list/list.create.modal.html",controller:"IntervalListCreateCtrl"});c.result.then(function(b){console.log(b),a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("IntervalListCreateCtrl",["$scope","$translate","$uibModalInstance","Interval","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals.list",{url:"/list",templateUrl:"app/tools/interval/list/list.html",controller:"IntervalListCtrl"})}]),angular.module("xCallyShuttleApp").controller("IntervalViewSubintervalsListCtrl",["$scope","$stateParams","gridOptions","SubInterval","$translate","$uibModal",function(a,b,c,d,e,f){a.stateParams=b,a.initView=function(){var e={exporterCsvFilename:"tools_interval.csv",enableSelectAll:!1,enableRowSelection:!1,multiSelect:!1,columnDefs:[{name:"name"},{name:"interval"},{name:"action",width:125,buttons:[{"class":"blue-hoki",href:"/tools/intervals/view/{{row.entity.IntervalId}}/subintervals/view/{{row.entity.id}}",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(d,e,a,{intervalId:b.id})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals.view.subintervals.list",{url:"/list",templateUrl:"app/tools/interval/view/subinterval/list/list.html",controller:"IntervalViewSubintervalsListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals.view.subintervals",{url:"/subintervals",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("IntervalViewSubintervalsViewCtrl",["$scope","$stateParams","WizardHandler","SubInterval","xAlert","$location","$translate","Interval",function(a,b,c,d,e,f,g,h){function i(b){var c,d,e,f;c=b.t_from&&b.t_to&&!b.alwaysTime?moment(b.t_from).format("HH:mm")+"-"+moment(b.t_to).format("HH:mm"):"*",b.wd_from&&"always"!==b.wd_from?(d=b.wd_from,b.wd_to&&"always"!==b.wd_to&&(d+="-"+b.wd_to)):d="*",b.md_from&&"always"!==b.md_from?(e=b.md_from,b.md_to&&"always"!==b.md_to&&(e+="-"+b.md_to)):e="*",b.m_from&&"always"!==b.m_from?(f=b.m_from,b.m_to&&"always"!==b.m_to&&(f+="-"+b.m_to)):f="*",a.subinterval&&(a.subinterval.interval=c+","+d+","+e+","+f)}a.isNewSubinterval=!1,a["switch"]={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.initSubInterval=function(){return b.subintervalId?(a.isNewSubinterval=!1,a.splittedInterval={t_from:moment(new Date),t_to:moment(new Date)},d.get({id:b.subintervalId,intervalId:b.id}).$promise.then(function(b){a.subinterval=b;var c,d=a.subinterval?a.subinterval.interval.split(","):["*","*","*","*"];d.forEach(function(b,d){switch(d){case 0:"*"!==b?(c=b.split("-"),a.splittedInterval.t_from=moment(c[0],"HH:mm"),a.splittedInterval.t_to=moment(c[1],"HH:mm"),a.splittedInterval.alwaysTime=!1):(a.splittedInterval.t_from=moment(new Date),a.splittedInterval.t_to=moment(new Date),a.splittedInterval.alwaysTime=!0);break;case 1:"*"!==b?(c=b.split("-"),a.splittedInterval.wd_from=c[0],a.splittedInterval.wd_to=c[1]?c[1]:"always"):(a.splittedInterval.wd_from="always",a.splittedInterval.wd_to="always");break;case 2:"*"!==b?(c=b.split("-"),a.splittedInterval.md_from=c[0],a.splittedInterval.md_to=c[1]?c[1]:"always"):(a.splittedInterval.md_from="always",a.splittedInterval.md_to="always");break;case 3:"*"!==b?(c=b.split("-"),a.splittedInterval.m_from=c[0],a.splittedInterval.m_to=c[1]?c[1]:"always"):(a.splittedInterval.m_from="always",a.splittedInterval.m_to="always")}})})["catch"](function(a){e.error(a),f.path("/tools/intervals/list")})):(a.isNewSubinterval=!0,a.subinterval={},a.splittedInterval={t_from:moment(new Date),t_to:moment(new Date),wd_from:"always",wd_to:"always",md_from:"always",md_to:"always",m_from:"always",m_to:"always",alwaysTime:!0},void 0)},a.next=function(){c.wizard().next()},a.previous=function(){c.wizard().previous()},a.exitValidation=function(a){return a},a.$watch("splittedInterval",function(a){a&&i(a)},!0),a.addOrUpdateSubInterval=function(){return a.isNewSubinterval?d.save({intervalId:b.id},a.subinterval).$promise.then(function(){e.show(g.instant("MESSAGE_WELL_DONE")+".","success"),f.path("/tools/intervals/view/"+b.id+"/subintervals/list")})["catch"](function(a){e.error(a)}):h.update({id:b.subintervalId},a.subinterval).$promise.then(function(){e.show(g.instant("MESSAGE_WELL_DONE")+".","success"),f.path("/tools/intervals/view/"+b.id+"/subintervals/list")})["catch"](function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals.view.subintervals.view",{url:"/view/:subintervalId",templateUrl:"app/tools/interval/view/subinterval/view/view.html",controller:"IntervalViewSubintervalsViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("IntervalViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","socket","$location","WizardHandler","Modal","interval","Interval",function(a,b,c,d,e,f,g,h,i,j,k){function l(b){var c,d,e,f;c=b.t_from&&b.t_to&&!b.alwaysTime?moment(b.t_from).format("HH:mm")+"-"+moment(b.t_to).format("HH:mm"):"*",b.wd_from&&"always"!==b.wd_from?(d=b.wd_from,b.wd_to&&"always"!==b.wd_to&&(d+="-"+b.wd_to)):d="*",b.md_from&&"always"!==b.md_from?(e=b.md_from,b.md_to&&"always"!==b.md_to&&(e+="-"+b.md_to)):e="*",b.m_from&&"always"!==b.m_from?(f=b.m_from,b.m_to&&"always"!==b.m_to&&(f+="-"+b.m_to)):f="*",void 0!==a.selectedSubInterval?a.interval.SubIntervals[a.selectedSubInterval].interval=c+","+d+","+e+","+f:a.subinterval.interval=c+","+d+","+e+","+f}a.$translate=d,a.$interval=j.interval,a.selectedSubInterval=void 0,a["switch"]={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.gridOptions={columnDefs:[{name:"name",displayName:"APPLICATION_NAME",headerCellFilter:"translate"},{name:"interval",displayName:"APPLICATION_INTERVAL",headerCellFilter:"translate"},{name:"action",displayName:"APPLICATION_ACTION",headerCellFilter:"translate",width:125,cellTemplate:'<a class="btn btn-xs blue-hoki" data-ng-click="grid.appScope.openSubInterval(grid.appScope.gridOptions.data.indexOf(row.entity))">{{\'APPLICATION_SETTINGS\' | translate}}</a><a class="btn btn-xs red-sunglo" data-ng-click="grid.appScope.deleteSubInterval(row.entity.name+\' interval\', grid.appScope.gridOptions.data.indexOf(row.entity))">{{\'APPLICATION_DELETE\' | translate}}</a>'}]},a.forms={subinterval:void 0,general:void 0},a.initSubInterval=function(b){b&&(a.selectedSubInterval=void 0),a.subinterval={},a.splittedInterval={t_from:moment(new Date),t_to:moment(new Date),wd_from:"always",wd_to:"always",md_from:"always",md_to:"always",m_from:"always",m_to:"always",alwaysTime:!0}},a.next=function(){h.wizard().next()},a.previous=function(){h.wizard().previous()},a.exitValidation=function(a){return a},a.deselectAndRedirect=function(b){a.selectedSubInterval=void 0,g.path(b)},a.getInterval=function(){return k.get({id:e.id}).$promise.then(function(b){a.interval=b})["catch"](function(a){c.error(a),g.path("/tools/intervals/list")})},a.openSubInterval=function(b){a.selectedSubInterval=b,g.path("/tools/intervals/view/"+e.id+"/subintervals/settings")},a.updateInterval=function(){var b={name:a.interval.name,description:a.interval.description};return k.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE")+".","success")})["catch"](function(a){c.error(a)})},a.getSubInterval=function(){void 0===a.selectedSubInterval&&g.path("/tools/intervals/list"),a.splittedInterval={t_from:moment(new Date),t_to:moment(new Date)};var b,c=a.interval.SubIntervals[a.selectedSubInterval]?a.interval.SubIntervals[a.selectedSubInterval].interval.split(","):["*","*","*","*"];c.forEach(function(c,d){switch(d){case 0:"*"!==c?(b=c.split("-"),a.splittedInterval.t_from=moment(b[0],"HH:mm"),a.splittedInterval.t_to=moment(b[1],"HH:mm"),a.splittedInterval.alwaysTime=!1):(a.splittedInterval.t_from=moment(new Date),a.splittedInterval.t_to=moment(new Date),a.splittedInterval.alwaysTime=!0);break;case 1:"*"!==c?(b=c.split("-"),a.splittedInterval.wd_from=b[0],a.splittedInterval.wd_to=b[1]?b[1]:"always"):(a.splittedInterval.wd_from="always",a.splittedInterval.wd_to="always");break;case 2:"*"!==c?(b=c.split("-"),a.splittedInterval.md_from=b[0],a.splittedInterval.md_to=b[1]?b[1]:"always"):(a.splittedInterval.md_from="always",a.splittedInterval.md_to="always");break;case 3:"*"!==c?(b=c.split("-"),a.splittedInterval.m_from=b[0],a.splittedInterval.m_to=b[1]?b[1]:"always"):(a.splittedInterval.m_from="always",a.splittedInterval.m_to="always")}})},a.$watch("splittedInterval",function(a){a&&l(a)},!0),a.addSubInterval=function(){a.interval.SubIntervals.push(a.subinterval),a.updateInterval("subintervals")},a.deleteSubInterval=i.confirm["delete"](function(b){a.interval.SubIntervals.splice(b,1),a.updateInterval()})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals.view",{url:"/view/:id",templateUrl:"app/tools/interval/view/view.html",controller:"IntervalViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.intervals.view.settings",{url:"/settings",templateUrl:"app/tools/interval/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("PauseListCtrl",["$scope","$log","$uibModal","$translate","Pause","gridOptions",function(a,b,c,d,e,f){a.initView=function(){var b={exporterCsvFilename:"pauses.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/pauses/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=f.gridOptions(e,b,a)},a.createItem=function(){var b=c.open({animation:!0,templateUrl:"app/tools/pause/list/list.create.modal.html",controller:"PauseListCreateCtrl"});b.result.then(function(b){console.log(b),a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("PauseListCreateCtrl",["$scope","$translate","$uibModalInstance","Pause","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.pauses.list",{url:"/list",templateUrl:"app/tools/pause/list/list.html",controller:"PauseListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Pause",["$resource",function(a){return a("/api/pauses/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.pauses",{url:"/pauses",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:57}}})}]),angular.module("xCallyShuttleApp").controller("PauseViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","$location","Pause",function(a,b,c,d,e,f,g){a.getPause=function(){return g.get({id:e.id}).$promise.then(function(b){a.pause=b})["catch"](function(a){c.error(a)})},a.updatePause=function(){var b=angular.copy(a.pause);return g.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){c.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.pauses.view",{url:"/view/:id",templateUrl:"app/tools/pause/view/view.html",controller:"PauseViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.pauses.view.settings",{url:"/settings",templateUrl:"app/tools/pause/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("SchedulerListCtrl",["$scope","Scheduler","gridOptions","xAlert","$translate","socket",function(a,b,c,d,e,f){a._=_,a.switches={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.scheduleTypes=[{name:"APPLICATION_REPORT_EXTRACTION",value:"report"},{name:"APPLICATION_HISTORY_MOVE",value:"history"},{name:"APPLICATION_DB_BACKUP",value:"backup"}],a.initView=function(){var d={exporterCsvFilename:"Schedules.csv",columnDefs:[{name:"name"},{name:"type",cellTemplate:'<div class="centered-uigrid-td">{{grid.appScope._.find(grid.appScope.scheduleTypes,{value:row.entity.type}).name | translate}}</div>'},{name:"description"},{name:"active",cellTemplate:'<div class="centered-uigrid-td"><input data-ng-change="grid.appScope.updateItem(row.entity)", bs-switch ng-model="row.entity.active" type="checkbox" switch-active="{{ grid.appScope.switches.isActive }}" switch-on-text="{{ \'APPLICATION_YES\' | translate }}" switch-off-text="{{ \'APPLICATION_NO\' | translate }}" switch-on-color="{{ grid.appScope.switches.onColor }}" switch-off-color="{{ grid.appScope.switches.offColor }}" switch-animate="{{ grid.appScope.switches.animate }}" switch-size="{{ grid.appScope.switches.size }}" switch-label="{{ grid.appScope.switches.label }}" switch-icon="{{ grid.appScope.switches.icon }}" switch-radio-off="{{ grid.appScope.switches.radioOff }}" switch-label-width="{{ grid.appScope.switches.labelWidth }}" switch-handle-width="{{ grid.appScope.switches.handleWidth }}"></div>',enableFiltering:!1,enableSorting:!1},{name:"sendMail",displayName:"APPLICATION_SEND_MAIL",cellTemplate:'<div data-ng-if="row.entity.type == \'report\'" class="centered-uigrid-td"><input data-ng-change="grid.appScope.updateItem(row.entity)", bs-switch ng-model="row.entity.sendMail" type="checkbox" switch-active="{{ grid.appScope.switches.isActive }}" switch-on-text="{{ \'APPLICATION_YES\' | translate }}" switch-off-text="{{ \'APPLICATION_NO\' | translate }}" switch-on-color="{{ grid.appScope.switches.onColor }}" switch-off-color="{{ grid.appScope.switches.offColor }}" switch-animate="{{ grid.appScope.switches.animate }}" switch-size="{{ grid.appScope.switches.size }}" switch-label="{{ grid.appScope.switches.label }}" switch-icon="{{ grid.appScope.switches.icon }}" switch-radio-off="{{ grid.appScope.switches.radioOff }}" switch-label-width="{{ grid.appScope.switches.labelWidth }}" switch-handle-width="{{ grid.appScope.switches.handleWidth }}"></div>',enableFiltering:!1,enableSorting:!1},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/tools/scheduler/view/{{row.entity.id}}/settings",name:"settings"},{"class":"green-turquoise",name:"run",onClick:"grid.appScope.runSchedule(row.entity.id)"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.updateItem=function(a){return b.update({id:a.id},a).$promise.then(function(){d.show(e.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){console.error(a),d.error(a)})},a.runSchedule=function(a){return b.get({id:a,controller:"run"}).$promise.then(function(){d.show(e.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){console.error(a),d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.scheduler.list",{url:"/list",templateUrl:"app/tools/scheduler/list/list.html",controller:"SchedulerListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Scheduler",["$resource",function(a){return a("/api/scheduler/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.scheduler",{url:"/scheduler",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:61}}})}]),angular.module("xCallyShuttleApp").controller("SchedulerViewCtrl",["$scope","xAlert","$translate","$stateParams","socket","$location","ReportTree","Scheduler","DefaultReport","CustomReport","$timeout","MailServerOut",function(a,b,c,d,e,f,g,h,i,j,k,l){function m(){switch(a.schedule.cronType=a.rangeExec.type,a.rangeExec.type){case"daily":a.schedule.cron="00 "+a.rangeExec.hour+" * * *";break;case"weekly":a.schedule.cron="00 "+a.rangeExec.hour+" * * "+a.rangeExec.weekDays.join(",");break;case"monthly":a.schedule.cron="00 "+a.rangeExec.hour+" "+a.rangeExec.monthDay+" * *"}}function n(b){var c;switch(b.cronType){case"daily":a.rangeExec.hour=Number(b.cron.split(" ")[1]),a.rangeExec.type=b.cronType;break;case"weekly":c=b.cron.split(" "),a.rangeExec.hour=Number(c[1]),c[4].split(",").forEach(function(b){a.rangeExec.weekDays.push(Number(b))}),a.rangeExec.type=b.cronType;break;case"monthly":c=b.cron.split(" "),a.rangeExec.hour=Number(c[1]),a.rangeExec.monthDay=Number(c[2]),a.rangeExec.type=b.cronType;break;case"currentDay":a.switchValues.today=!0}a.$watch("rangeExec",function(b){a.switchValues.today||m()},!0)}a.forms={},a.rangeExec={weekDays:[],monthDay:null,hour:0,type:null},a.initReports=function(){var c;return a.reports=[],a.tempTodayCron=null,g.query().$promise.then(function(b){return a.defaultTreeData=JSON.parse(b[0].tree),a.customTreeData=JSON.parse(b[1].tree),i.get().$promise}).then(function(b){return a.defRep=b.rows,a.defRep.length&&_.forEach(a.defRep,function(b){c=_.find(a.defaultTreeData,{id:b.parent}),c&&(b.parent="Motion Reports - "+c.text,b.type="default")}),j.get().$promise}).then(function(b){return a.cusRep=b.rows,a.cusRep.length&&_.forEach(a.cusRep,function(b){c=_.find(a.customTreeData,{id:b.parent}),c&&(b.parent="Custom Reports - "+c.text,b.type="custom")}),l.get().$promise}).then(function(b){a.mailServers=b.rows})["catch"](function(a){b.error(a)})},a.initView=function(){return h.get({id:d.id}).$promise.then(function(b){a.schedule=b,n(b)}).then(function(){e.socket.on("schedule:update",function(b){a.schedule.id===b.id&&(a.schedule.active=b.active,a.schedule.sendMail=b.sendMail)})})["catch"](function(a){console.error(a),f.path("/tools/scheduler/list")})},a.refreshSlider=function(){k(function(){a.$broadcast("rzSliderForceRender"),a.refreshSlider=null})},a.monthDays=function(){for(var a=[],b=1;31>=b;b++)a.push(b);return a}(),a.hours=function(){for(var a=[],b=0;23>=b;b++)a.push(b);return a}(),a.setReportTree=function(b){a.schedule.reportType=b.type},a.validitySlider={ceil:24,floor:0,showTicks:!0},a.switchValues={today:!1},a.switches={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.scheduleTypes=[{name:"APPLICATION_REPORT_EXTRACTION",value:"report"}],a.todayCron=[{name:"15 min",value:"*/15 * * * *"},{name:"30 min",value:"*/30 * * * *"},{name:"1 h",value:"0 * * * *"}],a.reportRanges=[{name:"APPLICATION_PREVIOUS_DAY",value:"yesterday"},{name:"APPLICATION_LAST_SEVEN_DAYS",value:"last7"},{name:"APPLICATION_LAST_THIRTY_DAYS",value:"last30"},{name:"APPLICATION_LAST_MONTH",value:"lastMonth"}],a.cronTypes=[{name:"APPLICATION_DAY",value:"daily"},{name:"APPLICATION_WEEK",value:"weekly"},{name:"APPLICATION_MONTH",value:"monthly"}],a.weekDays=[{name:"APPLICATION_MONDAY",value:1},{name:"APPLICATION_TUESDAY",value:2},{name:"APPLICATION_WEDNESDAY",value:3},{name:"APPLICATION_THURSDAY",value:4},{name:"APPLICATION_FRIDAY",value:5},{name:"APPLICATION_SATURDAY",value:6},{name:"APPLICATION_SUNDAY",value:0}],a.checkToday=function(){a.switchValues.today?(a.schedule.cron=angular.copy(a.tempTodayCron),a.schedule.cronType="currentDay"):(a.tempTodayCron=angular.copy(a.schedule.cron),a.schedule.cron=void 0,m())},a.updateSchedule=function(){return h.update({id:a.schedule.id},a.schedule).$promise.then(function(){b.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){console.error(a),b.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.scheduler.view",{url:"/view/:id",templateUrl:"app/tools/scheduler/view/view.html",controller:"SchedulerViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.scheduler.view.settings",{url:"/settings",templateUrl:"app/tools/scheduler/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("SchedulerWizardCtrl",["$scope","WizardHandler","$location","xAlert","Scheduler","ReportTree","$translate","DefaultReport","CustomReport","MailServerOut",function(a,b,c,d,e,f,g,h,i,j){function k(){switch(a.item.cronType=a.rangeExec.type,a.rangeExec.type){case"daily":a.item.cron="00 "+a.rangeExec.hour+" * * *";break;case"weekly":a.item.cron="00 "+a.rangeExec.hour+" * * "+a.rangeExec.weekDays.join(",");break;case"monthly":a.item.cron="00 "+a.rangeExec.hour+" "+a.rangeExec.monthDay+" * *"}}a.forms={},a.item={validityStart:8,validityEnd:16,type:"report",reportType:"default"},a.initReports=function(){a.reports=[];var b;return f.query().$promise.then(function(b){return a.defaultTreeData=JSON.parse(b[0].tree),a.customTreeData=JSON.parse(b[1].tree),h.get().$promise}).then(function(c){return a.defRep=c.rows,a.defRep.length&&_.forEach(a.defRep,function(c){b=_.find(a.defaultTreeData,{id:c.parent}),b&&(c.parent="Motion Reports - "+b.text,c.type="default")}),i.get().$promise}).then(function(c){return a.cusRep=c.rows,a.cusRep.length&&_.forEach(a.cusRep,function(c){b=_.find(a.customTreeData,{id:c.parent}),b&&(c.parent="Custom Reports - "+b.text, -c.type="custom")}),j.get().$promise}).then(function(b){a.mailServers=b.rows})["catch"](function(a){d.error(a)})},a.setReportTree=function(b){a.item.reportType=b.type},a.validitySlider={ceil:24,floor:0,showTicks:!0},a.switchValues={today:!1},a.switches={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.scheduleTypes=[{name:"APPLICATION_REPORT_EXTRACTION",value:"report"}],a.todayCron=[{name:"15 min",value:"*/15 * * * *"},{name:"30 min",value:"*/30 * * * *"},{name:"1 h",value:"0 * * * *"}],a.reportRanges=[{name:"APPLICATION_PREVIOUS_DAY",value:"yesterday"},{name:"APPLICATION_LAST_SEVEN_DAYS",value:"last7"},{name:"APPLICATION_LAST_THIRTY_DAYS",value:"last30"},{name:"APPLICATION_LAST_MONTH",value:"lastMonth"}],a.cronTypes=[{name:"APPLICATION_DAY",value:"daily"},{name:"APPLICATION_WEEK",value:"weekly"},{name:"APPLICATION_MONTH",value:"monthly"}],a.weekDays=[{name:"APPLICATION_MONDAY",value:1},{name:"APPLICATION_TUESDAY",value:2},{name:"APPLICATION_WEDNESDAY",value:3},{name:"APPLICATION_THURSDAY",value:4},{name:"APPLICATION_FRIDAY",value:5},{name:"APPLICATION_SATURDAY",value:6},{name:"APPLICATION_SUNDAY",value:0}],a.tempTodayCron=null,a.checkToday=function(){a.switchValues.today?(a.item.cron=angular.copy(a.tempTodayCron),a.item.cronType="currentDay"):(a.tempTodayCron=angular.copy(a.item.cron),a.item.cron=void 0,k())},a.monthDays=function(){for(var a=[],b=1;31>=b;b++)a.push(b);return a}(),a.hours=function(){for(var a=[],b=0;23>=b;b++)a.push(b);return a}(),a.rangeExec={weekDays:[],monthDay:null,hour:0,type:null},a.$watch("rangeExec",function(b){a.switchValues.today||k()},!0),a.next=function(){b.wizard().next()},a.previous=function(){b.wizard().previous()},a.exitValidation=function(a){return a},a.createItem=function(){return e.save(a.item).$promise.then(function(){c.path("/tools/scheduler/list")})["catch"](function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.scheduler.wizard",{url:"/wizard",templateUrl:"app/tools/scheduler/wizard/wizard.html",controller:"SchedulerWizardCtrl"})}]),angular.module("xCallyShuttleApp").controller("SoundListCtrl",["$scope","$http","socket","Modal","$q","FileUploader","$translate","xAlert","$cookieStore","$sce","Sound",function(a,b,c,d,e,f,g,h,i,j,k){a.Sound=k,a.isCollapsed=!0,a.downloadButtonClass="btn btn-xs blue-hoki",a["delete"]=d.confirm["delete"](function(a){b["delete"]("/api/sounds/"+a).success(function(a){}).error(function(a){console.log(a)})}),a.updateAudio=function(a,c){var d=e.defer();return b.put("/api/sounds/"+a,c).success(function(a){d.resolve()}).error(function(a){console.log(a.message),d.reject(a.message)}),d.promise},a.$on("$destroy",function(){c.unsyncUpdates("sound")}),a.initList=function(){b.get("/api/sounds").success(function(b){a.sounds=b.rows,b.rows.length||(a.isCollapsed=!1),c.syncUpdates("sound",a.sounds,function(){a.sounds.length||(a.isCollapsed=!1)})})};var l=a.uploader=new f({url:"/api/sounds",withCredentials:!0,headers:{Authorization:"Bearer "+i.get("token")}});l.filters.push({name:"customFilter",fn:function(a,b){return this.queue.length<10}}),l.onWhenAddingFileFailed=function(a,b,c){console.info("onWhenAddingFileFailed",a,b,c)},l.onAfterAddingFile=function(a){console.info("onAfterAddingFile",a)},l.onAfterAddingAll=function(a){console.info("onAfterAddingAll",a)},l.onBeforeUploadItem=function(a){console.info("onBeforeUploadItem",a)},l.onProgressItem=function(a,b){console.info("onProgressItem",a,b),a.isUploading=!0},l.onProgressAll=function(a){console.info("onProgressAll",a)},l.onSuccessItem=function(a,b,c,d){console.info("onSuccessItem",a,b,c,d),a.isUploading=!1},l.onErrorItem=function(a,b,c,d){console.info("onErrorItem",a,b,c,d),a.responseMessage=b,a.isUploading=!1},l.onCancelItem=function(a,b,c,d){console.info("onCancelItem",a,b,c,d),a.isUploading=!1},l.onCompleteItem=function(a,b,c,d){console.info("onCompleteItem",a,b,c,d),a.isUploading=!1},l.onCompleteAll=function(){console.info("onCompleteAll")}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.sounds.list",{url:"/list",templateUrl:"app/tools/sound/list/list.html",controller:"SoundListCtrl",authenticate:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.js"]})}]}})}]),angular.module("xCallyShuttleApp").factory("Sound",["$resource",function(a){return a("/api/sounds/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.sounds",{url:"/sounds",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:60}}})}]),angular.module("xCallyShuttleApp").controller("TagListCtrl",["$scope","$uibModal","Tag","gridOptions","$rootScope",function(a,b,c,d,e){a.initView=function(){var b={exporterCsvFilename:"tag.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/tags/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){var c=b.open({animation:!0,templateUrl:"app/tools/tag/list/list.create.modal.html",controller:"TagListCreateCtrl"});c.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("TagListCreateCtrl",["$scope","$translate","$uibModalInstance","Tag","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.tags.list",{url:"/list",templateUrl:"app/tools/tag/list/list.html",controller:"TagListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Tag",["$resource",function(a){return a("/api/tags/:id/:controller/:tag",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.tags",{url:"/tags",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:55}}})}]),angular.module("xCallyShuttleApp").controller("TagViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","$location","Tag","gridOptions","List","Company","Contact","uiGridConstants","usSpinnerService",function(a,b,c,d,e,f,g,h,i,j,k,l,m){function n(){m.stop("spinner-grid"),a.readyGrid=!0}a.getTag=function(){return g.get({id:e.id}).$promise.then(function(b){a.tag=b})["catch"](function(a){c.error(a)})},a.updateTag=function(){var b=angular.copy(a.tag);return g.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){c.error(a)})},a.initChat=function(){m.spin("spinner-grid");var b={enableRowSelection:!1,exporterCsvFilename:"tagChat.csv",columnDefs:[{name:"type"},{name:"status"},{name:"ChatWebsite.name",displayName:"APPLICATION_WEBSITE"},{name:"ChatVisitor.email",displayName:"APPLICATION_VISITOR"},{name:"action",width:40,buttons:[{"class":"green",name:"chatRoom",onClick:"grid.appScope.openRoom(row.entity.id, 'chatRoom')"}]}]};a.gridOptions=h.gridOptions(g,b,a,{controller:"chat",tag:a.tag.name},null,null,n())},a.initMail=function(){m.spin("spinner-grid");var b={enableRowSelection:!1,exporterCsvFilename:"tagMail.csv",columnDefs:[{name:"subject"},{name:"from"},{name:"account"},{name:"status"},{name:"action",width:40,buttons:[{"class":"green",name:"mailRoom",onClick:"grid.appScope.openRoom(row.entity.id, 'mailRoom')"}]}]};a.gridOptions=h.gridOptions(g,b,a,{controller:"mail",tag:a.tag.name},null,null,n())},a.initFax=function(){m.spin("spinner-grid");var b={enableRowSelection:!1,exporterCsvFilename:"tagFax.csv",columnDefs:[{name:"from"},{name:"account"},{name:"status"},{name:"action",width:40,buttons:[{"class":"green",name:"faxRoom",onClick:"grid.appScope.openRoom(row.entity.id, 'faxRoom')"}]}]};a.gridOptions=h.gridOptions(g,b,a,{controller:"fax",tag:a.tag.name},null,null,n())},a.initSms=function(){m.spin("spinner-grid");var b={enableRowSelection:!1,exporterCsvFilename:"tagSms.csv",columnDefs:[{name:"from"},{name:"status"},{name:"action",width:40,buttons:[{"class":"green",name:"smsRoom",onClick:"grid.appScope.openRoom(row.entity.id, 'smsRoom')"}]}]};a.gridOptions=h.gridOptions(g,b,a,{controller:"sms",tag:a.tag.name},null,null,n())},a.initContacts=function(){a.readyGrid=!1,m.spin("spinner-grid");var b;return i.get().$promise.then(function(b){return a.lists=[],b.rows.forEach(function(b,c){a.lists.push({value:b.id,label:b.name})}),j.get().$promise}).then(function(b){a.companies=[],b.rows.forEach(function(b,c){a.companies.push({value:b.id,label:b.name})})}).then(function(){b={enableRowSelection:!1,exporterCsvFilename:"tagContacts.csv",columnDefs:[{name:"firstName"},{name:"lastName"},{name:"phone"},{name:"email"},{name:"ListId",displayName:"APPLICATION_LIST",field:"List.name",filter:{type:l.filter.SELECT,selectOptions:a.lists}},{name:"CompanyId",displayName:"APPLICATION_COMPANY",field:"Company.name",filter:{type:l.filter.SELECT,term:e.companyId||null,selectOptions:a.companies}},{name:"action",width:40,buttons:[{"class":"blue-hoki",name:"profile",onClick:"grid.appScope.openContactTab(row.entity)"}]}]},a.gridOptions=h.gridOptions(g,b,a,{controller:"contacts",tag:a.tag.name},null,null,n())})["catch"](function(a){c.error(a)})},a.openRoom=function(b,c){var d=_.find(a.workspaces,{id:b,type:c});if(d)d.active=!0;else{var e;switch(c){case"mailRoom":e="icon-envelope";break;case"chatRoom":e="fa fa-users";break;case"faxRoom":e="fa fa-fax";break;case"smsRoom":e="glyphicon glyphicon-comment"}a.workspaces.push({id:b,type:c,"class":e,active:!0})}}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.tags.view",{url:"/view/:id",templateUrl:"app/tools/tag/view/view.html",controller:"TagViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.tags.view.settings",{url:"/settings",templateUrl:"app/tools/tag/view/view.settings.html"}).state("main.tools.tags.view.chat",{url:"/chat",templateUrl:"app/tools/tag/view/view.chat.html"}).state("main.tools.tags.view.mail",{url:"/mail",templateUrl:"app/tools/tag/view/view.mail.html"}).state("main.tools.tags.view.fax",{url:"/fax",templateUrl:"app/tools/tag/view/view.fax.html"}).state("main.tools.tags.view.sms",{url:"/sms",templateUrl:"app/tools/tag/view/view.sms.html"}).state("main.tools.tags.view.contacts",{url:"/contacts",templateUrl:"app/tools/tag/view/view.contacts.html"})}]),angular.module("xCallyShuttleApp").controller("TemplateListCtrl",["$scope","Template","gridOptions",function(a,b,c){a.initView=function(){var d={exporterCsvFilename:"templates.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/templates/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.templates.list",{url:"/list",templateUrl:"app/tools/template/list/list.html",controller:"TemplateListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Template",["$resource",function(a){return a("/api/templates/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.templates",{url:"/templates",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:56}}})}]),angular.module("xCallyShuttleApp").controller("TemplateViewCtrl",["$scope","$rootScope","$http","$translate","$stateParams","xAlert","Template","templateVariable",function(a,b,c,d,e,f,g,h){a.initItem=function(){CKEDITOR.plugins.addExternal("richparams","/assets/plugins/ckeditor-richparams/"),a.options={language:b.language,allowedContent:!0,entities:!1,skin:"office2013",contentsCss:"/assets/css/global/richparams.css",extraPlugins:"richparams,autogrow",autoGrow_minHeight:450,richparams:h,disableNativeSpellChecker:!1,toolbar:[{name:"clipboard",items:["Cut","Copy","Paste","PasteText","PasteFromWord","-","Undo","Redo"]},{name:"links",items:["Link","Unlink","Anchor"]},{name:"insert",items:["Image","Table","HorizontalRule","SpecialChar"]},{name:"tools",items:["Maximize"]},{name:"document",items:["Source"]},"/",{name:"basicstyles",items:["Bold","Italic","Underline","Strike","Subscript","Superscript","-","RemoveFormat"]},{name:"paragraph",items:["NumberedList","BulletedList","-","Outdent","Indent","-","Blockquote"]},{name:"styles",items:["Styles","Format"]},"/",{name:"motion",items:["voice","chat","mail","sms","openchannel","fax"]}]},a.form={},a.item={},a.item=g.get({id:e.id})},a.updateItem=function(){return g.update(a.item).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.templates.view",{url:"/view/:id",templateUrl:"app/tools/template/view/view.html",controller:"TemplateViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.templates.view.settings",{url:"/settings",templateUrl:"app/tools/template/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("TemplateWizardCtrl",["$scope","$rootScope","$location","$http","WizardHandler","xAlert","Template","templateVariable",function(a,b,c,d,e,f,g,h){a.initWizard=function(){CKEDITOR.plugins.addExternal("richparams","/assets/plugins/ckeditor-richparams/"),a.options={language:b.language,allowedContent:!0,entities:!1,skin:"office2013",contentsCss:"/assets/css/global/richparams.css",extraPlugins:"richparams,autogrow",autoGrow_minHeight:450,disableNativeSpellChecker:!1,richparams:h,toolbar:[{name:"clipboard",items:["Cut","Copy","Paste","PasteText","PasteFromWord","-","Undo","Redo"]},{name:"links",items:["Link","Unlink","Anchor"]},{name:"insert",items:["Image","Table","HorizontalRule","SpecialChar"]},{name:"tools",items:["Maximize"]},{name:"document",items:["Source"]},"/",{name:"basicstyles",items:["Bold","Italic","Underline","Strike","Subscript","Superscript","-","RemoveFormat"]},{name:"paragraph",items:["NumberedList","BulletedList","-","Outdent","Indent","-","Blockquote"]},{name:"styles",items:["Styles","Format"]},"/",{name:"motion",items:["voice","chat","mail","sms","openchannel","fax"]}]},a.item={},a.form={}},a.exitValidation=function(a){return a},a.createItem=function(){return g.save({name:a.item.name,description:a.item.description,subject:a.item.subject||null,html:a.item.html||null,text:a.item.text||null}).$promise.then(function(){c.path("/tools/templates/list")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.templates.wizard",{url:"/wizard",templateUrl:"app/tools/template/wizard/wizard.html",controller:"TemplateWizardCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools",{url:"/tools",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:13}}})}]),angular.module("xCallyShuttleApp").controller("TriggerListCtrl",["$scope","$http","$translate","Modal","xAlert","Trigger","gridOptions",function(a,b,c,d,e,f,g){a.onText="On",a.offText="Off",a.isActive=!0,a.size="mini",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initView=function(){var b={exporterCsvFilename:"Triggers.csv",columnDefs:[{name:"name"},{name:"description"},{name:"channel"},{name:"status",cellTemplate:'<div class="centered-uigrid-td"><input data-ng-change="grid.appScope.updateItem(row.entity)", bs-switch ng-model="row.entity.status" type="checkbox" switch-active="{{ grid.appScope.isActive }}" switch-on-text="{{ grid.appScope.onText }}" switch-off-text="{{ grid.appScope.offText }}" switch-on-color="{{ grid.appScope.onColor }}" switch-off-color="{{ grid.appScope.offColor }}" switch-animate="{{ grid.appScope.animate }}" switch-size="{{ grid.appScope.size }}" switch-label="{{ grid.appScope.label }}" switch-icon="{{ grid.appScope.icon }}" switch-radio-off="{{ grid.appScope.radioOff }}" switch-label-width="{{ grid.appScope.labelWidth }}" switch-handle-width="{{ grid.appScope.handleWidth }}"></div>',width:100,enableFiltering:!1},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/triggers/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=g.gridOptions(f,b,a)},a.updateItem=function(a){return f.update({id:a.id},a).$promise.then(function(){e.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.triggers.list",{url:"/list",templateUrl:"app/tools/trigger/list/list.html",controller:"TriggerListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Trigger",["$resource",function(a){return a("/api/triggers/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.triggers",{url:"/triggers",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:50}}})}]),angular.module("xCallyShuttleApp").controller("TriggerViewCtrl",["$scope","$stateParams","$http","$translate","xAlert","triggers","Trigger","$location",function(a,b,c,d,e,f,g,h){a.$triggers=f,a.recordSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.forms={general:{}},a.addCondition=function(b){a.trigger[b].push({field:"",operator:"",value:""})},a.removeCondition=function(b,c){a.trigger[b].splice(c,1)},a.addAction=function(){a.trigger.Actions.push({action:"",data1:"",data2:"",data3:"",data4:"",data5:""})},a.resetActionData=function(a){a.data1="",a.data2="",a.data3="",a.data4="",a.data5=""},a.removeAction=function(b){a.trigger.Actions.splice(b,1)},a.initView=function(){return g.get({id:b.id}).$promise.then(function(b){a.trigger=b})["catch"](function(a){e.error(a),h.path("/tools/triggers/list")})},a.updateTrigger=function(){return g.update({id:b.id},a.trigger).$promise.then(function(){e.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){console.error(a),e.error(a)})},a.exitValidation=function(b){return!(!b||!a.trigger.Actions.length)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.triggers.view",{url:"/view/:id",templateUrl:"app/tools/trigger/view/view.html",controller:"TriggerViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]})}]}}).state("main.tools.triggers.view.settings",{url:"/settings",templateUrl:"app/tools/trigger/view/view.settings.html"}).state("main.tools.triggers.view.routes",{url:"/routes",templateUrl:"app/tools/trigger/view/view.routes.html"}).state("main.tools.triggers.view.application",{url:"/application",templateUrl:"app/tools/trigger/view/view.application.html"})}]),angular.module("xCallyShuttleApp").controller("TriggerWizardCtrl",["$scope","$http","$location","xAlert","triggers","WizardHandler","Trigger",function(a,b,c,d,e,f,g){a.$triggers=e,a.statusSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.tempData={voice:{},mail:{},chat:{},fax:{}},a.item={All:[],Any:[],Actions:[]},a.forms={general:void 0,settings:void 0},a.addCondition=function(b){a.item[b].push({field:"",operator:"",value:""})},a.removeCondition=function(b,c){a.item[b].splice(c,1)},a.addAction=function(){a.item.Actions.push({action:"",data1:"",data2:"",data3:"",data4:"",data5:""})},a.resetActionData=function(a){a.data1="",a.data2="",a.data3="",a.data4="",a.data5=""},a.removeAction=function(b){a.item.Actions.splice(b,1)},a.$watch("item.channel",function(b,c){c&&(a.tempData[c].All=_.clone(a.item.All,!0),a.tempData[c].Any=_.clone(a.item.Any,!0),a.tempData[c].Actions=_.clone(a.item.Actions,!0)),a.item.All=a.tempData[b].All?a.tempData[b].All:[],a.item.Any=a.tempData[b].Any?a.tempData[b].Any:[],a.item.Actions=a.tempData[b].Actions?a.tempData[b].Actions:[]},!0),a.item.channel="voice",a.createItem=function(){return g.save(a.item).$promise.then(function(){c.path("/tools/triggers/list")})["catch"](function(a){console.error(a),d.error(a)})},a.next=function(){f.wizard().next()},a.previous=function(){f.wizard().previous()},a.exitValidation=function(a){return a},a.exitSettingsValidation=function(b){return!(!b||!a.item.Actions.length)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.triggers.wizard",{url:"/wizard",templateUrl:"app/tools/trigger/wizard/wizard.html",controller:"TriggerWizardCtrl"})}]),angular.module("xCallyShuttleApp").controller("TrunkListCtrl",["$scope","Trunk","gridOptions","xAlert","$translate","socket",function(a,b,c,d,e,f){function g(){f.socket.on("voice:trunks",function(b){var c=_.find(a.gridOptions.data,{name:b.name});c&&(c.status=b.status,c.peerstatus=b.peerstatus)})}a.isActive=!0,a.size="mini",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initView=function(){var d={exporterCsvFilename:"Trunks.csv",columnDefs:[{name:"name"},{name:"active",cellTemplate:'<div class="centered-uigrid-td"><input data-ng-change="grid.appScope.updateItem(row.entity)", bs-switch ng-model="row.entity.active" type="checkbox" switch-active="{{ grid.appScope.isActive }}" switch-on-text="{{ \'APPLICATION_YES\' | translate }}" switch-off-text="{{ \'APPLICATION_NO\' | translate }}" switch-on-color="{{ grid.appScope.onColor }}" switch-off-color="{{ grid.appScope.offColor }}" switch-animate="{{ grid.appScope.animate }}" switch-size="{{ grid.appScope.size }}" switch-label="{{ grid.appScope.label }}" switch-icon="{{ grid.appScope.icon }}" switch-radio-off="{{ grid.appScope.radioOff }}" switch-label-width="{{ grid.appScope.labelWidth }}" switch-handle-width="{{ grid.appScope.handleWidth }}"></div>'},{name:"host"},{name:"description"},{name:"status",cellTemplate:'<div class="centered-uigrid-td" data-ng-if="row.entity.active && row.entity.registry && row.entity.status">{{row.entity.status}}</div>'},{name:"peerstatus",cellTemplate:'<div class="centered-uigrid-td" data-ng-if="row.entity.active && row.entity.peerstatus">{{row.entity.peerstatus}}</div>'},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/trunks/view/{{row.entity.name}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.name)"}]}]};a.gridOptions=c.gridOptions(b,d,a,null,null,null,g)},a.updateItem=function(a){return b.update({id:a.name},a).$promise.then(function(){d.show(e.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){console.error(a),d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.trunks.list",{url:"/list",templateUrl:"app/tools/trunk/list/list.html",controller:"TrunkListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Trunk",["$resource",function(a){return a("/api/trunks/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.trunks",{url:"/trunks",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:52}}})}]),angular.module("xCallyShuttleApp").controller("TrunkViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","socket","$location","Trunk","VoiceContext",function(a,b,c,d,e,f,g,h,i){a.activeSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.initView=function(){return h.get({id:e.id}).$promise.then(function(b){b.nat=b.nat?b.nat.split(","):[],b.allow=b.allow?b.allow.split(";"):[],b.insecure=b.insecure?b.insecure.split(","):[],b.transport=b.transport?b.transport.split(","):[],a.trunk=b}).then(function(){f.socket.on("voice:trunk",function(b){a.trunk.name===b.username&&(a.trunk.status=b.status,a.trunk.peerstatus=b.peerstatus)})})["catch"](function(a){console.error(a),g.path("/tools/trunks/list")})},a.updateTrunk=function(){""===a.trunk.password&&delete a.trunk.password;var b=angular.copy(a.trunk);return b.nat=b.nat.join(","),b.allow=b.allow.join(";"),b.insecure=b.insecure.join(","),b.transport=b.transport.join(","),h.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){c.error(a)})},a.getContexts=function(){return i.get().$promise.then(function(b){a.voiceContexts=b.rows})["catch"](function(a){c.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.trunks.view",{url:"/view/:id",templateUrl:"app/tools/trunk/view/view.html",controller:"TrunkViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.trunks.view.settings",{url:"/settings",templateUrl:"app/tools/trunk/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("TrunkWizardCtrl",["$scope","WizardHandler","$location","xAlert","Trunk",function(a,b,c,d,e){a.initWizard=function(){a.forms={},a.item={context:"from-voip-provider"}},a.next=function(){b.wizard().next()},a.previous=function(){b.wizard().previous()},a.exitValidation=function(a){return a},a.createItem=function(){return a.item.fromuser=a.item.defaultuser,a.item.fromdomain=a.item.host,e.save(a.item).$promise.then(function(){c.path("/tools/trunks/list")})["catch"](function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.trunks.wizard",{url:"/wizard",templateUrl:"app/tools/trunk/wizard/wizard.html",controller:"TrunkWizardCtrl"})}]),angular.module("xCallyShuttleApp").controller("VariableListCtrl",["$scope","$uibModal","Variable","gridOptions",function(a,b,c,d){a.initView=function(){var b={exporterCsvFilename:"variables.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/variables/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){var c=b.open({animation:!0,templateUrl:"app/tools/variable/list/list.create.modal.html",controller:"VariableListCreateCtrl"});c.result.then(function(b){console.log(b),a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("VariableListCreateCtrl",["$scope","$translate","$uibModalInstance","Variable","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.variables.list",{url:"/list",templateUrl:"app/tools/variable/list/list.html",controller:"VariableListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Variable",["$resource",function(a){return a("/api/variables/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.variables",{url:"/variables",template:"<div ui-view></div>","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:54}}})}]),angular.module("xCallyShuttleApp").controller("VariableViewCtrl",["$scope","$translate","$stateParams","xAlert","Variable",function(a,b,c,d,e){a.getVariable=function(){return e.get({id:c.id}).$promise.then(function(b){a.variable=b})["catch"](function(a){d.error(a)})},a.updateVariable=function(){return e.update({id:c.id},a.variable).$promise.then(function(){d.show(b.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.variables.view",{url:"/view/:id",templateUrl:"app/tools/variable/view/view.html",controller:"VariableViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.variables.view.settings",{url:"/settings",templateUrl:"app/tools/variable/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("YourdashboardListCloneModalCtrl",["$scope","$uibModalInstance","name",function(a,b,c){a.forms={dashboard:{}},a.item={name:c},a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("YourdashboardListCreateModalCtrl",["$scope","$uibModalInstance",function(a,b){a.forms={dashboard:void 0},a.item={},a.ok=function(){a.item.model=JSON.stringify({title:a.item.name}),b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("YourdashboardListCtrl",["$scope","$http","$translate","xAlert","Modal","$uibModal","$log","YourDashboard","gridOptions",function(a,b,c,d,e,f,g,h,i){a.initView=function(){var b={exporterCsvFilename:"voice_contexts.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:125,buttons:[{"class":"green",href:"/tools/yourdashboards/show/{{row.entity.id}}",name:"view"},{"class":"blue-hoki",href:"/tools/yourdashboards/view/{{row.entity.id}}/settings",name:"settings"},{"class":"{{row.entity.defaultEntry ? 'red-sunglo disabled' : 'red-sunglo'}}",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"},{"class":"purple",name:"clone",onClick:"grid.appScope.clone(row.entity.id,row.entity.name)"}]}]};a.gridOptions=i.gridOptions(h,b,a)},a.create=function(){var b=f.open({animation:!0,templateUrl:"app/tools/yourdashboard/list/create.modal.html",controller:"YourdashboardListCreateModalCtrl"});b.result.then(function(b){return h.save(b).$promise.then(function(){d.show(c.instant("MESSAGE_WELL_DONE"),"success"),a.gridOptions.getPage()})["catch"](function(a){console.error(a),d.error(a)})},function(){g.info("Modal dismissed at: "+new Date)})},a.clone=function(b,e){var i=f.open({animation:!0,templateUrl:"app/tools/yourdashboard/list/clone.modal.html",controller:"YourdashboardListCloneModalCtrl",resolve:{name:function(){return e+"_copy"}}});i.result.then(function(e){return h.save({id:b,controller:"clone"},e).$promise.then(function(){ -d.show(c.instant("MESSAGE_WELL_DONE"),"success"),a.gridOptions.getPage()})["catch"](function(a){console.error(a),d.error(a)})},function(){g.info("Modal dismissed at: "+new Date)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.yourdashboards.list",{url:"/list",templateUrl:"app/tools/yourdashboard/list/list.html",controller:"YourdashboardListCtrl",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:59}}})}]),angular.module("xCallyShuttleApp").controller("LeaveEditedDashboardModalCtrl",["$scope","$uibModalInstance",function(a,b){a.close=function(){b.close()},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("YourdashboardShowCtrl",["$scope","$rootScope","localStorageService","xAlert","$translate","Auth","$stateParams","$location","$uibModal","$log","YourDashboard","$interval",function(a,b,c,d,e,f,g,h,i,j,k,l){function m(){return k.get({id:g.id,controller:"values"}).$promise.then(function(){})["catch"](function(a){console.error("Error retrieving widgets values",a)})}function n(a){var b,c;if(!a)return 0;for(a=a.toString(),b=c=a.length;b--;){var d=a[b].charCodeAt();d>=56320&&57343>=d&&b--,d>127&&2047>=d?c++:d>2047&&65535>=d&&(c+=2)}return c}a.Auth=f,a.editMode=!1;var o;a.getDashboard=function(){return k.get({id:g.id}).$promise.then(function(b){!b[f.getRole()]&&h.path("/landing");var c={name:"dashboard",structure:"4-8",enableconfirmdelete:!0,maximizable:!0,collapsible:!0};b.model=JSON.parse(b.model||'{"title":"Dashboard"}'),b.editable=!(!f.isAdmin()||!b.editable),a.dashboard=_.merge(c,b),m(),o=l(function(){m()},1e3*parseInt(a.dashboard.timeout||5))})["catch"](function(a){h.path("/tools/yourdashboards/list")})},a.$on("$locationChangeStart",function(b,c,d){if(a.editMode){b.preventDefault();var e=i.open({animation:!0,templateUrl:"app/tools/yourdashboard/show/leaveEditedDashboard.modal.html",controller:"LeaveEditedDashboardModalCtrl"});e.result.then(function(b){a.editMode=!1;var d=location.protocol+"//"+location.host;h.path(c.replace(d,""))},function(){j.info("Modal dismissed at: "+new Date)})}});var p=function(c,f,h){var i=angular.copy(a.dashboard);return i.name=a.dashboard.model.title,i.model=JSON.stringify(i.model),n(i.model)<=64e3?k.update({id:g.id},i).$promise.then(function(){d.show(e.instant("MESSAGE_DASHBOARD_SAVED")+"!","success"),a.editMode=!1})["catch"](function(b){d.error(b),i.model=JSON.parse(i.model),i.name="dashboard",a.dashboard=i}):(d.show(e.instant("MESSAGE_DASHBOARD_TOO_BIG")+"!","warning"),void b.$broadcast("adfToggleEditMode"))};a.$on("adfDashboardChanged",p),a.$on("adfIsEditMode",function(){a.editMode=!0}),a.$on("$destroy",function(){l.cancel(o)})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.yourdashboards.show",{url:"/show/:id",templateUrl:"app/tools/yourdashboard/show/show.html",controller:"YourdashboardShowCtrl",data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:2}}})}]),angular.module("xCallyShuttleApp").controller("YourdashboardViewCtrl",["$scope","$rootScope","xAlert","$translate","$stateParams","$location","YourDashboard",function(a,b,c,d,e,f,g){a.radioSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.getDashboard=function(){return g.get({id:e.id}).$promise.then(function(b){delete b.model,a.dashboard=b})["catch"](function(){f.path("/tools/yourdashboards/list")})},a.updateDashboard=function(){var b=angular.copy(a.dashboard);return g.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(d){c.error(d),a.dashboard=b})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.yourdashboards.view",{url:"/view/:id",templateUrl:"app/tools/yourdashboard/view/view.html",controller:"YourdashboardViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]},data:{permissions:{only:["admin","user"],redirectTo:"landing",id:59}}}).state("main.tools.yourdashboards.view.settings",{url:"/settings",templateUrl:"app/tools/yourdashboard/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").factory("YourDashboard",["$resource",function(a){return a("/api/dashboards/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.yourdashboards",{url:"/yourdashboards",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("ZendeskListCtrl",["$scope","ZendeskAccount","gridOptions","xAlert","$translate",function(a,b,c,d,e){a.initView=function(){var d={exporterCsvFilename:"zendesk_account.csv",columnDefs:[{name:"name",displayName:"APPLICATION_NAME"},{name:"username"},{name:"remoteUri",displayName:"APPLICATION_URI"},{name:"action",buttons:[{"class":"blue-hoki",href:"/zendesk/view/{{row.entity.id}}/account",name:"profile"},{"class":"green-jungle",name:"check",onClick:"grid.appScope.checkAccount(row.entity.id)"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.checkAccount=function(a){return b.check({id:a}).$promise.then(function(){d.show(e.instant("MESSAGE_ACCOUNT_VERIFIED"),"success")})["catch"](function(){d.show(e.instant("MESSAGE_ACCOUNT_INVALID"),"danger")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.list",{url:"/list",templateUrl:"app/zendesk/list/list.html",controller:"ZendeskListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.view.configurations",{url:"/configurations",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("ZendeskViewConfigurationListCtrl",["$scope","$stateParams","$translate","gridOptions","ZendeskConfiguration","$uibModal",function(a,b,c,d,e,f){a.initView=function(){var c={exporterCsvFilename:"zendesk_configurations.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:125,buttons:[{"class":"blue-hoki",href:"/zendesk/view/{{row.entity.AccountId}}/configurations/view/{{row.entity.id}}",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(e,c,a,{accountId:b.id})},a.createItem=function(){var b=f.open({animation:!0,templateUrl:"app/zendesk/view/configuration/list/create.modal.html",controller:"ZendeskCreateConfigurationCtrl"});b.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("ZendeskCreateConfigurationCtrl",["$scope","$translate","$uibModalInstance","ZendeskConfiguration","xAlert","$stateParams","channel",function(a,b,c,d,e,f,g){a.form={},a.item={},a.channels=g,a.item.channel="voice",a.item.type="Queue",a.save=function(){return d.save({accountId:f.id},a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.view.configurations.list",{url:"/list",templateUrl:"app/zendesk/view/configuration/list/list.html",controller:"ZendeskViewConfigurationListCtrl"})}]),angular.module("xCallyShuttleApp").controller("ZendeskViewConfigurationViewCtrl",["$scope","$stateParams","$filter","$translate","socket","ZendeskConfiguration","xAlert","variable","Variable","ZendeskAccount","Tag","ZendeskField",function(a,b,c,d,e,f,g,h,i,j,k,l){a.$on("$destroy",function(){e.unsyncUpdates("zendesk_field")}),a.config={autoHideScrollbar:!1,theme:"dark",advanced:{updateOnContentResize:!0},setHeight:300,scrollInertia:0},a.fieldType=[{type:"string",title:"String"},{type:"variable",title:"Variable"},{type:"customVariable",title:"Custom Variable"}],a.descFieldType=[{type:"string",title:"String"},{type:"keyValue",title:"Key Value"}],a.groupVariableByGroup=function(a){switch(a.group){case"voice_queue":return"Voice: Queue";case"voice_outbound":return"Voice: Outbound";default:return"Other"}},a.initView=function(){a.configurationName="",a.subjectConfig=[],a.descriptionConfig=[],a.fieldConfig=[],a.selectedTags={tags:[]},a.variables=h},a.getConfiguration=function(){return f.get({accountId:b.id,id:b.configurationId}).$promise.then(function(b){a.configurationName=b.name,a.subjectConfig=b.Subject,a.descriptionConfig=b.Description,a.fieldConfig=b.Field,a.selectedTags={tags:_.map(b.Tags,function(a){return a.id})},e.socket.on("zendesk_field:remove",function(b){_.remove(a.subjectConfig,{id:b.id}),_.remove(a.descriptionConfig,{id:b.id}),_.remove(a.fieldConfig,{id:b.id})})})["catch"](function(a){g.error(a)})},a.getCustomVariables=function(){return i.get().$promise.then(function(b){a.customVariables=b.rows})["catch"](function(a){g.error(a)})},a.getFields=function(){return j.fields({id:b.id}).$promise.then(function(b){a.accountFields=c("zendesk")(b)})["catch"](function(a){g.error(a)})},a.getTags=function(){return k.get().$promise.then(function(b){a.tags=b.rows})["catch"](function(a){g.error(a)})},a.addItem=function(c){var d={};switch(c){case"subject":case"description":d={type:"string",content:""};break;case"field":d={content:""}}return f.save({accountId:b.id,id:b.configurationId,controller:c},d).$promise.then(function(b){switch(c){case"subject":a.subjectConfig.push(b);break;case"description":a.descriptionConfig.push(b);break;case"field":a.fieldConfig.push(b)}})["catch"](function(a){g.error(a)})},a.changeType=function(b){"variable"===b.type?(b.content="",b.variableName=""):"string"===b.type?(b.VariableId=null,b.variableName=""):"customVariable"===b.type&&(b.VariableId=null,b.content=""),a.updateField(b)},a.updateField=function(a){return l.update({accountId:b.id,configurationId:b.configurationId,id:a.id},a).$promise.then(function(){})["catch"](function(a){g.error(a)})},a.removeItem=function(a){return l["delete"]({accountId:b.id,configurationId:b.configurationId,id:a.id}).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){g.error(a)})},a.changeDescType=function(b){"keyValue"===b.type?(b.content="","string"===b.keyType?(b.VariableId=null,b.variableName=""):"variable"===b.keyType?(b.keyContent="",b.VariableId=null):"customVariable"===b.keyType&&(b.keyContent="",b.variableName="")):"string"===b.type&&(b.VariableId=null,b.variableName="",b.key="",b.keyContent=""),a.updateField(b)},a.changeFieldType=function(b){if(b.content="",b.variableName="",b.nameField="",b.VariableId=null,b.idField){var c=_.find(a.accountFields,"id",b.idField);c&&(c.system_field_options?(b.customField=!1,b.nameField=c.title.toLowerCase()):b.customField=!0)}a.updateField(b)},a.updateTags=function(){return f.update({accountId:b.id,id:b.configurationId,controller:"tags"},a.selectedTags.tags).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE")+".","success")})["catch"](function(a){g.error(a)})},a.getSystemFieldOptions=function(b){if(b){var c=_.find(a.accountFields,"id",b);return c?c.system_field_options?c.system_field_options:null:void 0}}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.view.configurations.view",{url:"/view/:configurationId",templateUrl:"app/zendesk/view/configuration/view/view.html",controller:"ZendeskViewConfigurationViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("ZendeskViewCtrl",["$scope","$stateParams","$translate","xAlert","Modal","ZendeskAccount",function(a,b,c,d,e,f){a.initView=function(){return f.get({id:b.id}).$promise.then(function(b){a.account=b})["catch"](function(a){d.error(a)})},a.updateItem=function(){return f.update({id:b.id},a.account).$promise.then(function(){d.show(c.instant("MESSAGE_WELL_DONE")+".","success")})["catch"](function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.view",{url:"/view/:id",templateUrl:"app/zendesk/view/view.html",controller:"ZendeskViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.zendesk.view.account",{url:"/account",templateUrl:"app/zendesk/view/view.account.html"})}]),angular.module("xCallyShuttleApp").controller("ZendeskWizardCtrl",["$scope","$http","$location","$translate","xAlert","WizardHandler","ZendeskAccount",function(a,b,c,d,e,f,g){a.translate=d,a.initWizard=function(){a.$translate=d,a.forms={},a.item={},a.item.authType="password",a.item.serverUrl=c.protocol()+"://"+location.host},a.next=function(){f.wizard().next()},a.exitValidation=function(a){return a},a.createItem=function(){return g.save(a.item).$promise.then(function(){e.show(d.instant("MESSAGE_WELL_DONE")+".","success"),c.path("/zendesk/list")})["catch"](function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.wizard",{url:"/wizard",templateUrl:"app/zendesk/wizard/wizard.html",controller:"ZendeskWizardCtrl"})}]),angular.module("xCallyShuttleApp").factory("ZendeskAccount",["$resource",function(a){return a("/api/zendesk/accounts/:id/:controller",{id:"@id"},{update:{method:"PUT"},fields:{params:{controller:"fields"},isArray:!0},check:{params:{controller:"check"}}})}]).factory("ZendeskConfiguration",["$resource",function(a){return a("/api/zendesk/accounts/:accountId/configurations/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]).factory("ZendeskField",["$resource",function(a){return a("/api/zendesk/accounts/:accountId/configurations/:configurationId/fields/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk",{url:"/zendesk",template:"<div ui-view></div>","abstract":!0})}]),angular.module("xCallyShuttleApp").factory("AuthResource",["$resource",function(a){return a("/auth/local/:controller/:controller2/:param",{param:"@param"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("Auth",["$location","$rootScope","$http","User","$cookieStore","$q","localStorageService",function(a,b,c,d,e,f,g){var h={};return e.get("token")&&(h=d.me()),{login:function(a,i){var j=i||angular.noop,k=f.defer();return c.post("/auth/local",{name:a.name,password:a.password,remember:a.remember}).success(function(a){return e.put("role",a.role),e.put("token",a.token),e.put("userId",a.userId),g.set("loggedIn",!0),h=d.me({},function(){b.$broadcast("login")}),k.resolve(a),j()}).error(function(a){return this.logout(),k.reject(a),j(a)}.bind(this)),k.promise},recover:function(a,b){var d=b||angular.noop,e=f.defer();return c.post("/auth/local/recover",{email:a.email}).success(function(a){return e.resolve(a),d()}).error(function(a){return e.reject(a),d(a)}.bind(this)),e.promise},reset:function(a,b){var d=b||angular.noop,e=f.defer();return c.post("/auth/local/reset/"+a.token,{password:a.password}).success(function(a){return e.resolve(a),d()}).error(function(a){return e.reject(a),d(a)}.bind(this)),e.promise},loginWithToken:function(a,c,f){e.put("role",f),e.put("token",a),e.put("userId",c),h=d.me({},function(){b.$broadcast("login")})},logout:function(){e.remove("role"),e.remove("token"),e.remove("userId"),g.set("loggedIn"),h={},b.$broadcast("logout")},createUser:function(a,b){var c=b||angular.noop;return d.save(a,function(b){return e.put("token",b.token),h=d.me(),c(a)},function(a){return this.logout(),c(a)}.bind(this)).$promise},changePassword:function(a,b,c){var e=c||angular.noop;return d.changePassword({id:h.id},{oldPassword:a,newPassword:b},function(a){return e(null,a)},function(a){return e(a)}).$promise},getCurrentUser:function(){return h},isLoggedIn:function(){return h.hasOwnProperty("role")},isLoggedInAsync:function(a){h.hasOwnProperty("$promise")?h.$promise.then(function(){a(!0)})["catch"](function(){a(!1)}):a(h.hasOwnProperty("role")?!0:!1)},isAdmin:function(){return"admin"===(e.get("role")||h.role)},isUser:function(){return"user"===(e.get("role")||h.role)},isAgent:function(){return"agent"===(e.get("role")||h.role)},getRole:function(){return h.role},getToken:function(){return e.get("token")}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderAccountEmail",["$compile","$timeout","MailAccount","xAlert","Template",function(a,b,c,d,e){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/accountEmail/actionBuilder.html",compile:function(f){function g(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var h,i;return h=f.contents().remove(),function(f,j){f.randomName=g(),b(function(){return c.get().$promise.then(function(a){return _.forEach(a.rows,function(a){a.id=String(a.id)}),f.accounts=a,e.get().$promise}).then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),f.templates=a.rows})["catch"](function(a){d.error(a)})}),i||(i=a(h)),j.append(i(f,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderAccountSms",["$compile","$timeout","SmsAccount","xAlert",function(a,b,c,d){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/accountSms/actionBuilder.html",compile:function(e){function f(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var g,h;return g=e.contents().remove(),function(e,i){e.randomName=f(),b(function(){return c.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),e.accounts=a})["catch"](function(a){d.error(a)})}),h||(h=a(g)),i.append(h(e,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderAccountTemplate",["$compile","xAlert","$http","$timeout","Template","MailAccount",function(a,b,c,d,e,f){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/accountTemplate/actionBuilder.html",compile:function(c){function g(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var h,i;return h=c.contents().remove(),function(c,j){c.randomName=g(),d(function(){return e.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),c.templates=a}).then(function(){return f.get().$promise}).then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),c.accounts=a})["catch"](function(a){b.error(a)})}),i||(i=a(h)),j.append(i(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderClose",["$compile",function(a){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/close/actionBuilder.html",compile:function(b){function c(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var d,e;return d=b.contents().remove(),function(b,f){b.randomName=c(),e||(e=a(d)),f.append(e(b,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderCm",["$compile","xAlert","$http","$timeout","$translate","List",function(a,b,c,d,e,f){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/cm/actionBuilder.html",compile:function(c){var e,g;return e=c.contents().remove(),function(c,h){function i(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}c.randomName=i(),c["switch"]={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},d(function(){return f.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),c.lists=a.rows})["catch"](function(a){b.error(a)})}),g||(g=a(e)),h.append(g(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderEmail",["$compile","xAlert","$timeout","Template",function(a,b,c,d){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/email/actionBuilder.html",compile:function(e){function f(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var g,h;return g=e.contents().remove(),function(e,i){e.randomName=f(),c(function(){return d.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),e.templates=a.rows})["catch"](function(a){b.error(a)})}),h||(h=a(g)),i.append(h(e,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderForward",["$compile",function(a){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/forward/actionBuilder.html",compile:function(b){function c(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var d,e;return d=b.contents().remove(),function(b,f){b.randomName=c(),e||(e=a(d)),f.append(e(b,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderHttp",["$compile",function(a){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/http/actionBuilder.html",compile:function(b){function c(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var d,e;return d=b.contents().remove(),function(b,f){b.randomName=c(),b.methods=["GET","POST"],e||(e=a(d)),f.append(e(b,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderIntegration",["$compile","xAlert","$http","$timeout","Integration","$translate","ZendeskAccount","DeskAccount","SalesforceAccount","FreshdeskAccount","SugarcrmAccount",function(a,b,c,d,e,f,g,h,i,j,k){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/integration/actionBuilder.html",compile:function(c){function f(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var l,m;return l=c.contents().remove(),function(c,n){c.randomName=f(),d(function(){return e.get({active:1}).$promise.then(function(a){_.remove(a.rows,function(a){return"iframe"===a.state}),c.integrations=a.rows,c.element.data1&&o()})["catch"](function(a){b.error(a)})});var o=function(){var a;switch(c.element.data1){case"zendesk":a=g;break;case"desk":a=h;break;case"salesforce":a=i;break;case"freshdesk":a=j;break;case"sugarcrm":a=k}return a?a.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),c.accounts=a.rows,c.element.data2&&p()})["catch"](function(a){b.error(a)}):void 0},p=function(){var a=_.find(c.accounts,{id:c.element.data2}).Configurations;_.forEach(a,function(a){a.id=String(a.id)}),c.configurations=a};c.changeIntegration=function(){c.element.data2="",o()},c.changeAccount=function(){c.element.data3="",p()},m||(m=a(l)),n.append(m(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderJscripty",["$compile","xAlert","$http","$timeout","Template","$translate","JscriptyProject",function(a,b,c,d,e,f,g){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/jscripty/actionBuilder.html",compile:function(c){var e,f;return e=c.contents().remove(),function(c,h){function i(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}c.randomName=i(),d(function(){return g.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),c.projects=a.rows})["catch"](function(a){b.error(a)})}),f||(f=a(e)),h.append(f(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderMotionBar",["$compile","xAlert","$http","$timeout","Template",function(a,b,c,d,e){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/motionbar/actionBuilder.html",compile:function(c){var f,g;return f=c.contents().remove(),function(c,h){function i(){return e.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),c.templates=a.rows})["catch"](function(a){b.error(a)})}function j(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}c.randomName=j(),c.motionActions=[{name:"Popup",value:"0"},{name:"URL",value:"1"},{name:"Windows App",value:"2"}],c.changeMode=function(){c.element.data2="",c.element.data3="",i()},d(function(){return i()}),g||(g=a(f)),h.append(g(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderStatus",["$compile",function(a){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/status/actionBuilder.html",compile:function(b){var c,d;return c=b.contents().remove(),function(b,e){function f(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}b.randomName=f(),b.states=[{name:"APPLICATION_STATUS_NEW",value:"NEW"},{name:"APPLICATION_STATUS_OPEN",value:"OPEN"},{name:"APPLICATION_STATUS_PENDING",value:"PENDING"},{name:"APPLICATION_STATUS_CLOSED",value:"CLOSED"}],d||(d=a(c)),e.append(d(b,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderTag",["$compile","xAlert","$http","$timeout","Tag",function(a,b,c,d,e){return{restrict:"E",scope:{myElement:"=element",form:"="},templateUrl:"components/directives/action/tag/actionBuilder.html",compile:function(c){function f(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var g,h;return g=c.contents().remove(),function(c,i){console.log("myElement",c.myElement),c.randomName=f(),c.data={tags:c.myElement.data1?c.myElement.data1.split(";"):[]},c.$watch("data.tags",function(a){c.myElement.data1=a.join(";")}),d(function(){return e.get().$promise.then(function(a){c.tags=a.rows})["catch"](function(a){b.error(a)})}),h||(h=a(g)),i.append(h(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderTemplate",["$compile","xAlert","$timeout","Template",function(a,b,c,d){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/template/actionBuilder.html",compile:function(e){function f(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var g,h;return g=e.contents().remove(),function(e,i){e.randomName=f(),c(function(){return d.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),e.templates=a.rows})["catch"](function(a){b.error(a)})}),h||(h=a(g)),i.append(h(e,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderUrlForward",["$compile",function(a){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/urlforward/actionBuilder.html",compile:function(b){function c(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var d,e;return d=b.contents().remove(),function(b,f){b.randomName=c(),b.types=[{name:"HTTP GET",value:"GET"},{name:"HTTP POST",value:"POST"}],e||(e=a(d)),f.append(e(b,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderWebPopup",["$compile","xAlert","$http","$timeout","Template",function(a,b,c,d,e){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/webPopup/actionBuilder.html",compile:function(c){var f,g;return f=c.contents().remove(),function(c,h){function i(){return e.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),c.templates=a.rows})["catch"](function(a){b.error(a)})}function j(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}c.typeChange=function(){c.element.data1=null},c.randomName=j(),d(function(){i(),c.element.data2=c.element.data2||"motion"}),g||(g=a(f)),h.append(g(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("conditionBuilder",["$compile","$timeout","$translate","xAlert",function(a,b,c,d){return{restrict:"E",scope:{element:"=",serviceindex:"=",service:"=",form:"="},templateUrl:"components/directives/condition/conditionBuilder.html",compile:function(e){var f,g;return f=e.contents().remove(),function(e,h){function i(a){var b=_.find(e.service.services[e.serviceindex].conditions,{value:a});if(b)if(e.elementType=b.type,e.translateName=b.translate,b.arr)e.values=b.arr;else if(b.resource)return b.resource.get(b.params||{}).$promise.then(function(a){e.values=_.map(a.rows,function(a){return{name:a[b.resName||b.resValue],value:String(a[b.resValue])}})})["catch"](function(a){d.show(c.instant(a.message),"danger")})}function j(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}e._=_,e.randomName=j(),b(function(){e.element.field&&i(e.element.field)}),e.checkCondition=function(a){e.element.value="",e.element.operator="",i(a)},g||(g=a(f)),h.append(g(e,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").factory("xNotificationLicense",["Notification","$rootScope","$location",function(a,b,c){return{show:function(d){var e=b.$new();return e["class"]="alert-warning",e.icon="fa fa-exclamation-triangle",e.more=function(){c.path("/setting/license/view")},new a({delay:d,templateUrl:"components/factories/xNotificationLicense/xNotificationLicense.html",scope:e})}}}]),angular.module("xCallyShuttleApp").filter("secToTime",[function(){return function(a){return new Date(1970,0,1).setSeconds(a)}}]),angular.module("xCallyShuttleApp").controller("FooterController",["$scope","Setting",function(a,b){a.year=moment().year(),a.$on("$includeContentLoaded",function(){Layout.initFooter()}),a.initFooter=function(){return b.get({controller:"info"}).$promise.then(function(b){a.info=b})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").controller("HeaderController",["$scope","$rootScope","$location","$state","$http","$interval","$notification","Auth","xAlert","socket","xNotificationLicense","toastr","localStorageService","Agent","SmsReport","MailReport","OpenChannelReport","ChatReport","ChatRoom","xNotification","$timeout","$translate","$window","User","Pause","Action","FaxReport","List","MailAccount","ChatWebsite","FaxAccount","SmsAccount","OpenChannelAccount","ReportAgent","$uibModal","$log","ReportDial",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K){function L(a,b,c){ -return null===b&&(b=50),null===c&&(c="..."),a&&a.length>b?a.substring(0,b-c.length)+c:a}function M(b){var c,d="reason";switch(b){case"mail":c=p;break;case"chat":c=r;break;case"fax":c=A;break;case"sms":c=o;break;case"agent":c=H,d="lastevent";break;case"dial":c=K,d="dialstatus";break;case"openchannel":c=q;break;default:return}return c.get({limit:10,order:"updatedAt DESC"}).$promise.then(function(c){_.forEach(c.rows,function(a){if(a[d])switch(a[d].toLowerCase()){case"answer":case"connect":case"complete":a.status="taken";break;case"answered_elsewhere":a.status="taken_elsewhere";break;case"called":a.status="lost";break;case"busy":a.status="busy";break;case"rejected":a.status="rejected";break;case"cancel":case"abandoned":a.status="abandoned"}}),a.agentNotifications[b].rows=c.rows,j.socket.on("report_"+b+":save",function(c){c.status="none",a.agentNotifications[b].rows.unshift(c),"agent"!==b&&"dial"!==b&&(a.agentNotifications[b].timeout[c.id]=setTimeout(function(){clearTimeout(a.agentNotifications[b].timeout[c.id]),_.find(a.agentNotifications[b].rows,{id:c.id}).status="lost",angular.element(document.getElementById("header_"+b+"_notification_bar")).hasClass("open")||a.agentNotifications[b]["new"]++,delete a.agentNotifications[b].timeout[c.id]},1e3*c.timeslot))}),j.socket.on("report_"+b+":update",function(c){if("agent"===b){var e=_.find(a.activeCalls,{id:c.id});e&&(c.agentcomplete||c.agentringnoanswer||c.agentdump)?_.remove(a.activeCalls,{id:c.id}):!c.agentconnectAt||c.agentcomplete||c.agentringnoanswer||c.agentdump||a.activeCalls.push(c)}var f=_.find(a.agentNotifications[b].rows,{id:c.id});if(f&&("agent"!==b&&"dial"!==b&&a.agentNotifications[b].timeout[c.id]&&(clearTimeout(a.agentNotifications[b].timeout[c.id]),delete a.agentNotifications[b].timeout[c.id]),c[d])){switch(c[d].toLowerCase()){case"answer":case"connect":case"complete":c.status="taken";break;case"answered_elsewhere":c.status="taken_elsewhere",angular.element(document.getElementById("header_"+b+"_notification_bar")).hasClass("open")||a.agentNotifications.chat["new"]++;break;case"busy":c.status="busy",angular.element(document.getElementById("header_"+b+"_notification_bar")).hasClass("open")||a.agentNotifications[b]["new"]++;break;case"rejected":c.status="rejected";break;case"cancel":case"abandoned":c.status="abandoned",angular.element(document.getElementById("header_"+b+"_notification_bar")).hasClass("open")||a.agentNotifications[b]["new"]++}_.merge(f,c)}})})["catch"](function(a){i.error(a)})}function N(){return a.headerAgent=h.getCurrentUser(),a.readyTimer=1e3*moment().unix(),y.get().$promise.then(function(b){a.headerPauses=b.rows,j.syncUpdates("pause",a.headerPauses)}).then(function(){j.socket.on("agent:save",function(b){b=b.newValues||b,a.headerAgent.id===b.id&&(_.merge(a.headerAgent,b),b.voicePause&&b.mailPause&&b.chatPause&&b.faxPause&&b.smsPause&&b.openchannelPause||(a.readyTimer=1e3*moment().unix()))})})["finally"](function(){h.getCurrentUser().loginInPause&&!m.get("loggedIn")&&a.headerPause("pause")})["catch"](function(a){console.log("Error synchronizing agent status:",a)})}function O(){return H.get({id:"active",controller:"calls"}).$promise.then(function(b){a.activeCalls=b.rows})["catch"](function(a){i.error(a)})}a.moment=moment,$(document).on("click",".tabbed-dropdown",function(a){a.stopPropagation()}),a.license.hasOwnProperty("expirationTime")&&(h.isAdmin()||h.isUser())&&!a.license.demo&&f(function(){"main.setting.license.view"!==d.current.name&&k.show(3e4)},3e4),a.openRoom=function(b,c){var d=_.find(a.workspaces,{id:b,type:c});if(d)d.active=!0;else{var e;switch(c){case"mailRoom":e="icon-envelope";break;case"chatRoom":e="fa fa-users";break;case"faxRoom":e="fa fa-fax";break;case"smsRoom":e="glyphicon glyphicon-comment";break;case"openchannelRoom":e="icon-globe"}a.workspaces.push({id:b,type:c,"class":e,active:!0})}},a.toggleSidebar=function(){b.settings.layout.pageSidebarClosed=!b.settings.layout.pageSidebarClosed,m.set("sidebarClosed",b.settings.layout.pageSidebarClosed)},a.chooseContact=function(b){var c=I.open({animation:!0,templateUrl:"app/main/chooseContact.modal.html",controller:"ChooseContactModalCtrl",resolve:{data:function(){return{eventChannel:"voice",calleridnum:b}}}});c.result.then(function(c){c?a.openContactTab(c):a.newContact({calleridnum:b})},function(){J.info("Modal dismissed at: "+new Date)})},a.loadNotifications=function(b){if(!a.busyLoad[b].end){a.busyLoad[b].busy=!0;var c,d="reason";switch(b){case"mail":c=p;break;case"chat":c=r;break;case"fax":c=A;break;case"sms":c=o;break;case"agent":c=H,d="lastevent";break;case"dial":c=K,d="dialstatus";break;case"openchannel":c=q;break;default:return}return c.get({limit:10,offset:a.agentNotifications[b].rows.length,order:"updatedAt DESC"}).$promise.then(function(c){c.rows.length?(_.forEach(c.rows,function(a){if(a[d])switch(a[d].toLowerCase()){case"answer":case"connect":case"complete":a.status="taken";break;case"answered_elsewhere":a.status="taken_elsewhere";break;case"called":a.status="lost";break;case"busy":a.status="busy";break;case"rejected":a.status="rejected";break;case"abandoned":a.status="abandoned"}}),a.agentNotifications[b].rows=a.agentNotifications[b].rows.concat(c.rows)):a.busyLoad[b].end=!0,a.busyLoad[b].busy=!1})["catch"](function(a){i.error(a)})}},a.headerPause=function(b,c,d){return z.save({name:b,agent:a.headerAgent.id,type:c||"DEFAULT PAUSE",data4:c||"DEFAULT PAUSE",channel:d||"all"}).$promise.then(function(){i.show(v.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){i.error(a)})},h.isAgent()&&(N(),a.agentNotifications={mail:{rows:[],"new":0,timeout:{}},chat:{rows:[],"new":0,timeout:{}},fax:{rows:[],"new":0,timeout:{}},sms:{rows:[],"new":0,timeout:{}},agent:{rows:[],"new":0},dial:{rows:[],"new":0},openchannel:{rows:[],"new":0}},a.busyLoad={mail:{busy:!1,end:!1},chat:{busy:!1,end:!1},fax:{busy:!1,end:!1},sms:{busy:!1,end:!1},agent:{busy:!1,end:!1},dial:{busy:!1,end:!1},openchannel:{busy:!1,end:!1}},O(),M("agent"),M("dial"),a.license.mail&&M("mail"),a.license.chat&&M("chat"),a.license.fax&&M("fax"),a.license.messaging&&M("sms"),a.license.openchannel&&M("openchannel")),j.socket.on("user_has_chat_room:save",function(b){var c;return s.get({id:Number(b.ChatRoomId)}).$promise.then(function(b){c=b;var d=_.find(a.workspaces,{id:Number(c.id),type:"chatRoom"});d?d.name=a.getFullnames(c):a.workspaces.push({id:c.id,name:a.getFullnames(c),type:"chatRoom","class":"icon-bubble",unread:1})})["catch"](function(a){console.error(a)})}),j.socket.on("chat_message:save",function(b){var c;if(b.UserId!==h.getCurrentUser().id&&_.includes(b.userids,h.getCurrentUser().id)){var d=_.find(a.workspaces,{id:Number(b.ChatRoomId),type:"chatRoom"});if(!d)return s.get({id:Number(b.ChatRoomId)}).$promise.then(function(b){c=b,a.workspaces.push({id:c.id,name:a.getFullnames(b),type:"chatRoom","class":"icon-bubble",unread:1})})["catch"](function(a){console.error(a)})}});var P=function(){return w.Notification},Q=function(){b.settings.layout.onFocus=!0},R=function(){b.settings.layout.onFocus=!1};w.onfocus=Q,w.onblur=R,a.getFullnames=function(a){var b=_.without(_.map(a.Users,"fullname"),h.getCurrentUser().fullname);return a.ChatVisitor&&b.unshift(a.ChatVisitor.fullname),b.join(", ")},a.openContact=function(b,c,d){if(d&&"<unknown>"!==d){var e,f;switch(b){case"mail":e=C,f={email:d};break;case"chat":e=D,f={email:d};break;case"fax":e=E,f={fax:d};break;case"sms":e=F,f={mobile:d};break;default:return}return e.get({id:c}).$promise.then(function(a){return a.ListId?B.save({listId:a.ListId,controller:"contacts"},f).$promise:null}).then(function(b){if(b){var c=_.find(a.workspaces,{contactID:b.id});c?c.active=!0:a.workspaces.push({active:!0,"class":"icon-user",contactID:b.id,name:b.email,type:"contact"})}else i.show(v.instant("MESSAGE_NO_LIST_CONFIGURED"),"info")})["catch"](function(a){console.error(a)})}},a.initHeader=function(){return"agent"===h.getCurrentUser().role&&(j.socket.on("report_chat:save",function(a){P&&!b.settings.layout.onFocus&&g("CHAT CHANNEL",{icon:"assets/images/media/channels/chat64.png",body:"NEW Incoming Chat Visitor!",delay:1e3*a.timeslot});var c="<b>"+v.instant("APPLICATION_FROM")+"</b>: "+a.visitorname+"<br><b>"+v.instant("APPLICATION_EMAIL")+"</b>: "+a.visitoremail;"queue"===a.application&&(c+="<br><b>"+v.instant("APPLICATION_QUEUE")+"</b>: "+a.queuename),t.show(v.instant("APPLICATION_NEW_CHAT_REQUEST"),c,"chat",1e3*a.timeslot,function(){return r.get({id:a.id,controller1:"accept",controller2:a.uniqueid}).$promise.then(function(){i.show("Chat properly assigned","success")})["catch"](function(a){switch(a.status){case 504:i.show(v.instant("MESSAGE_CHAT_ALREADY_MANAGED"),"info");break;default:i.error(a)}})},function(){return r.get({id:a.id,controller1:"reject"}).$promise.then(function(){i.show("Chat properly rejected","success")})["catch"](function(a){i.error(a)})})}),j.socket.on("report_mail:save",function(c){var d=_.find(a.workspaces,{id:c.roomid,type:"mailRoom"});if(!d){var e="<b>"+v.instant("APPLICATION_ACCOUNT")+"</b>: "+c.accountname+"<br> <b>"+v.instant("APPLICATION_FROM")+"</b>: "+c.from+"<br> <b>"+v.instant("APPLICATION_SUBJECT")+"</b>: "+(L(c.subject,30,"...")||"No subject");"queue"===c.application&&(e+="<br><b>"+v.instant("APPLICATION_QUEUE")+"</b>: "+c.queuename),t.show(v.instant("APPLICATION_NEW_MAIL_REQUEST"),e,"mail",1e3*c.timeslot,function(){return p.get({id:c.id,controller1:"accept",controller2:c.uniqueid}).$promise.then(function(){var b=_.find(a.workspaces,{id:c.roomid,type:"mailRoom"});b?b.active=!0:a.workspaces.push({id:c.roomid,name:c.subject||"No subject",type:"mailRoom","class":"icon-envelope",active:!0,unread:0})})["catch"](function(a){switch(a.status){case 504:i.show(v.instant("MESSAGE_MAIL_ALREADY_MANAGED"),"info");break;default:i.error(a)}})},function(){return p.get({id:c.id,controller1:"reject"}).$promise["catch"](function(a){i.error(a)})}),P&&!b.settings.layout.onFocus?g("MAIL CHANNEL",{icon:"assets/images/media/channels/mail64.png",body:"NEW Incoming Mail Message!",delay:1e3*c.timeslot}):console.log("Notification API not supported in your browser")}}),j.socket.on("report_sms:save",function(b){var c="<b>"+v.instant("APPLICATION_ACCOUNT")+"</b>: "+b.accountname+"<br> <b>"+v.instant("APPLICATION_FROM")+"</b>: "+b.from;"queue"===b.application&&(c+="<br><b>"+v.instant("APPLICATION_QUEUE")+"</b>: "+b.queuename),t.show(v.instant("APPLICATION_NEW_SMS_REQUEST"),c,"sms",1e3*b.timeslot,function(){return o.get({id:b.id,controller1:"accept",controller2:b.uniqueid}).$promise.then(function(){var c=_.find(a.workspaces,{id:b.roomid,type:"smsRoom"});c?c.active=!0:a.workspaces.push({id:b.roomid,name:b.from,type:"smsRoom","class":"glyphicon glyphicon-comment",active:!0})})["catch"](function(a){switch(a.status){case 504:i.show(v.instant("MESSAGE_SMS_ALREADY_MANAGED"),"info");break;default:i.error(a)}})},function(){return o.get({id:b.id,controller1:"reject"}).$promise.then(function(){i.show("SMS properly rejected","success")})["catch"](function(a){i.error(a)})}),P?g("SMS CHANNEL",{icon:"assets/images/media/channels/chat64.png",body:"NEW Incoming SMS Message!",delay:1e3*b.timeslot}):console.log("Notification API not supported in your browser")}),j.socket.on("report_openchannel:save",function(b){var c="<b>"+v.instant("APPLICATION_ACCOUNT")+"</b>: "+b.accountname+"<br> <b>"+v.instant("APPLICATION_FROM")+"</b>: "+b.from;"queue"===b.application&&(c+="<br><b>"+v.instant("APPLICATION_QUEUE")+"</b>: "+b.queuename),t.show(v.instant("APPLICATION_NEW_MESSAGE"),c,"openchannel",1e3*b.timeslot,function(){return q.get({id:b.id,controller1:"accept",controller2:b.uniqueid}).$promise.then(function(){var c=_.find(a.workspaces,{id:b.roomid,type:"openchannelRoom"});c?c.active=!0:a.workspaces.push({id:b.roomid,name:b.from,type:"openchannelRoom","class":"icon-globe",active:!0})})["catch"](function(a){switch(a.status){case 504:i.show(v.instant("MESSAGE_ALREADY_MANAGED"),"info");break;default:i.error(a)}})},function(){return q.get({id:b.id,controller1:"reject"}).$promise.then(function(){i.show("Message properly rejected","success")})["catch"](function(a){i.error(a)})}),P?g("OPEN CHANNEL",{icon:"assets/images/media/channels/chat64.png",body:"NEW Incoming Message!",delay:1e3*b.timeslot}):console.log("Notification API not supported in your browser")}),j.socket.on("report_fax:save",function(c){var d=_.find(a.workspaces,{id:c.roomid,type:"faxRoom"});if(!d){var e="<b>"+v.instant("APPLICATION_ACCOUNT")+"</b>: "+c.accountname+"<br> <b>"+v.instant("APPLICATION_PHONE")+"</b>: "+c.from;"queue"===c.application&&(e+="<br><b>"+v.instant("APPLICATION_QUEUE")+"</b>: "+c.queuename),t.show(v.instant("APPLICATION_NEW_FAX_REQUEST"),e,"fax",1e3*c.timeslot,function(){return A.get({id:c.id,controller1:"accept",controller2:c.uniqueid}).$promise.then(function(){var b=_.find(a.workspaces,{id:c.roomid,type:"faxRoom"});b?b.active=!0:a.workspaces.push({id:c.roomid,name:c.from,type:"faxRoom","class":"fa fa-fax",active:!0,unread:0})})["catch"](function(a){switch(a.status){case 504:i.show(v.instant("MESSAGE_FAX_ALREADY_MANAGED"),"info");break;default:i.error(a)}})},function(){return A.get({id:c.id,controller1:"reject"}).$promise["catch"](function(a){i.err(a)})}),P&&!b.settings.layout.onFocus?g("FAX CHANNEL",{icon:"assets/images/media/channels/telephone124.png",body:"NEW Incoming Fax Message!",delay:1e3*c.timeslot}):console.log("Notification API not supported in your browser")}}),h.getCurrentUser().loginInPause)?z.save({name:"pause",agent:h.getCurrentUser().id,type:"LOGININPAUSE",data4:"LOGININPAUSE",channel:"all"}).$promise["catch"](function(a){i.error(a)}):void 0},a.logout=function(){return e.get("/auth/local/logout").success(function(){h.logout(),c.path("/login")}).error(function(a){i.error(a)})},a.isActive=function(a){return a===c.path()},a.$on("$destroy",function(){console.log("header $destroy"),j.unsyncUpdates("pause"),j.unsyncUpdates("agent"),j.unsyncUpdates("report_chat"),j.unsyncUpdates("report_mail"),j.unsyncUpdates("report_fax"),j.unsyncUpdates("report_sms"),j.unsyncUpdates("report_openchannel"),j.unsyncUpdates("user_has_chat_room"),j.unsyncUpdates("chat_message"),j.unsyncUpdates("report_integration:sugarcrm"),j.unsyncUpdates("report_integration:freshdesk")})}]),angular.module("xCallyShuttleApp").factory("Modal",["$rootScope","$uibModal",function(a,b){function c(c,d){var e=a.$new();return c=c||{},d=d||"modal-default",angular.extend(e,c),b.open({templateUrl:"components/modal/delete.html",windowClass:d,scope:e})}return{confirm:{"delete":function(a){return a=a||angular.noop,function(){var b,d=Array.prototype.slice.call(arguments),e=d.shift();b=c({modal:{dismissable:!0,title:"Confirm Delete",html:"<p>Are you sure you want to delete"+(e?"<strong> "+e+"</strong>":" selected items")+"?</p>",buttons:[{classes:"btn red",text:"Delete",click:function(a){b.close(a)}},{classes:"btn default",text:"Cancel",click:function(a){b.dismiss(a)}}]}},"over-topbar center"),b.result.then(function(b){a.apply(b,d)})}}}}}]),angular.module("xCallyShuttleApp").service("application",function(){var a={applications:[{type:null,name:"APPLICATION_QUEUE",value:"Queue"},{type:null,name:"APPLICATION_PLAYBACK",value:"Playback"},{type:null,name:"Dial",value:"Dial"},{type:"internalDial",name:"APPLICATION_INTERNAL_DIAL",value:"Dial"},{type:"externalDial",name:"APPLICATION_EXTERNAL_DIAL",value:"Dial"},{type:"RingGroup",name:"Ring Group",value:"Dial"},{type:null,name:"Cally-Square Project",value:"AGI"},{type:null,name:"GoTo",value:"Goto"},{type:null,name:"Hangup",value:"Hangup"},{type:null,name:"Set",value:"Set"},{type:null,name:"APPLICATION_VOICEMAIL",value:"Voicemail"},{type:"videoOn",name:"APPLICATION_VIDEO_ON",value:"Set"},{type:"custom",name:"Custom",value:"custom"}],queueOptions:[{value:"C",name:"APPLICATION_QUEUE_OPTION_C"},{value:"c",name:"APPLICATION_QUEUE_OPTION_c"},{value:"d",name:"APPLICATION_QUEUE_OPTION_d"},{value:"F",name:"APPLICATION_QUEUE_OPTION_F"},{value:"h",name:"APPLICATION_QUEUE_OPTION_h"},{value:"H",name:"APPLICATION_QUEUE_OPTION_H"},{value:"n",name:"APPLICATION_QUEUE_OPTION_n"},{value:"i",name:"APPLICATION_QUEUE_OPTION_i"},{value:"I",name:"APPLICATION_QUEUE_OPTION_I"},{value:"r",name:"APPLICATION_QUEUE_OPTION_r"},{value:"R",name:"APPLICATION_QUEUE_OPTION_R"},{value:"t",name:"APPLICATION_QUEUE_OPTION_t"},{value:"T",name:"APPLICATION_QUEUE_OPTION_T"},{value:"w",name:"APPLICATION_QUEUE_OPTION_w"},{value:"W",name:"APPLICATION_QUEUE_OPTION_W"},{value:"k",name:"APPLICATION_QUEUE_OPTION_k"},{value:"K",name:"APPLICATION_QUEUE_OPTION_K"},{value:"x",name:"APPLICATION_QUEUE_OPTION_x"},{value:"X",name:"APPLICATION_QUEUE_OPTION_X"}],audioOptions:[{value:"skip",name:"APPLICATION_PLAYBACK_OPTION_SKIP"},{value:"noanswer",name:"APPLICATION_PLAYBACK_OPTION_NOANSWER"},{value:"j",name:"APPLICATION_PLAYBACK_OPTION_J"},{value:"say",name:"APPLICATION_PLAYBACK_OPTION_SAY"}],hangupCauses:[{value:"",name:"--"},{value:"1",name:"APPLICATION_HANGUP_CAUSE_1"},{value:"16",name:"APPLICATION_HANGUP_CAUSE_16"},{value:"17",name:"APPLICATION_HANGUP_CAUSE_17"},{value:"18",name:"APPLICATION_HANGUP_CAUSE_18"},{value:"21",name:"APPLICATION_HANGUP_CAUSE_21"},{value:"22",name:"APPLICATION_HANGUP_CAUSE_22"},{value:"27",name:"APPLICATION_HANGUP_CAUSE_27"},{value:"38",name:"APPLICATION_HANGUP_CAUSE_38"},{value:"41",name:"APPLICATION_HANGUP_CAUSE_41"}],intTypes:[{value:"always",name:"APPLICATION_ALWAYS"},{value:"custom",name:"APPLICATION_CUSTOM"},{value:"list",name:"APPLICATION_FROM_LIST"}],checkUnderscore:function(a){return 0===a.indexOf("_")?a:"_"+a}};return{application:a}}),angular.module("xCallyShuttleApp").service("automations",function(){var a={mail:{conditions:[{name:"APPLICATION_STATUS",value:"status",type:"select",arr:[{name:"APPLICATION_STATUS_NEW",value:"NEW"},{name:"APPLICATION_STATUS_OPEN",value:"OPEN"},{name:"APPLICATION_STATUS_CLOSED",value:"CLOSED"},{name:"APPLICATION_STATUS_PENDING",value:"PENDING"}],operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_HOURS_SINCE_CREATED",value:"createdAt",type:"input",operators:[{value:"greater_or_equal",name:"APPLICATION_GTE_TO"},{value:"less_or_equal",name:"APPLICATION_LTE_TO"},{value:"greater",name:"APPLICATION_GREATER_THAN"},{value:"less",name:"APPLICATION_LESS_THAN"}]}],actions:[{name:"APPLICATION_STATUS",value:"status"}]},chat:{conditions:[{name:"APPLICATION_STATUS",value:"status",type:"select",arr:[{name:"APPLICATION_STATUS_NEW",value:"NEW"},{name:"APPLICATION_STATUS_OPEN",value:"OPEN"},{name:"APPLICATION_STATUS_CLOSED",value:"CLOSED"},{name:"APPLICATION_STATUS_PENDING",value:"PENDING"}],operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_HOURS_SINCE_CREATED",value:"createdAt",type:"input",operators:[{value:"greater_or_equal",name:"APPLICATION_GTE_TO"},{value:"less_or_equal",name:"APPLICATION_LTE_TO"},{value:"greater",name:"APPLICATION_GREATER_THAN"},{value:"less",name:"APPLICATION_LESS_THAN"}]}],actions:[{name:"APPLICATION_STATUS",value:"status"}]},fax:{conditions:[{name:"APPLICATION_STATUS",value:"status",type:"select",arr:[{name:"APPLICATION_STATUS_NEW",value:"NEW"},{name:"APPLICATION_STATUS_OPEN",value:"OPEN"},{name:"APPLICATION_STATUS_CLOSED",value:"CLOSED"}],operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_HOURS_SINCE_CREATED",value:"createdAt",type:"input",operators:[{value:"greater_or_equal",name:"APPLICATION_GTE_TO"},{value:"less_or_equal",name:"APPLICATION_LTE_TO"},{value:"greater",name:"APPLICATION_GREATER_THAN"},{value:"less",name:"APPLICATION_LESS_THAN"}]}],actions:[{name:"APPLICATION_STATUS",value:"status"}]}},b=["mail","fax","chat"];return{services:a,channels:b}}),angular.module("xCallyShuttleApp").service("channel",function(){var a=[{name:"Voice",value:"voice"}];return a}),angular.module("xCallyShuttleApp").service("desk_com",function(){var a=[{id:"priority",label:"Priority",custom:!1,data:{choices:[1,2,3,4,5,6,7,8,9,10]}},{id:"status",label:"Status",custom:!1,data:{choices:["new","open","pending","resolved","closed"]}},{id:"type",label:"Type",custom:!1,data:{choices:["chat","twitter","email","qna","facebook","phone"]}}];return{fields:a}}),angular.module("xCallyShuttleApp").service("interval",function(){var a={months:[{value:"always",name:"APPLICATION_ALWAYS"},{value:"jan",name:"APPLICATION_JANUARY"},{value:"feb",name:"APPLICATION_FEBRUARY"},{value:"mar",name:"APPLICATION_MARCH"},{value:"apr",name:"APPLICATION_APRIL"},{value:"may",name:"APPLICATION_MAY"},{value:"jun",name:"APPLICATION_JUNE"},{value:"jul",name:"APPLICATION_JULY"},{value:"aug",name:"APPLICATION_AUGUST"},{value:"sep",name:"APPLICATION_SEPTEMBER"},{value:"oct",name:"APPLICATION_OCTOBER"},{value:"nov",name:"APPLICATION_NOVEMBER"},{value:"dec",name:"APPLICATION_DECEMBER"}],monthsNumber:[{value:"always",name:"APPLICATION_ALWAYS"},{value:"1",name:"APPLICATION_JANUARY"},{value:"2",name:"APPLICATION_FEBRUARY"},{value:"3",name:"APPLICATION_MARCH"},{value:"4",name:"APPLICATION_APRIL"},{value:"5",name:"APPLICATION_MAY"},{value:"6",name:"APPLICATION_JUNE"},{value:"7",name:"APPLICATION_JULY"},{value:"8",name:"APPLICATION_AUGUST"},{value:"9",name:"APPLICATION_SEPTEMBER"},{value:"10",name:"APPLICATION_OCTOBER"},{value:"11",name:"APPLICATION_NOVEMBER"},{value:"12",name:"APPLICATION_DECEMBER"}],daysOfWeek:[{value:"always",name:"APPLICATION_ALWAYS"},{value:"mon",name:"APPLICATION_MONDAY"},{value:"tue",name:"APPLICATION_TUESDAY"},{value:"wed",name:"APPLICATION_WEDNESDAY"},{value:"thu",name:"APPLICATION_THURSDAY"},{value:"fri",name:"APPLICATION_FRIDAY"},{value:"sat",name:"APPLICATION_SATURDAY"},{value:"sun",name:"APPLICATION_SUNDAY"}],daysOfMonth:["always",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{interval:a}}),angular.module("xCallyShuttleApp").service("report",["ReportAgent","ReportCall","ReportMailSession","ReportMember","ReportQueue","ReportIntegration","ReportChatSession","ReportSmsSession","Contact","Recording","ReportSquare","ReportSquareDetail","User","ReportFaxSession","MailRoom","MailMessage","FaxRoom","FaxMessage","ChatRoom","ChatMessage","SmsRoom","SmsMessage","OpenChannelRoom","OpenChannelMessage","ReportOpenChannelSession","ReportMotionDialer","UserHasVoiceQueue","VoiceMailMessage",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B){var C=[{value:"users",resource:m,channel:"General"},{value:"cm_contacts",resource:i,channel:"General"},{value:"report_integration_history",resource:f,channel:"General"},{value:"report_agent_history",resource:a,channel:"Voice"},{value:"report_call_history",resource:b,channel:"Voice"},{value:"report_member_history",resource:d,channel:"Voice"},{value:"report_queue_history",resource:e,channel:"Voice"},{value:"voice_recordings",resource:j,channel:"Voice"},{value:"voice_voicemail_messages",resource:B,channel:"Voice"},{value:"report_square_history",resource:k,channel:"Voice"},{value:"report_square_details_history",resource:l,channel:"Voice"},{value:"report_tdial",resource:z,channel:"Voice"},{value:"report_chat_session_history",resource:g,channel:"Chat"},{value:"chat_rooms",resource:s,channel:"Chat"},{value:"chat_messages",resource:t,channel:"Chat"},{value:"report_mail_session_history",resource:c,channel:"Mail"},{value:"mail_rooms",resource:o,channel:"Mail"},{value:"mail_messages",resource:p,channel:"Mail"},{value:"report_fax_session_history",resource:n,channel:"Fax"},{value:"fax_rooms",resource:q,channel:"Fax"},{value:"fax_messages",resource:r,channel:"Fax"},{value:"report_sms_session_history",resource:h,channel:"Sms"},{value:"sms_rooms",resource:u,channel:"Sms"},{value:"sms_messages",resource:v,channel:"Sms"},{value:"report_openchannel_session_history",resource:y,channel:"Open Channel"},{value:"openchannel_rooms",resource:w,channel:"Open Channel"},{value:"openchannel_messages",resource:x,channel:"Open Channel"},{value:"user_has_voice_queues",resource:A,channel:"Voice"}];return{tables:C}}]),angular.module("xCallyShuttleApp").service("strategies",function(){return["beepall","roundrobin"]}),angular.module("xCallyShuttleApp").service("triggers",["VoiceQueue","ChatQueue","MailQueue","FaxQueue","SmsQueue","OpenChannelQueue","Route","MailAccount","SmsAccount","ChatWebsite","OpenChannelAccount",function(a,b,c,d,e,f,g,h,i,j,k){var l={voice:{conditions:[{name:"APPLICATION_QUEUE",value:"queue",type:"select",resource:a,resValue:"name",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_CALL_STATUS",value:"lastevent",type:"select",translate:!0,arr:[{name:"ringing",value:"called"},{name:"up",value:"connect"},{name:"hangup",value:"complete"},{name:"rejected",value:"rejected"},{name:"ringnoanswer",value:"agentringnoanswer"},{name:"abandoned",value:"abandoned"}],operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_OUTBOUND_ROUTE",value:"routeId",type:"select",resource:g,resValue:"id",resName:"exten",params:{type:"outbound"},operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]}],actions:[{name:"APPLICATION_CONTACT_MANAGER",value:"contactManager"},{name:"APPLICATION_INTEGRATIONS",value:"integration",propertyField:"select"},{name:"APPLICATION_MOTION_BAR",value:"motionbar",propertyField:"select"},{name:"APPLICATION_JSCRIPTY",value:"jscripty",propertyField:"select"},{name:"APPLICATION_URL_FORWARD",value:"urlForward"},{name:"APPLICATION_WEB_POPUP",value:"webPopup"}]},mail:{conditions:[{name:"APPLICATION_ACCOUNT",value:"accountId",type:"select",resource:h,resValue:"id",resName:"name",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_FROM",value:"from",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_TO",value:"to",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_CC",value:"cc",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_SUBJECT",value:"subject",type:"input",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"},{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_BODY",value:"text",type:"input",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"},{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]}],actions:[{name:"APPLICATION_TEMPLATE",value:"template"},{name:"APPLICATION_EMAIL",value:"email"},{name:"APPLICATION_EMAIL_FROM_ACCOUNT",value:"accountEmail"},{name:"APPLICATION_SMS",value:"accountSms"},{name:"APPLICATION_FORWARD",value:"forward"},{name:"APPLICATION_TAG",value:"tag"},{name:"APPLICATION_URL_FORWARD",value:"http"},{name:"APPLICATION_CLOSE",value:"close"}]},chat:{conditions:[{name:"APPLICATION_WEBSITE",value:"ChatWebsiteId",type:"select",resource:j,resValue:"id",resName:"name",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_NAME",value:"fullname",type:"input",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_EMAIL",value:"email",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]}],actions:[{name:"APPLICATION_EMAIL_FROM_ACCOUNT",value:"accountEmail"},{name:"APPLICATION_SMS",value:"accountSms"},{name:"APPLICATION_TEMPLATE",value:"accountTemplate"},{name:"APPLICATION_TAG",value:"tag"},{name:"APPLICATION_URL_FORWARD",value:"http"},{name:"APPLICATION_CLOSE",value:"close"}]},sms:{conditions:[{name:"APPLICATION_ACCOUNT",value:"SmsAccountId",type:"select",resource:i,resValue:"id",resName:"name",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_FROM",value:"from",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_TO",value:"to",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_BODY",value:"body",type:"input",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"},{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]}],actions:[{name:"APPLICATION_EMAIL_FROM_ACCOUNT",value:"accountEmail"},{name:"APPLICATION_SMS",value:"accountSms"},{name:"APPLICATION_TEMPLATE",value:"accountTemplate"},{name:"APPLICATION_TAG",value:"tag"},{name:"APPLICATION_URL_FORWARD",value:"http"},{name:"APPLICATION_CLOSE",value:"close"}]},fax:{conditions:[{name:"APPLICATION_FROM",value:"from",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_TO",value:"to",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]}],actions:[{name:"APPLICATION_EMAIL_FROM_ACCOUNT",value:"accountEmail"},{name:"APPLICATION_SMS",value:"accountSms"},{name:"APPLICATION_TEMPLATE",value:"accountTemplate"},{name:"APPLICATION_TAG",value:"tag"},{name:"APPLICATION_URL_FORWARD",value:"http"},{name:"APPLICATION_CLOSE",value:"close"}]},openchannel:{conditions:[{name:"APPLICATION_ACCOUNT",value:"OpenchannelAccountId",type:"select",resource:k,resValue:"id",resName:"name",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_FROM",value:"from",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_TO",value:"to",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_BODY",value:"body",type:"input",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"},{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]}],actions:[{name:"APPLICATION_EMAIL_FROM_ACCOUNT",value:"accountEmail"},{name:"APPLICATION_SMS",value:"accountSms"},{name:"APPLICATION_TEMPLATE",value:"accountTemplate"},{name:"APPLICATION_TAG",value:"tag"},{name:"APPLICATION_URL_FORWARD",value:"http"},{name:"APPLICATION_CLOSE",value:"close"}]}},m=["voice","mail","chat","sms","fax","openchannel"];return{services:l,channels:m}}]),angular.module("xCallyShuttleApp").service("variable",function(){var a=[{title:"Unique ID",name:"uniqueid",group:"voice_queue"},{title:"Caller Number",name:"calleridnum",group:"voice_queue"},{title:"Caller Name",name:"calleridname",group:"voice_queue"},{title:"Queue",name:"queue",group:"voice_queue"},{title:"Called Number",name:"destcalleridnum",group:"voice_queue"},{title:"Called Name",name:"destcalleridname",group:"voice_queue"},{title:"Hold Time",name:"holdtime",group:"voice_queue"},{title:"Talk Time",name:"talktime",group:"voice_queue"},{title:"Connected Time",name:"agentconnectAt",group:"voice_queue"},{title:"Called Time",name:"agentcalledAt",group:"voice_queue"},{title:"DNID",name:"destexten",group:"voice_queue"},{title:"Complete Time",name:"agentcompleteAt",group:"voice_queue"},{title:"No Answer Time",name:"agentringnoanswerAt",group:"voice_queue"},{title:"Recording URL", -name:"recordingURL",group:"voice_queue"},{title:"Unique ID",name:"uniqueid",group:"voice_outbound"},{title:"Caller Number",name:"calleridnum",group:"voice_outbound"},{title:"Caller Name",name:"calleridname",group:"voice_outbound"},{title:"Called Number",name:"destcalleridnum",group:"voice_outbound"},{title:"Called Name",name:"destcalleridname",group:"voice_outbound"},{title:"Start Time",name:"starttime",group:"voice_outbound"},{title:"Answer Time",name:"answertime",group:"voice_outbound"},{title:"Complete Time",name:"endtime",group:"voice_outbound"},{title:"Recording URL",name:"recordingURL",group:"voice_outbound"},{title:"Member Name",name:"membername",group:"voice_outbound"}];return a}),angular.module("xCallyShuttleApp").controller("SidebarController",["$scope","$rootScope","$resource","$location","Auth","Dashboard","Integration","xAlert","$stateParams","socket","$uibModal","Setting",function(a,b,c,d,e,f,g,h,i,j,k,l){a.Auth=e,a.$on("$includeContentLoaded",function(){Metronic.init(),Layout.initSidebar()}),a.getSidebarDashboards=function(){return f.get().$promise.then(function(c){b.dashboards=c.rows,j.syncUpdates("dashboard",b.dashboards),a.$watch("dashboards",function(a){a&&b.initTours()},!0)})["catch"](function(){h.show("Error loading your dashboards","danger")})},a.about=function(){k.open({animation:!0,size:"sm",templateUrl:"app/main/about.modal.html",controller:["$scope","$uibModalInstance",function(a,b){a.year=moment().year(),a.getInfo=function(){return l.get({controller:"info"}).$promise.then(function(b){a.info=b})["catch"](function(a){console.error(a)})},a.close=function(){b.dismiss("cancel")}}]})},a.getSidebarIntegrations=function(){return e.isAdmin()||e.isAgent()||b.userModules[19]?g.get().$promise.then(function(b){a.integrations=b.rows,j.syncUpdates("integration",a.integrations)})["catch"](function(a){h.error(a)}):void 0},a.$on("sidebar $destroy",function(){console.log("destroy"),j.unsyncUpdates("dashboard"),j.unsyncUpdates("integration")})}]),angular.module("xCallyShuttleApp").factory("socket",["$rootScope","$window","socketFactory","Auth",function(a,b,c,d){var e=d.getCurrentUser(),f=io("",{query:"token="+d.getToken()+"&userId="+e.id+"&name="+e.name+"&role="+(e.role||"agent")+"&source=browser",path:"/socket.io-client",multiplex:!1}),g=c({ioSocket:f});return a.$on("logout",function(){g&&(g.disconnect(!0),b.location.reload())}),{socket:g,syncUpdates:function(a,b,c){c=c||angular.noop,g.on(a+":save",function(a){var d=_.find(b,{id:a.id}),e=b.indexOf(d),f="created";d?(_.merge(b[e],a),f="updated"):b.unshift(a),c(f,a,b)}),g.on(a+":remove",function(a){var d="deleted";_.remove(b,{id:a.id}),c(d,a,b)})},unsyncUpdates:function(a){g.removeAllListeners(a+":save"),g.removeAllListeners(a+":update"),g.removeAllListeners(a+":remove")},syncUpdatesByAttributes:function(a,b,c,d){d=d||angular.noop,g.on(a+":save",function(a){var e=!0;if(_.forIn(b,function(b,c){return a[c]&&a[c]===b?!0:e=!1}),e){var f=_.find(c,{id:a.id}),g=c.indexOf(f),h="created";f?(_.merge(c[g],a),h="updated"):c.unshift(a),d(h,a,c)}}),g.on(a+":remove",function(a){var b="deleted";_.remove(c,{id:a.id}),d(b,a,c)})},syncMailMessageUpdates:function(a,b,c,d){d=d||angular.noop,g.on(a+":"+b+":save",function(a){var b=_.find(c,{id:a.id}),e=c.indexOf(b),f="created";b?(_.merge(c[e],a),f="updated"):c.unshift(a),d(f,a)}),g.on(a+":"+b+":remove",function(a){var b="deleted";_.remove(c,{id:a.id}),d(b,a,c)})},unsyncMailMessageUpdates:function(a,b){g.removeAllListeners(a+":"+b+":save"),g.removeAllListeners(a+":"+b+":remove")},syncFaxMessageUpdates:function(a,b,c,d){d=d||angular.noop,g.on(a+":"+b+":save",function(a){var b=_.find(c,{id:a.id}),e=c.indexOf(b),f="created";b?(_.merge(c[e],a),f="updated"):c.unshift(a),d(f,a)}),g.on(a+":"+b+":remove",function(a){var b="deleted";_.remove(c,{id:a.id}),d(b,a,c)})},unsyncFaxMessageUpdates:function(a,b){g.removeAllListeners(a+":"+b+":save"),g.removeAllListeners(a+":"+b+":remove")}}}]),function(a,b){angular.module("adf.widget.counter",["adf.provider"]).config(["dashboardProvider",function(a){a.widget("counter",{title:"Single Value",description:"Single Value for db results",templateUrl:"{widgetsPath}/counter/src/view.html",controller:"apiwidgetCounterViewCtrl",edit:{templateUrl:"{widgetsPath}/counter/src/edit.html",controller:"apiwidgetCounterEditCtrl"}})}]).service("apiServiceCounter",["Widget",function(a){return{get:function(b){return a.get({select:b.select,condition:encodeURIComponent(b.condition),table:b.report.replace("_history",""),controller:"counter"}).$promise.then(function(a){return a})["catch"](function(a){console.log(a)})}}}]).controller("apiwidgetCounterEditCtrl",["$scope","report",function(a,b){a.config.reportTables=b.tables,a.config.colors=[{name:"Grey",value:"grey"},{name:"Grey 2",value:"grey-cascade"},{name:"Grey 3",value:"grey-silver"},{name:"Grey 4",value:"grey-steel"},{name:"Grey 5",value:"grey-carrara"},{name:"Grey 6",value:"grey-gallery"},{name:"Blue",value:"blue"},{name:"Blue 2",value:"blue-hoki"},{name:"Blue 3",value:"blue-steel"},{name:"Blue 4",value:"blue-madison"},{name:"Blue 5",value:"blue-chambray"},{name:"Blue 6",value:"blue-ebonyclay"},{name:"Red",value:"red"},{name:"Red 2",value:"red-pink"},{name:"Red 3",value:"red-sunglo"},{name:"Red 4",value:"red-intense"},{name:"Red 5",value:"red-thunderbird"},{name:"Red 6",value:"red-flamingo"},{name:"Green",value:"green"},{name:"Green 2",value:"green-meadow"},{name:"Green 3",value:"green-seagreen"},{name:"Green 4",value:"green-turquoise"},{name:"Green 5",value:"green-haze"},{name:"Green 6",value:"green-jungle"},{name:"Purple",value:"purple"},{name:"Purple 2",value:"purple-plum"},{name:"Purple 3",value:"purple-medium"},{name:"Purple 4",value:"purple-studio"},{name:"Purple 5",value:"purple-wisteria"},{name:"Purple 6",value:"purple-seance"},{name:"Yellow",value:"yellow"},{name:"Yellow 2",value:"yellow-gold"},{name:"Yellow 3",value:"yellow-casablanca"},{name:"Yellow 4",value:"yellow-crusta"},{name:"Yellow 5",value:"yellow-lemon"},{name:"Yellow 6",value:"yellow-saffron"}],a.config.icons=[{name:"Talk bubbles",value:"fa-comments"},{name:"Bar Chart",value:"fa-bar-chart"},{name:"Shopping Cart",value:"fa-shopping-cart"},{name:"Globe",value:"fa-globe"},{name:"Volume Control Phone",value:"fa-volume-control-phone"},{name:"Comments",value:"fa-comments-o"},{name:"Commenting",value:"fa-commenting-o"},{name:"Coffee",value:"fa-coffee"},{name:"Clock",value:"fa-clock-o"},{name:"Envelope",value:"fa-envelope-o"},{name:"Hourglass",value:"fa-hourglass-half"},{name:"Percent",value:"fa-percent"}],a.config.select=a.config.select?a.config.select:"COUNT(*)",a.config.color=a.config.color?a.config.color:"blue-madison",a.config.icon=a.config.icon?a.config.icon:"fa-comments",a.config.link=a.config.link?a.config.link:"#",a.config.linkText=a.config.linkText?a.config.linkText:"VIEW MORE"}]).controller("apiwidgetCounterViewCtrl",["$scope","$interval","apiServiceCounter","socket",function(a,b,c,d){var e=a.$parent.model.wid;d.socket.on("widget_update:"+e,function(b){b&&b.length>1||_.keys(b[0]).length>1?(a.tooManyResults=!0,a.result=null):(a.tooManyResults=!1,null!==_.values(b[0])[0]?a.result=_.values(b[0])[0].toString():a.result="--")}),a.$on("$destroy",function(){d.socket.removeAllListeners("widget_update:"+e)})}]),angular.module("adf.widget.counter").run(["$templateCache",function(a){a.put("{widgetsPath}/counter/src/edit.html","<form role=form><div class=form-group><label for=select>Select</label> <input type=text class=form-control id=condition ng-model=config.select placeholder=Select></div><div class=form-group><label class=control-label>From</label><ui-select data-ng-model=config.report name=report theme=bootstrap><ui-select-match placeholder=From>{{'APPLICATION_'+$select.selected.value.toUpperCase() | translate}}</ui-select-match><ui-select-choices group-by=\"'channel'\" repeat=\"table.value as table in config.reportTables | filter: $select.search\"><div ng-bind-html=\"'APPLICATION_'+table.value.toUpperCase() | translate | highlight: $select.search\"></div></ui-select-choices></ui-select></div><div class=form-group><label for=condition>Where</label> <input type=text class=form-control id=condition ng-model=config.condition placeholder=Where></div><div class=form-group><label class=control-label>{{'APPLICATION_WIDGET_COLOR' | translate}}</label><ui-select data-ng-model=config.color name=color theme=bootstrap><ui-select-match placeholder=\"{{ 'APPLICATION_WIDGET_COLOR' | translate }}\"><div data-ng-class=\"'bg-'+$select.selected.value\"> </div></ui-select-match><ui-select-choices repeat=\"color.value as color in config.colors | filter: $select.search\"><div data-ng-class=\"'bg-'+color.value\"> </div></ui-select-choices></ui-select></div><div class=form-group><label class=control-label>{{'APPLICATION_WIDGET_ICON' | translate}}</label><ui-select data-ng-model=config.icon name=icon theme=bootstrap><ui-select-match placeholder=\"{{ 'APPLICATION_WIDGET_ICON' | translate }}\"><i class=fa ng-class=$select.selected.value></i></ui-select-match><ui-select-choices repeat=\"icon.value as icon in config.icons | filter: $select.search\"><i class=fa ng-class=icon.value></i></ui-select-choices></ui-select></div><div class=form-group><label for=condition>{{'APPLICATION_WIDGET_DETAILS' | translate}}</label> <input type=text class=form-control id=details ng-model=config.details maxlength=30 placeholder=\"{{'APPLICATION_WIDGET_DETAILS' | translate}}\"></div><div class=form-group><label for=condition>{{'APPLICATION_WIDGET_LINK' | translate}}</label> <input type=text class=form-control id=link ng-model=config.link placeholder=http://yourlink></div><div class=form-group><label for=condition>{{'APPLICATION_WIDGET_LINK_TEXT' | translate}}</label> <input type=text class=form-control id=linkText ng-model=config.linkText maxlength=30 placeholder=\"{{'APPLICATION_WIDGET_LINK_TEXT' | translate}}\"></div></form>"),a.put("{widgetsPath}/counter/src/view.html",'<div class=dashboard-stat ng-class=config.color ng-if=result><div class=visual><i class=fa ng-class=config.icon></i></div><div class=details><div class=number>{{result}}</div><div class=desc>{{config.details}}</div></div><a class=more href={{config.link}}>{{config.linkText}} <i class="m-icon-swapright m-icon-white"></i></a></div><div class="alert alert-danger" role=alert ng-if=!config.report><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_WIDGET_SELECT_REPORT\' | translate}}</div><div class="alert alert-danger" role=alert ng-if=tooManyResults><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_TOO_MANY_RESULTS\' | translate}}</div><div class="alert alert-danger" role=alert ng-if="!result && !tooManyResults"><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_QUERY_NOT_VALID\' | translate}}</div>')}])}(window),function(a,b){angular.module("adf.widget.pie-chart",["adf.provider"]).config(["dashboardProvider",function(a){a.widget("pie-chart",{title:"Pie-Chart",description:"Display a pie-chart starting from DB values",templateUrl:"{widgetsPath}/pie-chart/src/view.html",controller:"apiWidgetPieChartViewCtrl",edit:{templateUrl:"{widgetsPath}/pie-chart/src/edit.html",controller:"apiWidgetPieChartEditCtrl"}})}]).service("apiServicePieChart",["Widget",function(a){return{get:function(b){return a.get({condition:encodeURIComponent(b.condition),table:b.report.replace("_history",""),fields:b.fields,controller:"piechart"}).$promise.then(function(a){return a})["catch"](function(a){console.log(a)})}}}]).controller("apiWidgetPieChartEditCtrl",["$scope","report",function(a,b){function c(){return a.config.fields||(a.config.fields=[{column:"",alias:""}]),a.config.fields}a.config.reportTables=b.tables,a.config.fields=a.config.fields?a.config.fields:[{column:"",alias:""}],a.addField=function(){c().push({})},a.removeField=function(a){c().splice(a,1)}}]).controller("apiWidgetPieChartViewCtrl",["$scope","$interval","apiServicePieChart","socket",function(a,b,c,d){var e=a.$parent.model.wid;d.socket.on("widget_update:"+e,function(b){if(b&&1===b.length){a.labels=[],a.data=[];for(var c in b[0])a.labels.push(c),a.data.push(b[0][c])}else a.labels=[],a.data=[]}),a.$on("$destroy",function(){d.socket.removeAllListeners("widget_update:"+e)})}]),angular.module("adf.widget.pie-chart").run(["$templateCache",function(a){a.put("{widgetsPath}/pie-chart/src/edit.html",'<form role=form><div class=form-group><label class=control-label>{{\'APPLICATION_REPORT\' | translate}}</label><ui-select data-ng-model=config.report name=report theme=bootstrap><ui-select-match placeholder="{{ \'APPLICATION_REPORT\' | translate }}">{{\'APPLICATION_\'+$select.selected.value.toUpperCase() | translate}}</ui-select-match><ui-select-choices group-by="\'channel\'" repeat="table.value as table in config.reportTables | filter: $select.search"><div ng-bind-html="\'APPLICATION_\'+table.value.toUpperCase() | translate | highlight: $select.search"></div></ui-select-choices></ui-select></div><div><label class=control-label>{{\'APPLICATION_FIELDS\' | translate}}</label></div><div class=padding-bottom ng-repeat="field in config.fields"><div class=form-group><div class=input-group><input type=text class=form-control ng-model=field.column> <span class=input-group-addon>as</span> <input type=text class=form-control ng-model=field.alias> <span class=input-group-btn ng-if="config.fields.length>1"><button class="btn btn-danger" type=button data-ng-click=removeField($index)><i class="fa fa-times"></i> {{\'APPLICATION_REMOVE\' | translate}}</button></span></div></div></div><button type=button class="btn btn-sm green mbottom20" ng-click=addField()><i class="fa fa-plus"></i> {{\'APPLICATION_ADD_FIELD\' | translate}}</button><div class=form-group><label for=condition>{{\'APPLICATION_CONDITION\' | translate}}</label> <input type=text class=form-control id=condition ng-model=config.condition placeholder="{{\'APPLICATION_CONDITION\' | translate}}"></div></form>'),a.put("{widgetsPath}/pie-chart/src/view.html",'<div ng-if=labels.length ng-style=config.style><canvas id=doughnut class="chart chart-doughnut" chart-data=data chart-labels=labels legend=true></canvas></div><div class="alert alert-danger" role=alert ng-if=!config.report><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_WIDGET_SELECT_REPORT\' | translate}}</div><div class="alert alert-danger" role=alert ng-if=!labels.length><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_ENTER_VALID_CONDITION\' | translate}}</div><div class="alert alert-danger" role=alert ng-if=!labels.length><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_ENTER_ONE_VALID_METRIC_AND_CHECK_OTHER\' | translate}}</div>')}])}(window),function(a,b){angular.module("adf.widget.table",["adf.provider"]).value("apiServiceUrlTable","/api/widgets/table").config(["dashboardProvider",function(a){a.widget("table",{title:"Table",description:"Show tabbed results from db",templateUrl:"{widgetsPath}/table/src/view.html",controller:"apiWidgetTableViewCtrl",edit:{templateUrl:"{widgetsPath}/table/src/edit.html",controller:"apiWidgetTableEditCtrl"}})}]).service("apiServiceTable",["$q","$http","apiServiceUrlTable",function(a,b,c){return{get:function(d){var e=a.defer();return b.get(c,{params:{condition:encodeURIComponent(d.condition),table:d.report,fields:d.fields}}).success(function(a){a?e.resolve(a):e.reject()}).error(function(a){console.log(a),e.reject()}),e.promise}}}]).controller("apiWidgetTableEditCtrl",["$scope",function(a){function b(){return a.config.fields||(a.config.fields=[{column:"",alias:""}]),a.config.fields}a.config.reportTables=[{name:"Agents",value:"agent"},{name:"Calls",value:"call"},{name:"Dials",value:"dial"},{name:"Members",value:"member"},{name:"Queues",value:"queue"}],a.config.timeout=a.config.timeout?a.config.timeout:1,a.config.height=a.config.height?a.config.height:350,a.config.fields=a.config.fields?a.config.fields:[{column:"",alias:""}],a.addField=function(){b().push({})},a.removeField=function(a){b().splice(a,1)}}]).controller("apiWidgetTableViewCtrl",["$scope","$interval","apiServiceTable",function(a,b,c){a.config.timeout=a.config.timeout?a.config.timeout:1,a.config.height=a.config.height?a.config.height:350,a.config.style={"max-height":a.config.height+"px",overflow:"scroll"},a.tableApiCall=function(){a.config.condition&&a.config.report&&a.config.fields.length&&""!==a.config.fields[0].column&&""!==a.config.fields[0].alias&&c.get(a.config).then(function(b){a.results=b})},a.tableApiCall();var d=b(function(){a.tableApiCall()},1e3*parseInt(a.config.timeout));a.$on("$destroy",function(){b.cancel(d)})}]),angular.module("adf.widget.table").run(["$templateCache",function(a){a.put("{widgetsPath}/table/src/edit.html",'<form role=form><div class=form-group><label class=control-label>{{\'APPLICATION_REPORT\' | translate}}</label><ui-select data-ng-model=config.report name=report theme=bootstrap><ui-select-match placeholder="{{ \'APPLICATION_REPORT\' | translate }}">{{$select.selected.name}}</ui-select-match><ui-select-choices repeat="report.value as report in config.reportTables | filter: $select.search"><div ng-bind-html="report.name | highlight: $select.search"></div></ui-select-choices></ui-select></div><div><label class=control-label>{{\'APPLICATION_METRICS\' | translate}}</label></div><div class=padding-bottom ng-repeat="field in config.fields"><div class=form-group><div class=input-group><input type=text class=form-control ng-model=field.column> <span class=input-group-addon>as</span> <input type=text class=form-control ng-model=field.alias> <span class=input-group-btn ng-if="config.fields.length>1"><button class="btn btn-danger" type=button data-ng-click=removeField($index)><i class="fa fa-times"></i> {{\'APPLICATION_REMOVE\' | translate}}</button></span></div></div></div><button type=button class="btn btn-sm green mbottom20" ng-click=addField()><i class="fa fa-plus"></i> {{\'APPLICATION_ADD_FIELD\' | translate}}</button><div class=form-group><label for=condition>{{\'APPLICATION_CONDITION\' | translate}}</label> <input type=text class=form-control id=condition ng-model=config.condition placeholder="{{\'APPLICATION_CONDITION\' | translate}}"></div><div class=form-group><label for=condition>{{\'APPLICATION_REFRESH_TIMEOUT\' | translate}}</label> <input type=number class=form-control id=timeout ng-model=config.timeout placeholder="{{\'APPLICATION_REFRESH_TIMEOUT\' | translate}}" min=1></div><div class=form-group><label for=condition>{{\'APPLICATION_WIDGET_MAX_HEIGHT\' | translate}}</label> <input type=number class=form-control id=height ng-model=config.height placeholder="{{\'APPLICATION_WIDGET_MAX_HEIGHT\' | translate}}" min=350></div></form>'),a.put("{widgetsPath}/table/src/view.html",'<div ng-if=results ng-style=config.style><table st-table=results class="table table-striped table-bordered table-hover"><div class=table-responsive><thead><tr><th colspan={{config.fields.length}}><div class=row><div class=col-md-6></div><div class=col-md-6><div class="input-group input-medium pull-right"><input st-search placeholder="{{ \'APPLICATION_SEARCH\' | translate }}" class=form-control type=search> <span class=input-group-addon><i class="fa fa-search"></i></span></div></div></div></th></tr><tr><th ng-repeat="field in config.fields">{{field.alias}}</th></tr></thead><tbody><tr data-ng-repeat="result in results" class=animate-repeat><td ng-repeat="field in config.fields">{{result[field.alias]}}</td></tr><tr data-ng-hide=results.length><td colspan={{config.fields.length}} style=text-align:center;><i>{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</i></td></tr></tbody><tfoot><tr><td colspan={{config.fields.length}} class=text-center><div st-pagination class=pagination st-items-by-page=10 st-displayed-pages=3></div></td></tr></tfoot></div></table></div><div class="alert alert-danger" role=alert ng-if=!config.report><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_WIDGET_SELECT_REPORT\' | translate}}</div><div class="alert alert-danger" role=alert ng-if=!results><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_ENTER_VALID_CONDITION\' | translate}}</div><div class="alert alert-danger" role=alert ng-if=!results><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_ENTER_ONE_VALID_FIELD_AND_CHECK_OTHER\' | translate}}</div>')}])}(window);var Metronic=function(){var a,b=!1,c=!1,d=!1,e=!1,f=[],g="assets/",h="img/",i="plugins/",j="css/",k={blue:"#89C4F4",red:"#F3565D",green:"#1bbc9b",purple:"#9b59b6",grey:"#95a5a6",yellow:"#F8CB00"},l=function(){"rtl"===$("body").css("direction")&&(b=!0),c=!!navigator.userAgent.match(/MSIE 8.0/),d=!!navigator.userAgent.match(/MSIE 9.0/),e=!!navigator.userAgent.match(/MSIE 10.0/),e&&$("html").addClass("ie10"),(e||d||c)&&$("html").addClass("ie")},m=function(){for(var a=0;a<f.length;a++){var b=f[a];b.call()}},n=function(){var a;if(c){var b;$(window).resize(function(){b!=document.documentElement.clientHeight&&(a&&clearTimeout(a),a=setTimeout(function(){m()},50),b=document.documentElement.clientHeight)})}else $(window).resize(function(){a&&clearTimeout(a),a=setTimeout(function(){m()},50)})},o=function(){$("body").on("click",".portlet > .portlet-title > .tools > a.remove",function(a){a.preventDefault();var b=$(this).closest(".portlet");$("body").hasClass("page-portlet-fullscreen")&&$("body").removeClass("page-portlet-fullscreen"),b.find(".portlet-title .fullscreen").tooltip("destroy"),b.find(".portlet-title > .tools > .reload").tooltip("destroy"),b.find(".portlet-title > .tools > .remove").tooltip("destroy"),b.find(".portlet-title > .tools > .config").tooltip("destroy"),b.find(".portlet-title > .tools > .collapse, .portlet > .portlet-title > .tools > .expand").tooltip("destroy"),b.remove()}),$("body").on("click",".portlet > .portlet-title .fullscreen",function(a){a.preventDefault();var b=$(this).closest(".portlet");if(b.hasClass("portlet-fullscreen"))$(this).removeClass("on"),b.removeClass("portlet-fullscreen"),$("body").removeClass("page-portlet-fullscreen"),b.children(".portlet-body").css("height","auto");else{var c=Metronic.getViewPort().height-b.children(".portlet-title").outerHeight()-parseInt(b.children(".portlet-body").css("padding-top"))-parseInt(b.children(".portlet-body").css("padding-bottom"));$(this).addClass("on"),b.addClass("portlet-fullscreen"),$("body").addClass("page-portlet-fullscreen"),b.children(".portlet-body").css("height",c)}}),$("body").on("click",".portlet > .portlet-title > .tools > a.reload",function(a){a.preventDefault();var b=$(this).closest(".portlet").children(".portlet-body"),c=$(this).attr("data-url"),d=$(this).attr("data-error-display");c?(Metronic.blockUI({target:b,animate:!0,overlayColor:"none"}),$.ajax({type:"GET",cache:!1,url:c,dataType:"html",success:function(a){Metronic.unblockUI(b),b.html(a)},error:function(a,c,e){Metronic.unblockUI(b);var f="Error on reloading the content. Please check your connection and try again.";"toastr"==d&&toastr?toastr.error(f):"notific8"==d&&$.notific8?($.notific8("zindex",11500),$.notific8(f,{theme:"ruby",life:3e3})):alert(f)}})):(Metronic.blockUI({target:b,animate:!0,overlayColor:"none"}),window.setTimeout(function(){Metronic.unblockUI(b)},1e3))}),$('.portlet .portlet-title a.reload[data-load="true"]').click(),$("body").on("click",".portlet > .portlet-title > .tools > .collapse, .portlet .portlet-title > .tools > .expand",function(a){a.preventDefault()})},p=function(){if($().uniform){var a=$("input[type=checkbox]:not(.toggle, .make-switch, .icheck), input[type=radio]:not(.toggle, .star, .make-switch, .icheck)");a.size()>0&&a.each(function(){0===$(this).parents(".checker").size()&&$(this).show()})}},q=function(){$().iCheck&&$(".icheck").each(function(){var a=$(this).attr("data-checkbox")?$(this).attr("data-checkbox"):"icheckbox_minimal-grey",b=$(this).attr("data-radio")?$(this).attr("data-radio"):"iradio_minimal-grey";a.indexOf("_line")>-1||b.indexOf("_line")>-1?$(this).iCheck({checkboxClass:a,radioClass:b,insert:'<div class="icheck_line-icon"></div>'+$(this).attr("data-label")}):$(this).iCheck({checkboxClass:a,radioClass:b})})},r=function(){$().bootstrapSwitch&&$(".make-switch").bootstrapSwitch()},s=function(){$().confirmation&&$("[data-toggle=confirmation]").confirmation({container:"body",btnOkClass:"btn-xs btn-success",btnCancelClass:"btn-xs btn-danger"})},t=function(){$("body").on("shown.bs.collapse",".accordion.scrollable",function(a){Metronic.scrollTo($(a.target))})},u=function(){if(location.hash){var a=location.hash.substr(1);$('a[href="#'+a+'"]').parents(".tab-pane:hidden").each(function(){var a=$(this).attr("id");$('a[href="#'+a+'"]').click()}),$('a[href="#'+a+'"]').click()}},v=function(){$("body").on("hide.bs.modal",function(){$(".modal:visible").size()>1&&$("html").hasClass("modal-open")===!1?$("html").addClass("modal-open"):$(".modal:visible").size()<=1&&$("html").removeClass("modal-open")}),$("body").on("show.bs.modal",".modal",function(){$(this).hasClass("modal-scroll")&&$("body").addClass("modal-open-noscroll")}),$("body").on("hide.bs.modal",".modal",function(){$("body").removeClass("modal-open-noscroll")}),$("body").on("hidden.bs.modal",".modal:not(.modal-cached)",function(){$(this).removeData("bs.modal")})},w=function(){$(".tooltips").tooltip(),$(".portlet > .portlet-title .fullscreen").tooltip({container:"body",title:"Fullscreen"}),$(".portlet > .portlet-title > .tools > .reload").tooltip({container:"body",title:"Reload"}),$(".portlet > .portlet-title > .tools > .remove").tooltip({container:"body",title:"Remove"}),$(".portlet > .portlet-title > .tools > .config").tooltip({container:"body",title:"Settings"}),$(".portlet > .portlet-title > .tools > .collapse, .portlet > .portlet-title > .tools > .expand").tooltip({container:"body",title:"Collapse/Expand"})},x=function(){$("body").on("click",".dropdown-menu.hold-on-click",function(a){a.stopPropagation()})},y=function(){$("body").on("click",'[data-close="alert"]',function(a){$(this).parent(".alert").hide(),$(this).closest(".note").hide(),a.preventDefault()}),$("body").on("click",'[data-close="note"]',function(a){$(this).closest(".note").hide(),a.preventDefault()}),$("body").on("click",'[data-remove="note"]',function(a){$(this).closest(".note").remove(),a.preventDefault()})},z=function(){$('[data-hover="dropdown"]').not(".hover-initialized").each(function(){$(this).dropdownHover(),$(this).addClass("hover-initialized")})},A=function(){$(".popovers").popover(),$(document).on("click.bs.popover.data-api",function(b){a&&a.popover("hide")})},B=function(){Metronic.initSlimScroll(".scroller")},C=function(){jQuery.fancybox&&$(".fancybox-button").size()>0&&$(".fancybox-button").fancybox({groupAttr:"data-rel",prevEffect:"none",nextEffect:"none",closeBtn:!0,helpers:{title:{type:"inside"}}})},D=function(){(c||d)&&$("input[placeholder]:not(.placeholder-no-fix), textarea[placeholder]:not(.placeholder-no-fix)").each(function(){var a=$(this);""===a.val()&&""!==a.attr("placeholder")&&a.addClass("placeholder").val(a.attr("placeholder")),a.focus(function(){a.val()==a.attr("placeholder")&&a.val("")}),a.blur(function(){""!==a.val()&&a.val()!=a.attr("placeholder")||a.val(a.attr("placeholder"))})})},E=function(){$().select2&&$(".select2me").select2({placeholder:"Select"})};return{init:function(){l(),n(),p(),q(),r(),B(),C(),E(),o(),y(),x(),u(),w(),A(),t(),v(),s(),D()},initAjax:function(){p(),q(),r(),z(),B(),E(),C(),x(),w(),A(),t(),s()},initComponents:function(){this.initAjax()},setLastPopedPopover:function(b){a=b},addResizeHandler:function(a){f.push(a)},runResizeHandlers:function(){m()},scrollTo:function(a,b){var c=a&&a.size()>0?a.offset().top:0;a&&($("body").hasClass("page-header-fixed")&&(c-=$(".page-header").height()),c+=b?b:-1*a.height()),$("html,body").animate({scrollTop:c},"slow")},initSlimScroll:function(a){$(a).each(function(){if(!$(this).attr("data-initialized")){var a;a=$(this).attr("data-height")?$(this).attr("data-height"):$(this).css("height"),$(this).slimScroll({allowPageScroll:!0,size:"7px",color:$(this).attr("data-handle-color")?$(this).attr("data-handle-color"):"#bbb",wrapperClass:$(this).attr("data-wrapper-class")?$(this).attr("data-wrapper-class"):"slimScrollDiv",railColor:$(this).attr("data-rail-color")?$(this).attr("data-rail-color"):"#eaeaea",position:b?"left":"right",height:a,alwaysVisible:"1"==$(this).attr("data-always-visible"),railVisible:"1"==$(this).attr("data-rail-visible"),disableFadeOut:!0}),$(this).attr("data-initialized","1")}})},destroySlimScroll:function(a){$(a).each(function(){if("1"===$(this).attr("data-initialized")){$(this).removeAttr("data-initialized"),$(this).removeAttr("style");var a={};$(this).attr("data-handle-color")&&(a["data-handle-color"]=$(this).attr("data-handle-color")),$(this).attr("data-wrapper-class")&&(a["data-wrapper-class"]=$(this).attr("data-wrapper-class")),$(this).attr("data-rail-color")&&(a["data-rail-color"]=$(this).attr("data-rail-color")),$(this).attr("data-always-visible")&&(a["data-always-visible"]=$(this).attr("data-always-visible")),$(this).attr("data-rail-visible")&&(a["data-rail-visible"]=$(this).attr("data-rail-visible")),$(this).slimScroll({wrapperClass:$(this).attr("data-wrapper-class")?$(this).attr("data-wrapper-class"):"slimScrollDiv",destroy:!0});var b=$(this);$.each(a,function(a,c){b.attr(a,c)})}})},scrollTop:function(){Metronic.scrollTo()},blockUI:function(a){a=$.extend(!0,{},a);var b="";if(b=a.animate?'<div class="loading-message '+(a.boxed?"loading-message-boxed":"")+'"><div class="block-spinner-bar"><div class="bounce1"></div><div class="bounce2"></div><div class="bounce3"></div></div></div>':a.iconOnly?'<div class="loading-message '+(a.boxed?"loading-message-boxed":"")+'"><img src="'+this.getGlobalImgPath()+'loading-spinner-blue.gif" align=""></div>':a.textOnly?'<div class="loading-message '+(a.boxed?"loading-message-boxed":"")+'"><span> '+(a.message?a.message:"LOADING...")+"</span></div>":'<div class="loading-message '+(a.boxed?"loading-message-boxed":"")+'"><img src="'+this.getGlobalImgPath()+'loading-spinner-blue.gif" align=""><span> '+(a.message?a.message:"LOADING...")+"</span></div>",a.target){var c=$(a.target);c.height()<=$(window).height()&&(a.cenrerY=!0),c.block({message:b,baseZ:a.zIndex?a.zIndex:1e3,centerY:void 0!==a.cenrerY?a.cenrerY:!1,css:{top:"10%",border:"0",padding:"0",backgroundColor:"none"},overlayCSS:{backgroundColor:a.overlayColor?a.overlayColor:"#555",opacity:a.boxed?.05:.1,cursor:"wait"}})}else $.blockUI({message:b,baseZ:a.zIndex?a.zIndex:1e3,css:{border:"0",padding:"0",backgroundColor:"none"},overlayCSS:{backgroundColor:a.overlayColor?a.overlayColor:"#555",opacity:a.boxed?.05:.1,cursor:"wait"}})},unblockUI:function(a){a?$(a).unblock({onUnblock:function(){$(a).css("position",""),$(a).css("zoom","")}}):$.unblockUI()},startPageLoading:function(a){a&&a.animate?($(".page-spinner-bar").remove(),$("body").append('<div class="page-spinner-bar"><div class="bounce1"></div><div class="bounce2"></div><div class="bounce3"></div></div>')):($(".page-loading").remove(),$("body").append('<div class="page-loading"><img src="'+this.getGlobalImgPath()+'loading-spinner-blue.gif"/> <span>'+(a&&a.message?a.message:"Loading...")+"</span></div>"))},stopPageLoading:function(){ -$(".page-loading, .page-spinner-bar").remove()},alert:function(a){a=$.extend(!0,{container:"",place:"append",type:"success",message:"",close:!0,reset:!0,focus:!0,closeInSeconds:0,icon:""},a);var b=Metronic.getUniqueID("Metronic_alert"),c='<div id="'+b+'" class="Metronic-alerts alert alert-'+a.type+' fade in">'+(a.close?'<button type="button" class="close" data-dismiss="alert" aria-hidden="true"></button>':"")+(""!==a.icon?'<i class="fa-lg fa fa-'+a.icon+'"></i> ':"")+a.message+"</div>";return a.reset&&$(".Metronic-alerts").remove(),a.container?"append"==a.place?$(a.container).append(c):$(a.container).prepend(c):$("body").hasClass("page-container-bg-solid")?$(".page-title").after(c):$(".page-bar").size()>0?$(".page-bar").after(c):$(".page-breadcrumb").after(c),a.focus&&Metronic.scrollTo($("#"+b)),a.closeInSeconds>0&&setTimeout(function(){$("#"+b).remove()},1e3*a.closeInSeconds),b},initUniform:function(a){a?$(a).each(function(){0===$(this).parents(".checker").size()&&($(this).show(),$(this).uniform())}):p()},updateUniform:function(a){$.uniform.update(a)},initFancybox:function(){C()},getActualVal:function(a){return a=$(a),a.val()===a.attr("placeholder")?"":a.val()},getURLParameter:function(a){var b,c,d=window.location.search.substring(1),e=d.split("&");for(b=0;b<e.length;b++)if(c=e[b].split("="),c[0]==a)return unescape(c[1]);return null},isTouchDevice:function(){try{return document.createEvent("TouchEvent"),!0}catch(a){return!1}},getViewPort:function(){var a=window,b="inner";return"innerWidth"in window||(b="client",a=document.documentElement||document.body),{width:a[b+"Width"],height:a[b+"Height"]}},getUniqueID:function(a){return"prefix_"+Math.floor(Math.random()*(new Date).getTime())},isIE8:function(){return c},isIE9:function(){return d},isRTL:function(){return b},isAngularJsApp:function(){return"undefined"!=typeof angular},getAssetsPath:function(){return g},setAssetsPath:function(a){g=a},setGlobalImgPath:function(a){h=a},getGlobalImgPath:function(){return g+h},setGlobalPluginsPath:function(a){i=a},getGlobalPluginsPath:function(){return g+i},getGlobalCssPath:function(){return g+j},getBrandColor:function(a){return k[a]?k[a]:""},getResponsiveBreakpoint:function(a){var b={xs:480,sm:768,md:900,lg:1200};return b[a]?b[a]:0}}}(),Layout=function(){var a="img/",b="css/",c=Metronic.getResponsiveBreakpoint("md"),d=function(){var a,b=$(".page-content"),d=$(".page-sidebar"),e=$("body");if(e.hasClass("page-footer-fixed")===!0&&e.hasClass("page-sidebar-fixed")===!1){var f=Metronic.getViewPort().height-$(".page-footer").outerHeight()-$(".page-header").outerHeight();b.height()<f&&b.attr("style","min-height:"+f+"px")}else{if(e.hasClass("page-sidebar-fixed"))a=g(),e.hasClass("page-footer-fixed")===!1&&(a-=$(".page-footer").outerHeight());else{var h=$(".page-header").outerHeight(),i=$(".page-footer").outerHeight();a=Metronic.getViewPort().width<c?Metronic.getViewPort().height-h-i:d.height()+20,a+h+i<=Metronic.getViewPort().height&&(a=Metronic.getViewPort().height-h-i)}b.attr("style","min-height:"+a+"px")}},e=function(a,b){var d=location.hash.toLowerCase(),e=$(".page-sidebar-menu");if("click"===a||"set"===a?b=$(b):"match"===a&&e.find("li > a").each(function(){var a=$(this).attr("href").toLowerCase();return a.length>1&&d.substr(1,a.length-1)==a.substr(1)?void(b=$(this)):void 0}),b&&0!=b.size()&&"javascript:;"!==b.attr("href").toLowerCase()&&"#"!==b.attr("href").toLowerCase()){parseInt(e.data("slide-speed")),e.data("keep-expanded");e.find("li.active").removeClass("active"),e.find("li > a > .selected").remove(),e.hasClass("page-sidebar-menu-hover-submenu")===!1?e.find("li.open").each(function(){0===$(this).children(".sub-menu").size()&&($(this).removeClass("open"),$(this).find("> a > .arrow.open").removeClass("open"))}):e.find("li.open").removeClass("open"),b.parents("li").each(function(){$(this).addClass("active"),$(this).find("> a > span.arrow").addClass("open"),1===$(this).parent("ul.page-sidebar-menu").size()&&$(this).find("> a").append('<span class="selected"></span>'),1===$(this).children("ul.sub-menu").size()&&$(this).addClass("open")}),"click"===a&&Metronic.getViewPort().width<c&&$(".page-sidebar").hasClass("in")&&$(".page-header .responsive-toggler").click()}},f=function(){jQuery(".page-sidebar").on("click","li > a",function(a){var b=$(this).next().hasClass("sub-menu");if(!(Metronic.getViewPort().width>=c&&1===$(this).parents(".page-sidebar-menu-hover-submenu").size())){if(b===!1)return void(Metronic.getViewPort().width<c&&$(".page-sidebar").hasClass("in")&&$(".page-header .responsive-toggler").click());if(!$(this).next().hasClass("sub-menu always-open")){var e=$(this).parent().parent(),f=$(this),g=$(".page-sidebar-menu"),h=jQuery(this).next(),i=g.data("auto-scroll"),j=parseInt(g.data("slide-speed")),k=g.data("keep-expanded");k!==!0&&(e.children("li.open").children("a").children(".arrow").removeClass("open"),e.children("li.open").children(".sub-menu:not(.always-open)").slideUp(j),e.children("li.open").removeClass("open"));var l=-200;h.is(":visible")?(jQuery(".arrow",jQuery(this)).removeClass("open"),jQuery(this).parent().removeClass("open"),h.slideUp(j,function(){i===!0&&$("body").hasClass("page-sidebar-closed")===!1&&($("body").hasClass("page-sidebar-fixed")?g.slimScroll({scrollTo:f.position().top}):Metronic.scrollTo(f,l)),d()})):b&&(jQuery(".arrow",jQuery(this)).addClass("open"),jQuery(this).parent().addClass("open"),h.slideDown(j,function(){i===!0&&$("body").hasClass("page-sidebar-closed")===!1&&($("body").hasClass("page-sidebar-fixed")?g.slimScroll({scrollTo:f.position().top}):Metronic.scrollTo(f,l)),d()})),a.preventDefault()}}}),jQuery(".page-sidebar").on("click"," li > a.ajaxify",function(a){a.preventDefault(),Metronic.scrollTop();var b=$(this).attr("href"),d=jQuery(".page-sidebar ul"),e=($(".page-content"),$(".page-content .page-content-body"));d.children("li.active").removeClass("active"),d.children("arrow.open").removeClass("open"),$(this).parents("li").each(function(){$(this).addClass("active"),$(this).children("a > span.arrow").addClass("open")}),$(this).parents("li").addClass("active"),Metronic.getViewPort().width<c&&$(".page-sidebar").hasClass("in")&&$(".page-header .responsive-toggler").click(),Metronic.startPageLoading();var f=$(this);$.ajax({type:"GET",cache:!1,url:b,dataType:"html",success:function(a){0===f.parents("li.open").size()&&$(".page-sidebar-menu > li.open > a").click(),Metronic.stopPageLoading(),e.html(a),Layout.fixContentHeight(),Metronic.initAjax()},error:function(a,b,c){Metronic.stopPageLoading(),e.html("<h4>Could not load the requested content.</h4>")}})}),jQuery(".page-content").on("click",".ajaxify",function(a){a.preventDefault(),Metronic.scrollTop();var b=$(this).attr("href"),d=($(".page-content"),$(".page-content .page-content-body"));Metronic.startPageLoading(),Metronic.getViewPort().width<c&&$(".page-sidebar").hasClass("in")&&$(".page-header .responsive-toggler").click(),$.ajax({type:"GET",cache:!1,url:b,dataType:"html",success:function(a){Metronic.stopPageLoading(),d.html(a),Layout.fixContentHeight(),Metronic.initAjax()},error:function(a,b,c){d.html("<h4>Could not load the requested content.</h4>"),Metronic.stopPageLoading()}})}),i(),$(".page-sidebar").on("click",".sidebar-search .remove",function(a){a.preventDefault(),$(".sidebar-search").removeClass("open")}),$(".page-sidebar .sidebar-search").on("keypress","input.form-control",function(a){return 13==a.which?($(".sidebar-search").submit(),!1):void 0}),0!==$(".sidebar-search").size()&&($(".sidebar-search .input-group").on("click",function(a){a.stopPropagation()}),$("body").on("click",function(){$(".sidebar-search").hasClass("open")&&$(".sidebar-search").removeClass("open")}))},g=function(){var a=Metronic.getViewPort().height-$(".page-header").outerHeight();return $("body").hasClass("page-footer-fixed")&&(a-=$(".page-footer").outerHeight()),a},h=function(){var a=$(".page-sidebar-menu");return Metronic.destroySlimScroll(a),0===$(".page-sidebar-fixed").size()?void d():void(Metronic.getViewPort().width>=c&&(a.attr("data-height",g()),Metronic.initSlimScroll(a),d()))},i=function(){var a=$("body");a.hasClass("page-sidebar-fixed")&&$(".page-sidebar").on("mouseenter",function(){a.hasClass("page-sidebar-closed")&&$(this).find(".page-sidebar-menu").removeClass("page-sidebar-menu-closed")}).on("mouseleave",function(){a.hasClass("page-sidebar-closed")&&$(this).find(".page-sidebar-menu").addClass("page-sidebar-menu-closed")})},j=function(){$("body");$.cookie&&"1"===$.cookie("sidebar_closed")&&Metronic.getViewPort().width>=c?($("body").addClass("page-sidebar-closed"),$(".page-sidebar-menu").addClass("page-sidebar-menu-closed")):$.cookie&&$.cookie("sidebar_closed","0")},k=function(){$(".page-header").on("click",'.hor-menu a[data-toggle="tab"]',function(a){a.preventDefault();var b=$(".hor-menu .nav"),c=b.find("li.current");$("li.active",c).removeClass("active"),$(".selected",c).remove();var d=$(this).parents("li").last();d.addClass("current"),d.find("a:first").append('<span class="selected"></span>')}),$(".page-header").on("click",".search-form",function(a){$(this).addClass("open"),$(this).find(".form-control").focus(),$(".page-header .search-form .form-control").on("blur",function(a){$(this).closest(".search-form").removeClass("open"),$(this).unbind("blur")})}),$(".page-header").on("keypress",".hor-menu .search-form .form-control",function(a){return 13==a.which?($(this).closest(".search-form").submit(),!1):void 0}),$(".page-header").on("mousedown",".search-form.open .submit",function(a){a.preventDefault(),a.stopPropagation(),$(this).closest(".search-form").submit()}),$('[data-hover="megamenu-dropdown"]').not(".hover-initialized").each(function(){$(this).dropdownHover(),$(this).addClass("hover-initialized")}),$(document).on("click",".mega-menu-dropdown .dropdown-menu",function(a){a.stopPropagation()})},l=function(){$("body").on("shown.bs.tab",'a[data-toggle="tab"]',function(){d()})},m=function(){var a=300,b=500;navigator.userAgent.match(/iPhone|iPad|iPod/i)?$(window).bind("touchend touchcancel touchleave",function(c){$(this).scrollTop()>a?$(".scroll-to-top").fadeIn(b):$(".scroll-to-top").fadeOut(b)}):$(window).scroll(function(){$(this).scrollTop()>a?$(".scroll-to-top").fadeIn(b):$(".scroll-to-top").fadeOut(b)}),$(".scroll-to-top").click(function(a){return a.preventDefault(),$("html, body").animate({scrollTop:0},b),!1})},n=function(){var a,b=$(".full-height-content");if(a=Metronic.getViewPort().height-$(".page-header").outerHeight(!0)-$(".page-footer").outerHeight(!0)-$(".page-title").outerHeight(!0)-$(".page-bar").outerHeight(!0),b.hasClass("portlet")){var d=b.find(".portlet-body");if(Metronic.getViewPort().width<c)return void Metronic.destroySlimScroll(d.find(".full-height-content-body"));a=a-b.find(".portlet-title").outerHeight(!0)-parseInt(b.find(".portlet-body").css("padding-top"))-parseInt(b.find(".portlet-body").css("padding-bottom"))-2,b.hasClass("full-height-content-scrollable")?(a-=35,d.find(".full-height-content-body").css("height",a),Metronic.initSlimScroll(d.find(".full-height-content-body"))):d.css("min-height",a)}else{if(Metronic.getViewPort().width<c)return void Metronic.destroySlimScroll(b.find(".full-height-content-body"));b.hasClass("full-height-content-scrollable")?(a-=35,b.find(".full-height-content-body").css("height",a),Metronic.initSlimScroll(b.find(".full-height-content-body"))):b.css("min-height",a)}};return{initHeader:function(){k()},setSidebarMenuActiveLink:function(a,b){e(a,b)},initSidebar:function(){h(),f(),j(),Metronic.isAngularJsApp()&&e("match"),Metronic.addResizeHandler(h)},initContent:function(){n(),l(),Metronic.addResizeHandler(d),Metronic.addResizeHandler(n)},initFooter:function(){m()},init:function(){this.initHeader(),this.initSidebar(),this.initContent(),this.initFooter()},fixContentHeight:function(){d()},initFixedSidebarHoverEffect:function(){i()},initFixedSidebar:function(){h()},getLayoutImgPath:function(){return Metronic.getAssetsPath()+a},getLayoutCssPath:function(){return Metronic.getAssetsPath()+b}}}();angular.module("xCallyShuttleApp").run(["$templateCache",function(a){a.put("app/adminreset/adminreset.html",'<!-- BEGIN LOGO -->\n<div class="logo" data-ng-init="getInfo()">\n <a href="index.html">\n <img ng-src="api/settings/logo/login" alt="logo" class="custom-login-logo" onError="this.onerror=null"/>\n </a>\n</div>\n<!-- END LOGO -->\n<!-- BEGIN RESET -->\n<div class="content">\n <!-- BEGIN RESET FORM -->\n <form name="resetForm" data-ng-submit="resetForm.$valid && updatePassword()" novalidate>\n <h3>{{\'APPLICATION_RESET_PASSWORD\' | translate}}</h3>\n <p>\n {{\'MESSAGE_FIRST_LOGIN_PASSWORD_RESET\' | translate}}\n </p>\n <div class="form-group" data-ng-class="{\'has-error\': resetForm.$submitted && resetForm.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_NEW_PASSWORD\' | translate}}</label>\n <div class="input-icon">\n <i class="icon-key"></i>\n <input class="form-control form-control-solid placeholder-no-fix" type="password" placeholder="{{\'APPLICATION_NEW_PASSWORD\' | translate}}" name="password" ng-model="user.password" data-ng-pattern="setting.securePassword ? settings.patternPassword : settings.patternPasswordLight" required/>\n </div>\n <span class="help-block">\n {{setting.securePassword ? \'MESSAGE_PASSWORD_FORMAT\' : \'MESSAGE_PASSWORD_LIGHT_FORMAT\' | translate}}\n </span>\n <span data-ng-show="resetForm.$submitted && resetForm.password.$invalid" class="help-block">{{\'MESSAGE_REQUIRED_FIELD\' | translate}}</span>\n <span data-ng-show="(resetForm.password.$touched || resetForm.$submitted) && resetForm.password.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': resetForm.$submitted && resetForm.rePassword.$invalid}">\n <label class="control-label">{{\'APPLICATION_RE_TYPE_NEW_PASSWORD\' | translate}}</label>\n <div class="input-icon">\n <i class="icon-key"></i>\n <input class="form-control form-control-solid placeholder-no-fix" type="password" placeholder="{{\'APPLICATION_RE_TYPE_NEW_PASSWORD\' | translate}}" name="rePassword" ng-model="user.rePassword" nx-equal="user.password" required/>\n </div>\n <span data-ng-show="resetForm.$submitted && resetForm.rePassword.$invalid" class="help-block">{{\'MESSAGE_REQUIRED_FIELD\' | translate}}</span>\n <span data-ng-show="(resetForm.password.$touched || resetForm.$submitted) && resetForm.$error.nxEqual" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_PASSWORD\' | translate}}.\n </span>\n </div>\n <div class="form-actions">\n <button type="submit" class="btn btn-success uppercase">{{\'APPLICATION_SUBMIT\' | translate}}</button>\n </div>\n </form>\n <!-- END RESET FORM-->\n <div class="login-options">\n <h4>{{\'APPLICATION_FOLLOW_US\' | translate}}</h4>\n <ul class="social-icons">\n <li>\n <a class="social-icon-color facebook" data-original-title="facebook" href="https://www.facebook.com/xenialab"></a>\n </li>\n <li>\n <a class="social-icon-color twitter" data-original-title="Twitter" href="https://twitter.com/xenialab"></a>\n </li>\n <li>\n <a class="social-icon-color googleplus" data-original-title="Goole Plus" href="#"></a>\n </li>\n <li>\n <a class="social-icon-color linkedin" data-original-title="Linkedin" href="#"></a>\n </li>\n </ul>\n </div>\n</div>\n<div class="copyright">\n xCALLY Motion v. {{info.version}} | 2016 - {{year + 1}} © Powered by Xenialab <ng-bind-html data-ng-if="license.custom && !settings.defaultFooterWhiteLabel && settings.footerWhiteLabel" ng-bind-html="\'| \'+settings.footerWhiteLabel"></ng-bind-html>\n</div>\n<!-- END RESET -->\n'),a.put("app/analytic/extracted/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-file-pdf-o"></i>\n <a href="/analytics/extracted/list">{{ \'APPLICATION_EXTRACTED_REPORTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="fa fa-file-pdf-o font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_EXTRACTED_REPORTS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> -->\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n\n<!-- END PAGE CONTENT-->\n'),a.put("app/analytic/metric/list/create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_METRIC\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="forms.metric" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.metric.name.$touched || forms.metric.$submitted) && forms.metric.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(forms.metric.name.$touched || forms.metric.$submitted) && forms.metric.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START TABLE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.metric.table.$touched || forms.metric.$submitted) && forms.metric.table.$invalid}">\n <label class="control-label">{{\'APPLICATION_TABLE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.table" name="table" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{\'APPLICATION_\'+$select.selected.value.toUpperCase() | translate}}</ui-select-match>\n <ui-select-choices repeat="table.value as table in tables | filter: $select.search">\n <div ng-bind-html="\'APPLICATION_\'+table.value.toUpperCase() | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.metric.table.$touched || forms.metric.$submitted) && forms.metric.table.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TABLE-->\n\n <!-- START METRIC -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.metric.metric.$touched || forms.metric.$submitted) && forms.metric.metric.$invalid}">\n <label class="control-label">{{\'APPLICATION_METRIC\' | translate}}<span class="required" aria-required="true">*</span></label>\n <textarea type="text" name="metric" placeholder="{{\'APPLICATION_METRIC\' | translate}}" class="form-control" data-ng-model="item.metric" required/></textarea>\n <span data-ng-show="(forms.metric.metric.$touched || forms.metric.$submitted) && forms.metric.metric.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END METRIC -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="forms.metric.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/analytic/metric/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-calculator"></i>\n <a href="/analytics/metrics/list">{{ \'APPLICATION_METRICS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <!-- <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-calculator font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_DEFAULT_METRICS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n </div>\n </div> -->\n <!-- <div class="portlet-body"> -->\n <!-- START TABLE -->\n <!-- <div ui-grid="gridOptionsDefault" data-ng-if="gridOptionsDefault" name="gridOptionsDefault" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptionsDefault.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div> -->\n <!-- END TABLE -->\n <!-- </div> -->\n <div class="portlet-title"><!-- removed margin-top20 class from title when commented the default metrics section-->\n <div class="caption font-green-sharp">\n <i class="icon-calculator font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_METRICS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <button class="btn green-jungle " ng-click="create()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_METRIC\' | translate }}\n </button>\n </div>\n <!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> -->\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" data-ng-if="gridOptions" name="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/analytic/metric/list/view.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_METRIC\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="forms.metric" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.metric.name.$touched || forms.metric.$submitted) && forms.metric.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}</label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required readonly/>\n <span data-ng-show="(forms.metric.name.$touched || forms.metric.$submitted) && forms.metric.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START TABLE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.metric.table.$touched || forms.metric.$submitted) && forms.metric.table.$invalid}">\n <label class="control-label">{{\'APPLICATION_TABLE\' | translate}}</label>\n <ui-select data-ng-model="item.table" name="table" theme="bootstrap" required data-ng-disabled="true">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{\'APPLICATION_\'+$select.selected.value.toUpperCase() | translate}}</ui-select-match>\n <ui-select-choices repeat="table.value as table in tables | filter: $select.search">\n <div ng-bind-html="\'APPLICATION_\'+table.value.toUpperCase() | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.metric.table.$touched || forms.metric.$submitted) && forms.metric.table.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TABLE-->\n\n <!-- START METRIC -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.metric.metric.$touched || forms.metric.$submitted) && forms.metric.metric.$invalid}">\n <label class="control-label">{{\'APPLICATION_METRIC\' | translate}}</label>\n <textarea type="text" name="metric" placeholder="{{\'APPLICATION_METRIC\' | translate}}" class="form-control" data-ng-model="item.metric" required readonly/></textarea>\n <span data-ng-show="(forms.metric.metric.$touched || forms.metric.$submitted) && forms.metric.metric.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END METRIC -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description" readonly></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/analytic/metric/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getMetric()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-eye"></i>\n <a href="/analytics/metrics/list">{{ \'APPLICATION_METRICS\' | translate }}</a>\n <i data-ng-show="metric" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="metric">\n <a href="#">{{metric.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/metric.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{metric.name}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.analytics.metrics.view.settings\')}">\n <a data-ng-href="/analytics/metrics/view/{{metric.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/analytic/metric/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_METRIC\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateMetric()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="metric.name" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START TABLE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.table.$touched || forms.general.$submitted) && forms.general.table.$invalid}">\n <label class="control-label">{{\'APPLICATION_TABLE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="metric.table" name="table" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{\'APPLICATION_\'+$select.selected.value.toUpperCase() | translate}}</ui-select-match>\n <ui-select-choices repeat="table.value as table in tables | filter: $select.search">\n <div ng-bind-html="\'APPLICATION_\'+table.value.toUpperCase() | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.table.$touched || forms.general.$submitted) && forms.general.table.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TABLE-->\n\n <!-- START METRIC -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.metric.$touched || forms.general.$submitted) && forms.general.metric.$invalid}">\n <label class="control-label">{{\'APPLICATION_METRIC\' | translate}}<span class="required" aria-required="true">*</span></label>\n <textarea type="text" name="metric" placeholder="{{\'APPLICATION_METRIC\' | translate}}" class="form-control" data-ng-model="metric.metric" required/></textarea>\n <span data-ng-show="(forms.general.metric.$touched || forms.general.$submitted) && forms.general.metric.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END METRIC -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="metric.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'), -a.put("app/analytic/report/list/copy.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_COPY_REPORT\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp" style="padding-left:10px;">\n <i class="icon-folder font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_COPY_TO\' | translate }} </span>\n </div>\n </div>\n <div class="portlet-body">\n <div js-tree="customTreeConfig" ng-model="customTreeData" should-apply="ac()" tree="customTreeInstance" tree-events="ready:initCustomScopeTree;"></div>\n </div>\n </div>\n <div class="has-error">\n <span data-ng-show="showAlert" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_SELECT_FOLDER\' | translate}}.\n </span>\n </div>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/analytic/report/list/create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_REPORT\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="forms.report" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.report.name.$touched || forms.report.$submitted) && forms.report.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(forms.report.name.$touched || forms.report.$submitted) && forms.report.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.report.name.$touched || forms.report.$submitted) && forms.report.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_PATH\' | translate}}<span class="required" aria-required="true"></span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_PATH\' | translate}}" class="form-control" data-ng-model="path" disabled/>\n <span data-ng-show="(forms.report.name.$touched || forms.report.$submitted) && forms.report.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="forms.report.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/analytic/report/list/deleteNode.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_DELETE_FOLDER\' | translate }}</h3>\n</div>\n<div class="modal-body">\n<p>\n {{\'MESSAGE_DELETE_NODE\' | translate}} : <b>{{node}}</b>?\n</p>\n<p>\n {{\'MESSAGE_ALL_REPORTS_WILL_BE_DELETED\' | translate}}\n</p>\n</div>\n<div class="modal-footer">\n <button class="btn btn-danger" type="button" ng-click="ok()" ng-disabled="forms.report.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/analytic/report/list/extract.modal.html",'<div class="modal-header">\n <button type="button" ng-click="cancel()" class="close">×</button>\n <h4 class="modal-title">{{ \'APPLICATION_EXTRACT_REPORT\' | translate }}</h4>\n</div>\n<div class="modal-body" style="text-align:center;">\n <form name="forms.report" class="form-inline mbottom20" novalidate>\n <div class="form-group" data-ng-class="{\'hidden\':daily}">\n <label class="control-label">{{\'APPLICATION_DATE_RANGE\' | translate}}</label>\n <input type="daterange" name="dates" ranges="ranges" style="min-width:190px;" enabletimepicker="timepicker" placeholder="{{\'APPLICATION_DATE_RANGE\' | translate}}" class="form-control" data-ng-model="dates" max-date="{{maxdate}}" data-ng-required="!daily" data-ng-disabled="daily" data-ng-class="{\'disabled-invisible\':daily}" style="cursor:pointer;" readonly/>\n </div>\n <div class="form-group" data-ng-if="daily">\n <label class="control-label">{{\'APPLICATION_FROM\' | translate}}</label>\n </div>\n <div class="form-group" data-ng-if="daily">\n <uib-timepicker ng-model="dailyTime.start" ng-change="changed()" hour-step="1" minute-step="1" show-meridian="false"></uib-timepicker>\n </div>\n <div class="form-group" data-ng-if="daily">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}}</label>\n </div>\n <div class="form-group" data-ng-if="daily">\n <uib-timepicker ng-model="dailyTime.end" ng-change="changed()" hour-step="1" minute-step="1" show-meridian="false"></uib-timepicker>\n </div>\n <!-- START STATUS -->\n <div class="form-group">\n <input\n bs-switch\n class="form-control"\n ng-model="daily"\n type="checkbox"\n name="auth"\n switch-active="{{ dailySwitch.isActive }}"\n switch-on-text="{{ dailySwitch.onText }}"\n switch-off-text="{{ dailySwitch.offText }}"\n switch-on-color="{{ dailySwitch.onColor }}"\n switch-off-color="{{ dailySwitch.offColor }}"\n switch-animate="{{ dailySwitch.animate }}"\n switch-size="{{ dailySwitch.size }}"\n switch-label="{{ dailySwitch.label }}"\n switch-icon="{{ dailySwitch.icon }}"\n switch-radio-off="{{ dailySwitch.radioOff }}"\n switch-label-width="{{ dailySwitch.labelWidth }}"\n switch-handle-width="{{ dailySwitch.handleWidth }}">\n </div>\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn default green-jungle" type="button" data-ng-click="extract(\'csv\')"><i class="fa fa-file-excel-o"></i> {{ \'APPLICATION_SAVE_AS_CSV\' | translate }}</button>\n <button class="btn default red-intense" type="button" data-ng-click="extract(\'pdf\')"><i class="fa fa-file-pdf-o"></i> {{ \'APPLICATION_SAVE_AS_PDF\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/analytic/report/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getTrees()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-book-open"></i>\n <a href="/analytics/reports/list">{{ \'APPLICATION_REPORTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n <div class="col-fixed">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp" style="padding-left:10px;">\n <i class="icon-folder font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_FOLDERS\' | translate }} </span>\n </div>\n <div class="inputs">\n <div class="portlet-input input-inline input-small">\n <div class="input-icon right">\n <i class="icon-magnifier"></i>\n <input type="text" data-ng-model="searchField" data-ng-change="searchTrees()" class="form-control input-circle" placeholder="search...">\n </div>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <div js-tree="defaultTreeConfig" ng-model="defaultTreeData" should-apply="ac()" tree="defaultTreeInstance" tree-events="ready:initDefaultScopeTree;select_node:selectDefaultNode;"></div>\n <div js-tree="customTreeConfig" ng-model="customTreeData" should-apply="ac()" tree="customTreeInstance" tree-events="ready:initCustomScopeTree;select_node:selectCustomNode;rename_node:updateCustomTree;delete_node:updateCustomTree;move_node:updateCustomTree;create_node:updateCustomTree;"></div>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n <div class="row tree-row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-book-open font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_REPORTS\' | translate }}<span data-ng-if="selectedNode"> - {{selectedNode}}</span></span>\n </div>\n <div data-ng-if="!defaultTreeActive" class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <span class="btn default btn-file">\n <span class="fileinput-new">\n <i class="icon-cloud-upload"></i> {{\'APPLICATION_IMPORT_FROM_JSON\' | translate}}</span>\n <input type="file" on-read-file="import($fileContent)"/>\n </span>\n </div>\n <div class="btn-group">\n <button class="btn green-jungle " ng-click="create()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_REPORT\' | translate }}\n </button>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <div ng-slide-down="gridOptions" lazy-render duration="1">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n </div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/analytic/report/list/preview.modal.html",'<div class="modal-header">\n <button type="button" ng-click="cancel()" class="close">×</button>\n <h4 class="modal-title">{{ \'APPLICATION_REPORT_PREVIEW\' | translate }}</h4>\n</div>\n<div class="modal-body" style="text-align:center;">\n <form name="forms.report" class="form-inline mbottom20" novalidate>\n <div class="form-group" data-ng-class="{\'hidden\':daily}">\n <label class="control-label">{{\'APPLICATION_DATE_RANGE\' | translate}}<span class="required" aria-required="true"></span></label>\n <input type="daterange" name="dates" ranges="ranges" style="min-width:190px;" enabletimepicker="timepicker" placeholder="{{\'APPLICATION_DATE_RANGE\' | translate}}" class="form-control" data-ng-model="dates" data-ng-change="getPage()" max-date="{{maxdate}}" data-ng-required="!daily" data-ng-disabled="daily" data-ng-class="{\'disabled-invisible\':daily}" style="cursor:pointer;" readonly/>\n </div>\n <div class="form-group" data-ng-if="daily">\n <label class="control-label">{{\'APPLICATION_FROM\' | translate}}</label>\n </div>\n <div class="form-group" data-ng-if="daily">\n <uib-timepicker ng-model="dailyTime.start" ng-change="changed()" hour-step="1" minute-step="1" show-meridian="false"></uib-timepicker>\n </div>\n <div class="form-group" data-ng-if="daily">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}}</label>\n </div>\n <div class="form-group" data-ng-if="daily">\n <uib-timepicker ng-model="dailyTime.end" ng-change="changed()" hour-step="1" minute-step="1" show-meridian="false"></uib-timepicker>\n </div>\n <div class="form-group" data-ng-if="daily">\n <button class="btn btn-small btn-sm btn-success" data-ng-click="getPage()">Apply</button>\n </div>\n <div class="form-group">\n <input\n bs-switch\n class="form-control"\n ng-model="daily"\n type="checkbox"\n name="auth"\n data-ng-change="getPage()"\n switch-active="{{ dailySwitch.isActive }}"\n switch-on-text="{{ dailySwitch.onText }}"\n switch-off-text="{{ dailySwitch.offText }}"\n switch-on-color="{{ dailySwitch.onColor }}"\n switch-off-color="{{ dailySwitch.offColor }}"\n switch-animate="{{ dailySwitch.animate }}"\n switch-size="{{ dailySwitch.size }}"\n switch-label="{{ dailySwitch.label }}"\n switch-icon="{{ dailySwitch.icon }}"\n switch-radio-off="{{ dailySwitch.radioOff }}"\n switch-label-width="{{ dailySwitch.labelWidth }}"\n switch-handle-width="{{ dailySwitch.handleWidth }}">\n </div>\n </form>\n <div ng-slide-down="showResult" lazy-render duration="1">\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter class="grid extract-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n </div>\n</div>\n<div class="modal-footer">\n<button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/analytic/report/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getReport()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-book-open"></i>\n <a href="/analytics/reports/list">{{ \'APPLICATION_REPORTS\' | translate }}</a>\n <i data-ng-show="report" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="report">\n <a href="#">{{report.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/analytic/report/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <div class="caption-subject font-blue-madison bold uppercase dot">{{ \'APPLICATION_REPORT\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} - {{report.name}} </div>\n </div>\n <ul class="nav nav-tabs">\n <li>\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n <li class="active">\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{ \'APPLICATION_BUILD\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_3" data-toggle="tab" data-ng-click="showResult = true">{{ \'APPLICATION_TEST_PREVIEW\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n\n <div class="tab-content">\n\n <!-- GENERAL TAB -->\n <div class="tab-pane" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.report.$valid && forms.general.$valid && updateReport()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="report.name" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="report.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}" />\n </form>\n </div>\n <!-- END GENERAL TAB -->\n\n <!-- BUILD TAB -->\n <div class="tab-pane active" id="tab_1_2">\n <form name="forms.report" data-ng-submit="forms.report.$valid && forms.general.$valid && updateReport()" novalidate>\n <!-- START TABLE INPUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.report.table.$touched || forms.report.$submitted) && forms.report.table.$invalid}">\n <label class="control-label">{{\'APPLICATION_TABLE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="report.table" name="table" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{\'APPLICATION_\'+$select.selected.value.toUpperCase() | translate}}</ui-select-match>\n <ui-select-choices group-by="\'channel\'" repeat="table.value as table in tables | filter: $select.search">\n <div ng-bind-html="\'APPLICATION_\'+table.value.toUpperCase() | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.report.table.$touched || forms.report.$submitted) && forms.report.table.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TABLE INPUT-->\n <div data-ng-if="report.table" class="mbottom20 pbottom20 table-responsive">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_FIELDS\' | translate}} </span>\n </div>\n </div>\n <!-- START TABLE -->\n <table class="table table-striped table-bordered table-hover">\n <thead>\n <tr>\n <th>{{ \'APPLICATION_FIELD\' | translate }} / {{ \'APPLICATION_METRIC\' | translate }}</th>\n <th style="min-width:167px;">{{ \'APPLICATION_ALIAS\' | translate }}</th>\n <th>{{ \'APPLICATION_FUNCTION\' | translate }}</th>\n <th>{{ \'APPLICATION_FORMAT\' | translate }}</th>\n <th>{{ \'APPLICATION_GROUP_BY\' | translate }}</th>\n <th>{{ \'APPLICATION_ORDER_BY\' | translate }}</th>\n <th></th>\n <th style="min-width:66px;"></th>\n </tr>\n </thead>\n <tbody ui-sortable="sortableOptions" data-ng-model="report.Fields">\n <tr data-ng-repeat="field in report.Fields">\n <td>\n <!-- START FIELD -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.report.$submitted && !field.field}">\n <!-- <label class="control-label">{{\'APPLICATION_FIELD\' | translate}}<span class="required" aria-required="true">*</span></label> -->\n <div class="input-group">\n <ui-select data-ng-if="!field.custom" data-ng-model="field.field" dynamic-name="randomName()" theme="bootstrap" on-select="setMetricId($item,$index)" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}"><span ng-bind-html="$select.selected.name"></span></ui-select-match>\n <ui-select-choices repeat="tableField.value as tableField in tableFields | filter: $select.search">\n <div ng-bind-html="tableField.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <input data-ng-if="field.custom" type="text" dynamic-name="randomName()" placeholder="{{\'APPLICATION_CUSTOM\' | translate}}" class="form-control" data-ng-model="field.field" required/>\n <span class="input-group-btn">\n <button type="button" data-ng-click="toggleCustom(field)" class="btn btn-default">\n <span class="icon-pencil" data-ng-class="{\'font-blue\':field.custom}"></span>\n </button>\n </span>\n </div>\n <span data-ng-show="forms.report.$submitted && !field.field" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FIELD-->\n </td>\n <td>\n <!-- START ALIAS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.report.$submitted && !field.alias}">\n <!-- <label class="control-label">{{\'APPLICATION_ALIAS\' | translate}}<span class="required" aria-required="true">*</span></label> -->\n <input type="text" dynamic-name="randomName()" placeholder="{{\'APPLICATION_ALIAS\' | translate}}" class="form-control" data-ng-model="field.alias" data-ng-pattern="\'[A-Za-z0-9 <>=,%_\\\\+*!\\\\-\\\\[\\\\]]+\'" required/>\n <span data-ng-show="forms.report.$submitted && !field.alias" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="forms.report.$submitted && !field.alias" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END ALIAS -->\n </td>\n <td>\n <!-- START FUNCTION -->\n <div class="form-group">\n <!-- <label class="control-label">{{\'APPLICATION_FIELD\' | translate}}<span class="required" aria-required="true">*</span></label> -->\n <ui-select data-ng-model="field.function" name="function" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_FUNCTION\' | translate}}" allow-clear>{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="function.value as function in functions | filter: $select.search">\n <div ng-bind-html="function.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END FUNCTION-->\n </td>\n <td>\n <!-- START FORMAT -->\n <div class="form-group">\n <!-- <label class="control-label">{{\'APPLICATION_FIELD\' | translate}}<span class="required" aria-required="true">*</span></label> -->\n <ui-select data-ng-model="field.format" name="format" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_FORMAT\' | translate}}" allow-clear>{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="format.value as format in formatFunctions | filter: $select.search">\n <div ng-bind-html="format.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END FORMAT-->\n </td>\n <td>\n <!-- START GROUP_BY -->\n <div class="form-group">\n <!-- <label class="control-label">{{\'APPLICATION_FIELD\' | translate}}<span class="required" aria-required="true">*</span></label> -->\n <ui-select data-ng-model="field.groupBy" name="groupBy" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_GROUP_BY\' | translate}}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="groupBy.value as groupBy in groupByField | filter: $select.search">\n {{$translate.instant(groupBy.name)}}\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END GROUP_BY-->\n </td>\n <td>\n <!-- START ORDER_BY -->\n <div class="form-group">\n <!-- <label class="control-label">{{\'APPLICATION_FIELD\' | translate}}<span class="required" aria-required="true">*</span></label> -->\n <ui-select data-ng-model="field.orderBy" name="orderBy" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_ORDER_BY\' | translate}}" allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="orderBy in [\'ASC\',\'DESC\'] | filter: $select.search">\n <div ng-bind-html="orderBy | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END TABLE INPUT-->\n </td>\n <td class="report-field-remove">\n <button class="btn red" type="button" data-ng-click="removeField($index)"><i class="fa fa-times"></i></button>\n </td>\n <td class="report-field-handle">\n <!-- <img data-ng-src="assets/images/move.png" class="img-responsive"> -->\n </td>\n </tr>\n <tr data-ng-hide="report.Fields.length" class="unsortable">\n <td colspan="8" style="text-align:center;">\n <i>{{ \'MESSAGE_ADD_A_FIELD\' | translate }}</i>\n </td>\n </tr>\n </tbody>\n </table>\n <button type="button" class="btn btn-sm green padding-bottom" ng-click="addField()">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_FIELD\' | translate}}\n </button>\n <!-- END TABLE -->\n </div>\n <div data-ng-if="report.Fields.length" class="mbottom20 pbottom20">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_CONDITIONS\' | translate}} </span>\n </div>\n </div>\n <div class="alert alert-info">\n <strong>Output</strong>\n <br>\n <span ng-bind-html="output"></span>\n </div>\n\n <report-builder group="report.conditions.group" fields="tableFields" forms="forms" firstCall=\'true\'></report-builder>\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}" />\n </form>\n </div>\n <!-- END BUILD TAB -->\n\n <!-- PREVIEW TAB -->\n <div class="tab-pane" id="tab_1_3">\n <div ng-slide-down="showResult" lazy-render duration="0.5">\n <div ui-grid="gridOptions" data-ng-if="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-move-columns class="grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n </div>\n </div>\n <!-- END PREVIEW TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/chat/offline/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bubble"></i>\n <a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-login"></i>\n <a href="/channels/chat/offline/list">{{ \'APPLICATION_OFFLINE\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-question font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_OFFLINE_MESSAGES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/offline/message/message.directive.html",'<div class="message">\n <div class="row">\n <div class="col-md-12">\n <span class="bold">From: </span>\n [<a href="" data-ng-click="openContact(message.email)">{{message.email}}</a>]\n </div>\n </div>\n <br>\n <span class="todo-tasklist-date">\n <i class="icon-calendar"></i> {{message.createdAt | date:\'medium\'}} (<span am-time-ago="message.createdAt"></span>)\n </span>\n <hr>\n <div class="body text-left message-body" data-ng-bind="message.text"></div>\n <h5 data-ng-hide="message.text" class="media-heading"><i>{{\'MESSAGE_NO_AVAILABLE_TEXT\' | translate | lowercase}}</i></h5>\n</div>\n'),a.put("app/channels/chat/offline/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView();">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bubble"></i>\n <a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-login"></i>\n <a href="/channels/chat/offline/list">Offline</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-user"></i>\n <a href="#">{{enquiry.username}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE CONTENT -->\n <div class="portlet light">\n <div class="portlet-title">\n <div class="caption">\n <span data-ng-if="enquiry.ChatWebsite" class="caption-subject font-green-sharp bold uppercase">{{enquiry.ChatWebsite.name}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <div class="row">\n <div class="col-md-4">\n <!-- Visitor Information -->\n <div class="portlet">\n <div class="portlet-body">\n <v-accordion class="vAccordion--default">\n <v-pane expanded="true">\n <v-pane-header>\n <ng-letter-avatar data-ng-if="enquiry.ChatVisitor" height="40" width="40" data="{{enquiry.ChatVisitor.fullname}}" fontsize="25" avatarcustombgcolor="#B0B0B0" charCount="2" avatarcustomborder="border:2px solid #EA4C61" shape="round"></ng-letter-avatar>\n </v-pane-header>\n <v-pane-content>\n {{\'APPLICATION_NAME\' | translate}}:<p>{{enquiry.ChatVisitor.fullname}}</p>\n {{\'APPLICATION_EMAIL\' | translate}}:<p><a data-ng-click="openContact(enquiry.ChatVisitor.email)" href="">{{enquiry.ChatVisitor.email}}</a></p>\n <span data-ng-if="enquiry.ChatVisitor.labelOfflineData1">{{enquiry.ChatVisitor.labelOfflineData1}}: <p>{{enquiry.ChatVisitor.offlineData1}}</p></span>\n <span data-ng-if="enquiry.ChatVisitor.labelOfflineData2">{{enquiry.ChatVisitor.labelOfflineData2}}: <p>{{enquiry.ChatVisitor.offlineData2}}</p></span>\n <span data-ng-if="enquiry.ChatVisitor.labelOfflineData3">{{enquiry.ChatVisitor.labelOfflineData3}}: <p>{{enquiry.ChatVisitor.offlineData3}}</p></span>\n {{\'APPLICATION_REMOTE_ADDRESS\' | translate}}:<p>{{enquiry.ChatVisitor.remote_address}}</p>\n {{\'APPLICATION_BROWSER\' | translate}}:<p>{{enquiry.ChatVisitor.browser}}</p>\n {{\'APPLICATION_REFERER\' | translate}}:<p>{{enquiry.ChatVisitor.referer}} - {{enquiry.ChatWebsite.name}}</p>\n {{\'APPLICATION_OS\' | translate}}:<p>{{enquiry.ChatVisitor.os}}</p>\n </v-pane-content>\n </v-pane>\n </v-accordion>\n </div>\n </div>\n </div>\n <div class="col-md-8">\n <!-- Offline message -->\n <div id="mail-box">\n <ul class="chats">\n <li class="in">\n <enquiry-message message="enquiry" list-id="enquiry.ChatWebsite.ListId"></enquiry-message>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), -a.put("app/channels/chat/online/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bubble"></i>\n <a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-login"></i>\n <a href="/channels/chat/online/list">{{ \'APPLICATION_ONLINE\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-question font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_VISITORS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/online/view/view.detail.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_DETAIL\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body row" data-ng-init="initView()">\n <div class="col-md-6">\n <div class="news-blocks">\n <h3>\n <a href="#" class="inactive-link">{{\'APPLICATION_MESSAGES\' | translate}}</a>\n <!-- <a href="#" data-ng-click="export()" data-ng-show="chatRoom.ChatMessages.length" class="btn btn-sm blue pull-right"><i class="icon-cloud-download"></i> {{\'APPLICATION_EXPORT\' | translate}} CSV </a> -->\n <a href="api/chat/rooms/{{chatRoom.id}}/export" target="_blank" data-ng-show="chatRoom.ChatMessages.length" class="btn btn-sm blue pull-right"><i class="icon-cloud-download"></i> {{\'APPLICATION_EXPORT\' | translate}} CSV </a>\n <hr>\n </h3>\n <div class="news-block-tags">\n <em am-time-ago="chatRoom.ChatVisitor.ChatEnquiry.createdAt"></em>\n </div>\n <p>\n <div ng-scrollbars ng-scrollbars-config="config">\n <ul class="chats">\n <li data-ng-class="{\'out\': message.User, \'in\':message.ChatVisitor}" data-ng-repeat="message in chatRoom.ChatMessages | orderBy:\'createdAt\'">\n <img class="avatar" data-ng-src="api/users/avatar/{{message.User.userpic || \'unknown_avatar\'}}">\n <div class="message">\n <span class="arrow">\n </span>\n <a href="#" class="name">\n {{message.User ? message.User.fullname : message.ChatVisitor.fullname}}\n </a>\n <span class="datetime">\n at {{message.createdAt | date: \'medium\'}}\n </span>\n <span class="body">\n {{message.body}}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </div>\n </div>\n <div class="col-md-6">\n <div class="news-blocks">\n <h3>\n <a href="#" class="inactive-link">{{\'APPLICATION_VISITOR\' | translate}}</a>\n <hr>\n </h3>\n <div class="margin-top-20 profile-desc-link">\n <i class="icon-user"></i>\n <a href="#" class="inactive-link">{{chatRoom.ChatVisitor.fullname}}</a>\n </div>\n <div class="margin-top-20 profile-desc-link">\n <i class="icon-envelope"></i>\n <a href="#" class="inactive-link">{{chatRoom.ChatVisitor.email}}</a>\n </div>\n <div class="margin-top-20 profile-desc-link">\n <i class="icon-globe"></i>\n <a href="#" class="inactive-link">{{chatRoom.ChatVisitor.remote_address}}</a>\n </div>\n <div class="margin-top-20 profile-desc-link">\n <i class="icon-home"></i>\n <a href="#" class="inactive-link">{{chatRoom.ChatVisitor.referer}} - {{chatRoom.ChatVisitor.ChatWebsite.name}}</a>\n </div>\n <div class="margin-top-20 profile-desc-link">\n <i class="icon-cursor"></i>\n <a href="#" class="inactive-link">{{chatRoom.ChatVisitor.browser}}</a>\n </div>\n <div class="margin-top-20 profile-desc-link">\n <i class="icon-screen-desktop"></i>\n <a href="#" class="inactive-link">{{chatRoom.ChatVisitor.os}}</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n'),a.put("app/channels/chat/online/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bubble"></i>\n <a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-login"></i>\n <a href="/channels/chat/online/list">Online</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/enquiry.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- START USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{chatRoom.ChatVisitor.email}}\n </div>\n <div class="profile-usertitle-job">\n {{chatRoom.ChatVisitor.fullname}}\n </div>\n </div>\n <!-- END USER TITLE -->\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.chat.online.view.detail\')}">\n <a data-ng-href="/channels/chat/online/view/{{chatRoom.id}}/detail">\n <i class="icon-tag"></i>\n {{ \'APPLICATION_DETAIL\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/preview/preview.html",'<style>\n.xc_header_logo\n{\n display:block;\n background-image:url({{chatWebsite.remote}}/api/xchatty/assets?resource=images/motion_logo.png);\n width:40px;\n height:40px;\n float:left;;\n margin-left: 10px !important;\n margin-top: 6px !important;\n}\n.xc_rating {\n text-align: center;\n}\n.xc_rating_label > input{ /* HIDE RADIO */\n display:none;\n}\n.xc_rating_label > input + img{ /* IMAGE STYLES */\n cursor:pointer;\n border:2px solid transparent;\n}\n.xc_rating_label > input:checked + img{ /* (CHECKED) IMAGE STYLES */\n /*border:2px solid #f00;*/\n background-color: #efefef;\n}\n\n.xc_label {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n.xc_online_message,\n.xc_offline_message,\n.xc_rating_message\n{\n text-align: center;\n}\n\n.xc_div_group {\n margin: 10px 0 10px 0;\n}\n.xc_footer\n{\n text-align: center;\n padding-bottom: 5px;\n}\n\n.xc_powered\n{\n color: grey;\n font: 10px/16px "Lucida Grande","Lucida Sans Unicode",Arial,Verdana,sans-serif;\n padding-bottom: 5px;\n}\n\n.xc_chat_container\n{\n //width:379px;\n //position:fixed;\n //bottom:0;\n //right:50px;\n z-index:9999;\n background-color:transparent;\n}\n\n.xc_chat_container *\n{\n font-family:Arial,Helvetica,sans-serif;\n font-size:13px;\n margin:0;\n padding:0;\n}\n\n.xc_chat_container p\n{\n margin:5px 0;\n}\n\n.xc_signup_wrapper\n{\n max-height:375px;\n}\n\n.xc_conversation_container\n{\n max-height:375px;\n list-style:none;\n overflow:auto;\n margin:0;\n padding:20px 10px;\n}\n\n.xc_conversation_container a\n{\n color:#036;\n}\n\n.xc_conversation_container a.xc_btn_style\n{\n color:#fff;\n}\n\ndiv.xc_chat_head\n{\n color:#fff;\n background:{{chatWebsite.color}};\n //border-radius: 20px 20px 0px 0px !important;\n height:52px;\n line-height:55px;\n cursor:pointer;\n}\n\ndiv.xc_chat_head.rounded\n{\n border-radius: 20px 20px 0px 0px !important;\n}\n\ndiv.xc_chat_head.squared\n{\n //border-radius: 20px 20px 0px 0px !important;\n}\n\n.xc_chat_head-title\n{\n margin:5px 0 0 15px;\n color: #fff;\n}\n\n.xc_header_icon\n{\n display:block;\n background-image:url({{chatWebsite.remote}}/api/xchatty/assets?resource=images/iconVisitorchat.png);\n width:21px;\n height:16px;\n float:right;\n margin:20px 20px 0 0;\n}\n\n.xc_header_icon span.xc_notification_badge span\n{\n display:block;\n height:16px;\n width:15px;\n text-align:center;\n font-size:9px;\n color:#555;\n position:relative;\n top:-20px;\n left:4px;\n margin:0;\n padding:0;\n}\n\n.xc_sub-head-spacer\n{\n padding:1px;\n}\n\n.xc_conversation\n{\n display:none;\n margin:0 12px 0 11px;\n}\n\n.xc_chat_toggle_container\n{\n /*background:mediumslateblue center 52px;*/\n background: white;\n border-style: solid;\n border-width: 1px;\n border-color: {{chatWebsite.color}};\n //display:none;\n}\n\n.xc_signup_wrapper,.xc_notifications_wrapper,.xc_enquiry_wrapper,.xc_rating_wrapper\n{\n //display:none;\n display:block;\n overflow:auto;\n line-height:1;\n padding:25px;\n}\n\n.xc_exit_chat_container\n{\n text-align:right;\n width:95%;\n margin:0 auto;\n padding:5px 1px 0 0;\n}\n\n.xc_exit_chat_container span,.xc_exit_chat_container a\n{\n font-size:80%;\n color:#666;\n text-decoration:none;\n}\n\n.xc_exit_chat_container a:hover\n{\n color:#333;\n}\n\na.xc_btn_exit_chat_confirm:hover\n{\n color:red;\n}\n\na.xc_btn_exit_chat_cancel:hover\n{\n color:#0c0;\n}\n\nform.xc_form_reply\n{\n position:relative;\n}\n\n.xc_form_reply\n{\n /*background-color:#e3e3e3;*/\n text-align:center;\n /*border-top:1px solid #d3d3d3;*/\n}\n\n.xc_input_message\n{\n height:100px;\n margin:10px auto 5px;\n}\n\n.xc_input_enquiry_message,\n.xc_input_rating_message\n{\n height:100px;\n}\n\n.xc_form_signup,.xc_form_enquiry,.xc_form_rating\n{\n /*text-align:center;*/\n}\n\n.xc_chat_container textarea,.xc_chat_container input[type=text]\n{\n width:95%;\n min-width:95%;\n max-width:95%;\n -webkit-box-sizing:border-box;\n -moz-box-sizing:border-box;\n box-sizing:border-box;\n background-color:#fff;\n border:1px solid #ccc;\n -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);\n -moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);\n box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);\n -webkit-transition:border linear .2s, box-shadow linear .2s;\n -moz-transition:border linear .2s, box-shadow linear .2s;\n -o-transition:border linear .2s, box-shadow linear .2s;\n transition:border linear .2s, box-shadow linear .2s;\n display:inline-block;\n font-size:14px;\n line-height:20px;\n color:#555;\n -webkit-border-radius:4px;\n -moz-border-radius:4px;\n border-radius:4px;\n vertical-align:middle;\n margin:3px 0;\n padding:4px 6px;\n resize: none;\n}\n\n.xc_chat_container textarea:focus,.xc_chat_container input[type=text]:focus\n{\n outline: {{chatWebsite.color_focus}} auto 5px;\n}\n\n.xc_chat_container input[type=text]\n{\n height: 30px;\n}\n\n.xc_message_sending textarea, .xc_enquiry_sending textarea\n{\n background: #fff url({{chatWebsite.remote}}/api/xchatty/assets?resource=images/loading.gif) 98% 5px no-repeat;\n}\n\n.xc_chatrow\n{\n display:block;\n border-top:1px dashed #e3e3e3;\n margin:5px 0;\n clear: both;\n}\n\n.xc_chatrow p\n{\n color:#444;\n word-wrap:break-word;\n}\n\n.xc_time\n{\n float:right;\n font-size:80%;\n color:#ccc;\n padding-left:12px;\n margin:3px;\n}\n\n.xc_submission_pending\n{\n background:transparent url({{chatWebsite.remote}}/api/xchatty/assets?resource=images/bullet_clock.png) left center norepeat;\n}\n\n.xc_submission_confirmed\n{\n background:transparent url({{chatWebsite.remote}}/api/xchatty/assets?resource=images/bullet_tick.png) left center norepeat;\n}\n\n.xc_fullname\n{\n font-weight:700;\n}\n\n.xc_fullname:after\n{\n content:":";\n}\n\n.xc_avatar\n{\n float: left;\n margin: 0 5px 5px 0;\n display: inline-block;\n width: 40px;\n height: 40px;\n border-radius: 5px;\n -moz-border-radius: 5px;\n -webkit-border-radius: 5px;\n}\n\n.xc_smilie\n{\n background-repeat:no-repeat;\n display:inline-block;\n width:18px;\n height:18px;\n text-indent:-9999px;\n white-space:nowrap;\n}\n\n.xc_btn_load_more\n{\n width:100%!important;\n}\n\n.xc_notifications_wrapper\n{\n text-shadow:0 1px 0 rgba(255,255,255,0.5);\n}\n\n.xc_notification_success\n{\n color:#468847;\n}\n\n.xc_notification_error\n{\n color:#b94a48;\n}\n\n.xc_errorlist\n{\n margin:0 0 0 25px;\n padding:0;\n}\n\ni.xc_btn_notifications_close\n{\n float:right;\n font-weight:700;\n font-size:20px;\n color:#ccc;\n cursor:pointer;\n margin:-15px 0 0;\n padding:0;\n}\n\n.xc_btn_style\n{\n width:95%;\n text-align:center;\n line-height:1.2;\n font-size:90%;\n -moz-box-shadow:inset 0 1px 0 0 {{chatWebsite.color_button}};\n -webkit-box-shadow:inset 0 1px 0 0 {{chatWebsite.color_button}};\n box-shadow:inset 0 1px 0 0 {{chatWebsite.color_button}};\n background:0;\n background-color:{{chatWebsite.color_button}};\n -moz-border-radius:4px;\n -webkit-border-radius:4px;\n border-radius:4px;\n border:1px solid {{chatWebsite.color_button}};\n display:inline-block;\n color:#fff;\n font-weight:700;\n text-decoration:none;\n text-shadow:1px 1px 0 #000c17;\n margin:0 auto 5px;\n padding:2px 0;\n}\n\n.xc_btn_style:hover\n{\n background:0;\n background-color:{{chatWebsite.color_button}};\n color: #fff;\n text-decoration: none;\n}\n\n.xc_btn_style:active\n{\n position:relative;\n top:1px;\n}\n\n.xc_composing_container\n{\n display: none;\n width: 95%;\n margin: 0 auto;\n background: transparent url({{chatWebsite.remote}}/api/xchatty/assets?resource=images/bullet_pencil.png) 6px center no-repeat;\n padding-left: 19px;\n font-style: italic;\n}\n\n@media only screen and (max-height: 620px) {\n .xc_conversation_container\n {\n max-height:300px!important;\n }\n}\n\n@media only screen and (max-height: 545px) {\n .xc_conversation_container\n {\n max-height:200px!important;\n }\n}\n\n@media only screen and (max-height: 445px) {\n .xc_conversation_container\n {\n max-height:150px!important;\n }\n}\n\n@media only screen and (max-width: 480px) {\n .xc_chat_container\n {\n width:95%!important;\n right:auto!important;\n -webkit-border-top-left-radius:15px;\n -webkit-border-top-right-radius:15px;\n -moz-border-radius-topleft:15px;\n -moz-border-radius-topright:15px;\n border-top-left-radius:15px;\n border-top-right-radius:15px;\n box-shadow:0 0 5px rgba(0,0,0,.5);\n -webkit-box-shadow:0 0 5px rgba(0,0,0,.5);\n -moz-box-shadow:0 0 5px rgba(0,0,0,.5);\n }\n\n div.xc_chat_head\n {\n background-color:#036;\n background-image:none;\n line-height:25px;\n height:auto;\n -webkit-border-top-left-radius:15px;\n -webkit-border-top-right-radius:15px;\n -moz-border-radius-topleft:15px;\n -moz-border-radius-topright:15px;\n border-top-left-radius:15px;\n border-top-right-radius:15px;\n padding:10px;\n }\n\n .xc_chat_toggle_container\n {\n background-color:#fff;\n background-image:none;\n border-color:#036;\n border-style:solid;\n border-width:0 1px;\n }\n\n .xc_header_icon\n {\n background-image:url({{chatWebsite.remote}}/api/xchatty/assets?resource=images/icon_visitorchat.png);\n margin:0;\n }\n\n .xc_header_icon span.xc_notification_badge span\n {\n top:-5px;\n left:5px;\n }\n\n .xc_notification_success\n {\n background-color:#dff0d8;\n border:1px solid #d6e9c6;\n }\n\n .xc_conversation_container\n {\n max-height:375px;\n border-color:#036;\n }\n\n .xc_notification_error\n {\n background-color:#f2dede;\n border:1px solid #eed3d7;\n }\n\n .xc_sub-head-spacer\n {\n display:none;\n padding:0;\n }\n\n .xc_chat_head-title,.xc_conversation\n {\n margin:0;\n }\n}\n</style>\n<div class="xc_chat_container">\n <div class="xc_chat_head {{chatWebsite.header_shape}}">\n <i class="xc_header_icon">\n <span class="xc_notification_badge">\n <span class="xc_notification_badge_number"></span>\n </span>\n </i>\n <i class="xc_header_logo" style="background-image:url(/api/xchatty/assets?resource=images/{{(chatWebsite.defaultLogo || !license.custom) ? \'motionLogo.png\' : (!chatWebsite.defaultLogo && chatWebsite.logo && license.custom) ? chatWebsite.logo+\'&uploaded\' : \'motionLogo.png\'}});background-size:contain;"></i>\n </a>\n <span class="xc_chat_head-title">{{statePreview.state == \'online\' ? chatWebsite.header_online : chatWebsite.header_offline}}</span>\n </div>\n <div class="xc_chat_toggle_container">\n <div class="xc_sub-head-spacer"></div>\n <!-- <div class="xc_notifications_wrapper">\n <ul class="xc_errorlist"></ul>\n </div> -->\n <div class="xc_enquiry_wrapper" data-ng-show=\'statePreview.state == "offline"\'>\n <form class="xc_form_enquiry" accept-charset="UTF-8">\n <p class="xc_offline_message" ng-bind-html=\'chatWebsite.offline_message\'></p>\n <br>\n <div ng-if="chatWebsite.enquiry_enable">\n <div class="xc_div_group">\n <label for="enquiryFullname" class="xc_label">{{chatWebsite.name_title}} *</label>\n <input id="enquiryFullname" maxlength="45" data-label="Name" type="text" name="data[Enquiry][fullname]" placeholder="{{chatWebsite.username_placeholder}}" class="xc_input_enquiry_fullname" required/>\n </div>\n <br>\n <div class="xc_div_group">\n <label for="enquiryEmail" class="xc_label">{{chatWebsite.email_title}} *</label>\n <input id="enquiryEmail" maxlength="85" type="text" data-label="Email Address" name="data[Enquiry][email]" placeholder="{{chatWebsite.email_placeholder}}" class="xc_input_enquiry_email" required/>\n </div>\n <br>\n <div class="xc_div_group">\n <label for="enquiryMessage" class="xc_label">{{chatWebsite.message_title}} *</label>\n <textarea id="enquiryMessage" data-label="Message" maxlength="1500" placeholder="{{chatWebsite.enquiry_message_placeholder}}" name="data[Enquiry][message]" class="xc_input_enquiry_message" required></textarea>\n </div>\n <br>\n <button type="submit" class="xc_btn_enquiry xc_btn_style">{{chatWebsite.enquiry_button}}</button>\n </div>\n </form>\n </div>\n <div class="xc_signup_wrapper" data-ng-show=\'statePreview.state == "online"\'>\n <form class="xc_form_signup" accept-charset="UTF-8">\n <p class="xc_online_message" ng-bind-html=\'chatWebsite.online_message\'></p>\n <br>\n <div class="xc_div_group">\n <label for="dataFullname" class="xc_label">{{chatWebsite.name_title}} *</label>\n <input maxlength="45" id="dataFullname" data-label="Fullname" type="text" name="data[Discussion][fullname]" placeholder="{{chatWebsite.username_placeholder}}" class="xc_input_fullname" required/>\n </div>\n <br>\n <div class="xc_div_group">\n <label for="dataEmail" class="xc_label">{{chatWebsite.email_title}} *</label>\n <input maxlength="85" id="dataEmail" data-label="Email Address" type="text" name="data[Discussion][email]" placeholder="{{chatWebsite.email_placeholder}}" class="xc_input_email" required/>\n </div>\n <br>\n <input type="hidden" class="xc_input_visitor_time" name="data[Discussion][visitor_time]" />\n <button type="submit" class="xc_btn_signup xc_btn_style">{{chatWebsite.start_chat_button}}</button>\n </form>\n </div>\n <div class="xc_rating_wrapper" data-ng-show=\'statePreview.state == "rating"\'>\n <form class="xc_form_rating" accept-charset="UTF-8">\n <p class="xc_rating_message">{{chatWebsite.rating_message}}</p>\n <br>\n <div class="xc_rating">\n <label class="xc_rating_label" style="padding:30px;">\n <input type="radio" name="data[Rating][rating]" value="good" />\n <img src="{{chatWebsite.remote}}/api/xchatty/assets?resource=images/like.png" alt="Good" height="50"/>\n </label>\n <label class="xc_rating_label" style="padding:30px;">\n <input type="radio" name="data[Rating][rating]" value="bad"/>\n <img src="{{chatWebsite.remote}}/api/xchatty/assets?resource=images/dislike.png" alt="Good" height="50"/>\n </label>\n </div>\n <div class="xc_div_group">\n <label for="ratingMessage" class="xc_label">Message</label>\n <textarea id="ratingMessage" data-label="Message" maxlength="1500" name="data[Rating][message]" class="xc_input_rating_message"></textarea>\n </div>\n <button type="submit" class="xc_button_rating xc_btn_style">{{chatWebsite.rating_send}}</button>\n <button type="button" class="xc_button_skip_rating xc_btn_style">{{chatWebsite.rating_skip}}</button>\n </form>\n </div>\n <div class="xc_footer">\n <div data-ng-if="chatWebsite.defaultWhiteLabel || !license.custom" class="xc_powered"><a>Powered by xCALLY</a></div>\n <div data-ng-if="!chatWebsite.defaultWhiteLabel && license.custom" data-ng-bind-html="chatWebsite.whiteLabel"></div>\n </div>\n</div>\n</div>\n'),a.put("app/channels/chat/queue/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_QUEUE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" data-ng-pattern="settings.patternName" required />\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$invalid && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$invalid && form.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START STRATEGY -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.strategy.$touched || form.$submitted) && form.strategy.$invalid}">\n <label class="control-label">{{\'APPLICATION_STRATEGY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.strategy" name="strategy" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | uppercase}}</ui-select-match>\n <ui-select-choices repeat="strategy in strategies | filter: $select.search">\n <div ng-bind-html="strategy.toUpperCase() | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.strategy.$touched || form.$submitted) && form.strategy.$invalid && form.strategy.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END STRATEGY -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.timeout.$touched || form.$submitted) && form.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="Timeout" class="form-control" data-ng-model="item.timeout" required min="1"/>\n <span data-ng-show="(form.timeout.$touched || form.$submitted) && form.timeout.$invalid && form.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START AGENTS-->\n <div class="form-body" data-ng-init="getTeams()">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="item.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="item.penalty=item.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!item.penalty" data-ng-click="item.penalty=item.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-team">\n </div>\n </div>\n </div>\n <!-- END AGENTS-->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/chat/queue/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bubble"></i>\n <a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="#">{{ \'APPLICATION_QUEUES\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_QUEUES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <a class="btn green-jungle" href="#" data-ng-click="createItem()" data-ng-if="Auth.isAdmin()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_QUEUE\' | translate }}\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/queue/view/view.agents.html",'<div class="row" data-ng-init="getTeams()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_AGENTS\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <!-- BEGIN FORM-->\n <form action="index.html" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="queue.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="queue.penalty=queue.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!queue.penalty" data-ng-click="queue.penalty=queue.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-team">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/chat/queue/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getQueue()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bubble"></i>\n <a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="/channels/chat/queues/list">{{ \'APPLICATION_QUEUES\' | translate }}</a>\n <i data-ng-show="queue" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="queue">\n <a href="#">{{queue.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/queue.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{queue.name}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.chat.queues.view.settings\')}">\n <a data-ng-href="/channels/chat/queues/view/{{queue.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.channels.chat.queues.view.agents\')}" data-ng-show="Auth.getCurrentUser().role === \'admin\'">\n <a data-ng-href="/channels/chat/queues/view/{{queue.id}}/agents">\n <i class="icon-people"></i>\n {{ \'APPLICATION_AGENTS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), -a.put("app/channels/chat/queue/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateChatQueue()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="queue.name" data-ng-pattern="settings.patternName" required />\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid && forms.general.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START STRATEGY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.strategy.$touched || forms.general.$submitted) && forms.general.strategy.$invalid}">\n <label class="control-label">{{\'APPLICATION_STRATEGY\' | translate}}</label>\n <ui-select data-ng-model="queue.strategy" name="strategy" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | uppercase}}</ui-select-match>\n <ui-select-choices repeat="strategy in strategies | filter: $select.search">\n <div ng-bind-html="strategy.toUpperCase() | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END STRATEGY -->\n\n <!-- START TIMEOUT -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_AGENT\' | translate}} {{\'APPLICATION_TIMEOUT\' | translate}}</label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" min="1" data-ng-model="queue.timeout"/>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="queue.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <input data-ng-if="Auth.isAdmin()" class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/chat/realtime/view/agent/agent.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initAgents()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-tree-view ui-grid-expandable-row ui-grid-pagination ui-grid-auto-resize>\n <span us-spinner spinner-key="grid-spinner" spinner-start-active="true"></span>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/realtime/view/agent/agent.modal.info.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_INTERFACE_INFO\' | translate }}</h3>\n</div>\n<div class="modal-body">\n<div data-ng-if="agent.ipaddr" class="well">\n <div>{{agent.ipaddr}}:{{agent.port}}</div>\n <div>{{agent.fullcontact}}</div>\n <div>{{agent.useragent}}</div>\n <div>{{agent.lastms}}</div>\n</div>\n<div data-ng-if="!agent.ipaddr" class="alert alert-danger" role="alert">\n {{\'MESSAGE_NO_AVAILABLE_INFO\' | translate}}\n</div>\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/channels/chat/realtime/view/agent/queue.modal.add.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_JOIN_QUEUE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <div class="form-group row">\n <label class="col-md-2 control-label" style="margin-top: 7px;">{{\'APPLICATION_QUEUE\' | translate}}:</label>\n <div class="col-md-10">\n <ui-select multiple ng-model="item.queues" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_QUEUE\' | translate}}">{{$item.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n</div>\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/chat/realtime/view/application/application.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initApplications()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-auto-resize>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/realtime/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bubble"></i>\n <a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-energy"></i>\n <a href="#">{{ \'APPLICATION_REALTIME\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <div>\n <nav class="navbar navbar-default" role="navigation">\n <div class="collapse navbar-collapse">\n <ul class="nav navbar-nav">\n <li data-ng-class="{\'active\': $state.is(\'main.channels.chat.realtime.view.agents\')}">\n <a href="/channels/chat/realtime/view/agents">\n {{\'APPLICATION_AGENTS\' | translate}}\n </a>\n </li>\n <li data-ng-class="{\'active\': $state.is(\'main.channels.chat.realtime.view.applications\')}">\n <a href="/channels/chat/realtime/view/applications">\n {{\'APPLICATION_APPLICATIONS\' | translate}}\n </a>\n </li>\n <li>\n <a href="#">\n <b>|{{\'APPLICATION_SHOW_TIMERS\' | translate}} </b><input\n bs-switch\n class="form-control"\n ng-model="showTimers"\n type="checkbox"\n name="showTimers"\n switch-active="{{ timerSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ timerSwitch.onColor }}"\n switch-off-color="{{ timerSwitch.offColor }}"\n switch-animate="{{ timerSwitch.animate }}"\n switch-size="{{ timerSwitch.size }}"\n switch-label="{{ timerSwitch.label }}"\n switch-icon="{{ timerSwitch.icon }}"\n switch-radio-off="{{ timerSwitch.radioOff }}"\n switch-label-width="{{ timerSwitch.labelWidth }}"\n switch-handle-width="{{ timerSwitch.handleWidth }}"><b>|</b>\n </a>\n </li>\n </ul>\n </div>\n </nav>\n </div>\n\n <div ui-view></div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/room/external/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n <div class="portlet light" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption">\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'OPEN\'" uib-uncheckable>OPEN</button>\n </div>\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'CLOSED\'" uib-uncheckable>CLOSED</button>\n </div>\n </div>\n <div class="actions">\n <a href="#" class="btn btn-icon-only blue" data-ng-click="tagItems();" data-ng-show="id.length">\n <i class="fa fa-tags"></i>\n </a>\n <a href="#" class="btn btn-icon-only default" data-ng-click="getPage();">\n <i class="fa fa-refresh"></i>\n </a>\n </div>\n</div>\n<div class="portlet-title" data-ng-show="tags.length">\n <!-- START TAGS -->\n <div class="form-group">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-tags" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <ui-select multiple data-ng-model="query.tags" theme="bootstrap" on-select="onChanged($item, $model)" on-remove="onChanged($item, $model)">\n <ui-select-match placeholder="Search by tag...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter:$select.search">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n <!-- END TAGS -->\n</div>\n<div class="portlet-body">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n\n <!-- START TABLE -->\n\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-selection ui-grid-pagination class="ui-grid">\n <div class="watermark" data-ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/room/group/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n <div class="portlet light" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption">\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'OPEN\'" uib-uncheckable>OPEN</button>\n </div>\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'CLOSED\'" uib-uncheckable>CLOSED</button>\n </div>\n </div>\n <div class="actions">\n <a href="#" class="btn btn-icon-only blue" data-ng-click="tagItems();" data-ng-show="id.length">\n <i class="fa fa-tags"></i>\n </a>\n <a href="#" class="btn btn-icon-only default" data-ng-click="getPage();">\n <i class="fa fa-refresh"></i>\n </a>\n </div>\n</div>\n<div class="portlet-title" data-ng-show="tags.length">\n <!-- START TAGS -->\n <div class="form-group">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-tags" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <ui-select multiple data-ng-model="query.tags" theme="bootstrap" on-select="onChanged($item, $model)" on-remove="onChanged($item, $model)">\n <ui-select-match placeholder="Search by tag...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter:$select.search">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n <!-- END TAGS -->\n</div>\n<div class="portlet-body">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-selection ui-grid-pagination class="ui-grid">\n <div class="watermark" data-ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/room/internal/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12" data-ng-init="initView()">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination class="ui-grid">\n <div class="watermark" data-ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/room/room.add.html",'<div class="modal-header">\n <button ng-if="modal.dismissable" type="button" data-ng-click="$dismiss()" class="close">×</button>\n <h4 class="modal-title">{{\'APPLICATION_NEW_GROUP\' | translate}}</h4>\n</div>\n\n<div class="modal-body">\n <div class="portlet box blue">\n <div class="portlet-title">\n <div class="caption">\n <i class="icon-people"></i>{{\'APPLICATION_AGENTS\' | translate}}\n </div>\n </div>\n <div class="portlet-body">\n <ul>\n <li data-ng-repeat="item in items">\n {{item.fullname}}\n </li>\n <li data-ng-repeat="item in selected.items">\n {{item.fullname}}\n </li>\n </ul>\n </div>\n </div>\n\n <ui-select multiple name="items" ng-model="selected.items" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SELECTED_AGENTS\' | translate}}">{{$item.fullname}}</ui-select-match>\n <ui-select-choices repeat="{id: agent.id, fullname: agent.fullname} as agent in agents.rows | filter: $select.search">\n {{agent.fullname}}\n </ui-select-choices>\n </ui-select>\n</div>\n\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()" data-ng-show="selected.items.length">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/chat/room/room.close.html",'<div class="modal-header">\n <button ng-if="modal.dismissable" type="button" ng-click="$dismiss()" class="close">×</button>\n <h4 ng-if="modal.title" ng-bind="modal.title | translate" class="modal-title"></h4>\n</div>\n<div class="modal-body">\n <p ng-if="modal.text && !closed" ng-bind="modal.text | translate"></p>\n <form name="form" novalidate data-ng-init="initDisposition()">\n <div class="form-group">\n <ui-select data-ng-model="item.disposition" name="list" theme="bootstrap" data-ng-disabled="!dispositions.length" required>\n <ui-select-match placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="disposition.name as disposition in dispositions | filter: $select.search">\n <div ng-bind-html="disposition.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="note note-warning" data-ng-hide="dispositions.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_DISPOSITIONS_AVAILABLE\' | translate }}\n </p>\n </div>\n</form>\n <!-- <div ng-if="modal.html" ng-bind-html="modal.html"></div> -->\n</div>\n<div class="modal-footer">\n <button class="btn btn-danger" type="button" ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n <!-- <button ng-repeat="button in modal.buttons" ng-class="button.classes" ng-click="button.click($event)" ng-bind="button.text" class="btn"></button> -->\n</div>\n'),a.put("app/channels/chat/room/room.directive.html",'<div class="portlet light">\n <div class="portlet-title">\n <div class="caption">\n <span data-ng-if="chatRoom" class="label label-sm label-default">{{chatRoom.status}}</span>\n <span data-ng-if="chatRoom.ChatWebsite"> | </span>\n <span data-ng-if="chatRoom.ChatWebsite" class="caption-subject font-green-sharp bold uppercase">{{chatRoom.ChatWebsite.name | truncate: 25: \'...\': true}}</span>\n </div>\n <div class="actions">\n <button class="btn btn-icon-only btn-primary" data-ng-click="addAgent(chatRoom.id)" data-ng-disabled="chatRoom.status === \'CLOSED\'">\n <i class="fa fa-user-plus"></i>\n </button>\n <button class="btn btn-icon-only" data-ng-class="{\'btn-success\':chatRoom.status !== \'CLOSED\',\'grey-cascade\':chatRoom.status === \'CLOSED\'}" data-ng-click="closeRoom(chatRoom.id)" data-ng-if="chatRoom.ChatVisitors.length" data-ng-disabled="chatRoom.status === \'CLOSED\' && chatRoom.disposition">\n <i data-ng-class="{\'fa fa-upload\':chatRoom.status !== \'CLOSED\',\'icon-target\':chatRoom.status === \'CLOSED\'}"></i>\n </button>\n <motion-file-download resource="ChatRoom" params="{id:chatRoom.id,controller:\'export\'}" mimetype="\'text/csv\'" filename="\'chat_\'+chatRoom.id+\'_transcript\'" btnclass="btn btn-primary btn-icon-only"></motion-file-download>\n <button class="btn default btn-icon-only" data-ng-if="chatRoom && chatRoom.status !== \'CLOSED\'" data-ng-click="togglePanelLeft()" title="{{\'APPLICATION_RESIZE\' | translate}}">\n <i ng-class="panelRight == \'col-md-12\' ? \'icon-size-actual\' : \'icon-size-fullscreen\'"></i>\n </button>\n </div>\n </div>\n <div class="portlet-body">\n<div class="row">\n <div data-ng-class="panelLeft" data-ng-show="panelLeft">\n <div class="portlet">\n <div class="portlet-body">\n <div class="portlet-title line">\n <div class="form">\n <!-- START TAGS -->\n <div class="form-group">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-tags" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <ui-select multiple data-ng-model="form.tags" theme="bootstrap" on-select="onChanged(chatRoom.id)" on-remove="onChanged(chatRoom.id)">\n <ui-select-match placeholder="Tags...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter:$select.search" class="">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n <!-- END TAGS -->\n </div>\n </div>\n <v-accordion class="vAccordion--default">\n <v-pane data-ng-if="chatRoom.ChatVisitors.length" data-ng-repeat="chatVisitor in chatRoom.ChatVisitors" expanded="true">\n <v-pane-header>\n <ng-letter-avatar\n height="40"\n width="40"\n data="{{chatRoom.ChatVisitor.fullname}}"\n fontsize="25"\n avatarcustombgcolor="#B0B0B0"\n charCount="2"\n avatarcustomborder="border:2px solid #EA4C61"\n shape="round"></ng-letter-avatar>\n </v-pane-header>\n <v-pane-content>\n {{\'APPLICATION_ROOM_ID\' | translate}}: <p>{{chatRoom.id}}</p>\n {{\'APPLICATION_NAME\' | translate}}: <p>{{chatRoom.ChatVisitor.fullname}}</p>\n {{\'APPLICATION_EMAIL\' | translate}}: <p><a data-ng-click="openContact(chatRoom.ChatVisitor.email)" href="">{{chatRoom.ChatVisitor.email}}</a></p>\n <span data-ng-if="chatRoom.ChatVisitor.labelData1">{{chatRoom.ChatVisitor.labelData1}}: <p>{{chatRoom.ChatVisitor.data1}}</p></span>\n <span data-ng-if="chatRoom.ChatVisitor.labelData2">{{chatRoom.ChatVisitor.labelData2}}: <p>{{chatRoom.ChatVisitor.data2}}</p></span>\n <span data-ng-if="chatRoom.ChatVisitor.labelData3">{{chatRoom.ChatVisitor.labelData3}}: <p>{{chatRoom.ChatVisitor.data3}}</p></span>\n {{\'APPLICATION_REMOTE_ADDRESS\' | translate}}: <p>{{chatRoom.ChatVisitor.remote_address}}</p>\n {{\'APPLICATION_BROWSER\' | translate}}: <p>{{chatRoom.ChatVisitor.browser}}</p>\n {{\'APPLICATION_REFERER\' | translate}}:<p>{{chatRoom.ChatVisitor.referer}} - {{enquiry.ChatWebsite.name}}</p>\n {{\'APPLICATION_OS\' | translate}}: <p>{{chatRoom.ChatVisitor.os}}</p>\n </v-pane-content>\n </v-pane>\n\n <v-pane data-ng-repeat="user in chatRoom.Users | filter:{ id: \'!\' + user.id}">\n <v-pane-header>\n <ng-letter-avatar\n height="40"\n width="40"\n data="{{user.fullname}}"\n fontsize="25"\n avatarcustombgcolor="#B0B0B0"\n avatarcustomborder="border:2px solid #3399CC"\n charCount="2"\n shape="round"></ng-letter-avatar>\n </v-pane-header>\n <v-pane-content>\n {{\'APPLICATION_NAME\' | translate}}: <p>{{user.fullname}}</p>\n {{\'APPLICATION_ROLE\' | translate}}: <p>{{user.role}}</p>\n {{\'APPLICATION_INTERNAL\' | translate}}: <p>{{user.internal}}</p>\n {{\'APPLICATION_EMAIL\' | translate}}: <p><a data-ng-href="mailto:{{user.email}}">{{user.email}}</a></p>\n </v-pane-content>\n </v-pane>\n </v-accordion>\n </div>\n </div>\n </div>\n <div data-ng-class="panelRight">\n <div class="note note-info" data-ng-if="chatRoom && chatRoom.status == \'CLOSED\'">\n <h4 class="block"><i class="icon-info"></i> {{\'MESSAGE_CHAT_ROOM_CLOSED\' | translate}}!</h4>\n <p>\n <strong>{{\'MESSAGE_CHAT_ROOM_CLOSED_DETAILS\' | translate}}.</strong>\n </p>\n <hr>\n <p>\n <i class="icon-target"></i> {{\'APPLICATION_DISPOSITION\' | translate}}: <strong>{{chatRoom.disposition}}</strong>\n </p>\n <p>\n <i class="icon-star"></i> {{\'APPLICATION_RATING\' | translate}}: <strong>{{chatRoom.rating | ucfirst}}</strong>\n </p>\n <p>\n <i class="icon-note"></i> {{\'APPLICATION_RATING_MESSAGE\' | translate}}: <strong>{{chatRoom.ratingMessage}}</strong>\n </p>\n <p>\n <i class="icon-calendar"></i> {{\'APPLICATION_UPDATED_AT\' | translate}}: <strong>{{chatRoom.updatedAt | date:\'medium\'}}</strong> (<span am-time-ago="chatRoom.updatedAt"></span>)\n </p>\n </div>\n <div class="portlet light bordered">\n <div class="portlet-body">\n <div id="chat-box" schroll-bottom="chatRoom.ChatMessages">\n <ul class="chats">\n <li data-ng-repeat="message in chatRoom.ChatMessages" data-ng-class="message.UserId == user.id ? \'out\' : \'in\'">\n <div class="avatar" data-ng-class="message.ChatVisitor ? \'pretty-avatar-v\' : \'pretty-avatar\'">\n <ng-letter-avatar\n data-ng-if="!message.ChatVisitor"\n height="40"\n width="40"\n fontsize="25"\n data="{{message.User.fullname}}"\n avatarcustombgcolor="#B0B0B0"\n avatarcustomborder="border:2px solid #3399CC"\n charCount="2"\n shape="round"></ng-letter-avatar>\n <ng-letter-avatar\n data-ng-if="message.ChatVisitor"\n height="40"\n width="40"\n fontsize="25"\n data="{{message.ChatVisitor.fullname}}"\n avatarcustombgcolor="#B0B0B0"\n avatarcustomborder="border:2px solid #EA4C61"\n charCount="2"\n shape="round"></ng-letter-avatar>\n </div>\n <div class="message">\n <span class="arrow"></span>\n <a data-ng-click="message.ChatVisitor && openContact(chatRoom.ChatVisitor.email)" class="name">{{message.User.fullname || message.ChatVisitor.fullname}} </a>\n <i class="icon-calendar" title="{{message.createdAt | date:\'MMM d, y HH:mm:ss\'}}"></i> <span am-time-ago="message.createdAt"></span>\n <ng-emoticons emoticons-data="message.body"></ng-emoticons>\n </div>\n </li>\n <li data-ng-if="chatRoom.status === \'CLOSED\'">\n <div class="media-body" style="text-align: center;">\n <h5 class="media-heading"><i>{{\'MESSAGE_CHAT_CLOSED\' | translate | lowercase}}</i></h5>\n </div>\n </li>\n </ul>\n </div>\n <div class="chat-form" data-ng-if="chatRoom && isMyRoom(chatRoom.Users)">\n <div class="input-cont">\n <input class="form-control" type="text" placeholder="Type a message here..." ng-enter="sendMessage()" data-ng-model="message.body" data-ng-disabled="chatRoom.status === \'CLOSED\'"/>\n </div>\n <div class="btn-cont">\n <span class="arrow"></span>\n <a href="#" class="btn blue icn-only" data-ng-disabled="chatRoom.status === \'CLOSED\'" data-ng-click="sendMessage()">\n <i class="fa fa-check icon-white"></i>\n </a>\n </div>\n </div>\n <div class="form-group chat-canned-answer-div" data-ng-if="chatRoom.status !== \'CLOSED\'" data-ng-class="{\'has-error\': forms.compose.subject.$invalid && forms.compose.$submitted}">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-magic" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <input type="text"\n data-ng-model="modelOptions.selectedAnswer"\n uib-typeahead="key for key in getAnswers($viewValue)"\n placeholder="Canned answers.."\n typeahead-loading="loadingLocations"\n typeahead-no-results="noResults"\n typeahead-on-select="onSelect($item)"\n class="form-control">\n <i ng-show="loadingLocations" class="glyphicon glyphicon-refresh"></i>\n <div ng-show="noResults">\n <i class="glyphicon glyphicon-remove"></i> No Results Found\n </div>\n <span data-ng-show="forms.compose.subject.$invalid && forms.compose.$submitted" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n </div>\n </div>\n\n </div>\n </div>\n </div>\n</div>\n</div>\n</div>\n"),a.put("app/channels/chat/room/room.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bubble"></i>\n <a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-users"></i>\n <a href="#">{{ \'APPLICATION_INTERACTIONS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <div class="row inbox">\n <div class="col-md-2">\n <ul class="inbox-nav margin-bottom-10">\n <li data-ng-class="{active: $state.includes(\'main.channels.chat.room.internal\')}">\n <a href="/channels/chat/room/internal/list" class="btn">\n {{\'APPLICATION_INTERNAL\' | translate}}\n </a>\n <b></b>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.channels.chat.room.external\')}">\n <a href="/channels/chat/room/external/list" class="btn">\n {{\'APPLICATION_EXTERNAL\' | translate}}\n </a>\n <b></b>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.channels.chat.room.group\')}">\n <a href="/channels/chat/room/group/list" class="btn">\n {{\'APPLICATION_GROUPS\' | translate}}\n </a>\n <b></b>\n </li>\n </ul>\n </div>\n\n <div class="col-md-10">\n <div class="room-content">\n <div ui-view></div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/room/template.html",'<div ng-bind-html="neText" ne-hljs></div>\n<div class="ne-video" ng-if="video.host" class="fade">\n <div class="ne-video-preview" ng-hide="nePlayVideo || !options.video.details">\n <div class="ne-video-thumb" ng-click="nePlayVideo=!nePlayVideo">\n <img ng-src="{{video.thumbnail}}" alt=""/>\n <i class="fa fa-play-circle-o"></i>\n </div>\n <div class="ne-video-detail">\n <div class="ne-video-title">\n <a ng-href="{{video.url}}">{{video.title}}</a>\n </div>\n <div class="ne-video-desc">\n {{video.description}}\n </div>\n <div class="ne-video-stats">\n <span><i class="fa fa-eye"></i> {{video.views}}</span>\n <span><i class="fa fa-heart"></i> {{video.likes}}</span>\n </div>\n </div>\n </div>\n <div class="ne-video-player" ng-if="nePlayVideo || !(options.video.details)">\n <iframe ng-src="{{video.embedSrc}}" frameBorder="0" width="{{video.width}}" height="{{video.height}}" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>\n </div>\n</div>\n<div class="ne-video" ng-if="video.basic">\n <div class="ne-video-player">\n <div class="player">\n <video ng-src="{{video.basic}}" controls></video>\n </div>\n </div>\n</div>\n<div ng-init="neImageLong=false" ng-class="{false:\'ne-image\', true:\'ne-image ne-image-long\'}[neImageLong]"\nng-if="image.url">\n<div class="ne-image-wrapper">\n <img ng-src="{{image.url}}" ng-click="neImageLong=!neImageLong" alt=""/>\n</div>\n</div>\n<!-- <div class="ne-pdf" ng-if="pdf.url">\n <div class="ne-pdf-preview" ng-hide="neShowPdf">\n <div class="ne-pdf-icon">\n <i class="fa fa-file-pdf-o"></i>\n </div>\n <div class="ne-pdf-detail" >\n <div class="ne-pdf-title">\n <a href="">{{pdf.url}}</a>\n </div>\n <div class="ne-pdf-view">\n\n <button><i class="fa fa-download"></i> <a ng-href="{{pdf.url}}" target="_blank">Download</a></button>\n <button ng-click="neShowPdf=!neShowPdf"><i class="fa fa-eye"></i> View PDF</button>\n\n </div>\n </div>\n </div>\n <div class="ne-pdf-viewer" ng-if="neShowPdf" ng-show="neShowPdf">\n <iframe ng-src="{{pdf.url}}" frameBorder="0"></iframe>\n </div>\n\n</div>\n<div class="ne-audio" ng-if="audio.url">\n <audio ng-src="{{audio.url}}" controls></audio>\n</div> -->\n'), -a.put("app/channels/chat/room/view.tags.modal.html",'<div class="modal-header" data-ng-init="initModal()">\n <h3 class="modal-title">{{ \'APPLICATION_TAGS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <!-- START TRANSPORT -->\n <div class="form-group">\n <form name="form" novalidate>\n <!-- START TAGS -->\n <div class="form-group">\n <ui-select multiple data-ng-model="item.tags" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_TAGS\' | translate}}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter: $select.search">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END TAGS -->\n </form>\n </div>\n <!-- END TRANSPORT -->\n</div>\n<div class="modal-footer">\n <button type="button" class="btn" data-ng-class="button.class" data-ng-click="button.click()"data-ng-repeat="button in modal.buttons">{{button.text | translate}}</button>\n <!-- <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button> -->\n</div>\n'),a.put("app/channels/chat/visitor/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bubble"></i>\n <a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-question"></i>\n <a href="/channels/chat/visitors/list">{{ \'APPLICATION_VISITORS\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-question font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_VISITORS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/visitor/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bubble"></i>\n <a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-question"></i>\n <a href="/channels/chat/visitors/list">{{ \'APPLICATION_VISITORS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="chatVisitor">\n <a href="#">{{chatVisitor.fullname}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/visitor.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{chatVisitor.fullname}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.chat.visitors.view.profile\')}">\n <a data-ng-href="/channels/chat/visitors/view/{{chatVisitor.id}}/profile">\n <i class="icon-tag"></i>\n {{ \'APPLICATION_PROFILE\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/visitor/view/view.profile.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_PROFILE\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body" data-ng-init="initView()">\n <div>\n <h4 class="profile-desc-title">{{chatVisitor.email}}</h4>\n <div class="margin-top-20 profile-desc-link">\n <i class="icon-magnifier"></i>\n <a href="#" class="inactive-link">{{chatVisitor.origin}}</a>\n </div>\n <div class="margin-top-20 profile-desc-link">\n <i class="icon-globe"></i>\n <a href="#" class="inactive-link">{{chatVisitor.remote_address}}</a>\n </div>\n <div class="margin-top-20 profile-desc-link">\n <i class="icon-user"></i>\n <a href="#" class="inactive-link">{{chatVisitor.user_agent | truncate: 50: \'...\'}}</a>\n </div>\n <div class="margin-top-20 profile-desc-link">\n <i class="icon-flag"></i>\n <a href="#" class="inactive-link">{{chatVisitor.visitor_language}}</a>\n </div>\n <div class="margin-top-20 profile-desc-link">\n <i class="icon-home"></i>\n <a href="#" class="inactive-link">{{chatVisitor.referer}}</a>\n </div>\n <div class="margin-top-20 profile-desc-link">\n <i class="icon-cursor"></i>\n <a href="#" class="inactive-link">{{chatVisitor.browser}}</a>\n </div>\n <div class="margin-top-20 profile-desc-link">\n <i class="icon-screen-desktop"></i>\n <a href="#" class="inactive-link">{{chatVisitor.os}}</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/chat/website/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bubble"></i>\n <a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-globe"></i>\n <a href="#">{{ \'APPLICATION_WEB_SITES\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_WEB_SITES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/channels/chat/websites/wizard">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_WEB_SITE\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/website/view/action/list/list.html",'<div class="row" data-ng-init="initActons()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACTIONS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/channels/chat/websites/view/{{chatWebsite.id}}/actions/wizard" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ACTION\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/chat/website/view/action/view/view.html",'\n<div class="row" data-ng-init="initAction()">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-directions font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACTION\' | translate }}</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="forms.settings" ng-submit="updateItem()" novalidate>\n <!-- START APP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app.$touched || forms.settings.$submitted) && forms.settings.app.$invalid}">\n <label class="control-label">{{ \'APPLICATION_APPLICATION\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.app" name="app" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_APPLICATION\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="app.value as app in apps | filter: $select.search">\n <div ng-bind-html="app.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.app.$touched || forms.settings.$submitted) && forms.settings.app.$invalid && forms.settings.app.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APP -->\n\n <div class="app-settings" ng-slide-down="application.app === \'queue\'" lazy-render duration="1" data-ng-init="getQueues()">\n <!-- START QUEUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.queue.$touched || forms.settings.$submitted) && forms.settings.queue.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.ChatQueueId" name="queue" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="queues.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_QUEUES_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/chat/queues/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.queue.$touched || forms.settings.$submitted) && forms.settings.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'agent\'" lazy-render duration="1" data-ng-init="getAgents()">\n <!-- START AGENT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.agent.$touched || forms.settings.$submitted) && forms.settings.agent.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.UserId" name="agent" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.fullname}}</ui-select-match>\n <ui-select-choices repeat="agent.id as agent in agents | filter: $select.search">\n <div ng-bind-html="agent.fullname | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="agents.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AGENTS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/staff/agents/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.agent.$touched || forms.settings.$submitted) && forms.settings.agent.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END AGENT -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1" data-ng-init="getMailAccounts();getTemplates()">\n <!-- START SENDMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="email" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" min="1" required/>\n <span data-ng-show="(forms.settings.from.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.mail.$touched || forms.settings.$submitted) && forms.settings.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in mailAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.template.$touched || forms.settings.$submitted) && forms.settings.template.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEMPLATE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data9" name="template" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.template.$touched || forms.settings.$submitted) && forms.settings.template.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SENDMAIL -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1" data-ng-init="getSmsAccounts()">\n <!-- START SENDSms -->\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.to.$touched || forms.settings.$submitted) && forms.settings.to.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" ng-pattern="/^[\\+]?[0-9]+$/" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" required/>\n <span data-ng-show="(forms.settings.to.$touched || forms.settings.$submitted) && forms.settings.to.$invalid && forms.settings.to.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in smsAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.text.$touched || forms.text.$submitted) && forms.settings.text.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <textarea id="text" class="form-control maxlength-handler" maxlength="160" name="text" data-ng-model="application.data6" required></textarea>\n <span data-ng-show="(forms.settings.text.$touched || forms.settings.$submitted) && forms.settings.text.$invalid && forms.settings.text.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <!-- END SENDSms -->\n </div>\n\n <!-- START INTERVAL_TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.intType.$touched || forms.settings.$submitted) && forms.settings.intType.$invalid}">\n <label class="control-label">{{ \'APPLICATION_INTERVAL_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.intType" theme="bootstrap" name="intType" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="intType.value as intType in $application.intTypes | filter: $select.search">\n {{ intType.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.intType.$touched || forms.settings.$submitted) && forms.settings.intType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVAL_TYPE -->\n\n <div class="app-settings" ng-slide-down="application.intType === \'custom\'" lazy-render duration="1">\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="application.alwaysTime">\n <uib-timepicker name="t_from" data-ng-model="application.t_from" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker>\n </fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="application.alwaysTime"><uib-timepicker name="t_to" data-ng-model="application.t_to" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker></fieldset>\n <!-- <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="application.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label> -->\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- START ALWAYS -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALWAYS\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="application.alwaysTime"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n <!-- <input type="checkbox" data-ng-model="application.alwaysTime"> -->\n </label>\n </div>\n </div>\n <!-- END ALWAYS -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.md_from" theme="bootstrap" name="md_from">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_to && application.md_to!==\'always\' && monthDay>application.md_to && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.md_to" theme="bootstrap" name="md_to">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_from && application.md_from!==\'always\' && monthDay<application.md_from && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.intType === \'list\'" lazy-render duration="1" data-ng-init="getIntervals()">\n\n <!-- START INTERVALS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.IntervalId.$touched || forms.settings.$submitted) && forms.settings.IntervalId.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVALS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.IntervalId" theme="bootstrap" name="IntervalId" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="interval.id as interval in intervals | filter: $select.search">\n {{ interval.name}}\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="intervals.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_INTERVAL_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/intervals/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.IntervalId.$touched || forms.settings.$submitted) && forms.settings.IntervalId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVALS -->\n\n </div>\n <button class="btn green-haze" type="submit">{{\'APPLICATION_UPDATE\' | translate}}</button>\n </form>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), -a.put("app/channels/chat/website/view/action/wizard/wizard.html",'\n<div class="row" data-ng-init="initWizard()">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-directions font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACTION\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_APPLICATION\' | translate}}" canexit="formValidation(forms.action.$valid)">\n <form name="forms.action" novalidate>\n <!-- START APP -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.action.$submitted && forms.action.app.$invalid}">\n <label class="control-label">{{ \'APPLICATION_APPLICATION\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.app" name="app" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_APPLICATION\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="app.value as app in apps | filter: $select.search">\n <div ng-bind-html="app.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.action.$submitted && forms.action.app.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APP -->\n\n <div class="app-settings" ng-slide-down="application.app === \'agent\'" lazy-render duration="1" data-ng-init="getAgents()">\n <!-- START AGENT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.agent.$touched || forms.action.$submitted) && forms.action.agent.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.UserId" name="agent" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.fullname}}</ui-select-match>\n <ui-select-choices repeat="agent.id as agent in agents | filter: $select.search">\n <div ng-bind-html="agent.fullname | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="agents.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AGENTS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/staff/agents/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.agent.$touched || forms.action.$submitted) && forms.action.agent.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END AGENT -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'queue\'" lazy-render duration="1" data-ng-init="getQueues()">\n <!-- START QUEUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.queue.$touched || forms.action.$submitted) && forms.action.queue.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.ChatQueueId" name="queue" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="queues.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_QUEUES_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/chat/queues/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.queue.$touched || forms.action.$submitted) && forms.action.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1" data-ng-init="getMailAccounts();getTemplates()">\n <!-- START SENDMAIL -->\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="email" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" min="1" required/>\n <span data-ng-show="(forms.action.from.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.mail.$touched || forms.action.$submitted) && forms.action.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in mailAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEMPLATE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data9" name="template" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SENDMAIL -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1" data-ng-init="getSmsAccounts()">\n <!-- START SENDSms -->\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.to.$touched || forms.action.$submitted) && forms.action.to.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" ng-pattern="/^[\\+]?[0-9]+$/" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" required/>\n <span data-ng-show="(forms.action.to.$touched || forms.action.$submitted) && forms.action.to.$invalid && forms.action.to.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in smsAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.text.$touched || forms.action.$submitted) && forms.action.text.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <textarea id="text" class="form-control maxlength-handler" maxlength="160" name="text" data-ng-model="application.data6" required></textarea>\n <span data-ng-show="(forms.action.text.$touched || forms.action.$submitted) && forms.action.text.$invalid && forms.action.text.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <!-- END SENDSms -->\n </div>\n\n <!-- START INTERVAL_TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.intType.$touched || forms.action.$submitted) && forms.action.intType.$invalid}">\n <label class="control-label">{{ \'APPLICATION_INTERVAL_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.intType" theme="bootstrap" name="intType" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="intType.value as intType in $application.intTypes | filter: $select.search">\n {{ intType.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.intType.$touched || forms.action.$submitted) && forms.action.intType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVAL_TYPE -->\n\n <div class="app-settings" ng-slide-down="application.intType === \'custom\'" lazy-render duration="1">\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="application.alwaysTime">\n <uib-timepicker name="t_from" data-ng-model="application.t_from" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker>\n </fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="application.alwaysTime"><uib-timepicker name="t_to" data-ng-model="application.t_to" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker></fieldset>\n <!-- <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="application.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label> -->\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- START ALWAYS -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALWAYS\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="application.alwaysTime"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n <!-- <input type="checkbox" data-ng-model="application.alwaysTime"> -->\n </label>\n </div>\n </div>\n <!-- END ALWAYS -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.md_from" theme="bootstrap" name="md_from">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_to && application.md_to!==\'always\' && monthDay>application.md_to && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.md_to" theme="bootstrap" name="md_to">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_from && application.md_from!==\'always\' && monthDay<application.md_from && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.intType === \'list\'" lazy-render duration="1" data-ng-init="getIntervals()">\n\n <!-- START INTERVALS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.IntervalId.$touched || forms.action.$submitted) && forms.action.IntervalId.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVALS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.IntervalId" theme="bootstrap" name="IntervalId" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="interval.id as interval in intervals | filter: $select.search">\n {{ interval.name}}\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="intervals.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_INTERVAL_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/intervals/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.IntervalId.$touched || forms.action.$submitted) && forms.action.IntervalId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVALS -->\n\n </div>\n\n <input class="btn green-haze" type="submit" data-ng-click="next()" value="{{\'APPLICATION_CONTINUE\' | translate}}"/>\n </form>\n </wz-step>\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input class="btn green-haze" type="submit" data-ng-click="next()" value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/website/view/disposition/modal/add.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_DISPOSITIONS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.form.$touched || form.$submitted) && form.form.$invalid}">\n <div class="">\n <input type="text" name="form" placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}" class="form-control" data-ng-model="name" required/>\n <span data-ng-show="form.form.$touched && form.form.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <!-- END NAME -->\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()" data-ng-show="form.$valid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/chat/website/view/disposition/view/view.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_DISPOSITIONS\' | translate}}</span>\n </div>\n <div class="actions actions-md">\n <a href="#" class="btn btn-icon-only green" data-ng-click="addDisposition();">\n <i class="fa fa-plus"></i>\n </a>\n </div>\n </div>\n <div class="portlet-body" data-ng-init="initView()">\n <div class="tab-content">\n <div class="row" data-ng-hide="dispositions.length">\n <div class="col-md-12">\n <div class="note note-info">\n <h4 class="block">Info! {{\'MESSAGE_NO_DISPOSITIONS_AVAILABLE\' | translate}}</h4>\n </div>\n </div>\n </div>\n\n <!-- GENERAL TAB -->\n <div class="row" data-ng-repeat="disposition in dispositions">\n <div class="col-md-12 form-group">\n <div class="input-group">\n <div>\n <input class="form-control" type="text" placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}" data-ng-model="disposition.name">\n </div>\n <span class="input-group-btn">\n <button class="btn btn-success" type="button" data-ng-click="updateDisposition(disposition.id, disposition.name);"><i class="fa fa-cloud-upload fa-fw"></i> {{\'APPLICATION_UPDATE\' | translate}}</button>\n <button class="btn btn-danger" type="button" data-ng-click="deleteDisposition(disposition.id);"><i class="fa fa-times fa-fw"></i> {{\'APPLICATION_DELETE\' | translate}}</button>\n </span>\n </div>\n </div>\n </div>\n <!-- END GENERAL TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/chat/website/view/embedding/view/view.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_EMBEDDING\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group">\n <a class="btn green-jungle" href="#" data-ng-click="copyToClipboard();">\n <i class="fa fa-clipboard"></i> {{\'APPLICATION_COPY_TO_CLIPBOARD\' | translate}}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <div class="row">\n <div class="col-md-12">\n <h3>{{\'APPLICATION_EMBED_SNIPPET\' | translate}}</h3>\n <p>\n {{\'MESSAGE_EMBED_SNIPPET\' | translate}}\n </p>\n <div class="form-body">\n <div class="form-group">\n <div class="col-md-12">\n <code-mirror lang="html" model="snippetCode"></code-mirror>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/chat/website/view/form/view/view.html",'<div class="row" data-ng-init="getChatWebsiteFields(\'online\');getChatWebsiteFields(\'offline\');">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_ONLINE\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_OFFLINE\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="row">\n <div class="col-md-12">\n <div class="tab-content">\n <div class="tab-pane active" id="tab_1_1">\n <div class="row">\n <div class="col-md-6">\n <div class="portlet">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-book-open font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_FIELDS_SELECTED\' | translate }}</span>\n </div>\n <div class="actions">\n <div class="btn-group">\n <a class="btn green-jungle" href="#" data-ng-click="saveForm(\'online\');">\n <i class="fa fa-check"></i> {{ \'APPLICATION_SAVE\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <div fb-builder="online"></div>\n </div>\n </div>\n </div>\n <div class="col-md-6">\n <div class="portlet">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-book-open font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_FIELDS_AVAILABLE\' | translate }}</span>\n </div>\n </div>\n <div class="portlet-body">\n <div fb-components></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="tab-pane" id="tab_1_2">\n <div class="row">\n <div class="col-md-6">\n <div class="portlet">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-book-open font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_FIELDS_SELECTED\' | translate }}</span>\n </div>\n <div class="actions">\n <div class="btn-group">\n <a class="btn green-jungle" href="#" data-ng-click="saveForm(\'offline\');">\n <i class="fa fa-check"></i> {{ \'APPLICATION_SAVE\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <div fb-builder="offline"></div>\n </div>\n </div>\n </div>\n <div class="col-md-6">\n <div class="portlet">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-book-open font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_FIELDS_AVAILABLE\' | translate }}</span>\n </div>\n </div>\n <div class="portlet-body">\n <div fb-components></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n</div>\n'),a.put("app/channels/chat/website/view/hooks/view/view.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_HOOKS\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_ACCEPT\' | translate}}</a>\n </li>\n <li >\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_REJECT\' | translate}}</a>\n </li>\n <li >\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{\'APPLICATION_CLOSE\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- ACCEPT TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.accept" data-ng-submit="forms.accept.$valid && updateItem()" novalidate>\n <!-- START ACCEPT URL -->\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.accept.method.$touched || forms.accept.$submitted) && forms.accept.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.acceptMethod" name="method" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.accept.method.$touched || forms.accept.$submitted) && forms.accept.method.$invalid && forms.accept.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.accept.url.$touched || forms.accept.$submitted) && forms.accept.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.acceptUrl" ng-required="account.acceptMethod"/>\n <span data-ng-show="(forms.accept.url.$touched || forms.accept.$submitted) && forms.accept.url.$invalid && forms.accept.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <!-- END ACCEPT URL-->\n <!-- START ACTIONS-->\n <!-- START PAUSE -->\n <div class="row" ng-repeat = "action in account.actions">\n <div ng-switch="action.action">\n <div ng-switch-when="pause">\n <div class="form-group col-md-4">\n <label class="control-label">{{\'APPLICATION_PAUSE\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-change="resetActionData(action)"\n data-ng-model="action.enabled"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <div ng-if="action.enabled" class="form-group col-md-8">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}</label>\n <ui-select name="action" data-ng-model="action.type" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_TYPE\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat=" pause.name as pause in pauses | filter: $select.search">\n <div ng-bind-html="pause.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n </div>\n <!-- END ACTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ACCEPT TAB -->\n <!-- START REJECT TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.reject" data-ng-submit="forms.reject.$valid && updateItem()" novalidate>\n <!-- START REJECT URL -->\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.reject.method.$touched || forms.reject.$submitted) && forms.reject.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.rejectMethod" name="method" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.reject.method.$touched || forms.reject.$submitted) && forms.reject.method.$invalid && forms.reject.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.reject.url.$touched || forms.reject.$submitted) && forms.reject.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.rejectUrl" ng-required="account.rejectMethod"/>\n <span data-ng-show="(forms.reject.url.$touched || forms.reject.$submitted) && forms.reject.url.$invalid && forms.reject.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <!-- END REJECT URL -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END REJECT TAB -->\n <!-- START CLOSE TAB -->\n <div class="tab-pane" id="tab_1_3">\n <form name="forms.close" data-ng-submit="forms.close.$valid && updateItem()" novalidate>\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.close.method.$touched || forms.close.$submitted) && forms.close.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.closeMethod" name="method" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.close.method.$touched || forms.close.$submitted) && forms.close.method.$invalid && forms.close.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.close.url.$touched || forms.close.$submitted) && forms.close.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.closeUrl" ng-required="account.closeMethod"/>\n <span data-ng-show="(forms.close.url.$touched || forms.close.$submitted) && forms.close.url.$invalid && forms.close.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END CLOSE TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'), -a.put("app/channels/chat/website/view/proactive/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{title}}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.type.$touched || form.$submitted) && form.type.$invalid}">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}</label>\n <ui-select name="type" ng-model="item.type" theme="bootstrap" ng-disabled="disabled">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in possibleType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END TYPE -->\n\n <!-- START SELECTOR -->\n <div class="form-group" data-ng-if="item.type === \'mouseOver\'" data-ng-class="{\'has-error\': (form.selector.$touched || form.$submitted) && form.selector.$invalid}">\n <label class="control-label">{{\'APPLICATION_SELECTOR\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="selector" placeholder="{{\'APPLICATION_SELECTOR\' | translate}}" class="form-control" data-ng-model="item.selector" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SELECTOR -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-if="item.type === \'timeout\'" data-ng-class="{\'has-error\': (form.timeout.$touched || form.$submitted) && form.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="item.timeout" min="0" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/chat/website/view/proactive/list/list.html",'<div class="row" data-ng-init="initProactiveActions()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_PROACTIVE_ACTIONS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="#" data-toggle="dropdown" data-ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_PROACTIVE_ACTION\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/chat/website/view/setting/view/view.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body" data-ng-init="initView()">\n <form name="forms.info" data-ng-submit="forms.info.$valid && updateItemChatWebsite()" novalidate>\n <!-- START LIST -->\n <div class="form-group" data-ng-if="license.cm">\n <label class="control-label">{{\'APPLICATION_LIST\' | translate}}</label>\n <div class="input-group">\n\n <ui-select data-ng-model="chatWebsite.ListId" name="list" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_LIST\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="list.id as list in lists | filter: $select.search">\n <div ng-bind-html="list.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n\n <span class="input-group-btn">\n <button type="button" data-ng-click="chatWebsite.ListId = null" class="btn btn-default">\n <span class="glyphicon glyphicon-trash"></span>\n </button>\n </span>\n\n </div>\n </div>\n <!-- END LIST -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/chat/website/view/snippet/view/view.html",'<div class="row" data-ng-init="initView();getServiceMailAccount();">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SNIPPET\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_APPEARANCE\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_FORMS\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{\'APPLICATION_LABELS\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_4" data-toggle="tab">{{\'APPLICATION_SETTINGS\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_5" data-toggle="tab">{{\'APPLICATION_OFFLINE\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="row">\n <div class="col-md-8">\n <div class="tab-content">\n\n <!-- APPEARANCE TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.formAppearance" data-ng-submit="forms.formAppearance.$valid && updateItem()" novalidate>\n\n <!-- START MAIN COLOR -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAppearance.mainColor.$touched || forms.formAppearance.$submitted) && forms.formAppearance.host.$invalid}">\n <label class="control-label">{{\'APPLICATION_MAIN_COLOR\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input colorpicker type="text" name="mainColor" placeholder="{{\'APPLICATION_MAIN_COLOR\' | translate}}" style="color:{{chatWebsite.color}}" class="form-control" data-ng-model="chatWebsite.color" required/>\n <span data-ng-show="(forms.formAppearance.mainColor.$touched || forms.formAppearance.$submitted) && forms.formAppearance.mainColor.$invalid && forms.formAppearance.mainColor.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MAIN COLOR -->\n\n <!-- START FOCUS COLOR -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAppearance.focusColor.$touched || forms.formAppearance.$submitted) && forms.formAppearance.focusColor.$invalid}">\n <label class="control-label">{{\'APPLICATION_FOCUS_COLOR\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input colorpicker type="text" name="focusColor" placeholder="{{\'APPLICATION_FOCUS_COLOR\' | translate}}" style="color:{{chatWebsite.color_focus}}" class="form-control" data-ng-model="chatWebsite.color_focus" required/>\n <span data-ng-show="(forms.formAppearance.focusColor.$touched || forms.formAppearance.$submitted) && forms.formAppearance.focusColor.$invalid && forms.formAppearance.focusColor.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FOCUS COLOR -->\n\n <!-- START BUTTON COLOR -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAppearance.buttonColor.$touched || forms.formAppearance.$submitted) && forms.formAppearance.buttonColor.$invalid}">\n <label class="control-label">{{\'APPLICATION_BUTTON_COLOR\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input colorpicker type="text" name="buttonColor" placeholder="{{\'APPLICATION_BUTTON_COLOR\' | translate}}" style="color:{{chatWebsite.color_button}}" class="form-control" data-ng-model="chatWebsite.color_button" required/>\n <span data-ng-show="(forms.formAppearance.buttonColor.$touched || forms.formAppearance.$submitted) && forms.formAppearance.buttonColor.$invalid && forms.formAppearance.buttonColor.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END BUTTON COLOR -->\n\n <!-- START HEADER SHAPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAppearance.headerShape.$touched || forms.formAppearance.$submitted) && forms.formAppearance.headerShape.$invalid}">\n <label class="control-label">{{\'APPLICATION_HEADER_SHAPE\' | translate}}</label>\n <!-- <input colorpicker type="text" name="animationToggle" placeholder="{{\'APPLICATION_BUTTON_COLOR\' | translate}}" class="form-control" data-ng-model="chatWebsite.animation" required/> -->\n <ui-select data-ng-model="chatWebsite.header_shape" name="headerShape" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$translate.instant(\'APPLICATION_\' + $select.selected.toUpperCase())}}</ui-select-match>\n <ui-select-choices repeat="headerShape in [\'rounded\',\'squared\'] | filter: $select.search">\n <div ng-bind-html="$translate.instant(\'APPLICATION_\' + headerShape.toUpperCase()) | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END HEADER SHAPE -->\n\n <!-- START ANIMATION TOGGLE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAppearance.animationToggle.$touched || forms.formAppearance.$submitted) && forms.formAppearance.animationToggle.$invalid}">\n <label class="control-label">{{\'APPLICATION_ANIMATION\' | translate}}</label></br>\n <!-- <input colorpicker type="text" name="animationToggle" placeholder="{{\'APPLICATION_BUTTON_COLOR\' | translate}}" class="form-control" data-ng-model="chatWebsite.animation" required/> -->\n <input\n bs-switch\n class="form-control"\n ng-model="chatWebsite.animation"\n type="checkbox"\n switch-active="{{ true }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END ANIMATION TOGGLE -->\n\n <div class="portlet-title tabbable-line margin-top20">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_WHITE_LABEL\' | translate}}</span>\n </div>\n </div>\n\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DEFAULT\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="chatWebsite.defaultWhiteLabel"\n data-ng-init="chatWebsite.defaultWhiteLabel = license.custom ? chatWebsite.defaultWhiteLabel : true"\n type="checkbox"\n name="defaultWhitelabel"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END DEFAULT -->\n <!-- START LABEL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAppearance.whiteLabel.$touched || forms.formAppearance.$submitted) && forms.formAppearance.whiteLabel.$invalid}">\n <label class="control-label">{{\'APPLICATION_WHITE_LABEL\' | translate}}<span data-ng-if="!chatWebsite.defaultWhiteLabel" class="required" aria-required="true">*</span></label>\n <textarea type="password" name="whiteLabel" placeholder="{{\'APPLICATION_WHITE_LABEL\' | translate}}" class="form-control" data-ng-model="chatWebsite.whiteLabel" data-ng-disabled="chatWebsite.defaultWhiteLabel || !license.custom" data-ng-required="!chatWebsite.defaultWhiteLabel && license.custom"/></textarea>\n <span data-ng-show="(forms.formAppearance.whiteLabel.$touched || forms.formAppearance.$submitted) && forms.formAppearance.whiteLabel.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END LABEL -->\n\n <div class="portlet-title tabbable-line margin-top20">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_LOGO\' | translate}}</span>\n </div>\n </div>\n <div class="row">\n\n <div class="form-group col-md-6 col-sm-6">\n <label class="control-label">{{\'APPLICATION_DEFAULT\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="chatWebsite.defaultLogo"\n data-ng-init="chatWebsite.defaultLogo = license.custom ? chatWebsite.defaultLogo : true"\n type="checkbox"\n name="defaultLogo"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END STATUS -->\n <div class="form-group col-md-6 col-sm-6" data-ng-if="!chatWebsite.defaultLogo && license.custom">\n <div class="fileinput fileinput-new" data-provides="fileinput">\n <div class="fileinput-new thumbnail" style="width: 200px; height: 150px;">\n <img ng-src="assets/images/media/noProfileImage.png" alt=""/>\n </div>\n <div class="fileinput-preview fileinput-exists thumbnail" style="max-width: 200px; max-height: 150px;">\n </div>\n <div>\n <span class="btn default btn-file" data-ng-show="!uploader.queue[0]">\n <span> {{ \'APPLICATION_SELECT_IMAGE\' | translate }} </span>\n <input type="file" nv-file-select="" uploader="uploader"/><br/>\n </span>\n <button type="button" class="btn default" data-ng-show="uploader.queue[0]" data-dismiss="fileinput" ng-click="uploader.queue[0].remove()">\n {{ \'APPLICATION_REMOVE\' | translate }}\n <!-- </button>\n <button type="button" class="btn green-haze" data-ng-show="uploader.queue[0]" data-ng-click="uploader.queue[0].upload()" ng-disabled="uploader.queue[0].isReady || uploader.queue[0].isUploading || uploader.queue[0].isSuccess">\n {{ \'APPLICATION_CONFIRM\' | translate }}\n </button> -->\n </div>\n <p>\n </br> {{ \'MESSAGE_SUPPORTED_FORMATS\' | translate }} <b>jpg, png, jpeg</b>.\n </p>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-2">\n <table class="table" border="0">\n <tbody>\n <tr data-ng-repeat="item in uploader.queue">\n <td style="border-top-style:none">\n <strong>\n {{ item.file.name }}\n </strong>\n </td>\n <td data-ng-show="uploader.isHTML5" nowrap style="border-top-style:none">\n {{ item.file.size/1024/1024|number:2 }} MB\n </td>\n <td nowrap style="border-top-style:none">\n <button type="button" class="btn btn-danger btn-xs" data-ng-click="item.remove()">\n <span class="glyphicon glyphicon-trash"></span> Remove\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n\n <input class="btn green-haze" type="submit" data-ng-click="uploader.queue[0] && uploader.queue[0].upload()" data-ng-disabled="uploader.queue[0].isReady || uploader.queue[0].isUploading || uploader.queue[0].isSuccess" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END APPEARANCE TAB -->\n\n <!-- FORMS TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.formFunctionality" data-ng-submit="forms.formFunctionality.$valid && updateItem()" novalidate>\n\n <!-- START DOWNLOAD TRANSCRIPT -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DOWNLOAD_TRANSCRIPT\' | translate}}</label>\n </br>\n <input\n bs-switch\n class="form-control"\n ng-model="chatWebsite.download_transcript"\n type="checkbox"\n switch-active="true"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END DOWNLOAD TRANSCRIPT -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END FORMS TAB -->\n\n <!-- STRINGS TAB -->\n <div class="tab-pane" id="tab_1_3">\n <form name="forms.formLabel" data-ng-submit="forms.formLabel.$valid && updateItem()" novalidate>\n\n <h4 class="block" data-ng-show="statePreview.state == \'online\'">{{\'APPLICATION_ONLINE_STATE\' | translate}}</h4>\n\n <!-- START HEADER ONLINE -->\n <div class="form-group" data-ng-show="statePreview.state == \'online\'" data-ng-class="{\'has-error\': (forms.formLabel.headerOnline.$touched || forms.formLabel.$submitted) && forms.formLabel.headerOnline.$invalid}">\n <label class="control-label">{{\'APPLICATION_HEADER_ONLINE\' | translate}}</label>\n <input type="text" name="headerOnline" placeholder="{{\'APPLICATION_HEADER_ONLINE\' | translate}}" class="form-control" data-ng-model="chatWebsite.header_online"/>\n </div>\n <!-- END HEADER ONLINE -->\n\n <!-- START ONLINE MESSAGE-->\n <div class="form-group" data-ng-show="statePreview.state == \'online\'" data-ng-class="{\'has-error\': (forms.formLabel.onlineMessage.$touched || forms.formLabel.$submitted) && forms.formLabel.onlineMessage.$invalid}">\n <label class="control-label">{{\'APPLICATION_ONLINE_MESSAGE\' | translate}}</label>\n <input type="text" name="onlineMessage" placeholder="{{\'APPLICATION_ONLINE_MESSAGE\' | translate}}" class="form-control" data-ng-model="chatWebsite.online_message"/>\n </div>\n <!-- END HEADER ONLINE -->\n\n <!-- START USERNAME TITLE -->\n <div class="form-group" data-ng-show="statePreview.state == \'online\' || statePreview.state == \'offline\'" data-ng-class="{\'has-error\': (forms.formLabel.nameTitle.$touched || forms.formLabel.$submitted) && forms.formLabel.nameTitle.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME_TITLE\' | translate}}</label>\n <input type="text" name="nameTitle" placeholder="{{\'APPLICATION_NAME_TITLE\' | translate}}" class="form-control" data-ng-model="chatWebsite.name_title"/>\n </div>\n <!-- END USERNAME TITLE -->\n\n <!-- START USERNAME PLACEHOLDER -->\n <div class="form-group" data-ng-show="statePreview.state == \'online\' || statePreview.state == \'offline\'" data-ng-class="{\'has-error\': (forms.formLabel.usernamePlaceholder.$touched || forms.formLabel.$submitted) && forms.formLabel.usernamePlaceholder.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME_PLACEHOLDER\' | translate}}</label>\n <input type="text" name="usernamePlaceholder" placeholder="{{\'APPLICATION_NAME_PLACEHOLDER\' | translate}}" class="form-control" data-ng-model="chatWebsite.username_placeholder"/>\n </div>\n <!-- END USERNAME PLACEHOLDER -->\n\n <!-- START EMAIL TITLE -->\n <div class="form-group" data-ng-show="statePreview.state == \'online\' || statePreview.state == \'offline\'" data-ng-class="{\'has-error\': (forms.formLabel.emailTitle.$touched || forms.formLabel.$submitted) && forms.formLabel.emailTitle.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL_TITLE\' | translate}}</label>\n <input type="text" name="emailTitle" placeholder="{{\'APPLICATION_EMAIL_TITLE\' | translate}}" class="form-control" data-ng-model="chatWebsite.email_title"/>\n </div>\n <!-- END EMAIL TITLE -->\n\n <!-- START EMAIL PLACEHOLDER -->\n <div class="form-group" data-ng-show="statePreview.state == \'online\' || statePreview.state == \'offline\'" data-ng-class="{\'has-error\': (forms.formLabel.emailPlaceholder.$touched || forms.formLabel.$submitted) && forms.formLabel.emailPlaceholder.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL_PLACEHOLDER\' | translate}}</label>\n <input type="text" name="emailPlaceholder" placeholder="{{\'APPLICATION_EMAIL_PLACEHOLDER\' | translate}}" class="form-control" data-ng-model="chatWebsite.email_placeholder"/>\n </div>\n <!-- END EMAIL PLACEHOLDER -->\n\n <!-- START START CHAT BUTTON -->\n <div class="form-group" data-ng-show="statePreview.state == \'online\'" data-ng-class="{\'has-error\': (forms.formLabel.startChatButton.$touched || forms.formLabel.$submitted) && forms.formLabel.startChatButton.$invalid}">\n <label class="control-label">{{\'APPLICATION_START_CHAT_BUTTON\' | translate}}</label>\n <input type="text" name="startChatButton" placeholder="{{\'APPLICATION_START_CHAT_BUTTON\' | translate}}" class="form-control" data-ng-model="chatWebsite.start_chat_button"/>\n </div>\n <!-- END START CHAT BUTTON -->\n\n <h4 class="block" data-ng-show="statePreview.state == \'rating\'">{{\'APPLICATION_RATING_STATE\' | translate}}</h4>\n\n <!-- START RATING MESSAGE -->\n <div class="form-group" data-ng-show="statePreview.state == \'rating\'" data-ng-class="{\'has-error\': (forms.formLabel.ratingMessage.$touched || forms.formLabel.$submitted) && forms.formLabel.ratingMessage.$invalid}">\n <label class="control-label">{{\'APPLICATION_RATING_MESSAGE\' | translate}}</label>\n <input type="text" name="ratingMessage" placeholder="{{\'APPLICATION_RATING_MESSAGE\' | translate}}" class="form-control" data-ng-model="chatWebsite.rating_message"/>\n </div>\n <!-- END RATING MESSAGE -->\n\n <!-- START RATING SEND BUTTON -->\n <div class="form-group" data-ng-show="statePreview.state == \'rating\'" data-ng-class="{\'has-error\': (forms.formLabel.ratingSend.$touched || forms.formLabel.$submitted) && forms.formLabel.ratingSend.$invalid}">\n <label class="control-label">{{\'APPLICATION_RATING_SEND_BUTTON\' | translate}}</label>\n <input type="text" name="ratingSend" placeholder="{{\'APPLICATION_RATING_SEND_BUTTON\' | translate}}" class="form-control" data-ng-model="chatWebsite.rating_send"/>\n </div>\n <!-- END RATING SEND BUTTON -->\n\n <!-- START RATING SKIP BUTTON -->\n <div class="form-group" data-ng-show="statePreview.state == \'rating\'" data-ng-class="{\'has-error\': (forms.formLabel.ratingSkip.$touched || forms.formLabel.$submitted) && forms.formLabel.ratingSkip.$invalid}">\n <label class="control-label">{{\'APPLICATION_RATING_SKIP_BUTTON\' | translate}}</label>\n <input type="text" name="ratingSkip" placeholder="{{\'APPLICATION_RATING_SKIP_BUTTON\' | translate}}" class="form-control" data-ng-model="chatWebsite.rating_skip"/>\n </div>\n <!-- END RATING SKIP BUTTON -->\n\n <h4 class="block" data-ng-show="statePreview.state == \'offline\'">{{\'APPLICATION_OFFLINE_STATE\' | translate}}</h4>\n\n <!-- START HEADER OFFLINE -->\n <div class="form-group" data-ng-show="statePreview.state == \'offline\'" data-ng-class="{\'has-error\': (forms.formLabel.headerOffline.$touched || forms.formLabel.$submitted) && forms.formLabel.headerOnline.$invalid}">\n <label class="control-label">{{\'APPLICATION_HEADER_OFFLINE\' | translate}}</label>\n <input type="text" name="headerOffline" placeholder="{{\'APPLICATION_HEADER_OFFLINE\' | translate}}" class="form-control" data-ng-model="chatWebsite.header_offline"/>\n </div>\n <!-- END HEADER OFFLINE -->\n\n <!-- START OFFLINE MESSAGE-->\n <div class="form-group" data-ng-show="statePreview.state == \'offline\'" data-ng-class="{\'has-error\': (forms.formLabel.offlineMessage.$touched || forms.formLabel.$submitted) && forms.formLabel.offlineMessage.$invalid}">\n <label class="control-label">{{\'APPLICATION_OFFLINE_MESSAGE\' | translate}}</label>\n <input type="text" name="offlineMessage" placeholder="{{\'APPLICATION_OFFLINE_MESSAGE\' | translate}}" class="form-control" data-ng-model="chatWebsite.offline_message"/>\n </div>\n <!-- END OFFLINE MESSAGE -->\n\n <!-- START ENQUIRY MESSAGE TITLE-->\n <div class="form-group" data-ng-show="statePreview.state == \'offline\'" data-ng-class="{\'has-error\': (forms.formLabel.enquiryMessageTitle.$touched || forms.formLabel.$submitted) && forms.formLabel.enquiryMessageTitle.$invalid}">\n <label class="control-label">{{\'APPLICATION_ENQUIRY_MESSAGE_TITLE\' | translate}}</label>\n <input type="text" name="enquiryMessageTitle" placeholder="{{\'APPLICATION_ENQUIRY_MESSAGE_TITLE\' | translate}}" class="form-control" data-ng-model="chatWebsite.message_title"/>\n </div>\n <!-- END ENQUIRY MESSAGE TITLE -->\n\n <!-- START ENQUIRY MESSAGE PLACEHOLDER-->\n <div class="form-group" data-ng-show="statePreview.state == \'offline\'" data-ng-class="{\'has-error\': (forms.formLabel.enquiryMessagePlaceholder.$touched || forms.formLabel.$submitted) && forms.formLabel.enquiryMessagePlaceholder.$invalid}">\n <label class="control-label">{{\'APPLICATION_ENQUIRY_MESSAGE_PLACEHOLDER\' | translate}}</label>\n <input type="text" name="enquiryMessagePlaceholder" placeholder="{{\'APPLICATION_ENQUIRY_MESSAGE_PLACEHOLDER\' | translate}}" class="form-control" data-ng-model="chatWebsite.enquiry_message_placeholder"/>\n </div>\n <!-- END ENQUIRY MESSAGE PLACEHOLDER -->\n\n <!-- START ENQUIRY BUTTON -->\n <div class="form-group" data-ng-show="statePreview.state == \'offline\'" data-ng-class="{\'has-error\': (forms.formLabel.enquiryButton.$touched || forms.formLabel.$submitted) && forms.formLabel.enquiryButton.$invalid}">\n <label class="control-label">{{\'APPLICATION_ENQUIRY_BUTTON\' | translate}}</label>\n <input type="text" name="enquiryButton" placeholder="{{\'APPLICATION_ENQUIRY_BUTTON\' | translate}}" class="form-control" data-ng-model="chatWebsite.enquiry_button"/>\n </div>\n <!-- END ENQUIRY BUTTON -->\n\n <!-- START AGENTS BUSY BUTTON -->\n <div class="form-group" data-ng-show="statePreview.state == \'online\'" data-ng-class="{\'has-error\': (forms.formLabel.agentsBusy.$touched || forms.formLabel.$submitted) && forms.formLabel.agentsBusy.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENTS_BUSY\' | translate}}</label>\n <input type="text" name="agentsBusy" placeholder="{{\'APPLICATION_AGENTS_BUSY\' | translate}}" class="form-control" data-ng-model="chatWebsite.agents_busy"/>\n </div>\n <!-- END AGENTS BUSY BUTTON -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END STRINGS TAB -->\n\n <!-- SETTINGS TAB -->\n <div class="tab-pane" id="tab_1_4">\n <form name="forms.formSetting" data-ng-submit="forms.formSetting.$valid && updateItem()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formSetting.name.$touched || forms.formSetting.$submitted) && forms.formSetting.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="chatWebsite.name" required/>\n <span data-ng-show="(forms.formSetting.name.$touched || forms.formSetting.$submitted) && forms.formSettings.name.$invalid && forms.formSetting.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formSetting.address.$touched || forms.formSetting.$submitted) && forms.formSetting.address.$invalid}">\n <label class="control-label">{{\'APPLICATION_WEB_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="address" placeholder="{{\'APPLICATION_WEB_ADDRESS\' | translate}}" class="form-control" data-ng-model="chatWebsite.address" required/>\n <span data-ng-show="(forms.formSetting.address.$touched || forms.formSetting.$submitted) && forms.formSetting.address.$invalid && forms.formSetting.address.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ADDRESS -->\n\n <!-- START REMOTE IP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formSetting.remote.$touched || forms.formSetting.$submitted) && forms.formSetting.remote.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remote" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="chatWebsite.remote" required/>\n <span data-ng-show="(forms.formSetting.remote.$touched || forms.formSetting.$submitted) && forms.formSetting.remote.$invalid && forms.formSetting.remote.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span class="help-block help-block-info">\n {{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n </span>\n </div>\n <!-- END REMOTE IP -->\n\n <!-- START FIDELITY -->\n <!-- <div class="form-group">\n <label class="control-label">{{\'APPLICATION_FIDELITY\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-model="chatWebsite.fidelity"\n type="checkbox"\n switch-active="{{ fidelitySwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ fidelitySwitch.onColor }}"\n switch-off-color="{{ fidelitySwitch.offColor }}"\n switch-animate="{{ fidelitySwitch.animate }}"\n switch-size="{{ fidelitySwitch.size }}"\n switch-label="{{ fidelitySwitch.label }}"\n switch-icon="{{ fidelitySwitch.icon }}"\n switch-radio-off="{{ fidelitySwitch.radioOff }}"\n switch-label-width="{{ fidelitySwitch.labelWidth }}"\n switch-handle-width="{{ fidelitySwitch.handleWidth }}">\n </div> -->\n <!-- END FIDELITY -->\n\n <!-- START TIMEOUT -->\n <!-- <div class="form-group" data-ng-if="chatWebsite.fidelity" data-ng-class="{\'has-error\': (forms.formSetting.timeout.$touched || forms.formSetting.$submitted) && forms.formSetting.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="0" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="chatWebsite.timeout" required/>\n <span data-ng-show="(forms.formSetting.timeout.$touched || forms.formSetting.$submitted) && forms.formSetting.timeout.$invalid && forms.formSetting.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formSetting.timeout.$touched || forms.formSetting.$submitted) && forms.formSetting.timeout.$invalid && forms.formSetting.timeout.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div> -->\n <!-- END TIMEOUT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formSetting.description.$touched || forms.formSetting.$submitted) && forms.formSetting.description.$invalid}">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="chatWebsite.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END SETTINGS TAB -->\n\n <!-- OFFLINE TAB -->\n <div class="tab-pane" id="tab_1_5">\n <form name="forms.formOffline" data-ng-submit="forms.formOffline.$valid && updateItem()" novalidate>\n\n <!-- START ENQUIRY ENABLE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_ENQUIRY_ENABLED\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="chatWebsite.enquiry_enable"\n type="checkbox"\n switch-active="{{ enquirySwitch.isActive }}"\n switch-on-text="{{ enquirySwitch.onText }}"\n switch-off-text="{{ enquirySwitch.offText }}"\n switch-on-color="{{ enquirySwitch.onColor }}"\n switch-off-color="{{ enquirySwitch.offColor }}"\n switch-animate="{{ enquirySwitch.animate }}"\n switch-size="{{ enquirySwitch.size }}"\n switch-label="{{ enquirySwitch.label }}"\n switch-icon="{{ enquirySwitch.icon }}"\n switch-radio-off="{{ enquirySwitch.radioOff }}"\n switch-label-width="{{ enquirySwitch.labelWidth }}"\n switch-handle-width="{{ enquirySwitch.handleWidth }}">\n </div>\n <!-- END ENQUIRY ENABLE -->\n\n <!-- START ENQUIRY FORWARDING -->\n <div class="form-group" data-ng-if="chatWebsite.enquiry_enable">\n <label class="control-label">{{\'APPLICATION_ENQUIRY_FORWARDING\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="chatWebsite.enquiry_forwarding"\n type="checkbox"\n switch-active="{{ enquirySwitch.isActive }}"\n switch-on-text="{{ enquirySwitch.onText }}"\n switch-off-text="{{ enquirySwitch.offText }}"\n switch-on-color="{{ enquirySwitch.onColor }}"\n switch-off-color="{{ enquirySwitch.offColor }}"\n switch-animate="{{ enquirySwitch.animate }}"\n switch-size="{{ enquirySwitch.size }}"\n switch-label="{{ enquirySwitch.label }}"\n switch-icon="{{ enquirySwitch.icon }}"\n switch-radio-off="{{ enquirySwitch.radioOff }}"\n switch-label-width="{{ enquirySwitch.labelWidth }}"\n switch-handle-width="{{ enquirySwitch.handleWidth }}">\n </div>\n <!-- END ENQUIRY FORWARDING -->\n\n <div class="note note-warning" data-ng-if="!isServiceMailAccount">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_SERVICE_MAIL_ACCOUNT\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/setting/smtp/view">SMTP</a> {{\'APPLICATION_OR\' | translate}} <a href="/channels/mail/accounts/list">{{\'APPLICATION_MAIL_ACCOUNTS\' | translate}}</a>\n </p>\n </div>\n\n <!-- START REMOTE IP -->\n <div class="form-group" data-ng-if="chatWebsite.enquiry_enable && chatWebsite.enquiry_forwarding" data-ng-class="{\'has-error\': (forms.formOffline.forwardingAddress.$touched || forms.formOffline.$submitted) && forms.formSetting.forwardingAddress.$invalid}">\n <label class="control-label">{{\'APPLICATION_ENQUIRY_FORWARDING_ADDRESS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="forwardingAddress" placeholder="{{\'APPLICATION_ADDRESS\' | translate}}" class="form-control" data-ng-model="chatWebsite.enquiry_forwarding_address" required/>\n <span data-ng-show="(forms.formOffline.forwardingAddress.$touched || forms.formOffline.$submitted) && forms.formOffline.forwardingAddress.$invalid && forms.formOffline.forwardingAddress.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END REMOTE IP -->\n\n <!-- START HEADER SHAPE -->\n <div class="form-group" data-ng-if="chatWebsite.enquiry_enable && chatWebsite.enquiry_forwarding" data-ng-class="{\'has-error\': (forms.formOffline.OfflineTemplateId.$touched || forms.formOffline.$submitted) && forms.formOffline.OfflineTemplateId.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEMPLATE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="chatWebsite.OfflineTemplateId" name="OfflineTemplateId" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.formOffline.OfflineTemplateId.$touched || forms.formOffline.$submitted) && forms.formOffline.OfflineTemplateId.$invalid && forms.formOffline.OfflineTemplateId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END HEADER SHAPE -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END OFFLINE TAB -->\n </div>\n </div>\n <div class="col-md-4">\n <!-- START STATE -->\n <div class="form-group">\n <!-- <label class="control-label">{{\'APPLICATION_ANIMATION\' | translate}}</label> -->\n <!-- <input colorpicker type="text" name="animationToggle" placeholder="{{\'APPLICATION_BUTTON_COLOR\' | translate}}" class="form-control" data-ng-model="chatWebsite.animation" required/> -->\n <ui-select data-ng-model="statePreview.state" name="statePreview" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="statePreview in [\'online\',\'rating\',\'offline\'] | filter: $select.search">\n <div ng-bind-html="statePreview | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END STATE -->\n <preview></preview>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'), -a.put("app/channels/chat/website/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bubble"></i>\n <a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-globe"></i>\n <a href="/channels/chat/websites/list">{{ \'APPLICATION_WEB_SITES\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <a href="#">{{chatWebsite.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img src="assets/images/media/website.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{chatWebsite.name}}\n </div>\n <div class="profile-usertitle-job">\n {{chatWebsite.address}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.includes(\'main.channels.chat.websites.view.embedding\')}">\n <a ng-href="/channels/chat/websites/view/{{chatWebsite.id}}/embedding/view">\n <i class="fa fa-code"></i>\n {{ \'APPLICATION_EMBEDDING\' | translate }} </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.channels.chat.websites.view.snippet\')}">\n <a ng-href="/channels/chat/websites/view/{{chatWebsite.id}}/snippet/view">\n <i class="icon-note"></i>\n {{ \'APPLICATION_SNIPPET\' | translate }} </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.channels.chat.websites.view.form\')}">\n <a ng-href="/channels/chat/websites/view/{{chatWebsite.id}}/forms/view">\n <i class="icon-list"></i>\n {{ \'APPLICATION_FORMS\' | translate }} </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.channels.chat.websites.view.proactive\')}">\n <a ng-href="/channels/chat/websites/view/{{chatWebsite.id}}/proactive/list">\n <i class="icon-target"></i>\n {{ \'APPLICATION_PROACTIVE_ACTIONS\' | translate }} </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.channels.chat.websites.view.actions\')}">\n <a ng-href="/channels/chat/websites/view/{{chatWebsite.id}}/actions/list">\n <i class="icon-directions"></i>\n {{ \'APPLICATION_ACTIONS\' | translate }} </a>\n </li>\n <li ng-class="{active: $state.is(\'main.channels.chat.websites.view.hooks\')}">\n <a href="/channels/chat/websites/view/{{chatWebsite.id}}/hooks">\n <i class="fa fa-code"></i>\n {{\'APPLICATION_HOOKS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.channels.chat.websites.view.dispositions\')}">\n <a ng-href="/channels/chat/websites/view/{{chatWebsite.id}}/dispositions">\n <i class="icon-target"></i>\n {{ \'APPLICATION_DISPOSITIONS\' | translate }} </a>\n </li>\n <li ng-class="{active: $state.is(\'main.channels.chat.websites.view.settings\')}">\n <a href="/channels/chat/websites/view/{{chatWebsite.id}}/settings">\n <i class="icon-settings"></i>\n {{\'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/chat/website/wizard/wizard.html",'<!-- BEGIN PAGE HEADER-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bubble"></i>\n <a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-globe"></i>\n <a href="/channels/chat/websites/list">{{ \'APPLICATION_WEB_SITES\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n<!-- END PAGE HEADER-->\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initWizard();">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_WEB_SITE\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_WEB_SITE_INFO\' | translate}}" canexit="exitValidation(forms.formSetting.$valid)">\n <form name="forms.formSetting" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formSetting.name.$touched || forms.formSetting.$submitted) && forms.formSetting.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="forms.formSetting.name.$touched && !forms.formSettings.name.$valid && forms.formSetting.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formSetting.address.$touched || forms.formSetting.$submitted) && forms.formSetting.address.$invalid}">\n <label class="control-label">{{\'APPLICATION_WEB_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="address" placeholder="{{\'APPLICATION_WEB_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.address" required/>\n <span data-ng-show="(forms.formSetting.address.$touched || forms.formSetting.$submitted) && forms.formSetting.address.$invalid && forms.formSetting.address.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ADDRESS -->\n\n <!-- START REMOTE IP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formSetting.remote.$touched || forms.formSetting.$submitted) && forms.formSetting.remote.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remote" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.remote" required/>\n <span class="help-block help-block-info">\n {{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n </span>\n <span data-ng-show="(forms.formSetting.remote.$touched || forms.formSetting.$submitted) && forms.formSetting.remote.$invalid && forms.formSetting.remote.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END REMOTE IP -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_WEB_SITE_APPEARANCE\' | translate}}" canexit="exitValidation(forms.formAppearance.$valid)">\n <form name="forms.formAppearance" novalidate>\n\n <!-- START MAIN COLOR -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAppearance.mainColor.$touched || forms.formAppearance.$submitted) && forms.formAppearance.host.$invalid}">\n <label class="control-label">{{\'APPLICATION_MAIN_COLOR\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input colorpicker type="text" name="mainColor" placeholder="{{\'APPLICATION_MAIN_COLOR\' | translate}}" style="color:{{item.color}}" class="form-control" data-ng-model="item.color" required/>\n <span data-ng-show="(forms.formAppearance.mainColor.$touched || forms.formAppearance.$submitted) && forms.formAppearance.mainColor.$invalid && forms.formAppearance.mainColor.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MAIN COLOR -->\n\n <!-- START FOCUS COLOR -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAppearance.focusColor.$touched || forms.formAppearance.$submitted) && forms.formAppearance.focusColor.$invalid}">\n <label class="control-label">{{\'APPLICATION_FOCUS_COLOR\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input colorpicker type="text" name="focusColor" placeholder="{{\'APPLICATION_FOCUS_COLOR\' | translate}}" style="color:{{item.color_focus}}" class="form-control" data-ng-model="item.color_focus" required/>\n <span data-ng-show="(forms.formAppearance.focusColor.$touched || forms.formAppearance.$submitted) && forms.formAppearance.focusColor.$invalid && forms.formAppearance.focusColor.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FOCUS COLOR -->\n\n <!-- START BUTTON COLOR -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAppearance.buttonColor.$touched || forms.formAppearance.$submitted) && forms.formAppearance.buttonColor.$invalid}">\n <label class="control-label">{{\'APPLICATION_BUTTON_COLOR\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input colorpicker type="text" name="buttonColor" placeholder="{{\'APPLICATION_BUTTON_COLOR\' | translate}}" style="color:{{item.color_button}}" class="form-control" data-ng-model="item.color_button" required/>\n <span data-ng-show="(forms.formAppearance.buttonColor.$touched || forms.formAppearance.$submitted) && forms.formAppearance.buttonColor.$invalid && forms.formAppearance.buttonColor.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END BUTTON COLOR -->\n\n <!-- START HEADER SHAPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAppearance.headerShape.$touched || forms.formAppearance.$submitted) && forms.formAppearance.headerShape.$invalid}">\n <label class="control-label">{{\'APPLICATION_HEADER_SHAPE\' | translate}}</label>\n <!-- <input colorpicker type="text" name="animationToggle" placeholder="{{\'APPLICATION_BUTTON_COLOR\' | translate}}" class="form-control" data-ng-model="item.animation" required/> -->\n <ui-select data-ng-model="item.header_shape" name="headerShape" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$translate.instant(\'APPLICATION_\' + $select.selected.toUpperCase())}}</ui-select-match>\n <ui-select-choices repeat="headerShape in [\'rounded\',\'squared\'] | filter: $select.search">\n <div ng-bind-html="$translate.instant(\'APPLICATION_\' + headerShape.toUpperCase()) | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END HEADER SHAPE -->\n\n <!-- START ANIMATION TOGGLE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAppearance.animationToggle.$touched || forms.formAppearance.$submitted) && forms.formAppearance.animationToggle.$invalid}">\n <label class="control-label">{{\'APPLICATION_ANIMATION\' | translate}}</label>\n <ui-select data-ng-model="item.animation" name="animationToggle" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected ? \'On\' : \'Off\'}}</ui-select-match>\n <ui-select-choices repeat="filter in [true,false] | filter: $select.search">\n <div ng-bind-html="filter ? \'On\' : \'Off\' | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END ANIMATION TOGGLE -->\n\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_LABELS\' | translate}}" canexit="exitValidation(forms.formLabel.$valid)">\n <form name="forms.formLabel" novalidate>\n\n <!-- START HEADER ONLINE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.headerOnline.$touched || forms.formLabel.$submitted) && forms.formLabel.headerOnline.$invalid}">\n <label class="control-label">{{\'APPLICATION_HEADER_ONLINE\' | translate}}</label>\n <input type="text" name="headerOnline" placeholder="{{\'APPLICATION_HEADER_ONLINE\' | translate}}" class="form-control" data-ng-model="item.header_online"/>\n </div>\n <!-- END HEADER ONLINE -->\n\n <!-- START ONLINE MESSAGE-->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.onlineMessage.$touched || forms.formLabel.$submitted) && forms.formLabel.onlineMessage.$invalid}">\n <label class="control-label">{{\'APPLICATION_ONLINE_MESSAGE\' | translate}}</label>\n <input type="text" name="onlineMessage" placeholder="{{\'APPLICATION_ONLINE_MESSAGE\' | translate}}" class="form-control" data-ng-model="item.online_message"/>\n </div>\n <!-- END HEADER ONLINE -->\n\n <!-- START USERNAME TITLE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.nameTitle.$touched || forms.formLabel.$submitted) && forms.formLabel.nameTitle.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME_TITLE\' | translate}}</label>\n <input type="text" name="nameTitle" placeholder="{{\'APPLICATION_NAME_TITLE\' | translate}}" class="form-control" data-ng-model="item.name_title"/>\n </div>\n <!-- END USERNAME TITLE -->\n\n <!-- START USERNAME PLACEHOLDER -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.usernamePlaceholder.$touched || forms.formLabel.$submitted) && forms.formLabel.usernamePlaceholder.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME_PLACEHOLDER\' | translate}}</label>\n <input type="text" name="usernamePlaceholder" placeholder="{{\'APPLICATION_NAME_PLACEHOLDER\' | translate}}" class="form-control" data-ng-model="item.username_placeholder"/>\n </div>\n <!-- END USERNAME PLACEHOLDER -->\n\n <!-- START EMAIL TITLE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.emailTitle.$touched || forms.formLabel.$submitted) && forms.formLabel.emailTitle.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL_TITLE\' | translate}}</label>\n <input type="text" name="emailTitle" placeholder="{{\'APPLICATION_EMAIL_TITLE\' | translate}}" class="form-control" data-ng-model="item.email_title"/>\n </div>\n <!-- END EMAIL TITLE -->\n\n <!-- START EMAIL PLACEHOLDER -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.emailPlaceholder.$touched || forms.formLabel.$submitted) && forms.formLabel.emailPlaceholder.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL_PLACEHOLDER\' | translate}}</label>\n <input type="text" name="emailPlaceholder" placeholder="{{\'APPLICATION_EMAIL_PLACEHOLDER\' | translate}}" class="form-control" data-ng-model="item.email_placeholder"/>\n </div>\n <!-- END EMAIL PLACEHOLDER -->\n\n <!-- START START CHAT BUTTON -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.startChatButton.$touched || forms.formLabel.$submitted) && forms.formLabel.startChatButton.$invalid}">\n <label class="control-label">{{\'APPLICATION_START_CHAT_BUTTON\' | translate}}</label>\n <input type="text" name="startChatButton" placeholder="{{\'APPLICATION_START_CHAT_BUTTON\' | translate}}" class="form-control" data-ng-model="item.start_chat_button"/>\n </div>\n <!-- END START CHAT BUTTON -->\n\n <!-- START RATING MESSAGE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.ratingMessage.$touched || forms.formLabel.$submitted) && forms.formLabel.ratingMessage.$invalid}">\n <label class="control-label">{{\'APPLICATION_RATING_MESSAGE\' | translate}}</label>\n <input type="text" name="ratingMessage" placeholder="{{\'APPLICATION_RATING_MESSAGE\' | translate}}" class="form-control" data-ng-model="item.rating_message"/>\n </div>\n <!-- END RATING MESSAGE -->\n\n <!-- START RATING START TEXT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.ratingSend.$touched || forms.formLabel.$submitted) && forms.formLabel.ratingSend.$invalid}">\n <label class="control-label">{{\'APPLICATION_RATING_SEND_BUTTON\' | translate}}</label>\n <input type="text" name="ratingSend" placeholder="{{\'APPLICATION_RATING_SEND_BUTTON\' | translate}}" class="form-control" data-ng-model="item.rating_send"/>\n </div>\n <!-- END RATING START TEXT -->\n\n <!-- START RATING MESSAGE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.ratingSkip.$touched || forms.formLabel.$submitted) && forms.formLabel.ratingSkip.$invalid}">\n <label class="control-label">{{\'APPLICATION_RATING_SKIP_BUTTON\' | translate}}</label>\n <input type="text" name="ratingSkip" placeholder="{{\'APPLICATION_RATING_SKIP_BUTTON\' | translate}}" class="form-control" data-ng-model="item.rating_skip"/>\n </div>\n <!-- END RATING MESSAGE -->\n\n <!-- START HEADER OFFLINE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.headerOffline.$touched || forms.formLabel.$submitted) && forms.formLabel.headerOnline.$invalid}">\n <label class="control-label">{{\'APPLICATION_HEADER_OFFLINE\' | translate}}</label>\n <input type="text" name="headerOffline" placeholder="{{\'APPLICATION_HEADER_OFFLINE\' | translate}}" class="form-control" data-ng-model="item.header_offline"/>\n </div>\n <!-- END HEADER OFFLINE -->\n\n <!-- START OFFLINE MESSAGE-->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.offlineMessage.$touched || forms.formLabel.$submitted) && forms.formLabel.onlineMessage.$invalid}">\n <label class="control-label">{{\'APPLICATION_OFFLINE_MESSAGE\' | translate}}</label>\n <input type="text" name="offlineMessage" placeholder="{{\'APPLICATION_OFFLINE_MESSAGE\' | translate}}" class="form-control" data-ng-model="item.offline_message"/>\n </div>\n <!-- END OFFLINE MESSAGE -->\n\n <!-- START ENQUIRY MESSAGE TITLE-->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.enquiryMessageTitle.$touched || forms.formLabel.$submitted) && forms.formLabel.enquiryMessageTitle.$invalid}">\n <label class="control-label">{{\'APPLICATION_ENQUIRY_MESSAGE_TITLE\' | translate}}</label>\n <input type="text" name="enquiryMessageTitle" placeholder="{{\'APPLICATION_ENQUIRY_MESSAGE_TITLE\' | translate}}" class="form-control" data-ng-model="item.message_title"/>\n </div>\n <!-- END ENQUIRY MESSAGE TITLE -->\n\n <!-- START ENQUIRY MESSAGE PLACEHOLDER-->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.enquiryMessagePlaceholder.$touched || forms.formLabel.$submitted) && forms.formLabel.onlineMessage.$invalid}">\n <label class="control-label">{{\'APPLICATION_ENQUIRY_MESSAGE_PLACEHOLDER\' | translate}}</label>\n <input type="text" name="enquiryMessagePlaceholder" placeholder="{{\'APPLICATION_ENQUIRY_MESSAGE_PLACEHOLDER\' | translate}}" class="form-control" data-ng-model="item.enquiry_message_placeholder"/>\n </div>\n <!-- END ENQUIRY MESSAGE PLACEHOLDER -->\n\n <!-- START ENQUIRY BUTTON -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.enquiryButton.$touched || forms.formLabel.$submitted) && forms.formLabel.enquiryButton.$invalid}">\n <label class="control-label">{{\'APPLICATION_ENQUIRY_BUTTON\' | translate}}</label>\n <input type="text" name="enquiryButton" placeholder="{{\'APPLICATION_ENQUIRY_BUTTON\' | translate}}" class="form-control" data-ng-model="item.enquiry_button"/>\n </div>\n <!-- END ENQUIRY BUTTON -->\n\n <!-- START AGENTS BUSY BUTTON -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formLabel.agentsBusy.$touched || forms.formLabel.$submitted) && forms.formLabel.agentsBusy.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENTS_BUSY\' | translate}}</label>\n <input type="text" name="agentsBusy" placeholder="{{\'APPLICATION_AGENTS_BUSY\' | translate}}" class="form-control" data-ng-model="item.agents_busy"/>\n </div>\n <!-- END AGENTS BUSY BUTTON -->\n\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_FORMS\' | translate}}" canexit="exitValidation(forms.formAppearance.$valid)">\n <form name="forms.formFunctionality" novalidate>\n\n <!-- START DOWNLOAD TRANSCRIPT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formFunctionality.animationToggle.$touched || forms.formFunctionality.$submitted) && forms.formFunctionality.animationToggle.$invalid}">\n <label class="control-label">{{\'APPLICATION_DOWNLOAD_TRANSCRIPT\' | translate}}</label>\n <ui-select data-ng-model="item.download_transcript" name="downloadTranscript" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected ? \'On\' : \'Off\'}}</ui-select-match>\n <ui-select-choices repeat="downloadTranscript in [true, false] | filter: $select.search">\n <div ng-bind-html="downloadTranscript ? \'On\' : \'Off\' | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END DOWNLOAD TRANSCRIPT -->\n\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/fax/account/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_FAX_ACCOUNT\' | translate }}</h3>\n</div>\n<div class="modal-body" data-ng-init="initWizard();">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.$submitted || form.name.$touched) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="form.name.$error.required && (form.$submitted || form.name.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START TRUNKS -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.$submitted || form.trunk.$touched) && form.trunk.$invalid}">\n <label class="control-label">{{\'APPLICATION_TRUNK\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.TrunkName" name="trunk" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_TRUNK\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="trunk.name as trunk in trunks | filter: $select.search">\n <div data-ng-bind="trunk.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="trunks.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_TRUNKS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/trunks/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="form.trunk.$error.required && (form.$submitted || form.trunk.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START TRUNKS -->\n\n <!-- START LOCALSTATIONID -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.$submitted || form.localstationid.$touched) && form.localstationid.$invalid}">\n <label class="control-label">{{\'APPLICATION_LOCALSTATIONID\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="localstationid" placeholder="{{\'APPLICATION_LOCALSTATIONID\' | translate}}" class="form-control" data-ng-model="item.localstationid" required/>\n <span data-ng-show="form.localstationid.$error.required && (form.$submitted || form.localstationid.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span class="help-block">\n {{\'DESCRIPTION_LOCALSTATIONID\' | translate}}.\n </span>\n </div>\n <!-- END LOCALSTATIONID -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/fax/account/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-fax"></i>\n <a href="#">{{ \'APPLICATION_FAX\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-notebook"></i>\n <a href="/channels/fax/accounts/list">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <button type="button" class="btn green-jungle" data-toggle="dropdown" data-hover="dropdown" data-delay="1000" data-close-others="true" aria-expanded="true">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ACCOUNT\' | translate }} <i class="fa fa-angle-down"></i>\n </button>\n <ul class="dropdown-menu" role="menu">\n <li>\n <a href="/channels/fax/accounts/wizard">\n {{ \'APPLICATION_STANDARD\' | translate }}\n </a>\n </li>\n <li>\n <a href="#" data-ng-click="createItem()">\n {{ \'APPLICATION_QUICK\' | translate }}\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/fax/account/view/action/list/list.html",'<div class="row" data-ng-init="initActons()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACTIONS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/channels/fax/accounts/view/{{account.id}}/actions/wizard" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ACTION\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n'), -a.put("app/channels/fax/account/view/action/view/view.html",'\n<div class="row" data-ng-init="initAction()">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-directions font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACTION\' | translate }}</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="forms.settings" data-ng-submit="forms.settings.$valid && updateItem()" novalidate>\n <!-- START APP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app.$touched || forms.settings.$submitted) && forms.settings.app.$invalid}">\n <label class="control-label">{{ \'APPLICATION_APPLICATION\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.app" name="app" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_APPLICATION\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="app.value as app in apps | filter: $select.search">\n <div ng-bind-html="app.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.app.$touched || forms.settings.$submitted) && forms.settings.app.$invalid && forms.settings.app.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APP -->\n\n <div class="app-settings" ng-slide-down="application.app === \'queue\'" lazy-render duration="1" data-ng-init="getQueues()">\n <!-- START QUEUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.queue.$touched || forms.settings.$submitted) && forms.settings.queue.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.FaxQueueId" name="queue" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="queues.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_QUEUES_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/fax/queues/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.queue.$touched || forms.settings.$submitted) && forms.settings.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'agent\'" lazy-render duration="1" data-ng-init="getAgents()">\n <!-- START AGENT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.agent.$touched || forms.settings.$submitted) && forms.settings.agent.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.UserId" name="agent" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.fullname}}</ui-select-match>\n <ui-select-choices repeat="agent.id as agent in agents | filter: $select.search">\n <div ng-bind-html="agent.fullname | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="agents.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AGENTS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/staff/agents/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.agent.$touched || forms.settings.$submitted) && forms.settings.agent.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END AGENT -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1" data-ng-init="getMailAccounts();getTemplates()">\n <!-- START SENDMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="email" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" min="1" required/>\n <span data-ng-show="(forms.settings.from.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.mail.$touched || forms.settings.$submitted) && forms.settings.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in mailAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.template.$touched || forms.settings.$submitted) && forms.settings.template.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEMPLATE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data9" name="template" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.template.$touched || forms.settings.$submitted) && forms.settings.template.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.attachment.$touched || forms.settings.$submitted) && forms.settings.attachment.$invalid}">\n <label class="control-label">{{\'APPLICATION_ATTACHMENT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data6" name="attachment" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="attachment in [\'yes\',\'no\'] | filter: $select.search">\n {{attachment}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.attachment.$touched || forms.settings.$submitted) && forms.settings.attachment.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SENDMAIL -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1" data-ng-init="getSmsAccounts()">\n <!-- START SENDSms -->\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.to.$touched || forms.settings.$submitted) && forms.settings.to.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" ng-pattern="/^[\\+]?[0-9]+$/" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" required/>\n <span data-ng-show="(forms.settings.to.$touched || forms.settings.$submitted) && forms.settings.to.$invalid && forms.settings.to.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in smsAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.text.$touched || forms.text.$submitted) && forms.settings.text.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <textarea id="text" class="form-control maxlength-handler" maxlength="160" name="text" data-ng-model="application.data6" required></textarea>\n <span data-ng-show="(forms.settings.text.$touched || forms.settings.$submitted) && forms.settings.text.$invalid && forms.settings.text.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <!-- END SENDSms -->\n </div>\n\n <!-- START INTERVAL_TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.intType.$touched || forms.settings.$submitted) && forms.settings.intType.$invalid}">\n <label class="control-label">{{ \'APPLICATION_INTERVAL_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.intType" theme="bootstrap" name="intType" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="intType.value as intType in $application.intTypes | filter: $select.search">\n {{ intType.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.intType.$touched || forms.settings.$submitted) && forms.settings.intType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVAL_TYPE -->\n\n <div class="app-settings" ng-slide-down="application.intType === \'custom\'" lazy-render duration="1">\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="application.alwaysTime">\n <uib-timepicker name="t_from" data-ng-model="application.t_from" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker>\n </fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="application.alwaysTime"><uib-timepicker name="t_to" data-ng-model="application.t_to" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker></fieldset>\n <!-- <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="application.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label> -->\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- START ALWAYS -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALWAYS\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="application.alwaysTime"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n <!-- <input type="checkbox" data-ng-model="application.alwaysTime"> -->\n </label>\n </div>\n </div>\n <!-- END ALWAYS -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.md_from" theme="bootstrap" name="md_from">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_to && application.md_to!==\'always\' && monthDay>application.md_to && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.md_to" theme="bootstrap" name="md_to">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_from && application.md_from!==\'always\' && monthDay<application.md_from && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.intType === \'list\'" lazy-render duration="1" data-ng-init="getIntervals()">\n\n <!-- START INTERVALS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.IntervalId.$touched || forms.settings.$submitted) && forms.settings.IntervalId.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVALS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.IntervalId" theme="bootstrap" name="IntervalId" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="interval.id as interval in intervals | filter: $select.search">\n {{ interval.name}}\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="intervals.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_INTERVALS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/intervals/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.IntervalId.$touched || forms.settings.$submitted) && forms.settings.IntervalId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVALS -->\n\n </div>\n <button class="btn green-haze" type="submit">{{\'APPLICATION_UPDATE\' | translate}}</button>\n </form>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/fax/account/view/action/wizard/wizard.html",'\n<div class="row" data-ng-init="initWizard()">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-directions font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACTION\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_APPLICATION\' | translate}}" canexit="formValidation(forms.action.$valid)">\n <form name="forms.action" novalidate>\n <!-- START APP -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.action.$submitted && forms.action.app.$invalid}">\n <label class="control-label">{{ \'APPLICATION_APPLICATION\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.app" name="app" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_APPLICATION\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="app.value as app in apps | filter: $select.search">\n <div ng-bind-html="app.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.action.$submitted && forms.action.app.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APP -->\n\n <div class="app-settings" ng-slide-down="application.app === \'agent\'" lazy-render duration="1" data-ng-init="getAgents()">\n <!-- START AGENT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.agent.$touched || forms.action.$submitted) && forms.action.agent.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.UserId" name="agent" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.fullname}}</ui-select-match>\n <ui-select-choices repeat="agent.id as agent in agents | filter: $select.search">\n <div ng-bind-html="agent.fullname | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="agents.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AGENTS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/staff/agents/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.agent.$touched || forms.action.$submitted) && forms.action.agent.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END AGENT -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'queue\'" lazy-render duration="1" data-ng-init="getQueues()">\n <!-- START QUEUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.queue.$touched || forms.action.$submitted) && forms.action.queue.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.FaxQueueId" name="queue" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="queues.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_QUEUES_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/fax/queues/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.queue.$touched || forms.action.$submitted) && forms.action.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1" data-ng-init="getMailAccounts();getTemplates()">\n <!-- START SENDMAIL -->\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="email" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" min="1" required/>\n <span data-ng-show="(forms.action.from.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.mail.$touched || forms.action.$submitted) && forms.action.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in mailAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEMPLATE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data9" name="template" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.attachment.$touched || forms.settings.$submitted) && forms.settings.attachment.$invalid}">\n <label class="control-label">{{\'APPLICATION_ATTACHMENT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data6" name="attachment" theme="bootstrap" data-ng-init="application.data6 = \'no\'" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="attachment in [\'yes\',\'no\'] | filter: $select.search">\n {{attachment}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.attachment.$touched || forms.settings.$submitted) && forms.settings.attachment.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SENDMAIL -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1" data-ng-init="getSmsAccounts()">\n <!-- START SENDSms -->\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.to.$touched || forms.action.$submitted) && forms.action.to.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" ng-pattern="/^[\\+]?[0-9]+$/" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" required/>\n <span data-ng-show="(forms.action.to.$touched || forms.action.$submitted) && forms.action.to.$invalid && forms.action.to.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in smsAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.text.$touched || forms.action.$submitted) && forms.action.text.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <textarea id="text" class="form-control maxlength-handler" maxlength="160" name="text" data-ng-model="application.data6" required></textarea>\n <span data-ng-show="(forms.action.text.$touched || forms.action.$submitted) && forms.action.text.$invalid && forms.action.text.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <!-- END SENDSms -->\n </div>\n\n <!-- START INTERVAL_TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.intType.$touched || forms.action.$submitted) && forms.action.intType.$invalid}">\n <label class="control-label">{{ \'APPLICATION_INTERVAL_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.intType" theme="bootstrap" name="intType" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="intType.value as intType in $application.intTypes | filter: $select.search">\n {{ intType.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.intType.$touched || forms.action.$submitted) && forms.action.intType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVAL_TYPE -->\n\n <div class="app-settings" ng-slide-down="application.intType === \'custom\'" lazy-render duration="1">\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="application.alwaysTime">\n <uib-timepicker name="t_from" data-ng-model="application.t_from" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker>\n </fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="application.alwaysTime"><uib-timepicker name="t_to" data-ng-model="application.t_to" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker></fieldset>\n <!-- <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="application.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label> -->\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- START ALWAYS -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALWAYS\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="application.alwaysTime"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n <!-- <input type="checkbox" data-ng-model="application.alwaysTime"> -->\n </label>\n </div>\n </div>\n <!-- END ALWAYS -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.md_from" theme="bootstrap" name="md_from">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_to && application.md_to!==\'always\' && monthDay>application.md_to && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.md_to" theme="bootstrap" name="md_to">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_from && application.md_from!==\'always\' && monthDay<application.md_from && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.intType === \'list\'" lazy-render duration="1" data-ng-init="getIntervals()">\n\n <!-- START INTERVALS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.IntervalId.$touched || forms.action.$submitted) && forms.action.IntervalId.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVALS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.IntervalId" theme="bootstrap" name="IntervalId" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="interval.id as interval in intervals | filter: $select.search">\n {{ interval.name}}\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="intervals.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_INTERVALS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/intervals/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.IntervalId.$touched || forms.action.$submitted) && forms.action.IntervalId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVALS -->\n\n </div>\n\n <input class="btn green-haze" type="submit" data-ng-click="next()" value="{{\'APPLICATION_CONTINUE\' | translate}}"/>\n </form>\n </wz-step>\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input class="btn green-haze" type="submit" data-ng-click="next()" value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), -a.put("app/channels/fax/account/view/disposition/modal/add.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_DISPOSITIONS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.form.$touched || form.$submitted) && form.form.$invalid}">\n <div class="">\n <!-- <input type="text" name="form" placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}" class="form-control" data-ng-model="name" data-ng-pattern="/^[a-zA-Z0-9]*$/" required/> -->\n <input type="text" name="form" placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}" class="form-control" data-ng-model="name" required/>\n <span data-ng-show="form.form.$touched && form.form.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <!-- <span data-ng-show="form.form.$touched && form.form.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_PATTERN\' | translate}}.\n </span> -->\n </div>\n <!-- <div class="help-block">\n {{\'MESSAGE_ALLOWED_NUMBERS_AND_LETTERS\' | translate}}\n </div> -->\n </div>\n <!-- END NAME -->\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()" data-ng-show="form.$valid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/fax/account/view/disposition/view/view.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_DISPOSITIONS\' | translate}}</span>\n </div>\n <div class="actions actions-md">\n <a href="#" class="btn btn-icon-only green" data-ng-click="addDisposition();">\n <i class="fa fa-plus"></i>\n </a>\n </div>\n </div>\n <div class="portlet-body" data-ng-init="initView()">\n <div class="tab-content">\n <div class="row" data-ng-hide="dispositions.length">\n <div class="col-md-12">\n <div class="note note-info">\n <h4 class="block">Info! {{\'MESSAGE_NO_DISPOSITIONS_AVAILABLE\' | translate}}</h4>\n </div>\n </div>\n </div>\n\n <!-- GENERAL TAB -->\n <div class="row" data-ng-repeat="disposition in dispositions">\n <div class="col-md-12 form-group">\n <div class="input-group">\n <div>\n <input class="form-control" type="text" placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}" data-ng-model="disposition.name">\n </div>\n <span class="input-group-btn">\n <button class="btn btn-success" type="button" data-ng-click="updateDisposition(disposition.id, disposition.name);"><i class="fa fa-cloud-upload fa-fw"></i> {{\'APPLICATION_UPDATE\' | translate}}</button>\n <button class="btn btn-danger" type="button" data-ng-click="deleteDisposition(disposition.id);"><i class="fa fa-times fa-fw"></i> {{\'APPLICATION_DELETE\' | translate}}</button>\n </span>\n </div>\n </div>\n </div>\n <!-- END GENERAL TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/fax/account/view/hooks/view/view.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_HOOKS\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_ACCEPT\' | translate}}</a>\n </li>\n <li >\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_REJECT\' | translate}}</a>\n </li>\n <li >\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{\'APPLICATION_CLOSE\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- ACCEPT TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.accept" data-ng-submit="forms.accept.$valid && updateItemFaxAccount()" novalidate>\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.accept.method.$touched || forms.accept.$submitted) && forms.accept.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.acceptMethod" name="method" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.accept.method.$touched || forms.accept.$submitted) && forms.accept.method.$invalid && forms.accept.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.accept.url.$touched || forms.accept.$submitted) && forms.accept.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.acceptUrl" ng-required="account.acceptMethod"/>\n <span data-ng-show="(forms.accept.url.$touched || forms.accept.$submitted) && forms.accept.url.$invalid && forms.accept.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <!-- START ACTIONS-->\n <div class="row" ng-repeat = "action in account.actions">\n <div ng-switch="action.action">\n <div ng-switch-when="pause">\n <div class="form-group col-md-4">\n <label class="control-label">{{\'APPLICATION_PAUSE\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-change="resetActionData(action)"\n data-ng-model="action.enabled"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <div ng-if="action.enabled" class="form-group col-md-8">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}</label>\n <ui-select name="action" data-ng-model="action.type" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_TYPE\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat=" pause.name as pause in pauses | filter: $select.search">\n <div ng-bind-html="pause.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n </div>\n <!-- END ACTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ACCEPT TAB -->\n <!-- START REJECT TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.reject" data-ng-submit="forms.reject.$valid && updateItemFaxAccount()" novalidate>\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.reject.method.$touched || forms.reject.$submitted) && forms.reject.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.rejectMethod" name="method" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.reject.method.$touched || forms.reject.$submitted) && forms.reject.method.$invalid && forms.reject.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.reject.url.$touched || forms.reject.$submitted) && forms.reject.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.rejectUrl" ng-required="account.rejectMethod"/>\n <span data-ng-show="(forms.reject.url.$touched || forms.reject.$submitted) && forms.reject.url.$invalid && forms.reject.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ACCEPT TAB -->\n <!-- START CLOSE TAB -->\n <div class="tab-pane" id="tab_1_3">\n <form name="forms.close" data-ng-submit="forms.close.$valid && updateItemFaxAccount()" novalidate>\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.close.method.$touched || forms.close.$submitted) && forms.close.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.closeMethod" name="method" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.close.method.$touched || forms.close.$submitted) && forms.close.method.$invalid && forms.close.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.close.url.$touched || forms.close.$submitted) && forms.close.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.closeUrl" ng-required="account.closeMethod"/>\n <span data-ng-show="(forms.close.url.$touched || forms.close.$submitted) && forms.close.url.$invalid && forms.close.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END CLOSE TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/fax/account/view/setting/view/view.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_ADVANCED\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body" data-ng-init="initView()">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateItemFaxAccount()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.$submitted || forms.general.name.$touched) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.name" required/>\n <span data-ng-show="forms.general.name.$error.required && (forms.general.$submitted || forms.general.name.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START HEADERINFO -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.$submitted || forms.general.headerinfo.$touched) && forms.general.headerinfo.$invalid}">\n <label class="control-label">{{\'APPLICATION_HEADERINFO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="headerinfo" placeholder="{{\'APPLICATION_HEADERINFO\' | translate}}" class="form-control" data-ng-model="account.headerinfo" required/>\n <span data-ng-show="forms.general.headerinfo.$error.required && (forms.general.$submitted || forms.general.headerinfo.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span class="help-block">\n {{\'DESCRIPTION_HEADERINFO\' | translate}}.\n </span>\n </div>\n <!-- END HEADERINFO -->\n\n <!-- START TRUNKS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.$submitted || forms.general.trunk.$touched) && forms.general.trunk.$invalid}">\n <label class="control-label">{{\'APPLICATION_TRUNK\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="account.TrunkName" name="trunk" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_TRUNK\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="trunk.name as trunk in trunks | filter: $select.search">\n <div data-ng-bind="trunk.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="trunks.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_TRUNKS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/trunks/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="forms.general.trunk.$error.required && (forms.general.$submitted || forms.general.trunk.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START TRUNKS -->\n\n <!-- START LOCALSTATIONID -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.$submitted || forms.general.localstationid.$touched) && forms.general.localstationid.$invalid}">\n <label class="control-label">{{\'APPLICATION_LOCALSTATIONID\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="localstationid" placeholder="{{\'APPLICATION_LOCALSTATIONID\' | translate}}" class="form-control" data-ng-model="account.localstationid" required/>\n <span data-ng-show="forms.general.localstationid.$error.required && (forms.general.$submitted || forms.general.localstationid.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span class="help-block">\n {{\'DESCRIPTION_LOCALSTATIONID\' | translate}}.\n </span>\n </div>\n <!-- END LOCALSTATIONID -->\n\n <!-- START LIST -->\n <div class="form-group" data-ng-if="license.cm">\n <label class="control-label">{{\'APPLICATION_LIST\' | translate}}</label>\n <div class="input-group">\n\n <ui-select data-ng-model="account.ListId" name="list" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_LIST\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="list.id as list in lists | filter: $select.search">\n <div ng-bind-html="list.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n\n <span class="input-group-btn">\n <button type="button" data-ng-click="account.ListId = null" class="btn btn-default">\n <span class="glyphicon glyphicon-trash"></span>\n </button>\n </span>\n\n </div>\n </div>\n <!-- END LIST -->\n\n <!-- START FIDELITY -->\n <!-- <div class="form-group">\n <label class="control-label">{{\'APPLICATION_FIDELITY\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-model="account.fidelity"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div> -->\n <!-- END FIDELITY -->\n\n <!-- START TIMEOUT -->\n <!-- <div class="form-group" data-ng-if="account.fidelity" data-ng-class="{\'has-error\': (forms.general.$submitted || forms.general.timeout.$touched) && forms.general.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="0" name="timeout" placeholder="{{\'APPLICATION_PORT\' | translate}}" class="form-control" data-ng-model="account.timeout" required/>\n <span data-ng-show="(forms.general.timeout.$touched || forms.general.$submitted) && forms.general.timeout.$invalid && forms.general.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.general.timeout.$touched || forms.general.$submitted) && forms.general.timeout.$invalid && forms.general.timeout.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div> -->\n <!-- END TIMEOUT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="account.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n\n <!-- ADVANCED TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.advanced" data-ng-submit="forms.advanced.$valid && updateItemFaxAccount()" novalidate>\n <div class="row">\n <div class="col-md-6">\n <!-- START ECM -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_ECM\' | translate}}<span class="required" aria-required="true">*</span></label><br>\n <input\n bs-switch\n ng-model="account.ecm"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}"\n ng-true-value="\'yes\'"\n ng-false-value="\'no\'">\n <span class="help-block">\n {{\'DESCRIPTION_ECM\' | translate}}.\n </span>\n </div>\n <!-- END ECM -->\n\n <!-- START MINRATE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.$submitted || forms.advanced.minrate.$touched) && forms.advanced.minrate.$invalid}">\n <label class="control-label">{{\'APPLICATION_MINRATE\' | translate}} <span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="account.minrate" name="minrate" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_MINRATE\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="minrate in rate | filter: $select.search">\n <div data-ng-bind="minrate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{\'DESCRIPTION_MINRATE\' | translate}}.\n </span>\n <span data-ng-show="forms.advanced.minrate.$error.required && (forms.advanced.$submitted || forms.advanced.minrate.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START MINRATE -->\n\n <!-- START MAXRATE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.$submitted || forms.advanced.maxrate.$touched) && forms.advanced.maxrate.$invalid}">\n <label class="control-label">{{\'APPLICATION_MAXRATE\' | translate}} <span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="account.maxrate" name="maxrate" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_MAXRATE\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="maxrate in rate | filter: $select.search">\n <div data-ng-bind="maxrate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{\'DESCRIPTION_MAXRATE\' | translate}}.\n </span>\n <span data-ng-show="forms.advanced.maxrate.$error.required && (forms.advanced.$submitted || forms.advanced.maxrate.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START MAXRATE -->\n\n <!-- START MODEM -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.$submitted || forms.advanced.modem.$touched) && forms.advanced.modem.$invalid}">\n <label class="control-label">{{\'APPLICATION_MODEM\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="modem" placeholder="{{\'APPLICATION_MODEM\' | translate}}" class="form-control" data-ng-model="account.modem" required/>\n <span class="help-block">\n {{\'DESCRIPTION_MODEM\' | translate}}.\n </span>\n <span data-ng-show="forms.advanced.modem.$error.required && (forms.advanced.$submitted || forms.advanced.modem.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MODEM -->\n </div>\n <div class="col-md-6">\n <!-- START GATEWAY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.$submitted || forms.advanced.gateway.$touched) && forms.advanced.gateway.$invalid}">\n <label class="control-label">{{\'APPLICATION_GATEWAY\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="gateway" placeholder="{{\'APPLICATION_GATEWAY\' | translate}}" class="form-control" data-ng-model="account.gateway" required data-ng-pattern="settings.patternGateway"/>\n <span class="help-block">\n {{\'DESCRIPTION_GATEWAY\' | translate}}.\n </span>\n <span data-ng-show="(forms.advanced.gateway.$touched || forms.advanced.$submitted) && forms.advanced.gateway.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.advanced.gateway.$touched || forms.advanced.$submitted) && forms.advanced.gateway.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_GATEWAY\' | translate}}.\n </span>\n </div>\n <!-- END GATEWAY -->\n\n <!-- START FAXDETECT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.$submitted || forms.advanced.faxdetect.$touched) && forms.advanced.faxdetect.$invalid}">\n <label class="control-label">{{\'APPLICATION_FAXDETECT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="faxdetect" placeholder="{{\'APPLICATION_FAXDETECT\' | translate}}" class="form-control" data-ng-model="account.faxdetect" required data-ng-pattern="settings.patternFaxdetect"/>\n <span class="help-block">\n {{\'DESCRIPTION_FAXDETECT\' | translate}}.\n </span>\n <span data-ng-show="(forms.advanced.faxdetect.$touched || forms.advanced.$submitted) && forms.advanced.faxdetect.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.advanced.faxdetect.$touched || forms.advanced.$submitted) && forms.advanced.faxdetect.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_FAXDETECT\' | translate}}.\n </span>\n </div>\n <!-- END FAXDETECT -->\n\n <!-- START T38TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.$submitted || forms.advanced.t38timeout.$touched) && forms.advanced.t38timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_T38TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="t38timeout" placeholder="{{\'APPLICATION_T38TIMEOUT\' | translate}}" class="form-control" data-ng-model="account.t38timeout" required min="1000"/>\n <span class="help-block">\n {{\'DESCRIPTION_T38TIMEOUT\' | translate}}.\n </span>\n <span data-ng-show="(forms.advanced.t38timeout.$touched || forms.advanced.$submitted) && forms.advanced.t38timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.advanced.t38timeout.$touched || forms.advanced.$submitted) && forms.advanced.t38timeout.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_T38TIMEOUT\' | translate}}.\n </span>\n </div>\n <!-- END T38TIMEOUT -->\n\n <!-- START TECH -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.$submitted || forms.advanced.tech.$touched) && forms.advanced.tech.$invalid}">\n <label class="control-label">{{\'APPLICATION_TECHNOLOGY\' | translate}} <span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="account.tech" name="tech" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_TECHNOLOGY\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="tech in techs | filter: $select.search">\n <div data-ng-bind="tech | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.advanced.tech.$touched || forms.advanced.$submitted) && forms.advanced.tech.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START TECH -->\n </div>\n </div>\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'), -a.put("app/channels/fax/account/view/view.html",'<!-- BEGIN PAGE HEADER-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-fax"></i>\n <a href="#">{{ \'APPLICATION_FAX\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-notebook"></i>\n <a href="/channels/fax/accounts/list">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a>\n <i class="fa fa-angle-right" data-ng-show="account"></i>\n </li>\n <li data-ng-show="account">\n <a href="#">{{ account.name || account.description }}</a>\n </li>\n </ul>\n </div>\n\n<!-- END PAGE HEADER-->\n\n<!-- BEGIN PAGE CONTENT-->\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/account.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{ account.name || account.description }}\n </div>\n <div class="profile-usertitle-job">\n {{ account.phone }}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.fax.accounts.view.settings\')}">\n <a href="/channels/fax/accounts/view/{{account.id}}/settings">\n <i class="icon-settings"></i>\n {{\'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.is(\'main.channels.fax.accounts.view.hooks\')}">\n <a href="/channels/fax/accounts/view/{{account.id}}/hooks">\n <i class="fa fa-code"></i>\n {{\'APPLICATION_HOOKS\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.is(\'main.channels.fax.accounts.view.dispositions\')}">\n <a href="/channels/fax/accounts/view/{{account.id}}/dispositions">\n <i class="icon-target"></i>\n {{\'APPLICATION_DISPOSITIONS\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.includes(\'main.channels.fax.accounts.view.actions\')}">\n <a href="/channels/fax/accounts/view/{{account.id}}/actions/list">\n <i class="icon-directions"></i>\n {{\'APPLICATION_ACTIONS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/fax/account/wizard/wizard.html",'<!-- BEGIN PAGE HEADER-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-fax"></i>\n <a href="#">{{ \'APPLICATION_FAX\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-notebook"></i>\n <a href="/channels/fax/accounts/list">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n<!-- END PAGE HEADER-->\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initWizard()">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACCOUNT\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_GENERAL\' | translate}}" canexit="exitValidation(forms.formGeneral.$valid)">\n <form name="forms.formGeneral" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formGeneral.$submitted || forms.formGeneral.name.$touched) && forms.formGeneral.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="forms.formGeneral.name.$error.required && (forms.formGeneral.$submitted || forms.formGeneral.name.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START HEADERINFO -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formGeneral.$submitted || forms.formGeneral.headerinfo.$touched) && forms.formGeneral.headerinfo.$invalid}">\n <label class="control-label">{{\'APPLICATION_HEADERINFO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="headerinfo" placeholder="{{\'APPLICATION_HEADERINFO\' | translate}}" class="form-control" data-ng-model="item.headerinfo" required/>\n <span data-ng-show="forms.formGeneral.headerinfo.$error.required && (forms.formGeneral.$submitted || forms.formGeneral.headerinfo.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span class="help-block">\n {{\'DESCRIPTION_HEADERINFO\' | translate}}.\n </span>\n </div>\n <!-- END HEADERINFO -->\n\n <!-- START TRUNKS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formGeneral.$submitted || forms.formGeneral.trunk.$touched) && forms.formGeneral.trunk.$invalid}">\n <label class="control-label">{{\'APPLICATION_TRUNK\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.TrunkName" name="trunk" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_TRUNK\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="trunk.name as trunk in trunks | filter: $select.search">\n <div data-ng-bind="trunk.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="trunks.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_TRUNKS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/trunks/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="forms.formGeneral.trunk.$error.required && (forms.formGeneral.$submitted || forms.formGeneral.trunk.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START TRUNKS -->\n\n <!-- START LOCALSTATIONID -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formGeneral.$submitted || forms.formGeneral.localstationid.$touched) && forms.formGeneral.localstationid.$invalid}">\n <label class="control-label">{{\'APPLICATION_LOCALSTATIONID\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="localstationid" placeholder="{{\'APPLICATION_LOCALSTATIONID\' | translate}}" class="form-control" data-ng-model="item.localstationid" required/>\n <span data-ng-show="forms.formGeneral.localstationid.$error.required && (forms.formGeneral.$submitted || forms.formGeneral.localstationid.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span class="help-block">\n {{\'DESCRIPTION_LOCALSTATIONID\' | translate}}.\n </span>\n </div>\n <!-- END LOCALSTATIONID -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" data-ng-click="next()"/>\n\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_ADVANCED\' | translate}}" canexit="exitValidation(forms.formAdvanced.$valid)">\n <form name="forms.formAdvanced" novalidate>\n\n <!-- START ECM -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_ECM\' | translate}}<span class="required" aria-required="true">*</span></label><br>\n <input\n bs-switch\n ng-model="item.ecm"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}"\n ng-true-value="\'yes\'"\n ng-false-value="\'no\'">\n <span class="help-block">\n {{\'DESCRIPTION_ECM\' | translate}}.\n </span>\n </div>\n <!-- END ECM -->\n\n <!-- START MINRATE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAdvanced.$submitted || forms.formAdvanced.minrate.$touched) && forms.formAdvanced.minrate.$invalid}">\n <label class="control-label">{{\'APPLICATION_MINRATE\' | translate}} <span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.minrate" name="minrate" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_MINRATE\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="minrate in rate | filter: $select.search">\n <div data-ng-bind="minrate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{\'DESCRIPTION_MINRATE\' | translate}}.\n </span>\n <span data-ng-show="forms.formAdvanced.minrate.$error.required && (forms.formAdvanced.$submitted || forms.formAdvanced.minrate.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START MINRATE -->\n\n <!-- START MAXRATE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAdvanced.$submitted || forms.formAdvanced.maxrate.$touched) && forms.formAdvanced.maxrate.$invalid}">\n <label class="control-label">{{\'APPLICATION_MAXRATE\' | translate}} <span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.maxrate" name="maxrate" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_MAXRATE\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="maxrate in rate | filter: $select.search">\n <div data-ng-bind="maxrate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{\'DESCRIPTION_MAXRATE\' | translate}}.\n </span>\n <span data-ng-show="forms.formAdvanced.maxrate.$error.required && (forms.formAdvanced.$submitted || forms.formAdvanced.maxrate.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START MAXRATE -->\n\n <!-- START MODEM -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAdvanced.$submitted || forms.formAdvanced.modem.$touched) && forms.formAdvanced.modem.$invalid}">\n <label class="control-label">{{\'APPLICATION_MODEM\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="modem" placeholder="{{\'APPLICATION_MODEM\' | translate}}" class="form-control" data-ng-model="item.modem" required/>\n <span class="help-block">\n {{\'DESCRIPTION_MODEM\' | translate}}.\n </span>\n <span data-ng-show="forms.formAdvanced.modem.$error.required && (forms.formAdvanced.$submitted || forms.formAdvanced.modem.$touched)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MODEM -->\n\n <!-- START GATEWAY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAdvanced.$submitted || forms.formAdvanced.gateway.$touched) && forms.formAdvanced.gateway.$invalid}">\n <label class="control-label">{{\'APPLICATION_GATEWAY\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="gateway" placeholder="{{\'APPLICATION_GATEWAY\' | translate}}" class="form-control" data-ng-model="item.gateway" required data-ng-pattern="settings.patternGateway"/>\n <span class="help-block">\n {{\'DESCRIPTION_GATEWAY\' | translate}}.\n </span>\n <span data-ng-show="(forms.formAdvanced.gateway.$touched || forms.formAdvanced.$submitted) && forms.formAdvanced.gateway.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formAdvanced.gateway.$touched || forms.formAdvanced.$submitted) && forms.formAdvanced.gateway.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_GATEWAY\' | translate}}.\n </span>\n </div>\n <!-- END GATEWAY -->\n\n <!-- START FAXDETECT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAdvanced.$submitted || forms.formAdvanced.faxdetect.$touched) && forms.formAdvanced.faxdetect.$invalid}">\n <label class="control-label">{{\'APPLICATION_FAXDETECT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="faxdetect" placeholder="{{\'APPLICATION_FAXDETECT\' | translate}}" class="form-control" data-ng-model="item.faxdetect" required data-ng-pattern="settings.patternFaxdetect"/>\n <span class="help-block">\n {{\'DESCRIPTION_FAXDETECT\' | translate}}.\n </span>\n <span data-ng-show="(forms.formAdvanced.faxdetect.$touched || forms.formAdvanced.$submitted) && forms.formAdvanced.faxdetect.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formAdvanced.faxdetect.$touched || forms.formAdvanced.$submitted) && forms.formAdvanced.faxdetect.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_FAXDETECT\' | translate}}.\n </span>\n </div>\n <!-- END FAXDETECT -->\n\n <!-- START T38TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAdvanced.$submitted || forms.formAdvanced.t38timeout.$touched) && forms.formAdvanced.t38timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_T38TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="t38timeout" placeholder="{{\'APPLICATION_T38TIMEOUT\' | translate}}" class="form-control" data-ng-model="item.t38timeout" required min="1000"/>\n <span class="help-block">\n {{\'DESCRIPTION_T38TIMEOUT\' | translate}}.\n </span>\n <span data-ng-show="(forms.formAdvanced.t38timeout.$touched || forms.formAdvanced.$submitted) && forms.formAdvanced.t38timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formAdvanced.t38timeout.$touched || forms.formAdvanced.$submitted) && forms.formAdvanced.t38timeout.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_T38TIMEOUT\' | translate}}.\n </span>\n </div>\n <!-- END T38TIMEOUT -->\n\n <!-- START TECH -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formAdvanced.$submitted || forms.formAdvanced.tech.$touched) && forms.formAdvanced.tech.$invalid}">\n <label class="control-label">{{\'APPLICATION_TECHNOLOGY\' | translate}} <span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.tech" name="tech" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_TECHNOLOGY\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="tech in techs | filter: $select.search">\n <div data-ng-bind="tech | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.formAdvanced.tech.$touched || forms.formAdvanced.$submitted) && forms.formAdvanced.tech.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START TECH -->\n\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" data-ng-click="next()"/>\n\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n\n </wizard>\n\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/fax/inbox/message/info.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_INFO\' | translate }}</h3>\n</div>\n<div class="modal-body" data-ng-init="initInfo()">\n <div class="form-group" ng-if="data">\n <json-formatter json="data" open="1"></json-formatter>\n </div>\n <div class="note note-warning" data-ng-hide="data">\n <h4 class="block"></h4>\n <p>\n {{ \'MESSAGE_NO_INFO_AVAILABLE\' | translate }}\n </p>\n </div>\n\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/channels/fax/inbox/message/message.directive.html",'<div class="message">\n <div class="row">\n <div class="col-md-6">\n <span class="bold">From: </span>\n [<a href="" data-ng-click="openContact(message.from)">{{message.from}}</a>]\n <br>\n <span class="bold">To: </span>\n [<a href="" data-ng-click="openContact(message.to)">{{message.to}}</a>]\n </div>\n <div class="col-md-6">\n <span class="pull-right">\n <a ng-click="info(message)"><i class="icon-info font-blue"></i></a>\n </span>\n <span class="pull-right" data-ng-show="message.User">{{\'APPLICATION_SENT_BY\' | translate}}: <strong>{{message.User.fullname}}</strong></span>\n </div>\n </div>\n <br>\n <span class="todo-tasklist-date">\n <span class="pull-right" data-ng-if="message.status!==\'RECEIVED\'" data-ng-switch="message.status" uib-tooltip="{{\'APPLICATION_PAGE_TRANSFERRED\' | translate}}: {{message.pagestransferred}} - {{\'APPLICATION_RETRY\' | translate}}: {{message.retry}}">\n <a ng-switch-when="SENDING" href="#" class="btn default btn-xs inactive-link blue-stripe"> {{message.status | uppercase}}\n <i class="fa fa-warning"></i>\n </a>\n <a ng-switch-when="FAILED" href="#" class="btn default btn-xs red-stripe" data-ng-click="retry(message.id)"> {{message.status | uppercase}}\n <i class="fa fa-times"></i>\n </a>\n <a ng-switch-when="SENT" href="#" class="btn default btn-xs inactive-link green-stripe"> {{message.status | uppercase}}\n <i class="fa fa-check"></i>\n </a>\n </span>\n <span class="pull-right" data-ng-if="message.status===\'RECEIVED\'" uib-tooltip="{{\'APPLICATION_PAGE_TRANSFERRED\' | translate}}: {{message.pagestransferred}}">\n <a href="#" class="btn default btn-xs inactive-link green-stripe"> {{message.status | uppercase}}\n <i class="fa fa-check"></i>\n </a>\n </span>\n <i class="icon-calendar" title="{{message.updatedAt | date:\'MMM d, y HH:mm:ss\'}}"></i> <span am-time-ago="message.updatedAt"></span>\n </span>\n <hr data-ng-if="message.FaxAttachments.length">\n <div data-ng-repeat="faxAttachment in message.FaxAttachments">\n <strong>{{faxAttachment.name}}</strong>\n <a target="_self" download="{{faxAttachment.name}}" href="api/fax/attachments/{{faxAttachment.id}}">\n <i class="icon-cloud-download"></i>\n </a>\n </div>\n</div>\n'),a.put("app/channels/fax/inbox/note/note.directive.html",'<div class="note">\n <div class="row">\n <div class="col-md-6">\n <a type="button" name="button" data-ng-if="::(Auth.getCurrentUser().id == message.UserId)" data-ng-click="deleteNote()">\n <i class="fa fa-trash-o" style="color: red;"></i>\n </a>\n\n <i class="icon-calendar" title="{{message.updatedAt | date:\'MMM d, y HH:mm:ss\'}}"></i> <span am-time-ago="message.updatedAt"></span>\n </div>\n <div class="col-md-6">\n <span class="pull-right" data-ng-show="message.User">{{\'APPLICATION_ADD_BY\' | translate}}: <strong>{{message.User.fullname}}</strong></span>\n </div>\n </div>\n <hr>\n <span class="body text-left" data-ng-bind-html="message.text" style="white-space: pre-wrap;"></span>\n</div>\n'),a.put("app/channels/fax/inbox/note/note.modal.html",'<div class="modal-header" data-ng-init="initModal()">\n <h3 class="modal-title">{{ \'APPLICATION_NOTES\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n <div class="form-group">\n <textarea data-ng-model="item.text" name="text" rows="10" style="resize: none; width: 100%;"></textarea>\n </div>\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/fax/inbox/room/room.directive.html",'<!-- BEGIN TODO CONTENT -->\n<div class="todo-content" data-ng-init="initForm();">\n <div class="portlet light">\n <div class="portlet-title">\n <div class="caption">\n <button data-ng-if="(!forms.compose.from.$invalid && !forms.compose.to.$invalid && uploader.queue.length) && faxRoom.status !== \'CLOSED\'" class="btn btn-sm btn-default green-meadow" data-ng-click="sendFax()">\n <i class="icon-paper-plane" style="color: white;"></i> {{\'APPLICATION_SEND\' | translate}}\n </button>\n <span data-ng-if="(!forms.compose.from.$invalid && !forms.compose.to.$invalid && uploader.queue.length) && faxRoom && faxRoom.status !== \'CLOSED\'"> | </span>\n <span data-ng-if="faxRoom" class="label label-default"> #{{faxRoom.id}} {{faxRoom.status}}</span>\n <span data-ng-if="faxRoom"> | </span>\n <span data-ng-if="faxRoom" class="caption-subject font-green-sharp bold">{{faxRoom.contact}}</span>\n </div>\n <div class="actions" data-ng-switch="faxRoom.status">\n <button class="btn btn-icon-only yellow" data-ng-if="faxRoom" data-ng-click="loadNote()" data-ng-hide="faxRoom.status == \'CLOSED\'" title="{{\'APPLICATION_NOTES\' | translate}}">\n <i class="fa fa-sticky-note"></i>\n </button>\n <span class="btn file-upload" data-ng-hide="faxRoom.status == \'CLOSED\'">\n <i class="fa fa-paperclip"></i> <input type="file" data-ng-if="uploader" data-ng-hide="faxRoom.status == \'CLOSED\'" nv-file-select uploader="uploader" multiple class="file-input" title="{{\'APPLICATION_ATTACHMENTS\' | translate}}">\n </span>\n <!-- UPDATE SECTION START -->\n <button data-ng-class="faxRoom.status == \'CLOSED\' ? \'grey-cascade\' : \'btn-success\'" class="btn btn-icon-only" data-ng-hide="faxRoom.status == \'CLOSED\' && faxRoom.disposition" data-ng-if="faxRoom" data-ng-click="closeRoom()" title="{{\'APPLICATION_STATUS\' | translate}}">\n <i data-ng-class="faxRoom.status == \'CLOSED\' ? \'icon-target\' : \'fa fa-upload\'"></i>\n </button>\n <!-- UPDATE SECTION END -->\n <button class="btn default btn-icon-only" data-ng-if="faxRoom && faxRoom.status !== \'CLOSED\'" data-ng-click="togglePanelLeft()" title="{{\'APPLICATION_RESIZE\' | translate}}">\n <i ng-class="panelRight == \'col-md-12\' ? \'icon-size-actual\' : \'icon-size-fullscreen\'"></i>\n </button>\n </div>\n </div>\n <div class="portlet-body">\n <div class="row">\n <div data-ng-show="panelLeft" data-ng-class="panelLeft">\n <div class="form">\n <!-- START TAGS -->\n <div class="form-group" data-ng-if="faxRoom.status !== \'CLOSED\'">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-tags" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <ui-select multiple data-ng-model="form.tags" theme="bootstrap" on-select="onChanged($item, $model)" on-remove="onChanged($item, $model)" data-ng-disabled="faxRoom.status == \'CLOSED\'">\n <ui-select-match placeholder="Tags...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter:$select.search" class="">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n <!-- END TAGS -->\n </div>\n\n <hr data-ng-if="faxRoom && faxRoom.status !== \'CLOSED\'">\n\n <!-- END TAGS -->\n\n <div id="mail-box">\n <ul class="chats">\n <li\n data-ng-switch="faxMessage.status"\n data-ng-class="{\'in\': faxMessage.status == \'RECEIVED\', \'out\': faxMessage.status == \'SENT\' || faxMessage.status == \'SENDING\' || faxMessage.status == \'FAILED\' || faxMessage.status == \'NOTE\'}"\n data-ng-repeat="faxMessage in faxRoom.FaxMessages | orderBy:\'-createdAt\'">\n <div class="avatar" data-ng-class="faxMessage.UserId ? \'pretty-avatar\' : \'pretty-avatar-v\'">\n <ng-letter-avatar\n data-ng-if="faxMessage.UserId"\n height="40"\n width="40"\n fontsize="25"\n data="{{faxMessage.User.fullname}}"\n avatarcustombgcolor="#B0B0B0"\n avatarcustomborder="border:2px solid #3399CC"\n charCount="2"\n shape="round"></ng-letter-avatar>\n <ng-letter-avatar\n data-ng-if="!faxMessage.UserId"\n height="40"\n width="40"\n fontsize="25"\n data="{{faxMessage.from}}"\n avatarcustombgcolor="#B0B0B0"\n avatarcustomborder="border:2px solid #EA4C61"\n charCount="1"\n shape="round"></ng-letter-avatar>\n </div>\n <fax-note message="faxMessage" ng-switch-when="NOTE"></fax-note>\n <fax-message message="faxMessage" list-id="faxRoom.FaxAccount.ListId" ng-switch-default></fax-message>\n </li>\n </ul>\n </div>\n </div>\n <div data-ng-class="panelRight">\n <div class="note note-info" data-ng-if="faxRoom && faxRoom.status == \'CLOSED\'">\n <h4 class="block"><i class="icon-info"></i> {{\'MESSAGE_FAX_ROOM_CLOSED\' | translate}}!</h4>\n <p>\n <strong>{{\'MESSAGE_FAX_ROOM_CLOSED_DETAILS\' | translate}}.</strong>\n </p>\n <hr>\n <p>\n <i class="icon-target"></i> {{\'APPLICATION_DISPOSITION\' | translate}}: <strong>{{faxRoom.disposition}}</strong>\n </p>\n <p>\n <i class="icon-calendar"></i> {{\'APPLICATION_UPDATED_AT\' | translate}}: <strong>{{faxRoom.updatedAt | date:\'medium\'}}</strong> (<span am-time-ago="faxRoom.updatedAt"></span>)\n </p>\n </div>\n <form name="forms.compose" data-ng-submit="sendFax()" class="form-horizontal" novalidate>\n\n <!-- START HEAD -->\n <div class="form">\n\n <v-accordion class="vAccordion--default" ng-if="faxRoom.status !== \'CLOSED\'">\n <v-pane expanded="expanded">\n <v-pane-header>\n <i class="icon-people"></i> From: {{form.from}}, To: {{form.to[0].fax}}\n </v-pane-header>\n <v-pane-content>\n <!-- START FROM -->\n <div class="form-group" data-ng-if="faxRoom.status !== \'CLOSED\'" data-ng-class="{\'has-error\': forms.compose.from.$invalid}">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <label class="control-label">From:</label>\n </div>\n <div class="col-md-11">\n <ui-select data-ng-model="form.from" data-ng-change="setList($select.selected.ListId)" theme="bootstrap" name="from" required>\n <ui-select-match placeholder="From...">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="faxAccount.localstationid as faxAccount in faxAccounts | filter: $select.search">\n <div data-ng-bind-html="faxAccount.name | highlight: $select.search"></div>\n <small data-ng-bind-html="faxAccount.localstationid | highlight: $select.search"></small>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.compose.from.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n <!-- END FROM -->\n\n <!-- START TO -->\n <div class="form-group" data-ng-if="faxRoom.status !== \'CLOSED\'" data-ng-class="{\'has-error\': forms.compose.to.$invalid}">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <label class="control-label">To:</label>\n </div>\n <div class="col-md-11">\n <tags-input name="to" ng-model="form.to" type="text" display-property="fax" max-tags="1" min-tags="1">\n <auto-complete source="getContacts($query)"></auto-complete>\n </tags-input>\n <span data-ng-show="forms.compose.to.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_TO_LIMIT\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n <!-- END TO -->\n\n </v-pane-content>\n </v-pane>\n </v-accordion>\n\n <!-- START ATTACH -->\n <div class="form-group" data-ng-if="uploader && (faxRoom.status !== \'CLOSED\')">\n <div class="col-md-12">\n <hr ng-if="uploader.queue.length">\n <table class="table">\n <tbody>\n <tr ng-repeat="item in uploader.queue">\n <td style="border-top:none"><strong>{{ item.file.name | truncate: 5: \'...\': true}}</strong></td>\n <td style="border-top:none" ng-show="uploader.isHTML5" nowrap>{{ item.file.size/1024/1024|number:2 }} MB</td>\n <td style="border-top:none" ng-show="uploader.isHTML5">\n <div class="progress" style="margin-bottom: 0;">\n <div class="progress-bar" role="progressbar" ng-style="{ \'width\': item.progress + \'%\' }"></div>\n </div>\n </td>\n <td style="border-top-style:none" class="text-center">\n <span ng-show="item.isSuccess"><i class="glyphicon glyphicon-ok"></i></span>\n <span ng-show="item.isCancel"><i class="glyphicon glyphicon-ban-circle"></i></span>\n <span ng-show="item.isError"><i class="glyphicon glyphicon-remove"></i></span>\n </td>\n <td style="border-top-style:none" nowrap>\n <button type="button" class="btn btn-danger btn-xs" data-ng-click="item.remove()">\n <span class="glyphicon glyphicon-trash"></span> {{\'APPLICATION_REMOVE\' | translate}}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n <div>\n </div>\n </div>\n </div>\n <!-- END ATTACH -->\n\n </div>\n </form>\n </div>\n </div>\n </div>\n </div>\n</div>\n<!-- END TODO CONTENT -->\n'), -a.put("app/channels/fax/inbox/status/status.modal.html",'<div class="modal-header">\n <button data-ng-if="modal.dismissable" type="button" data-ng-click="$dismiss()" class="close">×</button>\n <h4 data-ng-if="modal.title" data-ng-bind="modal.title | translate" class="modal-title"></h4>\n</div>\n<div class="modal-body">\n <p data-ng-if="modal.text && !closed" ng-bind="modal.text | translate"></p>\n <form name="form" novalidate data-ng-init="initDisposition()">\n <div class="form-group">\n <ui-select data-ng-model="item.disposition" name="disposition" theme="bootstrap" data-ng-disabled="!dispositions.length" required>\n <ui-select-match placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="disposition.name as disposition in dispositions | filter: $select.search">\n <div ng-bind-html="disposition.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="note note-warning" data-ng-if="dispositions.length < 1">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_DISPOSITIONS_AVAILABLE\' | translate }}\n </p>\n </div>\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/fax/inbox/view/account/list/list.html",'<!-- BEGIN Portlet PORTLET-->\n<div class="portlet light" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption">\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'NEW\'" uib-uncheckable>NEW</button>\n </div>\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'OPEN\'" uib-uncheckable>OPEN</button>\n </div>\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'PENDING\'" uib-uncheckable>PENDING</button>\n </div>\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'CLOSED\'" uib-uncheckable>CLOSED</button>\n </div>\n </div>\n <div class="actions">\n <a href="#" class="btn btn-icon-only default" data-ng-click="getPage();">\n <i class="fa fa-refresh"></i>\n </a>\n <a href="#" class="btn btn-icon-only red" data-ng-click="deleteItems();" data-ng-show="id.length && isAdmin">\n <i class="fa fa-trash"></i>\n </a>\n <a href="#" class="btn btn-icon-only btn-success" data-ng-click="disposeItems();" data-ng-show="id.length">\n <i class="fa fa-upload"></i>\n </a>\n <a href="#" class="btn btn-icon-only blue" data-ng-click="tagItems();" data-ng-show="id.length">\n <i class="fa fa-tags"></i>\n </a>\n <a href="#" class="btn btn-icon-only green" data-ng-click="openRoom(null, \'New Message\')">\n <i class="fa fa-plus"></i>\n </a>\n </div>\n </div>\n <div class="portlet-title" data-ng-show="tags.length">\n <!-- START TAGS -->\n <div class="form-group">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-tags" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <ui-select multiple data-ng-model="query.tags" theme="bootstrap" on-select="onChanged($item, $model)" on-remove="onChanged($item, $model)">\n <ui-select-match placeholder="Search by tag...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter:$select.search">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n <!-- END TAGS -->\n </div>\n <div class="portlet-body">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="false"></span>\n <!-- END UI-GRID SPINNER -->\n\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-pagination ui-grid-selection ui-grid-exporter class="ui-grid-inbox">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END Portlet PORTLET-->\n'),a.put("app/channels/fax/inbox/view/view.agents.modal.html",'<div class="modal-header" data-ng-init="initModal()">\n <h3 class="modal-title">{{ \'APPLICATION_AGENTS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <!-- START TRANSPORT -->\n <div class="form-group">\n <form name="form" novalidate>\n <!-- START TRANSPORT -->\n <div class="form-group">\n <ui-select multiple name="agents" data-ng-model="item.agents" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_AGENTS\' | translate}}">{{$item.fullname}}</ui-select-match>\n <ui-select-choices repeat="agent.id as agent in agents | filter: $select.search">\n {{agent.fullname}}\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="agents">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AGENTS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/staff/agents/list">{{\'APPLICATION_AGENTS\' | translate}}</a>\n </p>\n </div>\n </div>\n <!-- END TRANSPORT -->\n </form>\n </div>\n <!-- END TRANSPORT -->\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/fax/inbox/view/view.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-fax"></i>\n <a href="#">{{ \'APPLICATION_FAX\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-note"></i>\n <a href="#">{{ \'APPLICATION_INBOX\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row inbox">\n <div class="col-md-3">\n <ul class="inbox-nav margin-bottom-10">\n <li data-ng-class="{active: $stateParams.id == faxAccount.id}" data-ng-repeat="faxAccount in faxAccounts">\n <a href="/channels/fax/inbox/view/account/{{faxAccount.id}}/list" class="btn">\n <i class="icon-notebook"></i> {{faxAccount.name}}\n </a>\n <b></b>\n </li>\n </ul>\n <div class="note note-warning" data-ng-hide="faxAccounts.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AVAILABLE_ACCOUNTS\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/fax/accounts/list">{{\'APPLICATION_ACCOUNTS\' | translate}}</a>\n </p>\n </div>\n </div>\n\n <div class="col-md-9" data-ng-init="initView()">\n <!-- BEGIN PROFILE CONTENT -->\n <div class="room-content">\n <div ui-view>\n <div class="note note-info">\n <h4 class="block">Info! {{\'APPLICATION_NO_ACCOUNT_SELECTED\' | translate}}</h4>\n </div>\n </div>\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n'),a.put("app/channels/fax/inbox/view/view.status.modal.html",'<div class="modal-header" data-ng-init="initModal()">\n <h3 class="modal-title">{{ modal.title | translate }}</h3>\n</div>\n<div class="modal-body">\n <p data-ng-if="modal.text" data-ng-bind="modal.text"></p>\n <div data-ng-if="modal.html" data-ng-bind-html="modal.html"></div>\n</div>\n<div class="modal-footer">\n <button data-ng-repeat="button in modal.buttons"\n data-ng-class="button.classes"\n data-ng-click="button.click($event)"\n data-ng-bind="button.text | translate" class="btn"></button>\n</div>\n'),a.put("app/channels/fax/inbox/view/view.tags.modal.html",'<div class="modal-header" data-ng-init="initModal()">\n <h3 class="modal-title">{{ \'APPLICATION_TAGS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <!-- START TRANSPORT -->\n <div class="form-group">\n <form name="form" novalidate>\n <!-- START TAGS -->\n <div class="form-group">\n <ui-select multiple data-ng-model="item.tags" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_TAGS\' | translate}}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter: $select.search">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END TAGS -->\n </form>\n </div>\n <!-- END TRANSPORT -->\n</div>\n<div class="modal-footer">\n <button type="button" class="btn" data-ng-class="button.class" data-ng-click="button.click()"data-ng-repeat="button in modal.buttons">{{button.text | translate}}</button>\n <!-- <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button> -->\n</div>\n'),a.put("app/channels/fax/queue/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_QUEUE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" data-ng-pattern="settings.patternName" required />\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$invalid && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$invalid && form.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START STRATEGY -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.strategy.$touched || form.$submitted) && form.strategy.$invalid}">\n <label class="control-label">{{\'APPLICATION_STRATEGY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.strategy" name="strategy" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | uppercase}}</ui-select-match>\n <ui-select-choices repeat="strategy in strategies | filter: $select.search">\n <div ng-bind-html="strategy | uppercase | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.strategy.$touched || form.$submitted) && form.strategy.$invalid && form.strategy.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END STRATEGY -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.timeout.$touched || form.$submitted) && form.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="Timeout" class="form-control" data-ng-model="item.timeout" required min="1"/>\n <span data-ng-show="(form.timeout.$touched || form.$submitted) && form.timeout.$invalid && form.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START AGENTS-->\n <div class="form-body" data-ng-init="getTeams()">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="item.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="item.penalty=item.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!item.penalty" data-ng-click="item.penalty=item.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-team">\n </div>\n </div>\n </div>\n <!-- END AGENTS-->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/fax/queue/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-fax"></i>\n <a href="#">{{ \'APPLICATION_FAX\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="/channels/fax/queues/lis">{{ \'APPLICATION_QUEUES\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_QUEUES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <a class="btn green-jungle" href="#" data-ng-click="createItem()" data-ng-if="Auth.isAdmin()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_QUEUE\' | translate }}\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/fax/queue/view/view.agents.html",'<div class="row" data-ng-init="getTeams()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_AGENTS\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <!-- BEGIN FORM-->\n <form action="index.html" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="queue.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="queue.penalty=queue.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!queue.penalty" data-ng-click="queue.penalty=queue.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-team">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/fax/queue/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getQueue()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-fax"></i>\n <a href="#">{{ \'APPLICATION_FAX\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="/channels/fax/queues/list">{{ \'APPLICATION_QUEUES\' | translate }}</a>\n <i data-ng-show="queue" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="queue">\n <a href="#">{{queue.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/queue.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{queue.name}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.fax.queues.view.settings\')}">\n <a data-ng-href="/channels/fax/queues/view/{{queue.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.channels.fax.queues.view.agents\')}" data-ng-show="Auth.getCurrentUser().role === \'admin\'">\n <a data-ng-href="/channels/fax/queues/view/{{queue.id}}/agents">\n <i class="icon-people"></i>\n {{ \'APPLICATION_AGENTS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/fax/queue/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateFaxQueue()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="queue.name" data-ng-pattern="settings.patternName" required />\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid && forms.general.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START STRATEGY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.strategy.$touched || forms.general.$submitted) && forms.general.strategy.$invalid}">\n <label class="control-label">{{\'APPLICATION_STRATEGY\' | translate}}</label>\n <ui-select data-ng-model="queue.strategy" name="strategy" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | uppercase}}</ui-select-match>\n <ui-select-choices repeat="strategy in strategies | filter: $select.search">\n <div ng-bind-html="strategy | uppercase | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END STRATEGY -->\n\n <!-- START TIMEOUT -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}}</label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" min="1" data-ng-model="queue.timeout"/>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="queue.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <input data-ng-if="Auth.isAdmin()" class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/fax/realtime/view/agent/agent.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initAgents()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-tree-view ui-grid-expandable-row ui-grid-pagination ui-grid-auto-resize>\n <span us-spinner spinner-key="grid-spinner" spinner-start-active="true"></span>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/fax/realtime/view/agent/agent.modal.info.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_INTERFACE_INFO\' | translate }}</h3>\n</div>\n<div class="modal-body">\n<div data-ng-if="agent.ipaddr" class="well">\n <div>{{agent.ipaddr}}:{{agent.port}}</div>\n <div>{{agent.fullcontact}}</div>\n <div>{{agent.useragent}}</div>\n <div>{{agent.lastms}}</div>\n</div>\n<div data-ng-if="!agent.ipaddr" class="alert alert-danger" role="alert">\n {{\'MESSAGE_NO_AVAILABLE_INFO\' | translate}}\n</div>\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/channels/fax/realtime/view/agent/queue.modal.add.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_JOIN_QUEUE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <div class="form-group row">\n <label class="col-md-2 control-label" style="margin-top: 7px;">{{\'APPLICATION_QUEUE\' | translate}}:</label>\n <div class="col-md-10">\n <ui-select multiple ng-model="item.queues" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_QUEUE\' | translate}}">{{$item.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n</div>\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/fax/realtime/view/application/application.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initApplications()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-auto-resize>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/fax/realtime/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-fax"></i>\n <a href="#">{{ \'APPLICATION_FAX\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-energy"></i>\n <a href="#">{{ \'APPLICATION_REALTIME\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <div>\n <nav class="navbar navbar-default" role="navigation">\n <div class="collapse navbar-collapse">\n <ul class="nav navbar-nav">\n <li data-ng-class="{\'active\': $state.is(\'main.channels.fax.realtime.view.agents\')}">\n <a href="/channels/fax/realtime/view/agents">\n {{\'APPLICATION_AGENTS\' | translate}}\n </a>\n </li>\n <li data-ng-class="{\'active\': $state.is(\'main.channels.fax.realtime.view.applications\')}">\n <a href="/channels/fax/realtime/view/applications">\n {{\'APPLICATION_APPLICATIONS\' | translate}}\n </a>\n </li>\n <li>\n <a href="#">\n <b>|{{\'APPLICATION_SHOW_TIMERS\' | translate}} </b><input\n bs-switch\n class="form-control"\n ng-model="showTimers"\n type="checkbox"\n name="showTimers"\n switch-active="{{ timerSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ timerSwitch.onColor }}"\n switch-off-color="{{ timerSwitch.offColor }}"\n switch-animate="{{ timerSwitch.animate }}"\n switch-size="{{ timerSwitch.size }}"\n switch-label="{{ timerSwitch.label }}"\n switch-icon="{{ timerSwitch.icon }}"\n switch-radio-off="{{ timerSwitch.radioOff }}"\n switch-label-width="{{ timerSwitch.labelWidth }}"\n switch-handle-width="{{ timerSwitch.handleWidth }}"><b>|</b>\n </a>\n </li>\n </ul>\n </div>\n </nav>\n </div>\n\n <div ui-view></div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/mail/account/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-envelope"></i>\n <a href="#">{{ \'APPLICATION_MAIL\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-notebook"></i>\n <a href="#">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group">\n <a class="btn btn-default" href="#" data-ng-click="gridOptions.getPage();">\n <i class="icon-reload"></i>\n </a>\n </div>\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/channels/mail/accounts/wizard">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ACCOUNT\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), -a.put("app/channels/mail/account/view/action/list/list.html",'<div class="row" data-ng-init="initActons()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACTIONS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/channels/mail/accounts/view/{{account.id}}/actions/wizard" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ACTION\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/mail/account/view/action/view/view.html",'\n<div class="row" data-ng-init="initAction()">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-directions font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACTION\' | translate }}</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="forms.settings" ng-submit="updateItem()" novalidate>\n <!-- START APP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app.$touched || forms.settings.$submitted) && forms.settings.app.$invalid}">\n <label class="control-label">{{ \'APPLICATION_APPLICATION\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.app" name="app" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_APPLICATION\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="app.value as app in apps | filter: $select.search">\n <div ng-bind-html="app.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.app.$touched || forms.settings.$submitted) && forms.settings.app.$invalid && forms.settings.app.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APP -->\n\n <div class="app-settings" ng-slide-down="application.app === \'queue\'" lazy-render duration="1" data-ng-init="getQueues()">\n <!-- START QUEUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.queue.$touched || forms.settings.$submitted) && forms.settings.queue.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.MailQueueId" name="queue" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="queues.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_QUEUES_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/mail/queues/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.queue.$touched || forms.settings.$submitted) && forms.settings.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'agent\'" lazy-render duration="1" data-ng-init="getAgents()">\n <!-- START AGENT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.agent.$touched || forms.settings.$submitted) && forms.settings.agent.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.UserId" name="agent" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.fullname}}</ui-select-match>\n <ui-select-choices repeat="agent.id as agent in agents | filter: $select.search">\n <div ng-bind-html="agent.fullname | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="agents.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AGENTS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/staff/agents/list">{{\'APPLICATION_AGENTS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.agent.$touched || forms.settings.$submitted) && forms.settings.agent.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END AGENT -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1" data-ng-init="getMailAccounts();getTemplates()">\n <!-- START SENDMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="email" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" min="1" required/>\n <span data-ng-show="(forms.action.from.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.mail.$touched || forms.action.$submitted) && forms.action.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in mailAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEMPLATE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data9" name="template" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SENDMAIL -->\n </div>\n\n\n <div class="app-settings" ng-slide-down="application.app === \'replyMail\'" lazy-render duration="1" data-ng-init="getMailAccounts();getTemplates()">\n <!-- START REPLYMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.type.$touched || forms.action.$submitted) && forms.action.type.$invalid}">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data1" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.key | translate }}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.key | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.type.$touched || forms.action.$submitted) && forms.action.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.mail.$touched || forms.action.$submitted) && forms.action.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in mailAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEMPLATE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data9" name="template" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END REPLYMAIL -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1" data-ng-init="getSmsAccounts()">\n <!-- START SENDSms -->\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.to.$touched || forms.settings.$submitted) && forms.settings.to.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" ng-pattern="/^[\\+]?[0-9]+$/" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" required/>\n <span data-ng-show="(forms.settings.to.$touched || forms.settings.$submitted) && forms.settings.to.$invalid && forms.settings.to.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in smsAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.text.$touched || forms.text.$submitted) && forms.settings.text.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <textarea id="text" class="form-control maxlength-handler" maxlength="160" name="text" data-ng-model="application.data6" required></textarea>\n <span data-ng-show="(forms.settings.text.$touched || forms.settings.$submitted) && forms.settings.text.$invalid && forms.settings.text.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <!-- END SENDSms -->\n </div>\n\n <!-- START INTERVAL_TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.intType.$touched || forms.settings.$submitted) && forms.settings.intType.$invalid}">\n <label class="control-label">{{ \'APPLICATION_INTERVAL_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.intType" theme="bootstrap" name="intType" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="intType.value as intType in $application.intTypes | filter: $select.search">\n {{ intType.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.intType.$touched || forms.settings.$submitted) && forms.settings.intType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVAL_TYPE -->\n\n <div class="app-settings" ng-slide-down="application.intType === \'custom\'" lazy-render duration="1">\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="application.alwaysTime">\n <uib-timepicker name="t_from" data-ng-model="application.t_from" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker>\n </fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="application.alwaysTime"><uib-timepicker name="t_to" data-ng-model="application.t_to" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker></fieldset>\n <!-- <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="application.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label> -->\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- START ALWAYS -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALWAYS\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="application.alwaysTime"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </label>\n </div>\n </div>\n <!-- END ALWAYS -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.md_from" theme="bootstrap" name="md_from">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_to && application.md_to!==\'always\' && monthDay>application.md_to && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.md_to" theme="bootstrap" name="md_to">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_from && application.md_from!==\'always\' && monthDay<application.md_from && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.intType === \'list\'" lazy-render duration="1" data-ng-init="getIntervals()">\n\n <!-- START INTERVALS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.IntervalId.$touched || forms.settings.$submitted) && forms.settings.IntervalId.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVALS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.IntervalId" theme="bootstrap" name="IntervalId" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="interval.id as interval in intervals | filter: $select.search">\n {{ interval.name}}\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="intervals.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_INTERVAL_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/intervals/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.IntervalId.$touched || forms.settings.$submitted) && forms.settings.IntervalId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVALS -->\n\n </div>\n <button class="btn green-haze" type="submit">{{\'APPLICATION_UPDATE\' | translate}}</button>\n </form>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/mail/account/view/action/wizard/wizard.html",'\n<div class="row" data-ng-init="initWizard()">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-directions font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACTION\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_APPLICATION\' | translate}}" canexit="formValidation(forms.action.$valid)">\n\n <form name="forms.action" novalidate>\n <!-- START APP -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.action.$submitted && forms.action.app.$invalid}">\n <label class="control-label">{{ \'APPLICATION_APPLICATION\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.app" name="app" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_APPLICATION\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="app.value as app in apps | filter: $select.search">\n <div ng-bind-html="app.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.action.$submitted && forms.action.app.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APP -->\n\n <div class="app-settings" ng-slide-down="application.app === \'agent\'" lazy-render duration="1" data-ng-init="getAgents()">\n <!-- START AGENT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.agent.$touched || forms.action.$submitted) && forms.action.agent.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.UserId" name="agent" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.fullname}}</ui-select-match>\n <ui-select-choices repeat="agent.id as agent in agents | filter: $select.search">\n <div ng-bind-html="agent.fullname | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="agents.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AGENTS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/staff/agents/list">{{\'APPLICATION_AGENTS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.agent.$touched || forms.action.$submitted) && forms.action.agent.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END AGENT -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'queue\'" lazy-render duration="1" data-ng-init="getQueues()">\n <!-- START QUEUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.queue.$touched || forms.action.$submitted) && forms.action.queue.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.MailQueueId" name="queue" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="queues.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_QUEUES_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/mail/queues/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.queue.$touched || forms.action.$submitted) && forms.action.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1" data-ng-init="getMailAccounts();getTemplates()">\n <!-- START SENDMAIL -->\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="email" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" min="1" required/>\n <span data-ng-show="(forms.action.from.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.mail.$touched || forms.action.$submitted) && forms.action.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in mailAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEMPLATE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data9" name="template" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SENDMAIL -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'replyMail\'" lazy-render duration="1" data-ng-init="getMailAccounts();getTemplates()">\n <!-- START REPLYMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.type.$touched || forms.action.$submitted) && forms.action.type.$invalid}">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data1" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.key | translate }}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.key | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.type.$touched || forms.action.$submitted) && forms.action.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.mail.$touched || forms.action.$submitted) && forms.action.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in mailAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEMPLATE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data9" name="template" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END REPLYMAIL -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1" data-ng-init="getSmsAccounts()">\n <!-- START SENDSms -->\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.to.$touched || forms.action.$submitted) && forms.action.to.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" ng-pattern="/^[\\+]?[0-9]+$/" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" required/>\n <span data-ng-show="(forms.action.to.$touched || forms.action.$submitted) && forms.action.to.$invalid && forms.action.to.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in smsAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.text.$touched || forms.action.$submitted) && forms.action.text.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <textarea id="text" class="form-control maxlength-handler" maxlength="160" name="text" data-ng-model="application.data6" required></textarea>\n <span data-ng-show="(forms.action.text.$touched || forms.action.$submitted) && forms.action.text.$invalid && forms.action.text.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <!-- END SENDSms -->\n </div>\n\n <!-- START INTERVAL_TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.intType.$touched || forms.action.$submitted) && forms.action.intType.$invalid}">\n <label class="control-label">{{ \'APPLICATION_INTERVAL_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.intType" theme="bootstrap" name="intType" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="intType.value as intType in $application.intTypes | filter: $select.search">\n {{ intType.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.intType.$touched || forms.action.$submitted) && forms.action.intType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVAL_TYPE -->\n\n <div class="app-settings" ng-slide-down="application.intType === \'custom\'" lazy-render duration="1">\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="application.alwaysTime">\n <uib-timepicker name="t_from" data-ng-model="application.t_from" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker>\n </fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="application.alwaysTime"><uib-timepicker name="t_to" data-ng-model="application.t_to" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker></fieldset>\n <!-- <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="application.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label> -->\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- START ALWAYS -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALWAYS\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="application.alwaysTime"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n <!-- <input type="checkbox" data-ng-model="application.alwaysTime"> -->\n </label>\n </div>\n </div>\n <!-- END ALWAYS -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.md_from" theme="bootstrap" name="md_from">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_to && application.md_to!==\'always\' && monthDay>application.md_to && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.md_to" theme="bootstrap" name="md_to">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_from && application.md_from!==\'always\' && monthDay<application.md_from && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.intType === \'list\'" lazy-render duration="1" data-ng-init="getIntervals()">\n\n <!-- START INTERVALS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.IntervalId.$touched || forms.action.$submitted) && forms.action.IntervalId.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVALS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.IntervalId" theme="bootstrap" name="IntervalId" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="interval.id as interval in intervals | filter: $select.search">\n {{ interval.name}}\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="intervals.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_INTERVAL_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/intervals/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.IntervalId.$touched || forms.action.$submitted) && forms.action.IntervalId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVALS -->\n\n </div>\n\n <input class="btn green-haze" type="submit" data-ng-click="next()" value="{{\'APPLICATION_CONTINUE\' | translate}}"/>\n\n </form>\n </wz-step>\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input class="btn green-haze" type="submit" data-ng-click="next()" value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), -a.put("app/channels/mail/account/view/disposition/modal/add.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_DISPOSITIONS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.form.$touched || form.$submitted) && form.form.$invalid}">\n <div class="">\n <!-- <input type="text" name="form" placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}" class="form-control" data-ng-model="name" data-ng-pattern="/^[a-zA-Z0-9]*$/" required/> -->\n <input type="text" name="form" placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}" class="form-control" data-ng-model="name" required/>\n <span data-ng-show="form.form.$touched && form.form.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <!-- <span data-ng-show="form.form.$touched && form.form.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_PATTERN\' | translate}}.\n </span> -->\n </div>\n <!-- <div class="help-block">\n {{\'MESSAGE_ALLOWED_NUMBERS_AND_LETTERS\' | translate}}\n </div> -->\n </div>\n <!-- END NAME -->\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()" data-ng-show="form.$valid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/mail/account/view/disposition/view/view.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_DISPOSITIONS\' | translate}}</span>\n </div>\n <div class="actions actions-md">\n <a href="#" class="btn btn-icon-only green" data-ng-click="addDisposition();">\n <i class="fa fa-plus"></i>\n </a>\n </div>\n </div>\n <div class="portlet-body" data-ng-init="initView()">\n <div class="tab-content">\n <div class="row" data-ng-hide="dispositions.length">\n <div class="col-md-12">\n <div class="note note-info">\n <h4 class="block">Info! {{\'MESSAGE_NO_DISPOSITIONS_AVAILABLE\' | translate}}</h4>\n </div>\n </div>\n </div>\n\n <!-- GENERAL TAB -->\n <div class="row" data-ng-repeat="disposition in dispositions">\n <div class="col-md-12 form-group">\n <div class="input-group">\n <div>\n <input class="form-control" type="text" placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}" data-ng-model="disposition.name">\n </div>\n <span class="input-group-btn">\n <button class="btn btn-success" type="button" data-ng-click="updateDisposition(disposition.id, disposition.name);"><i class="fa fa-cloud-upload fa-fw"></i> {{\'APPLICATION_UPDATE\' | translate}}</button>\n <button class="btn btn-danger" type="button" data-ng-click="deleteDisposition(disposition.id);"><i class="fa fa-times fa-fw"></i> {{\'APPLICATION_DELETE\' | translate}}</button>\n </span>\n </div>\n </div>\n </div>\n <!-- END GENERAL TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/mail/account/view/hooks/view/view.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_HOOKS\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_ACCEPT\' | translate}}</a>\n </li>\n <li >\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_REJECT\' | translate}}</a>\n </li>\n <li >\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{\'APPLICATION_CLOSE\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- ACCEPT TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.accept" data-ng-submit="forms.accept.$valid && updateItemMailAccount()" novalidate>\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.accept.method.$touched || forms.accept.$submitted) && forms.accept.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.acceptMethod" name="method" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.accept.method.$touched || forms.accept.$submitted) && forms.accept.method.$invalid && forms.accept.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.accept.url.$touched || forms.accept.$submitted) && forms.accept.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.acceptUrl" ng-required="account.acceptMethod"/>\n <span data-ng-show="(forms.accept.url.$touched || forms.accept.$submitted) && forms.accept.url.$invalid && forms.accept.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <div class="row" ng-repeat = "action in account.actions">\n <div ng-switch="action.action">\n <div ng-switch-when="pause">\n <div class="form-group col-md-4">\n <label class="control-label">{{\'APPLICATION_PAUSE\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-change="resetActionData(action)"\n data-ng-model="action.enabled"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <div ng-if="action.enabled" class="form-group col-md-8">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}</label>\n <ui-select name="action" data-ng-model="action.type" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_TYPE\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat=" pause.name as pause in pauses | filter: $select.search">\n <div ng-bind-html="pause.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ACCEPT TAB -->\n <!-- START REJECT TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.reject" data-ng-submit="forms.reject.$valid && updateItemMailAccount()" novalidate>\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.reject.method.$touched || forms.reject.$submitted) && forms.reject.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.rejectMethod" name="method" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.reject.method.$touched || forms.reject.$submitted) && forms.reject.method.$invalid && forms.reject.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.reject.url.$touched || forms.reject.$submitted) && forms.reject.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.rejectUrl" ng-required="account.rejectMethod"/>\n <span data-ng-show="(forms.reject.url.$touched || forms.reject.$submitted) && forms.reject.url.$invalid && forms.reject.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END REJECT TAB -->\n <!-- START CLOSE TAB -->\n <div class="tab-pane" id="tab_1_3">\n <form name="forms.close" data-ng-submit="forms.close.$valid && updateItemMailAccount()" novalidate>\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.close.method.$touched || forms.close.$submitted) && forms.close.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.closeMethod" name="method" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.close.method.$touched || forms.close.$submitted) && forms.close.method.$invalid && forms.close.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.close.url.$touched || forms.close.$submitted) && forms.close.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.closeUrl" ng-required="account.closeMethod"/>\n <span data-ng-show="(forms.close.url.$touched || forms.close.$submitted) && forms.close.url.$invalid && forms.close.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END CLOSE TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/mail/account/view/other/view/view.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_OTHER\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERALS\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_SIGNATURE\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body" data-ng-init="initView()">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="mail-spinner-grid" spinner-start-active="false"></span>\n <!-- END UI-GRID SPINNER -->\n\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.info" data-ng-submit="forms.info.$valid && updateItemMailAccount()" novalidate>\n <!-- START WHITE LABEL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.whiteLabel.$touched || forms.info.$submitted) && forms.info.whiteLabel.$invalid}">\n <label class="control-label">{{\'APPLICATION_WHITE_LABEL\' | translate}}</label>\n <textarea type="text" name="whiteLabel" placeholder="{{\'APPLICATION_WHITE_LABEL\' | translate}}" class="form-control" data-ng-model="account.whiteLabel" data-ng-disabled="!license.custom"/></textarea>\n <span data-ng-show="(forms.info.whiteLabel.$touched || forms.info.$submitted) && forms.info.whiteLabel.$invalid && forms.info.whiteLabel.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END WHITE LABEL -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}" data-ng-disabled="!license.custom"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n\n <!-- GENERAL TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.signature" data-ng-submit="updateItemMailAccount()" novalidate>\n <!-- START SIGNATURE -->\n <div class="form-group">\n <div ckeditor="options" ng-model="account.signature"></div>\n </div>\n <!-- END WHITE LABEL -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/mail/account/view/setting/view/view.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERALS\' | translate}}</a>\n </li>\n <li data-ng-if="account.MailServerIn">\n <a href="#" data-target="#tab_1_2" data-toggle="tab">IMAP</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_3" data-toggle="tab">SMTP</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body" data-ng-init="initView()">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="mail-spinner-grid" spinner-start-active="false"></span>\n <!-- END UI-GRID SPINNER -->\n\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.info" data-ng-submit="forms.info.$valid && updateItemMailAccount()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.name" required/>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid && forms.info.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.address.$touched || forms.info.$submitted) && forms.info.address.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL_ADDRESS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="address" placeholder="{{\'APPLICATION_ADDRESS\' | translate}}" class="form-control" data-ng-model="account.address" required/>\n <span data-ng-show="(forms.info.address.$touched || forms.info.$submitted) && forms.info.address.$invalid && forms.info.address.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ADDRESS -->\n\n <!-- START LIST -->\n <div class="form-group" data-ng-if="license.cm">\n <label class="control-label">{{\'APPLICATION_LIST\' | translate}}</label>\n <div class="input-group">\n\n <ui-select data-ng-model="account.ListId" name="list" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_LIST\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="list.id as list in lists | filter: $select.search">\n <div ng-bind-html="list.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n\n <span class="input-group-btn">\n <button type="button" data-ng-click="account.ListId = null" class="btn btn-default">\n <span class="glyphicon glyphicon-trash"></span>\n </button>\n </span>\n\n </div>\n </div>\n <!-- END LIST -->\n\n <!-- START TEMPLATE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_TEMPLATE\' | translate}}</label>\n <div class="input-group">\n\n <ui-select data-ng-model="account.TemplateId" name="template" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_TEMPLATE\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n\n <span class="input-group-btn">\n <button type="button" data-ng-click="account.TemplateId = null" class="btn btn-default">\n <span class="glyphicon glyphicon-trash"></span>\n </button>\n </span>\n\n </div>\n </div>\n <!-- END TEMPLATE -->\n\n <!-- START FIDELITY -->\n <!-- <div class="form-group" data-ng-if="account.MailServerIn">\n <label class="control-label">{{\'APPLICATION_FIDELITY\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-model="account.fidelity"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div> -->\n <!-- END FIDELITY -->\n\n <!-- START TIMEOUT -->\n <!-- <div class="form-group" data-ng-if="account.fidelity" data-ng-class="{\'has-error\': (forms.info.timeout.$touched || forms.info.$submitted) && forms.info.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="0" name="timeout" placeholder="{{\'APPLICATION_PORT\' | translate}}" class="form-control" data-ng-model="account.timeout" required/>\n <span data-ng-show="(forms.info.timeout.$touched || forms.info.$submitted) && forms.info.timeout.$invalid && forms.info.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.timeout.$touched || forms.info.$submitted) && forms.info.timeout.$invalid && forms.info.timeout.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div> -->\n <!-- END TIMEOUT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="account.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START SERVICE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_SERVICE\' | translate}}</label><br>\n <input\n bs-switch\n data-ng-model="account.service"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <!-- END SERVICE -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n\n <!-- IMAP TAB -->\n <div class="tab-pane" id="tab_1_2" data-ng-if="account.MailServerIn">\n <div class="note note-danger" data-ng-show="account.MailServerIn.state === \'DISCONNECTED\' || account.MailServerIn.state === \'ERROR\'">\n <p> ERROR </p>\n <json-formatter open="1" json="account.MailServerIn.source"></json-formatter>\n </div>\n\n <div class="note note-success" data-ng-show="account.MailServerIn.state === \'CONNECTED\'">\n <p> CONNECTED </p>\n </div>\n\n <div class="note note-info" data-ng-show="account.MailServerIn.state === \'CONNECTING\'">\n <p> TRYING... </p>\n </div>\n\n <form name="forms.formIn" data-ng-submit="forms.formIn.$valid && updateItemMailServerIn()" novalidate>\n <!-- START HOST -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formIn.host.$touched || forms.formIn.$submitted) && forms.formIn.host.$invalid}">\n <label class="control-label">{{\'APPLICATION_HOST\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="host" placeholder="{{\'APPLICATION_HOST\' | translate}}" class="form-control" data-ng-model="account.MailServerIn.host" required/>\n <span data-ng-show="(forms.formIn.host.$touched || forms.formIn.$submitted) && forms.formIn.host.$invalid && forms.formIn.host.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END HOST -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formIn.username.$touched || forms.formIn.$submitted) && forms.formIn.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="account.MailServerIn.username" required/>\n <span data-ng-show="(forms.formIn.username.$touched || forms.formIn.$submitted) && forms.formIn.username.$invalid && forms.formIn.username.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formIn.password.$touched || forms.formIn.$submitted) && forms.formIn.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="account.MailServerIn.password" required/>\n <span data-ng-show="(forms.formIn.password.$touched || forms.formIn.$submitted) && forms.formIn.password.$invalid && forms.formIn.password.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START PORT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formIn.port.$touched || forms.formIn.$submitted) && forms.formIn.port.$invalid}">\n <label class="control-label">{{\'APPLICATION_PORT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="port" placeholder="{{\'APPLICATION_PORT\' | translate}}" class="form-control" data-ng-model="account.MailServerIn.port" required/>\n <span data-ng-show="(forms.formIn.port.$touched || forms.formIn.$submitted) && forms.formIn.port.$invalid && forms.formIn.port.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formIn.port.$touched || forms.formIn.$submitted) && forms.formIn.port.$invalid && forms.formIn.port.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PORT -->\n\n <!-- START MAILBOX -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_MAILBOX\' | translate}}</label>\n <input type="text" name="mailbox" placeholder="{{\'APPLICATION_MAILBOX\' | translate}}" class="form-control" data-ng-model="account.MailServerIn.mailbox"/>\n </div>\n <!-- END MAILBOX -->\n\n <!-- START SEARCH FILTER -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_SEARCH_FILTER\' | translate}}</label>\n <ui-select data-ng-model="account.MailServerIn.filter" name="filter" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="filter in [\'UNSEEN\'] | filter: $select.search">\n <div ng-bind-html="filter | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- START SEARCH FILTER -->\n\n <!-- START connTimeout -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.in.connTimeout.$touched || forms.in.$submitted) && forms.in.connTimeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONNECTION_TIMEOUT\' | translate}} [sec]<span class="required" aria-required="true">*</span></label>\n <input type="number" name="connTimeout" placeholder="{{\'APPLICATION_CONNECTION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="account.MailServerIn.connTimeout" required/>\n <span data-ng-show="(forms.in.connTimeout.$touched || forms.in.$submitted) && forms.in.connTimeout.$invalid && forms.in.connTimeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.in.connTimeout.$touched || forms.in.$submitted) && forms.in.connTimeout.$invalid && forms.in.connTimeout.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END connTimeout -->\n\n <!-- START authTimeout -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.in.authTimeout.$touched || forms.in.$submitted) && forms.in.authTimeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_AUTH_TIMEOUT\' | translate}} [sec]<span class="required" aria-required="true">*</span></label>\n <input type="number" name="authTimeout" placeholder="{{\'APPLICATION_AUTH_TIMEOUT\' | translate}}" class="form-control" data-ng-model="account.MailServerIn.authTimeout" required/>\n <span data-ng-show="(forms.in.authTimeout.$touched || forms.in.$submitted) && forms.in.authTimeout.$invalid && forms.in.authTimeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.in.authTimeout.$touched || forms.in.$submitted) && forms.in.authTimeout.$invalid && forms.in.authTimeout.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END authTimeout -->\n\n <!-- START DELETE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DELETE_MAIL_FROM_SERVER\' | translate}}</label><br>\n <input\n bs-switch\n data-ng-model="account.MailServerIn.delete"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <!-- END DELETE -->\n\n <!-- START SSL -->\n <div class="form-group">\n <label class="control-label">SSL</label><br>\n <input\n bs-switch\n data-ng-model="account.MailServerIn.ssl"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <!-- END SSL -->\n\n <!-- START Keepalive -->\n <div class="form-group">\n <label class="control-label">Keepalive</label><br>\n <input\n bs-switch\n data-ng-model="account.MailServerIn.keepalive"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <!-- END Keepalive -->\n\n <!-- START POLLING -->\n <!-- <div class="form-group">\n <label class="control-label">{{\'APPLICATION_POLLING\' | translate}}</label><br>\n <input\n bs-switch\n data-ng-model="account.MailServerIn.polling"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div> -->\n <!-- END POLLING -->\n\n <!-- START POLLING_TIMEOUT -->\n <!-- <div data-ng-if="account.MailServerIn.polling" class="form-group" data-ng-class="{\'has-error\': (forms.formOut.pollingTimeout.$touched || forms.formOut.$submitted) && forms.formOut.pollingTimeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_POLLING_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="60" name="pollingTimeout" placeholder="{{\'APPLICATION_POLLING_TIMEOUT\' | translate}}" class="form-control" data-ng-model="account.MailServerIn.pollingTimeout" required/>\n <span data-ng-show="(forms.formOut.form.$touched || forms.formOut.$submitted) && forms.formOut.pollingTimeout.$invalid && forms.formOut.pollingTimeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formOut.form.$touched || forms.formOut.$submitted) && forms.formOut.pollingTimeout.$invalid && forms.formOut.pollingTimeout.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div> -->\n <!-- END POLLING_TIMEOUT -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END IMAP TAB -->\n\n <!-- SMTP TAB -->\n <div class="tab-pane" id="tab_1_3">\n\n <div class="note note-danger" data-ng-show="account.MailServerOut.state === \'DISCONNECTED\' || account.MailServerOut.state === \'ERROR\'">\n <p> ERROR </p>\n <json-formatter open="1" json="account.MailServerOut.source"></json-formatter>\n </div>\n\n <div class="note note-success" data-ng-show="account.MailServerOut.state === \'CONNECTED\'">\n <p> CONNECTED </p>\n </div>\n\n <div class="note note-info" data-ng-show="account.MailServerOut.state === \'CONNECTING\'">\n <p> TRYING... </p>\n </div>\n\n <form name="forms.formOut" data-ng-submit="forms.formOut.$valid && updateItemMailServerOut()" novalidate>\n\n <!-- START HOST -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formOut.host.$touched || forms.formOut.$submitted) && forms.formOut.host.$invalid}">\n <label class="control-label">{{\'APPLICATION_HOST\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="host" placeholder="{{\'APPLICATION_HOST\' | translate}}" class="form-control" data-ng-model="account.MailServerOut.host" required/>\n <span data-ng-show="(forms.formOut.host.$touched || forms.formOut.$submitted) && forms.formOut.host.$invalid && forms.formOut.host.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END HOST -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formOut.username.$touched || forms.formOut.$submitted) && forms.formOut.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="account.MailServerOut.username" required/>\n <span data-ng-show="(forms.formOut.username.$touched || forms.formOut.$submitted) && forms.formOut.username.$invalid && forms.formOut.username.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formOut.password.$touched || forms.formOut.$submitted) && forms.formOut.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="account.MailServerOut.password" required/>\n <span data-ng-show="(forms.formOut.password.$touched || forms.formOut.$submitted) && forms.formOut.password.$invalid && forms.formOut.password.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START PORT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formOut.port.$touched || forms.formOut.$submitted) && forms.formOut.port.$invalid}">\n <label class="control-label">{{\'APPLICATION_PORT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="port" placeholder="{{\'APPLICATION_PORT\' | translate}}" class="form-control" data-ng-model="account.MailServerOut.port" required/>\n <span data-ng-show="(forms.formOut.form.$touched || forms.formOut.$submitted) && forms.formOut.port.$invalid && forms.formOut.port.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formOut.form.$touched || forms.formOut.$submitted) && forms.formOut.port.$invalid && forms.formOut.port.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PORT -->\n\n <!-- START SSL -->\n <div class="form-group">\n <label class="control-label">SSL</label><br>\n <input\n bs-switch\n data-ng-model="account.MailServerOut.ssl"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <!-- END SSL -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n <input class="btn blue-madison" type="button" value="Test" data-ng-click="test()"/>\n </form>\n </div>\n <!-- END SMTP TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'), -a.put("app/channels/mail/account/view/view.html",'<!-- BEGIN PAGE HEADER-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-envelope"></i>\n <a href="#">{{ \'APPLICATION_MAIL\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-notebook"></i>\n <a href="/channels/mail/accounts/list">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a>\n <i class="fa fa-angle-right" data-ng-show="account"></i>\n </li>\n <li data-ng-show="account">\n <a href="#">{{ account.description || account.name }}</a>\n </li>\n </ul>\n </div>\n\n<!-- END PAGE HEADER-->\n\n<!-- BEGIN PAGE CONTENT-->\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar" data-ng-init="initView()">\n <!-- PORTLET main.channels -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img ng-src="assets/images/media/account.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{ account.description || account.name }}\n </div>\n <div class="profile-usertitle-job">\n {{account.email}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li ng-class="{active: $state.is(\'main.channels.mail.accounts.view.settings\')}">\n <a href="/channels/mail/accounts/view/{{account.id}}/settings">\n <i class="icon-settings"></i>\n {{\'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.is(\'main.channels.mail.accounts.view.hooks\')}" data-ng-if="account.MailServerIn">\n <a href="/channels/mail/accounts/view/{{account.id}}/hooks">\n <i class="fa fa-code"></i>\n {{\'APPLICATION_HOOKS\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.is(\'main.channels.mail.accounts.view.dispositions\')}" data-ng-if="account.MailServerIn">\n <a href="/channels/mail/accounts/view/{{account.id}}/dispositions">\n <i class="icon-target"></i>\n {{\'APPLICATION_DISPOSITIONS\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.includes(\'main.channels.mail.accounts.view.actions\')}" data-ng-if="account.MailServerIn">\n <a href="/channels/mail/accounts/view/{{account.id}}/actions/list">\n <i class="icon-directions"></i>\n {{\'APPLICATION_ACTIONS\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.includes(\'main.channels.mail.accounts.view.other\')}" data-ng-if="account.MailServerIn">\n <a href="/channels/mail/accounts/view/{{account.id}}/other">\n <i class="icon-equalizer"></i>\n {{\'APPLICATION_OTHER\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <div ui-view class="profile-content"></div>\n <!-- END PROFILE CONTENT -->\n </div>\n<!-- END PAGE CONTENT-->\n</div>\n'),a.put("app/channels/mail/account/wizard/wizard.html",'\n<div class="row" data-ng-init="initWizard()">\n <div class="col-md-12">\n <!-- BEGIN PAGE HEADER-->\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-envelope"></i>\n <a href="#">{{ \'APPLICATION_MAIL\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-notebook"></i>\n <a href="/channels/mail/accounts/list">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n <!-- END PAGE HEADER-->\n\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACCOUNT\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_ACCOUNT_INFO\' | translate}}" canexit="formValidation(forms.info.$valid)">\n <form name="forms.info" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid && forms.info.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.address.$touched || forms.info.$submitted) && forms.info.address.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL_ADDRESS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="address" placeholder="{{\'APPLICATION_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.address" required/>\n <span data-ng-show="(forms.info.address.$touched || forms.info.$submitted) && forms.info.address.$invalid && forms.info.address.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ADDRESS -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" data-ng-click="goNext()"/>\n </form>\n </wz-step>\n\n <wz-step title="IMAP" canexit="formValidation(forms.in.$valid)">\n <form name="forms.in" novalidate>\n <!-- START HOST -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.in.host.$touched || forms.in.$submitted) && forms.in.host.$invalid}">\n <label class="control-label">{{\'APPLICATION_INCOMING_MAIL_SERVER\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="host" placeholder="{{\'APPLICATION_HOST\' | translate}}" class="form-control" data-ng-model="item.MailServerIn.host" required/>\n <span data-ng-show="(forms.in.host.$touched || forms.in.$submitted) && forms.in.host.$invalid && forms.in.host.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END HOST -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.in.username.$touched || forms.in.$submitted) && forms.in.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="item.MailServerIn.username" name="username" required/>\n <span data-ng-show="(forms.in.username.$touched || forms.in.$submitted) && forms.in.username.$invalid && forms.in.username.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.in.password.$touched || forms.in.$submitted) && forms.in.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.MailServerIn.password" required/>\n <span data-ng-show="(forms.in.password.$touched || forms.in.$submitted) && forms.in.password.$invalid && forms.in.password.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START PORT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.in.port.$touched || forms.in.$submitted) && forms.in.port.$invalid}">\n <label class="control-label">{{\'APPLICATION_PORT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="port" placeholder="{{\'APPLICATION_PORT\' | translate}}" class="form-control" data-ng-model="item.MailServerIn.port" required/>\n <span data-ng-show="(forms.in.port.$touched || forms.in.$submitted) && forms.in.port.$invalid && forms.in.port.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.in.port.$touched || forms.in.$submitted) && forms.in.port.$invalid && forms.in.port.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PORT -->\n\n <!-- START MAILBOX -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_MAILBOX\' | translate}}</label>\n <input type="text" name="mailbox" placeholder="{{\'APPLICATION_MAILBOX\' | translate}}" class="form-control" data-ng-model="item.MailServerIn.mailbox"/>\n </div>\n <!-- END MAILBOX -->\n\n <!-- START SEARCH FILTER -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_SEARCH_FILTER\' | translate}}</label>\n <ui-select data-ng-model="item.MailServerIn.filter" name="filter" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="filter in [\'UNSEEN\'] | filter: $select.search">\n <div data-ng-bind="filter | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- START SEARCH FILTER -->\n\n <!-- START connTimeout -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.in.connTimeout.$touched || forms.in.$submitted) && forms.in.connTimeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONNECTION_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="connTimeout" placeholder="{{\'APPLICATION_CONNECTION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="item.MailServerIn.connTimeout" required/>\n <span data-ng-show="(forms.in.connTimeout.$touched || forms.in.$submitted) && forms.in.connTimeout.$invalid && forms.in.connTimeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.in.connTimeout.$touched || forms.in.$submitted) && forms.in.connTimeout.$invalid && forms.in.connTimeout.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END connTimeout -->\n\n <!-- START authTimeout -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.in.authTimeout.$touched || forms.in.$submitted) && forms.in.authTimeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_AUTH_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="authTimeout" placeholder="{{\'APPLICATION_AUTH_TIMEOUT\' | translate}}" class="form-control" data-ng-model="item.MailServerIn.authTimeout" required/>\n <span data-ng-show="(forms.in.authTimeout.$touched || forms.in.$submitted) && forms.in.authTimeout.$invalid && forms.in.authTimeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.in.authTimeout.$touched || forms.in.$submitted) && forms.in.authTimeout.$invalid && forms.in.authTimeout.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END authTimeout -->\n\n <!-- START DELETE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DELETE_MAIL_FROM_SERVER\' | translate}}</label><br>\n <input\n bs-switch\n data-ng-model="item.MailServerIn.delete"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <!-- END DELETE -->\n\n <!-- START SSL -->\n <div class="form-group">\n <label class="control-label">SSL</label><br>\n <input\n bs-switch\n data-ng-model="item.MailServerIn.ssl"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <!-- END SSL -->\n\n <!-- START Keepalive -->\n <div class="form-group">\n <label class="control-label">Keepalive</label><br>\n <input\n bs-switch\n data-ng-model="item.MailServerIn.keepalive"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <!-- END Keepalive -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="goNext()"/>\n </form>\n </wz-step>\n\n <wz-step title="SMTP" canexit="formValidation(forms.out.$valid)">\n <form name="forms.out" novalidate>\n <!-- START HOST -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.out.host.$touched || forms.out.$submitted) && forms.out.host.$invalid}">\n <label class="control-label">{{\'APPLICATION_OUTGOING_MAIL_SERVER\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="host" placeholder="{{\'APPLICATION_HOST\' | translate}}" class="form-control" data-ng-model="item.MailServerOut.host" required/>\n <span data-ng-show="(forms.out.host.$touched || forms.out.$submitted) && forms.out.host.$invalid && forms.out.host.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END HOST -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.out.username.$touched || forms.out.$submitted) && forms.out.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="item.MailServerOut.username" required/>\n <span data-ng-show="(forms.out.username.$touched || forms.out.$submitted) && forms.out.username.$invalid && forms.out.username.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.out.password.$touched || forms.out.$submitted) && forms.out.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.MailServerOut.password" required/>\n <span data-ng-show="(forms.out.password.$touched || forms.out.$submitted) && forms.out.password.$invalid && forms.out.password.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START PORT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.out.port.$touched || forms.out.$submitted) && forms.out.port.$invalid}">\n <label class="control-label">{{\'APPLICATION_PORT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="port" placeholder="{{\'APPLICATION_PORT\' | translate}}" class="form-control" data-ng-model="item.MailServerOut.port" required/>\n <span data-ng-show="(out.$touched || forms.out.$submitted) && forms.out.port.$invalid && forms.out.port.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(out.$touched || forms.out.$submitted) && forms.out.port.$invalid && forms.out.port.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PORT -->\n\n <!-- START SSL -->\n <div class="form-group">\n <label class="control-label">SSL</label><br>\n <input\n bs-switch\n data-ng-model="item.MailServerOut.ssl"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <!-- END SSL -->\n\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="goNext()"/>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/mail/inbox/message/info.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_INFO\' | translate }}</h3>\n</div>\n<div class="modal-body" data-ng-init="initInfo()">\n <div class="form-group" ng-if="data">\n <json-formatter json="data" open="1"></json-formatter>\n </div>\n <div class="note note-warning" data-ng-hide="data">\n <h4 class="block"></h4>\n <p>\n {{ \'MESSAGE_NO_INFO_AVAILABLE\' | translate }}\n </p>\n </div>\n\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/channels/mail/inbox/message/message.directive.html",'<div class="message">\n <div class="row">\n <div class="col-md-12">\n <span class="bold">From: </span>\n <a href="" data-ng-click="openContact(message.from[0])">{{message.from[0]}} </a>\n <br>\n <span class="bold">To: </span>\n <a href="" data-ng-click="openContact(to)" data-ng-repeat="to in message.to">{{to}}<span data-ng-if="!$last">, </span></a>\n <br>\n <span data-ng-if="message.cc.length" class="bold">Cc: </span>\n <a href="" data-ng-click="openContact(cc)" data-ng-repeat="cc in message.cc">{{cc}}<span data-ng-if="!$last">, </span></a>\n <br>\n <span data-ng-if="message.bcc.length" class="bold">Bcc: </span>\n <a href="" data-ng-click="openContact(bcc)" data-ng-repeat="cc in message.bcc">{{bcc}}<span data-ng-if="!$last">, </span></a>\n </div>\n <div class="row">\n <div class="col-md-12">\n <span class="pull-right" data-ng-if="message.User">{{\'APPLICATION_SENT_BY\' | translate}}: <strong>{{message.User.fullname}}</strong></span>\n <span class="pull-right" data-ng-if="message.auto && !message.voiceSource">{{\'APPLICATION_SENT_BY\' | translate}}: <strong>System</strong></span>\n <span class="pull-right" data-ng-if="message.auto && message.voiceSource">{{\'APPLICATION_SENT_BY\' | translate}}: <strong>Cally ²</strong>\n <a ng-click="info(message.voiceSource)"><i class="icon-info font-blue"></i>\n </a>\n </span>\n </div>\n </div>\n <br>\n <span class="todo-tasklist-date">\n <span class="pull-right" data-ng-switch="message.status" data-ng-if="message.status!==\'RECEIVED\'" uib-tooltip="{{\'APPLICATION_RETRY\' | translate}}: {{message.retry}}">\n <a ng-switch-when="SENDING" href="#" class="btn default btn-xs inactive-link blue-stripe"> {{message.status | uppercase}}\n <i class="fa fa-warning"></i>\n </a>\n <a ng-switch-when="SENT" href="#" class="btn default btn-xs inactive-link green-stripe"> {{message.status | uppercase}}\n <i class="fa fa-check"></i>\n </a>\n <a ng-switch-when="FAILED" href="#" class="btn default btn-xs red-stripe" data-ng-click="retry(message.id)"> {{message.status | uppercase}}\n <i class="fa fa-times"></i>\n </a>\n </span>\n <span class="pull-right" data-ng-if="message.status===\'RECEIVED\'">\n <a href="#" class="btn default btn-xs inactive-link green-stripe"> {{message.status | uppercase}}\n <i class="fa fa-check"></i>\n </a>\n </span>\n <i class="icon-calendar" title="{{message.updatedAt | date:\'MMM d, y HH:mm:ss\'}}"></i> <span am-time-ago="message.updatedAt"></span>\n </span>\n <hr>\n <div class="body text-left message-body" data-ng-bind="message.text"></div>\n <h5 data-ng-hide="message.text" class="media-heading"><i>{{\'MESSAGE_NO_AVAILABLE_TEXT\' | translate | lowercase}}</i></h5>\n <hr data-ng-if="message.MailAttachments.length">\n <div data-ng-repeat="mailAttachment in message.MailAttachments">\n <strong>{{mailAttachment.name}}</strong>\n <span>\n ({{mailAttachment.size | prettyBytes}})\n </span>\n <a target="_self" download="{{mailAttachment.name}}" href="api/mail/attachments/{{mailAttachment.id}}">\n <i class="icon-cloud-download"></i>\n </a>\n <a ng-if="::(mailAttachment.type.indexOf(\'image\') > -1)" ng-click="openPreview(mailAttachment.id)">\n <i class="icon-picture"></i>\n </a>\n </div>\n</div>\n'),a.put("app/channels/mail/inbox/note/note.directive.html",'<div class="note">\n <div class="row">\n <div class="col-md-6">\n <a type="button" name="button" data-ng-if="::(Auth.getCurrentUser().id == message.UserId)" data-ng-click="deleteNote()">\n <i class="fa fa-trash-o" style="color: red;"></i>\n </a>\n\n <i class="icon-calendar" title="{{message.updatedAt | date:\'MMM d, y HH:mm:ss\'}}"></i> <span am-time-ago="message.updatedAt"></span>\n </div>\n <div class="col-md-6">\n <span class="pull-right" data-ng-show="message.User">{{\'APPLICATION_ADD_BY\' | translate}}: <strong>{{message.User.fullname}}</strong></span>\n </div>\n </div>\n <hr>\n <span class="body text-left" data-ng-bind-html="message.text" style="white-space: pre-wrap;"></span>\n</div>\n'),a.put("app/channels/mail/inbox/note/note.modal.html",'<div class="modal-header" data-ng-init="initModal()">\n <h3 class="modal-title">{{ \'APPLICATION_NOTES\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n <div class="form-group">\n <textarea data-ng-model="item.text" name="text" rows="10" style="resize: none; width: 100%;"></textarea>\n </div>\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/mail/inbox/room/room.directive.html",'<!-- BEGIN TODO CONTENT -->\n<div class="todo-content">\n <div class="portlet light">\n <div class="portlet-title">\n <div class="caption">\n <button data-ng-if="form.from.length && form.to.length && mailRoom.status !== \'CLOSED\' && form.html" class="btn btn-sm btn-default green-meadow" data-ng-click="sendMail()">\n <i class="icon-paper-plane" style="color: white;"></i> {{\'APPLICATION_SEND\' | translate}}\n </button>\n <span data-ng-if="mailRoom && form.from.length && form.to.length && mailRoom.status !== \'CLOSED\' && form.html"> | </span>\n <span data-ng-if="mailRoom" class="label label-default"> #{{mailRoom.id}} {{mailRoom.status}}</span>\n <span data-ng-if="mailRoom"> | </span>\n <span data-ng-if="mailRoom && mailRoom.ParentId" class="label label-warning"> Ref: <a data-ng-click="openRoom(mailRoom.ParentId)">#{{mailRoom.ParentId}}</a></span>\n <span data-ng-if="mailRoom && mailRoom.ParentId"> | </span>\n <span data-ng-if="mailRoom" class="caption-subject font-green-sharp bold uppercase dot">{{mailRoom.subject || \'No subject\'}}</span>\n </div>\n <div class="actions">\n <button class="btn btn-icon-only yellow" data-ng-if="mailRoom" data-ng-click="loadNote()" data-ng-hide="mailRoom.status == \'CLOSED\'" title="{{\'APPLICATION_NOTES\' | translate}}">\n <i class="fa fa-sticky-note"></i>\n </button>\n <span class="btn file-upload" data-ng-hide="mailRoom.status == \'CLOSED\'"><!--THIS IS A SPAN AND NOT A BUTTON BECAUSE THE LIBRARY HAS A BUG AND WILL NOT TRIGGER IN FIREFOX BROWSER -->\n <i class="fa fa-paperclip"></i> <input type="file" data-ng-if="uploader" data-ng-disabled="mailRoom.status == \'CLOSED\'" nv-file-select uploader="uploader" multiple class="file-input" title="{{\'APPLICATION_ATTACHMENTS\' | translate}}">\n </span>\n <!-- UPDATE SECTION START -->\n <button data-ng-class="mailRoom.status == \'CLOSED\' ? \'grey-cascade\' : \'btn-success\'" class="btn btn-icon-only" data-ng-disabled="mailRoom.status == \'CLOSED\' && mailRoom.disposition" data-ng-if="mailRoom" data-ng-click="closeRoom()" title="{{\'APPLICATION_STATUS\' | translate}}">\n <i data-ng-class="mailRoom.status == \'CLOSED\' ? \'icon-target\' : \'fa fa-upload\'"></i>\n </button>\n <!-- UPDATE SECTION END -->\n <button class="btn default btn-icon-only" data-ng-if="mailRoom && mailRoom.status !== \'CLOSED\'" data-ng-click="togglePanelLeft()" title="{{\'APPLICATION_RESIZE\' | translate}}">\n <i ng-class="panelRight == \'col-md-12\' ? \'icon-size-actual\' : \'icon-size-fullscreen\'"></i>\n </button>\n </div>\n </div>\n <div class="portlet-body">\n <div class="row">\n <div data-ng-if="panelLeft" data-ng-class="panelLeft">\n <div class="form">\n <!-- START TAGS -->\n <div class="form-group" data-ng-if="mailRoom.status !== \'CLOSED\'">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-tags" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <ui-select multiple data-ng-model="form.tags" theme="bootstrap" on-select="onChanged($item, $model)" on-remove="onChanged($item, $model)" data-ng-disabled="mailRoom.status == \'CLOSED\'">\n <ui-select-match placeholder="Tags...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter:$select.search" class="">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n <!-- END TAGS -->\n </div>\n\n <hr data-ng-if="mailRoom && mailRoom.status !== \'CLOSED\'">\n\n <!-- END TAGS -->\n <div id="mail-box">\n <ul class="chats">\n <li\n data-ng-switch="mailMessage.status"\n data-ng-class="{\'in\': mailMessage.status == \'RECEIVED\', \'out\': mailMessage.status == \'SENT\' || mailMessage.status == \'SENDING\' || mailMessage.status == \'FAILED\' || mailMessage.status == \'NOTE\'}"\n data-ng-repeat="mailMessage in mailRoom.MailMessages | orderBy:\'-createdAt\'">\n <div class="avatar" data-ng-class="message.UserId ? \'pretty-avatar\' : \'pretty-avatar-v\'">\n <ng-letter-avatar\n data-ng-if="mailMessage.UserId"\n height="40"\n width="40"\n fontsize="25"\n data="{{mailMessage.User.fullname}}"\n avatarcustombgcolor="#B0B0B0"\n avatarcustomborder="border:2px solid #3399CC"\n charCount="2"\n shape="round"></ng-letter-avatar>\n <ng-letter-avatar\n data-ng-if="!mailMessage.UserId"\n height="40"\n width="40"\n fontsize="25"\n data="{{mailMessage.from[0]}}"\n avatarcustombgcolor="#B0B0B0"\n avatarcustomborder="border:2px solid #EA4C61"\n charCount="1"\n shape="round"></ng-letter-avatar>\n </div>\n <mail-note message="mailMessage" ng-switch-when="NOTE"></mail-note>\n <mail-message message="mailMessage" list-id="mailRoom.MailAccount.ListId" ng-switch-default></mail-message>\n </li>\n </ul>\n </div>\n </div>\n <div data-ng-class="panelRight">\n <div class="note note-info" data-ng-if="mailRoom && mailRoom.status == \'CLOSED\'">\n <h4 class="block"><i class="icon-info"></i> {{\'MESSAGE_MAIL_ROOM_CLOSED\' | translate}}!</h4>\n <p>\n <strong>{{\'MESSAGE_MAIL_ROOM_CLOSED_DETAILS\' | translate}}.</strong>\n </p>\n <hr>\n <p>\n <i class="icon-target"></i> {{\'APPLICATION_DISPOSITION\' | translate}}: <strong>{{mailRoom.disposition}}</strong>\n </p>\n <p>\n <i class="icon-calendar"></i> {{\'APPLICATION_UPDATED_AT\' | translate}}: <strong>{{mailRoom.updatedAt | date:\'medium\'}}</strong> (<span am-time-ago="mailRoom.updatedAt"></span>)\n </p>\n </div>\n <form name="forms.compose" data-ng-submit="sendMail()" class="form-horizontal" novalidate>\n <!-- START HEAD -->\n <div class="form">\n <v-accordion class="vAccordion--default" ng-if="mailRoom.status !== \'CLOSED\'">\n <v-pane expanded="expanded">\n <v-pane-header>\n <i class="icon-people"></i> From: {{form.from[0]}}, To: {{form.to[0].email}} <span ng-if="form.to.length > 1">(+{{form.to.length - 1}})</span>\n </v-pane-header>\n <v-pane-content>\n <!-- START FROM -->\n <div class="form-group" data-ng-if="mailRoom.status !== \'CLOSED\'">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <label class="control-label">From:</label>\n </div>\n <div class="col-md-11">\n <ui-select data-ng-model="form.from[0]" data-ng-change="setList($select.selected.ListId)" theme="bootstrap" name="from" required>\n <ui-select-match placeholder="From...">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="mailAccount.address as mailAccount in mailAccounts | filter: $select.search">\n <div data-ng-bind-html="mailAccount.name | highlight: $select.search"></div>\n <small data-ng-bind-html="mailAccount.address | highlight: $select.search"></small>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n </div>\n <!-- END FROM -->\n\n <!-- MAIL TO -->\n <div class="form-group" data-ng-if="mailRoom.status !== \'CLOSED\'">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <label class="control-label">To:</label>\n </div>\n <div class="col-md-11">\n <tags-input ng-model="form.to" type="email" display-property="email">\n <auto-complete source="getContacts($query)"></auto-complete>\n </tags-input>\n </div>\n </div>\n </div>\n </div>\n <!-- END TO -->\n\n <!-- START CC -->\n <div class="form-group" data-ng-if="mailRoom.status !== \'CLOSED\'">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <label class="control-label">Cc:</label>\n </div>\n <div class="col-md-11">\n <tags-input ng-model="form.cc" type="email" display-property="email">\n <auto-complete source="getContacts($query)"></auto-complete>\n </tags-input>\n </div>\n </div>\n </div>\n </div>\n <!-- END CC -->\n\n <!-- START BCC -->\n <div class="form-group" data-ng-if="mailRoom.status !== \'CLOSED\'">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <label class="control-label">Bcc:</label>\n </div>\n <div class="col-md-11">\n <tags-input ng-model="form.bcc" type="email" display-property="email">\n <auto-complete source="getContacts($query)"></auto-complete>\n </tags-input>\n </div>\n </div>\n </div>\n </div>\n <!-- END BCC -->\n\n <!-- START SUBJECT -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.compose.subject.$invalid && forms.compose.$submitted}" data-ng-if="mailRoom.status !== \'CLOSED\'">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <label class="control-label">Subj:</label>\n </div>\n <div class="col-md-11">\n <input type="text" name="subject" class="form-control todo-taskbody-taskdesc" placeholder="Subject..." rows="8" data-ng-model="form.subject">\n <span data-ng-if="forms.compose.subject.$invalid && forms.compose.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n <!-- END SUJBECT -->\n </v-pane-content>\n </v-pane>\n </v-accordion>\n\n <!-- START ATTACH -->\n <div class="form-group" data-ng-if="uploader && (mailRoom.status !== \'CLOSED\')">\n <div class="col-md-12">\n <hr ng-if="uploader.queue.length">\n <table class="table">\n <tbody>\n <tr ng-repeat="item in uploader.queue">\n <td style="border-top:none" rowspan="{{uploader.queue.length}}" ng-if="(!$index)">\n {{\'APPLICATION_ATTACHMENTS\' | translate}}:\n </td>\n <td style="border-top:none"><strong>{{ item.file.name }}</strong></td>\n <td style="border-top:none" ng-show="uploader.isHTML5" nowrap>{{ item.file.size/1024/1024|number:2 }} MB</td>\n <td style="border-top:none" ng-show="uploader.isHTML5">\n <div class="progress" style="margin-bottom: 0;">\n <div class="progress-bar" role="progressbar" ng-style="{ \'width\': item.progress + \'%\' }"></div>\n </div>\n </td>\n <td style="border-top-style:none" class="text-center">\n <span ng-show="item.isSuccess"><i class="glyphicon glyphicon-ok"></i></span>\n <span ng-show="item.isCancel"><i class="glyphicon glyphicon-ban-circle"></i></span>\n <span ng-show="item.isError"><i class="glyphicon glyphicon-remove"></i></span>\n </td>\n <td style="border-top-style:none" nowrap>\n <button type="button" class="btn btn-danger btn-xs" data-ng-click="item.remove()">\n <span class="glyphicon glyphicon-trash"></span> {{\'APPLICATION_REMOVE\' | translate}}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n <div>\n </div>\n </div>\n </div>\n <!-- END ATTACH -->\n\n <!-- START CANNED -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.compose.subject.$invalid && forms.compose.$submitted}" data-ng-if="mailRoom.status !== \'CLOSED\'">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-magic" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <input type="text"\n data-ng-model="modelOptions.selectedAnswer"\n uib-typeahead="key for key in getAnswers($viewValue)"\n placeholder="Canned answers.."\n typeahead-loading="loadingLocations"\n typeahead-no-results="noResults"\n typeahead-on-select="onSelectAnswer($item)"\n class="form-control">\n <i ng-show="loadingLocations" class="glyphicon glyphicon-refresh"></i>\n <div ng-show="noResults">\n <i class="glyphicon glyphicon-remove"></i> No Results Found\n </div>\n <span data-ng-if="forms.compose.subject.$invalid && forms.compose.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n <!-- END CANNED -->\n\n <!-- START HTML -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.compose.text.$invalid && forms.compose.$submitted}" data-ng-if="mailRoom.status !== \'CLOSED\'">\n <div class="col-md-12">\n <div ckeditor="options" ng-model="form.html" ready="onCKReady($instance)"></div>\n <span data-ng-if="forms.compose.text.$invalid && forms.compose.$submitted" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n </div>\n </div>\n <!-- END HTML -->\n\n </div>\n </form>\n </div>\n </div>\n </div>\n</div>\n</div>\n<!-- END TODO CONTENT -->\n"), -a.put("app/channels/mail/inbox/status/status.modal.html",'<div class="modal-header">\n <button data-ng-if="modal.dismissable" type="button" data-ng-click="$dismiss()" class="close">×</button>\n <h4 data-ng-if="modal.title" data-ng-bind="modal.title | translate" class="modal-title"></h4>\n</div>\n<div class="modal-body">\n <p data-ng-if="modal.text && !closed" ng-bind="modal.text | translate"></p>\n <form name="form" novalidate data-ng-init="initDisposition()">\n <div class="form-group">\n <ui-select data-ng-model="item.disposition" name="disposition" theme="bootstrap" data-ng-disabled="!dispositions.length" required>\n <ui-select-match placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="disposition.name as disposition in dispositions | filter: $select.search">\n <div ng-bind-html="disposition.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="note note-warning" data-ng-if="dispositions.length < 1">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_DISPOSITIONS_AVAILABLE\' | translate }}\n </p>\n </div>\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/mail/inbox/view/account/list/list.html",'<!-- BEGIN Portlet PORTLET-->\n<div class="portlet light" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption">\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'NEW\'" uib-uncheckable>NEW</button>\n </div>\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'OPEN\'" uib-uncheckable>OPEN</button>\n </div>\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'PENDING\'" uib-uncheckable>PENDING</button>\n </div>\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'CLOSED\'" uib-uncheckable>CLOSED</button>\n </div>\n </div>\n <div class="actions">\n <a href="#" class="btn btn-icon-only default" data-ng-click="getPage();">\n <i class="fa fa-refresh"></i>\n </a>\n <a href="#" class="btn btn-icon-only red" data-ng-click="deleteItems();" data-ng-show="id.length && isAdmin">\n <i class="fa fa-trash"></i>\n </a>\n <a href="#" class="btn btn-icon-only btn-success" data-ng-click="disposeItems();" data-ng-show="id.length">\n <i class="fa fa-upload"></i>\n </a>\n <a href="#" class="btn btn-icon-only blue" data-ng-click="tagItems();" data-ng-show="id.length">\n <i class="fa fa-tags"></i>\n </a>\n <a href="#" class="btn btn-icon-only green" data-ng-click="openRoom(null, \'New Message\')">\n <i class="fa fa-plus"></i>\n </a>\n </div>\n </div>\n <div class="portlet-title" data-ng-show="tags.length">\n <!-- START TAGS -->\n <div class="form-group">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-tags" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <ui-select multiple data-ng-model="query.tags" theme="bootstrap" on-select="onChanged($item, $model)" on-remove="onChanged($item, $model)">\n <ui-select-match placeholder="Search by tag...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter:$select.search">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n <!-- END TAGS -->\n </div>\n <div class="portlet-body">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="false"></span>\n <!-- END UI-GRID SPINNER -->\n\n <!-- START TABLE -->\n <div ui-grid="gridOptions" class="ui-grid" ui-grid-auto-resize ui-grid-pagination ui-grid-selection>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END Portlet PORTLET-->\n'),a.put("app/channels/mail/inbox/view/view.agents.modal.html",'<div class="modal-header" data-ng-init="initModal()">\n <h3 class="modal-title">{{ \'APPLICATION_AGENTS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <!-- START TRANSPORT -->\n <div class="form-group">\n <form name="form" novalidate>\n <!-- START TRANSPORT -->\n <div class="form-group">\n <ui-select multiple name="agents" data-ng-model="item.agents" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_AGENTS\' | translate}}">{{$item.fullname}}</ui-select-match>\n <ui-select-choices repeat="agent.id as agent in agents | filter: $select.search">\n {{agent.fullname}}\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END TRANSPORT -->\n </form>\n </div>\n <!-- END TRANSPORT -->\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/mail/inbox/view/view.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-envelope"></i>\n <a href="#">{{ \'APPLICATION_MAIL\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-note"></i>\n <a href="#">{{ \'APPLICATION_INBOX\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row inbox">\n <div class="col-md-3">\n <ul class="inbox-nav margin-bottom-10">\n <li data-ng-class="{active: $stateParams.id == mailAccount.id}" data-ng-repeat="mailAccount in mailAccounts">\n <a href="/channels/mail/inbox/view/account/{{mailAccount.id}}/list" class="btn">\n <i class="icon-notebook"></i> {{mailAccount.name}}\n </a>\n <b></b>\n </li>\n </ul>\n </div>\n\n <div class="col-md-9" data-ng-init="initView()">\n <!-- BEGIN PROFILE CONTENT -->\n <div class="room-content">\n <div ui-view>\n <div class="note note-info">\n <h4 class="block">Info! {{\'APPLICATION_NO_ACCOUNT_SELECTED\' | translate}}</h4>\n </div>\n </div>\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n\n</div>\n'),a.put("app/channels/mail/inbox/view/view.tags.modal.html",'<div class="modal-header" data-ng-init="initModal()">\n <h3 class="modal-title">{{ \'APPLICATION_TAGS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <!-- START TRANSPORT -->\n <div class="form-group">\n <form name="form" novalidate>\n <!-- START TAGS -->\n <div class="form-group">\n <ui-select multiple data-ng-model="item.tags" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_TAGS\' | translate}}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter: $select.search">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END TAGS -->\n </form>\n </div>\n <!-- END TRANSPORT -->\n</div>\n<div class="modal-footer">\n <button type="button" class="btn" data-ng-class="button.class" data-ng-click="button.click()"data-ng-repeat="button in modal.buttons">{{button.text | translate}}</button>\n <!-- <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button> -->\n</div>\n'),a.put("app/channels/mail/inbox/view/view.templates.modal.html",'<div class="modal-header" data-ng-init="initModal()">\n <h3 class="modal-title">{{ \'APPLICATION_TEMPLATES\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <div class="note note-info" data-ng-show="!templates.length">\n <h4 class="block">Info!</h4>\n <p>\n {{\'MESSAGE_NO_TEMPLATES_AVAILABLE\' | translate}}\n </p>\n </div>\n <form name="form" data-ng-show="templates.length" novalidate>\n <div class="form-group">\n <ui-select data-ng-model="item.template" theme="bootstrap">\n <ui-select-match placeholder="Select a template in the list or search his name...">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template in templates | propsFilter: {name: $select.search}">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n <small data-ng-show="template.description">\n {{\'APPLICATION_DESCRIPTION\' | translate}}: {{template.description}}\n </small>\n </ui-select-choices>\n </ui-select>\n </div>\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()" data-ng-show="templates.length">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/mail/queue/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_QUEUE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" data-ng-pattern="settings.patternName" required />\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$invalid && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$invalid && form.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START STRATEGY -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.strategy.$touched || form.$submitted) && form.strategy.$invalid}">\n <label class="control-label">{{\'APPLICATION_STRATEGY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.strategy" name="strategy" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | uppercase}}</ui-select-match>\n <ui-select-choices repeat="strategy in strategies | filter: $select.search">\n <div ng-bind-html="strategy.toUpperCase() | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.strategy.$touched || form.$submitted) && form.strategy.$invalid && form.strategy.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END STRATEGY -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.timeout.$touched || form.$submitted) && form.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="0" name="timeout" placeholder="Timeout" class="form-control" data-ng-model="item.timeout" required min="1"/>\n <span data-ng-show="(form.timeout.$touched || form.$submitted) && form.timeout.$invalid && form.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START AGENTS-->\n <div class="form-body" data-ng-init="getTeams()">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="item.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="item.penalty=item.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!item.penalty" data-ng-click="item.penalty=item.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-team">\n </div>\n </div>\n </div>\n <!-- END AGENTS-->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/mail/queue/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-envelope"></i>\n <a href="#">{{ \'APPLICATION_MAIL\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="#">{{ \'APPLICATION_QUEUES\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_QUEUES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group" data-ng-if="Auth.isAdmin()">\n <a class="btn green-jungle" href="#" data-ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_QUEUE\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/mail/queue/view/view.agents.html",'<div class="row" data-ng-init="getTeams()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_AGENTS\' | translate}}</span>\n </div>\n </div>\n <div class="note note-warning" data-ng-hide="teams.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AVAILABLE_TEAMS\' | translate }}\n </p>\n </div>\n <div class="portlet-body">\n <!-- BEGIN FORM-->\n <form action="index.html" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="queue.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="queue.penalty=queue.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!queue.penalty" data-ng-click="queue.penalty=queue.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-team">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/mail/queue/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getQueue()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-envelope"></i>\n <a href="#">{{ \'APPLICATION_MAIL\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="/channels/mail/queues/list">{{ \'APPLICATION_QUEUES\' | translate }}</a>\n <i data-ng-show="queue" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="queue">\n <a href="#">{{queue.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET main.channels -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/queue.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{queue.name}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.mail.queues.view.settings\')}">\n <a data-ng-href="/channels/mail/queues/view/{{queue.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.channels.mail.queues.view.agents\')}" data-ng-show="Auth.getCurrentUser().role === \'admin\'">\n <a data-ng-href="/channels/mail/queues/view/{{queue.id}}/agents">\n <i class="icon-people"></i>\n {{ \'APPLICATION_AGENTS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET main.channels -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n </div>\n <!-- END PAGE CONTENT-->\n'),a.put("app/channels/mail/queue/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateMailQueue()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="queue.name" data-ng-pattern="settings.patternName" required />\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid && forms.general.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="queue.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START TIMEOUT -->\n <div class="form-group">\n <label class="control-label">Agent Timeout</label>\n <input type="number" name="timeout" placeholder="Timeout" class="form-control" min="1" data-ng-model="queue.timeout"/>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START STRATEGY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.strategy.$touched || forms.general.$submitted) && forms.general.strategy.$invalid}">\n <label class="control-label">{{\'APPLICATION_STRATEGY\' | translate}}</label>\n <ui-select data-ng-model="queue.strategy" name="strategy" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | uppercase}}</ui-select-match>\n <ui-select-choices repeat="strategy in strategies | filter: $select.search">\n <div ng-bind-html="strategy.toUpperCase() | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END STRATEGY -->\n\n <input data-ng-if="Auth.isAdmin()" class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/mail/realtime/view/agent/agent.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initAgents()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-tree-view ui-grid-expandable-row ui-grid-pagination ui-grid-auto-resize>\n <span us-spinner spinner-key="grid-spinner" spinner-start-active="true"></span>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/mail/realtime/view/agent/agent.modal.info.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_INTERFACE_INFO\' | translate }}</h3>\n</div>\n<div class="modal-body">\n<div data-ng-if="agent.ipaddr" class="well">\n <div>{{agent.ipaddr}}:{{agent.port}}</div>\n <div>{{agent.fullcontact}}</div>\n <div>{{agent.useragent}}</div>\n <div>{{agent.lastms}}</div>\n</div>\n<div data-ng-if="!agent.ipaddr" class="alert alert-danger" role="alert">\n {{\'MESSAGE_NO_AVAILABLE_INFO\' | translate}}\n</div>\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/channels/mail/realtime/view/agent/queue.modal.add.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_JOIN_QUEUE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <div class="form-group row">\n <label class="col-md-2 control-label" style="margin-top: 7px;">{{\'APPLICATION_QUEUE\' | translate}}:</label>\n <div class="col-md-10">\n <ui-select multiple ng-model="item.queues" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_QUEUE\' | translate}}">{{$item.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n</div>\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/mail/realtime/view/application/application.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initApplications()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-auto-resize>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/mail/realtime/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-envelope"></i>\n <a href="#">{{ \'APPLICATION_MAIL\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-energy"></i>\n <a href="#">{{ \'APPLICATION_REALTIME\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <div>\n <nav class="navbar navbar-default" role="navigation">\n <div class="collapse navbar-collapse">\n <ul class="nav navbar-nav">\n <li data-ng-class="{\'active\': $state.is(\'main.channels.mail.realtime.view.agents\')}">\n <a href="/channels/mail/realtime/view/agents">\n {{\'APPLICATION_AGENTS\' | translate}}\n </a>\n </li>\n <li data-ng-class="{\'active\': $state.is(\'main.channels.mail.realtime.view.applications\')}">\n <a href="/channels/mail/realtime/view/applications">\n {{\'APPLICATION_APPLICATIONS\' | translate}}\n </a>\n </li>\n <li>\n <a href="#">\n <b>|{{\'APPLICATION_SHOW_TIMERS\' | translate}} </b><input\n bs-switch\n class="form-control"\n ng-model="showTimers"\n type="checkbox"\n name="showTimers"\n switch-active="{{ timerSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ timerSwitch.onColor }}"\n switch-off-color="{{ timerSwitch.offColor }}"\n switch-animate="{{ timerSwitch.animate }}"\n switch-size="{{ timerSwitch.size }}"\n switch-label="{{ timerSwitch.label }}"\n switch-icon="{{ timerSwitch.icon }}"\n switch-radio-off="{{ timerSwitch.radioOff }}"\n switch-label-width="{{ timerSwitch.labelWidth }}"\n switch-handle-width="{{ timerSwitch.handleWidth }}"><b>|</b>\n </a>\n </li>\n </ul>\n </div>\n </nav>\n </div>\n\n <div ui-view></div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/mail/realtime/view/view.queue.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initAgents()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div id="grid1" ui-grid="gridOptions" ui-grid-resize-columns ui-grid-tree-view class="grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/openchannel/account/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-globe"></i>\n <a href="#">{{ \'APPLICATION_OPEN_CHANNEL\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-notebook"></i>\n <a href="/channels/openchannel/accounts/list">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group">\n <a class="btn btn-default" href="#" data-ng-click="gridOptions.getPage();">\n <i class="icon-reload"></i>\n </a>\n </div>\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/channels/openchannel/accounts/wizard">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ACCOUNT\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), -a.put("app/channels/openchannel/account/view/action/list/list.html",'<div class="row" data-ng-init="initActions()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACTIONS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/channels/openchannel/accounts/view/{{account.id}}/actions/wizard" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ACTION\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/openchannel/account/view/action/view/view.html",'\n<div class="row" data-ng-init="initAction()">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-directions font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACTION\' | translate }}</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="forms.settings" ng-submit="updateItem()" novalidate>\n <!-- START APP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app.$touched || forms.settings.$submitted) && forms.settings.app.$invalid}">\n <label class="control-label">{{ \'APPLICATION_APPLICATION\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.app" name="app" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_APPLICATION\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="app.value as app in apps | filter: $select.search">\n <div ng-bind-html="app.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.app.$touched || forms.settings.$submitted) && forms.settings.app.$invalid && forms.settings.app.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APP -->\n\n <div class="app-settings" ng-slide-down="application.app === \'queue\'" lazy-render duration="1" data-ng-init="getQueues()">\n <!-- START QUEUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.queue.$touched || forms.settings.$submitted) && forms.settings.queue.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.OpenchannelQueueId" name="queue" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="queues.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_QUEUES_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/openchannel/queues/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.queue.$touched || forms.settings.$submitted) && forms.settings.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'agent\'" lazy-render duration="1" data-ng-init="getAgents()">\n <!-- START AGENT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.agent.$touched || forms.settings.$submitted) && forms.settings.agent.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.UserId" name="agent" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.fullname}}</ui-select-match>\n <ui-select-choices repeat="agent.id as agent in agents | filter: $select.search">\n <div ng-bind-html="agent.fullname | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="agents.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AGENTS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/staff/agents/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.agent.$touched || forms.settings.$submitted) && forms.settings.agent.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END AGENT -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1" data-ng-init="getMailAccounts();getTemplates()">\n <!-- START SENDMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="email" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" min="1" required/>\n <span data-ng-show="(forms.settings.from.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.mail.$touched || forms.settings.$submitted) && forms.settings.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in mailAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.template.$touched || forms.settings.$submitted) && forms.settings.template.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEMPLATE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data9" name="template" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.template.$touched || forms.settings.$submitted) && forms.settings.template.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SENDMAIL -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1" data-ng-init="getSmsAccounts()">\n <!-- START SENDSms -->\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.to.$touched || forms.settings.$submitted) && forms.settings.to.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" ng-pattern="/^[\\+]?[0-9]+$/" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" required/>\n <span data-ng-show="(forms.settings.to.$touched || forms.settings.$submitted) && forms.settings.to.$invalid && forms.settings.to.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in smsAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.text.$touched || forms.text.$submitted) && forms.settings.text.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <textarea id="text" class="form-control maxlength-handler" maxlength="160" name="text" data-ng-model="application.data6" required></textarea>\n <span data-ng-show="(forms.settings.text.$touched || forms.settings.$submitted) && forms.settings.text.$invalid && forms.settings.text.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <!-- END SENDSms -->\n </div>\n\n <!-- START INTERVAL_TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.intType.$touched || forms.settings.$submitted) && forms.settings.intType.$invalid}">\n <label class="control-label">{{ \'APPLICATION_INTERVAL_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.intType" theme="bootstrap" name="intType" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="intType.value as intType in $application.intTypes | filter: $select.search">\n {{ intType.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.intType.$touched || forms.settings.$submitted) && forms.settings.intType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVAL_TYPE -->\n\n <div class="app-settings" ng-slide-down="application.intType === \'custom\'" lazy-render duration="1">\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="application.alwaysTime">\n <uib-timepicker name="t_from" data-ng-model="application.t_from" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker>\n </fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="application.alwaysTime"><uib-timepicker name="t_to" data-ng-model="application.t_to" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker></fieldset>\n <!-- <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="application.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label> -->\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- START ALWAYS -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALWAYS\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="application.alwaysTime"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n <!-- <input type="checkbox" data-ng-model="application.alwaysTime"> -->\n </label>\n </div>\n </div>\n <!-- END ALWAYS -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.md_from" theme="bootstrap" name="md_from">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_to && application.md_to!==\'always\' && monthDay>application.md_to && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.md_to" theme="bootstrap" name="md_to">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_from && application.md_from!==\'always\' && monthDay<application.md_from && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.intType === \'list\'" lazy-render duration="1" data-ng-init="getIntervals()">\n\n <!-- START INTERVALS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.IntervalId.$touched || forms.settings.$submitted) && forms.settings.IntervalId.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVALS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.IntervalId" theme="bootstrap" name="IntervalId" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="interval.id as interval in intervals | filter: $select.search">\n {{ interval.name}}\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="intervals.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_INTERVAL_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/intervals/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.IntervalId.$touched || forms.settings.$submitted) && forms.settings.IntervalId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVALS -->\n\n </div>\n <button class="btn green-haze" type="submit">{{\'APPLICATION_UPDATE\' | translate}}</button>\n </form>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/openchannel/account/view/action/wizard/wizard.html",'<div class="row" data-ng-init="initWizard()">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-directions font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACTION\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_APPLICATION\' | translate}}" canexit="formValidation(forms.action.$valid)">\n <form name="forms.action" novalidate>\n <!-- START APP -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.action.$submitted && forms.action.app.$invalid}">\n <label class="control-label">{{ \'APPLICATION_APPLICATION\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.app" name="app" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_APPLICATION\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="app.value as app in apps | filter: $select.search">\n <div ng-bind-html="app.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.action.$submitted && forms.action.app.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APP -->\n\n <div class="app-settings" ng-slide-down="application.app === \'agent\'" lazy-render duration="1" data-ng-init="getAgents()">\n <!-- START AGENT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.agent.$touched || forms.action.$submitted) && forms.action.agent.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.UserId" name="agent" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.fullname}}</ui-select-match>\n <ui-select-choices repeat="agent.id as agent in agents | filter: $select.search">\n <div ng-bind-html="agent.fullname | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="agents.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AGENTS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/staff/agents/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.agent.$touched || forms.action.$submitted) && forms.action.agent.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END AGENT -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'queue\'" lazy-render duration="1" data-ng-init="getQueues()">\n <!-- START QUEUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.queue.$touched || forms.action.$submitted) && forms.action.queue.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.OpenchannelQueueId" name="queue" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="queues.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_QUEUES_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/openchannel/queues/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.queue.$touched || forms.action.$submitted) && forms.action.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1" data-ng-init="getMailAccounts();getTemplates()">\n <!-- START SENDMAIL -->\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="email" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" min="1" required/>\n <span data-ng-show="(forms.action.from.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.mail.$touched || forms.action.$submitted) && forms.action.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in mailAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEMPLATE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data9" name="template" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SENDMAIL -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1" data-ng-init="getSmsAccounts()">\n <!-- START SENDSms -->\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.to.$touched || forms.action.$submitted) && forms.action.to.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" ng-pattern="/^[\\+]?[0-9]+$/" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" required/>\n <span data-ng-show="(forms.action.to.$touched || forms.action.$submitted) && forms.action.to.$invalid && forms.action.to.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in smsAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.text.$touched || forms.action.$submitted) && forms.action.text.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <textarea id="text" class="form-control maxlength-handler" maxlength="160" name="text" data-ng-model="application.data6" required></textarea>\n <span data-ng-show="(forms.action.text.$touched || forms.action.$submitted) && forms.action.text.$invalid && forms.action.text.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <!-- END SENDSms -->\n </div>\n\n <!-- START INTERVAL_TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.intType.$touched || forms.action.$submitted) && forms.action.intType.$invalid}">\n <label class="control-label">{{ \'APPLICATION_INTERVAL_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.intType" theme="bootstrap" name="intType" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="intType.value as intType in $application.intTypes | filter: $select.search">\n {{ intType.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.intType.$touched || forms.action.$submitted) && forms.action.intType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVAL_TYPE -->\n\n <div class="app-settings" ng-slide-down="application.intType === \'custom\'" lazy-render duration="1">\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="application.alwaysTime">\n <uib-timepicker name="t_from" data-ng-model="application.t_from" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker>\n </fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="application.alwaysTime">\n <uib-timepicker name="t_to" data-ng-model="application.t_to" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker>\n </fieldset>\n <!-- <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="application.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label> -->\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- START ALWAYS -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALWAYS\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="application.alwaysTime"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n <!-- <input type="checkbox" data-ng-model="application.alwaysTime"> -->\n </label>\n </div>\n </div>\n <!-- END ALWAYS -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.md_from" theme="bootstrap" name="md_from">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_to && application.md_to!==\'always\' && monthDay>application.md_to && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.md_to" theme="bootstrap" name="md_to">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_from && application.md_from!==\'always\' && monthDay<application.md_from && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.intType === \'list\'" lazy-render duration="1" data-ng-init="getIntervals()">\n\n <!-- START INTERVALS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.IntervalId.$touched || forms.action.$submitted) && forms.action.IntervalId.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVALS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.IntervalId" theme="bootstrap" name="IntervalId" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="interval.id as interval in intervals | filter: $select.search">\n {{ interval.name}}\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="intervals.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_INTERVAL_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/intervals/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.IntervalId.$touched || forms.action.$submitted) && forms.action.IntervalId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVALS -->\n\n </div>\n\n <input class="btn green-haze" type="submit" data-ng-click="next()" value="{{\'APPLICATION_CONTINUE\' | translate}}" />\n </form>\n </wz-step>\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input class="btn green-haze" type="submit" data-ng-click="next()" value="{{\'APPLICATION_CONFIRM\' | translate}}" />\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), -a.put("app/channels/openchannel/account/view/api/view/view.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_API\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <div class="tab-pane active" id="tab_1_1">\n <!-- START API -->\n <div class="row" >\n <div class="col-md-12">\n <label class="control-label">Receive URL</label>\n </div>\n </div>\n <div class="row" >\n <div class="col-md-11">\n <code-mirror model="receiveurl"></code-mirror>\n </div>\n <div class="col-md-1">\n <a class="btn btn-sm green-jungle" data-ng-click="copyToClipboard(receiveurl);"><i class="fa fa-clipboard"></i>\n </a>\n </div>\n </div>\n <!-- END API -->\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/openchannel/account/view/disposition/modal/add.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_DISPOSITIONS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.form.$touched || form.$submitted) && form.form.$invalid}">\n <div class="">\n <input type="text" name="form" placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}" class="form-control" data-ng-model="name" required/>\n <span data-ng-show="form.form.$touched && form.form.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <!-- END NAME -->\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()" data-ng-show="form.$valid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/openchannel/account/view/disposition/view/view.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_DISPOSITIONS\' | translate}}</span>\n </div>\n <div class="actions actions-md">\n <a href="#" class="btn btn-icon-only green" data-ng-click="addDisposition();">\n <i class="fa fa-plus"></i>\n </a>\n </div>\n </div>\n <div class="portlet-body" data-ng-init="initView()">\n <div class="tab-content">\n <div class="row" data-ng-hide="dispositions.length">\n <div class="col-md-12">\n <div class="note note-info">\n <h4 class="block">Info! {{\'MESSAGE_NO_DISPOSITIONS_AVAILABLE\' | translate}}</h4>\n </div>\n </div>\n </div>\n\n <!-- GENERAL TAB -->\n <div class="row" data-ng-repeat="disposition in dispositions">\n <div class="col-md-12 form-group">\n <div class="input-group">\n <div>\n <input class="form-control" type="text" placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}" data-ng-model="disposition.name">\n </div>\n <span class="input-group-btn">\n <button class="btn btn-success" type="button" data-ng-click="updateDisposition(disposition.id, disposition.name);"><i class="fa fa-cloud-upload fa-fw"></i> {{\'APPLICATION_UPDATE\' | translate}}</button>\n <button class="btn btn-danger" type="button" data-ng-click="deleteDisposition(disposition.id);"><i class="fa fa-times fa-fw"></i> {{\'APPLICATION_DELETE\' | translate}}</button>\n </span>\n </div>\n </div>\n </div>\n <!-- END GENERAL TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/openchannel/account/view/hooks/view/view.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_HOOKS\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_SEND\' | translate}}</a>\n </li>\n <li >\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_ACCEPT\' | translate}}</a>\n </li>\n <li >\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{\'APPLICATION_REJECT\' | translate}}</a>\n </li>\n <li >\n <a href="#" data-target="#tab_1_4" data-toggle="tab">{{\'APPLICATION_CLOSE\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- START REPLY TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.info" data-ng-submit="forms.info.$valid && updateItem()" novalidate>\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.info.method.$touched || forms.info.$submitted) && forms.info.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.replyMethod" name="method" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search" >\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.info.method.$touched || forms.info.$submitted) && forms.info.method.$invalid && forms.info.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.info.url.$touched || forms.info.$submitted) && forms.info.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.replyUrl" ng-required="account.replyMethod"/>\n <span data-ng-show="(forms.info.url.$touched || forms.info.$submitted) && forms.info.url.$invalid && forms.info.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END REPLY TAB -->\n\n <!-- START ACCEPT TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.accept" data-ng-submit="forms.accept.$valid && updateItem()" novalidate>\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.accept.method.$touched || forms.accept.$submitted) && forms.accept.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.acceptMethod" name="method" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.accept.method.$touched || forms.accept.$submitted) && forms.accept.method.$invalid && forms.accept.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.accept.url.$touched || forms.accept.$submitted) && forms.accept.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.acceptUrl" ng-required="account.acceptMethod"/>\n <span data-ng-show="(forms.accept.url.$touched || forms.accept.$submitted) && forms.accept.url.$invalid && forms.accept.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <!-- START ACTIONS-->\n <div class="row" ng-repeat = "action in account.actions">\n <div ng-switch="action.action">\n <div ng-switch-when="pause">\n <div class="form-group col-md-4">\n <label class="control-label">{{\'APPLICATION_PAUSE\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-change="resetActionData(action)"\n data-ng-model="action.enabled"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <div ng-if="action.enabled" class="form-group col-md-8">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}</label>\n <ui-select name="action" data-ng-model="action.type" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_TYPE\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat=" pause.name as pause in pauses | filter: $select.search">\n <div ng-bind-html="pause.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n </div>\n <!-- END ACTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ACCEPT TAB -->\n <!-- START REJECT TAB -->\n <div class="tab-pane" id="tab_1_3">\n <form name="forms.reject" data-ng-submit="forms.reject.$valid && updateItem()" novalidate>\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.reject.method.$touched || forms.reject.$submitted) && forms.reject.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.rejectMethod" name="method" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.reject.method.$touched || forms.reject.$submitted) && forms.reject.method.$invalid && forms.reject.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.reject.url.$touched || forms.reject.$submitted) && forms.reject.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.rejectUrl" ng-required="account.rejectMethod"/>\n <span data-ng-show="(forms.reject.url.$touched || forms.reject.$submitted) && forms.reject.url.$invalid && forms.reject.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END REJECT TAB -->\n <!-- START CLOSE TAB -->\n <div class="tab-pane" id="tab_1_4">\n <form name="forms.close" data-ng-submit="forms.close.$valid && updateItem()" novalidate>\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.close.method.$touched || forms.close.$submitted) && forms.close.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.closeMethod" name="method" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.close.method.$touched || forms.close.$submitted) && forms.close.method.$invalid && forms.close.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.close.url.$touched || forms.close.$submitted) && forms.close.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.closeUrl" ng-required="account.closeMethod"/>\n <span data-ng-show="(forms.close.url.$touched || forms.close.$submitted) && forms.close.url.$invalid && forms.close.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END CLOSE TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/openchannel/account/view/setting/view/view.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERALS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.info" data-ng-submit="forms.info.$valid && updateItem()" novalidate>\n <!-- START ID -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_ID\' | translate}}<span class="required" aria-required="true">*</span>\n </label>\n <input type="text" name="id" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.id" ng-disabled="true" required/>\n </div>\n <!-- END ID-->\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.name" required/>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid && forms.info.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n <!-- START LIST -->\n <div class="form-group" data-ng-if="license.cm">\n <label class="control-label">{{\'APPLICATION_LIST\' | translate}}</label>\n <div class="input-group">\n\n <ui-select data-ng-model="account.ListId" name="list" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_LIST\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="list.id as list in lists | filter: $select.search">\n <div ng-bind-html="list.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n\n <span class="input-group-btn">\n <button type="button" data-ng-click="account.ListId = null" class="btn btn-default">\n <span class="glyphicon glyphicon-trash"></span>\n </button>\n </span>\n\n </div>\n </div>\n <!-- END LIST -->\n <!-- START FIDELITY -->\n <!-- <div class="form-group">\n <label class="control-label">{{\'APPLICATION_FIDELITY\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-model="account.fidelity"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div> -->\n <!-- END FIDELITY -->\n\n <!-- START TIMEOUT -->\n <!-- <div class="form-group" data-ng-if="account.fidelity" data-ng-class="{\'has-error\': (forms.info.timeout.$touched || forms.info.$submitted) && forms.info.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="0" name="timeout" placeholder="{{\'APPLICATION_PORT\' | translate}}" class="form-control" data-ng-model="account.timeout" required/>\n <span data-ng-show="(forms.info.timeout.$touched || forms.info.$submitted) && forms.info.timeout.$invalid && forms.info.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.timeout.$touched || forms.info.$submitted) && forms.info.timeout.$invalid && forms.info.timeout.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div> -->\n <!-- END TIMEOUT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="account.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START CUSTOM -->\n <!-- <div class="form-group">\n <label class="control-label">{{\'APPLICATION_REPLY\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-model="account.reply"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div> -->\n <!-- START REPLY HOOK -->\n <!-- <div ng-if= "account.reply" class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.info.method.$touched || forms.info.$submitted) && forms.info.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.replyMethod" name="method" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search" >\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.info.method.$touched || forms.info.$submitted) && forms.info.method.$invalid && forms.info.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.info.url.$touched || forms.info.$submitted) && forms.info.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.replyUrl" required/>\n <span data-ng-show="(forms.info.url.$touched || forms.info.$submitted) && forms.info.url.$invalid && forms.info.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div> -->\n <!-- START REPLY HOOK -->\n <!-- END CUSTOM -->\n\n <!-- START REMOTE IP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.remote.$touched || forms.info.$submitted) && forms.info.remote.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remote" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="account.remote" required/>\n <span class="help-block help-block-info">\n {{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n </span>\n <span data-ng-show="(forms.info.remote.$touched || forms.info.$submitted) && forms.info.remote.$invalid && forms.info.remote.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END REMOTE IP -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/openchannel/account/view/view.html",'<!-- BEGIN PAGE HEADER-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-globe"></i>\n <a href="#">{{ \'APPLICATION_OPEN_CHANNEL\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-notebook"></i>\n <a href="/channels/openchannel/accounts/list">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a>\n <i class="fa fa-angle-right" data-ng-show="account"></i>\n </li>\n <li data-ng-show="account">\n <a href="#">{{ account.name }}</a>\n </li>\n </ul>\n </div>\n\n<!-- END PAGE HEADER-->\n\n<!-- BEGIN PAGE CONTENT-->\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET main.channels -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img ng-src="assets/images/media/account.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{ account.name }}\n </div>\n <div class="profile-usertitle-job">\n {{account.description}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li ng-class="{active: $state.is(\'main.channels.openchannel.accounts.view.settings\')}">\n <a href="/channels/openchannel/accounts/view/{{account.id}}/settings">\n <i class="icon-settings"></i>\n {{\'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.is(\'main.channels.openchannel.accounts.view.api\')}">\n <a href="/channels/openchannel/accounts/view/{{account.id}}/api">\n <i class="fa fa-external-link"></i>\n {{\'APPLICATION_API\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.is(\'main.channels.openchannel.accounts.view.hooks\')}">\n <a href="/channels/openchannel/accounts/view/{{account.id}}/hooks">\n <i class="fa fa-code"></i>\n {{\'APPLICATION_HOOKS\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.is(\'main.channels.openchannel.accounts.view.dispositions\')}">\n <a href="/channels/openchannel/accounts/view/{{account.id}}/dispositions">\n <i class="icon-target"></i>\n {{\'APPLICATION_DISPOSITIONS\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.includes(\'main.channels.openchannel.accounts.view.actions\')}">\n <a href="/channels/openchannel/accounts/view/{{account.id}}/actions/list">\n <i class="icon-directions"></i>\n {{\'APPLICATION_ACTIONS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <div ui-view class="profile-content"></div>\n <!-- END PROFILE CONTENT -->\n </div>\n<!-- END PAGE CONTENT-->\n</div>\n'),a.put("app/channels/openchannel/account/wizard/wizard.html",'\n<div class="row" data-ng-init="initWizard()">\n <div class="col-md-12">\n <!-- BEGIN PAGE HEADER-->\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-globe"></i>\n <a href="#">{{ \'APPLICATION_OPEN_CHANNEL\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-notebook"></i>\n <a href="/channels/openchannel/accounts/list">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n <!-- END PAGE HEADER-->\n\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACCOUNT\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_ACCOUNT_INFO\' | translate}}" canexit="formValidation(forms.info.$valid)">\n <form name="forms.info" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid && forms.info.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n <!-- START REMOTE IP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.remote.$touched || forms.info.$submitted) && forms.info.remote.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remote" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.remote" required/>\n <span class="help-block help-block-info">\n {{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n </span>\n <span data-ng-show="(forms.info.remote.$touched || forms.info.$submitted) && forms.info.remote.$invalid && forms.info.remote.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END REMOTE IP -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" data-ng-click="goNext()"/>\n </form>\n </wz-step>\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), -a.put("app/channels/openchannel/inbox/message/info.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_INFO\' | translate }}</h3>\n</div>\n<div class="modal-body" data-ng-init="initInfo()" style=" overflow-x: auto;" >\n <div data-ng-if="data" >\n <json-formatter json="data" open="1"></json-formatter>\n </div>\n <div class="note note-warning" data-ng-hide="data">\n <p>\n {{ \'MESSAGE_NO_INFO_AVAILABLE\' | translate }}\n </p>\n </div>\n\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/channels/openchannel/inbox/message/message.html",'<div class="message">\n <div class="row">\n <div class="col-md-6">\n <!-- <span data-ng-if="Message.from" class="bold">From: {{Message.from}} </span>\n <br>\n <span data-ng-if="Message.to" class="bold">To: {{Message.to}} </span>\n <br> -->\n <div class="row" ng-if="Message.from">\n <div class="col-md-12">\n <span data-ng-if="Message.from" class="bold">From: {{Message.from}} </span>\n </div>\n </div>\n <div class="row" ng-if="Message.to">\n <div class="col-md-12">\n <span data-ng-if="Message.to" class="bold">To: {{Message.to}} </span>\n </div>\n </div>\n <div class="row" ng-if="Message.name">\n <div class="col-md-12">\n <span class="bold">Name: {{Message.name}}</span>\n </div>\n </div>\n <div class="row" ng-if="Message.phone">\n <div class="col-md-12">\n <span class="bold">Phone: <a href="" data-ng-click="openContact(\'phone\',Message.phone)">{{Message.phone}}</a></span>\n </div>\n </div>\n <div class="row" ng-if="Message.email">\n <div class="col-md-12">\n <span class="bold">Email: <a href="" data-ng-click="openContact(\'email\',Message.email)">{{Message.email}}</a></span>\n </div>\n </div>\n </div>\n <div class="col-md-6">\n <span class="pull-right" data-ng-if="Message.User">{{\'APPLICATION_SENT_BY\' | translate}}: <strong>{{Message.User.fullname}}</strong></span>\n </div>\n </div>\n <br>\n <span class="todo-tasklist-date">\n <span class="pull-right" data-ng-switch="Message.status">\n <a ng-switch-when="RECEIVED" href="#" class="btn default btn-xs inactive-link green-stripe"> {{Message.status | uppercase}}\n <i class="fa fa-check"></i>\n </a>\n <a ng-switch-when="SENT" href="#" class="btn default btn-xs inactive-link green-stripe"> {{Message.status | uppercase}}\n <i class="fa fa-check"></i>\n </a>\n <a ng-switch-when="DELIVERED" href="#" class="btn default btn-xs inactive-link green-stripe"> {{Message.status | uppercase}}\n <i class="fa fa-check"></i>\n </a>\n <a ng-switch-when="SENDING" href="#" class="btn default btn-xs inactive-link blue-stripe" > {{Message.status | uppercase}}\n <i class="fa fa-warning"></i>\n </a>\n <a ng-switch-when="FAILED" href="#" class="btn default btn-xs red-stripe" data-ng-click="info(Message.res_data)"> {{Message.status | uppercase}}\n <i class="fa fa-times"></i>\n </a>\n <a ng-switch-default href="#" class="btn default btn-xs"> {{Message.status | uppercase}}\n </a>\n <br>\n </span>\n\n <i class="icon-calendar" title="{{Message.updatedAt | date:\'MMM d, y HH:mm:ss\'}}"></i> <span am-time-ago="Message.updatedAt"></span>\n </span>\n <hr>\n <ng-emoticons emoticons-data="Message.body"></ng-emoticons>\n <!-- <span class="body text-left" data-ng-bind-html="Message.body" style="white-space: pre-wrap;"></span> -->\n </div>\n'),a.put("app/channels/openchannel/inbox/room/room.directive.html",'<!-- BEGIN TODO CONTENT -->\n\n<div class="todo-content">\n <div class="portlet light">\n <div class="portlet-title">\n <div class="caption">\n <button class="btn btn-sm btn-default green-meadow" data-ng-if="Room.status !== \'CLOSED\'" data-ng-disabled="!form.body || forms.compose.from.$invalid || forms.compose.to.$invalid" data-ng-click="sendMessage()">\n <i class="icon-paper-plane" style="color: white;"></i> {{\'APPLICATION_SEND\' | translate}}\n </button>\n <span data-ng-show="Room && Room.status !== \'CLOSED\'"> | </span>\n <span data-ng-show="Room" class="label label-default">#{{Room.id}} {{Room.status}}</span>\n <span data-ng-if="Room && Room.ParentId"> | </span>\n <span data-ng-if="Room && Room.ParentId" class="label label-warning"> Ref: <a data-ng-click="openRoom(Room.ParentId,Room.contact)">#{{Room.ParentId}}</a></span>\n </div>\n <div class="actions" data-ng-switch="Room.status">\n <button class="btn btn-icon-only" data-ng-show="Room" data-ng-class="{\'btn-success\':Room.status !== \'CLOSED\',\'grey-cascade\':Room.status === \'CLOSED\'}" data-ng-click="closeRoom(Room.id)" data-ng-disabled="Room.status === \'CLOSED\' && Room.disposition">\n <i data-ng-class="{\'fa fa-upload\':Room.status !== \'CLOSED\',\'icon-target\':Room.status === \'CLOSED\'}"></i>\n </button>\n <button class="btn default btn-icon-only" data-ng-if="Room && Room.status !== \'CLOSED\'" type="button" data-ng-click="togglePanelLeft()" title="{{\'APPLICATION_RESIZE\' | translate}}">\n <i ng-class="panelRight == \'col-md-12\' ? \'icon-size-actual\' : \'icon-size-fullscreen\'"></i>\n </button>\n </div>\n </div>\n <div class="portlet-body">\n <div class="row">\n <div data-ng-show="panelLeft" data-ng-class="panelLeft">\n <div class="form">\n <!-- START TAGS -->\n <div class="form-group" data-ng-if="Room.status !== \'CLOSED\' || (Room.status == \'CLOSED\' && form.tags.length)">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-tags" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <ui-select data-ng-disabled="Room.status == \'CLOSED\'" multiple data-ng-model="form.tags" theme="bootstrap" on-select="onChanged($item, $model)" on-remove="onChanged($item, $model)">\n <ui-select-match placeholder="Tags...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter:$select.search" class="">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n <!-- END TAGS -->\n </div>\n <hr data-ng-if="Room && Room.status !== \'CLOSED\'">\n\n <div ng-scrollbars ng-scrollbars-config="{\n autoHideScrollbar: false,\n theme: \'light\',\n advanced: {\n updateOnContentResize: true\n },\n setHeight: 781,\n scrollInertia: 0\n }">\n <ul class="chats">\n <li data-ng-switch="Room.status" data-ng-class="{\'in\': Message.status == \'RECEIVED\', \'out\': Message.status == \'SENT\' || Message.status == \'SENDING\' || Message.status == \'FAILED\' || Message.status == \'NOTE\' || Message.status == \'DELIVERED\' || Message.status == \'QUEUED\' || Message.status != \'RECEIVED\' }" data-ng-repeat="Message in Room.OpenchannelMessages | orderBy:\'-createdAt\'">\n <!-- <img class="avatar" alt="" data-ng-src="api/users/avatar/{{getCurrentUser().userpic && smsMessage.status === \'SENT\' ? getCurrentUser().userpic : \'unknown_avatar\'}}"> -->\n <!-- <note message="smsMessage" ng-switch-when="NOTE"></note> -->\n <div class="avatar" data-ng-class="Message.UserId ? \'pretty-avatar\' : \'pretty-avatar-v\'">\n <ng-letter-avatar\n data-ng-if="Message.UserId"\n height="40"\n width="40"\n fontsize="25"\n data="{{Message.User.fullname}}"\n avatarcustombgcolor="#B0B0B0"\n avatarcustomborder="border:2px solid #3399CC"\n charCount="2"\n shape="round"></ng-letter-avatar>\n <ng-letter-avatar\n data-ng-if="!Message.UserId"\n height="40"\n width="40"\n fontsize="25"\n data="{{Message.from}}"\n avatarcustombgcolor="#B0B0B0"\n avatarcustomborder="border:2px solid #EA4C61"\n charCount="1"\n shape="round"></ng-letter-avatar>\n </div>\n <message message="Message" list-id="Room.OpenchannelAccount.ListId" ng-switch-default></message>\n </li>\n </ul>\n </div>\n </div>\n <div data-ng-class="panelRight">\n\n <div class="note note-info" data-ng-if="Room && Room.status == \'CLOSED\'">\n <h4 class="block">Info! {{\'MESSAGE_ROOM_CLOSED\' | translate}}</h4>\n <p>\n {{\'MESSAGE_ROOM_CLOSED_DETAILS\' | translate}}.\n </p>\n <hr>\n <p>\n <i class="icon-target"></i> {{\'APPLICATION_DISPOSITION\' | translate}}: <strong>{{Room.disposition}}</strong>\n </p>\n <p>\n <i class="icon-calendar"></i> {{\'APPLICATION_UPDATED_AT\' | translate}}: <strong>{{Room.updatedAt | date:\'medium\'}}</strong> (<span am-time-ago="Room.updatedAt"></span>)\n </p>\n </div>\n <form name="forms.compose" data-ng-submit="forms.compose.$valid" class="form-horizontal" novalidate>\n <!-- START HEAD -->\n <div class="form">\n\n <!-- START FROM -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.compose.from.$invalid && forms.compose.$submitted}" data-ng-if="Room.status !== \'CLOSED\'">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <label class="control-label">From:</label>\n </div>\n <div class="col-md-11">\n <ui-select data-ng-disabled="Room" theme="bootstrap" name="from" data-ng-model="form.from" required>\n <ui-select-match placeholder="From...">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="Account.name as Account in Accounts | filter: $select.search">\n <div data-ng-bind-html="Account.name | highlight: $select.search"></div>\n <small data-ng-bind-html="Account.name | highlight: $select.search"></small>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.compose.from.$invalid && forms.compose.$submitted " class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n <!-- END FROM -->\n <!-- START TO -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.compose.to.$invalid && forms.compose.$submitted}" data-ng-if="Room.status !== \'CLOSED\'">\n\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <label class="control-label">To:</label>\n </div>\n <div class="col-md-11">\n <input type="text" name="to" class="form-control todo-taskbody-taskdesc" placeholder="To..." rows="8" data-ng-disabled="Room" data-ng-model="form.to" required>\n <span data-ng-show="forms.compose.to.$invalid && forms.compose.$submitted " class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n <!-- END TO -->\n <!-- START CANNED -->\n <div class="form-group" data-ng-if="Room.status !== \'CLOSED\'">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-magic" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <input type="text"\n data-ng-model="modelOptions.selectedAnswer"\n uib-typeahead="key for key in getAnswers($viewValue)"\n placeholder="Canned answers.."\n typeahead-loading="loadingLocations"\n typeahead-no-results="noResults"\n typeahead-on-select="onSelect($item)"\n class="form-control">\n <i ng-show="loadingLocations" class="glyphicon glyphicon-refresh"></i>\n <div ng-show="noResults">\n <i class="glyphicon glyphicon-remove"></i> No Results Found\n </div>\n </div>\n </div>\n\n </div>\n <!-- END CANNED -->\n <!-- START message -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.compose.body.$invalid && forms.compose.$submitted}" data-ng-if=" Room.status !== \'CLOSED\'">\n <div class="col-md-12">\n <textarea id="text" class="form-control maxlength-handler" rows="8" name="body" data-ng-model="form.body"></textarea>\n <span data-ng-show="forms.compose.body.$invalid && forms.compose.$submitted " class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n </div>\n </div>\n\n <!-- END message -->\n </div>\n </form>\n </div>\n </div>\n </div>\n </div>\n</div>\n<!-- END TODO CONTENT -->\n"),a.put("app/channels/openchannel/inbox/view/account/list/list.html",'<!-- BEGIN Portlet PORTLET-->\n<div class="portlet light" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption">\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'NEW\'" uib-uncheckable>NEW</button>\n </div>\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'OPEN\'" uib-uncheckable>OPEN</button>\n </div>\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'PENDING\'" uib-uncheckable>PENDING</button>\n </div>\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'CLOSED\'" uib-uncheckable>CLOSED</button>\n </div>\n </div>\n <div class="actions">\n <a href="#" class="btn btn-icon-only default" data-ng-click="getPage();">\n <i class="fa fa-refresh"></i>\n </a>\n <a href="#" class="btn btn-icon-only red" data-ng-click="deleteItems();" data-ng-show="id.length && isAdmin">\n <i class="fa fa-trash"></i>\n </a>\n <a href="#" class="btn btn-icon-only blue" data-ng-click="tagItems();" data-ng-show="id.length">\n <i class="fa fa-tags"></i>\n </a>\n <a href="#" class="btn btn-icon-only green" data-ng-click="openRoom(null, \'New Message\')">\n <i class="fa fa-plus"></i>\n </a>\n </div>\n </div>\n <div class="portlet-title" data-ng-show="tags.length">\n <!-- START TAGS -->\n <div class="form-group">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-tags" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <ui-select multiple data-ng-model="query.tags" theme="bootstrap" on-select="onChanged($item, $model)" on-remove="onChanged($item, $model)">\n <ui-select-match placeholder="Search by tag...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter:$select.search">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n <!-- END TAGS -->\n </div>\n <div class="portlet-body">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="false"></span>\n <!-- END UI-GRID SPINNER -->\n\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid-inbox">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END Portlet PORTLET-->\n'),a.put("app/channels/openchannel/inbox/view/view.agents.modal.html",'<div class="modal-header" data-ng-init="initModal()">\n <h3 class="modal-title">{{ \'APPLICATION_AGENTS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <!-- START TRANSPORT -->\n <div class="form-group">\n <form name="form" novalidate>\n <!-- START TRANSPORT -->\n <div class="form-group">\n <ui-select multiple name="agents" data-ng-model="item.agents" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_AGENTS\' | translate}}">{{$item.fullname}}</ui-select-match>\n <ui-select-choices repeat="agent.id as agent in agents | filter: $select.search">\n {{agent.fullname}}\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END TRANSPORT -->\n </form>\n </div>\n <!-- END TRANSPORT -->\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/openchannel/inbox/view/view.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-globe"></i>\n <a href="#">{{ \'APPLICATION_OPEN_CHANNEL\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-note"></i>\n <a href="/channels/openchannel/inbox/list">{{ \'APPLICATION_INBOX\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row inbox" data-ng-init="initView()">\n <div class="col-md-3">\n <ul class="inbox-nav margin-bottom-10">\n <li data-ng-class="{active: $stateParams.id == Account.id}" data-ng-repeat="Account in openchannelAccounts">\n <a href="/channels/openchannel/inbox/view/account/{{Account.id}}/list" class="btn">\n <i class="icon-notebook"></i> {{Account.name}}\n </a>\n <b></b>\n </li>\n </ul>\n </div>\n\n <div class="col-md-9" >\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view>\n <div class="note note-info">\n <h4 class="block">Info! {{\'APPLICATION_NO_ACCOUNT_SELECTED\' | translate}}</h4>\n </div>\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/openchannel/inbox/view/view.status.modal.html",'<div class="modal-header">\n <button ng-if="modal.dismissable" type="button" ng-click="$dismiss()" class="close">×</button>\n <h4 ng-if="modal.title" ng-bind="modal.title | translate" class="modal-title"></h4>\n</div>\n<div class="modal-body">\n <p ng-if="modal.text && !closed" ng-bind="modal.text | translate"></p>\n <form name="form" novalidate data-ng-init="initDisposition()">\n <div class="form-group">\n <ui-select data-ng-model="item.disposition" name="list" theme="bootstrap" data-ng-disabled="!dispositions.length" required>\n <ui-select-match placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="disposition.name as disposition in dispositions | filter: $select.search">\n <div ng-bind-html="disposition.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="note note-warning" data-ng-hide="dispositions.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_DISPOSITIONS_AVAILABLE\' | translate }}\n </p>\n </div>\n</form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-danger" type="button" ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/openchannel/inbox/view/view.tags.modal.html",'<div class="modal-header" data-ng-init="initModal()">\n <h3 class="modal-title">{{ \'APPLICATION_TAGS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <!-- START TRANSPORT -->\n <div class="form-group">\n <form name="form" novalidate>\n <!-- START TAGS -->\n <div class="form-group">\n <ui-select multiple data-ng-model="item.tags" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_TAGS\' | translate}}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter: $select.search">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END TAGS -->\n </form>\n </div>\n <!-- END TRANSPORT -->\n</div>\n<div class="modal-footer">\n <button type="button" class="btn" data-ng-class="button.class" data-ng-click="button.click()"data-ng-repeat="button in modal.buttons">{{button.text | translate}}</button>\n <!-- <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button> -->\n</div>\n'),a.put("app/channels/openchannel/queue/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_QUEUE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" data-ng-pattern="settings.patternName" required />\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$invalid && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$invalid && form.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.timeout.$touched || form.$submitted) && form.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="0" name="timeout" placeholder="Timeout" class="form-control" data-ng-model="item.timeout" required min="1"/>\n <span data-ng-show="(form.timeout.$touched || form.$submitted) && form.timeout.$invalid && form.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START STRATEGY -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.strategy.$touched || form.$submitted) && form.strategy.$invalid}">\n <label class="control-label">{{\'APPLICATION_STRATEGY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.strategy" name="strategy" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.toUpperCase()}}</ui-select-match>\n <ui-select-choices repeat="strategy in strategies | filter: $select.search">\n <div ng-bind-html="strategy.toUpperCase() | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.strategy.$touched || form.$submitted) && form.strategy.$invalid && form.strategy.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END STRATEGY -->\n\n <!-- START AGENTS-->\n <div class="form-body" data-ng-init="getTeams()">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="item.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="item.penalty=item.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!item.penalty" data-ng-click="item.penalty=item.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-team">\n </div>\n </div>\n </div>\n <!-- END AGENTS-->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/openchannel/queue/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-globe"></i>\n <a href="#">{{ \'APPLICATION_OPEN_CHANNEL\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="#">{{ \'APPLICATION_QUEUES\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_QUEUES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="#" data-ng-click="createItem()" data-ng-if="Auth.isAdmin()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_QUEUE\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/openchannel/queue/view/view.agents.html",'<div class="row" data-ng-init="getTeams()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_AGENTS\' | translate}}</span>\n </div>\n </div>\n <div class="note note-warning" data-ng-hide="teams.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AVAILABLE_TEAMS\' | translate }}\n </p>\n </div>\n <div class="portlet-body">\n <!-- BEGIN FORM-->\n <form action="index.html" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="queue.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="queue.penalty=queue.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!queue.penalty" data-ng-click="queue.penalty=queue.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-team">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/openchannel/queue/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getQueue()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-globe"></i>\n <a href="#">{{ \'APPLICATION_OPEN_CHANNEL\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="/channels/openchannel/queues/list">{{ \'APPLICATION_QUEUES\' | translate }}</a>\n <i data-ng-show="queue" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="queue">\n <a href="#">{{queue.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET main.channels -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/queue.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{queue.name}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.openchannel.queues.view.settings\')}">\n <a data-ng-href="/channels/openchannel/queues/view/{{queue.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.channels.openchannel.queues.view.agents\')}" data-ng-show="Auth.getCurrentUser().role === \'admin\'">\n <a data-ng-href="/channels/openchannel/queues/view/{{queue.id}}/agents">\n <i class="icon-people"></i>\n {{ \'APPLICATION_AGENTS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET main.channels -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n </div>\n <!-- END PAGE CONTENT-->\n'), -a.put("app/channels/openchannel/queue/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateQueue()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="queue.name" data-ng-pattern="settings.patternName" required />\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid && forms.general.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="queue.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START TIMEOUT -->\n <div class="form-group">\n <label class="control-label">Timeout</label>\n <input type="number" name="timeout" placeholder="Timeout" class="form-control" min="1" data-ng-model="queue.timeout"/>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START HEADER SHAPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.strategy.$touched || forms.general.$submitted) && forms.general.strategy.$invalid}">\n <label class="control-label">{{\'APPLICATION_STRATEGY\' | translate}}</label>\n <ui-select data-ng-model="queue.strategy" name="strategy" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.toUpperCase()}}</ui-select-match>\n <ui-select-choices repeat="strategy in strategies | filter: $select.search">\n <div ng-bind-html="strategy | uppercase | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END HEADER SHAPE -->\n <input data-ng-if="Auth.isAdmin()" class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/openchannel/realtime/view/agent/agent.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initAgents()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-tree-view ui-grid-expandable-row ui-grid-pagination ui-grid-auto-resize>\n <span us-spinner spinner-key="grid-spinner" spinner-start-active="true"></span>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/openchannel/realtime/view/agent/agent.modal.info.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_INTERFACE_INFO\' | translate }}</h3>\n</div>\n<div class="modal-body">\n<div data-ng-if="agent.ipaddr" class="well">\n <div>{{agent.ipaddr}}:{{agent.port}}</div>\n <div>{{agent.fullcontact}}</div>\n <div>{{agent.useragent}}</div>\n <div>{{agent.lastms}}</div>\n</div>\n<div data-ng-if="!agent.ipaddr" class="alert alert-danger" role="alert">\n {{\'MESSAGE_NO_AVAILABLE_INFO\' | translate}}\n</div>\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/channels/openchannel/realtime/view/agent/queue.modal.add.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_JOIN_QUEUE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <div class="form-group row">\n <label class="col-md-2 control-label" style="margin-top: 7px;">{{\'APPLICATION_QUEUE\' | translate}}:</label>\n <div class="col-md-10">\n <ui-select multiple ng-model="item.queues" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_QUEUE\' | translate}}">{{$item.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n</div>\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/openchannel/realtime/view/application/application.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initApplications()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-auto-resize>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/openchannel/realtime/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-globe"></i>\n <a href="#">{{ \'APPLICATION_OPEN_CHANNEL\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-energy"></i>\n <a href="#">{{ \'APPLICATION_REALTIME\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <div>\n <nav class="navbar navbar-default" role="navigation">\n <div class="collapse navbar-collapse">\n <ul class="nav navbar-nav">\n <li data-ng-class="{\'active\': $state.is(\'main.channels.openchannel.realtime.view.agents\')}">\n <a href="/channels/openchannel/realtime/view/agents">\n {{\'APPLICATION_AGENTS\' | translate}}\n </a>\n </li>\n <li data-ng-class="{\'active\': $state.is(\'main.channels.openchannel.realtime.view.applications\')}">\n <a href="/channels/openchannel/realtime/view/applications">\n {{\'APPLICATION_APPLICATIONS\' | translate}}\n </a>\n </li>\n <li>\n <a href="#">\n <b>|{{\'APPLICATION_SHOW_TIMERS\' | translate}} </b><input\n bs-switch\n class="form-control"\n ng-model="showTimers"\n type="checkbox"\n name="showTimers"\n switch-active="{{ timerSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ timerSwitch.onColor }}"\n switch-off-color="{{ timerSwitch.offColor }}"\n switch-animate="{{ timerSwitch.animate }}"\n switch-size="{{ timerSwitch.size }}"\n switch-label="{{ timerSwitch.label }}"\n switch-icon="{{ timerSwitch.icon }}"\n switch-radio-off="{{ timerSwitch.radioOff }}"\n switch-label-width="{{ timerSwitch.labelWidth }}"\n switch-handle-width="{{ timerSwitch.handleWidth }}"><b>|</b>\n </a>\n </li>\n </ul>\n </div>\n </nav>\n </div>\n\n <div ui-view></div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/openchannel/realtime/view/view.queue.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initAgents()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div id="grid1" ui-grid="gridOptions" ui-grid-resize-columns ui-grid-tree-view class="grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/realtime/view/agent/agent.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initAgents()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-pagination ui-grid-auto-resize>\n <span us-spinner spinner-key="grid-spinner" spinner-start-active="true"></span>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/realtime/view/agent/agent.modal.logout.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_AGENT_LOGOUT\' | translate }}</h3>\n</div>\n<div class="modal-body">\n {{\'MESSAGE_AGENT_LOGOUT\' | translate}} <b>{{agent}}</b> ?\n</div>\n<div class="modal-footer">\n <button class="btn red-intense" type="button" ng-click="logout()">{{ \'APPLICATION_LOGOUT\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="$dismiss()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/realtime/view/agent/queue.modal.add.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_JOIN_QUEUE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <div class="form-group row">\n <label class="col-md-2 control-label" style="margin-top: 7px;">{{\'APPLICATION_QUEUE\' | translate}}:</label>\n <div class="col-md-10">\n <ui-select multiple ng-model="item.queues" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_QUEUE\' | translate}}">{{$item.name}}</ui-select-match>\n <ui-select-choices repeat="queue.name as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n</div>\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/realtime/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-energy"></i>\n <a href="/channels/realtime/view/agents">{{ \'APPLICATION_OMNI_REALTIME\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <div>\n <nav class="navbar navbar-default" role="navigation">\n <div class="collapse navbar-collapse">\n <ul class="nav navbar-nav">\n <li data-ng-class="{\'active\': $state.is(\'main.channels.realtime.view.agents\')}">\n <a href="/channels/realtime/view/agents">\n {{\'APPLICATION_AGENTS\' | translate}}\n </a>\n </li>\n <li>\n <a href="#">\n <b>|{{\'APPLICATION_SHOW_TIMERS\' | translate}} </b><input\n bs-switch\n class="form-control"\n ng-model="showTimers"\n type="checkbox"\n name="showTimers"\n switch-active="{{ timerSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ timerSwitch.onColor }}"\n switch-off-color="{{ timerSwitch.offColor }}"\n switch-animate="{{ timerSwitch.animate }}"\n switch-size="{{ timerSwitch.size }}"\n switch-label="{{ timerSwitch.label }}"\n switch-icon="{{ timerSwitch.icon }}"\n switch-radio-off="{{ timerSwitch.radioOff }}"\n switch-label-width="{{ timerSwitch.labelWidth }}"\n switch-handle-width="{{ timerSwitch.handleWidth }}"><b>|</b>\n </a>\n </li>\n </ul>\n </div>\n </nav>\n </div>\n <div ui-view></div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/sms/account/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="glyphicon glyphicon-comment"></i>\n <a href="#">{{ \'APPLICATION_SMS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-notebook"></i>\n <a href="/channels/sms/accounts/list">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group">\n <a class="btn btn-default" href="#" data-ng-click="gridOptions.getPage();">\n <i class="icon-reload"></i>\n </a>\n </div>\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/channels/sms/accounts/wizard">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ACCOUNT\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/sms/account/view/action/list/list.html",'<div class="row" data-ng-init="initActions()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACTIONS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/channels/sms/accounts/view/{{account.id}}/actions/wizard" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ACTION\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/sms/account/view/action/view/view.html",'\n<div class="row" data-ng-init="initAction()">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-directions font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACTION\' | translate }}</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="forms.settings" ng-submit="updateItem()" novalidate>\n <!-- START APP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app.$touched || forms.settings.$submitted) && forms.settings.app.$invalid}">\n <label class="control-label">{{ \'APPLICATION_APPLICATION\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.app" name="app" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_APPLICATION\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="app.value as app in apps | filter: $select.search">\n <div ng-bind-html="app.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.app.$touched || forms.settings.$submitted) && forms.settings.app.$invalid && forms.settings.app.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APP -->\n\n <div class="app-settings" ng-slide-down="application.app === \'queue\'" lazy-render duration="1" data-ng-init="getQueues()">\n <!-- START QUEUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.queue.$touched || forms.settings.$submitted) && forms.settings.queue.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.SmsQueueId" name="queue" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="queues.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_QUEUES_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/sms/queues/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.queue.$touched || forms.settings.$submitted) && forms.settings.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'agent\'" lazy-render duration="1" data-ng-init="getAgents()">\n <!-- START AGENT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.agent.$touched || forms.settings.$submitted) && forms.settings.agent.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.UserId" name="agent" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.fullname}}</ui-select-match>\n <ui-select-choices repeat="agent.id as agent in agents | filter: $select.search">\n <div ng-bind-html="agent.fullname | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="agents.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AGENTS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/staff/agents/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.agent.$touched || forms.settings.$submitted) && forms.settings.agent.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END AGENT -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1" data-ng-init="getMailAccounts();getTemplates()">\n <!-- START SENDMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.to.$touched || forms.settings.$submitted) && forms.settings.to.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="email" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" min="1" required/>\n <span data-ng-show="(forms.settings.to.$touched || forms.settings.$submitted) && forms.settings.to.$invalid && forms.settings.to.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in mailAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.template.$touched || forms.settings.$submitted) && forms.settings.template.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEMPLATE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data9" name="template" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.template.$touched || forms.settings.$submitted) && forms.settings.template.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SENDMAIL -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1" data-ng-init="getSmsAccounts()">\n <!-- START SENDSms -->\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.to.$touched || forms.settings.$submitted) && forms.settings.to.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" ng-pattern="/^[\\+]?[0-9]+$/" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" required/>\n <span data-ng-show="(forms.settings.to.$touched || forms.settings.$submitted) && forms.settings.to.$invalid && forms.settings.to.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in smsAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.account.$touched || forms.settings.$submitted) && forms.settings.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.text.$touched || forms.text.$submitted) && forms.settings.text.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <textarea id="text" class="form-control maxlength-handler" maxlength="160" name="text" data-ng-model="application.data6" required></textarea>\n <span data-ng-show="(forms.settings.text.$touched || forms.settings.$submitted) && forms.settings.text.$invalid && forms.settings.text.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <!-- END SENDSms -->\n </div>\n <!-- START INTERVAL_TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.intType.$touched || forms.settings.$submitted) && forms.settings.intType.$invalid}">\n <label class="control-label">{{ \'APPLICATION_INTERVAL_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.intType" theme="bootstrap" name="intType" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="intType.value as intType in $application.intTypes | filter: $select.search">\n {{ intType.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.intType.$touched || forms.settings.$submitted) && forms.settings.intType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVAL_TYPE -->\n\n <div class="app-settings" ng-slide-down="application.intType === \'custom\'" lazy-render duration="1">\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="application.alwaysTime">\n <uib-timepicker name="t_from" data-ng-model="application.t_from" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker>\n </fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="application.alwaysTime"><uib-timepicker name="t_to" data-ng-model="application.t_to" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker></fieldset>\n <!-- <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="application.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label> -->\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- START ALWAYS -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALWAYS\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="application.alwaysTime"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n <!-- <input type="checkbox" data-ng-model="application.alwaysTime"> -->\n </label>\n </div>\n </div>\n <!-- END ALWAYS -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.md_from" theme="bootstrap" name="md_from">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_to && application.md_to!==\'always\' && monthDay>application.md_to && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.md_to" theme="bootstrap" name="md_to">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_from && application.md_from!==\'always\' && monthDay<application.md_from && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.intType === \'list\'" lazy-render duration="1" data-ng-init="getIntervals()">\n\n <!-- START INTERVALS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.IntervalId.$touched || forms.settings.$submitted) && forms.settings.IntervalId.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVALS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.IntervalId" theme="bootstrap" name="IntervalId" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="interval.id as interval in intervals | filter: $select.search">\n {{ interval.name}}\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="intervals.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_INTERVAL_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/intervals/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.IntervalId.$touched || forms.settings.$submitted) && forms.settings.IntervalId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVALS -->\n\n </div>\n <button class="btn green-haze" type="submit">{{\'APPLICATION_UPDATE\' | translate}}</button>\n </form>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), -a.put("app/channels/sms/account/view/action/wizard/wizard.html",'\n<div class="row" data-ng-init="initWizard()">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-directions font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACTION\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_APPLICATION\' | translate}}" canexit="formValidation(forms.action.$valid)">\n <form name="forms.action" novalidate>\n <!-- START APP -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.action.$submitted && forms.action.app.$invalid}">\n <label class="control-label">{{ \'APPLICATION_APPLICATION\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.app" name="app" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_APPLICATION\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="app.value as app in apps | filter: $select.search">\n <div ng-bind-html="app.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.action.$submitted && forms.action.app.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APP -->\n\n <div class="app-settings" ng-slide-down="application.app === \'agent\'" lazy-render duration="1" data-ng-init="getAgents()">\n <!-- START AGENT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.agent.$touched || forms.action.$submitted) && forms.action.agent.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.UserId" name="agent" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.fullname}}</ui-select-match>\n <ui-select-choices repeat="agent.id as agent in agents | filter: $select.search">\n <div ng-bind-html="agent.fullname | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="agents.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AGENTS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/staff/agents/list">{{\'APPLICATION_AGENTS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.agent.$touched || forms.action.$submitted) && forms.action.agent.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END AGENT -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'queue\'" lazy-render duration="1" data-ng-init="getQueues()">\n <!-- START QUEUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.queue.$touched || forms.action.$submitted) && forms.action.queue.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.SmsQueueId" name="queue" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="queues.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_QUEUES_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/sms/queues/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.queue.$touched || forms.action.$submitted) && forms.action.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="application.timeout" min="1" required/>\n <span data-ng-show="(forms.action.timeout.$touched || forms.action.$submitted) && forms.action.timeout.$invalid && forms.action.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1" data-ng-init="getMailAccounts();getTemplates()">\n <!-- START SENDMAIL -->\n <div class="app-settings" ng-slide-down="application.app === \'sendMail\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.to.$touched || forms.action.$submitted) && forms.action.to.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="email" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" required/>\n <span data-ng-show="(forms.action.to.$touched || forms.action.$submitted) && forms.action.to.$invalid && forms.action.to.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.mail.$touched || forms.action.$submitted) && forms.action.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in mailAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEMPLATE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data9" name="template" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.template.$touched || forms.action.$submitted) && forms.action.template.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SENDMAIL -->\n </div>\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1" data-ng-init="getSmsAccounts()">\n <!-- START SENDSms -->\n <div class="app-settings" ng-slide-down="application.app === \'sendSms\'" lazy-render duration="1">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.to.$touched || forms.action.$submitted) && forms.action.to.$invalid}">\n <label class="control-label">{{\'APPLICATION_TO\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" ng-pattern="/^[\\+]?[0-9]+$/" name="to" placeholder="{{\'APPLICATION_TO\' | translate}}" class="form-control" data-ng-model="application.data2" required/>\n <span data-ng-show="(forms.action.to.$touched || forms.action.$submitted) && forms.action.to.$invalid && forms.action.to.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACCOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.data8" name="account" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in smsAccounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.account.$touched || forms.action.$submitted) && forms.action.account.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.text.$touched || forms.action.$submitted) && forms.action.text.$invalid}">\n <label class="control-label">{{\'APPLICATION_TEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <textarea id="text" class="form-control maxlength-handler" maxlength="160" name="text" data-ng-model="application.data6" required></textarea>\n <span data-ng-show="(forms.action.text.$touched || forms.action.$submitted) && forms.action.text.$invalid && forms.action.text.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n\n <!-- END SENDSms -->\n </div>\n <!-- START INTERVAL_TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.intType.$touched || forms.action.$submitted) && forms.action.intType.$invalid}">\n <label class="control-label">{{ \'APPLICATION_INTERVAL_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.intType" theme="bootstrap" name="intType" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="intType.value as intType in $application.intTypes | filter: $select.search">\n {{ intType.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.action.intType.$touched || forms.action.$submitted) && forms.action.intType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVAL_TYPE -->\n\n <div class="app-settings" ng-slide-down="application.intType === \'custom\'" lazy-render duration="1">\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="application.alwaysTime">\n <uib-timepicker name="t_from" data-ng-model="application.t_from" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker>\n </fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="application.alwaysTime"><uib-timepicker name="t_to" data-ng-model="application.t_to" show-meridian="false" show-spinners="false" mousewheel="false"></uib-timepicker></fieldset>\n <!-- <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="application.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label> -->\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- START ALWAYS -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALWAYS\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="application.alwaysTime"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n <!-- <input type="checkbox" data-ng-model="application.alwaysTime"> -->\n </label>\n </div>\n </div>\n <!-- END ALWAYS -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{ weekDay.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.md_from" theme="bootstrap" name="md_from">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_to && application.md_to!==\'always\' && monthDay>application.md_to && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.md_to" theme="bootstrap" name="md_to">\n <ui-select-match allow-clear>{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="application.md_from && application.md_from!==\'always\' && monthDay<application.md_from && monthDay!==\'always\'">\n {{monthDay}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="application.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="application.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{ $select.selected.name | translate }}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{ month.name | translate }}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </div>\n\n <div class="app-settings" ng-slide-down="application.intType === \'list\'" lazy-render duration="1" data-ng-init="getIntervals()">\n\n <!-- START INTERVALS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.action.IntervalId.$touched || forms.action.$submitted) && forms.action.IntervalId.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVALS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.IntervalId" theme="bootstrap" name="IntervalId" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{ $select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="interval.id as interval in intervals | filter: $select.search">\n {{ interval.name}}\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="intervals.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_INTERVAL_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/intervals/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.action.IntervalId.$touched || forms.action.$submitted) && forms.action.IntervalId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVALS -->\n\n </div>\n\n <input class="btn green-haze" type="submit" data-ng-click="next()" value="{{\'APPLICATION_CONTINUE\' | translate}}"/>\n </form>\n </wz-step>\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input class="btn green-haze" type="submit" data-ng-click="next()" value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/sms/account/view/api/view/view.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_API\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- CALLBACK TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <!-- START CALLBACK URL -->\n <div class="row" >\n <div class="col-md-12">\n <label class="control-label">Receive URL</label>\n <p>\n Copy the following url and insert it into your {{account.type}} account settings to receive SMS.\n <a href="https://wiki.xcallymotion.com/display/XMD/SMS" target="_blank">Detail</a>\n </p>\n </div>\n </div>\n <div class="row" >\n <div class="col-md-11">\n <code-mirror model="receiveurl"></code-mirror>\n </div>\n <div class="col-md-1">\n <a class="btn btn-sm green-jungle" data-ng-click="copyToClipboard(receiveurl);"><i class="fa fa-clipboard"></i>\n </a>\n </div>\n </div><br>\n <!-- END CALLACK URL -->\n <!-- START DELIVERY CALLBACK URL -->\n <div ng-if= "account.smstype == \'classic+\'" class="row" ng-show="!forms.info.remote.$invalid">\n <div class="col-md-12">\n <label class="control-label">Delivery URL </label>\n <p>\n Copy the following url and insert it into your {{account.type}} account settings to receive delivery report.\n <a href="https://wiki.xcallymotion.com/display/XMD/SMS" target="_blank">Detail</a>\n </p>\n </div>\n </div>\n <div ng-if= "account.smstype == \'classic+\'" class="row" ng-show="!forms.info.remote.$invalid">\n <div class="col-md-11">\n <code-mirror class="control-label" model="deliveryurl"></code-mirror>\n </div>\n <div class="col-md-1">\n <a class="btn btn-sm green-jungle" data-ng-click="copyToClipboard(deliveryurl);"><i class="fa fa-clipboard"></i>\n </a>\n </div>\n </div>\n <!-- END DELIVERY CALLACK URL -->\n </div>\n <!-- END CALLBACK TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/sms/account/view/disposition/modal/add.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_DISPOSITIONS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.form.$touched || form.$submitted) && form.form.$invalid}">\n <div class="">\n <input type="text" name="form" placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}" class="form-control" data-ng-model="name" required/>\n <span data-ng-show="form.form.$touched && form.form.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <!-- END NAME -->\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()" data-ng-show="form.$valid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/sms/account/view/disposition/view/view.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_DISPOSITIONS\' | translate}}</span>\n </div>\n <div class="actions actions-md">\n <a href="#" class="btn btn-icon-only green" data-ng-click="addDisposition();">\n <i class="fa fa-plus"></i>\n </a>\n </div>\n </div>\n <div class="portlet-body" data-ng-init="initView()">\n <div class="tab-content">\n <div class="row" data-ng-hide="dispositions.length">\n <div class="col-md-12">\n <div class="note note-info">\n <h4 class="block">Info! {{\'MESSAGE_NO_DISPOSITIONS_AVAILABLE\' | translate}}</h4>\n </div>\n </div>\n </div>\n\n <!-- GENERAL TAB -->\n <div class="row" data-ng-repeat="disposition in dispositions">\n <div class="col-md-12 form-group">\n <div class="input-group">\n <div>\n <input class="form-control" type="text" placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}" data-ng-model="disposition.name">\n </div>\n <span class="input-group-btn">\n <button class="btn btn-success" type="button" data-ng-click="updateDisposition(disposition.id, disposition.name);"><i class="fa fa-cloud-upload fa-fw"></i> {{\'APPLICATION_UPDATE\' | translate}}</button>\n <button class="btn btn-danger" type="button" data-ng-click="deleteDisposition(disposition.id);"><i class="fa fa-times fa-fw"></i> {{\'APPLICATION_DELETE\' | translate}}</button>\n </span>\n </div>\n </div>\n </div>\n <!-- END GENERAL TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/sms/account/view/hooks/view/view.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_HOOKS\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_ACCEPT\' | translate}}</a>\n </li>\n <li >\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_REJECT\' | translate}}</a>\n </li>\n <li >\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{\'APPLICATION_CLOSE\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- ACCEPT TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.accept" data-ng-submit="forms.accept.$valid && updateItemSmsAccount()" novalidate>\n <!-- START ACCEPT URL -->\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.accept.method.$touched || forms.accept.$submitted) && forms.accept.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.acceptMethod" name="method" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.accept.method.$touched || forms.accept.$submitted) && forms.accept.method.$invalid && forms.accept.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.accept.url.$touched || forms.accept.$submitted) && forms.accept.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.acceptUrl" ng-required="account.acceptMethod"/>\n <span data-ng-show="(forms.accept.url.$touched || forms.accept.$submitted) && forms.accept.url.$invalid && forms.accept.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <!-- END ACCEPT URL-->\n <!-- START ACTIONS-->\n <!-- START PAUSE -->\n <div class="row" ng-repeat = "action in account.actions">\n <div ng-switch="action.action">\n <div ng-switch-when="pause">\n <div class="form-group col-md-4">\n <label class="control-label">{{\'APPLICATION_PAUSE\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-change="resetActionData(action)"\n data-ng-model="action.enabled"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <div ng-if="action.enabled" class="form-group col-md-8">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}</label>\n <ui-select name="action" data-ng-model="action.type" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_TYPE\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat=" pause.name as pause in pauses | filter: $select.search">\n <div ng-bind-html="pause.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n </div>\n <!-- END ACTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ACCEPT TAB -->\n <!-- START REJECT TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.reject" data-ng-submit="forms.reject.$valid && updateItemSmsAccount()" novalidate>\n <!-- START REJECT URL -->\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.reject.method.$touched || forms.reject.$submitted) && forms.reject.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.rejectMethod" name="method" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.reject.method.$touched || forms.reject.$submitted) && forms.reject.method.$invalid && forms.reject.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.reject.url.$touched || forms.reject.$submitted) && forms.reject.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.rejectUrl" ng-required="account.rejectMethod"/>\n <span data-ng-show="(forms.reject.url.$touched || forms.reject.$submitted) && forms.reject.url.$invalid && forms.reject.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n\n <!-- END REJECT URL -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END REJECT TAB -->\n <!-- START CLOSE TAB -->\n <div class="tab-pane" id="tab_1_3">\n <form name="forms.close" data-ng-submit="forms.close.$valid && updateItemSmsAccount()" novalidate>\n <div class="row">\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.close.method.$touched || forms.close.$submitted) && forms.close.method.$invalid}">\n <label class="control-label">{{\'APPLICATION_METHOD\' | translate}}</label>\n <ui-select data-ng-model="account.closeMethod" name="method" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected.name | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.close.method.$touched || forms.close.$submitted) && forms.close.method.$invalid && forms.close.method.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.close.url.$touched || forms.close.$submitted) && forms.close.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="url" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="account.closeUrl" ng-required="account.closeMethod"/>\n <span data-ng-show="(forms.close.url.$touched || forms.close.$submitted) && forms.close.url.$invalid && forms.close.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END CLOSE TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'), -a.put("app/channels/sms/account/view/setting/view/view.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERALS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.info" data-ng-submit="forms.info.$valid && updateItemSmsAccount()" novalidate>\n <!-- START ID -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_ID\' | translate}}<span class="required" aria-required="true">*</span>\n </label>\n <input type="text" name="id" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.id" ng-disabled="true" required/>\n </div>\n <!-- END ID-->\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.name" required/>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid && forms.info.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n <!-- START LIST -->\n <div class="form-group" data-ng-if="license.cm">\n <label class="control-label">{{\'APPLICATION_LIST\' | translate}}</label>\n <div class="input-group">\n\n <ui-select data-ng-model="account.ListId" name="list" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_LIST\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="list.id as list in lists | filter: $select.search">\n <div ng-bind-html="list.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n\n <span class="input-group-btn">\n <button type="button" data-ng-click="account.ListId = null" class="btn btn-default">\n <span class="glyphicon glyphicon-trash"></span>\n </button>\n </span>\n\n </div>\n </div>\n <!-- END LIST -->\n <!-- START FIDELITY -->\n <!-- <div class="form-group">\n <label class="control-label">{{\'APPLICATION_FIDELITY\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-model="account.fidelity"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div> -->\n <!-- END FIDELITY -->\n\n <!-- START TIMEOUT -->\n <!-- <div class="form-group" data-ng-if="account.fidelity" data-ng-class="{\'has-error\': (forms.info.timeout.$touched || forms.info.$submitted) && forms.info.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="0" name="timeout" placeholder="{{\'APPLICATION_PORT\' | translate}}" class="form-control" data-ng-model="account.timeout" required/>\n <span data-ng-show="(forms.info.timeout.$touched || forms.info.$submitted) && forms.info.timeout.$invalid && forms.info.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.timeout.$touched || forms.info.$submitted) && forms.info.timeout.$invalid && forms.info.timeout.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div> -->\n <!-- END TIMEOUT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="account.description"/>\n </div>\n <!-- END DESCRIPTION -->\n <!-- START TWILIO -->\n <!-- START PHONE -->\n <div ng-if= "account.type == \'twilio\'" class="form-group" data-ng-class="{\'has-error\': ( forms.info.phone.$touched ||forms.info.$submitted) && forms.info.phone.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" ng-pattern="/^[\\+]?[0-9]+$/" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="account.phone" name="phone" required/>\n <span data-ng-show="(forms.info.phone.$touched || forms.in.$submitted) && forms.info.phone.$invalid && forms.info.phone.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PHONE -->\n\n <!-- START SID -->\n <div ng-if= "account.type == \'twilio\'" class="form-group" data-ng-class="{\'has-error\': (forms.info.sid.$touched || forms.info.$submitted) && forms.info.sid.$invalid}">\n <label class="control-label">{{\'APPLICATION_SID\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="sid" placeholder="{{\'APPLICATION_SID\' | translate}}" class="form-control" data-ng-model="account.sid" name="sid" required/>\n <span data-ng-show="(forms.info.sid.$touched || forms.info.$submitted) && forms.info.sid.$invalid && forms.info.sid.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SID -->\n <!-- START TOKEN -->\n <div ng-if= "account.type == \'twilio\'" class="form-group" data-ng-class="{\'has-error\': (forms.info.token.$touched || forms.info.$submitted) && forms.info.token.$invalid}">\n <label class="control-label">{{\'APPLICATION_TOKEN\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="token" placeholder="{{\'APPLICATION_TOKEN\' | translate}}" class="form-control" data-ng-model="account.token" name="token" required/>\n <span data-ng-show="(forms.info.token.$touched || forms.info.$submitted) && forms.info.token.$invalid && forms.info.token.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SID -->\n <!-- END TWILIO -->\n <!-- START SKEBBY -->\n <!-- START SKEBBY SMS TYPE -->\n <div ng-if= " account.type == \'skebby\'" class="form-group" data-ng-class="{\'has-error\': (forms.info.smstype.$touched || forms.info.$submitted) && forms.info.smstype.$invalid}">\n <label class="control-label">{{\'APPLICATION_SMS_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="account.smstype" name="smstype" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'SMS_TYPE\' | translate}}">{{$select.selected | uppercase}}</ui-select-match>\n <ui-select-choices repeat="smstype in [\'basic\',\'classic\',\'classic+\'] | filter: $select.search">\n <div data-ng-bind="smstype | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.info.smstype.$touched || forms.info.$submitted) && forms.info.smstype.$invalid && forms.info.smstype.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SKEBBY SMS TYPE -->\n <!-- START PHONE -->\n <div ng-if= "account.type == \'skebby\' " class="form-group" data-ng-class="{\'has-error\': ( forms.info.phone.$touched ||forms.info.$submitted) && forms.info.phone.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}<span class="required" aria-required="true"></span></label>\n <input type="text" ng-pattern="/^[0-9]+$/" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="account.phone" name="phone" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_PHONE_NUMBER\' | translate }}\n </span>\n <span data-ng-show="(forms.info.phone.$touched || forms.in.$submitted) && forms.info.phone.$invalid && forms.info.phone.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PHONE -->\n <!-- START USERNAME -->\n <div ng-if= "account.type == \'skebby\'" class="form-group" data-ng-class="{\'has-error\': (forms.info.username.$touched || forms.info.$submitted) && forms.info.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="account.username" name="username" required/>\n <span data-ng-show="(forms.info.username.$touched || forms.info.$submitted) && forms.info.username.$invalid && forms.info.username.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START PASSWORD -->\n <div ng-if= "account.type == \'skebby\'" class="form-group" data-ng-class="{\'has-error\': (forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="account.password" required/>\n <span data-ng-show="(forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$invalid && forms.info.password.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n <!-- END SKEBBY -->\n <!-- START REMOTE IP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.remote.$touched || forms.info.$submitted) && forms.info.remote.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remote" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="account.remote" required/>\n <span class="help-block help-block-info">\n {{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n </span>\n <span data-ng-show="(forms.info.remote.$touched || forms.info.$submitted) && forms.info.remote.$invalid && forms.info.remote.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END REMOTE IP -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/sms/account/view/view.html",'<!-- BEGIN PAGE HEADER-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="glyphicon glyphicon-comment"></i>\n <a href="#">{{ \'APPLICATION_SMS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-notebook"></i>\n <a href="/channels/sms/accounts/list">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a>\n <i class="fa fa-angle-right" data-ng-show="account"></i>\n </li>\n <li data-ng-show="account">\n <a href="#">{{ account.description || account.name }}</a>\n </li>\n </ul>\n </div>\n\n<!-- END PAGE HEADER-->\n\n<!-- BEGIN PAGE CONTENT-->\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET main.channels -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img ng-src="assets/images/media/account.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{ account.description || account.name }}\n </div>\n <div class="profile-usertitle-job">\n {{account.email}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li ng-class="{active: $state.is(\'main.channels.sms.accounts.view.settings\')}">\n <a href="/channels/sms/accounts/view/{{account.id}}/settings">\n <i class="icon-settings"></i>\n {{\'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.is(\'main.channels.sms.accounts.view.api\')}">\n <a href="/channels/sms/accounts/view/{{account.id}}/api">\n <i class="fa fa-external-link"></i>\n {{\'APPLICATION_API\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.is(\'main.channels.sms.accounts.view.hooks\')}">\n <a href="/channels/sms/accounts/view/{{account.id}}/hooks">\n <i class="fa fa-code"></i>\n {{\'APPLICATION_HOOKS\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.is(\'main.channels.sms.accounts.view.dispositions\')}">\n <a href="/channels/sms/accounts/view/{{account.id}}/dispositions">\n <i class="icon-target"></i>\n {{\'APPLICATION_DISPOSITIONS\' | translate}} </a>\n </li>\n <li ng-class="{active: $state.includes(\'main.channels.sms.accounts.view.actions\')}">\n <a href="/channels/sms/accounts/view/{{account.id}}/actions/list">\n <i class="icon-directions"></i>\n {{\'APPLICATION_ACTIONS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <div ui-view class="profile-content"></div>\n <!-- END PROFILE CONTENT -->\n </div>\n<!-- END PAGE CONTENT-->\n</div>\n'),a.put("app/channels/sms/account/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERALS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.info" data-ng-submit="forms.info.$valid && updateItemSmsAccount()" novalidate>\n <!-- START ID -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_ID\' | translate}}<span class="required" aria-required="true">*</span>\n </label>\n <input type="text" name="id" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.id" ng-disabled="true" required/>\n </div>\n <!-- END ID-->\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.name" required/>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid && forms.info.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n <!-- START LIST -->\n <div class="form-group" data-ng-if="license.cm">\n <label class="control-label">{{\'APPLICATION_LIST\' | translate}}</label>\n <div class="input-group">\n\n <ui-select data-ng-model="account.ListId" name="list" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_LIST\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="list.id as list in lists | filter: $select.search">\n <div ng-bind-html="list.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n\n <span class="input-group-btn">\n <button type="button" data-ng-click="account.ListId = null" class="btn btn-default">\n <span class="glyphicon glyphicon-trash"></span>\n </button>\n </span>\n\n </div>\n </div>\n <!-- END LIST -->\n\n\n <!-- START FIDELITY -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_FIDELITY\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n data-ng-model="account.fidelity"\n type="checkbox"\n name="auth"\n switch-active="{{ recordSwitch.isActive }}"\n switch-on-text="{{ recordSwitch.onText }}"\n switch-off-text="{{ recordSwitch.offText }}"\n switch-on-color="{{ recordSwitch.onColor }}"\n switch-off-color="{{ recordSwitch.offColor }}"\n switch-animate="{{ recordSwitch.animate }}"\n switch-size="{{ recordSwitch.size }}"\n switch-label="{{ recordSwitch.label }}"\n switch-icon="{{ recordSwitch.icon }}"\n switch-radio-off="{{ recordSwitch.radioOff }}"\n switch-label-width="{{ recordSwitch.labelWidth }}"\n switch-handle-width="{{ recordSwitch.handleWidth }}">\n </div>\n <!-- END FIDELITY -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-if="account.fidelity" data-ng-class="{\'has-error\': (forms.info.timeout.$touched || forms.info.$submitted) && forms.info.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="0" name="timeout" placeholder="{{\'APPLICATION_PORT\' | translate}}" class="form-control" data-ng-model="account.timeout" required/>\n <span data-ng-show="(forms.info.timeout.$touched || forms.info.$submitted) && forms.info.timeout.$invalid && forms.info.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.timeout.$touched || forms.info.$submitted) && forms.info.timeout.$invalid && forms.info.timeout.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="account.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START PHONE FOR TWILLIO ACCOUNT -->\n\n <div ng-if= "account.type == \'twilio\'" class="form-group" data-ng-class="{\'has-error\': ( forms.info.phone.$touched ||forms.info.$submitted) && forms.info.phone.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" ng-pattern="/^[\\+]?[0-9]+$/" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="account.phone" name="phone" required/>\n<!-- Format with a \'+\' and country code -->\n <!-- <span class="help-block">\n {{ \'DESCRIPTION_PHONE_NUMBER\' | translate }}\n </span> -->\n <span data-ng-show="(forms.info.phone.$touched || forms.in.$submitted) && forms.info.phone.$invalid && forms.info.phone.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PHONE FOR TWILLIO ACCOUNT -->\n\n <!-- START SID -->\n <div ng-if= "account.type == \'twilio\'" class="form-group" data-ng-class="{\'has-error\': (forms.info.sid.$touched || forms.info.$submitted) && forms.info.sid.$invalid}">\n <label class="control-label">{{\'APPLICATION_SID\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="sid" placeholder="{{\'APPLICATION_SID\' | translate}}" class="form-control" data-ng-model="account.sid" name="sid" required/>\n <span data-ng-show="(forms.info.sid.$touched || forms.info.$submitted) && forms.info.sid.$invalid && forms.info.sid.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SID -->\n <!-- START TOKEN -->\n <div ng-if= "account.type == \'twilio\'" class="form-group" data-ng-class="{\'has-error\': (forms.info.token.$touched || forms.info.$submitted) && forms.info.token.$invalid}">\n <label class="control-label">{{\'APPLICATION_TOKEN\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="token" placeholder="{{\'APPLICATION_TOKEN\' | translate}}" class="form-control" data-ng-model="account.token" name="token" required/>\n <span data-ng-show="(forms.info.token.$touched || forms.info.$submitted) && forms.info.token.$invalid && forms.info.token.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SID -->\n\n <!-- START SMS TYPE -->\n\n <div ng-if= " account.type == \'skebby\'" class="form-group" data-ng-class="{\'has-error\': (forms.info.smstype.$touched || forms.info.$submitted) && forms.info.smstype.$invalid}">\n <label class="control-label">{{\'APPLICATION_SMS_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="account.smstype" name="smstype" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'SMS_TYPE\' | translate}}">{{$select.selected | uppercase}}</ui-select-match>\n <ui-select-choices repeat="smstype in [\'basic\',\'classic\',\'classic+\'] | filter: $select.search">\n <div data-ng-bind="smstype | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.info.smstype.$touched || forms.info.$submitted) && forms.info.smstype.$invalid && forms.info.smstype.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TYPE -->\n <!-- START PHONE FOR SKEBBY ACCOUNT -->\n <div ng-if= "account.type == \'skebby\' " class="form-group" data-ng-class="{\'has-error\': ( forms.info.phone.$touched ||forms.info.$submitted) && forms.info.phone.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}<span class="required" aria-required="true"></span></label>\n <input type="text" ng-pattern="/^[0-9]+$/" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="account.phone" name="phone" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_PHONE_NUMBER\' | translate }}\n </span>\n <span data-ng-show="(forms.info.phone.$touched || forms.in.$submitted) && forms.info.phone.$invalid && forms.info.phone.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PHONE -->\n <!-- START USERNAME -->\n <div ng-if= "account.type == \'skebby\'" class="form-group" data-ng-class="{\'has-error\': (forms.info.username.$touched || forms.info.$submitted) && forms.info.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="account.username" name="username" required/>\n <span data-ng-show="(forms.info.username.$touched || forms.info.$submitted) && forms.info.username.$invalid && forms.info.username.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START PASSWORD -->\n <div ng-if= "account.type == \'skebby\'" class="form-group" data-ng-class="{\'has-error\': (forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="account.password" required/>\n <span data-ng-show="(forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$invalid && forms.info.password.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n <!-- START REMOTE IP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.remote.$touched || forms.info.$submitted) && forms.info.remote.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remote" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="account.remote" required/>\n <span data-ng-show="(forms.info.remote.$touched || forms.info.$submitted) && forms.info.remote.$invalid && forms.info.remote.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END REMOTE IP -->\n <!-- START CALLBACK URL -->\n <div ng-show="!forms.info.remote.$invalid" class="row" >\n <!-- <div class="row"> -->\n <div class="col-md-12">\n <label class="control-label">URL </label><br>\n <span ng-if= "account.type == \'twilio\' || account.type == \'skebby\'">\n Copy the following url and insert it into your {{account.type}} account settings to receive sms.\n <a href="https://wiki.xcallymotion.com/display/XMD/SMS" target="_blank">Detail</a>\n </span>\n </div>\n </div>\n <br>\n <div ng-show="!forms.info.remote.$invalid" class="row" >\n <div class="col-md-11">\n <code-mirror model="receiveurl"></code-mirror>\n </div>\n <div class="col-md-1">\n <a class="btn btn-sm green-jungle" data-ng-click="copyToClipboard(receiveurl);"><i class="fa fa-clipboard"></i>\n </a>\n </div>\n </div>\n <!-- END CALLACK URL -->\n <!-- START DELIVERY CALLBACK URL -->\n <div ng-if= "account.smstype == \'classic+\'" class="row" ng-show="!forms.info.remote.$invalid">\n <div class="col-md-12">\n <label class="control-label">Delivery URL </label><br>\n Copy the following url and insert it into your {{account.type}} account settings to receive delivery status.\n <a href="https://wiki.xcallymotion.com/display/XMD/SMS" target="_blank">Detail</a>\n </div>\n </div>\n <br>\n <div ng-if= "account.smstype == \'classic+\'" class="row" ng-show="!forms.info.remote.$invalid">\n <div class="col-md-11">\n <code-mirror class="control-label" model="deliveryurl"></code-mirror>\n </div>\n <div class="col-md-1">\n <a class="btn btn-sm green-jungle" data-ng-click="copyToClipboard(deliveryurl);"><i class="fa fa-clipboard"></i>\n </a>\n </div>\n </div>\n <!-- END DELIVERY CALLACK URL -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'), -a.put("app/channels/sms/account/wizard/wizard.html",'\n<div class="row" data-ng-init="initWizard()">\n <div class="col-md-12">\n <!-- BEGIN PAGE HEADER-->\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="glyphicon glyphicon-comment"></i>\n <a href="#">{{ \'APPLICATION_SMS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-notebook"></i>\n <a href="/channels/sms/accounts/list">{{ \'APPLICATION_ACCOUNTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n <!-- END PAGE HEADER-->\n\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACCOUNT\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_ACCOUNT_INFO\' | translate}}" canexit="formValidation(forms.info.$valid)">\n <form name="forms.info" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid && forms.info.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n <!-- START APPLICATION TYPE -->\n\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.type.$touched || forms.info.$submitted) && forms.info.type.$invalid}">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.type" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_TYPE\' | translate}}">{{$select.selected | uppercase}}</ui-select-match>\n <ui-select-choices repeat="type in [\'twilio\',\'skebby\'] | filter: $select.search">\n <div data-ng-bind="type | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.info.type.$touched || forms.info.$submitted) && forms.info.type.$invalid && forms.info.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TYPE -->\n <!-- START PHONE FOR TWILLIO ACCOUNT -->\n <div ng-if= "item.type == \'twilio\'" class="form-group" data-ng-class="{\'has-error\': ( forms.info.phone.$touched ||forms.info.$submitted) && forms.info.phone.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" ng-pattern="/^[\\+]?[0-9]+$/" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="item.phone" name="phone" required/>\n <span data-ng-show="(forms.info.phone.$touched || forms.info.$submitted) && forms.info.phone.$invalid && forms.info.phone.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PHONE FOR TWILLIO ACCOUNT -->\n <!-- START SID -->\n <div ng-if= "item.type == \'twilio\'" class="form-group" data-ng-class="{\'has-error\': ( forms.info.sid.$touched ||forms.info.$submitted) && forms.info.sid.$invalid}">\n <label class="control-label">{{\'APPLICATION_SID\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" placeholder="{{\'APPLICATION_SID\' | translate}}" class="form-control" data-ng-model="item.sid" name="sid" required/>\n <span data-ng-show="(forms.info.sid.$touched || forms.info.$submitted) && forms.info.sid.$invalid && forms.info.sid.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SID -->\n <!-- START TOKEN -->\n <div ng-if= "item.type == \'twilio\'" class="form-group" data-ng-class="{\'has-error\': (forms.info.token.$touched || forms.info.$submitted) && forms.info.token.$invalid}">\n <label class="control-label">{{\'APPLICATION_TOKEN\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" placeholder="{{\'APPLICATION_TOKEN\' | translate}}" class="form-control" data-ng-model="item.token" name="token" required/>\n <span data-ng-show="(forms.info.token.$touched || forms.info.$submitted) && forms.info.token.$invalid && forms.info.token.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SID -->\n\n <!-- START SMS TYPE -->\n <div ng-if= " item.type == \'skebby\'" class="form-group" data-ng-class="{\'has-error\': (forms.info.smstype.$touched || forms.info.$submitted) && forms.info.smstype.$invalid}">\n <label class="control-label">{{\'APPLICATION_SMS_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.smstype" name="smstype" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'SMS_TYPE\' | translate}}">{{$select.selected | uppercase}}</ui-select-match>\n <ui-select-choices repeat="smstype in [\'basic\',\'classic\',\'classic+\'] | filter: $select.search">\n <div data-ng-bind="smstype | highlight: $select.search | uppercase" ></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.info.smstype.$touched || forms.info.$submitted) && forms.info.smstype.$invalid && forms.info.smstype.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TYPE -->\n <!-- START PHONE FOR SKEBBY ACCOUNT -->\n <div ng-if= "item.type == \'skebby\' " class="form-group" data-ng-class="{\'has-error\': ( forms.info.phone.$touched ||forms.info.$submitted) && forms.info.phone.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}<span class="required" aria-required="true"></span></label>\n <input type="text" ng-pattern="/^[0-9]+$/" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="item.phone" name="phone" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_PHONE_NUMBER\' | translate }}\n </span>\n <span data-ng-show="(forms.info.phone.$touched || forms.info.$submitted) && forms.info.phone.$invalid && forms.info.phone.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PHONE -->\n <!-- START USERNAME -->\n <div ng-if= "item.type == \'skebby\'" class="form-group" data-ng-class="{\'has-error\': (forms.info.username.$touched || forms.info.$submitted) && forms.info.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="item.username" name="username" required/>\n <span data-ng-show="(forms.info.username.$touched || forms.info.$submitted) && forms.info.username.$invalid && forms.info.username.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n <!-- START PASSWORD -->\n <div ng-if= "item.type == \'skebby\'" class="form-group" data-ng-class="{\'has-error\': (forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.password" required/>\n <span data-ng-show="(forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$invalid && forms.info.password.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n <!-- START REMOTE IP -->\n <div ng-if= "item.type" class="form-group" data-ng-class="{\'has-error\': (forms.info.remote.$touched || forms.info.$submitted) && forms.info.remote.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remote" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.remote" required/>\n <span class="help-block help-block-info">\n {{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n </span>\n <span data-ng-show="(forms.info.remote.$touched || forms.info.$submitted) && forms.info.remote.$invalid && forms.info.remote.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END REMOTE IP -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" data-ng-click="goNext()"/>\n </form>\n </wz-step>\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/sms/inbox/room/room.directive.html",'<!-- BEGIN TODO CONTENT -->\n\n<div class="todo-content">\n <div class="portlet light">\n <div class="portlet-title">\n <div class="caption">\n <button class="btn btn-sm btn-default green-meadow" data-ng-if="SmsRoom.status !== \'CLOSED\'" data-ng-disabled="!form.body || forms.compose.from.$invalid || forms.compose.to.$invalid" data-ng-click="sendSMS()">\n <i class="icon-paper-plane" style="color: white;"></i> {{\'APPLICATION_SEND\' | translate}}\n </button>\n <span data-ng-show="SmsRoom && SmsRoom.status !== \'CLOSED\'"> | </span>\n <span data-ng-show="SmsRoom" class="label label-default">#{{SmsRoom.id}} {{SmsRoom.status}}</span>\n <span data-ng-if="SmsRoom && SmsRoom.ParentId"> | </span>\n <span data-ng-if="SmsRoom && SmsRoom.ParentId" class="label label-warning"> Ref: <a data-ng-click="openRoom(SmsRoom.ParentId,SmsRoom.contact)">#{{SmsRoom.ParentId}}</a></span>\n </div>\n <div class="actions" data-ng-switch="SmsRoom.status">\n <button class="btn btn-icon-only" data-ng-show="SmsRoom" data-ng-class="{\'btn-success\':SmsRoom.status !== \'CLOSED\',\'grey-cascade\':SmsRoom.status === \'CLOSED\'}" data-ng-click="closeRoom(SmsRoom.id)" data-ng-disabled="SmsRoom.status === \'CLOSED\' && SmsRoom.disposition">\n <i data-ng-class="{\'fa fa-upload\':SmsRoom.status !== \'CLOSED\',\'icon-target\':SmsRoom.status === \'CLOSED\'}"></i>\n </button>\n <button class="btn default btn-icon-only" data-ng-if="SmsRoom && SmsRoom.status !== \'CLOSED\'" type="button" data-ng-click="togglePanelLeft()" title="{{\'APPLICATION_RESIZE\' | translate}}">\n <i ng-class="panelRight == \'col-md-12\' ? \'icon-size-actual\' : \'icon-size-fullscreen\'"></i>\n </button>\n </div>\n </div>\n <div class="portlet-body">\n <div class="row">\n <div data-ng-show="panelLeft" data-ng-class="panelLeft">\n <div class="form">\n <!-- START TAGS -->\n <div class="form-group" data-ng-if="SmsRoom.status !== \'CLOSED\' || (SmsRoom.status == \'CLOSED\' && form.tags.length)">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-tags" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <ui-select data-ng-disabled="SmsRoom.status == \'CLOSED\'" multiple data-ng-model="form.tags" theme="bootstrap" on-select="onChanged($item, $model)" on-remove="onChanged($item, $model)">\n <ui-select-match placeholder="Tags...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter:$select.search" class="">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n <!-- END TAGS -->\n </div>\n <hr data-ng-if="SmsRoom && SmsRoom.status !== \'CLOSED\'">\n\n <div ng-scrollbars ng-scrollbars-config="{\n autoHideScrollbar: false,\n theme: \'light\',\n advanced: {\n updateOnContentResize: true\n },\n setHeight: 781,\n scrollInertia: 0\n }">\n <ul class="chats">\n <li data-ng-switch="SmsRoom.status" data-ng-class="{\'in\': smsMessage.status == \'RECEIVED\', \'out\': smsMessage.status == \'SENT\' || smsMessage.status == \'SENDING\' || smsMessage.status == \'FAILED\' || smsMessage.status == \'NOTE\' || smsMessage.status == \'DELIVERED\' || smsMessage.status == \'QUEUED\' || smsMessage.status != \'RECEIVED\' }" data-ng-repeat="smsMessage in SmsRoom.SmsMessages | orderBy:\'-createdAt\'">\n <div class="avatar" data-ng-class="smsMessage.UserId ? \'pretty-avatar\' : \'pretty-avatar-v\'">\n <ng-letter-avatar\n data-ng-if="smsMessage.UserId"\n height="40"\n width="40"\n fontsize="25"\n data="{{smsMessage.User.fullname}}"\n avatarcustombgcolor="#B0B0B0"\n avatarcustomborder="border:2px solid #3399CC"\n charCount="2"\n shape="round"></ng-letter-avatar>\n <ng-letter-avatar\n data-ng-if="!smsMessage.UserId"\n height="40"\n width="40"\n fontsize="25"\n data="{{smsMessage.from}}"\n avatarcustombgcolor="#B0B0B0"\n avatarcustomborder="border:2px solid #EA4C61"\n charCount="1"\n shape="round"></ng-letter-avatar>\n </div>\n <sms message="smsMessage" list-id="SmsRoom.SmsAccount.ListId" accounttype=\'SmsRoom.SmsAccount.type\' ng-switch-default></sms>\n </li>\n </ul>\n </div>\n </div>\n <div data-ng-class="panelRight">\n <div class="note note-info" data-ng-if="SmsRoom && SmsRoom.status == \'CLOSED\'">\n <h4 class="block">Info! {{\'MESSAGE_SMS_ROOM_CLOSED\' | translate}}</h4>\n <p>\n {{\'MESSAGE_SMS_ROOM_CLOSED_DETAILS\' | translate}}.\n </p>\n <hr>\n <p>\n <i class="icon-target"></i> {{\'APPLICATION_DISPOSITION\' | translate}}: <strong>{{SmsRoom.disposition}}</strong>\n </p>\n <p>\n <i class="icon-calendar"></i> {{\'APPLICATION_UPDATED_AT\' | translate}}: <strong>{{SmsRoom.updatedAt | date:\'medium\'}}</strong> (<span am-time-ago="SmsRoom.updatedAt"></span>)\n </p>\n </div>\n <form name="forms.compose" data-ng-submit="forms.compose.$valid && sendSMS()" class="form-horizontal" novalidate>\n <!-- START HEAD -->\n <div class="form">\n\n <!-- START FROM -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.compose.from.$invalid && forms.compose.$submitted}" data-ng-if="SmsRoom.status !== \'CLOSED\'">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <label class="control-label">From:</label>\n </div>\n <div class="col-md-11">\n <ui-select data-ng-disabled="SmsRoom" theme="bootstrap" name="from" data-ng-model="form.from" required>\n <ui-select-match placeholder="From...">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="smsAccount.phone as smsAccount in smsAccounts | filter: $select.search">\n <div data-ng-bind-html="smsAccount.name | highlight: $select.search"></div>\n <small data-ng-bind-html="smsAccount.phone | highlight: $select.search"></small>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.compose.from.$invalid && forms.compose.$submitted " class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n <!-- END FROM -->\n <!-- START TO -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.compose.to.$invalid && forms.compose.$submitted}" data-ng-if="SmsRoom.status !== \'CLOSED\'">\n\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <label class="control-label">To:</label>\n </div>\n <div class="col-md-11">\n <input type="text" ng-pattern="/^[\\+]?[0-9]+$/" name="to" class="form-control todo-taskbody-taskdesc" placeholder="To..." rows="8" data-ng-disabled="SmsRoom" data-ng-model="form.to" required>\n <span data-ng-show="forms.compose.to.$invalid && forms.compose.$submitted " class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n <!-- END TO -->\n <!-- START CANNED -->\n <div class="form-group" data-ng-if="SmsRoom.status !== \'CLOSED\'">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-magic" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <input type="text"\n data-ng-model="modelOptions.selectedAnswer"\n uib-typeahead="key for key in getAnswers($viewValue)"\n placeholder="Canned answers.."\n typeahead-loading="loadingLocations"\n typeahead-no-results="noResults"\n typeahead-on-select="onSelect($item)"\n class="form-control">\n <i ng-show="loadingLocations" class="glyphicon glyphicon-refresh"></i>\n <div ng-show="noResults">\n <i class="glyphicon glyphicon-remove"></i> No Results Found\n </div>\n </div>\n </div>\n\n </div>\n <!-- END CANNED -->\n <!-- START message -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.compose.body.$invalid && forms.compose.$submitted}" data-ng-if="SmsRoom.status !== \'CLOSED\'">\n <div class="col-md-12">\n <textarea id="text" class="form-control maxlength-handler" rows="8" maxlength="160" name="body" data-ng-model="form.body" ></textarea>\n <button id="btnPost" type="button" class="btn btn-success pull-right" ng-class="{\'btn-warning\': form.body.length >= 120, \'btn-danger\': form.body.length >= 141 }">{{ 160 - form.body.length }}</button>\n <span class="help-block"> Max 160 chars</span>\n <span data-ng-show="forms.compose.body.$invalid && forms.compose.$submitted " class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n </div>\n </div>\n\n <!-- END message -->\n </div>\n </form>\n </div>\n </div>\n </div>\n </div>\n</div>\n<!-- END TODO CONTENT -->\n"),a.put("app/channels/sms/inbox/sms/info.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_INFO\' | translate }}</h3>\n</div>\n<div class="modal-body" data-ng-init="initInfo()" style=" overflow-x: auto;">\n <div class="form-group" ng-if="data">\n <json-formatter json="data" open="1"></json-formatter>\n </div>\n <div class="note note-warning" data-ng-hide="data">\n <p>\n {{ \'MESSAGE_NO_INFO_AVAILABLE\' | translate }}\n </p>\n </div>\n\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/channels/sms/inbox/sms/sms.html",'<div class="message">\n <div class="row">\n <div class="col-md-6">\n <span class="bold">From: </span>\n [<a href="" data-ng-click="openContact(smsMessage.from)">{{smsMessage.from}}</a>]\n <br>\n <span class="bold">To: </span>\n [<a href="" data-ng-click="openContact(smsMessage.to)">{{smsMessage.to}}</a>]\n <br>\n </div>\n <div class="col-md-6">\n <span class="pull-right" data-ng-if="smsMessage.User">{{\'APPLICATION_SENT_BY\' | translate}}: <strong>{{smsMessage.User.fullname}}</strong></span>\n <span class="pull-right" data-ng-if="smsMessage.source">{{\'APPLICATION_SENT_BY\' | translate}}: <strong>Cally ²</strong>\n <a ng-click="info(smsMessage.source)"><i class="icon-info font-blue"></i>\n </a>\n </div>\n </div>\n\n <br>\n <span class="todo-tasklist-date">\n <span class="pull-right" data-ng-switch="smsMessage.status">\n <a ng-switch-when="RECEIVED" href="#" class="btn default btn-xs inactive-link green-stripe"> {{smsMessage.status | uppercase}}\n <i class="fa fa-check"></i>\n </a>\n <a ng-switch-when="SENT" href="#" class="btn default btn-xs inactive-link green-stripe"> {{smsMessage.status | uppercase}}\n <i class="fa fa-check"></i>\n </a>\n <a ng-switch-when="DELIVERED" href="#" class="btn default btn-xs inactive-link green-stripe"> {{smsMessage.status | uppercase}}\n <i class="fa fa-check"></i>\n </a>\n <a ng-switch-when="SENDING" href="#" class="btn default btn-xs inactive-link blue-stripe" > {{smsMessage.status | uppercase}}\n <i class="fa fa-warning"></i>\n </a>\n <a ng-switch-when="FAILED" href="#" class="btn default btn-xs red-stripe" data-ng-click="info(null,smsMessage.res_data)"> {{smsMessage.status | uppercase}}\n <i class="fa fa-times"></i>\n </a>\n <a ng-switch-default href="#" class="btn default btn-xs"> {{smsMessage.status | uppercase}}\n </a>\n <br>\n <!-- <a ng-href="https://www.twilio.com/docs/errors/{{smsMessage.errorcode}}" target="_blank" ng-if="(smsMessage.errorcode) && (accounttype==\'twilio\')">Error Code:{{smsMessage.errorcode}}</a>\n <a ng-href="{{smsMessage.errorcode.length > 2 ? \'http://www.skebby.com/sms-api/sms-gateway/developers-docs/#receiveNotifySection\' : \'http://www.skebby.com/sms-api/sms-gateway/developers-docs/#errorCodesSection\'}}" target="_blank" ng-if="(smsMessage.errorcode != 1) && (smsMessage.errorcode) && (accounttype==\'skebby\')">Error Code:{{smsMessage.errorcode}}</a> -->\n </span>\n\n <i class="icon-calendar" title="{{smsMessage.updatedAt | date:\'MMM d, y HH:mm:ss\'}}"></i> <span am-time-ago="smsMessage.updatedAt"></span>\n </span>\n <hr>\n <span class="body text-left" data-ng-bind-html="smsMessage.body" style="white-space: pre-wrap;"></span>\n\n </div>\n'),a.put("app/channels/sms/inbox/view/account/list/list.html",'<!-- BEGIN Portlet PORTLET-->\n<div class="portlet light" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption">\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'NEW\'" uib-uncheckable>NEW</button>\n </div>\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'OPEN\'" uib-uncheckable>OPEN</button>\n </div>\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'PENDING\'" uib-uncheckable>PENDING</button>\n </div>\n <div class="btn-group btn-group-solid">\n <button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'CLOSED\'" uib-uncheckable>CLOSED</button>\n </div>\n </div>\n <div class="actions">\n <a href="#" class="btn btn-icon-only default" data-ng-click="getPage();">\n <i class="fa fa-refresh"></i>\n </a>\n <a href="#" class="btn btn-icon-only red" data-ng-click="deleteItems();" data-ng-show="id.length && isAdmin">\n <i class="fa fa-trash"></i>\n </a>\n <a href="#" class="btn btn-icon-only btn-success" data-ng-click="disposeItems();" data-ng-show="id.length">\n <i class="fa fa-upload"></i>\n </a>\n <a href="#" class="btn btn-icon-only blue" data-ng-click="tagItems();" data-ng-show="id.length">\n <i class="fa fa-tags"></i>\n </a>\n <a href="#" class="btn btn-icon-only green" data-ng-click="openRoom(null, \'New Message\')">\n <i class="fa fa-plus"></i>\n </a>\n </div>\n </div>\n <div class="portlet-title" data-ng-show="tags.length">\n <!-- START TAGS -->\n <div class="form-group">\n <div class="row">\n <div class="col-md-1">\n <a href="#" class="btn btn-icon-only">\n <i class="fa fa-tags" style="color: gray;"></i>\n </a>\n </div>\n <div class="col-md-11">\n <ui-select multiple data-ng-model="query.tags" theme="bootstrap" on-select="onChanged($item, $model)" on-remove="onChanged($item, $model)">\n <ui-select-match placeholder="Search by tag...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter:$select.search">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n </div>\n <!-- END TAGS -->\n </div>\n <div class="portlet-body">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="false"></span>\n <!-- END UI-GRID SPINNER -->\n\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-pagination ui-grid-selection ui-grid-exporter class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END Portlet PORTLET-->\n'),a.put("app/channels/sms/inbox/view/view.agents.modal.html",'<div class="modal-header" data-ng-init="initModal()">\n <h3 class="modal-title">{{ \'APPLICATION_AGENTS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <!-- START TRANSPORT -->\n <div class="form-group">\n <form name="form" novalidate>\n <!-- START TRANSPORT -->\n <div class="form-group">\n <ui-select multiple name="agents" data-ng-model="item.agents" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_AGENTS\' | translate}}">{{$item.fullname}}</ui-select-match>\n <ui-select-choices repeat="agent.id as agent in agents | filter: $select.search">\n {{agent.fullname}}\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END TRANSPORT -->\n </form>\n </div>\n <!-- END TRANSPORT -->\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/sms/inbox/view/view.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="glyphicon glyphicon-comment"></i>\n <a href="#">{{ \'APPLICATION_SMS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-note"></i>\n <a href="/channels/sms/inbox/list">{{ \'APPLICATION_INBOX\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row inbox" data-ng-init="initView()">\n <div class="col-md-3">\n <ul class="inbox-nav margin-bottom-10">\n <li data-ng-class="{active: $stateParams.id == smsAccount.id}" data-ng-repeat="smsAccount in smsAccounts">\n <a href="/channels/sms/inbox/view/account/{{smsAccount.id}}/list" class="btn">\n <i class="icon-notebook"></i> {{smsAccount.name}}\n </a>\n <b></b>\n </li>\n </ul>\n </div>\n\n <div class="col-md-9" >\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view>\n <div class="note note-info">\n <h4 class="block">Info! {{\'APPLICATION_NO_ACCOUNT_SELECTED\' | translate}}</h4>\n </div>\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/sms/inbox/view/view.status.modal.html",'<div class="modal-header">\n <button ng-if="modal.dismissable" type="button" ng-click="$dismiss()" class="close">×</button>\n <h4 ng-if="modal.title" ng-bind="modal.title | translate" class="modal-title"></h4>\n</div>\n<div class="modal-body">\n <p ng-if="modal.text && !closed" ng-bind="modal.text | translate"></p>\n <form name="form" novalidate data-ng-init="initDisposition()">\n <div class="form-group">\n <ui-select data-ng-model="item.disposition" name="list" theme="bootstrap" data-ng-disabled="!dispositions.length" required>\n <ui-select-match placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="disposition.name as disposition in dispositions | filter: $select.search">\n <div ng-bind-html="disposition.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="note note-warning" data-ng-hide="dispositions.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_DISPOSITIONS_AVAILABLE\' | translate }}\n </p>\n </div>\n</form>\n <!-- <div ng-if="modal.html" ng-bind-html="modal.html"></div> -->\n</div>\n<div class="modal-footer">\n <button class="btn btn-danger" type="button" ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n <!-- <button ng-repeat="button in modal.buttons" ng-class="button.classes" ng-click="button.click($event)" ng-bind="button.text" class="btn"></button> -->\n</div>\n'), -a.put("app/channels/sms/inbox/view/view.tags.modal.html",'<div class="modal-header" data-ng-init="initModal()">\n <h3 class="modal-title">{{ \'APPLICATION_TAGS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <!-- START TRANSPORT -->\n <div class="form-group">\n <form name="form" novalidate>\n <!-- START TAGS -->\n <div class="form-group">\n <ui-select multiple data-ng-model="item.tags" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_TAGS\' | translate}}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter: $select.search">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END TAGS -->\n </form>\n </div>\n <!-- END TRANSPORT -->\n</div>\n<div class="modal-footer">\n <button type="button" class="btn" data-ng-class="button.class" data-ng-click="button.click()"data-ng-repeat="button in modal.buttons">{{button.text | translate}}</button>\n <!-- <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button> -->\n</div>\n'),a.put("app/channels/sms/inbox/view/view.templates.modal.html",'<div class="modal-header" data-ng-init="initModal()">\n <h3 class="modal-title">{{ \'APPLICATION_TEMPLATES\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <div class="note note-info" data-ng-show="!templates.length">\n <h4 class="block">Info!</h4>\n <p>\n {{\'MESSAGE_NO_TEMPLATES_AVAILABLE\' | translate}}\n </p>\n </div>\n <form name="form" data-ng-show="templates.length" novalidate>\n <div class="form-group">\n <ui-select data-ng-model="item.template" theme="bootstrap">\n <ui-select-match placeholder="Select a template in the list or search his name...">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template in templates | propsFilter: {name: $select.search}">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n <small data-ng-show="template.description">\n {{\'APPLICATION_DESCRIPTION\' | translate}}: {{template.description}}\n </small>\n </ui-select-choices>\n </ui-select>\n </div>\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()" data-ng-show="templates.length">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/sms/queue/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_QUEUE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" data-ng-pattern="settings.patternName" required />\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$invalid && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$invalid && form.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START STRATEGY -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.strategy.$touched || form.$submitted) && form.strategy.$invalid}">\n <label class="control-label">{{\'APPLICATION_STRATEGY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.strategy" name="strategy" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.toUpperCase()}}</ui-select-match>\n <ui-select-choices repeat="strategy in strategies | filter: $select.search">\n <div ng-bind-html="strategy.toUpperCase() | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.strategy.$touched || form.$submitted) && form.strategy.$invalid && form.strategy.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END STRATEGY -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.timeout.$touched || form.$submitted) && form.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="0" name="timeout" placeholder="Timeout" class="form-control" data-ng-model="item.timeout" required min="1"/>\n <span data-ng-show="(form.timeout.$touched || form.$submitted) && form.timeout.$invalid && form.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START AGENTS-->\n <div class="form-body" data-ng-init="getTeams()">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="item.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="item.penalty=item.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!item.penalty" data-ng-click="item.penalty=item.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-team">\n </div>\n </div>\n </div>\n <!-- END AGENTS-->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/sms/queue/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="glyphicon glyphicon-comment"></i>\n <a href="#">{{ \'APPLICATION_SMS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="#">{{ \'APPLICATION_QUEUES\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_QUEUES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="#" data-ng-click="createItem()" data-ng-if="Auth.isAdmin()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_QUEUE\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/sms/queue/view/view.agents.html",'<div class="row" data-ng-init="getTeams()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_AGENTS\' | translate}}</span>\n </div>\n </div>\n <div class="note note-warning" data-ng-hide="teams.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AVAILABLE_TEAMS\' | translate }}\n </p>\n </div>\n <div class="portlet-body">\n <!-- BEGIN FORM-->\n <form action="index.html" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="queue.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="queue.penalty=queue.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!queue.penalty" data-ng-click="queue.penalty=queue.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-team">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/sms/queue/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getQueue()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="glyphicon glyphicon-comment"></i>\n <a href="#">{{ \'APPLICATION_SMS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="/channels/sms/queues/list">{{ \'APPLICATION_QUEUES\' | translate }}</a>\n <i data-ng-show="queue" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="queue">\n <a href="#">{{queue.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET main.channels -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/queue.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{queue.name}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.sms.queues.view.settings\')}">\n <a data-ng-href="/channels/sms/queues/view/{{queue.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.channels.sms.queues.view.agents\')}" data-ng-show="Auth.getCurrentUser().role === \'admin\'">\n <a data-ng-href="/channels/sms/queues/view/{{queue.id}}/agents">\n <i class="icon-people"></i>\n {{ \'APPLICATION_AGENTS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET main.channels -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n </div>\n <!-- END PAGE CONTENT-->\n'),a.put("app/channels/sms/queue/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateSmsQueue()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="queue.name" data-ng-pattern="settings.patternName" required />\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid && forms.general.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START STRATEGY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.strategy.$touched || forms.general.$submitted) && forms.general.strategy.$invalid}">\n <label class="control-label">{{\'APPLICATION_STRATEGY\' | translate}}</label>\n <ui-select data-ng-model="queue.strategy" name="strategy" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | uppercase}}</ui-select-match>\n <ui-select-choices repeat="strategy in strategies | filter: $select.search">\n <div ng-bind-html="strategy | uppercase | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END STRATEGY -->\n\n <!-- START TIMEOUT -->\n <div class="form-group">\n <label class="control-label">Timeout</label>\n <input type="number" name="timeout" placeholder="Timeout" class="form-control" min="1" data-ng-model="queue.timeout"/>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="queue.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <input data-ng-if="Auth.isAdmin()" class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/sms/realtime/view/agent/agent.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initAgents()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-tree-view ui-grid-expandable-row ui-grid-pagination ui-grid-auto-resize>\n <span us-spinner spinner-key="grid-spinner" spinner-start-active="true"></span>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/sms/realtime/view/agent/agent.modal.info.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_INTERFACE_INFO\' | translate }}</h3>\n</div>\n<div class="modal-body">\n<div data-ng-if="agent.ipaddr" class="well">\n <div>{{agent.ipaddr}}:{{agent.port}}</div>\n <div>{{agent.fullcontact}}</div>\n <div>{{agent.useragent}}</div>\n <div>{{agent.lastms}}</div>\n</div>\n<div data-ng-if="!agent.ipaddr" class="alert alert-danger" role="alert">\n {{\'MESSAGE_NO_AVAILABLE_INFO\' | translate}}\n</div>\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/channels/sms/realtime/view/agent/queue.modal.add.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_JOIN_QUEUE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <div class="form-group row">\n <label class="col-md-2 control-label" style="margin-top: 7px;">{{\'APPLICATION_QUEUE\' | translate}}:</label>\n <div class="col-md-10">\n <ui-select multiple ng-model="item.queues" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_QUEUE\' | translate}}">{{$item.name}}</ui-select-match>\n <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n</div>\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/sms/realtime/view/application/application.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initApplications()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-auto-resize>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/sms/realtime/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-directions"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="glyphicon glyphicon-comment"></i>\n <a href="#">{{ \'APPLICATION_SMS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-energy"></i>\n <a href="#">{{ \'APPLICATION_REALTIME\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <div>\n <nav class="navbar navbar-default" role="navigation">\n <div class="collapse navbar-collapse">\n <ul class="nav navbar-nav">\n <li data-ng-class="{\'active\': $state.is(\'main.channels.sms.realtime.view.agents\')}">\n <a href="/channels/sms/realtime/view/agents">\n {{\'APPLICATION_AGENTS\' | translate}}\n </a>\n </li>\n <li data-ng-class="{\'active\': $state.is(\'main.channels.sms.realtime.view.applications\')}">\n <a href="/channels/sms/realtime/view/applications">\n {{\'APPLICATION_APPLICATIONS\' | translate}}\n </a>\n </li>\n <li>\n <a href="#">\n <b>|{{\'APPLICATION_SHOW_TIMERS\' | translate}} </b><input\n bs-switch\n class="form-control"\n ng-model="showTimers"\n type="checkbox"\n name="showTimers"\n switch-active="{{ timerSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ timerSwitch.onColor }}"\n switch-off-color="{{ timerSwitch.offColor }}"\n switch-animate="{{ timerSwitch.animate }}"\n switch-size="{{ timerSwitch.size }}"\n switch-label="{{ timerSwitch.label }}"\n switch-icon="{{ timerSwitch.icon }}"\n switch-radio-off="{{ timerSwitch.radioOff }}"\n switch-label-width="{{ timerSwitch.labelWidth }}"\n switch-handle-width="{{ timerSwitch.handleWidth }}"><b>|</b>\n </a>\n </li>\n </ul>\n </div>\n </nav>\n </div>\n\n <div ui-view></div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/sms/realtime/view/view.queue.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initAgents()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div id="grid1" ui-grid="gridOptions" ui-grid-resize-columns ui-grid-tree-view class="grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/chanspy/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_CHANSPY\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START PREFIX -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.prefix.$touched || form.$submitted) && form.prefix.$invalid}">\n <label class="control-label">{{\'APPLICATION_PREFIX\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="prefix" placeholder="{{\'APPLICATION_PREFIX\' | translate}}" class="form-control" data-ng-model="item.prefix" required/>\n <span data-ng-show="(form.prefix.$touched || form.$submitted) && form.prefix.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PREFIX -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.options.$touched || form.$submitted) && form.options.$invalid}">\n <label class="control-label">{{\'APPLICATION_OPTIONS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select multiple data-ng-model="item.options" name="options" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$item.value}}: {{$item.name | translate}}</ui-select-match>\n <ui-select-choices repeat="option.value as option in options | filter: $select.search">\n <div ng-bind-html="option.value + \': \' + (option.name | translate) | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.options.$touched || form.$submitted) && form.options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START AUTH -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_AUTH\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.auth"\n type="checkbox"\n name="auth"\n data-ng-init="item.auth = 0"\n switch-active="{{ authSwitch.isActive }}"\n switch-on-text="{{ authSwitch.onText }}"\n switch-off-text="{{ authSwitch.offText }}"\n switch-on-color="{{ authSwitch.onColor }}"\n switch-off-color="{{ authSwitch.offColor }}"\n switch-animate="{{ authSwitch.animate }}"\n switch-size="{{ authSwitch.size }}"\n switch-label="{{ authSwitch.label }}"\n switch-icon="{{ authSwitch.icon }}"\n switch-radio-off="{{ authSwitch.radioOff }}"\n switch-label-width="{{ authSwitch.labelWidth }}"\n switch-handle-width="{{ authSwitch.handleWidth }}">\n </div>\n <!-- END AUTH -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.password.$touched || form.$submitted) && form.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span data-ng-show="item.auth" class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.password" data-ng-disabled="!item.auth" data-ng-required="item.auth"/>\n <span data-ng-show="(form.password.$touched || form.$submitted) && form.password.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START RECORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.record.$touched || form.$submitted) && form.record.$invalid}">\n <label class="control-label">{{\'APPLICATION_RECORDING\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.record"\n type="checkbox"\n switch-active="{{ recordSwitch.isActive }}"\n switch-on-text="{{ recordSwitch.onText }}"\n switch-off-text="{{ recordSwitch.offText }}"\n switch-on-color="{{ recordSwitch.onColor }}"\n switch-off-color="{{ recordSwitch.offColor }}"\n switch-animate="{{ recordSwitch.animate }}"\n switch-size="{{ recordSwitch.size }}"\n switch-label="{{ recordSwitch.label }}"\n switch-icon="{{ recordSwitch.icon }}"\n switch-radio-off="{{ recordSwitch.radioOff }}"\n switch-label-width="{{ recordSwitch.labelWidth }}"\n switch-handle-width="{{ recordSwitch.handleWidth }}">\n </div>\n <!-- END RECORD -->\n\n <!-- START RECORDINGFORMAT -->\n <div data-ng-if="item.record" class="form-group" data-ng-class="{\'has-error\': (form.recordingFormat.$touched || form.$submitted) && form.recordingFormat.$invalid}">\n <label class="control-label">{{\'APPLICATION_FORMAT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.recordingFormat" name="recordingFormat" theme="bootstrap" data-ng-required="item.record">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="format in [\'wav\',\'gsm\'] | filter: $select.search">\n <div ng-bind-html="format | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.recordingFormat.$touched || form.$submitted) && form.recordingFormat.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END RECORDINGFORMAT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/voice/chanspy/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-user-secret"></i>\n <a href="/channels/voice/chanspys/list">{{ \'APPLICATION_CHANSPY\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="fa fa-user-secret font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_CHANSPY\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <button class="btn green-jungle " ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_CHANSPY\' | translate }}\n </button>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), -a.put("app/channels/voice/chanspy/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getChanSpy()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-user-secret"></i>\n <a href="/channels/voice/chanspy/list">{{ \'APPLICATION_CHANSPY\' | translate }}</a>\n <i data-ng-show="chanspy" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="chanspy">\n <a href="#">{{chanspy.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/chanspy.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{chanspy.name}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.voice.chanspy.view.settings\')}">\n <a data-ng-href="/channels/voice/chanspy/view/{{chanspy.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/chanspy/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_CHANSPY\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateChanSpy()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="chanspy.name" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START PREFIX -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.general.prefix.$touched || form.general.$submitted) && form.general.prefix.$invalid}">\n <label class="control-label">{{\'APPLICATION_PREFIX\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="prefix" placeholder="{{\'APPLICATION_PREFIX\' | translate}}" class="form-control" data-ng-model="chanspy.prefix" required/>\n <span data-ng-show="(form.general.prefix.$touched || form.general.$submitted) && form.general.prefix.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PREFIX -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.general.options.$touched || form.general.$submitted) && form.general.options.$invalid}">\n <label class="control-label">{{\'APPLICATION_OPTIONS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select multiple data-ng-model="chanspy.options" name="options" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$item.value}}: {{$item.name | translate}}</ui-select-match>\n <ui-select-choices repeat="option.value as option in options | filter: $select.search">\n <div ng-bind-html="option.value + \': \' + (option.name | translate) | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.general.options.$touched || form.general.$submitted) && form.general.options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START AUTH -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_AUTH\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="chanspy.auth"\n type="checkbox"\n name="auth"\n switch-active="{{ authSwitch.isActive }}"\n switch-on-text="{{ authSwitch.onText }}"\n switch-off-text="{{ authSwitch.offText }}"\n switch-on-color="{{ authSwitch.onColor }}"\n switch-off-color="{{ authSwitch.offColor }}"\n switch-animate="{{ authSwitch.animate }}"\n switch-size="{{ authSwitch.size }}"\n switch-label="{{ authSwitch.label }}"\n switch-icon="{{ authSwitch.icon }}"\n switch-radio-off="{{ authSwitch.radioOff }}"\n switch-label-width="{{ authSwitch.labelWidth }}"\n switch-handle-width="{{ authSwitch.handleWidth }}">\n </div>\n <!-- END AUTH -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.general.password.$touched || form.general.$submitted) && form.general.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span class="required" data-ng-show="chanspy.auth" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="chanspy.password" data-ng-disabled="!chanspy.auth" data-ng-required="chanspy.auth"/>\n <span data-ng-show="(form.general.password.$touched || form.general.$submitted) && form.general.password.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START RECORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.record.$touched || forms.general.$submitted) && forms.general.record.$invalid}">\n <label class="control-label">{{\'APPLICATION_RECORDING\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="chanspy.record"\n type="checkbox"\n switch-active="{{ recordSwitch.isActive }}"\n switch-on-text="{{ recordSwitch.onText }}"\n switch-off-text="{{ recordSwitch.offText }}"\n switch-on-color="{{ recordSwitch.onColor }}"\n switch-off-color="{{ recordSwitch.offColor }}"\n switch-animate="{{ recordSwitch.animate }}"\n switch-size="{{ recordSwitch.size }}"\n switch-label="{{ recordSwitch.label }}"\n switch-icon="{{ recordSwitch.icon }}"\n switch-radio-off="{{ recordSwitch.radioOff }}"\n switch-label-width="{{ recordSwitch.labelWidth }}"\n switch-handle-width="{{ recordSwitch.handleWidth }}">\n </div>\n <!-- END RECORD -->\n\n <!-- START RECORDINGFORMAT -->\n <div data-ng-if="chanspy.record" class="form-group" data-ng-class="{\'has-error\': (forms.general.recordingFormat.$touched || forms.general.$submitted) && forms.general.recordingFormat.$invalid}">\n <label class="control-label">{{\'APPLICATION_FORMAT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="chanspy.recordingFormat" name="recordingFormat" theme="bootstrap" data-ng-required="chanspy.record">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="format in [\'wav\',\'gsm\'] | filter: $select.search">\n <div ng-bind-html="format | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.recordingFormat.$touched || forms.general.$submitted) && forms.general.recordingFormat.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END RECORDINGFORMAT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="chanspy.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/voice/context/list/create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_CONTEXT\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()" data-ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/voice/context/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="#">{{ \'APPLICATION_CONTEXTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_CONTEXTS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <a class="btn green-jungle" href="#" data-ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_CONTEXT\' | translate }}\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/context/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getContext()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="/channels/voice/contexts/list">{{ \'APPLICATION_CONTEXTS\' | translate }}</a>\n <i data-ng-show="context" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="context">\n <a href="#">{{context.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET main.channels -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/context.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{context.name}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.voice.contexts.view.settings\')}">\n <a data-ng-href="/channels/voice/contexts/view/{{context.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET main.channels -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n </div>\n <!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/context/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_CONTEXT\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateVoiceContext()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="context.name" required readonly/>\n <span class="help-block">\n {{ \'DESCRIPTION_CANT_EDIT_NAME\' | translate }}\n </span>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="context.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/voice/disposition/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-target"></i>\n <a href="/channels/voice/dispositions/list">{{ \'APPLICATION_DISPOSITIONS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_DISPOSITIONS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <a href="#" class="btn btn-icon-only green" data-ng-click="addDisposition();">\n <i class="fa fa-plus"></i>\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <div class="row" data-ng-hide="dispositions.length">\n <div class="col-md-12">\n <div class="note note-info">\n <h4 class="block">Info! {{\'MESSAGE_NO_DISPOSITIONS_AVAILABLE\' | translate}}</h4>\n </div>\n </div>\n </div>\n\n <!-- GENERAL TAB -->\n <div class="row" data-ng-repeat="disposition in dispositions">\n <div class="col-md-12 form-group">\n <div class="input-group">\n <div>\n <input class="form-control" type="text" placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}" data-ng-model="disposition.name">\n </div>\n <span class="input-group-btn">\n <button class="btn btn-success" type="button" data-ng-click="updateDisposition(disposition.id, disposition.name);"><i class="fa fa-cloud-upload fa-fw"></i> {{\'APPLICATION_UPDATE\' | translate}}</button>\n <button class="btn btn-danger" type="button" data-ng-click="deleteDisposition(disposition.id);"><i class="fa fa-times fa-fw"></i> {{\'APPLICATION_DELETE\' | translate}}</button>\n </span>\n </div>\n </div>\n </div>\n <!-- END GENERAL TAB -->\n </div>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/disposition/list/modal/add.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_DISPOSITIONS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.form.$touched || form.$submitted) && form.form.$invalid}">\n <div class="">\n <input type="text" name="form" placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}" class="form-control" data-ng-model="name" required/>\n <span data-ng-show="form.form.$touched && form.form.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <!-- END NAME -->\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" data-ng-click="ok()" data-ng-show="form.$valid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/voice/moh/list/create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_MOH_CLASS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START MODE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.mode.$touched || forms.$submitted) && forms.mode.$invalid}">\n <label class="control-label">{{\'APPLICATION_MODE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.mode" theme="bootstrap" name="mode" data-ng-init="item.mode = \'files\'" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="mode in [\'files\',\'custom\'] | filter: $select.search">\n {{mode}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.mode.$touched || forms.$submitted) && forms.mode.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MODE -->\n\n <!-- START DIRECTORY -->\n <div data-ng-if="item.mode === \'custom\'" class="form-group" data-ng-class="{\'has-error\': (form.directory.$touched || form.$submitted) && form.directory.$invalid}">\n <label class="control-label">{{\'APPLICATION_DIRECTORY\' | translate}}</label>\n <input type="text" name="directory" placeholder="{{\'APPLICATION_DIRECTORY\' | translate}}" class="form-control" data-ng-model="item.directory"/>\n </div>\n <!-- END DIRECTORY -->\n\n <!-- START APPLICATION -->\n <div data-ng-if="item.mode === \'custom\'" class="form-group" data-ng-class="{\'has-error\': (form.application.$touched || form.$submitted) && form.application.$invalid}">\n <label class="control-label">{{\'APPLICATION_APPLICATION\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="application" placeholder="{{\'APPLICATION_APPLICATION\' | translate}}" class="form-control" data-ng-model="item.application"/>\n <span data-ng-show="(form.application.$touched || form.$submitted) && form.application.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APPLICATION -->\n\n <!-- START FORMAT -->\n <div data-ng-if="item.mode === \'custom\'" class="form-group" data-ng-class="{\'has-error\': (form.format.$touched || form.$submitted) && form.format.$invalid}">\n <label class="control-label">{{\'APPLICATION_FORMAT\' | translate}}</label>\n <input type="text" name="format" placeholder="{{\'APPLICATION_FORMAT\' | translate}}" class="form-control" data-ng-model="item.format"/>\n </div>\n <!-- END FORMAT -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/voice/moh/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-music-tone"></i>\n <a href="#">{{ \'APPLICATION_MOHS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-music-tone font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_MOHS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="#" data-ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_MOH_CLASS\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/moh/view/view.addFiles.html",'\n<div class="row" data-ng-init="getSounds()">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_MOH\' | translate }} {{ \'APPLICATION_ADD_FILES\' | translate }}</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <div class="note note-warning" data-ng-hide="soundList.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_SOUNDS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/sounds/list">{{\'APPLICATION_SOUNDS\' | translate}}</a>\n </p>\n </div>\n <form name="forms.general" data-ng-submit="(item.sounds.length > 0) && addMohs()" data-ng-show="soundList.length" novalidate>\n\n <!-- START SOUNDS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.sounds.$touched || forms.general.$submitted) && item.sounds.length == 0}">\n <label class="control-label">{{\'APPLICATION_SOUNDS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select multiple data-ng-model="item.sounds" theme="bootstrap" name="sounds" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$item.display_name}}</ui-select-match>\n <ui-select-choices repeat="sound.id as sound in soundList | filter: $select.search">\n {{sound.display_name}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.sounds.$touched || forms.general.$submitted) && item.sounds.length == 0" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <input type="submit" class="btn green-haze" value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </form>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/moh/view/view.audios.html",'<div ui-view class="profile-content">\n<div class="row" data-ng-init="getAudioFiles()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_AUDIOS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="audioFiles">\n <a class="btn green-jungle " href="/channels/voice/mohs/view/{{moh.id}}/add" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_ADD_FILES\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <div class="note note-warning" data-ng-hide="audioFiles">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_FOLDER_DOES_NOT_EXIST\' | translate }}\n </p>\n </div>\n <!-- START TABLE -->\n <table class="table table-striped table-bordered table-hover" data-ng-show="audioFiles">\n <thead>\n <tr>\n <th>{{ \'APPLICATION_NAME\' | translate }}</th>\n <th width="30%">{{ \'APPLICATION_PREVIEW\' | translate }}</th>\n <th width="10%">{{ \'APPLICATION_ACTIONS\' | translate }}</th>\n </tr>\n </thead>\n <tbody data-ng-model="audioFiles">\n <tr data-ng-repeat="audiofile in audioFiles">\n <td>{{audiofile}}</td>\n <td>\n <audio controls ng-src="{{getSecureSrc(audioSources[audiofile])}}" preload="none">\n Your browser does not support the audio tag.\n </audio></td>\n <td>\n <a class="btn default btn-xs red-stripe" data-ng-click="deleteItem(audiofile,audiofile)">\n {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </td>\n </tr>\n <tr data-ng-hide="audioFiles.length">\n <td colspan="3" style="text-align:center;">\n <i>{{ \'MESSAGE_NO_AUDIOFILES_AVAILABLE\' | translate }}</i>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n</div>\n'), -a.put("app/channels/voice/moh/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getMoh()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-music-tone"></i>\n <a href="/channels/voice/mohs/list">{{ \'APPLICATION_MOH_CLASS\' | translate }}</a>\n <i data-ng-show="moh" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="moh">\n <a href="#">{{moh.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET main.channels -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/moh.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{moh.name}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.voice.mohs.view.settings\')}">\n <a data-ng-href="/channels/voice/mohs/view/{{moh.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li data-ng-if="moh.mode === \'files\'" data-ng-class="{active: $state.is(\'main.channels.voice.mohs.view.audios\') || $state.is(\'main.channels.voice.mohs.view.add\')}">\n <a data-ng-href="/channels/voice/mohs/view/{{moh.id}}/audios">\n <i class="icon-list"></i>\n {{ \'APPLICATION_AUDIOS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET main.channels -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/moh/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_MOH_CLASS\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body" data-ng-init="getContexts();">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateVoiceMoh()" novalidate>\n\n <!-- START MODE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_MODE\' | translate}}</label>\n <input type="text" name="path" class="form-control" data-ng-model="moh.mode" disabled/>\n </div>\n <!-- END MODE -->\n\n <!-- START PATH -->\n <div class="form-group" data-ng-if="moh.mode === \'files\'">\n <label class="control-label">{{\'APPLICATION_PATH\' | translate}}</label>\n <input type="text" name="path" class="form-control" data-ng-model="moh.directory" disabled/>\n </div>\n <!-- END PATH -->\n\n <!-- START SORT -->\n <div data-ng-if="moh.mode === \'files\'" class="form-group" data-ng-class="{\'has-error\': (forms.general.sort.$touched || forms.general.$submitted) && forms.general.sort.$invalid}">\n <label class="control-label">{{\'APPLICATION_SORT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="moh.sort" theme="bootstrap" name="sort" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$translate.instant($select.selected.name)}}</ui-select-match>\n <ui-select-choices repeat="sort.value as sort in sortOptions | filter: $select.search">\n {{$translate.instant(sort.name)}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.sort.$touched || forms.general.$submitted) && forms.general.sort.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SORT -->\n\n <!-- START DIRECTORY -->\n <div data-ng-if="moh.mode === \'custom\'" class="form-group" data-ng-class="{\'has-error\': (forms.general.directory.$touched || forms.general.$submitted) && forms.general.directory.$invalid}">\n <label class="control-label">{{\'APPLICATION_DIRECTORY\' | translate}}</label>\n <input type="text" name="directory" placeholder="{{\'APPLICATION_DIRECTORY\' | translate}}" class="form-control" data-ng-model="moh.directory"/>\n </div>\n <!-- END DIRECTORY -->\n\n <!-- START APPLICATION -->\n <div data-ng-if="moh.mode === \'custom\'" class="form-group" data-ng-class="{\'has-error\': (forms.general.application.$touched || forms.general.$submitted) && forms.general.application.$invalid}">\n <label class="control-label">{{\'APPLICATION_APPLICATION\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="application" placeholder="{{\'APPLICATION_APPLICATION\' | translate}}" class="form-control" data-ng-model="moh.application" required/>\n <span data-ng-show="(forms.general.application.$touched || forms.general.$submitted) && forms.general.application.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APPLICATION -->\n\n <!-- START FORMAT -->\n <div data-ng-if="moh.mode === \'custom\'" class="form-group" data-ng-class="{\'has-error\': (forms.general.format.$touched || forms.general.$submitted) && forms.general.format.$invalid}">\n <label class="control-label">{{\'APPLICATION_FORMAT\' | translate}}</label>\n <input type="text" name="format" placeholder="{{\'APPLICATION_FORMAT\' | translate}}" class="form-control" data-ng-model="moh.format"/>\n </div>\n <!-- END FORMAT -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/voice/queue/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_QUEUE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" data-ng-pattern="settings.patternName" required />\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START STRATEGY -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.strategy.$touched || form.$submitted) && form.strategy.$invalid}">\n <label class="control-label">{{\'APPLICATION_STRATEGY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.strategy" name="strategy" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.toUpperCase()}}</ui-select-match>\n <ui-select-choices repeat="strategy in [\'ringall\', \'leastrecent\', \'fewestcalls\', \'random\', \'rrmemory\', \'linear\', \'wrandom\', \'rrordered\'] | filter: $select.search">\n <div ng-bind-html="strategy.toUpperCase() | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_STRATEGY\' | translate }}\n </span>\n <span data-ng-show="(form.strategy.$touched || form.$submitted) && form.strategy.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END STRATEGY -->\n\n <!-- START AGENTS-->\n <div class="form-body" data-ng-init="getTeams()">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="item.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="item.penalty=item.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!item.penalty" data-ng-click="item.penalty=item.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-team">\n </div>\n </div>\n </div>\n <!-- END AGENTS-->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/voice/queue/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="#">{{ \'APPLICATION_QUEUES\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_QUEUES\' | translate }}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <a class="btn green-jungle" href="#" data-ng-click="createItem()" data-ng-if="Auth.isAdmin()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_QUEUE\' | translate }}\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/queue/view/view.agents.html",'<div class="row" data-ng-init="getTeams()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_AGENTS\' | translate}}</span>\n </div>\n </div>\n <div class="note note-warning" data-ng-hide="teams.length">\n <h4 class="block">Warning!</h4><p>{{ \'MESSAGE_NO_AVAILABLE_TEAMS\' | translate }}</p>\n </div>\n <div class="portlet-body">\n <!-- BEGIN FORM-->\n <form action="index.html" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="queue.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="queue.penalty=queue.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!queue.penalty" data-ng-click="queue.penalty=queue.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-team">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/voice/queue/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getQueue()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="/channels/voice/queues/list">{{ \'APPLICATION_QUEUES\' | translate }}</a>\n <i data-ng-show="queue" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="queue">\n <a href="#">{{queue.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET main.channels -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/queue.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{queue.name}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.voice.queues.view.settings\')}">\n <a data-ng-href="/channels/voice/queues/view/{{queue.name}}/settings"> <i class="icon-settings"></i> {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.channels.voice.queues.view.agents\')}" data-ng-show="Auth.getCurrentUser().role === \'admin\'">\n <a data-ng-href="/channels/voice/queues/view/{{queue.name}}/agents"><i class="icon-people"></i>{{ \'APPLICATION_AGENTS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET main.channels -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/queue/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_QUEUE_SETTINGS\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{ \'APPLICATION_PERIODIC_ANNOUNCE\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{ \'APPLICATION_ADVANCED\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body" data-ng-init="getMohs();getSounds();">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && forms.announce.$valid && updateVoiceQueue()" novalidate>\n <div class="row">\n <div class="col-md-6">\n <!-- START STRATEGY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.strategy.$touched || forms.general.$submitted) && forms.general.strategy.$invalid}">\n <label class="control-label">{{\'APPLICATION_STRATEGY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="queue.strategy" name="strategy" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.toUpperCase()}}</ui-select-match>\n <ui-select-choices repeat="strategy in [\'ringall\', \'leastrecent\', \'fewestcalls\', \'random\', \'rrmemory\', \'linear\', \'wrandom\', \'rrordered\'] | filter: $select.search">\n <div ng-bind-html="strategy.toUpperCase() | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_STRATEGY\' | translate }}\n </span>\n <span data-ng-show="(forms.general.strategy.$touched || forms.general.$submitted) && forms.general.strategy.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END STRATEGY -->\n\n <!-- START MOH -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.musiconhold.$touched || forms.general.$submitted) && forms.general.musiconhold.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOH\' | translate}}</label>\n <ui-select data-ng-model="queue.musiconhold" name="musiconhold" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="musiconhold.name as musiconhold in voiceMohs | filter: $select.search">\n <div ng-bind-html="musiconhold.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_VOICE_MOH\' | translate }}\n </span>\n <span data-ng-show="(forms.general.musiconhold.$touched || forms.general.$submitted) && forms.general.musiconhold.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MOH -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.timeout.$touched || forms.general.$submitted) && forms.general.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="0" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="queue.timeout" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_TIMEOUT\' | translate }}\n </span>\n <span data-ng-show="(forms.general.timeout.$touched || forms.general.$submitted) && forms.general.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START MAXLEN -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.maxlen.$touched || forms.general.$submitted) && forms.general.maxlen.$invalid}">\n <label class="control-label">{{\'APPLICATION_MAXLEN\' | translate}}</label>\n <input type="number" min="0" name="maxlen" placeholder="{{\'APPLICATION_MAXLEN\' | translate}}" class="form-control" data-ng-model="queue.maxlen" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_MAXLEN\' | translate }}\n </span>\n <span data-ng-show="(forms.general.maxlen.$touched || forms.general.$submitted) && forms.general.maxlen.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MAXLEN -->\n\n <!-- START RETRY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.retry.$touched || forms.general.$submitted) && forms.general.retry.$invalid}">\n <label class="control-label">{{\'APPLICATION_RETRY\' | translate}}</label>\n <input type="number" min="0" name="retry" placeholder="{{\'APPLICATION_RETRY\' | translate}}" class="form-control" data-ng-model="queue.retry" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_RETRY\' | translate }}\n </span>\n <span data-ng-show="(forms.general.retry.$touched || forms.general.$submitted) && forms.general.retry.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END RETRY -->\n\n </div>\n <div class="col-md-6">\n <!-- START WRAPUPTIME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.wrapuptime.$touched || forms.general.$submitted) && forms.general.wrapuptime.$invalid}">\n <label class="control-label">{{\'APPLICATION_WRAPUPTIME\' | translate}}</label>\n <input type="number" min="0" name="wrapuptime" placeholder="{{\'APPLICATION_WRAPUPTIME\' | translate}}" class="form-control" data-ng-model="queue.wrapuptime" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_WRAPUPTIME\' | translate }}\n </span>\n <span data-ng-show="(forms.general.wrapuptime.$touched || forms.general.$submitted) && forms.general.wrapuptime.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END WRAPUPTIME -->\n\n <!-- START WEIGHT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.weight.$touched || forms.general.$submitted) && forms.general.weight.$invalid}">\n <label class="control-label">{{\'APPLICATION_WEIGHT\' | translate}}</label>\n <input type="number" min="0" name="weight" placeholder="{{\'APPLICATION_WEIGHT\' | translate}}" class="form-control" data-ng-model="queue.weight" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_WEIGHT\' | translate }}\n </span>\n <span data-ng-show="(forms.general.weight.$touched || forms.general.$submitted) && forms.general.weight.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END WEIGHT -->\n\n <!-- START JOINEMPTY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.joinempty.$touched || forms.general.$submitted) && forms.general.joinempty.$invalid}">\n <label class="control-label">{{\'APPLICATION_JOINEMPTY\' | translate}}</label>\n <ui-select multiple data-ng-model="queue.joinempty" name="joinempty" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\',\'no\',\'strict\',\'loose\',\'paused\',\'penalty\',\'inuse\',\'ringing\',\'unavailable\',\'invalid\',\'unknown\',\'wrapup\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_JOINEMPTY\' | translate }}\n </span>\n <span data-ng-show="(forms.general.joinempty.$touched || forms.general.$submitted) && forms.general.joinempty.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END JOINEMPTY -->\n\n <!-- START LEAVEWHENEMPTY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.leavewhenempty.$touched || forms.general.$submitted) && forms.general.leavewhenempty.$invalid}">\n <label class="control-label">{{\'APPLICATION_LEAVEWHENEMPTY\' | translate}}</label>\n <ui-select multiple data-ng-model="queue.leavewhenempty" name="leavewhenempty" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\',\'no\',\'strict\',\'loose\',\'paused\',\'penalty\',\'inuse\',\'ringing\',\'unavailable\',\'invalid\',\'unknown\',\'wrapup\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_LEAVEWHENEMPTY\' | translate }}\n </span>\n <span data-ng-show="(forms.general.leavewhenempty.$touched || forms.general.$submitted) && forms.general.leavewhenempty.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END LEAVEWHENEMPTY -->\n\n <!-- START ANNOUNCE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.announce.$touched || forms.general.$submitted) && forms.general.announce.$invalid}">\n <label class="control-label">{{\'APPLICATION_ANNOUNCE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="queue.announce" name="announce" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.display_name}}</ui-select-match>\n <ui-select-choices repeat="announce.path as announce in sounds | filter: $select.search">\n <div ng-bind-html="announce.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_ANNOUNCE\' | translate }}\n </span>\n <span data-ng-show="(forms.general.announce.$touched || forms.general.$submitted) && forms.general.announce.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ANNOUNCE -->\n </div>\n </div>\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="queue.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.announce" data-ng-submit="forms.announce.$valid && forms.general.$valid && updateVoiceQueue()" novalidate>\n <div class="row">\n <div class="col-md-12">\n <!-- START PERIODIC_ANNOUNCE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.periodic_announce.$touched || forms.announce.$submitted) && forms.announce.periodic_announce.$invalid}">\n <label class="control-label">{{\'APPLICATION_PERIODIC_ANNOUNCE\' | translate}}</label>\n <ui-select multiple data-ng-model="queue.periodic_announce" name="periodic_announce" theme="bootstrap" data-ng-disabled="!periodicAnnounces.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$item.display_name}}</ui-select-match>\n <ui-select-choices repeat="announce.path as announce in periodicAnnounces | filter: $select.search track by $index">\n <div ng-bind-html="announce.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="periodicAnnounces.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_SOUNDS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/sounds/list">{{\'APPLICATION_SOUNDS\' | translate}}</a>\n </p>\n </div>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_PERIODIC_ANNOUNCE\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.periodic_announce.$touched || forms.announce.$submitted) && forms.announce.periodic_announce.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PERIODIC_ANNOUNCE -->\n </div>\n </div>\n <div class="row">\n <div class="col-md-6">\n <p><h3>{{\'APPLICATION_SETTINGS\' | translate}}</h3></p>\n <!-- START ANNOUNCE_FREQUENCY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.announce_frequency.$touched || forms.announce.$submitted) && forms.announce.announce_frequency.$invalid}">\n <label class="control-label">{{\'APPLICATION_ANNOUNCE_FREQUENCY\' | translate}}</label>\n <input type="number" min="0" name="announce_frequency" placeholder="{{\'APPLICATION_ANNOUNCE_FREQUENCY\' | translate}}" class="form-control" data-ng-model="queue.announce_frequency" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_ANNOUNCE_FREQUENCY\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.announce_frequency.$touched || forms.announce.$submitted) && forms.announce.announce_frequency.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ANNOUNCE_FREQUENCY -->\n\n <!-- START MIN_ANNOUNCE_FREQUENCY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.min_announce_frequency.$touched || forms.announce.$submitted) && forms.announce.min_announce_frequency.$invalid}">\n <label class="control-label">{{\'APPLICATION_MIN_ANNOUNCE_FREQUENCY\' | translate}}</label>\n <input type="number" min="0" name="min_announce_frequency" placeholder="{{\'APPLICATION_MIN_ANNOUNCE_FREQUENCY\' | translate}}" class="form-control" data-ng-model="queue.min_announce_frequency" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_MIN_ANNOUNCE_FREQUENCY\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.min_announce_frequency.$touched || forms.announce.$submitted) && forms.announce.min_announce_frequency.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MIN_ANNOUNCE_FREQUENCY -->\n\n <!-- START PERIODIC_ANNOUNCE_FREQUENCY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.periodic_announce_frequency.$touched || forms.announce.$submitted) && forms.announce.periodic_announce_frequency.$invalid}">\n <label class="control-label">{{\'APPLICATION_PERIODIC_ANNOUNCE_FREQUENCY\' | translate}}</label>\n <input type="number" min="0" name="periodic_announce_frequency" placeholder="{{\'APPLICATION_PERIODIC_ANNOUNCE_FREQUENCY\' | translate}}" class="form-control" data-ng-model="queue.periodic_announce_frequency"/>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_PERIODIC_ANNOUNCE_FREQUENCY\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.periodic_announce_frequency.$touched || forms.announce.$submitted) && forms.announce.periodic_announce_frequency.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PERIODIC_ANNOUNCE_FREQUENCY -->\n\n <!-- START RANDOM_PERIODIC_ANNOUNCE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.random_periodic_announce.$touched || forms.announce.$submitted) && forms.announce.random_periodic_announce.$invalid}">\n <label class="control-label">{{\'APPLICATION_RANDOM_PERIODIC_ANNOUNCE\' | translate}}</label>\n <ui-select data-ng-model="queue.random_periodic_announce" name="random_periodic_announce" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\',\'no\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_RANDOM_PERIODIC_ANNOUNCE\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.random_periodic_announce.$touched || forms.announce.$submitted) && forms.announce.random_periodic_announce.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END RANDOM_PERIODIC_ANNOUNCE -->\n\n <!-- START ANNOUNCE_HOLDTIME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.announce_holdtime.$touched || forms.announce.$submitted) && forms.announce.announce_holdtime.$invalid}">\n <label class="control-label">{{\'APPLICATION_ANNOUNCE_HOLDTIME\' | translate}}</label>\n <ui-select data-ng-model="queue.announce_holdtime" name="announce_holdtime" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\',\'no\',\'once\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_ANNOUNCE_HOLDTIME\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.announce_holdtime.$touched || forms.announce.$submitted) && forms.announce.announce_holdtime.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ANNOUNCE_HOLDTIME -->\n\n <!-- START ANNOUNCE_POSITION -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.announce_position.$touched || forms.announce.$submitted) && forms.announce.announce_position.$invalid}">\n <label class="control-label">{{\'APPLICATION_ANNOUNCE_POSITION\' | translate}}</label>\n <ui-select data-ng-model="queue.announce_position" name="announce_position" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\',\'no\',\'limit\',\'more\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_ANNOUNCE_POSITION\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.announce_position.$touched || forms.announce.$submitted) && forms.announce.announce_position.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ANNOUNCE_POSITION -->\n\n <!-- START ANNOUNCE_POSITION_LIMIT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.announce_position_limit.$touched || forms.announce.$submitted) && forms.announce.announce_position_limit.$invalid}">\n <label class="control-label">{{\'APPLICATION_ANNOUNCE_POSITION_LIMIT\' | translate}}</label>\n <input type="number" min="0" name="announce_position_limit" placeholder="{{\'APPLICATION_ANNOUNCE_POSITION_LIMIT\' | translate}}" class="form-control" data-ng-model="queue.announce_position_limit"/>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_ANNOUNCE_POSITION_LIMIT\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.announce_position_limit.$touched || forms.announce.$submitted) && forms.announce.announce_position_limit.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ANNOUNCE_POSITION_LIMIT -->\n\n <!-- START REPORTHOLDTIME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.reportholdtime.$touched || forms.announce.$submitted) && forms.announce.reportholdtime.$invalid}">\n <label class="control-label">{{\'APPLICATION_REPORTHOLDTIME\' | translate}}</label>\n <ui-select data-ng-model="queue.reportholdtime" name="reportholdtime" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\',\'no\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_REPORTHOLDTIME\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.reportholdtime.$touched || forms.announce.$submitted) && forms.announce.reportholdtime.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END REPORTHOLDTIME -->\n\n </div>\n <div class="col-md-6">\n <p><h3>{{\'APPLICATION_SOUNDS\' | translate}}</h3></p>\n <!-- START QUEUE_REPORTHOLD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.queue_reporthold.$touched || forms.announce.$submitted) && forms.announce.queue_reporthold.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE_REPORTHOLD\' | translate}}</label>\n <ui-select data-ng-model="queue.queue_reporthold" name="queue_reporthold" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.display_name}}</ui-select-match>\n <ui-select-choices repeat="announce.path as announce in queueAnnounces | filter: $select.search">\n <div ng-bind-html="announce.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_REPORTHOLD\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.queue_reporthold.$touched || forms.announce.$submitted) && forms.announce.queue_reporthold.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE_REPORTHOLD -->\n\n <!-- START QUEUE_YOUARENEXT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.queue_youarenext.$touched || forms.announce.$submitted) && forms.announce.queue_youarenext.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE_YOUARENEXT\' | translate}}</label>\n <ui-select data-ng-model="queue.queue_youarenext" name="queue_youarenext" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.display_name}}</ui-select-match>\n <ui-select-choices repeat="announce.path as announce in queueAnnounces | filter: $select.search">\n <div ng-bind-html="announce.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_YOUARENEXT\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.queue_youarenext.$touched || forms.announce.$submitted) && forms.announce.queue_youarenext.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE_YOUARENEXT -->\n\n <!-- START QUEUE_THEREARE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.queue_thereare.$touched || forms.announce.$submitted) && forms.announce.queue_thereare.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE_THEREARE\' | translate}}</label>\n <ui-select data-ng-model="queue.queue_thereare" name="queue_thereare" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.display_name}}</ui-select-match>\n <ui-select-choices repeat="announce.path as announce in queueAnnounces | filter: $select.search">\n <div ng-bind-html="announce.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_THEREARE\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.queue_thereare.$touched || forms.announce.$submitted) && forms.announce.queue_thereare.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE_THEREARE -->\n\n <!-- START QUEUE_CALLSWAITING -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.queue_callswaiting.$touched || forms.announce.$submitted) && forms.announce.queue_callswaiting.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE_CALLSWAITING\' | translate}}</label>\n <ui-select data-ng-model="queue.queue_callswaiting" name="queue_callswaiting" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.display_name}}</ui-select-match>\n <ui-select-choices repeat="announce.path as announce in queueAnnounces | filter: $select.search">\n <div ng-bind-html="announce.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_CALLSWAITING\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.queue_callswaiting.$touched || forms.announce.$submitted) && forms.announce.queue_callswaiting.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE_CALLSWAITING -->\n\n <!-- START QUEUE_HOLDTIME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.queue_holdtime.$touched || forms.announce.$submitted) && forms.announce.queue_holdtime.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE_HOLDTIME\' | translate}}</label>\n <ui-select data-ng-model="queue.queue_holdtime" name="queue_holdtime" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.display_name}}</ui-select-match>\n <ui-select-choices repeat="announce.path as announce in queueAnnounces | filter: $select.search">\n <div ng-bind-html="announce.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_HOLDTIME\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.queue_holdtime.$touched || forms.announce.$submitted) && forms.announce.queue_holdtime.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE_HOLDTIME -->\n\n <!-- START QUEUE_MINUTES -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.queue_minutes.$touched || forms.announce.$submitted) && forms.announce.queue_minutes.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE_MINUTES\' | translate}}</label>\n <ui-select data-ng-model="queue.queue_minutes" name="queue_minutes" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.display_name}}</ui-select-match>\n <ui-select-choices repeat="announce.path as announce in queueAnnounces | filter: $select.search">\n <div ng-bind-html="announce.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_MINUTES\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.queue_minutes.$touched || forms.announce.$submitted) && forms.announce.queue_minutes.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE_MINUTES -->\n\n <!-- START QUEUE_MINUTE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.queue_minute.$touched || forms.announce.$submitted) && forms.announce.queue_minute.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE_MINUTE\' | translate}}</label>\n <ui-select data-ng-model="queue.queue_minute" name="queue_minute" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.display_name}}</ui-select-match>\n <ui-select-choices repeat="announce.path as announce in queueAnnounces | filter: $select.search">\n <div ng-bind-html="announce.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_MINUTE\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.queue_minute.$touched || forms.announce.$submitted) && forms.announce.queue_minute.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE_MINUTE -->\n\n <!-- START QUEUE_SECONDS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.queue_seconds.$touched || forms.announce.$submitted) && forms.announce.queue_seconds.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE_SECONDS\' | translate}}</label>\n <ui-select data-ng-model="queue.queue_seconds" name="queue_seconds" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.display_name}}</ui-select-match>\n <ui-select-choices repeat="announce.path as announce in queueAnnounces | filter: $select.search">\n <div ng-bind-html="announce.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_SECONDS\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.queue_seconds.$touched || forms.announce.$submitted) && forms.announce.queue_seconds.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE_SECONDS -->\n\n <!-- START QUEUE_THANKYOU -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.announce.queue_thankyou.$touched || forms.announce.$submitted) && forms.announce.queue_thankyou.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE_THANKYOU\' | translate}}</label>\n <ui-select data-ng-model="queue.queue_thankyou" name="QUEUE_THANKYOU" theme="bootstrap" >\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.display_name}}</ui-select-match>\n <ui-select-choices repeat="announce.path as announce in queueAnnounces | filter: $select.search">\n <div ng-bind-html="announce.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_THANKYOU\' | translate }}\n </span>\n <span data-ng-show="(forms.announce.queue_thankyou.$touched || forms.announce.$submitted) && forms.announce.queue_thankyou.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE_THANKYOU -->\n\n </div>\n </div>\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n <!-- ADVANCED TAB -->\n <div class="tab-pane" id="tab_1_3">\n <form name="forms.advanced" data-ng-submit="forms.announce.$valid && forms.general.$valid && forms.advanced.$valid && updateVoiceQueue()" novalidate>\n\n <div class="row">\n <div class="col-md-6">\n\n <!-- START AUTOPAUSE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.autopause.$touched || forms.advanced.$submitted) && forms.advanced.autopause.$invalid}">\n <label class="control-label">{{\'APPLICATION_AUTOPAUSE\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="queue.autopause"\n type="checkbox"\n switch-active="{{ recordSwitch.isActive }}"\n switch-on-text="{{ recordSwitch.onText }}"\n switch-off-text="{{ recordSwitch.offText }}"\n switch-on-color="{{ recordSwitch.onColor }}"\n switch-off-color="{{ recordSwitch.offColor }}"\n switch-animate="{{ recordSwitch.animate }}"\n switch-size="{{ recordSwitch.size }}"\n switch-label="{{ recordSwitch.label }}"\n switch-icon="{{ recordSwitch.icon }}"\n switch-radio-off="{{ recordSwitch.radioOff }}"\n switch-label-width="{{ recordSwitch.labelWidth }}"\n switch-handle-width="{{ recordSwitch.handleWidth }}"\n ng-true-value="\'all\'"\n ng-false-value="\'no\'">\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_AUTOPAUSE\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.autopause.$touched || forms.advanced.$submitted) && forms.advanced.autopause.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END AUTOPAUSE -->\n\n <!-- START RINGINUSE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.ringinuse.$touched || forms.advanced.$submitted) && forms.advanced.ringinuse.$invalid}">\n <label class="control-label">{{\'APPLICATION_RINGINUSE\' | translate}}</label>\n <ui-select data-ng-model="queue.ringinuse" name="ringinuse" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\',\'no\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_RINGINUSE\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.ringinuse.$touched || forms.advanced.$submitted) && forms.advanced.ringinuse.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END RINGINUSE -->\n\n <!-- START MEMBER_DELAY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.memberdelay.$touched || forms.advanced.$submitted) && forms.advanced.memberdelay.$invalid}">\n <label class="control-label">{{\'APPLICATION_MEMBER_DELAY\' | translate}}</label>\n <input type="number" min="0" name="memberdelay" placeholder="{{\'APPLICATION_MEMBER_DELAY\' | translate}}" class="form-control" data-ng-model="queue.memberdelay" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_MEMBER_DELAY\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.memberdelay.$touched || forms.advanced.$submitted) && forms.advanced.memberdelay.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MEMBER_DELAY -->\n\n <!-- START ACW -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.acw.$touched || forms.advanced.$submitted) && forms.advanced.acw.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACW\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="queue.acw"\n type="checkbox"\n switch-active="{{ recordSwitch.isActive }}"\n switch-on-text="{{ recordSwitch.onText }}"\n switch-off-text="{{ recordSwitch.offText }}"\n switch-on-color="{{ recordSwitch.onColor }}"\n switch-off-color="{{ recordSwitch.offColor }}"\n switch-animate="{{ recordSwitch.animate }}"\n switch-size="{{ recordSwitch.size }}"\n switch-label="{{ recordSwitch.label }}"\n switch-icon="{{ recordSwitch.icon }}"\n switch-radio-off="{{ recordSwitch.radioOff }}"\n switch-label-width="{{ recordSwitch.labelWidth }}"\n switch-handle-width="{{ recordSwitch.handleWidth }}">\n <span class="help-block">\n {{ \'DESCRIPTION_ACW\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.acw.$touched || forms.advanced.$submitted) && forms.advanced.acw.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_ACW\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ACW -->\n\n <!-- START SETINTERFACEVAR -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.setinterfacevar.$touched || forms.advanced.$submitted) && forms.advanced.setinterfacevar.$invalid}">\n <label class="control-label">{{\'APPLICATION_SETINTERFACEVAR\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="queue.setinterfacevar"\n type="checkbox"\n switch-active="{{ recordSwitch.isActive }}"\n switch-on-text="{{ recordSwitch.onText }}"\n switch-off-text="{{ recordSwitch.offText }}"\n switch-on-color="{{ recordSwitch.onColor }}"\n switch-off-color="{{ recordSwitch.offColor }}"\n switch-animate="{{ recordSwitch.animate }}"\n switch-size="{{ recordSwitch.size }}"\n switch-label="{{ recordSwitch.label }}"\n switch-icon="{{ recordSwitch.icon }}"\n switch-radio-off="{{ recordSwitch.radioOff }}"\n switch-label-width="{{ recordSwitch.labelWidth }}"\n switch-handle-width="{{ recordSwitch.handleWidth }}">\n <span class="help-block">\n {{ \'DESCRIPTION_SETINTERFACEVAR\' | translate }} <a href="https://wiki.xcallymotion.com/display/XMD/Queues+-+Voice+Channel" target="_blank">wiki</a>)\n </span>\n <span data-ng-show="(forms.advanced.setinterfacevar.$touched || forms.advanced.$submitted) && forms.advanced.setinterfacevar.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_SETINTERFACEVAR\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SETINTERFACEVAR -->\n\n <!-- START SETQUEUEVAR -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.setqueuevar.$touched || forms.advanced.$submitted) && forms.advanced.setqueuevar.$invalid}">\n <label class="control-label">{{\'APPLICATION_SETQUEUEVAR\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="queue.setqueuevar"\n type="checkbox"\n switch-active="{{ recordSwitch.isActive }}"\n switch-on-text="{{ recordSwitch.onText }}"\n switch-off-text="{{ recordSwitch.offText }}"\n switch-on-color="{{ recordSwitch.onColor }}"\n switch-off-color="{{ recordSwitch.offColor }}"\n switch-animate="{{ recordSwitch.animate }}"\n switch-size="{{ recordSwitch.size }}"\n switch-label="{{ recordSwitch.label }}"\n switch-icon="{{ recordSwitch.icon }}"\n switch-radio-off="{{ recordSwitch.radioOff }}"\n switch-label-width="{{ recordSwitch.labelWidth }}"\n switch-handle-width="{{ recordSwitch.handleWidth }}">\n <span class="help-block">\n {{ \'DESCRIPTION_SETQUEUEVAR\' | translate }} <a href="https://wiki.xcallymotion.com/display/XMD/Queues+-+Voice+Channel" target="_blank">wiki</a>)\n </span>\n <span data-ng-show="(forms.advanced.setqueuevar.$touched || forms.advanced.$submitted) && forms.advanced.setqueuevar.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_SETQUEUEVAR\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SETQUEUEVAR -->\n\n </div>\n <div class="col-md-6">\n\n <!-- START TIMEOUTRESTART -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.timeoutrestart.$touched || forms.advanced.$submitted) && forms.advanced.timeoutrestart.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUTRESTART\' | translate}}</label>\n <ui-select data-ng-model="queue.timeoutrestart" name="timeoutrestart" theme="bootstrap">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\',\'no\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_TIMEOUTRESTART\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.timeoutrestart.$touched || forms.advanced.$submitted) && forms.advanced.timeoutrestart.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUTRESTART -->\n\n <!-- START MONITOR_FORMAT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.monitor_format.$touched || forms.advanced.$submitted) && forms.advanced.monitor_format.$invalid}">\n <label class="control-label">{{\'APPLICATION_MONITOR_FORMAT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="queue.monitor_format" name="monitor_format" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="monFormat.value as monFormat in monitorFormats | filter: $select.search">\n <div ng-bind-html="monFormat.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_MONITOR_FORMAT\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.monitor_format.$touched || forms.advanced.$submitted) && forms.advanced.monitor_format.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MONITOR_FORMAT -->\n\n <!-- START CONTEXT -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_CONTEXT\' | translate}}</label>\n <input type="text" name="context" placeholder="{{\'APPLICATION_CONTEXT\' | translate}}" class="form-control" data-ng-model="queue.context"/>\n <span class="help-block">\n {{ \'DESCRIPTION_QUEUE_VOICE_CONTEXT\' | translate }}\n </span>\n </div>\n <!-- END CONTEXT -->\n\n <!-- START ACW_TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.acwTimeout.$touched || forms.advanced.$submitted) && forms.advanced.acwTimeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_ACW_TIMEOUT\' | translate}}</label>\n <input type="number" min="0" name="acwTimeout" placeholder="{{\'APPLICATION_ACW_TIMEOUT\' | translate}}" class="form-control" data-ng-model="queue.acwTimeout" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_ACW_TIMEOUT\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.acwTimeout.$touched || forms.advanced.$submitted) && forms.advanced.acwTimeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ACW_TIMEOUT -->\n\n <!-- START SETQUEUEENTRYVAR -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.setqueueentryvar.$touched || forms.advanced.$submitted) && forms.advanced.setqueueentryvar.$invalid}">\n <label class="control-label">{{\'APPLICATION_SETQUEUEENTRYVAR\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="queue.setqueueentryvar"\n type="checkbox"\n switch-active="{{ recordSwitch.isActive }}"\n switch-on-text="{{ recordSwitch.onText }}"\n switch-off-text="{{ recordSwitch.offText }}"\n switch-on-color="{{ recordSwitch.onColor }}"\n switch-off-color="{{ recordSwitch.offColor }}"\n switch-animate="{{ recordSwitch.animate }}"\n switch-size="{{ recordSwitch.size }}"\n switch-label="{{ recordSwitch.label }}"\n switch-icon="{{ recordSwitch.icon }}"\n switch-radio-off="{{ recordSwitch.radioOff }}"\n switch-label-width="{{ recordSwitch.labelWidth }}"\n switch-handle-width="{{ recordSwitch.handleWidth }}">\n <span class="help-block">\n {{ \'DESCRIPTION_SETQUEUEENTRYVAR\' | translate }} <a href="https://wiki.xcallymotion.com/display/XMD/Queues+-+Voice+Channel" target="_blank">wiki</a>)\n </span>\n <span data-ng-show="(forms.advanced.setqueueentryvar.$touched || forms.advanced.$submitted) && forms.advanced.setqueueentryvar.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_SETQUEUEENTRYVAR\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SETQUEUEENTRYVAR -->\n\n </div>\n </div>\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'), -a.put("app/channels/voice/realtime/view/abandoned/abandoned.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initAbandoned()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-pagination ui-grid-auto-resize>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/realtime/view/agent/agent.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initAgents()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-pagination ui-grid-auto-resize>\n <span us-spinner spinner-key="grid-spinner" spinner-start-active="true"></span>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/realtime/view/agent/agent.modal.info.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_SIP_CLIENT_INFO\' | translate }}</h3>\n</div>\n<div class="modal-body">\n<div data-ng-if="agent.ipaddr" class="well">\n <div>{{agent.ipaddr}}:{{agent.port}}</div>\n <div>{{agent.fullcontact}}</div>\n <div>{{agent.useragent}}</div>\n <div>{{agent.lastms}}</div>\n</div>\n<div data-ng-if="!agent.ipaddr" class="alert alert-danger" role="alert">\n {{\'MESSAGE_NO_AVAILABLE_INFO\' | translate}}\n</div>\n<!-- hidden random uiselect, needed to recompile the modal every time and show the content -->\n<ui-select multiple class="hide" ng-model="item.queues" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_QUEUE\' | translate}}">{{$item.name}}</ui-select-match>\n <ui-select-choices repeat="queue.name as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n</ui-select>\n<!-- -->\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/channels/voice/realtime/view/agent/queue.modal.add.html",'<div class="modal-header" data-ng-init="init()">\n <h3 class="modal-title">{{ \'APPLICATION_QUEUES\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <div class="form-group row">\n <label class="col-md-2 control-label" style="margin-top: 7px;">{{\'APPLICATION_QUEUE\' | translate}}:</label>\n <div class="col-md-6">\n <ui-select multiple ng-model="item.queues" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_QUEUE\' | translate}}">{{$item.name}}</ui-select-match>\n <ui-select-choices repeat="queue.name as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-2">\n <button class="btn btn-success bts-sm" type="button" ng-click="joinQueue()" ng-disabled="form.$invalid">{{ \'APPLICATION_JOIN_QUEUE\' | translate }}</button>\n </div>\n</div>\n<div class="form-group row">\n<label class="col-md-2 control-label" style="margin-top: 7px;">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20 col-md-6">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="params.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="params.penalty=params.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!params.penalty" data-ng-click="params.penalty=params.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n</div>\n<div>\n <div data-ng-if="queueTable" ui-grid="queueTable" name="queueTable" ui-grid-resize-columns class="ui-grid" ui-grid-pagination ui-grid-auto-resize>\n <span us-spinner spinner-key="agentqueue-spinner" spinner-start-active="true"></span>\n <div class="watermark" ng-show="!queueTable.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n</div>\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/channels/voice/realtime/view/outbound/outbound.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initDials()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-auto-resize ui-grid-pagination>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/realtime/view/parameter/parameter.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initParameters()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-tree-view ui-grid-expandable-row ui-grid-pagination ui-grid-auto-resize>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/realtime/view/queue/queue.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row mbottom20" data-ng-init="initQueues()">\n <ui-select ng-model="item.queue" theme="bootstrap" class="col-md-6" data-ng-change="getAgents(item.queue)" required>\n <ui-select-match placeholder="{{\'APPLICATION_QUEUE\' | translate}}" allow-clear>{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="queue.name as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n</div>\n<div class="row">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-pagination ui-grid-auto-resize>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/realtime/view/queuecalls/queuecalls.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initQueues()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-auto-resize ui-grid-pagination>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/realtime/view/telephone/telephone.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initTelephones()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-pagination ui-grid-auto-resize>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/realtime/view/telephone/telephone.modal.info.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_INTERFACE_INFO\' | translate }}</h3>\n</div>\n<div class="modal-body">\n<div data-ng-if="telephone.ipaddr" class="well">\n <div>{{telephone.ipaddr}}:{{telephone.port}}</div>\n <div>{{telephone.fullcontact}}</div>\n <div>{{telephone.useragent}}</div>\n <div>{{telephone.lastms}}</div>\n</div>\n<div data-ng-if="!telephone.ipaddr" class="alert alert-danger" role="alert">\n {{\'MESSAGE_NO_AVAILABLE_INFO\' | translate}}\n</div>\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/channels/voice/realtime/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-directions"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-energy"></i>\n <a href="/channels/voice/realtime/view/agents">{{ \'APPLICATION_REALTIME\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <div>\n <nav class="navbar navbar-default" role="navigation">\n <div class="collapse navbar-collapse">\n <ul class="nav navbar-nav">\n <li data-ng-class="{\'active\': $state.is(\'main.channels.voice.realtime.view.agents\')}">\n <a href="/channels/voice/realtime/view/agents">\n {{\'APPLICATION_AGENTS\' | translate}}\n </a>\n </li>\n <li data-ng-class="{\'active\': $state.is(\'main.channels.voice.realtime.view.telephones\')}" data-ng-show="Auth.isAdmin()">\n <a href="/channels/voice/realtime/view/telephones">\n {{\'APPLICATION_TELEPHONES\' | translate}}\n </a>\n </li>\n <li data-ng-class="{\'active\': $state.is(\'main.channels.voice.realtime.view.queues\')}">\n <a href="/channels/voice/realtime/view/queues">\n {{\'APPLICATION_QUEUES\' | translate}}\n </a>\n </li>\n <li data-ng-class="{\'active\': $state.is(\'main.channels.voice.realtime.view.queuecalls\')}">\n <a href="/channels/voice/realtime/view/queuecalls">\n {{\'APPLICATION_QUEUE_CALLS\' | translate}}\n </a>\n </li>\n <li data-ng-class="{\'active\': $state.is(\'main.channels.voice.realtime.view.parameters\')}">\n <a href="/channels/voice/realtime/view/parameters">\n {{\'APPLICATION_QUEUE_PARAMETERS\' | translate}}\n </a>\n </li>\n <li data-ng-class="{\'active\': $state.is(\'main.channels.voice.realtime.view.abandoned\')}">\n <a href="/channels/voice/realtime/view/abandoned">\n {{\'APPLICATION_QUEUE_ABANDONED\' | translate}}\n </a>\n </li>\n <li data-ng-class="{\'active\': $state.is(\'main.channels.voice.realtime.view.outbound\')}">\n <a href="/channels/voice/realtime/view/outbound">\n {{\'APPLICATION_OUTBOUND_CALLS\' | translate}}\n </a>\n </li>\n <li>\n <a href="#">\n <b>|{{\'APPLICATION_SHOW_TIMERS\' | translate}} </b><input\n bs-switch\n class="form-control"\n ng-model="showTimers"\n type="checkbox"\n name="showTimers"\n switch-active="{{ timerSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ timerSwitch.onColor }}"\n switch-off-color="{{ timerSwitch.offColor }}"\n switch-animate="{{ timerSwitch.animate }}"\n switch-size="{{ timerSwitch.size }}"\n switch-label="{{ timerSwitch.label }}"\n switch-icon="{{ timerSwitch.icon }}"\n switch-radio-off="{{ timerSwitch.radioOff }}"\n switch-label-width="{{ timerSwitch.labelWidth }}"\n switch-handle-width="{{ timerSwitch.handleWidth }}"><b>|</b>\n </a>\n </li>\n </ul>\n </div>\n </nav>\n </div>\n <div ui-view></div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/recording/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-play"></i>\n <a href="#">{{ \'APPLICATION_RECORDINGS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="fa fa-play font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_RECORDINGS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length && Auth.isAdmin()">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/route/inbound/list/create.modal.html",'<div class="modal-header" data-ng-init="getContexts()">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_ROUTE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="forms.extension" novalidate>\n\n <!-- START EXTEN -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.extension.exten.$touched || forms.extension.$submitted) && forms.extension.exten.$invalid || existRoute}">\n <label class="control-label">{{\'APPLICATION_PHONE_NUMBER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="exten" placeholder="{{\'APPLICATION_PHONE_NUMBER\' | translate}}" class="form-control" data-ng-model="item.exten" data-ng-pattern="settings.patternName" required/>\n <span data-ng-show="(forms.extension.exten.$touched || forms.extension.$submitted) && forms.extension.exten.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EXTEN -->\n\n <!-- START CONTEXT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.extension.context.$touched || forms.extension.$submitted) && forms.extension.context.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONTEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.context" name="context" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="context.name as context in voiceContexts | filter: $select.search">\n <div ng-bind-html="context.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CONTEXT\' | translate }}\n </span>\n <span data-ng-show="(forms.extension.context.$touched || forms.extension.$submitted) && forms.extension.context.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONTEXT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="forms.extension.$invalid || existRoute">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n<!-- <pre>\n {{item | json}}\n</pre> -->\n'),a.put("app/channels/voice/route/inbound/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-call-in"></i>\n <a href="/channels/voice/routes/inbound/list">{{ \'APPLICATION_INBOUND\' | translate }} {{ \'APPLICATION_ROUTES\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-users font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_INBOUND\' | translate }} {{ \'APPLICATION_ROUTES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle " href="#" data-ng-click="create()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ROUTE\' | translate }}\n </a>\n </div>\n <!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> -->\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter class="ui-grid" ui-grid-draggable-rows>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/route/inbound/view/view.applications.html",'<div ui-view class="profile-content">\n<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACTIONS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="selectedRows.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle " href="/channels/voice/routes/inbound/view/{{route.id}}/application" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_APPLICATION\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div data-ng-if="showGrid" ui-grid="gridOptions" ui-grid-resize-columns class="grid" ui-grid-selection ui-grid-draggable-rows ui-grid-auto-resize>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n</div>\n'),a.put("app/channels/voice/route/inbound/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getRoute()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-reload"></i>\n <a href="/channels/voice/routes/inbound/list">{{ \'APPLICATION_INBOUND\' | translate }} {{ \'APPLICATION_ROUTES\' | translate }}</a>\n <i data-ng-show="route" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="route">\n <a href="#">{{route.exten}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/inboundroute.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{route.exten}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.voice.routes.inbound.view.settings\')}">\n <a data-ng-click="deselectAndRedirect(\'/channels/voice/routes/inbound/view/\'+route.id+\'/settings\')">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n'+" <li data-ng-class=\"{active: $state.is('main.channels.voice.routes.inbound.view.applications') || $state.is('main.channels.voice.routes.inbound.view.application') || $state.is('main.channels.voice.routes.inbound.view.applications.settings')}\">\n <a data-ng-click=\"deselectAndRedirect('/channels/voice/routes/inbound/view/'+route.id+'/applications')\">\n <i class=\"icon-list\"></i>\n {{ 'APPLICATION_ACTIONS' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class=\"profile-content\">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n"),a.put("app/channels/voice/route/inbound/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_INBOUND\' | translate}} {{ \'APPLICATION_ROUTE\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body" data-ng-init="getContexts()">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateRoute()" novalidate>\n\n <!-- START EXTEN -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.exten.$touched || forms.general.$submitted) && forms.general.exten.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE_NUMBER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="exten" placeholder="{{\'APPLICATION_PHONE_NUMBER\' | translate}}" class="form-control" data-ng-model="route.exten" required/>\n <span data-ng-show="(forms.general.exten.$touched || forms.general.$submitted) && forms.general.exten.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EXTEN -->\n\n <!-- START CONTEXT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.context.$touched || forms.general.$submitted) && forms.general.context.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONTEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="route.context" name="context" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="context.name as context in voiceContexts | filter: $select.search">\n <div ng-bind-html="context.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CONTEXT\' | translate }}\n </span>\n <span data-ng-show="(forms.general.context.$touched || forms.general.$submitted) && forms.general.context.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONTEXT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="route.description"/></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/voice/route/internal/list/create.modal.html",'<div class="modal-header" data-ng-init="getContexts()">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_ROUTE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="forms.extension" novalidate>\n\n <!-- START EXTEN -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.extension.exten.$touched || forms.extension.$submitted) && forms.extension.exten.$invalid || existRoute}">\n <label class="control-label">{{\'APPLICATION_PHONE_NUMBER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="exten" placeholder="{{\'APPLICATION_PHONE_NUMBER\' | translate}}" class="form-control" data-ng-model="item.exten" data-ng-pattern="settings.patternName" required/>\n <span data-ng-show="(forms.extension.exten.$touched || forms.extension.$submitted) && forms.extension.exten.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EXTEN -->\n\n <!-- START CONTEXT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.extension.context.$touched || forms.extension.$submitted) && forms.extension.context.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONTEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.context" name="context" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="context.name as context in voiceContexts | filter: $select.search">\n <div ng-bind-html="context.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CONTEXT\' | translate }}\n </span>\n <span data-ng-show="(forms.extension.context.$touched || forms.extension.$submitted) && forms.extension.context.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONTEXT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="forms.extension.$invalid || existRoute">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n<!-- <pre>\n {{item | json}}\n</pre> -->\n'),a.put("app/channels/voice/route/internal/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-reload"></i>\n <a href="/voice/routes/internal/list">{{ \'APPLICATION_INTERNAL\' | translate }} {{ \'APPLICATION_ROUTES\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-users font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_INTERNAL\' | translate }} {{ \'APPLICATION_ROUTES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle " href="#" data-ng-click="create()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ROUTE\' | translate }}\n </a>\n </div>\n <!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> -->\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter class="ui-grid" ui-grid-draggable-rows>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), -a.put("app/channels/voice/route/internal/view/view.applications.html",'<div ui-view class="profile-content">\n<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACTIONS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="selectedRows.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle " href="/channels/voice/routes/internal/view/{{route.id}}/application" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_APPLICATION\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div data-ng-if="showGrid" ui-grid="gridOptions" ui-grid-resize-columns class="grid" ui-grid-selection ui-grid-draggable-rows ui-grid-auto-resize>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n</div>\n'),a.put("app/channels/voice/route/internal/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getRoute()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-reload"></i>\n <a href="/channels/voice/routes/internal/list">{{ \'APPLICATION_INTERNAL\' | translate }} {{ \'APPLICATION_ROUTES\' | translate }}</a>\n <i data-ng-show="route" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="route">\n <a href="#">{{route.exten}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/internalroute.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{route.exten}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.voice.routes.internal.view.settings\')}">\n <a data-ng-click="deselectAndRedirect(\'/channels/voice/routes/internal/view/\'+route.id+\'/settings\')">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n'+" <li data-ng-class=\"{active: $state.is('main.channels.voice.routes.internal.view.applications') || $state.is('main.channels.voice.routes.internal.view.application') || $state.is('main.channels.voice.routes.internal.view.applications.settings')}\">\n <a data-ng-click=\"deselectAndRedirect('/channels/voice/routes/internal/view/'+route.id+'/applications')\">\n <i class=\"icon-list\"></i>\n {{ 'APPLICATION_ACTIONS' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class=\"profile-content\">\n </div>\n <!-- <pre>\n {{route | json}}\n </pre> -->\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n"),a.put("app/channels/voice/route/internal/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_INTERNAL\' | translate}} {{ \'APPLICATION_ROUTE\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body" data-ng-init="getContexts()">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateRoute()" novalidate>\n\n <!-- START EXTEN -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.exten.$touched || forms.general.$submitted) && forms.general.exten.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE_NUMBER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="exten" placeholder="{{\'APPLICATION_PHONE_NUMBER\' | translate}}" class="form-control" data-ng-model="route.exten" required/>\n <span data-ng-show="(forms.general.exten.$touched || forms.general.$submitted) && forms.general.exten.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EXTEN -->\n\n <!-- START CONTEXT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.context.$touched || forms.general.$submitted) && forms.general.context.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONTEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="route.context" name="context" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="context.name as context in voiceContexts | filter: $select.search">\n <div ng-bind-html="context.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CONTEXT\' | translate }}\n </span>\n <span data-ng-show="(forms.general.context.$touched || forms.general.$submitted) && forms.general.context.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONTEXT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="route.description"/></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/voice/route/outbound/list/create.modal.html",'<div class="modal-header" data-ng-init="getContexts()">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_ROUTE\' | translate }}</h3>\n</div>\n<div class="modal-body" data-ng-init="getTags()">\n <form name="forms.extension" novalidate>\n\n <!-- START EXTEN -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.extension.exten.$touched || forms.extension.$submitted) && forms.extension.exten.$invalid || existRoute}">\n <label class="control-label">{{\'APPLICATION_DESTINATION_PATTERN\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="exten" placeholder="{{\'APPLICATION_DESTINATION_PATTERN\' | translate}}" class="form-control" data-ng-model="item.exten" data-ng-pattern="settings.patternName" required/>\n <span data-ng-show="(forms.extension.exten.$touched || forms.extension.$submitted) && forms.extension.exten.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EXTEN -->\n\n <!-- START CONTEXT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.extension.context.$touched || forms.extension.$submitted) && forms.extension.context.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONTEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.context" name="context" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="context.name as context in voiceContexts | filter: $select.search">\n <div ng-bind-html="context.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CONTEXT\' | translate }}\n </span>\n <span data-ng-show="(forms.extension.context.$touched || forms.extension.$submitted) && forms.extension.context.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONTEXT -->\n\n <!-- START TAG -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.extension.tag.$touched || forms.extension.$submitted) && forms.extension.tag.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TAG\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.tag" name="tag" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_TAG\' | translate }}" data-ng-init="item.tag = \'--\'">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="tag.name as tag in tags | filter: $select.search">\n <div ng-bind-html="tag.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.extension.tag.$touched || forms.extension.$submitted) && forms.extension.tag.$invalid && forms.extension.tag.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TAG -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="forms.extension.$invalid || existRoute">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n<!-- <pre>\n {{item | json}}\n</pre> -->\n'),a.put("app/channels/voice/route/outbound/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-call-out"></i>\n <a href="/channels/voice/routes/outbound/list">{{ \'APPLICATION_OUTBOUND\' | translate }} {{ \'APPLICATION_ROUTES\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-users font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_OUTBOUND\' | translate }} {{ \'APPLICATION_ROUTES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle " href="#" data-ng-click="create()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ROUTE\' | translate }}\n </a>\n </div>\n <!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> -->\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter class="ui-grid" ui-grid-draggable-rows>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/route/outbound/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getRoute()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-call-out"></i>\n <a href="/channels/voice/routes/outbound/list">{{ \'APPLICATION_OUTBOUND\' | translate }} {{ \'APPLICATION_ROUTES\' | translate }}</a>\n <i data-ng-show="route" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="route">\n <a href="#">{{route.exten}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/outboundroute.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{route.exten}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.voice.routes.outbound.view.settings\')}">\n <a data-ng-click="deselectAndRedirect(\'/channels/voice/routes/outbound/view/\'+route.id+\'/settings\')">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n'+" <li data-ng-class=\"{active: $state.is('main.channels.voice.routes.outbound.view.routes') || $state.is('main.channels.voice.routes.outbound.view.route') || $state.is('main.channels.voice.routes.outbound.view.routes.settings')}\">\n <a data-ng-click=\"deselectAndRedirect('/channels/voice/routes/outbound/view/'+route.id+'/routes')\">\n <i class=\"icon-list\"></i>\n {{ 'APPLICATION_ACTIONS' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class=\"profile-content\">\n </div>\n <!-- <pre>\n {{route | json}}\n </pre> -->\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n"),a.put("app/channels/voice/route/outbound/view/view.route.html",'<div class="row" data-ng-init="initApplication(true);getIntervals();">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_NEW_ROUTE\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <div class="profile-usertitle-name">\n {{(main.app.name | translate) || \'Application\'}}\n </div>\n <wizard on-finish="addApplication()">\n <wz-step title="{{\'APPLICATION_SETTINGS\' | translate}}" canexit="formValidation(forms.info.$valid)">\n <form name="forms.info" novalidate>\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n <!-- START APP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.app.$touched || forms.info.$submitted) && forms.info.app.$invalid}">\n <label class="control-label">{{ \'APPLICATION_APPLICATION\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="main.app" name="app" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_APPLICATION\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="app in applications | filter: $select.search">\n <div ng-bind-html="app.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.info.app.$touched || forms.info.$submitted) && forms.info.app.$invalid && forms.info.app.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APP -->\n <div id="Dial" class="app-settings" ng-slide-down="main.app.value == \'Dial\' && main.app.type == \'outboundDial\'" lazy-render duration="1">\n <!-- START TRUNK -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.trunk.$touched || forms.info.$submitted) && forms.info.trunk.$invalid}">\n <label class="control-label">{{\'APPLICATION_TRUNK\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.appdata[0]" data-ng-init="application.appdata[0] = null" name="trunk" theme="bootstrap" required data-ng-disabled="!items.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="trunk.name as trunk in items | filter: $select.search">\n <div ng-bind-html="trunk.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="items.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_TRUNKS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/trunks/list">{{\'APPLICATION_TRUNKS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.info.trunk.$touched || forms.info.$submitted) && forms.info.trunk.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TRUNK -->\n\n <!-- START CALLERID -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.callerID.$touched || forms.info.$submitted) && forms.info.callerID.$invalid}">\n <label class="control-label">{{ \'APPLICATION_CALLERID\' | translate }}</label>\n <input type="text" name="callerID" pattern=\'^"[a-zA-Z0-9_.-]*" <[a-zA-Z0-9_.-]*>\' placeholder=\'"name" <number>\' class="form-control" data-ng-model="application.appdata[1]" data-ng-init="application.appdata[1] = null">\n <span class="help-block">\n {{ \'DESCRIPTION_OUTBOUND_CALLERID\' | translate }}\n </span>\n <span data-ng-show="(forms.info.callerID.$touched || forms.info.$submitted) && forms.info.callerID.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CALLERID -->\n\n <!-- START PREFIX -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.prefix.$touched || forms.info.$submitted) && forms.info.prefix.$invalid}">\n <label class="control-label">{{ \'APPLICATION_PREFIX\' | translate }}</label>\n <input type="text" name="prefix" placeholder="{{ \'APPLICATION_PREFIX\' | translate }}" class="form-control" data-ng-model="application.appdata[2]" data-ng-init="application.appdata[2] = null">\n <span class="help-block">\n {{ \'DESCRIPTION_OUTBOUND_PREFIX\' | translate }}\n </span>\n <span data-ng-show="(forms.info.prefix.$touched || forms.info.$submitted) && forms.info.prefix.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PREFIX -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TIMEOUT\' | translate }}</label>\n <input type="text" pattern="[0-9]+" name="timeout" placeholder="" class="form-control" data-ng-model="application.appdata[3]" data-ng-init="application.appdata[3] = null">\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{ \'APPLICATION_OPTIONS\' | translate }}</label>\n <input type="text" name="app_options" placeholder="" class="form-control" data-ng-model="application.appdata[4]" data-ng-init="application.appdata[4] = null">\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid && forms.settings.app_options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START URL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid}">\n <label class="control-label">{{ \'APPLICATION_URL\' | translate }}</label>\n <input type="text" name="url" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="application.appdata[5]" data-ng-init="application.appdata[5] = null">\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END URL -->\n\n </div>\n <div id="Custom" class="app-settings" ng-slide-down="main.app.type == \'custom\'" lazy-render duration="1">\n\n <!-- START CUSTOMAPP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.customApp.$touched || forms.info.$submitted) && forms.info.customApp.$invalid}">\n <label class="control-label">{{ \'APPLICATION_CUSTOM_APP\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="customApp" placeholder="{{ \'APPLICATION_CUSTOM_APP\' | translate }}" class="form-control" data-ng-model="application.app" data-ng-init="application.appdata[0] = null" required>\n <span data-ng-show="(forms.info.customApp.$touched || forms.info.$submitted) && forms.info.customApp.$invalid && forms.info.customApp.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CUSTOMAPP -->\n\n <!-- START APPDATA -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.appdata.$touched || forms.info.$submitted) && forms.info.appdata.$invalid}">\n <label class="control-label">{{ \'APPLICATION_ARGUMENTS\' | translate }}</label>\n <input type="text" name="appdata" placeholder="{{ \'APPLICATION_ARGUMENTS\' | translate }}" class="form-control" data-ng-model="application.appdata[0]" data-ng-init="application.appdata[1] = null">\n <span data-ng-show="(forms.info.appdata.$touched || forms.info.$submitted) && forms.info.appdata.$invalid && forms.info.appdata.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APPDATA -->\n </div>\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n </form>\n </wz-step>\n <wz-step title="{{\'APPLICATION_INTERVAL\' | translate}}" canexit="formValidation(forms.interval.IntervalId.$valid || forms.interval.hasOwnProperty(\'t_from\') || forms.interval.intType.$modelValue === \'always\')">\n <form name="forms.interval" novalidate>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n <!-- START INTERVAL_TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.interval.intType.$touched || forms.interval.$submitted) && forms.interval.intType.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVAL_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="interval.intType" theme="bootstrap" name="intType" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="intType.value as intType in $application.intTypes | filter: $select.search">\n {{$translate.instant(intType.name)}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.interval.intType.$touched || forms.interval.$submitted) && forms.interval.intType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVAL_TYPE -->\n <div id="customInterval" class="app-settings" ng-slide-down="interval.intType == \'custom\'" lazy-render duration="1">\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="interval.alwaysTime"><uib-timepicker name="t_from" data-ng-model="interval.t_from" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="interval.alwaysTime"><uib-timepicker name="t_to" data-ng-model="interval.t_to" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="interval.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label>\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="interval.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="interval.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="interval.md_from" theme="bootstrap" name="md_from">\n <ui-select-match>{{$select.selected === \'always\' ? \'APPLICATION_ALWAYS\' : $select.selected | translate}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search">\n {{monthDay === \'always\' ? \'APPLICATION_ALWAYS\' : monthDay | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="interval.md_to" theme="bootstrap" name="md_to">\n <ui-select-match>{{$select.selected === \'always\' ? \'APPLICATION_ALWAYS\' : $select.selected | translate}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search">\n {{monthDay === \'always\' ? \'APPLICATION_ALWAYS\' : monthDay | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="interval.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{month.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="interval.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{month.name | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </div>\n\n <div id="customInterval" class="app-settings" ng-slide-down="interval.intType == \'list\'" lazy-render duration="1">\n\n <!-- START INTERVALS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.interval.IntervalId.$touched || forms.interval.$submitted) && forms.interval.IntervalId.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVALS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="interval.IntervalId" theme="bootstrap" name="IntervalId" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="interval.id as interval in Intervals | filter: $select.search">\n {{interval.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.interval.IntervalId.$touched || forms.interval.$submitted) && forms.interval.IntervalId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVALS -->\n\n </div>\n\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), -a.put("app/channels/voice/route/outbound/view/view.routeSettings.html",'<div class="row" data-ng-init="initApplication();getApplication();getIntervals();">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_APPLICATION_SETTINGS\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="updateRoute(\'routes\')">\n <div class="profile-usertitle-name">\n {{(main.app.name | translate) || \'Application\'}}\n </div>\n <wz-step title="{{\'APPLICATION_APPLICATION\' | translate}}" canexit="formValidation(forms.info.$valid)">\n <form name="forms.info" novalidate>\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n <div id="Dial" class="app-settings" ng-slide-down="main.app.value == \'Dial\' && main.app.type == \'outboundDial\'" lazy-render duration="1">\n\n <!-- START TRUNK -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.trunk.$touched || forms.info.$submitted) && forms.info.trunk.$invalid}">\n <label class="control-label">{{\'APPLICATION_TRUNK\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="route.Applications[selectedApp].appdata[0]" name="trunk" theme="bootstrap" required data-ng-disabled="!items.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="trunk.name as trunk in items | filter: $select.search">\n <div ng-bind-html="trunk.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="items.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_TRUNKS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/trunks/list">{{\'APPLICATION_TRUNKS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.info.trunk.$touched || forms.info.$submitted) && forms.info.trunk.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TRUNK -->\n\n <!-- START CALLERID -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.callerID.$touched || forms.info.$submitted) && forms.info.callerID.$invalid}">\n <label class="control-label">{{ \'APPLICATION_CALLERID\' | translate }}</label>\n <input type="text" name="callerID" pattern=\'^"[a-zA-Z0-9_.-]*" <[a-zA-Z0-9_.-]*>\' placeholder=\'"name" <number>\' class="form-control" data-ng-model="route.Applications[selectedApp].appdata[1]">\n <span class="help-block">\n {{ \'DESCRIPTION_OUTBOUND_CALLERID\' | translate }} "name" <number>\n </span>\n <span data-ng-show="(forms.info.callerID.$touched || forms.info.$submitted) && forms.info.callerID.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CALLERID -->\n\n <!-- START PREFIX -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.prefix.$touched || forms.info.$submitted) && forms.info.prefix.$invalid}">\n <label class="control-label">{{ \'APPLICATION_PREFIX\' | translate }}</label>\n <input type="text" name="prefix" placeholder="{{ \'APPLICATION_PREFIX\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[2]">\n <span class="help-block">\n {{ \'DESCRIPTION_OUTBOUND_PREFIX\' | translate }}\n </span>\n <span data-ng-show="(forms.info.prefix.$touched || forms.info.$submitted) && forms.info.prefix.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PREFIX -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TIMEOUT\' | translate }}</label>\n <input type="text" pattern="[0-9]+" name="timeout" placeholder="" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[3]">\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{ \'APPLICATION_OPTIONS\' | translate }}</label>\n <input type="text" name="app_options" placeholder="" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[4]">\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid && forms.settings.app_options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START URL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid}">\n <label class="control-label">{{ \'APPLICATION_URL\' | translate }}</label>\n <input type="text" name="url" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[5]">\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END URL -->\n </div>\n <div id="Custom" class="app-settings" ng-slide-down="main.app.type == \'custom\'" lazy-render duration="1">\n\n <!-- START CUSTOMAPP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.customApp.$touched || forms.info.$submitted) && forms.info.customApp.$invalid}">\n <label class="control-label">{{ \'APPLICATION_CUSTOM_APP\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="customApp" placeholder="{{ \'APPLICATION_CUSTOM_APP\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].app" required>\n <span data-ng-show="(forms.info.customApp.$touched || forms.info.$submitted) && forms.info.customApp.$invalid && forms.info.customApp.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CUSTOMAPP -->\n\n <!-- START APPDATA -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.appdata.$touched || forms.info.$submitted) && forms.info.appdata.$invalid}">\n <label class="control-label">{{ \'APPLICATION_ARGUMENTS\' | translate }}</label>\n <input type="text" name="appdata" placeholder="{{ \'APPLICATION_ARGUMENTS\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[0]">\n <span data-ng-show="(forms.info.appdata.$touched || forms.info.$submitted) && forms.info.appdata.$invalid && forms.info.appdata.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APPDATA -->\n </div>\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n </form>\n </wz-step>\n <wz-step title="{{\'APPLICATION_INTERVAL\' | translate}}" canexit="formValidation(forms.interval.IntervalId.$valid || forms.interval.hasOwnProperty(\'t_from\') || forms.interval.intType.$modelValue === \'always\')">\n <form name="forms.interval" novalidate>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n <!-- START INTERVAL_TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.interval.intType.$touched || forms.interval.$submitted) && forms.interval.intType.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVAL_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="interval.intType" theme="bootstrap" name="intType" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="intType.value as intType in $application.intTypes | filter: $select.search">\n {{intType.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.interval.intType.$touched || forms.interval.$submitted) && forms.interval.intType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVAL_TYPE -->\n <div id="customInterval" class="app-settings" ng-slide-down="interval.intType == \'custom\'" lazy-render duration="1">\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="interval.alwaysTime"><uib-timepicker name="t_from" data-ng-model="interval.t_from" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="interval.alwaysTime"><uib-timepicker name="t_to" data-ng-model="interval.t_to" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="interval.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label> -->\n <!-- START ALWAYS -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALWAYS\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="interval.alwaysTime"\n type="checkbox"\n switch-active="{{ alwaysSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ alwaysSwitch.onColor }}"\n switch-off-color="{{ alwaysSwitch.offColor }}"\n switch-animate="{{ alwaysSwitch.animate }}"\n switch-size="{{ alwaysSwitch.size }}"\n switch-label="{{ alwaysSwitch.label }}"\n switch-icon="{{ alwaysSwitch.icon }}"\n switch-radio-off="{{ alwaysSwitch.radioOff }}"\n switch-label-width="{{ alwaysSwitch.labelWidth }}"\n switch-handle-width="{{ alwaysSwitch.handleWidth }}">\n </label>\n </div>\n </div>\n <!-- END ALWAYS -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="interval.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="interval.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="interval.md_from" theme="bootstrap" name="md_from">\n <ui-select-match>{{$select.selected === \'always\' ? \'APPLICATION_ALWAYS\' : $select.selected | translate}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search">\n {{monthDay === \'always\' ? \'APPLICATION_ALWAYS\' : monthDay | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="interval.md_to" theme="bootstrap" name="md_to">\n <ui-select-match>{{$select.selected === \'always\' ? \'APPLICATION_ALWAYS\' : $select.selected | translate}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search">\n {{monthDay === \'always\' ? \'APPLICATION_ALWAYS\' : monthDay | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="interval.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{month.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="interval.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{month.name | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </div>\n\n <div id="customInterval" class="app-settings" ng-slide-down="interval.intType == \'list\'" lazy-render duration="1">\n\n <!-- START INTERVALS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.interval.IntervalId.$touched || forms.interval.$submitted) && forms.interval.IntervalId.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVALS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="interval.IntervalId" theme="bootstrap" name="IntervalId" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="interval.id as interval in Intervals | filter: $select.search">\n {{interval.name | translate}}\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="intervals.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_INTERVAL_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/intervals/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.interval.IntervalId.$touched || forms.interval.$submitted) && forms.interval.IntervalId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVALS -->\n\n </div>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/route/outbound/view/view.routes.html",'<div ui-view class="profile-content">\n<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACTIONS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="selectedRows.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle " href="/channels/voice/routes/outbound/view/{{route.id}}/route" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ROUTE\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div data-ng-if="showGrid" ui-grid="gridOptions" ui-grid-resize-columns class="grid" ui-grid-selection ui-grid-draggable-rows ui-grid-auto-resize>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n</div>\n'),a.put("app/channels/voice/route/outbound/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_OUTBOUND\' | translate}} {{ \'APPLICATION_ROUTE\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body" data-ng-init="getContexts();getTags();">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateRoute()" novalidate>\n\n <!-- START EXTEN -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.exten.$touched || forms.general.$submitted) && forms.general.exten.$invalid}">\n <label class="control-label">{{\'APPLICATION_DESTINATION_PATTERN\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="exten" placeholder="{{\'APPLICATION_DESTINATION_PATTERN\' | translate}}" class="form-control" data-ng-model="route.exten" required/>\n <span data-ng-show="(forms.general.exten.$touched || forms.general.$submitted) && forms.general.exten.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EXTEN -->\n\n <!-- START CUTDIGITS -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_CUTDIGITS\' | translate}}</label>\n <input type="text" pattern="[0-9]+" class="form-control" name="cutdigits" data-ng-model="route.cutdigits">\n <span class="help-block">\n </span>\n </div>\n <!-- END CUTDIGITS -->\n\n <!-- START TAG -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.tag.$touched || forms.general.$submitted) && forms.general.tag.$invalid}">\n <label class="control-label">{{\'APPLICATION_TAG\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="route.tag" name="tag" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="tag.name as tag in tags | filter: $select.search">\n <div ng-bind-html="tag.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.tag.$touched || forms.general.$submitted) && forms.general.tag.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TAG -->\n\n <!-- START CONTEXT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.context.$touched || forms.general.$submitted) && forms.general.context.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONTEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="route.context" name="context" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="context.name as context in voiceContexts | filter: $select.search">\n <div ng-bind-html="context.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CONTEXT\' | translate }}\n </span>\n <span data-ng-show="(forms.general.context.$touched || forms.general.$submitted) && forms.general.context.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONTEXT -->\n\n <!-- START RECORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.record.$touched || forms.general.$submitted) && forms.general.record.$invalid}">\n <label class="control-label">{{\'APPLICATION_RECORDING\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="route.record"\n type="checkbox"\n switch-active="{{ recordSwitch.isActive }}"\n switch-on-text="{{ recordSwitch.onText }}"\n switch-off-text="{{ recordSwitch.offText }}"\n switch-on-color="{{ recordSwitch.onColor }}"\n switch-off-color="{{ recordSwitch.offColor }}"\n switch-animate="{{ recordSwitch.animate }}"\n switch-size="{{ recordSwitch.size }}"\n switch-label="{{ recordSwitch.label }}"\n switch-icon="{{ recordSwitch.icon }}"\n switch-radio-off="{{ recordSwitch.radioOff }}"\n switch-label-width="{{ recordSwitch.labelWidth }}"\n switch-handle-width="{{ recordSwitch.handleWidth }}">\n <span data-ng-show="(forms.general.record.$touched || forms.general.$submitted) && forms.general.record.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END RECORD -->\n\n <!-- START RECORDINGFORMAT -->\n <div data-ng-if="route.record" class="form-group" data-ng-class="{\'has-error\': (forms.general.recordingFormat.$touched || forms.general.$submitted) && forms.general.recordingFormat.$invalid}">\n <label class="control-label">{{\'APPLICATION_FORMAT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="route.recordingFormat" name="recordingFormat" theme="bootstrap" data-ng-required="route.record">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="format in [\'wav\',\'gsm\'] | filter: $select.search">\n <div ng-bind-html="format | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.recordingFormat.$touched || forms.general.$submitted) && forms.general.recordingFormat.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END RECORDINGFORMAT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="route.description"/></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/voice/route/view.application.html",'\n<div class="row" data-ng-init="initApplication(true); getIntervals();">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_NEW_APPLICATION\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="addApplication()">\n <div class="profile-usertitle-name">\n {{(main.app.name | translate) || \'Application\'}}\n </div>\n <wz-step title="{{\'APPLICATION_APPLICATION\' | translate}}" canexit="formValidation(forms.settings.$valid)">\n <form name="forms.settings" novalidate>\n\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n <!-- START APP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app.$touched || forms.settings.$submitted) && forms.settings.app.$invalid}">\n <label class="control-label">{{ \'APPLICATION_APPLICATION\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="main.app" name="app" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_APPLICATION\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="app in $application.applications| filter: $select.search">\n <div ng-bind-html="app.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.app.$touched || forms.settings.$submitted) && forms.settings.app.$invalid && forms.settings.app.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APP -->\n\n <div id="Queue" class="app-settings" ng-slide-down="main.app.value == \'Queue\'" lazy-render duration="1">\n <!-- START QUEUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.queue.$touched || forms.settings.$submitted) && forms.settings.queue.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.appdata[0]" data-ng-init="application.appdata[0] = null" name="queue" theme="bootstrap" required data-ng-disabled="!items.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="queue.name as queue in items | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="items.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_QUEUES_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/voice/queues/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.queue.$touched || forms.settings.$submitted) && forms.settings.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{\'APPLICATION_OPTIONS\' | translate}}</label>\n <input type="text" pattern="[^,]*" name="app_options" placeholder="{{ \'APPLICATION_OPTIONS\' | translate }}" class="form-control" data-ng-model="application.appdata[1]" data-ng-init="application.appdata[1] = null">\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid && forms.settings.app_options.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n <!-- START URL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid}">\n <label class="control-label">{{ \'APPLICATION_URL\' | translate }}</label>\n <input type="text" pattern="[^,]*" name="url" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="application.appdata[2]" data-ng-init="application.appdata[2] = null">\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END URL -->\n\n <!-- START APPLICATION_ANNOUNCE_OVERRIDE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.audiofile.$touched || forms.settings.$submitted) && forms.settings.audiofile.$invalid}">\n <label class="control-label">{{\'APPLICATION_ANNOUNCE_OVERRIDE\' | translate}}</label>\n <ui-select data-ng-model="application.appdata[3]" data-ng-init="application.appdata[3] = null" name="audiofile" theme="bootstrap" data-ng-disabled="!items2.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.display_name}}</ui-select-match>\n <ui-select-choices repeat="settings.soundPath+\'/\'+audio.save_name as audio in items2 | filter: $select.search">\n <div ng-bind-html="audio.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="items2.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_SOUNDS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/sounds/list">{{\'APPLICATION_SOUNDS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.audiofile.$touched || forms.settings.$submitted) && forms.settings.audiofile.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APPLICATION_ANNOUNCE_OVERRIDE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TIMEOUT\' | translate }}</label>\n <input type="text" pattern="[0-9]+" name="timeout" placeholder="" class="form-control" data-ng-model="application.appdata[4]" data-ng-init="application.appdata[4] = null">\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START AGI -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.agi.$touched || forms.settings.$submitted) && forms.settings.agi.$invalid}">\n <label class="control-label">{{ \'APPLICATION_AGI\' | translate }}</label>\n <input type="text" pattern="[^,]*" name="agi" placeholder="{{ \'APPLICATION_AGI\' | translate }}" class="form-control" data-ng-model="application.appdata[5]" data-ng-init="application.appdata[6] = null">\n <span data-ng-show="(forms.settings.agi.$touched || forms.settings.$submitted) && forms.settings.agi.$invalid && forms.settings.agi.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.settings.agi.$touched || forms.settings.$submitted) && forms.settings.agi.$invalid && forms.settings.agi.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END AGI -->\n\n <!-- START MACRO -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.macro.$touched || forms.settings.$submitted) && forms.settings.macro.$invalid}">\n <label class="control-label">{{ \'APPLICATION_MACRO\' | translate }}</label>\n <input type="text" pattern="[^,]*" name="macro" placeholder="{{ \'APPLICATION_MACRO\' | translate }}" class="form-control" data-ng-model="application.appdata[6]" data-ng-init="application.appdata[6] = null">\n <span data-ng-show="(forms.settings.macro.$touched || forms.settings.$submitted) && forms.settings.macro.$invalid && forms.settings.macro.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.settings.macro.$touched || forms.settings.$submitted) && forms.settings.macro.$invalid && forms.settings.macro.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END MACRO -->\n\n <!-- START GOSUB -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.gosub.$touched || forms.settings.$submitted) && forms.settings.gosub.$invalid}">\n <label class="control-label">{{ \'APPLICATION_GOSUB\' | translate }}</label>\n <input type="text" pattern="[^,]*" name="gosub" placeholder="{{ \'APPLICATION_GOSUB\' | translate }}" class="form-control" data-ng-model="application.appdata[7]" data-ng-init="application.appdata[7] = null">\n <span data-ng-show="(forms.settings.gosub.$touched || forms.settings.$submitted) && forms.settings.gosub.$invalid && forms.settings.gosub.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.settings.gosub.$touched || forms.settings.$submitted) && forms.settings.gosub.$invalid && forms.settings.gosub.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END GOSUB -->\n\n <!-- START RULE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.rule.$touched || forms.settings.$submitted) && forms.settings.rule.$invalid}">\n <label class="control-label">{{ \'APPLICATION_RULE\' | translate }}</label>\n <input type="text" pattern="[^,]*" name="rule" placeholder="{{ \'APPLICATION_RULE\' | translate }}" class="form-control" data-ng-model="application.appdata[8]" data-ng-init="application.appdata[8] = null">\n <span data-ng-show="(forms.settings.rule.$touched || forms.settings.$submitted) && forms.settings.rule.$invalid && forms.settings.rule.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.settings.rule.$touched || forms.settings.$submitted) && forms.settings.rule.$invalid && forms.settings.rule.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END RULE -->\n\n <!-- START POSITION -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.position.$touched || forms.settings.$submitted) && forms.settings.position.$invalid}">\n <label class="control-label">{{ \'APPLICATION_POSITION\' | translate }}</label>\n <input type="number" min="0" name="position" placeholder="{{ \'APPLICATION_POSITION\' | translate }}" class="form-control" data-ng-model="application.appdata[9]" data-ng-init="application.appdata[9] = null">\n <span data-ng-show="(forms.settings.position.$touched || forms.settings.$submitted) && forms.settings.position.$invalid && forms.settings.position.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END POSITION -->\n\n <!-- START ANSWER -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ANSWER\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-init="application.answer=true"\n data-ng-model="application.answer"\n type="checkbox"\n switch-active="{{ alwaysSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ alwaysSwitch.onColor }}"\n switch-off-color="{{ alwaysSwitch.offColor }}"\n switch-animate="{{ alwaysSwitch.animate }}"\n switch-size="{{ alwaysSwitch.size }}"\n switch-label="{{ alwaysSwitch.label }}"\n switch-icon="{{ alwaysSwitch.icon }}"\n switch-radio-off="{{ alwaysSwitch.radioOff }}"\n switch-label-width="{{ alwaysSwitch.labelWidth }}"\n switch-handle-width="{{ alwaysSwitch.handleWidth }}">\n </label>\n </div>\n </div>\n <!-- END ANSWER -->\n\n </div>\n <div id="Playback" class="app-settings" ng-slide-down="main.app.value == \'Playback\'" lazy-render duration="1">\n <!-- START AUDIOFILE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.audiofile.$touched || forms.settings.$submitted) && forms.settings.audiofile.$invalid}">\n <label class="control-label">{{\'APPLICATION_AUDIO_FILE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.appdata[0]" data-ng-init="application.appdata[0] = null" name="audiofile" theme="bootstrap" required data-ng-disabled="!items.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.display_name}}</ui-select-match>\n <ui-select-choices repeat="settings.soundPath+\'/\'+audio.save_name as audio in items | filter: $select.search">\n <div ng-bind-html="audio.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="items.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_SOUNDS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/sounds/list">{{\'APPLICATION_SOUNDS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.audiofile.$touched || forms.settings.$submitted) && forms.settings.audiofile.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END AUDIOFILE -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{\'APPLICATION_OPTIONS\' | translate}}</label>\n <input type="text" name="app_options" placeholder="{{ \'APPLICATION_OPTIONS\' | translate }}" class="form-control" data-ng-model="application.appdata[1]" data-ng-init="application.appdata[1] = null">\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START ANSWER -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ANSWER\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-init="application.answer=true"\n data-ng-model="application.answer"\n type="checkbox"\n switch-active="{{ alwaysSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ alwaysSwitch.onColor }}"\n switch-off-color="{{ alwaysSwitch.offColor }}"\n switch-animate="{{ alwaysSwitch.animate }}"\n switch-size="{{ alwaysSwitch.size }}"\n switch-label="{{ alwaysSwitch.label }}"\n switch-icon="{{ alwaysSwitch.icon }}"\n switch-radio-off="{{ alwaysSwitch.radioOff }}"\n switch-label-width="{{ alwaysSwitch.labelWidth }}"\n switch-handle-width="{{ alwaysSwitch.handleWidth }}">\n </label>\n </div>\n </div>\n <!-- END ANSWER -->\n </div>\n <div id="Dial" class="app-settings" ng-slide-down="main.app.value == \'Dial\' && !main.app.type" lazy-render duration="1">\n <!-- START INTERFACE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.interface.$touched || forms.settings.$submitted) && forms.settings.interface.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TYPE\' | translate }}/{{ \'APPLICATION_IDENTIFIER\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="interface" placeholder="SIP/0000" class="form-control" data-ng-model="application.appdata[0]" data-ng-init="application.appdata[0] = null" required>\n <span data-ng-show="(forms.settings.interface.$touched || forms.settings.$submitted) && forms.settings.interface.$invalid && forms.settings.interface.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERFACE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TIMEOUT\' | translate }}</label>\n <input type="text" pattern="[0-9]+" name="timeout" placeholder="" class="form-control" data-ng-model="application.appdata[1]" data-ng-init="application.appdata[1] = null">\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{ \'APPLICATION_OPTIONS\' | translate }}</label>\n <input type="text" name="app_options" placeholder="" class="form-control" data-ng-model="application.appdata[2]" data-ng-init="application.appdata[2] = null">\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid && forms.settings.app_options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START URL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid}">\n <label class="control-label">{{ \'APPLICATION_URL\' | translate }}</label>\n <input type="text" name="url" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="application.appdata[3]" data-ng-init="application.appdata[3] = null">\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END URL -->\n </div>\n <div id="internalDial" class="app-settings" ng-slide-down="main.app.value == \'Dial\' && main.app.type == \'internalDial\'" lazy-render duration="1">\n <!-- START INTERNAL DIAL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.user.$touched || forms.settings.$submitted) && forms.settings.user.$invalid}">\n <label class="control-label">{{\'APPLICATION_USER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.appdata[0]" data-ng-init="application.appdata[0] = null" name="user" theme="bootstrap" required data-ng-disabled="!items.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="user.name as user in items | filter: $select.search">\n <div ng-bind-html="user.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.user.$touched || forms.settings.$submitted) && forms.settings.user.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERNAL DIAL -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TIMEOUT\' | translate }}</label>\n <input type="text" pattern="[0-9]+" name="timeout" placeholder="" class="form-control" data-ng-model="application.appdata[1]" data-ng-init="application.appdata[1] = null">\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{ \'APPLICATION_OPTIONS\' | translate }}</label>\n <input type="text" name="app_options" placeholder="" class="form-control" data-ng-model="application.appdata[2]" data-ng-init="application.appdata[2] = null">\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid && forms.settings.app_options.$error.required" class="help-block help-block-error">\n <strong>{{ \'APPLICATION_WARNING\' | translate }}!</strong> {{ \'MESSAGE_REQUIRED_FIELD\' | translate }}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START URL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid}">\n <label class="control-label">{{ \'APPLICATION_URL\' | translate }}</label>\n <input type="text" name="url" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="application.appdata[3]" data-ng-init="application.appdata[3] = null">\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.required" class="help-block help-block-error">\n <strong>{{ \'APPLICATION_WARNING\' | translate }}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END URL -->\n\n </div>\n <div id="Dial" class="app-settings" ng-slide-down="main.app.value == \'Dial\' && main.app.type == \'externalDial\'" lazy-render duration="1">\n <!-- START TRUNK -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.trunk.$touched || forms.info.$submitted) && forms.info.trunk.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TRUNK\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.appdata[0]" data-ng-init="application.appdata[0] = null" name="trunk" theme="bootstrap" required data-ng-disabled="!items.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="trunk.name as trunk in items | filter: $select.search">\n <div ng-bind-html="trunk.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="items.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_TRUNKS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{ \'APPLICATION_GO_TO\' | translate }} <a href="/tools/trunks/list">{{ \'APPLICATION_TRUNKS\' | translate }}</a>\n </p>\n </div>\n <span data-ng-show="(forms.info.trunk.$touched || forms.info.$submitted) && forms.info.trunk.$error.required" class="help-block help-block-error">\n <strong>{{ \'APPLICATION_WARNING\' | translate }}!</strong> {{ \'MESSAGE_REQUIRED_FIELD\' | translate }}.\n </span>\n </div>\n <!-- END TRUNK -->\n\n <!-- START PHONE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.phone.$touched || forms.settings.$submitted) && forms.settings.phone.$invalid}">\n <label class="control-label">{{ \'APPLICATION_PHONE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="phone" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="application.appdata[1]" data-ng-init="application.appdata[1] = null" required>\n <span data-ng-show="(forms.settings.phone.$touched || forms.settings.$submitted) && forms.settings.phone.$invalid && forms.settings.phone.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PHONE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TIMEOUT\' | translate }}</label>\n <input type="text" pattern="[0-9]+" name="timeout" placeholder="" class="form-control" data-ng-model="application.appdata[2]" data-ng-init="application.appdata[2] = null">\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{ \'APPLICATION_OPTIONS\' | translate }}</label>\n <input type="text" name="app_options" placeholder="" class="form-control" data-ng-model="application.appdata[3]" data-ng-init="application.appdata[3] = null">\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid && forms.settings.app_options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START URL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid}">\n <label class="control-label">{{ \'APPLICATION_URL\' | translate }}</label>\n <input type="text" name="url" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="application.appdata[4]" data-ng-init="application.appdata[4] = null">\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END URL -->\n </div>\n <div id="RingGroup" class="app-settings" ng-slide-down="main.app.value == \'Dial\' && main.app.type == \'RingGroup\'" lazy-render duration="1">\n <!-- START ITEMS -->\n <input type="hidden" name="items" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="application.appdata[0]" data-ng-init="initRingGroup()">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.project.$touched || forms.settings.$submitted) && forms.settings.items.$invalid}">\n <label class="control-label">{{\'APPLICATION_ITEMS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <div class="col-md-12" id="multi-select-user-by-role"></div>\n <span data-ng-show="(forms.settings.items.$touched || forms.settings.$submitted) && forms.settings.items.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ITEMS -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TIMEOUT\' | translate }}</label>\n <input type="text" pattern="[0-9]+" name="timeout" placeholder="" class="form-control" data-ng-model="application.appdata[1]" data-ng-init="application.appdata[1] = null">\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{ \'APPLICATION_OPTIONS\' | translate }}</label>\n <input type="text" name="app_options" placeholder="" class="form-control" data-ng-model="application.appdata[2]" data-ng-init="application.appdata[2] = null">\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid && forms.settings.app_options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START URL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid}">\n <label class="control-label">{{ \'APPLICATION_URL\' | translate }}</label>\n <input type="text" name="url" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="application.appdata[3]" data-ng-init="application.appdata[3] = null">\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END URL -->\n </div>\n <div id="AGI" class="app-settings" ng-slide-down="main.app.value == \'AGI\'" lazy-render duration="1">\n <!-- START PROJECT -->\n <input type="hidden" name="url" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="application.appdata[0]" data-ng-init="application.appdata[0] = \'agi://127.0.0.1/square\'">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.project.$touched || forms.settings.$submitted) && forms.settings.project.$invalid}">\n <label class="control-label">{{\'APPLICATION_PROJECT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.appdata[1]" data-ng-init="application.appdata[1] = null" name="project" theme="bootstrap" required data-ng-disabled="!items.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="project.name as project in items | filter: $select.search">\n <div ng-bind-html="project.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="items.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_PROJECTS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/square/projects/list">{{\'APPLICATION_PROJECTS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.project.$touched || forms.settings.$submitted) && forms.settings.project.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PROJECT -->\n </div>\n <div id="Goto" class="app-settings" ng-slide-down="main.app.value == \'Goto\'" lazy-render duration="1">\n <!-- START CONTEXT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.context.$touched || forms.settings.$submitted) && forms.settings.context.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONTEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.appdata[0]" data-ng-init="application.appdata[0] = null" name="context" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="context.name as context in items | filter: $select.search">\n <div ng-bind-html="context.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.context.$touched || forms.settings.$submitted) && forms.settings.context.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONTEXT -->\n\n <!-- START EXTENSION -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.extension.$touched || forms.settings.$submitted) && forms.settings.extension.$invalid}">\n <label class="control-label">{{ \'APPLICATION_EXTENSION\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="extension" placeholder="" class="form-control" data-ng-model="application.appdata[1]" data-ng-init="application.appdata[1] = null" required>\n <span data-ng-show="(forms.settings.extension.$touched || forms.settings.$submitted) && forms.settings.extension.$invalid && forms.settings.extension.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EXTENSION -->\n\n <!-- START PRIORITY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.priority.$touched || forms.settings.$submitted) && forms.settings.priority.$invalid}">\n <label class="control-label">{{ \'APPLICATION_PRIORITY\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" pattern="[0-9]+" name="priority" placeholder="" class="form-control" data-ng-model="application.appdata[2]" data-ng-init="application.appdata[2] = null" required>\n <span data-ng-show="(forms.settings.priority.$touched || forms.settings.$submitted) && forms.settings.priority.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PRIORITY -->\n </div>\n <div id="Hangup" class="app-settings" ng-slide-down="main.app.value == \'Hangup\'" lazy-render duration="1">\n <!-- START HANGUPCAUSE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.hangupCause.$touched || forms.settings.$submitted) && forms.settings.hangupCause.$invalid}">\n <label class="control-label">{{\'APPLICATION_HANGUP_CAUSE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.appdata[0]" data-ng-init="application.appdata[0] = null" theme="bootstrap" name="hangupCause" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="hangupCause.value as hangupCause in $application.hangupCauses | filter: $select.search">\n <div ng-bind-html="hangupCause.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.hangupCause.$touched || forms.settings.$submitted) && forms.settings.hangupCause.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END HANGUPCAUSE -->\n </div>\n <div id="Set" class="app-settings" ng-slide-down="main.app.value == \'Set\' && !main.app.type" lazy-render duration="1">\n <!-- START VARIABLE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.variable.$touched || forms.settings.$submitted) && forms.settings.variable.$invalid}">\n <label class="control-label">{{ \'APPLICATION_VARIABLE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="variable" placeholder="" class="form-control" data-ng-model="application.variable" data-ng-init="application.appdata[0] = null" data-ng-change="updateSetAppdata()" required>\n <span data-ng-show="(forms.settings.variable.$touched || forms.settings.$submitted) && forms.settings.variable.$invalid && forms.settings.variable.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END VARIABLE -->\n\n <!-- START VARVALUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.varvalue.$touched || forms.settings.$submitted) && forms.settings.varvalue.$invalid}">\n <label class="control-label">{{ \'APPLICATION_VALUE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="varvalue" placeholder="" class="form-control" data-ng-model="application.value" data-ng-change="updateSetAppdata()" required>\n <span data-ng-show="(forms.settings.varvalue.$touched || forms.settings.$submitted) && forms.settings.varvalue.$invalid && forms.settings.varvalue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END VARVALUE -->\n </div>\n <div id="Custom" class="app-settings" ng-slide-down="main.app.type == \'custom\'" lazy-render duration="1">\n\n <!-- START CUSTOMAPP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.customApp.$touched || forms.settings.$submitted) && forms.settings.customApp.$invalid}">\n <label class="control-label">{{ \'APPLICATION_CUSTOM_APP\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="customApp" placeholder="{{ \'APPLICATION_CUSTOM_APP\' | translate }}" class="form-control" data-ng-model="application.app" required>\n <span data-ng-show="(forms.settings.customApp.$touched || forms.settings.$submitted) && forms.settings.customApp.$invalid && forms.settings.customApp.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CUSTOMAPP -->\n\n <!-- START APPDATA -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.appdata.$touched || forms.settings.$submitted) && forms.settings.appdata.$invalid}">\n <label class="control-label">{{ \'APPLICATION_ARGUMENTS\' | translate }}</label>\n <input type="text" name="appdata" placeholder="{{ \'APPLICATION_ARGUMENTS\' | translate }}" class="form-control" data-ng-model="application.appdata[0]" data-ng-init="application.appdata[0] = null">\n <span data-ng-show="(forms.settings.appdata.$touched || forms.settings.$submitted) && forms.settings.appdata.$invalid && forms.settings.appdata.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APPDATA -->\n </div>\n <div id="Voicemail" class="app-settings" ng-slide-down="main.app.value == \'Voicemail\'" lazy-render duration="1">\n <!-- START VOICEMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.voicemail.$touched || forms.settings.$submitted) && forms.settings.voicemail.$invalid}">\n <label class="control-label">{{ \'APPLICATION_MAILBOX\' | translate }}@{{ \'APPLICATION_CONTEXT\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="application.appdata[0]" data-ng-init="application.appdata[0] = null" theme="bootstrap" name="voicemail" required data-ng-disabled="!items.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.mailbox}}</ui-select-match>\n <ui-select-choices repeat="mailbox.mailbox+\'@\'+mailbox.context as mailbox in items | filter: $select.search">\n <div ng-bind-html="mailbox.mailbox | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="items.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_VOICEMAILS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/voice/voicemails/list">{{\'APPLICATION_VOICEMAILS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.voicemail.$touched || forms.settings.$submitted) && forms.settings.voicemail.$invalid && forms.settings.voicemail.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END VOICEMAIL -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{\'APPLICATION_OPTIONS\' | translate}}</label>\n <input type="text" name="app_options" placeholder="{{ \'APPLICATION_OPTIONS\' | translate }}" class="form-control" data-ng-model="application.appdata[1]" data-ng-init="application.appdata[1] = null">\n </div>\n <!-- END OPTIONS -->\n </div>\n\n <div id="videoOn" class="app-settings" ng-slide-down="main.app.value == \'Set\' && main.app.type == \'videoOn\'" lazy-render duration="1">\n <!-- START DOMAIN -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.domain.$touched || forms.settings.$submitted) && forms.settings.domain.$invalid}">\n <label class="control-label">{{ \'APPLICATION_DOMAIN\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="domain" placeholder="" class="form-control" data-ng-model="application.domain" data-ng-init="application.appdata[0] = null;application.domain = \'xrtceu1.xcally.com\';application.theme = \'YOUR-THEME\';updateVideoOnAppdata();" data-ng-change="updateVideoOnAppdata()" required>\n <span data-ng-show="(forms.settings.domain.$touched || forms.settings.$submitted) && forms.settings.domain.$invalid && forms.settings.domain.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DOMAIN -->\n\n <!-- START THEME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.theme.$touched || forms.settings.$submitted) && forms.settings.theme.$invalid}">\n <label class="control-label">{{ \'APPLICATION_THEME\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="theme" placeholder="" class="form-control" data-ng-model="application.theme" data-ng-change="updateVideoOnAppdata()" required>\n <span data-ng-show="(forms.settings.theme.$touched || forms.settings.$submitted) && forms.settings.theme.$invalid && forms.settings.theme.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END THEME -->\n </div>\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n </form>\n </wz-step>\n <wz-step title="{{\'APPLICATION_INTERVAL\' | translate}}" canexit="formValidation(forms.interval.IntervalId.$valid || forms.interval.hasOwnProperty(\'t_from\') || forms.interval.intType.$modelValue === \'always\')">\n <form name="forms.interval" novalidate>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n <!-- START INTERVAL_TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.interval.intType.$touched || forms.interval.$submitted) && forms.interval.intType.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVAL_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="interval.intType" theme="bootstrap" name="intType" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="intType.value as intType in $application.intTypes | filter: $select.search">\n <div ng-bind-html="intType.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.interval.intType.$touched || forms.interval.$submitted) && forms.interval.intType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVAL_TYPE -->\n <div id="customInterval" class="app-settings" ng-slide-down="interval.intType == \'custom\'" lazy-render duration="1">\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="interval.alwaysTime"><uib-timepicker name="t_from" data-ng-model="interval.t_from" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="interval.alwaysTime"><uib-timepicker name="t_to" data-ng-model="interval.t_to" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="interval.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label> -->\n <!-- START ALWAYS -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALWAYS\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="interval.alwaysTime"\n type="checkbox"\n switch-active="{{ alwaysSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ alwaysSwitch.onColor }}"\n switch-off-color="{{ alwaysSwitch.offColor }}"\n switch-animate="{{ alwaysSwitch.animate }}"\n switch-size="{{ alwaysSwitch.size }}"\n switch-label="{{ alwaysSwitch.label }}"\n switch-icon="{{ alwaysSwitch.icon }}"\n switch-radio-off="{{ alwaysSwitch.radioOff }}"\n switch-label-width="{{ alwaysSwitch.labelWidth }}"\n switch-handle-width="{{ alwaysSwitch.handleWidth }}">\n </label>\n </div>\n </div>\n <!-- END ALWAYS -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="interval.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="interval.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="interval.md_from" theme="bootstrap" name="md_from">\n <ui-select-match>{{$select.selected === \'always\' ? \'APPLICATION_ALWAYS\' : $select.selected | translate}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search">\n {{monthDay === \'always\' ? \'APPLICATION_ALWAYS\' : monthDay | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="interval.md_to" theme="bootstrap" name="md_to">\n <ui-select-match>{{$select.selected === \'always\' ? \'APPLICATION_ALWAYS\' : $select.selected | translate}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search">\n {{monthDay === \'always\' ? \'APPLICATION_ALWAYS\' : monthDay | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="interval.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{month.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="interval.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{month.name | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </div>\n\n <div id="customInterval" class="app-settings" ng-slide-down="interval.intType == \'list\'" lazy-render duration="1">\n\n <!-- START INTERVALS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.interval.IntervalId.$touched || forms.interval.$submitted) && forms.interval.IntervalId.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVALS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="interval.IntervalId" theme="bootstrap" name="IntervalId" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="interval.id as interval in Intervals | filter: $select.search">\n {{interval.name | translate}}\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="Intervals.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_INTERVAL_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/intervals/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.interval.IntervalId.$touched || forms.interval.$submitted) && forms.interval.IntervalId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVALS -->\n\n </div>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), -a.put("app/channels/voice/route/view.applicationSettings.html",'\n<div class="row" data-ng-init="initApplication();getIntervals();getApplication();">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_APPLICATION_SETTINGS\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="updateRoute(\'applications\')">\n <div class="profile-usertitle-name">\n {{(main.app.name | translate) || \'Application\'}}\n </div>\n <wz-step title="{{\'APPLICATION_APPLICATION\' | translate}}" canexit="formValidation(forms.settings.$valid)">\n <form name="forms.settings" novalidate>\n <!-- <pre>\n {{application | json}}\n </pre> -->\n\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n\n <div id="Queue" class="app-settings" ng-slide-down="main.app.value == \'Queue\'" lazy-render duration="1">\n <!-- START QUEUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.queue.$touched || forms.settings.$submitted) && forms.settings.queue.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="route.Applications[selectedApp].appdata[0]" name="queue" theme="bootstrap" required data-ng-disabled="!items.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="queue.name as queue in items | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="items.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_QUEUES_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/voice/queues/list">{{\'APPLICATION_QUEUES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.queue.$touched || forms.settings.$submitted) && forms.settings.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{\'APPLICATION_OPTIONS\' | translate}}</label>\n <input type="text" pattern="[^,]*" name="app_options" placeholder="{{ \'APPLICATION_OPTIONS\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[1]">\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid && forms.settings.app_options.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START URL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid}">\n <label class="control-label">{{ \'APPLICATION_URL\' | translate }}</label>\n <input type="text" pattern="[^,]*" name="url" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[2]">\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END URL -->\n\n <!-- START APPLICATION_ANNOUNCE_OVERRIDE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.audiofile.$touched || forms.settings.$submitted) && forms.settings.audiofile.$invalid}">\n <label class="control-label">{{\'APPLICATION_ANNOUNCE_OVERRIDE\' | translate}}</label>\n <ui-select data-ng-model="route.Applications[selectedApp].appdata[3]" name="audiofile" theme="bootstrap" data-ng-disabled="!items2.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.display_name}}</ui-select-match>\n <ui-select-choices repeat="settings.soundPath+\'/\'+audio.save_name as audio in items2 | filter: $select.search">\n <div ng-bind-html="audio.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="items2.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_SOUNDS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/sounds/list">{{\'APPLICATION_SOUNDS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.audiofile.$touched || forms.settings.$submitted) && forms.settings.audiofile.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APPLICATION_ANNOUNCE_OVERRIDE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TIMEOUT\' | translate }}</label>\n <input type="text" pattern="[0-9]+" name="timeout" placeholder="{{ \'APPLICATION_TIMEOUT\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[4]">\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START AGI -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.agi.$touched || forms.settings.$submitted) && forms.settings.agi.$invalid}">\n <label class="control-label">{{ \'APPLICATION_AGI\' | translate }}</label>\n <input type="text" pattern="[^,]*" name="agi" placeholder="{{ \'APPLICATION_AGI\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[5]">\n <span data-ng-show="(forms.settings.agi.$touched || forms.settings.$submitted) && forms.settings.agi.$invalid && forms.settings.agi.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.settings.agi.$touched || forms.settings.$submitted) && forms.settings.agi.$invalid && forms.settings.agi.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END AGI -->\n\n <!-- START MACRO -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.macro.$touched || forms.settings.$submitted) && forms.settings.macro.$invalid}">\n <label class="control-label">{{ \'APPLICATION_MACRO\' | translate }}</label>\n <input type="text" pattern="[^,]*" name="macro" placeholder="{{ \'APPLICATION_MACRO\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[6]">\n <span data-ng-show="(forms.settings.macro.$touched || forms.settings.$submitted) && forms.settings.macro.$invalid && forms.settings.macro.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.settings.macro.$touched || forms.settings.$submitted) && forms.settings.macro.$invalid && forms.settings.macro.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END MACRO -->\n\n <!-- START GOSUB -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.gosub.$touched || forms.settings.$submitted) && forms.settings.gosub.$invalid}">\n <label class="control-label">{{ \'APPLICATION_GOSUB\' | translate }}</label>\n <input type="text" pattern="[^,]*" name="gosub" placeholder="{{ \'APPLICATION_GOSUB\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[7]">\n <span data-ng-show="(forms.settings.gosub.$touched || forms.settings.$submitted) && forms.settings.gosub.$invalid && forms.settings.gosub.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.settings.gosub.$touched || forms.settings.$submitted) && forms.settings.gosub.$invalid && forms.settings.gosub.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END GOSUB -->\n\n <!-- START RULE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.rule.$touched || forms.settings.$submitted) && forms.settings.rule.$invalid}">\n <label class="control-label">{{ \'APPLICATION_RULE\' | translate }}</label>\n <input type="text" pattern="[^,]*" name="rule" placeholder="{{ \'APPLICATION_RULE\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[8]">\n <span data-ng-show="(forms.settings.rule.$touched || forms.settings.$submitted) && forms.settings.rule.$invalid && forms.settings.rule.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.settings.rule.$touched || forms.settings.$submitted) && forms.settings.rule.$invalid && forms.settings.rule.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END RULE -->\n\n <!-- START POSITION -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.position.$touched || forms.settings.$submitted) && forms.settings.position.$invalid}">\n <label class="control-label">{{ \'APPLICATION_POSITION\' | translate }}</label>\n <input type="number" min="0" name="position" placeholder="{{ \'APPLICATION_POSITION\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[9]">\n <span data-ng-show="(forms.settings.position.$touched || forms.settings.$submitted) && forms.settings.position.$invalid && forms.settings.position.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END POSITION -->\n\n <!-- START ANSWER -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ANSWER\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="route.Applications[selectedApp].answer"\n type="checkbox"\n switch-active="{{ alwaysSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ alwaysSwitch.onColor }}"\n switch-off-color="{{ alwaysSwitch.offColor }}"\n switch-animate="{{ alwaysSwitch.animate }}"\n switch-size="{{ alwaysSwitch.size }}"\n switch-label="{{ alwaysSwitch.label }}"\n switch-icon="{{ alwaysSwitch.icon }}"\n switch-radio-off="{{ alwaysSwitch.radioOff }}"\n switch-label-width="{{ alwaysSwitch.labelWidth }}"\n switch-handle-width="{{ alwaysSwitch.handleWidth }}">\n </label>\n </div>\n </div>\n <!-- END ANSWER -->\n\n </div>\n <div id="Playback" class="app-settings" ng-slide-down="main.app.value == \'Playback\'" lazy-render duration="1">\n <!-- START AUDIOFILE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.audiofile.$touched || forms.settings.$submitted) && forms.settings.audiofile.$invalid}">\n <label class="control-label">{{\'APPLICATION_AUDIO_FILE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="route.Applications[selectedApp].appdata[0]" name="audiofile" theme="bootstrap" required data-ng-disabled="!items.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.display_name}}</ui-select-match>\n <ui-select-choices repeat="settings.soundPath+\'/\'+audio.save_name as audio in items | filter: $select.search">\n <div ng-bind-html="audio.display_name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="items.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_SOUNDS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/sounds/list">{{\'APPLICATION_SOUNDS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.audiofile.$touched || forms.settings.$submitted) && forms.settings.audiofile.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END AUDIOFILE -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{\'APPLICATION_OPTIONS\' | translate}}</label>\n <input type="text" name="app_options" placeholder="{{ \'APPLICATION_OPTIONS\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[1]">\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START ANSWER -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ANSWER\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="route.Applications[selectedApp].answer"\n type="checkbox"\n switch-active="{{ alwaysSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ alwaysSwitch.onColor }}"\n switch-off-color="{{ alwaysSwitch.offColor }}"\n switch-animate="{{ alwaysSwitch.animate }}"\n switch-size="{{ alwaysSwitch.size }}"\n switch-label="{{ alwaysSwitch.label }}"\n switch-icon="{{ alwaysSwitch.icon }}"\n switch-radio-off="{{ alwaysSwitch.radioOff }}"\n switch-label-width="{{ alwaysSwitch.labelWidth }}"\n switch-handle-width="{{ alwaysSwitch.handleWidth }}">\n </label>\n </div>\n </div>\n <!-- END ANSWER -->\n\n </div>\n <div id="Dial" class="app-settings" ng-slide-down="main.app.value == \'Dial\' && !main.app.type" lazy-render duration="1">\n <!-- START INTERFACE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.interface.$touched || forms.settings.$submitted) && forms.settings.interface.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TYPE\' | translate }}/{{ \'APPLICATION_IDENTIFIER\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="interface" placeholder="SIP/0000" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[0]" required>\n <span data-ng-show="(forms.settings.interface.$touched || forms.settings.$submitted) && forms.settings.interface.$invalid && forms.settings.interface.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERFACE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TIMEOUT\' | translate }}</label>\n <input type="text" pattern="[0-9]+" name="timeout" placeholder="" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[1]">\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{ \'APPLICATION_OPTIONS\' | translate }}</label>\n <input type="text" name="app_options" placeholder="" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[2]">\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid && forms.settings.app_options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START URL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid}">\n <label class="control-label">{{ \'APPLICATION_URL\' | translate }}</label>\n <input type="text" name="url" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[3]">\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END URL -->\n </div>\n <div id="internalDial" class="app-settings" ng-slide-down="main.app.value == \'Dial\' && main.app.type == \'internalDial\'" lazy-render duration="1">\n <!-- START INTERNAL DIAL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.user.$touched || forms.settings.$submitted) && forms.settings.user.$invalid}">\n <label class="control-label">{{\'APPLICATION_USER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="route.Applications[selectedApp].appdata[0]" name="user" theme="bootstrap" required data-ng-disabled="!items.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="user.name as user in items | filter: $select.search">\n <div ng-bind-html="user.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.user.$touched || forms.settings.$submitted) && forms.settings.user.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERNAL DIAL -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TIMEOUT\' | translate }}</label>\n <input type="text" pattern="[0-9]+" name="timeout" placeholder="" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[1]">\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{ \'APPLICATION_OPTIONS\' | translate }}</label>\n <input type="text" name="app_options" placeholder="" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[2]">\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid && forms.settings.app_options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START URL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid}">\n <label class="control-label">{{ \'APPLICATION_URL\' | translate }}</label>\n <input type="text" name="url" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[3]">\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END URL -->\n\n </div>\n <div id="Dial" class="app-settings" ng-slide-down="main.app.value == \'Dial\' && main.app.type == \'externalDial\'" lazy-render duration="1">\n\n <!-- START TRUNK -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.trunk.$touched || forms.info.$submitted) && forms.info.trunk.$invalid}">\n <label class="control-label">{{\'APPLICATION_TRUNK\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="route.Applications[selectedApp].appdata[0]" name="trunk" theme="bootstrap" required data-ng-disabled="!items.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="trunk.name as trunk in items | filter: $select.search">\n <div ng-bind-html="trunk.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="items.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_TRUNKS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/trunks/list">{{\'APPLICATION_TRUNKS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.info.trunk.$touched || forms.info.$submitted) && forms.info.trunk.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TRUNK -->\n\n <!-- START PHONE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.phone.$touched || forms.settings.$submitted) && forms.settings.phone.$invalid}">\n <label class="control-label">{{ \'APPLICATION_PHONE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="phone" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[1]">\n <span data-ng-show="(forms.settings.phone.$touched || forms.settings.$submitted) && forms.settings.phone.$invalid && forms.settings.phone.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PHONE -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TIMEOUT\' | translate }}</label>\n <input type="text" pattern="[0-9]+" name="timeout" placeholder="" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[2]">\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{ \'APPLICATION_OPTIONS\' | translate }}</label>\n <input type="text" name="app_options" placeholder="" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[3]">\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid && forms.settings.app_options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START URL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid}">\n <label class="control-label">{{ \'APPLICATION_URL\' | translate }}</label>\n <input type="text" name="url" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[4]">\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END URL -->\n </div>\n <div id="RingGroup" class="app-settings" ng-slide-down="main.app.value == \'Dial\' && main.app.type == \'RingGroup\'" lazy-render duration="1">\n <!-- START ITEMS -->\n <input type="hidden" name="items" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[0]" data-ng-init="initRingGroup()">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.items.$touched || forms.settings.$submitted) && forms.settings.items.$invalid}">\n <label class="control-label">{{\'APPLICATION_ITEMS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <div class="col-md-12" id="multi-select-user-by-role"></div>\n <span data-ng-show="(forms.settings.items.$touched || forms.settings.$submitted) && forms.settings.items.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ITEMS -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TIMEOUT\' | translate }}</label>\n <input type="text" pattern="[0-9]+" name="timeout" placeholder="" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[1]" data-ng-init="application.appdata[1] = null">\n <span data-ng-show="(forms.settings.timeout.$touched || forms.settings.$submitted) && forms.settings.timeout.$invalid && forms.settings.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{ \'APPLICATION_OPTIONS\' | translate }}</label>\n <input type="text" name="app_options" placeholder="" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[2]" data-ng-init="application.appdata[2] = null">\n <span data-ng-show="(forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid && forms.settings.app_options.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OPTIONS -->\n\n <!-- START URL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid}">\n <label class="control-label">{{ \'APPLICATION_URL\' | translate }}</label>\n <input type="text" name="url" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[3]" data-ng-init="application.appdata[3] = null">\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END URL -->\n </div>\n <div id="AGI" class="app-settings" ng-slide-down="main.app.value == \'AGI\'" lazy-render duration="1">\n <!-- START PROJECT -->\n <input type="hidden" name="url" placeholder="{{ \'APPLICATION_URL\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[0]" data-ng-init="route.Applications[selectedApp].appdata[0] = \'agi://127.0.0.1/square\'">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.project.$touched || forms.settings.$submitted) && forms.settings.project.$invalid}">\n <label class="control-label">{{\'APPLICATION_PROJECT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="route.Applications[selectedApp].appdata[1]" name="project" theme="bootstrap" required data-ng-disabled="!items.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="project.name as project in items | filter: $select.search">\n <div ng-bind-html="project.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="items.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_PROJECTS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/square/projects/list">{{\'APPLICATION_PROJECTS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.project.$touched || forms.settings.$submitted) && forms.settings.project.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PROJECT -->\n\n <!-- START URL -->\n <!-- <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid}">\n <label class="control-label">{{ \'APPLICATION_URL\' | translate }}</label>\n <div class="input-group">\n <input type="text" name="url" placeholder="agi://127.0.0.1/square" class="form-control" data-ng-model="application.url" data-ng-disabled="!application.urlEnabled" data-ng-required="application.urlEnabled" rpattern="/^agi:\\/\\/(?:[0-9]{1,3}\\.){3}[0-9]{1,3}\\/square$/">\n <span class="input-group-addon">\n <input type="checkbox" data-ng-model="application.urlEnabled">\n </span>\n </div>\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.settings.url.$touched || forms.settings.$submitted) && forms.settings.url.$invalid && forms.settings.url.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div> -->\n <!-- END URL -->\n\n </div>\n <div id="Goto" class="app-settings" ng-slide-down="main.app.value == \'Goto\'" lazy-render duration="1">\n <!-- START CONTEXT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.context.$touched || forms.settings.$submitted) && forms.settings.context.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONTEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="route.Applications[selectedApp].appdata[0]" name="context" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="context.name as context in items | filter: $select.search">\n <div ng-bind-html="context.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.context.$touched || forms.settings.$submitted) && forms.settings.context.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONTEXT -->\n\n <!-- START EXTENSION -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.extension.$touched || forms.settings.$submitted) && forms.settings.extension.$invalid}">\n <label class="control-label">{{ \'APPLICATION_EXTENSION\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="extension" placeholder="" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[1]" required>\n <span data-ng-show="(forms.settings.extension.$touched || forms.settings.$submitted) && forms.settings.extension.$invalid && forms.settings.extension.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EXTENSION -->\n\n <!-- START PRIORITY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.priority.$touched || forms.settings.$submitted) && forms.settings.priority.$invalid}">\n <label class="control-label">{{ \'APPLICATION_PRIORITY\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" pattern="[0-9]+" name="priority" placeholder="" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[2]" required>\n <span data-ng-show="(forms.settings.priority.$touched || forms.settings.$submitted) && forms.settings.priority.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PRIORITY -->\n </div>\n <div id="Hangup" class="app-settings" ng-slide-down="main.app.value == \'Hangup\'" lazy-render duration="1">\n <!-- START HANGUPCAUSE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.hangupCause.$touched || forms.settings.$submitted) && forms.settings.hangupCause.$invalid}">\n <label class="control-label">{{\'APPLICATION_HANGUP_CAUSE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="route.Applications[selectedApp].appdata[0]" theme="bootstrap" name="hangupCause" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="hangupCause.value as hangupCause in $application.hangupCauses | filter: $select.search">\n {{hangupCause.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.hangupCause.$touched || forms.settings.$submitted) && forms.settings.hangupCause.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END HANGUPCAUSE -->\n </div>\n <div id="Set" class="app-settings" ng-slide-down="main.app.value == \'Set\' && !main.app.type" lazy-render duration="1">\n <!-- START VARIABLE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.variable.$touched || forms.settings.$submitted) && forms.settings.variable.$invalid}">\n <label class="control-label">{{ \'APPLICATION_VARIABLE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="variable" placeholder="" class="form-control" data-ng-model="application.variable" data-ng-change="updateSetAppdataSettings()" required>\n <span data-ng-show="(forms.settings.variable.$touched || forms.settings.$submitted) && forms.settings.variable.$invalid && forms.settings.variable.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END VARIABLE -->\n\n <!-- START VARVALUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.varvalue.$touched || forms.settings.$submitted) && forms.settings.varvalue.$invalid}">\n <label class="control-label">{{ \'APPLICATION_VALUE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="varvalue" placeholder="" class="form-control" data-ng-model="application.value" data-ng-change="updateSetAppdataSettings()" required>\n <span data-ng-show="(forms.settings.varvalue.$touched || forms.settings.$submitted) && forms.settings.varvalue.$invalid && forms.settings.varvalue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END VARVALUE -->\n </div>\n <div id="Custom" class="app-settings" ng-slide-down="main.app.type == \'custom\'" lazy-render duration="1">\n\n <!-- START CUSTOMAPP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.customApp.$touched || forms.settings.$submitted) && forms.settings.customApp.$invalid}">\n <label class="control-label">{{ \'APPLICATION_CUSTOM_APP\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="customApp" placeholder="{{ \'APPLICATION_CUSTOM_APP\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].app" required>\n <span data-ng-show="(forms.settings.customApp.$touched || forms.settings.$submitted) && forms.settings.customApp.$invalid && forms.settings.customApp.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CUSTOMAPP -->\n\n <!-- START APPDATA -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.appdata.$touched || forms.settings.$submitted) && forms.settings.appdata.$invalid}">\n <label class="control-label">{{ \'APPLICATION_ARGUMENTS\' | translate }}</label>\n <input type="text" name="appdata" placeholder="{{ \'APPLICATION_ARGUMENTS\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[0]">\n <span data-ng-show="(forms.settings.appdata.$touched || forms.settings.$submitted) && forms.settings.appdata.$invalid && forms.settings.appdata.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END APPDATA -->\n </div>\n <div id="Voicemail" class="app-settings" ng-slide-down="main.app.value == \'Voicemail\'" lazy-render duration="1">\n <!-- START VOICEMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.voicemail.$touched || forms.settings.$submitted) && forms.settings.voicemail.$invalid}">\n <label class="control-label">{{ \'APPLICATION_MAILBOX\' | translate }}@{{ \'APPLICATION_CONTEXT\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="route.Applications[selectedApp].appdata[0]" theme="bootstrap" name="voicemail" required data-ng-disabled="!items.length">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.mailbox}}</ui-select-match>\n <ui-select-choices repeat="mailbox.mailbox+\'@\'+mailbox.context as mailbox in items | filter: $select.search">\n <div ng-bind-html="mailbox.mailbox | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="items.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_VOICEMAILS_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/channels/voice/voicemails/list">{{\'APPLICATION_VOICEMAILS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.settings.voicemail.$touched || forms.settings.$submitted) && forms.settings.voicemail.$invalid && forms.settings.voicemail.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END VOICEMAIL -->\n\n <!-- START OPTIONS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.app_options.$touched || forms.settings.$submitted) && forms.settings.app_options.$invalid}">\n <label class="control-label">{{\'APPLICATION_OPTIONS\' | translate}}</label>\n <input type="text" name="app_options" placeholder="{{ \'APPLICATION_OPTIONS\' | translate }}" class="form-control" data-ng-model="route.Applications[selectedApp].appdata[1]">\n </div>\n <!-- END OPTIONS -->\n\n </div>\n\n <div id="videoOn" class="app-settings" ng-slide-down="main.app.value == \'Set\' && main.app.type == \'videoOn\'" lazy-render duration="1">\n <!-- START DOMAIN -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.domain.$touched || forms.settings.$submitted) && forms.settings.domain.$invalid}">\n <label class="control-label">{{ \'APPLICATION_DOMAIN\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="domain" placeholder="" class="form-control" data-ng-model="application.domain" data-ng-change="updateVideoOnAppdataSettings()" required>\n <span data-ng-show="(forms.settings.domain.$touched || forms.settings.$submitted) && forms.settings.domain.$invalid && forms.settings.domain.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DOMAIN -->\n\n <!-- START THEME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.theme.$touched || forms.settings.$submitted) && forms.settings.theme.$invalid}">\n <label class="control-label">{{ \'APPLICATION_THEME\' | translate }}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="theme" placeholder="" class="form-control" data-ng-model="application.theme" data-ng-change="updateVideoOnAppdataSettings()" required>\n <span data-ng-show="(forms.settings.theme.$touched || forms.settings.$submitted) && forms.settings.theme.$invalid && forms.settings.theme.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END THEME -->\n </div>\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n </form>\n</wz-step>\n<wz-step title="{{\'APPLICATION_INTERVAL\' | translate}}" canexit="formValidation(forms.interval.IntervalId.$valid || forms.interval.hasOwnProperty(\'t_from\') || forms.interval.intType.$modelValue === \'always\')">\n <form name="forms.interval" novalidate>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n <!-- START INTERVAL_TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.interval.intType.$touched || forms.interval.$submitted) && forms.interval.intType.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVAL_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="interval.intType" theme="bootstrap" name="intType" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="intType.value as intType in $application.intTypes | filter: $select.search">\n {{intType.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.interval.intType.$touched || forms.interval.$submitted) && forms.interval.intType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVAL_TYPE -->\n <div id="customInterval" class="app-settings" ng-slide-down="interval.intType == \'custom\'" lazy-render duration="1">\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="interval.alwaysTime"><uib-timepicker name="t_from" data-ng-model="interval.t_from" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="interval.alwaysTime"><uib-timepicker name="t_to" data-ng-model="interval.t_to" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="interval.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label> -->\n <!-- START ALWAYS -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALWAYS\' | translate }}</label>\n <div class="input-group input-large">\n <label class="control-label pointer-cursor">\n <input\n bs-switch\n data-ng-model="interval.alwaysTime"\n type="checkbox"\n switch-active="{{ alwaysSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ alwaysSwitch.onColor }}"\n switch-off-color="{{ alwaysSwitch.offColor }}"\n switch-animate="{{ alwaysSwitch.animate }}"\n switch-size="{{ alwaysSwitch.size }}"\n switch-label="{{ alwaysSwitch.label }}"\n switch-icon="{{ alwaysSwitch.icon }}"\n switch-radio-off="{{ alwaysSwitch.radioOff }}"\n switch-label-width="{{ alwaysSwitch.labelWidth }}"\n switch-handle-width="{{ alwaysSwitch.handleWidth }}">\n </label>\n </div>\n </div>\n <!-- END ALWAYS -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="interval.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="interval.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="interval.md_from" theme="bootstrap" name="md_from">\n <ui-select-match>{{$select.selected === \'always\' ? \'APPLICATION_ALWAYS\' : $select.selected | translate}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search">\n {{monthDay === \'always\' ? \'APPLICATION_ALWAYS\' : monthDay | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="interval.md_to" theme="bootstrap" name="md_to">\n <ui-select-match>{{$select.selected === \'always\' ? \'APPLICATION_ALWAYS\' : $select.selected | translate}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search">\n {{monthDay === \'always\' ? \'APPLICATION_ALWAYS\' : monthDay | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="interval.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{month.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="interval.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{month.name | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </div>\n\n <div id="customInterval" class="app-settings" ng-slide-down="interval.intType == \'list\'" lazy-render duration="1">\n\n <!-- START INTERVALS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.interval.IntervalId.$touched || forms.interval.$submitted) && forms.interval.IntervalId.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERVALS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="interval.IntervalId" theme="bootstrap" name="IntervalId" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="interval.id as interval in Intervals | filter: $select.search">\n {{interval.name | translate}}\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="Intervals.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_INTERVAL_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/tools/intervals/list">{{\'APPLICATION_INTERVALS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="(forms.interval.IntervalId.$touched || forms.interval.$submitted) && forms.interval.IntervalId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERVALS -->\n\n </div>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <button class="btn green-haze" type="submit" ng-click="goNext()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n </form>\n</wz-step>\n\n<wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n</wz-step>\n</wizard>\n</div>\n</div>\n<!-- END Portlet PORTLET-->\n</div>\n</div>\n<!-- END PAGE CONTENT-->\n'), -a.put("app/channels/voice/voicemail/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-envelope-letter"></i>\n <a href="#">{{ \'APPLICATION_VOICEMAILS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-envelope-letter font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_VOICEMAILS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <a class="btn green-jungle" href="/channels/voice/voicemails/wizard">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_VOICEMAIL\' | translate }}\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/voicemail/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getVoicemail()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-envelope-letter"></i>\n <a href="/channels/voice/voicemails/list">{{ \'APPLICATION_VOICEMAILS\' | translate }}</a>\n <i data-ng-show="voicemail" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="voicemail">\n <a href="#">{{voicemail.mailbox}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET main.channels -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/voicemail.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{voicemail.mailbox}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.channels.voice.voicemails.view.settings\')}">\n <a data-ng-href="/channels/voice/voicemails/view/{{voicemail.uniqueid}}/settings"><i class="icon-settings"></i>{{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.channels.voice.voicemails.view.messages\')}">\n <a data-ng-href="/channels/voice/voicemails/view/{{voicemail.uniqueid}}/messages"><i class="icon-speech"></i>{{ \'APPLICATION_MESSAGES\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET main.channels -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/channels/voice/voicemail/view/view.messages.html",'<div class="row" data-ng-init="getMessages()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_MESSAGES\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns data-ng-if="gridOptions" ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/voice/voicemail/view/view.settings.html",'<div class="row" data-ng-init="getContexts()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_VOICEMAIL\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{ \'APPLICATION_ADVANCED\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateVoiceVoicemail()" novalidate>\n\n <!-- START FULLNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.$submitted && forms.general.fullname.$invalid}">\n <label class="control-label">{{\'APPLICATION_FULLNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="fullname" placeholder="{{\'APPLICATION_FULLNAME\' | translate}}" class="form-control" data-ng-model="voicemail.fullname" required/>\n <span data-ng-show="forms.general.$submitted && forms.general.fullname.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FULLNAME -->\n\n <!-- START EMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.$submitted && forms.general.email.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="email" name="email" placeholder="{{\'APPLICATION_EMAIL\' | translate}}" class="form-control" data-ng-model="voicemail.email" required/>\n <span data-ng-show="forms.general.$submitted && forms.general.host.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.$submitted && forms.general.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_NEW_PASSWORD\' | translate}}</label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_NEW_PASSWORD\' | translate}}" class="form-control" data-ng-model="voicemail.password" />\n <span data-ng-show="forms.general.$submitted && forms.general.password.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START CONFIRM PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.$submitted && forms.general.rpassword.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONFIRM_PASSWORD\' | translate}}</label>\n <input type="password" name="rpassword" placeholder="{{\'APPLICATION_CONFIRM_PASSWORD\' | translate}}" class="form-control" data-ng-model="voicemail.rpassword" nx-equal="voicemail.password"/>\n <span data-ng-show="forms.general.$submitted && (forms.general.rpassword.$invalid || forms.general.rpassword.$invalid)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_PASSWORD\' | translate}}.\n </span>\n </div>\n <!-- END CONFIRM PASSWORD -->\n\n <!-- START MAILBOX -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.$submitted && forms.general.mailbox.$invalid}">\n <label class="control-label">{{\'APPLICATION_MAILBOX\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="mailbox" placeholder="{{\'APPLICATION_MAILBOX\' | translate}}" class="form-control" data-ng-model="voicemail.mailbox" required readonly/>\n <span data-ng-show="forms.general.$submitted && forms.general.mailbox.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MAILBOX -->\n\n <!-- START CONTEXT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.context.$touched || forms.general.$submitted) && forms.general.context.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONTEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="voicemail.context" name="context" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="context.name as context in voiceContexts | filter: $select.search">\n <div ng-bind-html="context.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CONTEXT\' | translate }}\n </span>\n <span data-ng-show="(forms.general.context.$touched || forms.general.$submitted) && forms.general.context.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONTEXT -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n <!-- ADVANCED TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.advanced" data-ng-submit="forms.general.$valid && forms.advanced.$valid && updateVoiceVoicemail()" novalidate>\n\n <!-- START TIMEZONE -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.advanced.$submitted && forms.advanced.tz.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEZONE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="mailbox" placeholder="{{\'APPLICATION_TIMEZONE\' | translate}}" class="form-control" data-ng-model="voicemail.tz" required/>\n <span data-ng-show="forms.advanced.$submitted && forms.advanced.tz.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEZONE -->\n\n <!-- START ATTACH -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.attach.$touched || forms.advanced.$submitted) && forms.advanced.attach.$invalid}">\n <label class="control-label">{{\'APPLICATION_ATTACH\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="voicemail.attach"\n type="checkbox"\n switch-active="{{ switch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ switch.onColor }}"\n switch-off-color="{{ switch.offColor }}"\n switch-animate="{{ switch.animate }}"\n switch-size="{{ switch.size }}"\n switch-label="{{ switch.label }}"\n switch-icon="{{ switch.icon }}"\n switch-radio-off="{{ switch.radioOff }}"\n switch-label-width="{{ switch.labelWidth }}"\n switch-handle-width="{{ switch.handleWidth }}"\n ng-true-value="\'yes\'"\n ng-false-value="\'no\'">\n </div>\n <!-- END ATTACH -->\n\n <!-- START ENVELOPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.envelope.$touched || forms.advanced.$submitted) && forms.advanced.envelope.$invalid}">\n <label class="control-label">{{\'APPLICATION_ENVELOPE\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="voicemail.envelope"\n type="checkbox"\n switch-active="{{ switch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ switch.onColor }}"\n switch-off-color="{{ switch.offColor }}"\n switch-animate="{{ switch.animate }}"\n switch-size="{{ switch.size }}"\n switch-label="{{ switch.label }}"\n switch-icon="{{ switch.icon }}"\n switch-radio-off="{{ switch.radioOff }}"\n switch-label-width="{{ switch.labelWidth }}"\n switch-handle-width="{{ switch.handleWidth }}"\n ng-true-value="\'yes\'"\n ng-false-value="\'no\'">\n </div>\n <!-- END ENVELOPE -->\n\n <!-- START DELETE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.delete.$touched || forms.advanced.$submitted) && forms.advanced.delete.$invalid}">\n <label class="control-label">{{\'APPLICATION_DELETE\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="voicemail.delete"\n type="checkbox"\n switch-active="{{ switch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ switch.onColor }}"\n switch-off-color="{{ switch.offColor }}"\n switch-animate="{{ switch.animate }}"\n switch-size="{{ switch.size }}"\n switch-label="{{ switch.label }}"\n switch-icon="{{ switch.icon }}"\n switch-radio-off="{{ switch.radioOff }}"\n switch-label-width="{{ switch.labelWidth }}"\n switch-handle-width="{{ switch.handleWidth }}"\n ng-true-value="\'yes\'"\n ng-false-value="\'no\'">\n </div>\n <!-- END DELETE -->\n\n <!-- START EMAIL_BODY -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_EMAIL_BODY\' | translate}}</label>\n <textarea type="text" name="emailbody" placeholder="{{\'APPLICATION_EMAIL_BODY\' | translate}}" class="form-control" data-ng-model="voicemail.emailbody"></textarea>\n </div>\n <!-- END EMAIL_BODY -->\n\n <!-- START EMAIL_SUBJECT -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_EMAIL_SUBJECT\' | translate}}</label>\n <textarea type="text" name="emailsubject" placeholder="{{\'APPLICATION_EMAIL_SUBJECT\' | translate}}" class="form-control" data-ng-model="voicemail.emailsubject"></textarea>\n </div>\n <!-- END EMAIL_SUBJECT -->\n\n <!-- START MAX_SECONDS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.maxsecs.$touched || forms.advanced.$submitted) && forms.advanced.maxsecs.$invalid}">\n <label class="control-label">{{\'APPLICATION_MAX_SECONDS\' | translate}}</label>\n <input type="number" min="0" name="maxsecs" placeholder="{{\'APPLICATION_MAX_SECONDS\' | translate}}" class="form-control" data-ng-model="voicemail.maxsecs" required/>\n <span data-ng-show="(forms.advanced.maxsecs.$touched || forms.advanced.$submitted) && forms.advanced.maxsecs.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MAX_SECONDS -->\n\n <!-- START MAX_MESSAGES -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.maxmsg.$touched || forms.advanced.$submitted) && forms.advanced.maxmsg.$invalid}">\n <label class="control-label">{{\'APPLICATION_MAX_MESSAGES\' | translate}}</label>\n <input type="number" min="0" name="maxmsg" placeholder="{{\'APPLICATION_MAX_MESSAGES\' | translate}}" class="form-control" data-ng-model="voicemail.maxmsg" required/>\n <span data-ng-show="(forms.advanced.maxmsg.$touched || forms.advanced.$submitted) && forms.advanced.maxmsg.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MAX_MESSAGES -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/channels/voice/voicemail/wizard/wizard.html",'<div class="col-md-12" data-ng-init="initWizard()">\n <!-- BEGIN PAGE HEADER-->\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-spinner"></i>\n <a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-earphones-alt"></i>\n <a href="#">{{ \'APPLICATION_VOICE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-envelope-letter"></i>\n <a href="/channels/voice/voicemails/list">{{ \'APPLICATION_VOICEMAILS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-options"></i>\n <a href="#">{{ \'APPLICATION_WIZARD\' | translate }}</a>\n </li>\n </ul>\n </div>\n <!-- END PAGE HEADER-->\n\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered" data-ng-init="getFirstFreeMailbox()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-envelope-letter font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_VOICEMAIL\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_GENERAL\' | translate}}" canexit="exitValidation(form.general.$valid)">\n <form name="form.general" novalidate>\n\n <!-- START FULLNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': form.general.$submitted && form.general.fullname.$invalid}">\n <label class="control-label">{{\'APPLICATION_FULLNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="fullname" placeholder="{{\'APPLICATION_FULLNAME\' | translate}}" class="form-control" data-ng-model="item.fullname" required/>\n <span data-ng-show="form.general.$submitted && form.general.fullname.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FULLNAME -->\n\n <!-- START EMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': form.general.$submitted && form.general.email.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="email" name="email" placeholder="{{\'APPLICATION_EMAIL\' | translate}}" class="form-control" data-ng-model="item.email" required/>\n <span data-ng-show="form.general.$submitted && form.general.host.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': form.general.$submitted && form.general.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.password" required/>\n <span data-ng-show="form.general.$submitted && form.general.password.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START CONFIRM PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': form.general.$submitted && form.general.rpassword.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONFIRM_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="rpassword" placeholder="{{\'APPLICATION_CONFIRM_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.rpassword" nx-equal="item.password" required/>\n <span data-ng-show="form.general.$submitted && (form.general.rpassword.$invalid || form.general.rpassword.$invalid)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_PASSWORD\' | translate}}.\n </span>\n </div>\n <!-- END CONFIRM PASSWORD -->\n\n <!-- START MAILBOX -->\n <div class="form-group" data-ng-class="{\'has-error\': form.general.$submitted && form.general.mailbox.$invalid}">\n <label class="control-label">{{\'APPLICATION_MAILBOX\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="mailbox" placeholder="{{\'APPLICATION_MAILBOX\' | translate}}" class="form-control" data-ng-model="item.mailbox" required readonly/>\n <span data-ng-show="form.general.$submitted && form.general.mailbox.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MAILBOX -->\n\n <button class="btn green-haze" type="submit" ng-click="next()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END PORTLET-->\n</div>\n'),a.put("app/contactmanager/company/list/create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_COMPANY\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="forms.company" novalidate>\n <div class="row">\n <div class="col-md-6">\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.company.name.$touched || forms.company.$submitted) && forms.company.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(forms.cmopany.name.$touched || forms.company.$submitted) && forms.company.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START VAT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.company.vat.$touched || forms.company.$submitted) && forms.company.vat.$invalid}">\n <label class="control-label">{{\'APPLICATION_VAT\' | translate}}</label>\n <input type="text" name="vat" placeholder="{{\'APPLICATION_VAT\' | translate}}" class="form-control" data-ng-model="item.vat"/>\n <span data-ng-show="(forms.cmopany.vat.$touched || forms.company.$submitted) && forms.company.vat.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END VAT -->\n\n <!-- START COMPANYID -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.company.companyId.$touched || forms.company.$submitted) && forms.company.companyId.$invalid}">\n <label class="control-label">{{\'APPLICATION_COMPANY_ID\' | translate}}</label>\n <input type="text" name="companyId" placeholder="{{\'APPLICATION_COMPANY_ID\' | translate}}" class="form-control" data-ng-model="item.companyId"/>\n <span data-ng-show="(forms.cmopany.companyId.$touched || forms.company.$submitted) && forms.company.companyId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END COMPANYID -->\n\n <!-- START WEBSITE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.company.website.$touched || forms.company.$submitted) && forms.company.website.$invalid}">\n <label class="control-label">{{\'APPLICATION_WEBSITE\' | translate}}</label>\n <input type="text" name="website" placeholder="{{\'APPLICATION_WEBSITE\' | translate}}" class="form-control" data-ng-model="item.website"/>\n <span data-ng-show="(forms.cmopany.website.$touched || forms.company.$submitted) && forms.company.website.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END WEBSITE -->\n\n <!-- START EMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.company.email.$touched || forms.company.$submitted) && forms.company.email.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}</label>\n <input type="email" name="email" placeholder="{{\'APPLICATION_EMAIL\' | translate}}" class="form-control" data-ng-model="item.email"/>\n <span data-ng-show="(forms.cmopany.email.$touched || forms.company.$submitted) && forms.company.email.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n\n </div>\n <div class="col-md-6">\n <!-- START PHONE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.company.phone.$touched || forms.company.$submitted) && forms.company.phone.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}</label>\n <input type="text" name="phone" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="item.phone"/>\n <span data-ng-show="(forms.cmopany.phone.$touched || forms.company.$submitted) && forms.company.phone.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PHONE -->\n\n <!-- START FAX -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.company.fax.$touched || forms.company.$submitted) && forms.company.fax.$invalid}">\n <label class="control-label">{{\'APPLICATION_FAX\' | translate}}</label>\n <input type="text" name="fax" placeholder="{{\'APPLICATION_FAX\' | translate}}" class="form-control" data-ng-model="item.fax"/>\n <span data-ng-show="(forms.cmopany.fax.$touched || forms.company.$submitted) && forms.company.fax.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FAX -->\n\n <!-- START TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.company.type.$touched || forms.company.$submitted) && forms.company.type.$invalid}">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}</label>\n <input type="text" name="type" placeholder="{{\'APPLICATION_TYPE\' | translate}}" class="form-control" data-ng-model="item.type"/>\n <span data-ng-show="(forms.cmopany.type.$touched || forms.company.$submitted) && forms.company.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TYPE -->\n\n <!-- START DOMAIN -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.company.emailDomain.$touched || forms.company.$submitted) && forms.company.emailDomain.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL_DOMAIN\' | translate}}</label>\n <input type="text" name="domain" placeholder="{{\'APPLICATION_EMAIL_DOMAIN\' | translate}}" class="form-control" data-ng-model="item.emailDomain"/>\n <span data-ng-show="(forms.cmopany.emailDomain.$touched || forms.company.$submitted) && forms.company.emailDomain.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DOMAIN -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n </div>\n</div>\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="forms.company.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'), -a.put("app/contactmanager/company/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-users"></i>\n <a href="#">{{ \'APPLICATION_CONTACT_MANAGER\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-briefcase"></i>\n <a href="/contactmanager/companies/list">{{ \'APPLICATION_COMPANIES\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-briefcase font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_COMPANIES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <button class="btn green-jungle " ng-click="create()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_COMPANY\' | translate }}\n </button>\n </div>\n <!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> -->\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/contactmanager/company/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getCompany()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-users"></i>\n <a href="#">{{ \'APPLICATION_CONTACT_MANAGER\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-briefcase"></i>\n <a href="/contactmanager/companies/list">{{ \'APPLICATION_COMPANIES\' | translate }}</a>\n <i data-ng-show="company" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="company">\n <a href="#">{{company.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/company.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{company.name}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.contactmanager.companies.view.settings\')}">\n <a data-ng-href="/contactmanager/companies/view/{{company.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/contactmanager/company/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_COMPANY\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{ \'APPLICATION_ADDRESS\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{ \'APPLICATION_SHIPMENT_ADDRESS\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateCompany()" novalidate>\n <div class="row">\n <div class="col-md-6">\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="company.name" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START VAT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.vat.$touched || forms.general.$submitted) && forms.general.vat.$invalid}">\n <label class="control-label">{{\'APPLICATION_VAT\' | translate}}</label>\n <input type="text" name="vat" placeholder="{{\'APPLICATION_VAT\' | translate}}" class="form-control" data-ng-model="company.vat"/>\n <span data-ng-show="(forms.cmopany.vat.$touched || forms.general.$submitted) && forms.general.vat.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END VAT -->\n\n <!-- START COMPANYID -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.companyId.$touched || forms.general.$submitted) && forms.general.companyId.$invalid}">\n <label class="control-label">{{\'APPLICATION_COMPANY_ID\' | translate}}</label>\n <input type="text" name="companyId" placeholder="{{\'APPLICATION_COMPANY_ID\' | translate}}" class="form-control" data-ng-model="company.companyId"/>\n <span data-ng-show="(forms.cmopany.companyId.$touched || forms.general.$submitted) && forms.general.companyId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END COMPANYID -->\n\n <!-- START WEBSITE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.website.$touched || forms.general.$submitted) && forms.general.website.$invalid}">\n <label class="control-label">{{\'APPLICATION_WEBSITE\' | translate}}</label>\n <input type="text" name="website" placeholder="{{\'APPLICATION_WEBSITE\' | translate}}" class="form-control" data-ng-model="company.website"/>\n <span data-ng-show="(forms.cmopany.website.$touched || forms.general.$submitted) && forms.general.website.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END WEBSITE -->\n\n <!-- START EMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.email.$touched || forms.general.$submitted) && forms.general.email.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}</label>\n <input type="email" name="email" placeholder="{{\'APPLICATION_EMAIL\' | translate}}" class="form-control" data-ng-model="company.email"/>\n <span data-ng-show="(forms.cmopany.email.$touched || forms.general.$submitted) && forms.general.email.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n </div>\n <div class="col-md-6">\n <!-- START PHONE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.phone.$touched || forms.general.$submitted) && forms.general.phone.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}</label>\n <input type="text" name="phone" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="company.phone"/>\n <span data-ng-show="(forms.cmopany.phone.$touched || forms.general.$submitted) && forms.general.phone.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PHONE -->\n\n <!-- START FAX -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.fax.$touched || forms.general.$submitted) && forms.general.fax.$invalid}">\n <label class="control-label">{{\'APPLICATION_FAX\' | translate}}</label>\n <input type="text" name="fax" placeholder="{{\'APPLICATION_FAX\' | translate}}" class="form-control" data-ng-model="company.fax"/>\n <span data-ng-show="(forms.cmopany.fax.$touched || forms.general.$submitted) && forms.general.fax.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FAX -->\n\n <!-- START TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.type.$touched || forms.general.$submitted) && forms.general.type.$invalid}">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}</label>\n <input type="text" name="type" placeholder="{{\'APPLICATION_TYPE\' | translate}}" class="form-control" data-ng-model="company.type"/>\n <span data-ng-show="(forms.cmopany.type.$touched || forms.general.$submitted) && forms.general.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TYPE -->\n\n <!-- START DOMAIN -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.emailDomain.$touched || forms.general.$submitted) && forms.general.emailDomain.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL_DOMAIN\' | translate}}</label>\n <input type="text" name="domain" placeholder="{{\'APPLICATION_EMAIL_DOMAIN\' | translate}}" class="form-control" data-ng-model="company.emailDomain"/>\n <span data-ng-show="(forms.cmopany.emailDomain.$touched || forms.general.$submitted) && forms.general.emailDomain.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DOMAIN -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="company.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n </div>\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.address" data-ng-submit="forms.address.$valid && updateCompany()" novalidate>\n <!-- START STREET -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.address.street.$touched || forms.address.$submitted) && forms.address.street.$invalid}">\n <label class="control-label">{{\'APPLICATION_STREET\' | translate}}</label>\n <input type="text" name="street" placeholder="{{\'APPLICATION_STREET\' | translate}}" class="form-control" data-ng-model="company.street"/>\n <span data-ng-show="(forms.address.street.$touched || forms.address.$submitted) && forms.address.street.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END STREET -->\n\n <!-- START POSTALCODE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.address.postalCode.$touched || forms.address.$submitted) && forms.address.postalCode.$invalid}">\n <label class="control-label">{{\'APPLICATION_POSTALCODE\' | translate}}</label>\n <input type="text" name="postalCode" placeholder="{{\'APPLICATION_POSTALCODE\' | translate}}" class="form-control" data-ng-model="company.postalCode"/>\n <span data-ng-show="(forms.address.postalCode.$touched || forms.address.$submitted) && forms.address.postalCode.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END POSTALCODE -->\n\n <!-- START CITY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.address.city.$touched || forms.address.$submitted) && forms.address.city.$invalid}">\n <label class="control-label">{{\'APPLICATION_CITY\' | translate}}</label>\n <input type="text" name="city" placeholder="{{\'APPLICATION_CITY\' | translate}}" class="form-control" data-ng-model="company.city"/>\n <span data-ng-show="(forms.address.city.$touched || forms.address.$submitted) && forms.address.city.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CITY -->\n <!-- START COUNTRY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.address.country.$touched || forms.address.$submitted) && forms.address.country.$invalid}">\n <label class="control-label">{{\'APPLICATION_COUNTRY\' | translate}}</label>\n <input type="text" name="country" placeholder="{{\'APPLICATION_COUNTRY\' | translate}}" class="form-control" data-ng-model="company.country"/>\n <span data-ng-show="(forms.address.country.$touched || forms.address.$submitted) && forms.address.country.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END COUNTRY -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <div class="tab-pane" id="tab_1_3">\n <form name="forms.shipmentAddress" data-ng-submit="forms.shipmentAddress.$valid && updateCompany()" novalidate>\n <!-- START STREET -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.shipmentAddress.sStreet.$touched || forms.shipmentAddress.$submitted) && forms.shipmentAddress.sStreet.$invalid}">\n <label class="control-label">{{\'APPLICATION_STREET\' | translate}}</label>\n <input type="text" name="sStreet" placeholder="{{\'APPLICATION_STREET\' | translate}}" class="form-control" data-ng-model="company.sStreet"/>\n <span data-ng-show="(forms.shipmentAddress.sStreet.$touched || forms.shipmentAddress.$submitted) && forms.shipmentAddress.sStreet.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END STREET -->\n\n <!-- START POSTALCODE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.shipmentAddress.sPostalCode.$touched || forms.shipmentAddress.$submitted) && forms.shipmentAddress.sPostalCode.$invalid}">\n <label class="control-label">{{\'APPLICATION_POSTALCODE\' | translate}}</label>\n <input type="text" name="sPostalCode" placeholder="{{\'APPLICATION_POSTALCODE\' | translate}}" class="form-control" data-ng-model="company.sPostalCode"/>\n <span data-ng-show="(forms.shipmentAddress.sPostalCode.$touched || forms.shipmentAddress.$submitted) && forms.shipmentAddress.sPostalCode.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END POSTALCODE -->\n\n <!-- START CITY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.shipmentAddress.sCity.$touched || forms.shipmentAddress.$submitted) && forms.shipmentAddress.sCity.$invalid}">\n <label class="control-label">{{\'APPLICATION_CITY\' | translate}}</label>\n <input type="text" name="sCity" placeholder="{{\'APPLICATION_CITY\' | translate}}" class="form-control" data-ng-model="company.sCity"/>\n <span data-ng-show="(forms.shipmentAddress.sCity.$touched || forms.shipmentAddress.$submitted) && forms.shipmentAddress.sCity.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CITY -->\n <!-- START COUNTRY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.shipmentAddress.sCountry.$touched || forms.shipmentAddress.$submitted) && forms.shipmentAddress.sCountry.$invalid}">\n <label class="control-label">{{\'APPLICATION_COUNTRY\' | translate}}</label>\n <input type="text" name="sCountry" placeholder="{{\'APPLICATION_COUNTRY\' | translate}}" class="form-control" data-ng-model="company.sCountry"/>\n <span data-ng-show="(forms.shipmentAddress.sCountry.$touched || forms.shipmentAddress.$submitted) && forms.shipmentAddress.sCountry.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END COUNTRY -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/contactmanager/contact/list/copy.modal.html",'<div class="modal-header" data-ng-init="getLists()">\n <h3 class="modal-title">{{ \'APPLICATION_COPY_CONTACT\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="forms.copy" novalidate>\n <!-- START LIST -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.ListId.$invalid && forms.csv.$submitted}">\n <label class="control-label">{{\'APPLICATION_LIST\' | translate}}</label>\n <ui-select data-ng-model="item.ListId" theme="bootstrap" name="ListId" data-ng-disabled="disabled" data-ng-change="getCustomFields()" required>\n <ui-select-match placeholder="{{ \'APPLICATION_LIST\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="list.id as list in lists | filter: $select.search">\n <div ng-bind-html="list.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.csv.ListId.$invalid && forms.csv.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END LIST -->\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="forms.copy.$invalid || !forms.copy.ListId">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/contactmanager/contact/list/import.modal.html",'<div class="modal-header" data-ng-init="getLists();getCompanies();">\n <h3 class="modal-title">{{ \'APPLICATION_IMPORT_FROM_CSV\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="forms.csv" novalidate>\n <div class="row">\n <div class="col-md-6">\n <!-- START LIST -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.ListId.$invalid && forms.csv.$submitted}">\n <label class="control-label">{{\'APPLICATION_LIST\' | translate}}</label>\n <ui-select data-ng-model="item.ListId" theme="bootstrap" name="ListId" data-ng-disabled="disabled" data-ng-change="getCustomFields()">\n <ui-select-match placeholder="{{ \'APPLICATION_LIST\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="list.id as list in lists | filter: $select.search">\n <div ng-bind-html="list.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.csv.ListId.$invalid && forms.csv.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END LIST -->\n\n <!-- START FIRSTNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.csv.firstName.$touched || forms.general.$submitted) && forms.csv.firstName.$invalid}">\n <label class="control-label">{{\'APPLICATION_FIRSTNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.firstName" theme="bootstrap" name="firstName" data-ng-disabled="disabled" required>\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_FIRSTNAME\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.csv.firstName.$touched || forms.csv.$submitted) && forms.csv.firstName.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FIRSTNAME -->\n\n <!-- START LASTNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.lastName.$invalid && forms.csv.$submitted}">\n <label class="control-label">{{\'APPLICATION_LASTNAME\' | translate}}</label>\n <ui-select data-ng-model="item.lastName" theme="bootstrap" name="lastName" data-ng-disabled="disabled">\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_LASTNAME\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.csv.lastName.$invalid && forms.csv.$touched" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END LASTNAME -->\n\n <!-- START STREET -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.street.$invalid && forms.csv.$submitted}">\n <label class="control-label">{{\'APPLICATION_STREET\' | translate}}</label>\n <ui-select data-ng-model="item.street" theme="bootstrap" name="street" data-ng-disabled="disabled">\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_STREET\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.csv.street.$invalid && forms.csv.$touched" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END STREET -->\n\n <!-- START POSTALCODE -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.postalCode.$invalid && forms.csv.$submitted}">\n <label class="control-label">{{\'APPLICATION_POSTALCODE\' | translate}}</label>\n <ui-select data-ng-model="item.postalCode" theme="bootstrap" name="postalCode" data-ng-disabled="disabled">\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_POSTALCODE\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.csv.postalCode.$invalid && forms.csv.$touched" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END POSTALCODE -->\n\n <!-- START CITY -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.city.$invalid && forms.csv.$submitted}">\n <label class="control-label">{{\'APPLICATION_CITY\' | translate}}</label>\n <ui-select data-ng-model="item.city" theme="bootstrap" name="city" data-ng-disabled="disabled">\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_CITY\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.csv.city.$invalid && forms.csv.$touched" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CITY -->\n\n <!-- START PHONE -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.phone.$invalid && forms.csv.$submitted}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}</label>\n <ui-select data-ng-model="item.phone" theme="bootstrap" name="phone" data-ng-disabled="disabled">\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_PHONE\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.csv.phone.$invalid && forms.phone.$touched" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PHONE -->\n\n <!-- START MOBILE -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.mobile.$invalid && forms.csv.$submitted}">\n <label class="control-label">{{\'APPLICATION_MOBILE\' | translate}}</label>\n <ui-select data-ng-model="item.mobile" theme="bootstrap" name="mobile" data-ng-disabled="disabled">\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_MOBILE\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.csv.mobile.$invalid && forms.mobile.$touched" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MOBILE -->\n\n </div>\n <div class="col-md-6">\n\n <!-- START COUNTRY -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.country.$invalid && forms.csv.$submitted}">\n <label class="control-label">{{\'APPLICATION_COUNTRY\' | translate}}</label>\n <ui-select data-ng-model="item.country" theme="bootstrap" name="country" data-ng-disabled="disabled">\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_COUNTRY\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.csv.country.$invalid && forms.csv.$touched" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END COUNTRY -->\n\n <!-- START DATEOFBIRTH -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.dateOfBirth.$invalid && forms.csv.$submitted}">\n <label class="control-label">{{\'APPLICATION_DATEOFBIRTH\' | translate}}</label>\n <ui-select data-ng-model="item.dateOfBirth" theme="bootstrap" name="dateOfBirth" data-ng-disabled="disabled">\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_DATEOFBIRTH\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.csv.dateOfBirth.$invalid && forms.csv.$touched" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DATEOFBIRTH -->\n\n <!-- START TAGS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.tags.$invalid && forms.csv.$submitted}">\n <label class="control-label">{{\'APPLICATION_TAGS\' | translate}}</label>\n <ui-select multiple data-ng-model="item.tags" theme="bootstrap" name="tags" data-ng-disabled="disabled">\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_TAGS\' | translate }}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.csv.tags.$invalid && forms.csv.$touched" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TAGS -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.description.$invalid && forms.csv.$submitted}">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <ui-select data-ng-model="item.description" theme="bootstrap" name="description" data-ng-disabled="disabled">\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_DESCRIPTION\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.csv.description.$invalid && forms.csv.$touched" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START FAX -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.fax.$invalid && forms.csv.$submitted}">\n <label class="control-label">{{\'APPLICATION_FAX\' | translate}}</label>\n <ui-select data-ng-model="item.fax" theme="bootstrap" name="fax" data-ng-disabled="disabled">\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_FAX\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.csv.fax.$invalid && forms.fax.$touched" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FAX -->\n\n <!-- START EMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.email.$invalid && forms.general.$submitted}">\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}</label>\n <ui-select data-ng-model="item.email" theme="bootstrap" name="email" data-ng-disabled="disabled">\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_EMAIL\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.csv.email.$invalid && forms.csv.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n\n <!-- START COMPANY -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.csv.CompanyId.$invalid && forms.csv.$submitted}">\n <label class="control-label">{{\'APPLICATION_COMPANY\' | translate}}</label>\n <ui-select data-ng-model="item.CompanyId" theme="bootstrap" name="CompanyId" data-ng-disabled="!companies.length">\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_COMPANY\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="company.id as company in companies | filter: $select.search">\n <div ng-bind-html="company.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="companies.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_COMPANIES_AVAILABLE\' | translate }}\n </p>\n </div>\n <span data-ng-show="forms.csv.CompanyId.$invalid && forms.csv.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END COMPANY -->\n\n </div>\n </div>\n\n <!-- START CUSTOMFIELDS -->\n <div data-ng-repeat="customField in customFields">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.csv[customField.name].$touched || forms.general.$submitted) && forms.csv[customField.name].$invalid}">\n <label class="control-label">{{customField.alias}}<span data-ng-if="customField.required" class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item[customField.name]" theme="bootstrap" name="{{customField.name}}" data-ng-disabled="disabled" data-ng-required="customField.required">\n <ui-select-match allow-clear placeholder="{{customField.alias}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.csv[customField.name].$touched || forms.csv.$submitted) && forms.csv[customField.name].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <!-- END CUSTOMFIELDS -->\n\n <div>\n <p>{{\'APPLICATION_IMPORT_SUCCEEDED\' | translate}}: {{import.succeeded}}/{{csvLength}}</p>\n <div class="progress progress-sm" style="">\n <div class="progress-bar progress-bar-info" role="progressbar" ng-style="{ \'width\': import.success + \'%\' }"></div>\n </div>\n </div>\n <div>\n <p>{{\'APPLICATION_IMPORT_FAILED\' | translate}}: {{import.failed}}/{{csvLength}}</p>\n <div class="progress progress-sm" style="">\n <div class="progress-bar progress-bar-danger" role="progressbar" ng-style="{ \'width\': import.fail + \'%\' }"></div>\n </div>\n </div>\n <div data-ng-if="failedRows">\n <p>{{\'APPLICATION_FAILED_ROWS\' | translate}}:</p>\n <div class="failed-contacts">{{failedRows}}</div>\n</div>\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="start()" ng-disabled="forms.csv.$invalid || submitted">{{ \'APPLICATION_SUBMIT\' | translate }}</button>\n <button class="btn default" type="button" ng-click="close()" data-ng-if="!importing">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n <button class="btn default" type="button" ng-click="stop()" data-ng-if="importing">{{ \'APPLICATION_STOP\' | translate }}</button>\n</div>\n'), -a.put("app/contactmanager/contact/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-users"></i>\n <a href="#">{{ \'APPLICATION_CONTACT_MANAGER\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-users"></i>\n <a href="/contactmanager/contacts/list">{{ \'APPLICATION_CONTACTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="fa fa-users font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_CONTACTS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length && !Auth.isAgent()">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <button data-ng-if="gridOptions.data.length" class="btn purple" ng-csv="extractAll()" lazy-load="true" filename="Contacts.csv" csv-label="true">\n <i class="fa fa-download"></i> {{ \'APPLICATION_EXPORT_TO_CSV\' | translate }}\n </button>\n <button class="btn green-jungle" data-ng-click="newContact({CompanyId:gridOptions.columnDefs[7].filter.term || null,ListId:gridOptions.columnDefs[6].filter.term || null});">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_CONTACT\' | translate }}\n </button>\n <span class="btn default btn-file" data-ng-if="!Auth.isAgent()">\n <span class="fileinput-new">\n <i class="icon-cloud-upload"></i> {{\'APPLICATION_IMPORT_FROM_CSV\' | translate}}</span>\n <input type="file" accept=".csv" nv-file-select="" uploader="uploader"/>\n </span>\n </div>\n <!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> -->\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div data-ng-if="gridOptions" ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <span us-spinner spinner-key="grid-spinner"></span>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/contactmanager/customfield/list/create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_CUSTOM_FIELD\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="forms.customField" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.customField.name.$touched || forms.customField.$submitted) && forms.customField.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.alias" required/>\n <span data-ng-show="(forms.customField.name.$touched || forms.customField.$submitted) && forms.customField.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.customField.type.$touched || forms.customField.$submitted) && forms.customField.type.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.type" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_TYPE\' | translate }}">{{$translate.instant($select.selected.name)}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types| filter: $select.search">\n {{$translate.instant(type.name)}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.customField.type.$touched || forms.customField.$submitted) && forms.customField.type.$invalid && forms.customField.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TYPE -->\n\n <div ng-slide-down="item.type == \'select\'" lazy-render duration="1">\n <div>\n <label class="control-label">{{\'APPLICATION_CHOICES\' | translate}}</label>\n </div>\n <div class="padding-bottom" ng-repeat="choice in choices">\n <div class="form-group">\n <div class="input-group">\n <input type="text" class="form-control" ng-model="choice.value" required>\n <span class="input-group-btn">\n <button class="btn red" type="button"data-ng-click="removeField($index)" data-ng-disabled="choices.length<=1"><i class="fa fa-times"></i></button>\n </span>\n </div>\n </div>\n </div>\n <button type="button" class="btn btn-sm green padding-bottom" ng-click="addField()">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_CHOICE\' | translate}}\n </button>\n\n </div>\n\n <!-- START REQUIRED -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_REQUIRED\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="item.required"\n type="checkbox"\n switch-active="{{ bsSwitch.isActive }}"\n data-ng-init="item.required = false"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ bsSwitch.onColor }}"\n switch-off-color="{{ bsSwitch.offColor }}"\n switch-animate="{{ bsSwitch.animate }}"\n switch-size="{{ bsSwitch.size }}"\n switch-label="{{ bsSwitch.label }}"\n switch-icon="{{ bsSwitch.icon }}"\n switch-radio-off="{{ bsSwitch.radioOff }}"\n switch-label-width="{{ bsSwitch.labelWidth }}"\n switch-handle-width="{{ bsSwitch.handleWidth }}">\n </div>\n <!-- END REQUIRED -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="forms.customField.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/contactmanager/customfield/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-users"></i>\n <a href="#">{{ \'APPLICATION_CONTACT_MANAGER\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-pencil"></i>\n <a href="/contactmanager/customfields/list">{{ \'APPLICATION_CUSTOM_FIELDS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-pencil font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_CUSTOM_FIELDS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <button class="btn green-jungle " ng-click="create()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_CUSTOM_FIELD\' | translate }}\n </button>\n </div>\n <!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> -->\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/contactmanager/customfield/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getCustomField()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-users"></i>\n <a href="#">{{ \'APPLICATION_CONTACT_MANAGER\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-pencil"></i>\n <a href="/contactmanager/customfields/list">{{ \'APPLICATION_CUSTOM_FIELDS\' | translate }}</a>\n <i data-ng-show="customField" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="customField">\n <a href="#">{{customField.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/customField.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{customField.name}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.contactmanager.customfields.view.settings\')}">\n <a data-ng-href="/contactmanager/customfields/view/{{customField.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/contactmanager/customfield/view/view.settings.html",'<div class="row" data-ng-init="getCustomField()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_CUSTOM_FIELD\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n </div>\n\n <div class="portlet-body">\n <!-- GENERAL TAB -->\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateCustomField()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="customField.alias" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <div ng-slide-down="customField.type == \'select\'" lazy-render duration="1" class="mbottom20">\n <div>\n <label class="control-label">{{\'APPLICATION_CHOICES\' | translate}}</label>\n </div>\n <div class="padding-bottom" ng-repeat="choice in choices">\n <div class="form-group">\n <div class="input-group">\n <input type="text" class="form-control" ng-model="choice.value" required>\n <span class="input-group-btn">\n <button class="btn red" type="button"data-ng-click="removeField($index)" data-ng-disabled="choices.length<=1"><i class="fa fa-times"></i></button>\n </span>\n </div>\n </div>\n </div>\n <button type="button" class="btn btn-sm green padding-bottom" ng-click="addField()">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_CHOICE\' | translate}}\n </button>\n\n </div>\n\n <!-- START REQUIRED -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_REQUIRED\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="customField.required"\n type="checkbox"\n switch-active="{{ bsSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ bsSwitch.onColor }}"\n switch-off-color="{{ bsSwitch.offColor }}"\n switch-animate="{{ bsSwitch.animate }}"\n switch-size="{{ bsSwitch.size }}"\n switch-label="{{ bsSwitch.label }}"\n switch-icon="{{ bsSwitch.icon }}"\n switch-radio-off="{{ bsSwitch.radioOff }}"\n switch-label-width="{{ bsSwitch.labelWidth }}"\n switch-handle-width="{{ bsSwitch.handleWidth }}">\n </div>\n <!-- END REQUIRED -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/contactmanager/list/list/create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_LIST\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="forms.list" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.list.name.$touched || forms.list.$submitted) && forms.list.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(forms.list.name.$touched || forms.list.$submitted) && forms.list.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="forms.list.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/contactmanager/list/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-users"></i>\n <a href="#">{{ \'APPLICATION_CONTACT_MANAGER\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-list-ul"></i>\n <a href="/contactmanager/lists/list">{{ \'APPLICATION_LISTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="fa fa-list-ul font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_LISTS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <!-- <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteLists()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div> -->\n <div class="btn-group">\n <button class="btn green-jungle " ng-click="create()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_LIST\' | translate }}\n </button>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/contactmanager/list/view/create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_CUSTOM_FIELD\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="forms.customField" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.customField.name.$touched || forms.customField.$submitted) && forms.customField.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.alias" required/>\n <span data-ng-show="(forms.customField.name.$touched || forms.customField.$submitted) && forms.customField.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.customField.type.$touched || forms.customField.$submitted) && forms.customField.type.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.type" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_TYPE\' | translate }}">{{$translate.instant($select.selected.name)}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types| filter: $select.search">\n {{$translate.instant(type.name)}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.customField.type.$touched || forms.customField.$submitted) && forms.customField.type.$invalid && forms.customField.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TYPE -->\n\n <div ng-slide-down="item.type == \'select\'" lazy-render duration="1">\n <div>\n <label class="control-label">{{\'APPLICATION_CHOICES\' | translate}}</label>\n </div>\n <div class="padding-bottom" ng-repeat="choice in choices">\n <div class="form-group">\n <div class="input-group">\n <input type="text" class="form-control" ng-model="choice.value" required>\n <span class="input-group-btn">\n <button class="btn red" type="button"data-ng-click="removeField($index)" data-ng-disabled="choices.length<=1"><i class="fa fa-times"></i></button>\n </span>\n </div>\n </div>\n </div>\n <button type="button" class="btn btn-sm green padding-bottom" ng-click="addField()">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_CHOICE\' | translate}}\n </button>\n\n </div>\n\n <!-- START REQUIRED -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_REQUIRED\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="item.required"\n type="checkbox"\n switch-active="{{ bsSwitch.isActive }}"\n data-ng-init="item.required = false"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ bsSwitch.onColor }}"\n switch-off-color="{{ bsSwitch.offColor }}"\n switch-animate="{{ bsSwitch.animate }}"\n switch-size="{{ bsSwitch.size }}"\n switch-label="{{ bsSwitch.label }}"\n switch-icon="{{ bsSwitch.icon }}"\n switch-radio-off="{{ bsSwitch.radioOff }}"\n switch-label-width="{{ bsSwitch.labelWidth }}"\n switch-handle-width="{{ bsSwitch.handleWidth }}">\n </div>\n <!-- END REQUIRED -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="forms.customField.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/contactmanager/list/view/view.agents.html",'<div class="row" data-ng-init="getTeams()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_AGENTS\' | translate}}</span>\n </div>\n </div>\n <div class="note note-warning" data-ng-hide="teams.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_AVAILABLE_TEAMS\' | translate }}\n </p>\n </div>\n <div class="portlet-body">\n <!-- BEGIN FORM-->\n <form action="index.html" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-team">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/contactmanager/list/view/view.customFieldSettings.html",'<div class="row" data-ng-init="getCustomField()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_CUSTOM_FIELD\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n </div>\n\n <div class="portlet-body">\n <!-- GENERAL TAB -->\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateCustomField()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="customField.alias" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <div ng-slide-down="customField.type == \'select\'" lazy-render duration="1" class="mbottom20">\n <div>\n <label class="control-label">{{\'APPLICATION_CHOICES\' | translate}}</label>\n </div>\n <div class="padding-bottom" ng-repeat="choice in choices">\n <div class="form-group">\n <div class="input-group">\n <input type="text" class="form-control" ng-model="choice.value" required>\n <span class="input-group-btn">\n <button class="btn red" type="button"data-ng-click="removeField($index)" data-ng-disabled="choices.length<=1"><i class="fa fa-times"></i></button>\n </span>\n </div>\n </div>\n </div>\n <button type="button" class="btn btn-sm green padding-bottom" ng-click="addField()">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_CHOICE\' | translate}}\n </button>\n\n </div>\n\n <!-- START REQUIRED -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_REQUIRED\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="customField.required"\n type="checkbox"\n switch-active="{{ bsSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ bsSwitch.onColor }}"\n switch-off-color="{{ bsSwitch.offColor }}"\n switch-animate="{{ bsSwitch.animate }}"\n switch-size="{{ bsSwitch.size }}"\n switch-label="{{ bsSwitch.label }}"\n switch-icon="{{ bsSwitch.icon }}"\n switch-radio-off="{{ bsSwitch.radioOff }}"\n switch-label-width="{{ bsSwitch.labelWidth }}"\n switch-handle-width="{{ bsSwitch.handleWidth }}">\n </div>\n <!-- END REQUIRED -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/contactmanager/list/view/view.customFields.html",'<div ui-view class="profile-content">\n<div class="row" data-ng-init="initCustomFields()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_CUSTOM_FIELDS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <button class="btn green-jungle " ng-click="create()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_CUSTOM_FIELD\' | translate }}\n </button>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n</div>\n'),a.put("app/contactmanager/list/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getList()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-users"></i>\n <a href="#">{{ \'APPLICATION_CONTACT_MANAGER\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-list-ul"></i>\n <a href="/contactmanager/lists/list">{{ \'APPLICATION_LISTS\' | translate }}</a>\n <i data-ng-show="list" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="list">\n <a href="#">{{list.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/list.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{list.name}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.contactmanager.lists.view.settings\')}">\n <a data-ng-href="/contactmanager/lists/view/{{list.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li data-ng-if="!list.defaultEntry" data-ng-class="{active: $state.is(\'main.contactmanager.lists.view.agents\')}">\n <a data-ng-href="/contactmanager/lists/view/{{list.id}}/agents">\n <i class="icon-people"></i>\n {{ \'APPLICATION_AGENTS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.contactmanager.lists.view.customfields\')}">\n <a data-ng-href="/contactmanager/lists/view/{{list.id}}/customfields">\n <i class="icon-pencil"></i>\n {{ \'APPLICATION_CUSTOM_FIELDS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/contactmanager/list/view/view.settings.html",'<div class="row" data-ng-init="initVariables()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_LIST\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateList()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="list.name" data-ng-disabled="list.defaultEntry" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START VARIABLES -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.variables.$invalid && forms.general.$submitted}">\n <label class="control-label">{{\'APPLICATION_TD_VARIABLES\' | translate}}</label>\n <ui-select multiple=\'true\' data-ng-model="list.variables" theme="bootstrap" name="variables" limit="10" ng-disabled="disabled">\n <ui-select-match placeholder="{{ \'APPLICATION_TD_VARIABLES\' | translate }}">{{$item.name}}</ui-select-match>\n <ui-select-choices repeat="variable as variable in variables | filter: $select.search">\n {{variable.name}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.general.variables.$invalid && forms.general.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span class="help-block">{{\'MESSAGE_MAX_VARIABLES\' | translate}}</span>\n </div>\n <!-- END VARIABLES -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="list.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'), -a.put("app/dashboard/chat/chat.html",'<div data-ng-switch="Auth.getRole()">\n <div ng-switch-when="agent" data-ng-init="initAgent()">\n <div class="row" style="padding-bottom:10px;">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="table1" name="table1" ui-grid-resize-columns ui-grid-pagination ui-grid-auto-resize class="ui-grid">\n <div class="watermark" data-ng-show="!table1.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n <div ng-switch-default data-ng-init="initRoomStats();initRoutingStats();initSocketListening();">\n <fieldset>\n <legend>\n <span class="caption-subject"> </span><small class="pull-right font-grey-cascade">{{ \'APPLICATION_TODAY_STATS\' | translate }}</small>\n </legend>\n <div class="row">\n <div class="col-md-8">\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat green-haze">\n <div class="visual">\n <i class="fa fa-play"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.new || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_WAITING_NEW_CI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_WAITING_NEW_CI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat blue-madison">\n <div class="visual">\n <i class="icon-bell"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.open || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_OPEN_CI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_OPEN_CI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n <div class ="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat green">\n <div class="visual">\n <i class="icon-options"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.unmanaged || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_UNMANAGED_CI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_UNMANAGED_CI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat purple-plum">\n <div class="visual">\n <i class="icon-like"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.closed || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_CLOSED_CI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_CLOSED_CI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n <div class ="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat yellow-crusta">\n <div class="visual">\n <i class="icon-dislike"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.abandon || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_ABANDONED_CI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_ABANDONED_CI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12" >\n <div class="dashboard-stat yellow-casablanca">\n <div class="visual">\n <i class="icon-calculator"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.new+roomStatus.open+roomStatus.unmanaged+roomStatus.closed+roomStatus.abandon || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_TOTAL_CI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_TOTAL_CI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n </div>\n <div class="col-md-4">\n <canvas class="chart chart-pie" chart-data="charts.interactions.values" chart-labels="charts.interactions.labels" chart-colours="charts.interactions.colours" chart-legend="true"></canvas>\n </div>\n </div>\n <legend>\n <span class="caption-subject"> </span><small class="pull-right font-grey-cascade">{{ \'APPLICATION_INTERACTION_STATS\' | translate }}</small>\n </legend>\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat red-intense">\n <div class="visual">\n <i class="icon-dislike"></i>\n </div>\n <div class="details">\n <div class="number">\n {{routingStats.timeout || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_TIMEOUT_CA\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_TIMEOUT_CA_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat purple">\n <div class="visual">\n <i class="icon-hourglass"></i>\n </div>\n <div class="details">\n <div class="number">\n {{routingStats.waiting || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_WAITING_CA\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_WAITING_CA_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n </fieldset>\n\n</div>\n</div>\n'),a.put("app/dashboard/dashboard.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" id="dashboardView">\n <div class="col-md-12" >\n <div>\n <nav class="navbar navbar-default" role="navigation">\n <div class="navbar-header">\n <button type="button" class="navbar-toggle" data-ng-init="navCollapsed = true" data-ng-click="navCollapsed = !navCollapsed">\n <span class="sr-only">Toggle navigation</span>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n </button>\n </div>\n\n <!-- Collect the nav links, forms, and other content for toggling -->\n <div class="collapse navbar-collapse" ng-class="!navCollapsed && \'in\'" >\n <ul class="nav navbar-nav">\n <li data-ng-class="{active: $state.is(\'main.dashboard.voice\')}">\n <a href="/dashboard/voice">\n <b class=\'icon-earphones-alt\'></b>\n {{ \'APPLICATION_VOICE\' | translate }}\n </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.dashboard.chat\'),\'disabled-link\':!license.chat}" data-ng-if="::((Auth.isAdmin() || Auth.isAgent() || userModules[8]))">\n <a href="{{license.chat ? \'/dashboard/chat\' : \'#\'}}" class="disable-target">\n <b class=\'icon-bubble\'></b>\n {{ \'APPLICATION_CHAT\' | translate }}\n </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.dashboard.mail\'),\'disabled-link\':!license.mail}" data-ng-if="::((Auth.isAdmin() || Auth.isAgent() || userModules[9]))">\n <a href="{{license.mail ? \'/dashboard/mail\' : \'#\'}}" class="disable-target">\n <b class=\'icon-envelope\'></b>\n {{ \'APPLICATION_EMAIL\' | translate }}\n </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.dashboard.fax\'),\'disabled-link\':!license.fax}" data-ng-if="::((Auth.isAdmin() || Auth.isAgent() || userModules[10]))">\n <a href="{{license.fax ? \'/dashboard/fax\' : \'#\'}}" class="disable-target">\n <b class=\'fa fa-fax\'></b>\n {{ \'APPLICATION_FAX\' | translate }}\n </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.dashboard.sms\'),\'disabled-link\':!license.messaging}" data-ng-if="::((Auth.isAdmin() || Auth.isAgent() || userModules[11]))">\n <a href="{{license.messaging ? \'/dashboard/sms\' : \'#\'}}" class="disable-target">\n <b class=\'glyphicon glyphicon-comment\'></b>\n {{ \'APPLICATION_SMS\' | translate }}\n </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.dashboard.openchannel\'),\'disabled-link\':!license.openchannel}" data-ng-if="::((Auth.isAdmin() || Auth.isAgent() || userModules[20]))">\n <a href="{{license.messaging ? \'/dashboard/openchannel\' : \'#\'}}" class="disable-target">\n <b class=\'icon-globe\'></b>\n {{ \'APPLICATION_OPEN_CHANNEL\' | translate }}\n </a>\n </li>\n </ul>\n </div>\n <!-- /.navbar-collapse -->\n </nav>\n </div>\n <div ui-view></div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/dashboard/fax/fax.html",'<div data-ng-switch="Auth.getRole()">\n <div ng-switch-when="agent" data-ng-init="initAgent()">\n <div class="row" style="padding-bottom:10px;">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="table1" name="table1" ui-grid-resize-columns ui-grid-pagination ui-grid-auto-resize class="ui-grid">\n <div class="watermark" data-ng-show="!table1.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n <div ng-switch-default data-ng-init="initRoomStats();initRoutingStats();initSocketListening();">\n <fieldset>\n <legend>\n <span class="caption-subject"> </span><small class="pull-right font-grey-cascade">{{ \'APPLICATION_INTERACTION_STATS\' | translate }}</small>\n </legend>\n <div class="row">\n <div class="col-md-8">\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat green-haze">\n <div class="visual">\n <i class="fa fa-play"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.new || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_NEW_FI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_NEW_FI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat blue-madison">\n <div class="visual">\n <i class="icon-bell"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.open || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_OPEN_FI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_OPEN_FI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat green">\n <div class="visual">\n <i class="icon-options"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.pending || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_PENDING_FI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_PENDING_FI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat purple-plum">\n <div class="visual">\n <i class="icon-like"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.closed || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_CLOSED_FI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_CLOSED_FI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">\n <div class="dashboard-stat yellow-casablanca">\n <div class="visual">\n <i class="icon-calculator"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.new+roomStatus.open+roomStatus.pending+roomStatus.closed || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_TOTAL_FI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_TOTAL_FI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n </div>\n <div class="col-md-4">\n <!-- <div class="portlet light bordered">\n <div class="portlet-body"> -->\n <canvas class="chart chart-pie" chart-data="charts.interactions.values" chart-labels="charts.interactions.labels" chart-colours="charts.interactions.colours" chart-legend="true">\n </canvas>\n <!-- </div>\n </div> -->\n </div>\n </div>\n <legend>\n <span class="caption-subject"> </span><small class="pull-right font-grey-cascade">{{ \'APPLICATION_TODAY_STATS\' | translate }}</small>\n </legend>\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat red-intense">\n <div class="visual">\n <i class="icon-dislike"></i>\n </div>\n <div class="details">\n <div class="number">\n {{routingStats.timeout || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_TIMEOUT_FA\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_TIMEOUT_FA_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat purple">\n <div class="visual">\n <i class="icon-hourglass"></i>\n </div>\n <div class="details">\n <div class="number">\n {{routingStats.waiting || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_WAITING_FA\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_WAITING_FA_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n </fieldset>\n </div>\n'),a.put("app/dashboard/mail/mail.html",'<div data-ng-switch="Auth.getRole()">\n <div ng-switch-when="agent" data-ng-init="initAgent()">\n <div class="row" style="padding-bottom:10px;">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="table1" name="table1" ui-grid-resize-columns ui-grid-pagination ui-grid-auto-resize class="ui-grid">\n <div class="watermark" data-ng-show="!table1.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n\n <!-- <div class="row" style="padding-bottom:10px;">\n <div class="col-md-12"> -->\n <!-- START TABLE -->\n <!-- <div ui-grid="table2" name="table2" ui-grid-resize-columns ui-grid-auto-resize class="ui-grid">\n <div class="watermark" data-ng-show="!table2.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div> -->\n <!-- END TABLE -->\n <!-- </div>\n </div> -->\n </div>\n <div ng-switch-default data-ng-init="initRoomStats();initRoutingStats();initSocketListening();">\n <fieldset>\n <legend>\n <span class="caption-subject"> </span><small class="pull-right font-grey-cascade">{{ \'APPLICATION_INTERACTION_STATS\' | translate }}</small>\n </legend>\n <div class="row">\n <div class="col-md-8">\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat green-haze">\n <div class="visual">\n <i class="fa fa-play"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.new || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_NEW_EI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_NEW_EI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat blue-madison">\n <div class="visual">\n <i class="icon-bell"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.open || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_OPEN_EI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_OPEN_EI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat green">\n <div class="visual">\n <i class="icon-options"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.pending || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_PENDING_EI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_PENDING_EI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat purple-plum">\n <div class="visual">\n <i class="icon-like"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.closed || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_CLOSED_EI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_CLOSED_EI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">\n <div class="dashboard-stat yellow-casablanca">\n <div class="visual">\n <i class="icon-calculator"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.new+roomStatus.open+roomStatus.pending+roomStatus.closed || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_TOTAL_EI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_TOTAL_EI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n </div>\n <div class="col-md-4">\n <!-- <div class="portlet light bordered">\n <div class="portlet-body"> -->\n <canvas class="chart chart-pie" chart-data="charts.interactions.values" chart-labels="charts.interactions.labels" chart-colours="charts.interactions.colours" chart-legend="true">\n </canvas>\n <!-- </div>\n </div> -->\n </div>\n </div>\n <legend>\n <span class="caption-subject"> </span><small class="pull-right font-grey-cascade">{{ \'APPLICATION_TODAY_STATS\' | translate }}</small>\n </legend>\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat red-intense">\n <div class="visual">\n <i class="icon-dislike"></i>\n </div>\n <div class="details">\n <div class="number">\n {{routingStats.timeout || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_TIMEOUT_EA\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_TIMEOUT_EA_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat purple">\n <div class="visual">\n <i class="icon-hourglass"></i>\n </div>\n <div class="details">\n <div class="number">\n {{routingStats.waiting || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_WAITING_EA\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_WAITING_EA_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n </fieldset>\n </div>\n'),a.put("app/dashboard/openchannel/openchannel.html",'<div data-ng-switch="Auth.getRole()">\n <div ng-switch-when="agent" data-ng-init="initAgent()">\n <div class="row" style="padding-bottom:10px;">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="table1" name="table1" ui-grid-resize-columns ui-grid-pagination ui-grid-auto-resize class="ui-grid">\n <div class="watermark" data-ng-show="!table1.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n\n <!-- <div class="row" style="padding-bottom:10px;">\n <div class="col-md-12"> -->\n <!-- START TABLE -->\n <!-- <div ui-grid="table2" name="table2" ui-grid-resize-columns ui-grid-auto-resize class="ui-grid">\n <div class="watermark" data-ng-show="!table2.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div> -->\n <!-- END TABLE -->\n <!-- </div>\n </div> -->\n </div>\n <div ng-switch-default data-ng-init="initRoomStats();initRoutingStats();initSocketListening();">\n <fieldset>\n <legend>\n <span class="caption-subject"> </span><small class="pull-right font-grey-cascade">{{ \'APPLICATION_INTERACTION_STATS\' | translate }}</small>\n </legend>\n <div class="row">\n <div class="col-md-8">\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat green-haze">\n <div class="visual">\n <i class="fa fa-play"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.new || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_NEW_OI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_NEW_OI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat blue-madison">\n <div class="visual">\n <i class="icon-bell"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.open || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_OPEN_OI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_OPEN_OI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat green">\n <div class="visual">\n <i class="icon-options"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.pending || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_PENDING_OI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_PENDING_OI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat purple-plum">\n <div class="visual">\n <i class="icon-like"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.closed || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_CLOSED_OI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_CLOSED_OI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">\n <div class="dashboard-stat yellow-casablanca">\n <div class="visual">\n <i class="icon-calculator"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.new+roomStatus.open+roomStatus.pending+roomStatus.closed || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_TOTAL_OI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_TOTAL_OI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n </div>\n <div class="col-md-4">\n <!-- <div class="portlet light bordered">\n <div class="portlet-body"> -->\n <canvas class="chart chart-pie" chart-data="charts.interactions.values" chart-labels="charts.interactions.labels" chart-colours="charts.interactions.colours" chart-legend="true">\n </canvas>\n <!-- </div>\n </div> -->\n </div>\n </div>\n <legend>\n <span class="caption-subject"> </span><small class="pull-right font-grey-cascade">{{ \'APPLICATION_TODAY_STATS\' | translate }}</small>\n </legend>\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat red-intense">\n <div class="visual">\n <i class="icon-dislike"></i>\n </div>\n <div class="details">\n <div class="number">\n {{routingStats.timeout || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_TIMEOUT_OA\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_TIMEOUT_OA_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat purple">\n <div class="visual">\n <i class="icon-hourglass"></i>\n </div>\n <div class="details">\n <div class="number">\n {{routingStats.waiting || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_WAITING_OA\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_WAITING_OA_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n </fieldset>\n </div>\n'),a.put("app/dashboard/sms/sms.html",'<div data-ng-switch="Auth.getRole()">\n <div ng-switch-when="agent" data-ng-init="initAgent()">\n <div class="row" style="padding-bottom:10px;">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="table1" name="table1" ui-grid-resize-columns ui-grid-pagination ui-grid-auto-resize class="ui-grid">\n <div class="watermark" data-ng-show="!table1.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n\n <!-- <div class="row" style="padding-bottom:10px;">\n <div class="col-md-12"> -->\n <!-- START TABLE -->\n <!-- <div ui-grid="table2" name="table2" ui-grid-resize-columns ui-grid-auto-resize class="ui-grid">\n <div class="watermark" data-ng-show="!table2.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div> -->\n <!-- END TABLE -->\n <!-- </div>\n </div> -->\n </div>\n <div ng-switch-default data-ng-init="initRoomStats();initRoutingStats();initSocketListening();">\n <fieldset>\n <legend>\n <span class="caption-subject"> </span><small class="pull-right font-grey-cascade">{{ \'APPLICATION_INTERACTION_STATS\' | translate }}</small>\n </legend>\n <div class="row">\n <div class="col-md-8">\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat green-haze">\n <div class="visual">\n <i class="fa fa-play"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.new || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_NEW_SI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_NEW_SI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat blue-madison">\n <div class="visual">\n <i class="icon-bell"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.open || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_OPEN_SI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_OPEN_SI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat green">\n <div class="visual">\n <i class="icon-options"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.pending || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_PENDING_SI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_PENDING_SI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat purple-plum">\n <div class="visual">\n <i class="icon-like"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.closed || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_DASHBOARD_CLOSED_SI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_DASHBOARD_CLOSED_SI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">\n <div class="dashboard-stat yellow-casablanca">\n <div class="visual">\n <i class="icon-calculator"></i>\n </div>\n <div class="details">\n <div class="number">\n {{roomStatus.new+roomStatus.open+roomStatus.pending+roomStatus.closed || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_TOTAL_SI\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_TOTAL_SI_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n </div>\n <div class="col-md-4">\n <!-- <div class="portlet light bordered">\n <div class="portlet-body"> -->\n <canvas class="chart chart-pie" chart-data="charts.interactions.values" chart-labels="charts.interactions.labels" chart-colours="charts.interactions.colours" chart-legend="true">\n </canvas>\n <!-- </div>\n </div> -->\n </div>\n </div>\n <legend>\n <span class="caption-subject"> </span><small class="pull-right font-grey-cascade">{{ \'APPLICATION_TODAY_STATS\' | translate }}</small>\n </legend>\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat red-intense">\n <div class="visual">\n <i class="icon-dislike"></i>\n </div>\n <div class="details">\n <div class="number">\n {{routingStats.timeout || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_TIMEOUT_SA\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_TIMEOUT_SA_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">\n <div class="dashboard-stat purple">\n <div class="visual">\n <i class="icon-hourglass"></i>\n </div>\n <div class="details">\n <div class="number">\n {{routingStats.waiting || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_WAITING_SA\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_WAITING_SA_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n </fieldset>\n </div>\n'), -a.put("app/dashboard/voice/voice.html",'<div data-ng-switch="Auth.getRole()">\n <div ng-switch-when="agent" data-ng-init="initAgent()">\n <div class="portlet light">\n <div class="portlet-body">\n <!-- START TABLE -->\n <div data-ng-if="table1" ui-grid="table1" name="table1" ui-grid-resize-columns ui-grid-pagination ui-grid-auto-resize class="ui-grid">\n <div class="watermark" data-ng-show="!table1.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_a" data-toggle="tab">{{\'APPLICATION_WAITING\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_b" data-toggle="tab">{{\'APPLICATION_ABANDONED\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body" data-ng-init="initView()">\n <div class="tab-content">\n <div class="tab-pane active" id="tab_1_a">\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_SHOW_TIMERS\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="showTimers"\n type="checkbox"\n name="showTimers"\n switch-active="{{ timerSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ timerSwitch.onColor }}"\n switch-off-color="{{ timerSwitch.offColor }}"\n switch-animate="{{ timerSwitch.animate }}"\n switch-size="{{ timerSwitch.size }}"\n switch-label="{{ timerSwitch.label }}"\n switch-icon="{{ timerSwitch.icon }}"\n switch-radio-off="{{ timerSwitch.radioOff }}"\n switch-label-width="{{ timerSwitch.labelWidth }}"\n switch-handle-width="{{ timerSwitch.handleWidth }}">\n </div>\n <!-- START TABLE -->\n <div data-ng-if="table2" ui-grid="table2" name="table2" ui-grid-resize-columns ui-grid-pagination ui-grid-auto-resize class="ui-grid">\n <div class="watermark" data-ng-show="!table2.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n <div class="tab-pane" id="tab_1_b">\n <!-- START TABLE -->\n <div data-ng-if="table3" ui-grid="table3" name="table3" ui-grid-resize-columns ui-grid-pagination ui-grid-auto-resize class="ui-grid">\n <div class="watermark" data-ng-show="!table3.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n </div>\n </div>\n <div ng-switch-default data-ng-init="initUser()">\n <fieldset>\n <legend>\n <span class="caption-subject">{{ \'APPLICATION_INBOUND\' | translate }}</span><small class="font-grey-cascade pull-right">{{ \'APPLICATION_TODAY_STATS\' | translate }}</small>\n </legend>\n\n <div class="row">\n <div class="col-lg-3 col-md-3 col-sm-6 col-xs-12">\n <div class="dashboard-stat blue">\n <div class="visual">\n <i class="icon-bell"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ voice.queues.waiting || 0 }}\n </div>\n <div class="desc">\n {{\'APPLICATION_WAITING_QC\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_WAITING_QC_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-3 col-md-3 col-sm-6 col-xs-12">\n <div class="dashboard-stat grey-gallery">\n <div class="visual">\n <i class="fa fa-play"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ voice.queues.active || 0 }}\n </div>\n <div class="desc">\n {{\'APPLICATION_ACTIVE_QC\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_ACTIVE_QC_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-3 col-md-3 col-sm-6 col-xs-12">\n <div class="dashboard-stat green-jungle">\n <div class="visual">\n <i class="icon-like"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ voice.queues.complete || 0 }}\n </div>\n <div class="desc">\n {{\'APPLICATION_ANSWERED_QC\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_ANSWERED_QC_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-3 col-md-3 col-sm-6 col-xs-12">\n <div class="dashboard-stat red-thunderbird">\n <div class="visual">\n <i class="icon-dislike"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ voice.queues.abandon || 0 }}\n </div>\n <div class="desc">\n {{\'APPLICATION_ABANDONED_QC\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_ABANDONED_QC_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n\n <div class="row">\n <div class="col-lg-3 col-md-3 col-sm-6 col-xs-12">\n <div class="dashboard-stat yellow-gold">\n <div class="visual">\n <i class="icon-clock"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ voice.queues.complete ? (voice.queues.holdtime / voice.queues.complete) : 0 | secToTime | date:\'HH:mm:ss\' }}\n </div>\n <div class="desc">\n {{\'APPLICATION_AVG_ANSWER_TIME_QC\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_AVG_ANSWER_TIME_QC_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-3 col-md-3 col-sm-6 col-xs-12">\n <div class="dashboard-stat purple">\n <div class="visual">\n <i class="icon-clock"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ voice.queues.complete ? (voice.queues.talktime / voice.queues.complete) : 0 | secToTime | date:\'HH:mm:ss\' }}\n </div>\n <div class="desc">\n {{\'APPLICATION_AVG_TALK_TIME_QC\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_AVG_TALK_TIME_QC_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-3 col-md-3 col-sm-6 col-xs-12">\n <div class="dashboard-stat green-jungle">\n <div class="visual">\n <i class="icon-pie-chart"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ (voice.queues.complete / (voice.queues.complete + voice.queues.abandon) * 100) || 0 | number:2}}\n </div>\n <div class="desc">\n {{\'APPLICATION_ANSWER_RATE_QC\' | translate}} (%)\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_ANSWER_RATE_QC_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-3 col-md-3 col-sm-6 col-xs-12">\n <div class="dashboard-stat red-thunderbird">\n <div class="visual">\n <i class="icon-pie-chart"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ (voice.queues.abandon / (voice.queues.complete + voice.queues.abandon) * 100) || 0 | number:2}}\n </div>\n <div class="desc">\n {{\'APPLICATION_ABANDON_RATE_QC\' | translate}} (%)\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_ABANDON_RATE_QC_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">\n <div class="dashboard-stat blue">\n <div class="visual">\n <i class="icon-info"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ voice.queues.complete + voice.queues.abandon || 0}}\n </div>\n <div class="desc">\n {{\'APPLICATION_TOTAL_OFFERED_QC\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_TOTAL_OFFERED_QC_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">\n <div class="dashboard-stat red-thunderbird">\n <div class="visual">\n <i class="icon-info"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ voice.queues.unmanaged || 0 }}\n </div>\n <div class="desc">\n {{\'APPLICATION_UNMANAGED_QC\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_UNMANAGED_QC_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n </fieldset>\n\n <fieldset>\n <legend>\n <span class="caption-subject">{{ \'APPLICATION_OUTBOUND\' | translate }}</span><small class="pull-right font-grey-cascade">{{ \'APPLICATION_TODAY_STATS\' | translate }}</small>\n </legend>\n\n <div class="row">\n <div class="col-lg-3 col-md-3 col-sm-6 col-xs-12">\n <div class="dashboard-stat green-haze">\n <div class="visual">\n <i class="icon-call-out"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ voice.outbound.total || 0 }}\n </div>\n <div class="desc">\n {{\'APPLICATION_MANUAL_OUTBOUND_OB\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_MANUAL_OUTBOUND_OB_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-3 col-md-3 col-sm-6 col-xs-12">\n <div class="dashboard-stat grey-gallery">\n <div class="visual">\n <i class="icon-clock"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ (voice.outbound.sumDuration || 0) | secToTime | date:\'HH:mm:ss\' }}\n </div>\n <div class="desc">\n {{\'APPLICATION_GLOBAL_DURATION_OB\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_GLOBAL_DURATION_OB_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-3 col-md-3 col-sm-6 col-xs-12">\n <div class="dashboard-stat green-jungle">\n <div class="visual">\n <i class="icon-like"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ voice.outbound.answered || 0 }}\n </div>\n <div class="desc">\n {{\'APPLICATION_ANSWERED_OB\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_ANSWERED_OB_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-3 col-md-3 col-sm-6 col-xs-12">\n <div class="dashboard-stat yellow-gold">\n <div class="visual">\n <i class="icon-pie-chart"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ (voice.outbound.avgDuration || 0) | secToTime | date:\'HH:mm:ss\' }}\n </div>\n <div class="desc">\n {{\'APPLICATION_AVG_DURATION_OB\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_AVG_DURATION_OB_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n\n <div class="row">\n <div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">\n <div class="dashboard-stat blue">\n <div class="visual">\n <i class="icon-pie-chart"></i>\n </div>\n <div class="details">\n <div class="number">\n {{ (voice.outbound.answerRate || 0) | number:2 }}\n </div>\n <div class="desc">\n {{\'APPLICATION_ANSWER_RATE_OB\' | translate}} (%)\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_ANSWER_RATE_OB_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n <div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">\n <div class="dashboard-stat purple">\n <div class="visual">\n <i class="icon-pie-chart"></i>\n </div>\n <div class="details">\n <div class="number">\n {{(voice.outbound.tigerdial || 0)}}\n </div>\n <div class="desc">\n {{\'APPLICATION_MOTION_DIALER_CALLS_OB\' | translate}}\n </div>\n </div>\n <a class="more inactive-link">\n {{\'APPLICATION_MOTION_DIALER_CALLS_OB_EXTENDED\' | translate}}\n </a>\n </div>\n </div>\n </div>\n\n </fieldset>\n </div>\n</div>\n'),a.put("app/desk/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-handbag"></i>\n <a href="/desk/list">{{ \'APPLICATION_DESK_COM\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-handbag font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_DESK_COM\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="accounts.checked.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/desk/wizard">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ACCOUNT\' | translate }}\n </a>\n </div>\n <a class="btn btn-icon-only btn-default" href="#" ng-csv="getAccounts([\'name\',\'username\',\'remoteUri\',\'authType\',\'consumerKey\',\'consumerSecret\',\'token\',\'tokenSecret\',\'password\'])" csv-header="[\'Name\', \'Username\', \'Remote Address\', \'Authentication Type\', \'Consumer Key\', \'Consumer Secret\', \'Token\', \'Token Secret\', \'Password\']" field-separator=";" filename="desk_accounts.csv">\n <i class="icon-cloud-download"></i></a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <table st-table="displayedDeskAccounts" st-pipe="initList" class="table table-striped table-bordered table-hover">\n <div class="table-responsive">\n <thead>\n <tr>\n <th colspan="7">\n <div class="row">\n <div class="col-md-6">\n <ui-select class="input-xsmall" ng-model="conf.accountsByPage" theme="bootstrap" ng-disabled="disabled">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="accountByPage in accountsByPage | filter: $select.search">\n <div ng-bind-html="accountByPage.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-6">\n <div class="input-group input-medium pull-right">\n <input st-search placeholder="{{ \'APPLICATION_SEARCH\' | translate }}" class="form-control" type="search" />\n <span class="input-group-addon">\n <i class="fa fa-search"></i>\n </span>\n </div>\n </div>\n </div>\n </th>\n </tr>\n <tr>\n <th class="small-cells" style="text-align: center; vertical-align: middle"><input type="checkbox" ng-change="check(account, checked)" checklist-model checklist-value="id"></th>\n <th st-sort="name">{{ \'APPLICATION_NAME\' | translate }}</th>\n <th st-sort="username">{{ \'APPLICATION_EMAIL\' | translate }}</th>\n <th st-sort="remoteUri">{{ \'APPLICATION_REMOTE_ADDRESS\' | translate }}</th>\n <th>{{ \'APPLICATION_DESCRIPTION\' | translate }}</th>\n <th>{{ \'APPLICATION_ACTIONS\' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n <tr data-ng-repeat="account in displayedDeskAccounts" class="animate-repeat">\n <td style="text-align: center; vertical-align: middle"><input type="checkbox" checklist-model="accounts.checked" checklist-value="account.id"></td>\n <td>{{account.name}}</td>\n <td>{{account.username}}</td>\n <td>{{account.remoteUri}}</td>\n <td>{{account.description}}</td>\n <td>\n <a class="btn default btn-xs blue-stripe" data-ng-href="/desk/view/{{account.id}}/account">\n {{ \'APPLICATION_EDIT\' | translate }}\n </a>\n <a class="btn default btn-xs green-stripe" data-ng-click="checkAccount(account.id)">\n {{ \'APPLICATION_CHECK\' | translate }}\n </a>\n <a class="btn default btn-xs red-stripe" data-ng-click="deleteItem(account.name,account.id)">\n {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </td>\n </tr>\n <tr data-ng-hide="displayedDeskAccounts.length">\n <td colspan="7" style="text-align:center;">\n <i>No account available</i>\n </td>\n </tr>\n </tbody>\n <tfoot>\n <tr>\n <td/>\n <td>\n <div class="input-icon right">\n <i class="fa fa-search"></i>\n <input st-search="name" placeholder="{{ \'APPLICATION_SEARCH\' | translate }} {{ \'APPLICATION_BY\' | translate | lowercase }} {{ \'APPLICATION_NAME\' | translate | lowercase}}" class="form-control" type="search"/>\n </div>\n </td>\n <td>\n <div class="input-icon right">\n <i class="fa fa-search"></i>\n <input st-search="email" placeholder="{{ \'APPLICATION_SEARCH\' | translate }} {{ \'APPLICATION_BY\' | translate | lowercase }} {{ \'APPLICATION_EMAIL\' | translate | lowercase}}" class="form-control" type="search"/>\n </div>\n </td>\n <td>\n <div class="input-icon right">\n <i class="fa fa-search"></i>\n <input st-search="remoteUri" placeholder="{{ \'APPLICATION_SEARCH\' | translate }} {{ \'APPLICATION_BY\' | translate | lowercase }} {{ \'APPLICATION_REMOTE_ADDRESS\' | translate | lowercase}}" class="form-control" type="search"/>\n </div>\n </td>\n <td/>\n <td/>\n </tr>\n <tr>\n <td colspan="7" class="text-center">\n <div class="pagination" st-pagination st-items-by-page="conf.accountsByPage.value" st-displayed-pages="7"></div>\n </td>\n </tr>\n </tfoot>\n </div>\n </table>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/desk/view/view.account.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACCOUNT\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERALS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.formSetting" data-ng-submit="forms.formSetting.$valid && updateItem()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.name" required/>\n <span data-ng-show="forms.formSetting.name.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="account.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="account.username" required/>\n <span data-ng-show="forms.formSetting.username.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START REMOTE ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.remoteUri.$invalid}">\n <label class="control-label">{{\'APPLICATION_REMOTE_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remoteUri" placeholder="{{\'APPLICATION_REMOTE_ADDRESS\' | translate}}" class="form-control" data-ng-model="account.remoteUri" required />\n <span data-ng-show="forms.formSetting.remoteUri.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START AUTH TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.authType.$invalid}">\n <label class="control-label">{{\'APPLICATION_AUTHENTICATION_TYPE\' | translate}}</label>\n <ui-select data-ng-model="account.authType" name="authType" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_AUTHENTICATION_TYPE\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="type in [\'basic\', \'oauth\'] | filter: $select.search">\n <div data-ng-bind="type | capitalize | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.formSetting.authType.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START AUTH TYPE -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.password.$invalid}" ng-slide-down="account.authType == \'basic\'" lazy-render duration="1">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="account.password" required/>\n <span data-ng-show="forms.formSetting.password.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START CONSUMER KEY -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.consumerKey.$invalid}" ng-slide-down="account.authType == \'oauth\'" lazy-render duration="1">\n <label class="control-label">{{\'APPLICATION_CONSUMER_KEY\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="consumerKey" placeholder="{{\'APPLICATION_CONSUMER_KEY\' | translate}}" class="form-control" data-ng-model="account.consumerKey" required/>\n <span data-ng-show="forms.formSetting.consumerKey.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONSUMER KEY -->\n\n <!-- START CONSUMER SECRET -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.consumerSecret.$invalid}" ng-slide-down="account.authType == \'oauth\'" lazy-render duration="1">\n <label class="control-label">{{\'APPLICATION_CONSUMER_SECRET\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="consumerSecret" placeholder="{{\'APPLICATION_CONSUMER_SECRET\' | translate}}" class="form-control" data-ng-model="account.consumerSecret" required/>\n <span data-ng-show="forms.formSetting.consumerSecret.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONSUMER SECRET -->\n\n <!-- START TOKEN -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.token.$invalid}" ng-slide-down="account.authType == \'oauth\'" lazy-render duration="1">\n <label class="control-label">{{\'APPLICATION_TOKEN\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="token" placeholder="{{\'APPLICATION_TOKEN\' | translate}}" class="form-control" data-ng-model="account.token" required/>\n <span data-ng-show="forms.formSetting.token.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TOKEN -->\n\n <!-- START TOKEN SECRET-->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.tokenSecret.$invalid}" ng-slide-down="account.authType == \'oauth\'" lazy-render duration="1">\n <label class="control-label">{{\'APPLICATION_TOKEN_SECRET\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="tokenSecret" placeholder="{{\'APPLICATION_TOKEN_SECRET\' | translate}}" class="form-control" data-ng-model="account.tokenSecret" required/>\n <span data-ng-show="forms.formSetting.tokenSecret.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TOKEN SECRET-->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/desk/view/view.configuration.html",'<div class="row" data-ng-init="initConfiguration()">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_CONFIGURATION\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createConfiguration()">\n <wz-step title="{{\'APPLICATION_SETTINGS\' | translate}}" canexit="formValidation(formsConfiguration.info.$valid)">\n <form name="formsConfiguration.info" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': formsConfiguration.info.$submitted && formsConfiguration.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="configuration.name" required/>\n <span data-ng-show="formsConfiguration.info.name.$invalid && formsConfiguration.info.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="configuration.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" data-ng-click="goNext()"/>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), -a.put("app/desk/view/view.configurationSettings.html",'<div class="row" data-ng-init="getConfiguration();getVariables();getFields();">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_CONFIGURATION\' | translate}}: {{configurationName}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_SUBJECT\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_DESCRIPTION\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{\'APPLICATION_FIELDS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- SUBJECT TAB -->\n <div class="tab-pane ui-padding active" id="tab_1_1">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">All following fields will be join by blank space:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItemSubject()"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="subjectItem in subjectConfig">\n <div class="col-md-3">\n <ui-select ng-model="subjectItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeType(subjectItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in fieldType | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search | capitalize"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-8" data-ng-if="subjectItem.type==\'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="subjectItem.content" data-ng-change="updateField(subjectItem)">\n </div>\n </div>\n <div class="col-md-8" data-ng-if="subjectItem.type==\'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="subjectItem.VariableId" data-ng-change="updateField(subjectItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(subjectItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END SUBJECT TAB -->\n <!-- DESCRIPTION TAB -->\n <div class="tab-pane ui-padding" id="tab_1_2">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">All following fields will be join by new line:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItemDescription()"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="descriptionItem in descriptionConfig">\n <!-- <pre>\n {{descriptionItem|json}}\n </pre> -->\n <div class="col-md-2">\n <ui-select ng-model="descriptionItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeDescType(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected | ucfirst}}</ui-select-match>\n <ui-select-choices repeat="item in descFieldType | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search | ucfirst"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-9" data-ng-if="descriptionItem.type==\'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="descriptionItem.content" data-ng-change="updateField(descriptionItem)">\n </div>\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'key_value\'">\n <input type="text" class="form-control" placeholder="Key" data-ng-model="descriptionItem.key" data-ng-change="updateField(descriptionItem)">\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'key_value\'">\n <ui-select ng-model="descriptionItem.keyType" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeDescType(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in fieldType | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search | capitalize"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'key_value\' && descriptionItem.keyType==\'string\'">\n <input type="text" class="form-control" placeholder="Value" data-ng-model="descriptionItem.keyContent" data-ng-change="updateField(descriptionItem)">\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'key_value\' && descriptionItem.keyType==\'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="descriptionItem.VariableId" data-ng-change="updateField(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(descriptionItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END DESCRIPTION TAB -->\n <!-- FIELDS TAB -->\n <div class="tab-pane ui-padding" id="tab_1_3">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">Add how to fill the fields present in your account:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItemField()"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="fieldItem in fieldConfig">\n <div class="col-md-3">\n <ui-select ng-model="fieldItem.idField" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeFieldType(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.label}}</ui-select-match>\n <ui-select-choices repeat="item.id as item in accountFields | filter: $select.search">\n <div ng-bind-html="item.label | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-8" data-ng-if="getSystemFieldOptions(fieldItem.idField)">\n <div class="form-group">\n <ui-select ng-model="fieldItem.content" theme="bootstrap" ng-disabled="disabled" data-ng-change="updateField(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="item in getSystemFieldOptions(fieldItem.idField) | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField)">\n <div class="form-group">\n <ui-select ng-model="fieldItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeType(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected | ucfirst}}</ui-select-match>\n <ui-select-choices repeat="item in fieldType | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search | ucfirst"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="fieldItem.content" data-ng-change="updateField(fieldItem)">\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="fieldItem.VariableId" data-ng-change="updateField(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(fieldItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END FIELDS TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/desk/view/view.configurations.html",'<div ui-view class="profile-content">\n <div class="row" data-ng-init="getConfigurations()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_CONFIGURATIONS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group">\n <a class="btn green-jungle " href="/desk/view/{{account.id}}/configuration" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_CONFIGURATION\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <table class="table table-striped table-bordered table-hover">\n <thead>\n <tr>\n <th>{{\'APPLICATION_NAME\' | translate}}</th>\n <th>{{\'APPLICATION_DESCRIPTION\' | translate}}</th>\n <th>{{ \'APPLICATION_ACTIONS\' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n <tr data-ng-repeat="configuration in configurations">\n <td>{{configuration.name}}</td>\n <td>{{configuration.description}}</td>\n <td>\n <a class="btn default btn-xs blue-stripe" data-ng-href="/desk/view/{{account.id}}/configurations/settings/{{configuration.id}}">\n {{ \'APPLICATION_SETTINGS\' | translate}}\n </a>\n <a class="btn default btn-xs red-stripe" data-ng-click="deleteConfiguration(configuration.name,configuration.id)">\n {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </td>\n </tr>\n <tr data-ng-hide="configurations.length">\n <td colspan="5" style="text-align:center;">\n <i>No configuration available</i>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/desk/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-handbag"></i>\n <a href="/desk/list">{{ \'APPLICATION_DESK_COM\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <a href="#">{{account.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img src="assets/images/media/desk.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{account.name}}\n </div>\n <div class="profile-usertitle-job">\n {{account.remoteUri}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.desk.view.account\')}">\n <a ng-href="/desk/view/{{account.id}}/account">\n <i class="icon-user"></i>\n {{ \'APPLICATION_ACCOUNT\' | translate }} </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.desk.view.configurations\') || $state.is(\'main.desk.view.configuration\')}">\n <a ng-href="/desk/view/{{account.id}}/configurations">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_CONFIGURATIONS\' | translate }} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/desk/wizard/wizard.html",'<!-- BEGIN PAGE HEADER-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-handbag"></i>\n <a href="/desk/list">{{ \'APPLICATION_DESK_COM\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n<!-- END PAGE HEADER-->\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initWizard()">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACCOUNT\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_ACCOUNT_INFO\' | translate}}" canexit="exitValidation(forms.formSetting.$valid)">\n <form name="forms.formSetting" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="forms.formSetting.name.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.username" required ng-remote-validate="/api/desk/accounts/validate/username"/>\n <span data-ng-show="forms.formSetting.username.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formSetting.username.$touched || forms.formSetting.$submitted) && forms.formSetting.username.$error.ngRemoteValidate" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_EXIST_USERNAME\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n\n <!-- START REMOTE ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.remoteUri.$invalid}">\n <label class="control-label">{{\'APPLICATION_REMOTE_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remoteUri" placeholder="{{\'APPLICATION_REMOTE_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.remoteUri" required ng-remote-validate="/api/desk/accounts/validate/remoteUri"/>\n <span data-ng-show="forms.formSetting.remoteUri.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formSetting.remoteUri.$touched || forms.formSetting.$submitted) && forms.formSetting.remoteUri.$error.ngRemoteValidate" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_EXIST_DOMAIN\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START AUTH TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.authType.$invalid}">\n <label class="control-label">{{\'APPLICATION_AUTHENTICATION_TYPE\' | translate}}</label>\n <ui-select data-ng-model="item.authType" name="authType" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_AUTHENTICATION_TYPE\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="type in [\'basic\', \'oauth\'] | filter: $select.search">\n <div data-ng-bind="type | capitalize | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.formSetting.authType.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START AUTH TYPE -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.password.$invalid}" ng-slide-down="item.authType == \'basic\'" lazy-render duration="1">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.password" required/>\n <span data-ng-show="forms.formSetting.password.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START CONSUMER KEY -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.consumerKey.$invalid}" ng-slide-down="item.authType == \'oauth\'" lazy-render duration="1">\n <label class="control-label">{{\'APPLICATION_CONSUMER_KEY\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="consumerKey" placeholder="{{\'APPLICATION_CONSUMER_KEY\' | translate}}" class="form-control" data-ng-model="item.consumerKey" required/>\n <span data-ng-show="forms.formSetting.consumerKey.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONSUMER KEY -->\n\n <!-- START CONSUMER SECRET -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.consumerSecret.$invalid}" ng-slide-down="item.authType == \'oauth\'" lazy-render duration="1">\n <label class="control-label">{{\'APPLICATION_CONSUMER_SECRET\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="consumerSecret" placeholder="{{\'APPLICATION_CONSUMER_SECRET\' | translate}}" class="form-control" data-ng-model="item.consumerSecret" required/>\n <span data-ng-show="forms.formSetting.consumerSecret.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONSUMER SECRET -->\n\n <!-- START TOKEN -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.token.$invalid}" ng-slide-down="item.authType == \'oauth\'" lazy-render duration="1">\n <label class="control-label">{{\'APPLICATION_TOKEN\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="token" placeholder="{{\'APPLICATION_TOKEN\' | translate}}" class="form-control" data-ng-model="item.token" required/>\n <span data-ng-show="forms.formSetting.token.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TOKEN -->\n\n <!-- START TOKEN SECRET-->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.tokenSecret.$invalid}" ng-slide-down="item.authType == \'oauth\'" lazy-render duration="1">\n <label class="control-label">{{\'APPLICATION_TOKEN_SECRET\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="tokenSecret" placeholder="{{\'APPLICATION_TOKEN_SECRET\' | translate}}" class="form-control" data-ng-model="item.tokenSecret" required/>\n <span data-ng-show="forms.formSetting.tokenSecret.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TOKEN SECRET-->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" data-ng-click="next()"/>\n\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n\n </wizard>\n\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/freshdesk/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-handbag"></i>\n <a href="/freshdesk/list">{{ \'APPLICATION_FRESHDESK\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-handbag font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_FRESHDESK\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/freshdesk/wizard">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ACCOUNT\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/freshdesk/view/configuration/list/create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_CONFIGURATION\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.name.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.name.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START CHANNEL -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.channel.$touched || form.channel.$submitted) && form.channel.$invalid}">\n <label class="control-label">{{\'APPLICATION_CHANNEL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.channel" name="channel" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_CHANNEL\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="channel.value as channel in channels | filter: $select.search">\n <div data-ng-bind="channel.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.channel.$touched || form.channel.$submitted) && form.channel.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START CHANNEL -->\n\n <!-- START VOICE SUBTYPE -->\n <div data-ng-if="item.channel===\'voice\'" class="form-group" data-ng-class="{\'has-error\': (form.channel.$touched || form.channel.$submitted) && form.channel.$invalid}">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.type" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_TYPE\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="type in [\'Queue\',\'Outbound\'] | filter: $select.search">\n <div data-ng-bind="type | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.type.$touched || form.type.$submitted) && form.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START CHANNEL -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'), -a.put("app/freshdesk/view/configuration/list/list.html",'<div ui-view class="profile-content">\n <div class="row">\n <div class="col-md-12">\n <div class="portlet light" data-ng-init="initView()">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_CONFIGURATIONS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="#" data-ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_CONFIGURATION\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/freshdesk/view/configuration/view/view.html",'<div class="row" data-ng-init="initView();getConfiguration();getCustomVariables();getFields();getTags();">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_CONFIGURATION\' | translate}}: {{configurationName}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_SUBJECT\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_DESCRIPTION\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{\'APPLICATION_FIELDS\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_4" data-toggle="tab">{{\'APPLICATION_TAGS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- SUBJECT TAB -->\n <div class="tab-pane ui-padding active" id="tab_1_1">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">All following fields will be join by blank space:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItem(\'subject\')"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div id="subject-item-list" ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="subjectItem in subjectConfig">\n <div class="col-md-3">\n <ui-select ng-model="subjectItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeType(subjectItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in fieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-8" data-ng-if="subjectItem.type==\'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="subjectItem.content" data-ng-change="updateField(subjectItem)">\n </div>\n </div>\n <div class="col-md-8" data-ng-if="subjectItem.type==\'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="subjectItem.variableName" data-ng-change="updateField(subjectItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices group-by="groupVariableByGroup" repeat="variable.name as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-8" data-ng-if="subjectItem.type==\'customVariable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="subjectItem.VariableId" data-ng-change="updateField(subjectItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in customVariables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(subjectItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END SUBJECT TAB -->\n <!-- DESCRIPTION TAB -->\n <div class="tab-pane ui-padding" id="tab_1_2">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">All following fields will be join by new line:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItem(\'description\')"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div id="description-item-list" ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="descriptionItem in descriptionConfig">\n <div class="col-md-2">\n <ui-select ng-model="descriptionItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeDescType(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in descFieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-9" data-ng-if="descriptionItem.type==\'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="descriptionItem.content" data-ng-change="updateField(descriptionItem)">\n </div>\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\'">\n <input type="text" class="form-control" placeholder="Key" data-ng-model="descriptionItem.key" data-ng-change="updateField(descriptionItem)">\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\'">\n <ui-select ng-model="descriptionItem.keyType" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeDescType(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in fieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\' && descriptionItem.keyType==\'string\'">\n <input type="text" class="form-control" placeholder="Value" data-ng-model="descriptionItem.keyContent" data-ng-change="updateField(descriptionItem)">\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\' && descriptionItem.keyType==\'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="descriptionItem.variableName" data-ng-change="updateField(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices group-by="groupVariableByGroup" repeat="variable.name as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\' && descriptionItem.keyType==\'customVariable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="descriptionItem.VariableId" data-ng-change="updateField(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in customVariables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(descriptionItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END DESCRIPTION TAB -->\n <!-- FIELDS TAB -->\n <div class="tab-pane ui-padding" id="tab_1_3">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">Add how to fill the fields present in your account:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItem(\'field\')"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div id="field-item-list" ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="fieldItem in fieldConfig">\n <div class="col-md-3">\n <ui-select ng-model="fieldItem.idField" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeFieldType(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.label}}</ui-select-match>\n <ui-select-choices repeat="item.name as item in accountFields | filter: $select.search">\n <div ng-bind-html="item.label | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-8" data-ng-if="getSystemFieldOptions(fieldItem.idField)">\n <div class="form-group">\n <ui-select ng-model="fieldItem.content" theme="bootstrap" ng-disabled="disabled" data-ng-change="updateField(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="item in getSystemFieldOptions(fieldItem.idField) | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField)">\n <div class="form-group">\n <ui-select ng-model="fieldItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeType(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in fieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search | ucfirst"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="fieldItem.content" data-ng-change="updateField(fieldItem)">\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="fieldItem.variableName" data-ng-change="updateField(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices group-by="groupVariableByGroup" repeat="variable.name as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'customVariable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="fieldItem.VariableId" data-ng-change="updateField(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in customVariables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(fieldItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END FIELDS TAB -->\n <!-- TAG TAB -->\n <div class="tab-pane ui-padding" id="tab_1_4">\n <div class="row">\n <div class="col-md-12">\n <span class="caption-subject">Select tags that you want add in the ticket:</span>\n </div>\n </div>\n <hr>\n <form name="forms.tags" data-ng-submit="updateTags()" novalidate>\n <!-- TAG -->\n <div class="form-group">\n <ui-select multiple data-ng-model="selectedTags.tags" theme="bootstrap" name="tags" ng-disabled="disabled">\n <ui-select-match placeholder="{{ \'APPLICATION_TAGS\' | translate }}">{{$item.name}}</ui-select-match>\n <ui-select-choices repeat="tag.id as tag in tags | filter: $select.search">\n {{tag.name}}\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END TAG -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END TAG TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/freshdesk/view/view.account.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACCOUNT\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERALS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.formSetting" data-ng-submit="forms.formSetting.$valid && updateItem()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.name" required/>\n <span data-ng-show="forms.formSetting.name.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="account.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="account.username" required/>\n <span data-ng-show="forms.formSetting.username.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START REMOTE ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.remoteUri.$invalid}">\n <label class="control-label">{{\'APPLICATION_REMOTE_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remoteUri" placeholder="{{\'APPLICATION_REMOTE_ADDRESS\' | translate}}" class="form-control" data-ng-model="account.remoteUri" required />\n <span data-ng-show="forms.formSetting.remoteUri.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START API KEY -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.apiKey.$invalid}">\n <label class="control-label">{{\'APPLICATION_API_KEY\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="apiKey" placeholder="{{\'APPLICATION_API_KEY\' | translate}}" class="form-control" data-ng-model="account.apiKey" required/>\n <span data-ng-show="forms.formSetting.apiKey.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END API KEY -->\n\n <!-- START SERVER URL -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.serverUrl.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}}</label>\n <input type="url" name="serverUrl" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="account.serverUrl"/>\n <span class="help-block">\n {{\'DESCRIPTION_SERVER_URL\' | translate}}.\n </span>\n <span class="help-block help-block-info">\n {{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n </span>\n </div>\n <!-- END SERVER URL -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/freshdesk/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-handbag"></i>\n <a href="/freshdesk/list">{{ \'APPLICATION_FRESHDESK\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <a href="#">{{account.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img src="assets/images/media/freshdesk.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{account.name}}\n </div>\n <div class="profile-usertitle-job">\n {{account.remoteUri}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.freshdesk.view.account\')}">\n <a ng-href="/freshdesk/view/{{account.id}}/account">\n <i class="icon-user"></i>\n {{ \'APPLICATION_ACCOUNT\' | translate }} </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.freshdesk.view.configurations\') || $state.is(\'main.freshdesk.view.configuration\')}">\n <a ng-href="/freshdesk/view/{{account.id}}/configurations/list">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_CONFIGURATIONS\' | translate }} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/freshdesk/wizard/wizard.html",'<!-- BEGIN PAGE HEADER-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-handbag"></i>\n <a href="/freshdesk/list">{{ \'APPLICATION_FRESHDESK\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n<!-- END PAGE HEADER-->\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initWizard()">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACCOUNT\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_ACCOUNT_INFO\' | translate}}" canexit="exitValidation(forms.formSetting.$valid)">\n <form name="forms.formSetting" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="forms.formSetting.name.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="item.username" required ng-remote-validate="/api/freshdesk/accounts/validate/username"/>\n <span data-ng-show="forms.formSetting.username.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formSetting.username.$touched || forms.formSetting.$submitted) && forms.formSetting.username.$error.ngRemoteValidate" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_EXIST_USERNAME\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n\n <!-- START REMOTE ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.remoteUri.$invalid}">\n <label class="control-label">{{\'APPLICATION_REMOTE_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remoteUri" placeholder="{{\'APPLICATION_REMOTE_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.remoteUri" required ng-remote-validate="/api/freshdesk/accounts/validate/remoteUri"/>\n <span data-ng-show="forms.formSetting.remoteUri.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formSetting.remoteUri.$touched || forms.formSetting.$submitted) && forms.formSetting.remoteUri.$error.ngRemoteValidate" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_EXIST_DOMAIN\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START API KEY -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.apiKey.$invalid}">\n <label class="control-label">{{\'APPLICATION_API_KEY\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="apiKey" placeholder="{{\'APPLICATION_API_KEY\' | translate}}" class="form-control" data-ng-model="item.apiKey" required/>\n <span data-ng-show="forms.formSetting.apiKey.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END API KEY -->\n\n <!-- START SERVER URL -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.serverUrl.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}}</label>\n <input type="url" name="serverUrl" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.serverUrl"/>\n <span class="help-block">\n {{\'DESCRIPTION_SERVER_URL\' | translate}}.\n </span>\n <span class="help-block help-block-info">\n {{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n </span>\n </div>\n <!-- END SERVER URL -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" data-ng-click="next()"/>\n\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n\n </wizard>\n\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/iframe/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-chrome"></i>\n <a href="#" data-ng-if="!Auth.isAgent()">{{ \'APPLICATION_IFRAME\' | translate }}</a>\n <a href="#" data-ng-if="Auth.isAgent()">{{ iframe.title || iframe.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar" data-ng-if="!Auth.isAgent()">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img src="assets/images/media/iframe.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{iframe.title}}\n </div>\n <div class="profile-usertitle-job">\n {{ \'APPLICATION_IFRAME\' | translate }}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div class="profile-content" data-ng-if="!Auth.isAgent()">\n <div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_IFRAME\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERALS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.formSetting" data-ng-submit="forms.formSetting.$valid && updateItem()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="iframe.title" required/>\n <span data-ng-show="forms.formSetting.name.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START REMOTE ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.remoteUri.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remoteUri" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="iframe.remoteUri" required />\n <span data-ng-show="forms.formSetting.remoteUri.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}" />\n </form>\n </div>\n <!-- END GENERAL TAB -->\n\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- END PROFILE CONTENT -->\n\n <div class="row" data-ng-if="Auth.isAgent()">\n <div class="col-md-12">\n <iframe ng-if="url" style="height: 600px" src="{{url}}" />\n </div>\n </div>\n\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), -a.put("app/integration/list/list.html",'\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-game-controller"></i>\n <a href="/integrations/list">{{ \'APPLICATION_INTEGRATIONS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initList()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-eye font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_INTEGRATIONS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <span class="btn green-jungle btn-file">\n <span> <i class="icon-plus"></i> New App </span>\n <input type="file" accept=".zip" nv-file-select="" uploader="uploader"/>\n </span>\n <a class="btn btn-icon-only btn-default" href="#" ng-csv="displayedIntegrations" filename="integrations.csv">\n <i class="icon-cloud-download"></i></a>\n <a class="btn btn-icon-only btn-default fullscreen" href="#"></a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <table st-table="displayedIntegrations" st-safe-src="integrations" class="table table-striped table-bordered table-hover">\n <div class="table-responsive">\n <thead>\n <tr>\n <th colspan="6">\n <div class="row">\n <div class="col-md-6">\n <select class="form-control input-small select2me" data-ng-model="integrationsByPage">\n <option value="10">10</option>\n <option value="25">25</option>\n <option value="50">50</option>\n <option value="{{integrations.length}}">{{ \'APPLICATION_ALL\' | translate }}</option>\n </select>\n </div>\n <div class="col-md-6">\n <div class="input-group input-medium pull-right">\n <input st-search placeholder="{{ \'APPLICATION_SEARCH\' | translate }}" class="form-control" type="search" />\n <span class="input-group-addon">\n <i class="fa fa-search"></i>\n </span>\n </div>\n </div>\n </div>\n </th>\n </tr>\n <tr>\n <th st-sort="id" width="5%" st-sort-default="reverse">{{ \'APPLICATION_ID\' | translate }}</th>\n <th st-sort="fullname">{{ \'APPLICATION_NAME\' | translate }}</th>\n <th st-sort="name">{{ \'APPLICATION_FILENAME\' | translate }}</th>\n <th st-sort="name">{{ \'APPLICATION_VERSION\' | translate }}</th>\n <th st-sort="name">{{ \'APPLICATION_DESCRIPTION\' | translate }}</th>\n <th>{{ \'APPLICATION_ACTIONS\' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n <tr data-ng-repeat="integration in displayedIntegrations">\n <td>{{integration.id}}</td>\n <td>{{integration.name}}</td>\n <td>{{integration.filename}}</td>\n <td>{{integration.version}}</td>\n <td>{{integration.description}}</td>\n <td>\n <span class="btn default btn-xs blue-stripe btn-file">\n <span> {{ \'APPLICATION_UPDATE\' | translate }} </span>\n <input type="file" accept=".zip" nv-file-select="" uploader="uploader"/>\n </span>\n <a class="btn default btn-xs red-stripe" data-ng-click="deleteItem(integration.name, integration.id)">\n {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </td>\n </tr>\n <tr data-ng-hide="integrations.length">\n <td colspan="6" style="text-align:center;">\n <i>No integrations available</i>\n </td>\n </tr>\n </tbody>\n <tfoot>\n <tr>\n <td>\n <div class="input-icon right">\n <i class="fa fa-search"></i>\n <input st-search="id" class="form-control" type="search"/>\n </div>\n </td>\n <td>\n <div class="input-icon right">\n <i class="fa fa-search"></i>\n <input st-search="name" placeholder="{{ \'APPLICATION_SEARCH\' | translate }} {{ \'APPLICATION_BY\' | translate | lowercase }} {{ \'APPLICATION_NAME\' | translate | lowercase}}" class="form-control" type="search"/>\n </div>\n </td>\n <td>\n <div class="input-icon right">\n <i class="fa fa-search"></i>\n <input st-search="filename" placeholder="{{ \'APPLICATION_SEARCH\' | translate }} {{ \'APPLICATION_BY\' | translate | lowercase }} {{ \'APPLICATION_FILENAME\' | translate | lowercase}}" class="form-control" type="search"/>\n </div>\n </td>\n <td>\n </td>\n <td>\n </td>\n <td>\n </td>\n </tr>\n <tr>\n <td colspan="6" class="text-center">\n <div st-pagination class="pagination" st-items-by-page="integrationsByPage" st-displayed-pages="7"></div>\n </td>\n </tr>\n </tfoot>\n </div>\n </table>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/jscripty/project/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_PROJECT\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/jscripty/project/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-slack"></i>\n <a href="/jscripty/projects/list">{{ \'APPLICATION_PROJECTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_PROJECTS\' | translate }}</a> </span>\n </div>\n <div class="actions" ng-show="!Auth.isAgent()">\n <div class="btn-group">\n <a class="btn btn-default" href="#" data-ng-click="gridOptions.getPage();">\n <i class="icon-reload"></i>\n </a>\n </div>\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_PROJECT\' | translate }}\n </a>\n </div>\n <!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> -->\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n\n <!-- <div class="table-responsive"> -->\n\n\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/jscripty/project/report/report.detail.html",'<div class="portlet light bordered" data-ng-init="getProjectDetail();initView()">\n<div class="portlet-title">\n<div class="caption font-green-sharp">\n<i class="fa fa-list font-green-sharp"></i>\n<span class="caption-subject">{{ \'APPLICATION_SUMMARY\' | translate }}</a> </span>\n</div>\n<div class="actions">\n <div class="btn-group">\n <button class="btn btn-icon-only btn-primary" data-ng-click="pdf(\'header\',projectDetail)">\n <i class="fa fa-download"></i>\n </button>\n <!-- <button class="btn btn-icon-only btn-default" data-ng-click="accordion.expandAll()">\n <i class="fa fa-folder-open-o"></i>\n </button>\n <button class="btn btn-icon-only btn-default" data-ng-click="accordion.collapseAll()">\n <i class="fa fa-folder"></i>\n </button> -->\n </div>\n</div>\n</div>\n<div id=\'detail\' class="portlet-body">\n <div class="alert alert-success text-center" ng-show="!projectDetail.length">\n <h4>{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</h4>\n </div>\n <div class="row" ng-show="projectDetail.length">\n <div class="col-md-10 col-md-offset-1">\n <div id="header" class="panel panel-info">\n <div class="panel-heading">\n <strong>Project Name: </strong>{{project.name}}<br>\n <strong>Project Id: </strong>{{project.id}}<br>\n <strong>Completed: </strong>{{projectStats.completed}}<br>\n <strong>Incomplete: </strong>{{projectStats.incomplete}}<br>\n <strong>% Completed: </strong>{{projectStats.completed * 100 /(projectStats.completed + projectStats.incomplete) | number:2}}<br>\n </div>\n </div><br>\n <v-accordion class="vAccordion--default" multiple control="accordion">\n <v-pane id="{{question.question_id }}" ng-repeat="question in projectDetail" expanded="true">\n <v-pane-header>\n Question Id: {{question.question_id}}\n </v-pane-header>\n <v-pane-content>\n <div ng-class=" {{question.graphData.length > 0}} ? \'col-md-8\' : \'col-md-12\'">\n <div class="row">\n <div class="col-md-10 col-md-offset-1 ">\n <h4><strong>{{question.question_label}}</strong> : {{question.question_text}}</h4>\n <br><br>\n <table ng-if="question.choices.length" class="table table-hover" style="table-layout: fixed; width: 100%">\n <thead>\n <tr>\n <th>Response</th>\n <th> #Response </th>\n <th> % </th>\n </tr>\n </thead>\n <tbody>\n <tr ng-if="!choice.other_option" ng-repeat="choice in question.choices ">\n <td style="word-wrap: break-word">{{choice.value}}</td>\n <td>{{choice.count}}</td>\n <td>{{choice.percentage | number:2}}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n <div class="row" ng-if="question.question_other_label">\n <!-- <div class="row" ng-if="choice.other_option" ng-repeat="choice in question.choices "> -->\n <!-- <div class="col-md-10 col-md-offset-1 ">\n <strong>{{choice.value}}</strong> <span class="badge">{{choice.count}}</span><br>\n </div> -->\n <!-- accordions can be nested :) -->\n <v-accordion >\n <v-pane >\n <!-- ng-repeat="subpane in pane.subpanes" ng-disabled="subpane.isDisabled" -->\n <v-pane-header>\n <strong>{{question.question_other_label}}</strong><br>\n </v-pane-header>\n <v-pane-content>\n <table ng-if="question.choices.length" class="table table-hover" style="table-layout: fixed; width: 100%">\n <thead>\n <tr>\n <th>Response</th>\n <th> #Response </th>\n <!-- <th> % </th> -->\n </tr>\n </thead>\n <tbody>\n\n <tr ng-if="choice.other_option" ng-repeat="choice in question.choices ">\n <td style="word-wrap: break-word">{{choice.value}}</td>\n <td>{{choice.count}}</td>\n <!-- <td>{{choice.percentage | number:2}}</td> -->\n </tr>\n </tbody>\n </table>\n </v-pane-content>\n </v-pane>\n </v-accordion>\n </div>\n <div class="row">\n <div class="col-md-10 col-md-offset-1 ">\n <h4> <strong>Total Respondents: {{question.total}}</strong></h4><br>\n </div>\n </div>\n </div>\n <div class=" col-md-4 pull-right " ng-if="question.graphType == \'bar\' && question.graphData">\n <canvas class="chart chart-bar" chart-data="question.graphData" chart-labels="question.graphLabels" chart-legend="true">\n </canvas>\n </div>\n <div class="col-md-4 pull-right " ng-if="question.graphType == \'pie\' && question.graphData">\n <canvas class="chart chart-pie" chart-data="question.graphData" chart-labels="question.graphLabels" chart-legend="true">\n </canvas>\n </div>\n </v-pane-content>\n </v-pane>\n </v-accordion>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/jscripty/project/report/report.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-edit"></i>\n <a href="/jscripty/projects/list">{{ \'APPLICATION_JSCRIPTY\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-slack"></i>\n <a href="/jscripty/projects/list">{{ \'APPLICATION_PROJECTS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-book-open"></i>\n <a href="">{{ \'APPLICATION_REPORTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img src="assets/images/media/report.png" class="img-responsive" >\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{project.name}}[{{project.id}}]\n </div>\n <div class="profile-usertitle-job">\n\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.jscripty.projects.report.sessions\')|| $state.is(\'main.jscripty.projects.report.sessionDetail\')}">\n <a data-ng-href=\'/jscripty/projects/report/{{projectId}}/sessions\'>\n <i class="icon-settings"></i>\n Sessions</a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.jscripty.projects.report.summary\') || $state.is( \'main.jscripty.projects.report.questionDetail\')}">\n <a data-ng-href=\'/jscripty/projects/report/{{projectId}}/summary\'>\n <i class="fa fa-bar-chart"></i>\n Questions</a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.jscripty.projects.report.detail\')}">\n <a data-ng-href=\'/jscripty/projects/report/{{projectId}}/detail\'>\n <i class="fa fa-list"></i>\n Summary</a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.jscripty.projects.report.inputs\')}">\n <a data-ng-href=\'/jscripty/projects/report/{{projectId}}/inputs\'>\n <i class="fa fa-edit"></i>\n Inputs</a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n\n </div>\n\n </div>\n\n <div class="profile-content margin-top-20">\n <div class="row">\n <div class="col-md-12">\n <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">\n <div class="dashboard-stat2">\n <div class="display">\n <div class="number">\n <h3 class="font-green-sharp">{{projectStats.started}}</h3>\n <small>Started</small>\n </div>\n <div class="icon">\n <i class="icon-pie-chart"></i>\n </div>\n </div>\n <div class="progress-info">\n <div class="progress">\n <span style="width: 100%;" class="progress-bar progress-bar-success green-sharp">\n </span>\n </div>\n <div class="status">\n </div>\n </div>\n </div>\n </div>\n <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">\n <div class="dashboard-stat2">\n <div class="display">\n <div class="number">\n <h3 class="font-red-haze">{{projectStats.incomplete}}</h3>\n <small>Incomplete</small>\n </div>\n <div class="icon">\n <i class="icon-chart"></i>\n </div>\n </div>\n <div class="progress-info">\n <div class="progress">\n <span style="width: 100%;" class="progress-bar progress-bar-success red-haze">\n </span>\n </div>\n <div class="status">\n </div>\n </div>\n </div>\n </div>\n <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">\n <div class="dashboard-stat2">\n <div class="display">\n <div class="number">\n <h3 class="font-blue-sharp">{{projectStats.completed}}</h3>\n <small>Completed</small>\n </div>\n <div class="icon">\n <i class="icon-like"></i>\n </div>\n </div>\n <div class="progress-info">\n <div class="progress">\n <span style="width: 100%;" class="progress-bar progress-bar-success blue-sharp">\n </span>\n </div>\n <div class="status">\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class="row">\n <div ui-view class="col-md-12">\n </div>\n </div>\n </div>\n </div>\n </div>\n'),a.put("app/jscripty/project/report/report.inputs.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light bordered" data-ng-init="getQuestionInputs()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="fa fa-edit font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_INPUTS\' | translate }}</a> </span>\n </div>\n <div class="tools">\n <!-- <a href="" class="fullscreen" data-original-title="" title="">\n </a> -->\n </div>\n </div>\n <div class="portlet-body" >\n <div ui-grid="gridOptions" ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/jscripty/project/report/report.question.detail.html",'<div class="row" data-ng-init="getDetail()">\n <div class="col-md-12">\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="fa fa-list font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_DETAIL\' | translate }}</a> </span>\n </div>\n </div>\n <div class="portlet-body" >\n <div class="alert alert-success text-center" ng-show="!questionDetail">\n <h4>{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</h4>\n </div>\n <div class="row margin-top-20" ng-show="questionDetail">\n <div class="col-md-10 col-md-offset-1">\n <div class="panel panel-info" >\n <div class="panel-heading">\n <h3 class="panel-title">\n\n <i class="fa-chart "></i>Question Id: {{questionDetail.question_id}}\n </div>\n <div class="panel-body">\n <div class="row">\n <div class="col-md-12">\n <h4><strong>{{questionDetail.question_label}}</strong></h4>\n </div>\n </div>\n <div class="row">\n <div class="col-md-10 col-md-offset-1 ">\n <strong><h4>{{questionDetail.question_text}}</h4></strong><br>\n </div>\n </div>\n <div class="row">\n <div class="col-md-6">\n <div class="row">\n <div class="col-md-10 col-md-offset-1 ">\n <!-- <div class="alert alert-success text-center" ng-show="!questionDetail.choices.length">\n <h4>{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</h4>\n </div> -->\n <table ng-if="questionDetail.choices.length" class="table table-hover" style="table-layout: fixed; width: 100%">\n <thead>\n <tr>\n <th style="width=5%"> Value </th>\n <th style="width=5%"> Count </th>\n <th ng-if="question.graphType != \'PolarArea\'" style="width=5%"> % </th>\n </tr>\n </thead>\n <tbody>\n <tr ng-if="!choice.other_option" ng-repeat="choice in questionDetail.choices ">\n <td style="word-wrap: break-word">{{choice.value}}</td>\n <td>{{choice.count}}</td>\n <td ng-if="question.graphType != \'PolarArea\'">{{choice.percentage | number:2}}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n <div class="row" ng-if="choice.other_option" ng-repeat="choice in questionDetail.choices ">\n <div class="col-md-6 col-md-offset-3 ">\n <strong><a href="">{{choice.value}}</a> </strong> <span class="badge">{{choice.count}}</span><br>\n\n </div>\n </div>\n <div class="row">\n <div class="col-md-10 col-md-offset-1 ">\n <h4> <strong>Total: {{questionDetail.total}}</strong></h4><br>\n </div>\n </div>\n </div>\n <div class="col-md-6 pull-right ">\n <canvas id="base" class="chart-base" chart-type="questionDetail.graphType"\n chart-data="questionDetail.graphData" chart-labels="questionDetail.graphLabels" chart-legend="true">\n </canvas>\n <!-- <button class="btn btn-success btn-sm pull-right" ng-click="toggle(questionDetail)">{{questionDetail.graphType}}</button> -->\n </div>\n </div>\n\n </div>\n\n </div>\n\n </div>\n </div>\n\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/jscripty/project/report/report.session.detail.html",'\n\n<div class="row" data-ng-init="getSessionDetails()">\n <div class="col-md-12">\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="fa fa-list font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_DETAIL\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group">\n <button class="btn btn-icon-only btn-primary" data-ng-click="pdf(\'header\',sessionQuestions)">\n <i class="fa fa-download"></i>\n </button>\n <!-- <button class="btn btn-icon-only btn-default" data-ng-click="accordion.expandAll()">\n <i class="fa fa-plus-square-o"></i>\n </button>\n <button class="btn btn-icon-only btn-default" data-ng-click="accordion.collapseAll()">\n <i class="icon-collapse-alt"></i>\n </button> -->\n </div>\n </div>\n </div>\n <div class="portlet-body" style="height: auto;">\n <div class="row margin-top-20">\n <div class="col-md-10 col-md-offset-1">\n <div id = "header" class="panel panel-info">\n <div class="panel-heading">\n <strong>Project Name: </strong>{{project.name}}<br>\n <strong>Project Id: </strong>{{project.id}}<br>\n <strong>Session Id: </strong>{{session.session_id}}<br>\n <strong>Status: </strong>{{session.status}}<br>\n <strong>Started At: </strong>{{session.createdAt}}<br>\n <strong>Closed At: </strong>{{session.completedAt}}<br>\n </div>\n </div>\n <v-accordion class="vAccordion--default" multiple control="accordion">\n <v-pane id="{{question.question_id }}" ng-repeat=" question in sessionQuestions | orderBy:\'index\'"" expanded="true">\n <v-pane-header>\n Question Id: {{question.question_id}}\n </v-pane-header>\n <v-pane-content>\n <h4><strong>{{question.question_label}}</strong> : {{question.question_text}}</h4>\n <div ng-if="question.question_type == \'question\'">\n <h4><strong>Answer: </strong>{{question.question_answer}}</h4>\n </div>\n <div ng-if="question.question_other_label">\n <h4>\n <strong>{{question.question_other_label}}: </strong>\n {{question.question_other_answer || \'No Value\'}}\n </h4>\n </div>\n <table class="table table-hover" ng-if="question.ReportJscriptyInputs.length">\n <thead>\n <tr>\n <th > Label </th>\n <th >Answer </th>\n </tr>\n </thead>\n <tbody>\n <tr ng-repeat="input in question.ReportJscriptyInputs |orderBy:\'id\'">\n <td>{{input.input_label}}</td>\n <td>{{input.input_value || \'No Value\'}}</td>\n </tr>\n </tbody>\n </table>\n </v-pane-content>\n </v-pane>\n </v-accordion>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/jscripty/project/report/report.sessions.html",'\n <div class="row" >\n <div class="col-md-12">\n <div class="portlet light bordered" data-ng-init="getProjectSessions()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-settings font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_SESSIONS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group">\n <a class="btn btn-default" href="#" data-ng-click="gridOptions.getPage();initView()">\n <i class="icon-reload"></i>\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body" >\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n'),a.put("app/jscripty/project/report/report.summary.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light bordered" data-ng-init="getQuestionSummary()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="fa fa-bar-chart font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_QUESTIONS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group">\n <!-- <a class="btn btn-default" href="#" data-ng-click="gridOptions.getPage();initView()">\n <i class="icon-reload"></i>\n </a> -->\n </div>\n </div>\n </div>\n <div class="portlet-body" >\n <div ui-grid="gridOptions" ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/jscripty/project/view/view.html",'<div class="row" data-ng-init="getProject()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-edit"></i>\n <a href="/jscripty/projects/list">{{ \'APPLICATION_JSCRIPTY\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-slack"></i>\n <a href="/jscripty/projects/list">{{ \'APPLICATION_PROJECTS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <a ng-href="/jscripty/projects/view/{{jscriptyProject.id}}">{{jscriptyProject.name}}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div id="geEditor" class="geEditor"></div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n<script>\n\n\n</script>\n'),a.put("app/landing/landing.html",'<!-- BEGIN LOGO -->\n<div class="logo">\n <a href="index.html">\n <img ng-src="api/settings/logo/login" alt="logo" class="custom-login-logo" onError="this.onerror=null"/>\n </a>\n</div>\n<!-- END LOGO -->\n\n<!-- BEGIN LANDING -->\n<div data-ng-init="initLanding()">\n <div data-ng-show="message" class="col-md-12 page-500" style="padding-bottom: 50px;">\n <div class="number">\n Oops!\n </div>\n <div class=" details" style="color: white;">\n <h3>{{message | translate}}.</h3>\n <p>\n Please contact your administrator.<br><br>\n </p>\n </div>\n </div>\n</div>\n<!-- END LANDING -->\n\n<div class="copyright">\n xCALLY Motion v. {{info.version}} | 2016 - {{year + 1}} © Powered by Xenialab <ng-bind-html data-ng-if="license.custom && !settings.defaultFooterWhiteLabel && settings.footerWhiteLabel" ng-bind-html="\'| \'+settings.footerWhiteLabel"></ng-bind-html>\n</div>\n'), -a.put("app/login/login.html",'<!-- BEGIN LOGO -->\n<div class="logo" data-ng-init="getInfo()">\n <a>\n <img ng-src="api/settings/logo/login" alt="logo" class="custom-login-logo" onError="this.onerror=null"/>\n </a>\n</div>\n<!-- END LOGO -->\n<!-- BEGIN LOGIN -->\n<div class="content">\n <!-- BEGIN LOGIN FORM -->\n <form class="login-form" name="loginForm" data-ng-if="!forgotPassword" data-ng-submit="login(loginForm)" novalidate>\n <h3 class="form-title">Sign In</h3>\n <div class="alert alert-success" data-ng-show="recovered">\n <button class="close" data-close="alert"></button>\n <span>{{\'MESSAGE_ACCOUNT_RECOVERED\' | translate}}</span>\n </div>\n <div class="alert alert-danger" data-ng-class="{\'display-hide\': !loginForm.$submitted || !errorLogin}">\n <button class="close" data-close="alert"></button>\n <span>{{ errorLog ? errorLog : (\'MESSAGE_INSERT_USER_OR_PASS\' | translate)}}</span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': loginForm.$submitted && loginForm.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}</label>\n <div class="input-icon">\n <i class="fa fa-user"></i>\n <input ng-enter="login(loginForm)" class="form-control form-control-solid placeholder-no-fix" type="text" autocomplete="off" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" name="name" ng-model="userLogin.name" required/>\n </div>\n <span data-ng-show="loginForm.$submitted && loginForm.name.$invalid" class="help-block">{{\'MESSAGE_REQUIRED_FIELD\' | translate}}</span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': loginForm.$submitted && loginForm.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}</label>\n <div class="input-icon">\n <i class="fa fa-lock"></i>\n <input ng-enter="login(loginForm)" class="form-control form-control-solid placeholder-no-fix" type="password" autocomplete="off" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" name="password" ng-model="userLogin.password" required/>\n </div>\n <span data-ng-show="loginForm.$submitted && loginForm.password.$invalid" class="help-block">{{\'MESSAGE_REQUIRED_FIELD\' | translate}}</span>\n <span class="help-block"><a href="#" data-ng-click="toggleForgotPassword(true)" class="forget-password">{{\'APPLICATION_FORGOT_PASSWORD\' | translate}}?</a></span>\n </div>\n <div class="form-actions">\n <button type="submit" class="btn btn-success uppercase">{{\'APPLICATION_LOGIN\' | translate}}</button>\n <label class="rememberme check">\n <input type="checkbox" data-ng-model="userLogin.remember"> {{\'APPLICATION_REMEMBER_ME\' | translate}}\n </label>\n <!-- <label class="rememberme check">\n <input type="checkbox" name="remember" value="1"/>Remember </label> -->\n <!-- <a href="javascript:;" id="forget-password" class="forget-password">Forgot Password?</a> -->\n </div>\n </form>\n <form name="forgetForm" data-ng-if="forgotPassword" data-ng-submit="forgetForm.$valid && recover()" novalidate>\n <h3>{{\'APPLICATION_FORGOT_PASSWORD\' | translate}}?</h3>\n <p>\n {{\'APPLICATION_INSERT_EMAIL_TO_RESET\' | translate}}\n </p>\n <div class="alert alert-success" data-ng-show="showRecoverMessage">\n <button class="close" data-close="alert"></button>\n <span>{{\'MESSAGE_CHECK_YOUR_EMAIL_RECOVER\' | translate}}</span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': forgetForm.$submitted && forgetForm.email.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}</label>\n <div class="input-icon">\n <i class="fa fa-envelope"></i>\n <input class="form-control form-control-solid placeholder-no-fix" type="email" placeholder="{{\'APPLICATION_EMAIL\' | translate}}" name="email" ng-model="userLogin.email" required/>\n </div>\n <span data-ng-show="forgetForm.$submitted && forgetForm.email.$invalid" class="help-block">{{\'MESSAGE_REQUIRED_FIELD\' | translate}}</span>\n </div>\n <div class="form-actions">\n <button type="button" id="back-btn" data-ng-click="toggleForgotPassword(false)" class="btn btn-default">{{\'APPLICATION_BACK\' | translate}}</button>\n <button type="submit" class="btn btn-success uppercase pull-right">{{\'APPLICATION_SUBMIT\' | translate}}</button>\n </div>\n </form>\n <div class="login-options">\n <h4>{{\'APPLICATION_FOLLOW_US\' | translate}}</h4>\n <ul class="social-icons">\n <li>\n <a class="social-icon-color facebook" data-original-title="facebook" href="https://www.facebook.com/xcallymotion" target="_blank"></a>\n </li>\n <li>\n <a class="social-icon-color twitter" data-original-title="Twitter" href="https://twitter.com/xcallymotion" target="_blank"></a>\n </li>\n <li>\n <a class="social-icon-color googleplus" data-original-title="Google Plus" href="https://plus.google.com/+Xcally" target="_blank"></a>\n </li>\n <li>\n <a class="social-icon-color linkedin" data-original-title="Linkedin" href="https://www.linkedin.com/company/xcally" target="_blank"></a>\n </li>\n </ul>\n </div>\n</div>\n<div class="copyright">\n xCALLY Motion v. {{info.version}} | 2016 - {{year + 1}} © Powered by Xenialab <ng-bind-html data-ng-if="license.custom && !settings.defaultFooterWhiteLabel && settings.footerWhiteLabel" ng-bind-html="\'| \'+settings.footerWhiteLabel"></ng-bind-html>\n</div>\n<!-- END LOGIN -->\n'),a.put("app/main/about.modal.html",'<div class="center-text">\n<div class="modal-header no-border">\n<button type="button" ng-click="$dismiss()" class="close">×</button>\n <!-- <h3 class="modal-title center-text">{{ \'APPLICATION_ABOUT\' | translate }}</h3> -->\n</div>\n<div class="modal-body" style="padding-top:0px;">\n <div class="mbottom20" data-ng-init="getInfo()">\n <a>\n <img ng-src="api/settings/logo/about" alt="logo" class="custom-login-logo about-logo" onError="this.onerror=null"/>\n </a>\n</div>\n<div class="mbottom20">\n <b class="sounds-title-icon">xCALLY Motion</b><br>\n <small>v. {{info.version}}</small><br><br>\n <small>2016 - {{year + 1}} © Powered by Xenialab</small><br>\n <small><a href="https://www.xcallymotion.com">www.xcallymotion.com</a></small><br>\n <ng-bind-html data-ng-if="license.custom && !settings.defaultFooterWhiteLabel && settings.footerWhiteLabel" ng-bind-html="settings.footerWhiteLabel"></ng-bind-html>\n</div>\n<div class="mbottom20">\n <span><b>{{\'APPLICATION_USEFUL_LINKS\' | translate}}</b></span><br>\n <small><a href="https://wiki.xcallymotion.com/display/XMD/Welcome" target="_blank">Wiki</a></small><br>\n <small><a href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></small><br>\n <small><a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></small><br>\n</div>\n <div class="login-options" style=\'margin-bottom:0px;\'>\n <h4>{{\'APPLICATION_FOLLOW_US\' | translate}}</h4>\n <ul class="social-icons">\n <li>\n <a class="social-icon-color facebook" data-original-title="facebook" href="https://www.facebook.com/xcallymotion" target="_blank"></a>\n </li>\n <li>\n <a class="social-icon-color twitter" data-original-title="Twitter" href="https://twitter.com/xcallymotion" target="_blank"></a>\n </li>\n <li>\n <a class="social-icon-color googleplus" data-original-title="Google Plus" href="https://plus.google.com/+Xcally" target="_blank"></a>\n </li>\n <li>\n <a class="social-icon-color linkedin" data-original-title="Linkedin" href="https://www.linkedin.com/company/xcally" target="_blank"></a>\n </li>\n </ul>\n</div>\n<div class="login-options" style=\'margin-bottom:0px;\'>\n<h4>{{\'APPLICATION_CONTACT_US\' | translate}}:</h4>\n<div class="float-right" style="margin-top:10px;margin-bottom:10px;">\n <a href="mailto:support@xcally.com">support@xcally.com</a></small>\n</div>\n</div>\n</div>\n</div>\n<!-- <div class="modal-footer">\n <button class="btn default" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div> -->\n'),a.put("app/main/audioFileDownload.play.modal.html",'<!-- <div class="modal-header">\n <button ng-if="modal.dismissable" type="button" ng-click="$dismiss()" class="close">×</button>\n <h4 ng-if="modal.title" ng-bind="modal.title | translate" class="modal-title"></h4>\n</div> -->\n<div class="modal-body" style="text-align:center;">\n <audio controls autoplay ng-src="{{audio}}" preload="none" controlsList="nodownload">\n Your browser does not support the audio tag.</audio>\n</div>\n<!-- <div class="modal-footer">\n <button class="btn default" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div> -->\n'),a.put("app/main/chooseContact.modal.html",'<div class="modal-header" data-ng-init="getContacts()">\n <h3 class="modal-title">{{ \'APPLICATION_CHOOSE_CONTACT\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <table st-table="rowCollection" class="table table-striped">\n <tbody>\n <tr>\n <th>{{\'APPLICATION_NAME\' | translate}}</th>\n <th>{{\'APPLICATION_LIST\' | translate}}</th>\n <th></th>\n </tr>\n <tr ng-repeat="contact in contacts">\n <td>{{contact.firstName}} {{contact.lastName || \'\'}}</td>\n <td>{{contact.List.name}}</td>\n <td>\n <button class="btn default btn-xs green-stripe" data-ng-click="open(contact)">\n {{ \'APPLICATION_OPEN\' | translate}}\n </button>\n </td>\n </tr>\n <tr data-ng-hide="contacts.length">\n <td colspan="3" style="text-align:center;">\n <i>{{ \'MESSAGE_NO_CONTACTS_AVAILABLE\' | translate }}</i>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="open()"><i class="icon-plus"></i> {{ \'APPLICATION_NEW_CONTACT\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/main/closeEditedTab.modal.html",'<div class="modal-header" data-ng-init="getContacts()">\n <h3 class="modal-title">{{ \'APPLICATION_WARNING\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <p>{{\'MESSAGE_CLOSE_EDITED_TAB\' | translate}}</p>\n</div>\n<div class="modal-footer">\n <button class="btn btn-danger" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/main/closeEditedTab.modal.jscripty.html",' <div class="modal-header" data-ng-init="init()">\n <h3 class="modal-title">{{ \'APPLICATION_WARNING\' | translate }}</h3>\n <!-- <h3 ng-if="projectStatus == \'incomplete\'" class="modal-title">{{ \'APPLICATION_WARNING\' | translate }}</h3> -->\n\n</div>\n<div class="modal-body">\n<!-- <div ng-if="projectStatus == \'incomplete\'" class="modal-body"> -->\n <p>{{\'MESSAGE_CLOSE_INCOMPLETE\' | translate}}</p>\n</div>\n\n\n<div class="modal-footer">\n <button class="btn btn-danger" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/main/cm.disposition.modal.html",'<div class="modal-header">\n <button ng-if="modal.dismissable" type="button" ng-click="$dismiss()" class="close">×</button>\n <h4 ng-if="modal.title" ng-bind="modal.title | translate" class="modal-title"></h4>\n</div>\n<div class="modal-body">\n <form name="form" novalidate data-ng-init="initDisposition()">\n <div class="form-group">\n <ui-select data-ng-model="item.agentDisposition" name="agentDisposition" theme="bootstrap" data-ng-disabled="!dispositions.length" required>\n <ui-select-match placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="disposition.name as disposition in dispositions | filter: $select.search">\n <div ng-bind-html="disposition.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="note note-warning" data-ng-hide="dispositions.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_DISPOSITIONS_AVAILABLE\' | translate }}\n </p>\n </div>\n</form>\n <!-- <div ng-if="modal.html" ng-bind-html="modal.html"></div> -->\n</div>\n<div class="modal-footer">\n <button class="btn btn-danger" type="button" ng-click="ok()" data-ng-disabled="!item.agentDisposition">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n <!-- <button ng-repeat="button in modal.buttons" ng-class="button.classes" ng-click="button.click($event)" ng-bind="button.text" class="btn"></button> -->\n</div>\n'),a.put("app/main/company.info.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_COMPANY_INFO\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{ \'APPLICATION_ADDRESS\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{ \'APPLICATION_SHIPMENT_ADDRESS\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateCompany()" novalidate>\n <div class="row">\n <div class="col-md-6">\n <!-- START NAME -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}</label>\n <input readonly type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="company.name" required/>\n </div>\n <!-- END NAME -->\n\n <!-- START VAT -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_VAT\' | translate}}</label>\n <input readonly type="text" name="vat" placeholder="{{\'APPLICATION_VAT\' | translate}}" class="form-control" data-ng-model="company.vat"/>\n </div>\n <!-- END VAT -->\n\n <!-- START COMPANYID -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_COMPANY_ID\' | translate}}</label>\n <input readonly type="text" name="companyId" placeholder="{{\'APPLICATION_COMPANY_ID\' | translate}}" class="form-control" data-ng-model="company.companyId"/>\n </div>\n <!-- END COMPANYID -->\n\n <!-- START WEBSITE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_WEBSITE\' | translate}}</label>\n <input readonly type="text" name="website" placeholder="{{\'APPLICATION_WEBSITE\' | translate}}" class="form-control" data-ng-model="company.website"/>\n </div>\n <!-- END WEBSITE -->\n\n <!-- START EMAIL -->\n <div class="form-group" >\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}</label>\n <input readonly type="email" name="email" placeholder="{{\'APPLICATION_EMAIL\' | translate}}" class="form-control" data-ng-model="company.email"/>\n </div>\n <!-- END EMAIL -->\n </div>\n <div class="col-md-6">\n <!-- START PHONE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}</label>\n <input readonly type="text" name="phone" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="company.phone"/>\n </div>\n <!-- END PHONE -->\n\n <!-- START FAX -->\n <div class="form-group" >\n <label class="control-label">{{\'APPLICATION_FAX\' | translate}}</label>\n <input readonly type="text" name="fax" placeholder="{{\'APPLICATION_FAX\' | translate}}" class="form-control" data-ng-model="company.fax"/>\n </div>\n <!-- END FAX -->\n\n <!-- START TYPE -->\n <div class="form-group" >\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}</label>\n <input readonly type="text" name="type" placeholder="{{\'APPLICATION_TYPE\' | translate}}" class="form-control" data-ng-model="company.type"/>\n </div>\n <!-- END TYPE -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea readonly type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="company.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n </div>\n </div>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.address" novalidate>\n <!-- START STREET -->\n <div class="form-group" >\n <label class="control-label">{{\'APPLICATION_STREET\' | translate}}</label>\n <input readonly type="text" name="street" placeholder="{{\'APPLICATION_STREET\' | translate}}" class="form-control" data-ng-model="company.street"/>\n </div>\n <!-- END STREET -->\n\n <!-- START POSTALCODE -->\n <div class="form-group" >\n <label class="control-label">{{\'APPLICATION_POSTALCODE\' | translate}}</label>\n <input readonly type="text" name="postalCode" placeholder="{{\'APPLICATION_POSTALCODE\' | translate}}" class="form-control" data-ng-model="company.postalCode"/>\n </div>\n <!-- END POSTALCODE -->\n\n <!-- START CITY -->\n <div class="form-group" >\n <label class="control-label">{{\'APPLICATION_CITY\' | translate}}</label>\n <input readonly type="text" name="city" placeholder="{{\'APPLICATION_CITY\' | translate}}" class="form-control" data-ng-model="company.city"/>\n </div>\n <!-- END CITY -->\n <!-- START COUNTRY -->\n <div class="form-group" >\n <label class="control-label">{{\'APPLICATION_COUNTRY\' | translate}}</label>\n <input readonly type="text" name="country" placeholder="{{\'APPLICATION_COUNTRY\' | translate}}" class="form-control" data-ng-model="company.country"/>\n </div>\n <!-- END COUNTRY -->\n </form>\n </div>\n <div class="tab-pane" id="tab_1_3">\n <form name="forms.shipmentAddress" novalidate>\n <!-- START STREET -->\n <div class="form-group" >\n <label class="control-label">{{\'APPLICATION_STREET\' | translate}}</label>\n <input readonly type="text" name="sStreet" placeholder="{{\'APPLICATION_STREET\' | translate}}" class="form-control" data-ng-model="company.sStreet"/>\n </div>\n <!-- END STREET -->\n\n <!-- START POSTALCODE -->\n <div class="form-group" >\n <label class="control-label">{{\'APPLICATION_POSTALCODE\' | translate}}</label>\n <input readonly type="text" name="sPostalCode" placeholder="{{\'APPLICATION_POSTALCODE\' | translate}}" class="form-control" data-ng-model="company.sPostalCode"/>\n </div>\n <!-- END POSTALCODE -->\n\n <!-- START CITY -->\n <div class="form-group" >\n <label class="control-label">{{\'APPLICATION_CITY\' | translate}}</label>\n <input readonly type="text" name="sCity" placeholder="{{\'APPLICATION_CITY\' | translate}}" class="form-control" data-ng-model="company.sCity"/>\n </div>\n <!-- END CITY -->\n <!-- START COUNTRY -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_COUNTRY\' | translate}}</label>\n <input readonly type="text" name="sCountry" placeholder="{{\'APPLICATION_COUNTRY\' | translate}}" class="form-control" data-ng-model="company.sCountry"/>\n </div>\n <!-- END COUNTRY -->\n </form>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/main/customDateFilter.modal.html",'<div class="modal-body">\n <uib-datepicker ng-model="dateTime.filterDate"\n class="well well-sm">\n </uib-datepicker>\n <uib-timepicker data-ng-if="hasTime" ng-model="dateTime.time" show-meridian="false"></uib-timepicker>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="setFilterDate(dateTime.filterDate)">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancelDateFilter()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/main/customDateFilterHeader.html",'<input class="ui-grid-filter-input date-time-filter-buttons pointer-cursor" style="width:90%;padding:inherit;" data-ng-click="openDatePicker(colFilter)" placeholder="{{ colFilter.name }}" readonly value="{{colFilter.term | date:\'dd-MM-yyyy\'}}">\n<span role="button" class="ui-grid-filter-button-select cancel-custom-date-range-filter-button ng-scope" data-ng-click="removeFilter(colFilter, $index)" data-ng-if="!colFilter.disableCancelFilterButton" data-ng-disabled="colFilter.term === undefined || colFilter.term === null || colFilter.term === \'\'" data-ng-show="colFilter.term !== undefined && colFilter.term != null" tabindex="0" aria-hidden="false" aria-disabled="false" style="right:22px;">\n <i class="ui-grid-icon-cancel cancel-custom-date-range-filter" ui-grid-one-bind-aria-label="aria.removeFilter" aria-label="Remove Filter"> </i>\n</span>\n'),a.put("app/main/customTagsFilter.modal.html",'<div class="modal-body" data-ng-init="initModal()">\n <!-- START TAGS -->\n<div class="form-group">\n <label class="control-label">{{\'APPLICATION_TAGS\' | translate}}</label>\n <ui-select multiple=\'true\' data-ng-model="item.myTags" theme="bootstrap">\n <ui-select-match placeholder="{{ \'APPLICATION_TAGS\' | translate }}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter: $select.search">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n</div>\n<!-- END TAGS -->\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="setFilterTags()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancelTagsFilter()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/main/customTagsFilterHeader.html",'<input class="ui-grid-filter-input pointer-cursor" style="width:90%;padding:inherit;" data-ng-click="openTags(colFilter)" placeholder="{{ colFilter.name }}" readonly value="{{colFilter.term}}">\n<span role="button" class="ui-grid-filter-button-select cancel-custom-date-range-filter-button ng-scope" data-ng-click="removeFilter(colFilter, $index)" data-ng-if="!colFilter.disableCancelFilterButton" data-ng-disabled="colFilter.term === undefined || colFilter.term === null || colFilter.term === \'\'" data-ng-show="colFilter.term !== undefined && colFilter.term != null" tabindex="0" aria-hidden="false" aria-disabled="false" style="right:5px;">\n <i class="ui-grid-icon-cancel cancel-custom-date-range-filter" ui-grid-one-bind-aria-label="aria.removeFilter" aria-label="Remove Filter"> </i>\n</span>\n'),a.put("app/main/keepMeLogged.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_WARNING\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <p>{{\'MESSAGE_SOMEONE_LOGGED_YOU_OUT\' | translate}}</p>\n</div>\n<div class="modal-footer">\n <button class="btn btn-danger" type="button" ng-click="close()">{{ \'APPLICATION_YES\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_NO\' | translate }}</button>\n</div>\n'),a.put("app/main/main.html",'<!-- BEGIN HEADER -->\n<div data-ng-include="\'components/header/header.html\'" data-ng-controller="HeaderController" class="page-header navbar navbar-fixed-top">\n</div>\n<!-- END HEADER -->\n\n<div class="clearfix">\n</div>\n<!-- BEGIN CONTAINER -->\n<div class="page-container">\n\n <!-- BEGIN SIDEBAR -->\n <div data-ng-include="\'components/sidebar/sidebar.html\'" data-ng-controller="SidebarController" class="page-sidebar-wrapper">\n </div>\n <!-- END SIDEBAR -->\n\n <!-- BEGIN CONTENT -->\n <div class="page-content-wrapper">\n <div class="page-content" data-ng-class="{\'demo\': !license.expiration}">\n\n <!-- BEGIN PAGE CONTENT -->\n <uib-tabset>\n <uib-tab select="addWorkspace()" active="mainTab.active">\n <uib-tab-heading>\n Motion <i class="icon-rocket"></i>\n </uib-tab-heading>\n <div class="hide" data-ng-if="!Auth.isAgent() && activeTour.main" ng-joy-ride="activeTour.main" config="tourConfig.main" on-finish="onTourFinish()" on-skip="onTourSkip()"></div>\n <div ui-view class=""></div>\n </uib-tab>\n <uib-tab class="motion-{{workspace.type}}-uib-tab" data-ng-repeat="workspace in workspaces" active="workspace.active" data-ng-switch="workspace.type" select="select(workspace)" deselect="deselect(workspace)">\n <uib-tab-heading data-ng-mouseup="$event.which === 2 && closeTab($index)">\n <i data-ng-if="workspace.class" class="prova" data-ng-class="workspace.class"></i> {{workspace.name | truncate: 25: \'...\': true}} <span class="badge badge-danger" data-ng-if="workspace.unread">{{workspace.unread}}</span> <i class="icon-close pointer-cursor" data-ng-click="closeTab($index)"></i>\n </uib-tab-heading>\n <div class="" data-ng-switch="workspace.type">\n <new-contact data-ng-switch-when="newContact" workspace="workspace" index="$index" on-submit="createContact(index,item,data)"></new-contact>\n <contact data-ng-switch-when="contact" workspace="workspace" index="$index" on-submit="updateContact(index,item)"></contact>\n <jscripty data-ng-switch-when="jscripty" workspace="workspace" index="$index" on-submit="closeJscriptyTab(index)"></jscripty>\n <!-- <jscripty data-ng-switch-when="jscripty" workspace="workspace" index="$index" on-submit="closeTab(index,item)"></jscripty> -->\n <chat-room data-ng-switch-when="chatRoom" workspace="workspace" index="$index" on-submit="closeTab(index)"></chat-room>\n <fax-room data-ng-switch-when="faxRoom" workspace="workspace" index="$index" on-submit="closeTab(index)"></fax-room>\n <mail-room data-ng-switch-when="mailRoom" workspace="workspace" index="$index" on-submit="closeTab(index)"></mail-room>\n <sms-room data-ng-switch-when="smsRoom" workspace="workspace" index="$index" on-submit="closeTab(index)"></sms-room>\n <openchannel-room data-ng-switch-when="openchannelRoom" workspace="workspace" index="$index" on-submit="closeTab(index)"></openchannel-room>\n <tiger-dial-disposal data-ng-switch-when="tdDisposal" workspace="workspace" index="$index"></tiger-dial-disposal>\n <web-popup data-ng-switch-when="webPopup" workspace="workspace" index="$index"></web-popup>\n </div>\n </uib-tab>\n </uib-tabset>\n <!-- END PAGE CONTENT -->\n\n </div>\n </div>\n <!-- END CONTENT -->\n\n</div>\n<!-- END CONTAINER -->\n\n<!-- BEGIN FOOTER -->\n<div data-ng-include="\'components/footer/footer.html\'" data-ng-controller="FooterController" class="page-footer">\n</div>\n<!-- END FOOTER -->\n\n<!-- BEGIN JAVASCRIPTS(Load javascripts at bottom, this will reduce page load time) -->\n<!-- BEGIN CORE PLUGINS -->\n<!--[if lt IE 9]>\n<script src="../../assets/global/plugins/respond.min.js"></script>\n<script src="../../assets/global/plugins/excanvas.min.js"></script>\n<![endif]-->\n\n<!-- END JAVASCRIPTS -->\n'),a.put("app/main/mergeContact.choose.modal.html",'<div class="modal-header" data-ng-init="initView()">\n <h3 class="modal-title">{{ \'APPLICATION_CHOOSE_CONTACT_TO_MERGE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <!-- START TABLE -->\n<div data-ng-if="gridOptions" ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n</div>\n<!-- END TABLE -->\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/main/mergeContact.merge.modal.html",'<div class="modal-header" data-ng-init="initView()">\n <h3 class="modal-title">{{ \'APPLICATION_MERGE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="forms.general" data-ng-submit="submit({index:index,item:contact})" novalidate>\n <!-- BEGIN PORTLET -->\n <div class="portlet light ">\n <div class="portlet-body row">\n <div class="col-md-4">\n <!-- START FIRSTNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.firstName.$touched || forms.general.$submitted) && forms.general.firstName.$invalid}">\n <label class="control-label">{{\'APPLICATION_FIRSTNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input data-ng-if="fields.firstName.length <= 1" type="text" name="firstName" placeholder="{{\'APPLICATION_FIRSTNAME\' | translate}}" class="form-control" data-ng-model="contact.firstName" required/>\n <ui-select data-ng-if="fields.firstName.length > 1" data-ng-model="contact.firstName" theme="bootstrap" name="firstName" required>\n <ui-select-match placeholder="{{ \'APPLICATION_FIRSTNAME\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="field in fields.firstName | filter: $select.search track by $index">\n <div ng-bind-html="field | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.firstName.$touched || forms.general.$submitted) && forms.general.firstName.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FIRSTNAME -->\n\n <!-- START LASTNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.lastName.$touched || forms.general.$submitted) && forms.general.lastName.$invalid}">\n <label class="control-label">{{\'APPLICATION_LASTNAME\' | translate}}</label>\n <input data-ng-if="fields.lastName.length <= 1" type="text" name="lastName" placeholder="{{\'APPLICATION_LASTNAME\' | translate}}" class="form-control" data-ng-model="contact.lastName"/>\n <ui-select data-ng-if="fields.lastName.length > 1" data-ng-model="contact.lastName" theme="bootstrap" name="lastName">\n <ui-select-match placeholder="{{ \'APPLICATION_LASTNAME\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="field in fields.lastName | filter: $select.search track by $index">\n <div ng-bind-html="field | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.lastName.$touched || forms.general.$submitted) && forms.general.lastName.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END LASTNAME -->\n\n <!-- START COMPANY -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.CompanyId.$invalid && forms.general.$submitted}">\n <label class="control-label">{{\'APPLICATION_COMPANY\' | translate}}</label>\n <ui-select data-ng-model="contact.CompanyId" theme="bootstrap" name="CompanyId" ng-disabled="!companies.length">\n <ui-select-match placeholder="{{ \'APPLICATION_COMPANY\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="company.id as company in companies | filter: $select.search" null-option="scope.noCompany">\n <div ng-bind-html="company.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="companies.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_COMPANIES_AVAILABLE\' | translate }}\n </p>\n <p>\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/contactmanager/companies/list">{{\'APPLICATION_COMPANIES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="forms.general.CompanyId.$invalid && forms.general.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END COMPANY -->\n </div>\n <div class="col-md-4">\n <!-- START PHONE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.phone.$touched || forms.general.$submitted) && forms.general.phone.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}</label>\n <input data-ng-if="fields.phone.length <= 1" type="text" name="phone" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="contact.phone"/>\n <ui-select data-ng-if="fields.phone.length > 1" data-ng-model="contact.phone" theme="bootstrap" name="phone">\n <ui-select-match placeholder="{{ \'APPLICATION_PHONE\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="field in fields.phone | filter: $select.search track by $index">\n <div ng-bind-html="field | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.phone.$touched || forms.general.$submitted) && forms.general.phone.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PHONE -->\n <!-- START MOBILE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.mobile.$touched || forms.general.$submitted) && forms.general.mobile.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOBILE\' | translate}}</label>\n <input data-ng-if="fields.mobile.length <= 1" type="text" name="mobile" placeholder="{{\'APPLICATION_MOBILE\' | translate}}" class="form-control" data-ng-model="contact.mobile"/>\n <ui-select data-ng-if="fields.mobile.length > 1" data-ng-model="contact.mobile" theme="bootstrap" name="mobile">\n <ui-select-match placeholder="{{ \'APPLICATION_MOBILE\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="field in fields.mobile | filter: $select.search track by $index">\n <div ng-bind-html="field | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.mobile.$touched || forms.general.$submitted) && forms.general.mobile.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MOBILE -->\n <!-- START EMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.email.$touched || forms.general.$submitted) && forms.general.email.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}</label>\n <input data-ng-if="fields.email.length <= 1" type="email" name="email" placeholder="{{\'APPLICATION_EMAIL\' | translate}}" class="form-control" data-ng-model="contact.email"/>\n <ui-select data-ng-if="fields.email.length > 1" data-ng-model="contact.email" theme="bootstrap" name="email">\n <ui-select-match placeholder="{{ \'APPLICATION_EMAIL\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="field in fields.email | filter: $select.search track by $index">\n <div ng-bind-html="field | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.email.$touched || forms.general.$submitted) && forms.general.email.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n </div>\n <div class="col-md-4">\n <!-- START FAX -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.fax.$touched || forms.general.$submitted) && forms.general.fax.$invalid}">\n <label class="control-label">{{\'APPLICATION_FAX\' | translate}}</label>\n <input data-ng-if="fields.fax.length <= 1" type="text" name="fax" placeholder="{{\'APPLICATION_FAX\' | translate}}" class="form-control" data-ng-model="contact.fax"/>\n <ui-select data-ng-if="fields.fax.length > 1" data-ng-model="contact.fax" theme="bootstrap" name="fax">\n <ui-select-match placeholder="{{ \'APPLICATION_FAX\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="field in fields.fax | filter: $select.search track by $index">\n <div ng-bind-html="field | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.fax.$touched || forms.general.$submitted) && forms.general.fax.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FAX -->\n <!-- START TAGS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.tags.$invalid && forms.general.$submitted}">\n <label class="control-label">{{\'APPLICATION_TAGS\' | translate}}</label>\n <ui-select multiple=\'true\' data-ng-model="contact.tags" theme="bootstrap" name="tags" ng-disabled="disabled">\n <ui-select-match placeholder="{{ \'APPLICATION_TAGS\' | translate }}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter: $select.search">\n <div ng-bind-html="tag | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.general.tags.$invalid && forms.general.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TAGS -->\n <!-- START LIST -->\n <div class="form-group" data-ng-if="contact.id">\n <label class="control-label">{{\'APPLICATION_LIST\' | translate}}</label>\n <input type="text" name="list" placeholder="{{\'APPLICATION_LIST\' | translate}}" class="form-control" data-ng data-ng-model="contact.List.name" disabled/>\n </div>\n <!-- END LIST -->\n </div>\n </div>\n </div>\n <div class="portlet light upborder">\n <div class="portlet-body row">\n <div class="col-md-4">\n <!-- START STREET -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.street.$touched || forms.general.$submitted) && forms.general.street.$invalid}">\n <label class="control-label">{{\'APPLICATION_STREET\' | translate}}</label>\n <input data-ng-if="fields.street.length <= 1" type="text" name="street" placeholder="{{\'APPLICATION_STREET\' | translate}}" class="form-control" data-ng-model="contact.street"/>\n <ui-select data-ng-if="fields.street.length > 1" data-ng-model="contact.street" theme="bootstrap" name="street">\n <ui-select-match placeholder="{{ \'APPLICATION_STREET\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="field in fields.street | filter: $select.search track by $index">\n <div ng-bind-html="field | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.street.$touched || forms.general.$submitted) && forms.general.street.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END STREET -->\n\n <!-- START POSTALCODE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.postalCode.$touched || forms.general.$submitted) && forms.general.postalCode.$invalid}">\n <label class="control-label">{{\'APPLICATION_POSTALCODE\' | translate}}</label>\n <input data-ng-if="fields.postalCode.length <= 1" type="text" name="postalCode" placeholder="{{\'APPLICATION_POSTALCODE\' | translate}}" class="form-control" data-ng-model="contact.postalCode"/>\n <ui-select data-ng-if="fields.postalCode.length > 1" data-ng-model="contact.postalCode" theme="bootstrap" name="postalCode">\n <ui-select-match placeholder="{{ \'APPLICATION_POSTALCODE\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="field in fields.postalCode | filter: $select.search track by $index">\n <div ng-bind-html="field | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.postalCode.$touched || forms.general.$submitted) && forms.general.postalCode.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END POSTALCODE -->\n\n <!-- START CITY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.city.$touched || forms.general.$submitted) && forms.general.city.$invalid}">\n <label class="control-label">{{\'APPLICATION_CITY\' | translate}}</label>\n <input data-ng-if="fields.city.length <= 1" type="text" name="city" placeholder="{{\'APPLICATION_CITY\' | translate}}" class="form-control" data-ng-model="contact.city"/>\n <ui-select data-ng-if="fields.city.length > 1" data-ng-model="contact.city" theme="bootstrap" name="city">\n <ui-select-match placeholder="{{ \'APPLICATION_CITY\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="field in fields.city | filter: $select.search track by $index">\n <div ng-bind-html="field | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.city.$touched || forms.general.$submitted) && forms.general.city.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CITY -->\n </div>\n <div class="col-md-4">\n <!-- START COUNTRY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.country.$touched || forms.general.$submitted) && forms.general.country.$invalid}">\n <label class="control-label">{{\'APPLICATION_COUNTRY\' | translate}}</label>\n <input data-ng-if="fields.country.length <= 1" type="text" name="country" placeholder="{{\'APPLICATION_COUNTRY\' | translate}}" class="form-control" data-ng-model="contact.country"/>\n <ui-select data-ng-if="fields.country.length > 1" data-ng-model="contact.country" theme="bootstrap" name="country">\n <ui-select-match placeholder="{{ \'APPLICATION_COUNTRY\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="field in fields.country | filter: $select.search track by $index">\n <div ng-bind-html="field | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.country.$touched || forms.general.$submitted) && forms.general.country.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END COUNTRY -->\n\n <!-- START DATEOFBIRTH -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.dateOfBirth.$touched || forms.general.$submitted) && forms.general.dateOfBirth.$invalid}">\n <label class="control-label">{{\'APPLICATION_DATEOFBIRTH\' | translate}}</label>\n <input data-ng-if="fields.dateOfBirth.length <= 1" type="date" name="dateOfBirth" placeholder="{{\'APPLICATION_DATEOFBIRTH\' | translate}}" class="form-control" data-ng-model="contact.dateOfBirth"/>\n <ui-select data-ng-if="fields.dateOfBirth.length > 1" data-ng-model="contact.dateOfBirth" theme="bootstrap" name="dateOfBirth">\n <ui-select-match placeholder="{{ \'APPLICATION_DATEOFBIRTH\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="field in fields.dateOfBirth | filter: $select.search track by $index">\n <div ng-bind-html="field | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.dateOfBirth.$touched || forms.general.$submitted) && forms.general.dateOfBirth.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DATEOFBIRTH -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea style="resize: vertical;" data-ng-if="fields.description.length <= 1" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="contact.description"/></textarea>\n <ui-select data-ng-if="fields.description.length > 1" data-ng-model="contact.description" theme="bootstrap" name="description">\n <ui-select-match placeholder="{{ \'APPLICATION_DESCRIPTION\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="field in fields.description | filter: $select.search track by $index">\n <div ng-bind-html="field | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END DESCRIPTION -->\n </div>\n <div class="col-md-4">\n <!-- START URL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.url.$touched || forms.general.$submitted) && forms.general.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input data-ng-if="fields.url.length <= 1" type="text" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="contact.url"/>\n <ui-select data-ng-if="fields.url.length > 1" data-ng-model="contact.url" theme="bootstrap" name="url">\n <ui-select-match placeholder="{{ \'APPLICATION_URL\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="field in fields.url | filter: $select.search track by $index">\n <div ng-bind-html="field | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.url.$touched || forms.general.$submitted) && forms.general.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END URL -->\n </div>\n </div>\n </div>\n <div class="portlet light upborder" data-ng-if="customFields.length">\n <div class="portlet-body">\n <div class="row">\n <div class="col-md-4" data-ng-repeat="customField in customFields">\n <div data-ng-if="customField.type==\'text\'" class="form-group" data-ng-class="{\'has-error\': (forms.general[customField.name].$touched || forms.general.$submitted) && forms.general[customField.name].$invalid}">\n <label class="control-label">{{customField.alias}}</label>\n <input data-ng-if="fields[customField.name].length <= 1" type="text" name="{{customField.name}}" placeholder="{{customField.alias}}" class="form-control" data-ng-model="contact[customField.name]"/>\n <ui-select data-ng-if="fields[customField.name].length > 1" data-ng-model="contact[customField.name]" theme="bootstrap" name="{{customField.name}}">\n <ui-select-match placeholder="{{customField.name}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="field in fields[customField.name] | filter: $select.search track by $index">\n <div ng-bind-html="field | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general[customField.name].$touched || forms.general.$submitted) && forms.general[customField.name].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div data-ng-if="customField.type==\'select\'" class="form-group" data-ng-class="{\'has-error\': forms.general[customField.name].$invalid && forms.general.$submitted}">\n <label class="control-label">{{customField.alias}}</label>\n <ui-select data-ng-model="contact[customField.name]" theme="bootstrap" name="{{customField.name}}" data-ng-disabled="disabled">\n <ui-select-match allow-clear placeholder="{{customField.alias}}">{{$select.selected.value}}</ui-select-match>\n <ui-select-choices repeat="choice.value as choice in customField.values | filter: $select.search">\n <div ng-bind-html="choice.value | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.general[customField.name].$invalid && forms.general.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- END PORTLET -->\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="merge()" ng-disabled="forms.general.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'), -a.put("app/main/template/actionBuilder/template.actionBuilderIntegration.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" data-ng-change="changeIntegration()" required>\n <ui-select-match placeholder="{{ \'APPLICATION_INTEGRATION\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="integration.state as integration in integrations | filter: $select.search">\n <div ng-bind-html="integration.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{\'APPLICATION_INTEGRATION\' | translate}}\n </span>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div class="form-group col-md-6" data-ng-if="element.data1 && accounts && randomName" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data2" name="data2{{randomName}}" theme="bootstrap" data-ng-change="changeAccount();" required>\n <ui-select-match placeholder="{{\'APPLICATION_ACCOUNT\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in accounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{\'APPLICATION_ACCOUNT\' | translate}}\n </span>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div class="form-group col-md-6" data-ng-if="element.data2 && configurations && randomName" data-ng-class="{\'has-error\': (form[\'data3\'+randomName].$touched || form.$submitted) && form[\'data3\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data3" name="data3{{randomName}}" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_CONFIGURATION\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="config.id as config in configurations | filter: $select.search">\n <div ng-bind-html="config.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{\'APPLICATION_CONFIGURATION\' | translate}}\n </span>\n <span data-ng-show="(form[\'data3\'+randomName].$touched || form.$submitted) && form[\'data3\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("app/main/template/actionBuilder/template.actionBuilderJscripty.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required>\n <ui-select-match>{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="project.id as project in projects | filter: $select.search">\n <div ng-bind-html="project.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("app/main/template/actionBuilder/template.actionBuilderMotionBar.html",'<!-- data1: 0 POPUP, 1 URL, 2 WINAPP -->\n<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required data-ng-change="changeMode();">\n <ui-select-match placeholder="{{ \'APPLICATION_TYPE\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="motionAction.value as motionAction in motionActions | filter: $select.search">\n <div ng-bind-html="motionAction.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'APPLICATION_TYPE\' | translate }}\n </span>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<!-- data1:0 data2:Template -->\n<div data-ng-if="randomName && element.data1==0" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data2" name="data2{{randomName}}" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_TEMPLATE\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'APPLICATION_TEMPLATE\' | translate }}\n </span>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<!-- data1:1 data2:URL -->\n<div data-ng-if="randomName && element.data1==1" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <input type="text" ng-model="element.data2" name="data2{{randomName}}" class="form-control" required placeholder="{{ \'APPLICATION_URL\' | translate }}"/>\n <span class="help-block">\n {{ \'APPLICATION_URL\' | translate }}\n </span>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<!-- data1:2 data2:Application data3:Arguments -->\n<div data-ng-if="randomName && element.data1==2" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <input type="text" ng-model="element.data2" name="data2{{randomName}}" class="form-control" required placeholder="{{ \'APPLICATION_APPLICATION\' | translate }}"/>\n <span class="help-block">\n {{ \'APPLICATION_APPLICATION\' | translate }}\n </span>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div data-ng-if="randomName && element.data1==2" class="form-group col-md-6">\n <input type="text" ng-model="element.data3" name="data3{{randomName}}" class="form-control" placeholder="{{ \'APPLICATION_ARGUMENTS\' | translate }}"/>\n <span class="help-block">\n {{ \'APPLICATION_ARGUMENTS\' | translate }}\n </span>\n</div>\n'),a.put("app/main/template/actionBuilder/template.actionBuilderStatus.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required>\n <ui-select-match>{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="status.value as status in states | filter: $select.search">\n <div ng-bind-html="status.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("app/main/template/actionBuilder/template.actionBuilderTemplate.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required>\n <ui-select-match>{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <input type="text" ng-model="element.data2" name="data2{{randomName}}" class="form-control" required/>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div class="col-md-6">\n <input type="text" ng-model="element.data3" class="form-control"/>\n</div>\n'),a.put("app/main/template/actionBuilder/template.actionBuilderUrlForward.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_TYPE\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{\'APPLICATION_TYPE\' | translate}}\n </span>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div class="form-group col-md-12" data-ng-if="element.data1 && randomName" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <input type="url" ng-model="element.data2" placeholder="{{ \'APPLICATION_URL\' | translate }}" name="data2{{randomName}}" class="form-control" required/>\n <span class="help-block">\n {{\'APPLICATION_URL\' | translate}}\n </span>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("app/main/template/template.conditionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-4" data-ng-class="{\'has-error\': (form[\'field\'+randomName].$touched || form.$submitted) && form[\'field\'+randomName].$invalid}">\n <ui-select data-ng-model="element.field" name="field{{randomName}}" theme="bootstrap" data-ng-change="checkCondition(element.field)" required>\n <ui-select-match>{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="condition.value as condition in service.services[serviceindex].conditions | filter: $select.search">\n <div ng-bind-html="condition.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'field\'+randomName].$touched || form.$submitted) && form[\'field\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div data-ng-if="randomName && element.field" class="form-group col-md-4" data-ng-class="{\'has-error\': (form[\'operator\'+randomName].$touched || form.$submitted) && form[\'operator\'+randomName].$invalid}">\n <ui-select data-ng-model="element.operator" name="operator{{randomName}}" theme="bootstrap" required>\n <ui-select-match>{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="operator.value as operator in _.find(service.services[serviceindex].conditions,{value:element.field}).operators | filter: $select.search">\n <div ng-bind-html="operator.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'operator\'+randomName].$touched || form.$submitted) && form[\'operator\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div class="col-md-4" data-ng-if="elementType === \'input\' && randomName && element.field" data-ng-class="{\'has-error\': (form[\'value\'+randomName].$touched || form.$submitted) && form[\'value\'+randomName].$invalid}">\n <input type="text" ng-model="element.value" class="form-control" name="value{{randomName}}" required/>\n <span data-ng-show="(form[\'value\'+randomName].$touched || form.$submitted) && form[\'value\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div class="form-group col-md-4" data-ng-if="elementType === \'select\' && randomName && element.field" data-ng-class="{\'has-error\': (form[\'value\'+randomName].$touched || form.$submitted) && form[\'value\'+randomName].$invalid}">\n <ui-select data-ng-model="element.value" name="value{{randomName}}" theme="bootstrap" required>\n <ui-select-match>{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="value.value as value in values| filter: $select.search">\n <div ng-bind-html="value.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'value\'+randomName].$touched || form.$submitted) && form[\'value\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("app/main/template/template.contactTab.html",'<div class="row margin-top-20 contact-tab-container">\n <div class="col-md-12 contact-tab">\n <form name="forms.general" data-ng-submit="submit({index:index,item:contact,data:workspace.data})" novalidate>\n <!-- BEGIN PROFILE CONTENT -->\n <div class="profile-content">\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#tab_1_1{{contact.id || \'\'}}" data-toggle="tab">{{\'APPLICATION_DETAIL\' | translate}}</a>\n </li>\n <li data-ng-if="contact.id">\n <a href="#tab_1_2{{contact.id || \'\'}}" data-toggle="tab">{{\'APPLICATION_CUSTOMER_JOURNEY\' | translate}}</a>\n </li>\n</ul>\n<div class="tab-content">\n <div class="tab-pane fade active in" id="tab_1_1{{contact.id || \'\'}}">\n <!--end add-portfolio-->\n <div class="row portfolio-block" data-ng-if="workspace.data && workspace.data.uniqueid && workspace.data.agentcalledAt">\n <div class="col-md-3">\n <div class="portfolio-text">\n <img src="assets/images/media/CmCall.png" alt=""/>\n <div class="portfolio-text-info">\n <h4>{{\'MESSAGE_INBOUND_CALL_FROM\' | translate}} - {{workspace.data.calleridnum}}</h4>\n <p>\n {{\'MESSAGE_CALL_UNIQUEID\' | translate}} : {{workspace.data.uniqueid}}\n </p>\n </div>\n </div>\n </div>\n <div class="col-md-2 portfolio-stat">\n <div>{{\'APPLICATION_QUEUE\' | translate}} </div>\n <p> {{workspace.data.queue}} </p>\n </div>\n <div class="col-md-3 portfolio-stat">\n <div>{{\'APPLICATION_AGENT\' | translate}} </div>\n <p> {{workspace.data.membername}} </p>\n </div>\n <div class="col-md-2 portfolio-stat">\n <div>{{\'APPLICATION_DATE\' | translate}} </div>\n <p> {{workspace.data.agentcalledAt | date:\'dd/MM/yyyy HH:mm:ss\'}} </p>\n </div>\n <div class="col-md-2 portfolio-stat">\n <button class="btn" data-ng-class="{\'grey-cascade\':contact.disposed || !enableDisposal,\'green-haze\':enableDisposal && !contact.disposed}" type="button" data-ng-click="dispose()" data-ng-disabled="contact.disposed || !enableDisposal">\n <i class="icon-target"></i> {{\'APPLICATION_DISPOSITION\' | translate}}\n </button>\n </div>\n </div>\n <!--end row-->\n <!-- BEGIN PORTLET -->\n <div class="portlet light ">\n <div class="portlet-title">\n <div class="caption caption-md">\n <i class="icon-bar-chart theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_DETAIL\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group btn-group-devided" data-toggle="buttons">\n <button type="submit" data-ng-if="contact.id" title="{{\'APPLICATION_COPY\' | translate}}" class="btn btn-circle green btn-sm" data-ng-click="copy(contact.id)"><i class="fa fa-files-o"></i></button>\n <button type="submit" data-ng-if="contact.ListId" class="btn btn-circle purple btn-sm" title="{{\'APPLICATION_MERGE\' | translate}}" data-ng-click="merge(contact)"><i class="icon-link"></i></button>\n <label class="btn btn-transparent grey-salsa btn-circle btn-sm active" data-ng-click="detail.tab=\'main\'">\n <input type="radio" class="toggle">{{\'APPLICATION_MAIN\' | translate}}</label>\n <label class="btn btn-transparent grey-salsa btn-circle btn-sm" data-ng-click="detail.tab=\'other\'">\n <input type="radio" class="toggle">{{\'APPLICATION_OTHER\' | translate}}</label>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <div data-ng-class="{\'hidden\':detail.tab != \'main\'}" class="portlet-body contact-portlet row">\n <div class="col-md-4">\n <!-- START FIRSTNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.firstName.$touched || forms.general.$submitted) && forms.general.firstName.$invalid}">\n <label class="control-label">{{\'APPLICATION_FIRSTNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="firstName" placeholder="{{\'APPLICATION_FIRSTNAME\' | translate}}" class="form-control" data-ng-model="contact.firstName" required/>\n <span data-ng-show="(forms.general.firstName.$touched || forms.general.$submitted) && forms.general.firstName.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FIRSTNAME -->\n\n <!-- START LASTNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.lastName.$touched || forms.general.$submitted) && forms.general.lastName.$invalid}">\n <label class="control-label">{{\'APPLICATION_LASTNAME\' | translate}}</label>\n <input type="text" name="lastName" placeholder="{{\'APPLICATION_LASTNAME\' | translate}}" class="form-control" data-ng-model="contact.lastName"/>\n <span data-ng-show="(forms.general.lastName.$touched || forms.general.$submitted) && forms.general.lastName.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END LASTNAME -->\n\n <!-- START COMPANY -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.CompanyId.$invalid && forms.general.$submitted}">\n <label class="control-label">{{\'APPLICATION_COMPANY\' | translate}}</label>\n <div class="input-group">\n <ui-select data-ng-model="contact.CompanyId" theme="bootstrap" name="CompanyId" ng-disabled="!companies.length" required>\n <ui-select-match placeholder="{{ \'APPLICATION_COMPANY\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="company.id as company in companies | filter: $select.search" null-option="scope.noCompany">\n <div ng-bind-html="company.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="input-group-btn">\n <button type="button" data-ng-click="companyInfo(contact.CompanyId)" class="btn btn-default" data-ng-disabled="!contact.CompanyId">\n <span class="icon-info" data-ng-class="{\'font-blue\':contact.CompanyId}"></span>\n </button>\n </span>\n </div>\n <div class="note note-warning" data-ng-hide="companies.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_COMPANIES_AVAILABLE\' | translate }}\n </p>\n <p data-ng-if="!Auth.isAgent()">\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/contactmanager/companies/list">{{\'APPLICATION_COMPANIES\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="forms.general.CompanyId.$invalid && forms.general.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END COMPANY -->\n </div>\n <div class="col-md-4">\n <!-- START PHONE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.phone.$touched || forms.general.$submitted) && forms.general.phone.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}</label>\n <div class="input-group">\n <input type="text" name="phone" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="contact.phone"/>\n <span class="input-group-btn" uib-dropdown>\n <button data-ng-if="Auth.isAgent()" type="button" uib-dropdown-toggle class="btn btn-default" data-ng-disabled="!contact.phone || !agent.phoneBarRemoteControl" >\n <span class="icon-earphones-alt" data-ng-class="{\'font-blue\':contact.phone && agent.phoneBarRemoteControl}" uib-tooltip="{{!agent.phoneBarRemoteControl ? (\'APPLICATION_ENABLE_REMOTE_PHONEBAR\' | translate) : (\'APPLICATION_MOTION_BAR_CONTROLS\' | translate)}}" ></span>\n </button>\n <ul class="dropdown-menu" uib-dropdown-menu role="menu" aria-labelledby="single-button">\n <li role="menuitem"><a href="#" data-ng-click="callPhoneBar(contact.phone,\'call\')"><i class="icon-phone"></i> {{\'APPLICATION_CALL\' | translate}}</a></li>\n <li role="menuitem"><a href="#" data-ng-click="callPhoneBar(contact.phone,\'transfer\')"><i class="glyphicon glyphicon-random"></i> {{\'APPLICATION_TRANSFER\' | translate}}</a></li>\n </ul>\n <button type="button" data-ng-click="openRoom(null,\'smsRoom\',{to:contact.phone})" class="btn btn-default" data-ng-disabled="!contact.phone || !license.messaging">\n <span class="glyphicon glyphicon-comment" data-ng-class="{\'font-blue\':contact.phone && license.messaging}"></span>\n </button>\n </span>\n </div>\n <span data-ng-show="(forms.general.phone.$touched || forms.general.$submitted) && forms.general.phone.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PHONE -->\n <!-- START MOBILE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.mobile.$touched || forms.general.$submitted) && forms.general.mobile.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOBILE\' | translate}}</label>\n <div class="input-group">\n <input type="text" name="mobile" placeholder="{{\'APPLICATION_MOBILE\' | translate}}" class="form-control" data-ng-model="contact.mobile"/>\n <span class="input-group-btn" uib-dropdown>\n <button data-ng-if="Auth.isAgent()" type="button" uib-dropdown-toggle class="btn btn-default" data-ng-disabled="!contact.mobile || !agent.phoneBarRemoteControl" >\n <span class="icon-earphones-alt" data-ng-class="{\'font-blue\':contact.mobile && agent.phoneBarRemoteControl}" uib-tooltip="{{!agent.phoneBarRemoteControl ? (\'APPLICATION_ENABLE_REMOTE_PHONEBAR\' | translate) : (\'APPLICATION_MOTION_BAR_CONTROLS\' | translate)}}" ></span>\n </button>\n <ul class="dropdown-menu" uib-dropdown-menu role="menu" aria-labelledby="single-button">\n <li role="menuitem"><a href="#" data-ng-click="callPhoneBar(contact.mobile,\'call\')"><i class="icon-phone"></i> {{\'APPLICATION_CALL\' | translate}}</a></li>\n <li role="menuitem"><a href="#" data-ng-click="callPhoneBar(contact.mobile,\'transfer\')"><i class="glyphicon glyphicon-random"></i> {{\'APPLICATION_TRANSFER\' | translate}}</a></li>\n </ul>\n <button type="button" data-ng-click="openRoom(null,\'smsRoom\',{to:contact.mobile})" class="btn btn-default" data-ng-disabled="!contact.mobile || !license.messaging">\n <span class="glyphicon glyphicon-comment" data-ng-class="{\'font-blue\':contact.mobile && license.messaging}"></span>\n </button>\n </span>\n </div>\n <span data-ng-show="(forms.general.mobile.$touched || forms.general.$submitted) && forms.general.mobile.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MOBILE -->\n <!-- START EMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.email.$touched || forms.general.$submitted) && forms.general.email.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}</label>\n <div class="input-group">\n <input type="text" name="email" placeholder="{{\'APPLICATION_EMAIL\' | translate}}" class="form-control" data-ng-model="contact.email"/>\n <span class="input-group-btn">\n <button type="button" data-ng-click="openRoom(null,\'mailRoom\',{to:contact.email})" class="btn btn-default" data-ng-disabled="!contact.email || !license.mail">\n <span class="icon-envelope" data-ng-class="{\'font-blue\':contact.email && license.mail}"></span>\n </button>\n </span>\n </div>\n <span data-ng-show="(forms.general.email.$touched || forms.general.$submitted) && forms.general.email.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n </div>\n <div class="col-md-4">\n <!-- START FAX -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.fax.$touched || forms.general.$submitted) && forms.general.fax.$invalid}">\n <label class="control-label">{{\'APPLICATION_FAX\' | translate}}</label>\n <div class="input-group">\n <input type="text" name="fax" placeholder="{{\'APPLICATION_FAX\' | translate}}" class="form-control" data-ng-model="contact.fax"/>\n <span class="input-group-btn">\n <button type="button" data-ng-click="openRoom(null,\'faxRoom\',{to:contact.fax})" class="btn btn-default" data-ng-disabled="!contact.fax || !license.fax">\n <span class="fa fa-fax" data-ng-class="{\'font-blue\':contact.fax && license.fax}"></span>\n </button>\n </span>\n </div>\n <span data-ng-show="(forms.general.fax.$touched || forms.general.$submitted) && forms.general.fax.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FAX -->\n <!-- START TAGS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.tags.$invalid && forms.general.$submitted}">\n <label class="control-label">{{\'APPLICATION_TAGS\' | translate}}</label>\n <ui-select multiple=\'true\' data-ng-model="contact.tags" theme="bootstrap" name="tags" ng-disabled="disabled">\n <ui-select-match placeholder="{{ \'APPLICATION_TAGS\' | translate }}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="tag in tags | filter: $select.search">\n {{tag}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.general.tags.$invalid && forms.general.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TAGS -->\n <!-- START LIST -->\n <div class="form-group" data-ng-if="contact.id">\n <label class="control-label">{{\'APPLICATION_LIST\' | translate}}</label>\n <input type="text" name="list" placeholder="{{\'APPLICATION_LIST\' | translate}}" class="form-control" data-ng-model="contact.List.name" disabled/>\n </div>\n <!-- END LIST -->\n <!-- START LIST -->\n <div data-ng-if="!contact.id" class="form-group" data-ng-class="{\'has-error\': forms.general.ListId.$invalid && forms.general.$submitted}">\n <label class="control-label">{{\'APPLICATION_LIST\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="contact.ListId" theme="bootstrap" name="ListId" data-ng-change="getCustomFields()" required>\n <ui-select-match placeholder="{{ \'APPLICATION_LIST\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="list.id as list in lists | filter: $select.search">\n <div ng-bind-html="list.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <div class="note note-warning" data-ng-hide="lists.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_LISTS_AVAILABLE\' | translate }}\n </p>\n <p data-ng-if="!Auth.isAgent()">\n {{\'APPLICATION_GO_TO\' | translate}} <a href="/contactmanager/lists/list">{{\'APPLICATION_LISTS\' | translate}}</a>\n </p>\n </div>\n <span data-ng-show="forms.general.ListId.$invalid && forms.general.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END LIST -->\n </div>\n </div>\n <div data-ng-class="{\'hidden\':detail.tab != \'other\'}" class="portlet-body contact-portlet row">\n <div class="col-md-4">\n <!-- START STREET -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.street.$touched || forms.general.$submitted) && forms.general.street.$invalid}">\n <label class="control-label">{{\'APPLICATION_STREET\' | translate}}</label>\n <input type="text" name="street" placeholder="{{\'APPLICATION_STREET\' | translate}}" class="form-control" data-ng-model="contact.street"/>\n <span data-ng-show="(forms.general.street.$touched || forms.general.$submitted) && forms.general.street.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END STREET -->\n\n <!-- START POSTALCODE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.postalCode.$touched || forms.general.$submitted) && forms.general.postalCode.$invalid}">\n <label class="control-label">{{\'APPLICATION_POSTALCODE\' | translate}}</label>\n <input type="text" name="postalCode" placeholder="{{\'APPLICATION_POSTALCODE\' | translate}}" class="form-control" data-ng-model="contact.postalCode"/>\n <span data-ng-show="(forms.general.postalCode.$touched || forms.general.$submitted) && forms.general.postalCode.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END POSTALCODE -->\n\n <!-- START CITY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.city.$touched || forms.general.$submitted) && forms.general.city.$invalid}">\n <label class="control-label">{{\'APPLICATION_CITY\' | translate}}</label>\n <input type="text" name="city" placeholder="{{\'APPLICATION_CITY\' | translate}}" class="form-control" data-ng-model="contact.city"/>\n <span data-ng-show="(forms.general.city.$touched || forms.general.$submitted) && forms.general.city.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CITY -->\n </div>\n <div class="col-md-4">\n <!-- START COUNTRY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.country.$touched || forms.general.$submitted) && forms.general.country.$invalid}">\n <label class="control-label">{{\'APPLICATION_COUNTRY\' | translate}}</label>\n <input type="text" name="country" placeholder="{{\'APPLICATION_COUNTRY\' | translate}}" class="form-control" data-ng-model="contact.country"/>\n <span data-ng-show="(forms.general.country.$touched || forms.general.$submitted) && forms.general.country.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END COUNTRY -->\n\n <!-- START DATEOFBIRTH -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.dateOfBirth.$touched || forms.general.$submitted) && forms.general.dateOfBirth.$invalid}">\n <label class="control-label">{{\'APPLICATION_DATEOFBIRTH\' | translate}}</label>\n <input name="dateOfBirth" type="date" placeholder="{{\'APPLICATION_DATEOFBIRTH\' | translate}}" class="form-control date-picker" data-ng-model="contact.dateOfBirth"/>\n <span data-ng-show="(forms.general.dateOfBirth.$touched || forms.general.$submitted) && forms.general.dateOfBirth.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DATEOFBIRTH -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea style="resize: vertical;" type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="contact.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n </div>\n <div class="col-md-4">\n <!-- START URL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.url.$touched || forms.general.$submitted) && forms.general.url.$invalid}">\n <label class="control-label">{{\'APPLICATION_URL\' | translate}}</label>\n <input type="text" name="url" placeholder="{{\'APPLICATION_URL\' | translate}}" class="form-control" data-ng-model="contact.url"/>\n <span data-ng-show="(forms.general.url.$touched || forms.general.$submitted) && forms.general.url.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END URL -->\n\n <!-- START CREATED_BY -->\n <div class="form-group" data-ng-if="contact.id">\n <label class="control-label">{{\'APPLICATION_CREATED_BY\' | translate}}</label>\n <input type="text" name="createdBy" placeholder="{{\'APPLICATION_CREATED_BY\' | translate}}" class="form-control" data-ng-model="contact.User.name" disabled/>\n </div>\n <!-- END CREATED_BY -->\n </div>\n </div>\n </div>\n <button type="submit" class="btn btn-circle green-haze btn-sm" data-ng-disabled="forms.general.$invalid">{{contact.id ? \'APPLICATION_UPDATE\' : \'APPLICATION_SAVE\' | translate}}</button>\n </div>\n <!-- END PORTLET -->\n <!-- BEGIN PORTLET -->\n <div class="portlet light" data-ng-if="customFields.length">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_CUSTOM_FIELDS\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <div class="row">\n <div class="col-md-4" data-ng-repeat="customField in customFields track by $index">\n <div data-ng-if="customField.type==\'text\'" class="form-group" data-ng-class="{\'has-error\': (forms.general[customField.name].$touched || forms.general.$submitted) && forms.general[customField.name].$invalid}">\n <label class="control-label">{{customField.alias}}<span data-ng-if="customField.required" class="required" aria-required="true">*</span></label>\n <input type="text" name="{{customField.name}}" placeholder="{{customField.alias}}" class="form-control" data-ng-model="contact[customField.name]" data-ng-required="customField.required"/>\n <span data-ng-show="(forms.general[customField.name].$touched || forms.general.$submitted) && forms.general[customField.name].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div data-ng-if="customField.type==\'select\'" class="form-group" data-ng-class="{\'has-error\': forms.general[customField.name].$invalid && forms.general.$submitted}">\n <label class="control-label">{{customField.alias}}<span data-ng-if="customField.required" class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="contact[customField.name]" theme="bootstrap" name="{{customField.name}}" data-ng-disabled="disabled" data-ng-required="customField.required">\n <ui-select-match allow-clear placeholder="{{customField.alias}}">{{$select.selected.value}}</ui-select-match>\n <ui-select-choices repeat="choice.value as choice in customField.values | filter: $select.search">\n <div ng-bind-html="choice.value | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.general[customField.name].$invalid && forms.general.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n <button type="submit" class="btn btn-circle green-haze btn-sm" data-ng-disabled="forms.general.$invalid">{{contact.id ? \'APPLICATION_UPDATE\' : \'APPLICATION_SAVE\' | translate}}</button>\n </div>\n </div>\n <!-- END PORTLET -->\n </div>\n <div class="tab-pane fade" id="tab_1_2{{contact.id || \'\'}}">\n <!-- BEGIN PORTLET -->\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_CUSTOMER_JOURNEY\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_2_1{{contact.id || \'\'}}" data-toggle="tab">{{ \'APPLICATION_DAILY\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_2_2{{contact.id || \'\'}}" data-toggle="tab">{{ \'APPLICATION_HISTORY\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <!--BEGIN TABS-->\n <div class="tab-content">\n <div class="tab-pane active" id="tab_2_1{{contact.id || \'\'}}">\n <div class="contact-portlet">\n <div class="actions">\n <div class="btn-group btn-group-devided" data-toggle="buttons">\n <label class="btn btn-transparent grey-salsa btn-circle btn-sm" data-ng-class="{\'active\':log.daily.show === \'phone\'}" data-ng-click="updateLog(\'daily\',\'phone\',\'general\',\'inbound\')">\n <input type="radio" class="toggle">{{\'APPLICATION_PHONES\' | translate}}</label>\n <label class="btn btn-transparent grey-salsa btn-circle btn-sm" data-ng-class="{\'active\':log.daily.show === \'email\'}" data-ng-click="updateLog(\'daily\',\'email\',\'general\',\'room\')">\n <input type="radio" class="toggle">{{\'APPLICATION_EMAILS\' | translate}}</label>\n <label class="btn btn-transparent grey-salsa btn-circle btn-sm" data-ng-class="{\'active\':log.daily.show === \'chat\'}" data-ng-click="updateLog(\'daily\',\'chat\',\'general\',\'room\')">\n <input type="radio" class="toggle">{{\'APPLICATION_CHAT\' | translate}}</label>\n <label class="btn btn-transparent grey-salsa btn-circle btn-sm" data-ng-class="{\'active\':log.daily.show === \'fax\'}" data-ng-click="updateLog(\'daily\',\'fax\',\'general\',\'room\')">\n <input type="radio" class="toggle">{{\'APPLICATION_FAX\' | translate}}</label>\n <label class="btn btn-transparent grey-salsa btn-circle btn-sm" data-ng-class="{\'active\':log.daily.show === \'sms\'}" data-ng-click="updateLog(\'daily\',\'sms\',\'general\',\'room\')">\n <input type="radio" class="toggle">{{\'APPLICATION_SMS\' | translate}}</label>\n </div><span data-ng-if="log.daily.show==\'phone\'"> |</span>\n <div class="btn-group btn-group-devided" data-toggle="buttons" data-ng-if="log.daily.show==\'phone\'">\n <label class="btn btn-transparent grey-salsa btn-circle btn-sm" data-ng-class="{\'active\':log.daily.type === \'inbound\'}" data-ng-click="updateLog(\'daily\',false,false,\'inbound\')">\n <input type="radio" class="toggle">{{\'APPLICATION_INBOUND\' | translate}}</label>\n <label class="btn btn-transparent grey-salsa btn-circle btn-sm" data-ng-class="{\'active\':log.daily.type === \'outbound\'}" data-ng-click="updateLog(\'daily\',false,\'general\',\'outbound\')">\n <input type="radio" class="toggle">{{\'APPLICATION_OUTBOUND\' | translate}}</label>\n </div><span data-ng-if="log.daily.show==\'phone\'"> |</span>\n <div class="btn-group btn-group-devided" data-toggle="buttons" data-ng-if="log.daily.show==\'phone\'">\n <label class="btn btn-transparent grey-salsa btn-circle btn-sm" data-ng-class="{\'active\':log.daily.detail === \'general\'}" data-ng-click="updateLog(\'daily\',false,\'general\',false)">\n <input type="radio" class="toggle">{{\'APPLICATION_GENERAL\' | translate}}</label>\n <label data-ng-if="log.daily.type===\'inbound\'" class="btn btn-transparent grey-salsa btn-circle btn-sm" data-ng-class="{\'active\':log.daily.detail === \'queue\'}" data-ng-click="updateLog(\'daily\',false,\'queue\',\'inbound\')">\n <input type="radio" class="toggle">{{\'APPLICATION_QUEUES\' | translate}}</label>\n </div>\n </div>\n <div data-ng-if="gridOptionsdaily" name="gridOptionsdaily" ui-grid="gridOptionsdaily" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptionsdaily.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n </div>\n </div>\n <div class="tab-pane" id="tab_2_2{{contact.id || \'\'}}">\n <div class="contact-portlet">\n <div class="actions">\n <div class="btn-group btn-group-devided" data-toggle="buttons">\n'+" <label class=\"btn btn-transparent grey-salsa btn-circle btn-sm\" data-ng-class=\"{'active':log.history.show === 'phone'}\" data-ng-click=\"updateLog('history','phone','general','inbound')\">\n <input type=\"radio\" class=\"toggle\">{{'APPLICATION_PHONES' | translate}}</label>\n <label class=\"btn btn-transparent grey-salsa btn-circle btn-sm\" data-ng-class=\"{'active':log.history.show === 'email'}\" data-ng-click=\"updateLog('history','email','general','room')\">\n <input type=\"radio\" class=\"toggle\">{{'APPLICATION_EMAILS' | translate}}</label>\n <label class=\"btn btn-transparent grey-salsa btn-circle btn-sm\" data-ng-class=\"{'active':log.history.show === 'chat'}\" data-ng-click=\"updateLog('history','chat','general','room')\">\n <input type=\"radio\" class=\"toggle\">{{'APPLICATION_CHAT' | translate}}</label>\n <label class=\"btn btn-transparent grey-salsa btn-circle btn-sm\" data-ng-class=\"{'active':log.history.show === 'fax'}\" data-ng-click=\"updateLog('history','fax','general','room')\">\n <input type=\"radio\" class=\"toggle\">{{'APPLICATION_FAX' | translate}}</label>\n <label class=\"btn btn-transparent grey-salsa btn-circle btn-sm\" data-ng-class=\"{'active':log.history.show === 'sms'}\" data-ng-click=\"updateLog('history','sms','general','room')\">\n <input type=\"radio\" class=\"toggle\">{{'APPLICATION_SMS' | translate}}</label>\n </div><span data-ng-if=\"log.history.show=='phone'\"> |</span>\n <div class=\"btn-group btn-group-devided\" data-toggle=\"buttons\" data-ng-if=\"log.history.show=='phone'\">\n <label class=\"btn btn-transparent grey-salsa btn-circle btn-sm\" data-ng-class=\"{'active':log.history.type === 'inbound'}\" data-ng-click=\"updateLog('history',false,false,'inbound')\">\n <input type=\"radio\" class=\"toggle\">{{'APPLICATION_INBOUND' | translate}}</label>\n <label class=\"btn btn-transparent grey-salsa btn-circle btn-sm\" data-ng-class=\"{'active':log.history.type === 'outbound'}\" data-ng-click=\"updateLog('history',false,'general','outbound')\">\n <input type=\"radio\" class=\"toggle\">{{'APPLICATION_OUTBOUND' | translate}}</label>\n </div><span data-ng-if=\"log.history.show=='phone'\"> |</span>\n <div class=\"btn-group btn-group-devided\" data-toggle=\"buttons\" data-ng-if=\"log.history.show=='phone'\">\n <label class=\"btn btn-transparent grey-salsa btn-circle btn-sm\" data-ng-class=\"{'active':log.history.detail === 'general'}\" data-ng-click=\"updateLog('history',false,'general',false)\">\n <input type=\"radio\" class=\"toggle\">{{'APPLICATION_GENERAL' | translate}}</label>\n <label data-ng-if=\"log.history.type==='inbound'\" class=\"btn btn-transparent grey-salsa btn-circle btn-sm\" data-ng-class=\"{'active':log.history.detail === 'queue'}\" data-ng-click=\"updateLog('history',false,'queue','inbound')\">\n <input type=\"radio\" class=\"toggle\">{{'APPLICATION_QUEUES' | translate}}</label>\n </div>\n </div>\n <div data-ng-if=\"gridOptionshistory\" name=\"gridOptionshistory\" ui-grid=\"gridOptionshistory\" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter ui-grid-draggable-rows class=\"ui-grid\">\n <div class=\"watermark\" ng-show=\"!gridOptionshistory.data.length\">{{'MESSAGE_NO_RESULTS_AVAILABLE' | translate}}</div>\n </div>\n </div>\n </div>\n </div>\n <!--END TABS-->\n </div>\n </div>\n <!-- END PORTLET -->\n </div>\n <!-- END PROFILE CONTENT -->\n </form>\n</div>\n </div>\n</div>\n"), -a.put("app/main/template/template.jscriptyTab.html",'<div class="portlet light bordered">\n <!-- BEGIN PORTLET BODY -->\n <div class="portlet-body">\n <div class="row">\n <!-- BEGIN SIDEBAR -->\n <div class="profile-sidebar" style="width: 250px;">\n <!-- PORTLET MAIN -->\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li ng-repeat= \'question in questions track by $index\' ng-class="{active: $index == count}">\n <a ng-click="setCurrentQuestion($index)" >\n <i class="fa fa-check"></i> <label ng-if="attribute.nodeName == \'label\'" ng-repeat=\'attribute in question.value.attributes track by $index\'>{{attribute.value}}</label>\n </a>\n </li>\n </ul>\n </div>\n <!-- END SIDEBAR MENU -->\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END SIDEBAR -->\n <div class="profile-content">\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="fa fa-edit font-green-sharp"></i>\n <span ng-if="attribute.nodeName ==\'label\'" ng-repeat=\'attribute in currentQuestion.value.attributes\' class="caption-subject">{{attribute.value}} </span>\n </div>\n\n </div>\n <div class="portlet-body form ">\n <div class="row">\n <div class="col-md-10 col-md-offset-1 ">\n <form >\n <div class="form-body" style="height: 400px; overflow-y: auto;overflow-x:hidden">\n\n <!-- Question -->\n <div class="form-group" style="word-wrap: break-word;" >\n <h3 ng-if="attribute.nodeName ==\'question\' || attribute.nodeName ==\'text\'" ng-repeat=\'attribute in currentQuestion.value.attributes\'>{{attribute.value}}</h3>\n </div>\n <!-- Buttons -->\n\n <div ng-if ="(edge.source.id == currentQuestion.id) && edge.value" ng-repeat=\'edge in currentQuestion.edges track by $index\' class="row">\n <div class="col-md-8 col-md-offset-2">\n <input checked="checked" type="radio" ng-model="currentQuestion.button" ng-value="edge" >\n <label ng-show="(edge.source.id == currentQuestion.id) && edge.value">{{edge.value}}</label><br><br>\n </div>\n </div>\n <!-- Question Other Option -->\n\n <div class="form-group" ng-if= "attribute.nodeName ==\'other\' && attribute.value " ng-repeat=\'attribute in currentQuestion.value.attributes track by $index\'>\n <br>\n <div class="col-md-2">\n <label class="control-label">{{attribute.value}}</label>\n </div>\n <div class="col-md-8">\n <textarea style="overflow:auto" ng-model="currentQuestion.otheranswer" placeholder="Enter text" rows="8" cols="40" ></textarea>\n </div>\n </div>\n <!-- Inputs -->\n <div class="row margin-top-10" ng-repeat=\'question in currentQuestion.children track by $index\'>\n <div class="col-md-10 col-md-offset-1">\n <div ng-repeat=\'attribute in question.value.attributes track by $index\'>\n <div ng-switch="attribute.nodeName">\n <div ng-class="col-md-2" ng-switch-when="label">\n <label class="control-label" style=" display:block;word-break:break-all;" >{{attribute.value}}</label>\n </div>\n <div ng-class="attribute.value != \'checkbox\' ? \'col-md-10 pull-right\': \'col-md-2\'" ng-switch-when="type" ng-switch="attribute.value">\n <input class="form-control" ng-switch-when="text" type="text" ng-model="question.answer" />\n <input class="form-control" ng-switch-when="number" type="number" ng-model="question.answer" />\n <input class=" pull-right" ng-switch-when="checkbox" type="checkbox" ng-model="question.answer" />\n <!-- ng-true-value="\'Selected\'" ng-false-value="\'Not Selected\'" -->\n <textarea class="form-control" ng-switch-when="textarea" ng-model="question.answer" rows="8" cols="40"></textarea>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- actions -->\n <div class="form-actions">\n <div ng-switch="attribute.nodeName" class="btn-set pull-left">\n <button class="btn red-haze " ng-click="end()">\n <span class="fa fa-times" > Close</span>\n </button>\n <!-- <button class="btn red-haze " ng-click="end()">\n <span ng-if="attribute.nodeName ==\'end\'" ng-repeat=\'attribute in currentQuestion.value.attributes\' class="fa fa-times" > Finish</span>\n </button> -->\n <button class="btn blue-haze" ng-show="count" ng-click="back()"><span class="glyphicon glyphicon-chevron-left"></span>Back</button>\n </div>\n <div class="btn-set pull-right">\n <button ng-show=" currentQuestion.button" class="btn blue-hoki" ng-click="next(currentQuestion.button.target, currentQuestion.button.value)">Next<span class="glyphicon glyphicon-chevron-right" ></span></button>\n <button ng-repeat=\'edge in currentQuestion.edges track by $index\' ng-show="(edge.source.id == currentQuestion.id) && !edge.value" class="btn blue-hoki" ng-click="next(edge.target)">Next<span class="glyphicon glyphicon-chevron-right" ></span></button>\n </div>\n </div>\n </form>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- END PORTLET BODY -->\n</div>\n'),a.put("app/main/template/template.notification.html",'<div class="ui-notification alert alert-block" ng-class="class" style="width: 350px; margin-top: 50px;">\n <h4 ng-show="title" class="alert-heading"><i class="{{icon}}"></i> {{title}}</h4>\n <hr>\n <p ng-bind-html="message"></p>\n <br>\n <p>\n <a class="btn btn-success close-notification" href="#" ng-click="nAccept()"><i class="glyphicon glyphicon-ok"></i> {{acceptBtn}} </a>\n <a class="btn btn-danger close-notification" href="#" ng-click="nReject()"><i class="glyphicon glyphicon-remove"></i> {{rejectBtn}} </a>\n </p>\n</div>\n'),a.put("app/main/template/template.reportBuilderView.html",'<div class="alert alert-warning alert-group">\n <div class="form-inline" data-ng-class="{\'has-error\': forms.report.$submitted && !group.rules.length}">\n <select ng-options="o.name as o.name for o in operators" ng-model="group.operator" class="form-control input-sm"></select>\n <button style="margin-left: 5px" type="button" ng-click="addCondition()" class="btn btn-sm btn-success"><span class="glyphicon glyphicon-plus-sign"></span> {{\'APPLICATION_ADD_CONDITION\' | translate}}</button>\n <button style="margin-left: 5px" type="button" ng-click="addGroup()" class="btn btn-sm btn-success"><span class="glyphicon glyphicon-plus-sign"></span> {{\'APPLICATION_ADD_GROUP\' | translate}}</button>\n <button style="margin-left: 5px" type="button" ng-click="removeGroup()" class="btn btn-sm btn-danger"><span class="glyphicon glyphicon-minus-sign"></span> {{\'APPLICATION_REMOVE_GROUP\' | translate}}</button>\n </div>\n <div class="group-conditions">\n <div ng-repeat="rule in group.rules | orderBy:\'index\'" class="condition">\n <div ng-switch="rule.hasOwnProperty(\'group\')">\n <div ng-switch-when="true">\n <report-builder group="rule.group" fields="fields" forms="forms"></report-builder>\n </div>\n <div ng-switch-default="ng-switch-default">\n <div class="row">\n <div class="col-md-2" data-ng-class="{\'has-error\': forms.report.$submitted && !rule.field}">\n <ui-select data-ng-model="rule.field" theme="bootstrap" dynamic-name="randomName()" required>\n <ui-select-match placeholder="" ><span ng-bind-html="$select.selected.name"></span></ui-select-match>\n <ui-select-choices repeat="field.value as field in fields | filter: $select.search">\n <div ng-bind-html="field.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.report.$submitted && !rule.field" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div class="col-md-1">\n <ui-select data-ng-model="rule.condition" theme="bootstrap" dynamic-name="randomName()" data-ng-change="inputIsRequired(rule)" data-ng-init="inputIsRequired(rule)">\n <ui-select-match placeholder="">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="condition.name as condition in conditions | filter: $select.search">\n <div ng-bind-html="condition.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-2" data-ng-class="{\'has-error\': forms.report.$submitted && !rule.value}" data-ng-if="rule.required">\n <input type="text" ng-model="rule.value" class="form-control" dynamic-name="randomName()" data-ng-required="requiredInput"/>\n <span data-ng-show="forms.report.$submitted && !rule.value" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <button style="margin-left: 5px" ng-click="removeCondition($index)" class="btn btn-sm btn-danger" type="button"><span class="glyphicon glyphicon-minus-sign"></span></button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n'),a.put("app/main/template/template.tigerDialDisposal.html",'<div class="row margin-top-20 contact-tab-container">\n <div class="portlet light bordered">\n <div class="row portfolio-block" data-ng-if="workspace.spooler.destcalleridnum && workspace.spooler.queue && workspace.spooler.agentconnectAt">\n <div class="col-md-2">\n <div class="portfolio-text">\n <img src="assets/images/media/outboundroute.png" class="td-disposal-logo" alt=""/>\n </div>\n </div>\n <div class="col-md-3 portfolio-stat">\n <div>{{\'APPLICATION_CALLED_NUMBER\' | translate}} </div>\n <p> {{workspace.spooler.destcalleridnum}} </p>\n </div>\n <div class="col-md-3 portfolio-stat">\n <div>{{\'APPLICATION_QUEUE\' | translate}} </div>\n <p> {{workspace.spooler.queue}} </p>\n </div>\n <div class="col-md-3 portfolio-stat">\n <div>{{\'APPLICATION_DATE\' | translate}} </div>\n <p> {{workspace.spooler.agentconnectAt | date:\'dd/MM/yyyy HH:mm:ss\'}} </p>\n </div>\n</div>\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <span class="caption-subject">{{ workspace.spooler.calleridname }} {{ \'APPLICATION_MOTION_DIALER\' | translate }} {{ \'APPLICATION_DISPOSITION\' | translate }} </span>\n </div>\n </div>\n <div class="portlet-body">\n <div class="padding-bottom row">\n <div class="col-md-12" data-ng-form="tdForm">\n <!-- START RETRIEVE -->\n <div class="form-group" data-ng-class="{\'has-error\': (tdForm.retrieve.$touched || tdForm.$submitted) && tdForm.retrieve.$invalid}">\n <label class="control-label">{{ \'APPLICATION_STATUS\' | translate }}<span class="required" aria-required="true">*</span></label>\n <select name="retrieve" class="form-control" data-ng-model="entitySpooler.retrieve" required>\n <option value="CLOSED">CLOSE</option>\n <option value="OPEN">OPEN</option>\n <option value="BLACK_LIST">BLACKLIST</option>\n <option value="PLANNED">PLANNING</option>\n <option value="PLANNED_PEER">PLANNING AGENT</option>\n </select>\n <span data-ng-show="(tdForm.retrieve.$touched || tdForm.$submitted) && tdForm.retrieve.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END RETRIEVE -->\n <!-- START PLANNING DATE -->\n <div class="form-group" data-ng-if="entitySpooler.retrieve == \'PLANNED\' || entitySpooler.retrieve == \'PLANNED_PEER\'" data-ng-class="{\'has-error\': (tdForm.date.$touched || tdForm.$submitted) && tdForm.date.$invalid}">\n <label class="control-label">PLANNING DATE<span class="required" aria-required="true">*</span></label>\n <uib-datepicker name="date" ng-model="entitySpooler.planningtime" required data-ng-init="entitySpooler.planningtime = moment();"></uib-datepicker>\n <span data-ng-show="(tdForm.date.$touched || tdForm.$submitted) && tdForm.date.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PLANNING DATE -->\n <!-- START PLANNING TIME -->\n <div class="form-group" data-ng-if="entitySpooler.retrieve == \'PLANNED\' || entitySpooler.retrieve == \'PLANNED_PEER\'" data-ng-class="{\'has-error\': (tdForm.time.$touched || tdForm.$submitted) && tdForm.time.$invalid}">\n <label class="control-label">PLANNING TIME<span class="required" aria-required="true">*</span></label>\n <uib-timepicker name="time" ng-model="entitySpooler.planningtime" required show-meridian="false" show-seconds="false"></uib-timepicker>\n <span data-ng-show="(tdForm.time.$touched || tdForm.$submitted) && tdForm.time.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PLANNING TIME -->\n <!-- START PLANNING PEER -->\n <div class="form-group" data-ng-if="entitySpooler.retrieve == \'PLANNED_PEER\'" data-ng-class="{\'has-error\': (tdForm.agent.$touched || tdForm.$submitted) && tdForm.agent.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input name="agent" class="form-control" data-ng-model="entitySpooler.planningpeer" readonly required>\n <span data-ng-show="(tdForm.agent.$touched || tdForm.$submitted) && tdForm.agent.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PLANNING PEER -->\n <button type="button" class="btn btn-circle green-haze btn-sm" data-ng-disabled="!tdForm.$valid" data-ng-click="save()">{{\'APPLICATION_SAVE\' | translate}}</button>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/main/template/template.webPopup.html",'<div class="alert" ng-class="class">\n <h3 data-ng-show="workspace.data.subject" class="alert-heading"><i class="{{icon}}"></i>{{workspace.data.subject}}</h3>\n <hr data-ng-show="workspace.data.subject">\n <div ng-bind-html="html"></div>\n</div>\n'),a.put("app/market/market.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-handbag"></i>\n <a href="/market">Market Place</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <!-- Our Integration -->\n <div class="headline">\n <h3>Our Integrations</h3>\n </div>\n <div class="row thumbnails" data-ng-repeat="group in groupedIntegration">\n <div class="col-md-3" data-ng-repeat="integration in group">\n <div class="our-integrations">\n <h3> {{integration.name}} <small> {{integration.author}}</small></h3>\n <img data-ng-src="{{integration.logo}}" alt="{{integration.name}}" class="img-responsive"/>\n <div class="integration-info" data-ng-if="!integration.downloading">\n <p>\n {{integration.description}}\n </p>\n <div class="pull-right">\n <a data-ng-disabled="isProgressing" data-ng-if="!integration.active" data-ng-click="installIntegration(integration)" href="#" class="btn btn-xs green-meadow">Install <i class="fa fa-download"></i></a>\n <a data-ng-disabled="isProgressing" data-ng-if="integration.active" data-ng-click="uninstallIntegration(integration)" href="#" class="btn btn-xs red-sunglo">Uninstall <i class="fa fa-trash"></i></a>\n <a href="{{integration.link}}" class="btn btn-xs grey-cascade" target="_blank">More <i class="fa fa-link"></i></a>\n </div>\n </div>\n <div class="integration-info" data-ng-if="integration.downloading">\n <div>\n <uib-progressbar class="progress-striped active" value="percentage" type="success"><i style="color:black;">{{status}}</i></uib-progressbar>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!--/thumbnails-->\n <!-- //End Meer Our Team -->\n </div>\n</div>\n'),a.put("app/motiondialer/blacklist/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_CONTACT\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START PHONE -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.phone.$touched || form.$submitted) && form.phone.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="phone" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="item.phone" required/>\n <span data-ng-show="(form.phone.$touched || form.$submitted) && form.phone.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PHONE -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/motiondialer/blacklist/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-control-forward"></i>\n <a href="#">Motion Dialer</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-doc"></i>\n <a href="#">{{ \'APPLICATION_BLACKLIST\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-doc font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_BLACKLIST\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group">\n <button class="btn green-jungle " ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_CONTACT\' | translate }}\n </button>\n <span class="btn default btn-file">\n <span class="fileinput-new"><i class="icon-cloud-upload"></i> {{\'APPLICATION_IMPORT_FROM_CSV\' | translate}}</span>\n <input type="file" nv-file-select="" uploader="uploader"/>\n </span>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/motiondialer/blacklist/list/list.import.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_IMPORT_FROM_CSV\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START PHONE -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.phone.$touched || form.$submitted) && form.phone.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}</label>\n <ui-select data-ng-model="item.phone" theme="bootstrap" name="phone" data-ng-disabled="disabled" required>\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_PHONE\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END PHONE -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <ui-select data-ng-model="item.description" theme="bootstrap" name="description" data-ng-disabled="disabled">\n <ui-select-match allow-clear placeholder="{{ \'APPLICATION_DESCRIPTION\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="index in indexes | filter: $select.search">\n <div ng-bind-html="index | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n <!-- START PROGRESS -->\n <div>\n <p>{{\'APPLICATION_IMPORT_SUCCEEDED\' | translate}}: {{import.succeeded}}/{{csvLength}}</p>\n <div class="progress progress-sm" style="">\n <div class="progress-bar progress-bar-info" role="progressbar" ng-style="{ \'width\': import.success + \'%\' }"></div>\n </div>\n </div>\n <div>\n <p>{{\'APPLICATION_IMPORT_FAILED\' | translate}}: {{import.failed}}/{{csvLength}}</p>\n <div class="progress progress-sm" style="">\n <div class="progress-bar progress-bar-danger" role="progressbar" ng-style="{ \'width\': import.fail + \'%\' }"></div>\n </div>\n <div class="has-error" data-ng-if="noPhone.length">\n <span class="help-block help-block-error">\n {{\'APPLICATION_CONTACTS_WITHOUT_PHONE\' | translate}}: {{noPhone}}\n </span>\n </div>\n <div class="has-error" data-ng-if="duplicates.length">\n <span class="help-block help-block-error">\n {{\'APPLICATION_DUPLICATED_CONTACTS\' | translate}}: {{duplicates}}\n </span>\n </div>\n </div>\n <!-- END PROGRESS -->\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="start()" ng-disabled="form.$invalid || !form.phone || submitted">{{ \'APPLICATION_SUBMIT\' | translate }}</button>\n <button class="btn default" type="button" ng-click="close()" data-ng-if="!importing">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n <button class="btn default" type="button" ng-click="stop()" data-ng-if="importing">{{ \'APPLICATION_STOP\' | translate }}</button>\n</div>\n'),a.put("app/motiondialer/info/view/view.about.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_ABOUT\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <form class="form-horizontal form-row-seperated">\n <div class="form-body">\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">Specification</label>\n <div class="col-md-9">\n <input type="text" class="form-control" value="{{properties.SpecificationTitle}} ({{properties.SpecificationVersion}}) - {{properties.SpecificationVendor}}" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">Implementation</label>\n <div class="col-md-9">\n <input type="text" class="form-control" value="{{properties.ImplementationTitle}} ({{properties.ImplementationVersion}}) - {{properties.ImplementationVendor}}" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">Start Time</label>\n <div class="col-md-9">\n <input type="text" class="form-control" data-ng-model="properties.StartTime" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">Uptime</label>\n <div class="col-md-9">\n <input type="text" class="form-control" data-ng-model="properties.Uptime" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">Operating System</label>\n <div class="col-md-9">\n <input type="text" class="form-control" value="{{properties.OsName}} {{properties.OsVersion}} {{properties.OsArch}}" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">Processors</label>\n <div class="col-md-9">\n <input type="text" class="form-control" data-ng-model="properties.Processors" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">System Start Time</label>\n <div class="col-md-9">\n <input type="text" class="form-control" data-ng-model="properties.SystemStartTime" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">System Uptime</label>\n <div class="col-md-9">\n <input type="text" class="form-control" data-ng-model="properties.SystemUptime" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">File System</label>\n <div class="col-md-9">\n <input type="text" class="form-control" value="Usable: {{properties.FileSystem.Usable | number:2}} Free: {{properties.FileSystem.Free | number:2}} Total: {{properties.FileSystem.Total | number:2}}" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n </div>\n </form>\n </div>\n </div>\n </div>\n</div>\n'), -a.put("app/motiondialer/info/view/view.details.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_DETAILS\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <form class="form-horizontal form-row-seperated">\n <div class="form-body">\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">Java Specification Name</label>\n <div class="col-md-9">\n <input type="text" class="form-control" data-ng-model="properties.JavaSpecificationName" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">Java Home</label>\n <div class="col-md-9">\n <input type="text" class="form-control" data-ng-model="properties.JavaHome" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">JavaVm</label>\n <div class="col-md-9">\n <input type="text" class="form-control" value="{{properties.JavaVmName}} ({{properties.JavaVmVersion}} {{properties.JavaVmInfo}}) - {{properties.JavaVmVendor}}" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">Java</label>\n <div class="col-md-9">\n <input type="text" class="form-control" value="Java ({{properties.JavaVersion}} {{properties.JavaClassVersion}}) - {{properties.JavaVendor}}" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">Java Runtime</label>\n <div class="col-md-9">\n <input type="text" class="form-control" value="{{properties.JavaRuntimeName}} ({{JavaRuntimeVersion}})" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">Java Rmi Server Hostname</label>\n <div class="col-md-9">\n <input type="text" class="form-control" value="{{properties.JavaRmiServerHostname}}" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">User</label>\n <div class="col-md-9">\n <input type="text" class="form-control" value="{{properties.UserName}} {{properties.UserLanguage}}-{{properties.UserCountry}} {{properties.UserTimezone}}" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">User Home</label>\n <div class="col-md-9">\n <input type="text" class="form-control" value="{{properties.UserHome}}" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n <!-- START -->\n <div class="form-group">\n <label class="control-label col-md-3">Hostname</label>\n <div class="col-md-9">\n <input type="text" class="form-control" value="{{properties.Hostname}}" disabled/>\n <span class="help-block">\n </span>\n </div>\n </div>\n <!-- END -->\n </div>\n </form>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/motiondialer/info/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getProperties()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-control-forward"></i>\n <a href="#">Motion Dialer</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-info"></i>\n <a href="/motiondialer/info/view/properties">{{ \'APPLICATION_INFO\' | translate }}</a>\n <i data-ng-show="variable" class="fa fa-angle-right"></i>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/template.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{ \'APPLICATION_INFO\' | translate }}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.motiondialer.info.view.about\')}">\n <a data-ng-href="/motiondialer/info/view/about">\n <i class="icon-globe"></i>\n {{ \'APPLICATION_ABOUT\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.motiondialer.info.view.details\')}">\n <a data-ng-href="/motiondialer/info/view/details">\n <i class="icon-support"></i>\n {{ \'APPLICATION_DETAILS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.motiondialer.info.view.logs\')}">\n <a data-ng-href="/motiondialer/info/view/logs">\n <i class="icon-list"></i>\n {{ \'APPLICATION_LOGS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/motiondialer/info/view/view.logs.html",'<div class="row" data-ng-init="initLogs()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_LOGS\' | translate}}</span>\n </div>\n <button class="btn btn-default float-right" href="#" data-ng-click="initLogs()" data-ng-disabled="loading">\n <i class="icon-refresh"></i>\n </button>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="table1" name="table1" ui-grid-resize-columns ui-grid-pagination ui-grid-auto-resize ui-grid-exporter class="ui-grid">\n <div class="watermark" data-ng-show="!table1.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n <span us-spinner spinner-key="logs-spinner" spinner-start-active="true"></span>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/motiondialer/process/list/list.create.queue.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_PROCESS\' | translate }} {{\'APPLICATION_QUEUE\' | translate}}</h3>\n</div>\n<div class="modal-body">\n <form name="form" ng-init="initModal()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n <!-- START LIST -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.list.$touched || form.$submitted) && form.list.$invalid}">\n <label class="control-label">{{\'APPLICATION_LIST\' | translate}}<span class="required" aria-required="true">*</span></label>\n <select name="list" class="form-control" data-ng-model="item.list" ng-options="list.name for list in lists" required>\n </select>\n <span data-ng-show="(form.list.$touched || form.$submitted) && form.list.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END LIST -->\n <!-- START QUEUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.queue.$touched || form.$submitted) && form.queue.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <select name="queue" class="form-control" data-ng-model="item.queue" ng-options="queue.name for queue in queues" required>\n </select>\n <span data-ng-show="(form.queue.$touched || form.$submitted) && form.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE -->\n <!-- START TIMEOUT QUEUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.timeout.$touched || form.$submitted) && form.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" data-ng-model="item.timeout" required/>\n <span data-ng-show="(form.timeout.$touched || form.$submitted) && form.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.timeout.$error.max || form.timeout.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END MAX RETRIES -->\n <!-- START TRUNK -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.device.$touched || form.$submitted) && form.device.$invalid}">\n <label class="control-label">{{\'APPLICATION_TRUNK\' | translate}}<span class="required" aria-required="true">*</span></label>\n <select name="device" class="form-control" data-ng-model="item.device" ng-options="trunk.name for trunk in trunks" required>\n <option value="fake">{{\'APPLICATION_SELECT\' | translate}} {{\'APPLICATION_TRUNK\' | translate}}</option>\n </select>\n <span data-ng-show="(form.queue.$touched || form.$submitted) && form.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TRUNK -->\n <!-- START FETCH SORT -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_FETCH_SORT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <select name="fetch_sort" class="form-control" data-ng-model="item.fetch_sort" ng-options="fetch_sort for fetch_sort in [\'ASC\', \'DESC\']" required>\n </select>\n <span class="help-block">{{\'DESCRIPTION_TD_FETCH_SORT\' | translate}}</span>\n </div>\n <!-- END FETCH SORT-->\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/motiondialer/process/list/list.create.square.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_PROCESS\' | translate }} {{ \'APPLICATION_CALLYSQUARE\' | translate | trusted}}</h3>\n</div>\n<div class="modal-body">\n <form name="form" ng-init="initModal()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n <!-- START LIST -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.list.$touched || form.$submitted) && form.list.$invalid}">\n <label class="control-label">{{\'APPLICATION_LIST\' | translate}}<span class="required" aria-required="true">*</span></label>\n <select name="list" class="form-control" data-ng-model="item.list" ng-options="list.name for list in lists" required>\n </select>\n <span data-ng-show="(form.list.$touched || form.$submitted) && form.list.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END LIST -->\n <!-- START PROJECT -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.project.$touched || form.$submitted) && form.project.$invalid}">\n <label class="control-label">{{\'APPLICATION_PROJECT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <select name="project" class="form-control" data-ng-model="item.project" ng-options="project.name for project in projects" required>\n </select>\n <span data-ng-show="(form.project.$touched || form.$submitted) && form.project.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PROJECT -->\n <!-- START TRUNK -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.device.$touched || form.$submitted) && form.device.$invalid}">\n <label class="control-label">{{\'APPLICATION_TRUNK\' | translate}}<span class="required" aria-required="true">*</span></label>\n <select name="device" class="form-control" data-ng-model="item.device" ng-options="trunk.name for trunk in trunks" required>\n <option value="fake">{{\'APPLICATION_SELECT\' | translate}} {{\'APPLICATION_TRUNK\' | translate}}</option>\n </select>\n <span data-ng-show="(form.device.$touched || form.$submitted) && form.device.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TRUNK -->\n <!-- START FETCH SORT -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_FETCH_SORT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <select name="fetch_sort" class="form-control" data-ng-model="item.fetch_sort" ng-options="fetch_sort for fetch_sort in [\'ASC\', \'DESC\']" required>\n </select>\n <span class="help-block">{{\'DESCRIPTION_TD_FETCH_SORT\' | translate}}</span>\n </div>\n <!-- END FETCH SORT-->\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/motiondialer/process/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-control-forward"></i>\n <a href="#">Motion Dialer</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-settings"></i>\n <a href="#">{{ \'APPLICATION_PROCESSES\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_PROCESSES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group">\n <button class="btn green-jungle dropdown-toggle" data-toggle="dropdown" data-close-others="true">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_PROCESS\' | translate }}\n </button>\n <ul class="dropdown-menu pull-right">\n <li>\n <a href="#" ng-click="createProcessQueue()">{{ \'APPLICATION_QUEUE\' | translate }}</a>\n </li>\n <li>\n <a href="#" ng-click="createProcessSquare()">{{ \'APPLICATION_CALLYSQUARE\' | translate | trusted}}</a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/motiondialer/process/view/view.create.interval.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_INTERVAL\' | translate }} </h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="splittedInterval.alwaysTime"><uib-timepicker name="t_from" data-ng-model="splittedInterval.t_from" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="splittedInterval.alwaysTime"><uib-timepicker name="t_to" data-ng-model="splittedInterval.t_to" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n <label class="control-label pointer-cursor"><input type="checkbox" data-ng-model="splittedInterval.alwaysTime">{{\'APPLICATION_ALWAYS\' | translate}}</label>\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="splittedInterval.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="splittedInterval.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="splittedInterval.md_from" theme="bootstrap" name="md_from">\n <ui-select-match>{{$select.selected === \'always\' ? \'APPLICATION_ALWAYS\' : $select.selected | translate}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search">\n {{monthDay === \'always\' ? \'APPLICATION_ALWAYS\' : monthDay | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="splittedInterval.md_to" theme="bootstrap" name="md_to">\n <ui-select-match>{{$select.selected === \'always\' ? \'APPLICATION_ALWAYS\' : $select.selected | translate}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search">\n {{monthDay === \'always\' ? \'APPLICATION_ALWAYS\' : monthDay | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="splittedInterval.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.monthsNumber | filter: $select.search">\n {{month.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="splittedInterval.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.monthsNumber | filter: $select.search">\n {{month.name | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/motiondialer/process/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getProcess()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-control-forward"></i>\n <a href="#">Motion Dialer</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-settings"></i>\n <a href="/motiondialer/processes/list">{{ \'APPLICATION_PROCESSES\' | translate }}</a>\n <i data-ng-show="process.name" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="process.name">\n <a href="#">{{process.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/account.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{process.name}} ({{ (process.status === \'RUN\') ? \'RUNNING...\' : \'STOPPED\' }})\n </div>\n <div class="profile-usertitle-job">\n <a href="#" data-ng-click="goToContacts(process.list.id_source)">{{ \'APPLICATION_LIST\' | translate}} {{process.list ? process.list.name : \'#\'+process.id_list}} ({{process.fetch_sort}})</a>\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n <div class="profile-userbuttons">\n <button data-ng-show="process.status" type="button" class="btn btn-circle btn-sm" data-ng-class="{\'green-meadow\': process.status == \'STOP\', \'red-sunglo\': process.status == \'RUN\'}" data-ng-click="runOrStop()">{{ (process.status === \'RUN\') ? \'STOP\' : \'RUN\' }}</button>\n </div>\n <div class="profile-userbuttons">\n <button style="cursor:default" data-ng-show="process.runtime" type="button" class="btn btn-circle btn-sm" data-ng-class="{\'green-meadow\': process.runtime.completed, \'yellow-crusta\': !process.runtime.completed}">{{process.runtime.completed ? \'Complete\' : \'Incomplete\'}}</button>\n <button style="cursor:default" class="btn btn-circle btn-sm" data-ng-class="{\'green-meadow\': !process.runtime.outOfTime, \'red-sunglo\': process.runtime.outOfTime}"><i data-ng-class="{\'icon-clock\': !process.runtime.outOfTime, \'icon-close\': process.runtime.outOfTime}"></i> {{process.runtime.outOfTime ? \'Out of time\' : \'On time\'}}</button>\n </div>\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.motiondialer.processes.view.overview\')}">\n <a data-ng-href="/motiondialer/processes/view/{{process.id}}/overview">\n <i class="icon-home"></i>\n {{ \'APPLICATION_OVERVIEW\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.motiondialer.processes.view.settings\')}">\n <a data-ng-href="/motiondialer/processes/view/{{process.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.motiondialer.processes.view.intervals\')}">\n <a data-ng-href="/motiondialer/processes/view/{{process.id}}/intervals">\n <i class="icon-clock"></i>\n {{ \'APPLICATION_INTERVALS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.motiondialer.processes.view.spooler\')}">\n <a data-ng-href="/motiondialer/processes/view/{{process.id}}/spooler">\n <i class="icon-options-vertical"></i>\n {{ \'APPLICATION_SPOOLER\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/motiondialer/process/view/view.intervals.html",'<div class="row" data-ng-init="initIntervals()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-clock theme-font"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_PROCESS\' | translate}} {{ \'APPLICATION_INTERVALS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_allow" data-toggle="tab">{{ \'APPLICATION_ALLOW\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_disallow" data-toggle="tab">{{ \'APPLICATION_DISALLOW\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- ALLOW TAB -->\n <div class="tab-pane active" id="tab_allow">\n <button class="btn green-jungle margin-bottom-10" ng-click="createInterval(true)">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_INTERVAL\' | translate }} ({{ \'APPLICATION_ALLOW\' | translate }})\n </button>\n <table class="table table-bordered table-hover">\n <thead>\n <tr role="row" class="heading">\n <th>\n {{ \'APPLICATION_VALUE\' | translate}}\n </th>\n <th>\n {{ \'APPLICATION_ACTIONS\' | translate}}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr ng-repeat="interval in process.intervals track by $index">\n <td>\n {{interval}}\n </td>\n <td>\n <button href="javascript:;" data-ng-click="editInterval(true, interval, $index)" class="btn blue-hoki btn-sm"> {{ \'APPLICATION_EDIT\' | translate}} </button>\n <button data-ng-if="$index > 0" data-ng-click="deleteInterval(interval, $index, true)" class="btn red-sunglo btn-sm"> {{ \'APPLICATION_DELETE\' | translate}} </button>\n </td>\n </tr>\n <tr ng-show="!process.intervals.length"><td colspan=2>{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</td></tr>\n </tbody>\n </table>\n </div>\n <!-- END ALLOW TAB -->\n <!-- DISALLOW TAB -->\n <div class="tab-pane" id="tab_disallow">\n <button class="btn green-jungle margin-bottom-10" ng-click="createInterval(false)">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_INTERVAL\' | translate }} ({{ \'APPLICATION_DISALLOW\' | translate }})\n </button>\n <table class="table table-bordered table-hover">\n <thead>\n <tr role="row" class="heading">\n <th>\n {{ \'APPLICATION_VALUE\' | translate}}\n </th>\n <th>\n {{ \'APPLICATION_ACTIONS\' | translate}}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr ng-repeat="interval in process.not_intervals track by $index">\n <td>\n {{interval}}\n </td>\n <td>\n <button href="javascript:;" data-ng-click="editInterval(false, interval)" class="btn blue-hoki btn-sm"> {{ \'APPLICATION_EDIT\' | translate}} </button>\n <button href="javascript:;" data-ng-click="deleteInterval($index, interval, false)" class="btn red-sunglo btn-sm"> {{ \'APPLICATION_DELETE\' | translate}} </button>\n </td>\n </tr>\n <tr ng-show="!process.not_intervals.length"><td colspan=2>{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</td></tr>\n </tbody>\n </table>\n\n </div>\n <!-- END DISALLOW TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'), -a.put("app/motiondialer/process/view/view.overview.html",'<div class="row" data-ng-init="getSummary()">\n <div class="col-md-12">\n <!-- BEGIN PORTLET -->\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-bar-chart theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_OVERVIEW\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_summary" data-toggle="tab">{{ \'APPLICATION_SUMMARY\' | translate}}</a>\n </li>\n <li ng-show="process.runtime">\n <a href="#" data-target="#tab_advanced" data-toggle="tab">{{ \'APPLICATION_ADVANCED\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- START SUMMARY TAB -->\n <div class="tab-pane active" id="tab_summary">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n <div class="row number-stats margin-bottom-30">\n <div class="col-md-6 col-sm-6 col-xs-6">\n <div class="stat-left">\n <div class="stat-number">\n <div class="title">\n {{\'APPLICATION_TOTAL\' | translate}}\n </div>\n <div class="number">\n {{total}}\n </div>\n </div>\n </div>\n </div>\n <div class="col-md-6 col-sm-6 col-xs-6">\n <div class="stat-right">\n <div class="stat-number">\n <div class="title">\n {{\'APPLICATION_FRESH\' | translate}}\n </div>\n <div class="number">\n {{process.runtime.fresh || 0}}\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="table-scrollable table-scrollable-borderless">\n <table class="table table-hover table-light">\n <thead>\n <tr class="uppercase">\n <th>\n {{\'APPLICATION_STATUS\' | translate}}\n </th>\n <th>\n {{\'APPLICATION_VALUE\' | translate}}\n </th>\n <th>\n {{\'APPLICATION_RATE\' | translate}}\n </th>\n <th>\n {{\'APPLICATION_DESCRIPTION\' | translate}}\n </th>\n </tr>\n </thead>\n <tr ng-repeat="sum in summary">\n <td>\n <a href="#" class="primary-link">{{\'APPLICATION_TD_\' + sum[0] | translate}}</a>\n </td>\n <td>\n {{sum[1]}}\n </td>\n <td>\n <span class="bold theme-font">{{ total ? ((sum[1]/total)*100).toFixed(2) : 0 }}%</span>\n </td>\n <td>\n {{\'DESCRIPTION_TD_\' + sum[0] | translate}}\n </td>\n </tr>\n </table>\n </div>\n </div>\n <!-- END SUMMARY TAB -->\n <!-- START SUMMARY TAB -->\n <div class="tab-pane" id="tab_advanced" ng-show="process.runtime">\n <div class="row number-stats margin-bottom-30">\n <div class="col-md-6 col-sm-6 col-xs-6">\n <div class="stat-left">\n <div class="stat-number">\n <div class="title">\n {{\'APPLICATION_SUCCESS\' | translate}}\n </div>\n <div class="number">\n {{process.runtime.success || 0}}\n </div>\n </div>\n </div>\n </div>\n <div class="col-md-6 col-sm-6 col-xs-6">\n <div class="stat-right">\n <div class="stat-number">\n <div class="title">\n {{\'APPLICATION_FAILED\' | translate}}\n </div>\n <div class="number">\n {{process.runtime.failed || 0}}\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="table-scrollable table-scrollable-borderless">\n <table class="table table-hover table-light">\n <thead>\n <tr class="uppercase">\n <th>\n {{\'APPLICATION_STATUS\' | translate}}\n </th>\n <th>\n {{\'APPLICATION_VALUE\' | translate}}\n </th>\n <th>\n {{\'APPLICATION_DESCRIPTION\' | translate}}\n </th>\n </tr>\n </thead>\n <tr ng-repeat="(key, value) in process.runtime">\n <td>\n <a href="#" class="primary-link">{{\'APPLICATION_\' + key.toUpperCase() | translate}}</a>\n </td>\n <td ng-switch on="key">\n <span ng-switch-when="avgDial">{{value | number:2}}</span>\n <span ng-switch-when="avgDuration">{{value | number:2}}</span>\n <span ng-switch-when="avgProgress">{{value | number:2}}</span>\n <span ng-switch-when="completed">{{((value)? \'APPLICATION_YES\' : \'APPLICATION_NO\') | translate}}</span>\n <span ng-switch-when="outOfTime">{{((value)? \'APPLICATION_YES\' : \'APPLICATION_NO\') | translate}}</span>\n <span ng-switch-default>{{value}}</span>\n </td>\n <td>\n {{\'DESCRIPTION_TD_\' + key.toUpperCase() | translate}}\n </td>\n </tr>\n </table>\n </div>\n </div>\n <!-- END SUMMARY TAB -->\n </div>\n </div>\n </div>\n <!-- END PORTLET -->\n </div>\n</div>\n'),a.put("app/motiondialer/process/view/view.run.process.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_STATUS\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <p>\n Do you want to {{ status }} the process?\n </p>\n</div>\n<div class="modal-footer">\n <button class="btn default green-meadow" type="button" ng-click="yes()">{{ \'APPLICATION_YES\' | translate }}</button>\n <button class="btn default" type="button" ng-click="no()">{{ \'APPLICATION_NO\' | translate }}</button>\n</div>\n'),a.put("app/motiondialer/process/view/view.settings.html",'<div class="row" data-ng-init="initSettings()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_PROCESS\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_general" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_channel" data-toggle="tab">{{ \'APPLICATION_CHANNEL\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_advanced" data-toggle="tab">{{ \'APPLICATION_ADVANCED\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_status" data-toggle="tab">{{ \'APPLICATION_STATUS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_general">\n <form name="form" data-ng-submit="form.$valid && updateProcess()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="process.name" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n <!-- START QUEUE -->\n <div data-ng-show="process.queue != \'none\'" class="form-group" data-ng-class="{\'has-error\': (form.queue.$touched || form.$submitted) && form.queue.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUEUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="process.queue" name="queue" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="queue.name as queue in queues | filter: $select.search">\n <div ng-bind-html="queue.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.queue.$touched || form.$submitted) && form.queue.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUEUE -->\n <!-- START MAX RETRIES -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.max_retries.$touched || form.$submitted) && form.max_retries.$invalid}">\n <label class="control-label">{{\'APPLICATION_MAX_RETRIES\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" max="100" name="max_retries" placeholder="{{\'APPLICATION_MAX_RETRIES\' | translate}}" class="form-control" data-ng-model="process.max_retries" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_MAX_RETRIES\' | translate}}</span>\n <span data-ng-show="(form.max_retries.$touched || form.$submitted) && form.max_retries.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.max_retries.$error.max || form.max_retries.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END MAX RETRIES -->\n <!-- START RETRY TIME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.retry_time.$touched || form.$submitted) && form.retry_time.$invalid}">\n <label class="control-label">{{\'APPLICATION_RETRY_TIME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="retry_time" placeholder="{{\'APPLICATION_RETRY_TIME\' | translate}}" class="form-control" data-ng-model="process.retry_time" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_RETRY_TIME\' | translate}}</span>\n <span data-ng-show="(form.retry_time.$touched || form.$submitted) && form.retry_time.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.retry_time.$error.max || form.retry_time.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END RETRY TIME -->\n <!-- START RETRY TIME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.wait_time.$touched || form.$submitted) && form.wait_time.$invalid}">\n <label class="control-label">{{\'APPLICATION_WAIT_TIME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1000" name="wait_time" placeholder="{{\'APPLICATION_WAIT_TIME\' | translate}}" class="form-control" data-ng-model="process.wait_time" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_WAIT_TIME\' | translate}}</span>\n <span data-ng-show="(form.wait_time.$touched || form.$submitted) && form.wait_time.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.wait_time.$error.max || form.wait_time.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END WAIT TIME -->\n <!-- START AUTO CLOSED -->\n <!-- <div class="form-group">\n <label class="control-label">{{\'APPLICATION_AUTO_CLOSED\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-model="process.auto_closed"\n type="checkbox"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-animate="false">\n <span class="help-block">{{\'DESCRIPTION_TD_AUTO_CLOSED\' | translate}}</span>\n </div> -->\n <!-- END AUTO CLOSED -->\n <!-- START WEIGHT -->\n <!-- END WEIGHT -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_AUTODIAL_LEVEL\' | translate}}</label></br>\n <slider ng-model="process.weight" min="0" step="1" max="50"></slider>\n <label>{{\'APPLICATION_VALUE\' | translate}}: {{process.weight}}</label>\n <span class="help-block">{{\'DESCRIPTION_TD_WEIGHT\' | translate}}</span>\n </div>\n <!-- START DISPOSAL -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_TD_DISPOSAL\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-model="process.disposal"\n type="checkbox"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-animate="false">\n <span class="help-block">{{\'DESCRIPTION_TD_DISPOSAL\' | translate}}</span>\n </div>\n <!-- END DISPOSAL -->\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="process.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n <!-- CHANNEL TAB -->\n <div class="tab-pane" id="tab_channel">\n <form name="form" data-ng-submit="form.$valid && updateProcess()" novalidate>\n <!-- START CONTEXT -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.context.$touched || form.$submitted) && form.context.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONTEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="context" placeholder="{{\'APPLICATION_CONTEXT\' | translate}}" class="form-control" data-ng-model="process.context" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_CONTEXT\' | translate}}</span>\n <span data-ng-show="(form.context.$touched || form.$submitted) && form.context.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONTEXT -->\n <!-- START EXTENSION -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.extension.$touched || form.$submitted) && form.extension.$invalid}">\n <label class="control-label">{{\'APPLICATION_EXTENSION\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="extension" placeholder="{{\'APPLICATION_EXTENSION\' | translate}}" class="form-control" data-ng-model="process.extension" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_EXTENSION\' | translate}}</span><a href="/channels/voice/routes/internal/list">Link {{\'APPLICATION_INTERNAL\' | translate}}</a>\n <span data-ng-show="(form.extension.$touched || form.$submitted) && form.extension.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EXTENSION -->\n <!-- START PRIORITY -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.priority.$touched || form.$submitted) && form.priority.$invalid}">\n <label class="control-label">{{\'APPLICATION_PRIORITY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="priority" placeholder="{{\'APPLICATION_PRIORITY\' | translate}}" class="form-control" data-ng-model="process.priority" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_PRIORITY\' | translate}}</span>\n <span data-ng-show="(form.priority.$touched || form.$submitted) && form.priority.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.priority.$error.max || form.priority.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END PRIORITY -->\n <!-- START PREFIX -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_PREFIX\' | translate}}</label>\n <input type="text" name="prefix_code" placeholder="{{\'APPLICATION_PREFIX\' | translate}}" class="form-control" data-ng-model="process.prefix_code"/>\n <span class="help-block">{{\'DESCRIPTION_TD_PREFIX\' | translate}}</span>\n </div>\n <!-- END PREFIX -->\n <!-- START TECHNOLOGY -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_TECHNOLOGY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <select name="tech" class="form-control" data-ng-model="process.tech" ng-options="tech for tech in techs" required>\n </select>\n <span class="help-block">{{\'DESCRIPTION_TD_TECHNOLOGY\' | translate}}</span>\n </div>\n <!-- END TECHNOLOGY -->\n <!-- START DEVICE -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.device.$touched || form.$submitted) && form.device.$invalid}">\n <label class="control-label">{{\'APPLICATION_TRUNK\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="device" placeholder="{{\'APPLICATION_TRUNK\' | translate}}" class="form-control" data-ng-model="process.device" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_TRUNK\' | translate}}</span>\n <span data-ng-show="(form.device.$touched || form.$submitted) && form.device.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DEVICE -->\n <!-- START CALLERID -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.callerid.$touched || form.$submitted) && form.callerid.$invalid}">\n <label class="control-label">{{\'APPLICATION_CALLERID\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="callerid" placeholder="{{\'APPLICATION_CALLERID\' | translate}}" class="form-control" data-ng-model="process.callerid" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_CALLERID\' | translate}}</span>\n <span data-ng-show="(form.callerid.$touched || form.$submitted) && form.callerid.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CALLERID -->\n <!-- START CODEC -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALLOWED_CODECS\' | translate}}</label>\n <ui-select multiple data-ng-model="process.codecs" name="codecs" theme="bootstrap" data-ng-disabled="disabled">\n <ui-select-match placeholder="Select codec...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="codec in codecs">\n {{codec}}\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END CODEC -->\n <!-- START DIAL FORMAT -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DIAL_FORMAT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <select name="dial_format" class="form-control" data-ng-model="process.dial_format" ng-options="dial_format for dial_format in dialFormats" required>\n </select>\n <span class="help-block">{{\'DESCRIPTION_TD_DIAL_FORMAT\' | translate}}</span>\n </div>\n <!-- END DIAL FORMAT -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END CHANNEL TAB -->\n <!-- ADVANCED TAB -->\n <div class="tab-pane" id="tab_advanced">\n <form name="form" data-ng-submit="form.$valid && updateProcess()" novalidate>\n <!-- START CHECK DUPLICATE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_CHECK_DUPLICATE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <select name="check_duplicate" class="form-control" data-ng-model="process.check_duplicate" ng-options="check_duplicate for check_duplicate in checkDuplicates" required>\n </select>\n <span class="help-block">{{\'DESCRIPTION_TD_CHECK_DUPLICATE\' | translate}}</span>\n </div>\n <!-- END CHECK DUPLICATE -->\n <!-- START CHECK BLACKLIST -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_CHECK_BLACKLIST\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-model="process.check_blacklist"\n type="checkbox"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-animate="false">\n <span class="help-block">{{\'DESCRIPTION_TD_CHECK_BLACKLIST\' | translate}}</span>\n </div>\n <!-- END CHECK BLACKLIST -->\n <!-- START CHECK PHONE LENGHT -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.check_phone_length.$touched || form.$submitted) && form.check_phone_length.$invalid}">\n <label class="control-label">{{\'APPLICATION_CHECK_PHONE_LENGHT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="check_phone_length" placeholder="{{\'APPLICATION_CHECK_PHONE_LENGHT\' | translate}}" class="form-control" data-ng-model="process.check_phone_length" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_CHECK_PHONE_LENGHT\' | translate}}</span>\n <span data-ng-show="(form.check_phone_length.$touched || form.$submitted) && form.check_phone_length.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.check_phone_length.$error.max || form.check_phone_length.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END CHECK PHONE LENGHT -->\n <!-- START TIME SLICE -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.time_slice.$touched || form.$submitted) && form.time_slice.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIME_SLICE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="time_slice" placeholder="{{\'APPLICATION_TIME_SLICE\' | translate}}" class="form-control" data-ng-model="process.time_slice" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_TIME_SLICE\' | translate}}</span>\n <span data-ng-show="(form.time_slice.$touched || form.$submitted) && form.time_slice.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.time_slice.$error.max || form.time_slice.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END TIME SLICE -->\n <!-- START MISSED -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_CHECK_MISSED\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-model="process.missed"\n type="checkbox"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-animate="false">\n <span class="help-block">{{\'DESCRIPTION_TD_CHECK_MISSED\' | translate}}</span>\n </div>\n <!-- END MISSED -->\n <!-- START CHANNEL LIMIT -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.channel_limit.$touched || form.$submitted) && form.channel_limit.$invalid}">\n <label class="control-label">{{\'APPLICATION_CHANNEL_LIMIT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="0" name="channel_limit" placeholder="{{\'APPLICATION_CHANNEL_LIMIT\' | translate}}" class="form-control" data-ng-model="process.channel_limit" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_CHANNEL_LIMIT\' | translate}}</span>\n <span data-ng-show="(form.channel_limit.$touched || form.$submitted) && form.channel_limit.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.channel_limit.$error.max || form.channel_limit.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END CHANNEL LIMIT -->\n <!-- START CONTEXT FOR OTHER CALLS -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_CONTEXT_FOR_OTHER_CALLS\' | translate}}</label>\n <input type="text" name="context_for_other_calls" placeholder="{{\'APPLICATION_CONTEXT_FOR_OTHER_CALLS\' | translate}}" class="form-control" data-ng-model="process.context_for_other_calls"/>\n <span class="help-block">{{\'DESCRIPTION_TD_CONTEXT_FOR_OTHER_CALLS\' | translate}}</span>\n </div>\n <!-- END CONTEXT FOR OTHER CALLS -->\n <!-- START EXTENSION FOR OTHER CALLS-->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_EXTENSION_FOR_OTHER_CALLS\' | translate}}</label>\n <input type="text" name="extension_for_other_calls" placeholder="{{\'APPLICATION_EXTENSION_FOR_OTHER_CALLS\' | translate}}" class="form-control" data-ng-model="process.extension_for_other_calls"/>\n <span class="help-block">{{\'DESCRIPTION_TD_EXTENSION_FOR_OTHER_CALLS\' | translate}}</span>\n </div>\n <!-- END EXTENSION FOR OTHER CALLS-->\n <!-- START PRIORITY FOR OTHER CALLS-->\n <div class="form-group" data-ng-class="{\'has-error\': (form.priority_for_other_calls.$touched || form.$submitted) && form.priority_for_other_calls.$invalid}">\n <label class="control-label">{{\'APPLICATION_PRIORITY_FOR_OTHER_CALLS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="priority_for_other_calls" placeholder="{{\'APPLICATION_PRIORITY_FOR_OTHER_CALLS\' | translate}}" class="form-control" data-ng-model="process.priority_for_other_calls"/>\n <span class="help-block">{{\'DESCRIPTION_TD_PRIORITY_FOR_OTHER_CALLS\' | translate}}</span>\n <span data-ng-show="form.priority_for_other_calls.$error.max || form.priority_for_other_calls.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END PRIORITY FOR OTHER CALLS -->\n <!-- START TIMEZONE -->\n <!-- <div class="form-group">\n <label class="control-label">{{\'APPLICATION_EXTENDED_TIME_INTERVAL\' | translate}}</label>\n <input type="text" name="timezone" placeholder="08:30-20:30" class="form-control" data-ng-model="process.timezone"/>\n <span class="help-block">{{\'DESCRIPTION_TD_EXTENDED_TIME_INTERVAL\' | translate}}</span>\n </div> -->\n <!-- END TIMEZONE -->\n\n <!-- START AUTO TIMEZONE MANAGEMENT -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_AUTO_TIMEZONE_MANAGEMENT\' | translate}}</label></br>\n <input\n bs-switch\n data-ng-model="process.auto_timezone_management"\n type="checkbox"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-animate="false">\n <span class="help-block">{{\'DESCRIPTION_TD_AUTO_TIMEZONE_MANAGEMENT\' | translate}}</span>\n </div>\n <!-- END AUTO TIMEZONE MANAGEMENT -->\n <!-- START IGNORE STRINGS-->\n <!-- COMMENTED: BECAUSE IGNORE_STRINGS IS AN ARRAY NOT A STRING-->\n <!-- <div class="form-group">\n <label class="control-label">{{\'APPLICATION_IGNORE_STRINGS\' | translate}}</label>\n <input type="text" name="ignore_strings" placeholder="{{\'APPLICATION_IGNORE_STRINGS\' | translate}}" class="form-control" data-ng-model="process.ignore_strings"/>\n <span class="help-block">{{\'DESCRIPTION_TD_IGNORE_STRINGS\' | translate}}</span>\n </div> -->\n <!-- END IGNORE STRINGS-->\n <!-- START MIN OPERATOR -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.min_operator.$touched || form.$submitted) && form.min_operator.$invalid}">\n <label class="control-label">{{\'APPLICATION_MIN_OPERATOR\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="min_operator" placeholder="{{\'APPLICATION_MIN_OPERATOR\' | translate}}" class="form-control" data-ng-model="process.min_operator" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_MIN_OPERATOR\' | translate}}</span>\n <span data-ng-show="(form.min_operator.$touched || form.$submitted) && form.min_operator.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.min_operator.$error.max || form.min_operator.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END MIN OPERATOR -->\n <!-- START ALERT MAX CALLS -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.alert_max_calls.$touched || form.$submitted) && form.alert_max_calls.$invalid}">\n <label class="control-label">{{\'APPLICATION_ALERT_MAX_CALLS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="0" name="alert_max_calls" placeholder="{{\'APPLICATION_ALERT_MAX_CALLS\' | translate}}" class="form-control" data-ng-model="process.alert_max_calls" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_ALERT_MAX_CALLS\' | translate}}</span>\n <span data-ng-show="(form.alert_max_calls.$touched || form.$submitted) && form.alert_max_calls.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.alert_max_calls.$error.max || form.alert_max_calls.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END ALERT MAX CALLS -->\n <!-- START ALERT TIME SLICE -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.alert_time_slice.$touched || form.$submitted) && form.alert_time_slice.$invalid}">\n <label class="control-label">{{\'APPLICATION_ALERT_TIME_SLICE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="alert_time_slice" placeholder="{{\'APPLICATION_ALERT_TIME_SLICE\' | translate}}" class="form-control" data-ng-model="process.alert_time_slice" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_ALERT_TIME_SLICE\' | translate}}</span>\n <span data-ng-show="(form.alert_time_slice.$touched || form.$submitted) && form.alert_time_slice.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.alert_time_slice.$error.max || form.alert_time_slice.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END ALERT TIME SLICE -->\n <!-- START DROP MAX COUNT -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.drop_max_count.$touched || form.$submitted) && form.drop_max_count.$invalid}">\n <label class="control-label">{{\'APPLICATION_DROP_MAX_COUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="0" name="drop_max_count" placeholder="{{\'APPLICATION_DROP_MAX_COUNT\' | translate}}" class="form-control" data-ng-model="process.drop_max_count" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_DROP_MAX_COUNT\' | translate}}</span>\n <span data-ng-show="(form.drop_max_count.$touched || form.$submitted) && form.drop_max_count.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.drop_max_count.$error.max || form.drop_max_count.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END DROP MAX COUNT -->\n <!-- START SUCCESS CALL SIZE -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.success_call_size.$touched || form.$submitted) && form.success_call_size.$invalid}">\n <label class="control-label">{{\'APPLICATION_SUCCESS_CALL_SIZE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="success_call_size" placeholder="{{\'APPLICATION_SUCCESS_CALL_SIZE\' | translate}}" class="form-control" data-ng-model="process.success_call_size" required/>\n <span class="help-block">{{\'DESCRIPTION_TD_SUCCESS_CALL_SIZE\' | translate}}</span>\n <span data-ng-show="(form.success_call_size.$touched || form.$submitted) && form.success_call_size.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.success_call_size.$error.max || form.success_call_size.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END SUCCESS CALL SIZE -->\n <!-- START IGNORE STRINGS-->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_TIME_EXPIRED\' | translate}}</label>\n <input type="text" name="expiredtime" placeholder="yyyy-MM-dd HH:mm:ss" class="form-control" data-ng-model="process.expiredtime"/>\n <span class="help-block">{{\'DESCRIPTION_TD_TIME_EXPIRED\' | translate}}</span>\n </div>\n <!-- END IGNORE STRINGS-->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ANDVANCED TAB -->\n <!-- START STATUS TAB -->\n <div class="tab-pane" id="tab_status">\n <form name="form" data-ng-submit="form.$valid && updateProcess()" novalidate>\n <table class="table table-bordered table-hover">\n <thead>\n <tr role="row" class="heading">\n <th>\n {{ \'APPLICATION_VALUE\' | translate}}\n </th>\n <th>\n {{ \'APPLICATION_MAX_RETRIES\' | translate}}\n </th>\n <th>\n {{ \'APPLICATION_RETRY_TIME\' | translate}} [min]\n </th>\n <th>\n {{ \'APPLICATION_DESCRIPTION\' | translate}}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>\n {{ \'APPLICATION_AMD\' | translate}}\n </td>\n <td>\n <input type="number" min="0" name="amd_max_retries"class="form-control" data-ng-model="process.amd_max_retries" required/>\n <span data-ng-show="(form.amd_max_retries.$touched || form.$submitted) && form.amd_max_retries.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.amd_max_retries.$error.max || form.amd_max_retries.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n <input type="number" min="0" name="amd_retry_time" class="form-control" data-ng-model="process.amd_retry_time" required/>\n <span data-ng-show="(form.amd_retry_time.$touched || form.$submitted) && form.amd_retry_time.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.amd_retry_time.$error.max || form.amd_retry_time.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n {{ \'DESCRIPTION_TD_STATUS_AMD\' | translate}}\n </td>\n </tr>\n <tr>\n <td>\n {{ \'APPLICATION_BUSY\' | translate}}\n </td>\n <td>\n <input type="number" min="0" name="busy_max_retries"class="form-control" data-ng-model="process.busy_max_retries" required/>\n <span data-ng-show="(form.busy_max_retries.$touched || form.$submitted) && form.busy_max_retries.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.busy_max_retries.$error.max || form.busy_max_retries.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n <input type="number" min="0" name="busy_retry_time"class="form-control" data-ng-model="process.busy_retry_time" required/>\n <span data-ng-show="(form.busy_retry_time.$touched || form.$submitted) && form.busy_retry_time.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.busy_retry_time.$error.max || form.busy_retry_time.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n {{ \'DESCRIPTION_TD_STATUS_BUSY\' | translate}}\n </td>\n </tr>\n <tr>\n <td>\n {{ \'APPLICATION_CONGESTION\' | translate}}\n </td>\n <td>\n <input type="number" min="0" name="congestion_max_retries"class="form-control" data-ng-model="process.congestion_max_retries" required/>\n <span data-ng-show="(form.congestion_max_retries.$touched || form.$submitted) && form.congestion_max_retries.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.congestion_max_retries.$error.max || form.congestion_max_retries.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n <input type="number" min="0" name="congestion_retry_time"class="form-control" data-ng-model="process.congestion_retry_time" required/>\n <span data-ng-show="(form.congestion_retry_time.$touched || form.$submitted) && form.congestion_retry_time.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.congestion_retry_time.$error.max || form.congestion_retry_time.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n {{ \'DESCRIPTION_TD_STATUS_CONGESTION\' | translate}}\n </td>\n </tr>\n <tr>\n <td>\n {{ \'APPLICATION_DROP\' | translate}}\n </td>\n <td>\n <input type="number" min="0" name="drop_max_retries"class="form-control" data-ng-model="process.drop_max_retries" required/>\n <span data-ng-show="(form.drop_max_retries.$touched || form.$submitted) && form.drop_max_retries.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.drop_max_retries.$error.max || form.drop_max_retries.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n <input type="number" min="0" name="drop_retry_time"class="form-control" data-ng-model="process.drop_retry_time" required/>\n <span data-ng-show="(form.drop_retry_time.$touched || form.$submitted) && form.drop_retry_time.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.drop_retry_time.$error.max || form.drop_retry_time.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n {{ \'DESCRIPTION_TD_STATUS_DROP\' | translate}}\n </td>\n </tr>\n <tr>\n <td>\n {{ \'APPLICATION_FAILED\' | translate}}\n </td>\n <td>\n <input type="number" min="0" name="failed_max_retries"class="form-control" data-ng-model="process.failed_max_retries" required/>\n <span data-ng-show="(form.failed_max_retries.$touched || form.$submitted) && form.failed_max_retries.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.failed_max_retries.$error.max || form.failed_max_retries.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n <input type="number" min="0" name="failed_retry_time"class="form-control" data-ng-model="process.failed_retry_time" required/>\n <span data-ng-show="(form.failed_retry_time.$touched || form.$submitted) && form.failed_retry_time.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.failed_retry_time.$error.max || form.failed_retry_time.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n {{ \'DESCRIPTION_TD_STATUS_FAILED\' | translate}}\n </td>\n </tr>\n <tr>\n <td>\n {{ \'APPLICATION_NOANSWER\' | translate}}\n </td>\n <td>\n <input type="number" min="0" name="noanswer_max_retries"class="form-control" data-ng-model="process.noanswer_max_retries" required/>\n <span data-ng-show="(form.noanswer_max_retries.$touched || form.$submitted) && form.noanswer_max_retries.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.noanswer_max_retries.$error.max || form.noanswer_max_retries.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n <input type="number" min="0" name="noanswer_retry_time"class="form-control" data-ng-model="process.noanswer_retry_time" required/>\n <span data-ng-show="(form.noanswer_retry_time.$touched || form.$submitted) && form.noanswer_retry_time.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.noanswer_retry_time.$error.max || form.noanswer_retry_time.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n {{ \'DESCRIPTION_TD_STATUS_NOANSWER\' | translate}}\n </td>\n </tr>\n <tr>\n <td>\n {{ \'APPLICATION_NOSUCHEXTENSION\' | translate}}\n </td>\n <td>\n <input type="number" min="0" name="nosuchextension_max_retries"class="form-control" data-ng-model="process.nosuchextension_max_retries" required/>\n <span data-ng-show="(form.nosuchextension_max_retries.$touched || form.$submitted) && form.nosuchextension_max_retries.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.nosuchextension_max_retries.$error.max || form.nosuchextension_max_retries.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n <input type="number" min="0" name="nosuchextension_retry_time"class="form-control" data-ng-model="process.nosuchextension_retry_time" required/>\n <span data-ng-show="(form.nosuchextension_retry_time.$touched || form.$submitted) && form.nosuchextension_retry_time.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.nosuchextension_retry_time.$error.max || form.nosuchextension_retry_time.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n {{ \'DESCRIPTION_TD_STATUS_NOSUCHEXTENSION\' | translate}}\n </td>\n </tr>\n <tr>\n <td>\n {{ \'APPLICATION_RINGTIMEOUT\' | translate}}\n </td>\n <td>\n <input type="number" min="0" name="ringtimeout_max_retries"class="form-control" data-ng-model="process.ringtimeout_max_retries" data-ng-init="!process.ringtimeout_max_retries && (process.ringtimeout_max_retries = 0)" required/>\n <span data-ng-show="(form.ringtimeout_max_retries.$touched || form.$submitted) && form.ringtimeout_max_retries.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.ringtimeout_max_retries.$error.max || form.ringtimeout_max_retries.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n <input type="number" min="0" name="ringtimeout_retry_time" class="form-control" data-ng-model="process.ringtimeout_retry_time" data-ng-init="!process.ringtimeout_retry_time && (process.ringtimeout_retry_time = 0)" required/>\n <span data-ng-show="(form.ringtimeout_retry_time.$touched || form.$submitted) && form.ringtimeout_retry_time.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.ringtimeout_retry_time.$error.max || form.ringtimeout_retry_time.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </td>\n <td>\n {{ \'DESCRIPTION_TD_STATUS_RINGTIMEOUT\' | translate}}\n </td>\n </tr>\n </tbody>\n </table>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END STATUS TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'), -a.put("app/motiondialer/process/view/view.spooler.edit.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_EDIT\' | translate }} {{ \'APPLICATION_CONTACT\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <!-- START RETRIEVE -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.retrieve.$touched || form.$submitted) && form.retrieve.$invalid}" ng-init="initModal()">\n <label class="control-label">{{ \'APPLICATION_STATUS\' | translate }}<span class="required" aria-required="true">*</span></label>\n <select name="retrieve" class="form-control" data-ng-model="entitySpooler.retrieve" required>\n <option value="CLOSED">CLOSE</option>\n <option value="OPEN">OPEN</option>\n <option value="BLACK_LIST">BLACKLIST</option>\n <option value="PLANNED">PLANNING</option>\n <option value="PLANNED_PEER">PLANNING AGENT</option>\n </select>\n <span data-ng-show="(form.retrieve.$touched || form.$submitted) && form.retrieve.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END RETRIEVE -->\n <!-- START PLANNING DATE -->\n <div class="form-group" data-ng-if="entitySpooler.retrieve == \'PLANNED\' || entitySpooler.retrieve == \'PLANNED_PEER\'" data-ng-class="{\'has-error\': (form.date.$touched || form.$submitted) && form.date.$invalid}">\n <label class="control-label">PLANNING DATE<span class="required" aria-required="true">*</span></label>\n <uib-datepicker name="date" ng-model="entitySpooler.planningtime" required init-date="initDate"></uib-datepicker>\n <span data-ng-show="(form.date.$touched || form.$submitted) && form.date.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PLANNING DATE -->\n <!-- START PLANNING TIME -->\n <div class="form-group" data-ng-if="entitySpooler.retrieve == \'PLANNED\' || entitySpooler.retrieve == \'PLANNED_PEER\'" data-ng-class="{\'has-error\': (form.time.$touched || form.$submitted) && form.time.$invalid}">\n <label class="control-label">PLANNING TIME<span class="required" aria-required="true">*</span></label>\n <uib-timepicker name="time" ng-model="entitySpooler.planningtime" required show-meridian="false" show-seconds="false"></uib-timepicker>\n <span data-ng-show="(form.time.$touched || form.$submitted) && form.time.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PLANNING TIME -->\n <!-- START PLANNING PEER -->\n <div class="form-group" data-ng-if="entitySpooler.retrieve == \'PLANNED_PEER\'" data-ng-class="{\'has-error\': (form.agent.$touched || form.$submitted) && form.agent.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <select name="agent" class="form-control" data-ng-model="entitySpooler.planningpeer" ng-options="agent for agent in agents" required>\n </select>\n <span data-ng-show="(form.agent.$touched || form.$submitted) && form.agent.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PLANNING PEER -->\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/motiondialer/process/view/view.spooler.history.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_HISTORY\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <json-formatter json="historySpooler" open="2"></json-formatter>\n</div>\n<div class="modal-footer">\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/motiondialer/process/view/view.spooler.html",'<div class="row" data-ng-init="getSpooler()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_SPOOLER\' | translate}} </span>\n </div>\n <div class="actions">\n <a class="btn btn-default" href="#" data-ng-click="getSpooler()">\n <i class="icon-refresh"></i>\n </a>\n </div>\n </div>\n\n <div class="portlet-body">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/reset/reset.html",'<!-- BEGIN LOGO -->\n<div class="logo" data-ng-init="getInfo()">\n <a href="index.html">\n <img ng-src="api/settings/logo/login" alt="logo" class="custom-login-logo" onError="this.onerror=null"/>\n </a>\n</div>\n<!-- END LOGO -->\n<!-- BEGIN RESET -->\n<div class="content">\n <!-- BEGIN RESET FORM -->\n <form name="resetForm" data-ng-submit="resetForm.$valid && reset()" novalidate>\n <h3>{{\'APPLICATION_RESET_PASSWORD\' | translate}}</h3>\n <p>\n {{\'APPLICATION_INSERT_NEW_PASSWORD_RESET\' | translate}}\n </p>\n <div class="form-group" data-ng-class="{\'has-error\': resetForm.$submitted && resetForm.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_NEW_PASSWORD\' | translate}}</label>\n <div class="input-icon">\n <i class="icon-key"></i>\n <input class="form-control form-control-solid placeholder-no-fix" type="password" placeholder="{{\'APPLICATION_NEW_PASSWORD\' | translate}}" name="password" ng-model="userReset.password" data-ng-pattern="setting.securePassword ? settings.patternPassword : settings.patternPasswordLight" required/>\n </div>\n <span class="help-block">\n {{setting.securePassword ? \'MESSAGE_PASSWORD_FORMAT\' : \'MESSAGE_PASSWORD_LIGHT_FORMAT\' | translate}}\n </span>\n <span data-ng-show="resetForm.$submitted && resetForm.password.$invalid" class="help-block">{{\'MESSAGE_REQUIRED_FIELD\' | translate}}</span>\n <span data-ng-show="(resetForm.password.$touched || resetForm.$submitted) && resetForm.password.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <div class="form-group" data-ng-class="{\'has-error\': resetForm.$submitted && resetForm.rePassword.$invalid}">\n <label class="control-label">{{\'APPLICATION_RE_TYPE_NEW_PASSWORD\' | translate}}</label>\n <div class="input-icon">\n <i class="icon-key"></i>\n <input class="form-control form-control-solid placeholder-no-fix" type="password" placeholder="{{\'APPLICATION_RE_TYPE_NEW_PASSWORD\' | translate}}" name="rePassword" ng-model="userReset.rePassword" nx-equal="userReset.password" required/>\n </div>\n <span data-ng-show="resetForm.$submitted && resetForm.rePassword.$invalid" class="help-block">{{\'MESSAGE_REQUIRED_FIELD\' | translate}}</span>\n <span data-ng-show="(resetForm.password.$touched || resetForm.$submitted) && resetForm.$error.nxEqual" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_PASSWORD\' | translate}}.\n </span>\n </div>\n <div class="form-actions">\n <button type="submit" class="btn btn-success uppercase">{{\'APPLICATION_SUBMIT\' | translate}}</button>\n </div>\n </form>\n <!-- END RESET FORM-->\n <div class="login-options">\n <h4>{{\'APPLICATION_FOLLOW_US\' | translate}}</h4>\n <ul class="social-icons">\n <li>\n <a class="social-icon-color facebook" data-original-title="facebook" href="https://www.facebook.com/xenialab"></a>\n </li>\n <li>\n <a class="social-icon-color twitter" data-original-title="Twitter" href="https://twitter.com/xenialab"></a>\n </li>\n <li>\n <a class="social-icon-color googleplus" data-original-title="Goole Plus" href="#"></a>\n </li>\n <li>\n <a class="social-icon-color linkedin" data-original-title="Linkedin" href="#"></a>\n </li>\n </ul>\n </div>\n</div>\n<div class="copyright">\n xCALLY Motion v. {{info.version}} | 2016 - {{year + 1}} © Powered by Xenialab <ng-bind-html data-ng-if="license.custom && !settings.defaultFooterWhiteLabel && settings.footerWhiteLabel" ng-bind-html="\'| \'+settings.footerWhiteLabel"></ng-bind-html>\n</div>\n<!-- END RESET -->\n'),a.put("app/salesforce/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-cloud"></i>\n <a href="/salesforce/list">{{ \'APPLICATION_SALESFORCE\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="fa fa-cloud font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_SALESFORCE\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/salesforce/wizard" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ACCOUNT\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/salesforce/view/configuration/list/create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_CONFIGURATION\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.name.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.name.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START CHANNEL -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.channel.$touched || form.channel.$submitted) && form.channel.$invalid}">\n <label class="control-label">{{\'APPLICATION_CHANNEL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.channel" name="channel" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_CHANNEL\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="channel.value as channel in channels | filter: $select.search">\n <div data-ng-bind="channel.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.channel.$touched || form.channel.$submitted) && form.channel.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START CHANNEL -->\n\n <!-- START VOICE SUBTYPE -->\n <div data-ng-if="item.channel===\'voice\'" class="form-group" data-ng-class="{\'has-error\': (form.channel.$touched || form.channel.$submitted) && form.channel.$invalid}">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.type" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_TYPE\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="type in [\'Queue\',\'Outbound\'] | filter: $select.search">\n <div data-ng-bind="type | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.type.$touched || form.type.$submitted) && form.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START CHANNEL -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/salesforce/view/configuration/list/list.html",'<div ui-view class="profile-content">\n <div class="row">\n <div class="col-md-12">\n <div class="portlet light" data-ng-init="initView()">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_CONFIGURATIONS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="#" data-ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_CONFIGURATION\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/salesforce/view/configuration/view/view.html",'<div class="row" data-ng-init="initView();getConfiguration();getCustomVariables();getFields();">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_CONFIGURATION\' | translate}}: {{configurationName}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_SUBJECT\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_DESCRIPTION\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{\'APPLICATION_FIELDS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- SUBJECT TAB -->\n <div class="tab-pane ui-padding active" id="tab_1_1">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">All following fields will be join by blank space:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItem(\'subject\')"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div id="subject-item-list" ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="subjectItem in subjectConfig">\n <div class="col-md-3">\n <ui-select ng-model="subjectItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeType(subjectItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in fieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-8" data-ng-if="subjectItem.type==\'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="subjectItem.content" data-ng-change="updateField(subjectItem)">\n </div>\n </div>\n <div class="col-md-8" data-ng-if="subjectItem.type==\'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="subjectItem.variableName" data-ng-change="updateField(subjectItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices group-by="groupVariableByGroup" repeat="variable.name as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-8" data-ng-if="subjectItem.type==\'customVariable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="subjectItem.VariableId" data-ng-change="updateField(subjectItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in customVariables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(subjectItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END SUBJECT TAB -->\n <!-- DESCRIPTION TAB -->\n <div class="tab-pane ui-padding" id="tab_1_2">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">All following fields will be join by new line:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItem(\'description\')"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div id="description-item-list" ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="descriptionItem in descriptionConfig">\n <div class="col-md-2">\n <ui-select ng-model="descriptionItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeDescType(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in descFieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-9" data-ng-if="descriptionItem.type==\'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="descriptionItem.content" data-ng-change="updateField(descriptionItem)">\n </div>\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\'">\n <input type="text" class="form-control" placeholder="Key" data-ng-model="descriptionItem.key" data-ng-change="updateField(descriptionItem)">\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\'">\n <ui-select ng-model="descriptionItem.keyType" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeDescType(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in fieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\' && descriptionItem.keyType==\'string\'">\n <input type="text" class="form-control" placeholder="Value" data-ng-model="descriptionItem.keyContent" data-ng-change="updateField(descriptionItem)">\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\' && descriptionItem.keyType==\'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="descriptionItem.variableName" data-ng-change="updateField(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices group-by="groupVariableByGroup" repeat="variable.name as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\' && descriptionItem.keyType==\'customVariable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="descriptionItem.VariableId" data-ng-change="updateField(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in customVariables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(descriptionItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END DESCRIPTION TAB -->\n <!-- FIELDS TAB -->\n <div class="tab-pane ui-padding" id="tab_1_3">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">Add how to fill the fields present in your account:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItem(\'field\')"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div id="field-item-list" ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="fieldItem in fieldConfig">\n <div class="col-md-3">\n <ui-select ng-model="fieldItem.idField" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeFieldType(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.label}}</ui-select-match>\n <ui-select-choices repeat="item.name as item in accountFields | filter: $select.search">\n <div ng-bind-html="item.label | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-8" data-ng-if="getSystemFieldOptions(fieldItem.idField)">\n <div class="form-group">\n <ui-select ng-model="fieldItem.content" theme="bootstrap" ng-disabled="disabled" data-ng-change="updateField(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.label}}</ui-select-match>\n <ui-select-choices repeat="item.value as item in getSystemFieldOptions(fieldItem.idField) | filter: $select.search">\n <div ng-bind-html="item.label | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField)">\n <div class="form-group">\n <ui-select ng-model="fieldItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeType(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in fieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search | ucfirst"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="fieldItem.content" data-ng-change="updateField(fieldItem)">\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="fieldItem.variableName" data-ng-change="updateField(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices group-by="groupVariableByGroup" repeat="variable.name as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'customVariable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="fieldItem.VariableId" data-ng-change="updateField(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in customVariables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(fieldItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END FIELDS TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/salesforce/view/view.account.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACCOUNT\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERALS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.formSetting" data-ng-submit="forms.formSetting.$valid && updateItem()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.name" required/>\n <span data-ng-show="forms.formSetting.name.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="account.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="account.username" required/>\n <span data-ng-show="forms.formSetting.username.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START REMOTE ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.remoteUri.$invalid}">\n <label class="control-label">{{\'APPLICATION_URI\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remoteUri" placeholder="{{\'APPLICATION_URI\' | translate}}" class="form-control" data-ng-model="account.remoteUri" required />\n <span data-ng-show="forms.formSetting.remoteUri.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="account.password" required/>\n <span data-ng-show="forms.formSetting.password.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START CLIENT ID -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.clientId.$invalid}">\n <label class="control-label">{{\'APPLICATION_CLIENT_ID\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="clientId" placeholder="{{\'APPLICATION_CLIENT_ID\' | translate}}" class="form-control" data-ng-model="account.clientId" required/>\n <span data-ng-show="forms.formSetting.clientId.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CLIENT ID -->\n\n <!-- START CLIENT SECRET -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.clientSecret.$invalid}">\n <label class="control-label">{{\'APPLICATION_CLIENT_SECRET\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="clientSecret" placeholder="{{\'APPLICATION_CLIENT_SECRET\' | translate}}" class="form-control" data-ng-model="account.clientSecret" required/>\n <span data-ng-show="forms.formSetting.clientSecret.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CLIENT SECRET -->\n\n <!-- START SECURITY TOKEN -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.securityToken.$invalid}">\n <label class="control-label">{{\'APPLICATION_SECURITY_TOKEN\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="securityToken" placeholder="{{\'APPLICATION_SECURITY_TOKEN\' | translate}}" class="form-control" data-ng-model="account.securityToken" required/>\n <span data-ng-show="forms.formSetting.securityToken.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SECURITY TOKEN -->\n\n <!-- START SERVER URL -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.serverUrl.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}}</label>\n <input type="url" name="serverUrl" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="account.serverUrl"/>\n <span class="help-block">\n {{\'DESCRIPTION_SERVER_URL\' | translate}}.\n </span>\n <span class="help-block help-block-info">\n {{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n </span>\n </div>\n <!-- END SERVER URL -->\n\n <!-- START AUTH TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.authType.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTEGRATION_TYPE\' | translate}}</label>\n <ui-select data-ng-model="account.integrationType" name="integrationType" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_INTEGRATION_TYPE\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="type in [\'classic\', \'embedded\'] | filter: $select.search">\n <div data-ng-bind="type | capitalize | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.formSetting.authType.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START AUTH TYPE -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'), -a.put("app/salesforce/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-cloud"></i>\n <a href="/salesforce/list">{{ \'APPLICATION_SALESFORCE\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <a href="#">{{account.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img src="assets/images/media/salesforce.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{account.name}}\n </div>\n <div class="profile-usertitle-job">\n {{account.remoteUri}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.salesforce.view.account\')}">\n <a ng-href="/salesforce/view/{{account.id}}/account">\n <i class="icon-user"></i>\n {{ \'APPLICATION_ACCOUNT\' | translate }} </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.salesforce.view.configurations\') || $state.is(\'main.salesforce.view.configuration\')}">\n <a ng-href="/salesforce/view/{{account.id}}/configurations/list">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_CONFIGURATIONS\' | translate }} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/salesforce/wizard/wizard.html",'<!-- BEGIN PAGE HEADER-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-cloud"></i>\n <a href="/salesforce/list">{{ \'APPLICATION_SALESFORCE\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n<!-- END PAGE HEADER-->\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initWizard()">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACCOUNT\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_ACCOUNT_INFO\' | translate}}" canexit="exitValidation(forms.formSetting.$valid)">\n <form name="forms.formSetting" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="forms.formSetting.name.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="item.username" required ng-remote-validate="/api/salesforce/accounts/validate/username"/>\n <span data-ng-show="forms.formSetting.username.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formSetting.username.$touched || forms.formSetting.$submitted) && forms.formSetting.username.$error.ngRemoteValidate" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_EXIST_USERNAME\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n\n <!-- START REMOTE ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.remoteUri.$invalid}">\n <label class="control-label">{{\'APPLICATION_URI\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remoteUri" placeholder="{{\'APPLICATION_URI\' | translate}}" class="form-control" data-ng-model="item.remoteUri" required/>\n <span data-ng-show="forms.formSetting.remoteUri.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.password" required/>\n <span data-ng-show="forms.formSetting.password.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START CLIENT ID -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.clientId.$invalid}">\n <label class="control-label">{{\'APPLICATION_CLIENT_ID\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="clientId" placeholder="{{\'APPLICATION_CLIENT_ID\' | translate}}" class="form-control" data-ng-model="item.clientId" required/>\n <span data-ng-show="forms.formSetting.clientId.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CLIENT ID -->\n\n <!-- START CLIENT SECRET -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.clientSecret.$invalid}">\n <label class="control-label">{{\'APPLICATION_CLIENT_SECRET\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="clientSecret" placeholder="{{\'APPLICATION_CLIENT_SECRET\' | translate}}" class="form-control" data-ng-model="item.clientSecret" required/>\n <span data-ng-show="forms.formSetting.clientSecret.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CLIENT SECRET -->\n\n <!-- START SECURITY TOKEN -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.securityToken.$invalid}">\n <label class="control-label">{{\'APPLICATION_SECURITY_TOKEN\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="securityToken" placeholder="{{\'APPLICATION_SECURITY_TOKEN\' | translate}}" class="form-control" data-ng-model="item.securityToken" required/>\n <span data-ng-show="forms.formSetting.securityToken.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SECURITY TOKEN -->\n\n <!-- START SERVER URL -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.serverUrl.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}}</label>\n <input type="url" name="serverUrl" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.serverUrl"/>\n <span class="help-block">\n {{\'DESCRIPTION_SERVER_URL\' | translate}}.\n </span>\n <span class="help-block help-block-info">\n {{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n </span>\n </div>\n <!-- END SERVER URL -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" data-ng-click="next()"/>\n\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n\n </wizard>\n\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/setting/customization/view/general/general.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_GENERAL_CUSTOMIZATION\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_LOGO\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{ \'APPLICATION_FOOTER_WHITE_LABEL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- CHANGE LOGO TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <div class="col-md-6 col-sm-6" >\n <div class="portlet light bordered" style="min-height:411px;">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-pie-chart font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_MAIN\' | translate }}</span>\n </div>\n <div class="actions">\n </div>\n </div>\n <div class="portlet-body">\n <form action="#" role="form" class="row">\n <!-- START STATUS -->\n <div class="form-group col-md-6 col-sm-6">\n <label class="control-label">{{\'APPLICATION_DEFAULT\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="settings.defaultLogo"\n data-ng-init="settings.defaultLogo = license.custom ? settings.defaultLogo : true"\n type="checkbox"\n name="defaultLogo"\n data-ng-change="update()"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END STATUS -->\n <div class="form-group col-md-6 col-sm-6" data-ng-if="!settings.defaultLogo && license.custom">\n <div class="fileinput fileinput-new" data-provides="fileinput">\n <div class="fileinput-new thumbnail">\n <img ng-src="assets/images/media/noProfileImage.png" alt=""/>\n </div>\n <div class="fileinput-preview fileinput-exists thumbnail">\n </div>\n <div>\n <span class="btn default btn-file" data-ng-show="!uploader.queue[0]">\n <span> {{ \'APPLICATION_SELECT_IMAGE\' | translate }} </span>\n <input type="file" nv-file-select="" uploader="uploader"/><br/>\n </span>\n <button type="button" class="btn default" data-ng-show="uploader.queue[0]" data-dismiss="fileinput" ng-click="uploader.queue[0].remove()">\n {{ \'APPLICATION_REMOVE\' | translate }}\n </button>\n <button type="button" class="btn green-haze" data-ng-show="uploader.queue[0]" data-ng-click="uploader.queue[0].upload()" ng-disabled="uploader.queue[0].isReady || uploader.queue[0].isUploading || uploader.queue[0].isSuccess">\n {{ \'APPLICATION_CONFIRM\' | translate }}\n </button>\n </div>\n <p>\n </br> {{ \'MESSAGE_SUPPORTED_FORMATS\' | translate }} <b>jpg, png, jpeg</b>.\n </p>\n </div>\n </div>\n </form>\n <div data-ng-show="uploader2.isHTML5" >\n <div data-ng-repeat="item in uploader.queue" nowrap style="border-top-style:none">\n <strong>{{ item.file.name }}</strong> {{ item.file.size/1024/1024|number:2 }} MB\n <button type="button" class="btn btn-danger btn-xs" data-ng-click="item.remove()">\n <span class="glyphicon glyphicon-trash"></span> Remove\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="col-md-6 col-sm-6">\n <div class="portlet light bordered" style="min-height:411px;">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-pie-chart font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_LOGIN\' | translate }}</span>\n </div>\n <div class="actions">\n </div>\n </div>\n <div class="portlet-body">\n <form action="#" role="form" class="row">\n <!-- START STATUS -->\n <div class="form-group col-md-6 col-sm-6">\n <label class="control-label">{{\'APPLICATION_DEFAULT\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="settings.defaultLoginLogo"\n data-ng-init="settings.defaultLoginLogo = license.custom ? settings.defaultLoginLogo : true"\n type="checkbox"\n name="defaultLoginLogo"\n data-ng-change="update()"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END STATUS -->\n <div class="form-group col-md-6 col-sm-6" data-ng-if="!settings.defaultLoginLogo && license.custom">\n <div class="fileinput fileinput-new" data-provides="fileinput">\n <div class="fileinput-new thumbnail">\n <img ng-src="assets/images/media/noProfileImage.png" alt=""/>\n </div>\n <div class="fileinput-preview fileinput-exists thumbnail">\n </div>\n <div>\n <span class="btn default btn-file" data-ng-show="!uploader2.queue[0]">\n <span> {{ \'APPLICATION_SELECT_IMAGE\' | translate }} </span>\n <input type="file" nv-file-select="" uploader="uploader2"/><br/>\n </span>\n <button type="button" class="btn default" data-ng-show="uploader2.queue[0]" data-dismiss="fileinput" ng-click="uploader2.queue[0].remove()">\n {{ \'APPLICATION_REMOVE\' | translate }}\n </button>\n <button type="button" class="btn green-haze" data-ng-show="uploader2.queue[0]" data-ng-click="uploader2.queue[0].upload()" ng-disabled="uploader2.queue[0].isReady || uploader2.queue[0].isUploading || uploader2.queue[0].isSuccess">\n {{ \'APPLICATION_CONFIRM\' | translate }}\n </button>\n </div>\n <p>\n </br> {{ \'MESSAGE_SUPPORTED_FORMATS\' | translate }} <b>jpg, png, jpeg</b>.\n </p>\n </div>\n </div>\n </form>\n <div data-ng-show="uploader2.isHTML5" >\n <div data-ng-repeat="item in uploader.queue" nowrap style="border-top-style:none">\n <strong>{{ item.file.name }}</strong> {{ item.file.size/1024/1024|number:2 }} MB\n <button type="button" class="btn btn-danger btn-xs" data-ng-click="item.remove()">\n <span class="glyphicon glyphicon-trash"></span> Remove\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- END CHANGE LOGO TAB -->\n <!-- CHANGE FOOTER WHITE LABEL TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.footerWhiteLabel" data-ng-submit="forms.footerWhiteLabel.$valid && update()" novalidate>\n <!-- START DEFAULT -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DEFAULT\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="settings.defaultFooterWhiteLabel"\n type="checkbox"\n name="defaultFooterWhiteLabel"\n data-ng-change="update()"\n data-ng-init="settings.defaultFooterWhiteLabel = license.custom ? settings.defaultFooterWhiteLabel : true"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END DEFAULT -->\n <!-- START LABEL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.footerWhiteLabel.footerWhiteLabel.$touched || forms.footerWhiteLabel.$submitted) && forms.footerWhiteLabel.footerWhiteLabel.$invalid}">\n <label class="control-label">{{\'APPLICATION_FOOTER_WHITE_LABEL\' | translate}}<span data-ng-if="!settings.defaultFooterWhiteLabel" class="required" aria-required="true">*</span></label>\n <textarea name="footer" placeholder="{{\'APPLICATION_FOOTER_WHITE_LABEL\' | translate}}" class="form-control" data-ng-model="settings.footerWhiteLabel" data-ng-disabled="settings.defaultFooterWhiteLabel || !license.custom" data-ng-required="!settings.defaultFooterWhiteLabel && license.custom"/></textarea>\n <span data-ng-show="(forms.footerWhiteLabel.footerWhiteLabel.$touched || forms.footerWhiteLabel.$submitted) && forms.footerWhiteLabel.footerWhiteLabel.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END LABEL -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}" data-ng-disabled="!license.custom"/>\n </form>\n </div>\n <!-- END CHANGE FOOTER WHITE LABEL TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/setting/customization/view/motionbar/motionbar.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_MOTION_BAR_CUSTOMIZATION\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_LOGO\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- CHANGE LOGO TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <div class="col-md-12 col-sm-12" >\n <div class="portlet light bordered" style="min-height:411px;">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-pie-chart font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_MAIN\' | translate }}</span>\n </div>\n <div class="actions">\n </div>\n </div>\n <div class="portlet-body">\n <form action="#" role="form" class="row">\n <!-- START STATUS -->\n <div class="form-group col-md-6 col-sm-6">\n <label class="control-label">{{\'APPLICATION_DEFAULT\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="settings.defaultMotionBarLogo"\n data-ng-init="settings.defaultMotionBarLogo = license.preferred ? settings.defaultMotionBarLogo : true"\n type="checkbox"\n name="defaultMotionBarLogo"\n data-ng-change="update()"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END STATUS -->\n <div class="form-group col-md-6 col-sm-6" data-ng-if="!settings.defaultMotionBarLogo && license.preferred">\n <div class="fileinput fileinput-new" data-provides="fileinput">\n <div class="fileinput-new thumbnail">\n <img ng-src="assets/images/media/noProfileImage.png" alt=""/>\n </div>\n <div class="fileinput-preview fileinput-exists thumbnail">\n </div>\n <div>\n <span class="btn default btn-file" data-ng-show="!uploader.queue[0]">\n <span> {{ \'APPLICATION_SELECT_IMAGE\' | translate }} </span>\n <input type="file" nv-file-select="" uploader="uploader"/><br/>\n </span>\n <button type="button" class="btn default" data-ng-show="uploader.queue[0]" data-dismiss="fileinput" ng-click="uploader.queue[0].remove()">\n {{ \'APPLICATION_REMOVE\' | translate }}\n </button>\n <button type="button" class="btn green-haze" data-ng-show="uploader.queue[0]" data-ng-click="uploader.queue[0].upload()" ng-disabled="uploader.queue[0].isReady || uploader.queue[0].isUploading || uploader.queue[0].isSuccess">\n {{ \'APPLICATION_CONFIRM\' | translate }}\n </button>\n </div>\n <p>\n </br> {{ \'MESSAGE_SUPPORTED_FORMATS\' | translate }} <b>jpg, png, jpeg</b>.\n </p>\n </div>\n </div>\n </form>\n <div data-ng-show="uploader.isHTML5" >\n <div data-ng-repeat="item in uploader.queue" nowrap style="border-top-style:none">\n <strong>{{ item.file.name }}</strong> {{ item.file.size/1024/1024|number:2 }} MB\n <button type="button" class="btn btn-danger btn-xs" data-ng-click="item.remove()">\n <span class="glyphicon glyphicon-trash"></span> Remove\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- END CHANGE LOGO TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/setting/customization/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-settings"></i>\n <a href="#">{{ \'APPLICATION_SETTINGS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-globe"></i>\n <a href="#">{{ \'APPLICATION_CUSTOMIZATION\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img src="assets/images/media/customize.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{ \'APPLICATION_CUSTOMIZATION\' | translate }}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.setting.customization.view.general\')}">\n <a ng-href="/setting/customization/view/general">\n <i class="icon-picture"></i>\n {{ \'APPLICATION_GENERAL\' | translate }} </a>\n </li>\n <li data-ng-if="license.preferred" data-ng-class="{active: $state.is(\'main.setting.customization.view.motionbar\')}">\n <a ng-href="/setting/customization/view/motionbar">\n <i class="icon-screen-desktop"></i>\n {{ \'APPLICATION_MOTION_BAR\' | translate }} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/setting/general/view/main/main.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_GENERAL_SETTINGS\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="forms.main" data-ng-submit="forms.main.$valid && update()" novalidate>\n <!-- START MIN INTERNAL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.main.min_internal.$touched || forms.main.$submitted) && forms.main.min_internal.$invalid}">\n <label class="control-label">{{\'APPLICATION_MIN_INTERNAL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="min_internal" placeholder="{{\'APPLICATION_MIN_INTERNAL\' | translate}}" class="form-control" data-ng-model="settings.min_internal" required/>\n <span data-ng-show="(forms.main.min_internal.$touched || forms.main.$submitted) && forms.main.min_internal.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MIN INTERNAL -->\n\n <!-- START MIN MAILBOX -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.main.min_mailbox.$touched || forms.main.$submitted) && forms.main.min_mailbox.$invalid}">\n <label class="control-label">{{\'APPLICATION_MIN_MAILBOX\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="min_mailbox" placeholder="{{\'APPLICATION_MIN_MAILBOX\' | translate}}" class="form-control" data-ng-model="settings.min_mailbox" required/>\n <span data-ng-show="(forms.main.min_mailbox.$touched || forms.main.$submitted) && forms.main.min_mailbox.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MIN MAILBOX -->\n\n <!-- START MAIL ROUTING -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.main.mailRoutingCapacity.$touched || forms.main.$submitted) && forms.main.mailRoutingCapacity.$invalid}">\n <label class="control-label">{{\'APPLICATION_MAIL_ROUTING_BUFFER_CAPACITY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" max="50" name="mailRoutingCapacity" placeholder="{{\'APPLICATION_MAIL_ROUTING_BUFFER_CAPACITY\' | translate}}" class="form-control" data-ng-model="settings.mailRoutingCapacity" required/>\n <span class="help-block">\n {{\'APPLICATION_MAIL_ROUTING_BUFFER_CAPACITY_DESC\' | translate}}\n </span>\n <span data-ng-show="(forms.main.mailRoutingCapacity.$touched || forms.main.$submitted) && forms.main.mailRoutingCapacity.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MAIL ROUTING -->\n\n <!-- START CHAT ROUTING -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.main.chatRoutingCapacity.$touched || forms.main.$submitted) && forms.main.chatRoutingCapacity.$invalid}">\n <label class="control-label">{{\'APPLICATION_CHAT_ROUTING_BUFFER_CAPACITY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" max="50" name="chatRoutingCapacity" placeholder="{{\'APPLICATION_CHAT_ROUTING_BUFFER_CAPACITY\' | translate}}" class="form-control" data-ng-model="settings.chatRoutingCapacity" required/>\n <span class="help-block">\n {{\'APPLICATION_CHAT_ROUTING_BUFFER_CAPACITY_DESC\' | translate}}\n </span>\n <span data-ng-show="(forms.main.chatRoutingCapacity.$touched || forms.main.$submitted) && forms.main.chatRoutingCapacity.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CHAT ROUTING -->\n\n <!-- START AGI PORT -->\n <!-- NOTE: CUSTOM AGI PORT DEPRECATED -->\n <!-- <div class="form-group" data-ng-class="{\'has-error\': (forms.main.agi_port.$touched || forms.main.$submitted) && forms.main.agi_port.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGI_PORT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="agi_port" placeholder="{{\'APPLICATION_AGI_PORT\' | translate}}" class="form-control" data-ng-model="settings.agi_port" required/>\n <span data-ng-show="(forms.main.agi_port.$touched || forms.main.$submitted) && forms.main.agi_port.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div> -->\n <!-- END AGI PORT -->\n\n <!-- START SECURE PASSWORD -->\n <div class="form-group">\n <label class="control-label">\n {{\'APPLICATION_SECURE_PASSWORD\' | translate}}\n </label><br>\n <input\n bs-switch\n data-ng-model="settings.securePassword"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <!-- END SECURE PASSWORD -->\n\n <!-- START AUTO LOGOUT -->\n <div class="form-group">\n <label class="control-label">\n {{\'APPLICATION_AGENT_AUTO_LOGOUT\' | translate}}\n </label><br>\n <input\n bs-switch\n data-ng-model="settings.logoutOnWindowClose"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <!-- END AUTO LOGOUT -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n </div>\n </div>\n</div>\n'), -a.put("app/setting/general/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-settings"></i>\n <a href="#">{{ \'APPLICATION_SETTINGS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-globe"></i>\n <a href="#">{{ \'APPLICATION_GENERAL\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img src="assets/images/media/customize.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{ \'APPLICATION_GENERAL\' | translate }}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.setting.general.view.main\')}">\n <a ng-href="/setting/general/view/main">\n <i class="icon-picture"></i>\n {{ \'APPLICATION_MAIN\' | translate }} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/setting/license/view/update.modal.html",'<div class="modal-header" data-ng-init="getLicense()">\n <h3 class="modal-title">{{ \'APPLICATION_UPDATE_LICENSE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START LICENSE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_LICENSE\' | translate}}</label>\n <textarea type="text" style="min-height:95px;" name="description" placeholder="{{\'APPLICATION_LICENSE\' | translate}}" class="form-control" data-ng-model="item.license"></textarea>\n </div>\n <!-- END LICENSE -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="update()" ng-disabled="form.$invalid">{{ \'APPLICATION_UPDATE\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/setting/license/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-settings"></i>\n <a href="#">{{ \'APPLICATION_SETTINGS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-info"></i>\n <a href="#">{{ \'APPLICATION_LICENSE\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE CONTENT -->\n <div class="profile-content">\n <div class="row" data-ng-if="item.expirationTime > -1 && !item.demo">\n <div class="col-md-12">\n <div class="note note-warning">\n <h4 class="block"><strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_YOUR_LICENSE_WILL_EXPIRE\' | translate}} <strong>{{license.expirationTime}}</strong> {{\'MESSAGE_DAYS\' | translate}}.</h4>\n <p data-ng-if="item.token !== item.token2">\n {{\'MESSAGE_SEND_EMAIL_TO\' | translate}} <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, my new token is: {{license.token2}}. Old token: {{license.token}}">license@xcally.com</a>.\n </p>\n <p data-ng-if="item.token !== item.token2">\n {{\'APPLICATION_OLD\' | translate | uppercase}} Token: <strong>{{license.token}}</strong>\n </p>\n <p data-ng-if="item.token !== item.token2">\n {{\'APPLICATION_NEW\' | translate | uppercase}} Token: <strong>{{license.token2}}</strong>\n </p>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-6">\n <div class="pricing hover-effect">\n <div class="pricing-head">\n <h3 data-ng-switch="license.months">\n <div ng-switch-when="1">{{\'APPLICATION_MONTH_TO_MONTH\' | translate}}</div>\n <div ng-switch-when="12">{{\'APPLICATION_YEARLY\' | translate}}</div>\n <div ng-switch-when="36">{{\'APPLICATION_PERPETUAL\' | translate}}</div>\n <div ng-switch-default>{{\'APPLICATION_UNKNOWN\' | translate}}</div>\n <div class="h5" data-ng-if="item.token === item.token2">{{license.token || \'unknown\'}} </div><div class="h5" data-ng-if="item.token !== item.token2"><div><b>{{\'APPLICATION_OLD_UID\' | translate}}:</b> {{license.token || \'unknown\'}}</div><div><b>{{\'APPLICATION_NEW_UID\' | translate}}:</b> {{license.token2 || \'unknown\'}}</div> </div>\n </h3>\n <h4><i>{{license.expiration ? (license.expiration | date:\'medium\') : \'DEMO\'}}</i>\n <span data-ng-show="license.expiration">Expiration Date </span>\n </h4>\n </div>\n <ul class="pricing-content list-unstyled">\n <li class="row">\n <div class="col-md-9">\n <i class="icon-eye"></i> {{\'APPLICATION_USERS\' | translate}}:\n </div>\n <div class="col-md-3 text-center">\n {{(license.users || license.users >= 0) ? license.users : \'unknown\'}}\n </div>\n </li>\n <li class="row">\n <div class="col-md-9">\n <i class="icon-people"></i> {{\'APPLICATION_AGENTS\' | translate}} ({{\'APPLICATION_CONCURRENTS\' | translate}}):\n </div>\n <div class="col-md-3 text-center">\n {{(license.agents || license.agents >= 0) ? license.agents : \'unknown\'}}\n </div>\n </li>\n <li class="row">\n <div class="col-md-9">\n <i class="icon-phone"></i> {{\'APPLICATION_TELEPHONES\' | translate}}:\n </div>\n <div class="col-md-3 text-center">\n {{(license.telephones || license.telephones >= 0) ? license.telephones : \'unknown\'}}\n </div>\n </li>\n <li class="row">\n <div class="col-md-9">\n <i class="icon-bubble"></i> {{\'APPLICATION_CHAT\' | translate}}:\n </div>\n <div class="col-md-3 text-center">\n <span class="label label-sm" data-ng-class="license.chat ? \'label-success\' : \'label-danger\'">{{license.chat ? \'APPLICATION_ENABLED\' : \'APPLICATION_DISABLED\' | translate}}</span>\n </div>\n </li>\n <li class="row">\n <div class="col-md-9">\n <i class="icon-envelope"></i> {{\'APPLICATION_MAIL\' | translate}}:\n </div>\n <div class="col-md-3 text-center">\n <span class="label label-sm" data-ng-class="license.mail ? \'label-success\' : \'label-danger\'">{{license.mail ? \'APPLICATION_ENABLED\' : \'APPLICATION_DISABLED\' | translate}}</span>\n </div>\n </li>\n <li class="row">\n <div class="col-md-9">\n <i class="fa fa-fax"></i> {{\'APPLICATION_FAX\' | translate}}:\n </div>\n <div class="col-md-3 text-center">\n <span class="label label-sm" data-ng-class="license.fax ? \'label-success\' : \'label-danger\'">{{license.fax ? \'APPLICATION_ENABLED\' : \'APPLICATION_DISABLED\' | translate}}</span>\n </div>\n </li>\n <li class="row">\n <div class="col-md-9">\n <i class="glyphicon glyphicon-comment"></i> {{\'APPLICATION_SMS\' | translate}}:\n </div>\n <div class="col-md-3 text-center">\n <span class="label label-sm" data-ng-class="license.messaging ? \'label-success\' : \'label-danger\'">{{license.messaging ? \'APPLICATION_ENABLED\' : \'APPLICATION_DISABLED\' | translate}}</span>\n </div>\n </li>\n <li class="row">\n <div class="col-md-9">\n <i class="icon-globe"></i> {{\'APPLICATION_OPEN_CHANNEL\' | translate}}:\n </div>\n <div class="col-md-3 text-center">\n <span class="label label-sm" data-ng-class="license.openchannel ? \'label-success\' : \'label-danger\'">{{license.openchannel ? \'APPLICATION_ENABLED\' : \'APPLICATION_DISABLED\' | translate}}</span>\n </div>\n </li>\n <li class="row">\n <div class="col-md-9">\n <i class="icon-notebook"></i> {{\'APPLICATION_CONTACT_MANAGER\' | translate}}:\n </div>\n <div class="col-md-3 text-center">\n <span class="label label-sm" data-ng-class="license.cm ? \'label-success\' : \'label-danger\'">{{license.cm ? \'APPLICATION_ENABLED\' : \'APPLICATION_DISABLED\' | translate}}</span>\n </div>\n </li>\n <li class="row">\n <div class="col-md-9">\n <i class="icon-control-forward"></i> {{\'APPLICATION_MOTION_DIALER\' | translate}}:\n </div>\n <div class="col-md-3 text-center">\n <span class="label label-sm" data-ng-class="license.dialer ? \'label-success\' : \'label-danger\'">{{license.dialer ? \'APPLICATION_ENABLED\' : \'APPLICATION_DISABLED\' | translate}}</span>\n </div>\n </li>\n <li class="row">\n <div class="col-md-9">\n <i class="fa fa-edit"></i> {{\'APPLICATION_JSCRIPTY\' | translate}}:\n </div>\n <div class="col-md-3 text-center">\n <span class="label label-sm" data-ng-class="license.jscripty ? \'label-success\' : \'label-danger\'">{{license.jscripty ? \'APPLICATION_ENABLED\' : \'APPLICATION_DISABLED\' | translate}}</span>\n </div>\n </li>\n <li class="row">\n <div class="col-md-9">\n <i class="icon-equalizer"></i> {{\'APPLICATION_CUSTOMIZATION\' | translate}}:\n </div>\n <div class="col-md-3 text-center">\n <span class="label label-sm" data-ng-class="license.custom ? \'label-success\' : \'label-danger\'">{{license.custom ? \'APPLICATION_ENABLED\' : \'APPLICATION_DISABLED\' | translate}}</span>\n </div>\n </li>\n <li class="row">\n <div class="col-md-9">\n <i class="icon-cloud-download"></i> {{\'APPLICATION_UPDATE\' | translate}}:\n </div>\n <div class="col-md-3 text-center">\n <span class="label label-sm" data-ng-class="license.update ? \'label-success\' : \'label-danger\'">{{license.update ? \'APPLICATION_ENABLED\' : \'APPLICATION_DISABLED\' | translate}}</span>\n </div>\n </li>\n </ul>\n <div class="pricing-footer">\n <p>\n {{license.description}}\n </p>\n <a href="https://www.xcallymotion.com/prices" target="_blank" class="btn yellow-crusta">\n {{\'APPLICATION_PRICES\' | translate}} <i class="m-icon-swapright m-icon-white"></i>\n </a>\n <a href="#" class="btn purple-plum" data-ng-click="updateLicense()">\n {{\'APPLICATION_UPDATE\' | translate}} <i class="icon-refresh m-icon-white"></i>\n </a>\n </div>\n </div>\n </div>\n <div class="col-md-6">\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-info font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_LICENSE_REQUEST\' | translate }}</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="form" novalidate data-ng-submit="form.$valid && submitRequest()">\n\n <!-- START USERS -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.users.$touched || form.$submitted) && form.users.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <div class="input-icon">\n <i class="icon-eye"></i>\n <input type="number" name="users" placeholder="{{\'APPLICATION_USERS\' | translate}}" class="form-control" data-ng-model="item.users" min="0" required>\n </div>\n <span data-ng-show="(form.users.$touched || form.$submitted) && form.users.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERS -->\n\n <!-- START AGENTS -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.agents.$touched || form.$submitted) && form.agents.$invalid}">\n <label class="control-label">{{\'APPLICATION_AGENTS\' | translate}} ({{\'APPLICATION_CONCURRENTS\' | translate}})<span class="required" aria-required="true">*</span></label>\n <div class="input-icon">\n <i class="icon-people"></i>\n <input type="number" name="agents" placeholder="{{\'APPLICATION_AGENTS\' | translate}} ({{\'APPLICATION_CONCURRENTS\' | translate}})" class="form-control" data-ng-model="item.agents" min="0" required>\n </div>\n <span data-ng-show="(form.users.$touched || form.$submitted) && form.users.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END AGENTS -->\n\n <!-- START TELEPHONES -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.telephones.$touched || form.$submitted) && form.telephones.$invalid}">\n <label class="control-label">{{\'APPLICATION_TELEPHONES\' | translate}}<span class="required" aria-required="true">*</span></label>\n <div class="input-icon">\n <i class="icon-phone"></i>\n <input type="number" name="telephones" placeholder="{{\'APPLICATION_TELEPHONES\' | translate}}" class="form-control" data-ng-model="item.telephones" min="0" required>\n </div>\n <span data-ng-show="(form.telephones.$touched || form.$submitted) && form.telephones.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TELEPHONES -->\n\n <!-- START PLAN -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.plan.$touched || form.$submitted) && form.plan.$invalid}">\n <label class="control-label">{{\'APPLICATION_PLAN\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.months" name="plan" theme="bootstrap" on-select="updateRequestExpiration()" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="plan.value as plan in plans | filter: $select.search">\n <div ng-bind-html="plan.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.plan.$touched || form.$submitted) && form.plan.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PLAN -->\n\n <!-- START EMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.email.$touched || form.$submitted) && form.email.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <div class="input-icon">\n <i class="icon-envelope"></i>\n <input type="email" name="email" placeholder="{{\'APPLICATION_EMAIL\' | translate}}" class="form-control" data-ng-model="item.email" min="0" required>\n </div>\n <span data-ng-show="(form.email.$touched || form.$submitted) && form.email.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n\n <!-- START NOTES -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.notes.$touched || form.$submitted) && form.notes.$invalid}">\n <label class="control-label">{{\'APPLICATION_NOTES\' | translate}}</label>\n <div class="input-icon">\n <i class="icon-note"></i>\n <textarea name="notes" placeholder="{{\'APPLICATION_NOTES\' | translate}}" class="form-control" data-ng-model="item.notes" min="0"></textarea>\n </div>\n <span data-ng-show="(form.notes.$touched || form.$submitted) && form.notes.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NOTES -->\n\n <div class="row">\n <div class="form-group col-md-4 col-xs-6">\n <label class="control-label">{{\'APPLICATION_CHAT\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.chat"\n type="checkbox"\n name="chat"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <div class="form-group col-md-4 col-xs-6">\n <label class="control-label">{{\'APPLICATION_MAIL\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.mail"\n type="checkbox"\n name="mail"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <div class="form-group col-md-4 col-xs-6">\n <label class="control-label">{{\'APPLICATION_FAX\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.fax"\n type="checkbox"\n name="fax"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <div class="form-group col-md-4 col-xs-6">\n <label class="control-label">{{\'APPLICATION_SMS\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.messaging"\n type="checkbox"\n name="messaging"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <div class="form-group col-md-4 col-xs-6">\n <label class="control-label">{{\'APPLICATION_OPEN_CHANNEL\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.openchannel"\n type="checkbox"\n name="openchannel"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <div class="form-group col-md-4 col-xs-6">\n <label class="control-label">{{\'APPLICATION_CONTACT_MANAGER\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.cm"\n type="checkbox"\n name="cm"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <div class="form-group col-md-4 col-xs-6">\n <label class="control-label">{{\'APPLICATION_MOTION_DIALER\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.dialer"\n type="checkbox"\n name="dialer"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <div class="form-group col-md-4 col-xs-6">\n <label class="control-label">{{\'APPLICATION_JSCRIPTY\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.jscripty"\n type="checkbox"\n name="jscripty"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <div class="form-group col-md-4 col-xs-6">\n <label class="control-label">{{\'APPLICATION_CUSTOMIZATION\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.custom"\n type="checkbox"\n name="custom"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <div class="form-group col-md-4 col-xs-6">\n <label class="control-label">{{\'APPLICATION_UPDATE\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.update"\n type="checkbox"\n name="update"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n </div>\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_SUBMIT\' | translate}} {{\'APPLICATION_REQUEST\' | translate}}"/>\n </form>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/setting/network/view/externip/externip.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{title}}</h3>\n</div>\n<div class="modal-body" data-ng-init="initModal()">\n <form name="form" novalidate>\n\n <!-- START ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.address.$touched || form.$submitted) && form.address.$invalid}">\n <label class="control-label">{{\'APPLICATION_ADDRESS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="address" placeholder="{{\'APPLICATION_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.value" required data-ng-pattern="/^(25[0-5]|2[0-4][0-9]|1?[0-9]{1,2})(.(25[0-5]|2[0-4][0-9]|1?[0-9]{1,2})){3}$/"/>\n <span data-ng-show="(form.address.$touched || form.$submitted) && form.address.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(form.address.$touched || form.$submitted) && form.address.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END ADDRESS -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'), -a.put("app/setting/network/view/externip/externip.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-globe font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_EXTERNIP\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="#" data-toggle="dropdown" data-ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_EXTERNIP\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/setting/network/view/localnet/localnet.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{title}}</h3>\n</div>\n<div class="modal-body" data-ng-init="initModal()">\n <form name="form" novalidate>\n\n <!-- START ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.address.$touched || form.$submitted) && form.address.$invalid}">\n <label class="control-label">{{\'APPLICATION_ADDRESS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="address" placeholder="{{\'APPLICATION_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.address" required data-ng-pattern="/^(25[0-5]|2[0-4][0-9]|1?[0-9]{1,2})(.(25[0-5]|2[0-4][0-9]|1?[0-9]{1,2})){3}$/"/>\n <span data-ng-show="(form.address.$touched || form.$submitted) && form.address.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(form.address.$touched || form.$submitted) && form.address.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END ADDRESS -->\n\n <!-- START MASK -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.mask.$touched || form.$submitted) && form.mask.$invalid}">\n <label class="control-label">{{\'APPLICATION_MASK\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="mask" placeholder="{{\'APPLICATION_MASK\' | translate}}" class="form-control" data-ng-model="item.mask" required data-ng-pattern="/^(25[0-5]|2[0-4][0-9]|1?[0-9]{1,2})(.(25[0-5]|2[0-4][0-9]|1?[0-9]{1,2})){3}$/"/>\n <span data-ng-show="(form.mask.$touched || form.$submitted) && form.mask.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(form.mask.$touched || form.$submitted) && form.mask.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END MASK -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/setting/network/view/localnet/localnet.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-desktop font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_LOCALNET\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="#" data-toggle="dropdown" data-ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_LOCALNET\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/setting/network/view/stunaddr/stunaddr.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-desktop font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_STUNADDR\' | translate }}</a> </span>\n </div>\n <div class="actions">\n </div>\n </div>\n <div class="portlet-body">\n <form name="form" data-ng-submit="form.$valid && update()" novalidate>\n\n <!-- START ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.address.$touched || form.$submitted) && form.address.$invalid}">\n <label class="control-label">{{\'APPLICATION_ADDRESS\' | translate}}</label>\n <input type="text" name="stunaddr" placeholder="{{\'APPLICATION_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.stunaddr"/>\n <span class="help-block">\n {{\'DESCRIPTION_STUNADDR\' | translate}}\n </span>\n </div>\n <!-- END ADDRESS -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/setting/network/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-settings"></i>\n <a href="#">{{ \'APPLICATION_SETTINGS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-globe"></i>\n <a href="#">{{ \'APPLICATION_NETWORK\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img src="assets/images/media/business.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{ \'APPLICATION_NETWORK\' | translate }}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.setting.network.view.localnet\')}">\n <a ng-href="/setting/network/view/localnet">\n <i class="icon-screen-desktop"></i>\n {{ \'APPLICATION_LOCALNET\' | translate }} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.setting.network.view.externip\')}">\n <a ng-href="/setting/network/view/externip">\n <i class="icon-globe"></i>\n {{ \'APPLICATION_EXTERNIP\' | translate }} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.setting.network.view.stunaddr\')}">\n <a ng-href="/setting/network/view/stunaddr">\n <i class="icon-fire"></i>\n {{ \'APPLICATION_STUNADDR\' | translate }} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/setting/smtp/view/view.html",'<div class="row" data-ng-init="initView();">\n <div class="col-md-12">\n\n <form name="forms.info" data-ng-submit="forms.info.$valid && updateItem()" novalidate>\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACCOUNT\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <!-- GENERAL TAB -->\n\n <div class="note note-danger" data-ng-show="item.account.MailServerOut.state === \'DISCONNECTED\' || item.account.MailServerOut.state === \'ERROR\'">\n <p> ERROR </p>\n <json-formatter open="1" json="item.account.MailServerOut.source"></json-formatter>\n </div>\n\n <div class="note note-success" data-ng-show="item.account.MailServerOut.state === \'CONNECTED\'">\n <p> CONNECTED </p>\n </div>\n\n <div class="note note-info" data-ng-show="item.account.MailServerOut.state === \'CONNECTING\'">\n <p> TRYING... </p>\n </div>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.account.name" required/>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid && forms.info.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.address.$touched || forms.info.$submitted) && forms.info.address.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL_ADDRESS\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="address" placeholder="{{\'APPLICATION_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.account.address" required/>\n <span data-ng-show="(forms.info.address.$touched || forms.info.$submitted) && forms.info.address.$invalid && forms.info.address.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ADDRESS -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.account.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START SERVICE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_SERVICE\' | translate}}</label><br>\n <input\n bs-switch\n data-ng-model="item.account.service"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <!-- END SERVICE -->\n <!-- END GENERAL TAB -->\n </div>\n </div>\n\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">SMTP</span>\n </div>\n </div>\n <div class="portlet-body">\n <!-- SMTP TAB -->\n <!-- START HOST -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.host.$touched || forms.info.$submitted) && forms.info.host.$invalid}">\n <label class="control-label">{{\'APPLICATION_HOST\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="host" placeholder="{{\'APPLICATION_HOST\' | translate}}" class="form-control" data-ng-model="item.account.MailServerOut.host" required/>\n <span data-ng-show="(forms.info.host.$touched || forms.info.$submitted) && forms.info.host.$invalid && forms.info.host.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END HOST -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.username.$touched || forms.info.$submitted) && forms.info.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="item.account.MailServerOut.username" required/>\n <span data-ng-show="(forms.info.username.$touched || forms.info.$submitted) && forms.info.username.$invalid && forms.info.username.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.account.MailServerOut.password" required/>\n <span data-ng-show="(forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$invalid && forms.info.password.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START PORT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.port.$touched || forms.info.$submitted) && forms.info.port.$invalid}">\n <label class="control-label">{{\'APPLICATION_PORT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="port" placeholder="{{\'APPLICATION_PORT\' | translate}}" class="form-control" data-ng-model="item.account.MailServerOut.port" required/>\n <span data-ng-show="(forms.info.form.$touched || forms.info.$submitted) && forms.info.port.$invalid && forms.info.port.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.form.$touched || forms.info.$submitted) && forms.info.port.$invalid && forms.info.port.$error.number" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_NUMERIC_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PORT -->\n\n <!-- START SSL -->\n <div class="form-group">\n <label class="control-label">SSL</label><br>\n <input\n bs-switch\n data-ng-model="item.account.MailServerOut.ssl"\n type="checkbox"\n switch-active="{{ isActive }}"\n switch-on-text="{{ \'APPLICATION_ENABLED\' | translate }}"\n switch-off-text="{{ \'APPLICATION_DISABLED\' | translate }}"\n switch-on-color="{{ onColor }}"\n switch-off-color="{{ offColor }}"\n switch-animate="{{ animate }}"\n switch-size="{{ size }}"\n switch-label="{{ label }}"\n switch-icon="{{ icon }}"\n switch-radio-off="{{ radioOff }}"\n switch-label-width="{{ labelWidth }}"\n switch-handle-width="{{ handleWidth }}">\n </div>\n <!-- END SSL -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n <input class="btn blue-madison" type="button" value="Test" data-ng-click="test()" data-ng-if="item.account.id"/>\n <input class="btn red" type="button" value="{{\'APPLICATION_DELETE\' | translate}}" data-ng-if="item.account.id" data-ng-click="delete(\'Service SMTP\',item.account.id);"/>\n\n <!-- END SMTP TAB -->\n </div>\n </div>\n </form>\n\n </div>\n</div>\n'),a.put("app/setting/system/view/console/console.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()" data-ng-click="cmdFocus()">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_ASTERISK_CONSOLE\' | translate}}\n <button class="btn btn-default" href="#" data-ng-click="output = \'\';cmdFocus();">\n <i class="icon-ban"></i>\n </button></span>\n </div>\n </div>\n <div class="portlet-body">\n <span us-spinner spinner-key="console-spinner" spinner-start-active="true"></span>\n <div class="well" style="height:400px;overflow-y:scroll;" schroll-bottom="output" data-ng-bind-html="output"></div>\n <form name="forms.console" data-ng-submit="forms.console.$valid && sendCmd() && !busy" novalidate>\n <!-- START COMMAND -->\n <div class="form-group">\n <input type="text" name="command" id="command" placeholder="{{\'APPLICATION_INSERT_COMMAND\' | translate}}" class="form-control" data-ng-model="item.command" data-ng-disabled="busy" autocomplete="off" data-ng-keyup="keyUp($event)"/>\n </div>\n <span class="help-block">\n {{ \'DESCRIPTION_ENTER_TO_COMMAND\' | translate }}\n </span>\n <button type="submit" class="hide"></button>\n <!-- END COMMAND -->\n </form>\n </div>\n </div>\n</div>\n'),a.put("app/setting/system/view/general/general.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="row ">\n <div class="col-md-6 col-sm-6">\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-pie-chart font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_MEMORY\' | translate }} (<b>{{ \'APPLICATION_TOTAL\' | translate }}</b>: {{system.memory.Total}} MB)</a> </span>\n </div>\n <div class="actions">\n <a class="btn btn-default" href="#" data-ng-click="initView()" data-ng-disabled="loading">\n <i class="icon-refresh"></i>\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="memory-spinner" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n <canvas class="chart chart-pie" chart-data="system.memory.values" chart-labels="system.memory.labels" chart-legend="true">\n </canvas>\n </div>\n </div>\n </div>\n <div class="col-md-6 col-sm-6">\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-pie-chart font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_DISK\' | translate }} (<b>{{ \'APPLICATION_TOTAL\' | translate }}</b>: {{system.mount.size}} GB)</a> </span>\n </div>\n <div class="actions">\n <div class="portlet-input input-inline input-medium">\n <div class="input-group">\n <ui-select data-ng-model="system.mount" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_DISK\' | translate}}">{{$select.selected.mount}}</ui-select-match>\n <ui-select-choices repeat="disk in system.disks | filter: $select.search">\n <div ng-bind-html="disk.mount | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="input-group-btn">\n <button class="btn btn-default" href="#" data-ng-click="initView()" data-ng-disabled="loading">\n <i class="icon-refresh"></i>\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="disk-spinner" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n <canvas class="chart chart-pie" chart-data="system.mount.values" chart-labels="system.mount.labels" chart-legend="true">\n </canvas>\n <!-- END Portlet PORTLET-->\n </div>\n </div>\n </div>\n </div>\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-pie-chart font-green-sharp"></i>\n <span class="caption-subject">CPU (<b>{{ \'APPLICATION_NUMBER_OF_CORES\' | translate }}</b>: {{system.cpu.cores.length}}, <b>MOTION</b>: {{system.cpu.motion}} % )</a> </span>\n </div>\n <div class="actions">\n <a class="btn btn-default" href="#" data-ng-click="initView()" data-ng-disabled="loading">\n <i class="icon-refresh"></i>\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <div class="row">\n <div class="col-md-2 col-sm-4" data-ng-repeat="cpu in system.cpu.cores">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="cpu-spinner" spinner-start-active="false"></span>\n <!-- END UI-GRID SPINNER -->\n <canvas class="chart chart-doughnut" chart-data="cpu.values" chart-labels="cpu.labels" chart-colours="cpu.colours" chart-legend="true">\n </canvas>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/setting/system/view/logs/logs.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getLog()">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_LOGS\' | translate}}\n </div>\n <div class="actions">\n <div class="portlet-input input-inline input-medium">\n <div class="input-group">\n <ui-select data-ng-model="item.filename" theme="bootstrap" on-select="getLog()" required>\n <ui-select-match placeholder="{{\'APPLICATION_FILENAME\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices position=\'down\' repeat="logfile in logfiles | filter: $select.search">\n <div ng-bind-html="logfile | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="input-group-btn">\n <button class="btn btn-default" href="#" data-ng-click="getLog()" data-ng-disabled="loading">\n <i class="icon-refresh"></i>\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <pre class="log-pre" schroll-bottom="log">\n <!-- BEGIN LOGS SPINNER -->\n <span us-spinner spinner-key="logs-spinner" spinner-start-active="true"></span>\n <!-- END LOGS SPINNER -->\n {{log}}\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/setting/system/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-settings"></i>\n <a href="#">{{ \'APPLICATION_SETTINGS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-pie-chart"></i>\n <a href="#">{{ \'APPLICATION_SYSTEM\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img src="assets/images/media/customize.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{ \'APPLICATION_SYSTEM\' | translate }}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.setting.system.view.general\')}">\n <a ng-href="/setting/system/view/general">\n <i class="icon-pie-chart"></i>\n {{ \'APPLICATION_GENERAL\' | translate }} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.setting.system.view.logs\')}">\n <a ng-href="/setting/system/view/logs">\n <i class="icon-list"></i>\n {{ \'APPLICATION_LOGS\' | translate }} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.setting.system.view.console\')}">\n <a ng-href="/setting/system/view/console">\n <i class="icon-chemistry"></i>\n {{ \'APPLICATION_ASTERISK_CONSOLE\' | translate }} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/setting/update/list/landing.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-settings"></i>\n <a href="#">{{ \'APPLICATION_SETTINGS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-cloud-download"></i>\n <a href="#">{{ \'APPLICATION_UPDATES\' | translate }}</a>\n </li>\n </ul>\n </div>\n <!-- BEGIN PAGE CONTENT-->\n <div class="row" data-ng-init="initCounter()">\n <div class="col-md-12 page-500">\n <div class="number">\n <timer interval="1000" countdown="360">{{countdown}}</timer>\n </div>\n <div class="details">\n <h3>Wait! xCALLY Motion update in progess...</h3>\n <p>\n We are updating it!<br/>\n xCALLY Motion Team<br/><br/>\n </p>\n </div>\n </div>\n </div>\n <!-- END PAGE CONTENT-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/setting/update/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-settings"></i>\n <a href="#">{{ \'APPLICATION_SETTINGS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-cloud-download"></i>\n <a href="#">{{ \'APPLICATION_UPDATES\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <!-- <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-cloud-download font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_UPDATES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <a class="btn btn-default" href="#" data-ng-click="pull()">\n <i class="icon-cloud-download"></i> {{ \'APPLICATION_UPDATE\' | translate }}\n </a>\n </div>\n </div>\n <div class="portlet-body" data-ng-init="initView()"> -->\n <!-- START TABLE -->\n <!-- <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div> -->\n <!-- END TABLE -->\n <!-- </div> -->\n <!-- END Portlet PORTLET-->\n <!-- </div> -->\n <div class="row">\n <div class="col-md-12">\n <!-- BEGIN INLINE NOTIFICATIONS PORTLET-->\n <div class="portlet">\n <div class="portlet-title">\n <div class="caption">\n <i class="icon-cloud-download font-green-sharp"></i>{{ \'APPLICATION_UPDATE\' | translate }}\n </div>\n <div class="actions">\n <button class="btn btn-default" href="#" data-ng-click="pull()">\n <i class="icon-cloud-download"></i> {{ \'APPLICATION_UPDATE\' | translate }}\n </button>\n </div>\n </div>\n <div class="portlet-body" data-ng-init="initView()">\n <div class="row margin-bottom-40">\n <!-- Pricing -->\n <div class="col-md-6">\n <div class="pricing hover-effect current-version">\n <div class="pricing-head">\n <h3>{{ \'APPLICATION_CURRENT_VERSION\' | translate }} <span>\n {{ \'APPLICATION_LAST_PERFORMED_UPDATE\' | translate }} </span>\n </h3>\n <h4>v. {{currentVersion.version}}</h4>\n </div>\n <ul class="pricing-content list-unstyled">\n <li>\n <i class="icon-clock"></i><b> {{\'APPLICATION_RELEASED_AT\' | translate}}:</b> {{currentVersion.createdAt}}\n </li>\n <li>\n <i class="icon-list"></i> <a target="_blank" href="https://wiki.xcallymotion.com/display/XMD/Motion+GUI#MotionGUI-Version{{currentVersion.version}}">{{\'APPLICATION_CHANGELOG\' | translate}}</a>\n </li>\n </ul>\n <div class="pricing-footer">\n </div>\n </div>\n </div>\n <div class="col-md-6">\n <div class="pricing hover-effect" data-ng-class="{\'disabled-update\':currentVersion.version==latestVersion.version}">\n <div class="pricing-head">\n <h3>{{ \'APPLICATION_LATEST_VERSION\' | translate }} <span>\n {{ \'APPLICATION_LAST_SOFTWARE_UPDATE_AVAILABLE\' | translate }} </span>\n </h3>\n <h4>v. {{latestVersion.version}}</h4>\n </div>\n <ul class="pricing-content list-unstyled">\n <li>\n <i class="icon-clock"></i><b> {{\'APPLICATION_RELEASED_AT\' | translate}}:</b> {{latestVersion.createdAt}}\n </li>\n <li>\n <i class="icon-list"></i> <a target="_blank" href="https://wiki.xcallymotion.com/display/XMD/Motion+GUI#MotionGUI-Version{{latestVersion.version}}">{{\'APPLICATION_CHANGELOG\' | translate}}</a>\n </li>\n </ul>\n <div class="pricing-footer">\n </div>\n </div>\n </div>\n <!--//End Pricing -->\n </div>\n </div>\n </div>\n <!-- END INLINE NOTIFICATIONS PORTLET-->\n </div>\n </div>\n\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), -a.put("app/setting/update/list/list.pull.html",'<div class="modal-header">\n <button data-ng-if="modal.dismissable" type="button" data-ng-click="$dismiss()" class="close">×</button>\n <h4 ng-if="modal.title" ng-bind="modal.title" class="modal-title"></h4>\n</div>\n<div class="modal-body">\n <p data-ng-if="modal.text" data-ng-bind="modal.text"></p>\n <div data-ng-if="modal.html" data-ng-bind-html="modal.html"></div>\n</div>\n<div class="modal-footer">\n <button data-ng-repeat="button in modal.buttons" data-ng-class="button.classes" data-ng-click="button.click($event)" data-ng-bind="button.text" class="btn"></button>\n</div>\n'),a.put("app/square/odbc/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_ODBC\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DSN -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.dsn.$touched || form.$submitted) && form.dsn.$invalid}">\n <label class="control-label">{{\'APPLICATION_ODBC\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="dsn" placeholder="DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion" class="form-control" data-ng-model="item.dsn" required/>\n <p class="help-block">Es. DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion</p>\n <span data-ng-show="(form.dsn.$touched || form.$submitted) && form.dsn.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DSN -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/square/odbc/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-superscript"></i>\n <a>Cally ²</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="#">{{ \'APPLICATION_ODBCS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ODBCS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <button class="btn green-jungle " ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ODBC\' | translate }}\n </button>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/square/odbc/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getOdbc()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-superscript"></i>\n <a>Cally ²</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="/square/odbc/list">{{ \'APPLICATION_ODBCS\' | translate }}</a>\n <i data-ng-show="odbc" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="odbc">\n <a href="#">{{odbc.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/odbc.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{odbc.name}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.square.odbc.view.settings\')}">\n <a data-ng-href="/square/odbc/view/{{odbc.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/square/odbc/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_ODBC\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateOdbc()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="odbc.name" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DSN -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.odbc.dsn.$touched || forms.odbc.$submitted) && forms.odbc.dsn.$invalid}">\n <label class="control-label">{{\'APPLICATION_ODBC\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="dsn" placeholder="{{\'APPLICATION_DSN\' | translate}}" class="form-control" data-ng-model="odbc.dsn" required/>\n <p class="help-block">Es. DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion</p>\n <span data-ng-show="(forms.odbc.dsn.$touched || forms.odbc.$submitted) && forms.odbc.dsn.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DSN -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="odbc.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/square/project/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_PROJECT\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/square/project/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-superscript"></i>\n <a>Cally ²</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-slack"></i>\n <a href="#">{{ \'APPLICATION_PROJECTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_PROJECTS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <button class="btn green-jungle " ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_PROJECT\' | translate }}\n </button>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/square/project/view/projectNotes.modal.html",'<div class="yellow-notes">\n<div class="modal-header">\n <button ng-if="modal.dismissable" type="button" ng-click="$dismiss()" class="close">×</button>\n <h4 class="modal-title">{{\'APPLICATION_NOTES\' | translate}}</h4>\n</div>\n<div class="modal-body" style="text-align:center;">\n<textarea name="name" class="notes-textarea" placeholder="{{\'MESSAGE_INSERT_YOUR_TEXT_HERE\' | translate}}" data-ng-model="notes.value"></textarea>\n</div>\n<div class="modal-footer" >\n <button class="btn green-haze" type="button" ng-click="close()">{{ \'APPLICATION_SAVE\' | translate }}</button>\n</div>\n</div>\n'),a.put("app/square/project/view/view.html",'<div class="row" data-ng-init="getProject()">\n <div class="col-md-12">\n <div class="page-bar" style="margin-bottom: 0px;">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-superscript"></i>\n <a>Cally ²</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-slack"></i>\n <a href="/square/projects/list">{{ \'APPLICATION_PROJECTS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <a ng-href="/square/projects/view/{{squareProject.id}}">{{squareProject.name}}</a>\n </li>\n </ul>\n </div>\n\n <h4 class="text-success bold"> {{squareProject.name}} <button class="btn btn-xs yellow-saffron" type="button" data-ng-click="editNotes()"><i class="icon-note"></i> {{\'APPLICATION_NOTES\' | translate}}</button></h4> <p class="text-muted"> {{squareProject.description}} </p>\n\n <div id="geEditor" class="geEditor"></div>\n </div>\n</div>\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n\n </div>\n</div>\n\n<!-- END PAGE CONTENT-->\n<script></script>\n'),a.put("app/square/realtime/view/general/general.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="init()">\n <div class="col-md-12">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-pagination ui-grid-auto-resize>\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/square/realtime/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-superscript"></i>\n <a href="#">Cally ²</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-energy"></i>\n <a href="/square/realtime/view/general">{{ \'APPLICATION_REALTIME\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <div>\n <nav class="navbar navbar-default" role="navigation">\n <div class="collapse navbar-collapse">\n <ul class="nav navbar-nav">\n <li data-ng-class="{\'active\': $state.is(\'main.square.realtime.view.general\')}">\n <a href="/square/realtime/view/general">\n {{\'APPLICATION_GENERAL\' | translate}}\n </a>\n </li>\n </ul>\n </div>\n </nav>\n </div>\n <div ui-view></div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/square/recording/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-superscript"></i>\n <a href="#">Cally ²</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-microphone"></i>\n <a href="#">{{ \'APPLICATION_RECORDINGS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="fa fa-play font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_RECORDINGS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/agent/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-puzzle"></i>\n <a href="#">{{ \'APPLICATION_STAFF\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-people"></i>\n <a href="#">{{ \'APPLICATION_AGENTS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-people font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_AGENTS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group" data-ng-show="Auth.getCurrentUser().role === \'admin\'">\n <button type="button" class="btn green-jungle" data-toggle="dropdown" data-hover="dropdown" data-delay="1000" data-close-others="true" aria-expanded="true">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_AGENT\' | translate }} <i class="fa fa-angle-down"></i>\n </button>\n <ul class="dropdown-menu" role="menu">\n <li>\n <a href="/staff/agents/wizard">\n Standard\n </a>\n </li>\n <li>\n <a href="/staff/agents/bulk">\n {{ \'APPLICATION_BULK\' | translate }}\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/agent/view/view.account.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_ACCOUNT\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li data-ng-class="{\'active\': Auth.isAdmin() || userModules[4]}" data-ng-show="Auth.isAdmin() || userModules[4]">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_PERSONAL_INFO\' | translate}}</a>\n </li>\n <li data-ng-show="Auth.isAdmin() || userModules[4]">\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{ \'APPLICATION_CHANGE_AVATAR\' | translate}}</a>\n </li>\n <li data-ng-show="Auth.isAdmin() || userModules[4] || agent.id === Auth.getCurrentUser().id" data-ng-class="{\'active\': !Auth.isAdmin() && agent.id === Auth.getCurrentUser().id}">\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{ \'APPLICATION_CHANGE_PASSWORD\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- PERSONAL INFO TAB -->\n <div class="tab-pane" data-ng-class="{\'active\': Auth.isAdmin() || userModules[4]}" data-ng-show="Auth.isAdmin() || userModules[4]" id="tab_1_1">\n <form name="forms.info" data-ng-submit="forms.info.$valid && updateItem()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.fullname.$touched || forms.info.$submitted) && forms.info.fullname.$invalid}">\n <label class="control-label">{{\'APPLICATION_FULLNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="fullname" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="agent.fullname" required/>\n <span data-ng-show="(forms.info.fullname.$touched || forms.info.$submitted) && forms.info.fullname.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}</label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="agent.name" disabled/>\n </div>\n <!-- END USERNAME -->\n\n <!-- START EMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="email" name="email" placeholder="{{\'APPLICATION_EMAIL\' | translate}}" class="form-control" data-ng-model="agent.email" required/>\n <span data-ng-show="(forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$error.email" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n\n <!-- START PHONE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.phone.$touched || forms.info.$submitted) && forms.info.phone.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}</label>\n <input type="text" name="phone" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="agent.phone"/>\n </div>\n <!-- END PHONE -->\n\n <!-- START MOBILE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.mobile.$touched || forms.info.$submitted) && forms.info.mobile.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOBILE\' | translate}}</label>\n <input type="text" name="mobile" placeholder="{{\'APPLICATION_MOBILE\' | translate}}" class="form-control" data-ng-model="agent.mobile"/>\n </div>\n <!-- END MOBILE -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="agent.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START LOGIN IN PAUSE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_LOGIN_IN_PAUSE\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="agent.loginInPause"\n type="checkbox"\n name="auth"\n switch-active="{{ recordSwitch.isActive }}"\n switch-on-text="{{ recordSwitch.onText }}"\n switch-off-text="{{ recordSwitch.offText }}"\n switch-on-color="{{ recordSwitch.onColor }}"\n switch-off-color="{{ recordSwitch.offColor }}"\n switch-animate="{{ recordSwitch.animate }}"\n switch-size="{{ recordSwitch.size }}"\n switch-label="{{ recordSwitch.label }}"\n switch-icon="{{ recordSwitch.icon }}"\n switch-radio-off="{{ recordSwitch.radioOff }}"\n switch-label-width="{{ recordSwitch.labelWidth }}"\n switch-handle-width="{{ recordSwitch.handleWidth }}">\n </div>\n <!-- END LOGIN IN PAUSE -->\n\n <!-- START WEB BAR -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_SHOW_WEB_BAR\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="agent.showWebBar"\n type="checkbox"\n name="auth"\n switch-active="{{ recordSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ recordSwitch.onColor }}"\n switch-off-color="{{ recordSwitch.offColor }}"\n switch-animate="{{ recordSwitch.animate }}"\n switch-size="{{ recordSwitch.size }}"\n switch-label="{{ recordSwitch.label }}"\n switch-icon="{{ recordSwitch.icon }}"\n switch-radio-off="{{ recordSwitch.radioOff }}"\n switch-label-width="{{ recordSwitch.labelWidth }}"\n switch-handle-width="{{ recordSwitch.handleWidth }}">\n </div>\n <!-- END WEB BAR -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END PERSONAL INFO TAB -->\n <!-- CHANGE AVATAR TAB -->\n <div class="tab-pane" data-ng-show="Auth.isAdmin() || userModules[4]" id="tab_1_2">\n <form action="#" role="form">\n <div class="form-group">\n <div class="fileinput fileinput-new" data-provides="fileinput">\n <div class="fileinput-new thumbnail" style="width: 200px; height: 150px;">\n <img ng-src="assets/images/media/noProfileImage.png" alt=""/>\n </div>\n <div class="fileinput-preview fileinput-exists thumbnail" style="max-width: 200px; max-height: 150px;">\n </div>\n <div>\n <span class="btn default btn-file" data-ng-show="!uploader.queue[0]">\n <span> {{ \'APPLICATION_SELECT_IMAGE\' | translate }} </span>\n <input type="file" nv-file-select="" uploader="uploader" /><br/>\n </span>\n <button type="button" class="btn default" data-ng-show="uploader.queue[0]" data-dismiss="fileinput" ng-click="uploader.queue[0].remove()">\n {{ \'APPLICATION_REMOVE\' | translate }}\n </button>\n <button type="button" class="btn green-haze" data-ng-show="uploader.queue[0]" data-ng-click="uploader.queue[0].upload()" ng-disabled="uploader.queue[0].isReady || uploader.queue[0].isUploading || uploader.queue[0].isSuccess">\n {{ \'APPLICATION_CONFIRM\' | translate }}\n </button>\n </div>\n <p>\n </br> {{ \'MESSAGE_SUPPORTED_FORMATS\' | translate }} <b>jpg, png, jpeg</b>.\n </p>\n </div>\n </div>\n </form>\n <div class="row">\n <div class="col-md-2">\n <table class="table" border="0">\n <tbody>\n <tr data-ng-repeat="item in uploader.queue">\n <td style="border-top-style:none">\n <strong>\n {{ item.file.name }}\n </strong>\n </td>\n <td data-ng-show="uploader.isHTML5" nowrap style="border-top-style:none">\n {{ item.file.size/1024/1024|number:2 }} MB\n </td>\n <td nowrap style="border-top-style:none">\n <button type="button" class="btn btn-danger btn-xs" data-ng-click="item.remove()">\n <span class="glyphicon glyphicon-trash"></span> Remove\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n <!-- END CHANGE AVATAR TAB -->\n <!-- CHANGE PASSWORD TAB -->\n <div class="tab-pane" data-ng-show="Auth.isAdmin() || userModules[4] || agent.id === Auth.getCurrentUser().id" data-ng-class="{\'active\': !Auth.isAdmin() && agent.id === Auth.getCurrentUser().id}" id="tab_1_3">\n <form name="forms.changePwd" data-ng-submit="forms.changePwd.$valid && updatePassword()" novalidate>\n <!-- START CURRENT PWD -->\n <div class="form-group" data-ng-if="!(Auth.isAdmin() || userModules[4])" data-ng-class="{\'has-error\': (forms.changePwd.current_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.current_pwd.$invalid}">\n <label class="control-label">{{\'APPLICATION_CURRENT_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="current_pwd" placeholder="{{\'APPLICATION_CURRENT_PASSWORD\' | translate}}" class="form-control" data-ng-model="agent.currentPwd" required/>\n <span data-ng-show="(forms.changePwd.current_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.current_pwd.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CURRENT PWD -->\n <!-- START NEW PWD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.changePwd.new_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.new_pwd.$invalid}">\n <label class="control-label">{{\'APPLICATION_NEW_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="new_pwd" placeholder="{{\'APPLICATION_NEW_PASSWORD\' | translate}}" class="form-control" data-ng-model="agent.newPwd" data-ng-pattern="setting.securePassword ? settings.patternPassword : settings.patternPasswordLight" required/>\n <span class="help-block">\n {{setting.securePassword ? \'MESSAGE_PASSWORD_FORMAT\' : \'MESSAGE_PASSWORD_LIGHT_FORMAT\' | translate}}\n </span>\n <span data-ng-show="(forms.changePwd.current_pwd.$touched || forms.info.$submitted) && forms.changePwd.current_pwd.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n <span data-ng-show="(forms.changePwd.new_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.new_pwd.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NEW PWD -->\n <!-- START RE-NEW PWD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.changePwd.re_new_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.re_new_pwd.$invalid}">\n <label class="control-label">{{\'APPLICATION_RE_TYPE_NEW_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="re_new_pwd" placeholder="{{\'APPLICATION_RE_TYPE_NEW_PASSWORD\' | translate}}" class="form-control" data-ng-model="agent.reNewPwd" nx-equal="agent.newPwd" required/>\n <span data-ng-show="(forms.changePwd.new_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.new_pwd.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END RE-NEW PWD -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END CHANGE PASSWORD TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'), -a.put("app/staff/agent/view/view.chat.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_CHAT\' | translate}}</span>\n </div>\n </div>\n\n <div class="portlet-body">\n <!-- START CHAT TAB -->\n <form name="form" data-ng-submit="patchItem()" novalidate>\n <!-- START CAPACITY -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.capacity.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_CAPACITY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="chatCapacity" placeholder="{{\'APPLICATION_CAPACITY\' | translate}}" class="form-control" data-ng-model="agent.chatCapacity" min="0" required/>\n <span class="help-block">\n {{\'MESSAGE_ZERO_MEANS_UNLIMITED\' | translate}}\n </span>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CAPACITY -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n <!-- END CHAT TAB -->\n </div>\n </div>\n </div>\n</div>\n</div>\n'),a.put("app/staff/agent/view/view.fax.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_FAX\' | translate}}</span>\n </div>\n </div>\n\n <div class="portlet-body">\n <!-- START CHAT TAB -->\n <form name="form" data-ng-submit="patchItem()" novalidate>\n <!-- START CAPACITY -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.capacity.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_CAPACITY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="faxCapacity" placeholder="{{\'APPLICATION_CAPACITY\' | translate}}" class="form-control" data-ng-model="agent.faxCapacity" min="0" required/>\n <span class="help-block">\n {{\'MESSAGE_ZERO_MEANS_UNLIMITED\' | translate}}\n </span>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CAPACITY -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n <!-- END CHAT TAB -->\n </div>\n </div>\n </div>\n</div>\n</div>\n'),a.put("app/staff/agent/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-puzzle"></i>\n <a href="#">{{ \'APPLICATION_STAFF\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-people"></i>\n <a href="/staff/agents/list">{{ \'APPLICATION_AGENTS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <a href="#">{{agent.fullname}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-userpic">\n <img ng-src="api/users/avatar/{{agent.userpic ? agent.userpic : \'unknown_avatar\'}}" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n\n <!-- START SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{agent.fullname}}\n </div>\n <div class="profile-usertitle-job">\n {{agent.role}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.staff.agents.view.account\')}">\n <a data-ng-href="/staff/agents/view/{{agent.id}}/account">\n <i class="icon-user"></i>\n {{ \'APPLICATION_ACCOUNT\' | translate}} </a>\n </li>\n\n <li data-ng-class="{active: $state.includes(\'main.staff.agents.view.queues\')}" data-ng-show="Auth.isAdmin() || userModules[7]">\n <a data-ng-href="/staff/agents/view/{{agent.id}}/queues/voice">\n <i class="icon-docs"></i>\n {{ \'APPLICATION_QUEUES\' | translate}} </a>\n </li>\n\n <li data-ng-class="{active: $state.is(\'main.staff.agents.view.voice\')}" data-ng-show="Auth.isAdmin() || userModules[7]">\n <a data-ng-href="/staff/agents/view/{{agent.id}}/voice">\n <i class="icon-earphones-alt"></i>\n {{ \'APPLICATION_VOICE\' | translate}} </a>\n </li>\n\n <li data-ng-class="{active: $state.is(\'main.staff.agents.view.chat\'),\'disabled-link\':!license.chat}" data-ng-show="Auth.isAdmin() || userModules[8]">\n <a data-ng-href="{{license.chat ? \'/staff/agents/view/\'+agent.id+\'/chat\' : \'javascript:;\'}}" class="disable-target">\n <i class="icon-bubble"></i>\n {{ \'APPLICATION_CHAT\' | translate}} </a>\n </li>\n\n <!-- <li data-ng-class="{active: $state.is(\'main.staff.agents.view.mail\'),\'disabled-link\':!license.mail}" data-ng-show="Auth.isAdmin() || userModules[9]">\n <a data-ng-href="{{license.mail ? \'/staff/agents/view/\'+agent.id+\'/mail\' : \'javascript:;\'}}" class="disable-target">\n <i class="icon-envelope"></i>\n {{ \'APPLICATION_MAIL\' | translate}} </a>\n </li> -->\n\n <!-- <li data-ng-class="{active: $state.is(\'main.staff.agents.view.fax\'),\'disabled-link\':!license.fax}" data-ng-show="Auth.isAdmin() || userModules[10]">\n <a data-ng-href="{{license.fax ? \'/staff/agents/view/\'+agent.id+\'/fax\' : \'javascript:;\'}}" class="disable-target">\n <i class="fa fa-fax"></i>\n {{ \'APPLICATION_FAX\' | translate}} </a>\n </li> -->\n\n <!-- <li data-ng-class="{active: $state.is(\'main.staff.agents.view.sms\'),\'disabled-link\':!license.messaging}" data-ng-show="Auth.isAdmin() || userModules[11]">\n <a data-ng-href="{{license.messaging ? \'/staff/agents/view/\'+agent.id+\'/sms\' : \'javascript:;\'}}" class="disable-target">\n <i class=" glyphicon glyphicon-comment "></i>\n {{ \'APPLICATION_SMS\' | translate}} </a>\n </li> -->\n <!-- <li data-ng-class="{active: $state.is(\'main.staff.agents.view.openchannel\'),\'disabled-link\':!license.openchannel}" data-ng-show="Auth.isAdmin() || userModules[20]">\n <a data-ng-href="{{license.openchannel ? \'/staff/agents/view/\'+agent.id+\'/openchannel\' : \'javascript:;\'}}" class="disable-target">\n <i class=" icon-globe "></i>\n {{ \'APPLICATION_OPEN_CHANNEL\' | translate}} </a>\n </li> -->\n\n <li data-ng-class="{active: $state.is(\'main.staff.agents.view.motionbar\')}" data-ng-show="Auth.isAdmin()">\n <a data-ng-href="/staff/agents/view/{{agent.id}}/motionbar">\n <i class="icon-screen-desktop"></i>\n {{ \'APPLICATION_MOTION_BAR\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/agent/view/view.mail.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_MAIL\' | translate}}</span>\n </div>\n </div>\n\n <div class="portlet-body">\n <!-- START CHAT TAB -->\n <form name="form" data-ng-submit="patchItem()" novalidate>\n <!-- START CAPACITY -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.capacity.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_CAPACITY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="mailCapacity" placeholder="{{\'APPLICATION_CAPACITY\' | translate}}" class="form-control" data-ng-model="agent.mailCapacity" min="0" required/>\n <span class="help-block">\n {{\'MESSAGE_ZERO_MEANS_UNLIMITED\' | translate}}\n </span>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CAPACITY -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n <!-- END CHAT TAB -->\n </div>\n </div>\n </div>\n</div>\n</div>\n'),a.put("app/staff/agent/view/view.motionbar.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_MOTION_BAR\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li data-ng-class="{\'active\': Auth.isAdmin()}" data-ng-show="Auth.isAdmin()">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n <li data-ng-show="Auth.isAdmin()">\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{ \'APPLICATION_CALL_FORWARDING\' | translate}}</a>\n </li>\n <li data-ng-show="Auth.isAdmin()">\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{ \'APPLICATION_ADVANCED\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- START GENERAL TAB -->\n <div class="tab-pane" data-ng-class="{\'active\': Auth.isAdmin()}" data-ng-show="Auth.isAdmin()" id="tab_1_1">\n <form name="forms.general" data-ng-submit="updateItem()" novalidate>\n\n <!-- START ENABLE_SETTINGS -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_ENABLE_SETTINGS\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="agent.phoneBarEnableSettings"\n type="checkbox"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END ENABLE_SETTINGS -->\n\n <!-- START AUTO_ANSWER -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_AUTO_ANSWER\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="agent.phoneBarAutoAnswer"\n type="checkbox"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END AUTO_ANSWER -->\n\n <!-- START ENABLE_RECORDING -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_ENABLE_RECORDING\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="agent.phoneBarEnableRecording"\n type="checkbox"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END ENABLE_RECORDING -->\n\n <!-- START SHOW_OMNI_DESKTOP -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_SHOW_OMNI_DESKTOP_BUTTON\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="agent.phoneBarShowOmniDesktop"\n type="checkbox"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END SHOW_OMNI_DESKTOP -->\n\n <!-- START RINGINUSE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_RINGINUSE\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="agent.phoneBarRingInUse"\n type="checkbox"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END RINGINUSE -->\n\n <!-- START DND -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DND\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="agent.phoneBarDnd"\n type="checkbox"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END DND -->\n\n <!-- START DND -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_UNANSWERED_CALL_BADGE\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="agent.phoneBarUnansweredCallBadge"\n type="checkbox"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END DND -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n <!-- START CALL FORWARDING TAB -->\n <div class="tab-pane" data-ng-show="Auth.isAdmin()" id="tab_1_2">\n <form name="forms.callForwarding" data-ng-submit="updateItem()" novalidate>\n\n <!-- START UNCONDITIONAL -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_UNCONDITIONAL\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="agent.phoneBarUnconditional"\n type="checkbox"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END UNCONDITIONAL -->\n\n\n <!-- START UNCONDITIONAL NUMBER -->\n <div class="form-group" data-ng-if="agent.phoneBarUnconditional" data-ng-class="{\'has-error\': (forms.callForwarding.phoneBarUnconditionalNumber.$touched || forms.callForwarding.$submitted) && forms.callForwarding.phoneBarUnconditionalNumber.$invalid}">\n <input type="text" name="phoneBarUnconditionalNumber" placeholder="{{\'APPLICATION_NUMBER\' | translate}}" class="form-control" data-ng-model="agent.phoneBarUnconditionalNumber" required/>\n <span class="help-block">\n <!-- {{ \'DESCRIPTION_VOICE_HOST\' | translate }} -->\n </span>\n <span data-ng-show="(forms.callForwarding.phoneBarUnconditionalNumber.$touched || forms.callForwarding.$submitted) && forms.callForwarding.phoneBarUnconditionalNumber.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END UNCONDITIONAL NUMBER -->\n\n <!-- START NO REPLY -->\n <!-- <div class="form-group">\n <label class="control-label">{{\'APPLICATION_NO_REPLY\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="agent.phoneBarNoReply"\n type="checkbox"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div> -->\n <!-- END NO REPLY -->\n\n <!-- START NO REPLY -->\n <!-- <div class="form-group" data-ng-if="agent.phoneBarNoReply" data-ng-class="{\'has-error\': (forms.callForwarding.phoneBarNoReplyNumber.$touched || forms.callForwarding.$submitted) && forms.callForwarding.phoneBarNoReplyNumber.$invalid}">\n <input type="text" name="phoneBarNoReplyNumber" placeholder="{{\'APPLICATION_NUMBER\' | translate}}" class="form-control" data-ng-model="agent.phoneBarNoReplyNumber" required/>\n <span class="help-block">\n </span>\n <span data-ng-show="(forms.callForwarding.phoneBarNoReplyNumber.$touched || forms.callForwarding.$submitted) && forms.callForwarding.phoneBarNoReplyNumber.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div> -->\n <!-- END REPLY -->\n\n <!-- START BUSY -->\n <!-- <div class="form-group">\n <label class="control-label">{{\'APPLICATION_BUSY\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="agent.phoneBarBusy"\n type="checkbox"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div> -->\n <!-- END BUSY -->\n\n <!-- START BUSY NUMBER -->\n <!-- <div class="form-group" data-ng-if="agent.phoneBarBusy" data-ng-class="{\'has-error\': (forms.callForwarding.phoneBarBusyNumber.$touched || forms.callForwarding.$submitted) && forms.callForwarding.phoneBarBusyNumber.$invalid}">\n <input type="text" name="phoneBarBusyNumber" placeholder="{{\'APPLICATION_NUMBER\' | translate}}" class="form-control" data-ng-model="agent.phoneBarBusyNumber" required/>\n <span class="help-block">\n </span>\n <span data-ng-show="(forms.callForwarding.phoneBarBusyNumber.$touched || forms.callForwarding.$submitted) && forms.callForwarding.phoneBarBusyNumber.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div> -->\n <!-- END BUSY NUMBER -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END CALL FORWARDING TAB -->\n <!-- START ADVANCED TAB -->\n <div class="tab-pane" data-ng-show="Auth.isAdmin()" id="tab_1_3">\n <form name="forms.advanced" data-ng-submit="updateItem()" novalidate>\n\n <!-- START ENABLE REMOTE CONTROL -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_REMOTE_CONTROL\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="agent.phoneBarRemoteControl"\n type="checkbox"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END ENABLE REMOTE CONTROL -->\n\n\n <!-- START REMOTE CONTROL PORT -->\n <div class="form-group" data-ng-if="agent.phoneBarRemoteControl" data-ng-class="{\'has-error\': (forms.advanced.phoneBarRemoteControlPort.$touched || forms.advanced.$submitted) && forms.advanced.phoneBarRemoteControlPort.$invalid}">\n <label class="control-label">{{\'APPLICATION_REMOTE_CONTROL\' | translate}} {{\'APPLICATION_PORT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="phoneBarRemoteControlPort" placeholder="{{\'APPLICATION_REMOTE_CONTROL\' | translate}} {{\'APPLICATION_PORT\' | translate}}" class="form-control" data-ng-model="agent.phoneBarRemoteControlPort" required/>\n <span class="help-block">Default: 9888</span>\n <span data-ng-show="(forms.advanced.phoneBarRemoteControlPort.$touched || forms.advanced.$submitted) && forms.advanced.phoneBarRemoteControlPort.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.advanced.phoneBarRemoteControlPort.$error.max || form.advanced.phoneBarRemoteControlPort.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n </span>\n </div>\n <!-- END REMOTE CONTROL PORT -->\n\n <!-- START SIP EXPIRES -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.phoneBarExpires.$touched || forms.advanced.$submitted) && forms.advanced.phoneBarExpires.$invalid}">\n <label class="control-label">SIP {{\'APPLICATION_EXPIRES\' | translate}} [sec]<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="phoneBarExpires" placeholder="SIP {{\'APPLICATION_EXPIRES\' | translate}}" class="form-control" data-ng-model="agent.phoneBarExpires" required/>\n <span class="help-block">Default: 120</span>\n <span data-ng-show="(forms.advanced.phoneBarExpires.$touched || forms.advanced.$submitted) && forms.advanced.phoneBarExpires.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.advanced.phoneBarExpires.$error.max || form.advanced.phoneBarExpires.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}} (min 1).\n </span>\n </div>\n <!-- END SIP EXPIRES -->\n\n <!-- START SIP PORT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.phoneBarListenPort.$touched || forms.advanced.$submitted) && forms.advanced.phoneBarListenPort.$invalid}">\n <label class="control-label">SIP {{\'APPLICATION_PORT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="0" max="65535" name="phoneBarListenPort" placeholder="SIP {{\'APPLICATION_PORT\' | translate}}" class="form-control" data-ng-model="agent.phoneBarListenPort" required/>\n <span class="help-block">Default: 5060</span>\n <span data-ng-show="(forms.advanced.phoneBarListenPort.$touched || forms.advanced.$submitted) && forms.advanced.phoneBarListenPort.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="form.advanced.phoneBarListenPort.$error.max || form.advanced.phoneBarListenPort.$error.min" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_NUMBER\' | translate}} (0-65535).\n </span>\n </div>\n <!-- END SIP PORT -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/staff/agent/view/view.openchannel.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_OPEN_CHANNEL\' | translate}}</span>\n </div>\n </div>\n\n <div class="portlet-body">\n <!-- START CHAT TAB -->\n <form name="form" data-ng-submit="patchItem()" novalidate>\n <!-- START CAPACITY -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.capacity.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_CAPACITY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="openchannelCapacity" placeholder="{{\'APPLICATION_CAPACITY\' | translate}}" class="form-control" data-ng-model="agent.openchannelCapacity" min="0" required/>\n <span class="help-block">\n {{\'MESSAGE_ZERO_MEANS_UNLIMITED\' | translate}}\n </span>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CAPACITY -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n <!-- END CHAT TAB -->\n </div>\n </div>\n </div>\n</div>\n</div>\n'),a.put("app/staff/agent/view/view.queues.chat.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12" data-ng-init="initChatQueues()">\n <!-- BEGIN FORM-->\n <form action="#" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="params.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="params.penalty=params.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!params.penalty" data-ng-click="params.penalty=params.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-queues-chat">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), -a.put("app/staff/agent/view/view.queues.fax.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12" data-ng-init="initFaxQueues()">\n <!-- BEGIN FORM-->\n <form action="#" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="params.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="params.penalty=params.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!params.penalty" data-ng-click="params.penalty=params.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-queues-fax">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/agent/view/view.queues.html","<!-- BEGIN PAGE CONTENT-->\n<div class=\"row\" data-ng-init=\"initView()\">\n <div class=\"col-md-12\">\n <div>\n <nav class=\"navbar navbar-default\" role=\"navigation\">\n <div class=\"collapse navbar-collapse\">\n <ul class=\"nav navbar-nav\">\n <li data-ng-class=\"{'active': $state.is('main.staff.agents.view.queues.voice')}\">\n <a href=\"/staff/agents/view/{{agent.id}}/queues/voice\">\n <i class=\"icon-earphones-alt\"></i> {{'APPLICATION_VOICE' | translate}}\n </a>\n </li>\n <li data-ng-class=\"{'active': $state.is('main.staff.agents.view.queues.chat'),'disabled-link':!license.chat}\" data-ng-show=\"Auth.isAdmin() || userModules[8]\">\n <a href=\"{{license.chat ? '/staff/agents/view/'+agent.id+'/queues/chat' : 'javascript:;'}}\" class=\"disable-target\">\n <i class=\"icon-bubble\"></i> {{'APPLICATION_CHAT' | translate}}\n </a>\n </li>\n <li data-ng-class=\"{'active': $state.is('main.staff.agents.view.queues.mail'),'disabled-link':!license.mail}\" data-ng-show=\"Auth.isAdmin() || userModules[9]\">\n <a href=\"{{license.mail ? '/staff/agents/view/'+agent.id+'/queues/mail' : 'javascript:;'}}\" class=\"disable-target\">\n <i class=\"icon-envelope\"></i>{{'APPLICATION_MAIL' | translate}}\n </a>\n </li>\n <li data-ng-class=\"{'active': $state.is('main.staff.agents.view.queues.fax'),'disabled-link':!license.fax}\" data-ng-show=\"Auth.isAdmin() || userModules[10]\">\n <a href=\"{{license.fax ? '/staff/agents/view/'+agent.id+'/queues/fax' : 'javascript:;'}}\" class=\"disable-target\">\n <i class=\"fa fa-fax\"></i> {{'APPLICATION_FAX' | translate}}\n </a>\n </li>\n <li data-ng-class=\"{'active': $state.is('main.staff.agents.view.queues.sms'),'disabled-link':!license.messaging}\" data-ng-show=\"Auth.isAdmin() || userModules[11]\">\n <a href=\"{{license.messaging ? '/staff/agents/view/'+agent.id+'/queues/sms' : 'javascript:;'}}\" class=\"disable-target\">\n <i class=\"glyphicon glyphicon-comment\"></i> {{'APPLICATION_SMS' | translate}}\n </a>\n </li>\n <li data-ng-class=\"{'active': $state.is('main.staff.agents.view.queues.openchannel'),'disabled-link':!license.openchannel}\" data-ng-show=\"Auth.isAdmin() || userModules[20]\">\n <a href=\"{{license.openchannel ? '/staff/agents/view/'+agent.id+'/queues/openchannel' : 'javascript:;'}}\" class=\"disable-target\">\n <i class=\"icon-globe\"></i> {{'APPLICATION_OPEN_CHANNEL' | translate}}\n </a>\n </li>\n </ul>\n </div>\n </nav>\n </div>\n <div ui-view></div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n"),a.put("app/staff/agent/view/view.queues.mail.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12" data-ng-init="initMailQueues()">\n <!-- BEGIN FORM-->\n <form action="#" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="params.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="params.penalty=params.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!params.penalty" data-ng-click="params.penalty=params.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-queues-mail">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/agent/view/view.queues.openchannel.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12" data-ng-init="initOpenchannelQueues()">\n <!-- BEGIN FORM-->\n <form action="#" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="params.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="params.penalty=params.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!params.penalty" data-ng-click="params.penalty=params.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-queues-openchannel">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/agent/view/view.queues.sms.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12" data-ng-init="initSmsQueues()">\n <!-- BEGIN FORM-->\n <form action="#" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="params.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="params.penalty=params.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!params.penalty" data-ng-click="params.penalty=params.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-queues-sms">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/agent/view/view.queues.voice.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12" data-ng-init="initVoiceQueues()">\n <!-- BEGIN FORM-->\n <form action="#" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n <div class="input-group input-small mbottom20">\n <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="params.penalty" readonly>\n <div class="spinner-buttons input-group-btn btn-group-vertical">\n <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="params.penalty=params.penalty+1">\n <i class="fa fa-angle-up"></i>\n </button>\n <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!params.penalty" data-ng-click="params.penalty=params.penalty-1">\n <i class="fa fa-angle-down"></i>\n </button>\n </div>\n </div>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-queues-voice">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/agent/view/view.sms.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_SMS\' | translate}}</span>\n </div>\n </div>\n\n <div class="portlet-body">\n <!-- START CHAT TAB -->\n <form name="form" data-ng-submit="patchItem()" novalidate>\n <!-- START CAPACITY -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.capacity.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_CAPACITY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="smsCapacity" placeholder="{{\'APPLICATION_CAPACITY\' | translate}}" class="form-control" data-ng-model="agent.smsCapacity" min="0" required/>\n <span class="help-block">\n {{\'MESSAGE_ZERO_MEANS_UNLIMITED\' | translate}}\n </span>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CAPACITY -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n <!-- END CHAT TAB -->\n </div>\n </div>\n </div>\n</div>\n</div>\n'),a.put("app/staff/agent/view/view.voice.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_VOICE\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="forms.voice" data-ng-submit="updateItem()" novalidate>\n\n <!-- START INTERNAL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.voice.internal.$touched || forms.voice.$submitted) && forms.voice.internal.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERNAL_NUMBER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="internal" placeholder="{{\'APPLICATION_INTERNAL_NUMBER\' | translate}}" class="form-control" data-ng-model="agent.internal" required disabled/>\n <span data-ng-show="(forms.voice.internal.$touched || forms.voice.$submitted) && forms.voice.internal.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERNAL -->\n\n <!-- START TRANSPORT -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TRANSPORT\' | translate}}</label>\n <ui-select multiple name="transport" ng-model="agent.transport" theme="bootstrap">\n <ui-select-match placeholder="Select transport...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="transport in [\'udp\', \'tcp\', \'ws\', \'wss\'] | filter: $select.search">\n {{transport}}\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_TRANSPORT\' | translate }}\n </span>\n </div>\n <!-- END TRANSPORT -->\n\n <!-- START HOST -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.voice.host.$touched || forms.voice.$submitted) && forms.voice.host.$invalid}">\n <label class="control-label">{{\'APPLICATION_HOST\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="host" placeholder="{{\'APPLICATION_HOST\' | translate}}" class="form-control" data-ng-model="agent.host" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_HOST\' | translate }}\n </span>\n <span data-ng-show="(forms.voice.host.$touched || forms.voice.$submitted) && forms.voice.host.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END HOST -->\n\n <!-- START NAT -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_NAT\' | translate}}</label>\n <ui-select multiple data-ng-model="agent.nat" name="nat" theme="bootstrap">\n <ui-select-match placeholder="{{ \'APPLICATION_SEARCH_FILTER\' | translate }}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="nat in [\'yes\', \'no\', \'never\', \'route\', \'force_rport\', \'comedia\'] | filter: $select.search">\n {{nat}}\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_NAT\' | translate }}\n </span>\n </div>\n <!-- END NAT -->\n\n <!-- START TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.voice.type.$touched || forms.voice.$submitted) && forms.voice.type.$invalid}">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="agent.type" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_SEARCH_FILTER\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="type in [\'friend\', \'user\', \'peer\'] | filter: $select.search">\n <div ng-bind-html="type | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_TYPE\' | translate }}\n </span>\n <span data-ng-show="(forms.voice.type.$touched || forms.voice.$submitted) && forms.voice.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TYPE -->\n\n <!-- START CODEC -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALLOWED_CODECS\' | translate}}</label>\n <ui-select multiple ng-model="agent.allow" name="allow" theme="bootstrap" ng-disabled="disabled">\n <ui-select-match placeholder="Select codec...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="allow in [\'g722\', \'g729\', \'ilbc\', \'gsm\', \'ulaw\', \'alaw\', \'opus\'] | filter: $select.search">\n {{allow}}\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CODEC\' | translate }}\n </span>\n </div>\n <!-- END CODEC -->\n\n <!-- START CHANSPY -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_CHANSPY\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="agent.chanspy"\n type="checkbox"\n name="auth"\n switch-active="{{ recordSwitch.isActive }}"\n switch-on-text="{{ recordSwitch.onText }}"\n switch-off-text="{{ recordSwitch.offText }}"\n switch-on-color="{{ recordSwitch.onColor }}"\n switch-off-color="{{ recordSwitch.offColor }}"\n switch-animate="{{ recordSwitch.animate }}"\n switch-size="{{ recordSwitch.size }}"\n switch-label="{{ recordSwitch.label }}"\n switch-icon="{{ recordSwitch.icon }}"\n switch-radio-off="{{ recordSwitch.radioOff }}"\n switch-label-width="{{ recordSwitch.labelWidth }}"\n switch-handle-width="{{ recordSwitch.handleWidth }}">\n </div>\n <!-- END CHANSPY -->\n\n <!-- START CALLGROUP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.voice.callgroup.$touched || forms.voice.$submitted) && forms.voice.callgroup.$invalid}">\n <label class="control-label">{{\'APPLICATION_CALLGROUP\' | translate}}</label>\n <input type="text" name="callgroup" placeholder="{{\'APPLICATION_CALLGROUP\' | translate}}" class="form-control" data-ng-model="agent.callgroup"/>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CALLGROUP\' | translate }}\n </span>\n <span data-ng-show="(forms.voice.callgroup.$touched || forms.voice.$submitted) && forms.voice.callgroup.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CALLGROUP -->\n\n <!-- START PICKUPGROUP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.voice.pickupgroup.$touched || forms.voice.$submitted) && forms.voice.pickupgroup.$invalid}">\n <label class="control-label">{{\'APPLICATION_PICKUPGROUP\' | translate}}</label>\n <input type="text" name="pickupgroup" placeholder="{{\'APPLICATION_PICKUPGROUP\' | translate}}" class="form-control" data-ng-model="agent.pickupgroup"/>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_PICKUPGROUP\' | translate }}\n </span>\n <span data-ng-show="(forms.voice.pickupgroup.$touched || forms.voice.$submitted) && forms.voice.pickupgroup.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PICKUPGROUP -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/staff/agent/wizard/wizard-bulk.html",'<div class="col-md-12">\n <!-- BEGIN PAGE HEADER-->\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-people"></i>\n <a href="/agents/list">{{ \'APPLICATION_AGENTS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-options"></i>\n <a href="/agents/wizard">{{ \'APPLICATION_WIZARD\' | translate }}</a>\n </li>\n </ul>\n </div>\n <!-- END PAGE HEADER-->\n\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered" data-ng-init="getFirstFreeInternal(); item.amount = 2; item.startIndex = 0;">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-user font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_AGENT\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItems()">\n <wz-step title="{{\'APPLICATION_ACCOUNT\' | translate}}" canexit="exitValidation(forms.info.$valid)">\n <form name="forms.info" novalidate>\n\n <!-- START AMOUNT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.amount.$touched || forms.info.$submitted) && forms.info.amount.$invalid}">\n <label class="control-label">{{\'APPLICATION_AMOUNT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="amount" min="2" max="{{maxAmount}}" placeholder="{{\'APPLICATION_AMOUNT\' | translate}}" class="form-control" data-ng-model="item.amount" required>\n <span data-ng-show="(forms.info.amount.$touched || forms.info.$submitted) && forms.info.amount.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span class="help-block help-block-info">\n {{\'MESSAGE_STARTING_FROM_INTERNAL\' | translate}} <b>{{item.minInternal}}</b> {{\'MESSAGE_MAX_NUM_OF_BULK_AGENTS_IS\' | translate}} <b>{{maxAmount}}</b>\n </span>\n </div>\n <!-- END AMOUNT -->\n\n <!-- START START INDEX -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.startIndex.$touched || forms.info.$submitted) && forms.info.startIndex.$invalid}">\n <label class="control-label">{{\'APPLICATION_START_INDEX\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="startIndex" min="0" placeholder="{{\'APPLICATION_START_INDEX\' | translate}}" class="form-control" data-ng-model="item.startIndex" required>\n <span data-ng-show="(forms.info.startIndex.$touched || forms.info.$submitted) && forms.info.startIndex.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END START INDEX -->\n\n <!-- START MIN INTERNAL-->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.internal.$touched || forms.info.$submitted) && forms.info.minInternal.$invalid}">\n <label class="control-label">{{\'APPLICATION_MIN_INTERNAL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" name="minInternal" min="0" placeholder="{{\'APPLICATION_MIN_INTERNAL\' | translate}}" class="form-control" data-ng-change="getAmount()" data-ng-model="item.minInternal" required>\n <span data-ng-show="(forms.info.minInternal.$touched || forms.info.$submitted) && forms.info.minInternal.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MIN INTERNAL-->\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.fullname.$touched || forms.info.$submitted) && forms.info.fullname.$invalid}">\n <label class="control-label">{{\'APPLICATION_FULLNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="fullname" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.fullname" required/>\n <span data-ng-show="(forms.info.fullname.$touched || forms.info.$submitted) && forms.info.fullname.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="item.name" data-ng-pattern="settings.patternName" required>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START EMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="email" name="email" placeholder="{{\'APPLICATION_EMAIL\' | translate}}" class="form-control" data-ng-model="item.email" required>\n <span data-ng-show="(forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$error.email" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.password" data-ng-pattern="setting.securePassword ? settings.patternPassword : settings.patternPasswordLight" required/>\n <span class="help-block">\n {{setting.securePassword ? \'MESSAGE_PASSWORD_FORMAT\' : \'MESSAGE_PASSWORD_LIGHT_FORMAT\' | translate}}\n </span>\n <span data-ng-show="(forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START RE PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.rpassword.$touched || forms.info.$submitted) && forms.info.rpassword.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONFIRM_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="rpassword" placeholder="{{\'APPLICATION_CONFIRM_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.rpassword" nx-equal="item.password" required/>\n <span data-ng-show="(forms.info.rpassword.$touched || forms.info.$submitted) && forms.info.rpassword.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.rpassword.$touched || forms.info.$submitted) && forms.info.rpassword.$error.nxEqual" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_PASSWORD\' | translate}}.\n </span>\n </div>\n <!-- END RE PASSWORD -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_VOICE\' | translate}}" canexit="exitValidation(forms.voice.$valid)">\n <form name="forms.voice" novalidate>\n\n <!-- START TRANSPORT -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TRANSPORT\' | translate}}</label>\n <ui-select multiple name="transport" ng-model="item.transport" theme="bootstrap" ng-disabled="disabled">\n <ui-select-match placeholder="Select transport...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="transport in [\'udp\', \'tcp\', \'ws\', \'wss\'] | filter: $select.search">\n {{transport}}\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_TRANSPORT\' | translate }}\n </span>\n </div>\n <!-- END TRANSPORT -->\n\n <!-- START CODEC -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALLOWED_CODECS\' | translate}}</label>\n <ui-select multiple ng-model="item.allow" name="allow" theme="bootstrap" ng-disabled="disabled">\n <ui-select-match placeholder="Select codec...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="allow in [\'g722\', \'g729\', \'ilbc\', \'gsm\', \'ulaw\', \'alaw\', \'opus\'] | filter: $select.search">\n {{allow}}\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CODEC\' | translate }}\n </span>\n </div>\n <!-- END CODEC -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END PORTLET-->\n</div>\n'),a.put("app/staff/agent/wizard/wizard.html",'<div class="col-md-12">\n <!-- BEGIN PAGE HEADER-->\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-puzzle"></i>\n <a href="#">{{ \'APPLICATION_STAFF\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-people"></i>\n <a href="/staff/agents/list">{{ \'APPLICATION_AGENTS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-options"></i>\n <a href="/agents/wizard">{{ \'APPLICATION_WIZARD\' | translate }}</a>\n </li>\n </ul>\n </div>\n <!-- END PAGE HEADER-->\n\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered" data-ng-init="getFirstFreeInternal();">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-user font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_AGENT\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_ACCOUNT\' | translate}}" canexit="exitValidation(forms.info.$valid)">\n <form name="forms.info" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.fullname.$touched || forms.info.$submitted) && forms.info.fullname.$invalid}">\n <label class="control-label">{{\'APPLICATION_FULLNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="fullname" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.fullname" required/>\n <span data-ng-show="(forms.info.fullname.$touched || forms.info.$submitted) && forms.info.fullname.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="item.name" data-ng-pattern="settings.patternName" required>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START EMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="email" name="email" placeholder="{{\'APPLICATION_EMAIL\' | translate}}" class="form-control" data-ng-model="item.email" required>\n <span data-ng-show="(forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$error.email" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.phone.$touched || forms.info.$submitted) && forms.info.phone.$invalid}">\n <label class="control-label">{{\'APPLICATION_PHONE\' | translate}}</label>\n <input type="text" name="phone" placeholder="{{\'APPLICATION_PHONE\' | translate}}" class="form-control" data-ng-model="item.phone"/>\n </div>\n <!-- END NAME -->\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.mobile.$touched || forms.info.$submitted) && forms.info.mobile.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOBILE\' | translate}}</label>\n <input type="text" name="mobile" placeholder="{{\'APPLICATION_MOBILE\' | translate}}" class="form-control" data-ng-model="item.mobile"/>\n </div>\n <!-- END NAME -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.password" data-ng-pattern="setting.securePassword ? settings.patternPassword : settings.patternPasswordLight" required/>\n <span class="help-block">\n {{setting.securePassword ? \'MESSAGE_PASSWORD_FORMAT\' : \'MESSAGE_PASSWORD_LIGHT_FORMAT\' | translate}}\n </span>\n <span data-ng-show="(forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START RE PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.rpassword.$touched || forms.info.$submitted) && forms.info.rpassword.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONFIRM_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="rpassword" placeholder="{{\'APPLICATION_CONFIRM_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.rpassword" nx-equal="item.password" required/>\n <span data-ng-show="(forms.info.rpassword.$touched || forms.info.$submitted) && forms.info.rpassword.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.rpassword.$touched || forms.info.$submitted) && forms.info.rpassword.$error.nxEqual" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_PASSWORD\' | translate}}.\n </span>\n </div>\n <!-- END RE PASSWORD -->\n\n <!-- START INTERNAL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.internal.$touched || forms.info.$submitted) && forms.info.internal.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERNAL_NUMBER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <div class="input-group">\n <input type="number" min="1" name="internal" placeholder="{{\'APPLICATION_INTERNAL_NUMBER\' | translate}}" class="form-control" data-ng-model="item.internal" data-ng-disabled="!item.internalEnabled" data-ng-required="item.internalEnabled"/>\n <span class="input-group-addon">\n <input type="checkbox" data-ng-model="item.internalEnabled">\n </span>\n </div>\n <span data-ng-show="(forms.info.internal.$touched || forms.info.$submitted) && forms.info.internal.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERNAL -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_VOICE\' | translate}}" canexit="exitValidation(forms.voice.$valid)">\n <form name="forms.voice" novalidate>\n\n <!-- START TRANSPORT -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TRANSPORT\' | translate}}</label>\n <ui-select multiple name="transport" ng-model="item.transport" theme="bootstrap" ng-disabled="disabled">\n <ui-select-match placeholder="Select transport...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="transport in [\'udp\', \'tcp\', \'ws\', \'wss\'] | filter: $select.search">\n {{transport}}\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_TRANSPORT\' | translate }}\n </span>\n </div>\n <!-- END TRANSPORT -->\n\n <!-- START CODEC -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALLOWED_CODECS\' | translate}}</label>\n <ui-select multiple ng-model="item.allow" name="allow" theme="bootstrap" ng-disabled="disabled">\n <ui-select-match placeholder="Select codec...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="allow in [\'g722\', \'g729\', \'ilbc\', \'gsm\', \'ulaw\', \'alaw\', \'opus\'] | filter: $select.search">\n {{allow}}\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CODEC\' | translate }}\n </span>\n </div>\n <!-- END CODEC -->\n\n <!-- <div class="form-body" data-ng-init="initVoiceQueues()">\n <label class="control-label">{{ \'APPLICATION_QUEUES\' | translate}}</label>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-queues-voice">\n </div>\n </div>\n </div> -->\n\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n </form>\n </wz-step>\n\n <!-- <wz-step title="{{\'APPLICATION_CHAT\' | translate}}">\n <form name="forms.chat">\n <div class="form-body" data-ng-init="initChatQueues()">\n <label class="control-label">{{ \'APPLICATION_QUEUES\' | translate}}</label>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-queues-chat">\n </div>\n </div>\n </div>\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n </form>\n </wz-step> -->\n\n <!-- <wz-step title="{{\'APPLICATION_MAIL\' | translate}}">\n <form name="forms.mail">\n <div class="form-body" data-ng-init="initMailQueues()">\n <label class="control-label">{{ \'APPLICATION_QUEUES\' | translate}}</label>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-queues-mail">\n </div>\n </div>\n </div>\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n </form>\n </wz-step> -->\n\n\n <!-- <wz-step title="{{\'APPLICATION_SMS\' | translate}}">\n <form name="forms.sms">\n <div class="form-body" data-ng-init="initSmsQueues()">\n <label class="control-label">{{ \'APPLICATION_QUEUES\' | translate}}</label>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-queues-sms">\n </div>\n </div>\n </div>\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n </form>\n </wz-step> -->\n\n <!-- <wz-step title="{{\'APPLICATION_FAX\' | translate}}">\n <form name="forms.fax">\n <div class="form-body" data-ng-init="initFaxQueues()">\n <label class="control-label">{{ \'APPLICATION_QUEUES\' | translate}}</label>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-queues-fax">\n </div>\n </div>\n </div>\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n </form>\n </wz-step> -->\n\n <!-- <wz-step title="{{\'APPLICATION_OPEN_CHANNEL\' | translate}}">\n <form name="forms.openchannel">\n <div class="form-body" data-ng-init="initOpenchannelQueues()">\n <label class="control-label">{{ \'APPLICATION_QUEUES\' | translate}}</label>\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-queues-openchannel">\n </div>\n </div>\n </div>\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n </form>\n </wz-step> -->\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END PORTLET-->\n</div>\n'), -a.put("app/staff/team/list/create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_TEAM\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/staff/team/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-puzzle"></i>\n <a href="#">{{ \'APPLICATION_STAFF\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-shield"></i>\n <a href="/staff/teams/list">{{ \'APPLICATION_TEAMS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-shield font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_TEAMS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <a class="btn green-jungle" href="#" data-ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_TEAM\' | translate }}\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/team/view/view.agents.html",'<div class="row" data-ng-init="initAgents()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_AGENTS\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <!-- GENERAL TAB -->\n <!-- BEGIN PORTLET-->\n <!-- BEGIN FORM-->\n <form action="index.html" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-team">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n <!-- END PORTLET-->\n <!-- END GENERAL TAB -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/staff/team/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-puzzle"></i>\n <a href="#">{{ \'APPLICATION_STAFF\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-shield"></i>\n <a href="/staff/teams/list">{{ \'APPLICATION_TEAMS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <a href="#">{{team.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img ng-src="assets/images/media/team.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{team.name}}\n </div>\n\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.staff.teams.view.settings\')}">\n <a data-ng-href="/staff/teams/view/{{team.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.staff.teams.view.agents\')}">\n <a data-ng-href="/staff/teams/view/{{team.id}}/agents">\n <i class="icon-people"></i>\n {{ \'APPLICATION_AGENTS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content"></div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/team/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_ACCOUNT\' | translate}}</span>\n </div>\n </div>\n\n <div class="portlet-body">\n <!-- PERSONAL INFO TAB -->\n <div>\n\n <form name="forms.info" data-ng-submit="updateItem()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="team.name" required/>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="team.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END PERSONAL INFO TAB -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/staff/telephone/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-puzzle"></i>\n <a href="#">{{ \'APPLICATION_STAFF\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-phone"></i>\n <a href="/staff/telephones/list">{{ \'APPLICATION_TELEPHONES\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-phone font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_TELEPHONES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <a class="btn green-jungle" href="/staff/telephones/wizard" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_TELEPHONE\' | translate }}\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/telephone/view/view.account.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_ACCOUNT\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_ACCOUNT\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-ng-show="Auth.isAdmin() || item.id === getCurrentTelephone().id" data-target="#tab_1_2" data-toggle="tab">{{ \'APPLICATION_CHANGE_PASSWORD\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- PERSONAL INFO TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.info" data-ng-submit="forms.info.$valid && updateItem()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.fullname.$touched || forms.info.$submitted) && forms.info.fullname.$invalid}">\n <label class="control-label">{{\'APPLICATION_FULLNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="fullname" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.fullname" required/>\n <span data-ng-show="(forms.info.fullname.$touched || forms.info.$submitted) && forms.info.fullname.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}</label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="item.name" disabled/>\n </div>\n <!-- END USERNAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END PERSONAL INFO TAB -->\n\n <!-- CHANGE PASSWORD TAB -->\n <div class="tab-pane" id="tab_1_2" data-ng-show="Auth.isAdmin() || item.id === getCurrentTelephone().id">\n <form name="forms.changePwd" data-ng-submit="forms.changePwd.$valid && updatePassword()" novalidate>\n <!-- START CURRENT PWD -->\n <!-- <div class="form-group" data-ng-if="!Auth.isAdmin()" data-ng-class="{\'has-error\': (forms.changePwd.current_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.current_pwd.$invalid}">\n <label class="control-label">{{\'APPLICATION_CURRENT_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="current_pwd" placeholder="{{\'APPLICATION_CURRENT_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.currentPwd" required/>\n <span data-ng-show="(forms.changePwd.current_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.current_pwd.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div> -->\n <!-- END CURRENT PWD -->\n <!-- START NEW PWD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.changePwd.new_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.new_pwd.$invalid}">\n <label class="control-label">{{\'APPLICATION_NEW_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="new_pwd" placeholder="{{\'APPLICATION_NEW_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.newPwd" data-ng-pattern="setting.securePassword ? settings.patternPassword : settings.patternPasswordLight" required/>\n <span class="help-block">\n {{setting.securePassword ? \'MESSAGE_PASSWORD_FORMAT\' : \'MESSAGE_PASSWORD_LIGHT_FORMAT\' | translate}}\n </span>\n <span data-ng-show="(forms.changePwd.new_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.new_pwd.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NEW PWD -->\n <!-- START RE-NEW PWD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.changePwd.re_new_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.re_new_pwd.$invalid}">\n <label class="control-label">{{\'APPLICATION_RE_TYPE_NEW_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="re_new_pwd" placeholder="{{\'APPLICATION_RE_TYPE_NEW_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.reNewPwd" nx-equal="item.newPwd" required/>\n <span data-ng-show="(forms.changePwd.new_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.new_pwd.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END RE-NEW PWD -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END CHANGE PASSWORD TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/staff/telephone/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-puzzle"></i>\n <a href="#">{{ \'APPLICATION_STAFF\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-phone"></i>\n <a href="/staff/telephones/list">{{ \'APPLICATION_TELEPHONES\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <a href="#">{{item.fullname}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR TELEPHONEPIC -->\n <div class="profile-userpic">\n <img data-ng-src="assets/images/media/telephone.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR TELEPHONEPIC -->\n <!-- SIDEBAR TELEPHONE TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{item.fullname}}\n </div>\n <div class="profile-usertitle-job">\n {{item.role}}\n </div>\n </div>\n <!-- END SIDEBAR TELEPHONE TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.staff.telephones.view.account\')}">\n <a data-ng-href="/staff/telephones/view/{{item.id}}/account">\n <i class="icon-phone"></i>\n {{ \'APPLICATION_ACCOUNT\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.staff.telephones.view.voice\')}" data-ng-show="Auth.isAdmin()">\n <a data-ng-href="/staff/telephones/view/{{item.id}}/voice">\n <i class="icon-earphones-alt"></i>\n {{ \'APPLICATION_VOICE\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/telephone/view/view.voice.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_ACCOUNT\' | translate}} {{ \'APPLICATION_VOICE\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="forms.info" data-ng-submit="updateItem()" novalidate>\n\n <!-- START INTERNAL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.internal.$touched || forms.info.$submitted) && forms.info.internal.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERNAL_NUMBER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="internal" placeholder="{{\'APPLICATION_INTERNAL_NUMBER\' | translate}}" class="form-control" data-ng-model="item.internal" required readonly/>\n <span data-ng-show="(forms.info.internal.$touched || forms.info.$submitted) && forms.info.internal.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.internal.$touched || forms.info.$submitted) && forms.info.internal.$error.ngRemoteValidate" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_EXIST_INTERNAL\' | translate}}.\n </span>\n </div>\n <!-- END INTERNAL -->\n\n <!-- START TRANSPORT -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TRANSPORT\' | translate}}</label>\n <ui-select multiple name="transport" ng-model="item.transport" theme="bootstrap" ng-disabled="disabled">\n <ui-select-match placeholder="Select transport...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="transport in [\'udp\', \'tcp\', \'ws\', \'wss\'] | filter: $select.search">\n {{transport}}\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_TRANSPORT\' | translate }}\n </span>\n </div>\n <!-- END TRANSPORT -->\n\n <!-- START CODEC -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALLOWED_CODECS\' | translate}}</label>\n <ui-select multiple ng-model="item.allow" name="allow" theme="bootstrap" ng-disabled="disabled">\n <ui-select-match placeholder="Select codec...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="allow in [\'g722\', \'g729\', \'ilbc\', \'gsm\', \'ulaw\', \'alaw\', \'opus\'] | filter: $select.search">\n {{allow}}\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CODEC\' | translate }}\n </span>\n </div>\n <!-- END CODEC -->\n\n <!-- START CALLGROUP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.voice.callgroup.$touched || forms.voice.$submitted) && forms.voice.callgroup.$invalid}">\n <label class="control-label">{{\'APPLICATION_CALLGROUP\' | translate}}</label>\n <input type="text" name="callgroup" placeholder="{{\'APPLICATION_CALLGROUP\' | translate}}" class="form-control" data-ng-model="item.callgroup"/>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CALLGROUP\' | translate }}\n </span>\n <span data-ng-show="(forms.voice.callgroup.$touched || forms.voice.$submitted) && forms.voice.callgroup.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CALLGROUP -->\n\n <!-- START PICKUPGROUP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.voice.pickupgroup.$touched || forms.voice.$submitted) && forms.voice.pickupgroup.$invalid}">\n <label class="control-label">{{\'APPLICATION_PICKUPGROUP\' | translate}}</label>\n <input type="text" name="pickupgroup" placeholder="{{\'APPLICATION_PICKUPGROUP\' | translate}}" class="form-control" data-ng-model="item.pickupgroup"/>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_PICKUPGROUP\' | translate }}\n </span>\n <span data-ng-show="(forms.voice.pickupgroup.$touched || forms.voice.$submitted) && forms.voice.pickupgroup.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PICKUPGROUP -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/staff/telephone/wizard/wizard.html",'<div class="col-md-12">\n <!-- BEGIN PAGE HEADER-->\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-puzzle"></i>\n <a href="#">{{ \'APPLICATION_STAFF\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-phone"></i>\n <a href="/staff/telephones/list">{{ \'APPLICATION_TELEPHONES\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-options"></i>\n <a href="/staff/telephones/wizard">{{ \'APPLICATION_WIZARD\' | translate }}</a>\n </li>\n </ul>\n </div>\n <!-- END PAGE HEADER-->\n\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered" data-ng-init="getFirstFreeInternal();">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-phone font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_TELEPHONE\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_ACCOUNT\' | translate}}" canexit="exitValidation(forms.info.$valid)">\n <form name="forms.info" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.fullname.$touched || forms.info.$submitted) && forms.info.fullname.$invalid}">\n <label class="control-label">{{\'APPLICATION_FULLNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="fullname" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.fullname" required/>\n <span data-ng-show="(forms.info.fullname.$touched || forms.info.$submitted) && forms.info.fullname.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="item.name" ata-ng-pattern="settings.patternName" required />\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$error.ngRemoteValidate" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_EXIST_USERNAME\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.password" data-ng-pattern="setting.securePassword ? settings.patternPassword : settings.patternPasswordLight" required/>\n <span class="help-block">\n {{setting.securePassword ? \'MESSAGE_PASSWORD_FORMAT\' : \'MESSAGE_PASSWORD_LIGHT_FORMAT\' | translate}}\n </span>\n <span data-ng-show="(forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START RE PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.rpassword.$touched || forms.info.$submitted) && forms.info.rpassword.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONFIRM_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="rpassword" placeholder="{{\'APPLICATION_CONFIRM_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.rpassword" nx-equal="item.password" required/>\n <span data-ng-show="(forms.info.rpassword.$touched || forms.info.$submitted) && forms.info.rpassword.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.rpassword.$touched || forms.info.$submitted) && forms.info.rpassword.$error.nxEqual" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_PASSWORD\' | translate}}.\n </span>\n </div>\n <!-- END RE PASSWORD -->\n\n <!-- START INTERNAL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.internal.$touched || forms.info.$submitted) && forms.info.internal.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERNAL_NUMBER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <div class="input-group">\n <input type="number" min="1" name="internal" placeholder="{{\'APPLICATION_INTERNAL_NUMBER\' | translate}}" class="form-control" data-ng-model="item.internal" data-ng-disabled="!item.internalEnabled" data-ng-required="item.internalEnabled"/>\n <span class="input-group-addon">\n <input type="checkbox" data-ng-model="item.internalEnabled">\n </span>\n </div>\n <span data-ng-show="(forms.info.internal.$touched || forms.info.$submitted) && forms.info.internal.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERNAL -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_VOICE\' | translate}}" canexit="exitValidation(forms.voice.$valid)">\n <form name="forms.voice" novalidate>\n\n <!-- START TRANSPORT -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TRANSPORT\' | translate}}</label>\n <ui-select multiple name="transport" ng-model="item.transport" theme="bootstrap" ng-disabled="disabled">\n <ui-select-match placeholder="Select transport...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="transport in [\'udp\', \'tcp\', \'ws\', \'wss\'] | filter: $select.search">\n {{transport}}\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_TRANSPORT\' | translate }}\n </span>\n </div>\n <!-- END TRANSPORT -->\n\n <!-- START CODEC -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALLOWED_CODECS\' | translate}}</label>\n <ui-select multiple ng-model="item.allow" name="allow" theme="bootstrap" ng-disabled="disabled">\n <ui-select-match placeholder="Select codec...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="allow in [\'g722\', \'g729\', \'ilbc\', \'gsm\', \'ulaw\', \'alaw\', \'opus\'] | filter: $select.search">\n {{allow}}\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CODEC\' | translate }}\n </span>\n </div>\n <!-- END CODEC -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END PORTLET-->\n</div>\n'), -a.put("app/staff/user/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-puzzle"></i>\n <a href="#">{{ \'APPLICATION_STAFF\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-eye"></i>\n <a href="#">{{ \'APPLICATION_USERS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-eye font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_USERS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <a class="btn green-jungle" href="/staff/users/wizard" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_USER\' | translate }}\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/user/view/view.account.html",'<div class="row" data-ng-init="checkUser()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_ACCOUNT\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_PERSONAL_INFO\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{ \'APPLICATION_CHANGE_AVATAR\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-ng-show="Auth.isAdmin() || user.id === getCurrentUser().id" data-target="#tab_1_3" data-toggle="tab">{{ \'APPLICATION_CHANGE_PASSWORD\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- PERSONAL INFO TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.info" data-ng-submit="updateItem()" novalidate>\n\n <!-- START ROLE -->\n <div class="form-group" data-ng-if="Auth.getCurrentUser().role === \'admin\' && Auth.getCurrentUser().id !== user.id">\n <label class="control-label">{{ \'APPLICATION_ROLE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select name="role" data-ng-model="user.role" theme="bootstrap" required>\n <ui-select-match placeholder="Select role...">{{$select.selected | uppercase}}</ui-select-match>\n <ui-select-choices repeat="role in [\'user\', \'admin\'] | filter: $select.search">\n {{role | uppercase}}\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END ROLE -->\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.fullname.$touched || forms.info.$submitted) && forms.info.fullname.$invalid}">\n <label class="control-label">{{\'APPLICATION_FULLNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="fullname" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="user.fullname" required/>\n <span data-ng-show="(forms.info.fullname.$touched || forms.info.$submitted) && forms.info.fullname.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}</label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="user.name" disabled/>\n </div>\n <!-- END USERNAME -->\n\n <!-- START EMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="email" name="email" placeholder="{{\'APPLICATION_EMAIL\' | translate}}" class="form-control" data-ng-model="user.email" required/>\n <span data-ng-show="(forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$error.email" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="user.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END PERSONAL INFO TAB -->\n\n <!-- CHANGE AVATAR TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form action="#" role="form">\n <div class="form-group">\n <div class="fileinput fileinput-new" data-provides="fileinput">\n <div class="fileinput-new thumbnail" style="width: 200px; height: 150px;">\n <img ng-src="assets/images/media/noProfileImage.png" alt=""/>\n </div>\n <div class="fileinput-preview fileinput-exists thumbnail" style="max-width: 200px; max-height: 150px;">\n </div>\n <div>\n <span class="btn default btn-file" data-ng-show="!uploader.queue[0]">\n <span> {{ \'APPLICATION_SELECT_IMAGE\' | translate }} </span>\n <input type="file" nv-file-select="" uploader="uploader" /><br/>\n </span>\n <button type="button" class="btn default" data-ng-show="uploader.queue[0]" data-dismiss="fileinput" ng-click="uploader.queue[0].remove()">\n <span> {{ \'APPLICATION_REMOVE\' | translate }} </span>\n </button>\n <button type="button" class="btn green-haze" data-ng-show="uploader.queue[0]" data-ng-click="uploader.queue[0].upload()" ng-disabled="uploader.queue[0].isReady || uploader.queue[0].isUploading || uploader.queue[0].isSuccess">\n <span> {{ \'APPLICATION_CONFIRM\' | translate }} </span>\n </button>\n </div>\n <p>\n </br> {{ \'MESSAGE_SUPPORTED_FORMATS\' | translate }} <b>jpg, png, jpeg</b>.\n </p>\n </div>\n </div>\n </form>\n <div class="row">\n <div class="col-md-2">\n <table class="table" border="0">\n <tbody>\n <tr data-ng-repeat="item in uploader.queue">\n <td style="border-top-style:none">\n <strong>\n {{ item.file.name }}\n </strong>\n </td>\n <td data-ng-show="uploader.isHTML5" nowrap style="border-top-style:none">\n {{ item.file.size/1024/1024|number:2 }} MB\n </td>\n <td nowrap style="border-top-style:none">\n <button type="button" class="btn btn-danger btn-xs" data-ng-click="item.remove()">\n <span class="glyphicon glyphicon-trash"></span> Remove\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n <!-- END CHANGE AVATAR TAB -->\n <!-- CHANGE PASSWORD TAB -->\n <div class="tab-pane" id="tab_1_3" data-ng-show="Auth.isAdmin() || user.id === getCurrentUser().id">\n <form name="forms.changePwd" data-ng-submit="forms.changePwd.$valid && updatePassword()" novalidate>\n <!-- START CURRENT PWD -->\n <div class="form-group" data-ng-if="!Auth.isAdmin()" data-ng-class="{\'has-error\': (forms.changePwd.current_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.current_pwd.$invalid}">\n <label class="control-label">{{\'APPLICATION_CURRENT_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="current_pwd" placeholder="{{\'APPLICATION_CURRENT_PASSWORD\' | translate}}" class="form-control" data-ng-model="user.currentPwd" required/>\n <span data-ng-show="(forms.changePwd.current_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.current_pwd.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CURRENT PWD -->\n <!-- START NEW PWD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.changePwd.new_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.new_pwd.$invalid}">\n <label class="control-label">{{\'APPLICATION_NEW_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="new_pwd" placeholder="{{\'APPLICATION_NEW_PASSWORD\' | translate}}" class="form-control" data-ng-model="user.newPwd" data-ng-pattern="setting.securePassword ? settings.patternPassword : settings.patternPasswordLight" required/>\n <span class="help-block">\n {{setting.securePassword ? \'MESSAGE_PASSWORD_FORMAT\' : \'MESSAGE_PASSWORD_LIGHT_FORMAT\' | translate}}\n </span>\n <span data-ng-show="(forms.changePwd.current_pwd.$touched || forms.info.$submitted) && forms.changePwd.current_pwd.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n <span data-ng-show="(forms.changePwd.new_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.new_pwd.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NEW PWD -->\n <!-- START RE-NEW PWD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.changePwd.re_new_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.re_new_pwd.$invalid}">\n <label class="control-label">{{\'APPLICATION_RE_TYPE_NEW_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="re_new_pwd" placeholder="{{\'APPLICATION_RE_TYPE_NEW_PASSWORD\' | translate}}" class="form-control" data-ng-model="user.reNewPwd" nx-equal="user.newPwd" required/>\n <span data-ng-show="(forms.changePwd.new_pwd.$touched || forms.changePwd.$submitted) && forms.changePwd.new_pwd.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END RE-NEW PWD -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END CHANGE PASSWORD TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/staff/user/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-puzzle"></i>\n <a href="#">{{ \'APPLICATION_STAFF\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-eye"></i>\n <a href="/staff/users/list">{{ \'APPLICATION_USERS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <a href="#">{{user.fullname}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-userpic">\n <img ng-src="api/users/avatar/{{user.userpic ? user.userpic : \'unknown_avatar\'}}" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{user.fullname}}\n </div>\n <div class="profile-usertitle-job">\n {{user.role}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.staff.users.view.account\')}">\n <a data-ng-href="/staff/users/view/{{user.id}}/account">\n <i class="icon-user"></i>\n {{ \'APPLICATION_ACCOUNT\' | translate}}\n </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.staff.users.view.voice\')}" data-ng-show="Auth.isAdmin()">\n <a data-ng-href="/staff/users/view/{{user.id}}/voice">\n <i class="icon-earphones-alt"></i>\n {{ \'APPLICATION_VOICE\' | translate}}\n </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.staff.users.view.permit\')}" data-ng-show="Auth.isAdmin() && user.role != \'admin\'">\n <a data-ng-href="/staff/users/view/{{user.id}}/permit/voice">\n <i class="icon-key"></i>\n {{ \'APPLICATION_PERMITS\' | translate}}\n </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/user/view/view.permit.chat.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12" data-ng-init="initChatQueues()">\n <!-- BEGIN FORM-->\n <form action="#" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-permit">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/user/view/view.permit.fax.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12" data-ng-init="initFaxQueues()">\n <!-- BEGIN FORM-->\n <form action="#" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-permit">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/user/view/view.permit.html","<!-- BEGIN PAGE CONTENT-->\n<div class=\"row\">\n <div class=\"col-md-12\">\n <div>\n <nav class=\"navbar navbar-default\" role=\"navigation\">\n <div class=\"collapse navbar-collapse\">\n <ul class=\"nav navbar-nav\">\n <li data-ng-class=\"{'active': $state.is('main.staff.users.view.permit.voice')}\">\n <a href=\"/staff/users/view/{{user.id}}/permit/voice\">\n <i class=\"icon-earphones-alt\"></i> {{'APPLICATION_VOICE' | translate}}\n </a>\n </li>\n <li data-ng-class=\"{'active': $state.is('main.staff.users.view.permit.chat'),'disabled-link':!license.chat}\" data-ng-show=\"Auth.isAdmin() || userModules[8]\">\n <a href=\"{{license.chat ? '/staff/users/view/'+user.id+'/permit/chat' : 'javascript:;'}}\" class=\"disable-target\">\n <i class=\"icon-bubble\"></i> {{'APPLICATION_CHAT' | translate}}\n </a>\n </li>\n <li data-ng-class=\"{'active': $state.is('main.staff.users.view.permit.mail'),'disabled-link':!license.mail}\" data-ng-show=\"Auth.isAdmin() || userModules[9]\">\n <a href=\"{{license.mail ? '/staff/users/view/'+user.id+'/permit/mail' : 'javascript:;'}}\" class=\"disable-target\">\n <i class=\"icon-envelope\"></i>{{'APPLICATION_MAIL' | translate}}\n </a>\n </li>\n <li data-ng-class=\"{'active': $state.is('main.staff.users.view.permit.fax'),'disabled-link':!license.fax}\" data-ng-show=\"Auth.isAdmin() || userModules[10]\">\n <a href=\"{{license.fax ? '/staff/users/view/'+user.id+'/permit/fax' : 'javascript:;'}}\" class=\"disable-target\">\n <i class=\"fa fa-fax\"></i> {{'APPLICATION_FAX' | translate}}\n </a>\n </li>\n <li data-ng-class=\"{'active': $state.is('main.staff.users.view.permit.sms'),'disabled-link':!license.messaging}\" data-ng-show=\"Auth.isAdmin() || userModules[11]\">\n <a href=\"{{license.messaging ? '/staff/users/view/'+user.id+'/permit/sms' : 'javascript:;'}}\" class=\"disable-target\">\n <i class=\"glyphicon glyphicon-comment\"></i> {{'APPLICATION_SMS' | translate}}\n </a>\n </li>\n <li data-ng-class=\"{'active': $state.is('main.staff.users.view.permit.openchannel'),'disabled-link':!license.openchannel}\" data-ng-show=\"Auth.isAdmin() || userModules[20]\">\n <a href=\"{{license.openchannel ? '/staff/users/view/'+user.id+'/permit/openchannel' : 'javascript:;'}}\" class=\"disable-target\">\n <i class=\"icon-globe\"></i> {{'APPLICATION_OPEN_CHANNEL' | translate}}\n </a>\n </li>\n <li data-ng-class=\"{'active': $state.is('main.staff.users.view.permit.modules')}\" data-ng-if=\"user.role !== 'admin'\">\n <a href=\"/staff/users/view/{{user.id}}/permit/modules\">\n <i class=\"icon-menu\"></i> {{'APPLICATION_MODULES' | translate}}\n </a>\n </li>\n </ul>\n </div>\n </nav>\n </div>\n <div ui-view></div>\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n"),a.put("app/staff/user/view/view.permit.mail.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12" data-ng-init="initMailQueues()">\n <!-- BEGIN FORM-->\n <form action="#" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-permit">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/user/view/view.permit.modules.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row left-margin" data-ng-init="getModules()">\n <div data-ng-repeat="module in modules" data-ng-if="!module.ModuleId && ((module.id === 8 && license.chat) || (module.id === 9 && license.mail) || (module.id === 10 && license.fax) || (module.id === 11 && license.messaging) || (module.id === 20 && license.openchannel) || !_.includes([8,9,10,11,20],module.id))">\n <div class="form-group" data-ng-class="{\'left-margin-40\':module.ModuleId}">\n <span data-ng-if="module.ModuleId">└──</span> <input\n bs-switch\n class="form-control"\n ng-model="module.status"\n type="checkbox"\n data-ng-change="updatePermissions(module)"\n switch-active="{{ moduleSwitch.isActive }}"\n switch-on-text="{{ moduleSwitch.onText }}"\n switch-off-text="{{ moduleSwitch.offText }}"\n switch-on-color="{{ moduleSwitch.onColor }}"\n switch-off-color="{{ moduleSwitch.offColor }}"\n switch-animate="{{ moduleSwitch.animate }}"\n switch-size="{{ moduleSwitch.size }}"\n switch-label="{{ moduleSwitch.label }}"\n switch-icon="{{ moduleSwitch.icon }}"\n switch-radio-off="{{ moduleSwitch.radioOff }}"\n switch-label-width="{{ moduleSwitch.labelWidth }}"\n switch-handle-width="{{ moduleSwitch.handleWidth }}">\n <label class="control-label">{{module.title | translate | trusted}}</label>\n </div>\n <div ng-slide-down="module.status" lazy-render duration="0.5">\n <div data-ng-repeat="subModule in module.SubModules" data-ng-if="(subModule.id === 8 && license.chat) || (subModule.id === 9 && license.mail) || (subModule.id === 10 && license.fax) || (subModule.id === 11 && license.messaging) || (subModule.id === 20 && license.openchannel) || !_.includes([8,9,10,11,20],subModule.id)">\n <div class="form-group" data-ng-class="{\'left-margin-40\':module.ModuleId}">\n <span>└──</span> <input\n bs-switch\n class="form-control"\n ng-model="subModule.status"\n type="checkbox"\n data-ng-change="updatePermissions(subModule)"\n switch-active="{{ moduleSwitch.isActive }}"\n switch-on-text="{{ moduleSwitch.onText }}"\n switch-off-text="{{ moduleSwitch.offText }}"\n switch-on-color="{{ moduleSwitch.onColor }}"\n switch-off-color="{{ moduleSwitch.offColor }}"\n switch-animate="{{ moduleSwitch.animate }}"\n switch-size="{{ moduleSwitch.size }}"\n switch-label="{{ moduleSwitch.label }}"\n switch-icon="{{ moduleSwitch.icon }}"\n switch-radio-off="{{ moduleSwitch.radioOff }}"\n switch-label-width="{{ moduleSwitch.labelWidth }}"\n switch-handle-width="{{ moduleSwitch.handleWidth }}">\n <label class="control-label">{{subModule.title | translate}}</label>\n </div>\n <div ng-slide-down="subModule.status" lazy-render duration="0.5">\n <div data-ng-repeat="subModule2 in subModule.SubModules" class="form-group" data-ng-class="{\'left-margin-40\':module.ModuleId}">\n <span style="margin-left:40px">└──</span> <input\n bs-switch\n class="form-control"\n ng-model="subModule2.status"\n type="checkbox"\n data-ng-change="updatePermissions(subModule2)"\n switch-active="{{ moduleSwitch.isActive }}"\n switch-on-text="{{ moduleSwitch.onText }}"\n switch-off-text="{{ moduleSwitch.offText }}"\n switch-on-color="{{ moduleSwitch.onColor }}"\n switch-off-color="{{ moduleSwitch.offColor }}"\n switch-animate="{{ moduleSwitch.animate }}"\n switch-size="{{ moduleSwitch.size }}"\n switch-label="{{ moduleSwitch.label }}"\n switch-icon="{{ moduleSwitch.icon }}"\n switch-radio-off="{{ moduleSwitch.radioOff }}"\n switch-label-width="{{ moduleSwitch.labelWidth }}"\n switch-handle-width="{{ moduleSwitch.handleWidth }}">\n <label class="control-label">{{subModule2.title | translate}}</label>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- END PAGE CONTENT-->\n'),a.put("app/staff/user/view/view.permit.openchannel.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12" data-ng-init="initOpenchannelQueues()">\n <!-- BEGIN FORM-->\n <form action="#" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-permit">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/user/view/view.permit.sms.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12" data-ng-init="initSmsQueues()">\n <!-- BEGIN FORM-->\n <form action="#" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-permit">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/user/view/view.permit.voice.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12" data-ng-init="initVoiceQueues()">\n <!-- BEGIN FORM-->\n <form action="#" class="form-horizontal form-row-seperated">\n <div class="form-body">\n <div class="form-group last">\n <div class="col-md-12" id="multi-select-permit">\n </div>\n </div>\n </div>\n </form>\n <!-- END FORM-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/staff/user/view/view.voice.html",'<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_ACCOUNT\' | translate}} {{ \'APPLICATION_VOICE\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="forms.info" data-ng-submit="updateItem()" novalidate>\n\n <!-- START INTERNAL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.internal.$touched || forms.info.$submitted) && forms.info.internal.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERNAL_NUMBER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="1" name="internal" placeholder="{{\'APPLICATION_INTERNAL_NUMBER\' | translate}}" class="form-control" data-ng-model="user.internal" required readonly/>\n <span data-ng-show="(forms.info.internal.$touched || forms.info.$submitted) && forms.info.internal.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.internal.$touched || forms.info.$submitted) && forms.info.internal.$error.ngRemoteValidate" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_EXIST_INTERNAL\' | translate}}.\n </span>\n </div>\n <!-- END INTERNAL -->\n\n <!-- START TRANSPORT -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TRANSPORT\' | translate}}</label>\n <ui-select multiple name="transport" ng-model="user.transport" theme="bootstrap" ng-disabled="disabled">\n <ui-select-match placeholder="Select transport...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="transport in [\'udp\', \'tcp\', \'ws\', \'wss\'] | filter: $select.search">\n {{transport}}\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_TRANSPORT\' | translate }}\n </span>\n </div>\n <!-- END TRANSPORT -->\n\n <!-- START CODEC -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_ALLOWED_CODECS\' | translate}}</label>\n <ui-select multiple ng-model="user.allow" name="allow" theme="bootstrap" ng-disabled="disabled">\n <ui-select-match placeholder="Select codec...">{{$item}}</ui-select-match>\n <ui-select-choices repeat="allow in [\'g722\', \'g729\', \'ilbc\', \'gsm\', \'ulaw\', \'alaw\', \'opus\'] | filter: $select.search">\n {{allow}}\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CODEC\' | translate }}\n </span>\n </div>\n <!-- END CODEC -->\n\n <!-- START CALLGROUP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.voice.callgroup.$touched || forms.voice.$submitted) && forms.voice.callgroup.$invalid}">\n <label class="control-label">{{\'APPLICATION_CALLGROUP\' | translate}}</label>\n <input type="text" name="callgroup" placeholder="{{\'APPLICATION_CALLGROUP\' | translate}}" class="form-control" data-ng-model="user.callgroup"/>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_CALLGROUP\' | translate }}\n </span>\n <span data-ng-show="(forms.voice.callgroup.$touched || forms.voice.$submitted) && forms.voice.callgroup.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CALLGROUP -->\n\n <!-- START PICKUPGROUP -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.voice.pickupgroup.$touched || forms.voice.$submitted) && forms.voice.pickupgroup.$invalid}">\n <label class="control-label">{{\'APPLICATION_PICKUPGROUP\' | translate}}</label>\n <input type="text" name="pickupgroup" placeholder="{{\'APPLICATION_PICKUPGROUP\' | translate}}" class="form-control" data-ng-model="user.pickupgroup"/>\n <span class="help-block">\n {{ \'DESCRIPTION_VOICE_PICKUPGROUP\' | translate }}\n </span>\n <span data-ng-show="(forms.voice.pickupgroup.$touched || forms.voice.$submitted) && forms.voice.pickupgroup.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PICKUPGROUP -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/staff/user/wizard/wizard.html",'<div class="col-md-12">\n <!-- BEGIN PAGE HEADER-->\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-puzzle"></i>\n <a href="#">{{ \'APPLICATION_STAFF\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-eye"></i>\n <a href="/staff/users/list">{{ \'APPLICATION_USERS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-options"></i>\n <a href="/staff/users/wizard">{{ \'APPLICATION_WIZARD\' | translate }}</a>\n </li>\n </ul>\n </div>\n <!-- END PAGE HEADER-->\n\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered" data-ng-init="initWizard();">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-user font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_USER\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_ACCOUNT\' | translate}}" canexit="exitValidation(forms.info.$valid)">\n <form name="forms.info" novalidate>\n\n <!-- START ROLE -->\n <div class="form-group" data-ng-if="Auth.getCurrentUser().role === \'admin\'">\n <label class="control-label">{{ \'APPLICATION_ROLE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select name="role" data-ng-model="item.role" theme="bootstrap" required>\n <ui-select-match placeholder="Select role...">{{$select.selected | uppercase}}</ui-select-match>\n <ui-select-choices repeat="role in [\'user\', \'admin\'] | filter: $select.search">\n {{role | uppercase}}\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END ROLE -->\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.fullname.$touched || forms.info.$submitted) && forms.info.fullname.$invalid}">\n <label class="control-label">{{\'APPLICATION_FULLNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="fullname" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.fullname" required/>\n <span data-ng-show="(forms.info.fullname.$touched || forms.info.$submitted) && forms.info.fullname.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="item.name" data-ng-pattern="settings.patternName" required />\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.name.$touched || forms.info.$submitted) && forms.info.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START EMAIL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$invalid}">\n <label class="control-label">{{\'APPLICATION_EMAIL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="email" name="email" placeholder="{{\'APPLICATION_EMAIL\' | translate}}" class="form-control" data-ng-model="item.email" required />\n <span data-ng-show="(forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.email.$touched || forms.info.$submitted) && forms.info.email.$error.email" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.password" data-ng-pattern="setting.securePassword ? settings.patternPassword : settings.patternPasswordLight" required/>\n <span class="help-block">\n {{setting.securePassword ? \'MESSAGE_PASSWORD_FORMAT\' : \'MESSAGE_PASSWORD_LIGHT_FORMAT\' | translate}}\n </span>\n <span data-ng-show="(forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.password.$touched || forms.info.$submitted) && forms.info.password.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START RE PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.rpassword.$touched || forms.info.$submitted) && forms.info.rpassword.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONFIRM_PASSWORD\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="password" name="rpassword" placeholder="{{\'APPLICATION_CONFIRM_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.rpassword" nx-equal="item.password" required/>\n <span data-ng-show="(forms.info.rpassword.$touched || forms.info.$submitted) && forms.info.rpassword.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.info.rpassword.$touched || forms.info.$submitted) && forms.info.rpassword.$error.nxEqual" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_PASSWORD\' | translate}}.\n </span>\n </div>\n <!-- END RE PASSWORD -->\n\n <!-- START INTERNAL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.info.internal.$touched || forms.info.$submitted) && forms.info.internal.$invalid}">\n <label class="control-label">{{\'APPLICATION_INTERNAL_NUMBER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <div class="input-group">\n <input type="number" min="1" name="internal" placeholder="{{\'APPLICATION_INTERNAL_NUMBER\' | translate}}" class="form-control" data-ng-model="item.internal" data-ng-disabled="!item.internalEnabled" data-ng-required="item.internalEnabled"/>\n <span class="input-group-addon">\n <input type="checkbox" data-ng-model="item.internalEnabled">\n </span>\n </div>\n <span data-ng-show="(forms.info.internal.$touched || forms.info.$submitted) && forms.info.internal.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INTERNAL -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END PORTLET-->\n</div>\n'), -a.put("app/sugarcrm/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-handbag"></i>\n <a href="/sugarcrm/list">{{ \'APPLICATION_SUGARCRM\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-handbag font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_SUGARCRM\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/sugarcrm/wizard" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ACCOUNT\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/sugarcrm/view/configuration/list/create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_CONFIGURATION\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.name.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.name.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START CHANNEL -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.channel.$touched || form.channel.$submitted) && form.channel.$invalid}">\n <label class="control-label">{{\'APPLICATION_CHANNEL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.channel" name="channel" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_CHANNEL\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="channel.value as channel in channels | filter: $select.search">\n <div data-ng-bind="channel.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.channel.$touched || form.channel.$submitted) && form.channel.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START CHANNEL -->\n\n <!-- START VOICE SUBTYPE -->\n <div data-ng-if="item.channel===\'voice\'" class="form-group" data-ng-class="{\'has-error\': (form.channel.$touched || form.channel.$submitted) && form.channel.$invalid}">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.type" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_TYPE\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="type in [\'Queue\',\'Outbound\'] | filter: $select.search">\n <div data-ng-bind="type | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.type.$touched || form.type.$submitted) && form.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START CHANNEL -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/sugarcrm/view/configuration/list/list.html",'<div ui-view class="profile-content">\n <div class="row">\n <div class="col-md-12">\n <div class="portlet light" data-ng-init="initView()">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_CONFIGURATIONS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="#" data-ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_CONFIGURATION\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/sugarcrm/view/configuration/view/view.html",'<div class="row" data-ng-init="initView();getConfiguration();getCustomVariables();getFields();getModules();">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_CONFIGURATION\' | translate}}: {{configurationName}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_SUBJECT\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_DESCRIPTION\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{\'APPLICATION_FIELDS\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_4" data-toggle="tab">{{\'APPLICATION_MAPPING\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- SUBJECT TAB -->\n <div class="tab-pane ui-padding active" id="tab_1_1">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">All following fields will be join by blank space:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItem(\'subject\')"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div id="subject-item-list" ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="subjectItem in subjectConfig">\n <div class="col-md-3">\n <ui-select ng-model="subjectItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeType(subjectItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in fieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-8" data-ng-if="subjectItem.type==\'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="subjectItem.content" data-ng-change="updateField(subjectItem)">\n </div>\n </div>\n <div class="col-md-8" data-ng-if="subjectItem.type==\'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="subjectItem.variableName" data-ng-change="updateField(subjectItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices group-by="groupVariableByGroup" repeat="variable.name as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-8" data-ng-if="subjectItem.type==\'customVariable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="subjectItem.VariableId" data-ng-change="updateField(subjectItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in customVariables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(subjectItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END SUBJECT TAB -->\n <!-- DESCRIPTION TAB -->\n <div class="tab-pane ui-padding" id="tab_1_2">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">All following fields will be join by new line:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItem(\'description\')"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div id="description-item-list" ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="descriptionItem in descriptionConfig">\n <div class="col-md-2">\n <ui-select ng-model="descriptionItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeDescType(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in descFieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-9" data-ng-if="descriptionItem.type==\'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="descriptionItem.content" data-ng-change="updateField(descriptionItem)">\n </div>\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\'">\n <input type="text" class="form-control" placeholder="Key" data-ng-model="descriptionItem.key" data-ng-change="updateField(descriptionItem)">\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\'">\n <ui-select ng-model="descriptionItem.keyType" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeDescType(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in fieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\' && descriptionItem.keyType==\'string\'">\n <input type="text" class="form-control" placeholder="Value" data-ng-model="descriptionItem.keyContent" data-ng-change="updateField(descriptionItem)">\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\' && descriptionItem.keyType==\'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="descriptionItem.variableName" data-ng-change="updateField(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices group-by="groupVariableByGroup" repeat="variable.name as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\' && descriptionItem.keyType==\'customVariable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="descriptionItem.VariableId" data-ng-change="updateField(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in customVariables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(descriptionItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END DESCRIPTION TAB -->\n <!-- FIELDS TAB -->\n <div class="tab-pane ui-padding" id="tab_1_3">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">Add how to fill the fields present in your account:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItem(\'field\')"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div id="field-item-list" ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="fieldItem in fieldConfig">\n <div class="col-md-3">\n <ui-select ng-model="fieldItem.idField" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeFieldType(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.label}}</ui-select-match>\n <ui-select-choices repeat="item.name as item in accountFields | filter: $select.search">\n <div ng-bind-html="item.label | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-8" data-ng-if="getSystemFieldOptions(fieldItem.idField)">\n <div class="form-group">\n <ui-select ng-model="fieldItem.content" theme="bootstrap" ng-disabled="disabled" data-ng-change="updateField(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="item.value as item in getSystemFieldOptions(fieldItem.idField) | filter: $select.search">\n <div ng-bind-html="item.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField)">\n <div class="form-group">\n <ui-select ng-model="fieldItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeType(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in fieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search | ucfirst"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="fieldItem.content" data-ng-change="updateField(fieldItem)">\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="fieldItem.variableName" data-ng-change="updateField(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices group-by="groupVariableByGroup" repeat="variable.name as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'customVariable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="fieldItem.VariableId" data-ng-change="updateField(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in customVariables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(fieldItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END FIELDS TAB -->\n <!-- TAG TAB -->\n <div class="tab-pane ui-padding" id="tab_1_4">\n\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="false"></span>\n <!-- END UI-GRID SPINNER -->\n\n <div class="row">\n <div class="col-md-12">\n <span class="caption-subject">Select the mapping procedure that the current configuration will use:</span>\n </div>\n </div>\n <hr>\n <form name="forms.mapping" data-ng-submit="updateMapping()" novalidate>\n\n <!-- DEFAULT MAPPING -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DEFAULT_MAPPING\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="mapping.defaultMapping"\n type="checkbox",\n name="defaultMapping"\n switch-active="{{ defaultMappingSwitch.isActive }}"\n switch-on-text="{{ defaultMappingSwitch.onText }}"\n switch-off-text="{{ defaultMappingSwitch.offText }}"\n switch-on-color="{{ defaultMappingSwitch.onColor }}"\n switch-off-color="{{ defaultMappingSwitch.offColor }}"\n switch-animate="{{ defaultMappingSwitch.animate }}"\n switch-size="{{ defaultMappingSwitch.size }}"\n switch-label="{{ defaultMappingSwitch.label }}"\n switch-icon="{{ defaultMappingSwitch.icon }}"\n switch-radio-off="{{ defaultMappingSwitch.radioOff }}"\n switch-label-width="{{ defaultMappingSwitch.labelWidth }}"\n switch-handle-width="{{ defaultMappingSwitch.handleWidth }}">\n </div>\n <!-- END DEFAULT MAPPING -->\n\n <div class="row" data-ng-if="!mapping.defaultMapping">\n <div class="col-md-6">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.mapping.mappingModule.$touched || forms.mapping.$submitted) && forms.mapping.mappingModule.$invalid}">\n <label class="control-label">{{\'APPLICATION_MAPPING_MODULE\' | translate}} <span class="required" aria-required="true">*</span></label>\n <ui-select ng-model="mapping.mappingModule" theme="bootstrap" name="mappingModule" required ng-disabled="disabled" data-ng-change="updateMappingModule()">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.label}}</ui-select-match>\n <ui-select-choices repeat="item.key as item in accountModules | filter: $select.search">\n <div ng-bind-html="item.label | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.mapping.mappingModule.$touched || forms.mapping.$submitted) && forms.mapping.mappingModule.$invalid && forms.mapping.mappingModule.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n\n <div class="row" data-ng-if="!mapping.defaultMapping">\n <div class="col-md-12">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.mapping.mappingFields.$touched || forms.mapping.$submitted) && forms.mapping.mappingFields.$invalid}">\n <label class="control-label">{{\'APPLICATION_MAPPING_FIELDS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <ui-select multiple data-ng-model="mapping.mappingFields" theme="bootstrap" name="mappingFields" ng-disabled="disabled" required>\n <ui-select-match placeholder="{{ \'APPLICATION_MAPPING_FIELDS\' | translate }}">{{$item.label}}</ui-select-match>\n <ui-select-choices repeat="moduleField.name as moduleField in moduleFields | filter: $select.search">\n {{moduleField.label}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.mapping.mappingFields.$touched || forms.mapping.$submitted) && forms.mapping.mappingFields.$invalid && forms.mapping.mappingFields.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}" data-ng-disabled="forms.mapping.$invalid"/>\n </form>\n </div>\n <!-- END TAG TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/sugarcrm/view/view.account.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACCOUNT\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERALS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.formSetting" data-ng-submit="forms.formSetting.$valid && updateItem()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.name" required/>\n <span data-ng-show="forms.formSetting.name.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="account.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="account.username" required/>\n <span data-ng-show="forms.formSetting.username.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START REMOTE ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.remoteUri.$invalid}">\n <label class="control-label">{{\'APPLICATION_REMOTE_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remoteUri" placeholder="{{\'APPLICATION_REMOTE_ADDRESS\' | translate}}" class="form-control" data-ng-model="account.remoteUri" required />\n <span data-ng-show="forms.formSetting.remoteUri.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="account.password" required/>\n <span data-ng-show="forms.formSetting.apiKey.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START SERVER URL -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.serverUrl.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}}</label>\n <input type="url" name="serverUrl" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="account.serverUrl"/>\n <span class="help-block">\n {{\'DESCRIPTION_SERVER_URL\' | translate}}.\n </span>\n <span class="help-block help-block-info">\n {{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n </span>\n </div>\n <!-- END SERVER URL -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/sugarcrm/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-handbag"></i>\n <a href="/sugarcrm/list">{{ \'APPLICATION_SUGARCRM\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <a href="#">{{account.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img src="assets/images/media/sugarcrm.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{account.name}}\n </div>\n <div class="profile-usertitle-job">\n {{account.remoteUri}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.sugarcrm.view.account\')}">\n <a ng-href="/sugarcrm/view/{{account.id}}/account">\n <i class="icon-user"></i>\n {{ \'APPLICATION_ACCOUNT\' | translate }} </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.sugarcrm.view.configurations\') || $state.is(\'main.sugarcrm.view.configuration\')}">\n <a ng-href="/sugarcrm/view/{{account.id}}/configurations/list">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_CONFIGURATIONS\' | translate }} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), -a.put("app/sugarcrm/wizard/wizard.html",'<!-- BEGIN PAGE HEADER-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-handbag"></i>\n <a href="/sugarcrm/list">{{ \'APPLICATION_SUGARCRM\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n<!-- END PAGE HEADER-->\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initWizard()">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACCOUNT\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_ACCOUNT_INFO\' | translate}}" canexit="exitValidation(forms.formSetting.$valid)">\n <form name="forms.formSetting" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="forms.formSetting.name.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="item.username" required/>\n <span data-ng-show="forms.formSetting.username.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n\n <!-- START REMOTE ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.remoteUri.$invalid}">\n <label class="control-label">{{\'APPLICATION_REMOTE_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remoteUri" placeholder="{{\'APPLICATION_REMOTE_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.remoteUri" required ng-remote-validate="/api/sugarcrm/accounts/validate/remoteUri"/>\n <span data-ng-show="forms.formSetting.remoteUri.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formSetting.remoteUri.$touched || forms.formSetting.$submitted) && forms.formSetting.remoteUri.$error.ngRemoteValidate" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_EXIST_DOMAIN\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.password" required/>\n <span data-ng-show="forms.formSetting.apiKey.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START SERVER URL -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.serverUrl.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}}</label>\n <input type="url" name="serverUrl" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.serverUrl"/>\n <span class="help-block">\n {{\'DESCRIPTION_SERVER_URL\' | translate}}.\n </span>\n <span class="help-block help-block-info">\n {{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n </span>\n </div>\n <!-- END SERVER URL -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" data-ng-click="next()"/>\n\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n\n </wizard>\n\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/answer/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_CANNED_ANSWER\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.key.$touched || form.$submitted) && form.key.$invalid}">\n <label class="control-label">{{\'APPLICATION_KEY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="key" placeholder="{{\'APPLICATION_KEY\' | translate}}" class="form-control" data-ng-model="item.key" required/>\n <span data-ng-show="(form.key.$touched || form.$submitted) && form.key.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START VALUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.value.$touched || form.$submitted) && form.value.$invalid}">\n <label class="control-label">{{\'APPLICATION_VALUE\' | translate}}<span class="required" aria-required="true">*</span></label></label>\n <textarea type="text" name="value" placeholder="{{\'APPLICATION_VALUE\' | translate}}" class="form-control" data-ng-model="item.value" required></textarea>\n <span data-ng-show="(form.value.$touched || form.$submitted) && form.value.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END VALUE -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/tools/answer/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-magic-wand"></i>\n <a href="#">{{ \'APPLICATION_CANNED_ANSWERS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-magic-wand font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_CANNED_ANSWERS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <a class="btn green-jungle" href="#" data-toggle="dropdown" data-ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_CANNED_ANSWER\' | translate }}\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/answer/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getAnswer()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-magic-wand"></i>\n <a href="/tools/answers/list">{{ \'APPLICATION_CANNED_ANSWER\' | translate }}</a>\n <i data-ng-show="answer" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="answer">\n <a href="#">{{answer.key}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/answer.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{answer.name}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.tools.answers.view.settings\')}">\n <a data-ng-href="/tools/answers/view/{{answer.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}}\n </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/answer/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_CANNED_ANSWER\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateAnswer()" novalidate>\n\n <!-- START KEY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.key.$touched || forms.general.$submitted) && forms.general.key.$invalid}">\n <label class="control-label">{{\'APPLICATION_KEY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="key" placeholder="{{\'APPLICATION_KEY\' | translate}}" class="form-control" data-ng-model="answer.key" required/>\n <span data-ng-show="(forms.general.key.$touched || forms.general.$submitted) && forms.general.key.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END KEY -->\n\n <!-- START VALUE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.value.$touched || forms.general.$submitted) && forms.general.value.$invalid}">\n <label class="control-label">{{\'APPLICATION_VALUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <textarea type="text" name="value" placeholder="{{\'APPLICATION_VALUE\' | translate}}" class="form-control" data-ng-model="answer.value" required></textarea>\n <span data-ng-show="(forms.general.value.$touched || forms.general.$submitted) && forms.general.value.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END VALUE -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="answer.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/tools/automation/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bulb"></i>\n <a href="#">{{ \'APPLICATION_AUTOMATIONS\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-bulb font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_AUTOMATIONS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle " href="/tools/automations/wizard">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_AUTOMATION\' | translate }}\n </a>\n </div>\n <!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> -->\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/automation/view/view.html",'<!-- BEGIN PAGE HEADER-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-settings"></i>\n <a href="/tools/automations/list">{{ \'APPLICATION_AUTOMATIONS\' | translate }}</a>\n <i class="fa fa-angle-right" data-ng-show="automation"></i>\n </li>\n <li data-ng-show="automation">\n <a href="#">{{ automation.description || automation.name }}</a>\n </li>\n </ul>\n </div>\n\n<!-- END PAGE HEADER-->\n\n<!-- BEGIN PAGE CONTENT-->\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/automation.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{ automation.name }}\n </div>\n <div class="profile-usertitle-job">\n {{ automation.description }}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.tools.automations.view.settings\')}">\n <a href="/tools/automations/view/{{automation.id}}/settings">\n <i class="icon-bulb"></i>\n {{ \'APPLICATION_SETTINGS\' | translate }} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/automation/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERALS\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_CONDITIONS\' | translate}} & {{\'APPLICATION_ACTIONS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <form name="forms.general" data-ng-submit="exitValidation(forms.general.$valid) && updateAutomation()" novalidate>\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="automation.name" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START CHANNEL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.channel.$touched || forms.general.$submitted) && forms.general.channel.$invalid}">\n <label class="control-label">{{\'APPLICATION_CHANNEL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="channel" placeholder="{{\'APPLICATION_CHANNEL\' | translate}}" class="form-control" data-ng-model="automation.channel" required readonly/>\n <span data-ng-show="(forms.general.channel.$touched || forms.general.$submitted) && forms.general.channel.$invalid && forms.general.channel.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CHANNEL -->\n\n <!-- START TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.timeout.$touched && forms.general.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} ({{\'APPLICATION_MINUTES\' | translate}})</label>\n <input type="number" name="timeout" min="10" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}} (min 10 {{\'APPLICATION_MINUTES\' | translate}})" class="form-control" data-ng-model="automation.timeout" data-ng-init="item.timeout = 10" required/>\n <span data-ng-show="forms.general.timeout.$touched && forms.general.name.$invalid && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TIMEOUT -->\n\n <!-- START STATUS -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_STATUS\' | translate}}</label>\n </br>\n <input bs-switch class="form-control" ng-model="automation.status" type="checkbox" name="status" switch-active="{{ recordSwitch.isActive }}" switch-on-text="{{ recordSwitch.onText }}" switch-off-text="{{ recordSwitch.offText }}" switch-on-color="{{ recordSwitch.onColor }}"\n switch-off-color="{{ recordSwitch.offColor }}" switch-animate="{{ recordSwitch.animate }}" switch-size="{{ recordSwitch.size }}" switch-label="{{ recordSwitch.label }}" switch-icon="{{ recordSwitch.icon }}" switch-radio-off="{{ recordSwitch.radioOff }}"\n switch-label-width="{{ recordSwitch.labelWidth }}" switch-handle-width="{{ recordSwitch.handleWidth }}">\n </div>\n <!-- END STATUS -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="automation.description" />\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}" />\n </div>\n <!-- END GENERAL TAB -->\n <div class="tab-pane" id="tab_1_2">\n <!-- All -->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <i class="icon-tag font-blue-hoki"></i>\n <span class="caption-subject" ng-bind-html="\'APPLICATION_MEET_ALL_CONDITIONS\' | translate"></span>:\n </div>\n </div>\n <div class="portlet-body">\n <div class="portlet light bordered" ng-repeat="all in automation.All">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <span class="caption-subject">{{ \'APPLICATION_ALL\' | translate }} #{{$index+1}}</span>\n </div>\n <div class="actions">\n <a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeCondition(\'All\',$index)"><i class="fa fa-trash"></i></a>\n </div>\n </div>\n <div class="portlet-body">\n <div class="padding-bottom row">\n <div class="col-md-12">\n <condition-builder element="all" serviceindex="automation.channel" service="$automations" form="forms.general"></condition-builder>\n </div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-12">\n <button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addCondition(\'All\')">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_CONDITION\' | translate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Any -->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <i class="icon-tag font-blue-hoki"></i>\n <span class="caption-subject" ng-bind-html="\'APPLICATION_MEET_ANY_CONDITIONS\' | translate"></span>:\n </div>\n </div>\n <div class="portlet-body">\n <div class="portlet light bordered" ng-repeat="any in automation.Any">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <span class="caption-subject">{{ \'APPLICATION_ANY\' | translate }} #{{$index+1}}</span>\n </div>\n <div class="actions">\n <a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeCondition(\'Any\',$index)"><i class="fa fa-trash"></i></a>\n </div>\n </div>\n <div class="portlet-body">\n <div class="padding-bottom row">\n <div class="col-md-12">\n <condition-builder element="any" serviceindex="automation.channel" service="$automations" form="forms.general"></condition-builder>\n </div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-12">\n <button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addCondition(\'Any\')">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_CONDITION\' | translate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Actions -->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <i class="icon-tag font-blue-hoki"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACTIONS\' | translate }}</span>:\n </div>\n </div>\n <div class="portlet-body">\n <div class="portlet light bordered" ng-repeat="action in automation.Actions">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <span class="caption-subject">{{ \'APPLICATION_ACTIONS\' | translate }} #{{$index+1}}</span>\n </div>\n <div class="actions">\n <a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeAction($index)"><i class="fa fa-trash"></i></a>\n </div>\n </div>\n <div class="portlet-body">\n <div class="padding-bottom row">\n <div class="col-md-12">\n <div class="form-group col-md-6" data-ng-class="{\'has-error\': (forms.general[\'action\'+$index].$touched || forms.general.$submitted) && forms.general[\'action\'+$index].$invalid}">\n <ui-select data-ng-model="action.action" theme="bootstrap" data-ng-change="resetActionData(action)" name="action{{$index}}" required>\n <ui-select-match placeholder="{{ \'APPLICATION_ACTION\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="tAction.value as tAction in $automations.services[automation.channel].actions | filter: $select.search">\n <div ng-bind-html="tAction.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'APPLICATION_ACTION\' | translate }}\n </span>\n <span data-ng-show="(forms.general[\'action\'+$index].$touched || forms.general.$submitted) && forms.general[\'action\'+$index].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div ng-switch="action.action">\n <action-builder-status ng-switch-when="status" element="action" form="forms.settings"></action-builder-status>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-12">\n <button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addAction()">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_ACTION\' | translate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class="has-error" data-ng-show="forms.general.$submitted && !automation.All.length && !automation.Any.length">\n <span class="help-block help-block-error form-control">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INSERT_AT_LEAST_ONE_CONDITION\' | translate}}.\n </span>\n </div>\n <div class="has-error" data-ng-show="forms.general.$submitted && !automation.Actions.length">\n <span class="help-block help-block-error form-control">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INSERT_AT_LEAST_ONE_ACTION\' | translate}}.\n </span>\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}" />\n </div>\n </div>\n </form>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/tools/automation/wizard/wizard.html",'<div class="row">\n <div class="col-md-12">\n <!-- BEGIN PAGE HEADER-->\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-settings"></i>\n <a href="/tools/automations/list">{{ \'APPLICATION_AUTOMATIONS\' | translate }}</a>\n </li>\n </ul>\n </div>\n <!-- END PAGE HEADER-->\n\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-bulb font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_AUTOMATIONS\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_GENERAL\' | translate}}" canexit="exitValidation(forms.general.$valid)">\n <form name="forms.general" data-ng-submit="submit()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.name.$touched && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="forms.general.name.$touched && forms.general.name.$invalid && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START STATUS -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_STATUS\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.status"\n type="checkbox"\n name="status"\n data-ng-init="item.status = 0"\n switch-active="{{ statusSwitch.isActive }}"\n switch-on-text="{{ statusSwitch.onText }}"\n switch-off-text="{{ statusSwitch.offText }}"\n switch-on-color="{{ statusSwitch.onColor }}"\n switch-off-color="{{ statusSwitch.offColor }}"\n switch-animate="{{ statusSwitch.animate }}"\n switch-size="{{ statusSwitch.size }}"\n switch-label="{{ statusSwitch.label }}"\n switch-icon="{{ statusSwitch.icon }}"\n switch-radio-off="{{ statusSwitch.radioOff }}"\n switch-label-width="{{ statusSwitch.labelWidth }}"\n switch-handle-width="{{ statusSwitch.handleWidth }}">\n </div>\n <!-- END STATUS -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n </form>\n </wz-step>\n <wz-step title="{{\'APPLICATION_SETTINGS\' | translate}}" canexit="exitSettingsValidation(forms.settings.$valid)">\n <form name="forms.settings" novalidate>\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <i class="icon-tag font-blue-hoki"></i>\n <span class="caption-subject">{{ \'APPLICATION_CHANNEL\' | translate }}</span>\n </div>\n </div>\n <div class="portlet-body">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.channel.$touched || forms.settings.$submitted) && forms.settings.channel.$invalid}">\n <label class="control-label">{{ \'APPLICATION_CHANNEL\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.channel" name="channel" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_CHANNEL\' | translate }}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="channel in $automations.channels | filter: $select.search">\n <div ng-bind-html="channel | highlight: $select.search | capitalize"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.channel.$touched || forms.settings.$submitted) && forms.settings.channel.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n\n <!-- All -->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <i class="icon-tag font-blue-hoki"></i>\n <span class="caption-subject" ng-bind-html="\'APPLICATION_MEET_ALL_CONDITIONS\' | translate"></span>:\n </div>\n </div>\n <div class="portlet-body">\n <div class="portlet light bordered" ng-repeat="all in item.All">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <span class="caption-subject">{{ \'APPLICATION_ALL\' | translate }} #{{$index+1}}</span>\n </div>\n <div class="actions">\n <a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeCondition(\'All\',$index)"><i class="fa fa-trash"></i></a>\n </div>\n </div>\n <div class="portlet-body">\n <div class="padding-bottom row">\n <div class="col-md-12">\n <condition-builder element="all" serviceindex="item.channel" service="$automations" form="forms.general"></condition-builder>\n </div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-12">\n <button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addCondition(\'All\')">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_CONDITION\' | translate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Any -->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <i class="icon-tag font-blue-hoki"></i>\n <span class="caption-subject" ng-bind-html="\'APPLICATION_MEET_ANY_CONDITIONS\' | translate"></span>:\n </div>\n </div>\n <div class="portlet-body">\n <div class="portlet light bordered" ng-repeat="any in item.Any">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <span class="caption-subject">{{ \'APPLICATION_ANY\' | translate }} #{{$index+1}}</span>\n </div>\n <div class="actions">\n <a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeCondition(\'Any\',$index)"><i class="fa fa-trash"></i></a>\n </div>\n </div>\n <div class="portlet-body">\n <div class="padding-bottom row">\n <div class="col-md-12">\n <condition-builder element="any" serviceindex="item.channel" service="$automations" form="forms.general"></condition-builder>\n </div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-12">\n <button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addCondition(\'Any\')">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_CONDITION\' | translate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Actions -->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <i class="icon-tag font-blue-hoki"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACTIONS\' | translate }}</span>:\n </div>\n </div>\n <div class="portlet-body">\n <div class="portlet light bordered" ng-repeat="action in item.Actions">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <span class="caption-subject">{{ \'APPLICATION_ACTIONS\' | translate }} #{{$index+1}}</span>\n </div>\n <div class="actions">\n <a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeAction($index)"><i class="fa fa-trash"></i></a>\n </div>\n </div>\n <div class="portlet-body">\n <div class="padding-bottom row">\n <div class="col-md-12">\n <div class="form-group col-md-6" data-ng-class="{\'has-error\': (forms.general[\'action\'+$index].$touched || forms.general.$submitted) && forms.general[\'action\'+$index].$invalid}">\n <ui-select data-ng-model="action.action" theme="bootstrap" data-ng-change="resetActionData(action)" name="action{{$index}}" required>\n <ui-select-match placeholder="{{ \'APPLICATION_ACTION\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="tAction.value as tAction in $automations.services[item.channel].actions | filter: $select.search">\n <div ng-bind-html="tAction.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'APPLICATION_ACTION\' | translate }}\n </span>\n <span data-ng-show="(forms.general[\'action\'+$index].$touched || forms.general.$submitted) && forms.general[\'action\'+$index].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div ng-switch="action.action">\n <action-builder-status ng-switch-when="status" element="action" form="forms.settings"></action-builder-status>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-12">\n <button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addAction()">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_ACTION\' | translate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class="has-error" data-ng-show="forms.settings.$submitted && !item.All.length && !item.Any.length">\n <span class="help-block help-block-error form-control">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INSERT_AT_LEAST_ONE_CONDITION\' | translate}}.\n </span>\n </div>\n <div class="has-error" data-ng-show="forms.settings.$submitted && !item.Actions.length">\n <span class="help-block help-block-error form-control">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INSERT_AT_LEAST_ONE_ACTION\' | translate}}.\n </span>\n </div>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n </form>\n </wz-step>\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), -a.put("app/tools/interval/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_INTERVAL\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/tools/interval/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-clock"></i>\n <a href="#">{{ \'APPLICATION_INTERVALS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_INTERVALS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <button class="btn green-jungle " ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_INTERVAL\' | translate }}\n </button>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/interval/view/subinterval/list/list.html",'<div ui-view class="profile-content">\n <div class="row">\n <div class="col-md-12">\n <div class="portlet light" data-ng-init="initView()">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SUBINTERVALS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group">\n <a class="btn green-jungle" href="/tools/intervals/view/{{stateParams.id}}/subintervals/view/">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_SUBINTERVAL\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/tools/interval/view/subinterval/view/view.html",'<div class="row" data-ng-init="initSubInterval()">\n <div class="col-md-12">\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_SUBINTERVAL\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="addOrUpdateSubInterval()">\n <wz-step title="{{\'APPLICATION_SETTINGS\' | translate}}" canexit="exitValidation(forms.subinterval.name.$valid)">\n <form name="forms.subinterval" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.subinterval.name.$touched || forms.subinterval.$submitted) && forms.subinterval.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="subinterval.name" required/>\n <span data-ng-show="(forms.subinterval.name.$touched || forms.subinterval.$submitted) && forms.subinterval.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START TIME -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n <div class="input-group input-large">\n <fieldset class="pull-left" ng-disabled="splittedInterval.alwaysTime"><uib-timepicker name="t_from" data-ng-model="splittedInterval.t_from" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n <fieldset ng-disabled="splittedInterval.alwaysTime"><uib-timepicker name="t_to" data-ng-model="splittedInterval.t_to" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n <label class="control-label pointer-cursor margin-top20"><input\n bs-switch\n class="form-control"\n ng-model="splittedInterval.alwaysTime"\n type="checkbox"\n switch-active="{{ switch.isActive }}"\n switch-on-text="{{\'APPLICATION_YES\' | translate}}"\n switch-off-text="{{\'APPLICATION_NO\' | translate}}"\n switch-on-color="{{ switch.onColor }}"\n switch-off-color="{{ switch.offColor }}"\n switch-animate="{{ switch.animate }}"\n switch-size="{{ switch.size }}"\n switch-label="{{ switch.label }}"\n switch-icon="{{ switch.icon }}"\n switch-radio-off="{{ switch.radioOff }}"\n switch-label-width="{{ switch.labelWidth }}"\n switch-handle-width="{{ switch.handleWidth }}"> {{\'APPLICATION_ALWAYS\' | translate}}</label>\n </div>\n </div>\n <!-- END TIME -->\n\n <!-- START WEEKDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="splittedInterval.wd_from" theme="bootstrap" name="wd_from">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="splittedInterval.wd_to" theme="bootstrap" name="wd_to">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n {{weekDay.name | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="splittedInterval.md_from" theme="bootstrap" name="md_from">\n <ui-select-match>{{$select.selected===\'always\' ? ($select.selected | capitalize) : $select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="splittedInterval.md_to && splittedInterval.md_to!==\'always\' && monthDay>splittedInterval.md_to && monthDay!==\'always\'">\n {{monthDay===\'always\' ? (monthDay | capitalize) : monthDay}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="splittedInterval.md_to" theme="bootstrap" name="md_to">\n <ui-select-match>{{$select.selected===\'always\' ? ($select.selected | capitalize) : $select.selected}}</ui-select-match>\n <ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="splittedInterval.md_from && splittedInterval.md_from!==\'always\' && monthDay<splittedInterval.md_from && monthDay!==\'always\'">\n {{monthDay===\'always\' ? (monthDay | capitalize) : monthDay}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTHDAY -->\n\n\n <!-- START MONTH -->\n <div class="form-group">\n <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n <div class="input-group input-large">\n <ui-select data-ng-model="splittedInterval.m_from" theme="bootstrap" name="m_from">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{month.name | translate}}\n </ui-select-choices>\n </ui-select>\n <span class="input-group-addon">to</span>\n <ui-select data-ng-model="splittedInterval.m_to" theme="bootstrap" name="m_to">\n <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n {{month.name | translate}}\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <!-- END MONTH -->\n\n\n\n <button class="btn green-haze" type="submit" ng-click="next()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n </form>\n </wz-step>\n\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/interval/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getInterval()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-clock"></i>\n <a href="/tools/intervals/list">{{ \'APPLICATION_INTERVALS\' | translate }}</a>\n <i data-ng-show="interval" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="interval">\n <a href="#">{{interval.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/interval.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{interval.name}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.tools.intervals.view.settings\')}">\n <a ng-href="/tools/intervals/view/{{interval.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.tools.intervals.view.subintervals.list\') || $state.is(\'main.tools.intervals.view.subintervals.view\')}">\n <a ng-href="/tools/intervals/view/{{interval.id}}/subintervals/list">\n <i class="icon-list"></i>\n {{ \'APPLICATION_SUBINTERVALS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/interval/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_INTERVAL\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateInterval()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="interval.name" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="interval.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/tools/pause/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_PAUSE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" data-ng-pattern="/^[^#]/" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/tools/pause/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-pause"></i>\n <a href="#">{{ \'APPLICATION_PAUSES\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="fa fa-pause font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_PAUSES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <a class="btn green-jungle" href="#" data-toggle="dropdown" data-ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_PAUSE\' | translate }}\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/pause/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getPause()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-control-pause"></i>\n <a href="/tools/pauses/list">{{ \'APPLICATION_PAUSES\' | translate }}</a>\n <i data-ng-show="pause" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="pause">\n <a href="#">{{pause.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/pause.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{pause.name}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.tools.pauses.view.settings\')}">\n <a data-ng-href="/tools/pauses/view/{{pause.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}}\n </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/pause/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_PAUSE\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updatePause()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="pause.name" data-ng-pattern="/^[^#]/" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="pause.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/tools/scheduler/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-calendar"></i>\n <a href="#">{{ \'APPLICATION_SCHEDULER\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-link font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_SCHEDULES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <a class="btn green-jungle" href="/tools/scheduler/wizard" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_SCHEDULE\' | translate }}\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/scheduler/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-calendar"></i>\n <a href="/tools/scheduler/list">{{ \'APPLICATION_SCHEDULER\' | translate }}</a>\n <i data-ng-show="schedule" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="schedule">\n <a href="#">{{schedule.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/scheduler.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{schedule.name}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.tools.scheduler.view.settings\')}">\n <a data-ng-href="/tools/scheduler/view/{{schedule.id}}/settings"><i class="icon-settings"></i> {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/scheduler/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_SCHEDULE\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab" data-ng-click="refreshSlider()">{{ \'APPLICATION_CONFIGURATION\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && forms.config.$valid && updateSchedule()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.$submitted && forms.general.name.$invalid) || forms.general.name.$error.pattern}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="schedule.name" data-ng-pattern="settings.patternName" required/>\n <span data-ng-show="forms.general.$submitted && forms.general.name.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START ACTIVE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_ACTIVE\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="schedule.active"\n type="checkbox"\n name="status"\n switch-active="{{ switches.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ switches.onColor }}"\n switch-off-color="{{ switches.offColor }}"\n switch-animate="{{ switches.animate }}"\n switch-size="{{ switches.size }}"\n switch-label="{{ switches.label }}"\n switch-icon="{{ switches.icon }}"\n switch-radio-off="{{ switches.radioOff }}"\n switch-label-width="{{ switches.labelWidth }}"\n switch-handle-width="{{ switches.handleWidth }}">\n </div>\n <!-- END ACTIVE -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="schedule.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n <!-- CONFIG TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.config" data-ng-switch="schedule.reportType" data-ng-submit="forms.config.$valid && forms.general.$valid && updateSchedule()" data-ng-if="schedule.type===\'report\'" data-ng-init="initReports()" novalidate>\n\n <div class="row">\n\n <!-- START TYPE -->\n <div class="form-group col-md-2" data-ng-class="{\'has-error\': (forms.config.type.$touched || forms.config.$submitted) && forms.config.type.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="schedule.reportType" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_TYPE\' | translate }}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="report in [\'default\', \'custom\'] | filter: $select.search">\n <div ng-bind-html="report | capitalize | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.type.$touched || forms.config.$submitted) && forms.config.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TYPE -->\n\n\n <!-- START REPORT -->\n <div data-ng-switch-when="default" class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.config.reportId.$touched || forms.config.$submitted) && forms.config.reportId.$invalid}">\n <label class="control-label">{{ \'APPLICATION_REPORT\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="schedule.reportId" name="reportId" theme="bootstrap" on-select="setReportTree($item,$model)" required>\n <ui-select-match placeholder="{{ \'APPLICATION_REPORT\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices group-by="\'parent\'" repeat="report.id as report in defRep | filter: $select.search">\n <div ng-bind-html="report.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.reportId.$touched || forms.config.$submitted) && forms.config.reportId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END REPORT -->\n\n <!-- START REPORT -->\n <div data-ng-switch-when="custom" class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.config.reportId.$touched || forms.config.$submitted) && forms.config.reportId.$invalid}">\n <label class="control-label">{{ \'APPLICATION_REPORT\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="schedule.reportId" name="reportId" theme="bootstrap" on-select="setReportTree($item,$model)" required>\n <ui-select-match placeholder="{{ \'APPLICATION_REPORT\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices group-by="\'parent\'" repeat="report.id as report in cusRep | filter: $select.search">\n <div ng-bind-html="report.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.reportId.$touched || forms.config.$submitted) && forms.config.reportId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END REPORT -->\n\n <!-- START REPORT -->\n <div class="form-group col-md-2" data-ng-class="{\'has-error\': (forms.config.reportOutput.$touched || forms.config.$submitted) && forms.config.reportOutput.$invalid}">\n <label class="control-label">{{ \'APPLICATION_OUTPUT\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="schedule.reportOutput" name="reportOutput" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_OUTPUT\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="output in [\'CSV\',\'PDF\'] | filter: $select.search">\n <div ng-bind-html="output | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.reportOutput.$touched || forms.config.$submitted) && forms.config.reportOutput.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END REPORT -->\n\n </div>\n\n <!-- START TODAY -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_RUN_ON\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n data-ng-model="switchValues.today"\n type="checkbox"\n name="status"\n data-ng-change="checkToday()"\n switch-active="{{ switches.isActive }}"\n switch-on-text="{{ \'APPLICATION_TODAY\' | translate }}"\n switch-off-text="{{ \'APPLICATION_RANGE\' | translate }}"\n switch-on-color="{{ switches.onColor }}"\n switch-off-color="{{ switches.offColor }}"\n switch-animate="{{ switches.animate }}"\n switch-size="{{ switches.size }}"\n switch-label="{{ switches.label }}"\n switch-icon="{{ switches.icon }}"\n switch-radio-off="{{ switches.radioOff }}"\n switch-label-width="{{ switches.labelWidth }}"\n switch-handle-width="{{ switches.handleWidth }}">\n </div>\n <!-- END TODAY -->\n\n <!-- START VALIDITY -->\n <div class="form-group" data-ng-if="switchValues.today">\n <label class="control-label">{{\'APPLICATION_VALIDITY\' | translate}}</label>\n <rzslider rz-slider-model="schedule.validityStart" rz-slider-high="schedule.validityEnd" rz-slider-options="validitySlider"></rzslider>\n </div>\n <!-- END VALIDITY -->\n\n <!-- START RANGE -->\n <div class="form-group" data-ng-if="!switchValues.today" data-ng-class="{\'has-error\': (forms.config.range.$touched || forms.config.$submitted) && forms.config.range.$invalid}">\n <label class="control-label">{{ \'APPLICATION_REPORT_RANGE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="schedule.reportRange" name="range" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_RANGE\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="range.value as range in reportRanges | filter: $select.search">\n <div ng-bind-html="range.name | highlight: $select.search | translate"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.range.$touched || forms.config.$submitted) && forms.config.range.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END RANGE -->\n\n <!-- START TODAY CRON -->\n <div class="form-group" data-ng-if="switchValues.today" data-ng-class="{\'has-error\': (forms.config.cron.$touched || forms.config.$submitted) && forms.config.cron.$invalid}">\n <label class="control-label">{{ \'APPLICATION_EXECUTE_EVERY\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="schedule.cron" name="cron" theme="bootstrap" data-ng-required="switchValues.today">\n <ui-select-match placeholder="{{ \'APPLICATION_EXECUTE_EVERY\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="cron.value as cron in todayCron | filter: $select.search">\n <div ng-bind-html="cron.name | highlight: $select.search | translate"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.cron.$touched || forms.config.$submitted) && forms.config.cron.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TODAY -->\n <div class="row" data-ng-if="!switchValues.today">\n <!-- START CRONTYPE EXEC -->\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.config.cronType.$touched || forms.config.$submitted) && forms.config.cronType.$invalid}">\n <label class="control-label">{{ \'APPLICATION_EXECUTE_EVERY\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="rangeExec.type" name="cronType" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_EXECUTE_EVERY\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in cronTypes | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | translate"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.cronType.$touched || forms.config.$submitted) && forms.config.cronType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CRONTYPE -->\n\n <!-- START WEEKDAY -->\n <div class="form-group col-md-4" data-ng-if="schedule.cronType === \'weekly\'" data-ng-class="{\'has-error\': (forms.config.weekDay.$touched || forms.config.$submitted) && forms.config.weekDay.$invalid}">\n <label class="control-label">{{ \'APPLICATION_WEEKDAYS\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select multiple data-ng-model="rangeExec.weekDays" name="weekDay" theme="bootstrap" data-ng-required="schedule.cronType === \'weekly\'">\n <ui-select-match placeholder="{{ \'APPLICATION_WEEKDAYS\' | translate }}">{{$item.name | translate}}</ui-select-match>\n <ui-select-choices repeat="day.value as day in weekDays | filter: $select.search">\n <div ng-bind-html="day.name | highlight: $select.search | translate"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.weekDay.$touched || forms.config.$submitted) && forms.config.weekDay.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group col-md-4" data-ng-if="schedule.cronType === \'monthly\'" data-ng-class="{\'has-error\': (forms.config.monthDay.$touched || forms.config.$submitted) && forms.config.monthDay.$invalid}">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="rangeExec.monthDay" name="monthDay" theme="bootstrap" data-ng-required="schedule.cronType === \'monthly\'">\n <ui-select-match placeholder="{{ \'APPLICATION_MONTHDAY\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="day in monthDays | filter: $select.search">\n <div ng-bind-html="day | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.monthDay.$touched || forms.config.$submitted) && forms.config.monthDay.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START HOUR -->\n <div class="form-group col-md-4" data-ng-if="schedule.cronType" data-ng-class="{\'has-error\': (forms.config.hour.$touched || forms.config.$submitted) && forms.config.hour.$invalid}">\n <label class="control-label">{{ \'APPLICATION_HOUR\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="rangeExec.hour" name="hour" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_HOUR\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="hour in hours | filter: $select.search">\n <div ng-bind-html="hour | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.hour.$touched || forms.config.$submitted) && forms.config.hour.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END HOUR -->\n </div>\n\n <!-- START SEND MAIL -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_SEND_MAIL\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n data-ng-model="schedule.sendMail"\n type="checkbox"\n name="status"\n switch-active="{{ switches.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ switches.onColor }}"\n switch-off-color="{{ switches.offColor }}"\n switch-animate="{{ switches.animate }}"\n switch-size="{{ switches.size }}"\n switch-label="{{ switches.label }}"\n switch-icon="{{ switches.icon }}"\n switch-radio-off="{{ switches.radioOff }}"\n switch-label-width="{{ switches.labelWidth }}"\n switch-handle-width="{{ switches.handleWidth }}">\n </div>\n <!-- END SEND MAIL -->\n <div class="row">\n <!-- START ACCOUNT -->\n <div class="form-group col-md-6" data-ng-class="{\'has-error\': (forms.config.MailServerOutId.$touched || forms.config.$submitted) && forms.config.MailServerOutId.$invalid}">\n <label class="control-label">{{ \'APPLICATION_ACCOUNT\' | translate }}<span class="required" data-ng-if="schedule.sendMail" aria-required="true">*</span></label>\n <ui-select data-ng-model="schedule.MailServerOutId" name="MailServerOutId" theme="bootstrap" data-ng-disabled="!schedule.sendMail" data-ng-required="schedule.sendMail">\n <ui-select-match placeholder="{{ \'APPLICATION_ACCOUNT\' | translate }}">{{$select.selected.username}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in mailServers | filter: $select.search">\n <div ng-bind-html="account.username | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.MailServerOutId.$touched || forms.config.$submitted) && forms.config.MailServerOutId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <div class="note note-warning" data-ng-hide="mailServers.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_ACCOUNTS_AVAILABLE\' | translate }}\n </p>\n </div>\n </div>\n <!-- END ACCOUNT -->\n\n <!-- START EMAIL -->\n <div class="form-group col-md-6" data-ng-class="{\'has-error\': (forms.config.$submitted && forms.config.email.$invalid) || forms.config.email.$error.pattern}">\n <label class="control-label">{{\'APPLICATION_EMAIL_ADDRESS\' | translate}}<span data-ng-if="schedule.sendMail" class="required" aria-required="true">*</span></label>\n <input type="email" name="email" placeholder="{{\'APPLICATION_EMAIL_ADDRESS\' | translate}}" class="form-control" data-ng-model="schedule.email" data-ng-disabled="!schedule.sendMail" data-ng-required="schedule.sendMail"/>\n <span data-ng-show="forms.config.$submitted && forms.config.email.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END CONFIG TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n<!-- <pre>\n {{rangeExec | json}}\n</pre>\n<pre>\n {{schedule | json}}\n</pre> -->\n'), -a.put("app/tools/scheduler/wizard/wizard.html",'<div class="col-md-12">\n <!-- BEGIN PAGE HEADER-->\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-calendar"></i>\n <a href="/tools/scheduler/list">{{ \'APPLICATION_SCHEDULER\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-options"></i>\n <a href="#">{{ \'APPLICATION_WIZARD\' | translate }}</a>\n </li>\n </ul>\n </div>\n <!-- END PAGE HEADER-->\n\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-link font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_SCHEDULE\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_GENERAL\' | translate}}" canexit="exitValidation(forms.general.$valid)">\n <form name="forms.general" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.$submitted && forms.general.name.$invalid) || forms.general.name.$error.pattern}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" data-ng-pattern="settings.patternName" required/>\n <span data-ng-show="forms.general.$submitted && forms.general.name.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START ACTIVE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_ACTIVE\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="item.active"\n type="checkbox"\n name="status"\n data-ng-init="item.active = 0"\n switch-active="{{ switches.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ switches.onColor }}"\n switch-off-color="{{ switches.offColor }}"\n switch-animate="{{ switches.animate }}"\n switch-size="{{ switches.size }}"\n switch-label="{{ switches.label }}"\n switch-icon="{{ switches.icon }}"\n switch-radio-off="{{ switches.radioOff }}"\n switch-label-width="{{ switches.labelWidth }}"\n switch-handle-width="{{ switches.handleWidth }}">\n </div>\n <!-- END ACTIVE -->\n\n <!-- START TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.type.$touched || forms.general.$submitted) && forms.general.type.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.type" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_TYPE\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in scheduleTypes | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | translate"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general.type.$touched || forms.general.$submitted) && forms.general.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TYPE -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <button class="btn green-haze" type="submit" ng-click="next(true)">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIGURATION\' | translate}}" canexit="exitValidation(forms.config.$valid)">\n <form name="forms.config" data-ng-switch="item.reportType" data-ng-if="item.type===\'report\'" data-ng-init="initReports()" novalidate>\n <div class="row">\n\n <!-- START TYPE -->\n <div class="form-group col-md-2" data-ng-class="{\'has-error\': (forms.config.type.$touched || forms.config.$submitted) && forms.config.type.$invalid}">\n <label class="control-label">{{ \'APPLICATION_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.reportType" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_TYPE\' | translate }}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="report in [\'default\', \'custom\'] | filter: $select.search">\n <div ng-bind-html="report | capitalize | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.type.$touched || forms.config.$submitted) && forms.config.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TYPE -->\n\n <!-- START DEFAULT REPORT -->\n <div data-ng-switch-when="default" class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.config.reportId.$touched || forms.config.$submitted) && forms.config.reportId.$invalid}">\n <label class="control-label">{{ \'APPLICATION_REPORT\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.reportId" name="reportId" theme="bootstrap" on-select="setReportTree($item,$model)" required>\n <ui-select-match placeholder="{{ \'APPLICATION_REPORT\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices group-by="\'parent\'" repeat="report.id as report in defRep | filter: $select.search">\n <div ng-bind-html="report.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.reportId.$touched || forms.config.$submitted) && forms.config.reportId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DEFAULT REPORT -->\n\n <!-- START CUSTOM REPORT -->\n <div data-ng-switch-when="custom" class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.config.reportId.$touched || forms.config.$submitted) && forms.config.reportId.$invalid}">\n <label class="control-label">{{ \'APPLICATION_REPORT\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.reportId" name="reportId" theme="bootstrap" on-select="setReportTree($item,$model)" required>\n <ui-select-match placeholder="{{ \'APPLICATION_REPORT\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices group-by="\'parent\'" repeat="report.id as report in cusRep | filter: $select.search">\n <div ng-bind-html="report.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.reportId.$touched || forms.config.$submitted) && forms.config.reportId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CUSTOM REPORT -->\n\n <!-- START OUTPUT -->\n <div class="form-group col-md-2" data-ng-class="{\'has-error\': (forms.config.reportOutput.$touched || forms.config.$submitted) && forms.config.reportOutput.$invalid}">\n <label class="control-label">{{ \'APPLICATION_OUTPUT\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.reportOutput" name="reportOutput" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_OUTPUT\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="output in [\'CSV\',\'PDF\'] | filter: $select.search">\n <div ng-bind-html="output | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.reportOutput.$touched || forms.config.$submitted) && forms.config.reportOutput.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OUTPUT -->\n\n </div>\n\n <!-- START TODAY -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_RUN_ON\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n data-ng-model="switchValues.today"\n type="checkbox"\n name="status"\n data-ng-change="checkToday()"\n switch-active="{{ switches.isActive }}"\n switch-on-text="{{ \'APPLICATION_TODAY\' | translate }}"\n switch-off-text="{{ \'APPLICATION_RANGE\' | translate }}"\n switch-on-color="{{ switches.onColor }}"\n switch-off-color="{{ switches.offColor }}"\n switch-animate="{{ switches.animate }}"\n switch-size="{{ switches.size }}"\n switch-label="{{ switches.label }}"\n switch-icon="{{ switches.icon }}"\n switch-radio-off="{{ switches.radioOff }}"\n switch-label-width="{{ switches.labelWidth }}"\n switch-handle-width="{{ switches.handleWidth }}">\n </div>\n <!-- END TODAY -->\n\n <!-- START VALIDITY -->\n <div class="form-group" data-ng-if="switchValues.today">\n <label class="control-label">{{\'APPLICATION_VALIDITY\' | translate}}</label>\n <rzslider rz-slider-model="item.validityStart" rz-slider-high="item.validityEnd" rz-slider-options="validitySlider" data-ng-init="item.validityStart = 8;item.validityEnd = 16;"></rzslider>\n </div>\n <!-- END VALIDITY -->\n\n <!-- START RANGE -->\n <div class="form-group" data-ng-if="!switchValues.today" data-ng-class="{\'has-error\': (forms.config.range.$touched || forms.config.$submitted) && forms.config.range.$invalid}">\n <label class="control-label">{{ \'APPLICATION_REPORT_RANGE\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.reportRange" name="range" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_RANGE\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="range.value as range in reportRanges | filter: $select.search">\n <div ng-bind-html="range.name | highlight: $select.search | translate"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.range.$touched || forms.config.$submitted) && forms.config.range.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END RANGE -->\n\n <!-- START TODAY CRON EXEC -->\n <div class="form-group" data-ng-if="switchValues.today" data-ng-class="{\'has-error\': (forms.config.cron.$touched || forms.config.$submitted) && forms.config.cron.$invalid}">\n <label class="control-label">{{ \'APPLICATION_EXECUTE_EVERY\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.cron" name="cron" theme="bootstrap" data-ng-required="switchValues.today">\n <ui-select-match placeholder="{{ \'APPLICATION_EXECUTE_EVERY\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="cron.value as cron in todayCron | filter: $select.search">\n <div ng-bind-html="cron.name | highlight: $select.search | translate"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.cron.$touched || forms.config.$submitted) && forms.config.cron.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TODAY CRON -->\n <div class="row" data-ng-if="!switchValues.today">\n <!-- START CRONTYPE EXEC -->\n <div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.config.cronType.$touched || forms.config.$submitted) && forms.config.cronType.$invalid}">\n <label class="control-label">{{ \'APPLICATION_EXECUTE_EVERY\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="rangeExec.type" name="cronType" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_EXECUTE_EVERY\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in cronTypes | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search | translate"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.cronType.$touched || forms.config.$submitted) && forms.config.cronType.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CRONTYPE -->\n\n <!-- START WEEKDAY -->\n <div class="form-group col-md-4" data-ng-if="item.cronType === \'weekly\'" data-ng-class="{\'has-error\': (forms.config.weekDay.$touched || forms.config.$submitted) && forms.config.weekDay.$invalid}">\n <label class="control-label">{{ \'APPLICATION_WEEKDAYS\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select multiple data-ng-model="rangeExec.weekDays" name="weekDay" theme="bootstrap" data-ng-required="item.cronType === \'weekly\'">\n <ui-select-match placeholder="{{ \'APPLICATION_WEEKDAYS\' | translate }}">{{$item.name | translate}}</ui-select-match>\n <ui-select-choices repeat="day.value as day in weekDays | filter: $select.search">\n <div ng-bind-html="day.name | highlight: $select.search | translate"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.weekDay.$touched || forms.config.$submitted) && forms.config.weekDay.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END WEEKDAY -->\n\n <!-- START MONTHDAY -->\n <div class="form-group col-md-4" data-ng-if="item.cronType === \'monthly\'" data-ng-class="{\'has-error\': (forms.config.monthDay.$touched || forms.config.$submitted) && forms.config.monthDay.$invalid}">\n <label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="rangeExec.monthDay" name="monthDay" theme="bootstrap" data-ng-required="item.cronType === \'monthly\'">\n <ui-select-match placeholder="{{ \'APPLICATION_MONTHDAY\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="day in monthDays | filter: $select.search">\n <div ng-bind-html="day | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.monthDay.$touched || forms.config.$submitted) && forms.config.monthDay.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END MONTHDAY -->\n\n <!-- START HOUR -->\n <div class="form-group col-md-4" data-ng-if="item.cronType" data-ng-class="{\'has-error\': (forms.config.hour.$touched || forms.config.$submitted) && forms.config.hour.$invalid}">\n <label class="control-label">{{ \'APPLICATION_HOUR\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="rangeExec.hour" name="hour" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_HOUR\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="hour in hours | filter: $select.search">\n <div ng-bind-html="hour | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.hour.$touched || forms.config.$submitted) && forms.config.hour.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END HOUR -->\n </div>\n\n <!-- START SEND MAIL -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_SEND_MAIL\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n data-ng-model="item.sendMail"\n type="checkbox"\n name="status"\n data-ng-init="item.sendMail = 0"\n switch-active="{{ switches.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ switches.onColor }}"\n switch-off-color="{{ switches.offColor }}"\n switch-animate="{{ switches.animate }}"\n switch-size="{{ switches.size }}"\n switch-label="{{ switches.label }}"\n switch-icon="{{ switches.icon }}"\n switch-radio-off="{{ switches.radioOff }}"\n switch-label-width="{{ switches.labelWidth }}"\n switch-handle-width="{{ switches.handleWidth }}">\n </div>\n <!-- END SEND MAIL -->\n <div class="row">\n <!-- START ACCOUNT -->\n <div class="form-group col-md-6" data-ng-class="{\'has-error\': (forms.config.MailServerOutId.$touched || forms.config.$submitted) && forms.config.MailServerOutId.$invalid}">\n <label class="control-label">{{ \'APPLICATION_ACCOUNT\' | translate }}<span class="required" data-ng-if="item.sendMail" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.MailServerOutId" name="MailServerOutId" theme="bootstrap" data-ng-disabled="!item.sendMail" data-ng-required="item.sendMail">\n <ui-select-match placeholder="{{ \'APPLICATION_ACCOUNT\' | translate }}">{{$select.selected.username}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in mailServers | filter: $select.search">\n <div ng-bind-html="account.username | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.config.MailServerOutId.$touched || forms.config.$submitted) && forms.config.MailServerOutId.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <div class="note note-warning" data-ng-hide="mailServers.length">\n <h4 class="block">Warning!</h4>\n <p>\n {{ \'MESSAGE_NO_ACCOUNTS_AVAILABLE\' | translate }}\n </p>\n </div>\n </div>\n <!-- END ACCOUNT -->\n\n <!-- START EMAIL -->\n <div class="form-group col-md-6" data-ng-class="{\'has-error\': (forms.config.$submitted && forms.config.email.$invalid) || forms.config.email.$error.pattern}">\n <label class="control-label">{{\'APPLICATION_EMAIL_ADDRESS\' | translate}}<span data-ng-if="item.sendMail" class="required" aria-required="true">*</span></label>\n <input type="email" name="email" placeholder="{{\'APPLICATION_EMAIL_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.email" required data-ng-disabled="!item.sendMail" data-ng-required="item.sendMail"/>\n <span data-ng-show="forms.config.$submitted && forms.config.email.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END EMAIL -->\n </div>\n\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <button class="btn green-haze" type="submit" ng-click="next()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END PORTLET-->\n</div>\n<!-- <pre>\n {{rangeExec | json}}\n</pre>\n<pre>\n {{item | json}}\n</pre> -->\n'),a.put("app/tools/sound/list/list.html",'<div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-music-tone-alt"></i>\n <a href="#">{{ \'APPLICATION_SOUNDS\' | translate }}</a>\n </li>\n </ul>\n <div class="page-toolbar">\n </div>\n</div>\n<!-- END PAGE HEADER-->\n<!-- BEGIN PAGE CONTENT-->\n<!-- Audio Portlets -->\n<div class="headline">\n <h3><i class="icon-music-tone-alt sounds-title-icon"></i> {{ \'APPLICATION_SOUNDS\' | translate }}</h3>\n</div>\n<div class="portlet light bg-inverse">\n <div class="portlet-title collapsible" ng-click="isCollapsed = !isCollapsed">\n <div class="caption">\n <i class="icon-puzzle font-red-flamingo"></i>\n <span class="caption-subject bold font-red-flamingo uppercase">\n {{\'APPLICATION_FILE_UPLOAD\' | translate}} </span>\n </div>\n <div class="tools">\n <a href="" ng-class="{\'collapse\': !isCollapsed, \'expand\' : isCollapsed}">\n </a>\n </div>\n </div>\n <div class="portlet-body" ng-slide-down="!isCollapsed">\n <div class="row" nv-file-drop="" uploader="uploader" filters="queueLimit, customFilter">\n <div class="col-md-4">\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-settings font-green-sharp"></i>\n <span class="caption-subject bold uppercase">{{\'APPLICATION_SELECT_FILES\' | translate}}</span>\n <span class="caption-helper hide"></span>\n </div>\n <div class="actions">\n </div>\n </div>\n <div class="portlet-body">\n <div ng-show="uploader.isHTML5">\n <div class="file-drop-zone margin-bottom-20" nv-file-over="" uploader="uploader" over-class="file-drop-zone-over">\n Base drop zone\n </div>\n </div>\n <span class="btn default btn-file">\n <span class="fileinput-new">\n {{\'APPLICATION_FILE_UPLOAD\' | translate}}</span>\n <input type="file" nv-file-select="" uploader="uploader" />\n </span>\n <span class="btn default btn-file">\n <span class="fileinput-new">\n {{\'APPLICATION_MULTI_FILE_UPLOAD\' | translate}}</span>\n <input type="file" nv-file-select="" uploader="uploader" multiple /><br/>\n </span>\n <p>\n </br>\n {{ \'MESSAGE_SUPPORTED_FORMATS\' | translate }} <b>wav, mp3, gsm, ogg</b>.\n </p>\n <p>\n {{ \'MESSAGE_MAXIMUM_SOUND_UPLOAD_SIZE\' | translate }} <b>15 Mb</b>.\n </p>\n </div>\n </div>\n </div>\n <div class="col-md-8">\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-settings font-green-sharp"></i>\n <span class="caption-subject bold uppercase">{{\'APPLICATION_UPLOAD_QUEUE\' | translate}}</span>\n <span class="caption-helper">{{\'APPLICATION_QUEUE_LENGTH\' | translate}}: {{ uploader.queue.length }}</span>\n </div>\n <div class="actions">\n </div>\n </div>\n <div class="portlet-body">\n <div class="table-scrollable table-scrollable-borderless">\n <table class="table table-hover table-light">\n <thead>\n <tr class="uppercase">\n <th width="50%">{{\'APPLICATION_NAME\' | translate}}</th>\n <th ng-show="uploader.isHTML5">{{\'APPLICATION_SIZE\' | translate}}</th>\n <th ng-show="uploader.isHTML5">{{\'APPLICATION_PROGRESS\' | translate}}</th>\n <th>{{\'APPLICATION_STATUS\' | translate}}</th>\n <th>{{\'APPLICATION_MESSAGE\' | translate}}</th>\n <th>{{\'APPLICATION_ACTIONS\' | translate}}</th>\n </tr>\n </thead>\n <tbody>\n <tr ng-repeat="item in uploader.queue">\n <td><strong>{{ item.file.name }}</strong></td>\n <td ng-show="uploader.isHTML5" nowrap>{{ item.file.size/1024/1024|number:2 }} MB</td>\n <td ng-show="uploader.isHTML5">\n <div class="progress progress-sm" style="margin-bottom: 0;">\n <div class="progress-bar progress-bar-info" role="progressbar" ng-style="{ \'width\': item.progress + \'%\' }"></div>\n </div>\n </td>\n <td class="text-center">\n <span ng-show="item.isSuccess" class="text-success"><i class="glyphicon glyphicon-ok"></i></span>\n <span ng-show="item.isCancel" class="text-info"><i class="glyphicon glyphicon-ban-circle"></i></span>\n <span ng-show="item.isError" class="text-danger"><i class="glyphicon glyphicon-remove"></i></span>\n <span ng-show="item.isUploading" class="text-info"><i class="glyphicon glyphicon-upload"></i></span>\n </td>\n <td class="text-center">\n <span ng-show="item.responseMessage" class="text-danger">{{item.responseMessage}}</span>\n </td>\n <td nowrap>\n <button type="button" class="btn btn-success btn-xs" ng-click="item.upload()" ng-disabled="item.isReady || item.isUploading || item.isSuccess">\n <span class="glyphicon glyphicon-upload"></span> {{\'APPLICATION_UPLOAD\' | translate}}\n </button>\n <button type="button" class="btn btn-warning btn-xs" ng-click="item.cancel()" ng-disabled="!item.isUploading">\n <span class="glyphicon glyphicon-ban-circle"></span> {{\'APPLICATION_CANCEL\' | translate}}\n </button>\n <button type="button" class="btn btn-danger btn-xs" ng-click="item.remove()">\n <span class="glyphicon glyphicon-trash"></span> {{\'APPLICATION_REMOVE\' | translate}}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <div>\n <p>{{\'APPLICATION_UPLOAD_QUEUE_PROGRESS\' | translate}}:</p>\n <div class="progress progress-sm" style="">\n <div class="progress-bar progress-bar-info" role="progressbar" ng-style="{ \'width\': uploader.progress + \'%\' }"></div>\n </div>\n </div>\n <button type="button" class="btn btn-success btn-s" ng-click="uploader.uploadAll()" ng-disabled="!uploader.getNotUploadedItems().length">\n <span class="glyphicon glyphicon-upload"></span> {{\'APPLICATION_UPLOAD_ALL\' | translate}}\n </button>\n <button type="button" class="btn btn-warning btn-s" ng-click="uploader.cancelAll()" ng-disabled="!uploader.isUploading">\n <span class="glyphicon glyphicon-ban-circle"></span> {{\'APPLICATION_CANCEL_ALL\' | translate}}\n </button>\n <button type="button" class="btn btn-danger btn-s" ng-click="uploader.clearQueue()" ng-disabled="!uploader.queue.length">\n <span class="glyphicon glyphicon-trash"></span> {{\'APPLICATION_REMOVE_ALL\' | translate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div class="row thumbnails" data-ng-init="initList()">\n <div class="row" ng-show="sounds.length == 0">\n <div class="col-md-12 page-404">\n <div class="details">\n <h3>{{ \'MESSAGE_NO_SOUNDS\' | translate }}</h3>\n <p>\n <a href="/">\n {{ \'MESSAGE_RETURN_HOME\' | translate }} </a>\n {{ \'MESSAGE_OR_UPLOAD_SOUND_FILE\' | translate }}\n </p>\n </div>\n </div>\n </div>\n <div class="audio-portlet-wrapper animate-repeat" ng-repeat="sound in sounds">\n <div class="audio-portlet">\n <div class="audio-portlet-title"><a href="#" editable-text="sound.display_name" onbeforesave="updateAudio(sound.id,{display_name : $data})">{{ sound.display_name || "Empty" }}</a></div>\n <img src="../assets/images/note_placeholder.png" alt="" class="img-responsive"/>\n <div class="file-info">\n <div class="audio-tag-wrapper">\n <audio-file-download params="{id:sound.id,controller:\'stream\'}" resource="Sound"></audio-file-download>\n </div>\n <p id="description_div">\n <a href="#" editable-text="sound.description" onbeforesave="updateAudio(sound.id,{description : $data})">{{ sound.description || "Empty" }}</a>\n </p>\n <p class="float-right">\n <button class="btn btn-xs green-meadow" uib-tooltip-template="\'audioInfoTemplate.html\'"><i class="icon-list"></i></button>\n <motion-file-download params="{id:sound.id,controller:\'download\'}" resource="Sound" mimetype="\'audio/\'+sound.original_format" tooltiptext="Download" filename="sound.display_name+\'.\'+sound.original_format" btnclass="{{downloadButtonClass}}" btncontent=\'{{downloadButtonContent}}\'></motion-file-download>\n <button uib-tooltip="Delete" class="btn btn-xs red-sunglo" ng-click="delete(sound.display_name, sound.id)" tooltip="Delete"><i class="icon-close" ></i></button>\n </p>\n </div>\n </div>\n </div>\n <script type="text/ng-template" id="audioInfoTemplate.html">\n <div>\n <ul class="list-unstyled">\n <li><b>Format : </b>{{sound.original_format}}</li>\n <li><b>Duration : </b>{{sound.original_duration | date: \'mm:ss\'}}</li>\n <li><b>Channels : </b>{{sound.original_channelCount}}</li>\n <li><b>Bitrate : </b>{{sound.original_bitRate/1024}} kbs</li>\n <li><b>Sample Rate : </b>{{sound.original_sampleRate/1000}} KHz</li>\n </ul>\n </div>\n </script>\n</div>\n<!-- End Audio Portlets -->\n'), -a.put("app/tools/tag/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_TAG\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required data-ng-pattern="settings.patternName"/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/tools/tag/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-tag"></i>\n <a href="#">{{ \'APPLICATION_TAGS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_TAGS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <button class="btn green-jungle " ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_TAG\' | translate }}\n </button>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/tag/view/view.chat.html",'<div class="row" >\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_TAGGED_CHAT\' | translate}}</span>\n </div>\n </div>\n\n <div class="portlet-body" data-ng-if="tag" data-ng-init="initChat()">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="false"></span>\n <!-- END UI-GRID SPINNER -->\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/tools/tag/view/view.contacts.html",'<div class="row" >\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_TAGGED_CONTACTS\' | translate}}</span>\n </div>\n </div>\n\n <div class="portlet-body" data-ng-if="tag" data-ng-init="initContacts()">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="false"></span>\n <!-- END UI-GRID SPINNER -->\n <!-- START TABLE -->\n <div ui-grid="gridOptions" data-ng-if="readyGrid && gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/tools/tag/view/view.fax.html",'<div class="row" >\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_TAGGED_FAX\' | translate}}</span>\n </div>\n </div>\n\n <div class="portlet-body" data-ng-if="tag" data-ng-init="initFax()">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="false"></span>\n <!-- END UI-GRID SPINNER -->\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/tools/tag/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getTag()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-tag"></i>\n <a href="/tools/tags/list">{{ \'APPLICATION_TAGS\' | translate }}</a>\n <i data-ng-show="tag" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="tag">\n <a href="#">{{tag.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/tag.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{tag.name}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.tools.tags.view.settings\')}">\n <a data-ng-href="/tools/tags/view/{{tag.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.tools.tags.view.chat\')}">\n <a data-ng-href="{{license.chat ? \'/tools/tags/view/\'+tag.id+\'/chat\' : \'#\'}}" data-ng-class="{\'disabled-link\':!license.chat}">\n <i class="icon-bubble"></i>\n {{ \'APPLICATION_CHAT\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.tools.tags.view.mail\')}">\n <a data-ng-href="{{license.mail ? \'/tools/tags/view/\'+tag.id+\'/mail\' : \'#\'}}" data-ng-class="{\'disabled-link\':!license.mail}">\n <i class="icon-envelope"></i>\n {{ \'APPLICATION_MAIL\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.tools.tags.view.fax\')}">\n <a data-ng-href="{{license.fax ? \'/tools/tags/view/\'+tag.id+\'/fax\' : \'#\'}}" data-ng-class="{\'disabled-link\':!license.fax}">\n <i class="fa fa-fax"></i>\n {{ \'APPLICATION_FAX\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.tools.tags.view.sms\')}" >\n <a data-ng-href="{{license.messaging ? \'/tools/tags/view/\'+tag.id+\'/sms\' : \'#\'}}" data-ng-class="{\'disabled-link\':!license.messaging}">\n <i class="glyphicon glyphicon-comment"></i>\n {{ \'APPLICATION_SMS\' | translate}} </a>\n </li>\n <li data-ng-class="{active: $state.is(\'main.tools.tags.view.contacts\')}">\n <a data-ng-href="{{license.cm ? \'/tools/tags/view/\'+tag.id+\'/contacts\' : \'#\'}}" data-ng-class="{\'disabled-link\':!license.cm}">\n <i class="fa fa-users"></i>\n {{ \'APPLICATION_CONTACTS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/tag/view/view.mail.html",'<div class="row" >\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_TAGGED_MAIL\' | translate}}</span>\n </div>\n </div>\n\n <div class="portlet-body" data-ng-if="tag" data-ng-init="initMail()">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="false"></span>\n <!-- END UI-GRID SPINNER -->\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/tools/tag/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_TAG\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="spinner-grid" spinner-start-active="false"></span>\n <!-- END UI-GRID SPINNER -->\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateTag()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="tag.name" required data-ng-pattern="settings.patternName"/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="tag.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/tools/tag/view/view.sms.html",'<div class="row" >\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_TAGGED_SMS\' | translate}}</span>\n </div>\n </div>\n\n <div class="portlet-body" data-ng-if="tag" data-ng-init="initSms()">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/tools/template/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="#">{{ \'APPLICATION_TEMPLATES\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-wrench font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_TEMPLATES\' | translate }}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/tools/templates/wizard">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_TEMPLATE\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/template/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initItem()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="/tools/templates/list">{{ \'APPLICATION_TEMPLATES\' | translate }}</a>\n <i data-ng-show="item" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="item">\n <a href="#">{{item.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/template.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{item.name}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.tools.templates.view.settings\')}">\n <a data-ng-href="/tools/templates/view/{{item.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}}\n </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/template/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n </div>\n </div>\n <div class="portlet-body">\n\n <form name="form" data-ng-submit="form.$valid && updateItem()" class="form-horizontal" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': form.name.$invalid && form.$submitted}">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-2">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}:<span class="required" aria-required="true">*</span></label>\n </div>\n <div class="col-md-10">\n <input type="text" name="name" class="form-control todo-taskbody-taskdesc" placeholder="{{\'APPLICATION_NAME\' | translate}}..." data-ng-model="item.name" required>\n <span data-ng-show="form.name.$invalid && form.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group" data-ng-class="{\'has-error\': form.description.$invalid && form.$submitted}">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-2">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}:</label>\n </div>\n <div class="col-md-10">\n <input type="text" name="description" class="form-control todo-taskbody-taskdesc" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}..." rows="8" data-ng-model="item.description">\n <span data-ng-show="form.description.$invalid && form.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n <!-- END NAME -->\n\n <hr>\n\n <!-- START SUBJECT -->\n <div class="form-group row" data-ng-class="{\'has-error\': form.subject.$invalid && form.$submitted}">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-2">\n <label class="control-label">{{\'APPLICATION_SUBJECT\' | translate}}:</label>\n </div>\n <div class="col-md-10">\n <input type="text" name="subject" class="form-control todo-taskbody-taskdesc" placeholder="{{\'APPLICATION_SUBJECT\' | translate}}..." rows="8" data-ng-model="item.subject">\n <span data-ng-show="form.subject.$invalid && form.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n <!-- END SUJBECT -->\n\n <!-- START HTML -->\n <div class="form-group row" data-ng-class="{\'has-error\': form.text.$invalid && form.$submitted}">\n <div class="col-md-12">\n <div ckeditor="options" ng-model="item.html"></div>\n <span data-ng-show="form.text.$invalid && form.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <!-- END HTML -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/tools/template/wizard/wizard.html",'<div class="row">\n <div class="col-md-12">\n <!-- BEGIN PAGE HEADER-->\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-docs"></i>\n <a href="/tools/templates/list">{{ \'APPLICATION_TEMPLATES\' | translate }}</a>\n </li>\n </ul>\n </div>\n <!-- END PAGE HEADER-->\n\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered" data-ng-init="initWizard()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_TEMPLATES\' | translate }} FORM</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <form name="form" data-ng-submit="form.$valid && createItem()" class="form-horizontal" novalidate>\n <!-- START HEAD -->\n <div class="form">\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': form.name.$invalid && form.$submitted}">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}:<span class="required" aria-required="true">*</span></label>\n </div>\n <div class="col-md-11">\n <input type="text" name="name" class="form-control todo-taskbody-taskdesc" placeholder="{{\'APPLICATION_NAME\' | translate}}..." data-ng-model="item.name" required>\n <span data-ng-show="form.name.$invalid && form.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group" data-ng-class="{\'has-error\': form.description.$invalid && form.$submitted}">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}:</label>\n </div>\n <div class="col-md-11">\n <input type="text" name="description" class="form-control todo-taskbody-taskdesc" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}..." rows="8" data-ng-model="item.description">\n <span data-ng-show="form.description.$invalid && form.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n <!-- END NAME -->\n\n <!-- START SUBJECT -->\n <div class="form-group" data-ng-class="{\'has-error\': form.subject.$invalid && form.$submitted}">\n <div class="col-md-12">\n <div class="row">\n <div class="col-md-1">\n <label class="control-label">{{\'APPLICATION_SUBJECT\' | translate}}:</label>\n </div>\n <div class="col-md-11">\n <input type="text" name="subject" class="form-control todo-taskbody-taskdesc" placeholder="{{\'APPLICATION_SUBJECT\' | translate}}..." rows="8" data-ng-model="item.subject">\n <span data-ng-show="form.subject.$invalid && form.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n </div>\n <!-- END SUJBECT -->\n\n <!-- START HTML -->\n <div class="form-group row" data-ng-class="{\'has-error\': form.text.$invalid && form.$submitted}">\n <div class="col-md-12">\n <div ckeditor="options" ng-model="item.html"></div>\n <span data-ng-show="form.text.$invalid && form.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n <!-- END HTML -->\n\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" data-ng-click="goNext()"/>\n </form>\n </div>\n </div>\n <!-- END PORTLET-->\n </div>\n</div>\n'),a.put("app/tools/trigger/list/list.html",'<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bulb"></i>\n <a href="#">{{ \'APPLICATION_TRIGGERS\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-bulb font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_TRIGGERS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle " href="/tools/triggers/wizard">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_TRIGGER\' | translate }}\n </a>\n </div>\n <!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> -->\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/trigger/view/view.html",'<!-- BEGIN PAGE HEADER-->\n<div class="row" data-ng-init="initView();">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bulb"></i>\n <a href="/tools/triggers/list">{{ \'APPLICATION_TRIGGERS\' | translate }}</a>\n <i class="fa fa-angle-right" data-ng-show="trigger"></i>\n </li>\n <li data-ng-show="trigger">\n <a href="#">{{ trigger.description || trigger.name }}</a>\n </li>\n </ul>\n </div>\n\n<!-- END PAGE HEADER-->\n\n<!-- BEGIN PAGE CONTENT-->\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/trigger.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{ trigger.name }}\n </div>\n <div class="profile-usertitle-job">\n {{ trigger.description }}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.tools.triggers.view.settings\')}">\n <a href="/tools/triggers/view/{{trigger.id}}/settings">\n <i class="icon-bulb"></i>\n {{ \'APPLICATION_SETTINGS\' | translate }} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/trigger/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERALS\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_CONDITIONS\' | translate}} & {{\'APPLICATION_ACTIONS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <form name="forms.general" data-ng-submit="exitValidation(forms.general.$valid) && updateTrigger()" novalidate>\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="trigger.name" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START CHANNEL -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.channel.$touched || forms.general.$submitted) && forms.general.channel.$invalid}">\n <label class="control-label">{{\'APPLICATION_CHANNEL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="channel" placeholder="{{\'APPLICATION_CHANNEL\' | translate}}" class="form-control" data-ng-model="trigger.channel" required readonly/>\n <span data-ng-show="(forms.general.channel.$touched || forms.general.$submitted) && forms.general.channel.$invalid && forms.general.channel.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CHANNEL -->\n\n <!-- START STATUS -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_STATUS\' | translate}}</label>\n </br>\n <input bs-switch class="form-control" ng-model="trigger.status" type="checkbox" name="status" switch-active="{{ recordSwitch.isActive }}" switch-on-text="{{ recordSwitch.onText }}" switch-off-text="{{ recordSwitch.offText }}" switch-on-color="{{ recordSwitch.onColor }}"\n switch-off-color="{{ recordSwitch.offColor }}" switch-animate="{{ recordSwitch.animate }}" switch-size="{{ recordSwitch.size }}" switch-label="{{ recordSwitch.label }}" switch-icon="{{ recordSwitch.icon }}" switch-radio-off="{{ recordSwitch.radioOff }}"\n switch-label-width="{{ recordSwitch.labelWidth }}" switch-handle-width="{{ recordSwitch.handleWidth }}">\n </div>\n <!-- END STATUS -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="trigger.description" />\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}" />\n </div>\n <!-- END GENERAL TAB -->\n <div class="tab-pane" id="tab_1_2">\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <i class="icon-tag font-blue-hoki"></i>\n <span class="caption-subject" ng-bind-html="\'APPLICATION_MEET_ALL_CONDITIONS\' | translate"></span>:\n </div>\n </div>\n <div class="portlet-body">\n <div class="portlet light bordered" ng-repeat="all in trigger.All">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <span class="caption-subject">{{ \'APPLICATION_ALL\' | translate }} #{{$index+1}}</span>\n </div>\n <div class="actions">\n <a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeCondition(\'All\',$index)"><i class="fa fa-trash"></i></a>\n </div>\n </div>\n <div class="portlet-body">\n <div class="padding-bottom row">\n <div class="col-md-12">\n <condition-builder element="all" serviceindex="trigger.channel" service="$triggers" form="forms.general"></condition-builder>\n </div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-12">\n <button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addCondition(\'All\')">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_CONDITION\' | translate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <i class="icon-tag font-blue-hoki"></i>\n <span class="caption-subject" ng-bind-html="\'APPLICATION_MEET_ANY_CONDITIONS\' | translate"></span>:\n </div>\n </div>\n <div class="portlet-body">\n <div class="portlet light bordered" ng-repeat="any in trigger.Any">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <span class="caption-subject">{{ \'APPLICATION_ANY\' | translate }} #{{$index+1}}</span>\n </div>\n <div class="actions">\n <a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeCondition(\'Any\',$index)"><i class="fa fa-trash"></i></a>\n </div>\n </div>\n <div class="portlet-body">\n <div class="padding-bottom row">\n <div class="col-md-12">\n <condition-builder element="any" serviceindex="trigger.channel" service="$triggers" form="forms.general"></condition-builder>\n </div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-12">\n <button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addCondition(\'Any\')">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_CONDITION\' | translate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <i class="icon-tag font-blue-hoki"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACTIONS\' | translate }}</span>:\n </div>\n </div>\n <div class="portlet-body">\n <div class="portlet light bordered" ng-repeat="action in trigger.Actions">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <span class="caption-subject">{{ \'APPLICATION_ACTIONS\' | translate }} #{{$index+1}}</span>\n </div>\n <div class="actions">\n <a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeAction($index)"><i class="fa fa-trash"></i></a>\n </div>\n </div>\n <div class="portlet-body">\n <div class="padding-bottom row">\n <div class="col-md-12">\n <div class="form-group col-md-6" data-ng-class="{\'has-error\': (forms.general[\'action\'+$index].$touched || forms.general.$submitted) && forms.general[\'action\'+$index].$invalid}">\n <ui-select data-ng-model="action.action" theme="bootstrap" name="action{{$index}}" data-ng-change="resetActionData(action)" required>\n <ui-select-match placeholder="{{ \'APPLICATION_ACTION\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="tAction.value as tAction in $triggers.services[trigger.channel].actions | filter: $select.search">\n <div ng-bind-html="tAction.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.general[\'action\'+$index].$touched || forms.general.$submitted) && forms.general[\'action\'+$index].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div ng-switch="action.action">\n <action-builder-template ng-switch-when="template" element="action" form="forms.general"></action-builder-template>\n <action-builder-account-template ng-switch-when="accountTemplate" element="action" form="forms.general"></action-builder-account-template>\n <action-builder-integration ng-switch-when="integration" element="action" form="forms.general"></action-builder-integration>\n <action-builder-motion-bar ng-switch-when="motionbar" element="action" form="forms.general"></action-builder-motion-bar>\n <action-builder-jscripty ng-switch-when="jscripty" element="action" form="forms.general"></action-builder-jscripty>\n <action-builder-url-forward ng-switch-when="urlForward" element="action" form="forms.general"></action-builder-url-forward>\n <action-builder-close ng-switch-when="close" element="action" form="forms.general"></action-builder-close>\n <action-builder-forward ng-switch-when="forward" element="action" form="forms.general"></action-builder-forward>\n <action-builder-tag ng-switch-when="tag" element="action" form="forms.general"></action-builder-tag>\n <action-builder-http ng-switch-when="http" element="action" form="forms.general"></action-builder-http>\n <action-builder-email ng-switch-when="email" element="action" form="forms.general"></action-builder-email>\n <action-builder-account-email ng-switch-when="accountEmail" element="action" form="forms.general"></action-builder-account-email>\n <action-builder-account-sms ng-switch-when="accountSms" element="action" form="forms.general"></action-builder-account-sms>\n <action-builder-cm ng-switch-when="contactManager" element="action" form="forms.general"></action-builder-cm>\n <action-builder-web-popup ng-switch-when="webPopup" element="action" form="forms.general"></action-builder-web-popup>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-12">\n <button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addAction()">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_ACTION\' | translate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n <!-- <div class="has-error" data-ng-show="forms.general.$submitted && !trigger.All.length && !trigger.Any.length">\n <span class="help-block help-block-error form-control">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INSERT_AT_LEAST_ONE_CONDITION\' | translate}}.\n </span>\n </div> -->\n <div class="has-error" data-ng-show="forms.general.$submitted && !trigger.Actions.length">\n <span class="help-block help-block-error form-control">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INSERT_AT_LEAST_ONE_ACTION\' | translate}}.\n </span>\n </div>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}" />\n </div>\n </div>\n </form>\n </div>\n </div>\n</div>\n</div>\n'), -a.put("app/tools/trigger/wizard/wizard.html",'<div class="row">\n <div class="col-md-12">\n <!-- BEGIN PAGE HEADER-->\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-bulb"></i>\n <a href="/tools/triggers/list">{{ \'APPLICATION_TRIGGERS\' | translate }}</a>\n </li>\n </ul>\n </div>\n <!-- END PAGE HEADER-->\n\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-bulb font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_TRIGGERS\' | translate }} WIZARD</span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_GENERAL\' | translate}}" canexit="exitValidation(forms.general.$valid)">\n <form name="forms.general" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START STATUS -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_STATUS\' | translate}}</label>\n </br>\n <input bs-switch class="form-control" ng-model="item.status" type="checkbox" name="status" data-ng-init="item.status = 0" switch-active="{{ statusSwitch.isActive }}" switch-on-text="{{ statusSwitch.onText }}" switch-off-text="{{ statusSwitch.offText }}"\n switch-on-color="{{ statusSwitch.onColor }}" switch-off-color="{{ statusSwitch.offColor }}" switch-animate="{{ statusSwitch.animate }}" switch-size="{{ statusSwitch.size }}" switch-label="{{ statusSwitch.label }}" switch-icon="{{ statusSwitch.icon }}"\n switch-radio-off="{{ statusSwitch.radioOff }}" switch-label-width="{{ statusSwitch.labelWidth }}" switch-handle-width="{{ statusSwitch.handleWidth }}">\n </div>\n <!-- END STATUS -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description" />\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()" />\n </form>\n </wz-step>\n <wz-step title="{{\'APPLICATION_SETTINGS\' | translate}}" canexit="exitSettingsValidation(forms.settings.$valid)">\n <form name="forms.settings" novalidate>\n\n <!-- Channel -->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <i class="icon-tag font-blue-hoki"></i>\n <span class="caption-subject">{{ \'APPLICATION_CHANNEL\' | translate }}</span>\n </div>\n </div>\n <div class="portlet-body">\n <div class="form-group" data-ng-class="{\'has-error\': (forms.settings.channel.$touched || forms.settings.$submitted) && forms.settings.channel.$invalid}">\n <label class="control-label">{{ \'APPLICATION_CHANNEL\' | translate }}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.channel" name="channel" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_CHANNEL\' | translate }}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="channel in $triggers.channels | filter: $select.search">\n <div ng-bind-html="channel | highlight: $select.search | capitalize"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(forms.settings.channel.$touched || forms.settings.$submitted) && forms.settings.channel.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n </div>\n </div>\n\n <!-- All -->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <i class="icon-tag font-blue-hoki"></i>\n <span class="caption-subject" ng-bind-html="\'APPLICATION_MEET_ALL_CONDITIONS\' | translate"></span>:\n </div>\n </div>\n <div class="portlet-body">\n <div class="portlet light bordered" ng-repeat="all in item.All">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <span class="caption-subject">{{ \'APPLICATION_ALL\' | translate }} #{{$index+1}}</span>\n </div>\n <div class="actions">\n <a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeCondition(\'All\',$index)"><i class="fa fa-trash"></i></a>\n </div>\n </div>\n <div class="portlet-body">\n <div class="padding-bottom row">\n <div class="col-md-12">\n <condition-builder element="all" serviceindex="item.channel" service="$triggers" form="forms.general"></condition-builder>\n </div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-12">\n <button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addCondition(\'All\')">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_CONDITION\' | translate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Any -->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <i class="icon-tag font-blue-hoki"></i>\n <span class="caption-subject" ng-bind-html="\'APPLICATION_MEET_ANY_CONDITIONS\' | translate"></span>:\n </div>\n </div>\n <div class="portlet-body">\n <div class="portlet light bordered" ng-repeat="any in item.Any">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <span class="caption-subject">{{ \'APPLICATION_ANY\' | translate }} #{{$index+1}}</span>\n </div>\n <div class="actions">\n <a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeCondition(\'Any\',$index)"><i class="fa fa-trash"></i></a>\n </div>\n </div>\n <div class="portlet-body">\n <div class="padding-bottom row">\n <div class="col-md-12">\n <condition-builder element="any" serviceindex="item.channel" service="$triggers" form="forms.general"></condition-builder>\n </div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-12">\n <button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addCondition(\'Any\')">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_CONDITION\' | translate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Actions -->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <i class="icon-tag font-blue-hoki"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACTIONS\' | translate }}</span>:\n </div>\n </div>\n <div class="portlet-body">\n <div class="portlet light bordered" ng-repeat="action in item.Actions">\n <div class="portlet-title">\n <div class="caption font-blue-hoki">\n <span class="caption-subject">{{ \'APPLICATION_ACTIONS\' | translate }} #{{$index+1}}</span>\n </div>\n <div class="actions">\n <a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeAction($index)"><i class="fa fa-trash"></i></a>\n </div>\n </div>\n <div class="portlet-body">\n <div class="padding-bottom row">\n <!-- <div class="col-md-12"> -->\n <div class="form-group col-md-6" data-ng-class="{\'has-error\': (forms.general[\'action\'+$index].$touched || forms.general.$submitted) && forms.general[\'action\'+$index].$invalid}">\n <ui-select data-ng-model="action.action" theme="bootstrap" data-ng-change="resetActionData(action)" name="action{{$index}}" required>\n <ui-select-match placeholder="{{ \'APPLICATION_ACTION\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="tAction.value as tAction in $triggers.services[item.channel].actions | filter: $select.search">\n <div ng-bind-html="tAction.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <!-- <span class="help-block">\n {{ \'APPLICATION_ACTION\' | translate }}\n </span> -->\n <span data-ng-show="(forms.general[\'action\'+$index].$touched || forms.general.$submitted) && forms.general[\'action\'+$index].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <div ng-switch="action.action">\n <action-builder-template ng-switch-when="template" element="action" form="forms.general"></action-builder-template>\n <action-builder-account-template ng-switch-when="accountTemplate" element="action" form="forms.general"></action-builder-account-template>\n <action-builder-integration ng-switch-when="integration" element="action" form="forms.general"></action-builder-integration>\n <action-builder-motion-bar ng-switch-when="motionbar" element="action" form="forms.general"></action-builder-motion-bar>\n <action-builder-jscripty ng-switch-when="jscripty" element="action" form="forms.general"></action-builder-jscripty>\n <action-builder-url-forward ng-switch-when="urlForward" element="action" form="forms.general"></action-builder-url-forward>\n <action-builder-close ng-switch-when="close" element="action" form="forms.general"></action-builder-close>\n <action-builder-forward ng-switch-when="forward" element="action" form="forms.general"></action-builder-forward>\n <action-builder-tag ng-switch-when="tag" element="action" form="forms.general"></action-builder-tag>\n <action-builder-http ng-switch-when="http" element="action" form="forms.general"></action-builder-http>\n <action-builder-email ng-switch-when="email" element="action" form="forms.general"></action-builder-email>\n <action-builder-account-email ng-switch-when="accountEmail" element="action" form="forms.general"></action-builder-account-email>\n <action-builder-account-sms ng-switch-when="accountSms" element="action" form="forms.general"></action-builder-account-sms>\n <action-builder-cm ng-switch-when="contactManager" element="action" form="forms.general"></action-builder-cm>\n <action-builder-web-popup ng-switch-when="webPopup" element="action" form="forms.general"></action-builder-web-popup>\n </div>\n <!-- </div> -->\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-12">\n <button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addAction()">\n <i class="fa fa-plus"></i> {{\'APPLICATION_ADD_ACTION\' | translate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- <div class="has-error" data-ng-show="forms.settings.$submitted && !item.All.length && !item.Any.length">\n <span class="help-block help-block-error form-control">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INSERT_AT_LEAST_ONE_CONDITION\' | translate}}.\n </span>\n </div> -->\n <div class="has-error" data-ng-show="forms.settings.$submitted && !item.Actions.length">\n <span class="help-block help-block-error form-control">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INSERT_AT_LEAST_ONE_ACTION\' | translate}}.\n </span>\n </div>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()" />\n </form>\n </wz-step>\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}" />\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END PORTLET-->\n</div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/trunk/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-link"></i>\n <a href="#">{{ \'APPLICATION_TRUNKS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-link font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_TRUNKS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <a class="btn green-jungle" href="/tools/trunks/wizard" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_TRUNK\' | translate }}\n </a>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/trunk/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-link"></i>\n <a href="/tools/trunks/list">{{ \'APPLICATION_TRUNKS\' | translate }}</a>\n <i data-ng-show="trunk" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="trunk">\n <a href="#">{{trunk.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/trunk.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{trunk.name}}\n </div>\n <p data-ng-if="trunk.active && trunk.registry && trunk.status">({{trunk.status}})</p>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.tools.trunks.view.settings\')}">\n <a data-ng-href="/tools/trunks/view/{{trunk.name}}/settings"><i class="icon-settings"></i> {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/trunk/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_TRUNK\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{ \'APPLICATION_ADVANCED\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{ \'APPLICATION_OTHER_FIELDS\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body" data-ng-init="getContexts();">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateTrunk()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="trunk.name" data-ng-pattern="settings.patternName" required readonly/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START ACTIVE -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_ACTIVE\' | translate}}</label></br>\n <input\n bs-switch\n class="form-control"\n ng-model="trunk.active"\n type="checkbox"\n name="auth"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-off-color="{{ activeSwitch.offColor }}"\n switch-on-color="{{ activeSwitch.onColor }}"\n switch-animate="{{ activeSwitch.animate }}"\n switch-size="{{ activeSwitch.size }}"\n switch-label="{{ activeSwitch.label }}"\n switch-icon="{{ activeSwitch.icon }}"\n switch-radio-off="{{ activeSwitch.radioOff }}"\n switch-label-width="{{ activeSwitch.labelWidth }}"\n switch-handle-width="{{ activeSwitch.handleWidth }}">\n </div>\n <!-- END ACTIVE -->\n <div class="row">\n\n <div class="col-md-6">\n\n <!-- START HOST -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.host.$touched || forms.general.$submitted) && forms.general.host.$invalid}">\n <label class="control-label">{{\'APPLICATION_HOST\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="host" placeholder="{{\'APPLICATION_HOST\' | translate}}" class="form-control" data-ng-model="trunk.host" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_HOST\' | translate }}\n </span>\n <span data-ng-show="(forms.general.host.$touched || forms.general.$submitted) && forms.general.host.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END HOST -->\n\n <!-- START SECRET -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.secret.$touched || forms.general.$submitted) && forms.general.secret.$invalid}">\n <label class="control-label">{{\'APPLICATION_SECRET\' | translate}}</label>\n <input type="password" name="secret" placeholder="{{\'APPLICATION_SECRET\' | translate}}" class="form-control" data-ng-model="trunk.secret">\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_SECRET\' | translate }}\n </span>\n <span data-ng-show="(forms.general.secret.$touched || forms.general.$submitted) && forms.general.secret.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SECRET -->\n\n <!-- START CONTEXT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.context.$touched || forms.general.$submitted) && forms.general.context.$invalid}">\n <label class="control-label">{{\'APPLICATION_CONTEXT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="trunk.context" name="context" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="context.name as context in voiceContexts | filter: $select.search">\n <div ng-bind-html="context.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_VOICE_CONTEXT\' | translate }}\n </span>\n <span data-ng-show="(forms.general.context.$touched || forms.general.$submitted) && forms.general.context.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CONTEXT -->\n\n <!-- START CALLERID -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.callerid.$touched || forms.general.$submitted) && forms.general.callerid.$invalid}">\n <label class="control-label">{{\'APPLICATION_CALLERID\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="callerid" pattern=\'^"[a-zA-Z0-9_.-]*" <[a-zA-Z0-9_.-]*>\' placeholder="{{\'APPLICATION_CALLERID\' | translate}}" class="form-control" data-ng-model="trunk.callerid"/>\n <span class="help-block">\n {{ \'DESCRIPTION_OUTBOUND_CALLERID\' | translate }} "name" <number>\n </span>\n <span data-ng-show="(forms.general.callerid.$touched || forms.general.$submitted) && forms.general.callerid.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CALLERID -->\n\n <!-- START TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.type.$touched || forms.general.$submitted) && forms.general.type.$invalid}">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="trunk.type" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in [\'user\',\'peer\',\'friend\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search | capitalize"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_TYPE\' | translate }}\n </span>\n <span data-ng-show="(forms.general.type.$touched || forms.general.$submitted) && forms.general.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TYPE -->\n\n <!-- START DTMFMODE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.dtmfmode.$touched || forms.general.$submitted) && forms.general.dtmfmode.$invalid}">\n <label class="control-label">{{\'APPLICATION_DTMFMODE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="trunk.dtmfmode" name="dtmfmode" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="item in [\'rfc2833\', \'info\', \'shortinfo\', \'inband\',\'auto\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_DTMFMODE\' | translate }}\n </span>\n <span data-ng-show="(forms.general.dtmfmode.$touched || forms.general.$submitted) && forms.general.dtmfmode.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DTMFMODE -->\n\n </div>\n\n <div class="col-md-6">\n\n <!-- START DEFAULT USER -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.$submitted && forms.general.defaultuser.$invalid}">\n <label class="control-label">{{\'APPLICATION_DEFAULT_USER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="defaultuser" placeholder="{{\'APPLICATION_DEFAULT_USER\' | translate}}" class="form-control" data-ng-model="trunk.defaultuser" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_DEFAULT_USER\' | translate }}\n </span>\n <span data-ng-show="forms.general.$submitted && (forms.general.defaultuser.$invalid)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DEFAULT USER -->\n\n <!-- START NAT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.nat.$touched || forms.general.$submitted) && forms.general.nat.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select multiple data-ng-model="trunk.nat" name="nat" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\', \'no\', \'never\', \'route\', \'force_rport\', \'comedia\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_NAT\' | translate }}\n </span>\n <span data-ng-show="(forms.general.nat.$touched || forms.general.$submitted) && forms.general.nat.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAT -->\n\n <!-- START QUALIFY -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.qualify.$touched || forms.general.$submitted) && forms.general.qualify.$invalid}">\n <label class="control-label">{{\'APPLICATION_QUALIFY\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="trunk.qualify" name="qualify" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\',\'no\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search | capitalize"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_QUALIFY\' | translate }}\n </span>\n <span data-ng-show="(forms.general.qualify.$touched || forms.general.$submitted) && forms.general.qualify.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END QUALIFY -->\n\n <!-- START ALLOW -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.allow.$touched || forms.general.$submitted) && forms.general.allow.$invalid}">\n <label class="control-label">{{\'APPLICATION_ALLOW_CODEC\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select multiple data-ng-model="trunk.allow" name="allow" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="item in [\'g723\',\'gsm\',\'ulaw\',\'alaw\',\'g726\',\'g722\',\'g729\',\'ilbc\',\'opus\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_ALLOW_CODEC\' | translate }}\n </span>\n <span data-ng-show="(forms.general.allow.$touched || forms.general.$submitted) && forms.general.allow.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ALLOW -->\n\n <!-- START INSECURE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.insecure.$touched || forms.general.$submitted) && forms.general.insecure.$invalid}">\n <label class="control-label">{{\'APPLICATION_INSECURE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select multiple data-ng-model="trunk.insecure" name="insecure" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="item in [\'port\',\'invite\',\'very\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_INSECURE\' | translate }}\n </span>\n <span data-ng-show="(forms.general.insecure.$touched || forms.general.$submitted) && forms.general.insecure.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END INSECURE -->\n\n <!-- START CALLLIMIT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.call_limit.$touched || forms.general.$submitted) && forms.general.call_limit.$invalid}">\n <label class="control-label">{{\'APPLICATION_CALLLIMIT\' | translate}}</label>\n <input type="number" min="0" name="call-limit" placeholder="{{\'APPLICATION_CALLLIMIT\' | translate}}" class="form-control" data-ng-model="trunk.call_limit"/>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_CALLLIMIT\' | translate }}\n </span>\n </div>\n <!-- END CALLLIMIT -->\n\n </div>\n </div>\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="trunk.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n <!-- ADVANCED TAB -->\n <div class="tab-pane" id="tab_1_2">\n <form name="forms.advanced" data-ng-submit="forms.advanced.$valid && updateTrunk()" novalidate>\n <div class="row">\n <div class="col-md-6">\n\n <!-- START REGISTRY -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_REGISTRY\' | translate}}</label>\n <input type="text" name="registry" placeholder="{{\'APPLICATION_REGISTRY\' | translate}}" class="form-control" data-ng-model="trunk.registry"/>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_REGISTRY\' | translate }}\n </span>\n </div>\n <!-- END REGISTRY -->\n\n <!-- START DIRECTMEDIA -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.directmedia.$touched || forms.advanced.$submitted) && forms.advanced.directmedia.$invalid}">\n <label class="control-label">{{\'APPLICATION_DIRECTMEDIA\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="trunk.directmedia" name="directmedia" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\', \'no\', \'nonat\', \'update\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search | capitalize"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_DIRECTMEDIA\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.directmedia.$touched || forms.advanced.$submitted) && forms.advanced.directmedia.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END DIRECTMEDIA -->\n\n <!-- START CALLCOUNTER -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.callcounter.$touched || forms.advanced.$submitted) && forms.advanced.callcounter.$invalid}">\n <label class="control-label">{{\'APPLICATION_CALLCOUNTER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="trunk.callcounter" name="callcounter" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\',\'no\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search | capitalize"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_CALLCOUNTER\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.callcounter.$touched || forms.advanced.$submitted) && forms.advanced.callcounter.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END CALLCOUNTER -->\n\n <!-- START FROMDOMAIN -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.advanced.$submitted && forms.advanced.fromdomain.$invalid}">\n <label class="control-label">{{\'APPLICATION_FROMDOMAIN\' | translate}}</label>\n <input type="text" name="fromdomain" placeholder="{{\'APPLICATION_FROMDOMAIN\' | translate}}" class="form-control" data-ng-model="trunk.fromdomain" />\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_FROMDOMAIN\' | translate }}\n </span>\n <span data-ng-show="forms.advanced.$submitted && (forms.advanced.fromdomain.$invalid)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FROMDOMAIN -->\n\n <!-- START FROMUSER -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.advanced.$submitted && forms.advanced.fromuser.$invalid}">\n <label class="control-label">{{\'APPLICATION_FROMUSER\' | translate}}</label>\n <input type="text" name="fromuser" placeholder="{{\'APPLICATION_FROMUSER\' | translate}}" class="form-control" data-ng-model="trunk.fromuser" />\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_FROMUSER\' | translate }}\n </span>\n <span data-ng-show="forms.advanced.$submitted && (forms.advanced.fromuser.$invalid)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END FROMUSER -->\n\n </div>\n <div class="col-md-6">\n\n <!-- START OUTBOUNDPROXY -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.advanced.$submitted && forms.advanced.outboundproxy.$invalid}">\n <label class="control-label">{{\'APPLICATION_OUTBOUNDPROXY\' | translate}}</label>\n <input type="text" name="outboundproxy" placeholder="{{\'APPLICATION_OUTBOUNDPROXY\' | translate}}" class="form-control" data-ng-model="trunk.outboundproxy" />\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_OUTBOUNDPROXY\' | translate }}\n </span>\n <span data-ng-show="forms.advanced.$submitted && (forms.advanced.outboundproxy.$invalid)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END OUTBOUNDPROXY -->\n\n <!-- START USEREQPHONE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.usereqphone.$touched || forms.advanced.$submitted) && forms.advanced.usereqphone.$invalid}">\n <label class="control-label">{{\'APPLICATION_USEREQPHONE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="trunk.usereqphone" name="usereqphone" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\',\'no\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search | capitalize"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_USEREQPHONE\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.usereqphone.$touched || forms.advanced.$submitted) && forms.advanced.usereqphone.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USEREQPHONE -->\n\n <!-- START TRUSTRPID -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.trustrpid.$touched || forms.advanced.$submitted) && forms.advanced.trustrpid.$invalid}">\n <label class="control-label">{{\'APPLICATION_TRUSTRPID\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="trunk.trustrpid" name="trustrpid" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\',\'no\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search | capitalize"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_TRUSTRPID\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.trustrpid.$touched || forms.advanced.$submitted) && forms.advanced.trustrpid.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TRUSTRPID -->\n\n <!-- START SENDRPID -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.sendrpid.$touched || forms.advanced.$submitted) && forms.advanced.sendrpid.$invalid}">\n <label class="control-label">{{\'APPLICATION_SENDRPID\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="trunk.sendrpid" name="sendrpid" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\',\'no\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search | capitalize"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_SENDRPID\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.sendrpid.$touched || forms.advanced.$submitted) && forms.advanced.sendrpid.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END SENDRPID -->\n\n <!-- START ENCRYPTION -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.encryption.$touched || forms.advanced.$submitted) && forms.advanced.encryption.$invalid}">\n <label class="control-label">{{\'APPLICATION_ENCRYPTION\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="trunk.encryption" name="encryption" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="item in [\'yes\',\'no\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search | capitalize"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_ENCRYPTION\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.encryption.$touched || forms.advanced.$submitted) && forms.advanced.encryption.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END ENCRYPTION -->\n\n <!-- START PORT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.port.$touched || forms.advanced.$submitted) && forms.advanced.port.$invalid}">\n <label class="control-label">{{\'APPLICATION_PORT\' | translate}}</label>\n <input type="number" min="0" name="port" placeholder="{{\'APPLICATION_PORT\' | translate}}" class="form-control" data-ng-model="trunk.port"/>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_PORT\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.port.$touched || forms.advanced.$submitted) && forms.advanced.port.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PORT -->\n\n <!-- START TRANSPORT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.advanced.transport.$touched || forms.advanced.$submitted) && forms.advanced.transport.$invalid}">\n <label class="control-label">{{\'APPLICATION_TRANSPORT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select multiple data-ng-model="trunk.transport" name="transport" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$item}}</ui-select-match>\n <ui-select-choices repeat="item in [\'udp\',\'wss\',\'ws\',\'tcp\',\'tls\'] | filter: $select.search">\n <div ng-bind-html="item | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_TRANSPORT\' | translate }}\n </span>\n <span data-ng-show="(forms.advanced.transport.$touched || forms.advanced.$submitted) && forms.advanced.transport.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TRANSPORT -->\n\n </div>\n </div>\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n <!-- START OTHER FIELDS TAB -->\n <div class="tab-pane" id="tab_1_3">\n <form name="forms.otherFields" data-ng-submit="forms.otherFields.$valid && updateTrunk()" novalidate>\n <div class="row">\n <div class="col-md-6">\n <!-- START OTHER FIELDS-->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_OTHER_FIELDS\' | translate}}</label>\n <textarea name="otherFields" placeholder="{{\'APPLICATION_OTHER_FIELDS\' | translate}}" class="form-control otherfields-col" data-ng-model="trunk.otherFields"></textarea>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_OTHER_FIELDS\' | translate }}\n </span>\n </div>\n <!-- END OTHER FIELDS -->\n </div>\n <div class="col-md-6">\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_EXAMPLE\' | translate}}</label>\n <div class="well">\n <div>host=dynamicp</div>\n <div>secret=********</div>\n <div>regcontext=tammari-internal</div>\n <div>regexten=1005</div>\n <div>dtmfmode=rfc2833</div>\n <div>insecure=invite,port</div>\n <div>canreinvite=yes</div>\n <div>nat=yes</div>\n <div>qualify=yes</div>\n <div>context=merus-sipphone</div>\n <div>pickupgroup=1</div>\n <div>callgroup=1</div>\n <div>mailbox=1000@default</div>\n </div>\n </div>\n </div>\n </div>\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n\n </div>\n <!-- END OTHER FIELDS TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'), -a.put("app/tools/trunk/wizard/wizard.html",'<div class="col-md-12" data-ng-init="initWizard()">\n <!-- BEGIN PAGE HEADER-->\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-link"></i>\n <a href="/tools/trunks/list">{{ \'APPLICATION_TRUNKS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-options"></i>\n <a href="#">{{ \'APPLICATION_WIZARD\' | translate }}</a>\n </li>\n </ul>\n </div>\n <!-- END PAGE HEADER-->\n\n <!-- BEGIN PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-link font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_TRUNK\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_GENERAL\' | translate}}" canexit="exitValidation(forms.general.$valid)">\n <form name="forms.general" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.$submitted && forms.general.name.$invalid) || forms.general.name.$error.pattern}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" data-ng-pattern="settings.simplePatternName" required/>\n <span data-ng-show="forms.general.$submitted && forms.general.name.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.pattern" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START HOST -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.$submitted && forms.general.host.$invalid}">\n <label class="control-label">{{\'APPLICATION_HOST\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="host" placeholder="{{\'APPLICATION_HOST\' | translate}}" class="form-control" data-ng-model="item.host" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_HOST\' | translate }}\n </span>\n <span data-ng-show="forms.general.$submitted && forms.general.host.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END HOST -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.$submitted && forms.general.password.$invalid}">\n <label class="control-label">{{\'APPLICATION_SECRET\' | translate}}</label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.secret"/>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_SECRET\' | translate }}\n </span>\n <span data-ng-show="forms.general.$submitted && forms.general.password.$invalid" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START DEFAULT USER -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.general.$submitted && forms.general.defaultuser.$invalid}">\n <label class="control-label">{{\'APPLICATION_DEFAULT_USER\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="defaultuser" placeholder="{{\'APPLICATION_DEFAULT\' | translate}} {{\'APPLICATION_USER\' | translate}}" class="form-control" data-ng-model="item.defaultuser" required/>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_DEFAULT_USER\' | translate }}\n </span>\n <span data-ng-show="forms.general.$submitted && (forms.general.defaultuser.$invalid)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_PASSWORD\' | translate}}.\n </span>\n </div>\n <!-- END DEFAULT USER -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n <button class="btn green-haze" type="submit" ng-click="next(true)">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_ADVANCED\' | translate}}" canexit="exitValidation(forms.advanced.$valid)">\n <form name="forms.advanced" novalidate>\n\n <!-- START REGISTRY -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_REGISTRY\' | translate}}</label>\n <input type="text" name="registry" placeholder="{{\'APPLICATION_REGISTRY\' | translate}}" class="form-control" data-ng-model="item.registry"/>\n <span class="help-block">\n {{ \'DESCRIPTION_TRUNK_REGISTRY\' | translate }}\n </span>\n </div>\n <!-- END REGISTRY -->\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <button class="btn green-haze" type="submit" ng-click="next()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n </wizard>\n </div>\n </div>\n <!-- END PORTLET-->\n</div>\n'),a.put("app/tools/variable/list/list.create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_VARIABLE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/tools/variable/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-eye"></i>\n <a href="#">{{ \'APPLICATION_VARIABLES\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_VARIABLES\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <button class="btn green-jungle " ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_VARIABLE\' | translate }}\n </button>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/variable/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getVariable()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-wrench"></i>\n <a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-eye"></i>\n <a href="/tools/variables/list">{{ \'APPLICATION_VARIABLES\' | translate }}</a>\n <i data-ng-show="variable" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="variable">\n <a href="#">{{variable.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/variable.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{variable.name}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.tools.variables.view.settings\')}">\n <a data-ng-href="/tools/variables/view/{{variable.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/variable/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_VARIABLE\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateVariable()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="variable.name" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="variable.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/tools/yourdashboard/list/clone.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_CLONE_DASHBOARD\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="forms.dashboard" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.dashboard.name.$touched || forms.dashboard.$submitted) && forms.dashboard.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(forms.dashboard.name.$touched || forms.dashboard.$submitted) && forms.dashboard.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="forms.dashboard.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/tools/yourdashboard/list/create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_DASHBOARD\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="forms.dashboard" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.dashboard.name.$touched || forms.dashboard.$submitted) && forms.dashboard.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(forms.dashboard.name.$touched || forms.dashboard.$submitted) && forms.dashboard.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="forms.dashboard.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/tools/yourdashboard/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-tachometer"></i>\n <a href="/tools/yourdashboards/list">{{ \'APPLICATION_YOUR_DASHBOARDS\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-docs font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_YOUR_DASHBOARDS\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <button class="btn green-jungle " ng-click="create()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_DASHBOARD\' | translate }}\n </button>\n </div>\n <!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> -->\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/yourdashboard/show/leaveEditedDashboard.modal.html",'<div class="modal-header" data-ng-init="getContacts()">\n <h3 class="modal-title">{{ \'APPLICATION_WARNING\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <p>{{\'MESSAGE_LEAVE_EDITED_PAGE\' | translate}}</p>\n</div>\n<div class="modal-footer">\n <button class="btn btn-danger" type="button" ng-click="close()">{{ \'APPLICATION_CONTINUE\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/tools/yourdashboard/show/show.html",'<div class="row" style="min-height: 466px;" id="yourDashboardView">\n <div class="col-md-12" ng-init="getDashboard()">\n <adf-dashboard\n data-ng-if="dashboard"\n name="{{dashboard.name}}"\n collapsible="{{dashboard.collapsible}}"\n maximizable="{{dashboard.maximizable}}"\n enableconfirmdelete="{{dashboard.enableconfirmdelete}}"\n structure="{{dashboard.structure}}"\n editable="{{dashboard.editable}}"\n adf-model="dashboard.model"/>\n </div>\n</div>\n'),a.put("app/tools/yourdashboard/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="getDashboard()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="fa fa-tachometer"></i>\n <a href="/tools/yourdashboards/list">{{ \'APPLICATION_YOUR_DASHBOARDS\' | translate }}</a>\n <i data-ng-show="dashboard" class="fa fa-angle-right"></i>\n </li>\n <li data-ng-show="dashboard">\n <a href="#">{{dashboard.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img data-ng-src="assets/images/media/dashboard.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{dashboard.name}}\n </div>\n <!-- <div class="profile-usertitle-job">\n {{user.role}}\n </div> -->\n </div>\n <!-- END SIDEBAR USER TITLE -->\n\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.tools.yourdashboards.view.settings\')}">\n <a data-ng-href="/tools/yourdashboards/view/{{dashboard.id}}/settings">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/tools/yourdashboard/view/view.settings.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_DASHBOARD\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n </li>\n </ul>\n </div>\n\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.general" data-ng-submit="forms.general.$valid && updateDashboard()" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="dashboard.name" required/>\n <span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START REFRESH_TIMEOUT -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.general.timeout.$touched || forms.general.$submitted) && forms.general.timeout.$invalid}">\n <label class="control-label">{{\'APPLICATION_REFRESH_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="number" min="5" name="name" placeholder="{{\'APPLICATION_REFRESH_TIMEOUT\' | translate}}" class="form-control" data-ng-model="dashboard.timeout" required/>\n <span data-ng-show="(forms.general.timeout.$touched || forms.general.$submitted) && forms.general.timeout.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END REFRESH_TIMEOUT -->\n\n <!-- START VISIBLE TO ADMIN -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_VISIBLE_TO_ADMIN\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="dashboard.admin"\n type="checkbox"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END VISIBLE TO ADMIN -->\n\n <!-- START VISIBLE TO USER -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_VISIBLE_TO_USER\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="dashboard.user"\n type="checkbox"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END VISIBLE TO USER -->\n\n <!-- START VISIBLE TO AGENT -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_VISIBLE_TO_AGENT\' | translate}}</label><br>\n <input\n bs-switch\n ng-model="dashboard.agent"\n type="checkbox"\n switch-active="{{ radioSwitch.isActive }}"\n switch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n switch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n switch-on-color="{{ radioSwitch.onColor }}"\n switch-off-color="{{ radioSwitch.offColor }}"\n switch-animate="{{ radioSwitch.animate }}"\n switch-size="{{ radioSwitch.size }}"\n switch-label="{{ radioSwitch.label }}"\n switch-icon="{{ radioSwitch.icon }}"\n switch-radio-off="{{ radioSwitch.radioOff }}"\n switch-label-width="{{ radioSwitch.labelWidth }}"\n switch-handle-width="{{ radioSwitch.handleWidth }}">\n </div>\n <!-- END VISIBLE TO AGENT -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="dashboard.description"></textarea>\n </div>\n <!-- END DESCRIPTION -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END ADVANCED TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/zendesk/list/list.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-heart"></i>\n <a href="/zendesk/list">{{ \'APPLICATION_ZENDESK\' | translate }}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered" data-ng-init="initView()">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-heart font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ZENDESK\' | translate }}</a> </span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="/zendesk/wizard" data-toggle="dropdown">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_ACCOUNT\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n <!-- END TABLE -->\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/zendesk/view/configuration/list/create.modal.html",'<div class="modal-header">\n <h3 class="modal-title">{{ \'APPLICATION_NEW_CONFIGURATION\' | translate }}</h3>\n</div>\n<div class="modal-body">\n <form name="form" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.name.$submitted) && form.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="(form.name.$touched || form.name.$submitted) && form.name.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START CHANNEL -->\n <div class="form-group" data-ng-class="{\'has-error\': (form.channel.$touched || form.channel.$submitted) && form.channel.$invalid}">\n <label class="control-label">{{\'APPLICATION_CHANNEL\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.channel" name="channel" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_CHANNEL\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="channel.value as channel in channels | filter: $select.search">\n <div data-ng-bind="channel.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.channel.$touched || form.channel.$submitted) && form.channel.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START CHANNEL -->\n\n <!-- START VOICE SUBTYPE -->\n <div data-ng-if="item.channel===\'voice\'" class="form-group" data-ng-class="{\'has-error\': (form.channel.$touched || form.channel.$submitted) && form.channel.$invalid}">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}<span class="required" aria-required="true">*</span></label>\n <ui-select data-ng-model="item.type" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_TYPE\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="type in [\'Queue\',\'Outbound\'] | filter: $select.search">\n <div data-ng-bind="type | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form.type.$touched || form.type.$submitted) && form.type.$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START CHANNEL -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/></textarea>\n </div>\n <!-- END DESCRIPTION -->\n\n </form>\n</div>\n<div class="modal-footer">\n <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'), -a.put("app/zendesk/view/configuration/list/list.html",'<div ui-view class="profile-content">\n <div class="row">\n <div class="col-md-12">\n <div class="portlet light" data-ng-init="initView()">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_CONFIGURATIONS\' | translate}}</span>\n </div>\n <div class="actions">\n <div class="btn-group" data-ng-show="id.length">\n <a class="btn red" href="#" data-ng-click="deleteItems()">\n <i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n </a>\n </div>\n <div class="btn-group">\n <a class="btn green-jungle" href="#" data-ng-click="createItem()">\n <i class="icon-plus"></i> {{ \'APPLICATION_NEW_CONFIGURATION\' | translate }}\n </a>\n </div>\n </div>\n </div>\n <div class="portlet-body">\n <!-- START TABLE -->\n <div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/zendesk/view/configuration/view/view.html",'<div class="row" data-ng-init="initView();getConfiguration();getCustomVariables();getFields();getTags();">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_CONFIGURATION\' | translate}}: {{configurationName}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_SUBJECT\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_DESCRIPTION\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_3" data-toggle="tab">{{\'APPLICATION_FIELDS\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_4" data-toggle="tab">{{\'APPLICATION_TAGS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- SUBJECT TAB -->\n <div class="tab-pane ui-padding active" id="tab_1_1">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">All following fields will be join by blank space:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItem(\'subject\')"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div id="subject-item-list" ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="subjectItem in subjectConfig">\n <div class="col-md-3">\n <ui-select ng-model="subjectItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeType(subjectItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in fieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-8" data-ng-if="subjectItem.type==\'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="subjectItem.content" data-ng-change="updateField(subjectItem)">\n </div>\n </div>\n <div class="col-md-8" data-ng-if="subjectItem.type==\'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="subjectItem.variableName" data-ng-change="updateField(subjectItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices group-by="groupVariableByGroup" repeat="variable.name as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-8" data-ng-if="subjectItem.type==\'customVariable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="subjectItem.VariableId" data-ng-change="updateField(subjectItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in customVariables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(subjectItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END SUBJECT TAB -->\n <!-- DESCRIPTION TAB -->\n <div class="tab-pane ui-padding" id="tab_1_2">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">All following fields will be join by new line:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItem(\'description\')"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div id="description-item-list" ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="descriptionItem in descriptionConfig">\n <div class="col-md-2">\n <ui-select ng-model="descriptionItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeDescType(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in descFieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-9" data-ng-if="descriptionItem.type==\'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="descriptionItem.content" data-ng-change="updateField(descriptionItem)">\n </div>\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\'">\n <input type="text" class="form-control" placeholder="Key" data-ng-model="descriptionItem.key" data-ng-change="updateField(descriptionItem)">\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\'">\n <ui-select ng-model="descriptionItem.keyType" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeDescType(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in fieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\' && descriptionItem.keyType==\'string\'">\n <input type="text" class="form-control" placeholder="Value" data-ng-model="descriptionItem.keyContent" data-ng-change="updateField(descriptionItem)">\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\' && descriptionItem.keyType==\'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="descriptionItem.variableName" data-ng-change="updateField(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices group-by="groupVariableByGroup" repeat="variable.name as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\' && descriptionItem.keyType==\'customVariable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="descriptionItem.VariableId" data-ng-change="updateField(descriptionItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in customVariables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(descriptionItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END DESCRIPTION TAB -->\n <!-- FIELDS TAB -->\n <div class="tab-pane ui-padding" id="tab_1_3">\n <div class="row">\n <div class="col-md-11">\n <span class="caption-subject">Add how to fill the fields present in your account:</span>\n </div>\n <div class="col-md-1 pull-rigth">\n <button class="btn btn-icon-only green" data-ng-click="addItem(\'field\')"><i class="fa fa-plus"></i></button>\n </div>\n </div>\n <hr>\n <!-- <div id="field-item-list" ng-scrollbars ng-scrollbars-config="config"> -->\n <div class="row" data-ng-repeat="fieldItem in fieldConfig">\n <div class="col-md-3">\n <ui-select ng-model="fieldItem.idField" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeFieldType(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.id as item in accountFields | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n <div class="col-md-8" data-ng-if="getSystemFieldOptions(fieldItem.idField)">\n <div class="form-group">\n <ui-select ng-model="fieldItem.content" theme="bootstrap" ng-disabled="disabled" data-ng-change="updateField(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="item.value as item in getSystemFieldOptions(fieldItem.idField) | filter: $select.search">\n <div ng-bind-html="item.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField)">\n <div class="form-group">\n <ui-select ng-model="fieldItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeType(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices repeat="item.type as item in fieldType | filter: $select.search">\n <div ng-bind-html="item.title | highlight: $select.search | ucfirst"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'string\'">\n <div class="form-group">\n <input type="text" class="form-control" data-ng-model="fieldItem.content" data-ng-change="updateField(fieldItem)">\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'variable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="fieldItem.variableName" data-ng-change="updateField(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n <ui-select-choices group-by="groupVariableByGroup" repeat="variable.name as variable in variables | filter: $select.search">\n <div ng-bind-html="variable.title | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'customVariable\'">\n <div class="form-group">\n <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="fieldItem.VariableId" data-ng-change="updateField(fieldItem)">\n <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="variable.id as variable in customVariables | filter: $select.search">\n <div ng-bind-html="variable.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n </div>\n </div>\n <div class="col-md-1">\n <div class="form-group">\n <button class="btn btn-icon-only red" data-ng-click="removeItem(fieldItem)"><i class="fa fa-times"></i></button>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n <!-- END FIELDS TAB -->\n <!-- TAG TAB -->\n <div class="tab-pane ui-padding" id="tab_1_4">\n <div class="row">\n <div class="col-md-12">\n <span class="caption-subject">Select tags that you want add in the ticket:</span>\n </div>\n </div>\n <hr>\n <form name="forms.tags" data-ng-submit="updateTags()" novalidate>\n <!-- TAG -->\n <div class="form-group">\n <ui-select multiple data-ng-model="selectedTags.tags" theme="bootstrap" name="tags" ng-disabled="disabled">\n <ui-select-match placeholder="{{ \'APPLICATION_TAGS\' | translate }}">{{$item.name}}</ui-select-match>\n <ui-select-choices repeat="tag.id as tag in tags | filter: $select.search">\n {{tag.name}}\n </ui-select-choices>\n </ui-select>\n </div>\n <!-- END TAG -->\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END TAG TAB -->\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/zendesk/view/view.account.html",'<div class="row">\n <div class="col-md-12">\n <div class="portlet light">\n <div class="portlet-title tabbable-line">\n <div class="caption caption-md">\n <i class="icon-globe theme-font hide"></i>\n <span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACCOUNT\' | translate}}</span>\n </div>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERALS\' | translate}}</a>\n </li>\n </ul>\n </div>\n <div class="portlet-body">\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <form name="forms.formSetting" data-ng-submit="forms.formSetting.$valid && updateItem()" novalidate>\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.name" required/>\n <span data-ng-show="forms.formSetting.name.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="account.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formSetting.type.$touched || forms.formSetting.$submitted) && forms.formSetting.type.$invalid}">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}</label>\n <ui-select data-ng-model="account.type" name="type" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_TYPE\' | translate}}">{{\'APPLICATION_\'+$select.selected | uppercase | translate}}</ui-select-match>\n <ui-select-choices repeat="type in [\'integrationTab\', \'newTab\'] | filter: $select.search">\n <div data-ng-bind="\'APPLICATION_\'+type | uppercase | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.formSetting.type.$invalid && (forms.formSetting.type.$touched || forms.formSetting.$submitted)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START TYPE -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.username" required/>\n <span data-ng-show="forms.formSetting.username.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START REMOTE ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.remoteUri.$invalid}">\n <label class="control-label">{{\'APPLICATION_URI\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remoteUri" placeholder="{{\'APPLICATION_URI\' | translate}}" class="form-control" data-ng-model="account.remoteUri" required />\n <span data-ng-show="forms.formSetting.remoteUri.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START AUTH TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.authType.$invalid}">\n <label class="control-label">{{\'APPLICATION_AUTHENTICATION_TYPE\' | translate}}</label>\n <ui-select data-ng-model="account.authType" name="authType" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_AUTHENTICATION_TYPE\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="type in [\'password\', \'token\'] | filter: $select.search">\n <div data-ng-bind="type | capitalize | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.formSetting.authType.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START AUTH TYPE -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.password.$invalid}" ng-slide-down="account.authType == \'password\'" lazy-render duration="1">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.password" required/>\n <span data-ng-show="forms.formSetting.password.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START TOKEN -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.token.$invalid}" ng-slide-down="account.authType == \'token\'" lazy-render duration="1">\n <label class="control-label">{{\'APPLICATION_TOKEN\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="token" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.token" required/>\n <span data-ng-show="forms.formSetting.token.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TOKEN -->\n\n <!-- START SERVER URL -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.serverUrl.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}}</label>\n <input type="url" name="serverUrl" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="account.serverUrl"/>\n <span class="help-block">\n {{\'DESCRIPTION_SERVER_URL\' | translate}}.\n </span>\n <span class="help-block help-block-info">\n {{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n </span>\n </div>\n <!-- END SERVER URL -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n </form>\n </div>\n <!-- END GENERAL TAB -->\n\n </div>\n </div>\n </div>\n </div>\n</div>\n'),a.put("app/zendesk/view/view.html",'<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initView()">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-heart"></i>\n <a href="/zendesk/list">{{ \'APPLICATION_ZENDESK\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <a href="#">{{account.name}}</a>\n </li>\n </ul>\n </div>\n\n <!-- BEGIN PROFILE SIDEBAR -->\n <div class="profile-sidebar">\n <!-- PORTLET MAIN -->\n <div class="portlet light profile-sidebar-portlet">\n <!-- SIDEBAR USERPIC -->\n <div class="profile-image">\n <img src="assets/images/media/zendesk.png" class="img-responsive">\n </div>\n <!-- END SIDEBAR USERPIC -->\n <!-- SIDEBAR USER TITLE -->\n <div class="profile-usertitle">\n <div class="profile-usertitle-name">\n {{account.name}}\n </div>\n <div class="profile-usertitle-job">\n {{account.remoteUri}}\n </div>\n </div>\n <!-- END SIDEBAR USER TITLE -->\n <!-- SIDEBAR MENU -->\n <div class="profile-usermenu">\n <ul class="nav">\n <li data-ng-class="{active: $state.is(\'main.zendesk.view.account\')}">\n <a ng-href="/zendesk/view/{{account.id}}/account">\n <i class="icon-user"></i>\n {{ \'APPLICATION_ACCOUNT\' | translate }} </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.zendesk.view.configurations\') || $state.is(\'main.zendesk.view.configuration\')}">\n <a ng-href="/zendesk/view/{{account.id}}/configurations/list">\n <i class="icon-settings"></i>\n {{ \'APPLICATION_CONFIGURATIONS\' | translate }} </a>\n </li>\n </ul>\n </div>\n <!-- END MENU -->\n </div>\n <!-- END PORTLET MAIN -->\n </div>\n <!-- END BEGIN PROFILE SIDEBAR -->\n <!-- BEGIN PROFILE CONTENT -->\n <div ui-view class="profile-content">\n </div>\n <!-- END PROFILE CONTENT -->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'),a.put("app/zendesk/wizard/wizard.html",'<!-- BEGIN PAGE HEADER-->\n<div class="row">\n <div class="col-md-12">\n <div class="page-bar">\n <ul class="page-breadcrumb">\n <li>\n <i class="icon-rocket"></i>\n <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n <i class="fa fa-angle-right"></i>\n </li>\n <li>\n <i class="icon-heart"></i>\n <a href="/zendesk/list">{{ \'APPLICATION_ZENDESK\' | translate }}</a>\n </li>\n </ul>\n </div>\n </div>\n</div>\n<!-- END PAGE HEADER-->\n\n<!-- BEGIN PAGE CONTENT-->\n<div class="row" data-ng-init="initWizard()">\n <div class="col-md-12">\n <!-- BEGIN Portlet PORTLET-->\n <div class="portlet light bordered">\n <div class="portlet-title">\n <div class="caption font-green-sharp">\n <i class="icon-notebook font-green-sharp"></i>\n <span class="caption-subject">{{ \'APPLICATION_ACCOUNT\' | translate }} WIZARD</a> </span>\n </div>\n </div>\n <div class="portlet-body">\n <wizard on-finish="createItem()">\n <wz-step title="{{\'APPLICATION_ACCOUNT_INFO\' | translate}}" canexit="exitValidation(forms.formSetting.$valid)">\n <form name="forms.formSetting" novalidate>\n\n <!-- START NAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.name.$invalid}">\n <label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n <span data-ng-show="forms.formSetting.name.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END NAME -->\n\n <!-- START DESCRIPTION -->\n <div class="form-group">\n <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n </div>\n <!-- END DESCRIPTION -->\n\n <!-- START TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': (forms.formSetting.type.$touched || forms.formSetting.$submitted) && forms.formSetting.type.$invalid}">\n <label class="control-label">{{\'APPLICATION_TYPE\' | translate}}</label>\n <ui-select data-ng-model="item.type" name="type" theme="bootstrap" data-ng-init="item.type = \'integrationTab\'" required>\n <ui-select-match placeholder="{{\'APPLICATION_TYPE\' | translate}}">{{\'APPLICATION_\'+$select.selected | uppercase | translate}}</ui-select-match>\n <ui-select-choices repeat="type in [\'integrationTab\', \'newTab\'] | filter: $select.search">\n <div data-ng-bind="\'APPLICATION_\'+type | uppercase | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.formSetting.type.$invalid && (forms.formSetting.type.$touched || forms.formSetting.$submitted)" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START TYPE -->\n\n <!-- START USERNAME -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.username.$invalid}">\n <label class="control-label">{{\'APPLICATION_USERNAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="username" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.username" required ng-remote-validate="/api/zendesk/accounts/validate/username"/>\n <span data-ng-show="forms.formSetting.username.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formSetting.username.$touched || forms.formSetting.$submitted) && forms.formSetting.username.$error.ngRemoteValidate" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_EXIST_USERNAME\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START REMOTE ADDRESS -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.remoteUri.$invalid}">\n <label class="control-label">{{\'APPLICATION_URI\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="url" name="remoteUri" placeholder="{{\'APPLICATION_URI\' | translate}}" class="form-control" data-ng-model="item.remoteUri" required ng-remote-validate="/api/zendesk/accounts/validate/remoteUri"/>\n <span data-ng-show="forms.formSetting.remoteUri.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n <span data-ng-show="(forms.formSetting.remoteUri.$touched || forms.formSetting.$submitted) && forms.formSetting.remoteUri.$error.ngRemoteValidate" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_EXIST_DOMAIN\' | translate}}.\n </span>\n </div>\n <!-- END USERNAME -->\n\n <!-- START AUTH TYPE -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.authType.$invalid}">\n <label class="control-label">{{\'APPLICATION_AUTHENTICATION_TYPE\' | translate}}</label>\n <ui-select data-ng-model="item.authType" name="authType" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_AUTHENTICATION_TYPE\' | translate}}">{{$select.selected | capitalize}}</ui-select-match>\n <ui-select-choices repeat="type in [\'password\', \'token\'] | filter: $select.search">\n <div data-ng-bind="type | capitalize | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="forms.formSetting.authType.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- START AUTH TYPE -->\n\n <!-- START PASSWORD -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.password.$invalid}" ng-slide-down="item.authType == \'password\'" lazy-render duration="1">\n <label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.password" required/>\n <span data-ng-show="forms.formSetting.password.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END PASSWORD -->\n\n <!-- START TOKEN -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.token.$invalid}" ng-slide-down="item.authType == \'token\'" lazy-render duration="1">\n <label class="control-label">{{\'APPLICATION_TOKEN\' | translate}} <span class="required" aria-required="true">*</span></label>\n <input type="text" name="token" placeholder="{{\'APPLICATION_TOKEN\' | translate}}" class="form-control" data-ng-model="item.token" required/>\n <span data-ng-show="forms.formSetting.token.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n </div>\n <!-- END TOKEN -->\n\n <!-- START SERVER URL -->\n <div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.serverUrl.$invalid}">\n <label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}}</label>\n <input type="url" name="serverUrl" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.serverUrl"/>\n <span class="help-block">\n {{\'DESCRIPTION_SERVER_URL\' | translate}}.\n </span>\n <span class="help-block help-block-info">\n {{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n </span>\n </div>\n <!-- END SERVER URL -->\n\n <input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" data-ng-click="next()"/>\n\n </form>\n </wz-step>\n\n <wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n <p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n <input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n <input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n </wz-step>\n\n </wizard>\n\n </div>\n </div>\n <!-- END Portlet PORTLET-->\n </div>\n</div>\n<!-- END PAGE CONTENT-->\n'), -a.put("components/directives/action/accountEmail/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_ACCOUNT\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in accounts.rows | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data6\'+randomName].$touched || form.$submitted) && form[\'data6\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data6" name="data6{{randomName}}" theme="bootstrap">\n <ui-select-match allow-clear placeholder="{{\'APPLICATION_TEMPLATE\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data6\'+randomName].$touched || form.$submitted) && form[\'data6\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <input type="text" ng-model="element.data2" name="data2{{randomName}}" class="form-control" placeholder="{{\'APPLICATION_TO\' | translate}}" required/>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data3\'+randomName].$touched || form.$submitted) && form[\'data3\'+randomName].$invalid}">\n <input type="text" ng-model="element.data3" name="data3{{randomName}}" class="form-control" placeholder="{{\'APPLICATION_CC\' | translate}}"/>\n <span data-ng-show="(form[\'data3\'+randomName].$touched || form.$submitted) && form[\'data3\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName && !element.data6" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data4\'+randomName].$touched || form.$submitted) && form[\'data4\'+randomName].$invalid}">\n <input type="text" ng-model="element.data4" name="data4{{randomName}}" class="form-control" placeholder="{{\'APPLICATION_SUBJECT\' | translate}}"/>\n <span data-ng-show="(form[\'data4\'+randomName].$touched || form.$submitted) && form[\'data4\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName" class="form-group col-md-12" data-ng-class="{\'has-error\': (form[\'data5\'+randomName].$touched || form.$submitted) && form[\'data5\'+randomName].$invalid}">\n <textarea rows="10" ng-model="element.data5" name="data5{{randomName}}" class="form-control" placeholder="{{\'APPLICATION_TEXT\' | translate}}" data-ng-required="!element.data6"></textarea>\n <span data-ng-show="(form[\'data5\'+randomName].$touched || form.$submitted) && form[\'data5\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/directives/action/accountSms/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_ACCOUNT\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in accounts.rows | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <input type="text" ng-model="element.data2" name="data2{{randomName}}" class="form-control" placeholder="{{\'APPLICATION_TO\' | translate}}" required/>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName" class="form-group col-md-12" data-ng-class="{\'has-error\': (form[\'data3\'+randomName].$touched || form.$submitted) && form[\'data3\'+randomName].$invalid}">\n <textarea rows="10" ng-model="element.data3" name="data3{{randomName}}" class="form-control" placeholder="{{\'APPLICATION_TEXT\' | translate}}"></textarea>\n <span data-ng-show="(form[\'data3\'+randomName].$touched || form.$submitted) && form[\'data3\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/directives/action/accountTemplate/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_ACCOUNT\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in accounts.rows | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data2" name="data2{{randomName}}" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_TEMPLATE\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates.rows | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data3\'+randomName].$touched || form.$submitted) && form[\'data3\'+randomName].$invalid}">\n <input type="text" ng-model="element.data3" name="data3{{randomName}}" class="form-control" placeholder="{{\'APPLICATION_TO\' | translate}}" required/>\n <span data-ng-show="(form[\'data3\'+randomName].$touched || form.$submitted) && form[\'data3\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/directives/action/close/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <input type="text" ng-model="element.data1" name="data1{{randomName}}" class="form-control" placeholder="{{ \'APPLICATION_DISPOSITION\' | translate }}"/>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/directives/action/cm/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" on-select="element.data2 = element.data1 ? element.data2 : false">\n <ui-select-match allow-clear>{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="list.id as list in lists | filter: $select.search">\n <div ng-bind-html="list.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName && element.data1" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <input\n bs-switch\n class="form-control"\n ng-init="element.data2 = element.data1 && element.data2 == \'1\' ? true : false"\n ng-model="element.data2"\n type="checkbox"\n name="auth"\n switch-active="{{ switch.isActive }}"\n switch-on-text="{{ switch.onText }}"\n switch-off-text="{{ switch.offText }}"\n switch-on-color="{{ switch.onColor }}"\n switch-off-color="{{ switch.offColor }}"\n switch-animate="{{ switch.animate }}"\n switch-size="{{ switch.size }}"\n switch-label="{{ switch.label }}"\n switch-icon="{{ switch.icon }}"\n switch-radio-off="{{ switch.radioOff }}"\n switch-label-width="{{ switch.labelWidth }}"\n switch-handle-width="{{ switch.handleWidth }}">\n <span class="help-block">\n {{\'APPLICATION_AUTO_CREATE\' | translate}}\n </span>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/directives/action/email/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data5\'+randomName].$touched || form.$submitted) && form[\'data5\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data5" name="data5{{randomName}}" theme="bootstrap">\n <ui-select-match allow-clear placeholder="{{\'APPLICATION_TEMPLATE\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data5\'+randomName].$touched || form.$submitted) && form[\'data5\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <input type="text" ng-model="element.data1" name="data1{{randomName}}" class="form-control" placeholder="{{\'APPLICATION_TO\' | translate}}" required/>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <input type="text" ng-model="element.data2" name="data2{{randomName}}" class="form-control" placeholder="{{\'APPLICATION_CC\' | translate}}"/>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName && !element.data5" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data3\'+randomName].$touched || form.$submitted) && form[\'data3\'+randomName].$invalid}">\n <input type="text" ng-model="element.data3" name="data3{{randomName}}" class="form-control" placeholder="{{\'APPLICATION_SUBJECT\' | translate}}"/>\n <span data-ng-show="(form[\'data3\'+randomName].$touched || form.$submitted) && form[\'data3\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName" class="form-group col-md-12" data-ng-class="{\'has-error\': (form[\'data4\'+randomName].$touched || form.$submitted) && form[\'data4\'+randomName].$invalid}">\n <textarea rows="10" ng-model="element.data4" name="data4{{randomName}}" class="form-control" placeholder="{{\'APPLICATION_TEXT\' | translate}}" data-ng-required="!element.data5"></textarea>\n <span data-ng-show="(form[\'data4\'+randomName].$touched || form.$submitted) && form[\'data4\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/directives/action/forward/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <input type="text" ng-model="element.data1" name="data1{{randomName}}" class="form-control" placeholder="{{ \'APPLICATION_TO\' | translate }}" required/>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/directives/action/http/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_METHOD\' | translate}}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="method in methods | filter: $select.search">\n <div ng-bind-html="method | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <input type="text" ng-model="element.data2" name="data2{{randomName}}" class="form-control" placeholder="URL" required/>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/directives/action/integration/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" data-ng-change="changeIntegration()" required>\n <ui-select-match placeholder="{{ \'APPLICATION_INTEGRATION\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="integration.state as integration in integrations | filter: $select.search">\n <div ng-bind-html="integration.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{\'APPLICATION_INTEGRATION\' | translate}}\n </span>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div class="form-group col-md-6" data-ng-if="element.data1 && accounts && randomName" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data2" name="data2{{randomName}}" theme="bootstrap" data-ng-change="changeAccount();" required>\n <ui-select-match placeholder="{{\'APPLICATION_ACCOUNT\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="account.id as account in accounts | filter: $select.search">\n <div ng-bind-html="account.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{\'APPLICATION_ACCOUNT\' | translate}}\n </span>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div class="form-group col-md-6" data-ng-if="element.data2 && configurations && randomName" data-ng-class="{\'has-error\': (form[\'data3\'+randomName].$touched || form.$submitted) && form[\'data3\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data3" name="data3{{randomName}}" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_CONFIGURATION\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="config.id as config in configurations | filter: $select.search">\n <div ng-bind-html="config.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{\'APPLICATION_CONFIGURATION\' | translate}}\n </span>\n <span data-ng-show="(form[\'data3\'+randomName].$touched || form.$submitted) && form[\'data3\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/directives/action/jscripty/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required>\n <ui-select-match>{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="project.id as project in projects | filter: $select.search">\n <div ng-bind-html="project.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/directives/action/motionbar/actionBuilder.html",'<!-- data1: 0 POPUP, 1 URL, 2 WINAPP -->\n<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required data-ng-change="changeMode();">\n <ui-select-match placeholder="{{ \'APPLICATION_TYPE\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="motionAction.value as motionAction in motionActions | filter: $select.search">\n <div ng-bind-html="motionAction.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'APPLICATION_TYPE\' | translate }}\n </span>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<!-- data1:0 data2:Template -->\n<div data-ng-if="randomName && element.data1==0" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data2" name="data2{{randomName}}" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_TEMPLATE\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'APPLICATION_TEMPLATE\' | translate }}\n </span>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<!-- data1:1 data2:URL -->\n<div data-ng-if="randomName && element.data1==1" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <input type="text" ng-model="element.data2" name="data2{{randomName}}" class="form-control" required placeholder="{{ \'APPLICATION_URL\' | translate }}"/>\n <span class="help-block">\n {{ \'APPLICATION_URL\' | translate }}\n </span>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<!-- data1:2 data2:Application data3:Arguments -->\n<div data-ng-if="randomName && element.data1==2" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <input type="text" ng-model="element.data2" name="data2{{randomName}}" class="form-control" required placeholder="{{ \'APPLICATION_APPLICATION\' | translate }}"/>\n <span class="help-block">\n {{ \'APPLICATION_APPLICATION\' | translate }}\n </span>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div data-ng-if="randomName && element.data1==2" class="form-group col-md-6">\n <input type="text" ng-model="element.data3" name="data3{{randomName}}" class="form-control" placeholder="{{ \'APPLICATION_ARGUMENTS\' | translate }}"/>\n <span class="help-block">\n {{ \'APPLICATION_ARGUMENTS\' | translate }}\n </span>\n</div>\n'),a.put("components/directives/action/status/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required>\n <ui-select-match>{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="status.value as status in states | filter: $select.search">\n <div ng-bind-html="status.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/directives/action/tag/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select multiple data-ng-model="data.tags" name="data1{{randomName}}" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_TAG\' | translate}}">{{$item.name}}</ui-select-match>\n <ui-select-choices repeat="tag.name as tag in tags | filter:$select.search" class="">\n {{tag.name}}\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/directives/action/template/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required>\n <ui-select-match placeholder="{{\'APPLICATION_TEMPLATE\' | translate}}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n\n<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <input type="text" ng-model="element.data2" name="data2{{randomName}}" class="form-control" placeholder="{{\'APPLICATION_TO\' | translate}}" required/>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/directives/action/urlforward/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_TYPE\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="type.value as type in types | filter: $select.search">\n <div ng-bind-html="type.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{\'APPLICATION_TYPE\' | translate}}\n </span>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div class="form-group col-md-12" data-ng-if="element.data1 && randomName" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <input type="url" ng-model="element.data2" placeholder="{{ \'APPLICATION_URL\' | translate }}" name="data2{{randomName}}" class="form-control" required/>\n <span class="help-block">\n {{\'APPLICATION_URL\' | translate}}\n </span>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/directives/action/webPopup/actionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data2" name="data2{{randomName}}" theme="bootstrap" on-select="typeChange()" required>\n <ui-select-match placeholder="{{ \'APPLICATION_TYPE\' | translate }}">{{$select.selected}}</ui-select-match>\n <ui-select-choices repeat="type in [\'motion\',\'browser\'] | filter: $select.search">\n <div ng-bind-html="type | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'data2\'+randomName].$touched || form.$submitted) && form[\'data2\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div data-ng-if="randomName && element.data2 == \'motion\'" class="form-group col-md-6" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <ui-select data-ng-model="element.data1" name="data1{{randomName}}" theme="bootstrap" required>\n <ui-select-match placeholder="{{ \'APPLICATION_TEMPLATE\' | translate }}">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="template.id as template in templates | filter: $select.search">\n <div ng-bind-html="template.name | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span class="help-block">\n {{ \'APPLICATION_TEMPLATE\' | translate }}\n </span>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div class="form-group col-md-12" data-ng-if="randomName && element.data2 == \'browser\'" data-ng-class="{\'has-error\': (form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$invalid}">\n <input type="url" ng-model="element.data1" placeholder="{{ \'APPLICATION_URL\' | translate }}" name="data1{{randomName}}" class="form-control" required/>\n <span class="help-block">\n {{\'APPLICATION_URL\' | translate}}\n </span>\n <span data-ng-show="(form[\'data1\'+randomName].$touched || form.$submitted) && form[\'data1\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"), -a.put("components/directives/condition/conditionBuilder.html",'<div data-ng-if="randomName" class="form-group col-md-4" data-ng-class="{\'has-error\': (form[\'field\'+randomName].$touched || form.$submitted) && form[\'field\'+randomName].$invalid}">\n <ui-select data-ng-model="element.field" name="field{{randomName}}" theme="bootstrap" data-ng-change="checkCondition(element.field)" required>\n <ui-select-match>{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="condition.value as condition in service.services[serviceindex].conditions | filter: $select.search">\n <div ng-bind-html="condition.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'field\'+randomName].$touched || form.$submitted) && form[\'field\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div data-ng-if="randomName && element.field" class="form-group col-md-4" data-ng-class="{\'has-error\': (form[\'operator\'+randomName].$touched || form.$submitted) && form[\'operator\'+randomName].$invalid}">\n <ui-select data-ng-model="element.operator" name="operator{{randomName}}" theme="bootstrap" required>\n <ui-select-match>{{$select.selected.name | translate}}</ui-select-match>\n <ui-select-choices repeat="operator.value as operator in _.find(service.services[serviceindex].conditions,{value:element.field}).operators | filter: $select.search">\n <div ng-bind-html="operator.name | translate | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'operator\'+randomName].$touched || form.$submitted) && form[\'operator\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div class="col-md-4" data-ng-if="elementType === \'input\' && randomName && element.field" data-ng-class="{\'has-error\': (form[\'value\'+randomName].$touched || form.$submitted) && form[\'value\'+randomName].$invalid}">\n <input type="text" ng-model="element.value" class="form-control" name="value{{randomName}}" required/>\n <span data-ng-show="(form[\'value\'+randomName].$touched || form.$submitted) && form[\'value\'+randomName].$error.required" class="help-block help-block-error">\n <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n </span>\n</div>\n<div class="form-group col-md-4" data-ng-if="elementType === \'select\' && randomName && element.field" data-ng-class="{\'has-error\': (form[\'value\'+randomName].$touched || form.$submitted) && form[\'value\'+randomName].$invalid}">\n <ui-select data-ng-model="element.value" name="value{{randomName}}" theme="bootstrap" required>\n <ui-select-match>{{ translateName ? (\'APPLICATION_TRIGGER_\'+$select.selected.name | uppercase | translate) : $select.selected.name}}</ui-select-match>\n <ui-select-choices repeat="value.value as value in values | filter: $select.search">\n <div ng-bind-html="(translateName ? (\'APPLICATION_TRIGGER_\'+value.name | uppercase | translate) : value.name) | highlight: $select.search"></div>\n </ui-select-choices>\n </ui-select>\n <span data-ng-show="(form[\'value\'+randomName].$touched || form.$submitted) && form[\'value\'+randomName].$error.required" class="help-block help-block-error">\n'+" <strong>{{'APPLICATION_WARNING' | translate}}!</strong> {{'MESSAGE_REQUIRED_FIELD' | translate}}.\n </span>\n</div>\n"),a.put("components/factories/xNotificationLicense/xNotificationLicense.html",'<div class="ui-notification alert alert-block" ng-class="class" style="width: 410px;">\n <h4 class="alert-heading">\n <i class="{{icon}}"></i> {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_YOUR_LICENSE_IS_GOING_TO_EXPIRE\' | translate}}! <a ng-click="more()" style="color: blue;">More.</a>\n </h4>\n</div>\n'),a.put("components/footer/footer.html",'<!-- BEGIN FOOTER -->\n<div class="page-footer" data-ng-init="initFooter()">\n <div class="page-footer-inner">\n xCALLY Motion v. {{info.version}} | 2016 - {{year + 1}} © Powered by Xenialab <ng-bind-html data-ng-if="license.custom && !settings.defaultFooterWhiteLabel && settings.footerWhiteLabel" ng-bind-html="\'| \'+settings.footerWhiteLabel"></ng-bind-html>\n </div>\n <div class="scroll-to-top">\n <i class="icon-arrow-up"></i>\n </div>\n</div>\n<!-- END FOOTER -->\n'),a.put("components/header/header.html",'<!-- BEGIN HEADER INNER -->\n<div class="page-header-inner" data-ng-init="initHeader()">\n <!-- BEGIN LOGO -->\n <div class="page-logo">\n <a href="/">\n <img ng-src="api/settings/logo/main" alt="logo" class="logo-default custom-logo" onError="this.onerror=null"/>\n </a>\n <div class="menu-toggler sidebar-toggler" data-ng-click="toggleSidebar()"></div>\n </div>\n\n <!-- END LOGO -->\n <!-- BEGIN HEADER SEARCH BOX -->\n <!-- DOC: Apply "search-form-expanded" right after the "search-form" class to have half expanded search box -->\n <form ng-repeat="call in activeCalls | limitTo:2" class="search-form search-form-expanded">\n <div class="input-group">\n <input type="text" class="form-control" value="{{call.calleridnum}}" readonly>\n <span class="input-group-btn">\n <a href="javascript:;" class="btn submit inactive-link"><i class="icon-earphones-alt"></i></a>\n </span>\n </div>\n </form>\n <!-- END HEADER SEARCH BOX -->\n <!-- BEGIN RESPONSIVE MENU TOGGLER -->\n <a href="javascript:;" class="menu-toggler responsive-toggler" data-toggle="collapse" data-target=".navbar-collapse"></a>\n <!-- END RESPONSIVE MENU TOGGLER -->\n <!-- BEGIN TOP NAVIGATION MENU -->\n <div class="top-menu">\n <ul class="nav navbar-nav pull-right">\n <!-- DOC: Apply "dropdown-dark" class after below "dropdown-extended" to change the dropdown styte -->\n\n <!-- BEGIN USER LOGIN DROPDOWN -->\n <!-- DOC: Apply "dropdown-dark" class after below "dropdown-extended" to change the dropdown styte -->\n <li class="dropdown dropdown-user">\n <a href="#" class="dropdown-toggle" dropdown-menu-hover data-toggle="dropdown" data-close-others="true">\n <img class="img-circle" data-ng-src="api/users/avatar/{{getCurrentUser().userpic || \'unknown_avatar\'}}" alt="...">\n <span class="username username-hide-on-mobile">\n {{ getCurrentUser().fullname }}\n </span>\n <i class="fa fa-angle-down"></i>\n </a>\n <ul class="dropdown-menu dropdown-menu-default">\n <li>\n <a ng-href=" {{getCurrentUser().role === \'agent\' ? \'/staff/agents/view/\'+getCurrentUser().id+\'/account\' : \'/staff/users/view/\'+getCurrentUser().id+\'/account\'}}">\n <i class="icon-key"></i>{{\'APPLICATION_CHANGE_PASSWORD\' | translate}}\n </a>\n </li>\n <li data-ng-click="logout()">\n <a href="#">\n <i class="icon-logout"></i> Log Out\n </a>\n </li>\n </ul>\n </li>\n <!-- END USER LOGIN DROPDOWN -->\n <!-- BEGIN QUICK SIDEBAR TOGGLER -->\n <!-- DOC: Apply "dropdown-dark" class after below "dropdown-extended" to change the dropdown styte -->\n <!-- <li class="dropdown dropdown-quick-sidebar-toggler" data-ng-click="toggleQuickSidebar()">\n <a href="#" class="dropdown-toggle">\n <i class="icon-logout"></i>\n </a>\n </li> -->\n <!-- END QUICK SIDEBAR TOGGLER -->\n</ul>\n<ul class="nav navbar-nav pull-right" data-ng-if="getCurrentUser().role == \'admin\'">\n <li class="dropdown dropdown-user">\n <a href="/setting/license/view" class="dropdown-toggle" dropdown-menu-hover data-toggle="dropdown" data-close-others="true">\n <i class="icon-info"></i> <span class="username username-hide-on-mobile right-margin-10">{{\'APPLICATION_LICENSE_STATUS\' | translate}}</span>\n </a>\n </li>\n</ul>\n<ul class="nav navbar-nav pull-right">\n <!-- BEGIN LANGUAGE BAR -->\n <li class="dropdown dropdown-language">\n <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">\n <img ng-src="assets/images/flags/{{ language }}.png">\n <i class="fa fa-angle-down"></i>\n </a>\n <ul class="dropdown-menu dropdown-menu-default scrollable-menu">\n <li>\n <a href="#" ng-click="changeLanguage(\'ar\')">\n <img alt="" src="assets/images/flags/ar.png"> {{\'APPLICATION_ARABIC\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'da\')">\n <img alt="" src="assets/images/flags/da.png"> {{\'APPLICATION_DANISH\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'de\')">\n <img alt="" src="assets/images/flags/de.png"> {{\'APPLICATION_GERMAN\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'en_EN\')">\n <img alt="" src="assets/images/flags/en_EN.png"> {{\'APPLICATION_ENGLISH\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'es\')">\n <img alt="" src="assets/images/flags/es.png"> {{\'APPLICATION_SPANISH\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'fi\')">\n <img alt="" src="assets/images/flags/fi.png"> {{\'APPLICATION_FINNISH\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'fr\')">\n <img alt="" src="assets/images/flags/fr.png"> {{\'APPLICATION_FRENCH\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'hi\')">\n <img alt="" src="assets/images/flags/hi.png"> {{\'APPLICATION_HINDI\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'it\')">\n <img alt="" src="assets/images/flags/it.png"> {{\'APPLICATION_ITALIAN\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'ja\')">\n <img alt="" src="assets/images/flags/ja.png"> {{\'APPLICATION_JAPANASE\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'ko\')">\n <img alt="" src="assets/images/flags/ko.png"> {{\'APPLICATION_KOREAN\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'nl\')">\n <img alt="" src="assets/images/flags/nl.png"> {{\'APPLICATION_DUTCH\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'no\')">\n <img alt="" src="assets/images/flags/no.png"> {{\'APPLICATION_NORWEGIAN\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'pt-BR\')">\n <img alt="" src="assets/images/flags/pt-BR.png"> {{\'APPLICATION_PORTUGUESE_BRAZIL\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'pt-PT\')">\n <img alt="" src="assets/images/flags/pt-PT.png"> {{\'APPLICATION_PORTUGUESE_PORTUGAL\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'ru\')">\n <img alt="" src="assets/images/flags/ru.png"> {{\'APPLICATION_RUSSIAN\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'sv\')">\n <img alt="" src="assets/images/flags/sv.png"> {{\'APPLICATION_SWEDISH\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'tr\')">\n <img alt="" src="assets/images/flags/tr.png"> {{\'APPLICATION_TURKISH\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'fa\')">\n <img alt="" src="assets/images/flags/fa.png"> {{\'APPLICATION_PERSIAN\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'zh-CN\')">\n <img alt="" src="assets/images/flags/zh-CN.png"> {{\'APPLICATION_CHINESE_SIMPLIFIED\' | translate}}\n </a>\n </li>\n <li>\n <a href="#" ng-click="changeLanguage(\'zh-TW\')">\n <img alt="" src="assets/images/flags/zh-TW.png"> {{\'APPLICATION_CHINESE_TRADITIONAL\' | translate}}\n </a>\n </li>\n </ul>\n </li>\n <!-- END LANGUAGE BAR -->\n</ul>\n<ul data-ng-if="getCurrentUser().role === \'agent\' && headerAgent.showWebBar" class="nav navbar-nav pull-right header-ul-with-separator padding-side-7" data-ng-class="{\'paused-header\':headerAgent.voicePause || headerAgent.mailPause || headerAgent.chatPause || headerAgent.faxPause || headerAgent.smsPause || headerAgent.openchannelPause}">\n <li class="dropdown dropdown-user" >\n <a href="#" class="dropdown-toggle custom-header-a" dropdown-menu-hover data-toggle="dropdown" data-close-others="true" style="cursor:default;">\n <div>{{(headerAgent.voicePause || headerAgent.mailPause || headerAgent.chatPause || headerAgent.faxPause || headerAgent.smsPause || headerAgent.openchannelPause) ? ((!headerAgent.voicePause || !headerAgent.mailPause || !headerAgent.chatPause || !headerAgent.faxPause || !headerAgent.smsPause || !headerAgent.openchannelPause) ? \'(\'+(\'APPLICATION_PARTIAL\' | translate) + \') \'+headerAgent.pauseType : headerAgent.pauseType) : \'READY\'}}</div>\n <div data-ng-if="headerAgent.voicePause || headerAgent.mailPause || headerAgent.chatPause || headerAgent.faxPause || headerAgent.smsPause || headerAgent.openchannelPause"><css-timer start-time="headerAgent.lastPauseAt"></css-timer></div>\n </a>\n </li>\n <li class="dropdown dropdown-user" data-ng-if="headerAgent.voicePause || headerAgent.mailPause || headerAgent.chatPause || headerAgent.faxPause || headerAgent.smsPause || headerAgent.openchannelPause">\n <a href="#" class="dropdown-toggle padding-side-7 header-bar-button header-bar-button-controls" dropdown-menu-hover data-toggle="dropdown" data-close-others="true" data-ng-click="headerPause(\'unpause\')">\n <i class="fa fa-play font-green"></i></a>\n </li>\n <li class="dropdown dropdown-user" data-ng-if="headerAgent.voicePause || headerAgent.mailPause || headerAgent.chatPause || headerAgent.faxPause || headerAgent.smsPause || headerAgent.openchannelPause">\n <a href="#" class="dropdown-toggle header-bar-button" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">\n <i class="fa fa-angle-down"></i>\n </a>\n <ul class="dropdown-menu dropdown-menu-default scrollable-menu">\n <li data-ng-if="headerAgent.voicePause">\n <a href="#" data-ng-click="headerPause(\'unpause\',null,\'voice\')">\n <i class="fa fa-play font-green"></i> {{\'APPLICATION_VOICE\' | translate}}\n </a>\n </li>\n <li data-ng-if="headerAgent.mailPause">\n <a href="#" data-ng-click="headerPause(\'unpause\',null,\'mail\')">\n <i class="fa fa-play font-green"></i> {{\'APPLICATION_MAIL\' | translate}}\n </a>\n </li>\n <li data-ng-if="headerAgent.chatPause">\n <a href="#" data-ng-click="headerPause(\'unpause\',null,\'chat\')">\n <i class="fa fa-play font-green"></i> {{\'APPLICATION_CHAT\' | translate}}\n </a>\n </li>\n <li data-ng-if="headerAgent.faxPause">\n <a href="#" data-ng-click="headerPause(\'unpause\',null,\'fax\')">\n <i class="fa fa-play font-green"></i> {{\'APPLICATION_FAX\' | translate}}\n </a>\n </li>\n <li data-ng-if="headerAgent.smsPause">\n <a href="#" data-ng-click="headerPause(\'unpause\',null,\'sms\')">\n <i class="fa fa-play font-green"></i> {{\'APPLICATION_SMS\' | translate}}\n </a>\n </li>\n <li data-ng-if="headerAgent.openchannelPause">\n <a href="#" data-ng-click="headerPause(\'unpause\',null,\'openchannel\')">\n <i class="fa fa-play font-green"></i> {{\'APPLICATION_OPEN_CHANNEL\' | translate}}\n </a>\n </li>\n </ul>\n </li>\n <li class="dropdown dropdown-user">\n <a href="#" class="dropdown-toggle padding-side-7 header-bar-button header-bar-button-controls" dropdown-menu-hover data-toggle="dropdown" data-close-others="true" data-ng-click="headerPause(\'pause\',\'DEFAULT PAUSE\')">\n <i class="fa fa-pause font-yellow"></i></a>\n </li>\n <li class="dropdown dropdown-user" data-ng-if="headerPauses.length">\n <a href="#" class="dropdown-toggle header-bar-button" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">\n <i class="fa fa-angle-down"></i>\n </a>\n <ul class="dropdown-menu dropdown-menu-default scrollable-menu">\n <li data-ng-repeat="pause in headerPauses">\n <a href="#" data-ng-click="headerPause(\'pause\',pause.name)">\n {{pause.name}}\n </a>\n </li>\n </ul>\n </li>\n </ul>\n <ul class="nav navbar-nav pull-right" data-ng-if="getCurrentUser().role === \'agent\'" >\n <li data class="dropdown dropdown-extended dropdown-notification" id="header_agent_notification_bar" data-ng-click="agentNotifications.agent.new = 0;">\n <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">\n <i class="icon-earphones-alt"></i>\n <span class="badge badge-default" data-ng-if="agentNotifications.agent.new">\n {{agentNotifications.agent.new}} </span>\n </a>\n <ul class="dropdown-menu tabbed-dropdown">\n <li class="external">\n <h3><span class="bold">{{\'APPLICATION_LAST_VOICE_NOTIFICATIONS\' | translate}}</span></h3>\n </li>\n <li>\n <ul class="nav nav-tabs">\n <li class="active">\n <a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_INBOUND\' | translate}}</a>\n </li>\n <li>\n <a href="#" data-target="#tab_1_2" data-toggle="tab">{{ \'APPLICATION_OUTBOUND\' | translate}}</a>\n </li>\n </ul>\n\n <div class="tab-content">\n <!-- GENERAL TAB -->\n <div class="tab-pane active" id="tab_1_1">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="agent-spinner-grid" data-ng-if="busyLoad.agent.busy" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n <ul class="dropdown-menu-list scrollable-menu" style="height: 250px;" data-handle-color="#637283" infinite-scroll="loadNotifications(\'agent\')" can-load=\'!busyLoad.agent.busy\' treshold="261">\n <li data-ng-repeat="notification in agentNotifications.agent.rows">\n <a href="javascript:;" style="cursor:default;">\n <div class="row">\n <div class="col-md-1">\n <img src="assets/images/media/inboundroute.png" style="width:25px;height:25px;" alt="">\n </div>\n <div class="col-md-10">\n <div>{{\'APPLICATION_VOICE_NEW_CALL\' | translate}}<span data-ng-if="notification.status && notification.status !== \'none\'" class="badge float-right" data-ng-class="{\'badge-success\':notification.status === \'taken\',\'badge-danger\':notification.status === \'lost\',\'badge-warning\':notification.status === \'rejected\' || notification.status === \'busy\',\'badge-info\':notification.status === \'taken_elsewhere\'}">{{\'APPLICATION_VOICE_\'+notification.status.toUpperCase() | translate}}</span></div>\n <div><span class="time float-left" style="max-width:none !important;"><span am-time-ago="notification.updatedAt"></span></span></div>\n </div>\n </div>\n <div>\n <span class="message">{{notification.dialstring ? \'APPLICATION_TO\' : \'APPLICATION_FROM\' | translate}}: <span class="span-link" data-ng-click="chooseContact(notification.calleridnum)">{{notification.calleridnum}}</span></span>\n </div>\n <div data-ng-if="notification.status === \'taken_elsewhere\'">\n <span class="message">{{\'APPLICATION_AGENT_NAME\' | translate}}: <span ><b>{{notification.answeredelsewheremembername}}</b></span></span>\n </div>\n <div data-ng-if="notification.status === \'taken\' && notification.lastevent === \'complete\'">\n <span class="message">{{\'APPLICATION_COMPLETED_BY\' | translate}}: <span ><b>{{\'APPLICATION_VOICE_\'+notification.reason.toUpperCase() | translate}}</b></span></span>\n </div>\n </a>\n </li>\n </ul>\n </div>\n <div class="tab-pane" id="tab_1_2">\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="dial-spinner-grid" data-ng-if="busyLoad.dial.busy" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n <ul class="dropdown-menu-list scrollable-menu" style="height: 250px;" data-handle-color="#637283" infinite-scroll="loadNotifications(\'dial\')" can-load=\'!busyLoad.dial.busy\' treshold="261">\n <li data-ng-repeat="notification in agentNotifications.dial.rows">\n <a href="javascript:;" style="cursor:default;">\n <div class="row">\n <div class="col-md-1">\n <img src="assets/images/media/outboundroute.png" style="width:25px;height:25px;" alt="">\n </div>\n <div class="col-md-10">\n <div>{{\'APPLICATION_VOICE_NEW_CALL\' | translate}}<span data-ng-if="notification.status && notification.status !== \'none\'" class="badge float-right" data-ng-class="{\'badge-success\':notification.status === \'taken\',\'badge-danger\':notification.status === \'lost\',\'badge-warning\':notification.status === \'rejected\',\'badge-info\':notification.status === \'taken_elsewhere\'}">{{\'APPLICATION_VOICE_\'+notification.status.toUpperCase() | translate}}</span></div>\n <div><span class="time float-left" style="max-width:none !important;"><span am-time-ago="notification.updatedAt"></span></span></div>\n </div>\n </div>\n <div>\n <span class="message">{{\'APPLICATION_TO\' | translate}}: <span class="span-link" data-ng-click="chooseContact(notification.destcalleridnum)">{{notification.destcalleridnum}}</span></span>\n </div>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </li>\n </ul>\n </li>\n <li data ng-if="license.mail" class="dropdown dropdown-extended dropdown-notification" id="header_mail_notification_bar" data-ng-click="agentNotifications.mail.new = 0;">\n <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">\n <i class="icon-envelope-open"></i>\n <span class="badge badge-default" data-ng-if="agentNotifications.mail.new">\n {{agentNotifications.mail.new}} </span>\n </a>\n <ul class="dropdown-menu">\n <li class="external">\n <h3><span class="bold">{{\'APPLICATION_LAST_MAIL_NOTIFICATIONS\' | translate}}</span></h3>\n </li>\n <li>\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="mail-spinner-grid" data-ng-if="busyLoad.mail.busy" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n <ul class="dropdown-menu-list scrollable-menu" style="height: 250px;" data-handle-color="#637283" infinite-scroll="loadNotifications(\'mail\')" can-load=\'!busyLoad.mail.busy\' treshold="261">\n <li data-ng-repeat="notification in agentNotifications.mail.rows">\n <a href="javascript:;" style="cursor:default;">\n <div class="row">\n <div class="col-md-1">\n <img src="assets/images/media/enquiry.png" style="width:25px;height:25px;" alt="">\n </div>\n <div class="col-md-10">\n <div>{{\'APPLICATION_NEW_MESSAGE\' | translate}}<span data-ng-if="notification.status && notification.status !== \'none\'" class="badge float-right" data-ng-class="{\'badge-success pointer-cursor\':notification.status === \'taken\',\'badge-danger\':notification.status === \'lost\',\'badge-warning\':notification.status === \'rejected\'}" data-ng-click="notification.status === \'taken\' && openRoom(notification.roomid, \'mailRoom\')">{{\'APPLICATION_MESSAGE_\'+notification.status.toUpperCase() | translate}} <i data-ng-if="notification.status === \'taken\'" class="fa fa-envelope"></i></span></div>\n <div><span class="time float-left" style="max-width:none !important;"><span am-time-ago="notification.updatedAt"></span></span></div>\n </div>\n </div>\n <div>\n <span class="message">{{\'APPLICATION_FROM\' | translate}}: <span class="span-link" data-ng-click="openContact(\'mail\',notification.accountid,notification.from)">{{notification.from}}</span></span>\n </div>\n </a>\n </li>\n </ul>\n </li>\n </ul>\n </li>\n <li data ng-if="license.chat" class="dropdown dropdown-extended dropdown-notification" id="header_chat_notification_bar" data-ng-click="agentNotifications.chat.new = 0;">\n <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">\n <i class="icon-bubble"></i>\n <span class="badge badge-default" data-ng-if="agentNotifications.chat.new">\n {{agentNotifications.chat.new}} </span>\n </a>\n <ul class="dropdown-menu">\n <li class="external">\n <h3><span class="bold">{{\'APPLICATION_LAST_CHAT_NOTIFICATIONS\' | translate}}</span></h3>\n </li>\n <li>\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="chat-spinner-grid" data-ng-if="busyLoad.chat.busy" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n <ul class="dropdown-menu-list scrollable-menu" style="height: 250px;" data-handle-color="#637283" infinite-scroll="loadNotifications(\'chat\')" can-load=\'!busyLoad.chat.busy\' treshold="261">\n <li data-ng-repeat="notification in agentNotifications.chat.rows">\n <a href="javascript:;" style="cursor:default;">\n <div class="row">\n <div class="col-md-1">\n <img src="assets/images/media/website.png" style="width:25px;height:25px;" alt="">\n </div>\n <div class="col-md-10">\n <div>{{\'APPLICATION_NEW_CHAT_REQUEST\' | translate}}<span data-ng-if="notification.status && notification.status !== \'none\'" class="badge float-right" data-ng-class="{\'badge-success pointer-cursor\':notification.status === \'taken\',\'badge-danger\':notification.status === \'lost\',\'badge-warning\':notification.status === \'rejected\'}" data-ng-click="notification.status === \'taken\' && openRoom(notification.roomid, \'chatRoom\')">{{\'APPLICATION_CHAT_\'+notification.status.toUpperCase() | translate}} <i data-ng-if="notification.status === \'taken\'" class="fa fa-envelope"></i></span></div>\n <div><span class="time float-left" style="max-width:none !important;"><span am-time-ago="notification.updatedAt"></span></span></div>\n </div>\n </div>\n <div>\n <span class="message">{{\'APPLICATION_FROM\' | translate}}: <span class="span-link" data-ng-click="openContact(\'chat\',notification.websiteid,notification.visitoremail)">{{notification.visitoremail}}</span></span>\n </div>\n </a>\n </li>\n </ul>\n </li>\n </ul>\n </li>\n <li data ng-if="license.fax" class="dropdown dropdown-extended dropdown-notification" id="header_fax_notification_bar" data-ng-click="agentNotifications.fax.new = 0;">\n <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">\n <i class="fa fa-fax"></i>\n <span class="badge badge-default" data-ng-if="agentNotifications.fax.new">\n {{agentNotifications.fax.new}} </span>\n </a>\n <ul class="dropdown-menu">\n <li class="external">\n <h3><span class="bold">{{\'APPLICATION_LAST_FAX_NOTIFICATIONS\' | translate}}</span></h3>\n </li>\n <li>\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="fax-spinner-grid" data-ng-if="busyLoad.fax.busy" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n <ul class="dropdown-menu-list scrollable-menu" style="height: 250px;" data-handle-color="#637283" infinite-scroll="loadNotifications(\'fax\')" can-load=\'!busyLoad.fax.busy\' treshold="261">\n <li data-ng-repeat="notification in agentNotifications.fax.rows">\n <a href="javascript:;" style="cursor:default;">\n <div class="row">\n <div class="col-md-1">\n <img src="assets/images/media/fax.png" style="width:25px;height:25px;" alt="">\n </div>\n <div class="col-md-10">\n <div>{{\'APPLICATION_NEW_FAX_REQUEST\' | translate}}<span data-ng-if="notification.status && notification.status !== \'none\'" class="badge float-right" data-ng-class="{\'badge-success pointer-cursor\':notification.status === \'taken\',\'badge-danger\':notification.status === \'lost\',\'badge-warning\':notification.status === \'rejected\'}" data-ng-click="notification.status === \'taken\' && openRoom(notification.roomid, \'faxRoom\')">{{\'APPLICATION_FAX_\'+notification.status.toUpperCase() | translate}} <i data-ng-if="notification.status === \'taken\'" class="fa fa-envelope"></i></span></div>\n <div><span class="time float-left" style="max-width:none !important;"><span am-time-ago="notification.updatedAt"></span></span></div>\n </div>\n </div>\n <div>\n <span class="message">{{\'APPLICATION_FROM\' | translate}}: <span class="span-link" data-ng-click="openContact(\'fax\',notification.accountid,notification.from)">{{notification.from}}</span></span>\n </div>\n </a>\n </li>\n </ul>\n </li>\n </ul>\n </li>\n <li data ng-if="license.messaging" class="dropdown dropdown-extended dropdown-notification" id="header_sms_notification_bar" data-ng-click="agentNotifications.sms.new = 0;">\n <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">\n <i class="glyphicon glyphicon-comment"></i>\n <span class="badge badge-default" data-ng-if="agentNotifications.sms.new">\n {{agentNotifications.sms.new}} </span>\n </a>\n <ul class="dropdown-menu">\n <li class="external">\n <h3><span class="bold">{{\'APPLICATION_LAST_SMS_NOTIFICATIONS\' | translate}}</span></h3>\n </li>\n <li>\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="sms-spinner-grid" data-ng-if="busyLoad.sms.busy" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n <ul class="dropdown-menu-list scrollable-menu" style="height: 250px;" data-handle-color="#637283" infinite-scroll="loadNotifications(\'sms\')" can-load=\'!busyLoad.sms.busy\' treshold="261">\n <li data-ng-repeat="notification in agentNotifications.sms.rows">\n <a href="javascript:;" style="cursor:default;">\n <div class="row">\n <div class="col-md-1">\n <img src="assets/images/media/sms.png" style="width:25px;height:25px;" alt="">\n </div>\n <div class="col-md-10">\n <div>{{\'APPLICATION_NEW_SMS_REQUEST\' | translate}}<span data-ng-if="notification.status && notification.status !== \'none\'" class="badge float-right" data-ng-class="{\'badge-success pointer-cursor\':notification.status === \'taken\',\'badge-danger\':notification.status === \'lost\',\'badge-warning\':notification.status === \'rejected\'}" data-ng-click="notification.status === \'taken\' && openRoom(notification.roomid, \'smsRoom\')">{{\'APPLICATION_SMS_\'+notification.status.toUpperCase() | translate}} <i data-ng-if="notification.status === \'taken\'" class="fa fa-envelope"></i></span></div>\n <div><span class="time float-left" style="max-width:none !important;"><span am-time-ago="notification.updatedAt"></span></span></div>\n </div>\n </div>\n <div>\n <span class="message">{{\'APPLICATION_FROM\' | translate}}: <span class="span-link" data-ng-click="openContact(\'sms\',notification.accountid,notification.from)">{{notification.from}}</span></span>\n </div>\n </a>\n </li>\n </ul>\n </li>\n </ul>\n </li>\n <li data ng-if="license.openchannel" class="dropdown dropdown-extended dropdown-notification" id="header_openchannel_notification_bar" data-ng-click="agentNotifications.openchannel.new = 0;">\n <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">\n <i class="icon-globe"></i>\n <span class="badge badge-default" data-ng-if="agentNotifications.openchannel.new">\n {{agentNotifications.openchannel.new}} </span>\n </a>\n <ul class="dropdown-menu">\n <li class="external">\n <h3><span class="bold">{{\'APPLICATION_LAST_OPENCHANNEL_NOTIFICATIONS\' | translate}}</span></h3>\n </li>\n <li>\n <!-- BEGIN UI-GRID SPINNER -->\n <span us-spinner spinner-key="openchannel-spinner-grid" data-ng-if="busyLoad.openchannel.busy" spinner-start-active="true"></span>\n <!-- END UI-GRID SPINNER -->\n <ul class="dropdown-menu-list scrollable-menu" style="height: 250px;" data-handle-color="#637283" infinite-scroll="loadNotifications(\'openchannel\')" can-load=\'!busyLoad.openchannel.busy\' treshold="261">\n <li data-ng-repeat="notification in agentNotifications.openchannel.rows">\n <a href="javascript:;" style="cursor:default;">\n <div class="row">\n <div class="col-md-1">\n <img src="assets/images/media/openchannel.png" style="width:25px;height:25px;" alt="">\n </div>\n <div class="col-md-10">\n'+" <div>{{'APPLICATION_NEW_OPENCHANNEL_REQUEST' | translate}}<span data-ng-if=\"notification.status && notification.status !== 'none'\" class=\"badge float-right\" data-ng-class=\"{'badge-success pointer-cursor':notification.status === 'taken','badge-danger':notification.status === 'lost','badge-warning':notification.status === 'rejected'}\" data-ng-click=\"notification.status === 'taken' && openRoom(notification.roomid, 'openchannelRoom')\">{{'APPLICATION_OPENCHANNEL_'+notification.status.toUpperCase() | translate}} <i data-ng-if=\"notification.status === 'taken'\" class=\"fa fa-envelope\"></i></span></div>\n <div><span class=\"time float-left\" style=\"max-width:none !important;\"><span am-time-ago=\"notification.updatedAt\"></span></span></div>\n </div>\n </div>\n <!-- <div>\n <span class=\"message\">{{'APPLICATION_FROM' | translate}}: <span class=\"span-link\" data-ng-click=\"openContact('openchannel',notification.accountid,notification.from)\">{{notification.from}}</span></span>\n </div> -->\n </a>\n </li>\n </ul>\n </li>\n </ul>\n </li>\n </ul>\n </div>\n <!-- END TOP NAVIGATION MENU -->\n </div>\n <!-- END HEADER INNER -->\n"), -a.put("components/modal/delete.html",'<div class="modal-header">\n <button ng-if="modal.dismissable" type="button" ng-click="$dismiss()" class="close">×</button>\n <h4 ng-if="modal.title" ng-bind="modal.title" class="modal-title"></h4>\n</div>\n<div class="modal-body">\n <p ng-if="modal.text" ng-bind="modal.text"></p>\n <div ng-if="modal.html" ng-bind-html="modal.html"></div>\n</div>\n<div class="modal-footer">\n <button ng-repeat="button in modal.buttons" ng-class="button.classes" ng-click="button.click($event)" ng-bind="button.text" class="btn"></button>\n</div>\n'),a.put("components/sidebar/sidebar.html",'<div id="page-sidebar" class="page-sidebar navbar-collapse collapse" data-ng-init="initSidebar()">\n <!-- BEGIN SIDEBAR MENU -->\n <!-- DOC: Apply "page-sidebar-menu-light" class right after "page-sidebar-menu" to enable light sidebar menu style(without borders) -->\n <!-- DOC: Apply "page-sidebar-menu-hover-submenu" class right after "page-sidebar-menu" to enable hoverable(hover vs accordion) sub menu mode -->\n <!-- DOC: Apply "page-sidebar-menu-closed" class right after "page-sidebar-menu" to collapse("page-sidebar-closed" class must be applied to the body element) the sidebar sub menu mode -->\n <!-- DOC: Set data-auto-scroll="false" to disable the sidebar from auto scrolling/focusing -->\n <!-- DOC: Set data-keep-expand="true" to keep the submenues expanded -->\n <!-- DOC: Set data-auto-speed="200" to adjust the sub menu slide up/down speed -->\n <ul data-ng-click="mainTab.active=true" class="page-sidebar-menu" data-keep-expanded="false" data-auto-scroll="true" data-slide-speed="200" data-ng-class="{\'page-sidebar-menu-closed\': settings.layout.pageSidebarClosed}" data-ng-init="getSidebarIntegrations()">\n <!-- DOC: To remove the search box from the sidebar you just need to completely remove the below "sidebar-search-wrapper" LI element -->\n <li class="sidebar-search-wrapper">\n <!-- BEGIN RESPONSIVE QUICK SEARCH FORM -->\n <!-- DOC: Apply "sidebar-search-bordered" class the below search form to have bordered search box -->\n <!-- DOC: Apply "sidebar-search-bordered sidebar-search-solid" class the below search form to have bordered & solid search box -->\n <form class="sidebar-search sidebar-search-bordered" action="extra_search.html" method="POST">\n <a href="javascript:;" class="remove">\n <i class="icon-close"></i>\n </a>\n </form>\n <!-- END RESPONSIVE QUICK SEARCH FORM -->\n </li>\n\n <!-- START DASHBOARD CASE -->\n <li class="start" data-ng-if="::(Auth.isAdmin() || Auth.isAgent() || userModules[1])" data-ng-class="{active: $state.includes(\'main.dashboard\')}">\n <a href="/dashboard/voice">\n <i class="icon-rocket"></i>\n <span class="title">{{\'APPLICATION_DASHBOARD\' | translate}}</span>\n <span data-ng-if="$state.includes(\'main.dashboard\')" class="selected"></span>\n </a>\n </li>\n <!-- END DASHBOARD CASE -->\n\n <!-- START YOURDASHBOARD LIST CASE -->\n <li data-ng-if="::(!Auth.isUser() || userModules[2])" data-ng-class="{active: $state.is(\'main.tools.yourdashboards.show\')}">\n <a href="javascript:;">\n <i class="fa fa-tachometer"></i>\n <span class="title" >{{\'APPLICATION_YOUR_DASHBOARDS\' | translate}}</span>\n <span class="arrow" data-ng-class="{ open: $state.includes(\'main.tools.yourdashboards.show\') }"></span>\n </a>\n <ul class="sub-menu" data-ng-init="getSidebarDashboards()">\n <li data-ng-class="{active: $stateParams.id == dashboard.id && $state.includes(\'main.tools.yourdashboards.show\')}" data-ng-repeat="dashboard in dashboards" data-ng-if="dashboard[Auth.getRole()]">\n <a href="/tools/yourdashboards/show/{{dashboard.id}}" >\n <i class="icon-screen-desktop"></i>\n <span class="title" >{{dashboard.name}} </span>\n </a>\n </li>\n </ul>\n </li>\n <!-- END YOURDASHBOARD LIST CASE -->\n\n <!-- START STAFF LIST CASE -->\n <li data-ng-class="{active: $state.includes(\'main.staff\')}">\n <a href="javascript:;" data-ng-if="::(Auth.isAdmin() || userModules[3])">\n <i class="icon-puzzle"></i>\n <span class="title" >{{\'APPLICATION_STAFF\' | translate}}</span>\n <span class="arrow" data-ng-class="{open: $state.includes(\'main.staff\')}"></span>\n </a>\n <ul class="sub-menu">\n <!-- START USERS CASE -->\n <li data-ng-if="::(Auth.isAdmin())" data-ng-class="{active: $state.includes(\'main.staff.users\')}">\n <a href="/staff/users/list">\n <i class="icon-eye"></i>\n <span class="title" >{{\'APPLICATION_USERS\' | translate}}</span>\n <span data-ng-if="$state.includes(\'main.staff.users\')" class="selected"></span>\n </a>\n </li>\n <!-- END USERS CASE -->\n\n <!-- START AGENTS CASE -->\n <li data-ng-if="::(Auth.isAdmin() || userModules[4])" data-ng-class="{active: $state.includes(\'main.staff.agents\')}">\n <a href="/staff/agents/list">\n <i class="icon-people"></i>\n <span class="title" >{{\'APPLICATION_AGENTS\' | translate}}</span>\n <span data-ng-if="$state.includes(\'main.staff.agents\')" class="selected"></span>\n </a>\n </li>\n <!-- END AGENTS CASE -->\n\n <!-- START TELEPHONES CASE -->\n <li data-ng-if="::(Auth.isAdmin())" data-ng-class="{active: $state.includes(\'main.staff.telephones\')}">\n <a href="/staff/telephones/list">\n <i class="icon-phone"></i>\n <span class="title" >{{\'APPLICATION_TELEPHONES\' | translate}}</span>\n <span data-ng-if="$state.includes(\'main.staff.telephones\')" class="selected"></span>\n </a>\n </li>\n <!-- END TELEPHONES CASE -->\n\n <!-- START TEAMS CASE -->\n <li data-ng-if="::(Auth.isAdmin())" data-ng-class="{active: $state.includes(\'main.staff.teams\')}">\n <a href="/staff/teams/list">\n <i class="icon-shield"></i>\n <span class="title" >{{\'APPLICATION_TEAMS\' | translate}}</span>\n <span data-ng-if="$state.includes(\'main.staff.teams\')" class="selected"></span>\n </a>\n </li>\n <!-- END TEAMS CASE -->\n </ul>\n </li>\n <!-- END STAFF LIST CASE -->\n\n <!-- START CONTACT MANAGER LIST CASE -->\n <li data-ng-if="::(Auth.isAdmin() || Auth.isAgent() || userModules[5])" data-ng-class="{active: $state.includes(\'main.contactmanager\')}">\n <a href="javascript:;" data-ng-class="{\'disabled-link\':!license.cm}">\n <i class="icon-notebook"></i>\n <span class="title disable-target" >{{\'APPLICATION_CONTACT_MANAGER\' | translate}}</span>\n <span class="arrow" data-ng-class="{ open: $state.includes(\'main.contactmanager.contacts\')\n || $state.includes(\'main.contactmanager.companies\')\n || $state.includes(\'main.contactmanager.lists\') || $state.includes(\'main.contactmanager.customfields\') }"></span>\n </a>\n <ul class="sub-menu" data-ng-if="license.cm">\n <!-- START CONTACTS CASE -->\n <li data-ng-class="{active: $state.includes(\'main.contactmanager.contacts\')}">\n <a href="/contactmanager/contacts/list">\n <i class=" fa fa-users"></i>\n <span class="title" >{{\'APPLICATION_CONTACTS\' | translate}}</span>\n <span data-ng-if="$state.includes(\'main.contactmanager.contacts\')" class="selected"></span>\n </a>\n </li>\n <!-- END CONTACTS CASE -->\n <!-- START COMPANIES CASE -->\n <li data-ng-class="{active: $state.includes(\'main.contactmanager.companies\')}" data-ng-if="::(Auth.isAdmin() || Auth.isUser())">\n <a href="/contactmanager/companies/list">\n <i class="icon-briefcase"></i>\n <span class="title" >{{\'APPLICATION_COMPANIES\' | translate}}</span>\n <span data-ng-if="$state.includes(\'main.contactmanager.companies\')" class="selected"></span>\n </a>\n </li>\n <!-- END COMPANIES CASE -->\n <!-- START LISTS CASE -->\n <li data-ng-class="{active: $state.includes(\'main.contactmanager.lists\')}" data-ng-if="::(Auth.isAdmin() || Auth.isUser())">\n <a href="/contactmanager/lists/list">\n <i class="fa fa-list-ul"></i>\n <span class="title" >{{\'APPLICATION_LISTS\' | translate}}</span>\n <span data-ng-if="$state.includes(\'main.contactmanager.lists\')" class="selected"></span>\n </a>\n </li>\n <!-- END LISTS CASE -->\n <!-- START CUSTOM_FIELDS CASE -->\n <li data-ng-class="{active: $state.includes(\'main.contactmanager.customfields\')}" data-ng-if="::(Auth.isAdmin() || Auth.isUser())">\n <a href="/contactmanager/customfields/list">\n <i class="icon-pencil"></i>\n <span class="title" >{{\'APPLICATION_CUSTOM_FIELDS\' | translate}}</span>\n <span data-ng-if="$state.includes(\'main.contactmanager.customfields\')" class="selected"></span>\n </a>\n </li>\n <!-- END CUSTOM_FIELDS CASE -->\n </ul>\n </li>\n <!-- END CONTACT MANAGER LIST CASE -->\n\n <!-- START CHANNEL LIST CASE -->\n <li data-ng-if="::(Auth.isAdmin() || Auth.isAgent() || userModules[6])" data-ng-class="{active: $state.includes(\'main.channels\')}">\n <a href="javascript:;">\n <i class="fa fa-spinner"></i>\n <span class="title" >{{\'APPLICATION_CHANNELS\' | translate}}</span>\n <span class="arrow" data-ng-class="{open: $state.includes(\'main.channels\')}"></span>\n </a>\n <ul class="sub-menu">\n <!-- START VOICE CASE -->\n <li data-ng-if="::(Auth.isAdmin() || Auth.isAgent() || userModules[7])" data-ng-class="{ active: $state.includes(\'main.channels.voice\') }">\n <a href="javascript:;">\n <i class="icon-earphones-alt"></i>\n <span class="title">{{ \'APPLICATION_VOICE\' | translate}}</span>\n <span class="arrow" data-ng-class="{ open: $state.includes(\'main.channels.voice\') }"></span>\n </a>\n\n <ul class="sub-menu">\n <li data-ng-if="::(Auth.isAdmin())" data-ng-class="{active: $state.includes(\'main.channels.voice.queues\')}">\n <a href="/channels/voice/queues/list">\n <i class="icon-docs"></i>\n <span class="title">{{\'APPLICATION_QUEUES\' | translate}}</span>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin() || userModules[21])">\n <a href="javascript:;">\n <i class="icon-directions"></i>\n <span class="title"> {{ \'APPLICATION_ROUTES\' | translate}} </span>\n <span class="arrow" data-ng-class="{ open: $state.includes(\'main.channels.voice.routes\') }"></span>\n <ul class="sub-menu">\n <li data-ng-class="{active: $state.includes(\'main.channels.voice.routes.inbound\')}">\n <a href="/channels/voice/routes/inbound/list">\n <i class="icon-call-in"></i>\n <span class="title"> {{\'APPLICATION_INBOUND\' | translate}} </span>\n </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.channels.voice.routes.outbound\')}">\n <a href="/channels/voice/routes/outbound/list">\n <i class="icon-call-out"></i>\n <span class="title"> {{\'APPLICATION_OUTBOUND\' | translate}} </span>\n </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.channels.voice.routes.internal\')}">\n <a href="/channels/voice/routes/internal/list">\n <i class="icon-reload"></i>\n <span class="title"> {{\'APPLICATION_INTERNALS\' | translate}} </span>\n </a>\n </li>\n </ul>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin() || userModules[22])" data-ng-class="{active: $state.includes(\'main.channels.voice.contexts\')}">\n <a href="/channels/voice/contexts/list">\n <i class="icon-docs"></i>\n <span class="title"> {{\'APPLICATION_CONTEXTS\' | translate}} </span>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin() || userModules[23])" data-ng-class="{active: $state.includes(\'main.channels.voice.voicemails\')}">\n <a href="/channels/voice/voicemails/list">\n <i class="icon-envelope-letter"></i>\n <span class="title"> {{\'APPLICATION_VOICEMAILS\' | translate}} </span>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin() || userModules[24])" data-ng-class="{active: $state.includes(\'main.channels.voice.mohs\')}">\n <a href="/channels/voice/mohs/list">\n <i class="icon-music-tone"></i>\n <span class="title"> {{\'APPLICATION_MOH\' | translate}} </span>\n </a>\n </li>\n <!-- START RECORDING CASE -->\n <li data-ng-if="::(Auth.isAdmin() || Auth.isAgent() || userModules[25])" data-ng-class="{active: $state.includes(\'main.channels.voice.recordings\')}">\n <a href="/channels/voice/recordings/list">\n <i class="icon-control-play"></i>\n <span class="title">{{\'APPLICATION_RECORDINGS\' | translate}}</span>\n </a>\n </li>\n <!-- END RECORDING CASE -->\n <!-- START REALTIME CASE -->\n <li data-ng-if="::(Auth.isAdmin() || userModules[26])" data-ng-class="{active: $state.includes(\'main.channels.voice.realtime\')}">\n <a href="/channels/voice/realtime/view/agents">\n <i class="icon-energy"></i>\n <span class="title">{{\'APPLICATION_REALTIME\' | translate}}</span>\n </a>\n </li>\n <!-- END REALTIME CASE -->\n <!-- START CHANSPY CASE -->\n <li data-ng-if="::(Auth.isAdmin() || userModules[27])" data-ng-class="{active: $state.includes(\'main.channels.voice.chanspy\')}">\n <a href="/channels/voice/chanspy/list">\n <i class="fa fa-user-secret"></i>\n <span class="title" >{{\'APPLICATION_CHANSPY\' | translate}}</span>\n <!-- <span data-ng-if="$state.includes(\'main.chanspy\')" class="selected"></span> -->\n </a>\n </li>\n <!-- END CHANSPY CASE -->\n <!-- START CHANSPY CASE -->\n <li data-ng-if="::(Auth.isAdmin() || userModules[28])" data-ng-class="{active: $state.includes(\'main.channels.voice.dispositions\')}">\n <a href="/channels/voice/dispositions/list">\n <i class="icon-target"></i>\n <span class="title" >{{\'APPLICATION_DISPOSITIONS\' | translate}}</span>\n </a>\n </li>\n <!-- END CHANSPY CASE -->\n </ul>\n </li>\n <!-- END VOICE CASE -->\n\n <!-- START CHAT CASE -->\n <li data-ng-if="::(Auth.isAdmin() || Auth.isAgent() || userModules[8])" data-ng-class="{active: $state.includes(\'main.channels.chat\')}">\n <a href="javascript:;" data-ng-class="{\'disabled-link\':!license.chat}">\n <i class="icon-bubble"></i>\n <span class="title disable-target">{{\'APPLICATION_CHAT\' | translate}}</span>\n <span class="arrow" data-ng-class="{open: $state.includes(\'main.channels.chat\')}"></span>\n </a>\n <ul class="sub-menu" data-ng-if="license.chat">\n <li data-ng-if="::(Auth.isAdmin() || userModules[29])" data-ng-class="{active: $state.includes(\'main.channels.chat.websites\')}">\n <a href="/channels/chat/websites/list">\n <i class="icon-globe"></i>\n <span class="title"> {{\'APPLICATION_WEB_SITES\' | translate}} </span>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin() || userModules[30])" data-ng-class="{active: $state.includes(\'main.channels.chat.queues\')}">\n <a href="/channels/chat/queues/list">\n <i class="icon-docs"></i>\n <span class="title"> {{\'APPLICATION_QUEUES\' | translate}} </span>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin() || Auth.isAgent() || userModules[31])" data-ng-class="{active: $state.includes(\'main.channels.chat.room\')}">\n <a href="/channels/chat/room/internal/list">\n <i class="fa fa-users"></i>\n <span class="title"> {{\'APPLICATION_INTERACTIONS\' | translate}} </span>\n </a>\n </li>\n <!-- <li data-ng-if="::(Auth.isAdmin() || userModules[8])" data-ng-class="{active: $state.includes(\'main.channels.chat.online\')}">\n <a href="/channels/chat/online/list">\n <i class="icon-login"></i>\n <span class="title"> {{\'APPLICATION_ONLINE_MESSAGES\' | translate}} </span>\n </a>\n </li> -->\n <li data-ng-if="::(Auth.isAdmin() || userModules[32])" data-ng-class="{active: $state.includes(\'main.channels.chat.offline\')}">\n <a href="/channels/chat/offline/list">\n <i class="icon-logout"></i>\n <span class="title"> {{\'APPLICATION_OFFLINE_MESSAGES\' | translate}} </span>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin() || userModules[33])" data-ng-class="{active: $state.includes(\'main.channels.chat.realtime\')}">\n <a href="/channels/chat/realtime/view/agents">\n <i class="icon-energy"></i>\n <span class="title">{{\'APPLICATION_REALTIME\' | translate}}</span>\n </a>\n </li>\n </ul>\n </li>\n <!-- END CHAT CASE -->\n\n <!-- START MAIL CASE -->\n <li data-ng-if="::(Auth.isAdmin() || Auth.isAgent() || userModules[9])" data-ng-class="{active: $state.includes(\'main.channels.mail\')}" >\n <a href="javascript:;" data-ng-class="{\'disabled-link\':!license.mail}">\n <i class="icon-envelope"></i>\n <span class="title disable-target">{{\'APPLICATION_MAIL\' | translate}}</span>\n <span class="arrow" data-ng-class="{ open: $state.includes(\'main.channels.mail\') }"></span>\n </a>\n\n <ul class="sub-menu" data-ng-if="license.mail">\n <li data-ng-if="::(Auth.isAdmin() || userModules[34])" data-ng-class="{active: $state.includes(\'main.channels.mail.accounts\') || $state.includes(\'main.channels.mail.account\')}">\n <a href="/channels/mail/accounts/list">\n <i class="icon-notebook"></i>\n <span class="title"> {{\'APPLICATION_ACCOUNTS\' | translate}} </span>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin() || userModules[35])" data-ng-class="{active: $state.includes(\'main.channels.mail.queues\') || $state.includes(\'main.channels.mail.queue\')}">\n <a href="/channels/mail/queues/list">\n <i class="icon-docs"></i>\n <span class="title"> {{\'APPLICATION_QUEUES\' | translate}} </span>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin() || Auth.isAgent() || userModules[36])" data-ng-class="{active: $state.includes(\'main.channels.mail.inbox\')}">\n <a href="/channels/mail/inbox/view">\n <i class="icon-note"></i>\n <span class="title"> {{\'APPLICATION_INBOX\' | translate}} </span>\n </a>\n </li>\n <!-- START REALTIME CASE -->\n <li data-ng-if="::(Auth.isAdmin() || userModules[37])" data-ng-class="{active: $state.includes(\'main.channels.mail.realtime\')}">\n <a href="/channels/mail/realtime/view/agents">\n <i class="icon-energy"></i>\n <span class="title">{{\'APPLICATION_REALTIME\' | translate}}</span>\n </a>\n </li>\n <!-- END REALTIME CASE -->\n </ul>\n </li>\n <!-- END MAIL CASE -->\n\n <!-- START FAX CASE -->\n <li data-ng-if="::(Auth.isAdmin() || Auth.isAgent() || userModules[10])" data-ng-class="{active: $state.includes(\'main.channels.fax\')}">\n <a href="javascript:;" data-ng-class="{\'disabled-link\':!license.fax}">\n <i class="fa fa-fax"></i>\n <span class="title disable-target"> {{ \'APPLICATION_FAX\' | translate}}</span>\n <span class="arrow" data-ng-class="{ open: $state.includes(\'main.channels.fax\') }"></span>\n </a>\n <ul class="sub-menu" data-ng-if="license.fax">\n <li data-ng-if="::(Auth.isAdmin() || userModules[38])" data-ng-class="{active: $state.includes(\'main.channels.fax.accounts\')}">\n <a href="/channels/fax/accounts/list">\n <i class="icon-notebook"></i>\n <span class="title"> {{ \'APPLICATION_ACCOUNTS\' | translate}} </span>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin() || userModules[39])" data-ng-class="{active: $state.includes(\'main.channels.fax.queues\')}">\n <a href="/channels/fax/queues/list">\n <i class="icon-docs"></i>\n <span class="title"> {{ \'APPLICATION_QUEUES\' | translate }} </span>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin() || Auth.isAgent() || userModules[40])" data-ng-class="{active: $state.includes(\'main.channels.fax.inbox\')}">\n <a href="/channels/fax/inbox/view">\n <i class="icon-note"></i>\n <span class="title"> {{ \'APPLICATION_INBOX\' | translate }} </span>\n </a>\n </li>\n <!-- START REALTIME CASE -->\n <li data-ng-if="::(Auth.isAdmin() || userModules[41])" data-ng-class="{active: $state.includes(\'main.channels.fax.realtime\')}">\n <a href="/channels/fax/realtime/view/agents">\n <i class="icon-energy"></i>\n <span class="title">{{\'APPLICATION_REALTIME\' | translate}}</span>\n </a>\n </li>\n <!-- END REALTIME CASE -->\n </ul>\n </li>\n <!-- END FAX CASE -->\n\n <!-- START SMS CASE -->\n <li data-ng-if="::(Auth.isAdmin() || Auth.isAgent() || userModules[11])" data-ng-class="{active: $state.includes(\'main.channels.sms\')}">\n <a href="javascript:;" data-ng-class="{\'disabled-link\':!license.messaging}">\n <i class="glyphicon glyphicon-comment"></i>\n <span class="title disable-target">{{\'APPLICATION_SMS\' | translate}}</span>\n <span class="arrow" data-ng-class="{ open: $state.includes(\'main.channels.sms\') }"></span>\n </a>\n\n <ul class="sub-menu" data-ng-if="license.messaging">\n <li data-ng-if="::(Auth.isAdmin() || userModules[42])" data-ng-class="{active: $state.includes(\'main.channels.sms.accounts\') || $state.includes(\'main.channels.sms.account\')}">\n <a href="/channels/sms/accounts/list">\n <i class="icon-notebook"></i>\n <span class="title"> {{\'APPLICATION_ACCOUNTS\' | translate}} </span>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin() || userModules[43])" data-ng-class="{active: $state.includes(\'main.channels.sms.queues\') || $state.includes(\'main.channels.sms.queue\')}">\n <a href="/channels/sms/queues/list">\n <i class="icon-docs"></i>\n <span class="title"> {{\'APPLICATION_QUEUES\' | translate}} </span>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin() || Auth.isAgent() || userModules[44])" data-ng-class="{active: $state.includes(\'main.channels.sms.inbox\')}">\n <a href="/channels/sms/inbox/view">\n <i class="icon-note"></i>\n <span class="title"> {{\'APPLICATION_INBOX\' | translate}} </span>\n </a>\n </li>\n <!-- START REALTIME CASE -->\n <li data-ng-if="::(Auth.isAdmin() || userModules[45])" data-ng-class="{active: $state.includes(\'main.channels.sms.realtime\')}">\n <a href="/channels/sms/realtime/view/agents">\n <i class="icon-energy"></i>\n <span class="title">{{\'APPLICATION_REALTIME\' | translate}}</span>\n </a>\n </li>\n <!-- END REALTIME CASE -->\n </ul>\n </li>\n\n <!-- END SMS CASE -->\n\n <!-- START OPENCHANNEL CASE -->\n <li data-ng-if="::(Auth.isAdmin() || Auth.isAgent()|| userModules[20])" data-ng-class="{active: $state.includes(\'main.channels.openchannel\')}">\n <a href="javascript:;" data-ng-class="{\'disabled-link\':!license.openchannel}" >\n <i class="icon-globe"></i>\n <span class="title disable-target">{{\'APPLICATION_OPEN_CHANNEL\' | translate}}</span>\n <span class="arrow" data-ng-class="{ open: $state.includes(\'main.channels.openchannel\') }"></span>\n </a>\n <ul class="sub-menu" data-ng-if="license.openchannel" >\n <li data-ng-if="::(Auth.isAdmin()|| userModules[46])" data-ng-class="{active: $state.includes(\'main.channels.openchannel.accounts\') || $state.includes(\'main.channels.openchannel.account\')}">\n <a href="/channels/openchannel/accounts/list">\n <i class="icon-notebook"></i>\n <span class="title"> {{\'APPLICATION_ACCOUNTS\' | translate}} </span>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin()|| userModules[47])" data-ng-class="{active: $state.includes(\'main.channels.openchannel.queues\') || $state.includes(\'main.channels.openchannel.queue\')}">\n <a href="/channels/openchannel/queues/list">\n <i class="icon-docs"></i>\n <span class="title"> {{\'APPLICATION_QUEUES\' | translate}} </span>\n </a>\n </li>\n <li data-ng-if="::(Auth.isAdmin() || Auth.isAgent()|| userModules[48])" data-ng-class="{active: $state.includes(\'main.channels.openchannel.inbox\')}">\n <a href="/channels/openchannel/inbox/view">\n <i class="icon-note"></i>\n <span class="title"> {{\'APPLICATION_INBOX\' | translate}} </span>\n </a>\n </li>\n <!-- START REALTIME CASE -->\n <li data-ng-if="::(Auth.isAdmin() || userModules[49])" data-ng-class="{active: $state.includes(\'main.channels.openchannel.realtime\')}">\n <a href="/channels/openchannel/realtime/view/agents">\n <i class="icon-energy"></i>\n <span class="title">{{\'APPLICATION_REALTIME\' | translate}}</span>\n </a>\n </li>\n <!-- END REALTIME CASE -->\n </ul>\n </li>\n\n <!-- END OPENCHANNEL CASE -->\n <!-- START REALTIME CASE -->\n <li data-ng-if="::(Auth.isAdmin() || userModules[12])" data-ng-class="{active: $state.includes(\'main.channels.realtime\')}">\n <a href="/channels/realtime/view/agents">\n <i class="icon-energy"></i>\n <span class="title">{{\'APPLICATION_OMNI_REALTIME\' | translate}}</span>\n </a>\n </li>\n <!-- END REALTIME CASE -->\n </ul>\n </li>\n <!-- END CHANNEL LIST CASE -->\n\n <!-- START TOOLS LIST CASE -->\n <li data-ng-if="::(Auth.isAdmin() || userModules[13])" data-ng-class="{active: $state.includes(\'main.tools\') && !$state.is(\'main.tools.yourdashboards.show\')}">\n <a href="javascript:;">\n <i class="icon-wrench"></i>\n <span class="title" >{{\'APPLICATION_TOOLS\' | translate}}</span>\n <span class="arrow" data-ng-class="{ open: $state.includes(\'main.tools\') && !$state.is(\'main.tools.yourdashboards.show\')}"></span>\n </a>\n <ul class="sub-menu">\n <li data-ng-class="{active: $state.includes(\'main.tools.triggers\')}" data-ng-if="::(Auth.isAdmin() || userModules[50])">\n <a href="/tools/triggers/list">\n <i class="icon-bulb"></i>\n <span class="title"> {{\'APPLICATION_TRIGGERS\' | translate}} </span>\n </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.tools.automations\')}" data-ng-if="::(Auth.isAdmin() || userModules[51])">\n <a href="/tools/automations/list">\n <i class="icon-settings"></i>\n <span class="title"> {{\'APPLICATION_AUTOMATIONS\' | translate}} </span>\n </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.tools.trunks\')}" data-ng-if="::(Auth.isAdmin() || userModules[52])">\n <a href="/tools/trunks/list">\n <i class="icon-link"></i>\n <span class="title"> {{\'APPLICATION_TRUNKS\' | translate}} </span>\n </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.tools.intervals\')}" data-ng-if="::(Auth.isAdmin() || userModules[53])">\n <a href="/tools/intervals/list">\n <i class="icon-clock"></i>\n <span class="title"> {{\'APPLICATION_INTERVALS\' | translate}} </span>\n </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.tools.variables\')}" data-ng-if="::(Auth.isAdmin() || userModules[54])">\n <a href="/tools/variables/list">\n <i class="fa fa-eye"></i>\n <span class="title" >{{\'APPLICATION_VARIABLES\' | translate}} </span>\n </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.tools.tags\')}" data-ng-if="::(Auth.isAdmin() || userModules[55])">\n <a href="/tools/tags/list">\n <i class="icon-tag"></i>\n <span class="title" >{{\'APPLICATION_TAGS\' | translate}} </span>\n </a>\n </li>\n <!-- START TEMPLATE CASE -->\n <li data-ng-class="{active: $state.includes(\'main.tools.templates\')}" data-ng-if="::(Auth.isAdmin() || userModules[56])">\n <a href="/tools/templates/list">\n <i class="icon-docs"></i>\n <span class="title"> {{\'APPLICATION_TEMPLATES\' | translate}} </span>\n </a>\n </li>\n <!-- END TEMPLATE CASE -->\n\n <!-- START PAUSE CASE -->\n <li data-ng-class="{active: $state.includes(\'main.tools.pauses\')}" data-ng-if="::(Auth.isAdmin() || userModules[57])">\n <a href="/tools/pauses/list">\n <i class="icon-control-pause"></i>\n <span class="title"> {{\'APPLICATION_PAUSES\' | translate}} </span>\n </a>\n </li>\n <!-- END PAUSE CASE -->\n\n <!-- START ANSWER CASE -->\n <li data-ng-class="{active: $state.includes(\'main.tools.answers\')}" data-ng-if="::(Auth.isAdmin() || userModules[58])">\n <a href="/tools/answers/list">\n <i class="icon-magic-wand"></i>\n <span class="title"> {{\'APPLICATION_CANNED_ANSWERS\' | translate}} </span>\n </a>\n </li>\n <!-- END ANSWER CASE -->\n\n <!-- START DASHBOARD MANAGER CASE -->\n <li data-ng-class="{active: $state.includes(\'main.tools.yourdashboards\') && !$state.is(\'main.tools.yourdashboards.show\')}" data-ng-if="::(Auth.isAdmin() || userModules[59])">\n <a href="/tools/yourdashboards/list">\n <i class="fa fa-tachometer"></i>\n <span class="title"> {{\'APPLICATION_DASHBOARDS_MANAGER\' | translate}} </span>\n </a>\n </li>\n <!-- END DASHBOARD MANAGER CASE -->\n\n <!-- START SOUND CASE -->\n <li data-ng-class="{active: $state.includes(\'main.tools.sounds\')}" data-ng-if="::(Auth.isAdmin() || userModules[60])">\n <a href="/tools/sounds/list">\n <i class="icon-music-tone-alt"></i>\n <span class="title" >{{\'APPLICATION_SOUNDS\' | translate}}</span>\n <!-- <span data-ng-if="$state.includes(\'main.sounds\')" class="selected"></span> -->\n </a>\n </li>\n <!-- END SOUND CASE -->\n\n <!-- START SCHEDULE CASE -->\n <li data-ng-class="{active: $state.includes(\'main.tools.scheduler\')}" data-ng-if="::(Auth.isAdmin() || userModules[61])">\n <a href="/tools/scheduler/list">\n <i class="icon-calendar"></i>\n <span class="title" >{{\'APPLICATION_SCHEDULER\' | translate}}</span>\n <!-- <span data-ng-if="$state.includes(\'main.sounds\')" class="selected"></span> -->\n </a>\n </li>\n <!-- END SCHEDULE CASE -->\n </ul>\n </li>\n <!-- END TOOLS LIST CASE -->\n\n <!-- START CALLYSQUARE CASE -->\n <li data-ng-if="::(Auth.isAdmin() || userModules[14])" data-ng-class="{active: $state.includes(\'main.square\')}">\n <a href="javascript:;">\n <i class="fa fa-superscript"></i>\n <span class="title" >Cally ²</span>\n <span class="arrow"></span>\n </a>\n <ul class="sub-menu">\n <li data-ng-class="{active: $state.includes(\'main.square.projects\')}">\n <a href="/square/projects/list">\n <i class="fa fa-slack"></i>\n <span class="title" >{{\'APPLICATION_PROJECTS\' | translate}} </span>\n </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.square.odbc\')}">\n <a href="/square/odbc/list">\n <i class="fa fa-database"></i>\n <span class="title" >{{\'APPLICATION_ODBC\' | translate}} </span>\n </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.square.recordings\')}">\n <a href="/square/recordings/list">\n <i class="icon-microphone"></i>\n <span class="title" >{{\'APPLICATION_RECORDINGS\' | translate}} </span>\n </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.square.realtime.view.general\')}">\n <a href="/square/realtime/view/general">\n <i class="icon-energy"></i>\n <span class="title" >{{\'APPLICATION_REALTIME\' | translate}} </span>\n </a>\n </li>\n </ul>\n </li>\n <!-- END CALLYSQUARE CASE -->\n <!-- START JSCRIPTY LIST -->\n <li data-ng-show="::(Auth.isAdmin() || Auth.isAgent() || userModules[15])" data-ng-class="{active: $state.includes(\'main.jscripty\')}">\n <a href="javascript:;" data-ng-class="{\'disabled-link\':!license.jscripty}" >\n <i class="icon-note"></i>\n <span class="title disable-target" >{{\'APPLICATION_JSCRIPTY\' | translate}} </span>\n <span class="arrow"></span>\n </a>\n <ul class="sub-menu" data-ng-if="license.jscripty">\n <!-- -->\n <!-- START PROJECTS CASE -->\n <li data-ng-show="Auth.isAdmin() || Auth.isAgent() || userModules[15]" data-ng-class="{active: $state.includes(\'main.jscripty.projects\')}">\n <a href="/jscripty/projects/list">\n <i class="fa fa-slack"></i>\n <span class="title" >{{\'APPLICATION_PROJECTS\' | translate}} </span>\n </a>\n </li>\n <!-- END PROJECTS CASE -->\n </ul>\n </li>\n <!-- END JSCRIPTY LIST -->\n\n <!-- START MOTION DIALER LIST CASE-->\n <li data-ng-if="::(Auth.isAdmin() || userModules[16])" data-ng-class="{active: $state.includes(\'main.motiondialer\')}">\n <a href="javascript:;" data-ng-class="{\'disabled-link\':!license.dialer}">\n <i class="icon-control-forward"></i>\n <span class="title disable-target" >{{\'APPLICATION_MOTION_DIALER\' | translate}} </span>\n <span class="arrow"></span>\n </a>\n <ul class="sub-menu" data-ng-if="license.dialer">\n <li data-ng-class="{active: $state.includes(\'main.motiondialer.blacklist\')}">\n <a href="/motiondialer/blacklist/list">\n <i class="icon-doc"></i>\n <span class="title" >{{\'APPLICATION_BLACKLIST\' | translate}} </span>\n </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.motiondialer.processes\')}">\n <a href="/motiondialer/processes/list">\n <i class="icon-settings"></i>\n <span class="title" >{{\'APPLICATION_PROCESSES\' | translate}} </span>\n </a>\n </li>\n <li data-ng-class="{active: $state.includes(\'main.motiondialer.info\')}">\n <a href="/motiondialer/info/view/about">\n <i class="icon-info"></i>\n <span class="title" >{{\'APPLICATION_INFO\' | translate}} </span>\n </a>\n </li>\n </ul>\n </li>\n <!-- END MOTION DIALER LIST CASE-->\n\n <!-- START ANALYTIC LIST CASE -->\n <li data-ng-if="::(Auth.isAdmin() || userModules[17])" data-ng-class="{active: $state.includes(\'main.analytics.reports\')\n || $state.includes(\'main.analytics.extracted\')\n || $state.includes(\'main.analytics.metrics\')}" data-ng-if="::(Auth.isAdmin())">\n <a href="javascript:;">\n <i class="icon-calculator"></i>\n <span class="title" >{{\'APPLICATION_ANALYTICS\' | translate}}</span>\n <span class="arrow" data-ng-class="{ open: $state.includes(\'main.analytics.reports\')\n || $state.includes(\'main.analytics.extracted\')\n || $state.includes(\'main.analytics.metrics\') }"></span>\n </a>\n <ul class="sub-menu">\n <!-- START REPORT CASE -->\n <li data-ng-class="{active: $state.includes(\'main.analytics.reports\')}">\n <a href="/analytics/reports/list">\n <i class="icon-book-open"></i>\n <span class="title" >{{\'APPLICATION_REPORTS\' | translate}}</span>\n <span data-ng-if="$state.includes(\'main.analytics.reports\')" class="selected"></span>\n </a>\n </li>\n <!-- END REPORT CASE -->\n <!-- START EXTRA REPORT CASE -->\n <li data-ng-class="{active: $state.includes(\'main.analytics.extracted\')}">\n <a href="/analytics/extracted/list">\n <i class="fa fa-file-pdf-o"></i>\n <span class="title" >{{\'APPLICATION_EXTRACTED_REPORTS\' | translate}}</span>\n <span data-ng-if="$state.includes(\'main.analytics.extracted\')" class="selected"></span>\n </a>\n </li>\n <!-- END EXTRA REPORT CASE -->\n <!-- START METRICS CASE -->\n <li data-ng-class="{active: $state.includes(\'main.analytics.metrics\')}">\n <a href="/analytics/metrics/list">\n <i class="icon-calculator"></i>\n <span class="title" >{{\'APPLICATION_METRICS\' | translate}}</span>\n <span data-ng-if="$state.includes(\'main.metrics.reports\')" class="selected"></span>\n </a>\n </li>\n <!-- END METRICS CASE -->\n </ul>\n </li>\n <!-- END ANALYTIC LIST CASE -->\n\n <!-- START SETTINGS LIST -->\n <li data-ng-if="::(Auth.isAdmin() || userModules[18])" data-ng-class="{active: $state.includes(\'main.setting\')}">\n <a href="javascript:;">\n <i class="icon-settings"></i>\n <span class="title" >{{\'APPLICATION_SETTINGS\' | translate}}</span>\n <span class="arrow"></span>\n </a>\n <ul class="sub-menu">\n <!-- START GENERAL CASE -->\n <li data-ng-class="{active: $state.includes(\'main.setting.general\')}">\n <a href="/setting/general/view/main">\n <i class="icon-settings"></i>\n <span class="title"> {{\'APPLICATION_GENERAL\' | translate}} </span>\n </a>\n </li>\n <!-- END GENERAL CASE -->\n\n <!-- START UPDATES CASE -->\n <li data-ng-class="{active: $state.includes(\'main.setting.updates\')}">\n <a href="{{license.update ? \'/setting/updates/list\' : \'javascript:;\'}}" data-ng-class="{\'disabled-link\':!license.update}">\n <i class="icon-cloud-download"></i>\n <span class="title disable-target" >{{\'APPLICATION_UPDATES\' | translate}}</span>\n <!-- <span data-ng-if="$state.includes(\'main.updates\')" class="selected"></span> -->\n </a>\n </li>\n <!-- END UPDATES CASE -->\n\n <!-- START SMTP CASE -->\n <li data-ng-class="{active: $state.includes(\'main.setting.smtp\')}">\n <a href="/setting/smtp/view">\n <i class="icon-envelope"></i>\n <span class="title">SMTP</span>\n <!-- <span data-ng-if="$state.includes(\'main.smtp\')" class="selected"></span> -->\n </a>\n </li>\n <!-- END SMTP CASE -->\n\n <!-- START LICENSE CASE -->\n <li data-ng-class="{active: $state.includes(\'main.setting.license\')}">\n <a href="/setting/license/view">\n <i class="icon-info"></i>\n <span class="title"> {{\'APPLICATION_LICENSE\' | translate}} </span>\n </a>\n </li>\n <!-- END LICENSE CASE -->\n\n <!-- START NETWORK CASE -->\n <li data-ng-class="{active: $state.includes(\'main.setting.network\')}">\n <a href="/setting/network/view/localnet">\n <i class="icon-globe"></i>\n <span class="title"> {{\'APPLICATION_NETWORK\' | translate}} </span>\n </a>\n </li>\n <!-- END NETWORK CASE -->\n\n <!-- START SYSTEM CASE -->\n <li data-ng-class="{active: $state.includes(\'main.setting.system\')}">\n <a href="/setting/system/view/general">\n <i class="icon-pie-chart"></i>\n <span class="title"> {{\'APPLICATION_SYSTEM\' | translate}} </span>\n </a>\n </li>\n <!-- END SYSTEM CASE -->\n\n <!-- START CUSTOMIZATION CASE -->\n <li data-ng-class="{active: $state.includes(\'main.setting.customization\')}">\n <a href="/setting/customization/view/general">\n <i class="icon-equalizer"></i>\n <span class="title"> {{\'APPLICATION_CUSTOMIZATION\' | translate}} </span>\n </a>\n </li>\n <!-- END CUSTOMIZATION CASE -->\n </ul>\n </li>\n <!-- END SETTINGS LIST -->\n\n <!-- START INTEGRATION CASE -->\n <li data-ng-if=" (Auth.isAdmin() || Auth.isAgent() || userModules[19]) && integration.active" data-ng-repeat="integration in integrations" data-ng-class="{active: $state.includes(\'main.{{integration.state}}\')}">\n <a href="/{{integration.state}}/list" ng-switch on="integration.state" data-ng-if="integration.state !== \'iframe\' && (Auth.isAdmin() || userModules[19])">\n <i ng-switch-when="zendesk" class="icon-heart"></i>\n <i ng-switch-when="salesforce" class="fa fa-cloud"></i>\n <i ng-switch-default class="icon-handbag"></i>\n <span class="title" >{{integration.name}}</span>\n <span data-ng-if="$state.includes(\'main.{{integration.state}}\')" class="selected"></span>\n </a>\n <a href="/{{integration.state}}/view" data-ng-if="integration.state === \'iframe\'">\n <i class="fa fa-chrome"></i>\n <span class="title" data-ng-if="Auth.isAdmin() || userModules[19]">{{integration.name}}</span>\n <span class="title" data-ng-if="Auth.isAgent()">{{integration.title || integration.name}}</span>\n <span data-ng-if="$state.includes(\'main.{{integration.state}}\')" class="selected"></span>\n </a>\n </li>\n\n <li data-ng-if="::(Auth.isAdmin())" data-ng-class="{active: $state.is(\'main.market\')}">\n <a href="/market">\n <i class="icon-handbag"></i>\n <span class="title" translate>Market Place</span>\n <span data-ng-if="$state.includes(\'main.market\')" class="selected"></span>\n </a>\n </li>\n <!-- END INTEGRATIONS CASE -->\n <li>\n <a href="javascript:;" data-ng-click="activeTour.main = true" data-ng-if="::(!Auth.isAgent())">\n <i class="icon-location-pin"></i>\n <span class="title">{{\'APPLICATION_TAKE_A_TOUR\' | translate}}</span>\n </a>\n </li>\n <li>\n <a href="javascript:;" data-ng-click="about()">\n <i class="icon-info"></i>\n <span class="title">{{\'APPLICATION_ABOUT\' | translate}}</span>\n </a>\n </li>\n\n</ul>\n<!-- END SIDEBAR MENU -->\n</div>\n'); -}]); \ No newline at end of file diff --git a/public/assets/plugins/jscripty/js/Actions.js b/public/assets/plugins/jscripty/js/Actions.js index 68f0873..66dc905 100644 --- a/public/assets/plugins/jscripty/js/Actions.js +++ b/public/assets/plugins/jscripty/js/Actions.js @@ -1 +1 @@ -var _0x1beb=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x64\x69\x74\x6F\x72\x55\x69","\x61\x63\x74\x69\x6F\x6E\x73","\x69\x6E\x69\x74","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x65\x64\x69\x74\x6F\x72","\x67\x72\x61\x70\x68","\x6E\x65\x77","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x73\x68\x6F\x77\x44\x69\x61\x6C\x6F\x67","\x61\x64\x64\x41\x63\x74\x69\x6F\x6E","\x6F\x70\x65\x6E","\x73\x61\x76\x65","\x73\x61\x76\x65\x46\x69\x6C\x65","\x43\x74\x72\x6C\x2B\x53","\x73\x61\x76\x65\x41\x73","\x43\x74\x72\x6C\x2B\x53\x68\x69\x66\x74\x2D\x53","\x70\x75\x62\x6C\x69\x73\x68","\x70\x75\x62\x6C\x69\x73\x68\x46\x69\x6C\x65","\x43\x74\x72\x6C\x2B\x53\x68\x69\x66\x74\x2B\x50","\x76\x61\x72\x69\x61\x62\x6C\x65","\x69\x6D\x70\x6F\x72\x74","\x65\x78\x70\x6F\x72\x74","\x43\x74\x72\x6C\x2B\x45","\x65\x64\x69\x74\x46\x69\x6C\x65","\x65\x64\x69\x74","\x67\x65\x74","\x62\x69\x6E\x64","\x70\x75\x74","\x72\x65\x6E\x61\x6D\x65","\x70\x72\x69\x6E\x74","\x70\x72\x69\x6E\x74\x53\x63\x72\x65\x65\x6E","\x73\x70\x72\x69\x74\x65\x2D\x70\x72\x69\x6E\x74","\x43\x74\x72\x6C\x2B\x50","\x70\x72\x65\x76\x69\x65\x77","\x73\x68\x6F\x77","\x75\x6E\x64\x6F","\x75\x6E\x64\x6F\x4D\x61\x6E\x61\x67\x65\x72","\x73\x70\x72\x69\x74\x65\x2D\x75\x6E\x64\x6F","\x43\x74\x72\x6C\x2B\x5A","\x72\x65\x64\x6F","\x73\x70\x72\x69\x74\x65\x2D\x72\x65\x64\x6F","\x43\x74\x72\x6C\x2B\x59","\x63\x75\x74","\x73\x70\x72\x69\x74\x65\x2D\x63\x75\x74","\x43\x74\x72\x6C\x2B\x58","\x63\x6F\x70\x79","\x73\x70\x72\x69\x74\x65\x2D\x63\x6F\x70\x79","\x43\x74\x72\x6C\x2B\x43","\x70\x61\x73\x74\x65","\x73\x70\x72\x69\x74\x65\x2D\x70\x61\x73\x74\x65","\x43\x74\x72\x6C\x2B\x56","\x64\x65\x6C\x65\x74\x65","\x72\x65\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73","\x44\x65\x6C\x65\x74\x65","\x64\x75\x70\x6C\x69\x63\x61\x74\x65","\x67\x72\x69\x64\x53\x69\x7A\x65","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x43\x74\x72\x6C\x2B\x44","\x73\x65\x6C\x65\x63\x74\x56\x65\x72\x74\x69\x63\x65\x73","\x43\x74\x72\x6C\x2B\x53\x68\x69\x66\x74\x2B\x56","\x73\x65\x6C\x65\x63\x74\x45\x64\x67\x65\x73","\x43\x74\x72\x6C\x2B\x53\x68\x69\x66\x74\x2B\x45","\x73\x65\x6C\x65\x63\x74\x41\x6C\x6C","\x43\x74\x72\x6C\x2B\x41","\x68\x6F\x6D\x65","\x48\x6F\x6D\x65","\x65\x78\x69\x74\x47\x72\x6F\x75\x70","\x50\x61\x67\x65\x20\x55\x70","\x65\x6E\x74\x65\x72\x47\x72\x6F\x75\x70","\x50\x61\x67\x65\x20\x44\x6F\x77\x6E","\x65\x78\x70\x61\x6E\x64","\x66\x6F\x6C\x64\x43\x65\x6C\x6C\x73","\x45\x6E\x74\x65\x72","\x63\x6F\x6C\x6C\x61\x70\x73\x65","\x42\x61\x63\x6B\x73\x70\x61\x63\x65","\x74\x6F\x46\x72\x6F\x6E\x74","\x6F\x72\x64\x65\x72\x43\x65\x6C\x6C\x73","\x43\x74\x72\x6C\x2B\x46","\x74\x6F\x42\x61\x63\x6B","\x43\x74\x72\x6C\x2B\x42","\x67\x72\x6F\x75\x70","\x67\x72\x6F\x75\x70\x43\x65\x6C\x6C\x73","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x43\x74\x72\x6C\x2B\x47","\x75\x6E\x67\x72\x6F\x75\x70","\x75\x6E\x67\x72\x6F\x75\x70\x43\x65\x6C\x6C\x73","\x43\x74\x72\x6C\x2B\x55","\x72\x65\x6D\x6F\x76\x65\x46\x72\x6F\x6D\x47\x72\x6F\x75\x70","\x72\x65\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73\x46\x72\x6F\x6D\x50\x61\x72\x65\x6E\x74","\x65\x64\x69\x74\x4C\x69\x6E\x6B","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x67\x65\x74\x4C\x69\x6E\x6B\x46\x6F\x72\x43\x65\x6C\x6C","","\x65\x6E\x74\x65\x72\x56\x61\x6C\x75\x65","\x70\x72\x6F\x6D\x70\x74","\x73\x65\x74\x4C\x69\x6E\x6B\x46\x6F\x72\x43\x65\x6C\x6C","\x6F\x70\x65\x6E\x4C\x69\x6E\x6B","\x61\x75\x74\x6F\x73\x69\x7A\x65","\x62\x65\x67\x69\x6E\x55\x70\x64\x61\x74\x65","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x6C\x65\x6E\x67\x74\x68","\x67\x65\x74\x43\x68\x69\x6C\x64\x43\x6F\x75\x6E\x74","\x75\x70\x64\x61\x74\x65\x47\x72\x6F\x75\x70\x42\x6F\x75\x6E\x64\x73","\x75\x70\x64\x61\x74\x65\x43\x65\x6C\x6C\x53\x69\x7A\x65","\x65\x6E\x64\x55\x70\x64\x61\x74\x65","\x77\x6F\x72\x64\x57\x72\x61\x70","\x67\x65\x74\x53\x74\x61\x74\x65","\x67\x65\x74\x56\x69\x65\x77","\x77\x72\x61\x70","\x53\x54\x59\x4C\x45\x5F\x57\x48\x49\x54\x45\x5F\x53\x50\x41\x43\x45","\x73\x74\x79\x6C\x65","\x73\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x73","\x72\x6F\x74\x61\x74\x69\x6F\x6E","\x30","\x53\x54\x59\x4C\x45\x5F\x52\x4F\x54\x41\x54\x49\x4F\x4E","\x20\x28","\x20\x30\x2D\x33\x36\x30\x29","\x74\x69\x6C\x74","\x69\x73\x56\x65\x72\x74\x65\x78","\x67\x65\x74\x43\x65\x6C\x6C\x47\x65\x6F\x6D\x65\x74\x72\x79","\x63\x6C\x6F\x6E\x65","\x78","\x77\x69\x64\x74\x68","\x68\x65\x69\x67\x68\x74","\x79","\x73\x65\x74\x47\x65\x6F\x6D\x65\x74\x72\x79","\x76\x69\x65\x77","\x53\x54\x59\x4C\x45\x5F\x44\x49\x52\x45\x43\x54\x49\x4F\x4E","\x65\x61\x73\x74","\x73\x6F\x75\x74\x68","\x77\x65\x73\x74","\x6E\x6F\x72\x74\x68","\x43\x74\x72\x6C\x2B\x52","\x61\x63\x74\x75\x61\x6C\x53\x69\x7A\x65","\x7A\x6F\x6F\x6D\x54\x6F","\x7A\x6F\x6F\x6D\x49\x6E","\x41\x64\x64","\x7A\x6F\x6F\x6D\x4F\x75\x74","\x53\x75\x62\x74\x72\x61\x63\x74","\x66\x69\x74\x57\x69\x6E\x64\x6F\x77","\x66\x69\x74","\x66\x69\x74\x50\x61\x67\x65","\x70\x61\x67\x65\x56\x69\x73\x69\x62\x6C\x65","\x66\x75\x6E\x63\x74","\x70\x61\x67\x65\x56\x69\x65\x77","\x70\x61\x67\x65\x46\x6F\x72\x6D\x61\x74","\x70\x61\x67\x65\x53\x63\x61\x6C\x65","\x63\x6C\x69\x65\x6E\x74\x57\x69\x64\x74\x68","\x63\x6C\x69\x65\x6E\x74\x48\x65\x69\x67\x68\x74","\x6D\x69\x6E","\x66\x6C\x6F\x6F\x72","\x73\x63\x72\x6F\x6C\x6C\x4C\x65\x66\x74","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65","\x6D\x61\x78","\x72\x6F\x75\x6E\x64","\x73\x63\x72\x6F\x6C\x6C\x54\x6F\x70","\x66\x69\x74\x50\x61\x67\x65\x57\x69\x64\x74\x68","\x63\x75\x73\x74\x6F\x6D\x5A\x6F\x6F\x6D","\x63\x75\x73\x74\x6F\x6D","\x20\x28\x25\x29","\x67\x65\x74\x53\x63\x61\x6C\x65","\x67\x72\x69\x64","\x69\x73\x47\x72\x69\x64\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x47\x72\x69\x64\x45\x6E\x61\x62\x6C\x65\x64","\x75\x70\x64\x61\x74\x65\x47\x72\x61\x70\x68\x43\x6F\x6D\x70\x6F\x6E\x65\x6E\x74\x73","\x43\x74\x72\x6C\x2B\x53\x68\x69\x66\x74\x2B\x47","\x73\x65\x74\x54\x6F\x67\x67\x6C\x65\x41\x63\x74\x69\x6F\x6E","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x65\x64\x43\x61\x6C\x6C\x62\x61\x63\x6B","\x67\x75\x69\x64\x65\x73","\x67\x75\x69\x64\x65\x73\x45\x6E\x61\x62\x6C\x65\x64","\x67\x72\x61\x70\x68\x48\x61\x6E\x64\x6C\x65\x72","\x74\x6F\x6F\x6C\x74\x69\x70\x73","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64","\x74\x6F\x6F\x6C\x74\x69\x70\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x74\x45\x6E\x61\x62\x6C\x65\x64","\x6E\x61\x76\x69\x67\x61\x74\x69\x6F\x6E","\x66\x6F\x6C\x64\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x72\x65\x76\x61\x6C\x69\x64\x61\x74\x65","\x73\x63\x72\x6F\x6C\x6C\x62\x61\x72\x73","\x73\x63\x61\x6C\x65","\x73\x65\x74\x54\x72\x61\x6E\x73\x6C\x61\x74\x65","\x73\x69\x7A\x65\x44\x69\x64\x43\x68\x61\x6E\x67\x65","\x49\x53\x5F\x54\x4F\x55\x43\x48","\x6F\x76\x65\x72\x66\x6C\x6F\x77","\x61\x75\x74\x6F","\x70\x61\x67\x65\x42\x72\x65\x61\x6B\x73\x56\x69\x73\x69\x62\x6C\x65","\x70\x72\x65\x66\x65\x72\x50\x61\x67\x65\x53\x69\x7A\x65","\x76\x61\x6C\x69\x64\x61\x74\x65","\x75\x70\x64\x61\x74\x65","\x6F\x75\x74\x6C\x69\x6E\x65","\x68\x61\x73\x53\x63\x72\x6F\x6C\x6C\x62\x61\x72\x73","\x63\x6F\x6E\x6E\x65\x63\x74","\x63\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x43\x74\x72\x6C\x2B\x51","\x63\x6F\x70\x79\x43\x6F\x6E\x6E\x65\x63\x74","\x69\x73\x43\x72\x65\x61\x74\x65\x54\x61\x72\x67\x65\x74","\x73\x65\x74\x43\x72\x65\x61\x74\x65\x54\x61\x72\x67\x65\x74","\x68\x65\x6C\x70","\x6C\x61\x6E\x67\x75\x61\x67\x65","\x69\x73\x4C\x61\x6E\x67\x75\x61\x67\x65\x53\x75\x70\x70\x6F\x72\x74\x65\x64","\x5F","\x2F\x68\x65\x6C\x70","\x2E\x68\x74\x6D\x6C","\x61\x62\x6F\x75\x74","\x20\x43\x61\x6C\x6C\x79\x20\x53\x71\x75\x61\x72\x65","\x46\x31","\x74\x6F\x67\x67\x6C\x65\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x46\x6C\x61\x67\x73","\x62\x6F\x6C\x64","\x69\x74\x61\x6C\x69\x63","\x75\x6E\x64\x65\x72\x6C\x69\x6E\x65","\x73\x68\x61\x64\x6F\x77","\x74\x6F\x67\x67\x6C\x65\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x73","\x64\x61\x73\x68\x65\x64","\x72\x6F\x75\x6E\x64\x65\x64","\x63\x75\x72\x76\x65\x64","\x29","\x67\x65\x74\x53\x74\x79\x6C\x65","\x73\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65","\x73\x65\x74\x41\x73\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65","\x73\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65","\x61\x64\x64\x57\x61\x79\x70\x6F\x69\x6E\x74","\x69\x73\x45\x64\x67\x65","\x67\x65\x74\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73\x48\x61\x6E\x64\x6C\x65\x72","\x67\x65\x74\x50\x61\x72\x65\x6E\x74","\x73\x74\x61\x74\x65","\x74\x72\x69\x67\x67\x65\x72\x58","\x70\x61\x6E\x6E\x69\x6E\x67\x48\x61\x6E\x64\x6C\x65\x72","\x74\x72\x69\x67\x67\x65\x72\x59","\x61\x64\x64\x50\x6F\x69\x6E\x74\x41\x74","\x72\x65\x6D\x6F\x76\x65\x57\x61\x79\x70\x6F\x69\x6E\x74","\x68\x61\x6E\x64\x6C\x65\x72","\x69\x6E\x64\x65\x78","\x72\x65\x6D\x6F\x76\x65\x50\x6F\x69\x6E\x74","\x69\x6D\x61\x67\x65","\x67\x65\x74\x47\x72\x69\x64\x53\x69\x7A\x65","\x67\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x50\x61\x72\x65\x6E\x74","\x69\x6E\x73\x65\x72\x74\x56\x65\x72\x74\x65\x78","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x6F\x75\x6E\x74","\x67\x65\x74\x47\x65\x6F\x6D\x65\x74\x72\x79","\x73\x63\x72\x6F\x6C\x6C\x43\x65\x6C\x6C\x54\x6F\x56\x69\x73\x69\x62\x6C\x65","\x53\x54\x59\x4C\x45\x5F\x49\x4D\x41\x47\x45","\x75\x72\x6C","\x6F\x6E\x6C\x6F\x61\x64","\x6F\x6E\x65\x72\x72\x6F\x72","\x66\x69\x6C\x65\x4E\x6F\x74\x46\x6F\x75\x6E\x64","\x61\x6C\x65\x72\x74","\x73\x72\x63","\x63\x61\x6C\x6C","\x6C\x61\x62\x65\x6C","\x65\x6E\x61\x62\x6C\x65\x64","\x69\x63\x6F\x6E\x43\x6C\x73","\x73\x68\x6F\x72\x74\x63\x75\x74","\x65\x78\x74\x65\x6E\x64","\x73\x74\x61\x74\x65\x43\x68\x61\x6E\x67\x65\x64","\x66\x69\x72\x65\x45\x76\x65\x6E\x74","\x74\x6F\x67\x67\x6C\x65\x41\x63\x74\x69\x6F\x6E","\x73\x65\x6C\x65\x63\x74\x65\x64\x43\x61\x6C\x6C\x62\x61\x63\x6B","\x69\x73\x53\x65\x6C\x65\x63\x74\x65\x64"];_0x1beb[0];function Actions(_0xe910x2){this[_0x1beb[1]]= _0xe910x2;this[_0x1beb[2]]= new Object();this[_0x1beb[3]]()}Actions[_0x1beb[4]][_0x1beb[3]]= function(){var _0xe910x3=this[_0x1beb[1]];var _0xe910x4=_0xe910x3[_0x1beb[5]];var _0xe910x5=_0xe910x4[_0x1beb[6]];this[_0x1beb[10]](_0x1beb[7],function(){_0xe910x3[_0x1beb[9]]( new NewDialog(_0xe910x3)[_0x1beb[8]],300,180,true,true)});this[_0x1beb[10]](_0x1beb[11],function(){_0xe910x3[_0x1beb[9]]( new OpenDialog(_0xe910x3)[_0x1beb[8]],300,180,true,true)});this[_0x1beb[10]](_0x1beb[12],function(){_0xe910x3[_0x1beb[13]](false)},null,null,_0x1beb[14]);this[_0x1beb[10]](_0x1beb[15],function(){_0xe910x3[_0x1beb[13]](true)},null,null,_0x1beb[16]);this[_0x1beb[10]](_0x1beb[17],function(){_0xe910x3[_0x1beb[18]](false)},null,null,_0x1beb[19]);this[_0x1beb[10]](_0x1beb[20],function(){_0xe910x3[_0x1beb[9]]( new VariableDialog(_0xe910x3)[_0x1beb[8]],300,180,true,true)});this[_0x1beb[10]](_0x1beb[21],function(){_0xe910x3[_0x1beb[9]]( new ImportDialog(_0xe910x3)[_0x1beb[8]],300,200,true,true)});this[_0x1beb[10]](_0x1beb[22],function(){_0xe910x3[_0x1beb[9]]( new ExportDialog(_0xe910x3)[_0x1beb[8]],300,200,true,true)},null,null,_0x1beb[23]);this[_0x1beb[28]](_0x1beb[24], new Action(mxResources[_0x1beb[26]](_0x1beb[25]),mxUtils[_0x1beb[27]](this,function(){this[_0x1beb[1]][_0x1beb[9]]( new EditFileDialog(_0xe910x3)[_0x1beb[8]],620,420,true,true)})));this[_0x1beb[10]](_0x1beb[29],function(){_0xe910x3[_0x1beb[9]]( new RenameDialog(_0xe910x3)[_0x1beb[8]],300,180,true,true)});this[_0x1beb[10]](_0x1beb[30],function(){mxUtils[_0x1beb[31]](_0xe910x5)},null,_0x1beb[32],_0x1beb[33]);this[_0x1beb[10]](_0x1beb[34],function(){mxUtils[_0x1beb[35]](_0xe910x5,null,10,10)});this[_0x1beb[10]](_0x1beb[36],function(){_0xe910x4[_0x1beb[37]][_0x1beb[36]]()},null,_0x1beb[38],_0x1beb[39]);this[_0x1beb[10]](_0x1beb[40],function(){_0xe910x4[_0x1beb[37]][_0x1beb[40]]()},null,_0x1beb[41],_0x1beb[42]);this[_0x1beb[10]](_0x1beb[43],function(){mxClipboard[_0x1beb[43]](_0xe910x5)},null,_0x1beb[44],_0x1beb[45]);this[_0x1beb[10]](_0x1beb[46],function(){mxClipboard[_0x1beb[46]](_0xe910x5)},null,_0x1beb[47],_0x1beb[48]);this[_0x1beb[10]](_0x1beb[49],function(){mxClipboard[_0x1beb[49]](_0xe910x5)},false,_0x1beb[50],_0x1beb[51]);this[_0x1beb[10]](_0x1beb[52],function(){_0xe910x5[_0x1beb[53]]()},null,null,_0x1beb[54]);this[_0x1beb[10]](_0x1beb[55],function(){var _0xe910x6=_0xe910x5[_0x1beb[56]];_0xe910x5[_0x1beb[59]](_0xe910x5[_0x1beb[58]](_0xe910x5[_0x1beb[57]](),_0xe910x6,_0xe910x6,true))},null,null,_0x1beb[60]);this[_0x1beb[10]](_0x1beb[61],function(){_0xe910x5[_0x1beb[61]]()},null,null,_0x1beb[62]);this[_0x1beb[10]](_0x1beb[63],function(){_0xe910x5[_0x1beb[63]]()},null,null,_0x1beb[64]);this[_0x1beb[10]](_0x1beb[65],function(){_0xe910x5[_0x1beb[65]]()},null,null,_0x1beb[66]);this[_0x1beb[10]](_0x1beb[67],function(){_0xe910x5[_0x1beb[67]]()},null,null,_0x1beb[68]);this[_0x1beb[10]](_0x1beb[69],function(){_0xe910x5[_0x1beb[69]]()},null,null,_0x1beb[70]);this[_0x1beb[10]](_0x1beb[71],function(){_0xe910x5[_0x1beb[71]]()},null,null,_0x1beb[72]);this[_0x1beb[10]](_0x1beb[73],function(){_0xe910x5[_0x1beb[74]](false)},null,null,_0x1beb[75]);this[_0x1beb[10]](_0x1beb[76],function(){_0xe910x5[_0x1beb[74]](true)},null,null,_0x1beb[77]);this[_0x1beb[10]](_0x1beb[78],function(){_0xe910x5[_0x1beb[79]](false)},null,null,_0x1beb[80]);this[_0x1beb[10]](_0x1beb[81],function(){_0xe910x5[_0x1beb[79]](true)},null,null,_0x1beb[82]);this[_0x1beb[10]](_0x1beb[83],function(){_0xe910x5[_0x1beb[85]](_0xe910x5[_0x1beb[84]](null,0))},null,null,_0x1beb[86]);this[_0x1beb[10]](_0x1beb[87],function(){_0xe910x5[_0x1beb[59]](_0xe910x5[_0x1beb[88]]())},null,null,_0x1beb[89]);this[_0x1beb[10]](_0x1beb[90],function(){_0xe910x5[_0x1beb[91]]()});this[_0x1beb[10]](_0x1beb[92],function(){var _0xe910x7=_0xe910x5[_0x1beb[93]]();var _0xe910x8=_0xe910x5[_0x1beb[94]](_0xe910x7);if(_0xe910x8== null){_0xe910x8= _0x1beb[95]};_0xe910x8= mxUtils[_0x1beb[97]](mxResources[_0x1beb[26]](_0x1beb[96]),_0xe910x8);if(_0xe910x8!= null){_0xe910x5[_0x1beb[98]](_0xe910x7,_0xe910x8)}});this[_0x1beb[10]](_0x1beb[99],function(){var _0xe910x7=_0xe910x5[_0x1beb[93]]();var _0xe910x8=_0xe910x5[_0x1beb[94]](_0xe910x7);if(_0xe910x8!= null){window[_0x1beb[11]](_0xe910x8)}});this[_0x1beb[10]](_0x1beb[100],function(){var _0xe910x9=_0xe910x5[_0x1beb[57]]();if(_0xe910x9!= null){_0xe910x5[_0x1beb[102]]()[_0x1beb[101]]();try{for(var _0xe910xa=0;_0xe910xa< _0xe910x9[_0x1beb[103]];_0xe910xa++){var _0xe910x7=_0xe910x9[_0xe910xa];if(_0xe910x5[_0x1beb[102]]()[_0x1beb[104]](_0xe910x7)){_0xe910x5[_0x1beb[105]]([_0xe910x7],20)}else {_0xe910x5[_0x1beb[106]](_0xe910x7)}}}finally{_0xe910x5[_0x1beb[102]]()[_0x1beb[107]]()}}});this[_0x1beb[10]](_0x1beb[108],function(){var _0xe910xb=_0xe910x5[_0x1beb[110]]()[_0x1beb[109]](_0xe910x5[_0x1beb[93]]());var _0xe910xc=_0x1beb[111];if(_0xe910xb!= null&& _0xe910xb[_0x1beb[113]][mxConstants[_0x1beb[112]]]== _0x1beb[111]){_0xe910xc= null};_0xe910x5[_0x1beb[114]](mxConstants.STYLE_WHITE_SPACE,_0xe910xc)});this[_0x1beb[10]](_0x1beb[115],function(){var _0xe910xc=_0x1beb[116];var _0xe910xb=_0xe910x5[_0x1beb[110]]()[_0x1beb[109]](_0xe910x5[_0x1beb[93]]());if(_0xe910xb!= null){_0xe910xc= _0xe910xb[_0x1beb[113]][mxConstants[_0x1beb[117]]]|| _0xe910xc};_0xe910xc= mxUtils[_0x1beb[97]](mxResources[_0x1beb[26]](_0x1beb[96])+ _0x1beb[118]+ mxResources[_0x1beb[26]](_0x1beb[115])+ _0x1beb[119],_0xe910xc);if(_0xe910xc!= null){_0xe910x5[_0x1beb[114]](mxConstants.STYLE_ROTATION,_0xe910xc)}});this[_0x1beb[10]](_0x1beb[120],function(){var _0xe910x9=_0xe910x5[_0x1beb[57]]();if(_0xe910x9!= null){_0xe910x5[_0x1beb[102]]()[_0x1beb[101]]();try{for(var _0xe910xa=0;_0xe910xa< _0xe910x9[_0x1beb[103]];_0xe910xa++){var _0xe910x7=_0xe910x9[_0xe910xa];if(_0xe910x5[_0x1beb[102]]()[_0x1beb[121]](_0xe910x7)&& _0xe910x5[_0x1beb[102]]()[_0x1beb[104]](_0xe910x7)== 0){var _0xe910xd=_0xe910x5[_0x1beb[122]](_0xe910x7);if(_0xe910xd!= null){_0xe910xd= _0xe910xd[_0x1beb[123]]();_0xe910xd[_0x1beb[124]]+= _0xe910xd[_0x1beb[125]]/ 2- _0xe910xd[_0x1beb[126]]/ 2;_0xe910xd[_0x1beb[127]]+= _0xe910xd[_0x1beb[126]]/ 2- _0xe910xd[_0x1beb[125]]/ 2;var _0xe910xe=_0xe910xd[_0x1beb[125]];_0xe910xd[_0x1beb[125]]= _0xe910xd[_0x1beb[126]];_0xe910xd[_0x1beb[126]]= _0xe910xe;_0xe910x5[_0x1beb[102]]()[_0x1beb[128]](_0xe910x7,_0xe910xd);var _0xe910xb=_0xe910x5[_0x1beb[129]][_0x1beb[109]](_0xe910x7);if(_0xe910xb!= null){var _0xe910xf=_0xe910xb[_0x1beb[113]][mxConstants[_0x1beb[130]]]|| _0x1beb[131];if(_0xe910xf== _0x1beb[131]){_0xe910xf= _0x1beb[132]}else {if(_0xe910xf== _0x1beb[132]){_0xe910xf= _0x1beb[133]}else {if(_0xe910xf== _0x1beb[133]){_0xe910xf= _0x1beb[134]}else {if(_0xe910xf== _0x1beb[134]){_0xe910xf= _0x1beb[131]}}}};_0xe910x5[_0x1beb[114]](mxConstants.STYLE_DIRECTION,_0xe910xf,[_0xe910x7])}}}}}finally{_0xe910x5[_0x1beb[102]]()[_0x1beb[107]]()}}},null,null,_0x1beb[135]);this[_0x1beb[10]](_0x1beb[136],function(){_0xe910x5[_0x1beb[137]](1)});this[_0x1beb[10]](_0x1beb[138],function(){_0xe910x5[_0x1beb[138]]()},null,null,_0x1beb[139]);this[_0x1beb[10]](_0x1beb[140],function(){_0xe910x5[_0x1beb[140]]()},null,null,_0x1beb[141]);this[_0x1beb[10]](_0x1beb[142],function(){_0xe910x5[_0x1beb[143]]()});this[_0x1beb[10]](_0x1beb[144],mxUtils[_0x1beb[27]](this,function(){if(!_0xe910x5[_0x1beb[145]]){this[_0x1beb[26]](_0x1beb[147])[_0x1beb[146]]()};var _0xe910x10=_0xe910x5[_0x1beb[148]];var _0xe910x11=_0xe910x5[_0x1beb[149]];var _0xe910x12=_0xe910x5[_0x1beb[8]][_0x1beb[150]]- 20;var _0xe910x13=_0xe910x5[_0x1beb[8]][_0x1beb[151]]- 20;var _0xe910x14=Math[_0x1beb[153]](100* Math[_0x1beb[152]](_0xe910x12/ _0xe910x10[_0x1beb[125]]/ _0xe910x11,_0xe910x13/ _0xe910x10[_0x1beb[126]]/ _0xe910x11))/ 100;_0xe910x5[_0x1beb[137]](_0xe910x14);_0xe910x5[_0x1beb[8]][_0x1beb[154]]= Math[_0x1beb[157]](_0xe910x5[_0x1beb[129]][_0x1beb[155]][_0x1beb[124]]* _0xe910x14- Math[_0x1beb[156]](10,(_0xe910x5[_0x1beb[8]][_0x1beb[150]]- _0xe910x10[_0x1beb[125]]* _0xe910x11* _0xe910x14)/ 2));_0xe910x5[_0x1beb[8]][_0x1beb[158]]= Math[_0x1beb[157]](_0xe910x5[_0x1beb[129]][_0x1beb[155]][_0x1beb[127]]* _0xe910x14- Math[_0x1beb[156]](10,(_0xe910x5[_0x1beb[8]][_0x1beb[151]]- _0xe910x10[_0x1beb[126]]* _0xe910x11* _0xe910x14)/ 2))}));this[_0x1beb[10]](_0x1beb[159],mxUtils[_0x1beb[27]](this,function(){if(!_0xe910x5[_0x1beb[145]]){this[_0x1beb[26]](_0x1beb[147])[_0x1beb[146]]()};var _0xe910x10=_0xe910x5[_0x1beb[148]];var _0xe910x11=_0xe910x5[_0x1beb[149]];var _0xe910x12=_0xe910x5[_0x1beb[8]][_0x1beb[150]]- 20;var _0xe910x14=Math[_0x1beb[153]](100* _0xe910x12/ _0xe910x10[_0x1beb[125]]/ _0xe910x11)/ 100;_0xe910x5[_0x1beb[137]](_0xe910x14);_0xe910x5[_0x1beb[8]][_0x1beb[154]]= Math[_0x1beb[157]](_0xe910x5[_0x1beb[129]][_0x1beb[155]][_0x1beb[124]]* _0xe910x14- Math[_0x1beb[156]](10,(_0xe910x5[_0x1beb[8]][_0x1beb[150]]- _0xe910x10[_0x1beb[125]]* _0xe910x11* _0xe910x14)/ 2));_0xe910x5[_0x1beb[8]][_0x1beb[158]]= Math[_0x1beb[157]](_0xe910x5[_0x1beb[129]][_0x1beb[155]][_0x1beb[127]]* _0xe910x14- Math[_0x1beb[156]](10,(_0xe910x5[_0x1beb[8]][_0x1beb[151]]- _0xe910x10[_0x1beb[126]]* _0xe910x11* _0xe910x14)/ 2))}));this[_0x1beb[28]](_0x1beb[160], new Action(mxResources[_0x1beb[26]](_0x1beb[161]),function(){var _0xe910xc=mxUtils[_0x1beb[97]](mxResources[_0x1beb[26]](_0x1beb[96])+ _0x1beb[162],parseInt(_0xe910x5[_0x1beb[110]]()[_0x1beb[163]]()* 100));if(_0xe910xc!= null&& _0xe910xc[_0x1beb[103]]> 0&& !isNaN(parseInt(_0xe910xc))){_0xe910x5[_0x1beb[137]](parseInt(_0xe910xc)/ 100)}}));var _0xe910x15=null;_0xe910x15= this[_0x1beb[10]](_0x1beb[164],function(){_0xe910x5[_0x1beb[166]](!_0xe910x5[_0x1beb[165]]());_0xe910x4[_0x1beb[167]]()},null,null,_0x1beb[168]);_0xe910x15[_0x1beb[169]](true);_0xe910x15[_0x1beb[170]](function(){return _0xe910x5[_0x1beb[165]]()});_0xe910x15= this[_0x1beb[10]](_0x1beb[171],function(){_0xe910x5[_0x1beb[173]][_0x1beb[172]]= !_0xe910x5[_0x1beb[173]][_0x1beb[172]]});_0xe910x15[_0x1beb[169]](true);_0xe910x15[_0x1beb[170]](function(){return _0xe910x5[_0x1beb[173]][_0x1beb[172]]});_0xe910x15= this[_0x1beb[10]](_0x1beb[174],function(){_0xe910x5[_0x1beb[176]][_0x1beb[177]](!_0xe910x5[_0x1beb[176]][_0x1beb[175]]())});_0xe910x15[_0x1beb[169]](true);_0xe910x15[_0x1beb[170]](function(){return _0xe910x5[_0x1beb[176]][_0x1beb[175]]()});_0xe910x15= this[_0x1beb[10]](_0x1beb[178],function(){_0xe910x5[_0x1beb[179]]= !_0xe910x5[_0x1beb[179]];_0xe910x5[_0x1beb[129]][_0x1beb[180]]()});_0xe910x15[_0x1beb[169]](true);_0xe910x15[_0x1beb[170]](function(){return _0xe910x5[_0x1beb[179]]});_0xe910x15= this[_0x1beb[10]](_0x1beb[181],function(){_0xe910x5[_0x1beb[181]]= !_0xe910x5[_0x1beb[181]];_0xe910x4[_0x1beb[167]]();if(!_0xe910x5[_0x1beb[181]]){var _0xe910x16=_0xe910x5[_0x1beb[129]][_0x1beb[155]];_0xe910x5[_0x1beb[129]][_0x1beb[183]](_0xe910x16[_0x1beb[124]]- _0xe910x5[_0x1beb[8]][_0x1beb[154]]/ _0xe910x5[_0x1beb[129]][_0x1beb[182]],_0xe910x16[_0x1beb[127]]- _0xe910x5[_0x1beb[8]][_0x1beb[158]]/ _0xe910x5[_0x1beb[129]][_0x1beb[182]]);_0xe910x5[_0x1beb[8]][_0x1beb[154]]= 0;_0xe910x5[_0x1beb[8]][_0x1beb[158]]= 0;_0xe910x5[_0x1beb[184]]()}else {var _0xe910x17=_0xe910x5[_0x1beb[129]][_0x1beb[155]][_0x1beb[124]];var _0xe910x18=_0xe910x5[_0x1beb[129]][_0x1beb[155]][_0x1beb[127]];_0xe910x5[_0x1beb[129]][_0x1beb[155]][_0x1beb[124]]= 0;_0xe910x5[_0x1beb[129]][_0x1beb[155]][_0x1beb[127]]= 0;_0xe910x5[_0x1beb[184]]();_0xe910x5[_0x1beb[8]][_0x1beb[154]]-= Math[_0x1beb[157]](_0xe910x17* _0xe910x5[_0x1beb[129]][_0x1beb[182]]);_0xe910x5[_0x1beb[8]][_0x1beb[158]]-= Math[_0x1beb[157]](_0xe910x18* _0xe910x5[_0x1beb[129]][_0x1beb[182]])}},!mxClient[_0x1beb[185]]);_0xe910x15[_0x1beb[169]](true);_0xe910x15[_0x1beb[170]](function(){return _0xe910x5[_0x1beb[8]][_0x1beb[113]][_0x1beb[186]]== _0x1beb[187]});_0xe910x15= this[_0x1beb[10]](_0x1beb[147],mxUtils[_0x1beb[27]](this,function(){_0xe910x5[_0x1beb[145]]= !_0xe910x5[_0x1beb[145]];_0xe910x5[_0x1beb[188]]= _0xe910x5[_0x1beb[145]];_0xe910x5[_0x1beb[189]]= _0xe910x5[_0x1beb[188]];_0xe910x5[_0x1beb[129]][_0x1beb[190]]();_0xe910x5[_0x1beb[184]]();_0xe910x4[_0x1beb[167]]();_0xe910x4[_0x1beb[192]][_0x1beb[191]]();if(mxUtils[_0x1beb[193]](_0xe910x5[_0x1beb[8]])){if(_0xe910x5[_0x1beb[145]]){_0xe910x5[_0x1beb[8]][_0x1beb[154]]-= 20;_0xe910x5[_0x1beb[8]][_0x1beb[158]]-= 20}else {_0xe910x5[_0x1beb[8]][_0x1beb[154]]+= 20;_0xe910x5[_0x1beb[8]][_0x1beb[158]]+= 20}}}));_0xe910x15[_0x1beb[169]](true);_0xe910x15[_0x1beb[170]](function(){return _0xe910x5[_0x1beb[145]]});_0xe910x15= this[_0x1beb[10]](_0x1beb[194],function(){_0xe910x5[_0x1beb[196]](!_0xe910x5[_0x1beb[195]][_0x1beb[175]]())},null,null,_0x1beb[197]);_0xe910x15[_0x1beb[169]](true);_0xe910x15[_0x1beb[170]](function(){return _0xe910x5[_0x1beb[195]][_0x1beb[175]]()});_0xe910x15= this[_0x1beb[10]](_0x1beb[198],function(){_0xe910x5[_0x1beb[195]][_0x1beb[200]](!_0xe910x5[_0x1beb[195]][_0x1beb[199]]())});_0xe910x15[_0x1beb[169]](true);_0xe910x15[_0x1beb[170]](function(){return _0xe910x5[_0x1beb[195]][_0x1beb[199]]()});this[_0x1beb[10]](_0x1beb[201],function(){var _0xe910x19=_0x1beb[95];if(mxResources[_0x1beb[203]](mxClient[_0x1beb[202]])){_0xe910x19= _0x1beb[204]+ mxClient[_0x1beb[202]]};window[_0x1beb[11]](RESOURCES_PATH+ _0x1beb[205]+ _0xe910x19+ _0x1beb[206])});this[_0x1beb[28]](_0x1beb[207], new Action(mxResources[_0x1beb[26]](_0x1beb[207])+ _0x1beb[208],function(){_0xe910x3[_0x1beb[9]]( new AboutDialog(_0xe910x3)[_0x1beb[8]],320,280,true,true)},null,null,_0x1beb[209]));var _0xe910x1a=mxUtils[_0x1beb[27]](this,function(_0xe910x1b,_0xe910x1c){this[_0x1beb[10]](_0xe910x1b,function(){_0xe910x5[_0x1beb[210]](mxConstants.STYLE_FONTSTYLE,_0xe910x1c)})});_0xe910x1a(_0x1beb[211],mxConstants.FONT_BOLD);_0xe910x1a(_0x1beb[212],mxConstants.FONT_ITALIC);_0xe910x1a(_0x1beb[213],mxConstants.FONT_UNDERLINE);this[_0x1beb[10]](_0x1beb[214],function(){_0xe910x5[_0x1beb[215]](mxConstants.STYLE_SHADOW)});this[_0x1beb[10]](_0x1beb[216],function(){_0xe910x5[_0x1beb[215]](mxConstants.STYLE_DASHED)});this[_0x1beb[10]](_0x1beb[217],function(){_0xe910x5[_0x1beb[215]](mxConstants.STYLE_ROUNDED)});this[_0x1beb[10]](_0x1beb[218],function(){_0xe910x5[_0x1beb[215]](mxConstants.STYLE_CURVED)});this[_0x1beb[10]](_0x1beb[113],function(){var _0xe910x9=_0xe910x5[_0x1beb[57]]();if(_0xe910x9!= null&& _0xe910x9[_0x1beb[103]]> 0){var _0xe910x1d=_0xe910x5[_0x1beb[102]]();var _0xe910x1c=mxUtils[_0x1beb[97]](mxResources[_0x1beb[26]](_0x1beb[96])+ _0x1beb[118]+ mxResources[_0x1beb[26]](_0x1beb[113])+ _0x1beb[219],_0xe910x1d[_0x1beb[220]](_0xe910x9[0])|| _0x1beb[95]);if(_0xe910x1c!= null){_0xe910x5[_0x1beb[221]](_0xe910x1c,_0xe910x9)}}});this[_0x1beb[10]](_0x1beb[222],function(){_0xe910x5[_0x1beb[223]](_0xe910x5[_0x1beb[93]]())});this[_0x1beb[10]](_0x1beb[224],function(){var _0xe910x7=_0xe910x5[_0x1beb[93]]();if(_0xe910x7!= null&& _0xe910x5[_0x1beb[102]]()[_0x1beb[225]](_0xe910x7)){var _0xe910x1e=_0xe910x4[_0x1beb[6]][_0x1beb[227]][_0x1beb[226]](_0xe910x7);if(_0xe910x1e instanceof mxEdgeHandler){var _0xe910x16=_0xe910x5[_0x1beb[129]][_0x1beb[155]];var _0xe910x6=_0xe910x5[_0x1beb[129]][_0x1beb[182]];var _0xe910x17=_0xe910x16[_0x1beb[124]];var _0xe910x18=_0xe910x16[_0x1beb[127]];var _0xe910x1f=_0xe910x5[_0x1beb[102]]()[_0x1beb[228]](_0xe910x7);var _0xe910x20=_0xe910x5[_0x1beb[122]](_0xe910x1f);if(_0xe910x5[_0x1beb[102]]()[_0x1beb[121]](_0xe910x1f)&& _0xe910x20!= null){_0xe910x17+= _0xe910x20[_0x1beb[124]];_0xe910x18+= _0xe910x20[_0x1beb[127]]};_0xe910x1e[_0x1beb[233]](_0xe910x1e[_0x1beb[229]],_0xe910x5[_0x1beb[231]][_0x1beb[230]]/ _0xe910x6- _0xe910x17,_0xe910x5[_0x1beb[231]][_0x1beb[232]]/ _0xe910x6- _0xe910x18)}}});this[_0x1beb[10]](_0x1beb[234],function(){var _0xe910x21=_0xe910x3[_0x1beb[2]][_0x1beb[26]](_0x1beb[234]);if(_0xe910x21[_0x1beb[235]]!= null){_0xe910x21[_0x1beb[235]][_0x1beb[237]](_0xe910x21[_0x1beb[235]][_0x1beb[229]],_0xe910x21[_0x1beb[236]])}});this[_0x1beb[10]](_0x1beb[238],function(){function _0xe910x22(_0xe910xc,_0xe910x23,_0xe910x24){var _0xe910x25=null;var _0xe910x9=_0xe910x5[_0x1beb[57]]();_0xe910x5[_0x1beb[102]]()[_0x1beb[101]]();try{if(_0xe910x9[_0x1beb[103]]== 0){var _0xe910x26=_0xe910x5[_0x1beb[239]]();_0xe910x9= [_0xe910x5[_0x1beb[241]](_0xe910x5[_0x1beb[240]](),null,_0x1beb[95],_0xe910x26,_0xe910x26,_0xe910x23,_0xe910x24)];_0xe910x25= _0xe910x9};_0xe910x5[_0x1beb[114]](mxConstants.STYLE_IMAGE,_0xe910xc,_0xe910x9);_0xe910x5[_0x1beb[114]](mxConstants.STYLE_SHAPE,_0x1beb[238],_0xe910x9);if(_0xe910x5[_0x1beb[242]]()== 1){if(_0xe910x23!= null&& _0xe910x24!= null){var _0xe910x7=_0xe910x9[0];var _0xe910xd=_0xe910x5[_0x1beb[102]]()[_0x1beb[243]](_0xe910x7);if(_0xe910xd!= null){_0xe910xd= _0xe910xd[_0x1beb[123]]();_0xe910xd[_0x1beb[125]]= _0xe910x23;_0xe910xd[_0x1beb[126]]= _0xe910x24;_0xe910x5[_0x1beb[102]]()[_0x1beb[128]](_0xe910x7,_0xe910xd)}}}}finally{_0xe910x5[_0x1beb[102]]()[_0x1beb[107]]()};if(_0xe910x25!= null){_0xe910x5[_0x1beb[59]](_0xe910x25);_0xe910x5[_0x1beb[244]](_0xe910x25[0])}}var _0xe910xc=_0x1beb[95];var _0xe910xb=_0xe910x5[_0x1beb[110]]()[_0x1beb[109]](_0xe910x5[_0x1beb[93]]());if(_0xe910xb!= null){_0xe910xc= _0xe910xb[_0x1beb[113]][mxConstants[_0x1beb[245]]]|| _0xe910xc};_0xe910xc= mxUtils[_0x1beb[97]](mxResources[_0x1beb[26]](_0x1beb[96])+ _0x1beb[118]+ mxResources[_0x1beb[26]](_0x1beb[246])+ _0x1beb[219],_0xe910xc);if(_0xe910xc!= null){if(_0xe910xc[_0x1beb[103]]> 0){var _0xe910x27= new Image();_0xe910x27[_0x1beb[247]]= function(){_0xe910x22(_0xe910xc,_0xe910x27[_0x1beb[125]],_0xe910x27[_0x1beb[126]])};_0xe910x27[_0x1beb[248]]= function(){mxUtils[_0x1beb[250]](mxResources[_0x1beb[26]](_0x1beb[249]))};_0xe910x27[_0x1beb[251]]= _0xe910xc}}})};Actions[_0x1beb[4]][_0x1beb[10]]= function(_0xe910x1b,_0xe910x28,_0xe910x29,_0xe910x2a,_0xe910x2b){return this[_0x1beb[28]](_0xe910x1b, new Action(mxResources[_0x1beb[26]](_0xe910x1b),_0xe910x28,_0xe910x29,_0xe910x2a,_0xe910x2b))};Actions[_0x1beb[4]][_0x1beb[28]]= function(_0xe910x2c,_0xe910x15){this[_0x1beb[2]][_0xe910x2c]= _0xe910x15;return _0xe910x15};Actions[_0x1beb[4]][_0x1beb[26]]= function(_0xe910x2c){return this[_0x1beb[2]][_0xe910x2c]};function Action(_0xe910x2e,_0xe910x28,_0xe910x29,_0xe910x2a,_0xe910x2b){mxEventSource[_0x1beb[252]](this);this[_0x1beb[253]]= _0xe910x2e;this[_0x1beb[146]]= _0xe910x28;this[_0x1beb[254]]= (_0xe910x29!= null)?_0xe910x29:true;this[_0x1beb[255]]= _0xe910x2a;this[_0x1beb[256]]= _0xe910x2b}mxUtils[_0x1beb[257]](Action,mxEventSource);Action[_0x1beb[4]][_0x1beb[177]]= function(_0xe910xc){if(this[_0x1beb[254]]!= _0xe910xc){this[_0x1beb[254]]= _0xe910xc;this[_0x1beb[259]]( new mxEventObject(_0x1beb[258]))}};Action[_0x1beb[4]][_0x1beb[169]]= function(_0xe910xc){this[_0x1beb[260]]= _0xe910xc};Action[_0x1beb[4]][_0x1beb[170]]= function(_0xe910x28){this[_0x1beb[261]]= _0xe910x28};Action[_0x1beb[4]][_0x1beb[262]]= function(){return this[_0x1beb[261]]()} \ No newline at end of file +undefined \ No newline at end of file diff --git a/public/assets/plugins/jscripty/js/Dialogs.js b/public/assets/plugins/jscripty/js/Dialogs.js index d6bdf26..66dc905 100644 --- a/public/assets/plugins/jscripty/js/Dialogs.js +++ b/public/assets/plugins/jscripty/js/Dialogs.js @@ -1 +1 @@ -var _0xac52=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x69\x6E\x70\x75\x74","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x74\x79\x70\x65","\x63\x68\x65\x63\x6B\x62\x6F\x78","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x63\x68\x65\x63\x6B\x65\x64","\x47\x45\x54","\x6F\x70\x65\x6E","\x41\x75\x74\x68\x6F\x72\x69\x7A\x61\x74\x69\x6F\x6E","\x42\x65\x61\x72\x65\x72\x20","\x74\x6F\x6B\x65\x6E","\x64\x61\x74\x61","\x65\x64\x69\x74\x6F\x72","\x73\x65\x74\x52\x65\x71\x75\x65\x73\x74\x48\x65\x61\x64\x65\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x72\x65\x73\x70\x6F\x6E\x73\x65","\x70\x61\x72\x73\x65","\x73\x65\x6C\x65\x63\x74","\x6F\x70\x74\x69\x6F\x6E","\x74\x65\x78\x74","\x2D\x2D\x20\x4E\x6F\x6E\x65\x20\x2D\x2D","\x76\x61\x6C\x75\x65","\x2D\x31","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x25","\x72\x65\x70\x6C\x61\x63\x65","\x66\x6F\x72\x45\x61\x63\x68","\x73\x65\x6C\x65\x63\x74\x65\x64","\x72\x6F\x77\x73","\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x66\x6F\x72\x6D\x2D\x63\x6F\x6E\x74\x72\x6F\x6C\x20\x73\x65\x6C\x65\x63\x74\x32","\x30","\x66\x69\x6C\x74\x65\x72","\x73\x65\x6C\x65\x63\x74\x2D\x67\x72\x6F\x75\x70\x2D\x66\x61\x74\x68\x65\x72","\x74\x6F\x55\x70\x70\x65\x72\x43\x61\x73\x65","\x73\x65\x6C\x65\x63\x74\x2D\x67\x72\x6F\x75\x70\x2D\x73\x6F\x6E","\x2D","\x63\x61\x70\x69\x74\x61\x6C\x69\x7A\x65","","\x49\x53\x5F\x49\x45","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x4D\x6F\x64\x65","\x73\x63\x72\x6F\x6C\x6C\x57\x69\x64\x74\x68","\x62\x6F\x64\x79","\x72\x6F\x75\x6E\x64","\x6D\x61\x78","\x73\x63\x72\x6F\x6C\x6C\x48\x65\x69\x67\x68\x74","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x67\x65\x44\x69\x61\x6C\x6F\x67","\x63\x72\x65\x61\x74\x65\x44\x69\x76","\x6D\x6F\x64\x61\x6C\x20\x66\x61\x64\x65\x20\x69\x6E\x20\x63\x65\x6E\x74\x65\x72","\x64\x69\x73\x70\x6C\x61\x79","\x73\x74\x79\x6C\x65","\x62\x6C\x6F\x63\x6B","\x70\x61\x64\x64\x69\x6E\x67\x52\x69\x67\x68\x74","\x31\x32\x70\x78","\x67\x65\x4D\x6F\x64\x61\x6C\x44\x69\x61\x6C\x6F\x67","\x6D\x6F\x64\x61\x6C\x2D\x64\x69\x61\x6C\x6F\x67","\x62\x67","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x6D\x6F\x64\x61\x6C\x2D\x62\x61\x63\x6B\x64\x72\x6F\x70\x20\x66\x61\x64\x65\x20\x69\x6E","\x49\x53\x5F\x51\x55\x49\x52\x4B\x53","\x6F\x6E\x44\x69\x61\x6C\x6F\x67\x43\x6C\x6F\x73\x65","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x63\x6C\x6F\x73\x65","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x72\x65\x6D\x6F\x76\x65\x43\x68\x69\x6C\x64","\x70\x61\x72\x65\x6E\x74\x4E\x6F\x64\x65","\x6D\x6F\x64\x61\x6C\x2D\x63\x6F\x6E\x74\x65\x6E\x74","\x6D\x6F\x64\x61\x6C\x2D\x68\x65\x61\x64\x65\x72","\x6D\x6F\x64\x61\x6C\x2D\x62\x6F\x64\x79","\x6D\x6F\x64\x61\x6C\x2D\x66\x6F\x6F\x74\x65\x72","\x68\x34","\x63\x72\x65\x61\x74\x65\x48\x65\x61\x64\x65\x72","\x69\x6D\x70\x6F\x72\x74","\x67\x65\x74","\x20\x58\x4D\x4C","\x77\x72\x69\x74\x65","\x68\x69\x64\x65\x44\x69\x61\x6C\x6F\x67","\x62\x75\x74\x74\x6F\x6E","\x72\x6F\x77","\x63\x6F\x6C\x2D\x6D\x64\x2D\x31\x32","\x74\x65\x78\x74\x61\x72\x65\x61","\x77\x69\x64\x74\x68","\x31\x30\x30\x25","\x68\x65\x69\x67\x68\x74","\x33\x37\x34\x70\x78","\x66\x69\x6C\x65","\x61\x63\x63\x65\x70\x74","\x74\x65\x78\x74\x2F\x78\x6D\x6C","\x63\x68\x61\x6E\x67\x65","\x66\x69\x6C\x65\x73","\x74\x61\x72\x67\x65\x74","\x6C\x6F\x67","\x6F\x6E\x6C\x6F\x61\x64","\x72\x65\x73\x75\x6C\x74","\x72\x65\x61\x64\x41\x73\x54\x65\x78\x74","\x46\x61\x69\x6C\x65\x64\x20\x74\x6F\x20\x6C\x6F\x61\x64\x20\x66\x6F\x72\x6D\x61\x74\x20\x66\x69\x6C\x65","\x46\x61\x69\x6C\x65\x64\x20\x74\x6F\x20\x6C\x6F\x61\x64\x20\x66\x69\x6C\x65","\x61\x64\x64\x45\x76\x65\x6E\x74\x4C\x69\x73\x74\x65\x6E\x65\x72","\x70\x61\x72\x73\x65\x58\x6D\x6C","\x73\x65\x74\x47\x72\x61\x70\x68\x58\x6D\x6C","\x62\x69\x6E\x64","\x62\x74\x6E\x20\x62\x6C\x75\x65","\x63\x61\x6E\x63\x65\x6C","\x62\x74\x6E\x20\x64\x65\x66\x61\x75\x6C\x74","\x61\x62\x6F\x75\x74","\x20\x43\x61\x6C\x6C\x79\x20\x53\x71\x75\x61\x72\x65","\x69\x6D\x67","\x62\x6F\x72\x64\x65\x72","\x30\x70\x78","\x31\x37\x36","\x31\x35\x31","\x73\x72\x63","\x2F\x6C\x6F\x67\x6F\x2E\x70\x6E\x67","\x62\x72","\x50\x6F\x77\x65\x72\x65\x64\x20\x62\x79\x20\x58\x65\x6E\x69\x61\x6C\x61\x62\x20","\x56\x45\x52\x53\x49\x4F\x4E","\x61","\x68\x72\x65\x66","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x63\x61\x6C\x6C\x79\x73\x71\x75\x61\x72\x65\x2E\x63\x6F\x6D\x2F","\x5F\x62\x6C\x61\x6E\x6B","\x77\x77\x77\x2E\x63\x61\x6C\x6C\x79\x73\x71\x75\x61\x72\x65\x2E\x63\x6F\x6D","\x73\x61\x76\x65\x41\x73","\x6E\x61\x6D\x65","\x5F","\x67\x65\x74\x4F\x72\x43\x72\x65\x61\x74\x65\x46\x69\x6C\x65\x6E\x61\x6D\x65","\x63\x6F\x6C\x2D\x6D\x64\x2D\x34","\x63\x6F\x6C\x2D\x6D\x64\x2D\x38","\x6C\x61\x62\x65\x6C","\x63\x6F\x6E\x74\x72\x6F\x6C\x2D\x6C\x61\x62\x65\x6C\x20\x70\x75\x6C\x6C\x2D\x72\x69\x67\x68\x74","\x5F\x63\x6F\x70\x79","\x69\x64","\x66\x6F\x72\x6D\x2D\x63\x6F\x6E\x74\x72\x6F\x6C","\x73\x61\x76\x65","\x6E\x65\x77","\x5F\x6E\x65\x77","\x76\x61\x72\x69\x61\x62\x6C\x65","\x76\x61\x72\x69\x61\x62\x6C\x65\x20\x6E\x61\x6D\x65","\x2F\x61\x70\x69\x2F\x6A\x73\x63\x72\x69\x70\x74\x79\x2F\x70\x72\x6F\x6A\x65\x63\x74\x73","\x6C\x65\x6E\x67\x74\x68","\x6A\x73\x63\x72\x69\x70\x74\x79\x2F\x70\x72\x6F\x6A\x65\x63\x74\x73\x2F\x76\x69\x65\x77\x2F","\x72\x65\x6E\x61\x6D\x65","\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x50\x55\x54","\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x78\x2D\x77\x77\x77\x2D\x66\x6F\x72\x6D\x2D\x75\x72\x6C\x65\x6E\x63\x6F\x64\x65\x64","\x6E\x61\x6D\x65\x3D","\x50\x72\x6F\x6A\x65\x63\x74\x20\x73\x75\x63\x63\x65\x73\x73\x66\x75\x6C\x6C\x79\x20\x72\x65\x6E\x61\x6D\x65\x64","\x73\x65\x74\x53\x74\x61\x74\x75\x73","\x6D\x65\x73\x73\x61\x67\x65","\x65\x72\x72\x6F\x72\x73","\x6F\x6E\x65\x72\x72\x6F\x72","\x73\x74\x61\x74\x75\x73\x54\x65\x78\x74","\x61\x6C\x65\x72\x74","\x65\x64\x69\x74","\x67\x65\x74\x47\x72\x61\x70\x68\x58\x6D\x6C","\x67\x65\x74\x50\x72\x65\x74\x74\x79\x58\x6D\x6C","\x73\x74\x6F\x70\x50\x72\x6F\x70\x61\x67\x61\x74\x69\x6F\x6E","\x70\x72\x65\x76\x65\x6E\x74\x44\x65\x66\x61\x75\x6C\x74","\x64\x61\x74\x61\x54\x72\x61\x6E\x73\x66\x65\x72","\x64\x72\x61\x67\x6F\x76\x65\x72","\x64\x72\x6F\x70","\x6D\x6F\x64\x61\x6C\x2D\x62\x6F\x64\x79\x20\x66\x6F\x72\x6D","\x65\x78\x70\x6F\x72\x74","\x66\x6F\x72\x6D\x2D\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C\x20\x66\x6F\x72\x6D\x2D\x72\x6F\x77\x2D\x73\x65\x70\x65\x72\x61\x74\x65\x64","\x66\x6F\x72\x6D\x2D\x67\x72\x6F\x75\x70\x20\x6C\x61\x73\x74","\x63\x6F\x6C\x2D\x73\x6D\x2D\x34\x20\x63\x6F\x6E\x74\x72\x6F\x6C\x2D\x6C\x61\x62\x65\x6C","\x63\x6F\x6C\x2D\x73\x6D\x2D\x38","\x67\x65\x74\x58\x6D\x6C","\x73\x69\x6D\x75\x6C\x61\x74\x65","\x2F\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x66\x69\x6C\x65\x6E\x61\x6D\x65\x3D","\x67\x72\x61\x70\x68","\x6D\x6F\x64\x61\x6C\x2D\x62\x6F\x64\x79\x20\x66\x6F\x72\x6D\x20\x6D\x6F\x64\x61\x6C\x2D\x62\x6F\x64\x79\x2D\x73\x63\x72\x6F\x6C\x6C","\x20","\x6E\x6F\x64\x65\x4E\x61\x6D\x65","\x69\x6E\x70\x75\x74\x47\x72\x6F\x75\x70","\x61\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x66\x6F\x72\x6D\x2D\x67\x72\x6F\x75\x70","\x64\x69\x73\x61\x62\x6C\x65\x64","\x6F\x6E\x63\x6C\x69\x63\x6B","\x4F\x4E","\x4F\x46\x46","\x62\x74\x6E\x20\x62\x74\x6E\x2D\x64\x61\x6E\x67\x65\x72\x20\x62\x74\x6E\x2D\x6D\x64","\x62\x74\x6E\x20\x62\x74\x6E\x2D\x73\x75\x63\x63\x65\x73\x73\x20\x62\x74\x6E\x2D\x6D\x64","\x73\x74\x61\x74\x65","\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C","\x42\x6F\x64\x79","\x71\x75\x65\x73\x74\x69\x6F\x6E","\x70\x6C\x61\x63\x65\x68\x6F\x6C\x64\x65\x72","\x49\x6E\x73\x65\x72\x74\x20\x6C\x61\x62\x65\x6C\x20\x66\x6F\x72\x20\x22\x4F\x74\x68\x65\x72\x22\x20\x61\x6E\x73\x77\x65\x72\x20\x6F\x70\x74\x69\x6F\x6E","\x6F\x74\x68\x65\x72","\x2F\x61\x70\x69\x2F\x73\x6D\x73\x2F\x61\x63\x63\x6F\x75\x6E\x74\x73","\x61\x63\x63\x6F\x75\x6E\x74\x5F\x69\x64","\x6D\x61\x78\x6C\x65\x6E\x67\x74\x68","\x31\x36\x30","\x73\x6D\x73\x5F\x74\x65\x78\x74","\x2B","\x62\x74\x6E\x20\x67\x72\x65\x65\x6E","\x61\x64\x64","\x68\x65\x6C\x70\x5F","\x70","\x68\x65\x6C\x70\x2D\x62\x6C\x6F\x63\x6B","\x63\x68\x69\x6C\x64\x72\x65\x6E","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64","\x67\x65\x74\x43\x68\x69\x6C\x64\x43\x6F\x75\x6E\x74","\x6D\x6F\x64\x65\x6C","\x63\x72\x65\x61\x74\x65\x58\x6D\x6C\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x73\x42\x79\x54\x61\x67\x4E\x61\x6D\x65","\x72\x65\x66\x72\x65\x73\x68","\x63\x6F\x6C\x2D\x6D\x64\x2D\x35","\x63\x6F\x6C\x2D\x6D\x64\x2D\x32","\x49\x6E\x73\x65\x72\x74\x20\x6C\x61\x62\x65\x6C","\x6E\x75\x6D\x62\x65\x72","\x78","\x70\x61\x72\x65\x6E\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x62\x74\x6E\x20\x72\x65\x64"];_0xac52[0];function createCheckbox(_0x9fadx2){var _0x9fadx3=document[_0xac52[2]](_0xac52[1]);_0x9fadx3[_0xac52[5]](_0xac52[3],_0xac52[4]);if(_0x9fadx2){_0x9fadx3[_0xac52[5]](_0xac52[6],true)};return _0x9fadx3}function createDropdownFromApi(_0x9fadx5,_0x9fadx2,_0x9fadx6,_0x9fadx7,_0x9fadx8,_0x9fadx9,_0x9fadxa){var _0x9fadxb= new XMLHttpRequest();_0x9fadxb[_0xac52[8]](_0xac52[7],_0x9fadx5,false);_0x9fadxb[_0xac52[14]](_0xac52[9],_0xac52[10]+ _0x9fadx8[_0xac52[13]][_0xac52[12]][_0xac52[11]]);_0x9fadxb[_0xac52[15]](null);var _0x9fadxc=[];if(_0x9fadxb[_0xac52[16]]=== 200){_0x9fadxc= JSON[_0xac52[18]](_0x9fadxb[_0xac52[17]])};var _0x9fadx3=document[_0xac52[2]](_0xac52[19]);var _0x9fadxd=document[_0xac52[2]](_0xac52[20]);_0x9fadxd[_0xac52[21]]= _0xac52[22];_0x9fadxd[_0xac52[23]]= _0xac52[24];_0x9fadx3[_0xac52[25]](_0x9fadxd);_0x9fadxc[_0xac52[30]][_0xac52[28]](function(_0x9fadxe){_0x9fadxd= document[_0xac52[2]](_0xac52[20]);_0x9fadxd[_0xac52[21]]= _0x9fadxe[_0x9fadx6];if(_0x9fadx9&& _0x9fadxa){_0x9fadx9[_0xac52[28]](function(_0x9fadxf){_0x9fadxa= _0x9fadxa[_0xac52[27]](_0xac52[26]+ _0x9fadxf+ _0xac52[26],_0x9fadxe[_0x9fadxf])});_0x9fadxd[_0xac52[23]]= _0x9fadxa;_0x9fadxd[_0xac52[29]]= (_0x9fadxa== _0x9fadx2)}else {_0x9fadxd[_0xac52[23]]= _0x9fadxe[_0x9fadx7];_0x9fadxd[_0xac52[29]]= (_0x9fadxe[_0x9fadx7]== _0x9fadx2)};_0x9fadx3[_0xac52[25]](_0x9fadxd)});_0x9fadx3[_0xac52[31]]= _0xac52[32];return _0x9fadx3}function createGroupedDropdownFromApi(_0x9fadx5,_0x9fadx2,_0x9fadx6,_0x9fadx7,_0x9fadx8,_0x9fadx11,_0x9fadx12){var _0x9fadxb= new XMLHttpRequest();_0x9fadxb[_0xac52[8]](_0xac52[7],_0x9fadx5,false);_0x9fadxb[_0xac52[14]](_0xac52[9],_0xac52[10]+ _0x9fadx8[_0xac52[13]][_0xac52[12]][_0xac52[11]]);_0x9fadxb[_0xac52[15]](null);var _0x9fadxc=[];if(_0x9fadxb[_0xac52[16]]=== 200){_0x9fadxc= JSON[_0xac52[18]](_0x9fadxb[_0xac52[17]])};var _0x9fadx3=document[_0xac52[2]](_0xac52[19]);var _0x9fadxd=document[_0xac52[2]](_0xac52[20]);_0x9fadxd[_0xac52[21]]= _0xac52[22];_0x9fadxd[_0xac52[23]]= _0xac52[33];_0x9fadx3[_0xac52[25]](_0x9fadxd);var _0x9fadx13=_0x9fadx11?_0x9fadxc[_0xac52[30]]:_0x9fadxc;var _0x9fadx14={};var _0x9fadx15={};_0x9fadx14[_0x9fadx12]= null;var _0x9fadx16=_[_0xac52[34]](_0x9fadx13,_0x9fadx14);var _0x9fadx17={};_0x9fadx16[_0xac52[28]](function(_0x9fadxe){_0x9fadxd= document[_0xac52[2]](_0xac52[20]);_0x9fadxd[_0xac52[31]]= _0xac52[35];_0x9fadxd[_0xac52[21]]= _0x9fadxe[_0x9fadx6][_0xac52[36]]();_0x9fadxd[_0xac52[23]]= _0x9fadxe[_0x9fadx7];_0x9fadxd[_0xac52[29]]= (_0x9fadxe[_0x9fadx7]== _0x9fadx2);_0x9fadx3[_0xac52[25]](_0x9fadxd);_0x9fadx15[_0x9fadx12]= _0x9fadxe[_0x9fadx7];_0x9fadx17= _[_0xac52[34]](_0x9fadx13,_0x9fadx15);_0x9fadx17[_0xac52[28]](function(_0x9fadxe){_0x9fadxd= document[_0xac52[2]](_0xac52[20]);_0x9fadxd[_0xac52[31]]= _0xac52[37];_0x9fadxd[_0xac52[21]]= _0xac52[38]+ _[_0xac52[39]](_0x9fadxe[_0x9fadx6]);_0x9fadxd[_0xac52[23]]= _0x9fadxe[_0x9fadx7];_0x9fadxd[_0xac52[29]]= (_0x9fadxe[_0x9fadx7]== _0x9fadx2);_0x9fadx3[_0xac52[25]](_0x9fadxd)})});_0x9fadx3[_0xac52[31]]= _0xac52[32];return _0x9fadx3}function createDropdownFromArray(_0x9fadx19,_0x9fadx2){var _0x9fadx3=document[_0xac52[2]](_0xac52[19]);for(var _0x9fadx1a in _0x9fadx19){var _0x9fadxd=document[_0xac52[2]](_0xac52[20]);_0x9fadxd[_0xac52[21]]= _0x9fadx19[_0x9fadx1a];_0x9fadxd[_0xac52[23]]= _0x9fadx1a;if(_0x9fadx2> 0|| _0x9fadx2!= _0xac52[40]){_0x9fadxd[_0xac52[29]]= (_0x9fadx2=== _0x9fadx1a)?true:false};_0x9fadx3[_0xac52[25]](_0x9fadxd)};_0x9fadx3[_0xac52[31]]= _0xac52[32];return _0x9fadx3}function Dialog(_0x9fadx8,_0x9fadx1c,_0x9fadx1d,_0x9fadx1e,_0x9fadx1f,_0x9fadx20,_0x9fadx21){var _0x9fadx22=0;if(mxClient[_0xac52[41]]&& document[_0xac52[42]]!= 9){_0x9fadx22= 60};_0x9fadx1d+= _0x9fadx22;_0x9fadx1e+= _0x9fadx22;var _0x9fadx23=Math[_0xac52[46]](0,Math[_0xac52[45]]((document[_0xac52[44]][_0xac52[43]]- _0x9fadx1d)/ 2));var _0x9fadx24=Math[_0xac52[46]](0,Math[_0xac52[45]]((Math[_0xac52[46]](document[_0xac52[44]][_0xac52[47]],document[_0xac52[48]][_0xac52[47]])- _0x9fadx1e)/ 3));var _0x9fadx25=_0x9fadx8[_0xac52[50]](_0xac52[49]);_0x9fadx25[_0xac52[31]]= _0xac52[51];_0x9fadx25[_0xac52[53]][_0xac52[52]]= _0xac52[54];_0x9fadx25[_0xac52[53]][_0xac52[55]]= _0xac52[56];var _0x9fadx26=_0x9fadx8[_0xac52[50]](_0xac52[57]);_0x9fadx26[_0xac52[31]]= _0xac52[58];_0x9fadx26[_0xac52[25]](_0x9fadx1c);_0x9fadx25[_0xac52[25]](_0x9fadx26);if(this[_0xac52[59]]== null){this[_0xac52[59]]= _0x9fadx8[_0xac52[50]](_0xac52[60]);this[_0xac52[59]][_0xac52[31]]= _0xac52[61];if(mxClient[_0xac52[62]]){ new mxDivResizer(this[_0xac52[59]])}};if(_0x9fadx1f){document[_0xac52[44]][_0xac52[25]](this[_0xac52[59]])};document[_0xac52[44]][_0xac52[25]](_0x9fadx25);this[_0xac52[63]]= _0x9fadx21;this[_0xac52[64]]= _0x9fadx25}Dialog[_0xac52[66]][_0xac52[65]]= function(){if(this[_0xac52[63]]!= null){this[_0xac52[63]]();this[_0xac52[63]]= null};this[_0xac52[64]][_0xac52[68]][_0xac52[67]](this[_0xac52[64]]);this[_0xac52[59]][_0xac52[68]][_0xac52[67]](this[_0xac52[59]])};function ImportDialog(_0x9fadx8){var _0x9fadx28=_0x9fadx8[_0xac52[50]](_0xac52[69]);var _0x9fadx29=_0x9fadx8[_0xac52[50]](_0xac52[70]);var _0x9fadx2a=_0x9fadx8[_0xac52[50]](_0xac52[71]);var _0x9fadx2b=_0x9fadx8[_0xac52[50]](_0xac52[72]);var _0x9fadx2c=_0x9fadx8[_0xac52[74]](_0xac52[73]);mxUtils[_0xac52[78]](_0x9fadx2c,mxResources[_0xac52[76]](_0xac52[75])+ _0xac52[77]);var _0x9fadx2d=mxUtils[_0xac52[80]](_0xac52[40],function(){_0x9fadx8[_0xac52[79]]()});_0x9fadx2d[_0xac52[31]]= _0xac52[65];_0x9fadx29[_0xac52[25]](_0x9fadx2d);_0x9fadx29[_0xac52[25]](_0x9fadx2c);var _0x9fadx2e=_0x9fadx8[_0xac52[50]](_0xac52[81]);var _0x9fadx2f=_0x9fadx8[_0xac52[50]](_0xac52[82]);var _0x9fadx30=document[_0xac52[2]](_0xac52[83]);_0x9fadx30[_0xac52[53]][_0xac52[84]]= _0xac52[85];_0x9fadx30[_0xac52[53]][_0xac52[86]]= _0xac52[87];var _0x9fadx3=document[_0xac52[2]](_0xac52[1]);_0x9fadx3[_0xac52[3]]= _0xac52[88];_0x9fadx3[_0xac52[5]](_0xac52[89],_0xac52[90]);_0x9fadx3[_0xac52[100]](_0xac52[91],function _0x9fadx31(_0x9fadx32){var _0x9fadx33=_0x9fadx32[_0xac52[93]][_0xac52[92]][0];console[_0xac52[94]](_0x9fadx33);if(_0x9fadx33){if(_0x9fadx33[_0xac52[3]]=== _0xac52[90]){var _0x9fadx34= new FileReader();_0x9fadx34[_0xac52[95]]= function(_0x9fadx35){var _0x9fadx36=_0x9fadx35[_0xac52[93]][_0xac52[96]];mxUtils[_0xac52[78]](_0x9fadx30,_0x9fadx36)};_0x9fadx34[_0xac52[97]](_0x9fadx33)}else {alert(_0xac52[98])}}else {alert(_0xac52[99])}},false);_0x9fadx2f[_0xac52[25]](_0x9fadx3);_0x9fadx2f[_0xac52[25]](_0x9fadx30);_0x9fadx2e[_0xac52[25]](_0x9fadx2f);_0x9fadx2a[_0xac52[25]](_0x9fadx2e);var _0x9fadx37=mxUtils[_0xac52[80]](mxResources[_0xac52[76]](_0xac52[75]),mxUtils[_0xac52[103]](this,function(_0x9fadx38){var _0x9fadx39=mxUtils[_0xac52[101]](_0x9fadx30[_0xac52[23]]);_0x9fadx8[_0xac52[13]][_0xac52[102]](_0x9fadx39[_0xac52[48]]);_0x9fadx8[_0xac52[79]]()}));_0x9fadx37[_0xac52[31]]= _0xac52[104];var _0x9fadx3a=mxUtils[_0xac52[80]](mxResources[_0xac52[76]](_0xac52[105]),function(){_0x9fadx8[_0xac52[79]]()});_0x9fadx3a[_0xac52[31]]= _0xac52[106];_0x9fadx2b[_0xac52[25]](_0x9fadx37);_0x9fadx2b[_0xac52[25]](_0x9fadx3a);_0x9fadx28[_0xac52[25]](_0x9fadx29);_0x9fadx28[_0xac52[25]](_0x9fadx2a);_0x9fadx28[_0xac52[25]](_0x9fadx2b);this[_0xac52[64]]= _0x9fadx28}function AboutDialog(_0x9fadx8){var _0x9fadx28=_0x9fadx8[_0xac52[50]](_0xac52[69]);var _0x9fadx29=_0x9fadx8[_0xac52[50]](_0xac52[70]);var _0x9fadx2a=_0x9fadx8[_0xac52[50]](_0xac52[71]);var _0x9fadx2b=_0x9fadx8[_0xac52[50]](_0xac52[72]);var _0x9fadx2c=_0x9fadx8[_0xac52[74]](_0xac52[73]);mxUtils[_0xac52[78]](_0x9fadx2c,mxResources[_0xac52[76]](_0xac52[107])+ _0xac52[108]);var _0x9fadx2d=mxUtils[_0xac52[80]](_0xac52[40],function(){_0x9fadx8[_0xac52[79]]()});_0x9fadx2d[_0xac52[31]]= _0xac52[65];_0x9fadx29[_0xac52[25]](_0x9fadx2d);_0x9fadx29[_0xac52[25]](_0x9fadx2c);var _0x9fadx3c=document[_0xac52[2]](_0xac52[109]);_0x9fadx3c[_0xac52[53]][_0xac52[110]]= _0xac52[111];_0x9fadx3c[_0xac52[5]](_0xac52[84],_0xac52[112]);_0x9fadx3c[_0xac52[5]](_0xac52[84],_0xac52[113]);_0x9fadx3c[_0xac52[5]](_0xac52[114],IMAGE_PATH+ _0xac52[115]);_0x9fadx2a[_0xac52[25]](_0x9fadx3c);mxUtils[_0xac52[116]](_0x9fadx2a);mxUtils[_0xac52[78]](_0x9fadx2a,_0xac52[117]+ mxClient[_0xac52[118]]);mxUtils[_0xac52[116]](_0x9fadx2a);var _0x9fadx3d=document[_0xac52[2]](_0xac52[119]);_0x9fadx3d[_0xac52[5]](_0xac52[120],_0xac52[121]);_0x9fadx3d[_0xac52[5]](_0xac52[93],_0xac52[122]);mxUtils[_0xac52[78]](_0x9fadx3d,_0xac52[123]);_0x9fadx2a[_0xac52[25]](_0x9fadx3d);mxUtils[_0xac52[116]](_0x9fadx2a);mxUtils[_0xac52[116]](_0x9fadx2a);var _0x9fadx3a=mxUtils[_0xac52[80]](mxResources[_0xac52[76]](_0xac52[65]),function(){_0x9fadx8[_0xac52[79]]()});_0x9fadx3a[_0xac52[31]]= _0xac52[106];_0x9fadx2b[_0xac52[25]](_0x9fadx3a);_0x9fadx28[_0xac52[25]](_0x9fadx29);_0x9fadx28[_0xac52[25]](_0x9fadx2a);_0x9fadx28[_0xac52[25]](_0x9fadx2b);this[_0xac52[64]]= _0x9fadx28}function SaveDialog(_0x9fadx8){var _0x9fadx28=_0x9fadx8[_0xac52[50]](_0xac52[69]);var _0x9fadx29=_0x9fadx8[_0xac52[50]](_0xac52[70]);var _0x9fadx2a=_0x9fadx8[_0xac52[50]](_0xac52[71]);var _0x9fadx2b=_0x9fadx8[_0xac52[50]](_0xac52[72]);var _0x9fadx2c=_0x9fadx8[_0xac52[74]](_0xac52[73]);mxUtils[_0xac52[78]](_0x9fadx2c,mxResources[_0xac52[76]](_0xac52[124]));var _0x9fadx2d=mxUtils[_0xac52[80]](_0xac52[40],function(){_0x9fadx8[_0xac52[79]]()});_0x9fadx2d[_0xac52[31]]= _0xac52[65];_0x9fadx29[_0xac52[25]](_0x9fadx2d);_0x9fadx29[_0xac52[25]](_0x9fadx2c);var _0x9fadx3f=_0xac52[125];var _0x9fadx40=_0xac52[126]+ _0x9fadx3f;var _0x9fadx2=_0x9fadx8[_0xac52[13]][_0xac52[127]]();var _0x9fadx2e=_0x9fadx8[_0xac52[50]](_0xac52[81]);var _0x9fadx2f=_0x9fadx8[_0xac52[50]](_0xac52[128]);var _0x9fadx41=_0x9fadx8[_0xac52[50]](_0xac52[129]);var _0x9fadx42=document[_0xac52[2]](_0xac52[130]);_0x9fadx42[_0xac52[31]]= _0xac52[131];mxUtils[_0xac52[78]](_0x9fadx42,mxResources[_0xac52[76]](_0x9fadx3f));_0x9fadx2f[_0xac52[25]](_0x9fadx42);var _0x9fadx43=document[_0xac52[2]](_0xac52[1]);_0x9fadx43[_0xac52[5]](_0xac52[23],_0x9fadx2+ _0xac52[132]);_0x9fadx43[_0xac52[5]](_0xac52[133],_0x9fadx40);_0x9fadx43[_0xac52[31]]= _0xac52[134];_0x9fadx41[_0xac52[25]](_0x9fadx43);_0x9fadx2e[_0xac52[25]](_0x9fadx2f);_0x9fadx2e[_0xac52[25]](_0x9fadx41);_0x9fadx2a[_0xac52[25]](_0x9fadx2e);var _0x9fadx37=mxUtils[_0xac52[80]](mxResources[_0xac52[76]](_0xac52[135]),function(){_0x9fadx8[_0xac52[124]](_0x9fadx43[_0xac52[23]]);_0x9fadx8[_0xac52[79]]()});_0x9fadx37[_0xac52[31]]= _0xac52[104];var _0x9fadx3a=mxUtils[_0xac52[80]](mxResources[_0xac52[76]](_0xac52[105]),function(){_0x9fadx8[_0xac52[79]]()});_0x9fadx3a[_0xac52[31]]= _0xac52[106];_0x9fadx2b[_0xac52[25]](_0x9fadx37);_0x9fadx2b[_0xac52[25]](_0x9fadx3a);_0x9fadx28[_0xac52[25]](_0x9fadx29);_0x9fadx28[_0xac52[25]](_0x9fadx2a);_0x9fadx28[_0xac52[25]](_0x9fadx2b);this[_0xac52[64]]= _0x9fadx28}function NewDialog(_0x9fadx8){var _0x9fadx28=_0x9fadx8[_0xac52[50]](_0xac52[69]);var _0x9fadx29=_0x9fadx8[_0xac52[50]](_0xac52[70]);var _0x9fadx2a=_0x9fadx8[_0xac52[50]](_0xac52[71]);var _0x9fadx2b=_0x9fadx8[_0xac52[50]](_0xac52[72]);var _0x9fadx2c=_0x9fadx8[_0xac52[74]](_0xac52[73]);mxUtils[_0xac52[78]](_0x9fadx2c,mxResources[_0xac52[76]](_0xac52[136]));var _0x9fadx2d=mxUtils[_0xac52[80]](_0xac52[40],function(){_0x9fadx8[_0xac52[79]]()});_0x9fadx2d[_0xac52[31]]= _0xac52[65];_0x9fadx29[_0xac52[25]](_0x9fadx2d);_0x9fadx29[_0xac52[25]](_0x9fadx2c);var _0x9fadx3f=_0xac52[125];var _0x9fadx40=_0xac52[126]+ _0x9fadx3f;var _0x9fadx2=_0x9fadx8[_0xac52[13]][_0xac52[127]]();var _0x9fadx2e=_0x9fadx8[_0xac52[50]](_0xac52[81]);var _0x9fadx2f=_0x9fadx8[_0xac52[50]](_0xac52[128]);var _0x9fadx41=_0x9fadx8[_0xac52[50]](_0xac52[129]);var _0x9fadx42=document[_0xac52[2]](_0xac52[130]);_0x9fadx42[_0xac52[31]]= _0xac52[131];mxUtils[_0xac52[78]](_0x9fadx42,mxResources[_0xac52[76]](_0x9fadx3f));_0x9fadx2f[_0xac52[25]](_0x9fadx42);var _0x9fadx43=document[_0xac52[2]](_0xac52[1]);_0x9fadx43[_0xac52[5]](_0xac52[23],_0x9fadx2+ _0xac52[137]);_0x9fadx43[_0xac52[5]](_0xac52[133],_0x9fadx40);_0x9fadx43[_0xac52[31]]= _0xac52[134];_0x9fadx41[_0xac52[25]](_0x9fadx43);_0x9fadx2e[_0xac52[25]](_0x9fadx2f);_0x9fadx2e[_0xac52[25]](_0x9fadx41);_0x9fadx2a[_0xac52[25]](_0x9fadx2e);var _0x9fadx37=mxUtils[_0xac52[80]](mxResources[_0xac52[76]](_0xac52[136]),function(){_0x9fadx8[_0xac52[136]](_0x9fadx43[_0xac52[23]]);_0x9fadx8[_0xac52[79]]()});_0x9fadx37[_0xac52[31]]= _0xac52[104];var _0x9fadx3a=mxUtils[_0xac52[80]](mxResources[_0xac52[76]](_0xac52[105]),function(){_0x9fadx8[_0xac52[79]]()});_0x9fadx3a[_0xac52[31]]= _0xac52[106];_0x9fadx2b[_0xac52[25]](_0x9fadx37);_0x9fadx2b[_0xac52[25]](_0x9fadx3a);_0x9fadx28[_0xac52[25]](_0x9fadx29);_0x9fadx28[_0xac52[25]](_0x9fadx2a);_0x9fadx28[_0xac52[25]](_0x9fadx2b);this[_0xac52[64]]= _0x9fadx28}function VariableDialog(_0x9fadx8){var _0x9fadx28=_0x9fadx8[_0xac52[50]](_0xac52[69]);var _0x9fadx29=_0x9fadx8[_0xac52[50]](_0xac52[70]);var _0x9fadx2a=_0x9fadx8[_0xac52[50]](_0xac52[71]);var _0x9fadx2b=_0x9fadx8[_0xac52[50]](_0xac52[72]);var _0x9fadx2c=_0x9fadx8[_0xac52[74]](_0xac52[73]);mxUtils[_0xac52[78]](_0x9fadx2c,mxResources[_0xac52[76]](_0xac52[138]));var _0x9fadx2d=mxUtils[_0xac52[80]](_0xac52[40],function(){_0x9fadx8[_0xac52[79]]()});_0x9fadx2d[_0xac52[31]]= _0xac52[65];_0x9fadx29[_0xac52[25]](_0x9fadx2d);_0x9fadx29[_0xac52[25]](_0x9fadx2c);var _0x9fadx3f=_0xac52[125];var _0x9fadx40=_0xac52[126]+ _0x9fadx3f;var _0x9fadx2=_0x9fadx8[_0xac52[13]][_0xac52[127]]();var _0x9fadx2e=_0x9fadx8[_0xac52[50]](_0xac52[81]);var _0x9fadx2f=_0x9fadx8[_0xac52[50]](_0xac52[128]);var _0x9fadx41=_0x9fadx8[_0xac52[50]](_0xac52[129]);var _0x9fadx42=document[_0xac52[2]](_0xac52[130]);_0x9fadx42[_0xac52[31]]= _0xac52[131];mxUtils[_0xac52[78]](_0x9fadx42,mxResources[_0xac52[76]](_0x9fadx3f));_0x9fadx2f[_0xac52[25]](_0x9fadx42);var _0x9fadx43=document[_0xac52[2]](_0xac52[1]);_0x9fadx43[_0xac52[5]](_0xac52[23],_0xac52[139]);_0x9fadx43[_0xac52[5]](_0xac52[133],_0x9fadx40);_0x9fadx43[_0xac52[31]]= _0xac52[134];_0x9fadx41[_0xac52[25]](_0x9fadx43);_0x9fadx2e[_0xac52[25]](_0x9fadx2f);_0x9fadx2e[_0xac52[25]](_0x9fadx41);_0x9fadx2a[_0xac52[25]](_0x9fadx2e);var _0x9fadx37=mxUtils[_0xac52[80]](mxResources[_0xac52[76]](_0xac52[136]),function(){_0x9fadx8[_0xac52[138]](_0x9fadx43[_0xac52[23]]);_0x9fadx8[_0xac52[79]]()});_0x9fadx37[_0xac52[31]]= _0xac52[104];var _0x9fadx3a=mxUtils[_0xac52[80]](mxResources[_0xac52[76]](_0xac52[105]),function(){_0x9fadx8[_0xac52[79]]()});_0x9fadx3a[_0xac52[31]]= _0xac52[106];_0x9fadx2b[_0xac52[25]](_0x9fadx37);_0x9fadx2b[_0xac52[25]](_0x9fadx3a);_0x9fadx28[_0xac52[25]](_0x9fadx29);_0x9fadx28[_0xac52[25]](_0x9fadx2a);_0x9fadx28[_0xac52[25]](_0x9fadx2b);this[_0xac52[64]]= _0x9fadx28}function OpenDialog(_0x9fadx8){var _0x9fadx28=_0x9fadx8[_0xac52[50]](_0xac52[69]);var _0x9fadx29=_0x9fadx8[_0xac52[50]](_0xac52[70]);var _0x9fadx2a=_0x9fadx8[_0xac52[50]](_0xac52[71]);var _0x9fadx2b=_0x9fadx8[_0xac52[50]](_0xac52[72]);var _0x9fadx2c=_0x9fadx8[_0xac52[74]](_0xac52[73]);mxUtils[_0xac52[78]](_0x9fadx2c,mxResources[_0xac52[76]](_0xac52[8]));var _0x9fadx2d=mxUtils[_0xac52[80]](_0xac52[40],function(){_0x9fadx8[_0xac52[79]]()});_0x9fadx2d[_0xac52[31]]= _0xac52[65];_0x9fadx29[_0xac52[25]](_0x9fadx2d);_0x9fadx29[_0xac52[25]](_0x9fadx2c);var _0x9fadx2e=_0x9fadx8[_0xac52[50]](_0xac52[81]);var _0x9fadx2f=_0x9fadx8[_0xac52[50]](_0xac52[128]);var _0x9fadx41=_0x9fadx8[_0xac52[50]](_0xac52[129]);var _0x9fadx42=document[_0xac52[2]](_0xac52[130]);_0x9fadx42[_0xac52[31]]= _0xac52[131];mxUtils[_0xac52[78]](_0x9fadx42,mxResources[_0xac52[76]](_0xac52[125]));_0x9fadx2f[_0xac52[25]](_0x9fadx42);var _0x9fadxb= new XMLHttpRequest();_0x9fadxb[_0xac52[8]](_0xac52[7],_0xac52[140],false);_0x9fadxb[_0xac52[14]](_0xac52[9],_0xac52[10]+ _0x9fadx8[_0xac52[13]][_0xac52[12]][_0xac52[11]]);_0x9fadxb[_0xac52[15]](null);var _0x9fadxc=[];if(_0x9fadxb[_0xac52[16]]=== 200){_0x9fadxc= JSON[_0xac52[18]](_0x9fadxb[_0xac52[17]])[_0xac52[30]]};var _0x9fadx43=document[_0xac52[2]](_0xac52[19]);for(var _0x9fadx47=0;_0x9fadx47< _0x9fadxc[_0xac52[141]];_0x9fadx47++){var _0x9fadxd=document[_0xac52[2]](_0xac52[20]);_0x9fadxd[_0xac52[21]]= _0x9fadxc[_0x9fadx47][_0xac52[125]];_0x9fadxd[_0xac52[23]]= _0x9fadxc[_0x9fadx47][_0xac52[133]];_0x9fadx43[_0xac52[25]](_0x9fadxd)};_0x9fadx43[_0xac52[31]]= _0xac52[134];_0x9fadx41[_0xac52[25]](_0x9fadx43);_0x9fadx2e[_0xac52[25]](_0x9fadx2f);_0x9fadx2e[_0xac52[25]](_0x9fadx41);_0x9fadx2a[_0xac52[25]](_0x9fadx2e);var _0x9fadx37=mxUtils[_0xac52[80]](mxResources[_0xac52[76]](_0xac52[8]),function(){console[_0xac52[94]](_0x9fadx43);console[_0xac52[94]](_0x9fadx43[_0xac52[23]]);window[_0xac52[8]](_0xac52[142]+ _0x9fadx43[_0xac52[23]],_0xac52[122]);_0x9fadx8[_0xac52[79]]()});_0x9fadx37[_0xac52[31]]= _0xac52[104];var _0x9fadx3a=mxUtils[_0xac52[80]](mxResources[_0xac52[76]](_0xac52[105]),function(){_0x9fadx8[_0xac52[79]]()});_0x9fadx3a[_0xac52[31]]= _0xac52[106];_0x9fadx2b[_0xac52[25]](_0x9fadx37);_0x9fadx2b[_0xac52[25]](_0x9fadx3a);_0x9fadx28[_0xac52[25]](_0x9fadx29);_0x9fadx28[_0xac52[25]](_0x9fadx2a);_0x9fadx28[_0xac52[25]](_0x9fadx2b);this[_0xac52[64]]= _0x9fadx28}function RenameDialog(_0x9fadx8){var _0x9fadx28=_0x9fadx8[_0xac52[50]](_0xac52[69]);var _0x9fadx29=_0x9fadx8[_0xac52[50]](_0xac52[70]);var _0x9fadx2a=_0x9fadx8[_0xac52[50]](_0xac52[71]);var _0x9fadx2b=_0x9fadx8[_0xac52[50]](_0xac52[72]);var _0x9fadx2c=_0x9fadx8[_0xac52[74]](_0xac52[73]);mxUtils[_0xac52[78]](_0x9fadx2c,mxResources[_0xac52[76]](_0xac52[143]));var _0x9fadx2d=mxUtils[_0xac52[80]](_0xac52[40],function(){_0x9fadx8[_0xac52[79]]()});_0x9fadx2d[_0xac52[31]]= _0xac52[65];_0x9fadx29[_0xac52[25]](_0x9fadx2d);_0x9fadx29[_0xac52[25]](_0x9fadx2c);var _0x9fadx2e=_0x9fadx8[_0xac52[50]](_0xac52[81]);var _0x9fadx2f=_0x9fadx8[_0xac52[50]](_0xac52[128]);var _0x9fadx41=_0x9fadx8[_0xac52[50]](_0xac52[129]);var _0x9fadx42=document[_0xac52[2]](_0xac52[130]);_0x9fadx42[_0xac52[31]]= _0xac52[131];mxUtils[_0xac52[78]](_0x9fadx42,mxResources[_0xac52[76]](_0xac52[125]));_0x9fadx2f[_0xac52[25]](_0x9fadx42);var _0x9fadx3f=_0x9fadx8[_0xac52[13]][_0xac52[144]];var _0x9fadx3=document[_0xac52[2]](_0xac52[1]);_0x9fadx3[_0xac52[5]](_0xac52[23],_0x9fadx3f);_0x9fadx3[_0xac52[31]]= _0xac52[134];_0x9fadx41[_0xac52[25]](_0x9fadx3);_0x9fadx2e[_0xac52[25]](_0x9fadx2f);_0x9fadx2e[_0xac52[25]](_0x9fadx41);_0x9fadx2a[_0xac52[25]](_0x9fadx2e);var _0x9fadx37=mxUtils[_0xac52[80]](mxResources[_0xac52[76]](_0xac52[135]),function(){var _0x9fadxb= new XMLHttpRequest();_0x9fadxb[_0xac52[8]](_0xac52[145],SAVE_URL+ _0x9fadx8[_0xac52[13]][_0xac52[12]][_0xac52[133]],true);_0x9fadxb[_0xac52[14]](_0xac52[146],_0xac52[147]);_0x9fadxb[_0xac52[14]](_0xac52[9],_0xac52[10]+ _0x9fadx8[_0xac52[13]][_0xac52[12]][_0xac52[11]]);_0x9fadxb[_0xac52[15]](_0xac52[148]+ _0x9fadx3[_0xac52[23]]);_0x9fadxb[_0xac52[95]]= function(_0x9fadx35){if(_0x9fadxb[_0xac52[16]]=== 200){_0x9fadx8[_0xac52[13]][_0xac52[150]](_0xac52[149]);_0x9fadx8[_0xac52[13]][_0xac52[144]]= _0x9fadx3[_0xac52[23]]}else {_0x9fadx8[_0xac52[13]][_0xac52[150]](JSON[_0xac52[18]](_0x9fadxb[_0xac52[17]])[_0xac52[152]][0][_0xac52[151]])}};_0x9fadxb[_0xac52[153]]= function(_0x9fadx35){mxUtils[_0xac52[155]](_0x9fadxb[_0xac52[154]])};_0x9fadx8[_0xac52[79]]()});_0x9fadx37[_0xac52[31]]= _0xac52[104];var _0x9fadx3a=mxUtils[_0xac52[80]](mxResources[_0xac52[76]](_0xac52[105]),function(){_0x9fadx8[_0xac52[79]]()});_0x9fadx3a[_0xac52[31]]= _0xac52[106];_0x9fadx2b[_0xac52[25]](_0x9fadx37);_0x9fadx2b[_0xac52[25]](_0x9fadx3a);_0x9fadx28[_0xac52[25]](_0x9fadx29);_0x9fadx28[_0xac52[25]](_0x9fadx2a);_0x9fadx28[_0xac52[25]](_0x9fadx2b);this[_0xac52[64]]= _0x9fadx28}function EditFileDialog(_0x9fadx8){var _0x9fadx28=_0x9fadx8[_0xac52[50]](_0xac52[69]);var _0x9fadx29=_0x9fadx8[_0xac52[50]](_0xac52[70]);var _0x9fadx2a=_0x9fadx8[_0xac52[50]](_0xac52[71]);var _0x9fadx2b=_0x9fadx8[_0xac52[50]](_0xac52[72]);var _0x9fadx2c=_0x9fadx8[_0xac52[74]](_0xac52[73]);mxUtils[_0xac52[78]](_0x9fadx2c,mxResources[_0xac52[76]](_0xac52[156]));var _0x9fadx2d=mxUtils[_0xac52[80]](_0xac52[40],function(){_0x9fadx8[_0xac52[79]]()});_0x9fadx2d[_0xac52[31]]= _0xac52[65];_0x9fadx29[_0xac52[25]](_0x9fadx2d);_0x9fadx29[_0xac52[25]](_0x9fadx2c);var _0x9fadx2e=_0x9fadx8[_0xac52[50]](_0xac52[81]);var _0x9fadx2f=_0x9fadx8[_0xac52[50]](_0xac52[82]);var _0x9fadx30=document[_0xac52[2]](_0xac52[83]);_0x9fadx30[_0xac52[53]][_0xac52[84]]= _0xac52[85];_0x9fadx30[_0xac52[53]][_0xac52[86]]= _0xac52[87];_0x9fadx30[_0xac52[23]]= mxUtils[_0xac52[158]](_0x9fadx8[_0xac52[13]][_0xac52[157]]());if(fileSupport){function _0x9fadx4a(_0x9fadx32){_0x9fadx32[_0xac52[159]]();_0x9fadx32[_0xac52[160]]();if(_0x9fadx32[_0xac52[161]][_0xac52[92]][_0xac52[141]]> 0){var _0x9fadx4b=_0x9fadx32[_0xac52[161]][_0xac52[92]][0];var _0x9fadx4c= new FileReader();_0x9fadx4c[_0xac52[95]]= function(_0x9fadx35){_0x9fadx30[_0xac52[23]]= _0x9fadx35[_0xac52[93]][_0xac52[96]]};_0x9fadx4c[_0xac52[97]](_0x9fadx4b)}}function _0x9fadx4d(_0x9fadx32){_0x9fadx32[_0xac52[159]]();_0x9fadx32[_0xac52[160]]()}_0x9fadx30[_0xac52[100]](_0xac52[162],_0x9fadx4d,false);_0x9fadx30[_0xac52[100]](_0xac52[163],_0x9fadx4a,false)};_0x9fadx2f[_0xac52[25]](_0x9fadx30);_0x9fadx2e[_0xac52[25]](_0x9fadx2f);_0x9fadx2a[_0xac52[25]](_0x9fadx2e);var _0x9fadx37=mxUtils[_0xac52[80]](mxResources[_0xac52[76]](_0xac52[135]),function(){var _0x9fadx39=mxUtils[_0xac52[101]](_0x9fadx30[_0xac52[23]]);_0x9fadx8[_0xac52[13]][_0xac52[102]](_0x9fadx39[_0xac52[48]]);_0x9fadx8[_0xac52[79]]()});_0x9fadx37[_0xac52[31]]= _0xac52[104];var _0x9fadx3a=mxUtils[_0xac52[80]](mxResources[_0xac52[76]](_0xac52[105]),function(){_0x9fadx8[_0xac52[79]]()});_0x9fadx3a[_0xac52[31]]= _0xac52[106];_0x9fadx2b[_0xac52[25]](_0x9fadx37);_0x9fadx2b[_0xac52[25]](_0x9fadx3a);_0x9fadx28[_0xac52[25]](_0x9fadx29);_0x9fadx28[_0xac52[25]](_0x9fadx2a);_0x9fadx28[_0xac52[25]](_0x9fadx2b);this[_0xac52[64]]= _0x9fadx28}function ExportDialog(_0x9fadx8){var _0x9fadx28=_0x9fadx8[_0xac52[50]](_0xac52[69]);var _0x9fadx29=_0x9fadx8[_0xac52[50]](_0xac52[70]);var _0x9fadx2a=_0x9fadx8[_0xac52[50]](_0xac52[164]);var _0x9fadx2b=_0x9fadx8[_0xac52[50]](_0xac52[72]);var _0x9fadx2c=_0x9fadx8[_0xac52[74]](_0xac52[73]);mxUtils[_0xac52[78]](_0x9fadx2c,mxResources[_0xac52[76]](_0xac52[165])+ _0xac52[77]);var _0x9fadx2d=mxUtils[_0xac52[80]](_0xac52[40],function(){_0x9fadx8[_0xac52[79]]()});_0x9fadx2d[_0xac52[31]]= _0xac52[65];_0x9fadx29[_0xac52[25]](_0x9fadx2d);_0x9fadx29[_0xac52[25]](_0x9fadx2c);var _0x9fadx4f=_0x9fadx8[_0xac52[50]](_0xac52[166]);var _0x9fadx50=_0x9fadx8[_0xac52[50]](_0xac52[167]);var _0x9fadx42=document[_0xac52[2]](_0xac52[130]);_0x9fadx42[_0xac52[31]]= _0xac52[168];mxUtils[_0xac52[78]](_0x9fadx42,mxResources[_0xac52[76]](_0xac52[144]));var _0x9fadx3=document[_0xac52[2]](_0xac52[1]);_0x9fadx3[_0xac52[5]](_0xac52[23],_0x9fadx8[_0xac52[13]][_0xac52[127]]());_0x9fadx3[_0xac52[31]]= _0xac52[134];var _0x9fadx25=_0x9fadx8[_0xac52[50]](_0xac52[169]);_0x9fadx25[_0xac52[25]](_0x9fadx3);_0x9fadx50[_0xac52[25]](_0x9fadx42);_0x9fadx50[_0xac52[25]](_0x9fadx25);_0x9fadx4f[_0xac52[25]](_0x9fadx50);_0x9fadx2a[_0xac52[25]](_0x9fadx4f);var _0x9fadx37=mxUtils[_0xac52[80]](mxResources[_0xac52[76]](_0xac52[165]),mxUtils[_0xac52[103]](this,function(_0x9fadx38){_0x9fadx8[_0xac52[135]](false);var _0x9fadx51=encodeURIComponent(mxUtils[_0xac52[170]](_0x9fadx8[_0xac52[13]][_0xac52[157]]())); new mxXmlRequest(SAVE_URL+ _0x9fadx8[_0xac52[13]][_0xac52[12]][_0xac52[133]]+ _0xac52[172],_0xac52[173]+ _0x9fadx3[_0xac52[23]],_0xac52[7])[_0xac52[171]](document,_0xac52[122]);_0x9fadx8[_0xac52[79]]()}));_0x9fadx37[_0xac52[31]]= _0xac52[104];var _0x9fadx3a=mxUtils[_0xac52[80]](mxResources[_0xac52[76]](_0xac52[105]),function(){_0x9fadx8[_0xac52[79]]()});_0x9fadx3a[_0xac52[31]]= _0xac52[106];_0x9fadx2b[_0xac52[25]](_0x9fadx37);_0x9fadx2b[_0xac52[25]](_0x9fadx3a);_0x9fadx28[_0xac52[25]](_0x9fadx29);_0x9fadx28[_0xac52[25]](_0x9fadx2a);_0x9fadx28[_0xac52[25]](_0x9fadx2b);this[_0xac52[64]]= _0x9fadx28}function GeneralDialog(_0x9fadx8,_0x9fadx53){var _0x9fadx54=_0x9fadx8[_0xac52[13]][_0xac52[174]];var _0x9fadx28=_0x9fadx8[_0xac52[50]](_0xac52[69]);var _0x9fadx29=_0x9fadx8[_0xac52[50]](_0xac52[70]);var _0x9fadx2a=_0x9fadx8[_0xac52[50]](_0xac52[175]);var _0x9fadx2b=_0x9fadx8[_0xac52[50]](_0xac52[72]);var _0x9fadx2c=_0x9fadx8[_0xac52[74]](_0xac52[73]);mxUtils[_0xac52[78]](_0x9fadx2c,mxResources[_0xac52[76]](_0xac52[156])+ _0xac52[176]+ mxResources[_0xac52[76]](_0x9fadx53[_0xac52[23]][_0xac52[177]]));var _0x9fadx2d=mxUtils[_0xac52[80]](_0xac52[40],function(){_0x9fadx8[_0xac52[79]]()});_0x9fadx2d[_0xac52[31]]= _0xac52[65];_0x9fadx29[_0xac52[25]](_0x9fadx2d);_0x9fadx29[_0xac52[25]](_0x9fadx2c);var _0x9fadx55=_0x9fadx8[_0xac52[50]](_0xac52[166]);_0x9fadx55[_0xac52[5]](_0xac52[133],_0xac52[178]);var _0x9fadx56=_0x9fadx53[_0xac52[23]][_0xac52[179]][_0xac52[141]];var _0x9fadx4f=_0x9fadx8[_0xac52[50]](_0xac52[166]);for(var _0x9fadx57=0;_0x9fadx57< _0x9fadx56;_0x9fadx57++){var _0x9fadx3f=_0x9fadx53[_0xac52[23]][_0xac52[179]][_0x9fadx57][_0xac52[125]];var _0x9fadx40=_0xac52[126]+ _0x9fadx3f;var _0x9fadx2=_0x9fadx53[_0xac52[23]][_0xac52[179]][_0x9fadx57][_0xac52[23]];console[_0xac52[94]](_0x9fadx3f);var _0x9fadx50=_0x9fadx8[_0xac52[50]]((_0x9fadx57== _0x9fadx56- 1)?_0xac52[167]:_0xac52[180]);var _0x9fadx42=document[_0xac52[2]](_0xac52[130]);_0x9fadx42[_0xac52[31]]= _0xac52[168];mxUtils[_0xac52[78]](_0x9fadx42,mxResources[_0xac52[76]](_0x9fadx3f));_0x9fadx50[_0xac52[25]](_0x9fadx42);var _0x9fadx3;switch(_0x9fadx3f){case _0xac52[133]:_0x9fadx3= document[_0xac52[2]](_0xac52[1]);_0x9fadx2= _0x9fadx53[_0xac52[133]];_0x9fadx3[_0xac52[5]](_0xac52[23],_0x9fadx2);_0x9fadx3[_0xac52[5]](_0xac52[181],true);_0x9fadx3[_0xac52[31]]= _0xac52[134];break;case _0xac52[187]:_0x9fadx3= document[_0xac52[2]](_0xac52[1]);_0x9fadx3[_0xac52[5]](_0xac52[3],_0xac52[80]);_0x9fadx3[_0xac52[182]]= function(){if(this[_0xac52[23]]== _0xac52[183]){this[_0xac52[5]](_0xac52[23],_0xac52[184]);this[_0xac52[31]]= _0xac52[185]}else {this[_0xac52[31]]= _0xac52[186];this[_0xac52[5]](_0xac52[23],_0xac52[183])}};_0x9fadx3[_0xac52[5]](_0xac52[23],_0x9fadx2);_0x9fadx3[_0xac52[31]]= (_0x9fadx2== _0xac52[183]?_0xac52[186]:_0xac52[185]);break;case _0xac52[21]:_0x9fadx3= document[_0xac52[2]](_0xac52[83]);_0x9fadx3[_0xac52[188]]= _0x9fadx2;_0x9fadx3[_0xac52[31]]= _0xac52[134];break;case _0xac52[189]:_0x9fadx3= document[_0xac52[2]](_0xac52[83]);_0x9fadx3[_0xac52[188]]= _0x9fadx2;_0x9fadx3[_0xac52[31]]= _0xac52[134];break;case _0xac52[190]:_0x9fadx3= document[_0xac52[2]](_0xac52[83]);_0x9fadx3[_0xac52[188]]= _0x9fadx2;_0x9fadx3[_0xac52[31]]= _0xac52[134];break;case _0xac52[193]:_0x9fadx3= document[_0xac52[2]](_0xac52[1]);_0x9fadx3[_0xac52[5]](_0xac52[23],_0x9fadx2);_0x9fadx3[_0xac52[5]](_0xac52[191],_0xac52[192]);_0x9fadx3[_0xac52[31]]= _0xac52[134];break;case _0xac52[195]:_0x9fadx3= createDropdownFromApi(_0xac52[194],_0x9fadx2,_0xac52[125],_0xac52[133],_0x9fadx8);break;case _0xac52[198]:_0x9fadx3= document[_0xac52[2]](_0xac52[83]);_0x9fadx3[_0xac52[188]]= _0x9fadx2;_0x9fadx3[_0xac52[31]]= _0xac52[134];_0x9fadx3[_0xac52[5]](_0xac52[196],_0xac52[197]);break;case _0xac52[201]:var _0x9fadx3=mxUtils[_0xac52[80]](_0xac52[199],function(){var _0x9fadx58=createDynamicInput(null,null,_0x9fadx8);_0x9fadx55[_0xac52[25]](_0x9fadx58);_0x9fadx2a[_0xac52[25]](_0x9fadx55)});_0x9fadx3[_0xac52[31]]= _0xac52[200];break;default:_0x9fadx3= document[_0xac52[2]](_0xac52[1]);_0x9fadx3[_0xac52[5]](_0xac52[23],_0x9fadx2);_0x9fadx3[_0xac52[31]]= _0xac52[134];break};_0x9fadx3[_0xac52[5]](_0xac52[133],_0x9fadx40);var _0x9fadx25=_0x9fadx8[_0xac52[50]](_0xac52[169]);_0x9fadx25[_0xac52[25]](_0x9fadx3);if(mxResources[_0xac52[76]](_0xac52[202]+ _0x9fadx3f)){var _0x9fadx59=_0x9fadx8[_0xac52[50]](_0xac52[203]);_0x9fadx59[_0xac52[31]]= _0xac52[204];mxUtils[_0xac52[78]](_0x9fadx59,mxResources[_0xac52[76]](_0xac52[202]+ _0x9fadx3f));_0x9fadx25[_0xac52[25]](_0x9fadx59)};_0x9fadx50[_0xac52[25]](_0x9fadx25);_0x9fadx4f[_0xac52[25]](_0x9fadx50)};_0x9fadx2a[_0xac52[25]](_0x9fadx4f);if(_0x9fadx53[_0xac52[23]][_0xac52[177]]== _0xac52[1]){if(_0x9fadx53[_0xac52[205]]){for(var _0x9fadx47=0;_0x9fadx47< _0x9fadx53[_0xac52[205]][_0xac52[141]];_0x9fadx47++){var _0x9fadx5a=_0xac52[40];var _0x9fadx5b=_0xac52[40];_[_0xac52[28]](_0x9fadx53[_0xac52[205]][_0x9fadx47][_0xac52[23]][_0xac52[179]],function(_0x9fadx5c){if(_0x9fadx5c[_0xac52[125]]== _0xac52[3]){_0x9fadx5a= _0x9fadx5c[_0xac52[23]]}else {if(_0x9fadx5c[_0xac52[125]]== _0xac52[130]){_0x9fadx5b= _0x9fadx5c[_0xac52[23]]}}});var _0x9fadx58=createDynamicInput(_0x9fadx5a,_0x9fadx5b,_0x9fadx8);_0x9fadx55[_0xac52[25]](_0x9fadx58)}}};_0x9fadx2a[_0xac52[25]](_0x9fadx55);var _0x9fadx37=mxUtils[_0xac52[80]](mxResources[_0xac52[76]](_0xac52[135]),mxUtils[_0xac52[103]](this,function(_0x9fadx38){for(var _0x9fadx57=0;_0x9fadx57< _0x9fadx53[_0xac52[23]][_0xac52[179]][_0xac52[141]];_0x9fadx57++){var _0x9fadx40=_0xac52[126]+ _0x9fadx53[_0xac52[23]][_0xac52[179]][_0x9fadx57][_0xac52[125]];var _0x9fadx3f=_0x9fadx53[_0xac52[23]][_0xac52[179]][_0x9fadx57][_0xac52[125]];console[_0xac52[94]](_0x9fadx3f);_0x9fadx53[_0xac52[5]](_0x9fadx3f,document[_0xac52[206]](_0x9fadx40)[_0xac52[23]]);console[_0xac52[94]](document[_0xac52[206]](_0x9fadx40)[_0xac52[23]])};if(_0x9fadx53[_0xac52[23]][_0xac52[177]]== _0xac52[1]){if(_0x9fadx54[_0xac52[208]][_0xac52[207]](_0x9fadx53)){_0x9fadx53[_0xac52[205]]= []};if(document[_0xac52[206]](_0xac52[178])){var _0x9fadx55=document[_0xac52[206]](_0xac52[178])[_0xac52[205]];for(var _0x9fadx47=0;_0x9fadx47< _0x9fadx55[_0xac52[141]];_0x9fadx47++){var _0x9fadx5d=_0x9fadx55[_0x9fadx47][_0xac52[205]][1];var _0x9fadx5e=_0x9fadx55[_0x9fadx47][_0xac52[205]][0];var _0x9fadx39=mxUtils[_0xac52[209]]();var _0x9fadx5f=_0x9fadx39[_0xac52[2]](_0xac52[178]);_0x9fadx5f[_0xac52[5]](_0xac52[3],_0x9fadx55[_0x9fadx47][_0xac52[210]](_0xac52[19])[0][_0xac52[23]]);_0x9fadx5f[_0xac52[5]](_0xac52[130],_0x9fadx55[_0x9fadx47][_0xac52[210]](_0xac52[1])[0][_0xac52[23]]);var _0x9fadx60= new mxCell(_0x9fadx5f);_0x9fadx54[_0xac52[208]][_0xac52[201]](_0x9fadx53,_0x9fadx60)}}};_0x9fadx54[_0xac52[211]](_0x9fadx53);_0x9fadx8[_0xac52[79]]()}));_0x9fadx37[_0xac52[31]]= _0xac52[104];var _0x9fadx3a=mxUtils[_0xac52[80]](mxResources[_0xac52[76]](_0xac52[105]),function(){_0x9fadx8[_0xac52[79]]()});_0x9fadx3a[_0xac52[31]]= _0xac52[106];_0x9fadx2b[_0xac52[25]](_0x9fadx37);_0x9fadx2b[_0xac52[25]](_0x9fadx3a);_0x9fadx28[_0xac52[25]](_0x9fadx29);_0x9fadx28[_0xac52[25]](_0x9fadx2a);_0x9fadx28[_0xac52[25]](_0x9fadx2b);this[_0xac52[64]]= _0x9fadx28}function createDynamicInput(_0x9fadx5a,_0x9fadx5b,_0x9fadx8){var _0x9fadx58=_0x9fadx8[_0xac52[50]](_0xac52[180]);var _0x9fadx2f=_0x9fadx8[_0xac52[50]](_0xac52[212]);var _0x9fadx41=_0x9fadx8[_0xac52[50]](_0xac52[212]);var _0x9fadx62=_0x9fadx8[_0xac52[50]](_0xac52[213]);var _0x9fadx3=document[_0xac52[2]](_0xac52[1]);_0x9fadx3[_0xac52[5]](_0xac52[191],_0xac52[214]);_0x9fadx3[_0xac52[23]]= _0x9fadx5b;_0x9fadx3[_0xac52[31]]= _0xac52[134];_0x9fadx2f[_0xac52[25]](_0x9fadx3);var _0x9fadx43=document[_0xac52[2]](_0xac52[19]);var _0x9fadxd=document[_0xac52[2]](_0xac52[20]);_0x9fadxd[_0xac52[21]]= _0xac52[22];_0x9fadxd[_0xac52[23]]= _0xac52[40];_0x9fadx43[_0xac52[25]](_0x9fadxd);var _0x9fadx13=[_0xac52[21],_0xac52[215],_0xac52[83],_0xac52[4]];_0x9fadx13[_0xac52[28]](function(_0x9fadxe){_0x9fadxd= document[_0xac52[2]](_0xac52[20]);_0x9fadxd[_0xac52[21]]= _0x9fadxe;_0x9fadxd[_0xac52[23]]= _0x9fadxe;_0x9fadxd[_0xac52[29]]= (_0x9fadxe== _0x9fadx5a);_0x9fadx43[_0xac52[25]](_0x9fadxd)});_0x9fadx43[_0xac52[31]]= _0xac52[134];_0x9fadx41[_0xac52[25]](_0x9fadx43);var _0x9fadx63=mxUtils[_0xac52[80]](_0xac52[216],function(){var _0x9fadx64=_0x9fadx63[_0xac52[217]];var _0x9fadx65=_0x9fadx64[_0xac52[217]];document[_0xac52[206]](_0xac52[178])[_0xac52[67]](_0x9fadx65)});_0x9fadx63[_0xac52[31]]= _0xac52[218];_0x9fadx62[_0xac52[25]](_0x9fadx63);_0x9fadx58[_0xac52[25]](_0x9fadx2f);_0x9fadx58[_0xac52[25]](_0x9fadx41);_0x9fadx58[_0xac52[25]](_0x9fadx62);return _0x9fadx58} \ No newline at end of file +undefined \ No newline at end of file diff --git a/public/assets/plugins/jscripty/js/Editor.js b/public/assets/plugins/jscripty/js/Editor.js index 61c978b..66dc905 100644 --- a/public/assets/plugins/jscripty/js/Editor.js +++ b/public/assets/plugins/jscripty/js/Editor.js @@ -1 +1 @@ -var _0x8653=["\x49\x53\x5F\x54\x4F\x55\x43\x48","\x73\x74\x6F\x72\x61\x67\x65","\x6C\x6F\x63\x61\x6C","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x46\x69\x6C\x65","\x46\x69\x6C\x65\x52\x65\x61\x64\x65\x72","\x46\x69\x6C\x65\x4C\x69\x73\x74","\x74\x6F\x75\x63\x68","\x31","\x6F\x70\x65\x6E\x65\x72","\x63\x6F\x75\x6E\x74\x65\x72","\x63\x61\x6C\x6C","\x69\x6E\x69\x74","\x69\x6E\x69\x74\x53\x74\x65\x6E\x63\x69\x6C\x52\x65\x67\x69\x73\x74\x72\x79","\x67\x72\x61\x70\x68","\x6F\x75\x74\x6C\x69\x6E\x65","\x75\x70\x64\x61\x74\x65\x4F\x6E\x50\x61\x6E","\x75\x6E\x64\x6F\x4D\x61\x6E\x61\x67\x65\x72","\x63\x72\x65\x61\x74\x65\x55\x6E\x64\x6F\x4D\x61\x6E\x61\x67\x65\x72","\x73\x74\x61\x74\x75\x73","","\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x67\x65\x74\x4F\x72\x43\x72\x65\x61\x74\x65\x46\x69\x6C\x65\x6E\x61\x6D\x65","\x64\x72\x61\x77\x69\x6E\x67","\x67\x65\x74","\x2E\x78\x6D\x6C","\x67\x65\x74\x46\x69\x6C\x65\x6E\x61\x6D\x65","\x73\x65\x74\x53\x74\x61\x74\x75\x73","\x73\x74\x61\x74\x75\x73\x43\x68\x61\x6E\x67\x65\x64","\x66\x69\x72\x65\x45\x76\x65\x6E\x74","\x67\x65\x74\x53\x74\x61\x74\x75\x73","\x6D\x6F\x64\x69\x66\x69\x65\x64","\x67\x72\x61\x70\x68\x43\x68\x61\x6E\x67\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x61\x70\x70\x6C\x79","\x62\x69\x6E\x64","\x61\x64\x64\x4C\x69\x73\x74\x65\x6E\x65\x72","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x6F\x6E\x62\x65\x66\x6F\x72\x65\x75\x6E\x6C\x6F\x61\x64","\x61\x6C\x6C\x43\x68\x61\x6E\x67\x65\x73\x4C\x6F\x73\x74","\x72\x65\x73\x65\x74\x56\x69\x65\x77\x4F\x6E\x52\x6F\x6F\x74\x43\x68\x61\x6E\x67\x65","\x73\x63\x72\x6F\x6C\x6C\x62\x61\x72\x73","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x65\x78\x74\x65\x6E\x64","\x67\x72\x69\x64\x49\x6D\x61\x67\x65","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x2F\x67\x72\x69\x64\x2E\x67\x69\x66","\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x49\x6D\x61\x67\x65","\x2F\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x2E\x67\x69\x66","\x73\x65\x74\x47\x72\x61\x70\x68\x58\x6D\x6C","\x6F\x77\x6E\x65\x72\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x6E\x6F\x64\x65\x4E\x61\x6D\x65","\x6D\x78\x47\x72\x61\x70\x68\x4D\x6F\x64\x65\x6C","\x73\x63\x61\x6C\x65","\x76\x69\x65\x77","\x67\x72\x69\x64\x45\x6E\x61\x62\x6C\x65\x64","\x67\x72\x69\x64","\x67\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x30","\x67\x75\x69\x64\x65\x73\x45\x6E\x61\x62\x6C\x65\x64","\x67\x72\x61\x70\x68\x48\x61\x6E\x64\x6C\x65\x72","\x67\x75\x69\x64\x65\x73","\x74\x6F\x6F\x6C\x74\x69\x70\x73","\x73\x65\x74\x54\x6F\x6F\x6C\x74\x69\x70\x73","\x63\x6F\x6E\x6E\x65\x63\x74","\x73\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x66\x6F\x6C\x64\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x66\x6F\x6C\x64","\x73\x63\x72\x6F\x6C\x6C\x4C\x65\x66\x74","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x73\x63\x72\x6F\x6C\x6C\x54\x6F\x70","\x78","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65","\x64\x78","\x79","\x64\x79","\x70\x61\x67\x65\x56\x69\x73\x69\x62\x6C\x65","\x70\x61\x67\x65","\x70\x61\x67\x65\x42\x72\x65\x61\x6B\x73\x56\x69\x73\x69\x62\x6C\x65","\x70\x72\x65\x66\x65\x72\x50\x61\x67\x65\x53\x69\x7A\x65","\x70\x61\x67\x65\x53\x63\x61\x6C\x65","\x70\x61\x67\x65\x57\x69\x64\x74\x68","\x70\x61\x67\x65\x48\x65\x69\x67\x68\x74","\x70\x61\x67\x65\x46\x6F\x72\x6D\x61\x74","\x6C\x65\x6E\x67\x74\x68","\x64\x65\x63\x6F\x64\x65","\x75\x70\x64\x61\x74\x65\x47\x72\x61\x70\x68\x43\x6F\x6D\x70\x6F\x6E\x65\x6E\x74\x73","\x67\x65\x74\x47\x72\x61\x70\x68\x58\x6D\x6C","\x63\x72\x65\x61\x74\x65\x58\x6D\x6C\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x65\x6E\x63\x6F\x64\x65","\x72\x6F\x75\x6E\x64","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x69\x73\x47\x72\x69\x64\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64","\x74\x6F\x6F\x6C\x74\x69\x70\x48\x61\x6E\x64\x6C\x65\x72","\x63\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x48\x61\x6E\x64\x6C\x65\x72","\x77\x69\x64\x74\x68","\x68\x65\x69\x67\x68\x74","\x6E\x6F\x6E\x65","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x43\x6F\x6C\x6F\x72","\x73\x74\x79\x6C\x65","\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x67\x65\x53\x68\x61\x70\x65","\x66\x69\x6C\x6C","\x72\x65\x63\x6F\x6E\x66\x69\x67\x75\x72\x65","\x23\x65\x62\x65\x62\x65\x62","\x62\x6F\x72\x64\x65\x72\x53\x74\x79\x6C\x65","\x73\x6F\x6C\x69\x64","\x62\x6F\x72\x64\x65\x72\x43\x6F\x6C\x6F\x72","\x23\x65\x35\x65\x35\x65\x35","\x62\x6F\x72\x64\x65\x72\x54\x6F\x70\x57\x69\x64\x74\x68","\x31\x70\x78","\x62\x6F\x72\x64\x65\x72\x4C\x65\x66\x74\x57\x69\x64\x74\x68","\x62\x6F\x72\x64\x65\x72\x52\x69\x67\x68\x74\x57\x69\x64\x74\x68","\x30\x70\x78","\x62\x6F\x72\x64\x65\x72\x42\x6F\x74\x74\x6F\x6D\x57\x69\x64\x74\x68","\x62\x6F\x72\x64\x65\x72","\x76\x61\x6C\x69\x64\x61\x74\x65","\x6F\x76\x65\x72\x66\x6C\x6F\x77","\x68\x69\x64\x64\x65\x6E","\x61\x75\x74\x6F","\x49\x53\x5F\x49\x45","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x4D\x6F\x64\x65","\x75\x72\x6C\x28","\x29","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x6E\x6F\x64\x65","\x49\x53\x5F\x49\x45\x36","\x73\x74\x79\x6C\x65\x73\x68\x65\x65\x74","\x2F\x67\x72\x61\x70\x68\x65\x64\x69\x74\x6F\x72\x2D\x69\x65\x36\x2E\x63\x73\x73","\x6C\x69\x6E\x6B","\x6C\x6F\x61\x64\x44\x65\x66\x61\x75\x6C\x74\x42\x75\x6E\x64\x6C\x65","\x61\x64\x64","\x44\x45\x46\x41\x55\x4C\x54\x5F\x48\x4F\x54\x53\x50\x4F\x54","\x63\x72\x65\x61\x74\x65\x4D\x61\x72\x6B\x65\x72","\x69\x6E\x74\x65\x72\x73\x65\x63\x74\x73","\x69\x73\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6E\x67","\x53\x48\x41\x44\x4F\x57\x43\x4F\x4C\x4F\x52","\x23\x64\x30\x64\x30\x64\x30","\x48\x41\x4E\x44\x4C\x45\x5F\x46\x49\x4C\x4C\x43\x4F\x4C\x4F\x52","\x23\x39\x39\x63\x63\x66\x66","\x48\x41\x4E\x44\x4C\x45\x5F\x53\x54\x52\x4F\x4B\x45\x43\x4F\x4C\x4F\x52","\x23\x30\x30\x38\x38\x63\x66","\x56\x45\x52\x54\x45\x58\x5F\x53\x45\x4C\x45\x43\x54\x49\x4F\x4E\x5F\x43\x4F\x4C\x4F\x52","\x23\x30\x30\x61\x38\x66\x66","\x4F\x55\x54\x4C\x49\x4E\x45\x5F\x43\x4F\x4C\x4F\x52","\x4F\x55\x54\x4C\x49\x4E\x45\x5F\x48\x41\x4E\x44\x4C\x45\x5F\x46\x49\x4C\x4C\x43\x4F\x4C\x4F\x52","\x4F\x55\x54\x4C\x49\x4E\x45\x5F\x48\x41\x4E\x44\x4C\x45\x5F\x53\x54\x52\x4F\x4B\x45\x43\x4F\x4C\x4F\x52","\x43\x4F\x4E\x4E\x45\x43\x54\x5F\x48\x41\x4E\x44\x4C\x45\x5F\x46\x49\x4C\x4C\x43\x4F\x4C\x4F\x52","\x23\x63\x65\x65\x37\x66\x66","\x45\x44\x47\x45\x5F\x53\x45\x4C\x45\x43\x54\x49\x4F\x4E\x5F\x43\x4F\x4C\x4F\x52","\x44\x45\x46\x41\x55\x4C\x54\x5F\x56\x41\x4C\x49\x44\x5F\x43\x4F\x4C\x4F\x52","\x4C\x41\x42\x45\x4C\x5F\x48\x41\x4E\x44\x4C\x45\x5F\x46\x49\x4C\x4C\x43\x4F\x4C\x4F\x52","\x47\x55\x49\x44\x45\x5F\x43\x4F\x4C\x4F\x52","\x70\x61\x67\x65\x42\x72\x65\x61\x6B\x43\x6F\x6C\x6F\x72","\x23\x63\x30\x63\x30\x63\x30","\x64\x65\x66\x61\x75\x6C\x74\x4F\x70\x61\x63\x69\x74\x79","\x63\x72\x65\x61\x74\x65\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x67\x65\x53\x68\x61\x70\x65","\x77\x68\x69\x74\x65","\x23\x63\x61\x63\x61\x63\x61","\x67\x65\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x67\x65\x42\x6F\x75\x6E\x64\x73","\x67\x65\x74\x47\x72\x61\x70\x68\x42\x6F\x75\x6E\x64\x73","\x6D\x69\x6E","\x66\x6C\x6F\x6F\x72","\x6D\x61\x78","\x63\x65\x69\x6C","\x70\x61\x6E\x47\x72\x61\x70\x68","\x64\x69\x61\x6C\x65\x63\x74","\x44\x49\x41\x4C\x45\x43\x54\x5F\x53\x56\x47","\x75\x73\x65\x53\x63\x72\x6F\x6C\x6C\x62\x61\x72\x73\x46\x6F\x72\x50\x61\x6E\x6E\x69\x6E\x67","\x68\x61\x73\x53\x63\x72\x6F\x6C\x6C\x62\x61\x72\x73","\x6D\x61\x72\x67\x69\x6E\x4C\x65\x66\x74","\x70\x78","\x6D\x61\x72\x67\x69\x6E\x54\x6F\x70","\x76\x61\x6C\x69\x64\x61\x74\x65\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x67\x65\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x69\x6D\x61\x67\x65","\x73\x72\x63","\x64\x65\x73\x74\x72\x6F\x79","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x6E\x65","\x72\x65\x64\x72\x61\x77","\x72\x65\x64\x72\x61\x77\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x69\x73\x53\x68\x61\x64\x6F\x77","\x44\x49\x41\x4C\x45\x43\x54\x5F\x53\x54\x52\x49\x43\x54\x48\x54\x4D\x4C","\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x66\x69\x72\x73\x74\x43\x68\x69\x6C\x64","\x61\x62\x73\x6F\x6C\x75\x74\x65","\x69\x6E\x73\x65\x72\x74\x42\x65\x66\x6F\x72\x65","\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x67\x65\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x67\x65","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x2D\x31\x70\x78\x20\x2D\x31\x70\x78","\x64\x62\x6C\x63\x6C\x69\x63\x6B","\x64\x62\x6C\x43\x6C\x69\x63\x6B","\x66\x69\x72\x65\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74","\x69\x73\x48\x69\x64\x65\x4F\x6E\x48\x6F\x76\x65\x72","\x68\x69\x64\x65","\x69\x73\x4D\x6F\x75\x73\x65\x44\x6F\x77\x6E","\x69\x73\x43\x6F\x6E\x73\x75\x6D\x65\x64","\x61\x64\x64\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x62\x6F\x75\x6E\x64\x73","\x75\x70\x64\x61\x74\x65\x50\x61\x67\x65\x42\x72\x65\x61\x6B\x73","\x6D\x69\x6E\x50\x61\x67\x65\x42\x72\x65\x61\x6B\x44\x69\x73\x74","\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C\x50\x61\x67\x65\x42\x72\x65\x61\x6B\x73","\x70\x6F\x69\x6E\x74\x73","\x69\x73\x44\x61\x73\x68\x65\x64","\x70\x61\x67\x65\x42\x72\x65\x61\x6B\x44\x61\x73\x68\x65\x64","\x61\x64\x64\x50\x69\x70\x65","\x73\x70\x6C\x69\x63\x65","\x76\x65\x72\x74\x69\x63\x61\x6C\x50\x61\x67\x65\x42\x72\x65\x61\x6B\x73","\x73\x6E\x61\x70\x54\x6F\x54\x65\x72\x6D\x69\x6E\x61\x6C\x73","\x73\x68\x6F\x75\x6C\x64\x52\x65\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73\x46\x72\x6F\x6D\x50\x61\x72\x65\x6E\x74","\x69\x73\x56\x65\x72\x74\x65\x78","\x67\x65\x74\x43\x65\x6C\x6C\x47\x65\x6F\x6D\x65\x74\x72\x79","\x72\x65\x6C\x61\x74\x69\x76\x65","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64\x46\x6F\x72\x45\x76\x65\x6E\x74","\x69\x73\x41\x6C\x74\x44\x6F\x77\x6E","\x61\x64\x64\x49\x74\x65\x6D","\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E","\x63\x6F\x6E\x73\x75\x6D\x65","\x67\x65\x74\x49\x6E\x69\x74\x69\x61\x6C\x43\x65\x6C\x6C\x46\x6F\x72\x45\x76\x65\x6E\x74","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x67\x65\x74\x50\x61\x72\x65\x6E\x74","\x69\x73\x43\x65\x6C\x6C\x53\x65\x6C\x65\x63\x74\x65\x64","\x69\x73\x56\x61\x6C\x69\x64\x52\x6F\x6F\x74","\x69\x73\x44\x65\x6C\x61\x79\x65\x64\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x73\x65\x6C\x65\x63\x74\x44\x65\x6C\x61\x79\x65\x64","\x67\x65\x74\x43\x65\x6C\x6C","\x63\x65\x6C\x6C","\x67\x65\x74\x45\x76\x65\x6E\x74","\x73\x65\x6C\x65\x63\x74\x43\x65\x6C\x6C\x46\x6F\x72\x45\x76\x65\x6E\x74","\x67\x65\x74\x43\x65\x6C\x6C\x46\x6F\x72\x50\x6F\x70\x75\x70\x45\x76\x65\x6E\x74","\x65\x64\x69\x74","\x67\x65\x74\x50\x72\x6F\x70\x65\x72\x74\x79","\x75\x6E\x64\x6F\x61\x62\x6C\x65\x45\x64\x69\x74\x48\x61\x70\x70\x65\x6E\x65\x64","\x67\x65\x74\x56\x69\x65\x77","\x63\x68\x61\x6E\x67\x65\x73","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73\x46\x6F\x72\x43\x68\x61\x6E\x67\x65\x73","\x67\x65\x74\x53\x74\x61\x74\x65","\x70\x75\x73\x68","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x2F\x67\x65\x6E\x65\x72\x61\x6C\x2E\x78\x6D\x6C","\x6C\x6F\x61\x64\x53\x74\x65\x6E\x63\x69\x6C\x53\x65\x74","\x6C\x69\x62\x72\x61\x72\x69\x65\x73","\x70\x61\x63\x6B\x61\x67\x65\x73","\x67\x65\x74\x53\x74\x65\x6E\x63\x69\x6C","\x73\x74\x65\x6E\x63\x69\x6C\x73","\x67\x65\x74\x42\x61\x73\x65\x6E\x61\x6D\x65\x46\x6F\x72\x53\x74\x65\x6E\x63\x69\x6C","\x73\x75\x62\x73\x74\x72\x69\x6E\x67","\x74\x6F\x4C\x6F\x77\x65\x72\x43\x61\x73\x65","\x2E\x6A\x73","\x6C\x6F\x61\x64","\x67\x65\x74\x54\x65\x78\x74","\x2F","\x2E","\x73\x70\x6C\x69\x74","\x6D\x78\x67\x72\x61\x70\x68","\x67\x65\x74\x58\x6D\x6C","\x70\x61\x72\x73\x65\x53\x74\x65\x6E\x63\x69\x6C\x53\x65\x74","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x6E\x61\x6D\x65","\x6E\x6F\x64\x65\x54\x79\x70\x65","\x4E\x4F\x44\x45\x54\x59\x50\x45\x5F\x45\x4C\x45\x4D\x45\x4E\x54","\x5F","\x72\x65\x70\x6C\x61\x63\x65","\x61\x64\x64\x53\x74\x65\x6E\x63\x69\x6C","\x77","\x68","\x6E\x65\x78\x74\x53\x69\x62\x6C\x69\x6E\x67","\x70\x72\x6F\x64\x75\x63\x65\x72","\x63\x6F\x6E\x73\x75\x6D\x65\x72","\x64\x6F\x6E\x65","\x73\x65\x74\x43\x6F\x6E\x73\x75\x6D\x65\x72","\x65\x78\x65\x63\x75\x74\x65","\x73\x65\x74\x44\x61\x74\x61","\x64\x61\x74\x61","\x65\x72\x72\x6F\x72","\x63\x61\x6E\x63\x65\x6C","\x61\x6C\x65\x72\x74"];var useLocalStorage=(mxClient[_0x8653[0]]|| urlParams[_0x8653[1]]== _0x8653[2])&& typeof (localStorage)!= _0x8653[3];var fileSupport=window[_0x8653[4]]!= null&& window[_0x8653[5]]!= null&& window[_0x8653[6]]!= null;var touchStyle=mxClient[_0x8653[0]]|| urlParams[_0x8653[7]]== _0x8653[8];var counter=0;try{var op=window;while(op[_0x8653[9]]!= null&& !isNaN(op[_0x8653[9]][_0x8653[10]])){op= op[_0x8653[9]]};if(op!= null){op[_0x8653[10]]++;counter= op[_0x8653[10]]}}catch(e){};Editor= function(){mxEventSource[_0x8653[11]](this);this[_0x8653[12]]();this[_0x8653[13]]();this[_0x8653[14]]= new Graph();this[_0x8653[15]]= new mxOutline(this[_0x8653[14]]);this[_0x8653[15]][_0x8653[16]]= true;this[_0x8653[17]]= this[_0x8653[18]]();this[_0x8653[19]]= _0x8653[20];this[_0x8653[21]]= null;this[_0x8653[22]]= function(){return this[_0x8653[21]]|| mxResources[_0x8653[24]](_0x8653[23],[counter])+ _0x8653[25]};this[_0x8653[26]]= function(){return this[_0x8653[21]]};this[_0x8653[27]]= function(_0x9e5ex6){this[_0x8653[19]]= _0x9e5ex6;this[_0x8653[29]]( new mxEventObject(_0x8653[28]))};this[_0x8653[30]]= function(){return this[_0x8653[19]]};this[_0x8653[31]]= false;this[_0x8653[32]]= function(){this[_0x8653[31]]= true};this[_0x8653[14]][_0x8653[36]]()[_0x8653[35]](mxEvent.CHANGE,mxUtils[_0x8653[34]](this,function(){this[_0x8653[32]][_0x8653[33]](this,arguments)}));window[_0x8653[37]]= mxUtils[_0x8653[34]](this,function(){if(this[_0x8653[31]]){return mxResources[_0x8653[24]](_0x8653[38])}});this[_0x8653[14]][_0x8653[39]]= false;this[_0x8653[14]][_0x8653[40]]= true;this[_0x8653[14]][_0x8653[41]]= null};mxUtils[_0x8653[42]](Editor,mxEventSource);Editor[_0x8653[44]][_0x8653[43]]= IMAGE_PATH+ _0x8653[45];Editor[_0x8653[44]][_0x8653[46]]= IMAGE_PATH+ _0x8653[47];Editor[_0x8653[44]][_0x8653[48]]= function(_0x9e5ex7){var _0x9e5ex8= new mxCodec(_0x9e5ex7[_0x8653[49]]);if(_0x9e5ex7[_0x8653[50]]== _0x8653[51]){this[_0x8653[14]][_0x8653[53]][_0x8653[52]]= 1;this[_0x8653[14]][_0x8653[54]]= _0x9e5ex7[_0x8653[56]](_0x8653[55])!= _0x8653[57];this[_0x8653[14]][_0x8653[59]][_0x8653[58]]= _0x9e5ex7[_0x8653[56]](_0x8653[60])!= _0x8653[57];this[_0x8653[14]][_0x8653[62]](_0x9e5ex7[_0x8653[56]](_0x8653[61])!= _0x8653[57]);this[_0x8653[14]][_0x8653[64]](_0x9e5ex7[_0x8653[56]](_0x8653[63])!= _0x8653[57]);this[_0x8653[14]][_0x8653[65]]= _0x9e5ex7[_0x8653[56]](_0x8653[66])!= _0x8653[57];this[_0x8653[14]][_0x8653[40]]= _0x9e5ex7[_0x8653[56]](_0x8653[40])!= _0x8653[57];if(!this[_0x8653[14]][_0x8653[40]]){this[_0x8653[14]][_0x8653[68]][_0x8653[67]]= 0;this[_0x8653[14]][_0x8653[68]][_0x8653[69]]= 0;this[_0x8653[14]][_0x8653[53]][_0x8653[71]][_0x8653[70]]= Number(_0x9e5ex7[_0x8653[56]](_0x8653[72])|| 0);this[_0x8653[14]][_0x8653[53]][_0x8653[71]][_0x8653[73]]= Number(_0x9e5ex7[_0x8653[56]](_0x8653[74])|| 0)};this[_0x8653[14]][_0x8653[75]]= _0x9e5ex7[_0x8653[56]](_0x8653[76])== _0x8653[8];this[_0x8653[14]][_0x8653[77]]= this[_0x8653[14]][_0x8653[75]];this[_0x8653[14]][_0x8653[78]]= this[_0x8653[14]][_0x8653[77]];var _0x9e5ex9=_0x9e5ex7[_0x8653[56]](_0x8653[79]);if(_0x9e5ex9!= null){this[_0x8653[14]][_0x8653[79]]= _0x9e5ex9}else {this[_0x8653[14]][_0x8653[79]]= 1.5};var _0x9e5exa=_0x9e5ex7[_0x8653[56]](_0x8653[80]);var _0x9e5exb=_0x9e5ex7[_0x8653[56]](_0x8653[81]);if(_0x9e5exa!= null&& _0x9e5exb!= null){this[_0x8653[14]][_0x8653[82]]= new mxRectangle(0,0,parseFloat(_0x9e5exa),parseFloat(_0x9e5exb));this[_0x8653[15]][_0x8653[15]][_0x8653[82]]= this[_0x8653[14]][_0x8653[82]]};var _0x9e5exc=_0x9e5ex7[_0x8653[56]](_0x8653[41]);if(_0x9e5exc!= null&& _0x9e5exc[_0x8653[83]]> 0){this[_0x8653[14]][_0x8653[41]]= _0x9e5exc};_0x9e5ex8[_0x8653[84]](_0x9e5ex7,this[_0x8653[14]][_0x8653[36]]());this[_0x8653[85]]()}};Editor[_0x8653[44]][_0x8653[86]]= function(){var _0x9e5exd= new mxCodec(mxUtils[_0x8653[87]]());var _0x9e5ex7=_0x9e5exd[_0x8653[88]](this[_0x8653[14]][_0x8653[36]]());if(this[_0x8653[14]][_0x8653[53]][_0x8653[71]][_0x8653[70]]!= 0|| this[_0x8653[14]][_0x8653[53]][_0x8653[71]][_0x8653[73]]!= 0){_0x9e5ex7[_0x8653[90]](_0x8653[72],Math[_0x8653[89]](this[_0x8653[14]][_0x8653[53]][_0x8653[71]][_0x8653[70]]* 100)/ 100);_0x9e5ex7[_0x8653[90]](_0x8653[74],Math[_0x8653[89]](this[_0x8653[14]][_0x8653[53]][_0x8653[71]][_0x8653[73]]* 100)/ 100)};_0x9e5ex7[_0x8653[90]](_0x8653[55],(this[_0x8653[14]][_0x8653[91]]())?_0x8653[8]:_0x8653[57]);_0x9e5ex7[_0x8653[90]](_0x8653[60],(this[_0x8653[14]][_0x8653[59]][_0x8653[58]])?_0x8653[8]:_0x8653[57]);_0x9e5ex7[_0x8653[90]](_0x8653[60],(this[_0x8653[14]][_0x8653[59]][_0x8653[58]])?_0x8653[8]:_0x8653[57]);_0x9e5ex7[_0x8653[90]](_0x8653[61],(this[_0x8653[14]][_0x8653[93]][_0x8653[92]]())?_0x8653[8]:_0x8653[57]);_0x9e5ex7[_0x8653[90]](_0x8653[63],(this[_0x8653[14]][_0x8653[94]][_0x8653[92]]())?_0x8653[8]:_0x8653[57]);_0x9e5ex7[_0x8653[90]](_0x8653[66],(this[_0x8653[14]][_0x8653[65]])?_0x8653[8]:_0x8653[57]);_0x9e5ex7[_0x8653[90]](_0x8653[76],(this[_0x8653[14]][_0x8653[75]])?_0x8653[8]:_0x8653[57]);_0x9e5ex7[_0x8653[90]](_0x8653[79],this[_0x8653[14]][_0x8653[79]]);_0x9e5ex7[_0x8653[90]](_0x8653[80],this[_0x8653[14]][_0x8653[82]][_0x8653[95]]);_0x9e5ex7[_0x8653[90]](_0x8653[81],this[_0x8653[14]][_0x8653[82]][_0x8653[96]]);if(!this[_0x8653[14]][_0x8653[40]]){_0x9e5ex7[_0x8653[90]](_0x8653[40],_0x8653[57])};if(this[_0x8653[14]][_0x8653[41]]!= null){_0x9e5ex7[_0x8653[90]](_0x8653[41],this[_0x8653[14]][_0x8653[41]])};return _0x9e5ex7};Editor[_0x8653[44]][_0x8653[85]]= function(){var _0x9e5exe=this[_0x8653[14]];var _0x9e5exf=this[_0x8653[15]];if(_0x9e5exe[_0x8653[68]]!= null&& _0x9e5exf[_0x8653[15]][_0x8653[68]]!= null){if(_0x9e5exe[_0x8653[41]]!= null){if(_0x9e5exe[_0x8653[41]]== _0x8653[97]){_0x9e5exe[_0x8653[68]][_0x8653[99]][_0x8653[98]]= _0x8653[100]}else {if(_0x9e5exe[_0x8653[53]][_0x8653[101]]!= null){_0x9e5exe[_0x8653[53]][_0x8653[101]][_0x8653[102]]= _0x9e5exe[_0x8653[41]];_0x9e5exe[_0x8653[53]][_0x8653[101]][_0x8653[103]]()};_0x9e5exe[_0x8653[68]][_0x8653[99]][_0x8653[98]]= _0x9e5exe[_0x8653[41]]}}else {_0x9e5exe[_0x8653[68]][_0x8653[99]][_0x8653[98]]= _0x8653[20]};if(_0x9e5exe[_0x8653[75]]){_0x9e5exe[_0x8653[68]][_0x8653[99]][_0x8653[98]]= _0x8653[104];_0x9e5exe[_0x8653[68]][_0x8653[99]][_0x8653[105]]= _0x8653[106];_0x9e5exe[_0x8653[68]][_0x8653[99]][_0x8653[107]]= _0x8653[108];_0x9e5exe[_0x8653[68]][_0x8653[99]][_0x8653[109]]= _0x8653[110];_0x9e5exe[_0x8653[68]][_0x8653[99]][_0x8653[111]]= _0x8653[110];_0x9e5exe[_0x8653[68]][_0x8653[99]][_0x8653[112]]= _0x8653[113];_0x9e5exe[_0x8653[68]][_0x8653[99]][_0x8653[114]]= _0x8653[113]}else {_0x9e5exe[_0x8653[68]][_0x8653[99]][_0x8653[115]]= _0x8653[20]};_0x9e5exf[_0x8653[15]][_0x8653[68]][_0x8653[99]][_0x8653[98]]= _0x9e5exe[_0x8653[68]][_0x8653[99]][_0x8653[98]];if(_0x9e5exf[_0x8653[15]][_0x8653[75]]!= _0x9e5exe[_0x8653[75]]|| _0x9e5exf[_0x8653[15]][_0x8653[79]]!= _0x9e5exe[_0x8653[79]]){_0x9e5exf[_0x8653[15]][_0x8653[79]]= _0x9e5exe[_0x8653[79]];_0x9e5exf[_0x8653[15]][_0x8653[75]]= _0x9e5exe[_0x8653[75]];_0x9e5exf[_0x8653[15]][_0x8653[53]][_0x8653[116]]()};if(_0x9e5exe[_0x8653[40]]&& _0x9e5exe[_0x8653[68]][_0x8653[99]][_0x8653[117]]== _0x8653[118]&& !touchStyle){_0x9e5exe[_0x8653[68]][_0x8653[99]][_0x8653[117]]= _0x8653[119]}else {if(!_0x9e5exe[_0x8653[40]]|| touchStyle){_0x9e5exe[_0x8653[68]][_0x8653[99]][_0x8653[117]]= _0x8653[118]}};var _0x9e5ex10=(mxClient[_0x8653[120]]&& document[_0x8653[121]]>= 9)?_0x8653[122]+ this[_0x8653[46]]+ _0x8653[123]:_0x8653[97];_0x9e5exe[_0x8653[68]][_0x8653[99]][_0x8653[124]]= (!_0x9e5exe[_0x8653[75]]&& _0x9e5exe[_0x8653[91]]())?_0x8653[122]+ this[_0x8653[43]]+ _0x8653[123]:_0x9e5ex10;if(_0x9e5exe[_0x8653[53]][_0x8653[101]]!= null){_0x9e5exe[_0x8653[53]][_0x8653[101]][_0x8653[125]][_0x8653[99]][_0x8653[124]]= (this[_0x8653[14]][_0x8653[91]]())?_0x8653[122]+ this[_0x8653[43]]+ _0x8653[123]:_0x8653[97]}}};Editor[_0x8653[44]][_0x8653[12]]= function(){if(mxClient[_0x8653[126]]){mxClient[_0x8653[129]](_0x8653[127],CSS_PATH+ _0x8653[128])};mxResources[_0x8653[130]]= false;mxResources[_0x8653[131]](RESOURCE_BASE);mxConstants[_0x8653[132]]= 0.3;var _0x9e5ex11=mxConnectionHandler[_0x8653[44]][_0x8653[133]];mxConnectionHandler[_0x8653[44]][_0x8653[133]]= function(){var _0x9e5ex12=_0x9e5ex11[_0x8653[33]](this,arguments);_0x9e5ex12[_0x8653[134]]= mxUtils[_0x8653[34]](this,function(_0x9e5ex13,_0x9e5ex14){if(this[_0x8653[135]]()){return true};return mxCellMarker[_0x8653[44]][_0x8653[134]][_0x8653[33]](_0x9e5ex12,arguments)});return _0x9e5ex12};mxConstants[_0x8653[136]]= _0x8653[137];mxConstants[_0x8653[138]]= _0x8653[139];mxConstants[_0x8653[140]]= _0x8653[141];mxConstants[_0x8653[142]]= _0x8653[143];mxConstants[_0x8653[144]]= _0x8653[143];mxConstants[_0x8653[145]]= _0x8653[139];mxConstants[_0x8653[146]]= _0x8653[143];mxConstants[_0x8653[147]]= _0x8653[148];mxConstants[_0x8653[149]]= _0x8653[143];mxConstants[_0x8653[150]]= _0x8653[143];mxConstants[_0x8653[151]]= _0x8653[148];mxConstants[_0x8653[152]]= _0x8653[141];mxGraph[_0x8653[44]][_0x8653[153]]= _0x8653[154];mxGraph[_0x8653[44]][_0x8653[79]]= 1;mxRubberband[_0x8653[44]][_0x8653[155]]= 30;mxGraphView[_0x8653[44]][_0x8653[156]]= function(_0x9e5ex15){return new mxRectangleShape(_0x9e5ex15,this[_0x8653[14]][_0x8653[41]]|| _0x8653[157],_0x8653[158])};mxGraphView[_0x8653[44]][_0x8653[159]]= function(){var _0x9e5ex16=this[_0x8653[160]]();var _0x9e5ex17=(_0x9e5ex16[_0x8653[95]]> 0)?_0x9e5ex16[_0x8653[70]]/ this[_0x8653[52]]- this[_0x8653[71]][_0x8653[70]]:0;var _0x9e5ex18=(_0x9e5ex16[_0x8653[96]]> 0)?_0x9e5ex16[_0x8653[73]]/ this[_0x8653[52]]- this[_0x8653[71]][_0x8653[73]]:0;var _0x9e5ex19=_0x9e5ex16[_0x8653[95]]/ this[_0x8653[52]];var _0x9e5ex1a=_0x9e5ex16[_0x8653[96]]/ this[_0x8653[52]];var _0x9e5ex1b=this[_0x8653[14]][_0x8653[82]];var _0x9e5ex9=this[_0x8653[14]][_0x8653[79]];var _0x9e5exa=_0x9e5ex1b[_0x8653[95]]* _0x9e5ex9;var _0x9e5exb=_0x9e5ex1b[_0x8653[96]]* _0x9e5ex9;var _0x9e5ex1c=Math[_0x8653[162]](Math[_0x8653[161]](0,_0x9e5ex17)/ _0x9e5exa);var _0x9e5ex1d=Math[_0x8653[162]](Math[_0x8653[161]](0,_0x9e5ex18)/ _0x9e5exb);var _0x9e5ex1e=Math[_0x8653[164]](Math[_0x8653[163]](1,_0x9e5ex17+ _0x9e5ex19)/ _0x9e5exa);var _0x9e5ex1f=Math[_0x8653[164]](Math[_0x8653[163]](1,_0x9e5ex18+ _0x9e5ex1a)/ _0x9e5exb);var _0x9e5ex20=_0x9e5ex1e- _0x9e5ex1c;var _0x9e5ex21=_0x9e5ex1f- _0x9e5ex1d;var _0x9e5ex15= new mxRectangle(this[_0x8653[52]]* (this[_0x8653[71]][_0x8653[70]]+ _0x9e5ex1c* _0x9e5exa),this[_0x8653[52]]* (this[_0x8653[71]][_0x8653[73]]+ _0x9e5ex1d* _0x9e5exb),this[_0x8653[52]]* _0x9e5ex20* _0x9e5exa,this[_0x8653[52]]* _0x9e5ex21* _0x9e5exb);return _0x9e5ex15};var _0x9e5ex22=mxGraph[_0x8653[44]][_0x8653[165]];mxGraph[_0x8653[44]][_0x8653[165]]= function(_0x9e5ex23,_0x9e5ex24){_0x9e5ex22[_0x8653[33]](this,arguments);if((this[_0x8653[166]]!= mxConstants[_0x8653[167]]&& this[_0x8653[53]][_0x8653[101]]!= null)&& (!this[_0x8653[168]]|| !mxUtils[_0x8653[169]](this[_0x8653[68]]))){this[_0x8653[53]][_0x8653[101]][_0x8653[125]][_0x8653[99]][_0x8653[170]]= _0x9e5ex23+ _0x8653[171];this[_0x8653[53]][_0x8653[101]][_0x8653[125]][_0x8653[99]][_0x8653[172]]= _0x9e5ex24+ _0x8653[171]}};var _0x9e5ex25=this;mxGraphView[_0x8653[44]][_0x8653[173]]= function(){var _0x9e5exc=this[_0x8653[14]][_0x8653[174]]();if(_0x9e5exc!= null){if(this[_0x8653[124]]== null|| this[_0x8653[124]][_0x8653[175]]!= _0x9e5exc[_0x8653[176]]){if(this[_0x8653[124]]!= null){this[_0x8653[124]][_0x8653[177]]()};var _0x9e5ex15= new mxRectangle(0,0,1,1);this[_0x8653[124]]= new mxImageShape(_0x9e5ex15,_0x9e5exc[_0x8653[176]]);this[_0x8653[124]][_0x8653[166]]= this[_0x8653[14]][_0x8653[166]];this[_0x8653[124]][_0x8653[12]](this[_0x8653[178]]);this[_0x8653[124]][_0x8653[179]]()};this[_0x8653[180]](this[_0x8653[124]],_0x9e5exc)}else {if(this[_0x8653[124]]!= null){this[_0x8653[124]][_0x8653[177]]();this[_0x8653[124]]= null}};if(this[_0x8653[14]][_0x8653[75]]){var _0x9e5ex15=this[_0x8653[159]]();if(this[_0x8653[101]]== null){this[_0x8653[101]]= this[_0x8653[156]](_0x9e5ex15);this[_0x8653[101]][_0x8653[52]]= 1;this[_0x8653[101]][_0x8653[181]]= true;this[_0x8653[101]][_0x8653[166]]= mxConstants[_0x8653[182]];this[_0x8653[101]][_0x8653[12]](this[_0x8653[14]][_0x8653[68]]);this[_0x8653[14]][_0x8653[68]][_0x8653[184]][_0x8653[99]][_0x8653[183]]= _0x8653[185];this[_0x8653[14]][_0x8653[68]][_0x8653[186]](this[_0x8653[101]][_0x8653[125]],this[_0x8653[14]][_0x8653[68]][_0x8653[184]]);this[_0x8653[101]][_0x8653[179]]();this[_0x8653[101]][_0x8653[125]][_0x8653[187]]= _0x8653[188];this[_0x8653[101]][_0x8653[125]][_0x8653[99]][_0x8653[189]]= _0x8653[190];mxEvent[_0x8653[35]](this[_0x8653[101]][_0x8653[125]],_0x8653[191],mxUtils[_0x8653[34]](this,function(_0x9e5ex14){this[_0x8653[14]][_0x8653[192]](_0x9e5ex14)}));mxEvent[_0x8653[198]](this[_0x8653[101]][_0x8653[125]],mxUtils[_0x8653[34]](this,function(_0x9e5ex14){this[_0x8653[14]][_0x8653[193]](mxEvent.MOUSE_DOWN, new mxMouseEvent(_0x9e5ex14))}),mxUtils[_0x8653[34]](this,function(_0x9e5ex14){if(this[_0x8653[14]][_0x8653[93]]!= null&& this[_0x8653[14]][_0x8653[93]][_0x8653[194]]()){this[_0x8653[14]][_0x8653[93]][_0x8653[195]]()};if(this[_0x8653[14]][_0x8653[196]]&& !mxEvent[_0x8653[197]](_0x9e5ex14)){this[_0x8653[14]][_0x8653[193]](mxEvent.MOUSE_MOVE, new mxMouseEvent(_0x9e5ex14))}}),mxUtils[_0x8653[34]](this,function(_0x9e5ex14){this[_0x8653[14]][_0x8653[193]](mxEvent.MOUSE_UP, new mxMouseEvent(_0x9e5ex14))}))}else {this[_0x8653[101]][_0x8653[52]]= 1;this[_0x8653[101]][_0x8653[199]]= _0x9e5ex15;this[_0x8653[101]][_0x8653[179]]()};this[_0x8653[101]][_0x8653[125]][_0x8653[99]][_0x8653[124]]= (this[_0x8653[14]][_0x8653[91]]())?_0x8653[122]+ _0x9e5ex25[_0x8653[43]]+ _0x8653[123]:_0x8653[97]}else {if(this[_0x8653[101]]!= null){this[_0x8653[101]][_0x8653[177]]();this[_0x8653[101]]= null}}};mxGraph[_0x8653[44]][_0x8653[200]]= function(_0x9e5ex26,_0x9e5ex27,_0x9e5ex28){var _0x9e5ex29=this[_0x8653[53]][_0x8653[52]];var _0x9e5ex2a=this[_0x8653[53]][_0x8653[71]];var _0x9e5ex1b=this[_0x8653[82]];var _0x9e5ex9=_0x9e5ex29* this[_0x8653[79]];var _0x9e5ex2b=this[_0x8653[53]][_0x8653[159]]();_0x9e5ex27= _0x9e5ex2b[_0x8653[95]];_0x9e5ex28= _0x9e5ex2b[_0x8653[96]];var _0x9e5ex15= new mxRectangle(_0x9e5ex29* _0x9e5ex2a[_0x8653[70]],_0x9e5ex29* _0x9e5ex2a[_0x8653[73]],_0x9e5ex1b[_0x8653[95]]* _0x9e5ex9,_0x9e5ex1b[_0x8653[96]]* _0x9e5ex9);_0x9e5ex26= _0x9e5ex26&& Math[_0x8653[161]](_0x9e5ex15[_0x8653[95]],_0x9e5ex15[_0x8653[96]])> this[_0x8653[201]];var _0x9e5ex2c=(_0x9e5ex26)?Math[_0x8653[164]](_0x9e5ex27/ _0x9e5ex15[_0x8653[95]])- 1:0;var _0x9e5ex2d=(_0x9e5ex26)?Math[_0x8653[164]](_0x9e5ex28/ _0x9e5ex15[_0x8653[96]])- 1:0;var _0x9e5ex2e=_0x9e5ex2b[_0x8653[70]]+ _0x9e5ex27;var _0x9e5ex2f=_0x9e5ex2b[_0x8653[73]]+ _0x9e5ex28;if(this[_0x8653[202]]== null&& _0x9e5ex2c> 0){this[_0x8653[202]]= []};if(this[_0x8653[202]]!= null){for(var _0x9e5ex30=0;_0x9e5ex30<= _0x9e5ex2c;_0x9e5ex30++){var _0x9e5ex31=[ new mxPoint(_0x9e5ex2b[_0x8653[70]]+ (_0x9e5ex30+ 1)* _0x9e5ex15[_0x8653[95]],_0x9e5ex2b[_0x8653[73]]), new mxPoint(_0x9e5ex2b[_0x8653[70]]+ (_0x9e5ex30+ 1)* _0x9e5ex15[_0x8653[95]],_0x9e5ex2f)];if(this[_0x8653[202]][_0x9e5ex30]!= null){this[_0x8653[202]][_0x9e5ex30][_0x8653[52]]= 1;this[_0x8653[202]][_0x9e5ex30][_0x8653[203]]= _0x9e5ex31;this[_0x8653[202]][_0x9e5ex30][_0x8653[179]]()}else {var _0x9e5ex32= new mxPolyline(_0x9e5ex31,this[_0x8653[153]],this[_0x8653[52]]);_0x9e5ex32[_0x8653[166]]= this[_0x8653[166]];_0x9e5ex32[_0x8653[204]]= this[_0x8653[205]];_0x9e5ex32[_0x8653[206]]= false;_0x9e5ex32[_0x8653[52]]= _0x9e5ex29;_0x9e5ex32[_0x8653[12]](this[_0x8653[53]][_0x8653[178]]);_0x9e5ex32[_0x8653[179]]();this[_0x8653[202]][_0x9e5ex30]= _0x9e5ex32}};for(var _0x9e5ex30=_0x9e5ex2c;_0x9e5ex30< this[_0x8653[202]][_0x8653[83]];_0x9e5ex30++){this[_0x8653[202]][_0x9e5ex30][_0x8653[177]]()};this[_0x8653[202]][_0x8653[207]](_0x9e5ex2c,this[_0x8653[202]][_0x8653[83]]- _0x9e5ex2c)};if(this[_0x8653[208]]== null&& _0x9e5ex2d> 0){this[_0x8653[208]]= []};if(this[_0x8653[208]]!= null){for(var _0x9e5ex30=0;_0x9e5ex30<= _0x9e5ex2d;_0x9e5ex30++){var _0x9e5ex31=[ new mxPoint(_0x9e5ex2b[_0x8653[70]],_0x9e5ex2b[_0x8653[73]]+ (_0x9e5ex30+ 1)* _0x9e5ex15[_0x8653[96]]), new mxPoint(_0x9e5ex2e,_0x9e5ex2b[_0x8653[73]]+ (_0x9e5ex30+ 1)* _0x9e5ex15[_0x8653[96]])];if(this[_0x8653[208]][_0x9e5ex30]!= null){this[_0x8653[208]][_0x9e5ex30][_0x8653[52]]= 1;this[_0x8653[208]][_0x9e5ex30][_0x8653[203]]= _0x9e5ex31;this[_0x8653[208]][_0x9e5ex30][_0x8653[179]]()}else {var _0x9e5ex32= new mxPolyline(_0x9e5ex31,this[_0x8653[153]],_0x9e5ex29);_0x9e5ex32[_0x8653[166]]= this[_0x8653[166]];_0x9e5ex32[_0x8653[204]]= this[_0x8653[205]];_0x9e5ex32[_0x8653[206]]= false;_0x9e5ex32[_0x8653[52]]= _0x9e5ex29;_0x9e5ex32[_0x8653[12]](this[_0x8653[53]][_0x8653[178]]);_0x9e5ex32[_0x8653[179]]();this[_0x8653[208]][_0x9e5ex30]= _0x9e5ex32}};for(var _0x9e5ex30=_0x9e5ex2d;_0x9e5ex30< this[_0x8653[208]][_0x8653[83]];_0x9e5ex30++){this[_0x8653[208]][_0x9e5ex30][_0x8653[177]]()};this[_0x8653[208]][_0x8653[207]](_0x9e5ex2d,this[_0x8653[208]][_0x8653[83]]- _0x9e5ex2d)}};mxEdgeHandler[_0x8653[44]][_0x8653[209]]= true;mxGraphHandler[_0x8653[44]][_0x8653[58]]= true;var _0x9e5ex33=mxGraphHandler[_0x8653[44]][_0x8653[210]];mxGraphHandler[_0x8653[44]][_0x8653[210]]= function(_0x9e5ex34,_0x9e5ex35,_0x9e5ex14){for(var _0x9e5ex30=0;_0x9e5ex30< _0x9e5ex35[_0x8653[83]];_0x9e5ex30++){if(this[_0x8653[14]][_0x8653[36]]()[_0x8653[211]](_0x9e5ex35[_0x9e5ex30])){var _0x9e5ex36=this[_0x8653[14]][_0x8653[212]](_0x9e5ex35[_0x9e5ex30]);if(_0x9e5ex36!= null&& _0x9e5ex36[_0x8653[213]]){return false}}};return _0x9e5ex33[_0x8653[33]](this,arguments)};mxGuide[_0x8653[44]][_0x8653[214]]= function(_0x9e5ex14){return !mxEvent[_0x8653[215]](_0x9e5ex14)};mxPopupMenuAddItem= mxPopupMenu[_0x8653[44]][_0x8653[216]];mxPopupMenu[_0x8653[44]][_0x8653[216]]= function(_0x9e5ex37,_0x9e5ex38,_0x9e5ex39,_0x9e5ex34,_0x9e5ex3a,_0x9e5ex3b){var _0x9e5ex3c=mxPopupMenuAddItem[_0x8653[33]](this,arguments);if(_0x9e5ex3b!= null&& !_0x9e5ex3b){mxEvent[_0x8653[35]](_0x9e5ex3c,_0x8653[217],function(_0x9e5ex14){mxEvent[_0x8653[218]](_0x9e5ex14)})};return _0x9e5ex3c};var _0x9e5ex3d=mxGraphHandler[_0x8653[44]][_0x8653[219]];mxGraphHandler[_0x8653[44]][_0x8653[219]]= function(_0x9e5ex3e){var _0x9e5ex3f=this[_0x8653[14]][_0x8653[36]]();var _0x9e5ex40=_0x9e5ex3f[_0x8653[221]](this[_0x8653[14]][_0x8653[220]]());var _0x9e5ex41=_0x9e5ex3d[_0x8653[33]](this,arguments);var _0x9e5ex34=_0x9e5ex3f[_0x8653[221]](_0x9e5ex41);if(_0x9e5ex40== null|| (_0x9e5ex40!= _0x9e5ex41&& _0x9e5ex40!= _0x9e5ex34)){while(!this[_0x8653[14]][_0x8653[222]](_0x9e5ex41)&& !this[_0x8653[14]][_0x8653[222]](_0x9e5ex34) && _0x9e5ex3f[_0x8653[211]](_0x9e5ex34) && !this[_0x8653[14]][_0x8653[223]](_0x9e5ex34)){_0x9e5ex41= _0x9e5ex34;_0x9e5ex34= this[_0x8653[14]][_0x8653[36]]()[_0x8653[221]](_0x9e5ex41)}};return _0x9e5ex41};var _0x9e5ex42=mxGraphHandler[_0x8653[44]][_0x8653[224]];mxGraphHandler[_0x8653[44]][_0x8653[224]]= function(_0x9e5ex41){var _0x9e5ex3c=_0x9e5ex42[_0x8653[33]](this,arguments);var _0x9e5ex3f=this[_0x8653[14]][_0x8653[36]]();var _0x9e5ex40=_0x9e5ex3f[_0x8653[221]](this[_0x8653[14]][_0x8653[220]]());var _0x9e5ex34=_0x9e5ex3f[_0x8653[221]](_0x9e5ex41);if(_0x9e5ex40== null|| (_0x9e5ex40!= _0x9e5ex41&& _0x9e5ex40!= _0x9e5ex34)){if(!this[_0x8653[14]][_0x8653[222]](_0x9e5ex41)&& _0x9e5ex3f[_0x8653[211]](_0x9e5ex34) && !this[_0x8653[14]][_0x8653[223]](_0x9e5ex34)){_0x9e5ex3c= true}};return _0x9e5ex3c};mxGraphHandler[_0x8653[44]][_0x8653[225]]= function(_0x9e5ex3e){var _0x9e5ex41=_0x9e5ex3e[_0x8653[226]]();if(_0x9e5ex41== null){_0x9e5ex41= this[_0x8653[227]]};var _0x9e5ex3f=this[_0x8653[14]][_0x8653[36]]();var _0x9e5ex34=_0x9e5ex3f[_0x8653[221]](_0x9e5ex41);while(this[_0x8653[14]][_0x8653[222]](_0x9e5ex41)&& _0x9e5ex3f[_0x8653[211]](_0x9e5ex34)&& !this[_0x8653[14]][_0x8653[223]](_0x9e5ex34)){_0x9e5ex41= _0x9e5ex34;_0x9e5ex34= _0x9e5ex3f[_0x8653[221]](_0x9e5ex41)};this[_0x8653[14]][_0x8653[229]](_0x9e5ex41,_0x9e5ex3e[_0x8653[228]]())};mxPanningHandler[_0x8653[44]][_0x8653[230]]= function(_0x9e5ex3e){var _0x9e5ex41=_0x9e5ex3e[_0x8653[226]]();var _0x9e5ex3f=this[_0x8653[14]][_0x8653[36]]();var _0x9e5ex34=_0x9e5ex3f[_0x8653[221]](_0x9e5ex41);while(_0x9e5ex3f[_0x8653[211]](_0x9e5ex34)&& !this[_0x8653[14]][_0x8653[223]](_0x9e5ex34)){if(this[_0x8653[14]][_0x8653[222]](_0x9e5ex34)){_0x9e5ex41= _0x9e5ex34};_0x9e5ex34= _0x9e5ex3f[_0x8653[221]](_0x9e5ex34)};return _0x9e5ex41}};Editor[_0x8653[44]][_0x8653[18]]= function(){var _0x9e5exe=this[_0x8653[14]];var _0x9e5ex43= new mxUndoManager();var _0x9e5ex44=function(_0x9e5ex45,_0x9e5ex14){_0x9e5ex43[_0x8653[233]](_0x9e5ex14[_0x8653[232]](_0x8653[231]))};_0x9e5exe[_0x8653[36]]()[_0x8653[35]](mxEvent.UNDO,_0x9e5ex44);_0x9e5exe[_0x8653[234]]()[_0x8653[35]](mxEvent.UNDO,_0x9e5ex44);var _0x9e5ex46=function(_0x9e5ex45,_0x9e5ex14){var _0x9e5ex47=_0x9e5exe[_0x8653[236]](_0x9e5ex14[_0x8653[232]](_0x8653[231])[_0x8653[235]]);var _0x9e5ex35=[];for(var _0x9e5ex30=1;_0x9e5ex30< _0x9e5ex47[_0x8653[83]];_0x9e5ex30++){if(_0x9e5exe[_0x8653[53]][_0x8653[237]](_0x9e5ex47[_0x9e5ex30])!= null){_0x9e5ex35[_0x8653[238]](_0x9e5ex47[_0x9e5ex30])}};_0x9e5exe[_0x8653[239]](_0x9e5ex35)};_0x9e5ex43[_0x8653[35]](mxEvent.UNDO,_0x9e5ex46);_0x9e5ex43[_0x8653[35]](mxEvent.REDO,_0x9e5ex46);return _0x9e5ex43};Editor[_0x8653[44]][_0x8653[13]]= function(){mxStencilRegistry[_0x8653[241]](STENCIL_PATH+ _0x8653[240])};(function(){mxStencilRegistry[_0x8653[242]]= {};mxStencilRegistry[_0x8653[243]]= [];mxStencilRegistry[_0x8653[244]]= function(_0x9e5ex48){var _0x9e5ex3c=mxStencilRegistry[_0x8653[245]][_0x9e5ex48];if(_0x9e5ex3c== null){var _0x9e5ex49=mxStencilRegistry[_0x8653[246]](_0x9e5ex48);if(_0x9e5ex49!= null){var _0x9e5ex4a=mxStencilRegistry[_0x8653[242]][_0x9e5ex49];if(_0x9e5ex4a!= null){if(mxStencilRegistry[_0x8653[243]][_0x9e5ex49]== null){mxStencilRegistry[_0x8653[243]][_0x9e5ex49]= 1;for(var _0x9e5ex30=0;_0x9e5ex30< _0x9e5ex4a[_0x8653[83]];_0x9e5ex30++){var _0x9e5ex4b=_0x9e5ex4a[_0x9e5ex30];if(_0x9e5ex4b[_0x8653[248]]()[_0x8653[247]](_0x9e5ex4b[_0x8653[83]]- 4,_0x9e5ex4b[_0x8653[83]])== _0x8653[25]){mxStencilRegistry[_0x8653[241]](_0x9e5ex4b,null)}else {if(_0x9e5ex4b[_0x8653[248]]()[_0x8653[247]](_0x9e5ex4b[_0x8653[83]]- 3,_0x9e5ex4b[_0x8653[83]])== _0x8653[249]){var _0x9e5ex4c=mxUtils[_0x8653[250]](_0x9e5ex4b);if(_0x9e5ex4c!= null){eval[_0x8653[11]](window,_0x9e5ex4c[_0x8653[251]]())}}else {}}}}}else {mxStencilRegistry[_0x8653[241]](STENCIL_PATH+ _0x8653[252]+ _0x9e5ex49+ _0x8653[25],null)};_0x9e5ex3c= mxStencilRegistry[_0x8653[245]][_0x9e5ex48]}};return _0x9e5ex3c};mxStencilRegistry[_0x8653[246]]= function(_0x9e5ex48){var _0x9e5ex4d=_0x9e5ex48[_0x8653[254]](_0x8653[253]);var _0x9e5ex4e=null;if(_0x9e5ex4d[_0x8653[83]]> 0&& _0x9e5ex4d[0]== _0x8653[255]){_0x9e5ex4e= _0x9e5ex4d[1];for(var _0x9e5ex30=2;_0x9e5ex30< _0x9e5ex4d[_0x8653[83]]- 1;_0x9e5ex30++){_0x9e5ex4e+= _0x8653[252]+ _0x9e5ex4d[_0x9e5ex30]}};return _0x9e5ex4e};mxStencilRegistry[_0x8653[241]]= function(_0x9e5ex4f,_0x9e5ex50,_0x9e5ex51){_0x9e5ex51= (_0x9e5ex51!= null)?_0x9e5ex51:false;var _0x9e5ex52=mxStencilRegistry[_0x8653[243]][_0x9e5ex4f];if(_0x9e5ex51|| _0x9e5ex52== null){var _0x9e5ex53=false;if(_0x9e5ex52== null){var _0x9e5ex4c=mxUtils[_0x8653[250]](_0x9e5ex4f);_0x9e5ex52= _0x9e5ex4c[_0x8653[256]]();mxStencilRegistry[_0x8653[243]][_0x9e5ex4f]= _0x9e5ex52;_0x9e5ex53= true};mxStencilRegistry[_0x8653[257]](_0x9e5ex52,_0x9e5ex50,_0x9e5ex53)}};mxStencilRegistry[_0x8653[257]]= function(_0x9e5ex54,_0x9e5ex50,_0x9e5ex53){_0x9e5ex53= (_0x9e5ex53!= null)?_0x9e5ex53:true;var _0x9e5ex55=_0x9e5ex54[_0x8653[258]];var _0x9e5ex56=_0x9e5ex55[_0x8653[184]];var _0x9e5ex57=_0x8653[20];var _0x9e5ex48=_0x9e5ex55[_0x8653[56]](_0x8653[259]);if(_0x9e5ex48!= null){_0x9e5ex57= _0x9e5ex48+ _0x8653[253]};while(_0x9e5ex56!= null){if(_0x9e5ex56[_0x8653[260]]== mxConstants[_0x8653[261]]){_0x9e5ex48= _0x9e5ex56[_0x8653[56]](_0x8653[259]);if(_0x9e5ex48!= null){_0x9e5ex57= _0x9e5ex57[_0x8653[248]]();var _0x9e5ex58=_0x9e5ex48[_0x8653[263]](/ /g,_0x8653[262]);if(_0x9e5ex53){mxStencilRegistry[_0x8653[264]](_0x9e5ex57+ _0x9e5ex58[_0x8653[248]](), new mxStencil(_0x9e5ex56))};if(_0x9e5ex50!= null){var _0x9e5ex19=_0x9e5ex56[_0x8653[56]](_0x8653[265]);var _0x9e5ex1a=_0x9e5ex56[_0x8653[56]](_0x8653[266]);_0x9e5ex19= (_0x9e5ex19== null)?80:parseInt(_0x9e5ex19,10);_0x9e5ex1a= (_0x9e5ex1a== null)?80:parseInt(_0x9e5ex1a,10);_0x9e5ex50(_0x9e5ex57,_0x9e5ex58,_0x9e5ex48,_0x9e5ex19,_0x9e5ex1a)}}};_0x9e5ex56= _0x9e5ex56[_0x8653[267]]}}})();OpenFile= function(_0x9e5ex59){this[_0x8653[268]]= null;this[_0x8653[269]]= null;this[_0x8653[270]]= _0x9e5ex59};OpenFile[_0x8653[44]][_0x8653[271]]= function(_0x9e5ex6){this[_0x8653[269]]= _0x9e5ex6;this[_0x8653[272]]()};OpenFile[_0x8653[44]][_0x8653[273]]= function(_0x9e5ex6,_0x9e5ex5a){this[_0x8653[274]]= _0x9e5ex6;this[_0x8653[21]]= _0x9e5ex5a;this[_0x8653[272]]()};OpenFile[_0x8653[44]][_0x8653[275]]= function(_0x9e5ex5b){this[_0x8653[276]]();mxUtils[_0x8653[277]](_0x9e5ex5b)};OpenFile[_0x8653[44]][_0x8653[272]]= function(){if(this[_0x8653[269]]!= null&& this[_0x8653[274]]!= null){this[_0x8653[269]](this[_0x8653[274]],this[_0x8653[21]]);this[_0x8653[276]]()}};OpenFile[_0x8653[44]][_0x8653[276]]= function(){if(this[_0x8653[270]]!= null){this[_0x8653[270]]()}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/public/assets/plugins/jscripty/js/EditorUi.js b/public/assets/plugins/jscripty/js/EditorUi.js index 7a38786..66dc905 100644 --- a/public/assets/plugins/jscripty/js/EditorUi.js +++ b/public/assets/plugins/jscripty/js/EditorUi.js @@ -1 +1 @@ -var _0xd38c=["\x65\x64\x69\x74\x6F\x72","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x45\x64\x69\x74\x6F\x72","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64","\x67\x72\x61\x70\x68","\x6F\x76\x65\x72\x66\x6C\x6F\x77","\x73\x74\x79\x6C\x65","\x68\x69\x64\x64\x65\x6E","\x73\x72\x63","\x73\x75\x62\x6D\x65\x6E\x75\x49\x6D\x61\x67\x65","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x63\x6F\x6E\x6E\x65\x63\x74\x49\x6D\x61\x67\x65","\x61\x63\x74\x69\x6F\x6E\x73","\x6D\x65\x6E\x75\x73","\x63\x72\x65\x61\x74\x65\x44\x69\x76\x73","\x72\x65\x66\x72\x65\x73\x68","\x63\x72\x65\x61\x74\x65\x55\x69","\x65\x76\x65\x6E\x74","\x69\x73\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x41\x6C\x6C\x6F\x77\x65\x64","\x69\x73\x45\x64\x69\x74\x69\x6E\x67","\x62\x69\x6E\x64","\x62\x6F\x64\x79","\x6F\x6E\x73\x65\x6C\x65\x63\x74\x73\x74\x61\x72\x74","\x6D\x65\x6E\x75\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x6F\x6E\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E","\x74\x6F\x6F\x6C\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x64\x69\x61\x67\x72\x61\x6D\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x73\x69\x64\x65\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x66\x6F\x6F\x74\x65\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x49\x53\x5F\x49\x45","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x4D\x6F\x64\x65","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x63\x6F\x6E\x74\x65\x78\x74\x6D\x65\x6E\x75","\x61\x64\x64\x4C\x69\x73\x74\x65\x6E\x65\x72","\x6F\x6E\x63\x6F\x6E\x74\x65\x78\x74\x6D\x65\x6E\x75","\x69\x6E\x69\x74","\x74\x61\x62\x69\x6E\x64\x65\x78","\x30","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x63\x75\x72\x73\x6F\x72","\x64\x65\x66\x61\x75\x6C\x74","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x75\x72\x6C\x28","\x67\x72\x69\x64\x49\x6D\x61\x67\x65","\x29","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x2D\x31\x70\x78\x20\x2D\x31\x70\x78","\x66\x6F\x63\x75\x73","\x66\x69\x72\x65\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74","\x4D\x4F\x55\x53\x45\x5F\x44\x4F\x57\x4E","\x61\x70\x70\x6C\x79","\x6D\x75\x6C\x74\x69\x70\x6C\x69\x63\x69\x74\x69\x65\x73","\x73\x74\x61\x72\x74","\x65\x6E\x64","\x69\x6E\x70\x75\x74","\x71\x75\x65\x73\x74\x69\x6F\x6E","\x65\x6D\x61\x69\x6C","\x6E","\x63\x72\x65\x61\x74\x65\x4D\x75\x6C\x74\x69\x70\x6C\x69\x63\x69\x74\x69\x65\x73","\x64\x62\x6C\x43\x6C\x69\x63\x6B","\x63\x65\x6C\x6C","\x66\x69\x72\x65\x45\x76\x65\x6E\x74","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x43\x6F\x6E\x73\x75\x6D\x65\x64","\x69\x73\x45\x64\x67\x65","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x74\x61\x67\x4E\x61\x6D\x65","\x76\x61\x6C\x75\x65","\x73\x6F\x75\x72\x63\x65","\x69\x6E\x64\x65\x78\x4F\x66","\x73\x74\x61\x72\x74\x45\x64\x69\x74\x69\x6E\x67\x41\x74\x43\x65\x6C\x6C","\x69\x73\x56\x65\x72\x74\x65\x78","\x6C\x6F\x67","\x73\x68\x6F\x77\x44\x69\x61\x6C\x6F\x67","\x63\x6F\x6E\x73\x75\x6D\x65","\x61\x75\x74\x6F\x45\x78\x70\x61\x6E\x64","\x70\x61\x6E\x6E\x69\x6E\x67\x48\x61\x6E\x64\x6C\x65\x72","\x66\x61\x63\x74\x6F\x72\x79\x4D\x65\x74\x68\x6F\x64","\x63\x72\x65\x61\x74\x65\x50\x6F\x70\x75\x70\x4D\x65\x6E\x75","\x6F\x75\x74\x6C\x69\x6E\x65\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x6F\x75\x74\x6C\x69\x6E\x65","\x68\x69\x64\x65\x4D\x65\x6E\x75","\x61\x64\x64\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x49\x53\x5F\x54\x4F\x55\x43\x48","\x67\x65\x73\x74\x75\x72\x65\x63\x68\x61\x6E\x67\x65","\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D","\x73\x63\x61\x6C\x65\x28","\x73\x63\x61\x6C\x65","\x67\x65\x74\x44\x72\x61\x77\x50\x61\x6E\x65","\x76\x69\x65\x77","\x76\x69\x73\x69\x62\x69\x6C\x69\x74\x79","\x67\x65\x74\x4F\x76\x65\x72\x6C\x61\x79\x50\x61\x6E\x65","\x67\x65\x73\x74\x75\x72\x65\x65\x6E\x64","\x72\x65\x6D\x6F\x76\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x7A\x6F\x6F\x6D\x54\x6F\x43\x65\x6E\x74\x65\x72","\x7A\x6F\x6F\x6D","\x76\x69\x73\x69\x62\x6C\x65","\x63\x72\x65\x61\x74\x65\x4B\x65\x79\x48\x61\x6E\x64\x6C\x65\x72","\x67\x65\x74\x4B\x65\x79\x48\x61\x6E\x64\x6C\x65\x72","\x72\x65\x73\x69\x7A\x65","\x73\x69\x7A\x65\x44\x69\x64\x43\x68\x61\x6E\x67\x65","\x75\x70\x64\x61\x74\x65","\x6F\x70\x65\x6E","\x73\x70\x6C\x69\x74\x53\x69\x7A\x65","\x6D\x65\x6E\x75\x62\x61\x72\x48\x65\x69\x67\x68\x74","\x74\x6F\x6F\x6C\x62\x61\x72\x48\x65\x69\x67\x68\x74","\x66\x6F\x6F\x74\x65\x72\x48\x65\x69\x67\x68\x74","\x68\x73\x70\x6C\x69\x74\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x76\x73\x70\x6C\x69\x74\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x61\x64\x64\x55\x6E\x64\x6F\x4C\x69\x73\x74\x65\x6E\x65\x72","\x61\x64\x64\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x4C\x69\x73\x74\x65\x6E\x65\x72","\x70\x61\x73\x74\x65","\x67\x65\x74","\x69\x73\x45\x6D\x70\x74\x79","\x73\x65\x74\x45\x6E\x61\x62\x6C\x65\x64","\x63\x75\x74","\x63\x6F\x70\x79","\x6F\x70\x65\x6E\x65\x72","\x6F\x70\x65\x6E\x46\x69\x6C\x65","\x70\x61\x72\x73\x65\x58\x6D\x6C","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x73\x65\x74\x47\x72\x61\x70\x68\x58\x6D\x6C","\x6D\x6F\x64\x69\x66\x69\x65\x64","\x63\x6C\x65\x61\x72","\x75\x6E\x64\x6F\x4D\x61\x6E\x61\x67\x65\x72","\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x69\x6E\x76\x61\x6C\x69\x64\x4F\x72\x4D\x69\x73\x73\x69\x6E\x67\x46\x69\x6C\x65","\x3A\x20","\x6D\x65\x73\x73\x61\x67\x65","\x61\x6C\x65\x72\x74","\x73\x65\x74\x43\x6F\x6E\x73\x75\x6D\x65\x72","\x6F\x70\x65\x6E\x53\x74\x72\x69\x6E\x67","\x64\x61\x74\x61","\x6E\x65\x77","\x67\x65\x74\x47\x72\x61\x70\x68\x58\x6D\x6C","\x67\x65\x74\x50\x72\x65\x74\x74\x79\x58\x6D\x6C","\x67\x65\x74\x49\x74\x65\x6D","\x72\x65\x70\x6C\x61\x63\x65","\x63\x6F\x6E\x66\x69\x72\x6D","\x73\x65\x74\x49\x74\x65\x6D","\x73\x61\x76\x65\x64","\x20","\x73\x65\x74\x53\x74\x61\x74\x75\x73","\x6C\x65\x6E\x67\x74\x68","\x50\x4F\x53\x54","\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x78\x2D\x77\x77\x77\x2D\x66\x6F\x72\x6D\x2D\x75\x72\x6C\x65\x6E\x63\x6F\x64\x65\x64","\x73\x65\x74\x52\x65\x71\x75\x65\x73\x74\x48\x65\x61\x64\x65\x72","\x41\x75\x74\x68\x6F\x72\x69\x7A\x61\x74\x69\x6F\x6E","\x42\x65\x61\x72\x65\x72\x20","\x74\x6F\x6B\x65\x6E","\x6F\x6E\x6C\x6F\x61\x64","\x72\x65\x61\x64\x79\x53\x74\x61\x74\x65","\x73\x74\x61\x74\x75\x73","\x50\x72\x6F\x6A\x65\x63\x74\x20","\x6E\x61\x6D\x65","\x72\x65\x73\x70\x6F\x6E\x73\x65","\x70\x61\x72\x73\x65","\x20\x69\x73\x20\x6F\x70\x65\x6E\x69\x6E\x67\x20\x69\x6E\x20\x6E\x65\x77\x20\x77\x69\x6E\x64\x6F\x77\x21","\x6A\x73\x63\x72\x69\x70\x74\x79\x2F\x70\x72\x6F\x6A\x65\x63\x74\x73\x2F\x76\x69\x65\x77\x2F","\x69\x64","\x5F\x62\x6C\x61\x6E\x6B","\x45\x72\x72\x6F\x72\x20\x63\x72\x65\x61\x74\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74\x3A\x20","\x65\x72\x72\x6F\x72\x73","\x45\x72\x72\x6F\x72\x20\x63\x72\x65\x61\x74\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74","\x20\x28","\x73\x74\x61\x74\x75\x73\x54\x65\x78\x74","\x6F\x6E\x65\x72\x72\x6F\x72","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x3D\x70\x72\x6F\x6A\x65\x63\x74\x5F\x6E\x65\x77\x26\x6E\x61\x6D\x65\x3D","\x73\x65\x6E\x64","\x64\x72\x61\x77\x69\x6E\x67\x54\x6F\x6F\x4C\x61\x72\x67\x65","\x70\x6F\x70\x75\x70","\x73\x61\x76\x65","\x50\x55\x54","\x55\x70\x64\x61\x74\x65\x64\x20\x61\x74\x20","\x75\x70\x64\x61\x74\x65\x64\x41\x74","\x45\x72\x72\x6F\x72\x20\x73\x61\x76\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74\x3A\x20","\x45\x72\x72\x6F\x72\x20\x73\x61\x76\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74","\x64\x72\x61\x66\x74\x3D","\x45\x72\x72\x6F\x72\x20\x73\x61\x76\x69\x6E\x67\x20\x66\x69\x6C\x65","\x73\x61\x76\x65\x41\x73","\x6A\x73\x63\x72\x69\x70\x74\x79\x2F\x70\x72\x6F\x6A\x65\x63\x74\x2F","\x45\x72\x72\x6F\x72\x20\x63\x6C\x6F\x6E\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74\x3A\x20","\x45\x72\x72\x6F\x72\x20\x63\x6C\x6F\x6E\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x3D\x70\x72\x6F\x6A\x65\x63\x74\x5F\x63\x6C\x6F\x6E\x65\x64\x26\x6E\x61\x6D\x65\x3D","\x26\x64\x72\x61\x66\x74\x3D","\x26\x70\x72\x6F\x64\x75\x63\x74\x69\x6F\x6E\x3D","\x76\x61\x6C\x69\x64\x61\x74\x65","\x67\x65\x74\x52\x6F\x6F\x74","\x6D\x6F\x64\x65\x6C","\x67\x65\x74\x43\x68\x69\x6C\x64\x43\x6F\x75\x6E\x74","\x67\x65\x74\x43\x68\x69\x6C\x64\x41\x74","\x69\x73\x56\x61\x6C\x69\x64\x52\x6F\x6F\x74","\x3C\x62\x72\x3E","\x73\x65\x74\x43\x65\x6C\x6C\x57\x61\x72\x6E\x69\x6E\x67","","\x67\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x51\x75\x65\x73\x74\x69\x6F\x6E\x20\x63\x61\x6E\x20\x6E\x6F\x74\x20\x62\x65\x20\x65\x6D\x70\x74\x79","\x0A","\x6C\x61\x62\x65\x6C","\x4C\x61\x62\x65\x6C\x20\x63\x61\x6E\x20\x6E\x6F\x74\x20\x62\x65\x20\x65\x6D\x70\x74\x79","\x76\x61\x6C\x69\x64\x61\x74\x65\x42\x6C\x6F\x63\x6B","\x4F\x6E\x6C\x79\x20\x6F\x6E\x65\x20\x53\x74\x61\x72\x74\x20\x62\x6C\x6F\x63\x6B\x20\x69\x73\x20\x61\x6C\x6C\x6F\x77\x65\x64","\x6E\x6F\x64\x65\x4E\x61\x6D\x65","\x67\x65\x74\x49\x64","\x67\x65\x74\x43\x65\x6C\x6C","\x67\x65\x74\x56\x61\x6C\x75\x65","\x6E\x75\x6C\x6C","\x56\x61\x6C\x75\x65\x20\x63\x61\x6E\x20\x6E\x6F\x74\x20\x62\x65\x20\x65\x6D\x70\x74\x79","\x2C","\x73\x70\x6C\x69\x74","\x74\x72\x69\x6D","\x56\x61\x6C\x75\x65","\x20\x63\x61\x6E\x20\x6E\x6F\x74\x20\x62\x65\x20\x65\x6D\x70\x74\x79","\x66\x6F\x72\x45\x61\x63\x68","\x69\x73\x43\x65\x6C\x6C\x43\x6F\x6C\x6C\x61\x70\x73\x65\x64","\x63\x6F\x6E\x74\x61\x69\x6E\x73\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x45\x72\x72\x6F\x72\x73\x52\x65\x73\x6F\x75\x72\x63\x65","\x67\x65\x74\x54\x65\x72\x6D\x69\x6E\x61\x6C","\x67\x65\x74\x45\x64\x67\x65\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x45\x72\x72\x6F\x72","\x67\x65\x74\x43\x65\x6C\x6C\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x45\x72\x72\x6F\x72","\x76\x61\x6C\x69\x64\x61\x74\x65\x43\x65\x6C\x6C","\x67\x65\x74\x50\x61\x72\x65\x6E\x74","\x67\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x50\x61\x72\x65\x6E\x74","\x63\x68\x69\x6C\x64\x72\x65\x6E","\x70\x75\x62\x6C\x69\x73\x68","\x50\x75\x62\x6C\x69\x73\x68\x65\x64\x20\x61\x74\x20","\x45\x72\x72\x6F\x72\x20\x70\x75\x62\x6C\x69\x73\x68\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74\x3A\x20","\x45\x72\x72\x6F\x72\x20\x70\x75\x62\x6C\x69\x73\x68\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74","\x45\x72\x72\x6F\x72\x20\x70\x75\x62\x6C\x69\x73\x68\x69\x6E\x67\x20\x66\x69\x6C\x65","\x76\x61\x72\x69\x61\x62\x6C\x65","\x56\x61\x72\x69\x61\x62\x6C\x65\x20\x63\x72\x65\x61\x74\x65\x64\x20\x61\x74\x20","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x45\x72\x72\x6F\x72\x20\x63\x72\x65\x61\x74\x69\x6E\x67\x20\x76\x61\x72\x69\x61\x62\x6C\x65\x3A\x20","\x45\x72\x72\x6F\x72\x20\x63\x72\x65\x61\x74\x69\x6E\x67\x20\x76\x61\x72\x69\x61\x62\x6C\x65","\x6E\x61\x6D\x65\x3D","\x67\x65\x74\x55\x72\x6C","\x70\x61\x74\x68\x6E\x61\x6D\x65","\x6C\x6F\x63\x61\x74\x69\x6F\x6E","\x3F","\x26","\x3D","\x75\x6E\x64\x6F","\x72\x65\x64\x6F","\x63\x61\x6E\x55\x6E\x64\x6F","\x63\x61\x6E\x52\x65\x64\x6F","\x69\x73\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x45\x6D\x70\x74\x79","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x64\x65\x6C\x65\x74\x65","\x64\x75\x70\x6C\x69\x63\x61\x74\x65","\x62\x6F\x6C\x64","\x69\x74\x61\x6C\x69\x63","\x75\x6E\x64\x65\x72\x6C\x69\x6E\x65","\x74\x6F\x46\x72\x6F\x6E\x74","\x74\x6F\x42\x61\x63\x6B","\x64\x61\x73\x68\x65\x64","\x72\x6F\x75\x6E\x64\x65\x64","\x73\x68\x61\x64\x6F\x77","\x74\x69\x6C\x74","\x61\x75\x74\x6F\x73\x69\x7A\x65","\x63\x75\x72\x76\x65\x64","\x72\x6F\x74\x61\x74\x69\x6F\x6E","\x77\x6F\x72\x64\x57\x72\x61\x70","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x6F\x75\x6E\x74","\x67\x72\x6F\x75\x70","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x75\x6E\x67\x72\x6F\x75\x70","\x72\x65\x6D\x6F\x76\x65\x46\x72\x6F\x6D\x47\x72\x6F\x75\x70","\x66\x6F\x6E\x74\x46\x61\x6D\x69\x6C\x79","\x66\x6F\x6E\x74\x53\x69\x7A\x65","\x61\x6C\x69\x67\x6E\x6D\x65\x6E\x74","\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x74\x65\x78\x74","\x66\x6F\x72\x6D\x61\x74","\x61\x72\x72\x61\x6E\x67\x65","\x6C\x69\x6E\x65\x77\x69\x64\x74\x68","\x73\x70\x61\x63\x69\x6E\x67","\x6C\x69\x6E\x65","\x6C\x69\x6E\x65\x65\x6E\x64","\x6C\x69\x6E\x65\x73\x74\x61\x72\x74","\x73\x65\x74\x41\x73\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65","\x61\x6C\x69\x67\x6E","\x67\x65\x74\x53\x74\x61\x74\x65","\x69\x73\x4C\x6F\x6F\x70","\x64\x69\x72\x65\x63\x74\x69\x6F\x6E","\x66\x6F\x6C\x64\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x63\x75\x72\x72\x65\x6E\x74\x52\x6F\x6F\x74","\x6E\x61\x76\x69\x67\x61\x74\x69\x6F\x6E","\x68\x6F\x6D\x65","\x65\x78\x69\x74\x47\x72\x6F\x75\x70","\x65\x6E\x74\x65\x72\x47\x72\x6F\x75\x70","\x65\x78\x70\x61\x6E\x64","\x63\x6F\x6C\x6C\x61\x70\x73\x65","\x65\x64\x69\x74\x4C\x69\x6E\x6B","\x67\x65\x74\x4C\x69\x6E\x6B\x46\x6F\x72\x43\x65\x6C\x6C","\x6F\x70\x65\x6E\x4C\x69\x6E\x6B","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x4D\x6F\x64\x65\x6C","\x63\x6C\x69\x65\x6E\x74\x57\x69\x64\x74\x68","\x63\x6C\x69\x65\x6E\x74\x48\x65\x69\x67\x68\x74","\x6D\x69\x6E","\x6D\x61\x78","\x68\x65\x69\x67\x68\x74","\x70\x78","\x74\x6F\x70","\x49\x53\x5F\x51\x55\x49\x52\x4B\x53","\x77\x69\x64\x74\x68","\x62\x6F\x74\x74\x6F\x6D","\x6C\x65\x66\x74","\x64\x69\x73\x70\x6C\x61\x79","\x6E\x6F\x6E\x65","\x68\x73\x70\x6C\x69\x74","\x76\x73\x70\x6C\x69\x74","\x67\x65\x4D\x65\x6E\x75\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x63\x72\x65\x61\x74\x65\x44\x69\x76","\x67\x65\x54\x6F\x6F\x6C\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x53\x69\x64\x65\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x4F\x75\x74\x6C\x69\x6E\x65\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x44\x69\x61\x67\x72\x61\x6D\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x46\x6F\x6F\x74\x65\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x48\x73\x70\x6C\x69\x74","\x67\x65\x56\x73\x70\x6C\x69\x74","\x30\x70\x78","\x72\x69\x67\x68\x74","\x6D\x65\x6E\x75\x62\x61\x72","\x67\x65\x4D\x65\x6E\x75\x62\x61\x72","\x63\x72\x65\x61\x74\x65\x4D\x65\x6E\x75\x62\x61\x72","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x74\x6F\x6F\x6C\x62\x61\x72","\x67\x65\x54\x6F\x6F\x6C\x62\x61\x72","\x63\x72\x65\x61\x74\x65\x54\x6F\x6F\x6C\x62\x61\x72","\x73\x69\x64\x65\x62\x61\x72","\x63\x72\x65\x61\x74\x65\x53\x69\x64\x65\x62\x61\x72","\x63\x72\x65\x61\x74\x65\x46\x6F\x6F\x74\x65\x72","\x73\x74\x61\x74\x75\x73\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x63\x72\x65\x61\x74\x65\x53\x74\x61\x74\x75\x73\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x73\x74\x61\x74\x75\x73\x43\x68\x61\x6E\x67\x65\x64","\x67\x65\x74\x53\x74\x61\x74\x75\x73","\x73\x65\x74\x53\x74\x61\x74\x75\x73\x54\x65\x78\x74","\x61\x64\x64\x53\x70\x6C\x69\x74\x48\x61\x6E\x64\x6C\x65\x72","\x61","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x67\x65\x49\x74\x65\x6D\x20\x67\x65\x53\x74\x61\x74\x75\x73","\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C","\x67\x65\x46\x6F\x6F\x74\x65\x72","\x64\x69\x76","\x63\x72\x65\x61\x74\x65\x48\x65\x61\x64\x65\x72","\x63\x72\x65\x61\x74\x65\x46\x6F\x72\x6D","\x66\x6F\x72\x6D","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x58","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x59","\x78","\x79","\x6D\x6F\x75\x73\x65\x6D\x6F\x76\x65","\x74\x6F\x75\x63\x68\x6D\x6F\x76\x65","\x6D\x6F\x75\x73\x65\x75\x70","\x74\x6F\x75\x63\x68\x65\x6E\x64","\x68\x69\x64\x65\x44\x69\x61\x6C\x6F\x67","\x64\x69\x61\x6C\x6F\x67","\x49\x53\x5F\x56\x4D\x4C","\x63\x6C\x6F\x73\x65","\x73\x61\x76\x65\x46\x69\x6C\x65","\x67\x65\x74\x4F\x72\x43\x72\x65\x61\x74\x65\x46\x69\x6C\x65\x6E\x61\x6D\x65","\x70\x75\x62\x6C\x69\x73\x68\x46\x69\x6C\x65","\x65\x78\x65\x63\x75\x74\x65\x4C\x61\x79\x6F\x75\x74","\x61\x6E\x69\x6D\x61\x74\x65","\x62\x65\x67\x69\x6E\x55\x70\x64\x61\x74\x65","\x65\x78\x65\x63\x75\x74\x65","\x43\x61\x6D\x69\x6E\x6F","\x75\x73\x65\x72\x41\x67\x65\x6E\x74","\x65\x6E\x64\x55\x70\x64\x61\x74\x65","\x73\x74\x61\x72\x74\x41\x6E\x69\x6D\x61\x74\x69\x6F\x6E","\x69\x73\x43\x6F\x6E\x74\x72\x6F\x6C\x44\x6F\x77\x6E","\x49\x53\x5F\x4D\x41\x43","\x6D\x65\x74\x61\x4B\x65\x79","\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73","\x73\x63\x72\x6F\x6C\x6C\x43\x65\x6C\x6C\x54\x6F\x56\x69\x73\x69\x62\x6C\x65","\x65\x6E\x61\x62\x6C\x65\x64","\x66\x75\x6E\x63\x74","\x62\x69\x6E\x64\x43\x6F\x6E\x74\x72\x6F\x6C\x53\x68\x69\x66\x74\x4B\x65\x79","\x62\x69\x6E\x64\x43\x6F\x6E\x74\x72\x6F\x6C\x4B\x65\x79","\x62\x69\x6E\x64\x53\x68\x69\x66\x74\x4B\x65\x79","\x62\x69\x6E\x64\x4B\x65\x79","\x65\x73\x63\x61\x70\x65","\x65\x6E\x74\x65\x72","\x66\x6F\x6C\x64\x43\x65\x6C\x6C\x73","\x7A\x6F\x6F\x6D\x49\x6E","\x7A\x6F\x6F\x6D\x4F\x75\x74","\x73\x65\x6C\x65\x63\x74\x41\x6C\x6C","\x73\x65\x6C\x65\x63\x74\x56\x65\x72\x74\x69\x63\x65\x73","\x73\x65\x6C\x65\x63\x74\x45\x64\x67\x65\x73","\x65\x78\x70\x6F\x72\x74","\x63\x6F\x6E\x6E\x65\x63\x74","\x67\x72\x69\x64","\x61\x62\x6F\x75\x74","\x20\x6D\x75\x73\x74\x20\x68\x61\x76\x65\x20","\x20\x6F\x75\x74\x67\x6F\x69\x6E\x67\x20\x65\x64\x67\x65\x2E","\x70\x75\x73\x68","\x20\x69\x6E\x63\x6F\x6D\x69\x6E\x67\x20\x65\x64\x67\x65\x2E"];EditorUi= function(_0x867fx1,_0x867fx2){this[_0xd38c[0]]= _0x867fx1|| new Editor();this[_0xd38c[1]]= _0x867fx2|| document[_0xd38c[3]](_0xd38c[2]);var _0x867fx3=_0x867fx1[_0xd38c[4]];var _0x867fx4=this;this[_0xd38c[1]][_0xd38c[6]][_0xd38c[5]]= _0xd38c[7]; new Image()[_0xd38c[8]]= mxPopupMenu[_0xd38c[10]][_0xd38c[9]];if(mxConnectionHandler[_0xd38c[10]][_0xd38c[11]]!= null){ new Image()[_0xd38c[8]]= mxConnectionHandler[_0xd38c[10]][_0xd38c[11]][_0xd38c[8]]};this[_0xd38c[12]]= new Actions(this);this[_0xd38c[13]]= new Menus(this);this[_0xd38c[14]]();this[_0xd38c[15]]();this[_0xd38c[16]]();var _0x867fx5=mxUtils[_0xd38c[20]](this,function(_0x867fx6){if(_0x867fx6== null){_0x867fx6= window[_0xd38c[17]]};if(this[_0xd38c[18]](_0x867fx6)){return true};return _0x867fx3[_0xd38c[19]]()});if(this[_0xd38c[1]]== document[_0xd38c[21]]){this[_0xd38c[23]][_0xd38c[22]]= _0x867fx5;this[_0xd38c[23]][_0xd38c[24]]= _0x867fx5;this[_0xd38c[25]][_0xd38c[22]]= _0x867fx5;this[_0xd38c[25]][_0xd38c[24]]= _0x867fx5;this[_0xd38c[26]][_0xd38c[22]]= _0x867fx5;this[_0xd38c[26]][_0xd38c[24]]= _0x867fx5;this[_0xd38c[27]][_0xd38c[22]]= _0x867fx5;this[_0xd38c[27]][_0xd38c[24]]= _0x867fx5;this[_0xd38c[28]][_0xd38c[22]]= _0x867fx5;this[_0xd38c[28]][_0xd38c[24]]= _0x867fx5};if(mxClient[_0xd38c[29]]&& ( typeof (document[_0xd38c[30]])=== _0xd38c[31]|| document[_0xd38c[30]]< 9)){mxEvent[_0xd38c[33]](this[_0xd38c[26]],_0xd38c[32],_0x867fx5);mxEvent[_0xd38c[33]](this[_0xd38c[27]],_0xd38c[32],_0x867fx5)}else {this[_0xd38c[26]][_0xd38c[34]]= _0x867fx5;this[_0xd38c[27]][_0xd38c[34]]= _0x867fx5};_0x867fx3[_0xd38c[35]](this[_0xd38c[26]]);_0x867fx3[_0xd38c[15]]();_0x867fx3[_0xd38c[1]][_0xd38c[38]](_0xd38c[36],_0xd38c[37]);_0x867fx3[_0xd38c[1]][_0xd38c[6]][_0xd38c[39]]= _0xd38c[40];_0x867fx3[_0xd38c[1]][_0xd38c[6]][_0xd38c[41]]= _0xd38c[42]+ _0x867fx1[_0xd38c[43]]+ _0xd38c[44];_0x867fx3[_0xd38c[1]][_0xd38c[6]][_0xd38c[45]]= _0xd38c[46];_0x867fx3[_0xd38c[1]][_0xd38c[47]]();var _0x867fx7=_0x867fx3[_0xd38c[48]];_0x867fx3[_0xd38c[48]]= function(_0x867fx8,_0x867fx9,_0x867fxa){if(_0x867fx8== mxEvent[_0xd38c[49]]){this[_0xd38c[1]][_0xd38c[47]]()};_0x867fx7[_0xd38c[50]](this,arguments)};this[_0xd38c[58]](_0x867fx3[_0xd38c[51]],[_0xd38c[52],_0xd38c[53],_0xd38c[54],_0xd38c[55],_0xd38c[56]],[[1,1],[0,0],[1,1],[1,_0xd38c[57]],[1,_0xd38c[57]]],[[0,0],[1,_0xd38c[57]],[1,_0xd38c[57]],[1,_0xd38c[57]],[1,_0xd38c[57]]]);_0x867fx3[_0xd38c[59]]= function(_0x867fx6,_0x867fxb){var _0x867fxc=[_0xd38c[55]];var _0x867fxd= new mxEventObject(mxEvent.DOUBLE_CLICK,_0xd38c[17],_0x867fx6,_0xd38c[60],_0x867fxb);this[_0xd38c[61]](_0x867fxd);if(this[_0xd38c[62]]()&& !mxEvent[_0xd38c[63]](_0x867fx6)&& !_0x867fxd[_0xd38c[63]]()){if(this[_0xd38c[65]]()[_0xd38c[64]](_0x867fxb)){if(_0x867fxc[_0xd38c[69]](_0x867fxb[_0xd38c[68]][_0xd38c[67]][_0xd38c[66]])>= 0){this[_0xd38c[70]](_0x867fxb)}}else {if(this[_0xd38c[65]]()[_0xd38c[71]](_0x867fxb)){console[_0xd38c[72]](_0x867fx4);console[_0xd38c[72]](_0x867fxb);_0x867fx4[_0xd38c[73]]( new GeneralDialog(_0x867fx4,_0x867fxb)[_0xd38c[1]],320,280,true,true)}};_0x867fxd[_0xd38c[74]]()}};_0x867fx3[_0xd38c[76]][_0xd38c[75]]= true;_0x867fx3[_0xd38c[76]][_0xd38c[77]]= mxUtils[_0xd38c[20]](this,function(_0x867fxe,_0x867fxb,_0x867fx6){this[_0xd38c[13]][_0xd38c[78]](_0x867fxe,_0x867fxb,_0x867fx6)});_0x867fx1[_0xd38c[80]][_0xd38c[35]](this[_0xd38c[79]]);mxEvent[_0xd38c[82]](document,mxUtils[_0xd38c[20]](this,function(_0x867fx6){_0x867fx3[_0xd38c[76]][_0xd38c[81]]()}));if(mxClient[_0xd38c[83]]){mxEvent[_0xd38c[33]](_0x867fx3[_0xd38c[1]],_0xd38c[84],mxUtils[_0xd38c[20]](this,function(_0x867fx6){_0x867fx3[_0xd38c[89]][_0xd38c[88]]()[_0xd38c[38]](_0xd38c[85],_0xd38c[86]+ _0x867fx6[_0xd38c[87]]+ _0xd38c[44]);_0x867fx3[_0xd38c[89]][_0xd38c[91]]()[_0xd38c[6]][_0xd38c[90]]= _0xd38c[7]}));mxEvent[_0xd38c[33]](_0x867fx3[_0xd38c[1]],_0xd38c[92],mxUtils[_0xd38c[20]](this,function(_0x867fx6){_0x867fx3[_0xd38c[89]][_0xd38c[88]]()[_0xd38c[93]](_0xd38c[85]);_0x867fx3[_0xd38c[94]]= true;_0x867fx3[_0xd38c[95]](_0x867fx6[_0xd38c[87]]);_0x867fx3[_0xd38c[89]][_0xd38c[91]]()[_0xd38c[6]][_0xd38c[90]]= _0xd38c[96]}))};var _0x867fxf=this[_0xd38c[97]](_0x867fx1);this[_0xd38c[98]]= function(){return _0x867fxf};mxEvent[_0xd38c[33]](window,_0xd38c[99],mxUtils[_0xd38c[20]](this,function(){this[_0xd38c[15]]();_0x867fx3[_0xd38c[100]]();this[_0xd38c[0]][_0xd38c[80]][_0xd38c[101]](false);this[_0xd38c[0]][_0xd38c[80]][_0xd38c[80]][_0xd38c[100]]()}));this[_0xd38c[35]]();this[_0xd38c[102]]()};EditorUi[_0xd38c[10]][_0xd38c[103]]= (mxClient[_0xd38c[83]])?16:8;EditorUi[_0xd38c[10]][_0xd38c[104]]= 33;EditorUi[_0xd38c[10]][_0xd38c[105]]= 36;EditorUi[_0xd38c[10]][_0xd38c[106]]= 28;EditorUi[_0xd38c[10]][_0xd38c[107]]= 204;EditorUi[_0xd38c[10]][_0xd38c[108]]= 190;EditorUi[_0xd38c[10]][_0xd38c[35]]= function(){this[_0xd38c[109]]();this[_0xd38c[110]]();var _0x867fx10=this[_0xd38c[12]][_0xd38c[112]](_0xd38c[111]);var _0x867fx11=function(){_0x867fx10[_0xd38c[114]](!mxClipboard[_0xd38c[113]]())};var _0x867fx12=mxClipboard[_0xd38c[115]];mxClipboard[_0xd38c[115]]= function(){_0x867fx12[_0xd38c[50]](this,arguments);_0x867fx11()};var _0x867fx13=mxClipboard[_0xd38c[116]];mxClipboard[_0xd38c[116]]= function(){_0x867fx13[_0xd38c[50]](this,arguments);_0x867fx11()}};EditorUi[_0xd38c[10]][_0xd38c[18]]= function(_0x867fx6){return false};EditorUi[_0xd38c[10]][_0xd38c[102]]= function(){try{if(window[_0xd38c[117]]!= null&& window[_0xd38c[117]][_0xd38c[118]]!= null){window[_0xd38c[117]][_0xd38c[118]][_0xd38c[130]](mxUtils[_0xd38c[20]](this,function(_0x867fx14,_0x867fx15){try{var _0x867fx16=mxUtils[_0xd38c[119]](_0x867fx14);this[_0xd38c[0]][_0xd38c[121]](_0x867fx16[_0xd38c[120]]);this[_0xd38c[0]][_0xd38c[122]]= false;this[_0xd38c[0]][_0xd38c[124]][_0xd38c[123]]();if(_0x867fx15!= null){this[_0xd38c[0]][_0xd38c[125]]= _0x867fx15}}catch(e){mxUtils[_0xd38c[129]](mxResources[_0xd38c[112]](_0xd38c[126])+ _0xd38c[127]+ e[_0xd38c[128]])}}))}}catch(e){}};EditorUi[_0xd38c[10]][_0xd38c[131]]= function(_0x867fx14,_0x867fx15,_0x867fx17){try{var _0x867fx16=mxUtils[_0xd38c[119]](_0x867fx14);this[_0xd38c[0]][_0xd38c[121]](_0x867fx16[_0xd38c[120]]);this[_0xd38c[0]][_0xd38c[122]]= false;this[_0xd38c[0]][_0xd38c[124]][_0xd38c[123]]();if(_0x867fx15!= null){this[_0xd38c[0]][_0xd38c[125]]= _0x867fx15};if(_0x867fx17!= null){this[_0xd38c[0]][_0xd38c[132]]= _0x867fx17}}catch(e){mxUtils[_0xd38c[129]](mxResources[_0xd38c[112]](_0xd38c[126])+ _0xd38c[127]+ e[_0xd38c[128]])}};EditorUi[_0xd38c[10]][_0xd38c[133]]= function(_0x867fx18){var _0x867fx1=this[_0xd38c[0]];if(_0x867fx18!= null){var _0x867fx14=mxUtils[_0xd38c[135]](this[_0xd38c[0]][_0xd38c[134]]());try{if(useLocalStorage){if(localStorage[_0xd38c[136]](_0x867fx18)!= null&& !mxUtils[_0xd38c[138]](mxResources[_0xd38c[112]](_0xd38c[137],[_0x867fx18]))){return};localStorage[_0xd38c[139]](_0x867fx18,_0x867fx14);this[_0xd38c[0]][_0xd38c[142]](mxResources[_0xd38c[112]](_0xd38c[140])+ _0xd38c[141]+ new Date())}else {console[_0xd38c[72]](_0x867fx14[_0xd38c[143]]);console[_0xd38c[72]](MAX_REQUEST_SIZE);if(_0x867fx14[_0xd38c[143]]< MAX_REQUEST_SIZE){_0x867fx14= encodeURIComponent(_0x867fx14);_0x867fx18= encodeURIComponent(_0x867fx18);var _0x867fx19= new XMLHttpRequest();_0x867fx19[_0xd38c[102]](_0xd38c[144],SAVE_URL,true);_0x867fx19[_0xd38c[147]](_0xd38c[145],_0xd38c[146]);_0x867fx19[_0xd38c[147]](_0xd38c[148],_0xd38c[149]+ _0x867fx1[_0xd38c[132]][_0xd38c[150]]);_0x867fx19[_0xd38c[151]]= function(_0x867fx1a){if(_0x867fx19[_0xd38c[152]]=== 4){if(_0x867fx19[_0xd38c[153]]=== 201){_0x867fx1[_0xd38c[142]](_0xd38c[154]+ JSON[_0xd38c[157]](_0x867fx19[_0xd38c[156]])[_0xd38c[155]]+ _0xd38c[158]);setTimeout(function(){window[_0xd38c[102]](_0xd38c[159]+ JSON[_0xd38c[157]](_0x867fx19[_0xd38c[156]])[_0xd38c[160]],_0xd38c[161])},1500)}else {try{var _0x867fx1b=JSON[_0xd38c[157]](_0x867fx19[_0xd38c[156]]);_0x867fx1[_0xd38c[142]](_0xd38c[162]+ _0x867fx1b[_0xd38c[163]][0][_0xd38c[128]])}catch(_0x867fx1a){_0x867fx1[_0xd38c[142]](_0xd38c[164]+ _0xd38c[165]+ _0x867fx19[_0xd38c[153]]+ _0xd38c[141]+ _0x867fx19[_0xd38c[166]]+ _0xd38c[44])}}}};_0x867fx19[_0xd38c[167]]= function(_0x867fx1a){mxUtils[_0xd38c[129]](_0x867fx19[_0xd38c[166]])};_0x867fx19[_0xd38c[169]](_0xd38c[168]+ _0x867fx18)}else {mxUtils[_0xd38c[129]](mxResources[_0xd38c[112]](_0xd38c[170]));mxUtils[_0xd38c[171]](_0x867fx14);return}};this[_0xd38c[0]][_0xd38c[125]]= _0x867fx18;this[_0xd38c[0]][_0xd38c[122]]= false}catch(e){this[_0xd38c[0]][_0xd38c[142]](_0xd38c[164])}}else {this[_0xd38c[0]][_0xd38c[142]](_0xd38c[164])}};EditorUi[_0xd38c[10]][_0xd38c[172]]= function(_0x867fx18){var _0x867fx1=this[_0xd38c[0]];if(_0x867fx18!= null){var _0x867fx14=mxUtils[_0xd38c[135]](this[_0xd38c[0]][_0xd38c[134]]());try{if(useLocalStorage){if(localStorage[_0xd38c[136]](_0x867fx18)!= null&& !mxUtils[_0xd38c[138]](mxResources[_0xd38c[112]](_0xd38c[137],[_0x867fx18]))){return};localStorage[_0xd38c[139]](_0x867fx18,_0x867fx14);this[_0xd38c[0]][_0xd38c[142]](mxResources[_0xd38c[112]](_0xd38c[140])+ _0xd38c[141]+ new Date())}else {console[_0xd38c[72]](_0x867fx14[_0xd38c[143]]);console[_0xd38c[72]](MAX_REQUEST_SIZE);if(_0x867fx14[_0xd38c[143]]< MAX_REQUEST_SIZE){_0x867fx14= encodeURIComponent(_0x867fx14);var _0x867fx19= new XMLHttpRequest();_0x867fx19[_0xd38c[102]](_0xd38c[173],SAVE_URL+ this[_0xd38c[0]][_0xd38c[132]][_0xd38c[160]],true);_0x867fx19[_0xd38c[147]](_0xd38c[145],_0xd38c[146]);_0x867fx19[_0xd38c[147]](_0xd38c[148],_0xd38c[149]+ _0x867fx1[_0xd38c[132]][_0xd38c[150]]);_0x867fx19[_0xd38c[151]]= function(_0x867fx1a){if(_0x867fx19[_0xd38c[152]]=== 4){if(_0x867fx19[_0xd38c[153]]=== 200){_0x867fx1[_0xd38c[142]](_0xd38c[174]+ JSON[_0xd38c[157]](_0x867fx19[_0xd38c[156]])[_0xd38c[175]]+ _0xd38c[165]+ _0x867fx19[_0xd38c[153]]+ _0xd38c[141]+ _0x867fx19[_0xd38c[166]]+ _0xd38c[44])}else {try{var _0x867fx1b=JSON[_0xd38c[157]](_0x867fx19[_0xd38c[156]]);_0x867fx1[_0xd38c[142]](_0xd38c[176]+ _0x867fx1b[_0xd38c[163]][0][_0xd38c[128]])}catch(_0x867fx1a){_0x867fx1[_0xd38c[142]](_0xd38c[177]+ _0xd38c[165]+ _0x867fx19[_0xd38c[153]]+ _0xd38c[141]+ _0x867fx19[_0xd38c[166]]+ _0xd38c[44])}}}};_0x867fx19[_0xd38c[167]]= function(_0x867fx1a){mxUtils[_0xd38c[129]](_0x867fx19[_0xd38c[166]])};_0x867fx19[_0xd38c[169]](_0xd38c[178]+ _0x867fx14)}else {mxUtils[_0xd38c[129]](mxResources[_0xd38c[112]](_0xd38c[170]));mxUtils[_0xd38c[171]](_0x867fx14);return}};this[_0xd38c[0]][_0xd38c[125]]= _0x867fx18;this[_0xd38c[0]][_0xd38c[122]]= false}catch(e){this[_0xd38c[0]][_0xd38c[142]](_0xd38c[179])}}else {this[_0xd38c[0]][_0xd38c[142]](_0xd38c[179])}};EditorUi[_0xd38c[10]][_0xd38c[180]]= function(_0x867fx18){var _0x867fx1=this[_0xd38c[0]];console[_0xd38c[72]](_0x867fx18);if(_0x867fx18!= null){var _0x867fx14=mxUtils[_0xd38c[135]](this[_0xd38c[0]][_0xd38c[134]]());try{if(useLocalStorage){if(localStorage[_0xd38c[136]](_0x867fx18)!= null&& !mxUtils[_0xd38c[138]](mxResources[_0xd38c[112]](_0xd38c[137],[_0x867fx18]))){return};localStorage[_0xd38c[139]](_0x867fx18,_0x867fx14);this[_0xd38c[0]][_0xd38c[142]](mxResources[_0xd38c[112]](_0xd38c[140])+ _0xd38c[141]+ new Date())}else {console[_0xd38c[72]](_0x867fx14[_0xd38c[143]]);console[_0xd38c[72]](MAX_REQUEST_SIZE);if(_0x867fx14[_0xd38c[143]]< MAX_REQUEST_SIZE){_0x867fx14= encodeURIComponent(_0x867fx14);_0x867fx18= encodeURIComponent(_0x867fx18);var _0x867fx19= new XMLHttpRequest();_0x867fx19[_0xd38c[102]](_0xd38c[144],SAVE_URL,true);_0x867fx19[_0xd38c[147]](_0xd38c[145],_0xd38c[146]);_0x867fx19[_0xd38c[147]](_0xd38c[148],_0xd38c[149]+ _0x867fx1[_0xd38c[132]][_0xd38c[150]]);_0x867fx19[_0xd38c[151]]= function(_0x867fx1a){if(_0x867fx19[_0xd38c[152]]=== 4){if(_0x867fx19[_0xd38c[153]]=== 201){_0x867fx1[_0xd38c[142]](_0xd38c[154]+ JSON[_0xd38c[157]](_0x867fx19[_0xd38c[156]])[_0xd38c[155]]+ _0xd38c[158]);setTimeout(function(){window[_0xd38c[102]](_0xd38c[181]+ JSON[_0xd38c[157]](_0x867fx19[_0xd38c[156]])[_0xd38c[160]],_0xd38c[161])},1500)}else {try{var _0x867fx1b=JSON[_0xd38c[157]](_0x867fx19[_0xd38c[156]]);_0x867fx1[_0xd38c[142]](_0xd38c[182]+ _0x867fx1b[_0xd38c[163]][0][_0xd38c[128]])}catch(_0x867fx1a){_0x867fx1[_0xd38c[142]](_0xd38c[183]+ _0xd38c[165]+ _0x867fx19[_0xd38c[153]]+ _0xd38c[141]+ _0x867fx19[_0xd38c[166]]+ _0xd38c[44])}}}};_0x867fx19[_0xd38c[167]]= function(_0x867fx1a){mxUtils[_0xd38c[129]](_0x867fx19[_0xd38c[166]])};_0x867fx19[_0xd38c[169]](_0xd38c[184]+ _0x867fx18+ _0xd38c[185]+ _0x867fx14+ _0xd38c[186]+ _0x867fx14)}else {mxUtils[_0xd38c[129]](mxResources[_0xd38c[112]](_0xd38c[170]));mxUtils[_0xd38c[171]](_0x867fx14);return}};this[_0xd38c[0]][_0xd38c[122]]= false}catch(e){this[_0xd38c[0]][_0xd38c[142]](_0xd38c[179])}}else {this[_0xd38c[0]][_0xd38c[142]](_0xd38c[179])}};EditorUi[_0xd38c[10]][_0xd38c[187]]= function(_0x867fx1c,_0x867fx1d){var _0x867fx3=this[_0xd38c[0]][_0xd38c[4]];_0x867fx1c= null!= _0x867fx1c?_0x867fx1c:_0x867fx3[_0xd38c[189]][_0xd38c[188]]();_0x867fx1d= null!= _0x867fx1d?_0x867fx1d:{};for(var _0x867fx1e=!0,_0x867fx1f=_0x867fx3[_0xd38c[189]][_0xd38c[190]](_0x867fx1c),_0x867fx1a=0;_0x867fx1a< _0x867fx1f;_0x867fx1a++){var _0x867fx20=_0x867fx3[_0xd38c[189]][_0xd38c[191]](_0x867fx1c,_0x867fx1a),_0x867fx21=_0x867fx1d;_0x867fx3[_0xd38c[192]](_0x867fx20)&& (_0x867fx21= {});_0x867fx21= this[_0xd38c[187]](_0x867fx20,_0x867fx21);null!= _0x867fx21?_0x867fx3[_0xd38c[194]](_0x867fx20,_0x867fx21[_0xd38c[137]](/\n/g,_0xd38c[193])):_0x867fx3[_0xd38c[194]](_0x867fx20,null);_0x867fx1e= _0x867fx1e&& null== _0x867fx21};_0x867fx1f= _0xd38c[195];if(_0x867fx3[_0xd38c[189]][_0xd38c[71]](_0x867fx1c)){switch(_0x867fx1c[_0xd38c[67]][_0xd38c[203]]){case _0xd38c[55]:_0x867fx1f= (_0x867fx1c[_0xd38c[67]][_0xd38c[196]](_0xd38c[55])!== _0xd38c[195])?_0xd38c[195]:_0xd38c[197]+ _0xd38c[198];_0x867fx1f+= (_0x867fx1c[_0xd38c[67]][_0xd38c[196]](_0xd38c[199])!== _0xd38c[195])?_0xd38c[195]:_0xd38c[200]+ _0xd38c[198];break;case _0xd38c[54]:_0x867fx1f= (_0x867fx1c[_0xd38c[67]][_0xd38c[196]](_0xd38c[55])!== _0xd38c[195])?_0xd38c[195]:_0xd38c[197]+ _0xd38c[198];_0x867fx1f+= (_0x867fx1c[_0xd38c[67]][_0xd38c[196]](_0xd38c[199])!== _0xd38c[195])?_0xd38c[195]:_0xd38c[200]+ _0xd38c[198];break;case _0xd38c[52]:_0x867fx1f= this[_0xd38c[201]](_0xd38c[52])?_0xd38c[195]:_0xd38c[202]+ _0xd38c[198];_0x867fx1f+= (_0x867fx1c[_0xd38c[67]][_0xd38c[196]](_0xd38c[199])!== _0xd38c[195])?_0xd38c[195]:_0xd38c[200]+ _0xd38c[198];break}};if(_0x867fx3[_0xd38c[189]][_0xd38c[64]](_0x867fx1c)){var _0x867fx22=_0x867fx3[_0xd38c[189]][_0xd38c[205]](_0x867fx1c[_0xd38c[68]][_0xd38c[204]]());switch(_0x867fx22[_0xd38c[67]][_0xd38c[203]]){case _0xd38c[55]:var _0x867fx23=String(_0x867fx1c[_0xd38c[206]]());console[_0xd38c[72]](_0x867fx23);if(_0x867fx23=== _0xd38c[207]|| _0x867fx23=== _0xd38c[31]){_0x867fx1f= _0xd38c[208]+ _0xd38c[198]}else {var _0x867fx24=_0x867fx23[_0xd38c[210]](_0xd38c[209]);_0x867fx24[_0xd38c[214]](function(_0x867fx25,_0x867fx26){_0x867fx1f= _0x867fx1f+ ((_0x867fx25[_0xd38c[211]]()!== _0xd38c[195])?_0xd38c[195]:_0xd38c[212]+ (_0x867fx26+ 1)+ _0xd38c[213]+ _0xd38c[198])})};break}};_0x867fx3[_0xd38c[215]](_0x867fx1c)&& !_0x867fx1e&& (_0x867fx1f+= (mxResources[_0xd38c[112]](_0x867fx3[_0xd38c[216]])|| _0x867fx3[_0xd38c[216]])+ _0xd38c[198]);_0x867fx1f= _0x867fx3[_0xd38c[189]][_0xd38c[64]](_0x867fx1c)?_0x867fx1f+ (_0x867fx3[_0xd38c[218]](_0x867fx1c,_0x867fx3[_0xd38c[189]][_0xd38c[217]](_0x867fx1c,!0),_0x867fx3[_0xd38c[189]][_0xd38c[217]](_0x867fx1c,!1))|| _0xd38c[195]):_0x867fx1f+ (_0x867fx3[_0xd38c[219]](_0x867fx1c)|| _0xd38c[195]);_0x867fx1a= _0x867fx3[_0xd38c[220]](_0x867fx1c,_0x867fx1d);null!= _0x867fx1a&& (_0x867fx1f+= _0x867fx1a);null== _0x867fx3[_0xd38c[189]][_0xd38c[221]](_0x867fx1c)&& _0x867fx3[_0xd38c[89]][_0xd38c[187]]();return 0< _0x867fx1f[_0xd38c[143]]|| !_0x867fx1e?_0x867fx1f:null};EditorUi[_0xd38c[10]][_0xd38c[201]]= function(_0x867fx27){var _0x867fx3=this[_0xd38c[0]][_0xd38c[4]];var _0x867fx28=_0x867fx3[_0xd38c[222]]();var _0x867fx29=0;_0x867fx28[_0xd38c[223]][_0xd38c[214]](function(_0x867fx2a){if(_0x867fx3[_0xd38c[189]][_0xd38c[71]](_0x867fx2a)&& _0x867fx2a[_0xd38c[67]][_0xd38c[203]]== _0x867fx27){_0x867fx29++}});return _0x867fx29> 1?false:true};EditorUi[_0xd38c[10]][_0xd38c[224]]= function(_0x867fx18){var _0x867fx1=this[_0xd38c[0]];if(_0x867fx18!= null){var _0x867fx1b=this[_0xd38c[187]]();if(_0x867fx1b=== null){var _0x867fx14=mxUtils[_0xd38c[135]](this[_0xd38c[0]][_0xd38c[134]]());try{if(useLocalStorage){if(localStorage[_0xd38c[136]](_0x867fx18)!= null&& !mxUtils[_0xd38c[138]](mxResources[_0xd38c[112]](_0xd38c[137],[_0x867fx18]))){return};localStorage[_0xd38c[139]](_0x867fx18,_0x867fx14);this[_0xd38c[0]][_0xd38c[142]](mxResources[_0xd38c[112]](_0xd38c[140])+ _0xd38c[141]+ new Date())}else {console[_0xd38c[72]](_0x867fx14[_0xd38c[143]]);console[_0xd38c[72]](MAX_REQUEST_SIZE);if(_0x867fx14[_0xd38c[143]]< MAX_REQUEST_SIZE){_0x867fx14= encodeURIComponent(_0x867fx14);var _0x867fx19= new XMLHttpRequest();_0x867fx19[_0xd38c[102]](_0xd38c[173],SAVE_URL+ this[_0xd38c[0]][_0xd38c[132]][_0xd38c[160]],true);_0x867fx19[_0xd38c[147]](_0xd38c[145],_0xd38c[146]);_0x867fx19[_0xd38c[147]](_0xd38c[148],_0xd38c[149]+ _0x867fx1[_0xd38c[132]][_0xd38c[150]]);_0x867fx19[_0xd38c[151]]= function(_0x867fx1a){if(_0x867fx19[_0xd38c[152]]=== 4){if(_0x867fx19[_0xd38c[153]]=== 200){_0x867fx1[_0xd38c[142]](_0xd38c[225]+ JSON[_0xd38c[157]](_0x867fx19[_0xd38c[156]])[_0xd38c[175]]+ _0xd38c[165]+ _0x867fx19[_0xd38c[153]]+ _0xd38c[141]+ _0x867fx19[_0xd38c[166]]+ _0xd38c[44])}else {try{var _0x867fx1b=JSON[_0xd38c[157]](_0x867fx19[_0xd38c[156]]);_0x867fx1[_0xd38c[142]](_0xd38c[226]+ _0x867fx1b[_0xd38c[163]][0][_0xd38c[128]])}catch(_0x867fx1a){_0x867fx1[_0xd38c[142]](_0xd38c[227]+ _0xd38c[165]+ _0x867fx19[_0xd38c[153]]+ _0xd38c[141]+ _0x867fx19[_0xd38c[166]]+ _0xd38c[44])}}}};_0x867fx19[_0xd38c[167]]= function(_0x867fx1a){mxUtils[_0xd38c[129]](_0x867fx19[_0xd38c[166]])};_0x867fx19[_0xd38c[169]](_0xd38c[178]+ _0x867fx14+ _0xd38c[186]+ _0x867fx14)}else {mxUtils[_0xd38c[129]](mxResources[_0xd38c[112]](_0xd38c[170]));mxUtils[_0xd38c[171]](_0x867fx14);return}};this[_0xd38c[0]][_0xd38c[125]]= _0x867fx18;this[_0xd38c[0]][_0xd38c[122]]= false}catch(e){this[_0xd38c[0]][_0xd38c[142]](_0xd38c[228])}}else {_0x867fx1[_0xd38c[142]](_0xd38c[226])}}else {this[_0xd38c[0]][_0xd38c[142]](_0xd38c[228])}};EditorUi[_0xd38c[10]][_0xd38c[229]]= function(_0x867fx18){var _0x867fx1=this[_0xd38c[0]];if(_0x867fx18!= null){try{var _0x867fx19= new XMLHttpRequest();_0x867fx19[_0xd38c[102]](_0xd38c[144],VARIABLE_URL,true);_0x867fx19[_0xd38c[147]](_0xd38c[145],_0xd38c[146]);_0x867fx19[_0xd38c[147]](_0xd38c[148],_0xd38c[149]+ _0x867fx1[_0xd38c[132]][_0xd38c[150]]);_0x867fx19[_0xd38c[151]]= function(_0x867fx1a){if(_0x867fx19[_0xd38c[152]]=== 4){if(_0x867fx19[_0xd38c[153]]=== 201){_0x867fx1[_0xd38c[142]](_0xd38c[230]+ JSON[_0xd38c[157]](_0x867fx19[_0xd38c[156]])[_0xd38c[231]]+ _0xd38c[165]+ _0x867fx19[_0xd38c[153]]+ _0xd38c[141]+ _0x867fx19[_0xd38c[166]]+ _0xd38c[44])}else {try{var _0x867fx1b=JSON[_0xd38c[157]](_0x867fx19[_0xd38c[156]]);_0x867fx1[_0xd38c[142]](_0xd38c[232]+ _0x867fx1b[_0xd38c[163]][0][_0xd38c[128]])}catch(_0x867fx1a){_0x867fx1[_0xd38c[142]](_0xd38c[233]+ _0xd38c[165]+ _0x867fx19[_0xd38c[153]]+ _0xd38c[141]+ _0x867fx19[_0xd38c[166]]+ _0xd38c[44])}}}};_0x867fx19[_0xd38c[167]]= function(_0x867fx1a){mxUtils[_0xd38c[129]](_0x867fx19[_0xd38c[166]])};_0x867fx19[_0xd38c[169]](_0xd38c[234]+ _0x867fx18)}catch(e){this[_0xd38c[0]][_0xd38c[142]](_0xd38c[233])}}else {this[_0xd38c[0]][_0xd38c[142]](_0xd38c[233])}};EditorUi[_0xd38c[10]][_0xd38c[235]]= function(_0x867fx2b){var _0x867fx2c=(_0x867fx2b!= null)?_0x867fx2b:window[_0xd38c[237]][_0xd38c[236]];var _0x867fx2d=(_0x867fx2c[_0xd38c[69]](_0xd38c[238])> 0)?1:0;for(var _0x867fx26 in urlParams){if(_0x867fx2d== 0){_0x867fx2c+= _0xd38c[238]}else {_0x867fx2c+= _0xd38c[239]};_0x867fx2c+= _0x867fx26+ _0xd38c[240]+ urlParams[_0x867fx26];_0x867fx2d++};return _0x867fx2c};EditorUi[_0xd38c[10]][_0xd38c[109]]= function(){var _0x867fx2e=this[_0xd38c[12]][_0xd38c[112]](_0xd38c[241]);var _0x867fx2f=this[_0xd38c[12]][_0xd38c[112]](_0xd38c[242]);var _0x867fx30=this[_0xd38c[0]][_0xd38c[124]];var _0x867fx31=function(){_0x867fx2e[_0xd38c[114]](_0x867fx30[_0xd38c[243]]());_0x867fx2f[_0xd38c[114]](_0x867fx30[_0xd38c[244]]())};_0x867fx30[_0xd38c[33]](mxEvent.ADD,_0x867fx31);_0x867fx30[_0xd38c[33]](mxEvent.UNDO,_0x867fx31);_0x867fx30[_0xd38c[33]](mxEvent.REDO,_0x867fx31);_0x867fx30[_0xd38c[33]](mxEvent.CLEAR,_0x867fx31);_0x867fx31()};EditorUi[_0xd38c[10]][_0xd38c[110]]= function(){var _0x867fx32=mxUtils[_0xd38c[20]](this,function(){var _0x867fx3=this[_0xd38c[0]][_0xd38c[4]];var _0x867fx33=!_0x867fx3[_0xd38c[245]]();var _0x867fx34=false;var _0x867fx35=false;var _0x867fx36=_0x867fx3[_0xd38c[246]]();if(_0x867fx36!= null){for(var _0x867fx37=0;_0x867fx37< _0x867fx36[_0xd38c[143]];_0x867fx37++){var _0x867fxb=_0x867fx36[_0x867fx37];if(_0x867fx3[_0xd38c[65]]()[_0xd38c[64]](_0x867fxb)){_0x867fx35= true};if(_0x867fx3[_0xd38c[65]]()[_0xd38c[71]](_0x867fxb)){_0x867fx34= true};if(_0x867fx35&& _0x867fx34){break}}};var _0x867fx38=[_0xd38c[115],_0xd38c[116],_0xd38c[247],_0xd38c[248],_0xd38c[249],_0xd38c[250],_0xd38c[6],_0xd38c[251],_0xd38c[252],_0xd38c[253],_0xd38c[254],_0xd38c[255],_0xd38c[256],_0xd38c[257],_0xd38c[258]];for(var _0x867fx37=0;_0x867fx37< _0x867fx38[_0xd38c[143]];_0x867fx37++){this[_0xd38c[12]][_0xd38c[112]](_0x867fx38[_0x867fx37])[_0xd38c[114]](_0x867fx33)};this[_0xd38c[12]][_0xd38c[112]](_0xd38c[259])[_0xd38c[114]](_0x867fx35);this[_0xd38c[12]][_0xd38c[112]](_0xd38c[260])[_0xd38c[114]](_0x867fx34);this[_0xd38c[12]][_0xd38c[112]](_0xd38c[261])[_0xd38c[114]](_0x867fx34);this[_0xd38c[12]][_0xd38c[112]](_0xd38c[263])[_0xd38c[114]](_0x867fx3[_0xd38c[262]]()> 1);this[_0xd38c[12]][_0xd38c[112]](_0xd38c[265])[_0xd38c[114]](_0x867fx3[_0xd38c[262]]()== 1&& _0x867fx3[_0xd38c[65]]()[_0xd38c[190]](_0x867fx3[_0xd38c[264]]())> 0);var _0x867fx39=_0x867fx34&& _0x867fx3[_0xd38c[262]]()== 1;this[_0xd38c[12]][_0xd38c[112]](_0xd38c[266])[_0xd38c[114]](_0x867fx39&& _0x867fx3[_0xd38c[65]]()[_0xd38c[71]](_0x867fx3[_0xd38c[65]]()[_0xd38c[221]](_0x867fx3[_0xd38c[264]]())));var _0x867fx3a=[_0xd38c[267],_0xd38c[268],_0xd38c[269],_0xd38c[270],_0xd38c[271],_0xd38c[272],_0xd38c[273],_0xd38c[274],_0xd38c[275]];for(var _0x867fx37=0;_0x867fx37< _0x867fx3a[_0xd38c[143]];_0x867fx37++){this[_0xd38c[13]][_0xd38c[112]](_0x867fx3a[_0x867fx37])[_0xd38c[114]](_0x867fx33)};_0x867fx3a= [_0xd38c[276],_0xd38c[277],_0xd38c[278]];for(var _0x867fx37=0;_0x867fx37< _0x867fx3a[_0xd38c[143]];_0x867fx37++){this[_0xd38c[13]][_0xd38c[112]](_0x867fx3a[_0x867fx37])[_0xd38c[114]](_0x867fx35)};this[_0xd38c[12]][_0xd38c[112]](_0xd38c[279])[_0xd38c[114]](_0x867fx35);this[_0xd38c[13]][_0xd38c[112]](_0xd38c[280])[_0xd38c[114]](_0x867fx3[_0xd38c[262]]()> 1);this[_0xd38c[13]][_0xd38c[112]](_0xd38c[283])[_0xd38c[114]](_0x867fx34|| (_0x867fx35&& _0x867fx3[_0xd38c[282]](_0x867fx3[_0xd38c[89]][_0xd38c[281]](_0x867fx3[_0xd38c[264]]()))));this[_0xd38c[13]][_0xd38c[112]](_0xd38c[286])[_0xd38c[114]](_0x867fx3[_0xd38c[284]]&& ((_0x867fx3[_0xd38c[89]][_0xd38c[285]]!= null)|| (_0x867fx3[_0xd38c[262]]()== 1&& _0x867fx3[_0xd38c[192]](_0x867fx3[_0xd38c[264]]()))));this[_0xd38c[12]][_0xd38c[112]](_0xd38c[287])[_0xd38c[114]](_0x867fx3[_0xd38c[89]][_0xd38c[285]]!= null);this[_0xd38c[12]][_0xd38c[112]](_0xd38c[288])[_0xd38c[114]](_0x867fx3[_0xd38c[89]][_0xd38c[285]]!= null);var _0x867fx3b=_0x867fx3[_0xd38c[262]]()== 1&& _0x867fx3[_0xd38c[192]](_0x867fx3[_0xd38c[264]]());this[_0xd38c[12]][_0xd38c[112]](_0xd38c[289])[_0xd38c[114]](_0x867fx3b);this[_0xd38c[12]][_0xd38c[112]](_0xd38c[290])[_0xd38c[114]](_0x867fx3b);this[_0xd38c[12]][_0xd38c[112]](_0xd38c[291])[_0xd38c[114]](_0x867fx3b);this[_0xd38c[12]][_0xd38c[112]](_0xd38c[292])[_0xd38c[114]](_0x867fx3[_0xd38c[262]]()== 1);this[_0xd38c[12]][_0xd38c[112]](_0xd38c[294])[_0xd38c[114]](_0x867fx3[_0xd38c[262]]()== 1&& _0x867fx3[_0xd38c[293]](_0x867fx3[_0xd38c[264]]())!= null)});this[_0xd38c[0]][_0xd38c[4]][_0xd38c[295]]()[_0xd38c[33]](mxEvent.CHANGE,_0x867fx32);_0x867fx32()};EditorUi[_0xd38c[10]][_0xd38c[15]]= function(){var _0x867fx3c=mxClient[_0xd38c[29]]&& (document[_0xd38c[30]]== null|| document[_0xd38c[30]]== 5);var _0x867fx3d=this[_0xd38c[1]][_0xd38c[296]];var _0x867fx3e=this[_0xd38c[1]][_0xd38c[297]];if(this[_0xd38c[1]]== document[_0xd38c[21]]){_0x867fx3d= document[_0xd38c[21]][_0xd38c[296]]|| document[_0xd38c[120]][_0xd38c[296]];_0x867fx3e= (_0x867fx3c)?document[_0xd38c[21]][_0xd38c[297]]|| document[_0xd38c[120]][_0xd38c[297]]:document[_0xd38c[120]][_0xd38c[297]]};var _0x867fx3f=Math[_0xd38c[299]](0,Math[_0xd38c[298]](this[_0xd38c[107]],_0x867fx3d- this[_0xd38c[103]]- 20));var _0x867fx40=Math[_0xd38c[299]](0,Math[_0xd38c[298]](this[_0xd38c[108]],_0x867fx3e- this[_0xd38c[104]]- this[_0xd38c[105]]- this[_0xd38c[106]]- this[_0xd38c[103]]- 1));this[_0xd38c[23]][_0xd38c[6]][_0xd38c[300]]= this[_0xd38c[104]]+ _0xd38c[301];this[_0xd38c[25]][_0xd38c[6]][_0xd38c[302]]= this[_0xd38c[104]]+ _0xd38c[301];this[_0xd38c[25]][_0xd38c[6]][_0xd38c[300]]= this[_0xd38c[105]]+ _0xd38c[301];var _0x867fx41=this[_0xd38c[104]]+ this[_0xd38c[105]];if(!mxClient[_0xd38c[303]]){_0x867fx41+= 1};this[_0xd38c[27]][_0xd38c[6]][_0xd38c[302]]= _0x867fx41+ _0xd38c[301];this[_0xd38c[27]][_0xd38c[6]][_0xd38c[304]]= _0x867fx3f+ _0xd38c[301];this[_0xd38c[79]][_0xd38c[6]][_0xd38c[304]]= _0x867fx3f+ _0xd38c[301];this[_0xd38c[79]][_0xd38c[6]][_0xd38c[300]]= _0x867fx40+ _0xd38c[301];this[_0xd38c[79]][_0xd38c[6]][_0xd38c[305]]= this[_0xd38c[106]]+ _0xd38c[301];this[_0xd38c[26]][_0xd38c[6]][_0xd38c[306]]= (_0x867fx3f+ this[_0xd38c[103]])+ _0xd38c[301];this[_0xd38c[26]][_0xd38c[6]][_0xd38c[302]]= this[_0xd38c[27]][_0xd38c[6]][_0xd38c[302]];this[_0xd38c[28]][_0xd38c[6]][_0xd38c[300]]= this[_0xd38c[106]]+ _0xd38c[301];this[_0xd38c[28]][_0xd38c[6]][_0xd38c[307]]= _0xd38c[308];this[_0xd38c[309]][_0xd38c[6]][_0xd38c[302]]= this[_0xd38c[27]][_0xd38c[6]][_0xd38c[302]];this[_0xd38c[309]][_0xd38c[6]][_0xd38c[305]]= this[_0xd38c[79]][_0xd38c[6]][_0xd38c[305]];this[_0xd38c[309]][_0xd38c[6]][_0xd38c[306]]= _0x867fx3f+ _0xd38c[301];this[_0xd38c[310]][_0xd38c[6]][_0xd38c[304]]= this[_0xd38c[27]][_0xd38c[6]][_0xd38c[304]];this[_0xd38c[310]][_0xd38c[6]][_0xd38c[305]]= (_0x867fx40+ this[_0xd38c[106]])+ _0xd38c[301];if(_0x867fx3c){this[_0xd38c[23]][_0xd38c[6]][_0xd38c[304]]= _0x867fx3d+ _0xd38c[301];this[_0xd38c[25]][_0xd38c[6]][_0xd38c[304]]= this[_0xd38c[23]][_0xd38c[6]][_0xd38c[304]];var _0x867fx42=(_0x867fx3e- _0x867fx40- this[_0xd38c[103]]- this[_0xd38c[106]]- this[_0xd38c[104]]- this[_0xd38c[105]]);this[_0xd38c[27]][_0xd38c[6]][_0xd38c[300]]= _0x867fx42+ _0xd38c[301];this[_0xd38c[26]][_0xd38c[6]][_0xd38c[304]]= (_0x867fx3d- _0x867fx3f- this[_0xd38c[103]])+ _0xd38c[301];var _0x867fx43=(_0x867fx3e- this[_0xd38c[106]]- this[_0xd38c[104]]- this[_0xd38c[105]]);this[_0xd38c[26]][_0xd38c[6]][_0xd38c[300]]= _0x867fx43+ _0xd38c[301];this[_0xd38c[28]][_0xd38c[6]][_0xd38c[304]]= this[_0xd38c[23]][_0xd38c[6]][_0xd38c[304]];this[_0xd38c[309]][_0xd38c[6]][_0xd38c[300]]= _0x867fx43+ _0xd38c[301]}else {this[_0xd38c[27]][_0xd38c[6]][_0xd38c[305]]= (_0x867fx40+ this[_0xd38c[103]]+ this[_0xd38c[106]])+ _0xd38c[301];this[_0xd38c[26]][_0xd38c[6]][_0xd38c[305]]= this[_0xd38c[79]][_0xd38c[6]][_0xd38c[305]]}};EditorUi[_0xd38c[10]][_0xd38c[14]]= function(){this[_0xd38c[23]]= this[_0xd38c[312]](_0xd38c[311]);this[_0xd38c[25]]= this[_0xd38c[312]](_0xd38c[313]);this[_0xd38c[27]]= this[_0xd38c[312]](_0xd38c[314]);this[_0xd38c[79]]= this[_0xd38c[312]](_0xd38c[315]);this[_0xd38c[26]]= this[_0xd38c[312]](_0xd38c[316]);this[_0xd38c[28]]= this[_0xd38c[312]](_0xd38c[317]);this[_0xd38c[309]]= this[_0xd38c[312]](_0xd38c[318]);this[_0xd38c[310]]= this[_0xd38c[312]](_0xd38c[319]);this[_0xd38c[23]][_0xd38c[6]][_0xd38c[302]]= _0xd38c[320];this[_0xd38c[23]][_0xd38c[6]][_0xd38c[306]]= _0xd38c[320];this[_0xd38c[23]][_0xd38c[6]][_0xd38c[321]]= _0xd38c[320];this[_0xd38c[25]][_0xd38c[6]][_0xd38c[306]]= _0xd38c[320];this[_0xd38c[25]][_0xd38c[6]][_0xd38c[321]]= _0xd38c[320];this[_0xd38c[27]][_0xd38c[6]][_0xd38c[306]]= _0xd38c[320];this[_0xd38c[79]][_0xd38c[6]][_0xd38c[306]]= _0xd38c[320];this[_0xd38c[26]][_0xd38c[6]][_0xd38c[321]]= _0xd38c[320];this[_0xd38c[28]][_0xd38c[6]][_0xd38c[306]]= _0xd38c[320];this[_0xd38c[28]][_0xd38c[6]][_0xd38c[321]]= _0xd38c[320];this[_0xd38c[28]][_0xd38c[6]][_0xd38c[305]]= _0xd38c[320];this[_0xd38c[310]][_0xd38c[6]][_0xd38c[306]]= _0xd38c[320];this[_0xd38c[310]][_0xd38c[6]][_0xd38c[300]]= this[_0xd38c[103]]+ _0xd38c[301];this[_0xd38c[309]][_0xd38c[6]][_0xd38c[304]]= this[_0xd38c[103]]+ _0xd38c[301]};EditorUi[_0xd38c[10]][_0xd38c[16]]= function(){this[_0xd38c[322]]= this[_0xd38c[13]][_0xd38c[324]](this[_0xd38c[312]](_0xd38c[323]));this[_0xd38c[23]][_0xd38c[325]](this[_0xd38c[322]][_0xd38c[1]]);this[_0xd38c[326]]= this[_0xd38c[328]](this[_0xd38c[312]](_0xd38c[327]));this[_0xd38c[25]][_0xd38c[325]](this[_0xd38c[326]][_0xd38c[1]]);this[_0xd38c[329]]= this[_0xd38c[330]](this[_0xd38c[27]]);this[_0xd38c[28]][_0xd38c[325]](this[_0xd38c[331]]());this[_0xd38c[332]]= this[_0xd38c[333]]();this[_0xd38c[0]][_0xd38c[33]](_0xd38c[334],mxUtils[_0xd38c[20]](this,function(){this[_0xd38c[336]](this[_0xd38c[0]][_0xd38c[335]]())}));this[_0xd38c[336]](this[_0xd38c[0]][_0xd38c[335]]());this[_0xd38c[322]][_0xd38c[1]][_0xd38c[325]](this[_0xd38c[332]]);this[_0xd38c[1]][_0xd38c[325]](this[_0xd38c[23]]);this[_0xd38c[1]][_0xd38c[325]](this[_0xd38c[25]]);this[_0xd38c[1]][_0xd38c[325]](this[_0xd38c[27]]);this[_0xd38c[1]][_0xd38c[325]](this[_0xd38c[79]]);this[_0xd38c[1]][_0xd38c[325]](this[_0xd38c[26]]);this[_0xd38c[1]][_0xd38c[325]](this[_0xd38c[28]]);this[_0xd38c[1]][_0xd38c[325]](this[_0xd38c[309]]);this[_0xd38c[1]][_0xd38c[325]](this[_0xd38c[310]]);this[_0xd38c[337]](this[_0xd38c[309]],true,0,mxUtils[_0xd38c[20]](this,function(_0x867fx44){this[_0xd38c[107]]= _0x867fx44;this[_0xd38c[15]]();this[_0xd38c[0]][_0xd38c[4]][_0xd38c[100]]();this[_0xd38c[0]][_0xd38c[80]][_0xd38c[101]](false);this[_0xd38c[0]][_0xd38c[80]][_0xd38c[80]][_0xd38c[100]]()}));this[_0xd38c[337]](this[_0xd38c[310]],false,this[_0xd38c[106]],mxUtils[_0xd38c[20]](this,function(_0x867fx44){this[_0xd38c[108]]= _0x867fx44;this[_0xd38c[15]]();this[_0xd38c[0]][_0xd38c[80]][_0xd38c[101]](false);this[_0xd38c[0]][_0xd38c[80]][_0xd38c[80]][_0xd38c[100]]()}))};EditorUi[_0xd38c[10]][_0xd38c[333]]= function(){var _0x867fx2=document[_0xd38c[339]](_0xd38c[338]);_0x867fx2[_0xd38c[340]]= _0xd38c[341];return _0x867fx2};EditorUi[_0xd38c[10]][_0xd38c[333]]= function(){var _0x867fx2=document[_0xd38c[339]](_0xd38c[338]);_0x867fx2[_0xd38c[340]]= _0xd38c[341];return _0x867fx2};EditorUi[_0xd38c[10]][_0xd38c[336]]= function(_0x867fx44){this[_0xd38c[332]][_0xd38c[342]]= _0x867fx44};EditorUi[_0xd38c[10]][_0xd38c[328]]= function(_0x867fx2){return new Toolbar(this,_0x867fx2)};EditorUi[_0xd38c[10]][_0xd38c[330]]= function(_0x867fx2){return new Sidebar(this,_0x867fx2)};EditorUi[_0xd38c[10]][_0xd38c[331]]= function(){return this[_0xd38c[312]](_0xd38c[343])};EditorUi[_0xd38c[10]][_0xd38c[312]]= function(_0x867fx45){var _0x867fx46=document[_0xd38c[339]](_0xd38c[344]);_0x867fx46[_0xd38c[340]]= _0x867fx45;return _0x867fx46};EditorUi[_0xd38c[10]][_0xd38c[345]]= function(_0x867fx45){var _0x867fx46=document[_0xd38c[339]](_0x867fx45);return _0x867fx46};EditorUi[_0xd38c[10]][_0xd38c[346]]= function(_0x867fx45){var _0x867fx46=document[_0xd38c[339]](_0xd38c[347]);_0x867fx46[_0xd38c[340]]= _0x867fx45;return _0x867fx46};EditorUi[_0xd38c[10]][_0xd38c[337]]= function(_0x867fx46,_0x867fx47,_0x867fx48,_0x867fx49){var _0x867fx4a=null;var _0x867fx4b=null;function _0x867fx4c(){return parseInt(((_0x867fx47)?_0x867fx46[_0xd38c[6]][_0xd38c[306]]:_0x867fx46[_0xd38c[6]][_0xd38c[305]]))}function _0x867fx4d(_0x867fx6){if(_0x867fx4a!= null){var _0x867fx4e= new mxPoint(mxEvent[_0xd38c[348]](_0x867fx6),mxEvent[_0xd38c[349]](_0x867fx6));_0x867fx49(Math[_0xd38c[299]](0,_0x867fx4b+ ((_0x867fx47)?(_0x867fx4e[_0xd38c[350]]- _0x867fx4a[_0xd38c[350]]):(_0x867fx4a[_0xd38c[351]]- _0x867fx4e[_0xd38c[351]]))- _0x867fx48));mxEvent[_0xd38c[74]](_0x867fx6)}}function _0x867fx4f(_0x867fx6){_0x867fx4d(_0x867fx6);_0x867fx4a= null;_0x867fx4b= null}mxEvent[_0xd38c[82]](_0x867fx46,function(_0x867fx6){_0x867fx4a= new mxPoint(mxEvent[_0xd38c[348]](_0x867fx6),mxEvent[_0xd38c[349]](_0x867fx6));_0x867fx4b= _0x867fx4c();mxEvent[_0xd38c[74]](_0x867fx6)});mxEvent[_0xd38c[33]](document,_0xd38c[352],_0x867fx4d);mxEvent[_0xd38c[33]](document,_0xd38c[353],_0x867fx4d);mxEvent[_0xd38c[33]](document,_0xd38c[354],_0x867fx4f);mxEvent[_0xd38c[33]](document,_0xd38c[355],_0x867fx4f)};EditorUi[_0xd38c[10]][_0xd38c[73]]= function(_0x867fx46,_0x867fx3d,_0x867fx3e,_0x867fx50,_0x867fx51,_0x867fx52){this[_0xd38c[356]]();this[_0xd38c[357]]= new Dialog(this,_0x867fx46,_0x867fx3d,(mxClient[_0xd38c[358]])?_0x867fx3e- 12:_0x867fx3e,_0x867fx50,_0x867fx51,_0x867fx52)};EditorUi[_0xd38c[10]][_0xd38c[356]]= function(){if(this[_0xd38c[357]]!= null){this[_0xd38c[357]][_0xd38c[359]]();this[_0xd38c[357]]= null;this[_0xd38c[0]][_0xd38c[4]][_0xd38c[1]][_0xd38c[47]]()}};EditorUi[_0xd38c[10]][_0xd38c[360]]= function(_0x867fx53){if(!_0x867fx53&& this[_0xd38c[0]][_0xd38c[125]]!= null){this[_0xd38c[172]](this[_0xd38c[0]][_0xd38c[361]]())}else {this[_0xd38c[73]]( new SaveDialog(this)[_0xd38c[1]],300,100,true,true)}};EditorUi[_0xd38c[10]][_0xd38c[362]]= function(_0x867fx53){if(!_0x867fx53&& this[_0xd38c[0]][_0xd38c[125]]!= null){this[_0xd38c[224]](this[_0xd38c[0]][_0xd38c[361]]())}else {}};EditorUi[_0xd38c[10]][_0xd38c[363]]= function(_0x867fx54,_0x867fx55,_0x867fx56){var _0x867fx3=this[_0xd38c[0]][_0xd38c[4]];var _0x867fxb=_0x867fx3[_0xd38c[264]]();_0x867fx55= this[_0xd38c[364]]!= null?this[_0xd38c[364]]:_0x867fx55;_0x867fx3[_0xd38c[65]]()[_0xd38c[365]]();try{_0x867fx54[_0xd38c[366]](_0x867fx3[_0xd38c[222]](),_0x867fxb)}catch(e){throw e}finally{if(_0x867fx55&& navigator[_0xd38c[368]][_0xd38c[69]](_0xd38c[367])< 0){var _0x867fx57= new mxMorphing(_0x867fx3);_0x867fx57[_0xd38c[33]](mxEvent.DONE,mxUtils[_0xd38c[20]](this,function(){_0x867fx3[_0xd38c[65]]()[_0xd38c[369]]()}));_0x867fx57[_0xd38c[370]]()}else {_0x867fx3[_0xd38c[65]]()[_0xd38c[369]]()}}};EditorUi[_0xd38c[10]][_0xd38c[97]]= function(_0x867fx1){var _0x867fx3=this[_0xd38c[0]][_0xd38c[4]];var _0x867fxf= new mxKeyHandler(_0x867fx3);_0x867fxf[_0xd38c[371]]= function(_0x867fx6){return mxEvent[_0xd38c[371]](_0x867fx6)|| (mxClient[_0xd38c[372]]&& _0x867fx6[_0xd38c[373]])};function _0x867fx58(_0x867fx59){if(!_0x867fx3[_0xd38c[245]]()){var _0x867fx48=0;var _0x867fx5a=0;if(_0x867fx59== 37){_0x867fx48= -1}else {if(_0x867fx59== 38){_0x867fx5a= -1}else {if(_0x867fx59== 39){_0x867fx48= 1}else {if(_0x867fx59== 40){_0x867fx5a= 1}}}};_0x867fx3[_0xd38c[374]](_0x867fx3[_0xd38c[246]](),_0x867fx48,_0x867fx5a);_0x867fx3[_0xd38c[375]](_0x867fx3[_0xd38c[264]]())}}var _0x867fx5b=mxUtils[_0xd38c[20]](this,function(_0x867fx5c,_0x867fx5d,_0x867fx26,_0x867fx5e){var _0x867fx5f=this[_0xd38c[12]][_0xd38c[112]](_0x867fx26);if(_0x867fx5f!= null){var _0x867fx20=function(){if(_0x867fx5f[_0xd38c[376]]){_0x867fx5f[_0xd38c[377]]()}};if(_0x867fx5d){if(_0x867fx5e){_0x867fxf[_0xd38c[378]](_0x867fx5c,_0x867fx20)}else {_0x867fxf[_0xd38c[379]](_0x867fx5c,_0x867fx20)}}else {if(_0x867fx5e){_0x867fxf[_0xd38c[380]](_0x867fx5c,_0x867fx20)}else {_0x867fxf[_0xd38c[381]](_0x867fx5c,_0x867fx20)}}}});var _0x867fx60=this;var _0x867fx61=_0x867fxf[_0xd38c[382]];_0x867fxf[_0xd38c[382]]= function(_0x867fx6){_0x867fx60[_0xd38c[356]]();_0x867fx61[_0xd38c[50]](this,arguments)};_0x867fxf[_0xd38c[383]]= function(){};_0x867fxf[_0xd38c[381]](8,function(){_0x867fx3[_0xd38c[384]](true)});_0x867fxf[_0xd38c[381]](13,function(){_0x867fx3[_0xd38c[384]](false)});_0x867fxf[_0xd38c[381]](33,function(){_0x867fx3[_0xd38c[288]]()});_0x867fxf[_0xd38c[381]](34,function(){_0x867fx3[_0xd38c[289]]()});_0x867fxf[_0xd38c[381]](36,function(){_0x867fx3[_0xd38c[287]]()});_0x867fxf[_0xd38c[381]](35,function(){_0x867fx3[_0xd38c[15]]()});_0x867fxf[_0xd38c[381]](37,function(){_0x867fx58(37)});_0x867fxf[_0xd38c[381]](38,function(){_0x867fx58(38)});_0x867fxf[_0xd38c[381]](39,function(){_0x867fx58(39)});_0x867fxf[_0xd38c[381]](40,function(){_0x867fx58(40)});_0x867fxf[_0xd38c[381]](113,function(){_0x867fx3[_0xd38c[70]]()});_0x867fx5b(46,false,_0xd38c[247]);_0x867fx5b(82,true,_0xd38c[257]);_0x867fx5b(83,true,_0xd38c[172]);_0x867fx5b(83,true,_0xd38c[180],true);_0x867fx5b(107,false,_0xd38c[385]);_0x867fx5b(109,false,_0xd38c[386]);_0x867fx5b(65,true,_0xd38c[387]);_0x867fx5b(86,true,_0xd38c[388],true);_0x867fx5b(69,true,_0xd38c[389],true);_0x867fx5b(69,true,_0xd38c[390]);_0x867fx5b(66,true,_0xd38c[253]);_0x867fx5b(70,true,_0xd38c[252]);_0x867fx5b(68,true,_0xd38c[248]);_0x867fx5b(90,true,_0xd38c[241]);_0x867fx5b(89,true,_0xd38c[242]);_0x867fx5b(88,true,_0xd38c[115]);_0x867fx5b(67,true,_0xd38c[116]);_0x867fx5b(81,true,_0xd38c[391]);_0x867fx5b(86,true,_0xd38c[111]);_0x867fx5b(71,true,_0xd38c[263]);_0x867fx5b(71,true,_0xd38c[392],true);_0x867fx5b(85,true,_0xd38c[265]);_0x867fx5b(112,false,_0xd38c[393]);_0x867fx5b(80,true,_0xd38c[224],true);return _0x867fxf};EditorUi[_0xd38c[10]][_0xd38c[58]]= function(_0x867fx3,_0x867fx36,_0x867fx62,_0x867fx63){for(var _0x867fx37=0;_0x867fx37< _0x867fx36[_0xd38c[143]];_0x867fx37++){_0x867fx3[_0xd38c[396]]( new mxMultiplicity(true,_0x867fx36[_0x867fx37],null,null,_0x867fx62[_0x867fx37][0],_0x867fx62[_0x867fx37][1],null,mxResources[_0xd38c[112]](_0x867fx36[_0x867fx37])+ _0xd38c[394]+ _0x867fx62[_0x867fx37][0]+ _0xd38c[395],null));_0x867fx3[_0xd38c[396]]( new mxMultiplicity(false,_0x867fx36[_0x867fx37],null,null,_0x867fx63[_0x867fx37][0],_0x867fx63[_0x867fx37][1],null,mxResources[_0xd38c[112]](_0x867fx36[_0x867fx37])+ _0xd38c[394]+ _0x867fx63[_0x867fx37][0]+ _0xd38c[397],null))}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/public/assets/plugins/jscripty/js/Graph.js b/public/assets/plugins/jscripty/js/Graph.js index b9e3713..66dc905 100644 --- a/public/assets/plugins/jscripty/js/Graph.js +++ b/public/assets/plugins/jscripty/js/Graph.js @@ -1 +1 @@ -var _0xd1dd=["\x63\x61\x6C\x6C","\x73\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x73\x65\x74\x44\x72\x6F\x70\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x50\x61\x6E\x6E\x69\x6E\x67","\x49\x53\x5F\x54\x4F\x55\x43\x48","\x73\x65\x74\x54\x6F\x6F\x6C\x74\x69\x70\x73","\x73\x65\x74\x41\x6C\x6C\x6F\x77\x4C\x6F\x6F\x70\x73","\x73\x65\x74\x4D\x75\x6C\x74\x69\x67\x72\x61\x70\x68","\x61\x6C\x6C\x6F\x77\x41\x75\x74\x6F\x50\x61\x6E\x6E\x69\x6E\x67","\x72\x65\x73\x65\x74\x45\x64\x67\x65\x73\x4F\x6E\x43\x6F\x6E\x6E\x65\x63\x74","\x63\x6F\x6E\x73\x74\x72\x61\x69\x6E\x43\x68\x69\x6C\x64\x72\x65\x6E","\x74\x61\x72\x67\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x49\x6D\x61\x67\x65","\x63\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x74\x41\x6C\x6C\x6F\x77\x44\x61\x6E\x67\x6C\x69\x6E\x67\x45\x64\x67\x65\x73","\x73\x65\x74\x43\x72\x65\x61\x74\x65\x54\x61\x72\x67\x65\x74","\x69\x73\x56\x61\x6C\x69\x64\x53\x6F\x75\x72\x63\x65","\x61\x70\x70\x6C\x79","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x63\x6F\x6E\x6E\x65\x63\x74","\x32","\x61\x6C\x74\x65\x72\x6E\x61\x74\x65\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x76\x65\x72\x74\x69\x63\x61\x6C","\x6C\x6F\x61\x64\x53\x74\x79\x6C\x65\x73\x68\x65\x65\x74","\x67\x65\x74\x52\x75\x62\x62\x65\x72\x62\x61\x6E\x64","\x63\x75\x72\x73\x6F\x72","\x73\x74\x79\x6C\x65","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x70\x6F\x69\x6E\x74\x65\x72","\x62\x69\x6E\x64","\x61\x64\x64\x4C\x69\x73\x74\x65\x6E\x65\x72","\x70\x61\x6E\x6E\x69\x6E\x67\x48\x61\x6E\x64\x6C\x65\x72","\x64\x65\x66\x61\x75\x6C\x74","\x69\x73\x48\x74\x6D\x6C\x4C\x61\x62\x65\x6C","\x67\x65\x74\x53\x74\x61\x74\x65","\x76\x69\x65\x77","\x67\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65","\x68\x74\x6D\x6C","\x31","\x77\x68\x69\x74\x65\x53\x70\x61\x63\x65","\x77\x72\x61\x70","\x67\x65\x74\x4C\x61\x62\x65\x6C\x56\x61\x6C\x75\x65","\x63\x65\x6C\x6C\x52\x65\x6E\x64\x65\x72\x65\x72","\x68\x74\x6D\x6C\x45\x6E\x74\x69\x74\x69\x65\x73","\x69\x73\x43\x65\x6C\x6C\x4C\x6F\x63\x6B\x65\x64","\x74\x61\x70\x41\x6E\x64\x48\x6F\x6C\x64\x54\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x74\x61\x70\x41\x6E\x64\x48\x6F\x6C\x64","\x61\x63\x74\x69\x76\x65","\x67\x72\x61\x70\x68","\x67\x65\x74\x47\x72\x61\x70\x68\x58","\x67\x65\x74\x47\x72\x61\x70\x68\x59","\x73\x74\x61\x72\x74","\x70\x61\x6E\x6E\x69\x6E\x67\x54\x72\x69\x67\x67\x65\x72","\x63\x65\x6C\x6C","\x69\x73\x43\x65\x6C\x6C\x53\x65\x6C\x65\x63\x74\x65\x64","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x6F\x75\x6E\x74","\x72\x65\x6D\x6F\x76\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x69\x6E\x69\x74\x54\x6F\x75\x63\x68","\x65\x78\x74\x65\x6E\x64","\x6D\x69\x6E\x46\x69\x74\x53\x63\x61\x6C\x65","\x6D\x61\x78\x46\x69\x74\x53\x63\x61\x6C\x65","\x67\x65\x74\x44\x6F\x63\x75\x6D\x65\x6E\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x2F\x64\x65\x66\x61\x75\x6C\x74\x2E\x78\x6D\x6C","\x6C\x6F\x61\x64","\x6F\x77\x6E\x65\x72\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x67\x65\x74\x53\x74\x79\x6C\x65\x73\x68\x65\x65\x74","\x64\x65\x63\x6F\x64\x65","\x66\x6C\x69\x70\x45\x64\x67\x65","\x67\x65\x74\x56\x61\x6C\x75\x65","\x45\x4C\x42\x4F\x57\x5F\x48\x4F\x52\x49\x5A\x4F\x4E\x54\x41\x4C","\x45\x4C\x42\x4F\x57\x5F\x56\x45\x52\x54\x49\x43\x41\x4C","\x73\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x73","\x73\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65","\x69\x73\x45\x64\x67\x65","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x63\x6C\x6F\x6E\x65\x43\x65\x6C\x6C\x73","\x67\x65\x6F\x6D\x65\x74\x72\x79","\x70\x6F\x69\x6E\x74\x73","\x67\x65\x74\x53\x74\x79\x6C\x65","\x73\x65\x74\x53\x74\x79\x6C\x65","\x63\x72\x65\x61\x74\x65\x45\x64\x67\x65\x53\x74\x61\x74\x65","\x63\x72\x65\x61\x74\x65\x53\x74\x61\x74\x65","\x66\x61\x63\x74\x6F\x72\x79\x4D\x65\x74\x68\x6F\x64","\x69\x73\x43\x65\x6C\x6C\x46\x6F\x6C\x64\x61\x62\x6C\x65","\x66\x6F\x6C\x64\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x53\x77\x69\x6D\x6C\x61\x6E\x65","\x69\x73\x56\x61\x6C\x69\x64\x52\x6F\x6F\x74","\x63\x72\x65\x61\x74\x65\x47\x72\x6F\x75\x70\x43\x65\x6C\x6C","\x67\x72\x6F\x75\x70","\x67\x65\x74\x54\x6F\x6F\x6C\x74\x69\x70\x46\x6F\x72\x43\x65\x6C\x6C","","\x69\x73\x56\x65\x72\x74\x65\x78","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x5F","\x6E\x6F\x64\x65\x4E\x61\x6D\x65","\x76\x61\x6C\x75\x65","\x67\x65\x74","\x63\x6F\x6E\x76\x65\x72\x74\x56\x61\x6C\x75\x65\x54\x6F\x53\x74\x72\x69\x6E\x67","\x6F\x62\x6A\x65\x63\x74","\x6C\x61\x62\x65\x6C","\x67\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x63\x65\x6C\x6C\x4C\x61\x62\x65\x6C\x43\x68\x61\x6E\x67\x65\x64","\x63\x6C\x6F\x6E\x65\x4E\x6F\x64\x65","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x73\x65\x74\x4C\x69\x6E\x6B\x46\x6F\x72\x43\x65\x6C\x6C","\x63\x72\x65\x61\x74\x65\x58\x6D\x6C\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x55\x73\x65\x72\x4F\x62\x6A\x65\x63\x74","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x6C\x65\x6E\x67\x74\x68","\x6C\x69\x6E\x6B","\x72\x65\x6D\x6F\x76\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x73\x65\x74\x56\x61\x6C\x75\x65","\x6D\x6F\x64\x65\x6C","\x67\x65\x74\x4C\x69\x6E\x6B\x46\x6F\x72\x43\x65\x6C\x6C","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64","\x6D\x61\x72\x6B\x65\x72","\x66\x69\x72\x73\x74","\x68\x69\x64\x65\x4D\x65\x6E\x75","\x75\x70\x64\x61\x74\x65\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74","\x67\x72\x61\x70\x68\x58","\x67\x72\x61\x70\x68\x59","\x67\x65\x74\x43\x65\x6C\x6C\x41\x74","\x73\x74\x61\x74\x65","\x73\x68\x61\x70\x65","\x6E\x6F\x64\x65","\x66\x69\x72\x65\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74","\x4D\x4F\x55\x53\x45\x5F\x44\x4F\x57\x4E","\x69\x73\x4D\x65\x6E\x75\x53\x68\x6F\x77\x69\x6E\x67","\x67\x65\x74\x43\x65\x6C\x6C","\x69\x73\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x45\x6D\x70\x74\x79","\x4D\x4F\x55\x53\x45\x5F\x55\x50","\x69\x73\x45\x64\x69\x74\x69\x6E\x67","\x67\x65\x74\x45\x76\x65\x6E\x74","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x58","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x59","\x70\x6F\x70\x75\x70","\x63\x6F\x6E\x73\x75\x6D\x65","\x4D\x4F\x55\x53\x45\x5F\x4D\x4F\x56\x45","\x69\x73\x43\x6F\x6E\x73\x75\x6D\x65\x64","\x72\x6F\x74\x61\x74\x69\x6F\x6E\x45\x6E\x61\x62\x6C\x65\x64","\x62\x61\x73\x65\x53\x70\x61\x63\x69\x6E\x67\x54\x6F\x70","\x62\x61\x73\x65\x53\x70\x61\x63\x69\x6E\x67\x42\x6F\x74\x74\x6F\x6D","\x48\x41\x4E\x44\x4C\x45\x5F\x53\x49\x5A\x45","\x4C\x41\x42\x45\x4C\x5F\x48\x41\x4E\x44\x4C\x45\x5F\x53\x49\x5A\x45","\x74\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x67\x72\x69\x64\x53\x69\x7A\x65","\x73\x65\x6C\x65\x63\x74\x4F\x6E\x50\x6F\x70\x75\x70","\x75\x73\x65\x4C\x65\x66\x74\x42\x75\x74\x74\x6F\x6E\x46\x6F\x72\x50\x61\x6E\x6E\x69\x6E\x67","\x69\x73\x50\x61\x6E\x6E\x69\x6E\x67\x54\x72\x69\x67\x67\x65\x72","\x69\x67\x6E\x6F\x72\x65\x43\x65\x6C\x6C","\x69\x73\x43\x6F\x6E\x74\x72\x6F\x6C\x44\x6F\x77\x6E","\x69\x73\x53\x68\x69\x66\x74\x44\x6F\x77\x6E","\x75\x73\x65\x50\x6F\x70\x75\x70\x54\x72\x69\x67\x67\x65\x72","\x69\x73\x50\x6F\x70\x75\x70\x54\x72\x69\x67\x67\x65\x72","\x6D\x6F\x75\x73\x65\x44\x6F\x77\x6E","\x64\x65\x6C\x61\x79\x65\x64\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x48\x61\x6E\x64\x6C\x65\x72\x73","\x74\x6F\x6F\x6C\x74\x69\x70\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x74\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73\x48\x61\x6E\x64\x6C\x65\x72","\x70\x61\x6E\x6E\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x67\x72\x61\x70\x68\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x6C\x65\x63\x74\x43\x65\x6C\x6C\x73","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x64\x62\x6C\x43\x6C\x69\x63\x6B","\x63\x6F\x6E\x76\x65\x72\x74\x50\x6F\x69\x6E\x74","\x78","\x79","\x2F\x74\x6F\x75\x63\x68\x2D\x68\x61\x6E\x64\x6C\x65\x2E\x70\x6E\x67","\x68\x61\x6E\x64\x6C\x65\x49\x6D\x61\x67\x65","\x73\x69\x7A\x65\x72\x49\x6D\x61\x67\x65","\x73\x72\x63","\x2F\x74\x6F\x75\x63\x68\x2D\x63\x6F\x6E\x6E\x65\x63\x74\x6F\x72\x2E\x70\x6E\x67","\x69\x6E\x69\x74","\x69\x73\x43\x65\x6C\x6C\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x63\x6F\x6E\x6E\x65\x63\x74\x6F\x72\x49\x6D\x67","\x63\x72\x65\x61\x74\x65\x49\x6D\x61\x67\x65","\x77\x69\x64\x74\x68","\x32\x39\x70\x78","\x68\x65\x69\x67\x68\x74","\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x61\x62\x73\x6F\x6C\x75\x74\x65","\x74\x69\x74\x6C\x65","\x72\x65\x64\x69\x72\x65\x63\x74\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74\x73","\x70\x61\x64\x64\x69\x6E\x67","\x32\x70\x78","\x69\x73\x4D\x6F\x75\x73\x65\x44\x6F\x77\x6E","\x61\x64\x64\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x72\x65\x64\x72\x61\x77\x54\x6F\x6F\x6C\x73","\x72\x65\x64\x72\x61\x77","\x73\x69\x6E\x67\x6C\x65\x53\x69\x7A\x65\x72","\x6C\x65\x66\x74","\x6F\x66\x66\x73\x65\x74\x57\x69\x64\x74\x68","\x70\x78","\x74\x6F\x70","\x6F\x66\x66\x73\x65\x74\x48\x65\x69\x67\x68\x74","\x64\x65\x73\x74\x72\x6F\x79","\x72\x65\x6D\x6F\x76\x65\x43\x68\x69\x6C\x64","\x70\x61\x72\x65\x6E\x74\x4E\x6F\x64\x65","\x2F\x63\x6F\x6E\x6E\x65\x63\x74\x6F\x72\x2E\x70\x6E\x67","\x63\x6F\x6E\x6E\x65\x63\x74\x49\x6D\x61\x67\x65","\x49\x53\x5F\x49\x45","\x49\x53\x5F\x53\x56\x47","\x64\x69\x76","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x75\x72\x6C\x28","\x29","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x63\x65\x6E\x74\x65\x72","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x52\x65\x70\x65\x61\x74","\x6E\x6F\x2D\x72\x65\x70\x65\x61\x74","\x64\x69\x73\x70\x6C\x61\x79","\x49\x53\x5F\x51\x55\x49\x52\x4B\x53","\x69\x6E\x6C\x69\x6E\x65","\x69\x6E\x6C\x69\x6E\x65\x2D\x62\x6C\x6F\x63\x6B","\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E"];Graph= function(_0x9fc7x1,_0x9fc7x2,_0x9fc7x3,_0x9fc7x4){mxGraph[_0xd1dd[0]](this,_0x9fc7x1,_0x9fc7x2,_0x9fc7x3,_0x9fc7x4);this[_0xd1dd[1]](true);this[_0xd1dd[2]](false);this[_0xd1dd[3]](true);this[_0xd1dd[5]](!mxClient[_0xd1dd[4]]);this[_0xd1dd[6]](false);this[_0xd1dd[7]](false);this[_0xd1dd[8]]= true;this[_0xd1dd[9]]= false;this[_0xd1dd[10]]= false;this[_0xd1dd[12]][_0xd1dd[11]]= true;this[_0xd1dd[13]](false);this[_0xd1dd[12]][_0xd1dd[14]](false);this[_0xd1dd[12]][_0xd1dd[15]]= function(){return mxConnectionHandler[_0xd1dd[17]][_0xd1dd[15]][_0xd1dd[16]](this,arguments)&& urlParams[_0xd1dd[18]]!= _0xd1dd[19]};this[_0xd1dd[20]]= _0xd1dd[21];if(_0x9fc7x4== null){this[_0xd1dd[22]]()};var _0x9fc7x5= new mxRubberband(this);this[_0xd1dd[23]]= function(){return _0x9fc7x5};this[_0xd1dd[30]][_0xd1dd[29]](mxEvent.PAN_START,mxUtils[_0xd1dd[28]](this,function(){this[_0xd1dd[26]][_0xd1dd[25]][_0xd1dd[24]]= _0xd1dd[27]}));this[_0xd1dd[30]][_0xd1dd[29]](mxEvent.PAN_END,mxUtils[_0xd1dd[28]](this,function(){this[_0xd1dd[26]][_0xd1dd[25]][_0xd1dd[24]]= _0xd1dd[31]}));this[_0xd1dd[32]]= function(_0x9fc7x6){var _0x9fc7x7=this[_0xd1dd[34]][_0xd1dd[33]](_0x9fc7x6);var _0x9fc7x8=(_0x9fc7x7!= null)?_0x9fc7x7[_0xd1dd[25]]:this[_0xd1dd[35]](_0x9fc7x6);return _0x9fc7x8[_0xd1dd[36]]== _0xd1dd[37]|| _0x9fc7x8[_0xd1dd[38]]== _0xd1dd[39]};this[_0xd1dd[41]][_0xd1dd[40]]= function(_0x9fc7x7){var _0x9fc7x9=mxCellRenderer[_0xd1dd[17]][_0xd1dd[40]][_0xd1dd[16]](this,arguments);if(_0x9fc7x7[_0xd1dd[25]][_0xd1dd[38]]== _0xd1dd[39]&& _0x9fc7x7[_0xd1dd[25]][_0xd1dd[36]]!= 1){_0x9fc7x9= mxUtils[_0xd1dd[42]](_0x9fc7x9,false)};return _0x9fc7x9};this[_0xd1dd[43]]= function(_0x9fc7x6){return false};this[_0xd1dd[12]][_0xd1dd[44]]= 16;var _0x9fc7xa=this[_0xd1dd[12]][_0xd1dd[45]];this[_0xd1dd[12]][_0xd1dd[45]]= function(_0x9fc7xb,_0x9fc7x7){if(_0x9fc7x7== null){if(!this[_0xd1dd[47]][_0xd1dd[30]][_0xd1dd[46]]){_0x9fc7x5[_0xd1dd[50]](_0x9fc7xb[_0xd1dd[48]](),_0x9fc7xb[_0xd1dd[49]]());this[_0xd1dd[47]][_0xd1dd[30]][_0xd1dd[51]]= false}}else {if(tapAndHoldStartsConnection){_0x9fc7xa[_0xd1dd[16]](this,arguments)}else {if(this[_0xd1dd[47]][_0xd1dd[53]](_0x9fc7x7[_0xd1dd[52]])&& this[_0xd1dd[47]][_0xd1dd[54]]()> 1){this[_0xd1dd[47]][_0xd1dd[55]](_0x9fc7x7[_0xd1dd[52]])}}}};if(touchStyle){this[_0xd1dd[56]]()}};mxUtils[_0xd1dd[57]](Graph,mxGraph);Graph[_0xd1dd[17]][_0xd1dd[58]]= null;Graph[_0xd1dd[17]][_0xd1dd[59]]= null;Graph[_0xd1dd[17]][_0xd1dd[22]]= function(){var _0x9fc7xc=mxUtils[_0xd1dd[62]](STYLE_PATH+ _0xd1dd[61])[_0xd1dd[60]]();var _0x9fc7xd= new mxCodec(_0x9fc7xc[_0xd1dd[63]]);_0x9fc7xd[_0xd1dd[65]](_0x9fc7xc,this[_0xd1dd[64]]())};Graph[_0xd1dd[17]][_0xd1dd[66]]= function(_0x9fc7xe){if(_0x9fc7xe!= null){var _0x9fc7x7=this[_0xd1dd[34]][_0xd1dd[33]](_0x9fc7xe);var _0x9fc7x8=(_0x9fc7x7!= null)?_0x9fc7x7[_0xd1dd[25]]:this[_0xd1dd[35]](_0x9fc7xe);if(_0x9fc7x8!= null){var _0x9fc7xf=mxUtils[_0xd1dd[67]](_0x9fc7x8,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL);var _0x9fc7x10=(_0x9fc7xf== mxConstants[_0xd1dd[68]])?mxConstants[_0xd1dd[69]]:mxConstants[_0xd1dd[68]];this[_0xd1dd[70]](mxConstants.STYLE_ELBOW,_0x9fc7x10,[_0x9fc7xe])}}};Graph[_0xd1dd[17]][_0xd1dd[71]]= function(_0x9fc7x6){if(_0x9fc7x6!= null&& this[_0xd1dd[73]]()[_0xd1dd[72]](_0x9fc7x6)){var _0x9fc7x11=this[_0xd1dd[73]]()[_0xd1dd[74]]([_0x9fc7x6])[0];if(_0x9fc7x11[_0xd1dd[75]]!= null){_0x9fc7x11[_0xd1dd[75]][_0xd1dd[76]]= null};var _0x9fc7x8=_0x9fc7x11[_0xd1dd[77]]();_0x9fc7x8= mxUtils[_0xd1dd[78]](_0x9fc7x8,mxConstants.STYLE_ENTRY_X,null);_0x9fc7x8= mxUtils[_0xd1dd[78]](_0x9fc7x8,mxConstants.STYLE_ENTRY_Y,null);_0x9fc7x8= mxUtils[_0xd1dd[78]](_0x9fc7x8,mxConstants.STYLE_EXIT_X,null);_0x9fc7x8= mxUtils[_0xd1dd[78]](_0x9fc7x8,mxConstants.STYLE_EXIT_Y,null);_0x9fc7x11[_0xd1dd[78]](_0x9fc7x8);this[_0xd1dd[12]][_0xd1dd[79]]= function(_0x9fc7xb){return this[_0xd1dd[47]][_0xd1dd[34]][_0xd1dd[80]](_0x9fc7x11)};this[_0xd1dd[12]][_0xd1dd[81]]= function(){return this[_0xd1dd[47]][_0xd1dd[74]]([_0x9fc7x11])[0]}}};Graph[_0xd1dd[17]][_0xd1dd[82]]= function(_0x9fc7x6){return this[_0xd1dd[83]]&& this[_0xd1dd[84]](_0x9fc7x6)};Graph[_0xd1dd[17]][_0xd1dd[85]]= function(_0x9fc7x6){return this[_0xd1dd[84]](_0x9fc7x6)};Graph[_0xd1dd[17]][_0xd1dd[86]]= function(){var _0x9fc7x12=mxGraph[_0xd1dd[17]][_0xd1dd[86]][_0xd1dd[16]](this,arguments);_0x9fc7x12[_0xd1dd[78]](_0xd1dd[87]);return _0x9fc7x12};Graph[_0xd1dd[17]][_0xd1dd[88]]= function(_0x9fc7x6){var _0x9fc7x13=_0xd1dd[89];if(this[_0xd1dd[73]]()[_0xd1dd[90]](_0x9fc7x6)){_0x9fc7x13+= mxResources[_0xd1dd[94]](_0xd1dd[91]+ _0x9fc7x6[_0xd1dd[93]][_0xd1dd[92]])|| _0xd1dd[89]}else {if(this[_0xd1dd[73]]()[_0xd1dd[72]](_0x9fc7x6)){_0x9fc7x13= mxGraph[_0xd1dd[17]][_0xd1dd[88]][_0xd1dd[16]](this,arguments)}};return _0x9fc7x13};Graph[_0xd1dd[17]][_0xd1dd[95]]= function(_0x9fc7x6){if(_0x9fc7x6[_0xd1dd[93]]!= null&& typeof (_0x9fc7x6[_0xd1dd[93]])== _0xd1dd[96]){return _0x9fc7x6[_0xd1dd[93]][_0xd1dd[98]](_0xd1dd[97])};return mxGraph[_0xd1dd[17]][_0xd1dd[95]][_0xd1dd[16]](this,arguments)};Graph[_0xd1dd[17]][_0xd1dd[99]]= function(_0x9fc7x6,_0x9fc7x10,_0x9fc7x14){if(_0x9fc7x6[_0xd1dd[93]]!= null&& typeof (_0x9fc7x6[_0xd1dd[93]])== _0xd1dd[96]){var _0x9fc7x15=_0x9fc7x6[_0xd1dd[93]][_0xd1dd[100]](true);_0x9fc7x15[_0xd1dd[101]](_0xd1dd[97],_0x9fc7x10);_0x9fc7x10= _0x9fc7x15};mxGraph[_0xd1dd[17]][_0xd1dd[99]][_0xd1dd[16]](this,arguments)};Graph[_0xd1dd[17]][_0xd1dd[102]]= function(_0x9fc7x6,_0x9fc7x16){var _0x9fc7x10=null;if(_0x9fc7x6[_0xd1dd[93]]!= null&& typeof (_0x9fc7x6[_0xd1dd[93]])== _0xd1dd[96]){_0x9fc7x10= _0x9fc7x6[_0xd1dd[93]][_0xd1dd[100]](true)}else {var _0x9fc7x17=mxUtils[_0xd1dd[103]]();_0x9fc7x10= _0x9fc7x17[_0xd1dd[105]](_0xd1dd[104]);_0x9fc7x10[_0xd1dd[101]](_0xd1dd[97],_0x9fc7x6[_0xd1dd[93]])};if(_0x9fc7x16!= null&& _0x9fc7x16[_0xd1dd[106]]> 0){_0x9fc7x10[_0xd1dd[101]](_0xd1dd[107],_0x9fc7x16)}else {_0x9fc7x10[_0xd1dd[108]](_0xd1dd[107])};this[_0xd1dd[110]][_0xd1dd[109]](_0x9fc7x6,_0x9fc7x10)};Graph[_0xd1dd[17]][_0xd1dd[111]]= function(_0x9fc7x6){if(_0x9fc7x6[_0xd1dd[93]]!= null&& typeof (_0x9fc7x6[_0xd1dd[93]])== _0xd1dd[96]){return _0x9fc7x6[_0xd1dd[93]][_0xd1dd[98]](_0xd1dd[107])};return null};Graph[_0xd1dd[17]][_0xd1dd[56]]= function(){this[_0xd1dd[12]][_0xd1dd[113]][_0xd1dd[112]]= function(){return this[_0xd1dd[47]][_0xd1dd[12]][_0xd1dd[114]]!= null};this[_0xd1dd[29]](mxEvent.START_EDITING,function(_0x9fc7x18,_0x9fc7x19){this[_0xd1dd[30]][_0xd1dd[115]]()});var _0x9fc7x1a=false;var _0x9fc7x1b=null;this[_0xd1dd[116]]= function(_0x9fc7xb){mxGraph[_0xd1dd[17]][_0xd1dd[116]][_0xd1dd[16]](this,arguments);if(_0x9fc7xb[_0xd1dd[33]]()== null){var _0x9fc7x6=this[_0xd1dd[119]](_0x9fc7xb[_0xd1dd[117]],_0x9fc7xb[_0xd1dd[118]]);if(this[_0xd1dd[73]]()[_0xd1dd[72]](_0x9fc7x6)){_0x9fc7xb[_0xd1dd[120]]= this[_0xd1dd[34]][_0xd1dd[33]](_0x9fc7x6);if(_0x9fc7xb[_0xd1dd[120]]!= null&& _0x9fc7xb[_0xd1dd[120]][_0xd1dd[121]]!= null){this[_0xd1dd[26]][_0xd1dd[25]][_0xd1dd[24]]= _0x9fc7xb[_0xd1dd[120]][_0xd1dd[121]][_0xd1dd[122]][_0xd1dd[25]][_0xd1dd[24]]}}};if(_0x9fc7xb[_0xd1dd[33]]()== null){this[_0xd1dd[26]][_0xd1dd[25]][_0xd1dd[24]]= _0xd1dd[31]}};this[_0xd1dd[123]]= function(_0x9fc7x1c,_0x9fc7xb,_0x9fc7x18){if(_0x9fc7x1c== mxEvent[_0xd1dd[124]]){if(!this[_0xd1dd[30]][_0xd1dd[125]]()){_0x9fc7x1b= _0x9fc7xb[_0xd1dd[126]]();_0x9fc7x1a= (_0x9fc7x1b!= null)?this[_0xd1dd[53]](_0x9fc7x1b):this[_0xd1dd[127]]()}else {_0x9fc7x1a= false;_0x9fc7x1b= null}}else {if(_0x9fc7x1c== mxEvent[_0xd1dd[128]]){if(_0x9fc7x1a&& !this[_0xd1dd[129]]()){if(!this[_0xd1dd[30]][_0xd1dd[125]]()){var _0x9fc7x1d=mxEvent[_0xd1dd[131]](_0x9fc7xb[_0xd1dd[130]]());var _0x9fc7x1e=mxEvent[_0xd1dd[132]](_0x9fc7xb[_0xd1dd[130]]());this[_0xd1dd[30]][_0xd1dd[133]](_0x9fc7x1d+ 16,_0x9fc7x1e,_0x9fc7x1b,_0x9fc7xb[_0xd1dd[130]]())};_0x9fc7x1a= false;_0x9fc7x1b= null;_0x9fc7xb[_0xd1dd[134]]();return};_0x9fc7x1a= false;_0x9fc7x1b= null}};mxGraph[_0xd1dd[17]][_0xd1dd[123]][_0xd1dd[16]](this,arguments);if(_0x9fc7x1c== mxEvent[_0xd1dd[135]]&& _0x9fc7xb[_0xd1dd[136]]()){_0x9fc7x1a= false;_0x9fc7x1b= null}}};(function(){mxVertexHandler[_0xd1dd[17]][_0xd1dd[137]]= true;mxText[_0xd1dd[17]][_0xd1dd[138]]= 5;mxText[_0xd1dd[17]][_0xd1dd[139]]= 1;if(touchStyle){mxConstants[_0xd1dd[140]]= 16;mxConstants[_0xd1dd[141]]= 7;if(mxClient[_0xd1dd[4]]){mxVertexHandler[_0xd1dd[17]][_0xd1dd[142]]= 4;mxEdgeHandler[_0xd1dd[17]][_0xd1dd[142]]= 6;Graph[_0xd1dd[17]][_0xd1dd[142]]= 14;Graph[_0xd1dd[17]][_0xd1dd[143]]= 20;mxPanningHandler[_0xd1dd[17]][_0xd1dd[144]]= false;mxPanningHandler[_0xd1dd[17]][_0xd1dd[145]]= true;mxPanningHandler[_0xd1dd[17]][_0xd1dd[146]]= function(_0x9fc7xb){var _0x9fc7x19=_0x9fc7xb[_0xd1dd[130]]();return (this[_0xd1dd[145]]&& (this[_0xd1dd[147]]|| _0x9fc7xb[_0xd1dd[33]]()== null))|| (mxEvent[_0xd1dd[148]](_0x9fc7x19)&& mxEvent[_0xd1dd[149]](_0x9fc7x19))|| (this[_0xd1dd[150]]&& mxEvent[_0xd1dd[151]](_0x9fc7x19))}};var _0x9fc7x1f=mxGraphHandler[_0xd1dd[17]][_0xd1dd[152]];mxGraphHandler[_0xd1dd[17]][_0xd1dd[152]]= function(_0x9fc7x18,_0x9fc7xb){_0x9fc7x1f[_0xd1dd[16]](this,arguments);if(this[_0xd1dd[47]][_0xd1dd[53]](_0x9fc7xb[_0xd1dd[126]]())&& this[_0xd1dd[47]][_0xd1dd[54]]()> 1){this[_0xd1dd[153]]= false}};Graph[_0xd1dd[17]][_0xd1dd[154]]= function(_0x9fc7x1){this[_0xd1dd[155]]= new mxTooltipHandler(this);this[_0xd1dd[155]][_0xd1dd[156]](false);this[_0xd1dd[157]]= new mxSelectionCellsHandler(this);this[_0xd1dd[30]]= new mxPanningHandler(this);this[_0xd1dd[30]][_0xd1dd[158]]= false;this[_0xd1dd[12]]= new mxConnectionHandler(this);this[_0xd1dd[12]][_0xd1dd[156]](false);this[_0xd1dd[159]]= new mxGraphHandler(this)};mxConnectionHandler[_0xd1dd[17]][_0xd1dd[160]]= function(_0x9fc7xe,_0x9fc7x20){if(touchStyle&& _0x9fc7x20!= null){this[_0xd1dd[47]][_0xd1dd[161]](_0x9fc7x20)}else {this[_0xd1dd[47]][_0xd1dd[161]](_0x9fc7xe)}};var _0x9fc7x21=mxGraph[_0xd1dd[17]][_0xd1dd[162]];Graph[_0xd1dd[17]][_0xd1dd[162]]= function(_0x9fc7x19,_0x9fc7x6){if(_0x9fc7x6== null){var _0x9fc7x22=mxUtils[_0xd1dd[163]](this[_0xd1dd[26]],mxEvent[_0xd1dd[131]](_0x9fc7x19),mxEvent[_0xd1dd[132]](_0x9fc7x19));_0x9fc7x6= this[_0xd1dd[119]](_0x9fc7x22[_0xd1dd[164]],_0x9fc7x22[_0xd1dd[165]])};_0x9fc7x21[_0xd1dd[0]](this,_0x9fc7x19,_0x9fc7x6)};var _0x9fc7x23= new mxImage(IMAGE_PATH+ _0xd1dd[166],16,16);mxVertexHandler[_0xd1dd[17]][_0xd1dd[167]]= _0x9fc7x23;mxEdgeHandler[_0xd1dd[17]][_0xd1dd[167]]= _0x9fc7x23;mxOutline[_0xd1dd[17]][_0xd1dd[168]]= _0x9fc7x23; new Image()[_0xd1dd[169]]= _0x9fc7x23[_0xd1dd[169]];var _0x9fc7x24=IMAGE_PATH+ _0xd1dd[170];var _0x9fc7x25=mxVertexHandler[_0xd1dd[17]][_0xd1dd[171]];mxVertexHandler[_0xd1dd[17]][_0xd1dd[171]]= function(){_0x9fc7x25[_0xd1dd[16]](this,arguments);if(showConnectorImg&& this[_0xd1dd[47]][_0xd1dd[12]][_0xd1dd[112]]()&& this[_0xd1dd[47]][_0xd1dd[172]](this[_0xd1dd[120]][_0xd1dd[52]])&& !this[_0xd1dd[47]][_0xd1dd[85]](this[_0xd1dd[120]][_0xd1dd[52]])&& this[_0xd1dd[47]][_0xd1dd[54]]()== 1){this[_0xd1dd[173]]= mxUtils[_0xd1dd[174]](_0x9fc7x24);this[_0xd1dd[173]][_0xd1dd[25]][_0xd1dd[24]]= _0xd1dd[27];this[_0xd1dd[173]][_0xd1dd[25]][_0xd1dd[175]]= _0xd1dd[176];this[_0xd1dd[173]][_0xd1dd[25]][_0xd1dd[177]]= _0xd1dd[176];this[_0xd1dd[173]][_0xd1dd[25]][_0xd1dd[178]]= _0xd1dd[179];if(!mxClient[_0xd1dd[4]]){this[_0xd1dd[173]][_0xd1dd[101]](_0xd1dd[180],mxResources[_0xd1dd[94]](_0xd1dd[18]));mxEvent[_0xd1dd[181]](this[_0xd1dd[173]],this[_0xd1dd[47]],this[_0xd1dd[120]])};this[_0xd1dd[173]][_0xd1dd[25]][_0xd1dd[182]]= _0xd1dd[183];mxEvent[_0xd1dd[185]](this[_0xd1dd[173]],mxUtils[_0xd1dd[28]](this,function(_0x9fc7x19){this[_0xd1dd[47]][_0xd1dd[30]][_0xd1dd[115]]();var _0x9fc7x22=mxUtils[_0xd1dd[163]](this[_0xd1dd[47]][_0xd1dd[26]],mxEvent[_0xd1dd[131]](_0x9fc7x19),mxEvent[_0xd1dd[132]](_0x9fc7x19));this[_0xd1dd[47]][_0xd1dd[12]][_0xd1dd[50]](this[_0xd1dd[120]],_0x9fc7x22[_0xd1dd[164]],_0x9fc7x22[_0xd1dd[165]]);this[_0xd1dd[47]][_0xd1dd[184]]= true;mxEvent[_0xd1dd[134]](_0x9fc7x19)}));this[_0xd1dd[47]][_0xd1dd[26]][_0xd1dd[186]](this[_0xd1dd[173]])};this[_0xd1dd[187]]()};var _0x9fc7x26=mxVertexHandler[_0xd1dd[17]][_0xd1dd[188]];mxVertexHandler[_0xd1dd[17]][_0xd1dd[188]]= function(){_0x9fc7x26[_0xd1dd[16]](this);this[_0xd1dd[187]]()};mxVertexHandler[_0xd1dd[17]][_0xd1dd[187]]= function(){if(this[_0xd1dd[120]]!= null&& this[_0xd1dd[173]]!= null){if(mxVertexHandler[_0xd1dd[17]][_0xd1dd[189]]){this[_0xd1dd[173]][_0xd1dd[25]][_0xd1dd[190]]= (this[_0xd1dd[120]][_0xd1dd[164]]+ this[_0xd1dd[120]][_0xd1dd[175]]- this[_0xd1dd[173]][_0xd1dd[191]]/ 2)+ _0xd1dd[192];this[_0xd1dd[173]][_0xd1dd[25]][_0xd1dd[193]]= (this[_0xd1dd[120]][_0xd1dd[165]]- this[_0xd1dd[173]][_0xd1dd[194]]/ 2)+ _0xd1dd[192]}else {this[_0xd1dd[173]][_0xd1dd[25]][_0xd1dd[190]]= (this[_0xd1dd[120]][_0xd1dd[164]]+ this[_0xd1dd[120]][_0xd1dd[175]]+ mxConstants[_0xd1dd[140]]/ 2+ 4)+ _0xd1dd[192];this[_0xd1dd[173]][_0xd1dd[25]][_0xd1dd[193]]= (this[_0xd1dd[120]][_0xd1dd[165]]+ (this[_0xd1dd[120]][_0xd1dd[177]]- this[_0xd1dd[173]][_0xd1dd[194]])/ 2)+ _0xd1dd[192]}}};var _0x9fc7x27=mxVertexHandler[_0xd1dd[17]][_0xd1dd[195]];mxVertexHandler[_0xd1dd[17]][_0xd1dd[195]]= function(_0x9fc7x18,_0x9fc7xb){_0x9fc7x27[_0xd1dd[16]](this,arguments);if(this[_0xd1dd[173]]!= null){this[_0xd1dd[173]][_0xd1dd[197]][_0xd1dd[196]](this[_0xd1dd[173]]);this[_0xd1dd[173]]= null}}; new Image()[_0xd1dd[169]]= _0x9fc7x24}else {var _0x9fc7x28= new mxImage(IMAGE_PATH+ _0xd1dd[198],15,15);mxConnectionHandler[_0xd1dd[17]][_0xd1dd[199]]= _0x9fc7x28; new Image()[_0xd1dd[169]]= _0x9fc7x28[_0xd1dd[169]];if(urlParams[_0xd1dd[18]]== _0xd1dd[19]){var _0x9fc7x28= new mxImage(IMAGE_PATH+ _0xd1dd[198],15,15);var _0x9fc7x25=mxVertexHandler[_0xd1dd[17]][_0xd1dd[171]];mxVertexHandler[_0xd1dd[17]][_0xd1dd[171]]= function(){_0x9fc7x25[_0xd1dd[16]](this,arguments);if(showConnectorImg&& this[_0xd1dd[47]][_0xd1dd[12]][_0xd1dd[112]]()&& this[_0xd1dd[47]][_0xd1dd[172]](this[_0xd1dd[120]][_0xd1dd[52]])&& !this[_0xd1dd[47]][_0xd1dd[85]](this[_0xd1dd[120]][_0xd1dd[52]])&& this[_0xd1dd[47]][_0xd1dd[54]]()== 1){if(mxClient[_0xd1dd[200]]&& !mxClient[_0xd1dd[201]]){this[_0xd1dd[173]]= document[_0xd1dd[105]](_0xd1dd[202]);this[_0xd1dd[173]][_0xd1dd[25]][_0xd1dd[203]]= _0xd1dd[204]+ _0x9fc7x28[_0xd1dd[169]]+ _0xd1dd[205];this[_0xd1dd[173]][_0xd1dd[25]][_0xd1dd[206]]= _0xd1dd[207];this[_0xd1dd[173]][_0xd1dd[25]][_0xd1dd[208]]= _0xd1dd[209];this[_0xd1dd[173]][_0xd1dd[25]][_0xd1dd[175]]= (_0x9fc7x28[_0xd1dd[175]]+ 4)+ _0xd1dd[192];this[_0xd1dd[173]][_0xd1dd[25]][_0xd1dd[177]]= (_0x9fc7x28[_0xd1dd[177]]+ 4)+ _0xd1dd[192];this[_0xd1dd[173]][_0xd1dd[25]][_0xd1dd[210]]= (mxClient[_0xd1dd[211]])?_0xd1dd[212]:_0xd1dd[213]}else {this[_0xd1dd[173]]= mxUtils[_0xd1dd[174]](_0x9fc7x28[_0xd1dd[169]]);this[_0xd1dd[173]][_0xd1dd[25]][_0xd1dd[175]]= _0x9fc7x28[_0xd1dd[175]]+ _0xd1dd[192];this[_0xd1dd[173]][_0xd1dd[25]][_0xd1dd[177]]= _0x9fc7x28[_0xd1dd[177]]+ _0xd1dd[192]};this[_0xd1dd[173]][_0xd1dd[25]][_0xd1dd[24]]= _0xd1dd[27];this[_0xd1dd[173]][_0xd1dd[25]][_0xd1dd[178]]= _0xd1dd[179];this[_0xd1dd[173]][_0xd1dd[101]](_0xd1dd[180],mxResources[_0xd1dd[94]](_0xd1dd[18]));mxEvent[_0xd1dd[181]](this[_0xd1dd[173]],this[_0xd1dd[47]],this[_0xd1dd[120]]);this[_0xd1dd[173]][_0xd1dd[25]][_0xd1dd[182]]= _0xd1dd[183];mxEvent[_0xd1dd[29]](this[_0xd1dd[173]],_0xd1dd[214],mxUtils[_0xd1dd[28]](this,function(_0x9fc7x19){this[_0xd1dd[47]][_0xd1dd[30]][_0xd1dd[115]]();var _0x9fc7x22=mxUtils[_0xd1dd[163]](this[_0xd1dd[47]][_0xd1dd[26]],mxEvent[_0xd1dd[131]](_0x9fc7x19),mxEvent[_0xd1dd[132]](_0x9fc7x19));this[_0xd1dd[47]][_0xd1dd[12]][_0xd1dd[50]](this[_0xd1dd[120]],_0x9fc7x22[_0xd1dd[164]],_0x9fc7x22[_0xd1dd[165]]);this[_0xd1dd[47]][_0xd1dd[184]]= true;mxEvent[_0xd1dd[134]](_0x9fc7x19)}));this[_0xd1dd[47]][_0xd1dd[26]][_0xd1dd[186]](this[_0xd1dd[173]])};this[_0xd1dd[187]]()};var _0x9fc7x26=mxVertexHandler[_0xd1dd[17]][_0xd1dd[188]];mxVertexHandler[_0xd1dd[17]][_0xd1dd[188]]= function(){_0x9fc7x26[_0xd1dd[16]](this);this[_0xd1dd[187]]()};mxVertexHandler[_0xd1dd[17]][_0xd1dd[187]]= function(){if(this[_0xd1dd[120]]!= null&& this[_0xd1dd[173]]!= null){if(mxVertexHandler[_0xd1dd[17]][_0xd1dd[189]]){this[_0xd1dd[173]][_0xd1dd[25]][_0xd1dd[190]]= (this[_0xd1dd[120]][_0xd1dd[164]]+ this[_0xd1dd[120]][_0xd1dd[175]]- this[_0xd1dd[173]][_0xd1dd[191]]/ 2)+ _0xd1dd[192];this[_0xd1dd[173]][_0xd1dd[25]][_0xd1dd[193]]= (this[_0xd1dd[120]][_0xd1dd[165]]- this[_0xd1dd[173]][_0xd1dd[194]]/ 2)+ _0xd1dd[192]}else {this[_0xd1dd[173]][_0xd1dd[25]][_0xd1dd[190]]= (this[_0xd1dd[120]][_0xd1dd[164]]+ this[_0xd1dd[120]][_0xd1dd[175]]+ mxConstants[_0xd1dd[140]]/ 2+ 2)+ _0xd1dd[192];this[_0xd1dd[173]][_0xd1dd[25]][_0xd1dd[193]]= (this[_0xd1dd[120]][_0xd1dd[165]]+ (this[_0xd1dd[120]][_0xd1dd[177]]- this[_0xd1dd[173]][_0xd1dd[194]])/ 2)+ _0xd1dd[192]}}};var _0x9fc7x27=mxVertexHandler[_0xd1dd[17]][_0xd1dd[195]];mxVertexHandler[_0xd1dd[17]][_0xd1dd[195]]= function(_0x9fc7x18,_0x9fc7xb){_0x9fc7x27[_0xd1dd[16]](this,arguments);if(this[_0xd1dd[173]]!= null){this[_0xd1dd[173]][_0xd1dd[197]][_0xd1dd[196]](this[_0xd1dd[173]]);this[_0xd1dd[173]]= null}}}}})() \ No newline at end of file +undefined \ No newline at end of file diff --git a/public/assets/plugins/jscripty/js/Menus.js b/public/assets/plugins/jscripty/js/Menus.js index 0c2cb03..66dc905 100644 --- a/public/assets/plugins/jscripty/js/Menus.js +++ b/public/assets/plugins/jscripty/js/Menus.js @@ -1 +1 @@ -var _0xc46a=["\x65\x64\x69\x74\x6F\x72\x55\x69","\x6D\x65\x6E\x75\x73","\x69\x6E\x69\x74","\x73\x72\x63","\x2F\x63\x68\x65\x63\x6B\x6D\x61\x72\x6B\x2E\x67\x69\x66","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x67\x72\x61\x70\x68","\x65\x64\x69\x74\x6F\x72","\x66\x6F\x6E\x74\x46\x61\x6D\x69\x6C\x79","\x48\x65\x6C\x76\x65\x74\x69\x63\x61","\x56\x65\x72\x64\x61\x6E\x61","\x54\x69\x6D\x65\x73\x20\x4E\x65\x77\x20\x52\x6F\x6D\x61\x6E","\x47\x61\x72\x61\x6D\x6F\x6E\x64","\x43\x6F\x6D\x69\x63\x20\x53\x61\x6E\x73\x20\x4D\x53","\x43\x6F\x75\x72\x69\x65\x72\x20\x4E\x65\x77","\x47\x65\x6F\x72\x67\x69\x61","\x4C\x75\x63\x69\x64\x61\x20\x43\x6F\x6E\x73\x6F\x6C\x65","\x54\x61\x68\x6F\x6D\x61","\x6C\x65\x6E\x67\x74\x68","\x53\x54\x59\x4C\x45\x5F\x46\x4F\x4E\x54\x46\x41\x4D\x49\x4C\x59","\x73\x74\x79\x6C\x65\x43\x68\x61\x6E\x67\x65","\x73\x74\x79\x6C\x65","\x6E\x65\x78\x74\x53\x69\x62\x6C\x69\x6E\x67","\x66\x69\x72\x73\x74\x43\x68\x69\x6C\x64","\x61\x64\x64\x53\x65\x70\x61\x72\x61\x74\x6F\x72","\x63\x75\x73\x74\x6F\x6D","\x67\x65\x74","","\x70\x72\x6F\x6D\x70\x74\x43\x68\x61\x6E\x67\x65","\x62\x69\x6E\x64","\x70\x75\x74","\x66\x6F\x6E\x74\x53\x69\x7A\x65","\x53\x54\x59\x4C\x45\x5F\x46\x4F\x4E\x54\x53\x49\x5A\x45","\x28\x70\x74\x29","\x31\x32","\x6C\x69\x6E\x65\x77\x69\x64\x74\x68","\x70\x78","\x53\x54\x59\x4C\x45\x5F\x53\x54\x52\x4F\x4B\x45\x57\x49\x44\x54\x48","\x28\x70\x78\x29","\x31","\x6C\x69\x6E\x65","\x73\x74\x72\x61\x69\x67\x68\x74","\x53\x54\x59\x4C\x45\x5F\x45\x44\x47\x45","\x65\x6E\x74\x69\x74\x79\x52\x65\x6C\x61\x74\x69\x6F\x6E","\x65\x6E\x74\x69\x74\x79\x52\x65\x6C\x61\x74\x69\x6F\x6E\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C","\x53\x54\x59\x4C\x45\x5F\x45\x4C\x42\x4F\x57","\x65\x6C\x62\x6F\x77\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x76\x65\x72\x74\x69\x63\x61\x6C","\x6D\x61\x6E\x75\x61\x6C","\x73\x65\x67\x6D\x65\x6E\x74\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x61\x75\x74\x6F\x6D\x61\x74\x69\x63","\x6F\x72\x74\x68\x6F\x67\x6F\x6E\x61\x6C\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x6C\x69\x6E\x65\x65\x6E\x64","\x63\x6C\x61\x73\x73\x69\x63","\x53\x54\x59\x4C\x45\x5F\x45\x4E\x44\x41\x52\x52\x4F\x57","\x41\x52\x52\x4F\x57\x5F\x43\x4C\x41\x53\x53\x49\x43","\x6F\x70\x65\x6E\x41\x72\x72\x6F\x77","\x41\x52\x52\x4F\x57\x5F\x4F\x50\x45\x4E","\x62\x6C\x6F\x63\x6B","\x41\x52\x52\x4F\x57\x5F\x42\x4C\x4F\x43\x4B","\x6F\x76\x61\x6C","\x41\x52\x52\x4F\x57\x5F\x4F\x56\x41\x4C","\x64\x69\x61\x6D\x6F\x6E\x64","\x41\x52\x52\x4F\x57\x5F\x44\x49\x41\x4D\x4F\x4E\x44","\x64\x69\x61\x6D\x6F\x6E\x64\x54\x68\x69\x6E","\x41\x52\x52\x4F\x57\x5F\x44\x49\x41\x4D\x4F\x4E\x44\x5F\x54\x48\x49\x4E","\x6E\x6F\x6E\x65","\x4E\x4F\x4E\x45","\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74","\x65\x6E\x64\x46\x69\x6C\x6C","\x74\x6F\x67\x67\x6C\x65\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x73","\x61\x64\x64\x49\x74\x65\x6D","\x73\x69\x7A\x65","\x6C\x69\x6E\x65\x73\x74\x61\x72\x74","\x53\x54\x59\x4C\x45\x5F\x53\x54\x41\x52\x54\x41\x52\x52\x4F\x57","\x73\x74\x61\x72\x74\x46\x69\x6C\x6C","\x73\x70\x61\x63\x69\x6E\x67","\x65\x6E\x61\x62\x6C\x65\x64","\x73\x68\x61\x64\x6F\x77","\x61\x63\x74\x69\x6F\x6E\x73","\x73\x68\x6F\x77\x44\x69\x73\x61\x62\x6C\x65\x64","\x74\x6F\x70","\x30","\x72\x69\x67\x68\x74","\x62\x6F\x74\x74\x6F\x6D","\x6C\x65\x66\x74","\x67\x6C\x6F\x62\x61\x6C","\x70\x65\x72\x69\x6D\x65\x74\x65\x72","\x73\x6F\x75\x72\x63\x65\x53\x70\x61\x63\x69\x6E\x67","\x74\x61\x72\x67\x65\x74\x53\x70\x61\x63\x69\x6E\x67","\x66\x6F\x72\x6D\x61\x74","\x61\x64\x64\x4D\x65\x6E\x75\x49\x74\x65\x6D","\x74\x65\x78\x74","\x61\x64\x64\x53\x75\x62\x6D\x65\x6E\x75","\x2D","\x62\x6F\x6C\x64","\x69\x74\x61\x6C\x69\x63","\x75\x6E\x64\x65\x72\x6C\x69\x6E\x65","\x61\x64\x64\x4D\x65\x6E\x75\x49\x74\x65\x6D\x73","\x61\x6C\x69\x67\x6E\x6D\x65\x6E\x74","\x77\x6F\x72\x64\x57\x72\x61\x70","\x74\x65\x78\x74\x4F\x70\x61\x63\x69\x74\x79","\x28\x25\x29","\x31\x30\x30","\x68\x69\x64\x65","\x6C\x65\x66\x74\x41\x6C\x69\x67\x6E","\x53\x54\x59\x4C\x45\x5F\x41\x4C\x49\x47\x4E","\x41\x4C\x49\x47\x4E\x5F\x4C\x45\x46\x54","\x63\x65\x6E\x74\x65\x72","\x41\x4C\x49\x47\x4E\x5F\x43\x45\x4E\x54\x45\x52","\x72\x69\x67\x68\x74\x41\x6C\x69\x67\x6E","\x41\x4C\x49\x47\x4E\x5F\x52\x49\x47\x48\x54","\x74\x6F\x70\x41\x6C\x69\x67\x6E","\x53\x54\x59\x4C\x45\x5F\x56\x45\x52\x54\x49\x43\x41\x4C\x5F\x41\x4C\x49\x47\x4E","\x41\x4C\x49\x47\x4E\x5F\x54\x4F\x50","\x6D\x69\x64\x64\x6C\x65","\x41\x4C\x49\x47\x4E\x5F\x4D\x49\x44\x44\x4C\x45","\x62\x6F\x74\x74\x6F\x6D\x41\x6C\x69\x67\x6E","\x41\x4C\x49\x47\x4E\x5F\x42\x4F\x54\x54\x4F\x4D","\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x53\x54\x59\x4C\x45\x5F\x4C\x41\x42\x45\x4C\x5F\x50\x4F\x53\x49\x54\x49\x4F\x4E","\x53\x54\x59\x4C\x45\x5F\x56\x45\x52\x54\x49\x43\x41\x4C\x5F\x4C\x41\x42\x45\x4C\x5F\x50\x4F\x53\x49\x54\x49\x4F\x4E","\x64\x69\x72\x65\x63\x74\x69\x6F\x6E","\x66\x6C\x69\x70\x48","\x66\x6C\x69\x70\x56","\x74\x69\x6C\x74","\x72\x6F\x74\x61\x74\x69\x6F\x6E","\x61\x6C\x69\x67\x6E","\x61\x6C\x69\x67\x6E\x43\x65\x6C\x6C\x73","\x6C\x61\x79\x6F\x75\x74","\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C\x46\x6C\x6F\x77","\x65\x78\x65\x63\x75\x74\x65\x4C\x61\x79\x6F\x75\x74","\x76\x65\x72\x74\x69\x63\x61\x6C\x46\x6C\x6F\x77","\x6E\x61\x76\x69\x67\x61\x74\x69\x6F\x6E","\x68\x6F\x6D\x65","\x65\x78\x69\x74\x47\x72\x6F\x75\x70","\x65\x6E\x74\x65\x72\x47\x72\x6F\x75\x70","\x65\x78\x70\x61\x6E\x64","\x63\x6F\x6C\x6C\x61\x70\x73\x65","\x61\x72\x72\x61\x6E\x67\x65","\x74\x6F\x46\x72\x6F\x6E\x74","\x74\x6F\x42\x61\x63\x6B","\x67\x72\x6F\x75\x70","\x75\x6E\x67\x72\x6F\x75\x70","\x72\x65\x6D\x6F\x76\x65\x46\x72\x6F\x6D\x47\x72\x6F\x75\x70","\x76\x69\x65\x77","\x61\x63\x74\x75\x61\x6C\x53\x69\x7A\x65","\x25","\x7A\x6F\x6F\x6D\x54\x6F","\x7A\x6F\x6F\x6D\x49\x6E","\x7A\x6F\x6F\x6D\x4F\x75\x74","\x66\x69\x74\x57\x69\x6E\x64\x6F\x77","\x63\x75\x73\x74\x6F\x6D\x5A\x6F\x6F\x6D","\x66\x69\x74\x50\x61\x67\x65","\x66\x69\x74\x50\x61\x67\x65\x57\x69\x64\x74\x68","\x66\x69\x6C\x65","\x6E\x65\x77","\x6F\x70\x65\x6E","\x73\x61\x76\x65","\x73\x61\x76\x65\x41\x73","\x70\x75\x62\x6C\x69\x73\x68","\x76\x61\x72\x69\x61\x62\x6C\x65","\x69\x6D\x70\x6F\x72\x74","\x65\x78\x70\x6F\x72\x74","\x65\x64\x69\x74\x46\x69\x6C\x65","\x72\x65\x6E\x61\x6D\x65","\x70\x72\x69\x6E\x74","\x65\x64\x69\x74","\x75\x6E\x64\x6F","\x72\x65\x64\x6F","\x63\x75\x74","\x63\x6F\x70\x79","\x70\x61\x73\x74\x65","\x64\x65\x6C\x65\x74\x65","\x64\x75\x70\x6C\x69\x63\x61\x74\x65","\x73\x65\x6C\x65\x63\x74\x56\x65\x72\x74\x69\x63\x65\x73","\x73\x65\x6C\x65\x63\x74\x45\x64\x67\x65\x73","\x73\x65\x6C\x65\x63\x74\x41\x6C\x6C","\x68\x65\x6C\x70","\x61\x62\x6F\x75\x74","\x61\x64\x64\x4D\x65\x6E\x75","\x65\x78\x65\x63\x75\x74\x65","\x62\x65\x67\x69\x6E\x55\x70\x64\x61\x74\x65","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x73\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x73","\x65\x6E\x64\x55\x70\x64\x61\x74\x65","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x67\x65\x74\x53\x74\x61\x74\x65","\x67\x65\x74\x56\x69\x65\x77","\x65\x6E\x74\x65\x72\x56\x61\x6C\x75\x65","\x20","\x70\x72\x6F\x6D\x70\x74","\x6C\x61\x62\x65\x6C","\x66\x75\x6E\x63\x74","\x74\x6F\x67\x67\x6C\x65\x41\x63\x74\x69\x6F\x6E","\x69\x73\x53\x65\x6C\x65\x63\x74\x65\x64","\x61\x64\x64\x43\x68\x65\x63\x6B\x6D\x61\x72\x6B","\x61\x64\x64\x53\x68\x6F\x72\x74\x63\x75\x74","\x73\x68\x6F\x72\x74\x63\x75\x74","\x73\x70\x61\x6E","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x63\x6F\x6C\x6F\x72","\x67\x72\x61\x79","\x77\x72\x69\x74\x65","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x75\x72\x6C\x28","\x2F\x63\x68\x65\x63\x6B\x6D\x61\x72\x6B\x2E\x67\x69\x66\x29","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x52\x65\x70\x65\x61\x74","\x6E\x6F\x2D\x72\x65\x70\x65\x61\x74","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x32\x70\x78\x20\x35\x30\x25","\x63\x72\x65\x61\x74\x65\x50\x6F\x70\x75\x70\x4D\x65\x6E\x75","\x73\x6D\x61\x72\x74\x53\x65\x70\x61\x72\x61\x74\x6F\x72\x73","\x69\x73\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x45\x6D\x70\x74\x79","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x6F\x75\x6E\x74","\x69\x73\x45\x64\x67\x65","\x73\x65\x74\x41\x73\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65","\x67\x65\x74\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73\x48\x61\x6E\x64\x6C\x65\x72","\x62\x65\x6E\x64\x73","\x67\x65\x74\x48\x61\x6E\x64\x6C\x65\x46\x6F\x72\x45\x76\x65\x6E\x74","\x72\x65\x6D\x6F\x76\x65\x57\x61\x79\x70\x6F\x69\x6E\x74","\x68\x61\x6E\x64\x6C\x65\x72","\x69\x6E\x64\x65\x78","\x61\x64\x64\x57\x61\x79\x70\x6F\x69\x6E\x74","\x67\x65\x74\x4C\x69\x6E\x6B\x46\x6F\x72\x43\x65\x6C\x6C","\x6F\x70\x65\x6E\x4C\x69\x6E\x6B","\x63\x72\x65\x61\x74\x65\x4D\x65\x6E\x75\x62\x61\x72","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x68\x69\x64\x65\x4D\x65\x6E\x75","\x61\x64\x64\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x63\x75\x72\x72\x65\x6E\x74\x4D\x65\x6E\x75","\x61","\x68\x72\x65\x66","\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x3A\x76\x6F\x69\x64\x28\x30\x29\x3B","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x67\x65\x49\x74\x65\x6D","\x61\x64\x64\x4D\x65\x6E\x75\x48\x61\x6E\x64\x6C\x65\x72","\x70\x61\x6E\x6E\x69\x6E\x67\x48\x61\x6E\x64\x6C\x65\x72","\x64\x69\x76","\x20\x67\x65\x4D\x65\x6E\x75\x62\x61\x72\x4D\x65\x6E\x75","\x61\x75\x74\x6F\x45\x78\x70\x61\x6E\x64","\x61\x70\x70\x6C\x79","\x64\x65\x73\x74\x72\x6F\x79","\x63\x75\x72\x72\x65\x6E\x74\x45\x6C\x74","\x6F\x66\x66\x73\x65\x74\x4C\x65\x66\x74","\x6F\x66\x66\x73\x65\x74\x57\x69\x64\x74\x68","\x70\x61\x67\x65\x2D\x73\x69\x64\x65\x62\x61\x72","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64","\x6F\x66\x66\x73\x65\x74\x54\x6F\x70","\x6F\x66\x66\x73\x65\x74\x48\x65\x69\x67\x68\x74","\x70\x6F\x70\x75\x70","\x63\x6F\x6E\x73\x75\x6D\x65","\x6D\x6F\x75\x73\x65\x6D\x6F\x76\x65","\x61\x64\x64\x4C\x69\x73\x74\x65\x6E\x65\x72","\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E","\x63\x6C\x69\x63\x6B","\x63\x61\x6C\x6C","\x65\x78\x74\x65\x6E\x64","\x73\x65\x74\x45\x6E\x61\x62\x6C\x65\x64","\x73\x74\x61\x74\x65\x43\x68\x61\x6E\x67\x65\x64","\x66\x69\x72\x65\x45\x76\x65\x6E\x74"];Menus= function(_0xb27dx1){this[_0xc46a[0]]= _0xb27dx1;this[_0xc46a[1]]= new Object();this[_0xc46a[2]](); new Image()[_0xc46a[3]]= IMAGE_PATH+ _0xc46a[4]};Menus[_0xc46a[5]][_0xc46a[2]]= function(){var _0xb27dx2=this[_0xc46a[0]][_0xc46a[7]][_0xc46a[6]];this[_0xc46a[30]](_0xc46a[8], new Menu(mxUtils[_0xc46a[29]](this,function(_0xb27dx3,_0xb27dx4){var _0xb27dx5=[_0xc46a[9],_0xc46a[10],_0xc46a[11],_0xc46a[12],_0xc46a[13],_0xc46a[14],_0xc46a[15],_0xc46a[16],_0xc46a[17]];for(var _0xb27dx6=0;_0xb27dx6< _0xb27dx5[_0xc46a[18]];_0xb27dx6++){var _0xb27dx7=this[_0xc46a[20]](_0xb27dx3,_0xb27dx5[_0xb27dx6],[mxConstants[_0xc46a[19]]],[_0xb27dx5[_0xb27dx6]],null,_0xb27dx4);_0xb27dx7[_0xc46a[23]][_0xc46a[22]][_0xc46a[21]][_0xc46a[8]]= _0xb27dx5[_0xb27dx6]};_0xb27dx3[_0xc46a[24]](_0xb27dx4);this[_0xc46a[28]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[25]),_0xc46a[27],mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,_0xb27dx4)})));this[_0xc46a[30]](_0xc46a[31], new Menu(mxUtils[_0xc46a[29]](this,function(_0xb27dx3,_0xb27dx4){var _0xb27dx8=[6,8,9,10,11,12,14,18,24,36,48,72];for(var _0xb27dx6=0;_0xb27dx6< _0xb27dx8[_0xc46a[18]];_0xb27dx6++){this[_0xc46a[20]](_0xb27dx3,_0xb27dx8[_0xb27dx6],[mxConstants[_0xc46a[32]]],[_0xb27dx8[_0xb27dx6]],null,_0xb27dx4)};_0xb27dx3[_0xc46a[24]](_0xb27dx4);this[_0xc46a[28]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[25]),_0xc46a[33],_0xc46a[34],mxConstants.STYLE_FONTSIZE,_0xb27dx4)})));this[_0xc46a[30]](_0xc46a[35], new Menu(mxUtils[_0xc46a[29]](this,function(_0xb27dx3,_0xb27dx4){var _0xb27dx8=[1,2,3,4,8,12,16,24];for(var _0xb27dx6=0;_0xb27dx6< _0xb27dx8[_0xc46a[18]];_0xb27dx6++){this[_0xc46a[20]](_0xb27dx3,_0xb27dx8[_0xb27dx6]+ _0xc46a[36],[mxConstants[_0xc46a[37]]],[_0xb27dx8[_0xb27dx6]],null,_0xb27dx4)};_0xb27dx3[_0xc46a[24]](_0xb27dx4);this[_0xc46a[28]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[25]),_0xc46a[38],_0xc46a[39],mxConstants.STYLE_STROKEWIDTH,_0xb27dx4)})));this[_0xc46a[30]](_0xc46a[40], new Menu(mxUtils[_0xc46a[29]](this,function(_0xb27dx3,_0xb27dx4){this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[41]),[mxConstants[_0xc46a[42]]],[null],null,_0xb27dx4);this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[43]),[mxConstants[_0xc46a[42]]],[_0xc46a[44]],null,_0xb27dx4);_0xb27dx3[_0xc46a[24]](_0xb27dx4);this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[45]),[mxConstants[_0xc46a[42]],mxConstants[_0xc46a[46]]],[_0xc46a[47],_0xc46a[45]],null,_0xb27dx4);this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[48]),[mxConstants[_0xc46a[42]],mxConstants[_0xc46a[46]]],[_0xc46a[47],_0xc46a[48]],null,_0xb27dx4);_0xb27dx3[_0xc46a[24]](_0xb27dx4);this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[49]),[mxConstants[_0xc46a[42]]],[_0xc46a[50]],null,_0xb27dx4);this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[51]),[mxConstants[_0xc46a[42]]],[_0xc46a[52]],null,_0xb27dx4)})));this[_0xc46a[30]](_0xc46a[53], new Menu(mxUtils[_0xc46a[29]](this,function(_0xb27dx3,_0xb27dx4){this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[54]),[mxConstants[_0xc46a[55]]],[mxConstants[_0xc46a[56]]],null,_0xb27dx4);this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[57]),[mxConstants[_0xc46a[55]]],[mxConstants[_0xc46a[58]]],null,_0xb27dx4);this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[59]),[mxConstants[_0xc46a[55]]],[mxConstants[_0xc46a[60]]],null,_0xb27dx4);_0xb27dx3[_0xc46a[24]](_0xb27dx4);this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[61]),[mxConstants[_0xc46a[55]]],[mxConstants[_0xc46a[62]]],null,_0xb27dx4);this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[63]),[mxConstants[_0xc46a[55]]],[mxConstants[_0xc46a[64]]],null,_0xb27dx4);this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[65]),[mxConstants[_0xc46a[55]]],[mxConstants[_0xc46a[66]]],null,_0xb27dx4);_0xb27dx3[_0xc46a[24]](_0xb27dx4);this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[67]),[mxConstants[_0xc46a[55]]],[mxConstants[_0xc46a[68]]],null,_0xb27dx4);_0xb27dx3[_0xc46a[24]](_0xb27dx4);_0xb27dx3[_0xc46a[72]](mxResources[_0xc46a[26]](_0xc46a[69]),null,function(){_0xb27dx2[_0xc46a[71]](_0xc46a[70],true)},_0xb27dx4,null,true);_0xb27dx3[_0xc46a[24]](_0xb27dx4);this[_0xc46a[28]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[73]),_0xc46a[38],mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,_0xb27dx4)})));this[_0xc46a[30]](_0xc46a[74], new Menu(mxUtils[_0xc46a[29]](this,function(_0xb27dx3,_0xb27dx4){this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[54]),[mxConstants[_0xc46a[75]]],[mxConstants[_0xc46a[56]]],null,_0xb27dx4);this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[57]),[mxConstants[_0xc46a[75]]],[mxConstants[_0xc46a[58]]],null,_0xb27dx4);this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[59]),[mxConstants[_0xc46a[75]]],[mxConstants[_0xc46a[60]]],null,_0xb27dx4);_0xb27dx3[_0xc46a[24]](_0xb27dx4);this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[61]),[mxConstants[_0xc46a[75]]],[mxConstants[_0xc46a[62]]],null,_0xb27dx4);this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[63]),[mxConstants[_0xc46a[75]]],[mxConstants[_0xc46a[64]]],null,_0xb27dx4);this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[65]),[mxConstants[_0xc46a[75]]],[mxConstants[_0xc46a[66]]],null,_0xb27dx4);_0xb27dx3[_0xc46a[24]](_0xb27dx4);this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[67]),[mxConstants[_0xc46a[75]]],[mxConstants[_0xc46a[68]]],null,_0xb27dx4);_0xb27dx3[_0xc46a[24]](_0xb27dx4);_0xb27dx3[_0xc46a[72]](mxResources[_0xc46a[26]](_0xc46a[69]),null,function(){_0xb27dx2[_0xc46a[71]](_0xc46a[76],true)},_0xb27dx4,null,true);_0xb27dx3[_0xc46a[24]](_0xb27dx4);this[_0xc46a[28]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[73]),_0xc46a[38],mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,_0xb27dx4)})));this[_0xc46a[30]](_0xc46a[77], new Menu(mxUtils[_0xc46a[29]](this,function(_0xb27dx3,_0xb27dx4){var _0xb27dx9=this[_0xc46a[0]][_0xc46a[80]][_0xc46a[26]](_0xc46a[79])[_0xc46a[78]];var _0xb27dxa=this[_0xc46a[26]](_0xc46a[40])[_0xc46a[78]];if(_0xb27dx9|| _0xb27dx3[_0xc46a[81]]){this[_0xc46a[28]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[82]),_0xc46a[38],_0xc46a[83],mxConstants.STYLE_SPACING_TOP,_0xb27dx4,_0xb27dx9);this[_0xc46a[28]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[84]),_0xc46a[38],_0xc46a[83],mxConstants.STYLE_SPACING_RIGHT,_0xb27dx4,_0xb27dx9);this[_0xc46a[28]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[85]),_0xc46a[38],_0xc46a[83],mxConstants.STYLE_SPACING_BOTTOM,_0xb27dx4,_0xb27dx9);this[_0xc46a[28]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[86]),_0xc46a[38],_0xc46a[83],mxConstants.STYLE_SPACING_LEFT,_0xb27dx4,_0xb27dx9);_0xb27dx3[_0xc46a[24]](_0xb27dx4);this[_0xc46a[28]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[87]),_0xc46a[38],_0xc46a[83],mxConstants.STYLE_SPACING,_0xb27dx4,_0xb27dx9);this[_0xc46a[28]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[88]),_0xc46a[38],_0xc46a[83],mxConstants.STYLE_PERIMETER_SPACING,_0xb27dx4,_0xb27dx9)};if(_0xb27dxa|| _0xb27dx3[_0xc46a[81]]){_0xb27dx3[_0xc46a[24]](_0xb27dx4);this[_0xc46a[28]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[89]),_0xc46a[38],_0xc46a[83],mxConstants.STYLE_SOURCE_PERIMETER_SPACING,_0xb27dx4,_0xb27dxa);this[_0xc46a[28]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[90]),_0xc46a[38],_0xc46a[83],mxConstants.STYLE_TARGET_PERIMETER_SPACING,_0xb27dx4,_0xb27dxa)}})));this[_0xc46a[30]](_0xc46a[91], new Menu(mxUtils[_0xc46a[29]](this,function(_0xb27dx3,_0xb27dx4){this[_0xc46a[92]](_0xb27dx3,_0xc46a[21],_0xb27dx4)})));this[_0xc46a[30]](_0xc46a[93], new Menu(mxUtils[_0xc46a[29]](this,function(_0xb27dx3,_0xb27dx4){var _0xb27dxb=this[_0xc46a[26]](_0xc46a[93])[_0xc46a[78]];_0xb27dx3[_0xc46a[24]](_0xb27dx4);this[_0xc46a[94]](_0xc46a[8],_0xb27dx3,_0xb27dx4);this[_0xc46a[94]](_0xc46a[31],_0xb27dx3,_0xb27dx4);this[_0xc46a[99]](_0xb27dx3,[_0xc46a[95],_0xc46a[96],_0xc46a[97],_0xc46a[98],_0xc46a[95]],_0xb27dx4);this[_0xc46a[94]](_0xc46a[100],_0xb27dx3,_0xb27dx4);this[_0xc46a[92]](_0xb27dx3,_0xc46a[101],_0xb27dx4);_0xb27dx3[_0xc46a[24]](_0xb27dx4);this[_0xc46a[28]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[102]),_0xc46a[103],_0xc46a[104],mxConstants.STYLE_TEXT_OPACITY,_0xb27dx4,_0xb27dxb);_0xb27dx3[_0xc46a[72]](mxResources[_0xc46a[26]](_0xc46a[105]),null,function(){_0xb27dx2[_0xc46a[71]](mxConstants.STYLE_NOLABEL,false)},_0xb27dx4,null,_0xb27dxb)})));this[_0xc46a[30]](_0xc46a[100], new Menu(mxUtils[_0xc46a[29]](this,function(_0xb27dx3,_0xb27dx4){this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[106]),[mxConstants[_0xc46a[107]]],[mxConstants[_0xc46a[108]]],null,_0xb27dx4);this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[109]),[mxConstants[_0xc46a[107]]],[mxConstants[_0xc46a[110]]],null,_0xb27dx4);this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[111]),[mxConstants[_0xc46a[107]]],[mxConstants[_0xc46a[112]]],null,_0xb27dx4);_0xb27dx3[_0xc46a[24]](_0xb27dx4);this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[113]),[mxConstants[_0xc46a[114]]],[mxConstants[_0xc46a[115]]],null,_0xb27dx4);this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[116]),[mxConstants[_0xc46a[114]]],[mxConstants[_0xc46a[117]]],null,_0xb27dx4);this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[118]),[mxConstants[_0xc46a[114]]],[mxConstants[_0xc46a[119]]],null,_0xb27dx4);_0xb27dx3[_0xc46a[24]](_0xb27dx4);this[_0xc46a[94]](_0xc46a[120],_0xb27dx3,_0xb27dx4);this[_0xc46a[94]](_0xc46a[77],_0xb27dx3,_0xb27dx4);_0xb27dx3[_0xc46a[24]](_0xb27dx4);var _0xb27dxb=this[_0xc46a[26]](_0xc46a[93])[_0xc46a[78]];_0xb27dx3[_0xc46a[72]](mxResources[_0xc46a[26]](_0xc46a[48]),null,function(){_0xb27dx2[_0xc46a[71]](mxConstants.STYLE_HORIZONTAL,true)},_0xb27dx4,null,_0xb27dxb)})));this[_0xc46a[30]](_0xc46a[120], new Menu(mxUtils[_0xc46a[29]](this,function(_0xb27dx3,_0xb27dx4){this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[86]),[mxConstants[_0xc46a[121]],mxConstants[_0xc46a[107]]],[mxConstants[_0xc46a[108]],mxConstants[_0xc46a[112]]],null,_0xb27dx4);this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[109]),[mxConstants[_0xc46a[121]],mxConstants[_0xc46a[107]]],[mxConstants[_0xc46a[110]],mxConstants[_0xc46a[110]]],null,_0xb27dx4);this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[84]),[mxConstants[_0xc46a[121]],mxConstants[_0xc46a[107]]],[mxConstants[_0xc46a[112]],mxConstants[_0xc46a[108]]],null,_0xb27dx4);_0xb27dx3[_0xc46a[24]](_0xb27dx4);this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[82]),[mxConstants[_0xc46a[122]],mxConstants[_0xc46a[114]]],[mxConstants[_0xc46a[115]],mxConstants[_0xc46a[119]]],null,_0xb27dx4);this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[116]),[mxConstants[_0xc46a[122]],mxConstants[_0xc46a[114]]],[mxConstants[_0xc46a[117]],mxConstants[_0xc46a[117]]],null,_0xb27dx4);this[_0xc46a[20]](_0xb27dx3,mxResources[_0xc46a[26]](_0xc46a[85]),[mxConstants[_0xc46a[122]],mxConstants[_0xc46a[114]]],[mxConstants[_0xc46a[119]],mxConstants[_0xc46a[115]]],null,_0xb27dx4)})));this[_0xc46a[30]](_0xc46a[123], new Menu(mxUtils[_0xc46a[29]](this,function(_0xb27dx3,_0xb27dx4){_0xb27dx3[_0xc46a[72]](mxResources[_0xc46a[26]](_0xc46a[124]),null,function(){_0xb27dx2[_0xc46a[71]](mxConstants.STYLE_FLIPH,false)},_0xb27dx4);_0xb27dx3[_0xc46a[72]](mxResources[_0xc46a[26]](_0xc46a[125]),null,function(){_0xb27dx2[_0xc46a[71]](mxConstants.STYLE_FLIPV,false)},_0xb27dx4);this[_0xc46a[99]](_0xb27dx3,[_0xc46a[95],_0xc46a[126],_0xc46a[127]],_0xb27dx4)})));this[_0xc46a[30]](_0xc46a[128], new Menu(mxUtils[_0xc46a[29]](this,function(_0xb27dx3,_0xb27dx4){_0xb27dx3[_0xc46a[72]](mxResources[_0xc46a[26]](_0xc46a[106]),null,function(){_0xb27dx2[_0xc46a[129]](mxConstants.ALIGN_LEFT)},_0xb27dx4);_0xb27dx3[_0xc46a[72]](mxResources[_0xc46a[26]](_0xc46a[109]),null,function(){_0xb27dx2[_0xc46a[129]](mxConstants.ALIGN_CENTER)},_0xb27dx4);_0xb27dx3[_0xc46a[72]](mxResources[_0xc46a[26]](_0xc46a[111]),null,function(){_0xb27dx2[_0xc46a[129]](mxConstants.ALIGN_RIGHT)},_0xb27dx4);_0xb27dx3[_0xc46a[24]](_0xb27dx4);_0xb27dx3[_0xc46a[72]](mxResources[_0xc46a[26]](_0xc46a[113]),null,function(){_0xb27dx2[_0xc46a[129]](mxConstants.ALIGN_TOP)},_0xb27dx4);_0xb27dx3[_0xc46a[72]](mxResources[_0xc46a[26]](_0xc46a[116]),null,function(){_0xb27dx2[_0xc46a[129]](mxConstants.ALIGN_MIDDLE)},_0xb27dx4);_0xb27dx3[_0xc46a[72]](mxResources[_0xc46a[26]](_0xc46a[118]),null,function(){_0xb27dx2[_0xc46a[129]](mxConstants.ALIGN_BOTTOM)},_0xb27dx4)})));this[_0xc46a[30]](_0xc46a[130], new Menu(mxUtils[_0xc46a[29]](this,function(_0xb27dx3,_0xb27dx4){_0xb27dx3[_0xc46a[72]](mxResources[_0xc46a[26]](_0xc46a[131]),null,mxUtils[_0xc46a[29]](this,function(){var _0xb27dxc= new mxHierarchicalLayout(_0xb27dx2,mxConstants.DIRECTION_WEST);this[_0xc46a[0]][_0xc46a[132]](_0xb27dxc,true,true)}),_0xb27dx4);_0xb27dx3[_0xc46a[72]](mxResources[_0xc46a[26]](_0xc46a[133]),null,mxUtils[_0xc46a[29]](this,function(){var _0xb27dxc= new mxHierarchicalLayout(_0xb27dx2,mxConstants.DIRECTION_NORTH);this[_0xc46a[0]][_0xc46a[132]](_0xb27dxc,true,true)}),_0xb27dx4)})));this[_0xc46a[30]](_0xc46a[134], new Menu(mxUtils[_0xc46a[29]](this,function(_0xb27dx3,_0xb27dx4){this[_0xc46a[99]](_0xb27dx3,[_0xc46a[135],_0xc46a[95],_0xc46a[136],_0xc46a[137],_0xc46a[95],_0xc46a[138],_0xc46a[139]],_0xb27dx4)})));this[_0xc46a[30]](_0xc46a[140], new Menu(mxUtils[_0xc46a[29]](this,function(_0xb27dx3,_0xb27dx4){this[_0xc46a[99]](_0xb27dx3,[_0xc46a[141],_0xc46a[142],_0xc46a[95]],_0xb27dx4);this[_0xc46a[94]](_0xc46a[130],_0xb27dx3,_0xb27dx4);_0xb27dx3[_0xc46a[24]](_0xb27dx4);this[_0xc46a[99]](_0xb27dx3,[_0xc46a[95],_0xc46a[143],_0xc46a[144],_0xc46a[145]],_0xb27dx4)})));this[_0xc46a[30]](_0xc46a[146], new Menu(mxUtils[_0xc46a[29]](this,function(_0xb27dx3,_0xb27dx4){this[_0xc46a[99]](_0xb27dx3,[_0xc46a[147]],_0xb27dx4);_0xb27dx3[_0xc46a[24]]();var _0xb27dxd=[0.25,0.5,0.75,1,2,4];for(var _0xb27dx6=0;_0xb27dx6< _0xb27dxd[_0xc46a[18]];_0xb27dx6++){(function(_0xb27dxe){_0xb27dx3[_0xc46a[72]]((_0xb27dxe* 100)+ _0xc46a[148],null,function(){_0xb27dx2[_0xc46a[149]](_0xb27dxe)},_0xb27dx4)})(_0xb27dxd[_0xb27dx6])};this[_0xc46a[99]](_0xb27dx3,[_0xc46a[95],_0xc46a[150],_0xc46a[151],_0xc46a[95],_0xc46a[152],_0xc46a[153],_0xc46a[95],_0xc46a[154],_0xc46a[155]],_0xb27dx4)})));this[_0xc46a[30]](_0xc46a[156], new Menu(mxUtils[_0xc46a[29]](this,function(_0xb27dx3,_0xb27dx4){this[_0xc46a[99]](_0xb27dx3,[_0xc46a[157],_0xc46a[158],_0xc46a[95],_0xc46a[159],_0xc46a[160],_0xc46a[161],_0xc46a[95],_0xc46a[162],_0xc46a[95],_0xc46a[163],_0xc46a[164],_0xc46a[95],_0xc46a[165],_0xc46a[166],_0xc46a[95],_0xc46a[167]],_0xb27dx4)})));this[_0xc46a[30]](_0xc46a[168], new Menu(mxUtils[_0xc46a[29]](this,function(_0xb27dx3,_0xb27dx4){this[_0xc46a[99]](_0xb27dx3,[_0xc46a[169],_0xc46a[170],_0xc46a[95],_0xc46a[171],_0xc46a[172],_0xc46a[173],_0xc46a[174],_0xc46a[95],_0xc46a[175],_0xc46a[95],_0xc46a[176],_0xc46a[177],_0xc46a[178]])})));this[_0xc46a[30]](_0xc46a[179], new Menu(mxUtils[_0xc46a[29]](this,function(_0xb27dx3,_0xb27dx4){this[_0xc46a[99]](_0xb27dx3,[_0xc46a[179],_0xc46a[95],_0xc46a[180]])})))};Menus[_0xc46a[5]][_0xc46a[30]]= function(_0xb27dxf,_0xb27dx3){this[_0xc46a[1]][_0xb27dxf]= _0xb27dx3};Menus[_0xc46a[5]][_0xc46a[26]]= function(_0xb27dxf){return this[_0xc46a[1]][_0xb27dxf]};Menus[_0xc46a[5]][_0xc46a[94]]= function(_0xb27dxf,_0xb27dx3,_0xb27dx4){var _0xb27dxb=this[_0xc46a[26]](_0xb27dxf)[_0xc46a[78]];if(_0xb27dx3[_0xc46a[81]]|| _0xb27dxb){var _0xb27dx10=_0xb27dx3[_0xc46a[72]](mxResources[_0xc46a[26]](_0xb27dxf),null,null,_0xb27dx4,null,_0xb27dxb);this[_0xc46a[181]](_0xb27dxf,_0xb27dx3,_0xb27dx10)}};Menus[_0xc46a[5]][_0xc46a[181]]= function(_0xb27dxf,_0xb27dx11,_0xb27dx4){var _0xb27dx3=this[_0xc46a[26]](_0xb27dxf);if(_0xb27dx3!= null&& (_0xb27dx11[_0xc46a[81]]|| _0xb27dx3[_0xc46a[78]])){this[_0xc46a[26]](_0xb27dxf)[_0xc46a[182]](_0xb27dx11,_0xb27dx4)}};Menus[_0xc46a[5]][_0xc46a[20]]= function(_0xb27dx3,_0xb27dx12,_0xb27dx13,_0xb27dx14,_0xb27dx15,_0xb27dx4){return _0xb27dx3[_0xc46a[72]](_0xb27dx12,null,mxUtils[_0xc46a[29]](this,function(){var _0xb27dx2=this[_0xc46a[0]][_0xc46a[7]][_0xc46a[6]];_0xb27dx2[_0xc46a[184]]()[_0xc46a[183]]();try{for(var _0xb27dx6=0;_0xb27dx6< _0xb27dx13[_0xc46a[18]];_0xb27dx6++){_0xb27dx2[_0xc46a[185]](_0xb27dx13[_0xb27dx6],_0xb27dx14[_0xb27dx6])}}finally{_0xb27dx2[_0xc46a[184]]()[_0xc46a[186]]()}}),_0xb27dx4,_0xb27dx15)};Menus[_0xc46a[5]][_0xc46a[28]]= function(_0xb27dx3,_0xb27dx12,_0xb27dx16,_0xb27dx17,_0xb27dx18,_0xb27dx4,_0xb27dxb){return _0xb27dx3[_0xc46a[72]](_0xb27dx12,null,mxUtils[_0xc46a[29]](this,function(){var _0xb27dx2=this[_0xc46a[0]][_0xc46a[7]][_0xc46a[6]];var _0xb27dx19=_0xb27dx17;var _0xb27dx1a=_0xb27dx2[_0xc46a[189]]()[_0xc46a[188]](_0xb27dx2[_0xc46a[187]]());if(_0xb27dx1a!= null){_0xb27dx19= _0xb27dx1a[_0xc46a[21]][_0xb27dx18]|| _0xb27dx19};_0xb27dx19= mxUtils[_0xc46a[192]](mxResources[_0xc46a[26]](_0xc46a[190])+ ((_0xb27dx16[_0xc46a[18]]> 0)?(_0xc46a[191]+ _0xb27dx16):_0xc46a[27]),_0xb27dx19);if(_0xb27dx19!= null&& _0xb27dx19[_0xc46a[18]]> 0){_0xb27dx2[_0xc46a[185]](_0xb27dx18,_0xb27dx19)}}),_0xb27dx4,null,_0xb27dxb)};Menus[_0xc46a[5]][_0xc46a[92]]= function(_0xb27dx3,_0xb27dx18,_0xb27dx4){var _0xb27dx1b=this[_0xc46a[0]][_0xc46a[80]][_0xc46a[26]](_0xb27dx18);if(_0xb27dx1b!= null&& (_0xb27dx3[_0xc46a[81]]|| _0xb27dx1b[_0xc46a[78]])){var _0xb27dx1c=_0xb27dx3[_0xc46a[72]](_0xb27dx1b[_0xc46a[193]],null,_0xb27dx1b[_0xc46a[194]],_0xb27dx4,null,_0xb27dx1b[_0xc46a[78]]);if(_0xb27dx1b[_0xc46a[195]]&& _0xb27dx1b[_0xc46a[196]]()){this[_0xc46a[197]](_0xb27dx1c)};this[_0xc46a[198]](_0xb27dx1c,_0xb27dx1b);return _0xb27dx1c};return null};Menus[_0xc46a[5]][_0xc46a[198]]= function(_0xb27dx1c,_0xb27dx1b){if(_0xb27dx1b[_0xc46a[199]]!= null){var _0xb27dx1d=_0xb27dx1c[_0xc46a[23]][_0xc46a[22]][_0xc46a[22]];var _0xb27dx1e=document[_0xc46a[201]](_0xc46a[200]);_0xb27dx1e[_0xc46a[21]][_0xc46a[202]]= _0xc46a[203];mxUtils[_0xc46a[204]](_0xb27dx1e,_0xb27dx1b[_0xc46a[199]]);_0xb27dx1d[_0xc46a[205]](_0xb27dx1e)}};Menus[_0xc46a[5]][_0xc46a[197]]= function(_0xb27dx1c){var _0xb27dx1d=_0xb27dx1c[_0xc46a[23]][_0xc46a[22]];_0xb27dx1d[_0xc46a[21]][_0xc46a[206]]= _0xc46a[207]+ IMAGE_PATH+ _0xc46a[208];_0xb27dx1d[_0xc46a[21]][_0xc46a[209]]= _0xc46a[210];_0xb27dx1d[_0xc46a[21]][_0xc46a[211]]= _0xc46a[212]};Menus[_0xc46a[5]][_0xc46a[99]]= function(_0xb27dx3,_0xb27dx13,_0xb27dx4){for(var _0xb27dx6=0;_0xb27dx6< _0xb27dx13[_0xc46a[18]];_0xb27dx6++){if(_0xb27dx13[_0xb27dx6]== _0xc46a[95]){_0xb27dx3[_0xc46a[24]](_0xb27dx4)}else {this[_0xc46a[92]](_0xb27dx3,_0xb27dx13[_0xb27dx6],_0xb27dx4)}}};Menus[_0xc46a[5]][_0xc46a[213]]= function(_0xb27dx3,_0xb27dx1f,_0xb27dx20){var _0xb27dx2=this[_0xc46a[0]][_0xc46a[7]][_0xc46a[6]];_0xb27dx3[_0xc46a[214]]= true;if(_0xb27dx2[_0xc46a[215]]()){this[_0xc46a[99]](_0xb27dx3,[_0xc46a[169],_0xc46a[170],_0xc46a[95],_0xc46a[173],_0xc46a[95]])}else {this[_0xc46a[99]](_0xb27dx3,[_0xc46a[174],_0xc46a[95],_0xc46a[171],_0xc46a[172],_0xc46a[95],_0xc46a[175]]);if(_0xb27dx2[_0xc46a[216]]()== 1&& _0xb27dx2[_0xc46a[184]]()[_0xc46a[217]](_0xb27dx2[_0xc46a[187]]())){this[_0xc46a[99]](_0xb27dx3,[_0xc46a[218]])};_0xb27dx3[_0xc46a[24]]()};if(_0xb27dx2[_0xc46a[216]]()> 0){this[_0xc46a[99]](_0xb27dx3,[_0xc46a[141],_0xc46a[142],_0xc46a[95]]);if(_0xb27dx2[_0xc46a[184]]()[_0xc46a[217]](_0xb27dx2[_0xc46a[187]]())){var _0xb27dx21=false;var _0xb27dx1f=_0xb27dx2[_0xc46a[187]]();if(_0xb27dx1f!= null&& _0xb27dx2[_0xc46a[184]]()[_0xc46a[217]](_0xb27dx1f)){var _0xb27dx22=_0xb27dx2[_0xc46a[220]][_0xc46a[219]](_0xb27dx1f);if(_0xb27dx22 instanceof mxEdgeHandler&& _0xb27dx22[_0xc46a[221]]!= null&& _0xb27dx22[_0xc46a[221]][_0xc46a[18]]> 2){var _0xb27dx23=_0xb27dx22[_0xc46a[222]]( new mxMouseEvent(_0xb27dx20));var _0xb27dx24=this[_0xc46a[0]][_0xc46a[80]][_0xc46a[26]](_0xc46a[223]);_0xb27dx24[_0xc46a[224]]= _0xb27dx22;_0xb27dx24[_0xc46a[225]]= _0xb27dx23;_0xb27dx21= _0xb27dx23> 0&& _0xb27dx23< _0xb27dx22[_0xc46a[221]][_0xc46a[18]]}};this[_0xc46a[99]](_0xb27dx3,[_0xc46a[95],(_0xb27dx21)?_0xc46a[223]:_0xc46a[226]])}else {if(_0xb27dx2[_0xc46a[216]]()> 1){_0xb27dx3[_0xc46a[24]]();this[_0xc46a[99]](_0xb27dx3,[_0xc46a[143]])}};_0xb27dx3[_0xc46a[24]]();if(_0xb27dx2[_0xc46a[216]]()== 1){var _0xb27dx25=_0xb27dx2[_0xc46a[227]](_0xb27dx2[_0xc46a[187]]());if(_0xb27dx25!= null){this[_0xc46a[99]](_0xb27dx3,[_0xc46a[228]])}}}else {this[_0xc46a[99]](_0xb27dx3,[_0xc46a[95],_0xc46a[176],_0xc46a[177],_0xc46a[95],_0xc46a[178]])}};Menus[_0xc46a[5]][_0xc46a[229]]= function(_0xb27dx26){var _0xb27dx27= new Menubar(this[_0xc46a[0]],_0xb27dx26);var _0xb27dx28=[_0xc46a[156],_0xc46a[168],_0xc46a[146],_0xc46a[91],_0xc46a[93],_0xc46a[140]];for(var _0xb27dx6=0;_0xb27dx6< _0xb27dx28[_0xc46a[18]];_0xb27dx6++){_0xb27dx27[_0xc46a[181]](mxResources[_0xc46a[26]](_0xb27dx28[_0xb27dx6]),this[_0xc46a[26]](_0xb27dx28[_0xb27dx6])[_0xc46a[194]])};return _0xb27dx27};function Menubar(_0xb27dx1,_0xb27dx26){this[_0xc46a[0]]= _0xb27dx1;this[_0xc46a[230]]= _0xb27dx26;mxEvent[_0xc46a[232]](document,mxUtils[_0xc46a[29]](this,function(_0xb27dx20){this[_0xc46a[231]]()}))}Menubar[_0xc46a[5]][_0xc46a[231]]= function(){if(this[_0xc46a[233]]!= null){this[_0xc46a[233]][_0xc46a[231]]()}};Menubar[_0xc46a[5]][_0xc46a[181]]= function(_0xb27dx12,_0xb27dx2a){var _0xb27dx2b=document[_0xc46a[201]](_0xc46a[234]);_0xb27dx2b[_0xc46a[237]](_0xc46a[235],_0xc46a[236]);_0xb27dx2b[_0xc46a[238]]= _0xc46a[239];mxUtils[_0xc46a[204]](_0xb27dx2b,_0xb27dx12);this[_0xc46a[240]](_0xb27dx2b,_0xb27dx2a);this[_0xc46a[230]][_0xc46a[205]](_0xb27dx2b);return _0xb27dx2b};Menubar[_0xc46a[5]][_0xc46a[240]]= function(_0xb27dx2b,_0xb27dx2a){if(_0xb27dx2a!= null){var _0xb27dx2c=true;var _0xb27dx2d=mxUtils[_0xc46a[29]](this,function(_0xb27dx20){if(_0xb27dx2c&& _0xb27dx2b[_0xc46a[78]]== null|| _0xb27dx2b[_0xc46a[78]]){this[_0xc46a[0]][_0xc46a[7]][_0xc46a[6]][_0xc46a[241]][_0xc46a[231]]();var _0xb27dx3= new mxPopupMenu(_0xb27dx2a);_0xb27dx3[_0xc46a[242]][_0xc46a[238]]+= _0xc46a[243];_0xb27dx3[_0xc46a[214]]= true;_0xb27dx3[_0xc46a[81]]= true;_0xb27dx3[_0xc46a[244]]= true;_0xb27dx3[_0xc46a[231]]= mxUtils[_0xc46a[29]](this,function(){mxPopupMenu[_0xc46a[5]][_0xc46a[231]][_0xc46a[245]](_0xb27dx3,arguments);_0xb27dx3[_0xc46a[246]]();this[_0xc46a[233]]= null;this[_0xc46a[247]]= null});var _0xb27dx2e=_0xb27dx2b[_0xc46a[248]]+ document[_0xc46a[251]](_0xc46a[250])[_0xc46a[249]]+ 22;var _0xb27dx2f=_0xb27dx2b[_0xc46a[252]]+ _0xb27dx2b[_0xc46a[253]]+ 140;_0xb27dx3[_0xc46a[254]](_0xb27dx2e,_0xb27dx2f,null,_0xb27dx20);this[_0xc46a[233]]= _0xb27dx3;this[_0xc46a[247]]= _0xb27dx2b};_0xb27dx2c= true;mxEvent[_0xc46a[255]](_0xb27dx20)});mxEvent[_0xc46a[257]](_0xb27dx2b,_0xc46a[256],mxUtils[_0xc46a[29]](this,function(_0xb27dx20){if(this[_0xc46a[233]]!= null&& this[_0xc46a[247]]!= _0xb27dx2b){this[_0xc46a[231]]();_0xb27dx2d(_0xb27dx20)}}));mxEvent[_0xc46a[257]](_0xb27dx2b,_0xc46a[258],mxUtils[_0xc46a[29]](this,function(){_0xb27dx2c= this[_0xc46a[247]]!= _0xb27dx2b}));mxEvent[_0xc46a[257]](_0xb27dx2b,_0xc46a[259],_0xb27dx2d)}};function Menu(_0xb27dx2a,_0xb27dxb){mxEventSource[_0xc46a[260]](this);this[_0xc46a[194]]= _0xb27dx2a;this[_0xc46a[78]]= (_0xb27dxb!= null)?_0xb27dxb:true}mxUtils[_0xc46a[261]](Menu,mxEventSource);Menu[_0xc46a[5]][_0xc46a[262]]= function(_0xb27dx19){if(this[_0xc46a[78]]!= _0xb27dx19){this[_0xc46a[78]]= _0xb27dx19;this[_0xc46a[264]]( new mxEventObject(_0xc46a[263]))}};Menu[_0xc46a[5]][_0xc46a[182]]= function(_0xb27dx3,_0xb27dx4){this[_0xc46a[194]](_0xb27dx3,_0xb27dx4)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/public/assets/plugins/jscripty/js/Shapes.js b/public/assets/plugins/jscripty/js/Shapes.js index 72212d4..66dc905 100644 --- a/public/assets/plugins/jscripty/js/Shapes.js +++ b/public/assets/plugins/jscripty/js/Shapes.js @@ -1 +1 @@ -var _0xe19c=["\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x63\x6F\x6E\x73\x74\x72\x75\x63\x74\x6F\x72","\x73\x69\x7A\x65","\x72\x65\x64\x72\x61\x77\x50\x61\x74\x68","\x73\x74\x79\x6C\x65","\x67\x65\x74\x56\x61\x6C\x75\x65","\x6D\x69\x6E","\x6D\x6F\x76\x65\x54\x6F","\x6C\x69\x6E\x65\x54\x6F","\x65\x6E\x64","\x63\x6C\x6F\x73\x65","\x63\x75\x62\x65","\x64\x65\x66\x61\x75\x6C\x74\x53\x68\x61\x70\x65\x73","\x6E\x6F\x74\x65","\x74\x61\x62\x57\x69\x64\x74\x68","\x74\x61\x62\x48\x65\x69\x67\x68\x74","\x74\x61\x62\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x72\x69\x67\x68\x74","\x6C\x65\x66\x74","\x66\x6F\x6C\x64\x65\x72","\x63\x61\x72\x64","\x71\x75\x61\x64\x54\x6F","\x74\x61\x70\x65","\x73\x74\x65\x70","\x63\x61\x6C\x6C","\x65\x78\x74\x65\x6E\x64","\x69\x73\x48\x74\x6D\x6C\x41\x6C\x6C\x6F\x77\x65\x64","\x70\x61\x69\x6E\x74\x46\x6F\x72\x65\x67\x72\x6F\x75\x6E\x64","\x62\x65\x67\x69\x6E","\x73\x74\x72\x6F\x6B\x65","\x61\x70\x70\x6C\x79","\x70\x6C\x75\x73","\x64\x6F\x75\x62\x6C\x65","\x73\x74\x72\x6F\x6B\x65\x77\x69\x64\x74\x68","\x6D\x61\x78","\x70\x61\x69\x6E\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x73\x65\x74\x44\x61\x73\x68\x65\x64","\x73\x79\x6D\x62\x6F\x6C","\x41\x6C\x69\x67\x6E","\x56\x65\x72\x74\x69\x63\x61\x6C\x41\x6C\x69\x67\x6E","\x57\x69\x64\x74\x68","\x48\x65\x69\x67\x68\x74","\x53\x70\x61\x63\x69\x6E\x67","\x41\x72\x63\x53\x70\x61\x63\x69\x6E\x67","\x67\x65\x74\x41\x72\x63\x53\x69\x7A\x65","\x41\x4C\x49\x47\x4E\x5F\x43\x45\x4E\x54\x45\x52","\x41\x4C\x49\x47\x4E\x5F\x52\x49\x47\x48\x54","\x41\x4C\x49\x47\x4E\x5F\x4D\x49\x44\x44\x4C\x45","\x41\x4C\x49\x47\x4E\x5F\x42\x4F\x54\x54\x4F\x4D","\x73\x61\x76\x65","\x70\x61\x69\x6E\x74\x56\x65\x72\x74\x65\x78\x53\x68\x61\x70\x65","\x72\x65\x73\x74\x6F\x72\x65","\x65\x78\x74","\x6D\x65\x73\x73\x61\x67\x65","\x61\x64\x64\x50\x69\x70\x65","\x63\x75\x72\x76\x65\x54\x6F","\x75\x6D\x6C\x41\x63\x74\x6F\x72","\x6C\x6F\x6C\x6C\x69\x70\x6F\x70","\x6A\x65\x74\x74\x79\x57\x69\x64\x74\x68","\x6A\x65\x74\x74\x79\x48\x65\x69\x67\x68\x74","\x63\x6F\x6D\x70\x6F\x6E\x65\x6E\x74","\x6F\x75\x74\x65\x72\x53\x74\x72\x6F\x6B\x65","\x65\x6C\x6C\x69\x70\x73\x65","\x66\x69\x6C\x6C\x41\x6E\x64\x53\x74\x72\x6F\x6B\x65","\x73\x65\x74\x53\x68\x61\x64\x6F\x77","\x65\x6E\x64\x53\x74\x61\x74\x65","\x73\x74\x61\x72\x74\x53\x74\x61\x74\x65","\x69\x6E\x69\x74\x53\x68\x61\x70\x65\x73","\x78","\x79","\x77\x69\x64\x74\x68","\x68\x65\x69\x67\x68\x74","\x73\x68\x61\x70\x65\x73","\x70\x61\x69\x6E\x74\x45\x64\x67\x65\x53\x68\x61\x70\x65","\x6C\x65\x6E\x67\x74\x68","\x73\x71\x72\x74","\x6C\x69\x6E\x6B","\x64\x61\x73\x68","\x61\x64\x64\x4D\x61\x72\x6B\x65\x72","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x75\x73\x65\x47\x72\x69\x64\x46\x6F\x72\x53\x70\x65\x63\x69\x61\x6C\x48\x61\x6E\x64\x6C\x65","\x69\x6E\x69\x74","\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C","\x73\x74\x61\x74\x65","\x67\x72\x61\x70\x68","\x76\x69\x65\x77","\x68\x61\x6E\x64\x6C\x65\x49\x6D\x61\x67\x65","\x73\x70\x65\x63\x69\x61\x6C\x48\x61\x6E\x64\x6C\x65","\x73\x72\x63","\x64\x69\x61\x6C\x65\x63\x74","\x44\x49\x41\x4C\x45\x43\x54\x5F\x53\x56\x47","\x44\x49\x41\x4C\x45\x43\x54\x5F\x56\x4D\x4C","\x67\x65\x74\x4F\x76\x65\x72\x6C\x61\x79\x50\x61\x6E\x65","\x67\x65\x74\x56\x69\x65\x77","\x63\x75\x72\x73\x6F\x72","\x6E\x6F\x64\x65","\x67\x65\x74\x53\x70\x65\x63\x69\x61\x6C\x48\x61\x6E\x64\x6C\x65\x43\x75\x72\x73\x6F\x72","\x72\x65\x64\x69\x72\x65\x63\x74\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74\x73","\x64\x65\x66\x61\x75\x6C\x74","\x72\x65\x64\x72\x61\x77","\x62\x6F\x75\x6E\x64\x73","\x67\x65\x74\x53\x70\x65\x63\x69\x61\x6C\x48\x61\x6E\x64\x6C\x65\x42\x6F\x75\x6E\x64\x73","\x64\x65\x73\x74\x72\x6F\x79","\x67\x65\x74\x48\x61\x6E\x64\x6C\x65\x46\x6F\x72\x45\x76\x65\x6E\x74","\x69\x73\x53\x6F\x75\x72\x63\x65","\x6D\x6F\x75\x73\x65\x4D\x6F\x76\x65","\x69\x73\x43\x6F\x6E\x73\x75\x6D\x65\x64","\x69\x6E\x64\x65\x78","\x67\x65\x74\x47\x72\x61\x70\x68\x58","\x67\x65\x74\x47\x72\x61\x70\x68\x59","\x63\x6F\x6E\x73\x74\x72\x61\x69\x6E\x50\x6F\x69\x6E\x74","\x67\x65\x74\x45\x76\x65\x6E\x74","\x69\x73\x47\x72\x69\x64\x45\x6E\x61\x62\x6C\x65\x64\x45\x76\x65\x6E\x74","\x73\x63\x61\x6C\x65","\x73\x6E\x61\x70","\x75\x70\x64\x61\x74\x65\x53\x74\x79\x6C\x65","\x6D\x6F\x76\x65\x53\x69\x7A\x65\x72\x54\x6F","\x63\x65\x6C\x6C\x52\x65\x6E\x64\x65\x72\x65\x72","\x63\x6F\x6E\x73\x75\x6D\x65","\x6D\x6F\x75\x73\x65\x55\x70","\x61\x70\x70\x6C\x79\x53\x74\x79\x6C\x65","\x72\x65\x73\x65\x74","\x67\x65\x74\x53\x68\x61\x70\x65\x52\x6F\x74\x61\x74\x69\x6F\x6E","\x73\x68\x61\x70\x65","\x74\x6F\x52\x61\x64\x69\x61\x6E\x73","\x63\x6F\x73","\x73\x69\x6E","\x69\x73\x50\x61\x69\x6E\x74\x42\x6F\x75\x6E\x64\x73\x49\x6E\x76\x65\x72\x74\x65\x64","\x67\x65\x74\x53\x70\x65\x63\x69\x61\x6C\x48\x61\x6E\x64\x6C\x65\x50\x6F\x69\x6E\x74","\x66\x6C\x69\x70\x48","\x66\x6C\x69\x70\x56","\x67\x65\x74\x43\x65\x6E\x74\x65\x72\x58","\x67\x65\x74\x43\x65\x6E\x74\x65\x72\x59","\x67\x65\x74\x52\x6F\x74\x61\x74\x65\x64\x50\x6F\x69\x6E\x74","\x75\x70\x64\x61\x74\x65\x53\x74\x79\x6C\x65\x55\x6E\x72\x6F\x74\x61\x74\x65\x64","\x72\x6F\x75\x6E\x64","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x62\x65\x67\x69\x6E\x55\x70\x64\x61\x74\x65","\x63\x65\x6C\x6C","\x73\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x73","\x65\x6E\x64\x55\x70\x64\x61\x74\x65","\x73\x74\x61\x72\x74\x53\x69\x7A\x65","\x64\x65\x66\x61\x75\x6C\x74\x56\x61\x6C\x75\x65","\x73\x63\x61\x6C\x65\x46\x61\x63\x74\x6F\x72","\x63\x72\x65\x61\x74\x65\x48\x61\x6E\x64\x6C\x65\x72","\x67\x65\x74\x41\x6C\x6C\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x73","\x73\x74\x65\x6E\x63\x69\x6C","\x63\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x73"];(function(){function _0x5afax1(){}_0x5afax1[_0xe19c[0]]= new mxCylinder();_0x5afax1[_0xe19c[0]][_0xe19c[1]]= _0x5afax1;_0x5afax1[_0xe19c[0]][_0xe19c[2]]= 20;_0x5afax1[_0xe19c[0]][_0xe19c[3]]= function(_0x5afax2,_0x5afax3,_0x5afax4,_0x5afax5,_0x5afax6,_0x5afax7){var _0x5afax8=Math[_0xe19c[6]](_0x5afax5,Math[_0xe19c[6]](_0x5afax6,mxUtils[_0xe19c[5]](this[_0xe19c[4]],_0xe19c[2],this[_0xe19c[2]])));if(_0x5afax7){_0x5afax2[_0xe19c[7]](_0x5afax8,_0x5afax6);_0x5afax2[_0xe19c[8]](_0x5afax8,_0x5afax8);_0x5afax2[_0xe19c[8]](0,0);_0x5afax2[_0xe19c[7]](_0x5afax8,_0x5afax8);_0x5afax2[_0xe19c[8]](_0x5afax5,_0x5afax8);_0x5afax2[_0xe19c[9]]()}else {_0x5afax2[_0xe19c[7]](0,0);_0x5afax2[_0xe19c[8]](_0x5afax5- _0x5afax8,0);_0x5afax2[_0xe19c[8]](_0x5afax5,_0x5afax8);_0x5afax2[_0xe19c[8]](_0x5afax5,_0x5afax6);_0x5afax2[_0xe19c[8]](_0x5afax8,_0x5afax6);_0x5afax2[_0xe19c[8]](0,_0x5afax6- _0x5afax8);_0x5afax2[_0xe19c[8]](0,0);_0x5afax2[_0xe19c[10]]();_0x5afax2[_0xe19c[9]]()}};mxCellRenderer[_0xe19c[0]][_0xe19c[12]][_0xe19c[11]]= _0x5afax1;function _0x5afax9(){}_0x5afax9[_0xe19c[0]]= new mxCylinder();_0x5afax9[_0xe19c[0]][_0xe19c[1]]= _0x5afax9;_0x5afax9[_0xe19c[0]][_0xe19c[2]]= 30;_0x5afax9[_0xe19c[0]][_0xe19c[3]]= function(_0x5afax2,_0x5afax3,_0x5afax4,_0x5afax5,_0x5afax6,_0x5afax7){var _0x5afax8=Math[_0xe19c[6]](_0x5afax5,Math[_0xe19c[6]](_0x5afax6,mxUtils[_0xe19c[5]](this[_0xe19c[4]],_0xe19c[2],this[_0xe19c[2]])));if(_0x5afax7){_0x5afax2[_0xe19c[7]](_0x5afax5- _0x5afax8,0);_0x5afax2[_0xe19c[8]](_0x5afax5- _0x5afax8,_0x5afax8);_0x5afax2[_0xe19c[8]](_0x5afax5,_0x5afax8);_0x5afax2[_0xe19c[9]]()}else {_0x5afax2[_0xe19c[7]](0,0);_0x5afax2[_0xe19c[8]](_0x5afax5- _0x5afax8,0);_0x5afax2[_0xe19c[8]](_0x5afax5,_0x5afax8);_0x5afax2[_0xe19c[8]](_0x5afax5,_0x5afax6);_0x5afax2[_0xe19c[8]](0,_0x5afax6);_0x5afax2[_0xe19c[8]](0,0);_0x5afax2[_0xe19c[10]]();_0x5afax2[_0xe19c[9]]()}};mxCellRenderer[_0xe19c[0]][_0xe19c[12]][_0xe19c[13]]= _0x5afax9;function _0x5afaxa(){}_0x5afaxa[_0xe19c[0]]= new mxCylinder();_0x5afaxa[_0xe19c[0]][_0xe19c[1]]= _0x5afaxa;_0x5afaxa[_0xe19c[0]][_0xe19c[14]]= 60;_0x5afaxa[_0xe19c[0]][_0xe19c[15]]= 20;_0x5afaxa[_0xe19c[0]][_0xe19c[16]]= _0xe19c[17];_0x5afaxa[_0xe19c[0]][_0xe19c[3]]= function(_0x5afax2,_0x5afax3,_0x5afax4,_0x5afax5,_0x5afax6,_0x5afax7){var _0x5afaxb=mxUtils[_0xe19c[5]](this[_0xe19c[4]],_0xe19c[14],this[_0xe19c[14]]);var _0x5afaxc=mxUtils[_0xe19c[5]](this[_0xe19c[4]],_0xe19c[15],this[_0xe19c[15]]);var _0x5afaxd=mxUtils[_0xe19c[5]](this[_0xe19c[4]],_0xe19c[16],this[_0xe19c[16]]);var _0x5afaxe=Math[_0xe19c[6]](_0x5afax5,_0x5afaxb);var _0x5afaxf=Math[_0xe19c[6]](_0x5afax6,_0x5afaxc);if(_0x5afax7){if(_0x5afaxd== _0xe19c[18]){_0x5afax2[_0xe19c[7]](0,_0x5afaxf);_0x5afax2[_0xe19c[8]](_0x5afaxe,_0x5afaxf)}else {_0x5afax2[_0xe19c[7]](_0x5afax5- _0x5afaxe,_0x5afaxf);_0x5afax2[_0xe19c[8]](_0x5afax5,_0x5afaxf)};_0x5afax2[_0xe19c[9]]()}else {if(_0x5afaxd== _0xe19c[18]){_0x5afax2[_0xe19c[7]](0,0);_0x5afax2[_0xe19c[8]](_0x5afaxe,0);_0x5afax2[_0xe19c[8]](_0x5afaxe,_0x5afaxf);_0x5afax2[_0xe19c[8]](_0x5afax5,_0x5afaxf)}else {_0x5afax2[_0xe19c[7]](0,_0x5afaxf);_0x5afax2[_0xe19c[8]](_0x5afax5- _0x5afaxe,_0x5afaxf);_0x5afax2[_0xe19c[8]](_0x5afax5- _0x5afaxe,0);_0x5afax2[_0xe19c[8]](_0x5afax5,0)};_0x5afax2[_0xe19c[8]](_0x5afax5,_0x5afax6);_0x5afax2[_0xe19c[8]](0,_0x5afax6);_0x5afax2[_0xe19c[8]](0,_0x5afaxf);_0x5afax2[_0xe19c[10]]();_0x5afax2[_0xe19c[9]]()}};mxCellRenderer[_0xe19c[0]][_0xe19c[12]][_0xe19c[19]]= _0x5afaxa;function _0x5afax10(){}_0x5afax10[_0xe19c[0]]= new mxCylinder();_0x5afax10[_0xe19c[0]][_0xe19c[1]]= _0x5afax10;_0x5afax10[_0xe19c[0]][_0xe19c[2]]= 30;_0x5afax10[_0xe19c[0]][_0xe19c[3]]= function(_0x5afax2,_0x5afax3,_0x5afax4,_0x5afax5,_0x5afax6,_0x5afax7){var _0x5afax8=Math[_0xe19c[6]](_0x5afax5,Math[_0xe19c[6]](_0x5afax6,mxUtils[_0xe19c[5]](this[_0xe19c[4]],_0xe19c[2],this[_0xe19c[2]])));if(!_0x5afax7){_0x5afax2[_0xe19c[7]](_0x5afax8,0);_0x5afax2[_0xe19c[8]](_0x5afax5,0);_0x5afax2[_0xe19c[8]](_0x5afax5,_0x5afax6);_0x5afax2[_0xe19c[8]](0,_0x5afax6);_0x5afax2[_0xe19c[8]](0,_0x5afax8);_0x5afax2[_0xe19c[8]](_0x5afax8,0);_0x5afax2[_0xe19c[10]]();_0x5afax2[_0xe19c[9]]()}};mxCellRenderer[_0xe19c[0]][_0xe19c[12]][_0xe19c[20]]= _0x5afax10;function _0x5afax11(){}_0x5afax11[_0xe19c[0]]= new mxCylinder();_0x5afax11[_0xe19c[0]][_0xe19c[1]]= _0x5afax11;_0x5afax11[_0xe19c[0]][_0xe19c[2]]= 0.4;_0x5afax11[_0xe19c[0]][_0xe19c[3]]= function(_0x5afax2,_0x5afax3,_0x5afax4,_0x5afax5,_0x5afax6,_0x5afax7){var _0x5afax8=mxUtils[_0xe19c[5]](this[_0xe19c[4]],_0xe19c[2],this[_0xe19c[2]]);var _0x5afaxf=_0x5afax6* _0x5afax8;var _0x5afax12=1.4;if(!_0x5afax7){_0x5afax2[_0xe19c[7]](0,_0x5afaxf/ 2);_0x5afax2[_0xe19c[21]](_0x5afax5/ 4,_0x5afaxf* _0x5afax12,_0x5afax5/ 2,_0x5afaxf/ 2);_0x5afax2[_0xe19c[21]](_0x5afax5* 3/ 4,_0x5afaxf* (1- _0x5afax12),_0x5afax5,_0x5afaxf/ 2);_0x5afax2[_0xe19c[8]](_0x5afax5,_0x5afax6- _0x5afaxf/ 2);_0x5afax2[_0xe19c[21]](_0x5afax5* 3/ 4,_0x5afax6- _0x5afaxf* _0x5afax12,_0x5afax5/ 2,_0x5afax6- _0x5afaxf/ 2);_0x5afax2[_0xe19c[21]](_0x5afax5/ 4,_0x5afax6- _0x5afaxf* (1- _0x5afax12),0,_0x5afax6- _0x5afaxf/ 2);_0x5afax2[_0xe19c[8]](0,_0x5afaxf/ 2);_0x5afax2[_0xe19c[10]]();_0x5afax2[_0xe19c[9]]()}};mxCellRenderer[_0xe19c[0]][_0xe19c[12]][_0xe19c[22]]= _0x5afax11;function _0x5afax13(){}_0x5afax13[_0xe19c[0]]= new mxCylinder();_0x5afax13[_0xe19c[0]][_0xe19c[1]]= _0x5afax13;_0x5afax13[_0xe19c[0]][_0xe19c[2]]= 0.2;_0x5afax13[_0xe19c[0]][_0xe19c[3]]= function(_0x5afax2,_0x5afax3,_0x5afax4,_0x5afax5,_0x5afax6,_0x5afax7){var _0x5afax8=_0x5afax5* mxUtils[_0xe19c[5]](this[_0xe19c[4]],_0xe19c[2],this[_0xe19c[2]]);if(!_0x5afax7){_0x5afax2[_0xe19c[7]](0,0);_0x5afax2[_0xe19c[8]](_0x5afax5- _0x5afax8,0);_0x5afax2[_0xe19c[8]](_0x5afax5,_0x5afax6/ 2);_0x5afax2[_0xe19c[8]](_0x5afax5- _0x5afax8,_0x5afax6);_0x5afax2[_0xe19c[8]](0,_0x5afax6);_0x5afax2[_0xe19c[8]](_0x5afax8,_0x5afax6/ 2);_0x5afax2[_0xe19c[10]]();_0x5afax2[_0xe19c[9]]()}};mxCellRenderer[_0xe19c[0]][_0xe19c[12]][_0xe19c[23]]= _0x5afax13;function _0x5afax14(){mxRectangleShape[_0xe19c[24]](this)}mxUtils[_0xe19c[25]](_0x5afax14,mxRectangleShape);_0x5afax14[_0xe19c[0]][_0xe19c[26]]= function(){return false};_0x5afax14[_0xe19c[0]][_0xe19c[27]]= function(_0x5afax15,_0x5afax3,_0x5afax4,_0x5afax5,_0x5afax6){var _0x5afax16=Math[_0xe19c[6]](_0x5afax5/ 5,_0x5afax6/ 5)+ 1;_0x5afax15[_0xe19c[28]]();_0x5afax15[_0xe19c[7]](_0x5afax3+ _0x5afax5/ 2,_0x5afax4+ _0x5afax16);_0x5afax15[_0xe19c[8]](_0x5afax3+ _0x5afax5/ 2,_0x5afax4+ _0x5afax6- _0x5afax16);_0x5afax15[_0xe19c[7]](_0x5afax3+ _0x5afax16,_0x5afax4+ _0x5afax6/ 2);_0x5afax15[_0xe19c[8]](_0x5afax3+ _0x5afax5- _0x5afax16,_0x5afax4+ _0x5afax6/ 2);_0x5afax15[_0xe19c[9]]();_0x5afax15[_0xe19c[29]]();mxRectangleShape[_0xe19c[0]][_0xe19c[27]][_0xe19c[30]](this,arguments)};mxCellRenderer[_0xe19c[0]][_0xe19c[12]][_0xe19c[31]]= _0x5afax14;function _0x5afax17(){mxRectangleShape[_0xe19c[24]](this)}mxUtils[_0xe19c[25]](_0x5afax17,mxRectangleShape);_0x5afax17[_0xe19c[0]][_0xe19c[26]]= function(){return false};_0x5afax17[_0xe19c[0]][_0xe19c[27]]= function(_0x5afax15,_0x5afax3,_0x5afax4,_0x5afax5,_0x5afax6){if(this[_0xe19c[4]]!= null){if(this[_0xe19c[4]][_0xe19c[32]]== 1){var _0x5afax18=Math[_0xe19c[34]](2,this[_0xe19c[33]]+ 1);mxRectangleShape[_0xe19c[0]][_0xe19c[35]][_0xe19c[24]](this,_0x5afax15,_0x5afax3+ _0x5afax18,_0x5afax4+ _0x5afax18,_0x5afax5- 2* _0x5afax18,_0x5afax6- 2* _0x5afax18);mxRectangleShape[_0xe19c[0]][_0xe19c[27]][_0xe19c[30]](this,arguments);_0x5afax3+= _0x5afax18;_0x5afax4+= _0x5afax18;_0x5afax5-= 2* _0x5afax18;_0x5afax6-= 2* _0x5afax18};_0x5afax15[_0xe19c[36]](false);var _0x5afax19=0;var _0x5afax1a=null;do{_0x5afax1a= mxCellRenderer[_0xe19c[0]][_0xe19c[12]][this[_0xe19c[4]][_0xe19c[37]+ _0x5afax19]];if(_0x5afax1a!= null){var _0x5afax1b=this[_0xe19c[4]][_0xe19c[37]+ _0x5afax19+ _0xe19c[38]];var _0x5afax1c=this[_0xe19c[4]][_0xe19c[37]+ _0x5afax19+ _0xe19c[39]];var _0x5afax1d=this[_0xe19c[4]][_0xe19c[37]+ _0x5afax19+ _0xe19c[40]];var _0x5afax1e=this[_0xe19c[4]][_0xe19c[37]+ _0x5afax19+ _0xe19c[41]];var _0x5afax1f=this[_0xe19c[4]][_0xe19c[37]+ _0x5afax19+ _0xe19c[42]]|| 0;var _0x5afax20=this[_0xe19c[4]][_0xe19c[37]+ _0x5afax19+ _0xe19c[43]];if(_0x5afax20!= null){_0x5afax1f+= this[_0xe19c[44]](_0x5afax5+ this[_0xe19c[33]],_0x5afax6+ this[_0xe19c[33]])* _0x5afax20};var _0x5afax21=_0x5afax3;var _0x5afax22=_0x5afax4;if(_0x5afax1b== mxConstants[_0xe19c[45]]){_0x5afax21+= (_0x5afax5- _0x5afax1d)/ 2}else {if(_0x5afax1b== mxConstants[_0xe19c[46]]){_0x5afax21+= _0x5afax5- _0x5afax1d- _0x5afax1f}else {_0x5afax21+= _0x5afax1f}};if(_0x5afax1c== mxConstants[_0xe19c[47]]){_0x5afax22+= (_0x5afax6- _0x5afax1e)/ 2}else {if(_0x5afax1c== mxConstants[_0xe19c[48]]){_0x5afax22+= _0x5afax6- _0x5afax1e- _0x5afax1f}else {_0x5afax22+= _0x5afax1f}};_0x5afax15[_0xe19c[49]]();var _0x5afax23= new _0x5afax1a();_0x5afax23[_0xe19c[4]]= this[_0xe19c[4]];_0x5afax1a[_0xe19c[0]][_0xe19c[50]][_0xe19c[24]](_0x5afax23,_0x5afax15,_0x5afax21,_0x5afax22,_0x5afax1d,_0x5afax1e);_0x5afax15[_0xe19c[51]]()};_0x5afax19++}while(_0x5afax1a!= null);}};mxCellRenderer[_0xe19c[0]][_0xe19c[12]][_0xe19c[52]]= _0x5afax17;function _0x5afax24(){}_0x5afax24[_0xe19c[0]]= new mxCylinder();_0x5afax24[_0xe19c[0]][_0xe19c[1]]= _0x5afax24;_0x5afax24[_0xe19c[0]][_0xe19c[3]]= function(_0x5afax2,_0x5afax3,_0x5afax4,_0x5afax5,_0x5afax6,_0x5afax7){if(_0x5afax7){_0x5afax2[_0xe19c[7]](0,0);_0x5afax2[_0xe19c[8]](_0x5afax5/ 2,_0x5afax6/ 2);_0x5afax2[_0xe19c[8]](_0x5afax5,0);_0x5afax2[_0xe19c[9]]()}else {_0x5afax2[_0xe19c[7]](0,0);_0x5afax2[_0xe19c[8]](_0x5afax5,0);_0x5afax2[_0xe19c[8]](_0x5afax5,_0x5afax6);_0x5afax2[_0xe19c[8]](0,_0x5afax6);_0x5afax2[_0xe19c[10]]()}};mxCellRenderer[_0xe19c[0]][_0xe19c[12]][_0xe19c[53]]= _0x5afax24;function _0x5afax25(){}_0x5afax25[_0xe19c[0]]= new mxCylinder();_0x5afax25[_0xe19c[0]][_0xe19c[1]]= _0x5afax25;_0x5afax25[_0xe19c[0]][_0xe19c[54]]= true;_0x5afax25[_0xe19c[0]][_0xe19c[3]]= function(_0x5afax2,_0x5afax3,_0x5afax4,_0x5afax5,_0x5afax6,_0x5afax7){var _0x5afax1d=_0x5afax5/ 3;var _0x5afax1e=_0x5afax6/ 4;if(!_0x5afax7){_0x5afax2[_0xe19c[7]](_0x5afax5/ 2,_0x5afax1e);_0x5afax2[_0xe19c[55]](_0x5afax5/ 2- _0x5afax1d,_0x5afax1e,_0x5afax5/ 2- _0x5afax1d,0,_0x5afax5/ 2,0);_0x5afax2[_0xe19c[55]](_0x5afax5/ 2+ _0x5afax1d,0,_0x5afax5/ 2+ _0x5afax1d,_0x5afax1e,_0x5afax5/ 2,_0x5afax1e);_0x5afax2[_0xe19c[10]]();_0x5afax2[_0xe19c[7]](_0x5afax5/ 2,_0x5afax1e);_0x5afax2[_0xe19c[8]](_0x5afax5/ 2,2* _0x5afax6/ 3);_0x5afax2[_0xe19c[7]](_0x5afax5/ 2,_0x5afax6/ 3);_0x5afax2[_0xe19c[8]](0,_0x5afax6/ 3);_0x5afax2[_0xe19c[7]](_0x5afax5/ 2,_0x5afax6/ 3);_0x5afax2[_0xe19c[8]](_0x5afax5,_0x5afax6/ 3);_0x5afax2[_0xe19c[7]](_0x5afax5/ 2,2* _0x5afax6/ 3);_0x5afax2[_0xe19c[8]](0,_0x5afax6);_0x5afax2[_0xe19c[7]](_0x5afax5/ 2,2* _0x5afax6/ 3);_0x5afax2[_0xe19c[8]](_0x5afax5,_0x5afax6);_0x5afax2[_0xe19c[9]]()}};mxCellRenderer[_0xe19c[0]][_0xe19c[12]][_0xe19c[56]]= _0x5afax25;function _0x5afax26(){}_0x5afax26[_0xe19c[0]]= new mxCylinder();_0x5afax26[_0xe19c[0]][_0xe19c[1]]= _0x5afax26;_0x5afax26[_0xe19c[0]][_0xe19c[2]]= 10;_0x5afax26[_0xe19c[0]][_0xe19c[54]]= true;_0x5afax26[_0xe19c[0]][_0xe19c[3]]= function(_0x5afax2,_0x5afax3,_0x5afax4,_0x5afax5,_0x5afax6,_0x5afax7){var _0x5afax27=mxUtils[_0xe19c[5]](this[_0xe19c[4]],_0xe19c[2],this[_0xe19c[2]]);var _0x5afax1d=_0x5afax27* 2/ 3;var _0x5afax1e=_0x5afax27;if(!_0x5afax7){_0x5afax2[_0xe19c[7]](_0x5afax5/ 2,_0x5afax1e);_0x5afax2[_0xe19c[55]](_0x5afax5/ 2- _0x5afax1d,_0x5afax1e,_0x5afax5/ 2- _0x5afax1d,0,_0x5afax5/ 2,0);_0x5afax2[_0xe19c[55]](_0x5afax5/ 2+ _0x5afax1d,0,_0x5afax5/ 2+ _0x5afax1d,_0x5afax1e,_0x5afax5/ 2,_0x5afax1e);_0x5afax2[_0xe19c[10]]();_0x5afax2[_0xe19c[7]](_0x5afax5/ 2,_0x5afax1e);_0x5afax2[_0xe19c[8]](_0x5afax5/ 2,_0x5afax6);_0x5afax2[_0xe19c[9]]()}};mxCellRenderer[_0xe19c[0]][_0xe19c[12]][_0xe19c[57]]= _0x5afax26;function _0x5afax28(){}_0x5afax28[_0xe19c[0]]= new mxCylinder();_0x5afax28[_0xe19c[0]][_0xe19c[1]]= _0x5afax28;_0x5afax28[_0xe19c[0]][_0xe19c[58]]= 32;_0x5afax28[_0xe19c[0]][_0xe19c[59]]= 12;_0x5afax28[_0xe19c[0]][_0xe19c[3]]= function(_0x5afax2,_0x5afax3,_0x5afax4,_0x5afax5,_0x5afax6,_0x5afax7){var _0x5afaxe=mxUtils[_0xe19c[5]](this[_0xe19c[4]],_0xe19c[58],this[_0xe19c[58]]);var _0x5afaxf=mxUtils[_0xe19c[5]](this[_0xe19c[4]],_0xe19c[59],this[_0xe19c[59]]);var _0x5afax29=_0x5afaxe/ 2;var _0x5afax2a=_0x5afax29+ _0x5afaxe/ 2;var _0x5afax2b=0.3* _0x5afax6- _0x5afaxf/ 2;var _0x5afax2c=0.7* _0x5afax6- _0x5afaxf/ 2;if(_0x5afax7){_0x5afax2[_0xe19c[7]](_0x5afax29,_0x5afax2b);_0x5afax2[_0xe19c[8]](_0x5afax2a,_0x5afax2b);_0x5afax2[_0xe19c[8]](_0x5afax2a,_0x5afax2b+ _0x5afaxf);_0x5afax2[_0xe19c[8]](_0x5afax29,_0x5afax2b+ _0x5afaxf);_0x5afax2[_0xe19c[7]](_0x5afax29,_0x5afax2c);_0x5afax2[_0xe19c[8]](_0x5afax2a,_0x5afax2c);_0x5afax2[_0xe19c[8]](_0x5afax2a,_0x5afax2c+ _0x5afaxf);_0x5afax2[_0xe19c[8]](_0x5afax29,_0x5afax2c+ _0x5afaxf);_0x5afax2[_0xe19c[9]]()}else {_0x5afax2[_0xe19c[7]](_0x5afax29,0);_0x5afax2[_0xe19c[8]](_0x5afax5,0);_0x5afax2[_0xe19c[8]](_0x5afax5,_0x5afax6);_0x5afax2[_0xe19c[8]](_0x5afax29,_0x5afax6);_0x5afax2[_0xe19c[8]](_0x5afax29,_0x5afax2c+ _0x5afaxf);_0x5afax2[_0xe19c[8]](0,_0x5afax2c+ _0x5afaxf);_0x5afax2[_0xe19c[8]](0,_0x5afax2c);_0x5afax2[_0xe19c[8]](_0x5afax29,_0x5afax2c);_0x5afax2[_0xe19c[8]](_0x5afax29,_0x5afax2b+ _0x5afaxf);_0x5afax2[_0xe19c[8]](0,_0x5afax2b+ _0x5afaxf);_0x5afax2[_0xe19c[8]](0,_0x5afax2b);_0x5afax2[_0xe19c[8]](_0x5afax29,_0x5afax2b);_0x5afax2[_0xe19c[10]]();_0x5afax2[_0xe19c[9]]()}};mxCellRenderer[_0xe19c[0]][_0xe19c[12]][_0xe19c[60]]= _0x5afax28;function _0x5afax2d(){}_0x5afax2d[_0xe19c[0]]= new mxDoubleEllipse();_0x5afax2d[_0xe19c[0]][_0xe19c[1]]= _0x5afax2d;_0x5afax2d[_0xe19c[0]][_0xe19c[61]]= true;_0x5afax2d[_0xe19c[0]][_0xe19c[50]]= function(_0x5afax15,_0x5afax3,_0x5afax4,_0x5afax5,_0x5afax6){var _0x5afax18=Math[_0xe19c[6]](4,Math[_0xe19c[6]](_0x5afax5/ 5,_0x5afax6/ 5));if(_0x5afax5> 0&& _0x5afax6> 0){_0x5afax15[_0xe19c[62]](_0x5afax3+ _0x5afax18,_0x5afax4+ _0x5afax18,_0x5afax5- 2* _0x5afax18,_0x5afax6- 2* _0x5afax18);_0x5afax15[_0xe19c[63]]()};_0x5afax15[_0xe19c[64]](false);if(this[_0xe19c[61]]){_0x5afax15[_0xe19c[62]](_0x5afax3,_0x5afax4,_0x5afax5,_0x5afax6);_0x5afax15[_0xe19c[29]]()}};mxCellRenderer[_0xe19c[0]][_0xe19c[12]][_0xe19c[65]]= _0x5afax2d;function _0x5afax2e(){}_0x5afax2e[_0xe19c[0]]= new _0x5afax2d();_0x5afax2e[_0xe19c[0]][_0xe19c[1]]= _0x5afax2e;_0x5afax2e[_0xe19c[0]][_0xe19c[61]]= false;mxCellRenderer[_0xe19c[0]][_0xe19c[12]][_0xe19c[66]]= _0x5afax2e;var _0x5afax2f=mxImageExport[_0xe19c[0]][_0xe19c[67]];mxImageExport[_0xe19c[0]][_0xe19c[67]]= function(){_0x5afax2f[_0xe19c[30]](this,arguments);function _0x5afax30(_0x5afax31){return {drawShape:function(_0x5afax32,_0x5afax33,_0x5afax34,_0x5afax35){var _0x5afax3=_0x5afax34[_0xe19c[68]];var _0x5afax4=_0x5afax34[_0xe19c[69]];var _0x5afax5=_0x5afax34[_0xe19c[70]];var _0x5afax6=_0x5afax34[_0xe19c[71]];if(_0x5afax35){var _0x5afax18=Math[_0xe19c[6]](4,Math[_0xe19c[6]](_0x5afax5/ 5,_0x5afax6/ 5));_0x5afax3+= _0x5afax18;_0x5afax4+= _0x5afax18;_0x5afax5-= 2* _0x5afax18;_0x5afax6-= 2* _0x5afax18;if(_0x5afax5> 0&& _0x5afax6> 0){_0x5afax32[_0xe19c[62]](_0x5afax3,_0x5afax4,_0x5afax5,_0x5afax6)};return true}else {_0x5afax32[_0xe19c[63]]();if(_0x5afax31){_0x5afax32[_0xe19c[62]](_0x5afax3,_0x5afax4,_0x5afax5,_0x5afax6);_0x5afax32[_0xe19c[29]]()}}}}}this[_0xe19c[72]][_0xe19c[65]]= _0x5afax30(true);this[_0xe19c[72]][_0xe19c[66]]= _0x5afax30(false)};function _0x5afax36(){mxArrow[_0xe19c[24]](this)}mxUtils[_0xe19c[25]](_0x5afax36,mxArrow);_0x5afax36[_0xe19c[0]][_0xe19c[73]]= function(_0x5afax15,_0x5afax37){var _0x5afax1d=10;var _0x5afax38=_0x5afax37[0];var _0x5afax39=_0x5afax37[_0x5afax37[_0xe19c[74]]- 1];var _0x5afaxe=_0x5afax39[_0xe19c[68]]- _0x5afax38[_0xe19c[68]];var _0x5afaxf=_0x5afax39[_0xe19c[69]]- _0x5afax38[_0xe19c[69]];var _0x5afax3a=Math[_0xe19c[75]](_0x5afaxe* _0x5afaxe+ _0x5afaxf* _0x5afaxf);var _0x5afax3b=_0x5afax3a;var _0x5afax3c=_0x5afaxe/ _0x5afax3a;var _0x5afax3d=_0x5afaxf/ _0x5afax3a;var _0x5afax3e=_0x5afax3b* _0x5afax3c;var _0x5afax3f=_0x5afax3b* _0x5afax3d;var _0x5afax40=_0x5afax1d* _0x5afax3d/ 3;var _0x5afax41=-_0x5afax1d* _0x5afax3c / 3;var _0x5afax42=_0x5afax38[_0xe19c[68]]- _0x5afax40/ 2;var _0x5afax43=_0x5afax38[_0xe19c[69]]- _0x5afax41/ 2;var _0x5afax44=_0x5afax42+ _0x5afax40;var _0x5afax45=_0x5afax43+ _0x5afax41;var _0x5afax46=_0x5afax44+ _0x5afax3e;var _0x5afax47=_0x5afax45+ _0x5afax3f;var _0x5afax48=_0x5afax46+ _0x5afax40;var _0x5afax49=_0x5afax47+ _0x5afax41;var _0x5afax4a=_0x5afax48- 3* _0x5afax40;var _0x5afax4b=_0x5afax49- 3* _0x5afax41;_0x5afax15[_0xe19c[28]]();_0x5afax15[_0xe19c[7]](_0x5afax44,_0x5afax45);_0x5afax15[_0xe19c[8]](_0x5afax46,_0x5afax47);_0x5afax15[_0xe19c[7]](_0x5afax4a+ _0x5afax40,_0x5afax4b+ _0x5afax41);_0x5afax15[_0xe19c[8]](_0x5afax42,_0x5afax43);_0x5afax15[_0xe19c[29]]()};mxCellRenderer[_0xe19c[0]][_0xe19c[12]][_0xe19c[76]]= _0x5afax36;mxMarker[_0xe19c[78]](_0xe19c[77],function(_0x5afax32,_0x5afax1a,_0x5afax4c,_0x5afax39,_0x5afax4d,_0x5afax4e,_0x5afax4f,_0x5afax50,_0x5afax51,_0x5afax52){var _0x5afax3c=_0x5afax4d* (_0x5afax4f+ _0x5afax51+ 1);var _0x5afax3d=_0x5afax4e* (_0x5afax4f+ _0x5afax51+ 1);return function(){_0x5afax32[_0xe19c[28]]();_0x5afax32[_0xe19c[7]](_0x5afax39[_0xe19c[68]]- _0x5afax3c/ 2- _0x5afax3d/ 2,_0x5afax39[_0xe19c[69]]- _0x5afax3d/ 2+ _0x5afax3c/ 2);_0x5afax32[_0xe19c[8]](_0x5afax39[_0xe19c[68]]+ _0x5afax3d/ 2- 3* _0x5afax3c/ 2,_0x5afax39[_0xe19c[69]]- 3* _0x5afax3d/ 2- _0x5afax3c/ 2);_0x5afax32[_0xe19c[29]]()}});var _0x5afax53=-99;if( typeof (mxVertexHandler)!= _0xe19c[79]){function _0x5afax54(_0x5afax33){mxVertexHandler[_0xe19c[24]](this,_0x5afax33)}mxUtils[_0xe19c[25]](_0x5afax54,mxVertexHandler);_0x5afax54[_0xe19c[0]][_0xe19c[80]]= false;_0x5afax54[_0xe19c[0]][_0xe19c[81]]= function(){this[_0xe19c[82]]= mxUtils[_0xe19c[5]](this[_0xe19c[83]][_0xe19c[4]],mxConstants.STYLE_HORIZONTAL,true);var _0x5afax55=this[_0xe19c[83]][_0xe19c[85]][_0xe19c[84]];if(this[_0xe19c[86]]!= null){var _0x5afax34= new mxRectangle(0,0,this[_0xe19c[86]][_0xe19c[70]],this[_0xe19c[86]][_0xe19c[71]]);this[_0xe19c[87]]= new mxImageShape(_0x5afax34,this[_0xe19c[86]][_0xe19c[88]])}else {var _0x5afax4f=10;var _0x5afax34= new mxRectangle(0,0,_0x5afax4f,_0x5afax4f);this[_0xe19c[87]]= new mxRhombus(_0x5afax34,mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};this[_0xe19c[87]][_0xe19c[89]]= (_0x5afax55[_0xe19c[89]]!= mxConstants[_0xe19c[90]])?mxConstants[_0xe19c[91]]:mxConstants[_0xe19c[90]];this[_0xe19c[87]][_0xe19c[81]](_0x5afax55[_0xe19c[93]]()[_0xe19c[92]]());this[_0xe19c[87]][_0xe19c[95]][_0xe19c[4]][_0xe19c[94]]= this[_0xe19c[96]]();mxEvent[_0xe19c[97]](this[_0xe19c[87]][_0xe19c[95]],_0x5afax55,this[_0xe19c[83]]);mxVertexHandler[_0xe19c[0]][_0xe19c[81]][_0xe19c[30]](this,arguments)};_0x5afax54[_0xe19c[0]][_0xe19c[96]]= function(){return _0xe19c[98]};_0x5afax54[_0xe19c[0]][_0xe19c[99]]= function(){mxVertexHandler[_0xe19c[0]][_0xe19c[99]][_0xe19c[30]](this,arguments);var _0x5afax4f=this[_0xe19c[87]][_0xe19c[100]][_0xe19c[70]];this[_0xe19c[87]][_0xe19c[100]]= this[_0xe19c[101]](_0x5afax4f);this[_0xe19c[87]][_0xe19c[99]]()};_0x5afax54[_0xe19c[0]][_0xe19c[102]]= function(){mxVertexHandler[_0xe19c[0]][_0xe19c[102]][_0xe19c[30]](this,arguments);if(this[_0xe19c[87]]!= null){this[_0xe19c[87]][_0xe19c[102]]();this[_0xe19c[87]]= null}};_0x5afax54[_0xe19c[0]][_0xe19c[103]]= function(_0x5afax56){if(_0x5afax56[_0xe19c[104]](this[_0xe19c[87]])){return _0x5afax53};return mxVertexHandler[_0xe19c[0]][_0xe19c[103]][_0xe19c[30]](this,arguments)};_0x5afax54[_0xe19c[0]][_0xe19c[105]]= function(_0x5afax57,_0x5afax56){if(!_0x5afax56[_0xe19c[106]]()&& this[_0xe19c[107]]== _0x5afax53){var _0x5afax58= new mxPoint(_0x5afax56[_0xe19c[108]](),_0x5afax56[_0xe19c[109]]());this[_0xe19c[110]](_0x5afax58);var _0x5afax59=this[_0xe19c[84]][_0xe19c[112]](_0x5afax56[_0xe19c[111]]());var _0x5afax5a=this[_0xe19c[84]][_0xe19c[93]]()[_0xe19c[113]];if(_0x5afax59&& this[_0xe19c[80]]){_0x5afax58[_0xe19c[68]]= this[_0xe19c[84]][_0xe19c[114]](_0x5afax58[_0xe19c[68]]/ _0x5afax5a)* _0x5afax5a;_0x5afax58[_0xe19c[69]]= this[_0xe19c[84]][_0xe19c[114]](_0x5afax58[_0xe19c[69]]/ _0x5afax5a)* _0x5afax5a};this[_0xe19c[115]](_0x5afax58);this[_0xe19c[116]](this[_0xe19c[87]],_0x5afax58[_0xe19c[68]],_0x5afax58[_0xe19c[69]]);this[_0xe19c[83]][_0xe19c[85]][_0xe19c[84]][_0xe19c[117]][_0xe19c[99]](this[_0xe19c[83]],true);_0x5afax56[_0xe19c[118]]()}else {mxVertexHandler[_0xe19c[0]][_0xe19c[105]][_0xe19c[30]](this,arguments)}};_0x5afax54[_0xe19c[0]][_0xe19c[119]]= function(_0x5afax57,_0x5afax56){if(!_0x5afax56[_0xe19c[106]]()&& this[_0xe19c[107]]== _0x5afax53){this[_0xe19c[120]]();this[_0xe19c[121]]();_0x5afax56[_0xe19c[118]]()}else {mxVertexHandler[_0xe19c[0]][_0xe19c[119]][_0xe19c[30]](this,arguments)}};_0x5afax54[_0xe19c[0]][_0xe19c[101]]= function(_0x5afax4f){var _0x5afax5b=this[_0xe19c[83]][_0xe19c[123]][_0xe19c[122]]();var _0x5afax5c=mxUtils[_0xe19c[124]](_0x5afax5b);var _0x5afax5d=Math[_0xe19c[125]](_0x5afax5c);var _0x5afax5e=Math[_0xe19c[126]](_0x5afax5c);var _0x5afax34= new mxRectangle(this[_0xe19c[83]][_0xe19c[68]],this[_0xe19c[83]][_0xe19c[69]],this[_0xe19c[83]][_0xe19c[70]],this[_0xe19c[83]][_0xe19c[71]]);if(this[_0xe19c[83]][_0xe19c[123]][_0xe19c[127]]()){var _0x5afax5f=(_0x5afax34[_0xe19c[70]]- _0x5afax34[_0xe19c[71]])/ 2;_0x5afax34[_0xe19c[68]]+= _0x5afax5f;_0x5afax34[_0xe19c[69]]-= _0x5afax5f;var _0x5afax23=_0x5afax34[_0xe19c[70]];_0x5afax34[_0xe19c[70]]= _0x5afax34[_0xe19c[71]];_0x5afax34[_0xe19c[71]]= _0x5afax23};var _0x5afax60=this[_0xe19c[128]](_0x5afax34);if(this[_0xe19c[83]][_0xe19c[123]][_0xe19c[129]]){_0x5afax60[_0xe19c[68]]= 2* _0x5afax34[_0xe19c[68]]+ _0x5afax34[_0xe19c[70]]- _0x5afax60[_0xe19c[68]]};if(this[_0xe19c[83]][_0xe19c[123]][_0xe19c[130]]){_0x5afax60[_0xe19c[69]]= 2* _0x5afax34[_0xe19c[69]]+ _0x5afax34[_0xe19c[71]]- _0x5afax60[_0xe19c[69]]};_0x5afax60= mxUtils[_0xe19c[133]](_0x5afax60,_0x5afax5d,_0x5afax5e, new mxPoint(this[_0xe19c[83]][_0xe19c[131]](),this[_0xe19c[83]][_0xe19c[132]]()));return new mxRectangle(_0x5afax60[_0xe19c[68]]- _0x5afax4f/ 2,_0x5afax60[_0xe19c[69]]- _0x5afax4f/ 2,_0x5afax4f,_0x5afax4f)};_0x5afax54[_0xe19c[0]][_0xe19c[128]]= function(_0x5afax34){return null};_0x5afax54[_0xe19c[0]][_0xe19c[115]]= function(_0x5afax58){};_0x5afax54[_0xe19c[0]][_0xe19c[110]]= function(_0x5afax58){_0x5afax58[_0xe19c[68]]= Math[_0xe19c[34]](this[_0xe19c[83]][_0xe19c[68]],Math[_0xe19c[6]](this[_0xe19c[83]][_0xe19c[68]]+ this[_0xe19c[83]][_0xe19c[70]],_0x5afax58[_0xe19c[68]]));_0x5afax58[_0xe19c[69]]= Math[_0xe19c[34]](this[_0xe19c[83]][_0xe19c[69]],Math[_0xe19c[6]](this[_0xe19c[83]][_0xe19c[69]]+ this[_0xe19c[83]][_0xe19c[71]],_0x5afax58[_0xe19c[69]]))};_0x5afax54[_0xe19c[0]][_0xe19c[120]]= function(){};function _0x5afax61(_0x5afax33){_0x5afax54[_0xe19c[24]](this,_0x5afax33)}mxUtils[_0xe19c[25]](_0x5afax61,_0x5afax54);_0x5afax61[_0xe19c[0]][_0xe19c[128]]= function(_0x5afax34){var _0x5afax5a=this[_0xe19c[84]][_0xe19c[93]]()[_0xe19c[113]];var _0x5afaxb=Math[_0xe19c[6]](_0x5afax34[_0xe19c[70]],mxUtils[_0xe19c[5]](this[_0xe19c[83]][_0xe19c[4]],_0xe19c[14],60)* _0x5afax5a);var _0x5afaxc=Math[_0xe19c[6]](_0x5afax34[_0xe19c[71]],mxUtils[_0xe19c[5]](this[_0xe19c[83]][_0xe19c[4]],_0xe19c[15],20)* _0x5afax5a);var _0x5afaxd=mxUtils[_0xe19c[5]](this[_0xe19c[83]][_0xe19c[4]],_0xe19c[16],_0xe19c[17]);var _0x5afax3=(_0x5afaxd== _0xe19c[18])?_0x5afax34[_0xe19c[68]]+ _0x5afaxb:_0x5afax34[_0xe19c[68]]+ _0x5afax34[_0xe19c[70]]- _0x5afaxb;return new mxPoint(_0x5afax3,_0x5afax34[_0xe19c[69]]+ _0x5afaxc)};_0x5afax61[_0xe19c[0]][_0xe19c[115]]= function(_0x5afax58){var _0x5afax5b=this[_0xe19c[83]][_0xe19c[123]][_0xe19c[122]]();var _0x5afax5c=mxUtils[_0xe19c[124]](_0x5afax5b);var _0x5afax5d=Math[_0xe19c[125]](-_0x5afax5c);var _0x5afax5e=Math[_0xe19c[126]](-_0x5afax5c);var _0x5afax34= new mxRectangle(this[_0xe19c[83]][_0xe19c[68]],this[_0xe19c[83]][_0xe19c[69]],this[_0xe19c[83]][_0xe19c[70]],this[_0xe19c[83]][_0xe19c[71]]);if(this[_0xe19c[83]][_0xe19c[123]][_0xe19c[127]]()){var _0x5afax5f=(_0x5afax34[_0xe19c[70]]- _0x5afax34[_0xe19c[71]])/ 2;_0x5afax34[_0xe19c[68]]+= _0x5afax5f;_0x5afax34[_0xe19c[69]]-= _0x5afax5f;var _0x5afax23=_0x5afax34[_0xe19c[70]];_0x5afax34[_0xe19c[70]]= _0x5afax34[_0xe19c[71]];_0x5afax34[_0xe19c[71]]= _0x5afax23};var _0x5afax60= new mxPoint(_0x5afax58[_0xe19c[68]],_0x5afax58[_0xe19c[69]]);_0x5afax60= mxUtils[_0xe19c[133]](_0x5afax60,_0x5afax5d,_0x5afax5e, new mxPoint(this[_0xe19c[83]][_0xe19c[131]](),this[_0xe19c[83]][_0xe19c[132]]()));if(this[_0xe19c[83]][_0xe19c[123]][_0xe19c[129]]){_0x5afax60[_0xe19c[68]]= 2* _0x5afax34[_0xe19c[68]]+ _0x5afax34[_0xe19c[70]]- _0x5afax60[_0xe19c[68]]};if(this[_0xe19c[83]][_0xe19c[123]][_0xe19c[130]]){_0x5afax60[_0xe19c[69]]= 2* _0x5afax34[_0xe19c[69]]+ _0x5afax34[_0xe19c[71]]- _0x5afax60[_0xe19c[69]]};var _0x5afax62=this[_0xe19c[134]](_0x5afax60,_0x5afax34);if(_0x5afax62!= null){if(this[_0xe19c[83]][_0xe19c[123]][_0xe19c[129]]){_0x5afax62[_0xe19c[68]]= 2* _0x5afax34[_0xe19c[68]]+ _0x5afax34[_0xe19c[70]]- _0x5afax62[_0xe19c[68]]};if(this[_0xe19c[83]][_0xe19c[123]][_0xe19c[130]]){_0x5afax62[_0xe19c[69]]= 2* _0x5afax34[_0xe19c[69]]+ _0x5afax34[_0xe19c[71]]- _0x5afax62[_0xe19c[69]]};_0x5afax5d= Math[_0xe19c[125]](_0x5afax5c);_0x5afax5e= Math[_0xe19c[126]](_0x5afax5c);_0x5afax62= mxUtils[_0xe19c[133]](_0x5afax62,_0x5afax5d,_0x5afax5e, new mxPoint(this[_0xe19c[83]][_0xe19c[131]](),this[_0xe19c[83]][_0xe19c[132]]()));_0x5afax58[_0xe19c[68]]= _0x5afax62[_0xe19c[68]];_0x5afax58[_0xe19c[69]]= _0x5afax62[_0xe19c[69]]}};_0x5afax61[_0xe19c[0]][_0xe19c[134]]= function(_0x5afax60,_0x5afax34){var _0x5afaxd=mxUtils[_0xe19c[5]](this[_0xe19c[83]][_0xe19c[4]],_0xe19c[16],_0xe19c[17]);var _0x5afaxb=(_0x5afaxd== _0xe19c[18])?_0x5afax60[_0xe19c[68]]- _0x5afax34[_0xe19c[68]]:_0x5afax34[_0xe19c[68]]+ _0x5afax34[_0xe19c[70]]- _0x5afax60[_0xe19c[68]];var _0x5afaxc=_0x5afax60[_0xe19c[69]]- _0x5afax34[_0xe19c[69]];var _0x5afax5a=this[_0xe19c[84]][_0xe19c[93]]()[_0xe19c[113]];this[_0xe19c[83]][_0xe19c[4]][_0xe19c[14]]= Math[_0xe19c[135]](Math[_0xe19c[34]](1,_0x5afaxb)/ _0x5afax5a);this[_0xe19c[83]][_0xe19c[4]][_0xe19c[15]]= Math[_0xe19c[135]](Math[_0xe19c[34]](1,_0x5afaxc)/ _0x5afax5a)};_0x5afax61[_0xe19c[0]][_0xe19c[120]]= function(){var _0x5afax63=this[_0xe19c[84]][_0xe19c[136]]();_0x5afax63[_0xe19c[137]]();try{this[_0xe19c[83]][_0xe19c[85]][_0xe19c[84]][_0xe19c[139]](_0xe19c[14],this[_0xe19c[83]][_0xe19c[4]][_0xe19c[14]],[this[_0xe19c[83]][_0xe19c[138]]]);this[_0xe19c[83]][_0xe19c[85]][_0xe19c[84]][_0xe19c[139]](_0xe19c[15],this[_0xe19c[83]][_0xe19c[4]][_0xe19c[15]],[this[_0xe19c[83]][_0xe19c[138]]])}finally{_0x5afax63[_0xe19c[140]]()}};function _0x5afax64(_0x5afax33){_0x5afax61[_0xe19c[24]](this,_0x5afax33)}mxUtils[_0xe19c[25]](_0x5afax64,_0x5afax61);_0x5afax64[_0xe19c[0]][_0xe19c[128]]= function(_0x5afax34){var _0x5afax5a=this[_0xe19c[84]][_0xe19c[93]]()[_0xe19c[113]];var _0x5afax65=mxUtils[_0xe19c[5]](this[_0xe19c[83]][_0xe19c[4]],mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);return new mxPoint(_0x5afax34[_0xe19c[68]]+ _0x5afax34[_0xe19c[70]]/ 2,_0x5afax34[_0xe19c[69]]+ Math[_0xe19c[6]](_0x5afax34[_0xe19c[71]],_0x5afax65* _0x5afax5a))};_0x5afax64[_0xe19c[0]][_0xe19c[134]]= function(_0x5afax58,_0x5afax34){_0x5afax58[_0xe19c[68]]= _0x5afax34[_0xe19c[68]]+ _0x5afax34[_0xe19c[70]]/ 2;startSize= _0x5afax58[_0xe19c[69]]- _0x5afax34[_0xe19c[69]];var _0x5afax5a=this[_0xe19c[84]][_0xe19c[93]]()[_0xe19c[113]];this[_0xe19c[83]][_0xe19c[4]][_0xe19c[141]]= Math[_0xe19c[135]](Math[_0xe19c[34]](1,startSize)/ _0x5afax5a);return _0x5afax58};_0x5afax64[_0xe19c[0]][_0xe19c[120]]= function(){this[_0xe19c[83]][_0xe19c[85]][_0xe19c[84]][_0xe19c[139]](_0xe19c[141],this[_0xe19c[83]][_0xe19c[4]][_0xe19c[141]],[this[_0xe19c[83]][_0xe19c[138]]])};function _0x5afax66(_0x5afax33){_0x5afax61[_0xe19c[24]](this,_0x5afax33)}mxUtils[_0xe19c[25]](_0x5afax66,_0x5afax61);_0x5afax66[_0xe19c[0]][_0xe19c[142]]= 20;_0x5afax66[_0xe19c[0]][_0xe19c[143]]= 1;_0x5afax66[_0xe19c[0]][_0xe19c[128]]= function(_0x5afax34){var _0x5afax5a=this[_0xe19c[84]][_0xe19c[93]]()[_0xe19c[113]];var _0x5afax67=Math[_0xe19c[6]](_0x5afax34[_0xe19c[70]],Math[_0xe19c[6]](_0x5afax34[_0xe19c[71]],mxUtils[_0xe19c[5]](this[_0xe19c[83]][_0xe19c[4]],_0xe19c[2],this[_0xe19c[142]])* _0x5afax5a/ this[_0xe19c[143]]));return new mxPoint(_0x5afax34[_0xe19c[68]]+ _0x5afax67,_0x5afax34[_0xe19c[69]]+ _0x5afax67)};_0x5afax66[_0xe19c[0]][_0xe19c[134]]= function(_0x5afax60,_0x5afax34){var _0x5afax4f=Math[_0xe19c[34]](0,Math[_0xe19c[6]](Math[_0xe19c[6]](_0x5afax34[_0xe19c[70]]/ this[_0xe19c[143]],_0x5afax60[_0xe19c[68]]- _0x5afax34[_0xe19c[68]]),Math[_0xe19c[6]](_0x5afax34[_0xe19c[71]]/ this[_0xe19c[143]],_0x5afax60[_0xe19c[69]]- _0x5afax34[_0xe19c[69]])));var _0x5afax5a=this[_0xe19c[84]][_0xe19c[93]]()[_0xe19c[113]];this[_0xe19c[83]][_0xe19c[4]][_0xe19c[2]]= Math[_0xe19c[135]](Math[_0xe19c[34]](1,_0x5afax4f)/ _0x5afax5a)* this[_0xe19c[143]];return new mxPoint(_0x5afax34[_0xe19c[68]]+ _0x5afax4f,_0x5afax34[_0xe19c[69]]+ _0x5afax4f)};_0x5afax66[_0xe19c[0]][_0xe19c[120]]= function(){this[_0xe19c[83]][_0xe19c[85]][_0xe19c[84]][_0xe19c[139]](_0xe19c[2],this[_0xe19c[83]][_0xe19c[4]][_0xe19c[2]],[this[_0xe19c[83]][_0xe19c[138]]])};function _0x5afax68(_0x5afax33){_0x5afax66[_0xe19c[24]](this,_0x5afax33)}mxUtils[_0xe19c[25]](_0x5afax68,_0x5afax66);_0x5afax68[_0xe19c[0]][_0xe19c[142]]= 30;_0x5afax68[_0xe19c[0]][_0xe19c[143]]= 2;function _0x5afax69(_0x5afax33){_0x5afax66[_0xe19c[24]](this,_0x5afax33)}mxUtils[_0xe19c[25]](_0x5afax69,_0x5afax66);_0x5afax69[_0xe19c[0]][_0xe19c[142]]= 30;_0x5afax69[_0xe19c[0]][_0xe19c[143]]= 1;_0x5afax69[_0xe19c[0]][_0xe19c[128]]= function(_0x5afax34){var _0x5afax5a=this[_0xe19c[84]][_0xe19c[93]]()[_0xe19c[113]];var _0x5afax67=Math[_0xe19c[6]](_0x5afax34[_0xe19c[70]],Math[_0xe19c[6]](_0x5afax34[_0xe19c[71]],mxUtils[_0xe19c[5]](this[_0xe19c[83]][_0xe19c[4]],_0xe19c[2],this[_0xe19c[142]])* _0x5afax5a/ this[_0xe19c[143]]));return new mxPoint(_0x5afax34[_0xe19c[68]]+ _0x5afax34[_0xe19c[70]]- _0x5afax67,_0x5afax34[_0xe19c[69]]+ _0x5afax67)};_0x5afax69[_0xe19c[0]][_0xe19c[134]]= function(_0x5afax60,_0x5afax34){var _0x5afax4f=Math[_0xe19c[34]](0,Math[_0xe19c[6]](Math[_0xe19c[6]](_0x5afax34[_0xe19c[70]]/ this[_0xe19c[143]],_0x5afax60[_0xe19c[68]]- _0x5afax34[_0xe19c[68]]+ _0x5afax34[_0xe19c[70]]),Math[_0xe19c[6]](_0x5afax34[_0xe19c[71]]/ this[_0xe19c[143]],_0x5afax60[_0xe19c[69]]- _0x5afax34[_0xe19c[69]])));var _0x5afax5a=this[_0xe19c[84]][_0xe19c[93]]()[_0xe19c[113]];this[_0xe19c[83]][_0xe19c[4]][_0xe19c[2]]= Math[_0xe19c[135]](Math[_0xe19c[34]](1,_0x5afax4f)/ _0x5afax5a)* this[_0xe19c[143]];return new mxPoint(_0x5afax34[_0xe19c[68]]+ _0x5afax34[_0xe19c[70]]- _0x5afax4f,_0x5afax34[_0xe19c[69]]+ _0x5afax4f)};function _0x5afax6a(_0x5afax33){_0x5afax66[_0xe19c[24]](this,_0x5afax33)}mxUtils[_0xe19c[25]](_0x5afax6a,_0x5afax66);_0x5afax6a[_0xe19c[0]][_0xe19c[142]]= 0.2;_0x5afax6a[_0xe19c[0]][_0xe19c[143]]= 1;_0x5afax6a[_0xe19c[0]][_0xe19c[128]]= function(_0x5afax34){var _0x5afax67=mxUtils[_0xe19c[5]](this[_0xe19c[83]][_0xe19c[4]],_0xe19c[2],this[_0xe19c[142]]);return new mxPoint(_0x5afax34[_0xe19c[68]]+ _0x5afax34[_0xe19c[70]]* _0x5afax67,_0x5afax34[_0xe19c[69]]+ _0x5afax34[_0xe19c[71]]/ 2)};_0x5afax6a[_0xe19c[0]][_0xe19c[134]]= function(_0x5afax60,_0x5afax34){var _0x5afax4f=Math[_0xe19c[6]](1,(_0x5afax60[_0xe19c[68]]- _0x5afax34[_0xe19c[68]])/ _0x5afax34[_0xe19c[70]]);this[_0xe19c[83]][_0xe19c[4]][_0xe19c[2]]= _0x5afax4f;return new mxPoint(_0x5afax34[_0xe19c[68]]+ _0x5afax4f* _0x5afax34[_0xe19c[70]],_0x5afax34[_0xe19c[69]]+ _0x5afax34[_0xe19c[71]]/ 2)};function _0x5afax6b(_0x5afax33){_0x5afax66[_0xe19c[24]](this,_0x5afax33)}mxUtils[_0xe19c[25]](_0x5afax6b,_0x5afax66);_0x5afax6b[_0xe19c[0]][_0xe19c[142]]= 0.4;_0x5afax6b[_0xe19c[0]][_0xe19c[143]]= 1;_0x5afax6b[_0xe19c[0]][_0xe19c[128]]= function(_0x5afax34){var _0x5afax67=mxUtils[_0xe19c[5]](this[_0xe19c[83]][_0xe19c[4]],_0xe19c[2],this[_0xe19c[142]]);return new mxPoint(_0x5afax34[_0xe19c[68]]+ _0x5afax34[_0xe19c[70]]/ 2,_0x5afax34[_0xe19c[69]]+ _0x5afax67* _0x5afax34[_0xe19c[71]]/ 2)};_0x5afax6b[_0xe19c[0]][_0xe19c[134]]= function(_0x5afax60,_0x5afax34){var _0x5afax4f=Math[_0xe19c[34]](0,Math[_0xe19c[6]](1,((_0x5afax60[_0xe19c[69]]- _0x5afax34[_0xe19c[69]])/ _0x5afax34[_0xe19c[71]])* 2));this[_0xe19c[83]][_0xe19c[4]][_0xe19c[2]]= _0x5afax4f;return new mxPoint(_0x5afax34[_0xe19c[68]]+ _0x5afax34[_0xe19c[70]]/ 2,_0x5afax34[_0xe19c[69]]+ _0x5afax4f* _0x5afax34[_0xe19c[71]]/ 2)};var _0x5afax6c={"\x73\x77\x69\x6D\x6C\x61\x6E\x65":_0x5afax64,"\x66\x6F\x6C\x64\x65\x72":_0x5afax61,"\x63\x75\x62\x65":_0x5afax66,"\x63\x61\x72\x64":_0x5afax68,"\x6E\x6F\x74\x65":_0x5afax69,"\x73\x74\x65\x70":_0x5afax6a,"\x74\x61\x70\x65":_0x5afax6b};var _0x5afax6d=mxGraph[_0xe19c[0]][_0xe19c[144]];mxGraph[_0xe19c[0]][_0xe19c[144]]= function(_0x5afax33){if(_0x5afax33!= null){var _0x5afax6e=_0x5afax6c[_0x5afax33[_0xe19c[4]][_0xe19c[123]]];if(_0x5afax6e!= null){return new _0x5afax6e(_0x5afax33)}};return _0x5afax6d[_0xe19c[30]](this,arguments)}};mxGraph[_0xe19c[0]][_0xe19c[145]]= function(_0x5afax6f,_0x5afax50){if(_0x5afax6f!= null&& _0x5afax6f[_0xe19c[123]]!= null){if(_0x5afax6f[_0xe19c[123]][_0xe19c[146]]!= null){if(_0x5afax6f[_0xe19c[123]][_0xe19c[146]]!= null){return _0x5afax6f[_0xe19c[123]][_0xe19c[146]][_0xe19c[147]]}}else {if(_0x5afax6f[_0xe19c[123]][_0xe19c[147]]!= null){return _0x5afax6f[_0xe19c[123]][_0xe19c[147]]}}};return null};mxRectangleShape[_0xe19c[0]][_0xe19c[147]]= [ new mxConnectionConstraint( new mxPoint(0.25,0),true), new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.75,0),true), new mxConnectionConstraint( new mxPoint(0,0.25),true), new mxConnectionConstraint( new mxPoint(0,0.5),true), new mxConnectionConstraint( new mxPoint(0,0.75),true), new mxConnectionConstraint( new mxPoint(1,0.25),true), new mxConnectionConstraint( new mxPoint(1,0.5),true), new mxConnectionConstraint( new mxPoint(1,0.75),true), new mxConnectionConstraint( new mxPoint(0.25,1),true), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(0.75,1),true)];mxLabel[_0xe19c[0]][_0xe19c[147]]= mxRectangleShape[_0xe19c[0]][_0xe19c[147]];mxImageShape[_0xe19c[0]][_0xe19c[147]]= mxRectangleShape[_0xe19c[0]][_0xe19c[147]];mxSwimlane[_0xe19c[0]][_0xe19c[147]]= mxRectangleShape[_0xe19c[0]][_0xe19c[147]];_0x5afax14[_0xe19c[0]][_0xe19c[147]]= mxRectangleShape[_0xe19c[0]][_0xe19c[147]];_0x5afax9[_0xe19c[0]][_0xe19c[147]]= mxRectangleShape[_0xe19c[0]][_0xe19c[147]];_0x5afax10[_0xe19c[0]][_0xe19c[147]]= mxRectangleShape[_0xe19c[0]][_0xe19c[147]];_0x5afax1[_0xe19c[0]][_0xe19c[147]]= mxRectangleShape[_0xe19c[0]][_0xe19c[147]];_0x5afaxa[_0xe19c[0]][_0xe19c[147]]= mxRectangleShape[_0xe19c[0]][_0xe19c[147]];mxCylinder[_0xe19c[0]][_0xe19c[147]]= [ new mxConnectionConstraint( new mxPoint(0.15,0.05),false), new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.85,0.05),false), new mxConnectionConstraint( new mxPoint(0,0.3),true), new mxConnectionConstraint( new mxPoint(0,0.5),true), new mxConnectionConstraint( new mxPoint(0,0.7),true), new mxConnectionConstraint( new mxPoint(1,0.3),true), new mxConnectionConstraint( new mxPoint(1,0.5),true), new mxConnectionConstraint( new mxPoint(1,0.7),true), new mxConnectionConstraint( new mxPoint(0.15,0.95),false), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(0.85,0.95),false)];_0x5afax25[_0xe19c[0]][_0xe19c[147]]= [ new mxConnectionConstraint( new mxPoint(0.25,0.1),false), new mxConnectionConstraint( new mxPoint(0.5,0),false), new mxConnectionConstraint( new mxPoint(0.75,0.1),false), new mxConnectionConstraint( new mxPoint(0,1/ 3),false), new mxConnectionConstraint( new mxPoint(0,1),false), new mxConnectionConstraint( new mxPoint(1,1/ 3),false), new mxConnectionConstraint( new mxPoint(1,1),false), new mxConnectionConstraint( new mxPoint(0.5,0.5),false)];_0x5afax28[_0xe19c[0]][_0xe19c[147]]= [ new mxConnectionConstraint( new mxPoint(0.25,0),true), new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.75,0),true), new mxConnectionConstraint( new mxPoint(0,0.3),true), new mxConnectionConstraint( new mxPoint(0,0.7),true), new mxConnectionConstraint( new mxPoint(1,0.25),true), new mxConnectionConstraint( new mxPoint(1,0.5),true), new mxConnectionConstraint( new mxPoint(1,0.75),true), new mxConnectionConstraint( new mxPoint(0.25,1),true), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(0.75,1),true)];mxActor[_0xe19c[0]][_0xe19c[147]]= [ new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.25,0.2),false), new mxConnectionConstraint( new mxPoint(0.1,0.5),false), new mxConnectionConstraint( new mxPoint(0,0.75),true), new mxConnectionConstraint( new mxPoint(0.75,0.25),false), new mxConnectionConstraint( new mxPoint(0.9,0.5),false), new mxConnectionConstraint( new mxPoint(1,0.75),true), new mxConnectionConstraint( new mxPoint(0.25,1),true), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(0.75,1),true)];_0x5afax11[_0xe19c[0]][_0xe19c[147]]= [ new mxConnectionConstraint( new mxPoint(0,0.35),false), new mxConnectionConstraint( new mxPoint(0,0.5),false), new mxConnectionConstraint( new mxPoint(0,0.65),false), new mxConnectionConstraint( new mxPoint(1,0.35),false), new mxConnectionConstraint( new mxPoint(1,0.5),false), new mxConnectionConstraint( new mxPoint(1,0.65),false), new mxConnectionConstraint( new mxPoint(0.25,1),false), new mxConnectionConstraint( new mxPoint(0.75,0),false)];_0x5afax13[_0xe19c[0]][_0xe19c[147]]= [ new mxConnectionConstraint( new mxPoint(0.25,0),true), new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.75,0),true), new mxConnectionConstraint( new mxPoint(0.25,1),true), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(0.75,1),true), new mxConnectionConstraint( new mxPoint(0.1,0.25),false), new mxConnectionConstraint( new mxPoint(0.2,0.5),false), new mxConnectionConstraint( new mxPoint(0.1,0.75),false), new mxConnectionConstraint( new mxPoint(0.9,0.25),false), new mxConnectionConstraint( new mxPoint(1,0.5),false), new mxConnectionConstraint( new mxPoint(0.9,0.75),false)];mxLine[_0xe19c[0]][_0xe19c[147]]= [ new mxConnectionConstraint( new mxPoint(0,0.5),false), new mxConnectionConstraint( new mxPoint(0.25,0.5),false), new mxConnectionConstraint( new mxPoint(0.75,0.5),false), new mxConnectionConstraint( new mxPoint(1,0.5),false)];_0x5afax26[_0xe19c[0]][_0xe19c[147]]= [ new mxConnectionConstraint( new mxPoint(0.5,0),false), new mxConnectionConstraint( new mxPoint(0.5,1),false)];mxEllipse[_0xe19c[0]][_0xe19c[147]]= [ new mxConnectionConstraint( new mxPoint(0,0),true), new mxConnectionConstraint( new mxPoint(1,0),true), new mxConnectionConstraint( new mxPoint(0,1),true), new mxConnectionConstraint( new mxPoint(1,1),true), new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(0,0.5),true), new mxConnectionConstraint( new mxPoint(1,0.5))];mxDoubleEllipse[_0xe19c[0]][_0xe19c[147]]= mxEllipse[_0xe19c[0]][_0xe19c[147]];mxRhombus[_0xe19c[0]][_0xe19c[147]]= mxEllipse[_0xe19c[0]][_0xe19c[147]];mxTriangle[_0xe19c[0]][_0xe19c[147]]= [ new mxConnectionConstraint( new mxPoint(0,0.25),true), new mxConnectionConstraint( new mxPoint(0,0.5),true), new mxConnectionConstraint( new mxPoint(0,0.75),true), new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(1,0.5),true)];mxHexagon[_0xe19c[0]][_0xe19c[147]]= [ new mxConnectionConstraint( new mxPoint(0.375,0),true), new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.625,0),true), new mxConnectionConstraint( new mxPoint(0.125,0.25),false), new mxConnectionConstraint( new mxPoint(0,0.5),true), new mxConnectionConstraint( new mxPoint(0.125,0.75),false), new mxConnectionConstraint( new mxPoint(0.875,0.25),false), new mxConnectionConstraint( new mxPoint(0,0.5),true), new mxConnectionConstraint( new mxPoint(1,0.5),true), new mxConnectionConstraint( new mxPoint(0.875,0.75),false), new mxConnectionConstraint( new mxPoint(0.375,1),true), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(0.625,1),true)];mxCloud[_0xe19c[0]][_0xe19c[147]]= [ new mxConnectionConstraint( new mxPoint(0.25,0.25),false), new mxConnectionConstraint( new mxPoint(0.4,0.1),false), new mxConnectionConstraint( new mxPoint(0.16,0.55),false), new mxConnectionConstraint( new mxPoint(0.07,0.4),false), new mxConnectionConstraint( new mxPoint(0.31,0.8),false), new mxConnectionConstraint( new mxPoint(0.13,0.77),false), new mxConnectionConstraint( new mxPoint(0.8,0.8),false), new mxConnectionConstraint( new mxPoint(0.55,0.95),false), new mxConnectionConstraint( new mxPoint(0.875,0.5),false), new mxConnectionConstraint( new mxPoint(0.96,0.7),false), new mxConnectionConstraint( new mxPoint(0.625,0.2),false), new mxConnectionConstraint( new mxPoint(0.88,0.25),false)];mxArrow[_0xe19c[0]][_0xe19c[147]]= null})() \ No newline at end of file +undefined \ No newline at end of file diff --git a/public/assets/plugins/jscripty/js/Sidebar.js b/public/assets/plugins/jscripty/js/Sidebar.js index e26924a..66dc905 100644 --- a/public/assets/plugins/jscripty/js/Sidebar.js +++ b/public/assets/plugins/jscripty/js/Sidebar.js @@ -1 +1 @@ -var _0xe2b4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x64\x69\x74\x6F\x72\x55\x69","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x70\x61\x6C\x65\x74\x74\x65\x73","\x73\x68\x6F\x77\x54\x6F\x6F\x6C\x74\x69\x70\x73","\x67\x72\x61\x70\x68","\x64\x69\x76","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x67\x65\x74\x53\x74\x79\x6C\x65\x73\x68\x65\x65\x74","\x65\x64\x69\x74\x6F\x72","\x72\x65\x73\x65\x74\x56\x69\x65\x77\x4F\x6E\x52\x6F\x6F\x74\x43\x68\x61\x6E\x67\x65","\x66\x6F\x6C\x64\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x61\x75\x74\x6F\x53\x63\x72\x6F\x6C\x6C","\x73\x65\x74\x54\x6F\x6F\x6C\x74\x69\x70\x73","\x73\x65\x74\x45\x6E\x61\x62\x6C\x65\x64","\x76\x69\x73\x69\x62\x69\x6C\x69\x74\x79","\x73\x74\x79\x6C\x65","\x68\x69\x64\x64\x65\x6E","\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x61\x62\x73\x6F\x6C\x75\x74\x65","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x62\x6F\x64\x79","\x49\x53\x5F\x54\x4F\x55\x43\x48","\x6D\x6F\x75\x73\x65\x75\x70","\x62\x69\x6E\x64","\x61\x64\x64\x4C\x69\x73\x74\x65\x6E\x65\x72","\x73\x63\x72\x6F\x6C\x6C","\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E","\x68\x69\x64\x65\x54\x6F\x6F\x6C\x74\x69\x70","\x6D\x6F\x75\x73\x65\x6D\x6F\x76\x65","\x67\x65\x74\x53\x6F\x75\x72\x63\x65","\x63\x75\x72\x72\x65\x6E\x74\x45\x6C\x74","\x70\x61\x72\x65\x6E\x74\x4E\x6F\x64\x65","\x6D\x6F\x75\x73\x65\x6F\x75\x74","\x74\x6F\x45\x6C\x65\x6D\x65\x6E\x74","\x72\x65\x6C\x61\x74\x65\x64\x54\x61\x72\x67\x65\x74","\x69\x6E\x69\x74","\x73\x72\x63","\x2F\x74\x6F\x6F\x6C\x74\x69\x70\x2E\x70\x6E\x67","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x6C\x6F\x67","\x65\x6E\x74\x72\x79","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x67\x65\x74","\x2F","\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67","\x73\x74\x61\x72\x74","\x71\x75\x65\x73\x74\x69\x6F\x6E","\x69\x6E\x70\x75\x74","\x65\x6E\x64","\x61\x64\x64\x49\x6D\x61\x67\x65\x50\x61\x6C\x65\x74\x74\x65","\x65\x6E\x61\x62\x6C\x65\x54\x6F\x6F\x6C\x74\x69\x70\x73","\x74\x6F\x6F\x6C\x74\x69\x70\x42\x6F\x72\x64\x65\x72","\x74\x68\x75\x6D\x62\x42\x6F\x72\x64\x65\x72","\x74\x6F\x6F\x6C\x74\x69\x70\x44\x65\x6C\x61\x79","\x69\x6E\x73\x74\x61\x6C\x6C\x45\x64\x67\x65\x73","\x67\x65\x61\x72\x49\x6D\x61\x67\x65","\x2F\x63\x6C\x69\x70\x61\x72\x74\x2F\x47\x65\x61\x72\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67","\x74\x68\x75\x6D\x62\x57\x69\x64\x74\x68","\x74\x68\x75\x6D\x62\x48\x65\x69\x67\x68\x74","\x74\x68\x75\x6D\x62\x50\x61\x64\x64\x69\x6E\x67","\x73\x69\x64\x65\x62\x61\x72\x54\x69\x74\x6C\x65\x53\x69\x7A\x65","\x73\x69\x64\x65\x62\x61\x72\x54\x69\x74\x6C\x65\x73","\x74\x6F\x6F\x6C\x74\x69\x70\x54\x69\x74\x6C\x65\x73","\x73\x68\x6F\x77\x54\x6F\x6F\x6C\x74\x69\x70","\x74\x68\x72\x65\x61\x64","\x63\x6C\x65\x61\x72\x54\x69\x6D\x65\x6F\x75\x74","\x74\x6F\x6F\x6C\x74\x69\x70","\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x67\x65\x53\x69\x64\x65\x62\x61\x72\x54\x6F\x6F\x6C\x74\x69\x70","\x67\x72\x61\x70\x68\x32","\x73\x65\x74\x54\x72\x61\x6E\x73\x6C\x61\x74\x65","\x76\x69\x65\x77","\x49\x53\x5F\x53\x56\x47","\x63\x61\x6E\x76\x61\x73","\x72\x65\x6C\x61\x74\x69\x76\x65","\x74\x6F\x6F\x6C\x74\x69\x70\x49\x6D\x61\x67\x65","\x63\x72\x65\x61\x74\x65\x49\x6D\x61\x67\x65","\x77\x69\x64\x74\x68","\x31\x34\x70\x78","\x68\x65\x69\x67\x68\x74","\x32\x37\x70\x78","\x64\x69\x73\x70\x6C\x61\x79","\x62\x6C\x6F\x63\x6B","\x6C\x61\x62\x65\x6C\x73\x56\x69\x73\x69\x62\x6C\x65","\x63\x6C\x65\x61\x72","\x6D\x6F\x64\x65\x6C","\x61\x64\x64\x43\x65\x6C\x6C\x73","\x67\x65\x74\x47\x72\x61\x70\x68\x42\x6F\x75\x6E\x64\x73","\x49\x53\x5F\x51\x55\x49\x52\x4B\x53","\x6F\x76\x65\x72\x66\x6C\x6F\x77","\x76\x69\x73\x69\x62\x6C\x65","\x70\x78","\x6C\x65\x6E\x67\x74\x68","\x74\x6F\x6F\x6C\x74\x69\x70\x54\x69\x74\x6C\x65","\x62\x6F\x72\x64\x65\x72\x54\x6F\x70","\x31\x70\x78\x20\x73\x6F\x6C\x69\x64\x20\x67\x72\x61\x79","\x74\x65\x78\x74\x41\x6C\x69\x67\x6E","\x63\x65\x6E\x74\x65\x72","\x31\x30\x30\x25","\x70\x61\x64\x64\x69\x6E\x67\x54\x6F\x70","\x32\x70\x78","\x36\x70\x78","\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C","","\x77\x72\x69\x74\x65","\x6F\x66\x66\x73\x65\x74\x48\x65\x69\x67\x68\x74","\x6D\x61\x72\x67\x69\x6E\x54\x6F\x70","\x74\x6F\x70","\x6E\x6F\x6E\x65","\x78","\x6D\x69\x6E","\x79","\x63\x6C\x69\x65\x6E\x74\x57\x69\x64\x74\x68","\x73\x70\x6C\x69\x74\x53\x69\x7A\x65","\x6F\x66\x66\x73\x65\x74\x54\x6F\x70","\x73\x63\x72\x6F\x6C\x6C\x54\x6F\x70","\x6D\x61\x78","\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x28","\x2C","\x29","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x6C\x65\x66\x74","\x64\x72\x61\x77\x50\x61\x6E\x65","\x73\x65\x74\x54\x69\x6D\x65\x6F\x75\x74","\x63\x72\x65\x61\x74\x65\x54\x69\x74\x6C\x65","\x61","\x68\x72\x65\x66","\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x3A\x76\x6F\x69\x64\x28\x30\x29\x3B","\x67\x65\x54\x69\x74\x6C\x65","\x63\x72\x65\x61\x74\x65\x54\x68\x75\x6D\x62","\x73\x63\x61\x6C\x65\x41\x6E\x64\x54\x72\x61\x6E\x73\x6C\x61\x74\x65","\x66\x6C\x6F\x6F\x72","\x64\x69\x61\x6C\x65\x63\x74","\x44\x49\x41\x4C\x45\x43\x54\x5F\x53\x56\x47","\x4E\x4F\x5F\x46\x4F","\x63\x6C\x6F\x6E\x65\x4E\x6F\x64\x65","\x6F\x77\x6E\x65\x72\x53\x56\x47\x45\x6C\x65\x6D\x65\x6E\x74","\x67\x65\x74\x43\x61\x6E\x76\x61\x73","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x49\x53\x5F\x49\x45\x36","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x75\x72\x6C\x28","\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x49\x6D\x61\x67\x65","\x63\x75\x72\x73\x6F\x72","\x70\x6F\x69\x6E\x74\x65\x72","\x6D\x69\x6E\x57\x69\x64\x74\x68","\x6D\x69\x6E\x48\x65\x69\x67\x68\x74","\x66\x6F\x6E\x74\x53\x69\x7A\x65","\x77\x68\x69\x74\x65\x53\x70\x61\x63\x65","\x6E\x6F\x77\x72\x61\x70","\x49\x53\x5F\x49\x45","\x34\x70\x78","\x63\x72\x65\x61\x74\x65\x49\x74\x65\x6D","\x67\x65\x49\x74\x65\x6D","\x70\x61\x64\x64\x69\x6E\x67","\x63\x6C\x69\x63\x6B","\x63\x6F\x6E\x73\x75\x6D\x65","\x63\x72\x65\x61\x74\x65\x44\x72\x6F\x70\x48\x61\x6E\x64\x6C\x65\x72","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64","\x67\x65\x74\x49\x6D\x70\x6F\x72\x74\x61\x62\x6C\x65\x43\x65\x6C\x6C\x73","\x69\x73\x56\x61\x6C\x69\x64\x44\x72\x6F\x70\x54\x61\x72\x67\x65\x74","\x69\x73\x53\x70\x6C\x69\x74\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x53\x70\x6C\x69\x74\x54\x61\x72\x67\x65\x74","\x73\x70\x6C\x69\x74\x45\x64\x67\x65","\x69\x6D\x70\x6F\x72\x74\x43\x65\x6C\x6C\x73","\x73\x63\x72\x6F\x6C\x6C\x43\x65\x6C\x6C\x54\x6F\x56\x69\x73\x69\x62\x6C\x65","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x63\x72\x65\x61\x74\x65\x44\x72\x61\x67\x50\x72\x65\x76\x69\x65\x77","\x62\x6F\x72\x64\x65\x72","\x31\x70\x78\x20\x64\x61\x73\x68\x65\x64\x20\x62\x6C\x61\x63\x6B","\x63\x72\x65\x61\x74\x65\x44\x72\x61\x67\x53\x6F\x75\x72\x63\x65","\x61\x75\x74\x6F\x73\x63\x72\x6F\x6C\x6C","\x6D\x61\x6B\x65\x44\x72\x61\x67\x67\x61\x62\x6C\x65","\x67\x65\x74\x44\x72\x6F\x70\x54\x61\x72\x67\x65\x74","\x61\x70\x70\x6C\x79","\x69\x73\x56\x61\x6C\x69\x64\x52\x6F\x6F\x74","\x61\x64\x64\x43\x6C\x69\x63\x6B\x48\x61\x6E\x64\x6C\x65\x72","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x58","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x59","\x61\x64\x64\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x6D\x6F\x75\x73\x65\x55\x70","\x69\x73\x50\x6F\x70\x75\x70\x54\x72\x69\x67\x67\x65\x72","\x63\x75\x72\x72\x65\x6E\x74\x47\x72\x61\x70\x68","\x74\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x61\x62\x73","\x67\x65\x74\x47\x72\x69\x64\x53\x69\x7A\x65","\x64\x72\x6F\x70","\x63\x72\x65\x61\x74\x65\x58\x6D\x6C\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x6C\x61\x62\x65\x6C","\x66\x6F\x72\x45\x61\x63\x68","\x63\x72\x65\x61\x74\x65\x56\x65\x72\x74\x65\x78\x54\x65\x6D\x70\x6C\x61\x74\x65","\x69\x64","\x74\x65\x78\x74","\x73\x74\x61\x74\x65","\x30","\x4F\x46\x46","\x6F\x74\x68\x65\x72","\x61\x64\x64","\x76\x65\x72\x74\x65\x78","\x63\x72\x65\x61\x74\x65\x56\x65\x72\x74\x65\x78\x54\x65\x6D\x70\x6C\x61\x74\x65\x46\x72\x6F\x6D\x43\x65\x6C\x6C\x73","\x69\x73\x47\x75\x69\x64\x65\x73\x45\x6E\x61\x62\x6C\x65\x64","\x67\x75\x69\x64\x65\x73\x45\x6E\x61\x62\x6C\x65\x64","\x67\x72\x61\x70\x68\x48\x61\x6E\x64\x6C\x65\x72","\x63\x72\x65\x61\x74\x65\x45\x64\x67\x65\x54\x65\x6D\x70\x6C\x61\x74\x65","\x73\x65\x74\x54\x65\x72\x6D\x69\x6E\x61\x6C\x50\x6F\x69\x6E\x74","\x67\x65\x6F\x6D\x65\x74\x72\x79","\x65\x64\x67\x65","\x63\x72\x65\x61\x74\x65\x45\x64\x67\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x46\x72\x6F\x6D\x43\x65\x6C\x6C\x73","\x73\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x43\x6F\x6C\x6F\x72","\x23\x66\x66\x66\x66\x66\x66","\x61\x64\x64\x50\x61\x6C\x65\x74\x74\x65","\x67\x65\x53\x69\x64\x65\x62\x61\x72","\x61\x64\x64\x46\x6F\x6C\x64\x69\x6E\x67\x48\x61\x6E\x64\x6C\x65\x72","\x2F\x63\x6F\x6C\x6C\x61\x70\x73\x65\x64\x2E\x67\x69\x66\x29","\x2F\x65\x78\x70\x61\x6E\x64\x65\x64\x2E\x67\x69\x66\x29","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x52\x65\x70\x65\x61\x74","\x6E\x6F\x2D\x72\x65\x70\x65\x61\x74","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x31\x30\x30\x25\x20\x35\x30\x25","\x77\x61\x69\x74","\x72\x65\x6D\x6F\x76\x65\x50\x61\x6C\x65\x74\x74\x65","\x72\x65\x6D\x6F\x76\x65\x43\x68\x69\x6C\x64","\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D"];_0xe2b4[0];function Sidebar(_0x8f4ax2,_0x8f4ax3){this[_0xe2b4[1]]= _0x8f4ax2;this[_0xe2b4[2]]= _0x8f4ax3;this[_0xe2b4[3]]= new Object();this[_0xe2b4[4]]= true;this[_0xe2b4[5]]= new Graph(document[_0xe2b4[7]](_0xe2b4[6]),null,null,this[_0xe2b4[1]][_0xe2b4[9]][_0xe2b4[5]][_0xe2b4[8]]());this[_0xe2b4[5]][_0xe2b4[10]]= false;this[_0xe2b4[5]][_0xe2b4[11]]= false;this[_0xe2b4[5]][_0xe2b4[12]](false);this[_0xe2b4[5]][_0xe2b4[13]]= false;this[_0xe2b4[5]][_0xe2b4[14]](false);this[_0xe2b4[5]][_0xe2b4[15]](false);this[_0xe2b4[5]][_0xe2b4[2]][_0xe2b4[17]][_0xe2b4[16]]= _0xe2b4[18];this[_0xe2b4[5]][_0xe2b4[2]][_0xe2b4[17]][_0xe2b4[19]]= _0xe2b4[20];document[_0xe2b4[22]][_0xe2b4[21]](this[_0xe2b4[5]][_0xe2b4[2]]);if(!mxClient[_0xe2b4[23]]){mxEvent[_0xe2b4[26]](document,_0xe2b4[24],mxUtils[_0xe2b4[25]](this,function(){this[_0xe2b4[4]]= true}));mxEvent[_0xe2b4[26]](_0x8f4ax3,_0xe2b4[27],mxUtils[_0xe2b4[25]](this,function(){this[_0xe2b4[4]]= true}));mxEvent[_0xe2b4[26]](document,_0xe2b4[28],mxUtils[_0xe2b4[25]](this,function(){this[_0xe2b4[4]]= false;this[_0xe2b4[29]]()}));mxEvent[_0xe2b4[26]](document,_0xe2b4[30],mxUtils[_0xe2b4[25]](this,function(_0x8f4ax4){var _0x8f4ax5=mxEvent[_0xe2b4[31]](_0x8f4ax4);while(_0x8f4ax5!= null){if(_0x8f4ax5== this[_0xe2b4[32]]){return};_0x8f4ax5= _0x8f4ax5[_0xe2b4[33]]};this[_0xe2b4[29]]()}));mxEvent[_0xe2b4[26]](document,_0xe2b4[34],mxUtils[_0xe2b4[25]](this,function(_0x8f4ax4){if(_0x8f4ax4[_0xe2b4[35]]== null&& _0x8f4ax4[_0xe2b4[36]]== null){this[_0xe2b4[29]]()}}))};this[_0xe2b4[37]](); new Image()[_0xe2b4[38]]= IMAGE_PATH+ _0xe2b4[39]}Sidebar[_0xe2b4[40]][_0xe2b4[37]]= function(){var _0x8f4ax6=STENCIL_PATH;console[_0xe2b4[41]](_0x8f4ax6);this[_0xe2b4[51]](_0xe2b4[42],mxResources[_0xe2b4[44]](_0xe2b4[43]),_0x8f4ax6+ _0xe2b4[45],_0xe2b4[46],[_0xe2b4[47],_0xe2b4[48],_0xe2b4[49],_0xe2b4[50]],[mxResources[_0xe2b4[44]](_0xe2b4[47]),mxResources[_0xe2b4[44]](_0xe2b4[48]),mxResources[_0xe2b4[44]](_0xe2b4[49]),mxResources[_0xe2b4[44]](_0xe2b4[50])])};Sidebar[_0xe2b4[40]][_0xe2b4[52]]= !mxClient[_0xe2b4[23]];Sidebar[_0xe2b4[40]][_0xe2b4[53]]= 16;Sidebar[_0xe2b4[40]][_0xe2b4[54]]= 3;Sidebar[_0xe2b4[40]][_0xe2b4[55]]= 300;Sidebar[_0xe2b4[40]][_0xe2b4[56]]= true;Sidebar[_0xe2b4[40]][_0xe2b4[57]]= STENCIL_PATH+ _0xe2b4[58];Sidebar[_0xe2b4[40]][_0xe2b4[59]]= 34;Sidebar[_0xe2b4[40]][_0xe2b4[60]]= 34;Sidebar[_0xe2b4[40]][_0xe2b4[61]]= 2;Sidebar[_0xe2b4[40]][_0xe2b4[62]]= 9;Sidebar[_0xe2b4[40]][_0xe2b4[63]]= false;Sidebar[_0xe2b4[40]][_0xe2b4[64]]= false;Sidebar[_0xe2b4[40]][_0xe2b4[65]]= function(_0x8f4ax7,_0x8f4ax8,_0x8f4ax9,_0x8f4axa){if(this[_0xe2b4[52]]&& this[_0xe2b4[4]]){if(this[_0xe2b4[32]]!= _0x8f4ax7){if(this[_0xe2b4[66]]!= null){window[_0xe2b4[67]](this[_0xe2b4[66]]);this[_0xe2b4[66]]= null};var _0x8f4axb=mxUtils[_0xe2b4[25]](this,function(){if(this[_0xe2b4[68]]== null){this[_0xe2b4[68]]= document[_0xe2b4[7]](_0xe2b4[6]);this[_0xe2b4[68]][_0xe2b4[69]]= _0xe2b4[70];document[_0xe2b4[22]][_0xe2b4[21]](this[_0xe2b4[68]]);this[_0xe2b4[71]]= new Graph(this[_0xe2b4[68]],null,null,this[_0xe2b4[1]][_0xe2b4[9]][_0xe2b4[5]][_0xe2b4[8]]());this[_0xe2b4[71]][_0xe2b4[73]][_0xe2b4[72]](this[_0xe2b4[53]],this[_0xe2b4[53]]);this[_0xe2b4[71]][_0xe2b4[10]]= false;this[_0xe2b4[71]][_0xe2b4[11]]= false;this[_0xe2b4[71]][_0xe2b4[13]]= false;this[_0xe2b4[71]][_0xe2b4[14]](false);this[_0xe2b4[71]][_0xe2b4[12]](false);this[_0xe2b4[71]][_0xe2b4[15]](false);if(!mxClient[_0xe2b4[74]]){this[_0xe2b4[71]][_0xe2b4[73]][_0xe2b4[75]][_0xe2b4[17]][_0xe2b4[19]]= _0xe2b4[76]};this[_0xe2b4[77]]= mxUtils[_0xe2b4[78]](IMAGE_PATH+ _0xe2b4[39]);this[_0xe2b4[77]][_0xe2b4[17]][_0xe2b4[19]]= _0xe2b4[20];this[_0xe2b4[77]][_0xe2b4[17]][_0xe2b4[79]]= _0xe2b4[80];this[_0xe2b4[77]][_0xe2b4[17]][_0xe2b4[81]]= _0xe2b4[82];document[_0xe2b4[22]][_0xe2b4[21]](this[_0xe2b4[77]])};this[_0xe2b4[68]][_0xe2b4[17]][_0xe2b4[83]]= _0xe2b4[84];this[_0xe2b4[71]][_0xe2b4[85]]= (_0x8f4axa== null|| _0x8f4axa);this[_0xe2b4[71]][_0xe2b4[87]][_0xe2b4[86]]();this[_0xe2b4[71]][_0xe2b4[88]](_0x8f4ax8);var _0x8f4axc=this[_0xe2b4[71]][_0xe2b4[89]]();var _0x8f4axd=_0x8f4axc[_0xe2b4[79]]+ 2* this[_0xe2b4[53]];var _0x8f4axe=_0x8f4axc[_0xe2b4[81]]+ 2* this[_0xe2b4[53]];if(mxClient[_0xe2b4[90]]){_0x8f4axd+= 4;_0x8f4axe+= 4;this[_0xe2b4[68]][_0xe2b4[17]][_0xe2b4[91]]= _0xe2b4[18]}else {this[_0xe2b4[68]][_0xe2b4[17]][_0xe2b4[91]]= _0xe2b4[92]};this[_0xe2b4[77]][_0xe2b4[17]][_0xe2b4[16]]= _0xe2b4[92];this[_0xe2b4[68]][_0xe2b4[17]][_0xe2b4[79]]= _0x8f4axd+ _0xe2b4[93];if(this[_0xe2b4[64]]&& _0x8f4ax9!= null&& _0x8f4ax9[_0xe2b4[94]]> 0){if(this[_0xe2b4[95]]== null){this[_0xe2b4[95]]= document[_0xe2b4[7]](_0xe2b4[6]);this[_0xe2b4[95]][_0xe2b4[17]][_0xe2b4[96]]= _0xe2b4[97];this[_0xe2b4[95]][_0xe2b4[17]][_0xe2b4[98]]= _0xe2b4[99];this[_0xe2b4[95]][_0xe2b4[17]][_0xe2b4[79]]= _0xe2b4[100];this[_0xe2b4[95]][_0xe2b4[17]][_0xe2b4[91]]= _0xe2b4[18];if(mxClient[_0xe2b4[74]]){this[_0xe2b4[95]][_0xe2b4[17]][_0xe2b4[101]]= _0xe2b4[102]}else {this[_0xe2b4[95]][_0xe2b4[17]][_0xe2b4[19]]= _0xe2b4[20];this[_0xe2b4[95]][_0xe2b4[17]][_0xe2b4[101]]= _0xe2b4[103]};this[_0xe2b4[68]][_0xe2b4[21]](this[_0xe2b4[95]])}else {this[_0xe2b4[95]][_0xe2b4[104]]= _0xe2b4[105]};this[_0xe2b4[95]][_0xe2b4[17]][_0xe2b4[83]]= _0xe2b4[105];mxUtils[_0xe2b4[106]](this[_0xe2b4[95]],_0x8f4ax9);var _0x8f4axf=this[_0xe2b4[95]][_0xe2b4[107]]+ 10;_0x8f4axe+= _0x8f4axf;if(mxClient[_0xe2b4[74]]){this[_0xe2b4[95]][_0xe2b4[17]][_0xe2b4[108]]= (-_0x8f4axf) + _0xe2b4[93]}else {_0x8f4axe-= 6;this[_0xe2b4[95]][_0xe2b4[17]][_0xe2b4[109]]= (_0x8f4axe- _0x8f4axf)+ _0xe2b4[93]}}else {if(this[_0xe2b4[95]]!= null&& this[_0xe2b4[95]][_0xe2b4[33]]!= null){this[_0xe2b4[95]][_0xe2b4[17]][_0xe2b4[83]]= _0xe2b4[110]}};this[_0xe2b4[68]][_0xe2b4[17]][_0xe2b4[81]]= _0x8f4axe+ _0xe2b4[93];var _0x8f4ax10=-Math[_0xe2b4[112]](0,_0x8f4axc[_0xe2b4[111]]- this[_0xe2b4[53]]);var _0x8f4ax11=-Math[_0xe2b4[112]](0,_0x8f4axc[_0xe2b4[113]]- this[_0xe2b4[53]]);var _0x8f4ax12=this[_0xe2b4[2]][_0xe2b4[114]]+ this[_0xe2b4[1]][_0xe2b4[115]]+ 3;var _0x8f4ax13=Math[_0xe2b4[118]](0,(this[_0xe2b4[2]][_0xe2b4[116]]+ _0x8f4ax7[_0xe2b4[116]]- this[_0xe2b4[2]][_0xe2b4[117]]- _0x8f4axe/ 2+ 16));if(mxClient[_0xe2b4[74]]){this[_0xe2b4[71]][_0xe2b4[73]][_0xe2b4[75]][_0xe2b4[123]](_0xe2b4[119],_0xe2b4[120]+ _0x8f4ax10+ _0xe2b4[121]+ _0x8f4ax11+ _0xe2b4[122])}else {this[_0xe2b4[71]][_0xe2b4[73]][_0xe2b4[125]][_0xe2b4[17]][_0xe2b4[124]]= _0x8f4ax10+ _0xe2b4[93];this[_0xe2b4[71]][_0xe2b4[73]][_0xe2b4[125]][_0xe2b4[17]][_0xe2b4[109]]= _0x8f4ax11+ _0xe2b4[93]};_0x8f4ax13+= 90;this[_0xe2b4[68]][_0xe2b4[17]][_0xe2b4[19]]= _0xe2b4[20];this[_0xe2b4[68]][_0xe2b4[17]][_0xe2b4[124]]= _0x8f4ax12+ _0xe2b4[93];this[_0xe2b4[68]][_0xe2b4[17]][_0xe2b4[109]]= _0x8f4ax13+ _0xe2b4[93];this[_0xe2b4[77]][_0xe2b4[17]][_0xe2b4[124]]= (_0x8f4ax12- 13)+ _0xe2b4[93];this[_0xe2b4[77]][_0xe2b4[17]][_0xe2b4[109]]= (_0x8f4ax13+ _0x8f4axe/ 2- 13)+ _0xe2b4[93]});if(this[_0xe2b4[68]]!= null&& this[_0xe2b4[68]][_0xe2b4[17]][_0xe2b4[83]]!= _0xe2b4[110]){_0x8f4axb()}else {this[_0xe2b4[66]]= window[_0xe2b4[126]](_0x8f4axb,this[_0xe2b4[55]])};this[_0xe2b4[32]]= _0x8f4ax7}}};Sidebar[_0xe2b4[40]][_0xe2b4[29]]= function(){if(this[_0xe2b4[66]]!= null){window[_0xe2b4[67]](this[_0xe2b4[66]]);this[_0xe2b4[66]]= null};if(this[_0xe2b4[68]]!= null){this[_0xe2b4[68]][_0xe2b4[17]][_0xe2b4[83]]= _0xe2b4[110];this[_0xe2b4[77]][_0xe2b4[17]][_0xe2b4[16]]= _0xe2b4[18];this[_0xe2b4[32]]= null}};Sidebar[_0xe2b4[40]][_0xe2b4[127]]= function(_0x8f4ax14){var _0x8f4ax7=document[_0xe2b4[7]](_0xe2b4[128]);_0x8f4ax7[_0xe2b4[123]](_0xe2b4[129],_0xe2b4[130]);_0x8f4ax7[_0xe2b4[69]]= _0xe2b4[131];mxUtils[_0xe2b4[106]](_0x8f4ax7,_0x8f4ax14);return _0x8f4ax7};Sidebar[_0xe2b4[40]][_0xe2b4[132]]= function(_0x8f4ax8,_0x8f4axd,_0x8f4axe,_0x8f4ax15,_0x8f4ax9,_0x8f4axa){this[_0xe2b4[5]][_0xe2b4[85]]= (_0x8f4axa== null|| _0x8f4axa);this[_0xe2b4[5]][_0xe2b4[73]][_0xe2b4[133]](1,0,0);this[_0xe2b4[5]][_0xe2b4[88]](_0x8f4ax8);var _0x8f4axc=this[_0xe2b4[5]][_0xe2b4[89]]();var _0x8f4ax16=this[_0xe2b4[54]];var _0x8f4ax17=Math[_0xe2b4[112]]((_0x8f4axd- 2)/ (_0x8f4axc[_0xe2b4[79]]- _0x8f4axc[_0xe2b4[111]]+ _0x8f4ax16),(_0x8f4axe- 2)/ (_0x8f4axc[_0xe2b4[81]]- _0x8f4axc[_0xe2b4[113]]+ _0x8f4ax16));var _0x8f4ax10=-Math[_0xe2b4[112]](_0x8f4axc[_0xe2b4[111]],0);var _0x8f4ax11=-Math[_0xe2b4[112]](_0x8f4axc[_0xe2b4[113]],0);this[_0xe2b4[5]][_0xe2b4[73]][_0xe2b4[133]](_0x8f4ax17,_0x8f4ax10,_0x8f4ax11);_0x8f4axc= this[_0xe2b4[5]][_0xe2b4[89]]();var _0x8f4ax18=Math[_0xe2b4[118]](0,Math[_0xe2b4[134]]((_0x8f4axd- _0x8f4axc[_0xe2b4[79]]- _0x8f4axc[_0xe2b4[111]])/ 2));var _0x8f4axf=Math[_0xe2b4[118]](0,Math[_0xe2b4[134]]((_0x8f4axe- _0x8f4axc[_0xe2b4[81]]- _0x8f4axc[_0xe2b4[113]])/ 2));var _0x8f4ax19=null;if(this[_0xe2b4[5]][_0xe2b4[135]]== mxConstants[_0xe2b4[136]]&& !mxClient[_0xe2b4[137]]){_0x8f4ax19= this[_0xe2b4[5]][_0xe2b4[73]][_0xe2b4[140]]()[_0xe2b4[139]][_0xe2b4[138]](true)}else {_0x8f4ax19= this[_0xe2b4[5]][_0xe2b4[2]][_0xe2b4[138]](false);_0x8f4ax19[_0xe2b4[104]]= this[_0xe2b4[5]][_0xe2b4[2]][_0xe2b4[104]]};this[_0xe2b4[5]][_0xe2b4[141]]()[_0xe2b4[86]]();if(mxClient[_0xe2b4[142]]){_0x8f4ax15[_0xe2b4[17]][_0xe2b4[143]]= _0xe2b4[144]+ this[_0xe2b4[1]][_0xe2b4[9]][_0xe2b4[145]]+ _0xe2b4[122]};var _0x8f4ax1a=3;_0x8f4ax19[_0xe2b4[17]][_0xe2b4[19]]= _0xe2b4[76];_0x8f4ax19[_0xe2b4[17]][_0xe2b4[91]]= _0xe2b4[18];_0x8f4ax19[_0xe2b4[17]][_0xe2b4[146]]= _0xe2b4[147];_0x8f4ax19[_0xe2b4[17]][_0xe2b4[124]]= (_0x8f4ax18+ _0x8f4ax1a)+ _0xe2b4[93];_0x8f4ax19[_0xe2b4[17]][_0xe2b4[109]]= (_0x8f4axf+ _0x8f4ax1a)+ _0xe2b4[93];_0x8f4ax19[_0xe2b4[17]][_0xe2b4[79]]= _0x8f4axd+ _0xe2b4[93];_0x8f4ax19[_0xe2b4[17]][_0xe2b4[81]]= _0x8f4axe+ _0xe2b4[93];_0x8f4ax19[_0xe2b4[17]][_0xe2b4[16]]= _0xe2b4[105];_0x8f4ax19[_0xe2b4[17]][_0xe2b4[148]]= _0xe2b4[105];_0x8f4ax19[_0xe2b4[17]][_0xe2b4[149]]= _0xe2b4[105];_0x8f4ax15[_0xe2b4[21]](_0x8f4ax19);if(this[_0xe2b4[63]]&& _0x8f4ax9!= null){var _0x8f4ax1b=(mxClient[_0xe2b4[90]])?2* this[_0xe2b4[61]]+ 2:0;_0x8f4ax15[_0xe2b4[17]][_0xe2b4[81]]= (this[_0xe2b4[60]]+ _0x8f4ax1b+ this[_0xe2b4[62]]+ 8)+ _0xe2b4[93];var _0x8f4ax1c=document[_0xe2b4[7]](_0xe2b4[6]);_0x8f4ax1c[_0xe2b4[17]][_0xe2b4[150]]= this[_0xe2b4[62]]+ _0xe2b4[93];_0x8f4ax1c[_0xe2b4[17]][_0xe2b4[98]]= _0xe2b4[99];_0x8f4ax1c[_0xe2b4[17]][_0xe2b4[151]]= _0xe2b4[152];if(mxClient[_0xe2b4[153]]){_0x8f4ax1c[_0xe2b4[17]][_0xe2b4[81]]= (this[_0xe2b4[62]]+ 12)+ _0xe2b4[93]};_0x8f4ax1c[_0xe2b4[17]][_0xe2b4[101]]= _0xe2b4[154];mxUtils[_0xe2b4[106]](_0x8f4ax1c,_0x8f4ax9);_0x8f4ax15[_0xe2b4[21]](_0x8f4ax1c)}};Sidebar[_0xe2b4[40]][_0xe2b4[155]]= function(_0x8f4ax8,_0x8f4ax9,_0x8f4axa){var _0x8f4ax7=document[_0xe2b4[7]](_0xe2b4[128]);_0x8f4ax7[_0xe2b4[123]](_0xe2b4[129],_0xe2b4[130]);_0x8f4ax7[_0xe2b4[69]]= _0xe2b4[156];_0x8f4ax7[_0xe2b4[17]][_0xe2b4[91]]= _0xe2b4[18];var _0x8f4ax1b=(mxClient[_0xe2b4[90]])?8+ 2* this[_0xe2b4[61]]:6;_0x8f4ax7[_0xe2b4[17]][_0xe2b4[79]]= (this[_0xe2b4[59]]+ _0x8f4ax1b)+ _0xe2b4[93];_0x8f4ax7[_0xe2b4[17]][_0xe2b4[81]]= (this[_0xe2b4[60]]+ _0x8f4ax1b)+ _0xe2b4[93];_0x8f4ax7[_0xe2b4[17]][_0xe2b4[157]]= this[_0xe2b4[61]]+ _0xe2b4[93];mxEvent[_0xe2b4[26]](_0x8f4ax7,_0xe2b4[158],function(_0x8f4ax4){mxEvent[_0xe2b4[159]](_0x8f4ax4)});this[_0xe2b4[132]](_0x8f4ax8,this[_0xe2b4[59]],this[_0xe2b4[60]],_0x8f4ax7,_0x8f4ax9,_0x8f4axa);return _0x8f4ax7};Sidebar[_0xe2b4[40]][_0xe2b4[160]]= function(_0x8f4ax8,_0x8f4ax1d){return function(_0x8f4ax1e,_0x8f4ax4,_0x8f4ax1f,_0x8f4ax20,_0x8f4ax21){if(_0x8f4ax1e[_0xe2b4[161]]()){_0x8f4ax8= _0x8f4ax1e[_0xe2b4[162]](_0x8f4ax8);if(_0x8f4ax8[_0xe2b4[94]]> 0){var _0x8f4ax22=(_0x8f4ax1f!= null)?_0x8f4ax1e[_0xe2b4[163]](_0x8f4ax1f,_0x8f4ax8,_0x8f4ax4):false;var _0x8f4ax23=null;if(_0x8f4ax1f!= null&& !_0x8f4ax22){_0x8f4ax1f= null};if(_0x8f4ax1d&& _0x8f4ax1e[_0xe2b4[164]]()&& _0x8f4ax1e[_0xe2b4[165]](_0x8f4ax1f,_0x8f4ax8,_0x8f4ax4)){_0x8f4ax1e[_0xe2b4[166]](_0x8f4ax1f,_0x8f4ax8,null,_0x8f4ax20,_0x8f4ax21);_0x8f4ax23= _0x8f4ax8}else {if(_0x8f4ax8[_0xe2b4[94]]> 0){_0x8f4ax23= _0x8f4ax1e[_0xe2b4[167]](_0x8f4ax8,_0x8f4ax20,_0x8f4ax21,_0x8f4ax1f)}};if(_0x8f4ax23!= null&& _0x8f4ax23[_0xe2b4[94]]> 0){_0x8f4ax1e[_0xe2b4[168]](_0x8f4ax23[0]);_0x8f4ax1e[_0xe2b4[169]](_0x8f4ax23)}}}}};Sidebar[_0xe2b4[40]][_0xe2b4[170]]= function(_0x8f4axd,_0x8f4axe){var _0x8f4ax7=document[_0xe2b4[7]](_0xe2b4[6]);_0x8f4ax7[_0xe2b4[17]][_0xe2b4[171]]= _0xe2b4[172];_0x8f4ax7[_0xe2b4[17]][_0xe2b4[79]]= _0x8f4axd+ _0xe2b4[93];_0x8f4ax7[_0xe2b4[17]][_0xe2b4[81]]= _0x8f4axe+ _0xe2b4[93];return _0x8f4ax7};Sidebar[_0xe2b4[40]][_0xe2b4[173]]= function(_0x8f4ax7,_0x8f4ax24,_0x8f4ax25){var _0x8f4ax26=mxUtils[_0xe2b4[175]](_0x8f4ax7,this[_0xe2b4[1]][_0xe2b4[9]][_0xe2b4[5]],_0x8f4ax24,_0x8f4ax25,0,0,this[_0xe2b4[1]][_0xe2b4[9]][_0xe2b4[5]][_0xe2b4[174]],true,true);_0x8f4ax26[_0xe2b4[176]]= function(_0x8f4ax1e,_0x8f4ax20,_0x8f4ax21){var _0x8f4ax1f=mxDragSource[_0xe2b4[40]][_0xe2b4[176]][_0xe2b4[177]](this,arguments);if(!_0x8f4ax1e[_0xe2b4[178]](_0x8f4ax1f)){_0x8f4ax1f= null};return _0x8f4ax1f};return _0x8f4ax26};Sidebar[_0xe2b4[40]][_0xe2b4[179]]= function(_0x8f4ax7,_0x8f4ax27){var _0x8f4ax1e=this[_0xe2b4[1]][_0xe2b4[9]][_0xe2b4[5]];var _0x8f4ax28=null;mxEvent[_0xe2b4[182]](_0x8f4ax7,function(_0x8f4ax4){_0x8f4ax28= new mxPoint(mxEvent[_0xe2b4[180]](_0x8f4ax4),mxEvent[_0xe2b4[181]](_0x8f4ax4))});var _0x8f4ax29=_0x8f4ax27[_0xe2b4[183]];_0x8f4ax27[_0xe2b4[183]]= function(_0x8f4ax4){if(!mxEvent[_0xe2b4[184]](_0x8f4ax4)&& this[_0xe2b4[185]]== null && _0x8f4ax28!= null){var _0x8f4ax2a=_0x8f4ax1e[_0xe2b4[186]];if(Math[_0xe2b4[187]](_0x8f4ax28[_0xe2b4[111]]- mxEvent[_0xe2b4[180]](_0x8f4ax4))<= _0x8f4ax2a&& Math[_0xe2b4[187]](_0x8f4ax28[_0xe2b4[113]]- mxEvent[_0xe2b4[181]](_0x8f4ax4))<= _0x8f4ax2a){var _0x8f4ax2b=_0x8f4ax1e[_0xe2b4[188]]();_0x8f4ax27[_0xe2b4[189]](_0x8f4ax1e,_0x8f4ax4,null,_0x8f4ax2b,_0x8f4ax2b)}};_0x8f4ax29[_0xe2b4[177]](this,arguments);_0x8f4ax28= null}};Sidebar[_0xe2b4[40]][_0xe2b4[190]]= function(_0x8f4ax2c,_0x8f4ax14,_0x8f4ax2d,_0x8f4ax2e){var _0x8f4ax2f=mxUtils[_0xe2b4[190]]();var _0x8f4ax19=_0x8f4ax2f[_0xe2b4[7]](_0x8f4ax2c);_0x8f4ax19[_0xe2b4[123]](_0xe2b4[191],_0x8f4ax14);_0x8f4ax2d[_0xe2b4[192]](function(_0x8f4ax30,_0x8f4ax31){_0x8f4ax19[_0xe2b4[123]](_0x8f4ax30,_0x8f4ax2e[_0x8f4ax31]?_0x8f4ax2e[_0x8f4ax31]:_0xe2b4[105])});return _0x8f4ax19};Sidebar[_0xe2b4[40]][_0xe2b4[193]]= function(_0x8f4ax32,_0x8f4axd,_0x8f4axe,_0x8f4ax33,_0x8f4ax9,_0x8f4axa){var _0x8f4ax2d=[];var _0x8f4ax2e=[];switch(_0x8f4ax33){case _0xe2b4[47]:_0x8f4ax2d= [_0xe2b4[194],_0xe2b4[195],_0xe2b4[196]];_0x8f4ax2e= [_0xe2b4[197],_0xe2b4[105],_0xe2b4[198]];break;case _0xe2b4[50]:_0x8f4ax2d= [_0xe2b4[194],_0xe2b4[195]];_0x8f4ax2e= [_0xe2b4[197],_0xe2b4[105]];break;case _0xe2b4[48]:_0x8f4ax2d= [_0xe2b4[194],_0xe2b4[48],_0xe2b4[199]];_0x8f4ax2e= [_0xe2b4[197],_0xe2b4[105]];break;case _0xe2b4[49]:_0x8f4ax2d= [_0xe2b4[194],_0xe2b4[48],_0xe2b4[200]];_0x8f4ax2e= [_0xe2b4[197],_0xe2b4[105]];break;default:_0x8f4ax2d= [];_0x8f4ax2e= [];break};var _0x8f4ax19=this[_0xe2b4[190]](_0x8f4ax33,_0x8f4ax9,_0x8f4ax2d,_0x8f4ax2e);var _0x8f4ax8=[ new mxCell(_0x8f4ax19, new mxGeometry(0,0,_0x8f4axd,_0x8f4axe),_0x8f4ax32)];_0x8f4ax8[0][_0xe2b4[201]]= true;return this[_0xe2b4[202]](_0x8f4ax8,_0x8f4axd,_0x8f4axe,_0x8f4ax9,_0x8f4axa)};Sidebar[_0xe2b4[40]][_0xe2b4[202]]= function(_0x8f4ax8,_0x8f4axd,_0x8f4axe,_0x8f4ax9,_0x8f4axa){var _0x8f4ax7=this[_0xe2b4[155]](_0x8f4ax8,_0x8f4ax9,_0x8f4axa);var _0x8f4ax27=this[_0xe2b4[173]](_0x8f4ax7,this[_0xe2b4[160]](_0x8f4ax8,true),this[_0xe2b4[170]](_0x8f4axd,_0x8f4axe));this[_0xe2b4[179]](_0x8f4ax7,_0x8f4ax27);_0x8f4ax27[_0xe2b4[203]]= mxUtils[_0xe2b4[25]](this,function(){return this[_0xe2b4[1]][_0xe2b4[9]][_0xe2b4[5]][_0xe2b4[205]][_0xe2b4[204]]});if(!touchStyle){mxEvent[_0xe2b4[26]](_0x8f4ax7,_0xe2b4[30],mxUtils[_0xe2b4[25]](this,function(_0x8f4ax4){this[_0xe2b4[65]](_0x8f4ax7,_0x8f4ax8,_0x8f4ax9,_0x8f4axa)}))};return _0x8f4ax7};Sidebar[_0xe2b4[40]][_0xe2b4[206]]= function(_0x8f4ax32,_0x8f4axd,_0x8f4axe,_0x8f4ax33,_0x8f4ax9,_0x8f4axa){var _0x8f4ax8=[ new mxCell((_0x8f4ax33!= null)?_0x8f4ax33:_0xe2b4[105], new mxGeometry(0,0,_0x8f4axd,_0x8f4axe),_0x8f4ax32)];_0x8f4ax8[0][_0xe2b4[208]][_0xe2b4[207]]( new mxPoint(0,_0x8f4axe),true);_0x8f4ax8[0][_0xe2b4[208]][_0xe2b4[207]]( new mxPoint(_0x8f4axd,0),false);_0x8f4ax8[0][_0xe2b4[208]][_0xe2b4[76]]= true;_0x8f4ax8[0][_0xe2b4[209]]= true;return this[_0xe2b4[210]](_0x8f4ax8,_0x8f4axd,_0x8f4axe,_0x8f4ax9,_0x8f4axa)};Sidebar[_0xe2b4[40]][_0xe2b4[210]]= function(_0x8f4ax8,_0x8f4axd,_0x8f4axe,_0x8f4ax9,_0x8f4axa){var _0x8f4ax7=this[_0xe2b4[155]](_0x8f4ax8,_0x8f4ax9,_0x8f4axa);this[_0xe2b4[173]](_0x8f4ax7,this[_0xe2b4[160]](_0x8f4ax8,false),this[_0xe2b4[170]](_0x8f4axd,_0x8f4axe));var _0x8f4ax1e=this[_0xe2b4[1]][_0xe2b4[9]][_0xe2b4[5]];mxEvent[_0xe2b4[26]](_0x8f4ax7,_0xe2b4[158],mxUtils[_0xe2b4[25]](this,function(_0x8f4ax4){if(this[_0xe2b4[56]]){_0x8f4ax1e[_0xe2b4[211]](_0x8f4ax8[0])};_0x8f4ax7[_0xe2b4[17]][_0xe2b4[212]]= _0xe2b4[213];window[_0xe2b4[126]](function(){_0x8f4ax7[_0xe2b4[17]][_0xe2b4[212]]= _0xe2b4[105]},300);mxEvent[_0xe2b4[159]](_0x8f4ax4)}));touchStyle= false;if(!touchStyle){mxEvent[_0xe2b4[26]](_0x8f4ax7,_0xe2b4[30],mxUtils[_0xe2b4[25]](this,function(_0x8f4ax4){this[_0xe2b4[65]](_0x8f4ax7,_0x8f4ax8,_0x8f4ax9,_0x8f4axa)}))};return _0x8f4ax7};Sidebar[_0xe2b4[40]][_0xe2b4[214]]= function(_0x8f4ax34,_0x8f4ax9,_0x8f4ax35,_0x8f4ax36){var _0x8f4ax7=this[_0xe2b4[127]](_0x8f4ax9);this[_0xe2b4[2]][_0xe2b4[21]](_0x8f4ax7);var _0x8f4ax1c=document[_0xe2b4[7]](_0xe2b4[6]);_0x8f4ax1c[_0xe2b4[69]]= _0xe2b4[215];if(_0x8f4ax35){_0x8f4ax36(_0x8f4ax1c);_0x8f4ax36= null}else {_0x8f4ax1c[_0xe2b4[17]][_0xe2b4[83]]= _0xe2b4[110]};this[_0xe2b4[216]](_0x8f4ax7,_0x8f4ax1c,_0x8f4ax36);var _0x8f4ax37=document[_0xe2b4[7]](_0xe2b4[6]);_0x8f4ax37[_0xe2b4[21]](_0x8f4ax1c);this[_0xe2b4[2]][_0xe2b4[21]](_0x8f4ax37);if(_0x8f4ax34!= null){this[_0xe2b4[3]][_0x8f4ax34]= [_0x8f4ax7,_0x8f4ax37]}};Sidebar[_0xe2b4[40]][_0xe2b4[216]]= function(_0x8f4ax9,_0x8f4ax38,_0x8f4ax39){var _0x8f4ax3a=false;_0x8f4ax9[_0xe2b4[17]][_0xe2b4[143]]= (_0x8f4ax38[_0xe2b4[17]][_0xe2b4[83]]== _0xe2b4[110])?_0xe2b4[144]+ IMAGE_PATH+ _0xe2b4[217]:_0xe2b4[144]+ IMAGE_PATH+ _0xe2b4[218];_0x8f4ax9[_0xe2b4[17]][_0xe2b4[219]]= _0xe2b4[220];_0x8f4ax9[_0xe2b4[17]][_0xe2b4[221]]= _0xe2b4[222];mxEvent[_0xe2b4[26]](_0x8f4ax9,_0xe2b4[158],function(_0x8f4ax4){if(_0x8f4ax38[_0xe2b4[17]][_0xe2b4[83]]== _0xe2b4[110]){if(!_0x8f4ax3a){_0x8f4ax3a= true;if(_0x8f4ax39!= null){_0x8f4ax9[_0xe2b4[17]][_0xe2b4[146]]= _0xe2b4[223];window[_0xe2b4[126]](function(){_0x8f4ax39(_0x8f4ax38);_0x8f4ax9[_0xe2b4[17]][_0xe2b4[146]]= _0xe2b4[105]},0)}};_0x8f4ax9[_0xe2b4[17]][_0xe2b4[143]]= _0xe2b4[144]+ IMAGE_PATH+ _0xe2b4[218];_0x8f4ax38[_0xe2b4[17]][_0xe2b4[83]]= _0xe2b4[84]}else {_0x8f4ax9[_0xe2b4[17]][_0xe2b4[143]]= _0xe2b4[144]+ IMAGE_PATH+ _0xe2b4[217];_0x8f4ax38[_0xe2b4[17]][_0xe2b4[83]]= _0xe2b4[110]};mxEvent[_0xe2b4[159]](_0x8f4ax4)})};Sidebar[_0xe2b4[40]][_0xe2b4[224]]= function(_0x8f4ax34){var _0x8f4ax3b=this[_0xe2b4[3]][_0x8f4ax34];if(_0x8f4ax3b!= null){this[_0xe2b4[3]][_0x8f4ax34]= null;for(var _0x8f4ax3c=0;_0x8f4ax3c< _0x8f4ax3b[_0xe2b4[94]];_0x8f4ax3c++){this[_0xe2b4[2]][_0xe2b4[225]](_0x8f4ax3b[_0x8f4ax3c])};return true};return false};Sidebar[_0xe2b4[40]][_0xe2b4[51]]= function(_0x8f4ax34,_0x8f4ax9,_0x8f4ax3d,_0x8f4ax3e,_0x8f4ax3f,_0x8f4ax40){this[_0xe2b4[214]](_0x8f4ax34,_0x8f4ax9,(_0x8f4ax34=== _0xe2b4[42]),mxUtils[_0xe2b4[25]](this,function(_0x8f4ax38){var _0x8f4ax41=_0x8f4ax40!= null;for(var _0x8f4ax3c=0;_0x8f4ax3c< _0x8f4ax3f[_0xe2b4[94]];_0x8f4ax3c++){var _0x8f4ax42=_0x8f4ax3d+ _0x8f4ax3f[_0x8f4ax3c]+ _0x8f4ax3e;_0x8f4ax38[_0xe2b4[21]](this[_0xe2b4[193]](_0xe2b4[226]+ _0x8f4ax42,80,80,_0x8f4ax3f[_0x8f4ax3c],(_0x8f4ax41)?_0x8f4ax40[_0x8f4ax3c]:null,_0x8f4ax41))}}))} \ No newline at end of file +undefined \ No newline at end of file diff --git a/public/assets/plugins/jscripty/js/Toolbar.js b/public/assets/plugins/jscripty/js/Toolbar.js index a25983f..66dc905 100644 --- a/public/assets/plugins/jscripty/js/Toolbar.js +++ b/public/assets/plugins/jscripty/js/Toolbar.js @@ -1 +1 @@ -var _0x856a=["\x65\x64\x69\x74\x6F\x72\x55\x69","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x69\x6E\x69\x74","\x68\x69\x64\x65\x4D\x65\x6E\x75","\x62\x69\x6E\x64","\x61\x64\x64\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x73\x61\x76\x65","\x70\x75\x62\x6C\x69\x73\x68","\x2D","\x70\x72\x69\x6E\x74","\x75\x6E\x64\x6F","\x72\x65\x64\x6F","\x63\x6F\x70\x79","\x63\x75\x74","\x70\x61\x73\x74\x65","\x64\x65\x6C\x65\x74\x65","\x64\x75\x70\x6C\x69\x63\x61\x74\x65","\x61\x63\x74\x75\x61\x6C\x53\x69\x7A\x65","\x7A\x6F\x6F\x6D\x49\x6E","\x7A\x6F\x6F\x6D\x4F\x75\x74","\x61\x64\x64\x49\x74\x65\x6D\x73","\x48\x65\x6C\x76\x65\x74\x69\x63\x61","\x66\x6F\x6E\x74\x46\x61\x6D\x69\x6C\x79","\x67\x65\x74","\x61\x64\x64\x4D\x65\x6E\x75","\x77\x68\x69\x74\x65\x53\x70\x61\x63\x65","\x73\x74\x79\x6C\x65","\x6E\x6F\x77\x72\x61\x70","\x6F\x76\x65\x72\x66\x6C\x6F\x77","\x68\x69\x64\x64\x65\x6E","\x77\x69\x64\x74\x68","\x37\x30\x70\x78","\x61\x64\x64\x53\x65\x70\x61\x72\x61\x74\x6F\x72","\x31\x32","\x66\x6F\x6E\x74\x53\x69\x7A\x65","\x33\x30\x70\x78","\x62\x6F\x6C\x64","\x69\x74\x61\x6C\x69\x63","\x75\x6E\x64\x65\x72\x6C\x69\x6E\x65","\x67\x72\x61\x70\x68","\x65\x64\x69\x74\x6F\x72","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x67\x65\x74\x53\x74\x61\x74\x65","\x67\x65\x74\x56\x69\x65\x77","\x53\x54\x59\x4C\x45\x5F\x46\x4F\x4E\x54\x46\x41\x4D\x49\x4C\x59","\x53\x54\x59\x4C\x45\x5F\x46\x4F\x4E\x54\x53\x49\x5A\x45","\x6C\x65\x6E\x67\x74\x68","\x73\x75\x62\x73\x74\x72\x69\x6E\x67","\x2E\x2E\x2E","\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C","\x61\x64\x64\x4C\x69\x73\x74\x65\x6E\x65\x72","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x4D\x6F\x64\x65\x6C","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x63\x75\x72\x72\x65\x6E\x74\x4D\x65\x6E\x75","\x64\x65\x73\x74\x72\x6F\x79","\x6D\x65\x6E\x75\x73","\x66\x75\x6E\x63\x74","\x61\x64\x64\x4D\x65\x6E\x75\x46\x75\x6E\x63\x74\x69\x6F\x6E","\x73\x74\x61\x74\x65\x43\x68\x61\x6E\x67\x65\x64","\x65\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x45\x6E\x61\x62\x6C\x65\x64","\x63\x72\x65\x61\x74\x65\x4C\x61\x62\x65\x6C","\x63\x72\x65\x61\x74\x65\x42\x75\x74\x74\x6F\x6E","\x69\x6E\x69\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x61\x64\x64\x4D\x65\x6E\x75\x48\x61\x6E\x64\x6C\x65\x72","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x64\x69\x76","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x67\x65\x53\x65\x70\x61\x72\x61\x74\x6F\x72","\x67\x65\x53\x70\x72\x69\x74\x65\x2D","\x74\x6F\x4C\x6F\x77\x65\x72\x43\x61\x73\x65","\x61\x64\x64\x49\x74\x65\x6D","\x61\x63\x74\x69\x6F\x6E\x73","\x6C\x61\x62\x65\x6C","\x61\x64\x64\x42\x75\x74\x74\x6F\x6E","\x61\x64\x64\x43\x6C\x69\x63\x6B\x48\x61\x6E\x64\x6C\x65\x72","\x61\x64\x64\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x48\x61\x6E\x64\x6C\x65\x72","\x69\x73\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x45\x6D\x70\x74\x79","\x61\x64\x64\x45\x64\x67\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x48\x61\x6E\x64\x6C\x65\x72","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x69\x73\x45\x64\x67\x65","\x74\x61\x62\x69\x6E\x64\x65\x78","\x30","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x74\x69\x74\x6C\x65","\x61\x64\x64\x45\x6E\x61\x62\x6C\x65\x64\x53\x74\x61\x74\x65","\x20\x67\x65\x44\x69\x73\x61\x62\x6C\x65\x64","\x63\x6C\x69\x63\x6B","\x63\x6F\x6E\x73\x75\x6D\x65","\x61","\x68\x72\x65\x66","\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x3A\x76\x6F\x69\x64\x28\x30\x29\x3B","\x67\x65\x42\x75\x74\x74\x6F\x6E","\x67\x65\x53\x70\x72\x69\x74\x65\x20","\x67\x65\x4C\x61\x62\x65\x6C","\x77\x72\x69\x74\x65","\x70\x61\x6E\x6E\x69\x6E\x67\x48\x61\x6E\x64\x6C\x65\x72","\x20\x67\x65\x54\x6F\x6F\x6C\x62\x61\x72\x4D\x65\x6E\x75","\x73\x68\x6F\x77\x44\x69\x73\x61\x62\x6C\x65\x64","\x6C\x61\x62\x65\x6C\x73","\x61\x75\x74\x6F\x45\x78\x70\x61\x6E\x64","\x6F\x66\x66\x73\x65\x74\x4C\x65\x66\x74","\x6F\x66\x66\x73\x65\x74\x54\x6F\x70","\x6F\x66\x66\x73\x65\x74\x48\x65\x69\x67\x68\x74","\x70\x6F\x70\x75\x70"];function Toolbar(_0x5e30x2,_0x5e30x3){this[_0x856a[0]]= _0x5e30x2;this[_0x856a[1]]= _0x5e30x3;this[_0x856a[2]]();mxEvent[_0x856a[5]](document,mxUtils[_0x856a[4]](this,function(_0x5e30x4){this[_0x856a[3]]()}))}Toolbar[_0x856a[6]][_0x856a[2]]= function(){this[_0x856a[21]]([_0x856a[7],_0x856a[8],_0x856a[9],_0x856a[10],_0x856a[11],_0x856a[12],_0x856a[9],_0x856a[13],_0x856a[14],_0x856a[15],_0x856a[16],_0x856a[9],_0x856a[17],_0x856a[9],_0x856a[18],_0x856a[19],_0x856a[20],_0x856a[9]]);var _0x5e30x5=this[_0x856a[25]](_0x856a[22],mxResources[_0x856a[24]](_0x856a[23]),true,_0x856a[23]);_0x5e30x5[_0x856a[27]][_0x856a[26]]= _0x856a[28];_0x5e30x5[_0x856a[27]][_0x856a[29]]= _0x856a[30];_0x5e30x5[_0x856a[27]][_0x856a[31]]= _0x856a[32];this[_0x856a[33]]();var _0x5e30x6=this[_0x856a[25]](_0x856a[34],mxResources[_0x856a[24]](_0x856a[35]),true,_0x856a[35]);_0x5e30x6[_0x856a[27]][_0x856a[26]]= _0x856a[28];_0x5e30x6[_0x856a[27]][_0x856a[29]]= _0x856a[30];_0x5e30x6[_0x856a[27]][_0x856a[31]]= _0x856a[36];this[_0x856a[21]]([_0x856a[9],_0x856a[37],_0x856a[38],_0x856a[39]]);var _0x5e30x7=this[_0x856a[0]][_0x856a[41]][_0x856a[40]];var _0x5e30x8=mxUtils[_0x856a[4]](this,function(){var _0x5e30x9=_0x856a[22];var _0x5e30xa=_0x856a[34];var _0x5e30xb=_0x5e30x7[_0x856a[44]]()[_0x856a[43]](_0x5e30x7[_0x856a[42]]());if(_0x5e30xb!= null){_0x5e30x9= _0x5e30xb[_0x856a[27]][mxConstants[_0x856a[45]]]|| _0x5e30x9;_0x5e30xa= _0x5e30xb[_0x856a[27]][mxConstants[_0x856a[46]]]|| _0x5e30xa;if(_0x5e30x9[_0x856a[47]]> 10){_0x5e30x9= _0x5e30x9[_0x856a[48]](0,8)+ _0x856a[49]};_0x5e30x5[_0x856a[50]]= _0x5e30x9;_0x5e30x6[_0x856a[50]]= _0x5e30xa}});_0x5e30x7[_0x856a[52]]()[_0x856a[51]](mxEvent.CHANGE,_0x5e30x8);_0x5e30x7[_0x856a[53]]()[_0x856a[51]](mxEvent.CHANGE,_0x5e30x8)};Toolbar[_0x856a[6]][_0x856a[3]]= function(){if(this[_0x856a[54]]!= null){this[_0x856a[54]][_0x856a[3]]();this[_0x856a[54]][_0x856a[55]]();this[_0x856a[54]]= null}};Toolbar[_0x856a[6]][_0x856a[25]]= function(_0x5e30xc,_0x5e30xd,_0x5e30xe,_0x5e30xf){var _0x5e30x10=this[_0x856a[0]][_0x856a[56]][_0x856a[24]](_0x5e30xf);var _0x5e30x11=this[_0x856a[58]](_0x5e30xc,_0x5e30xd,_0x5e30xe,_0x5e30x10[_0x856a[57]]);_0x5e30x10[_0x856a[51]](_0x856a[59],function(){_0x5e30x11[_0x856a[61]](_0x5e30x10[_0x856a[60]])});return _0x5e30x11};Toolbar[_0x856a[6]][_0x856a[58]]= function(_0x5e30xc,_0x5e30xd,_0x5e30xe,_0x5e30x12){var _0x5e30x11=(_0x5e30xe)?this[_0x856a[62]](_0x5e30xc):this[_0x856a[63]](_0x5e30xc);this[_0x856a[64]](_0x5e30x11,_0x5e30xd);this[_0x856a[65]](_0x5e30x11,_0x5e30xe,_0x5e30x12);this[_0x856a[1]][_0x856a[66]](_0x5e30x11);return _0x5e30x11};Toolbar[_0x856a[6]][_0x856a[33]]= function(){var _0x5e30x11=document[_0x856a[68]](_0x856a[67]);_0x5e30x11[_0x856a[69]]= _0x856a[70];this[_0x856a[1]][_0x856a[66]](_0x5e30x11);return _0x5e30x11};Toolbar[_0x856a[6]][_0x856a[21]]= function(_0x5e30x13){for(var _0x5e30x14=0;_0x5e30x14< _0x5e30x13[_0x856a[47]];_0x5e30x14++){var _0x5e30x15=_0x5e30x13[_0x5e30x14];if(_0x5e30x15== _0x856a[9]){this[_0x856a[33]]()}else {this[_0x856a[73]](_0x856a[71]+ _0x5e30x15[_0x856a[72]](),_0x5e30x15)}}};Toolbar[_0x856a[6]][_0x856a[73]]= function(_0x5e30x16,_0x5e30x15){var _0x5e30x17=this[_0x856a[0]][_0x856a[74]][_0x856a[24]](_0x5e30x15);var _0x5e30x11=null;if(_0x5e30x17!= null){_0x5e30x11= this[_0x856a[76]](_0x5e30x16,_0x5e30x17[_0x856a[75]],_0x5e30x17[_0x856a[57]]);_0x5e30x11[_0x856a[61]](_0x5e30x17[_0x856a[60]]);_0x5e30x17[_0x856a[51]](_0x856a[59],function(){_0x5e30x11[_0x856a[61]](_0x5e30x17[_0x856a[60]])})};return _0x5e30x11};Toolbar[_0x856a[6]][_0x856a[76]]= function(_0x5e30x18,_0x5e30xd,_0x5e30x12){var _0x5e30x11=this[_0x856a[63]](_0x5e30x18);this[_0x856a[64]](_0x5e30x11,_0x5e30xd);this[_0x856a[77]](_0x5e30x11,_0x5e30x12);this[_0x856a[1]][_0x856a[66]](_0x5e30x11);return _0x5e30x11};Toolbar[_0x856a[6]][_0x856a[78]]= function(_0x5e30x19){var _0x5e30x7=this[_0x856a[0]][_0x856a[41]][_0x856a[40]];var _0x5e30x1a=function(){var _0x5e30x1b=!_0x5e30x7[_0x856a[79]]();for(var _0x5e30x14=0;_0x5e30x14< _0x5e30x19[_0x856a[47]];_0x5e30x14++){_0x5e30x19[_0x5e30x14][_0x856a[61]](_0x5e30x1b)}};_0x5e30x7[_0x856a[52]]()[_0x856a[51]](mxEvent.CHANGE,_0x5e30x1a);_0x5e30x1a()};Toolbar[_0x856a[6]][_0x856a[80]]= function(_0x5e30x19){var _0x5e30x7=this[_0x856a[0]][_0x856a[41]][_0x856a[40]];var _0x5e30x1a=function(){var _0x5e30x1c=false;if(!_0x5e30x7[_0x856a[79]]()){var _0x5e30x1d=_0x5e30x7[_0x856a[81]]();for(var _0x5e30x14=0;_0x5e30x14< _0x5e30x1d[_0x856a[47]];_0x5e30x14++){if(_0x5e30x7[_0x856a[53]]()[_0x856a[82]](_0x5e30x1d[_0x5e30x14])){_0x5e30x1c= true;break}}};for(var _0x5e30x14=0;_0x5e30x14< _0x5e30x19[_0x856a[47]];_0x5e30x14++){_0x5e30x19[_0x5e30x14][_0x856a[61]](_0x5e30x1c)}};_0x5e30x7[_0x856a[52]]()[_0x856a[51]](mxEvent.CHANGE,_0x5e30x1a);_0x5e30x1a()};Toolbar[_0x856a[6]][_0x856a[64]]= function(_0x5e30x11,_0x5e30xd){_0x5e30x11[_0x856a[85]](_0x856a[83],_0x856a[84]);if(_0x5e30xd!= null){_0x5e30x11[_0x856a[85]](_0x856a[86],_0x5e30xd)};this[_0x856a[87]](_0x5e30x11)};Toolbar[_0x856a[6]][_0x856a[87]]= function(_0x5e30x11){var _0x5e30x18=_0x5e30x11[_0x856a[69]];_0x5e30x11[_0x856a[61]]= function(_0x5e30x1e){_0x5e30x11[_0x856a[60]]= _0x5e30x1e;if(_0x5e30x1e){_0x5e30x11[_0x856a[69]]= _0x5e30x18}else {_0x5e30x11[_0x856a[69]]= _0x5e30x18+ _0x856a[88]}};_0x5e30x11[_0x856a[61]](true)};Toolbar[_0x856a[6]][_0x856a[77]]= function(_0x5e30x11,_0x5e30x12){if(_0x5e30x12!= null){mxEvent[_0x856a[51]](_0x5e30x11,_0x856a[89],function(_0x5e30x4){if(_0x5e30x11[_0x856a[60]]){_0x5e30x12(_0x5e30x4)};mxEvent[_0x856a[90]](_0x5e30x4)})}};Toolbar[_0x856a[6]][_0x856a[63]]= function(_0x5e30x18){var _0x5e30x11=document[_0x856a[68]](_0x856a[91]);_0x5e30x11[_0x856a[85]](_0x856a[92],_0x856a[93]);_0x5e30x11[_0x856a[69]]= _0x856a[94];var _0x5e30x1f=document[_0x856a[68]](_0x856a[67]);_0x5e30x1f[_0x856a[69]]= _0x856a[95]+ _0x5e30x18;_0x5e30x11[_0x856a[66]](_0x5e30x1f);return _0x5e30x11};Toolbar[_0x856a[6]][_0x856a[62]]= function(_0x5e30xc,_0x5e30xd){var _0x5e30x11=document[_0x856a[68]](_0x856a[91]);_0x5e30x11[_0x856a[85]](_0x856a[92],_0x856a[93]);_0x5e30x11[_0x856a[69]]= _0x856a[96];mxUtils[_0x856a[97]](_0x5e30x11,_0x5e30xc);return _0x5e30x11};Toolbar[_0x856a[6]][_0x856a[65]]= function(_0x5e30x11,_0x5e30xe,_0x5e30x12,_0x5e30x20){if(_0x5e30x12!= null){var _0x5e30x7=this[_0x856a[0]][_0x856a[41]][_0x856a[40]];var _0x5e30x10=null;mxEvent[_0x856a[51]](_0x5e30x11,_0x856a[89],mxUtils[_0x856a[4]](this,function(_0x5e30x4){if(_0x5e30x11[_0x856a[60]]== null|| _0x5e30x11[_0x856a[60]]){_0x5e30x7[_0x856a[98]][_0x856a[3]]();_0x5e30x10= new mxPopupMenu(_0x5e30x12);_0x5e30x10[_0x856a[67]][_0x856a[69]]+= _0x856a[99];_0x5e30x10[_0x856a[100]]= _0x5e30x20;_0x5e30x10[_0x856a[101]]= _0x5e30xe;_0x5e30x10[_0x856a[102]]= true;_0x5e30x10[_0x856a[106]](_0x5e30x11[_0x856a[103]],_0x5e30x11[_0x856a[104]]+ _0x5e30x11[_0x856a[105]]+ 34,null,_0x5e30x4);this[_0x856a[54]]= _0x5e30x10};mxEvent[_0x856a[90]](_0x5e30x4)}))}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/public/assets/plugins/jscripty/js/custom.js b/public/assets/plugins/jscripty/js/custom.js index 45f7ad8..66dc905 100644 --- a/public/assets/plugins/jscripty/js/custom.js +++ b/public/assets/plugins/jscripty/js/custom.js @@ -1 +1 @@ -var _0x470b=["\x68\x72\x65\x66","\x6C\x6F\x63\x61\x74\x69\x6F\x6E","\x3F","\x6C\x61\x73\x74\x49\x6E\x64\x65\x78\x4F\x66","\x26","\x73\x70\x6C\x69\x74","\x73\x75\x62\x73\x74\x72\x69\x6E\x67","\x6C\x65\x6E\x67\x74\x68","\x3D","\x69\x6E\x64\x65\x78\x4F\x66","\x68\x74\x74\x70\x3A\x2F\x2F\x65\x78\x70\x2E\x64\x72\x61\x77\x2E\x69\x6F\x2F\x49\x6D\x61\x67\x65\x45\x78\x70\x6F\x72\x74\x32\x2F\x65\x78\x70\x6F\x72\x74","\x68\x74\x74\x70\x3A\x2F\x2F\x6C\x6F\x63\x61\x6C\x68\x6F\x73\x74\x3A\x33\x30\x30\x30","\x61\x70\x69\x2F\x6A\x73\x63\x72\x69\x70\x74\x79\x2F\x70\x72\x6F\x6A\x65\x63\x74\x73\x2F","\x61\x70\x69\x2F\x73\x71\x75\x61\x72\x65\x2F\x76\x61\x72\x69\x61\x62\x6C\x65\x73\x2F","\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x6A\x73\x63\x72\x69\x70\x74\x79\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73","\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x6D\x78\x67\x72\x61\x70\x68\x2F\x73\x68\x61\x70\x65\x73","\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x6D\x78\x67\x72\x61\x70\x68\x2F\x69\x6D\x61\x67\x65\x73","\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x6D\x78\x67\x72\x61\x70\x68\x2F\x73\x74\x79\x6C\x65\x73","\x61\x70\x69\x2F\x6A\x73\x63\x72\x69\x70\x74\x79\x2F\x70\x72\x6F\x6A\x65\x63\x74\x73\x2F\x6F\x70\x65\x6E","\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x6A\x73\x63\x72\x69\x70\x74\x79\x2F\x74\x65\x6D\x70\x6C\x61\x74\x65\x73","\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x6A\x73\x63\x72\x69\x70\x74\x79\x2F\x72\x65\x73\x6F\x75\x72\x63\x65\x73","\x2F\x64\x69\x61","\x63\x75\x73\x74\x6F\x6D","\x4E\x47\x5F\x54\x52\x41\x4E\x53\x4C\x41\x54\x45\x5F\x4C\x41\x4E\x47\x5F\x4B\x45\x59","\x67\x65\x74\x49\x74\x65\x6D","\x6C\x6F\x67","\x65\x6E","\x65\x6E\x5F\x45\x4E","\x69\x74","\x6D\x78\x4C\x61\x6E\x67\x75\x61\x67\x65","\x61\x72","\x62\x73","\x63\x73","\x64\x61","\x64\x65","\x65\x6C","\x65\x73","\x65\x73\x2D\x61\x72","\x66\x72","\x68\x75","\x69\x64","\x6A\x61","\x6B\x6F","\x6E\x6C","\x6E\x6F","\x70\x6C","\x70\x74\x2D\x62\x72","\x70\x74","\x72\x6F","\x72\x75","\x73\x72","\x73\x76","\x74\x68","\x74\x72","\x75\x6B","\x7A\x68","\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x6D\x78\x67\x72\x61\x70\x68","\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x6D\x78\x67\x72\x61\x70\x68\x2F\x6A\x73","\x55\x53\x20\x45\x6E\x67\x6C\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x55\x53\x20\x45\x6E\x67\x6C\x69\x73\x68\x20\x4D\x61\x6C\x65","\x55\x4B\x20\x45\x6E\x67\x6C\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x55\x4B\x20\x45\x6E\x67\x6C\x69\x73\x68\x20\x4D\x61\x6C\x65","\x41\x75\x73\x74\x72\x61\x6C\x69\x61\x6E\x20\x45\x6E\x67\x6C\x69\x73\x68","\x55\x53\x20\x53\x70\x61\x6E\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x55\x53\x20\x53\x70\x61\x6E\x69\x73\x68\x20\x4D\x61\x6C\x65","\x43\x68\x69\x6E\x65\x73\x65\x20\x46\x65\x6D\x61\x6C\x65","\x43\x68\x69\x6E\x65\x73\x65\x20\x4D\x61\x6C\x65","\x48\x6F\x6E\x67\x20\x4B\x6F\x6E\x67\x20\x43\x61\x6E\x74\x6F\x6E\x65\x73\x65\x20\x46\x65\x6D\x61\x6C\x65","\x54\x61\x69\x77\x61\x6E\x20\x43\x68\x69\x6E\x65\x73\x65\x20\x46\x65\x6D\x61\x6C\x65","\x4A\x61\x70\x61\x6E\x65\x73\x65\x20\x46\x65\x6D\x61\x6C\x65","\x4A\x61\x70\x61\x6E\x65\x73\x65\x20\x4D\x61\x6C\x65","\x4B\x6F\x72\x65\x61\x6E\x20\x46\x65\x6D\x61\x6C\x65","\x4B\x6F\x72\x65\x61\x6E\x20\x4D\x61\x6C\x65","\x43\x61\x6E\x61\x64\x69\x61\x6E\x20\x45\x6E\x67\x6C\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x48\x75\x6E\x67\x61\x72\x69\x61\x6E\x20\x46\x65\x6D\x61\x6C\x65","\x42\x72\x61\x7A\x69\x6C\x69\x61\x6E\x20\x50\x6F\x72\x74\x75\x67\x75\x65\x73\x65\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x50\x6F\x72\x74\x75\x67\x75\x65\x73\x65\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x50\x6F\x72\x74\x75\x67\x75\x65\x73\x65\x20\x4D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x53\x70\x61\x6E\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x53\x70\x61\x6E\x69\x73\x68\x20\x4D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x43\x61\x74\x61\x6C\x61\x6E\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x43\x7A\x65\x63\x68\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x44\x61\x6E\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x46\x69\x6E\x6E\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x46\x72\x65\x6E\x63\x68\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x46\x72\x65\x6E\x63\x68\x20\x4D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x4E\x6F\x72\x77\x65\x67\x69\x61\x6E\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x44\x75\x74\x63\x68\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x50\x6F\x6C\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x49\x74\x61\x6C\x69\x61\x6E\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x54\x75\x72\x6B\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65\x09","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x54\x75\x72\x6B\x69\x73\x68\x20\x4D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x47\x65\x72\x6D\x61\x6E\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x47\x65\x72\x6D\x61\x6E\x20\x4D\x61\x6C\x65","\x52\x75\x73\x73\x69\x61\x6E\x20\x46\x65\x6D\x61\x6C\x65","\x52\x75\x73\x73\x69\x61\x6E\x20\x4D\x61\x6C\x65","\x53\x77\x65\x64\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x43\x61\x6E\x61\x64\x69\x61\x6E\x20\x46\x72\x65\x6E\x63\x68\x20\x46\x65\x6D\x61\x6C\x65","\x43\x61\x6E\x61\x64\x69\x61\x6E\x20\x46\x72\x65\x6E\x63\x68\x20\x4D\x61\x6C\x65","\x45\x6E\x67\x6C\x69\x73\x68\x20\x28\x55\x53\x29","\x45\x6E\x67\x6C\x69\x73\x68\x20\x28\x43\x61\x6E\x61\x64\x61\x29","\x45\x6E\x67\x6C\x69\x73\x68\x20\x28\x55\x4B\x29","\x45\x6E\x67\x6C\x69\x73\x68\x20\x28\x41\x75\x73\x74\x72\x61\x6C\x69\x61\x29","\x53\x70\x61\x6E\x69\x73\x68\x20\x28\x53\x70\x61\x69\x6E\x29","\x53\x70\x61\x6E\x69\x73\x68\x20\x28\x4D\x65\x78\x69\x63\x6F\x29","\x49\x74\x61\x6C\x69\x61\x6E\x20\x28\x49\x74\x61\x6C\x79\x29\x20\x2F\x20\x46\x69\x6E\x6E\x69\x73\x68\x20\x28\x46\x69\x6E\x6C\x61\x6E\x64\x29","\x46\x72\x65\x6E\x63\x68\x20\x28\x46\x72\x61\x6E\x63\x65\x29","\x46\x72\x65\x6E\x63\x68\x20\x28\x43\x61\x6E\x61\x64\x61\x29","\x50\x6F\x6C\x69\x73\x68\x20\x28\x50\x6F\x6C\x61\x6E\x64\x29","\x50\x6F\x72\x74\x75\x67\x75\x65\x73\x65\x20\x28\x50\x6F\x72\x74\x75\x67\x61\x6C\x29","\x43\x61\x74\x61\x6C\x61\x6E\x20\x28\x43\x61\x74\x61\x6C\x61\x6E\x29","\x43\x68\x69\x6E\x65\x73\x65\x20\x28\x54\x61\x69\x77\x61\x6E\x29","\x44\x61\x6E\x69\x73\x68\x20\x28\x44\x65\x6E\x6D\x61\x72\x6B\x29","\x47\x65\x72\x6D\x61\x6E\x20\x28\x47\x65\x72\x6D\x61\x6E\x79\x29","\x4A\x61\x70\x61\x6E\x65\x73\x65\x20\x28\x4A\x61\x70\x61\x6E\x29","\x4B\x6F\x72\x65\x61\x6E\x20\x28\x4B\x6F\x72\x65\x61\x29","\x44\x75\x74\x63\x68\x20\x28\x4E\x65\x74\x68\x65\x72\x6C\x61\x6E\x64\x73\x29","\x4E\x6F\x72\x77\x65\x67\x69\x61\x6E\x20\x28\x4E\x6F\x72\x77\x61\x79\x29","\x50\x6F\x72\x74\x75\x67\x75\x65\x73\x65\x20\x28\x42\x72\x61\x7A\x69\x6C\x29","\x52\x75\x73\x73\x69\x61\x6E\x20\x28\x52\x75\x73\x73\x69\x61\x29","\x53\x77\x65\x64\x69\x73\x68\x20\x28\x53\x77\x65\x64\x65\x6E\x29","\x43\x68\x69\x6E\x65\x73\x65\x20\x28\x43\x68\x69\x6E\x61\x29","\x43\x68\x69\x6E\x65\x73\x65\x20\x28\x48\x6F\x6E\x67\x20\x4B\x6F\x6E\x67\x29","\x44\x65\x66\x61\x75\x6C\x74","\x44\x61\x74\x65","\x55\x53\x20\x4D\x6F\x6E\x65\x79","\x4E\x75\x6D\x62\x65\x72\x73\x20\x74\x6F\x20\x39","\x4E\x75\x6D\x62\x65\x72\x73\x20\x74\x6F\x20\x39\x39","\x4E\x75\x6D\x62\x65\x72\x73\x20\x74\x6F\x20\x39\x39\x39","\x54\x69\x6D\x65","\x50\x68\x6F\x6E\x65\x20\x6E\x75\x6D\x62\x65\x72","\x53\x74\x72\x65\x65\x74\x73","\x55\x53\x20\x43\x69\x74\x79\x2F\x53\x74\x61\x74\x65\x73","\x41\x66\x72\x69\x6B\x61\x61\x6E\x73","\x41\x6C\x62\x61\x6E\x69\x61\x6E","\x41\x6D\x68\x61\x72\x69\x63","\x41\x72\x61\x62\x69\x63","\x41\x72\x6D\x65\x6E\x69\x61\x6E","\x41\x7A\x65\x72\x62\x61\x69\x6A\x61\x6E\x69","\x42\x61\x73\x71\x75\x65","\x42\x65\x6C\x61\x72\x75\x73\x69\x61\x6E","\x42\x65\x6E\x67\x61\x6C\x69","\x42\x69\x68\x61\x72\x69","\x42\x6F\x73\x6E\x69\x61\x6E","\x42\x72\x65\x74\x6F\x6E","\x42\x75\x6C\x67\x61\x72\x69\x61\x6E","\x43\x61\x6D\x62\x6F\x64\x69\x61\x6E","\x43\x61\x74\x61\x6C\x61\x6E","\x43\x68\x69\x6E\x65\x73\x65\x20\x28\x53\x69\x6D\x70\x6C\x69\x66\x69\x65\x64\x29","\x43\x68\x69\x6E\x65\x73\x65\x20\x28\x54\x72\x61\x64\x69\x74\x69\x6F\x6E\x61\x6C\x29","\x43\x6F\x72\x73\x69\x63\x61\x6E","\x43\x72\x6F\x61\x74\x69\x61\x6E","\x43\x7A\x65\x63\x68","\x44\x61\x6E\x69\x73\x68","\x44\x75\x74\x63\x68","\x45\x6E\x67\x6C\x69\x73\x68","\x45\x73\x70\x65\x72\x61\x6E\x74\x6F","\x45\x73\x74\x6F\x6E\x69\x61\x6E","\x46\x61\x72\x6F\x65\x73\x65","\x46\x69\x6C\x69\x70\x69\x6E\x6F","\x46\x69\x6E\x6E\x69\x73\x68","\x46\x72\x65\x6E\x63\x68","\x46\x72\x69\x73\x69\x61\x6E","\x47\x61\x6C\x69\x63\x69\x61\x6E","\x47\x65\x6F\x72\x67\x69\x61\x6E","\x47\x65\x72\x6D\x61\x6E","\x47\x72\x65\x65\x6B","\x47\x75\x61\x72\x61\x6E\x69","\x47\x75\x6A\x61\x72\x61\x74\x69","\x48\x61\x63\x6B\x65\x72","\x48\x61\x75\x73\x61","\x48\x65\x62\x72\x65\x77","\x48\x69\x6E\x64\x69","\x48\x75\x6E\x67\x61\x72\x69\x61\x6E","\x49\x63\x65\x6C\x61\x6E\x64\x69\x63","\x49\x6E\x64\x6F\x6E\x65\x73\x69\x61\x6E","\x49\x6E\x74\x65\x72\x6C\x69\x6E\x67\x75\x61","\x49\x72\x69\x73\x68","\x49\x74\x61\x6C\x69\x61\x6E","\x4A\x61\x76\x61\x6E\x65\x73\x65","\x4A\x61\x70\x61\x6E\x65\x73\x65","\x4B\x61\x6E\x6E\x61\x64\x61","\x4B\x61\x7A\x61\x6B\x68","\x4B\x69\x6E\x79\x61\x72\x77\x61\x6E\x64\x61","\x4B\x69\x72\x75\x6E\x64\x69","\x4B\x6C\x69\x6E\x67\x6F\x6E","\x4B\x75\x72\x64\x69\x73\x68","\x4B\x6F\x72\x65\x61\x6E","\x4B\x79\x72\x67\x79\x7A","\x4C\x61\x6F\x74\x68\x69\x61\x6E","\x4C\x61\x74\x69\x6E","\x4C\x61\x74\x76\x69\x61\x6E","\x4C\x69\x6E\x67\x61\x6C\x61","\x4C\x69\x74\x68\x75\x61\x6E\x69\x61\x6E","\x4D\x61\x63\x65\x64\x6F\x6E\x69\x61\x6E","\x4D\x61\x6C\x61\x67\x61\x73\x79","\x4D\x61\x6C\x61\x79","\x4D\x61\x6C\x61\x79\x61\x6C\x61\x6D","\x4D\x61\x6C\x74\x65\x73\x65","\x4D\x61\x6F\x72\x69","\x4D\x61\x72\x61\x74\x68\x69","\x4D\x6F\x6C\x64\x61\x76\x69\x61\x6E","\x4D\x6F\x6E\x67\x6F\x6C\x69\x61\x6E","\x4D\x6F\x6E\x74\x65\x6E\x65\x67\x72\x69\x6E","\x4E\x65\x70\x61\x6C\x69","\x4E\x6F\x72\x77\x65\x67\x69\x61\x6E","\x4E\x6F\x72\x77\x65\x67\x69\x61\x6E\x20\x28\x4E\x79\x6E\x6F\x72\x73\x6B\x29","\x4F\x63\x63\x69\x74\x61\x6E","\x4F\x72\x69\x79\x61","\x4F\x72\x6F\x6D\x6F","\x50\x61\x73\x68\x74\x6F","\x50\x65\x72\x73\x69\x61\x6E","\x50\x69\x72\x61\x74\x65","\x50\x6F\x6C\x69\x73\x68","\x50\x75\x6E\x6A\x61\x62\x69","\x51\x75\x65\x63\x68\x75\x61","\x52\x6F\x6D\x61\x6E\x69\x61\x6E","\x52\x6F\x6D\x61\x6E\x73\x68","\x52\x75\x73\x73\x69\x61\x6E","\x53\x63\x6F\x74\x73\x20\x47\x61\x65\x6C\x69\x63","\x53\x65\x72\x62\x69\x61\x6E","\x53\x65\x72\x62\x6F\x2D\x43\x72\x6F\x61\x74\x69\x61\x6E","\x53\x65\x73\x6F\x74\x68\x6F","\x53\x68\x6F\x6E\x61","\x53\x69\x6E\x64\x68\x69","\x53\x69\x6E\x68\x61\x6C\x65\x73\x65","\x53\x6C\x6F\x76\x61\x6B","\x53\x6C\x6F\x76\x65\x6E\x69\x61\x6E","\x53\x6F\x6D\x61\x6C\x69","\x53\x70\x61\x6E\x69\x73\x68","\x53\x75\x6E\x64\x61\x6E\x65\x73\x65","\x53\x77\x61\x68\x69\x6C\x69","\x53\x77\x65\x64\x69\x73\x68","\x54\x61\x6A\x69\x6B","\x54\x61\x6D\x69\x6C","\x54\x61\x74\x61\x72","\x54\x65\x6C\x75\x67\x75","\x54\x68\x61\x69","\x54\x69\x67\x72\x69\x6E\x79\x61","\x54\x6F\x6E\x67\x61","\x54\x75\x72\x6B\x69\x73\x68","\x54\x75\x72\x6B\x6D\x65\x6E","\x54\x77\x69","\x55\x69\x67\x68\x75\x72","\x55\x6B\x72\x61\x69\x6E\x69\x61\x6E","\x55\x72\x64\x75","\x55\x7A\x62\x65\x6B","\x56\x69\x65\x74\x6E\x61\x6D\x65\x73\x65","\x57\x65\x6C\x73\x68","\x58\x68\x6F\x73\x61","\x59\x69\x64\x64\x69\x73\x68","\x59\x6F\x72\x75\x62\x61","\x5A\x75\x6C\x75"];var urlParams=(function(_0x2902x2){var _0x2902x3= new Object();var _0x2902x4=_0x2902x2[_0x470b[3]](_0x470b[2]);if(_0x2902x4> 0){var _0x2902x5=_0x2902x2[_0x470b[6]](_0x2902x4+ 1)[_0x470b[5]](_0x470b[4]);for(var _0x2902x6=0;_0x2902x6< _0x2902x5[_0x470b[7]];_0x2902x6++){_0x2902x4= _0x2902x5[_0x2902x6][_0x470b[9]](_0x470b[8]);if(_0x2902x4> 0){_0x2902x3[_0x2902x5[_0x2902x6][_0x470b[6]](0,_0x2902x4)]= _0x2902x5[_0x2902x6][_0x470b[6]](_0x2902x4+ 1)}}};return _0x2902x3})(window[_0x470b[1]][_0x470b[0]]);var t0= new Date();var MAX_REQUEST_SIZE=10485760;var MAX_WIDTH=12000;var MAX_HEIGHT=12000;var EXPORT_URL=_0x470b[10];var SHARE_HOST=_0x470b[11];var SAVE_URL=_0x470b[12];var VARIABLE_URL=_0x470b[13];var STENCIL_PATH=_0x470b[14];var SHAPES_PATH=_0x470b[15];var IMAGE_PATH=_0x470b[16];var STYLE_PATH=_0x470b[17];var CSS_PATH=_0x470b[17];var OPEN_FORM=_0x470b[18];var TEMPLATE_PATH=_0x470b[19];var RESOURCES_PATH=_0x470b[20];var RESOURCE_BASE=RESOURCES_PATH+ _0x470b[21];var tapAndHoldStartsConnection=true;var showConnectorImg=true;var mxLoadResources=false;console[_0x470b[25]](_0x470b[22],localStorage[_0x470b[24]](_0x470b[23]));switch(localStorage[_0x470b[24]](_0x470b[23])){case _0x470b[27]:mxLanguage= _0x470b[26];break;case _0x470b[28]:mxLanguage= _0x470b[28];break;default:mxLanguage= _0x470b[28]};console[_0x470b[25]](_0x470b[29],mxLanguage);var mxLanguages=[_0x470b[30],_0x470b[31],_0x470b[32],_0x470b[33],_0x470b[34],_0x470b[35],_0x470b[36],_0x470b[37],_0x470b[38],_0x470b[39],_0x470b[40],_0x470b[28],_0x470b[41],_0x470b[42],_0x470b[43],_0x470b[44],_0x470b[45],_0x470b[46],_0x470b[47],_0x470b[48],_0x470b[49],_0x470b[50],_0x470b[51],_0x470b[52],_0x470b[53],_0x470b[54],_0x470b[55]];var mxBasePath=_0x470b[56];var geBasePath=_0x470b[57];var ISPEECHLANG={usenglishfemale:_0x470b[58],usenglishmale:_0x470b[59],ukenglishfemale:_0x470b[60],ukenglishmale:_0x470b[61],auenglishfemale:_0x470b[62],usspanishfemale:_0x470b[63],usspanishmale:_0x470b[64],chchinesefemale:_0x470b[65],chchinesemale:_0x470b[66],hkchinesefemale:_0x470b[67],twchinesefemale:_0x470b[68],jpjapanesefemale:_0x470b[69],jpjapanesemale:_0x470b[70],krkoreanfemale:_0x470b[71],krkoreanmale:_0x470b[72],caenglishfemale:_0x470b[73],huhungarianfemale:_0x470b[74],brportuguesefemale:_0x470b[75],eurportuguesefemale:_0x470b[76],eurportuguesemale:_0x470b[77],eurspanishfemale:_0x470b[78],eurspanishmale:_0x470b[79],eurcatalanfemale:_0x470b[80],eurczechfemale:_0x470b[81],eurdanishfemale:_0x470b[82],eurfinnishfemale:_0x470b[83],eurfrenchfemale:_0x470b[84],eurfrenchmale:_0x470b[85],eurnorwegianfemale:_0x470b[86],eurdutchfemale:_0x470b[87],eurpolishfemale:_0x470b[88],euritalianfemale:_0x470b[89],eurturkishfemale:_0x470b[90],eurturkishmale:_0x470b[91],eurgermanfemale:_0x470b[92],eurgermanmale:_0x470b[93],rurussianfemale:_0x470b[94],rurussianmale:_0x470b[95],swswedishfemale:_0x470b[96],cafrenchfemale:_0x470b[97],cafrenchmale:_0x470b[98]};var ISPEECHASRLANG={"\x65\x6E\x2D\x55\x53":_0x470b[99],"\x65\x6E\x2D\x43\x41":_0x470b[100],"\x65\x6E\x2D\x47\x42":_0x470b[101],"\x65\x6E\x2D\x41\x55":_0x470b[102],"\x65\x73\x2D\x45\x53":_0x470b[103],"\x65\x73\x2D\x4D\x58":_0x470b[104],"\x69\x74\x2D\x49\x54":_0x470b[105],"\x66\x72\x2D\x46\x52":_0x470b[106],"\x66\x72\x2D\x43\x41":_0x470b[107],"\x70\x6C\x2D\x50\x4C":_0x470b[108],"\x70\x74\x2D\x50\x54":_0x470b[109],"\x63\x61\x2D\x45\x53":_0x470b[110],"\x7A\x68\x2D\x54\x57":_0x470b[111],"\x64\x61\x2D\x44\x4B":_0x470b[112],"\x66\x72\x2D\x46\x52":_0x470b[113],"\x6A\x61\x2D\x4A\x50":_0x470b[114],"\x6B\x6F\x2D\x4B\x52":_0x470b[115],"\x6E\x6C\x2D\x4E\x4C":_0x470b[116],"\x6E\x62\x2D\x4E\x4F":_0x470b[117],"\x70\x74\x2D\x42\x52":_0x470b[118],"\x72\x75\x2D\x52\x55":_0x470b[119],"\x73\x76\x2D\x53\x45":_0x470b[120],"\x7A\x68\x2D\x43\x4E":_0x470b[121],"\x7A\x68\x2D\x48\x4B":_0x470b[122]};var ISPEECHASRMODEL={0:_0x470b[123],date:_0x470b[124],usmoney:_0x470b[125],numbersto9:_0x470b[126],numbersto99:_0x470b[127],numbersto999:_0x470b[128],time:_0x470b[129],phonenumber:_0x470b[130],streets:_0x470b[131],citystate:_0x470b[132]};var GOOGLETTSLANG={"\x61\x66":_0x470b[133],"\x73\x71":_0x470b[134],"\x61\x6D":_0x470b[135],"\x61\x72":_0x470b[136],"\x68\x79":_0x470b[137],"\x61\x7A":_0x470b[138],"\x65\x75":_0x470b[139],"\x62\x65":_0x470b[140],"\x62\x6E":_0x470b[141],"\x62\x68":_0x470b[142],"\x62\x73":_0x470b[143],"\x62\x72":_0x470b[144],"\x62\x67":_0x470b[145],"\x6B\x6D":_0x470b[146],"\x63\x61":_0x470b[147],"\x7A\x68\x2D\x43\x4E":_0x470b[148],"\x7A\x68\x2D\x54\x57":_0x470b[149],"\x63\x6F":_0x470b[150],"\x68\x72":_0x470b[151],"\x63\x73":_0x470b[152],"\x64\x61":_0x470b[153],"\x6E\x6C":_0x470b[154],"\x65\x6E":_0x470b[155],"\x65\x6F":_0x470b[156],"\x65\x74":_0x470b[157],"\x66\x6F":_0x470b[158],"\x74\x6C":_0x470b[159],"\x66\x69":_0x470b[160],"\x66\x72":_0x470b[161],"\x66\x79":_0x470b[162],"\x67\x6C":_0x470b[163],"\x6B\x61":_0x470b[164],"\x64\x65":_0x470b[165],"\x65\x6C":_0x470b[166],"\x67\x6E":_0x470b[167],"\x67\x75":_0x470b[168],"\x78\x78\x2D\x68\x61\x63\x6B\x65\x72":_0x470b[169],"\x68\x61":_0x470b[170],"\x69\x77":_0x470b[171],"\x68\x69":_0x470b[172],"\x68\x75":_0x470b[173],"\x69\x73":_0x470b[174],"\x69\x64":_0x470b[175],"\x69\x61":_0x470b[176],"\x67\x61":_0x470b[177],"\x69\x74":_0x470b[178],"\x6A\x77":_0x470b[179],"\x6A\x61":_0x470b[180],"\x6B\x6E":_0x470b[181],"\x6B\x6B":_0x470b[182],"\x72\x77":_0x470b[183],"\x72\x6E":_0x470b[184],"\x78\x78\x2D\x6B\x6C\x69\x6E\x67\x6F\x6E":_0x470b[185],"\x6B\x75":_0x470b[186],"\x6B\x6F":_0x470b[187],"\x6B\x79":_0x470b[188],"\x6C\x6F":_0x470b[189],"\x6C\x61":_0x470b[190],"\x6C\x76":_0x470b[191],"\x6C\x6E":_0x470b[192],"\x6C\x74":_0x470b[193],"\x6D\x6B":_0x470b[194],"\x6D\x67":_0x470b[195],"\x6D\x73":_0x470b[196],"\x6D\x6C":_0x470b[197],"\x6D\x74":_0x470b[198],"\x6D\x69":_0x470b[199],"\x6D\x72":_0x470b[200],"\x6D\x6F":_0x470b[201],"\x6D\x6E":_0x470b[202],"\x73\x72\x2D\x4D\x45":_0x470b[203],"\x6E\x65":_0x470b[204],"\x6E\x6F":_0x470b[205],"\x6E\x6E":_0x470b[206],"\x6F\x63":_0x470b[207],"\x6F\x72":_0x470b[208],"\x6F\x6D":_0x470b[209],"\x70\x73":_0x470b[210],"\x66\x61":_0x470b[211],"\x78\x78\x2D\x70\x69\x72\x61\x74\x65":_0x470b[212],"\x70\x6C":_0x470b[213],"\x70\x74\x2D\x42\x52":_0x470b[118],"\x70\x74\x2D\x50\x54":_0x470b[109],"\x70\x61":_0x470b[214],"\x71\x75":_0x470b[215],"\x72\x6F":_0x470b[216],"\x72\x6D":_0x470b[217],"\x72\x75":_0x470b[218],"\x67\x64":_0x470b[219],"\x73\x72":_0x470b[220],"\x73\x68":_0x470b[221],"\x73\x74":_0x470b[222],"\x73\x6E":_0x470b[223],"\x73\x64":_0x470b[224],"\x73\x69":_0x470b[225],"\x73\x6B":_0x470b[226],"\x73\x6C":_0x470b[227],"\x73\x6F":_0x470b[228],"\x65\x73":_0x470b[229],"\x73\x75":_0x470b[230],"\x73\x77":_0x470b[231],"\x73\x76":_0x470b[232],"\x74\x67":_0x470b[233],"\x74\x61":_0x470b[234],"\x74\x74":_0x470b[235],"\x74\x65":_0x470b[236],"\x74\x68":_0x470b[237],"\x74\x69":_0x470b[238],"\x74\x6F":_0x470b[239],"\x74\x72":_0x470b[240],"\x74\x6B":_0x470b[241],"\x74\x77":_0x470b[242],"\x75\x67":_0x470b[243],"\x75\x6B":_0x470b[244],"\x75\x72":_0x470b[245],"\x75\x7A":_0x470b[246],"\x76\x69":_0x470b[247],"\x63\x79":_0x470b[248],"\x78\x68":_0x470b[249],"\x79\x69":_0x470b[250],"\x79\x6F":_0x470b[251],"\x7A\x75":_0x470b[252]} \ No newline at end of file +undefined \ No newline at end of file diff --git a/public/assets/plugins/mxgraph/js/mxClient.js b/public/assets/plugins/mxgraph/js/mxClient.js index c7da010..66dc905 100644 --- a/public/assets/plugins/mxgraph/js/mxClient.js +++ b/public/assets/plugins/mxgraph/js/mxClient.js @@ -1 +1 @@ -var _0x7ddb=["\x32\x2E\x30\x2E\x30\x2E\x30","\x4D\x53\x49\x45","\x69\x6E\x64\x65\x78\x4F\x66","\x75\x73\x65\x72\x41\x67\x65\x6E\x74","\x4D\x53\x49\x45\x20\x36","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x4D\x6F\x64\x65","\x76","\x6F","\x4D\x6F\x7A\x69\x6C\x6C\x61\x2F","\x4F\x70\x65\x72\x61\x2F","\x50\x72\x65\x73\x74\x6F\x2F\x32\x2E\x34\x2E","\x50\x72\x65\x73\x74\x6F\x2F\x32\x2E\x33\x2E","\x50\x72\x65\x73\x74\x6F\x2F\x32\x2E\x32\x2E","\x50\x72\x65\x73\x74\x6F\x2F\x32\x2E\x31\x2E","\x50\x72\x65\x73\x74\x6F\x2F\x32\x2E\x30\x2E","\x50\x72\x65\x73\x74\x6F\x2F\x31\x2E","\x41\x70\x70\x6C\x65\x57\x65\x62\x4B\x69\x74\x2F","\x43\x68\x72\x6F\x6D\x65\x2F","\x46\x69\x72\x65\x66\x6F\x78\x2F","\x46\x69\x72\x65\x66\x6F\x78\x2F\x31\x2E","\x46\x69\x72\x65\x66\x6F\x78\x2F\x32\x2E","\x49\x63\x65\x77\x65\x61\x73\x65\x6C\x2F","\x49\x63\x65\x77\x65\x61\x73\x65\x6C\x2F\x31\x2E","\x49\x63\x65\x77\x65\x61\x73\x65\x6C\x2F\x32\x2E","\x53\x65\x61\x4D\x6F\x6E\x6B\x65\x79\x2F","\x53\x65\x61\x4D\x6F\x6E\x6B\x65\x79\x2F\x31\x2E","\x49\x63\x65\x61\x70\x65\x2F","\x49\x63\x65\x61\x70\x65\x2F\x31\x2E","\x53\x65\x61\x6D\x6F\x6E\x6B\x65\x79\x2F","\x47\x61\x6C\x65\x6F\x6E\x2F","\x45\x70\x69\x70\x68\x61\x6E\x79\x2F","\x47\x65\x63\x6B\x6F\x2F","\x43\x61\x6D\x69\x6E\x6F\x2F\x31\x2E","\x45\x70\x69\x70\x68\x61\x6E\x79\x2F\x32\x2E","\x4D\x6F\x7A\x69\x6C\x6C\x61\x2F\x32\x2E","\x4D\x49\x43\x52\x4F\x53\x4F\x46\x54\x20\x49\x4E\x54\x45\x52\x4E\x45\x54\x20\x45\x58\x50\x4C\x4F\x52\x45\x52","\x74\x6F\x55\x70\x70\x65\x72\x43\x61\x73\x65","\x61\x70\x70\x4E\x61\x6D\x65","\x4D\x41\x43\x49\x4E\x54\x4F\x53\x48","\x49\x50\x41\x44","\x49\x50\x4F\x44","\x49\x50\x48\x4F\x4E\x45","\x41\x4E\x44\x52\x4F\x49\x44","\x68\x74\x74\x70\x3A\x2F\x2F","\x68\x72\x65\x66","\x6C\x6F\x63\x61\x74\x69\x6F\x6E","\x68\x74\x74\x70\x73\x3A\x2F\x2F","\x49\x53\x5F\x56\x4D\x4C","\x49\x53\x5F\x53\x56\x47","\x49\x53\x5F\x49\x45\x36","\x3C\x6C\x69\x6E\x6B\x20\x72\x65\x6C\x3D\x22","\x22\x20\x68\x72\x65\x66\x3D\x22","\x22\x20\x63\x68\x61\x72\x73\x65\x74\x3D\x22\x49\x53\x4F\x2D\x38\x38\x35\x39\x2D\x31\x22\x20\x74\x79\x70\x65\x3D\x22\x74\x65\x78\x74\x2F\x63\x73\x73\x22\x2F\x3E","\x77\x72\x69\x74\x65","\x6C\x69\x6E\x6B","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x72\x65\x6C","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x63\x68\x61\x72\x73\x65\x74","\x49\x53\x4F\x2D\x38\x38\x35\x39\x2D\x31","\x74\x79\x70\x65","\x74\x65\x78\x74\x2F\x63\x73\x73","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x68\x65\x61\x64","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x73\x42\x79\x54\x61\x67\x4E\x61\x6D\x65","\x3C\x73\x63\x72\x69\x70\x74\x20\x73\x72\x63\x3D\x22","\x22\x3E\x3C\x2F\x73\x63\x72\x69\x70\x74\x3E","\x6C\x65\x6E\x67\x74\x68","\x6F\x62\x6A\x65\x63\x74\x73","\x6D\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x4C\x69\x73\x74","\x72\x65\x6D\x6F\x76\x65\x41\x6C\x6C\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x49\x53\x5F\x4F\x50","\x49\x53\x5F\x4F\x54","\x43\x53\x53\x5F\x50\x52\x45\x46\x49\x58","\x4F","\x49\x53\x5F\x53\x46","\x49\x53\x5F\x47\x43","\x57\x65\x62\x6B\x69\x74","\x49\x53\x5F\x4D\x54","\x4D\x6F\x7A","\x49\x53\x5F\x49\x45","\x6D\x73","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x2E\x74\x78\x74","\x2F","\x73\x75\x62\x73\x74\x72\x69\x6E\x67","\x62\x61\x73\x65\x50\x61\x74\x68","\x2E","\x69\x6D\x61\x67\x65\x42\x61\x73\x65\x50\x61\x74\x68","\x2F\x69\x6D\x61\x67\x65\x73","\x6C\x61\x6E\x67\x75\x61\x67\x65","\x75\x73\x65\x72\x4C\x61\x6E\x67\x75\x61\x67\x65","\x64\x65\x66\x61\x75\x6C\x74\x4C\x61\x6E\x67\x75\x61\x67\x65","\x65\x6E","\x73\x74\x79\x6C\x65\x73\x68\x65\x65\x74","\x2F\x63\x73\x73\x2F\x63\x6F\x6D\x6D\x6F\x6E\x2E\x63\x73\x73","\x6C\x61\x6E\x67\x75\x61\x67\x65\x73","\x75\x72\x6E\x3A\x73\x63\x68\x65\x6D\x61\x73\x2D\x6D\x69\x63\x72\x6F\x73\x6F\x66\x74\x2D\x63\x6F\x6D\x3A\x76\x6D\x6C","\x23\x64\x65\x66\x61\x75\x6C\x74\x23\x56\x4D\x4C","\x61\x64\x64","\x6E\x61\x6D\x65\x73\x70\x61\x63\x65\x73","\x75\x72\x6E\x3A\x73\x63\x68\x65\x6D\x61\x73\x2D\x6D\x69\x63\x72\x6F\x73\x6F\x66\x74\x2D\x63\x6F\x6D\x3A\x6F\x66\x66\x69\x63\x65\x3A\x6F\x66\x66\x69\x63\x65","\x63\x72\x65\x61\x74\x65\x53\x74\x79\x6C\x65\x53\x68\x65\x65\x74","\x63\x73\x73\x54\x65\x78\x74","\x76\x5C\x3A\x2A\x7B\x62\x65\x68\x61\x76\x69\x6F\x72\x3A\x75\x72\x6C\x28\x23\x64\x65\x66\x61\x75\x6C\x74\x23\x56\x4D\x4C\x29\x7D\x6F\x5C\x3A\x2A\x7B\x62\x65\x68\x61\x76\x69\x6F\x72\x3A\x75\x72\x6C\x28\x23\x64\x65\x66\x61\x75\x6C\x74\x23\x56\x4D\x4C\x29\x7D","\x2F\x63\x73\x73\x2F\x65\x78\x70\x6C\x6F\x72\x65\x72\x2E\x63\x73\x73","\x6F\x6E\x75\x6E\x6C\x6F\x61\x64","\x64\x69\x73\x70\x6F\x73\x65","\x61\x74\x74\x61\x63\x68\x45\x76\x65\x6E\x74","\x43\x6F\x6E\x73\x6F\x6C\x65","","\x77\x69\x6E\x64\x6F\x77","\x62\x6F\x64\x79","\x63\x6F\x6E\x73\x6F\x6C\x65\x4E\x61\x6D\x65","\x20\x2D\x20\x6D\x78\x47\x72\x61\x70\x68\x20","\x56\x45\x52\x53\x49\x4F\x4E","\x74\x61\x62\x6C\x65","\x77\x69\x64\x74\x68","\x31\x30\x30\x25","\x68\x65\x69\x67\x68\x74","\x74\x62\x6F\x64\x79","\x74\x72","\x74\x64","\x76\x65\x72\x74\x69\x63\x61\x6C\x41\x6C\x69\x67\x6E","\x73\x74\x79\x6C\x65","\x74\x6F\x70","\x74\x65\x78\x74\x61\x72\x65\x61","\x72\x65\x61\x64\x4F\x6E\x6C\x79","\x74\x72\x75\x65","\x72\x65\x73\x69\x7A\x65","\x6E\x6F\x6E\x65","\x76\x61\x6C\x75\x65","\x62\x75\x66\x66\x65\x72","\x49\x53\x5F\x4E\x53","\x42\x61\x63\x6B\x43\x6F\x6D\x70\x61\x74","\x63\x6F\x6D\x70\x61\x74\x4D\x6F\x64\x65","\x39\x39\x25","\x33\x30\x70\x78","\x49\x6E\x66\x6F","\x69\x6E\x66\x6F","\x61\x64\x64\x42\x75\x74\x74\x6F\x6E","\x44\x4F\x4D","\x67\x65\x74\x49\x6E\x6E\x65\x72\x48\x74\x6D\x6C","\x64\x65\x62\x75\x67","\x54\x72\x61\x63\x65","\x54\x52\x41\x43\x45","\x54\x72\x61\x63\x69\x6E\x67\x20\x65\x6E\x61\x62\x6C\x65\x64","\x54\x72\x61\x63\x69\x6E\x67\x20\x64\x69\x73\x61\x62\x6C\x65\x64","\x43\x6F\x70\x79","\x63\x6F\x70\x79","\x61\x6C\x65\x72\x74","\x53\x68\x6F\x77","\x70\x6F\x70\x75\x70","\x43\x6C\x65\x61\x72","\x6E\x75\x6D\x62\x65\x72","\x69\x6E\x6E\x65\x72\x57\x69\x64\x74\x68","\x69\x6E\x6E\x65\x72\x48\x65\x69\x67\x68\x74","\x63\x6C\x69\x65\x6E\x74\x48\x65\x69\x67\x68\x74","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x63\x6C\x69\x65\x6E\x74\x57\x69\x64\x74\x68","\x6D\x61\x78","\x73\x65\x74\x4D\x61\x78\x69\x6D\x69\x7A\x61\x62\x6C\x65","\x73\x65\x74\x53\x63\x72\x6F\x6C\x6C\x61\x62\x6C\x65","\x73\x65\x74\x52\x65\x73\x69\x7A\x61\x62\x6C\x65","\x73\x65\x74\x43\x6C\x6F\x73\x61\x62\x6C\x65","\x64\x65\x73\x74\x72\x6F\x79\x4F\x6E\x43\x6C\x6F\x73\x65","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x6F\x66\x66\x73\x65\x74\x48\x65\x69\x67\x68\x74","\x70\x78","\x61\x64\x64\x4C\x69\x73\x74\x65\x6E\x65\x72","\x39\x32\x70\x78","\x77\x72\x69\x74\x65\x6C\x6E","\x62\x75\x74\x74\x6F\x6E","\x63\x6C\x69\x63\x6B","\x69\x73\x56\x69\x73\x69\x62\x6C\x65","\x73\x65\x74\x56\x69\x73\x69\x62\x6C\x65","\x69\x6E\x69\x74","\x45\x6E\x74\x65\x72\x69\x6E\x67\x20","\x67\x65\x74\x54\x69\x6D\x65","\x20\x28","\x20\x6D\x73\x29","\x4C\x65\x61\x76\x69\x6E\x67\x20","\x44\x45\x42\x55\x47","\x61\x70\x70\x6C\x79","\x57\x41\x52\x4E","\x20","\x50\x72\x65\x73\x74\x6F\x2F\x32\x2E\x35","\x76\x69\x73\x69\x62\x69\x6C\x69\x74\x79","\x68\x69\x64\x64\x65\x6E","\x76\x69\x73\x69\x62\x6C\x65","\x73\x63\x72\x6F\x6C\x6C\x54\x6F\x70","\x73\x63\x72\x6F\x6C\x6C\x48\x65\x69\x67\x68\x74","\x0A","\x6D\x78\x4F\x62\x6A\x65\x63\x74\x49\x64","\x6F\x62\x6A\x65\x63\x74","\x46\x49\x45\x4C\x44\x5F\x4E\x41\x4D\x45","\x63\x6F\x6E\x73\x74\x72\x75\x63\x74\x6F\x72","\x67\x65\x74\x46\x75\x6E\x63\x74\x69\x6F\x6E\x4E\x61\x6D\x65","\x23","\x63\x6F\x75\x6E\x74\x65\x72","\x63\x6C\x65\x61\x72","\x6D\x61\x70","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x67\x65\x74","\x70\x75\x74","\x72\x65\x6D\x6F\x76\x65","\x67\x65\x74\x4B\x65\x79\x73","\x70\x75\x73\x68","\x67\x65\x74\x56\x61\x6C\x75\x65\x73","\x76\x69\x73\x69\x74","\x6C\x6F\x61\x64\x44\x65\x66\x61\x75\x6C\x74\x42\x75\x6E\x64\x6C\x65","\x69\x73\x4C\x61\x6E\x67\x75\x61\x67\x65\x53\x75\x70\x70\x6F\x72\x74\x65\x64","\x65\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x2D","\x6C\x6F\x61\x64\x53\x70\x65\x63\x69\x61\x6C\x42\x75\x6E\x64\x6C\x65","\x5F","\x74\x6F\x4C\x6F\x77\x65\x72\x43\x61\x73\x65","\x4E\x4F\x4E\x45","\x67\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x42\x75\x6E\x64\x6C\x65","\x6C\x6F\x61\x64","\x69\x73\x52\x65\x61\x64\x79","\x67\x65\x74\x54\x65\x78\x74","\x70\x61\x72\x73\x65","\x67\x65\x74\x53\x70\x65\x63\x69\x61\x6C\x42\x75\x6E\x64\x6C\x65","\x73\x70\x6C\x69\x74","\x63\x68\x61\x72\x41\x74","\x3D","\x63\x68\x61\x72\x43\x6F\x64\x65\x41\x74","\x72\x65\x73\x6F\x75\x72\x63\x65\x73\x45\x6E\x63\x6F\x64\x65\x64","\x25","\x72\x65\x70\x6C\x61\x63\x65","\x72\x65\x73\x6F\x75\x72\x63\x65\x73","\x7B","\x7D","\x6A\x6F\x69\x6E","\x78","\x79","\x65\x71\x75\x61\x6C\x73","\x63\x6C\x6F\x6E\x65","\x63\x61\x6C\x6C","\x73\x65\x74\x52\x65\x63\x74","\x67\x65\x74\x43\x65\x6E\x74\x65\x72\x58","\x67\x65\x74\x43\x65\x6E\x74\x65\x72\x59","\x6D\x69\x6E","\x67\x72\x6F\x77","\x67\x65\x74\x50\x6F\x69\x6E\x74","\x63\x65\x6C\x6C","\x63\x68\x69\x6C\x64","\x67\x65\x74\x53\x74\x61\x74\x65","\x67\x65\x74\x56\x69\x65\x77","\x69\x73\x45\x64\x67\x65","\x6D\x6F\x64\x65\x6C","\x6E\x6F\x64\x65","\x73\x68\x61\x70\x65","\x73\x65\x74\x4F\x70\x61\x63\x69\x74\x79","\x73\x63\x61\x6C\x65","\x67\x65\x6F\x6D\x65\x74\x72\x79","\x70\x72\x65\x76\x69\x6F\x75\x73","\x72\x65\x64\x72\x61\x77","\x63\x65\x6C\x6C\x52\x65\x6E\x64\x65\x72\x65\x72","\x63\x61\x73\x63\x61\x64\x65\x4F\x70\x61\x63\x69\x74\x79","\x73\x65\x74\x54\x69\x6D\x65\x6F\x75\x74","\x67\x65\x74\x43\x68\x69\x6C\x64\x43\x6F\x75\x6E\x74","\x67\x65\x74\x43\x68\x69\x6C\x64\x41\x74","\x67\x65\x74\x45\x64\x67\x65\x73","\x70\x61\x72\x65\x6E\x74\x4E\x6F\x64\x65","\x72\x65\x6D\x6F\x76\x65\x43\x68\x69\x6C\x64","\x65\x72\x72\x6F\x72","\x63\x6C\x6F\x73\x65","\x2F\x65\x72\x72\x6F\x72\x2E\x67\x69\x66","\x63\x75\x72\x73\x6F\x72","\x63\x68\x69\x6C\x64\x4E\x6F\x64\x65\x73","\x72\x65\x6D\x6F\x76\x65\x43\x75\x72\x73\x6F\x72\x73","\x63\x75\x72\x72\x65\x6E\x74\x53\x74\x79\x6C\x65","\x67\x65\x74\x43\x6F\x6D\x70\x75\x74\x65\x64\x53\x74\x79\x6C\x65","\x67\x65\x74\x43\x75\x72\x72\x65\x6E\x74\x53\x74\x79\x6C\x65","\x73\x63\x72\x6F\x6C\x6C","\x6F\x76\x65\x72\x66\x6C\x6F\x77","\x61\x75\x74\x6F","\x66\x75\x6E\x63\x74\x69\x6F\x6E","\x76\x61\x72\x20\x5F\x6D\x78\x4A\x61\x76\x61\x53\x63\x72\x69\x70\x74\x45\x78\x70\x72\x65\x73\x73\x69\x6F\x6E\x3D","\x6D\x65\x73\x73\x61\x67\x65","\x20\x77\x68\x69\x6C\x65\x20\x65\x76\x61\x6C\x75\x61\x74\x69\x6E\x67\x20","\x77\x61\x72\x6E","\x67\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x66\x69\x72\x73\x74\x43\x68\x69\x6C\x64","\x66\x69\x6E\x64\x4E\x6F\x64\x65","\x6E\x65\x78\x74\x53\x69\x62\x6C\x69\x6E\x67","\x6E\x6F\x64\x65\x54\x79\x70\x65","\x4E\x4F\x44\x45\x54\x59\x50\x45\x5F\x45\x4C\x45\x4D\x45\x4E\x54","\x66\x69\x6E\x64\x4E\x6F\x64\x65\x42\x79\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x2F\x2F\x2A\x5B\x40","\x3D\x27","\x27\x5D","\x73\x65\x6C\x65\x63\x74\x53\x69\x6E\x67\x6C\x65\x4E\x6F\x64\x65","\x6F\x77\x6E\x65\x72\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x69\x74\x65\x72\x61\x74\x65\x4E\x65\x78\x74","\x65\x76\x61\x6C\x75\x61\x74\x65","\x6E\x61\x6D\x65","\x28","\x73\x70\x6C\x69\x63\x65","\x6E\x6F\x64\x65\x4E\x61\x6D\x65","\x69\x6D\x70\x6C\x65\x6D\x65\x6E\x74\x61\x74\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x41\x63\x74\x69\x76\x65\x58\x4F\x62\x6A\x65\x63\x74","\x4D\x69\x63\x72\x6F\x73\x6F\x66\x74\x2E\x58\x4D\x4C\x44\x4F\x4D","\x63\x72\x65\x61\x74\x65\x58\x6D\x6C\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x61\x73\x79\x6E\x63","\x66\x61\x6C\x73\x65","\x6C\x6F\x61\x64\x58\x4D\x4C","\x74\x65\x78\x74\x2F\x78\x6D\x6C","\x70\x61\x72\x73\x65\x46\x72\x6F\x6D\x53\x74\x72\x69\x6E\x67","\x73\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x65\x6D\x70\x74\x79","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x72\x65\x6D\x6F\x76\x65\x41\x6C\x6C\x52\x61\x6E\x67\x65\x73","\x20\x20","\x4E\x4F\x44\x45\x54\x59\x50\x45\x5F\x54\x45\x58\x54","\x6E\x6F\x64\x65\x56\x61\x6C\x75\x65","\x3C","\x61\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x68\x74\x6D\x6C\x45\x6E\x74\x69\x74\x69\x65\x73","\x3D\x22","\x22","\x3E\x0A","\x67\x65\x74\x50\x72\x65\x74\x74\x79\x58\x6D\x6C","\x3C\x2F","\x2F\x3E\x0A","\x70\x72\x65\x76\x69\x6F\x75\x73\x53\x69\x62\x6C\x69\x6E\x67","\x67\x65\x74\x54\x65\x78\x74\x43\x6F\x6E\x74\x65\x6E\x74","\x74\x72\x69\x6D","\x26\x61\x6D\x70\x3B","\x26\x71\x75\x6F\x74\x3B","\x26\x23\x33\x39\x3B","\x26\x6C\x74\x3B","\x26\x67\x74\x3B","\x26\x23\x78\x61\x3B","\x74\x61\x67\x55\x72\x6E","\x78\x6D\x6C","\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C","\x73\x65\x72\x69\x61\x6C\x69\x7A\x65\x54\x6F\x53\x74\x72\x69\x6E\x67","\x3E","\x6F\x75\x74\x65\x72\x48\x54\x4D\x4C","\x2F\x3E","\x63\x72\x65\x61\x74\x65\x54\x65\x78\x74\x4E\x6F\x64\x65","\x62\x72","\x70","\x66\x69\x6C\x74\x65\x72","\x70\x72\x6F\x67\x69\x64\x3A\x44\x58\x49\x6D\x61\x67\x65\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D\x2E\x4D\x69\x63\x72\x6F\x73\x6F\x66\x74\x2E\x41\x6C\x70\x68\x61\x49\x6D\x61\x67\x65\x4C\x6F\x61\x64\x65\x72\x28\x73\x72\x63\x3D\x27","\x2F\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x2E\x67\x69\x66\x27\x2C\x20\x73\x69\x7A\x69\x6E\x67\x4D\x65\x74\x68\x6F\x64\x3D\x27\x73\x63\x61\x6C\x65\x27\x29","\x65\x78\x65\x63\x75\x74\x65","\x73\x70\x61\x6E","\x63\x6F\x6C\x6F\x72","\x62\x6C\x75\x65","\x74\x65\x78\x74\x44\x65\x63\x6F\x72\x61\x74\x69\x6F\x6E","\x75\x6E\x64\x65\x72\x6C\x69\x6E\x65","\x70\x6F\x69\x6E\x74\x65\x72","\x70\x61\x64\x64\x69\x6E\x67\x4C\x65\x66\x74","\x6F\x66\x66\x73\x65\x74\x4C\x65\x66\x74","\x6F\x66\x66\x73\x65\x74\x57\x69\x64\x74\x68","\x73\x63\x72\x6F\x6C\x6C\x4C\x65\x66\x74","\x6C\x65\x66\x74","\x6F\x66\x66\x73\x65\x74\x54\x6F\x70","\x55\x6E\x69\x76\x65\x72\x73\x61\x6C\x58\x50\x43\x6F\x6E\x6E\x65\x63\x74","\x65\x6E\x61\x62\x6C\x65\x50\x72\x69\x76\x69\x6C\x65\x67\x65","\x50\x72\x69\x76\x69\x6C\x65\x67\x65\x4D\x61\x6E\x61\x67\x65\x72","\x73\x65\x63\x75\x72\x69\x74\x79","\x50\x65\x72\x6D\x69\x73\x73\x69\x6F\x6E\x20\x74\x6F\x20\x72\x65\x61\x64\x20\x66\x69\x6C\x65\x20\x64\x65\x6E\x69\x65\x64\x2E","\x6E\x73\x49\x4C\x6F\x63\x61\x6C\x46\x69\x6C\x65","\x69\x6E\x74\x65\x72\x66\x61\x63\x65\x73","\x63\x72\x65\x61\x74\x65\x49\x6E\x73\x74\x61\x6E\x63\x65","\x40\x6D\x6F\x7A\x69\x6C\x6C\x61\x2E\x6F\x72\x67\x2F\x66\x69\x6C\x65\x2F\x6C\x6F\x63\x61\x6C\x3B\x31","\x63\x6C\x61\x73\x73\x65\x73","\x69\x6E\x69\x74\x57\x69\x74\x68\x50\x61\x74\x68","\x65\x78\x69\x73\x74\x73","\x46\x69\x6C\x65\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64\x2E","\x6E\x73\x49\x46\x69\x6C\x65\x49\x6E\x70\x75\x74\x53\x74\x72\x65\x61\x6D","\x40\x6D\x6F\x7A\x69\x6C\x6C\x61\x2E\x6F\x72\x67\x2F\x6E\x65\x74\x77\x6F\x72\x6B\x2F\x66\x69\x6C\x65\x2D\x69\x6E\x70\x75\x74\x2D\x73\x74\x72\x65\x61\x6D\x3B\x31","\x6E\x73\x49\x53\x63\x72\x69\x70\x74\x61\x62\x6C\x65\x49\x6E\x70\x75\x74\x53\x74\x72\x65\x61\x6D","\x40\x6D\x6F\x7A\x69\x6C\x6C\x61\x2E\x6F\x72\x67\x2F\x73\x63\x72\x69\x70\x74\x61\x62\x6C\x65\x69\x6E\x70\x75\x74\x73\x74\x72\x65\x61\x6D\x3B\x31","\x61\x76\x61\x69\x6C\x61\x62\x6C\x65","\x72\x65\x61\x64","\x53\x63\x72\x69\x70\x74\x69\x6E\x67\x2E\x46\x69\x6C\x65\x53\x79\x73\x74\x65\x6D\x4F\x62\x6A\x65\x63\x74","\x72\x65\x61\x64\x41\x6C\x6C","\x50\x65\x72\x6D\x69\x73\x73\x69\x6F\x6E\x20\x74\x6F\x20\x77\x72\x69\x74\x65\x20\x66\x69\x6C\x65\x20\x64\x65\x6E\x69\x65\x64\x2E","\x63\x72\x65\x61\x74\x65","\x6E\x73\x49\x46\x69\x6C\x65\x4F\x75\x74\x70\x75\x74\x53\x74\x72\x65\x61\x6D","\x40\x6D\x6F\x7A\x69\x6C\x6C\x61\x2E\x6F\x72\x67\x2F\x6E\x65\x74\x77\x6F\x72\x6B\x2F\x66\x69\x6C\x65\x2D\x6F\x75\x74\x70\x75\x74\x2D\x73\x74\x72\x65\x61\x6D\x3B\x31","\x66\x6C\x75\x73\x68","\x69\x66\x72\x61\x6D\x65","\x73\x72\x63","\x63\x6F\x6E\x74\x65\x6E\x74\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x6F\x70\x65\x6E","\x66\x6F\x63\x75\x73","\x50\x65\x72\x6D\x69\x73\x73\x69\x6F\x6E\x20\x74\x6F\x20\x73\x61\x76\x65\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x20\x64\x65\x6E\x69\x65\x64\x2E","\x64\x6F\x63\x75\x6D\x65\x6E\x74","\x63\x6F\x6E\x74\x65\x6E\x74\x57\x69\x6E\x64\x6F\x77","\x53\x61\x76\x65\x41\x73","\x65\x78\x65\x63\x43\x6F\x6D\x6D\x61\x6E\x64","\x63\x6C\x69\x70\x62\x6F\x61\x72\x64\x44\x61\x74\x61","\x54\x65\x78\x74","\x73\x65\x74\x44\x61\x74\x61","\x6E\x73\x49\x43\x6C\x69\x70\x62\x6F\x61\x72\x64","\x40\x6D\x6F\x7A\x69\x6C\x6C\x61\x2E\x6F\x72\x67\x2F\x77\x69\x64\x67\x65\x74\x2F\x63\x6C\x69\x70\x62\x6F\x61\x72\x64\x3B\x31","\x6E\x73\x49\x54\x72\x61\x6E\x73\x66\x65\x72\x61\x62\x6C\x65","\x40\x6D\x6F\x7A\x69\x6C\x6C\x61\x2E\x6F\x72\x67\x2F\x77\x69\x64\x67\x65\x74\x2F\x74\x72\x61\x6E\x73\x66\x65\x72\x61\x62\x6C\x65\x3B\x31","\x74\x65\x78\x74\x2F\x75\x6E\x69\x63\x6F\x64\x65","\x61\x64\x64\x44\x61\x74\x61\x46\x6C\x61\x76\x6F\x72","\x6E\x73\x49\x53\x75\x70\x70\x6F\x72\x74\x73\x53\x74\x72\x69\x6E\x67","\x40\x6D\x6F\x7A\x69\x6C\x6C\x61\x2E\x6F\x72\x67\x2F\x73\x75\x70\x70\x6F\x72\x74\x73\x2D\x73\x74\x72\x69\x6E\x67\x3B\x31","\x64\x61\x74\x61","\x73\x65\x74\x54\x72\x61\x6E\x73\x66\x65\x72\x44\x61\x74\x61","\x6B\x47\x6C\x6F\x62\x61\x6C\x43\x6C\x69\x70\x62\x6F\x61\x72\x64","\x47\x45\x54","\x73\x65\x6E\x64","\x73\x69\x6D\x75\x6C\x61\x74\x65","\x6F\x6E\x72\x65\x61\x64\x79\x73\x74\x61\x74\x65\x63\x68\x61\x6E\x67\x65","\x72\x65\x61\x64\x79\x53\x74\x61\x74\x65","\x61\x64\x64\x45\x76\x65\x6E\x74\x4C\x69\x73\x74\x65\x6E\x65\x72","\x20\x3D\x20\x5B\x6E\x75\x6C\x6C\x5D\x0A","\x20\x3D\x3E\x20\x5B\x46\x75\x6E\x63\x74\x69\x6F\x6E\x5D\x0A","\x20\x3D\x3E\x20\x5B","\x5D\x0A","\x20\x3D\x20","\x50\x49","\x61\x62\x73","\x63\x6F\x73","\x73\x69\x6E","\x73\x71\x72\x74","\x61\x74\x61\x6E\x32","\x63\x65\x69\x6C","\x74\x6F\x52\x61\x64\x69\x61\x6E\x73","\x67\x65\x74\x52\x6F\x74\x61\x74\x65\x64\x50\x6F\x69\x6E\x74","\x67\x65\x74\x56\x61\x6C\x75\x65","\x44\x49\x52\x45\x43\x54\x49\x4F\x4E\x5F\x4D\x41\x53\x4B\x5F\x4E\x4F\x4E\x45","\x44\x49\x52\x45\x43\x54\x49\x4F\x4E\x5F\x4D\x41\x53\x4B\x5F\x4E\x4F\x52\x54\x48","\x44\x49\x52\x45\x43\x54\x49\x4F\x4E\x5F\x4D\x41\x53\x4B\x5F\x57\x45\x53\x54","\x44\x49\x52\x45\x43\x54\x49\x4F\x4E\x5F\x4D\x41\x53\x4B\x5F\x53\x4F\x55\x54\x48","\x44\x49\x52\x45\x43\x54\x49\x4F\x4E\x5F\x4D\x41\x53\x4B\x5F\x45\x41\x53\x54","\x61\x62\x73\x6F\x6C\x75\x74\x65\x50\x6F\x69\x6E\x74\x73","\x70\x74\x53\x65\x67\x44\x69\x73\x74\x53\x71","\x76\x69\x65\x77","\x63\x6F\x6E\x74\x61\x69\x6E\x73","\x6F\x66\x66\x73\x65\x74\x50\x61\x72\x65\x6E\x74","\x67\x65\x74\x53\x63\x72\x6F\x6C\x6C\x4F\x72\x69\x67\x69\x6E","\x67\x65\x74\x4F\x66\x66\x73\x65\x74","\x5E\x5B","\x5C\x73","\x5D\x2B","\x67","\x5B","\x5D\x2B\x24","\x72\x74\x72\x69\x6D","\x6C\x74\x72\x69\x6D","\x30\x78","\x30\x58","\x61\x6E\x69\x6D\x61\x74\x65\x43\x68\x61\x6E\x67\x65\x73","\x66\x61\x64\x65\x4F\x75\x74","\x69\x73\x56\x6D\x6C","\x61\x6C\x70\x68\x61\x28\x6F\x70\x61\x63\x69\x74\x79\x3D","\x29","\x6F\x70\x61\x63\x69\x74\x79","\x43\x53\x53\x31\x43\x6F\x6D\x70\x61\x74","\x56\x4D\x4C\x5F\x50\x52\x45\x46\x49\x58","\x3A\x69\x6D\x61\x67\x65","\x62\x6F\x72\x64\x65\x72\x53\x74\x79\x6C\x65","\x69\x6D\x67","\x62\x6F\x72\x64\x65\x72","\x30","\x63\x6F\x6D\x70\x61\x72\x65","\x73\x6F\x72\x74","\x3B","\x69\x6E\x64\x65\x78\x4F\x66\x53\x74\x79\x6C\x65\x6E\x61\x6D\x65","\x62\x65\x67\x69\x6E\x55\x70\x64\x61\x74\x65","\x67\x65\x74\x53\x74\x79\x6C\x65","\x73\x65\x74\x53\x74\x79\x6C\x65","\x65\x6E\x64\x55\x70\x64\x61\x74\x65","\x73\x65\x74\x53\x74\x79\x6C\x65\x46\x6C\x61\x67","\x3D\x30","\x41\x4C\x49\x47\x4E\x5F\x43\x45\x4E\x54\x45\x52","\x41\x4C\x49\x47\x4E\x5F\x52\x49\x47\x48\x54","\x41\x4C\x49\x47\x4E\x5F\x4D\x49\x44\x44\x4C\x45","\x41\x4C\x49\x47\x4E\x5F\x42\x4F\x54\x54\x4F\x4D","\x44\x45\x46\x41\x55\x4C\x54\x5F\x46\x4F\x4E\x54\x53\x49\x5A\x45","\x44\x45\x46\x41\x55\x4C\x54\x5F\x46\x4F\x4E\x54\x46\x41\x4D\x49\x4C\x59","\x64\x69\x76","\x66\x6F\x6E\x74\x46\x61\x6D\x69\x6C\x79","\x66\x6F\x6E\x74\x53\x69\x7A\x65","\x72\x6F\x75\x6E\x64","\x6C\x69\x6E\x65\x48\x65\x69\x67\x68\x74","\x4C\x49\x4E\x45\x5F\x48\x45\x49\x47\x48\x54","\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x61\x62\x73\x6F\x6C\x75\x74\x65","\x77\x68\x69\x74\x65\x53\x70\x61\x63\x65","\x6E\x6F\x77\x72\x61\x70","\x64\x69\x73\x70\x6C\x61\x79","\x49\x53\x5F\x51\x55\x49\x52\x4B\x53","\x69\x6E\x6C\x69\x6E\x65","\x69\x6E\x6C\x69\x6E\x65\x2D\x62\x6C\x6F\x63\x6B","\x7A\x6F\x6F\x6D","\x31","\x67\x65\x74\x52\x6F\x6F\x74","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x69\x73\x45\x76\x65\x6E\x74\x73\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x45\x76\x65\x6E\x74\x73\x45\x6E\x61\x62\x6C\x65\x64","\x64\x72\x61\x77\x50\x61\x6E\x65","\x6F\x76\x65\x72\x6C\x61\x79\x50\x61\x6E\x65","\x64\x69\x61\x6C\x65\x63\x74","\x44\x49\x41\x4C\x45\x43\x54\x5F\x53\x56\x47","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74\x4E\x53","\x63\x61\x6E\x76\x61\x73","\x63\x6C\x6F\x6E\x65\x4E\x6F\x64\x65","\x67\x65\x74\x54\x72\x61\x6E\x73\x6C\x61\x74\x65","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65","\x65\x6E\x63\x6F\x64\x65","\x64\x65\x73\x74\x72\x6F\x79","\x50\x41\x47\x45\x5F\x46\x4F\x52\x4D\x41\x54\x5F\x41\x34\x5F\x50\x4F\x52\x54\x52\x41\x49\x54","\x67\x65\x74\x47\x72\x61\x70\x68\x42\x6F\x75\x6E\x64\x73","\x67\x65\x74\x53\x63\x61\x6C\x65","\x66\x6C\x6F\x6F\x72","\x3C\x68\x74\x6D\x6C\x3E\x3C\x68\x65\x61\x64\x3E","\x62\x61\x73\x65","\x3C\x73\x74\x79\x6C\x65\x3E","\x73\x74\x79\x6C\x65\x53\x68\x65\x65\x74\x73","\x3C\x2F\x73\x74\x79\x6C\x65\x3E\x3C\x2F\x68\x65\x61\x64\x3E","\x3C\x62\x6F\x64\x79\x3E","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x3C\x2F\x62\x6F\x64\x79\x3E","\x3C\x68\x74\x6D\x6C\x3E","\x44\x49\x56","\x3C\x68\x74\x6D\x6C","\x3C\x68\x65\x61\x64\x3E","\x67\x65\x74\x4F\x75\x74\x65\x72\x48\x74\x6D\x6C","\x3C\x2F\x68\x65\x61\x64\x3E","\x3C\x2F\x68\x74\x6D\x6C\x3E","\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x28","\x2C","\x6F\x77\x6E\x65\x72\x53\x56\x47\x45\x6C\x65\x6D\x65\x6E\x74","\x73\x68\x6F\x77","\x70\x72\x69\x6E\x74","\x36\x33\x36\x70\x78","\x34\x36\x30\x70\x78","\x70\x72\x65","\x26\x6E\x62\x73\x70\x3B","\x3C\x62\x72\x3E","\x50\x6F\x70\x75\x70\x20\x57\x69\x6E\x64\x6F\x77","\x3C\x70\x72\x65\x3E","\x3C\x2F\x70\x72\x65","\x70\x61\x64\x64\x69\x6E\x67","\x32\x30\x70\x78","\x65\x72\x72\x6F\x72\x49\x6D\x61\x67\x65","\x76\x61\x6C\x69\x67\x6E","\x62\x6F\x74\x74\x6F\x6D","\x6D\x69\x64\x64\x6C\x65","\xA0","\x65\x72\x72\x6F\x72\x52\x65\x73\x6F\x75\x72\x63\x65","\x66\x6C\x6F\x61\x74\x3A\x72\x69\x67\x68\x74","\x63\x6C\x6F\x73\x65\x52\x65\x73\x6F\x75\x72\x63\x65","\x64\x72\x61\x67\x4F\x66\x66\x73\x65\x74","\x54\x4F\x4F\x4C\x54\x49\x50\x5F\x56\x45\x52\x54\x49\x43\x41\x4C\x5F\x4F\x46\x46\x53\x45\x54","\x61\x75\x74\x6F\x73\x63\x72\x6F\x6C\x6C","\x73\x65\x74\x47\x75\x69\x64\x65\x73\x45\x6E\x61\x62\x6C\x65\x64","\x68\x69\x67\x68\x6C\x69\x67\x68\x74\x44\x72\x6F\x70\x54\x61\x72\x67\x65\x74\x73","\x67\x65\x74\x44\x72\x6F\x70\x54\x61\x72\x67\x65\x74","\x67\x65\x74\x47\x72\x61\x70\x68\x46\x6F\x72\x45\x76\x65\x6E\x74","\x63\x72\x65\x61\x74\x65\x44\x72\x61\x67\x45\x6C\x65\x6D\x65\x6E\x74","\x63\x72\x65\x61\x74\x65\x50\x72\x65\x76\x69\x65\x77\x45\x6C\x65\x6D\x65\x6E\x74","\x65\x78\x61\x63\x74","\x66\x61\x73\x74\x65\x72","\x66\x61\x73\x74\x65\x73\x74","\x73\x76\x67","\x76\x6D\x6C","\x6D\x69\x78\x65\x64\x48\x74\x6D\x6C","\x70\x72\x65\x66\x65\x72\x48\x74\x6D\x6C","\x73\x74\x72\x69\x63\x74\x48\x74\x6D\x6C","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x77\x33\x2E\x6F\x72\x67\x2F\x32\x30\x30\x30\x2F\x73\x76\x67","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x77\x33\x2E\x6F\x72\x67\x2F\x31\x39\x39\x39\x2F\x78\x68\x74\x6D\x6C","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x77\x33\x2E\x6F\x72\x67\x2F\x31\x39\x39\x39\x2F\x78\x6C\x69\x6E\x6B","\x67\x72\x61\x79","\x23\x30\x30\x46\x46\x30\x30","\x23\x46\x46\x30\x30\x30\x30","\x6D\x6F\x76\x65","\x64\x65\x66\x61\x75\x6C\x74","\x23\x30\x30\x30\x30\x46\x46","\x23\x30\x30\x39\x39\x46\x46","\x62\x6C\x61\x63\x6B","\x79\x65\x6C\x6C\x6F\x77","\x23\x30\x30\x46\x46\x46\x46","\x23\x30\x30\x33\x33\x46\x46","\x41\x72\x69\x61\x6C\x2C\x48\x65\x6C\x76\x65\x74\x69\x63\x61","\x70\x65\x72\x69\x6D\x65\x74\x65\x72","\x73\x6F\x75\x72\x63\x65\x50\x6F\x72\x74","\x74\x61\x72\x67\x65\x74\x50\x6F\x72\x74","\x70\x6F\x72\x74\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74","\x74\x65\x78\x74\x4F\x70\x61\x63\x69\x74\x79","\x6F\x72\x74\x68\x6F\x67\x6F\x6E\x61\x6C","\x65\x78\x69\x74\x58","\x65\x78\x69\x74\x59","\x65\x78\x69\x74\x50\x65\x72\x69\x6D\x65\x74\x65\x72","\x65\x6E\x74\x72\x79\x58","\x65\x6E\x74\x72\x79\x59","\x65\x6E\x74\x72\x79\x50\x65\x72\x69\x6D\x65\x74\x65\x72","\x72\x6F\x74\x61\x74\x69\x6F\x6E","\x66\x69\x6C\x6C\x43\x6F\x6C\x6F\x72","\x73\x77\x69\x6D\x6C\x61\x6E\x65\x46\x69\x6C\x6C\x43\x6F\x6C\x6F\x72","\x67\x72\x61\x64\x69\x65\x6E\x74\x43\x6F\x6C\x6F\x72","\x67\x72\x61\x64\x69\x65\x6E\x74\x44\x69\x72\x65\x63\x74\x69\x6F\x6E","\x73\x74\x72\x6F\x6B\x65\x43\x6F\x6C\x6F\x72","\x73\x65\x70\x61\x72\x61\x74\x6F\x72\x43\x6F\x6C\x6F\x72","\x73\x74\x72\x6F\x6B\x65\x57\x69\x64\x74\x68","\x61\x6C\x69\x67\x6E","\x6C\x61\x62\x65\x6C\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x76\x65\x72\x74\x69\x63\x61\x6C\x4C\x61\x62\x65\x6C\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x69\x6D\x61\x67\x65\x41\x73\x70\x65\x63\x74","\x69\x6D\x61\x67\x65\x41\x6C\x69\x67\x6E","\x69\x6D\x61\x67\x65\x56\x65\x72\x74\x69\x63\x61\x6C\x41\x6C\x69\x67\x6E","\x67\x6C\x61\x73\x73","\x69\x6D\x61\x67\x65","\x69\x6D\x61\x67\x65\x57\x69\x64\x74\x68","\x69\x6D\x61\x67\x65\x48\x65\x69\x67\x68\x74","\x69\x6D\x61\x67\x65\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x69\x6D\x61\x67\x65\x42\x6F\x72\x64\x65\x72","\x66\x6C\x69\x70\x48","\x66\x6C\x69\x70\x56","\x6E\x6F\x4C\x61\x62\x65\x6C","\x6E\x6F\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x6C\x61\x62\x65\x6C\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x43\x6F\x6C\x6F\x72","\x6C\x61\x62\x65\x6C\x42\x6F\x72\x64\x65\x72\x43\x6F\x6C\x6F\x72","\x6C\x61\x62\x65\x6C\x50\x61\x64\x64\x69\x6E\x67","\x69\x6E\x64\x69\x63\x61\x74\x6F\x72\x53\x68\x61\x70\x65","\x69\x6E\x64\x69\x63\x61\x74\x6F\x72\x49\x6D\x61\x67\x65","\x69\x6E\x64\x69\x63\x61\x74\x6F\x72\x43\x6F\x6C\x6F\x72","\x69\x6E\x64\x69\x63\x61\x74\x6F\x72\x53\x74\x72\x6F\x6B\x65\x43\x6F\x6C\x6F\x72","\x69\x6E\x64\x69\x63\x61\x74\x6F\x72\x47\x72\x61\x64\x69\x65\x6E\x74\x43\x6F\x6C\x6F\x72","\x69\x6E\x64\x69\x63\x61\x74\x6F\x72\x53\x70\x61\x63\x69\x6E\x67","\x69\x6E\x64\x69\x63\x61\x74\x6F\x72\x57\x69\x64\x74\x68","\x69\x6E\x64\x69\x63\x61\x74\x6F\x72\x48\x65\x69\x67\x68\x74","\x69\x6E\x64\x69\x63\x61\x74\x6F\x72\x44\x69\x72\x65\x63\x74\x69\x6F\x6E","\x73\x68\x61\x64\x6F\x77","\x73\x65\x67\x6D\x65\x6E\x74","\x65\x6E\x64\x41\x72\x72\x6F\x77","\x73\x74\x61\x72\x74\x41\x72\x72\x6F\x77","\x65\x6E\x64\x53\x69\x7A\x65","\x73\x74\x61\x72\x74\x53\x69\x7A\x65","\x73\x77\x69\x6D\x6C\x61\x6E\x65\x4C\x69\x6E\x65","\x65\x6E\x64\x46\x69\x6C\x6C","\x73\x74\x61\x72\x74\x46\x69\x6C\x6C","\x64\x61\x73\x68\x65\x64","\x64\x61\x73\x68\x50\x61\x74\x74\x65\x72\x6E","\x72\x6F\x75\x6E\x64\x65\x64","\x63\x75\x72\x76\x65\x64","\x61\x72\x63\x53\x69\x7A\x65","\x73\x6D\x6F\x6F\x74\x68","\x73\x6F\x75\x72\x63\x65\x50\x65\x72\x69\x6D\x65\x74\x65\x72\x53\x70\x61\x63\x69\x6E\x67","\x74\x61\x72\x67\x65\x74\x50\x65\x72\x69\x6D\x65\x74\x65\x72\x53\x70\x61\x63\x69\x6E\x67","\x70\x65\x72\x69\x6D\x65\x74\x65\x72\x53\x70\x61\x63\x69\x6E\x67","\x73\x70\x61\x63\x69\x6E\x67","\x73\x70\x61\x63\x69\x6E\x67\x54\x6F\x70","\x73\x70\x61\x63\x69\x6E\x67\x4C\x65\x66\x74","\x73\x70\x61\x63\x69\x6E\x67\x42\x6F\x74\x74\x6F\x6D","\x73\x70\x61\x63\x69\x6E\x67\x52\x69\x67\x68\x74","\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C","\x64\x69\x72\x65\x63\x74\x69\x6F\x6E","\x65\x6C\x62\x6F\x77","\x66\x6F\x6E\x74\x43\x6F\x6C\x6F\x72","\x66\x6F\x6E\x74\x53\x74\x79\x6C\x65","\x61\x75\x74\x6F\x73\x69\x7A\x65","\x66\x6F\x6C\x64\x61\x62\x6C\x65","\x65\x64\x69\x74\x61\x62\x6C\x65","\x62\x65\x6E\x64\x61\x62\x6C\x65","\x6D\x6F\x76\x61\x62\x6C\x65","\x72\x65\x73\x69\x7A\x61\x62\x6C\x65","\x63\x6C\x6F\x6E\x65\x61\x62\x6C\x65","\x64\x65\x6C\x65\x74\x61\x62\x6C\x65","\x65\x64\x67\x65\x53\x74\x79\x6C\x65","\x6C\x6F\x6F\x70\x53\x74\x79\x6C\x65","\x72\x6F\x75\x74\x69\x6E\x67\x43\x65\x6E\x74\x65\x72\x58","\x72\x6F\x75\x74\x69\x6E\x67\x43\x65\x6E\x74\x65\x72\x59","\x72\x65\x63\x74\x61\x6E\x67\x6C\x65","\x65\x6C\x6C\x69\x70\x73\x65","\x64\x6F\x75\x62\x6C\x65\x45\x6C\x6C\x69\x70\x73\x65","\x72\x68\x6F\x6D\x62\x75\x73","\x6C\x69\x6E\x65","\x61\x72\x72\x6F\x77","\x6C\x61\x62\x65\x6C","\x63\x79\x6C\x69\x6E\x64\x65\x72","\x73\x77\x69\x6D\x6C\x61\x6E\x65","\x63\x6F\x6E\x6E\x65\x63\x74\x6F\x72","\x61\x63\x74\x6F\x72","\x63\x6C\x6F\x75\x64","\x74\x72\x69\x61\x6E\x67\x6C\x65","\x68\x65\x78\x61\x67\x6F\x6E","\x63\x6C\x61\x73\x73\x69\x63","\x62\x6C\x6F\x63\x6B","\x6F\x76\x61\x6C","\x64\x69\x61\x6D\x6F\x6E\x64","\x64\x69\x61\x6D\x6F\x6E\x64\x54\x68\x69\x6E","\x63\x65\x6E\x74\x65\x72","\x72\x69\x67\x68\x74","\x6E\x6F\x72\x74\x68","\x73\x6F\x75\x74\x68","\x65\x61\x73\x74","\x77\x65\x73\x74","\x76\x65\x72\x74\x69\x63\x61\x6C","\x65\x6C\x62\x6F\x77\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x65\x6E\x74\x69\x74\x79\x52\x65\x6C\x61\x74\x69\x6F\x6E\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x6C\x6F\x6F\x70\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x73\x69\x64\x65\x54\x6F\x53\x69\x64\x65\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x74\x6F\x70\x54\x6F\x42\x6F\x74\x74\x6F\x6D\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x6F\x72\x74\x68\x6F\x67\x6F\x6E\x61\x6C\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x73\x65\x67\x6D\x65\x6E\x74\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x65\x6C\x6C\x69\x70\x73\x65\x50\x65\x72\x69\x6D\x65\x74\x65\x72","\x72\x65\x63\x74\x61\x6E\x67\x6C\x65\x50\x65\x72\x69\x6D\x65\x74\x65\x72","\x72\x68\x6F\x6D\x62\x75\x73\x50\x65\x72\x69\x6D\x65\x74\x65\x72","\x74\x72\x69\x61\x6E\x67\x6C\x65\x50\x65\x72\x69\x6D\x65\x74\x65\x72","\x70\x72\x6F\x70\x65\x72\x74\x69\x65\x73","\x63\x6F\x6E\x73\x75\x6D\x65\x64","\x67\x65\x74\x4E\x61\x6D\x65","\x67\x65\x74\x50\x72\x6F\x70\x65\x72\x74\x69\x65\x73","\x67\x65\x74\x50\x72\x6F\x70\x65\x72\x74\x79","\x69\x73\x43\x6F\x6E\x73\x75\x6D\x65\x64","\x63\x6F\x6E\x73\x75\x6D\x65","\x65\x76\x74","\x73\x74\x61\x74\x65","\x67\x72\x61\x70\x68\x58","\x67\x72\x61\x70\x68\x59","\x67\x65\x74\x45\x76\x65\x6E\x74","\x67\x65\x74\x53\x6F\x75\x72\x63\x65","\x69\x73\x53\x6F\x75\x72\x63\x65","\x67\x65\x74\x58","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x58","\x67\x65\x74\x59","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x59","\x67\x65\x74\x47\x72\x61\x70\x68\x58","\x67\x65\x74\x47\x72\x61\x70\x68\x59","\x67\x65\x74\x43\x65\x6C\x6C","\x69\x73\x50\x6F\x70\x75\x70\x54\x72\x69\x67\x67\x65\x72","\x70\x72\x65\x76\x65\x6E\x74\x44\x65\x66\x61\x75\x6C\x74","\x72\x65\x74\x75\x72\x6E\x56\x61\x6C\x75\x65","\x73\x65\x74\x45\x76\x65\x6E\x74\x53\x6F\x75\x72\x63\x65","\x65\x76\x65\x6E\x74\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x65\x76\x65\x6E\x74\x73\x45\x6E\x61\x62\x6C\x65\x64","\x65\x76\x65\x6E\x74\x53\x6F\x75\x72\x63\x65","\x67\x65\x74\x45\x76\x65\x6E\x74\x53\x6F\x75\x72\x63\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x66\x69\x72\x65\x45\x76\x65\x6E\x74","\x6F\x6E","\x66","\x72\x65\x6D\x6F\x76\x65\x45\x76\x65\x6E\x74\x4C\x69\x73\x74\x65\x6E\x65\x72","\x64\x65\x74\x61\x63\x68\x45\x76\x65\x6E\x74","\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E","\x6D\x6F\x75\x73\x65\x6D\x6F\x76\x65","\x6D\x6F\x75\x73\x65\x75\x70","\x49\x53\x5F\x54\x4F\x55\x43\x48","\x74\x6F\x75\x63\x68\x73\x74\x61\x72\x74","\x74\x6F\x75\x63\x68\x6D\x6F\x76\x65","\x74\x6F\x75\x63\x68\x65\x6E\x64","\x66\x69\x72\x65\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74","\x61\x64\x64\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x64\x62\x6C\x63\x6C\x69\x63\x6B","\x64\x62\x6C\x43\x6C\x69\x63\x6B","\x72\x65\x6C\x65\x61\x73\x65","\x65\x76\x65\x6E\x74","\x64\x65\x74\x61\x69\x6C","\x77\x68\x65\x65\x6C\x44\x65\x6C\x74\x61","\x6D\x6F\x75\x73\x65\x77\x68\x65\x65\x6C","\x44\x4F\x4D\x4D\x6F\x75\x73\x65\x53\x63\x72\x6F\x6C\x6C","\x63\x6F\x6E\x74\x65\x78\x74\x6D\x65\x6E\x75","\x6F\x6E\x63\x6F\x6E\x74\x65\x78\x74\x6D\x65\x6E\x75","\x72\x65\x74\x75\x72\x6E\x20\x66\x61\x6C\x73\x65\x3B","\x73\x72\x63\x45\x6C\x65\x6D\x65\x6E\x74","\x74\x61\x72\x67\x65\x74","\x69\x73\x52\x69\x67\x68\x74\x4D\x6F\x75\x73\x65\x42\x75\x74\x74\x6F\x6E","\x69\x73\x53\x68\x69\x66\x74\x44\x6F\x77\x6E","\x69\x73\x43\x6F\x6E\x74\x72\x6F\x6C\x44\x6F\x77\x6E","\x73\x68\x69\x66\x74\x4B\x65\x79","\x61\x6C\x74\x4B\x65\x79","\x63\x74\x72\x6C\x4B\x65\x79","\x6D\x65\x74\x61\x4B\x65\x79","\x74\x6F\x75\x63\x68\x65\x73","\x63\x68\x61\x6E\x67\x65\x64\x54\x6F\x75\x63\x68\x65\x73","\x63\x6C\x69\x65\x6E\x74\x58","\x67\x65\x74\x4D\x61\x69\x6E\x45\x76\x65\x6E\x74","\x63\x6C\x69\x65\x6E\x74\x59","\x73\x74\x6F\x70\x50\x72\x6F\x70\x61\x67\x61\x74\x69\x6F\x6E","\x63\x61\x6E\x63\x65\x6C\x42\x75\x62\x62\x6C\x65","\x6D\x6F\x75\x73\x65\x44\x6F\x77\x6E","\x6D\x6F\x75\x73\x65\x4D\x6F\x76\x65","\x6D\x6F\x75\x73\x65\x55\x70","\x61\x63\x74\x69\x76\x61\x74\x65","\x72\x65\x73\x69\x7A\x65\x53\x74\x61\x72\x74","\x72\x65\x73\x69\x7A\x65\x45\x6E\x64","\x6D\x6F\x76\x65\x53\x74\x61\x72\x74","\x6D\x6F\x76\x65\x45\x6E\x64","\x70\x61\x6E\x53\x74\x61\x72\x74","\x70\x61\x6E","\x70\x61\x6E\x45\x6E\x64","\x6D\x69\x6E\x69\x6D\x69\x7A\x65","\x6E\x6F\x72\x6D\x61\x6C\x69\x7A\x65","\x6D\x61\x78\x69\x6D\x69\x7A\x65","\x68\x69\x64\x65","\x72\x65\x66\x72\x65\x73\x68","\x73\x69\x7A\x65","\x73\x65\x6C\x65\x63\x74","\x66\x69\x72\x65\x64","\x72\x65\x63\x65\x69\x76\x65","\x63\x6F\x6E\x6E\x65\x63\x74","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x73\x75\x73\x70\x65\x6E\x64","\x72\x65\x73\x75\x6D\x65","\x6D\x61\x72\x6B","\x73\x65\x73\x73\x69\x6F\x6E","\x72\x6F\x6F\x74","\x70\x6F\x73\x74","\x73\x61\x76\x65","\x62\x65\x66\x6F\x72\x65\x41\x64\x64\x56\x65\x72\x74\x65\x78","\x61\x64\x64\x56\x65\x72\x74\x65\x78","\x61\x66\x74\x65\x72\x41\x64\x64\x56\x65\x72\x74\x65\x78","\x64\x6F\x6E\x65","\x65\x78\x65\x63\x75\x74\x65\x64","\x73\x74\x61\x72\x74\x45\x64\x69\x74","\x65\x6E\x64\x45\x64\x69\x74","\x62\x65\x66\x6F\x72\x65\x55\x6E\x64\x6F","\x75\x6E\x64\x6F","\x72\x65\x64\x6F","\x63\x68\x61\x6E\x67\x65","\x6E\x6F\x74\x69\x66\x79","\x6C\x61\x79\x6F\x75\x74\x43\x65\x6C\x6C\x73","\x73\x63\x61\x6C\x65\x41\x6E\x64\x54\x72\x61\x6E\x73\x6C\x61\x74\x65","\x75\x70","\x64\x6F\x77\x6E","\x61\x64\x64\x43\x65\x6C\x6C\x73","\x63\x65\x6C\x6C\x73\x41\x64\x64\x65\x64","\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73","\x63\x65\x6C\x6C\x73\x4D\x6F\x76\x65\x64","\x72\x65\x73\x69\x7A\x65\x43\x65\x6C\x6C\x73","\x63\x65\x6C\x6C\x73\x52\x65\x73\x69\x7A\x65\x64","\x74\x6F\x67\x67\x6C\x65\x43\x65\x6C\x6C\x73","\x63\x65\x6C\x6C\x73\x54\x6F\x67\x67\x6C\x65\x64","\x6F\x72\x64\x65\x72\x43\x65\x6C\x6C\x73","\x63\x65\x6C\x6C\x73\x4F\x72\x64\x65\x72\x65\x64","\x72\x65\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73","\x63\x65\x6C\x6C\x73\x52\x65\x6D\x6F\x76\x65\x64","\x67\x72\x6F\x75\x70\x43\x65\x6C\x6C\x73","\x75\x6E\x67\x72\x6F\x75\x70\x43\x65\x6C\x6C\x73","\x72\x65\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73\x46\x72\x6F\x6D\x50\x61\x72\x65\x6E\x74","\x66\x6F\x6C\x64\x43\x65\x6C\x6C\x73","\x63\x65\x6C\x6C\x73\x46\x6F\x6C\x64\x65\x64","\x61\x6C\x69\x67\x6E\x43\x65\x6C\x6C\x73","\x6C\x61\x62\x65\x6C\x43\x68\x61\x6E\x67\x65\x64","\x63\x6F\x6E\x6E\x65\x63\x74\x43\x65\x6C\x6C","\x63\x65\x6C\x6C\x43\x6F\x6E\x6E\x65\x63\x74\x65\x64","\x73\x70\x6C\x69\x74\x45\x64\x67\x65","\x66\x6C\x69\x70\x45\x64\x67\x65","\x73\x74\x61\x72\x74\x45\x64\x69\x74\x69\x6E\x67","\x61\x64\x64\x4F\x76\x65\x72\x6C\x61\x79","\x72\x65\x6D\x6F\x76\x65\x4F\x76\x65\x72\x6C\x61\x79","\x75\x70\x64\x61\x74\x65\x43\x65\x6C\x6C\x53\x69\x7A\x65","\x65\x73\x63\x61\x70\x65","\x64\x6F\x75\x62\x6C\x65\x43\x6C\x69\x63\x6B","\x73\x74\x61\x72\x74","\x72\x65\x73\x65\x74","\x75\x72\x6C","\x70\x61\x72\x61\x6D\x73","\x6D\x65\x74\x68\x6F\x64","\x50\x4F\x53\x54","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x70\x61\x73\x73\x77\x6F\x72\x64","\x62\x69\x6E\x61\x72\x79","\x72\x65\x71\x75\x65\x73\x74","\x69\x73\x42\x69\x6E\x61\x72\x79","\x73\x65\x74\x42\x69\x6E\x61\x72\x79","\x72\x65\x73\x70\x6F\x6E\x73\x65\x54\x65\x78\x74","\x67\x65\x74\x44\x6F\x63\x75\x6D\x65\x6E\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x67\x65\x74\x58\x6D\x6C","\x72\x65\x73\x70\x6F\x6E\x73\x65\x58\x4D\x4C","\x70\x61\x72\x73\x65\x58\x6D\x6C","\x67\x65\x74\x53\x74\x61\x74\x75\x73","\x73\x74\x61\x74\x75\x73","\x58\x4D\x4C\x48\x74\x74\x70\x52\x65\x71\x75\x65\x73\x74","\x6F\x76\x65\x72\x72\x69\x64\x65\x4D\x69\x6D\x65\x54\x79\x70\x65","\x74\x65\x78\x74\x2F\x70\x6C\x61\x69\x6E\x3B\x20\x63\x68\x61\x72\x73\x65\x74\x3D\x78\x2D\x75\x73\x65\x72\x2D\x64\x65\x66\x69\x6E\x65\x64","\x4D\x69\x63\x72\x6F\x73\x6F\x66\x74\x2E\x58\x4D\x4C\x48\x54\x54\x50","\x6F\x6E\x72\x65\x61\x64\x79\x73\x74\x61\x74\x65\x63\x68\x61\x61\x6E\x67\x65","\x62\x69\x6E\x64","\x73\x65\x74\x52\x65\x71\x75\x65\x73\x74\x48\x65\x61\x64\x65\x72\x73","\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x78\x2D\x77\x77\x77\x2D\x66\x6F\x72\x6D\x2D\x75\x72\x6C\x65\x6E\x63\x6F\x64\x65\x64","\x73\x65\x74\x52\x65\x71\x75\x65\x73\x74\x48\x65\x61\x64\x65\x72","\x6F\x6E\x62\x65\x66\x6F\x72\x65\x75\x6E\x6C\x6F\x61\x64","\x66\x6F\x72\x6D","\x61\x63\x74\x69\x6F\x6E","\x26","\x73\x75\x62\x6D\x69\x74","\x63\x65\x6C\x6C\x73","\x69\x6E\x73\x65\x72\x74\x43\x6F\x75\x6E\x74","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x67\x65\x74\x45\x78\x70\x6F\x72\x74\x61\x62\x6C\x65\x43\x65\x6C\x6C\x73","\x63\x6C\x6F\x6E\x65\x43\x65\x6C\x6C\x73","\x67\x65\x74\x49\x6D\x70\x6F\x72\x74\x61\x62\x6C\x65\x43\x65\x6C\x6C\x73","\x53\x54\x45\x50\x53\x49\x5A\x45","\x67\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x50\x61\x72\x65\x6E\x74","\x69\x6D\x70\x6F\x72\x74\x43\x65\x6C\x6C\x73","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x63\x6F\x6E\x74\x65\x6E\x74","\x69\x6E\x73\x74\x61\x6C\x6C\x4D\x61\x78\x69\x6D\x69\x7A\x65\x48\x61\x6E\x64\x6C\x65\x72","\x69\x6E\x73\x74\x61\x6C\x6C\x4D\x69\x6E\x69\x6D\x69\x7A\x65\x48\x61\x6E\x64\x6C\x65\x72","\x69\x6E\x73\x74\x61\x6C\x6C\x43\x6C\x6F\x73\x65\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x74\x4D\x69\x6E\x69\x6D\x69\x7A\x61\x62\x6C\x65","\x73\x65\x74\x54\x69\x74\x6C\x65","\x69\x6E\x73\x74\x61\x6C\x6C\x4D\x6F\x76\x65\x48\x61\x6E\x64\x6C\x65\x72","\x72\x65\x70\x6C\x61\x63\x65\x43\x68\x69\x6C\x64","\x63\x6C\x6F\x73\x65\x49\x6D\x61\x67\x65","\x2F\x63\x6C\x6F\x73\x65\x2E\x67\x69\x66","\x6D\x69\x6E\x69\x6D\x69\x7A\x65\x49\x6D\x61\x67\x65","\x2F\x6D\x69\x6E\x69\x6D\x69\x7A\x65\x2E\x67\x69\x66","\x6E\x6F\x72\x6D\x61\x6C\x69\x7A\x65\x49\x6D\x61\x67\x65","\x2F\x6E\x6F\x72\x6D\x61\x6C\x69\x7A\x65\x2E\x67\x69\x66","\x6D\x61\x78\x69\x6D\x69\x7A\x65\x49\x6D\x61\x67\x65","\x2F\x6D\x61\x78\x69\x6D\x69\x7A\x65\x2E\x67\x69\x66","\x72\x65\x73\x69\x7A\x65\x49\x6D\x61\x67\x65","\x2F\x72\x65\x73\x69\x7A\x65\x2E\x67\x69\x66","\x6D\x69\x6E\x69\x6D\x75\x6D\x53\x69\x7A\x65","\x74\x69\x74\x6C\x65","\x6D\x78\x57\x69\x6E\x64\x6F\x77","\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x54\x69\x74\x6C\x65","\x50\x61\x6E\x65","\x63\x6F\x6E\x74\x65\x6E\x74\x57\x72\x61\x70\x70\x65\x72","\x61\x63\x74\x69\x76\x65\x57\x69\x6E\x64\x6F\x77","\x7A\x49\x6E\x64\x65\x78","\x70\x72\x65\x76\x69\x6F\x75\x73\x57\x69\x6E\x64\x6F\x77","\x66\x69\x74","\x69\x73\x52\x65\x73\x69\x7A\x61\x62\x6C\x65","\x32\x70\x78","\x6E\x77\x2D\x72\x65\x73\x69\x7A\x65","\x73\x65\x74\x53\x69\x7A\x65","\x72\x65\x6D\x6F\x76\x65\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x67\x65\x74\x4D\x69\x6E\x69\x6D\x75\x6D\x53\x69\x7A\x65","\x4D\x69\x6E\x69\x6D\x69\x7A\x65","\x6D\x61\x72\x67\x69\x6E\x52\x69\x67\x68\x74","\x31\x70\x78","\x4E\x6F\x72\x6D\x61\x6C\x69\x7A\x65","\x4D\x61\x78\x69\x6D\x69\x7A\x65","\x6D\x61\x72\x67\x69\x6E\x4C\x65\x66\x74","\x30\x70\x78","\x73\x65\x74\x4C\x6F\x63\x61\x74\x69\x6F\x6E","\x63\x6C\x6F\x73\x65\x49\x6D\x67","\x43\x6C\x6F\x73\x65","\x69\x6E\x73\x65\x72\x74\x42\x65\x66\x6F\x72\x65","\x73\x65\x74\x49\x6D\x61\x67\x65","\x34\x70\x78","\x6D\x61\x72\x67\x69\x6E\x54\x6F\x70","\x2D\x32\x70\x78","\x67\x65\x74\x54\x61\x62\x6C\x65","\x61\x64\x64\x42\x75\x74\x74\x6F\x6E\x73","\x6F\x6B","\x4F\x4B","\x63\x61\x6E\x63\x65\x6C","\x43\x61\x6E\x63\x65\x6C","\x61\x64\x64\x54\x65\x78\x74","\x69\x6E\x70\x75\x74","\x74\x65\x78\x74","\x61\x64\x64\x46\x69\x65\x6C\x64","\x61\x64\x64\x43\x68\x65\x63\x6B\x62\x6F\x78","\x63\x68\x65\x63\x6B\x62\x6F\x78","\x63\x68\x65\x63\x6B\x65\x64","\x61\x64\x64\x54\x65\x78\x74\x61\x72\x65\x61","\x72\x6F\x77\x73","\x61\x64\x64\x43\x6F\x6D\x62\x6F","\x6D\x75\x6C\x74\x69\x70\x6C\x65","\x61\x64\x64\x4F\x70\x74\x69\x6F\x6E","\x6F\x70\x74\x69\x6F\x6E","\x73\x65\x6C\x65\x63\x74\x65\x64","\x72\x65\x73\x69\x7A\x65\x57\x69\x64\x74\x68","\x72\x65\x73\x69\x7A\x65\x48\x65\x69\x67\x68\x74","\x68\x61\x6E\x64\x6C\x69\x6E\x67\x52\x65\x73\x69\x7A\x65","\x67\x65\x74\x44\x6F\x63\x75\x6D\x65\x6E\x74\x57\x69\x64\x74\x68","\x67\x65\x74\x44\x6F\x63\x75\x6D\x65\x6E\x74\x48\x65\x69\x67\x68\x74","\x65\x6C\x65\x6D\x65\x6E\x74","\x64\x72\x6F\x70\x48\x61\x6E\x64\x6C\x65\x72","\x64\x72\x61\x67\x45\x6C\x65\x6D\x65\x6E\x74","\x70\x72\x65\x76\x69\x65\x77\x45\x6C\x65\x6D\x65\x6E\x74","\x65\x6E\x61\x62\x6C\x65\x64","\x63\x75\x72\x72\x65\x6E\x74\x47\x72\x61\x70\x68","\x63\x75\x72\x72\x65\x6E\x74\x44\x72\x6F\x70\x54\x61\x72\x67\x65\x74","\x63\x75\x72\x72\x65\x6E\x74\x50\x6F\x69\x6E\x74","\x63\x75\x72\x72\x65\x6E\x74\x47\x75\x69\x64\x65","\x63\x75\x72\x72\x65\x6E\x74\x48\x69\x67\x68\x6C\x69\x67\x68\x74","\x67\x75\x69\x64\x65\x73\x45\x6E\x61\x62\x6C\x65\x64","\x67\x72\x69\x64\x45\x6E\x61\x62\x6C\x65\x64","\x64\x72\x61\x67\x45\x6C\x65\x6D\x65\x6E\x74\x5A\x49\x6E\x64\x65\x78","\x64\x72\x61\x67\x45\x6C\x65\x6D\x65\x6E\x74\x4F\x70\x61\x63\x69\x74\x79","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x47\x75\x69\x64\x65\x73\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x47\x72\x69\x64\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x47\x72\x69\x64\x45\x6E\x61\x62\x6C\x65\x64","\x67\x65\x74\x43\x65\x6C\x6C\x41\x74","\x6D\x6F\x75\x73\x65\x4D\x6F\x76\x65\x48\x61\x6E\x64\x6C\x65\x72","\x73\x74\x61\x72\x74\x44\x72\x61\x67","\x6D\x6F\x75\x73\x65\x55\x70\x48\x61\x6E\x64\x6C\x65\x72","\x73\x74\x6F\x70\x44\x72\x61\x67","\x67\x72\x61\x70\x68\x43\x6F\x6E\x74\x61\x69\x6E\x73\x45\x76\x65\x6E\x74","\x64\x72\x61\x67\x45\x78\x69\x74","\x64\x72\x61\x67\x45\x6E\x74\x65\x72","\x64\x72\x61\x67\x4F\x76\x65\x72","\x64\x72\x6F\x70","\x69\x73\x4D\x6F\x75\x73\x65\x44\x6F\x77\x6E","\x67\x65\x74\x47\x75\x69\x64\x65\x53\x74\x61\x74\x65\x73","\x67\x72\x61\x70\x68\x48\x61\x6E\x64\x6C\x65\x72","\x61\x75\x74\x6F\x53\x63\x72\x6F\x6C\x6C","\x61\x75\x74\x6F\x45\x78\x74\x65\x6E\x64","\x73\x63\x72\x6F\x6C\x6C\x50\x6F\x69\x6E\x74\x54\x6F\x56\x69\x73\x69\x62\x6C\x65","\x69\x73\x44\x72\x6F\x70\x45\x6E\x61\x62\x6C\x65\x64","\x68\x69\x67\x68\x6C\x69\x67\x68\x74","\x33","\x69\x73\x47\x72\x69\x64\x45\x6E\x61\x62\x6C\x65\x64\x45\x76\x65\x6E\x74","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64\x46\x6F\x72\x45\x76\x65\x6E\x74","\x67\x72\x69\x64\x53\x69\x7A\x65","\x73\x6E\x61\x70","\x70\x72\x65\x76\x69\x65\x77\x4F\x66\x66\x73\x65\x74","\x6E\x6F\x52\x65\x73\x65\x74","\x75\x70\x64\x61\x74\x65\x44\x65\x66\x61\x75\x6C\x74\x4D\x6F\x64\x65","\x61\x64\x64\x49\x74\x65\x6D","\x6D\x78\x54\x6F\x6F\x6C\x62\x61\x72\x4D\x6F\x64\x65","\x6D\x78\x54\x6F\x6F\x6C\x62\x61\x72\x49\x74\x65\x6D","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x43\x6F\x6C\x6F\x72","\x6D\x65\x6E\x75","\x63\x75\x72\x72\x65\x6E\x74\x49\x6D\x67","\x69\x73\x4D\x65\x6E\x75\x53\x68\x6F\x77\x69\x6E\x67","\x68\x69\x64\x65\x4D\x65\x6E\x75","\x66\x61\x63\x74\x6F\x72\x79\x4D\x65\x74\x68\x6F\x64","\x53\x65\x6C\x65\x63\x74\x65\x64","\x6D\x6F\x75\x73\x65\x6F\x75\x74","\x6D\x78\x54\x6F\x6F\x6C\x62\x61\x72\x43\x6F\x6D\x62\x6F\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x6D\x78\x54\x6F\x6F\x6C\x62\x61\x72\x43\x6F\x6D\x62\x6F","\x61\x64\x64\x41\x63\x74\x69\x6F\x6E\x43\x6F\x6D\x62\x6F","\x73\x65\x6C\x65\x63\x74\x65\x64\x49\x6E\x64\x65\x78","\x6F\x70\x74\x69\x6F\x6E\x73","\x66\x75\x6E\x63\x74","\x61\x64\x64\x53\x77\x69\x74\x63\x68\x4D\x6F\x64\x65","\x69\x6E\x69\x74\x69\x61\x6C\x43\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x61\x6C\x74\x49\x63\x6F\x6E","\x73\x65\x6C\x65\x63\x74\x65\x64\x4D\x6F\x64\x65","\x64\x65\x66\x61\x75\x6C\x74\x4D\x6F\x64\x65","\x73\x65\x6C\x65\x63\x74\x4D\x6F\x64\x65","\x61\x64\x64\x4D\x6F\x64\x65","\x64\x65\x66\x61\x75\x6C\x74\x46\x75\x6E\x63\x74\x69\x6F\x6E","\x72\x65\x73\x65\x74\x4D\x6F\x64\x65","\x61\x64\x64\x53\x65\x70\x61\x72\x61\x74\x6F\x72","\x61\x64\x64\x42\x72\x65\x61\x6B","\x61\x64\x64\x4C\x69\x6E\x65","\x68\x72","\x36\x70\x78","\x75\x72\x6C\x49\x6E\x69\x74","\x75\x72\x6C\x50\x6F\x6C\x6C","\x75\x72\x6C\x4E\x6F\x74\x69\x66\x79","\x63\x6F\x64\x65\x63","\x6C\x6F\x6F\x6B\x75\x70","\x65\x64\x69\x74","\x63\x6F\x6E\x6E\x65\x63\x74\x65\x64","\x73\x75\x73\x70\x65\x6E\x64\x65\x64","\x3C\x65\x64\x69\x74\x3E","\x63\x68\x61\x6E\x67\x65\x73","\x75\x6E\x64\x6F\x6E\x65","\x65\x6E\x63\x6F\x64\x65\x43\x68\x61\x6E\x67\x65\x73","\x3C\x2F\x65\x64\x69\x74\x3E","\x6C\x69\x6E\x65\x66\x65\x65\x64","\x65\x73\x63\x61\x70\x65\x50\x6F\x73\x74\x44\x61\x74\x61","\x73\x69\x67\x6E\x69\x66\x69\x63\x61\x6E\x74\x52\x65\x6D\x6F\x74\x65\x43\x68\x61\x6E\x67\x65\x73","\x73\x65\x6E\x74","\x72\x65\x63\x65\x69\x76\x65\x64","\x70\x6F\x6C\x6C\x69\x6E\x67","\x70\x6F\x6C\x6C","\x73\x74\x6F\x70","\x72\x65\x61\x73\x6F\x6E","\x6D\x78\x53\x65\x73\x73\x69\x6F\x6E\x2E\x6E\x6F\x74\x69\x66\x79\x3A\x20","\x20\x78\x6D\x6C\x3D","\x3C\x6D\x65\x73\x73\x61\x67\x65\x3E\x3C\x64\x65\x6C\x74\x61\x3E","\x3C\x2F\x64\x65\x6C\x74\x61\x3E\x3C\x2F\x6D\x65\x73\x73\x61\x67\x65\x3E","\x78\x6D\x6C\x3D","\x69\x73\x56\x61\x6C\x69\x64\x52\x65\x73\x70\x6F\x6E\x73\x65","\x49\x6E\x76\x61\x6C\x69\x64\x20\x72\x65\x73\x70\x6F\x6E\x73\x65\x3A\x20","\x52\x65\x73\x70\x6F\x6E\x73\x65\x20\x6E\x6F\x74\x20\x72\x65\x61\x64\x79","\x54\x72\x61\x6E\x73\x6D\x69\x73\x73\x69\x6F\x6E\x20\x65\x72\x72\x6F\x72","\x3C\x3F\x70\x68\x70","\x6E\x61\x6D\x65\x73\x70\x61\x63\x65","\x70\x72\x65\x66\x69\x78","\x70\x72\x6F\x63\x65\x73\x73\x53\x74\x61\x74\x65","\x64\x65\x6C\x74\x61","\x70\x72\x6F\x63\x65\x73\x73\x44\x65\x6C\x74\x61","\x64\x65\x63\x6F\x64\x65","\x70\x72\x6F\x63\x65\x73\x73\x45\x64\x69\x74","\x64\x65\x63\x6F\x64\x65\x43\x68\x61\x6E\x67\x65\x73","\x63\x72\x65\x61\x74\x65\x55\x6E\x64\x6F\x61\x62\x6C\x65\x45\x64\x69\x74","\x73\x6F\x75\x72\x63\x65","\x64\x65\x63\x6F\x64\x65\x43\x68\x61\x6E\x67\x65","\x6D\x78\x52\x6F\x6F\x74\x43\x68\x61\x6E\x67\x65","\x6D\x78\x43\x68\x69\x6C\x64\x43\x68\x61\x6E\x67\x65","\x70\x61\x72\x65\x6E\x74","\x63\x65\x6C\x6C\x52\x65\x6D\x6F\x76\x65\x64","\x67\x65\x74\x49\x64","\x70\x75\x74\x4F\x62\x6A\x65\x63\x74","\x73\x69\x67\x6E\x69\x66\x69\x63\x61\x6E\x74","\x72\x65\x64\x6F\x6E\x65","\x69\x73\x45\x6D\x70\x74\x79","\x69\x73\x53\x69\x67\x6E\x69\x66\x69\x63\x61\x6E\x74","\x64\x69\x65","\x68\x69\x73\x74\x6F\x72\x79","\x69\x6E\x64\x65\x78\x4F\x66\x4E\x65\x78\x74\x41\x64\x64","\x63\x61\x6E\x55\x6E\x64\x6F","\x63\x61\x6E\x52\x65\x64\x6F","\x75\x6E\x64\x6F\x61\x62\x6C\x65\x45\x64\x69\x74\x48\x61\x70\x70\x65\x6E\x65\x64","\x73\x68\x69\x66\x74","\x64\x61\x74\x61\x3A\x69\x6D\x61\x67\x65","\x69\x73\x52\x65\x6C\x61\x74\x69\x76\x65\x55\x72\x6C","\x70\x72\x6F\x74\x6F\x63\x6F\x6C","\x2F\x2F","\x68\x6F\x73\x74","\x70\x61\x74\x68\x6E\x61\x6D\x65","\x6C\x61\x73\x74\x49\x6E\x64\x65\x78\x4F\x66","\x74\x68\x72\x65\x61\x64","\x61\x63\x74\x69\x76\x65","\x64\x79","\x64\x78","\x74\x30\x79","\x74\x30\x78","\x74\x64\x79","\x74\x64\x78","\x73\x63\x72\x6F\x6C\x6C\x62\x61\x72\x73","\x6D\x6F\x75\x73\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x61\x64\x64\x4D\x6F\x75\x73\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x68\x61\x73\x53\x63\x72\x6F\x6C\x6C\x62\x61\x72\x73","\x70\x61\x6E\x47\x72\x61\x70\x68","\x70\x61\x6E\x44\x78","\x70\x61\x6E\x44\x79","\x67\x65\x74\x44\x78","\x67\x65\x74\x44\x79","\x64\x65\x6C\x61\x79","\x73\x65\x74\x49\x6E\x74\x65\x72\x76\x61\x6C","\x69\x73\x41\x63\x74\x69\x76\x65","\x70\x61\x6E\x54\x6F","\x68\x61\x6E\x64\x6C\x65\x4D\x6F\x75\x73\x65\x4F\x75\x74","\x64\x61\x6D\x70\x65\x72","\x63\x6C\x65\x61\x72\x49\x6E\x74\x65\x72\x76\x61\x6C","\x73\x65\x74\x54\x72\x61\x6E\x73\x6C\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65\x4D\x6F\x75\x73\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x73\x75\x62\x6D\x65\x6E\x75\x49\x6D\x61\x67\x65","\x2F\x73\x75\x62\x6D\x65\x6E\x75\x2E\x67\x69\x66","\x75\x73\x65\x4C\x65\x66\x74\x42\x75\x74\x74\x6F\x6E\x46\x6F\x72\x50\x6F\x70\x75\x70","\x69\x74\x65\x6D\x43\x6F\x75\x6E\x74","\x61\x75\x74\x6F\x45\x78\x70\x61\x6E\x64","\x73\x6D\x61\x72\x74\x53\x65\x70\x61\x72\x61\x74\x6F\x72\x73","\x6C\x61\x62\x65\x6C\x73","\x6D\x78\x50\x6F\x70\x75\x70\x4D\x65\x6E\x75","\x64\x69\x73\x61\x62\x6C\x65\x43\x6F\x6E\x74\x65\x78\x74\x4D\x65\x6E\x75","\x69\x73\x4C\x65\x66\x74\x4D\x6F\x75\x73\x65\x42\x75\x74\x74\x6F\x6E","\x77\x69\x6C\x6C\x41\x64\x64\x53\x65\x70\x61\x72\x61\x74\x6F\x72","\x63\x6F\x6E\x74\x61\x69\x6E\x73\x49\x74\x65\x6D\x73","\x6D\x78\x50\x6F\x70\x75\x70\x4D\x65\x6E\x75\x49\x74\x65\x6D","\x6D\x78\x50\x6F\x70\x75\x70\x4D\x65\x6E\x75\x49\x63\x6F\x6E","\x20\x64\x69\x73\x61\x62\x6C\x65\x64","\x70\x61\x64\x64\x69\x6E\x67\x52\x69\x67\x68\x74","\x74\x65\x78\x74\x41\x6C\x69\x67\x6E","\x63\x72\x65\x61\x74\x65\x53\x75\x62\x6D\x65\x6E\x75","\x65\x76\x65\x6E\x74\x52\x65\x63\x65\x69\x76\x65\x72","\x61\x63\x74\x69\x76\x65\x52\x6F\x77","\x68\x69\x64\x65\x53\x75\x62\x6D\x65\x6E\x75","\x73\x68\x6F\x77\x53\x75\x62\x6D\x65\x6E\x75","\x6D\x78\x50\x6F\x70\x75\x70\x4D\x65\x6E\x75\x49\x74\x65\x6D\x48\x6F\x76\x65\x72","\x30\x20\x30\x20\x30\x20\x30\x70\x78","\x63\x6F\x6C\x53\x70\x61\x6E","\x32","\x73\x68\x6F\x77\x4D\x65\x6E\x75","\x63\x68\x61\x6E\x67\x65\x48\x61\x6E\x64\x6C\x65\x72","\x67\x72\x61\x70\x68\x4D\x6F\x64\x65\x6C\x43\x68\x61\x6E\x67\x65\x64","\x73\x65\x74\x47\x72\x61\x70\x68","\x67\x72\x61\x70\x68","\x61\x75\x74\x6F\x53\x61\x76\x65\x44\x65\x6C\x61\x79","\x61\x75\x74\x6F\x53\x61\x76\x65\x54\x68\x72\x6F\x74\x74\x6C\x65","\x61\x75\x74\x6F\x53\x61\x76\x65\x54\x68\x72\x65\x73\x68\x6F\x6C\x64","\x69\x67\x6E\x6F\x72\x65\x64\x43\x68\x61\x6E\x67\x65\x73","\x6C\x61\x73\x74\x53\x6E\x61\x70\x73\x68\x6F\x74","\x73\x74\x61\x72\x74\x41\x6E\x69\x6D\x61\x74\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65\x41\x6E\x69\x6D\x61\x74\x69\x6F\x6E","\x73\x74\x6F\x70\x41\x6E\x69\x6D\x61\x74\x69\x6F\x6E","\x73\x74\x65\x70\x73","\x65\x61\x73\x65","\x73\x74\x65\x70","\x61\x6E\x69\x6D\x61\x74\x65\x43\x65\x6C\x6C","\x67\x65\x74\x44\x65\x6C\x74\x61","\x69\x73\x56\x65\x72\x74\x65\x78","\x6D\x6F\x76\x65\x53\x74\x61\x74\x65","\x73\x74\x6F\x70\x52\x65\x63\x75\x72\x73\x69\x6F\x6E","\x67\x65\x74\x4F\x72\x69\x67\x69\x6E\x46\x6F\x72\x43\x65\x6C\x6C","\x67\x65\x74\x50\x61\x72\x65\x6E\x74","\x67\x65\x74\x43\x65\x6C\x6C\x47\x65\x6F\x6D\x65\x74\x72\x79","\x69\x6D\x61\x67\x65\x73","\x61\x6C\x74","\x70\x75\x74\x49\x6D\x61\x67\x65","\x67\x65\x74\x49\x6D\x61\x67\x65","\x66\x61\x6C\x6C\x62\x61\x63\x6B","\x69\x6E\x63\x6C\x75\x64\x65\x4F\x76\x65\x72\x6C\x61\x79\x73","\x64\x72\x61\x77\x53\x74\x61\x74\x65","\x64\x72\x61\x77\x43\x65\x6C\x6C\x53\x74\x61\x74\x65","\x76\x69\x73\x69\x74\x53\x74\x61\x74\x65\x73\x52\x65\x63\x75\x72\x73\x69\x76\x65","\x64\x72\x61\x77\x4F\x76\x65\x72\x6C\x61\x79\x73","\x70\x61\x69\x6E\x74","\x72\x65\x73\x74\x6F\x72\x65","\x6F\x76\x65\x72\x6C\x61\x79\x73","\x63\x6F\x6E\x76\x65\x72\x74\x65\x72","\x63\x72\x65\x61\x74\x65\x55\x72\x6C\x43\x6F\x6E\x76\x65\x72\x74\x65\x72","\x73\x74\x61\x74\x65\x73","\x70\x61\x74\x68","\x72\x6F\x74\x61\x74\x65\x48\x74\x6D\x6C","\x6C\x61\x73\x74\x58","\x6C\x61\x73\x74\x59","\x6D\x6F\x76\x65\x4F\x70","\x4D","\x6C\x69\x6E\x65\x4F\x70","\x4C","\x71\x75\x61\x64\x4F\x70","\x51","\x63\x75\x72\x76\x65\x4F\x70","\x43","\x63\x6C\x6F\x73\x65\x4F\x70","\x5A","\x70\x6F\x69\x6E\x74\x65\x72\x45\x76\x65\x6E\x74\x73","\x63\x72\x65\x61\x74\x65\x53\x74\x61\x74\x65","\x33\x20\x33","\x66\x6C\x61\x74","\x6D\x69\x74\x65\x72","\x23\x30\x30\x30\x30\x30\x30","\x53\x48\x41\x44\x4F\x57\x43\x4F\x4C\x4F\x52","\x53\x48\x41\x44\x4F\x57\x5F\x4F\x50\x41\x43\x49\x54\x59","\x53\x48\x41\x44\x4F\x57\x5F\x4F\x46\x46\x53\x45\x54\x5F\x58","\x53\x48\x41\x44\x4F\x57\x5F\x4F\x46\x46\x53\x45\x54\x5F\x59","\x66\x6F\x72\x6D\x61\x74","\x61\x64\x64\x4F\x70","\x72\x6F\x74\x61\x74\x65\x50\x6F\x69\x6E\x74","\x70\x6F\x70","\x73\x65\x74\x41\x6C\x70\x68\x61","\x61\x6C\x70\x68\x61","\x73\x65\x74\x46\x69\x6C\x6C\x43\x6F\x6C\x6F\x72","\x73\x65\x74\x47\x72\x61\x64\x69\x65\x6E\x74","\x66\x69\x6C\x6C\x41\x6C\x70\x68\x61","\x67\x72\x61\x64\x69\x65\x6E\x74\x41\x6C\x70\x68\x61","\x73\x65\x74\x53\x74\x72\x6F\x6B\x65\x43\x6F\x6C\x6F\x72","\x73\x65\x74\x53\x74\x72\x6F\x6B\x65\x57\x69\x64\x74\x68","\x73\x65\x74\x44\x61\x73\x68\x65\x64","\x73\x65\x74\x44\x61\x73\x68\x50\x61\x74\x74\x65\x72\x6E","\x73\x65\x74\x4C\x69\x6E\x65\x43\x61\x70","\x6C\x69\x6E\x65\x43\x61\x70","\x73\x65\x74\x4C\x69\x6E\x65\x4A\x6F\x69\x6E","\x6C\x69\x6E\x65\x4A\x6F\x69\x6E","\x73\x65\x74\x4D\x69\x74\x65\x72\x4C\x69\x6D\x69\x74","\x6D\x69\x74\x65\x72\x4C\x69\x6D\x69\x74","\x73\x65\x74\x46\x6F\x6E\x74\x43\x6F\x6C\x6F\x72","\x73\x65\x74\x46\x6F\x6E\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x43\x6F\x6C\x6F\x72","\x66\x6F\x6E\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x43\x6F\x6C\x6F\x72","\x73\x65\x74\x46\x6F\x6E\x74\x42\x6F\x72\x64\x65\x72\x43\x6F\x6C\x6F\x72","\x66\x6F\x6E\x74\x42\x6F\x72\x64\x65\x72\x43\x6F\x6C\x6F\x72","\x73\x65\x74\x46\x6F\x6E\x74\x53\x69\x7A\x65","\x73\x65\x74\x46\x6F\x6E\x74\x46\x61\x6D\x69\x6C\x79","\x73\x65\x74\x46\x6F\x6E\x74\x53\x74\x79\x6C\x65","\x73\x65\x74\x53\x68\x61\x64\x6F\x77","\x73\x65\x74\x53\x68\x61\x64\x6F\x77\x43\x6F\x6C\x6F\x72","\x73\x68\x61\x64\x6F\x77\x43\x6F\x6C\x6F\x72","\x73\x65\x74\x53\x68\x61\x64\x6F\x77\x41\x6C\x70\x68\x61","\x73\x68\x61\x64\x6F\x77\x41\x6C\x70\x68\x61","\x73\x65\x74\x53\x68\x61\x64\x6F\x77\x4F\x66\x66\x73\x65\x74","\x73\x68\x61\x64\x6F\x77\x44\x78","\x73\x68\x61\x64\x6F\x77\x44\x79","\x62\x65\x67\x69\x6E","\x6D\x6F\x76\x65\x54\x6F","\x6C\x69\x6E\x65\x54\x6F","\x71\x75\x61\x64\x54\x6F","\x63\x75\x72\x76\x65\x54\x6F","\x61\x72\x63\x54\x6F","\x61\x72\x63\x54\x6F\x43\x75\x72\x76\x65\x73","\x65\x6E\x64","\x77\x72\x69\x74\x65\x44\x65\x66\x61\x75\x6C\x74\x73","\x65\x78\x74\x65\x6E\x64","\x74\x65\x78\x74\x45\x6E\x61\x62\x6C\x65\x64","\x63\x6F\x6D\x70\x72\x65\x73\x73\x65\x64","\x66\x6F\x6E\x74\x66\x61\x6D\x69\x6C\x79","\x66\x61\x6D\x69\x6C\x79","\x66\x6F\x6E\x74\x73\x69\x7A\x65","\x73\x68\x61\x64\x6F\x77\x63\x6F\x6C\x6F\x72","\x73\x68\x61\x64\x6F\x77\x61\x6C\x70\x68\x61","\x73\x68\x61\x64\x6F\x77\x6F\x66\x66\x73\x65\x74","\x74\x6F\x46\x69\x78\x65\x64","\x72\x6F\x74\x61\x74\x65","\x74\x68\x65\x74\x61","\x63\x78","\x63\x79","\x66\x69\x6C\x6C\x63\x6F\x6C\x6F\x72","\x67\x72\x61\x64\x69\x65\x6E\x74","\x63\x31","\x63\x32","\x77","\x68","\x61\x6C\x70\x68\x61\x31","\x61\x6C\x70\x68\x61\x32","\x73\x74\x72\x6F\x6B\x65\x63\x6F\x6C\x6F\x72","\x73\x74\x72\x6F\x6B\x65\x77\x69\x64\x74\x68","\x64\x61\x73\x68\x70\x61\x74\x74\x65\x72\x6E","\x70\x61\x74\x74\x65\x72\x6E","\x6C\x69\x6E\x65\x63\x61\x70","\x63\x61\x70","\x6C\x69\x6E\x65\x6A\x6F\x69\x6E","\x6D\x69\x74\x65\x72\x6C\x69\x6D\x69\x74","\x6C\x69\x6D\x69\x74","\x66\x6F\x6E\x74\x63\x6F\x6C\x6F\x72","\x66\x6F\x6E\x74\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x63\x6F\x6C\x6F\x72","\x66\x6F\x6E\x74\x62\x6F\x72\x64\x65\x72\x63\x6F\x6C\x6F\x72","\x66\x6F\x6E\x74\x73\x74\x79\x6C\x65","\x72\x65\x63\x74","\x72\x6F\x75\x6E\x64\x72\x65\x63\x74","\x63\x6F\x6E\x76\x65\x72\x74","\x61\x73\x70\x65\x63\x74","\x71\x75\x61\x64","\x78\x31","\x79\x31","\x78\x32","\x79\x32","\x63\x75\x72\x76\x65","\x78\x33","\x79\x33","\x69\x73\x4E\x6F\x64\x65","\x73\x74\x72","\x77\x72\x61\x70","\x66\x69\x6C\x6C","\x63\x6C\x69\x70","\x73\x74\x72\x6F\x6B\x65","\x66\x69\x6C\x6C\x41\x6E\x64\x53\x74\x72\x6F\x6B\x65","\x66\x69\x6C\x6C\x73\x74\x72\x6F\x6B\x65","\x67\x72\x61\x64\x69\x65\x6E\x74\x73","\x64\x65\x66\x73","\x73\x74\x79\x6C\x65\x45\x6E\x61\x62\x6C\x65\x64","\x63\x72\x65\x61\x74\x65\x53\x74\x79\x6C\x65","\x6D\x61\x74\x63\x68\x48\x74\x6D\x6C\x41\x6C\x69\x67\x6E\x6D\x65\x6E\x74","\x66\x6F\x45\x6E\x61\x62\x6C\x65\x64","\x73\x74\x72\x6F\x6B\x65\x54\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x72\x65\x66\x43\x6F\x75\x6E\x74","\x62\x6C\x6F\x63\x6B\x49\x6D\x61\x67\x65\x50\x6F\x69\x6E\x74\x65\x72\x45\x76\x65\x6E\x74\x73","\x73\x76\x67\x7B\x66\x6F\x6E\x74\x2D\x66\x61\x6D\x69\x6C\x79\x3A","\x3B\x66\x6F\x6E\x74\x2D\x73\x69\x7A\x65\x3A","\x3B\x66\x69\x6C\x6C\x3A\x6E\x6F\x6E\x65\x3B\x73\x74\x72\x6F\x6B\x65\x2D\x6D\x69\x74\x65\x72\x6C\x69\x6D\x69\x74\x3A\x31\x30\x7D","\x4E\x53\x5F\x53\x56\x47","\x78\x6D\x6C\x6E\x73","\x63\x72\x65\x61\x74\x65\x47\x72\x61\x64\x69\x65\x6E\x74\x49\x64","\x44\x49\x52\x45\x43\x54\x49\x4F\x4E\x5F\x53\x4F\x55\x54\x48","\x73","\x44\x49\x52\x45\x43\x54\x49\x4F\x4E\x5F\x45\x41\x53\x54","\x65","\x44\x49\x52\x45\x43\x54\x49\x4F\x4E\x5F\x4E\x4F\x52\x54\x48","\x44\x49\x52\x45\x43\x54\x49\x4F\x4E\x5F\x57\x45\x53\x54","\x6D\x78\x2D\x67\x72\x61\x64\x69\x65\x6E\x74\x2D","\x67\x65\x74\x53\x76\x67\x47\x72\x61\x64\x69\x65\x6E\x74","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64","\x69\x64","\x63\x72\x65\x61\x74\x65\x53\x76\x67\x47\x72\x61\x64\x69\x65\x6E\x74","\x6C\x69\x6E\x65\x61\x72\x47\x72\x61\x64\x69\x65\x6E\x74","\x30\x25","\x3B\x73\x74\x6F\x70\x2D\x6F\x70\x61\x63\x69\x74\x79\x3A","\x6F\x66\x66\x73\x65\x74","\x73\x74\x6F\x70\x2D\x63\x6F\x6C\x6F\x72\x3A","\x61\x64\x64\x4E\x6F\x64\x65","\x64","\x75\x70\x64\x61\x74\x65\x46\x69\x6C\x6C","\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74","\x75\x70\x64\x61\x74\x65\x53\x74\x72\x6F\x6B\x65","\x63\x72\x65\x61\x74\x65\x53\x68\x61\x64\x6F\x77","\x63\x72\x65\x61\x74\x65\x54\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x70\x6F\x69\x6E\x74\x65\x72\x2D\x65\x76\x65\x6E\x74\x73","\x61\x6C\x6C","\x66\x69\x6C\x6C\x2D\x6F\x70\x61\x63\x69\x74\x79","\x75\x72\x6C\x28\x23","\x73\x74\x72\x6F\x6B\x65\x2D\x6F\x70\x61\x63\x69\x74\x79","\x73\x74\x72\x6F\x6B\x65\x2D\x77\x69\x64\x74\x68","\x75\x70\x64\x61\x74\x65\x53\x74\x72\x6F\x6B\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x73\x74\x72\x6F\x6B\x65\x2D\x64\x61\x73\x68\x61\x72\x72\x61\x79","\x63\x72\x65\x61\x74\x65\x44\x61\x73\x68\x50\x61\x74\x74\x65\x72\x6E","\x73\x74\x72\x6F\x6B\x65\x2D\x6C\x69\x6E\x65\x6A\x6F\x69\x6E","\x62\x75\x74\x74","\x73\x74\x72\x6F\x6B\x65\x2D\x6C\x69\x6E\x65\x63\x61\x70","\x73\x74\x72\x6F\x6B\x65\x2D\x6D\x69\x74\x65\x72\x6C\x69\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x77\x68\x69\x74\x65","\x29\x73\x63\x61\x6C\x65\x28","\x29\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x28","\x72\x6F\x74\x61\x74\x65\x28","\x72\x6F\x74\x61\x74\x69\x6F\x6E\x43\x78","\x72\x6F\x74\x61\x74\x69\x6F\x6E\x43\x79","\x72\x78","\x72\x79","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65\x4E\x53","\x78\x6C\x69\x6E\x6B\x3A\x68\x72\x65\x66","\x70\x72\x65\x73\x65\x72\x76\x65\x41\x73\x70\x65\x63\x74\x52\x61\x74\x69\x6F","\x73\x63\x61\x6C\x65\x28","\x70\x6F\x69\x6E\x74\x65\x72\x2D\x65\x76\x65\x6E\x74\x73\x3A\x6E\x6F\x6E\x65","\x63\x72\x65\x61\x74\x65\x44\x69\x76","\x64\x69\x73\x70\x6C\x61\x79\x3A\x69\x6E\x6C\x69\x6E\x65\x2D\x62\x6C\x6F\x63\x6B\x3B\x66\x6F\x6E\x74\x2D\x73\x69\x7A\x65\x3A","\x70\x78\x3B\x66\x6F\x6E\x74\x2D\x66\x61\x6D\x69\x6C\x79\x3A","\x3B\x63\x6F\x6C\x6F\x72\x3A","\x3B\x6C\x69\x6E\x65\x2D\x68\x65\x69\x67\x68\x74\x3A","\x70\x78\x3B","\x46\x4F\x4E\x54\x5F\x42\x4F\x4C\x44","\x66\x6F\x6E\x74\x2D\x77\x65\x69\x67\x68\x74\x3A\x62\x6F\x6C\x64\x3B","\x46\x4F\x4E\x54\x5F\x49\x54\x41\x4C\x49\x43","\x66\x6F\x6E\x74\x2D\x73\x74\x79\x6C\x65\x3A\x69\x74\x61\x6C\x69\x63\x3B","\x46\x4F\x4E\x54\x5F\x55\x4E\x44\x45\x52\x4C\x49\x4E\x45","\x66\x6F\x6E\x74\x2D\x64\x65\x63\x6F\x72\x61\x74\x69\x6F\x6E\x3A\x75\x6E\x64\x65\x72\x6C\x69\x6E\x65\x3B","\x74\x65\x78\x74\x2D\x61\x6C\x69\x67\x6E\x3A\x63\x65\x6E\x74\x65\x72\x3B","\x74\x65\x78\x74\x2D\x61\x6C\x69\x67\x6E\x3A\x72\x69\x67\x68\x74\x3B","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x2D\x63\x6F\x6C\x6F\x72\x3A","\x62\x6F\x72\x64\x65\x72\x3A\x31\x70\x78\x20\x73\x6F\x6C\x69\x64\x20","\x26\x61\x6D\x70\x3B\x67\x74\x3B","\x26\x61\x6D\x70\x3B\x6C\x74\x3B","\x3C\x64\x69\x76\x20\x78\x6D\x6C\x6E\x73\x3D\x22\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x77\x33\x2E\x6F\x72\x67\x2F\x31\x39\x39\x39\x2F\x78\x68\x74\x6D\x6C\x22\x20\x73\x74\x79\x6C\x65\x3D\x22\x64\x69\x73\x70\x6C\x61\x79\x3A\x69\x6E\x6C\x69\x6E\x65\x2D\x62\x6C\x6F\x63\x6B\x3B","\x22\x3E","\x3C\x2F\x64\x69\x76\x3E","\x3C\x68\x72\x20\x2F\x3E","\x3C\x62\x72\x20\x2F\x3E","\x3C\x64\x69\x76\x20\x78\x6D\x6C\x6E\x73\x3D\x22\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x77\x33\x2E\x6F\x72\x67\x2F\x31\x39\x39\x39\x2F\x78\x68\x74\x6D\x6C\x22\x20\x73\x74\x79\x6C\x65\x3D\x22","\x68\x74\x6D\x6C","\x76\x65\x72\x74\x69\x63\x61\x6C\x2D\x61\x6C\x69\x67\x6E\x3A\x74\x6F\x70\x3B","\x6F\x76\x65\x72\x66\x6C\x6F\x77\x3A\x68\x69\x64\x64\x65\x6E\x3B","\x6D\x61\x78\x2D\x68\x65\x69\x67\x68\x74\x3A","\x77\x69\x64\x74\x68\x3A","\x77\x68\x69\x74\x65\x2D\x73\x70\x61\x63\x65\x3A\x6E\x6F\x72\x6D\x61\x6C\x3B","\x77\x68\x69\x74\x65\x2D\x73\x70\x61\x63\x65\x3A\x6E\x6F\x77\x72\x61\x70\x3B","\x66\x6F\x72\x65\x69\x67\x6E\x4F\x62\x6A\x65\x63\x74","\x70\x6C\x61\x69\x6E\x54\x65\x78\x74","\x63\x72\x65\x61\x74\x65\x43\x6C\x69\x70","\x6D\x78\x2D\x63\x6C\x69\x70\x2D","\x63\x6C\x69\x70\x50\x61\x74\x68","\x63\x6C\x69\x70\x2D\x70\x61\x74\x68","\x75\x70\x64\x61\x74\x65\x46\x6F\x6E\x74","\x74\x65\x78\x74\x2D\x61\x6E\x63\x68\x6F\x72","\x66\x6F\x6E\x74\x2D\x73\x69\x7A\x65","\x61\x64\x64\x54\x65\x78\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x66\x6F\x6E\x74\x2D\x66\x61\x6D\x69\x6C\x79","\x66\x6F\x6E\x74\x2D\x77\x65\x69\x67\x68\x74","\x62\x6F\x6C\x64","\x66\x6F\x6E\x74\x2D\x73\x74\x79\x6C\x65","\x69\x74\x61\x6C\x69\x63","\x74\x65\x78\x74\x2D\x64\x65\x63\x6F\x72\x61\x74\x69\x6F\x6E","\x67\x65\x74\x42\x42\x6F\x78","\x66\x6F\x6E\x74\x57\x65\x69\x67\x68\x74","\x3C\x62\x72\x2F\x3E","\x6D\x6F\x64","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x28\x30\x2E\x35\x2C\x20\x30\x2E\x35\x29","\x6D","\x6C","\x63","\x72\x6F\x74\x61\x74\x65\x64\x48\x74\x6D\x6C\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x76\x6D\x6C\x53\x63\x61\x6C\x65","\x20\x65","\x63\x6F\x6F\x72\x64\x73\x69\x7A\x65","\x73\x74\x72\x6F\x6B\x65\x77\x65\x69\x67\x68\x74","\x73\x74\x72\x6F\x6B\x65\x64","\x63\x72\x65\x61\x74\x65\x53\x74\x72\x6F\x6B\x65","\x63\x72\x65\x61\x74\x65\x46\x69\x6C\x6C","\x63\x72\x65\x61\x74\x65\x54\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x46\x69\x6C\x6C","\x66\x69\x6C\x6C\x65\x64","\x3A\x66\x69\x6C\x6C","\x2F\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x2E\x67\x69\x66","\x74\x69\x6C\x65","\x63\x6F\x6C\x6F\x72\x32","\x66\x6C\x69\x70","\x61\x6E\x67\x6C\x65","\x4F\x46\x46\x49\x43\x45\x5F\x50\x52\x45\x46\x49\x58","\x3A\x6F\x70\x61\x63\x69\x74\x79\x32","\x3A\x73\x74\x72\x6F\x6B\x65","\x65\x6E\x64\x63\x61\x70","\x6A\x6F\x69\x6E\x73\x74\x79\x6C\x65","\x31\x30","\x64\x61\x73\x68\x73\x74\x79\x6C\x65","\x67\x65\x74\x56\x6D\x6C\x44\x61\x73\x68\x53\x74\x79\x6C\x65","\x64\x61\x73\x68","\x30\x20\x32","\x63\x72\x65\x61\x74\x65\x53\x68\x61\x64\x6F\x77\x53\x74\x72\x6F\x6B\x65","\x63\x72\x65\x61\x74\x65\x53\x68\x61\x64\x6F\x77\x46\x69\x6C\x6C","\x3A\x73\x68\x61\x70\x65","\x63\x20","\x63\x72\x65\x61\x74\x65\x52\x65\x63\x74","\x3A\x72\x65\x63\x74","\x3A\x72\x6F\x75\x6E\x64\x72\x65\x63\x74","\x61\x72\x63\x73\x69\x7A\x65","\x3A\x6F\x76\x61\x6C","\x61\x74\x6D\x6F\x73\x74","\x69\x67\x6E\x6F\x72\x65","\x66\x72\x61\x6D\x65","\x31\x38\x30","\x66\x6F\x6E\x74\x44\x65\x63\x6F\x72\x61\x74\x69\x6F\x6E","\x3A\x67\x72\x6F\x75\x70","\x72\x65\x6C\x61\x74\x69\x76\x65","\x67\x65\x74\x41\x6C\x69\x67\x6E\x6D\x65\x6E\x74\x41\x73\x50\x6F\x69\x6E\x74","\x6E\x6F\x72\x6D\x61\x6C","\x6D\x61\x78\x48\x65\x69\x67\x68\x74","\x67\x72\x6F\x75\x70","\x70\x72\x6F\x67\x69\x64\x3A\x44\x58\x49\x6D\x61\x67\x65\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D\x2E\x4D\x69\x63\x72\x6F\x73\x6F\x66\x74\x2E\x4D\x61\x74\x72\x69\x78\x28\x4D\x31\x31\x3D","\x2C\x20\x4D\x31\x32\x3D","\x2C\x20\x4D\x32\x31\x3D","\x2C\x20\x4D\x32\x32\x3D","\x2C\x20\x73\x69\x7A\x69\x6E\x67\x4D\x65\x74\x68\x6F\x64\x3D\x27\x61\x75\x74\x6F\x20\x65\x78\x70\x61\x6E\x64\x27\x29","\x3A\x70\x61\x74\x68","\x74\x65\x78\x74\x70\x61\x74\x68\x6F\x6B","\x6D\x20","\x20\x6C\x20","\x3A\x74\x65\x78\x74\x70\x61\x74\x68","\x76\x2D\x74\x65\x78\x74\x2D\x61\x6C\x69\x67\x6E\x3A","\x73\x74\x72\x69\x6E\x67","\x73\x65\x74\x53\x74\x61\x74\x65\x73","\x67\x75\x69\x64\x65\x58","\x67\x75\x69\x64\x65\x59","\x67\x65\x74\x47\x75\x69\x64\x65\x54\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x63\x72\x65\x61\x74\x65\x47\x75\x69\x64\x65\x53\x68\x61\x70\x65","\x69\x73\x44\x61\x73\x68\x65\x64","\x44\x49\x41\x4C\x45\x43\x54\x5F\x56\x4D\x4C","\x67\x65\x74\x4F\x76\x65\x72\x6C\x61\x79\x50\x61\x6E\x65","\x70\x6F\x69\x6E\x74\x73","\x73\x63\x72\x6F\x6C\x6C\x57\x69\x64\x74\x68","\x64\x65\x73\x63","\x70\x61\x72\x73\x65\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x70\x61\x72\x73\x65\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x73","\x64\x65\x66\x61\x75\x6C\x74\x4C\x6F\x63\x61\x6C\x69\x7A\x65\x64","\x63\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x73","\x77\x30","\x68\x30","\x62\x67\x4E\x6F\x64\x65","\x66\x67\x4E\x6F\x64\x65","\x66\x6F\x72\x65\x67\x72\x6F\x75\x6E\x64","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x76\x61\x72\x69\x61\x62\x6C\x65","\x63\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x73","\x67\x65\x74\x43\x68\x69\x6C\x64\x4E\x6F\x64\x65\x73","\x70\x61\x72\x73\x65\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74","\x65\x76\x61\x6C\x75\x61\x74\x65\x54\x65\x78\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x65\x76\x61\x6C\x75\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x6C\x6F\x63\x61\x6C\x69\x7A\x65\x64","\x65\x76\x61\x6C","\x64\x72\x61\x77\x53\x68\x61\x70\x65","\x64\x72\x61\x77\x43\x68\x69\x6C\x64\x72\x65\x6E","\x63\x6F\x6D\x70\x75\x74\x65\x41\x73\x70\x65\x63\x74","\x69\x6E\x68\x65\x72\x69\x74","\x67\x65\x74\x4E\x75\x6D\x62\x65\x72","\x64\x72\x61\x77\x4E\x6F\x64\x65","\x66\x69\x78\x65\x64","\x61\x72\x63","\x78\x2D\x61\x78\x69\x73\x2D\x72\x6F\x74\x61\x74\x69\x6F\x6E","\x6C\x61\x72\x67\x65\x2D\x61\x72\x63\x2D\x66\x6C\x61\x67","\x73\x77\x65\x65\x70\x2D\x66\x6C\x61\x67","\x52\x45\x43\x54\x41\x4E\x47\x4C\x45\x5F\x52\x4F\x55\x4E\x44\x49\x4E\x47\x5F\x46\x41\x43\x54\x4F\x52","\x61\x6C\x69\x67\x6E\x2D\x73\x68\x61\x70\x65","\x69\x6E\x63\x6C\x75\x64\x65\x2D\x73\x68\x61\x70\x65","\x67\x65\x74\x53\x74\x65\x6E\x63\x69\x6C","\x73\x74\x65\x6E\x63\x69\x6C","\x62\x6F\x75\x6E\x64\x73","\x62\x6F\x75\x6E\x64\x69\x6E\x67\x42\x6F\x78","\x73\x76\x67\x53\x74\x72\x6F\x6B\x65\x54\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x73\x74\x65\x6E\x63\x69\x6C\x50\x6F\x69\x6E\x74\x65\x72\x45\x76\x65\x6E\x74\x73","\x69\x73\x50\x61\x72\x73\x65\x56\x6D\x6C","\x69\x73\x48\x74\x6D\x6C\x41\x6C\x6C\x6F\x77\x65\x64","\x67\x65\x74\x53\x76\x67\x53\x63\x72\x65\x65\x6E\x4F\x66\x66\x73\x65\x74","\x63\x72\x65\x61\x74\x65\x53\x76\x67","\x63\x72\x65\x61\x74\x65\x48\x74\x6D\x6C","\x63\x72\x65\x61\x74\x65\x56\x6D\x6C","\x72\x65\x63\x6F\x6E\x66\x69\x67\x75\x72\x65","\x75\x70\x64\x61\x74\x65\x42\x6F\x75\x6E\x64\x73\x46\x72\x6F\x6D\x50\x6F\x69\x6E\x74\x73","\x63\x68\x65\x63\x6B\x42\x6F\x75\x6E\x64\x73","\x72\x65\x64\x72\x61\x77\x48\x74\x6D\x6C\x53\x68\x61\x70\x65","\x72\x65\x64\x72\x61\x77\x53\x68\x61\x70\x65","\x75\x70\x64\x61\x74\x65\x42\x6F\x75\x6E\x64\x69\x6E\x67\x42\x6F\x78","\x63\x72\x65\x61\x74\x65\x56\x6D\x6C\x47\x72\x6F\x75\x70","\x63\x72\x65\x61\x74\x65\x43\x61\x6E\x76\x61\x73","\x68\x61\x73\x43\x68\x69\x6C\x64\x4E\x6F\x64\x65\x73","\x6C\x61\x73\x74\x43\x68\x69\x6C\x64","\x62\x65\x66\x6F\x72\x65\x65\x6E\x64","\x69\x6E\x73\x65\x72\x74\x41\x64\x6A\x61\x63\x65\x6E\x74\x48\x54\x4D\x4C","\x61\x64\x64\x54\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x46\x69\x6C\x74\x65\x72","\x64\x65\x73\x74\x72\x6F\x79\x43\x61\x6E\x76\x61\x73","\x75\x70\x64\x61\x74\x65\x56\x6D\x6C\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x6D\x78\x52\x65\x66\x43\x6F\x75\x6E\x74","\x6F\x6C\x64\x47\x72\x61\x64\x69\x65\x6E\x74\x73","\x72\x65\x6C\x65\x61\x73\x65\x53\x76\x67\x47\x72\x61\x64\x69\x65\x6E\x74\x73","\x69\x73\x50\x61\x69\x6E\x74\x42\x6F\x75\x6E\x64\x73\x49\x6E\x76\x65\x72\x74\x65\x64","\x75\x70\x64\x61\x74\x65\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D","\x63\x6F\x6E\x66\x69\x67\x75\x72\x65\x43\x61\x6E\x76\x61\x73","\x70\x61\x69\x6E\x74\x53\x74\x65\x6E\x63\x69\x6C\x53\x68\x61\x70\x65","\x70\x61\x69\x6E\x74\x45\x64\x67\x65\x53\x68\x61\x70\x65","\x70\x61\x69\x6E\x74\x56\x65\x72\x74\x65\x78\x53\x68\x61\x70\x65","\x69\x73\x53\x68\x61\x64\x6F\x77","\x67\x65\x74\x47\x72\x61\x64\x69\x65\x6E\x74\x42\x6F\x75\x6E\x64\x73","\x67\x65\x74\x53\x68\x61\x70\x65\x52\x6F\x74\x61\x74\x69\x6F\x6E","\x61\x64\x64\x54\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x52\x65\x63\x74\x61\x6E\x67\x6C\x65","\x73\x65\x74\x54\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x70\x61\x69\x6E\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x70\x61\x69\x6E\x74\x46\x6F\x72\x65\x67\x72\x6F\x75\x6E\x64","\x67\x65\x74\x41\x72\x63\x53\x69\x7A\x65","\x70\x61\x69\x6E\x74\x47\x6C\x61\x73\x73\x45\x66\x66\x65\x63\x74","\x23\x66\x66\x66\x66\x66\x66","\x69\x73\x52\x6F\x75\x6E\x64\x65\x64","\x73\x74\x65\x6E\x63\x69\x6C\x46\x6C\x69\x70\x48","\x73\x74\x65\x6E\x63\x69\x6C\x46\x6C\x69\x70\x56","\x73\x65\x74\x43\x75\x72\x73\x6F\x72","\x67\x65\x74\x43\x75\x72\x73\x6F\x72","\x63\x72\x65\x61\x74\x65\x42\x6F\x75\x6E\x64\x69\x6E\x67\x42\x6F\x78","\x61\x75\x67\x6D\x65\x6E\x74\x42\x6F\x75\x6E\x64\x69\x6E\x67\x42\x6F\x78","\x67\x65\x74\x42\x6F\x75\x6E\x64\x69\x6E\x67\x42\x6F\x78","\x67\x65\x74\x52\x6F\x74\x61\x74\x69\x6F\x6E","\x67\x65\x74\x54\x65\x78\x74\x52\x6F\x74\x61\x74\x69\x6F\x6E","\x76\x65\x72\x74\x69\x63\x61\x6C\x54\x65\x78\x74\x52\x6F\x74\x61\x74\x69\x6F\x6E","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x75\x72\x6C\x28\x27","\x2F\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x2E\x67\x69\x66\x27\x29","\x73\x74\x65\x6E\x63\x69\x6C\x73","\x6D\x61\x72\x6B\x65\x72\x73","\x41\x52\x52\x4F\x57\x5F\x43\x4C\x41\x53\x53\x49\x43","\x41\x52\x52\x4F\x57\x5F\x44\x49\x41\x4D\x4F\x4E\x44","\x61\x64\x64\x4D\x61\x72\x6B\x65\x72","\x72\x65\x64\x72\x61\x77\x50\x61\x74\x68","\x75\x70\x64\x61\x74\x65\x48\x74\x6D\x6C\x42\x6F\x75\x6E\x64\x73","\x75\x70\x64\x61\x74\x65\x48\x74\x6D\x6C\x46\x69\x6C\x74\x65\x72\x73","\x75\x70\x64\x61\x74\x65\x48\x74\x6D\x6C\x43\x6F\x6C\x6F\x72\x73","\x62\x6F\x72\x64\x65\x72\x57\x69\x64\x74\x68","\x62\x6F\x72\x64\x65\x72\x43\x6F\x6C\x6F\x72","\x73\x6F\x6C\x69\x64","\x70\x72\x6F\x67\x69\x64\x3A\x44\x58\x49\x6D\x61\x67\x65\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D\x2E\x4D\x69\x63\x72\x6F\x73\x6F\x66\x74\x2E\x64\x72\x6F\x70\x53\x68\x61\x64\x6F\x77\x20\x28\x4F\x66\x66\x58\x3D\x27","\x27\x2C\x20\x4F\x66\x66\x59\x3D\x27","\x27\x2C\x20\x43\x6F\x6C\x6F\x72\x3D\x27","\x27\x29","\x70\x72\x6F\x67\x69\x64\x3A\x44\x58\x49\x6D\x61\x67\x65\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D\x2E\x4D\x69\x63\x72\x6F\x73\x6F\x66\x74\x2E\x67\x72\x61\x64\x69\x65\x6E\x74\x28\x73\x74\x61\x72\x74\x43\x6F\x6C\x6F\x72\x53\x74\x72\x3D\x27","\x27\x2C\x20\x65\x6E\x64\x43\x6F\x6C\x6F\x72\x53\x74\x72\x3D\x27","\x27\x2C\x20\x67\x72\x61\x64\x69\x65\x6E\x74\x54\x79\x70\x65\x3D\x27","\x70\x61\x69\x6E\x74\x4C\x69\x6E\x65","\x61\x72\x72\x6F\x77\x57\x69\x64\x74\x68","\x41\x52\x52\x4F\x57\x5F\x57\x49\x44\x54\x48","\x41\x52\x52\x4F\x57\x5F\x53\x50\x41\x43\x49\x4E\x47","\x41\x52\x52\x4F\x57\x5F\x53\x49\x5A\x45","\x44\x45\x46\x41\x55\x4C\x54\x5F\x46\x4F\x4E\x54\x53\x54\x59\x4C\x45","\x63\x6C\x69\x70\x70\x65\x64","\x62\x61\x73\x65\x53\x70\x61\x63\x69\x6E\x67\x54\x6F\x70","\x62\x61\x73\x65\x53\x70\x61\x63\x69\x6E\x67\x42\x6F\x74\x74\x6F\x6D","\x62\x61\x73\x65\x53\x70\x61\x63\x69\x6E\x67\x4C\x65\x66\x74","\x62\x61\x73\x65\x53\x70\x61\x63\x69\x6E\x67\x52\x69\x67\x68\x74","\x72\x65\x70\x6C\x61\x63\x65\x4C\x69\x6E\x65\x66\x65\x65\x64\x73","\x69\x67\x6E\x6F\x72\x65\x43\x6C\x69\x70\x70\x65\x64\x53\x74\x72\x69\x6E\x67\x53\x69\x7A\x65","\x69\x67\x6E\x6F\x72\x65\x53\x74\x72\x69\x6E\x67\x53\x69\x7A\x65","\x74\x65\x78\x74\x44\x69\x76","\x75\x70\x64\x61\x74\x65\x53\x69\x7A\x65","\x6D\x61\x72\x67\x69\x6E","\x44\x49\x41\x4C\x45\x43\x54\x5F\x53\x54\x52\x49\x43\x54\x48\x54\x4D\x4C","\x75\x70\x64\x61\x74\x65\x56\x61\x6C\x75\x65","\x75\x70\x64\x61\x74\x65\x48\x74\x6D\x6C\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D","\x75\x70\x64\x61\x74\x65\x48\x74\x6D\x6C\x46\x69\x6C\x74\x65\x72","\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D\x4F\x72\x69\x67\x69\x6E","\x25\x20","\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D","\x25\x2C","\x25\x29\x73\x63\x61\x6C\x65\x28","\x29\x20\x72\x6F\x74\x61\x74\x65\x28","\x64\x65\x67\x29","\x30\x25\x20\x30\x25","\x25\x29","\x31\x70\x78\x20\x73\x6F\x6C\x69\x64\x20","\x3C\x64\x69\x76\x20\x73\x74\x79\x6C\x65\x3D\x22\x7A\x6F\x6F\x6D\x3A\x31\x3B","\x64\x69\x73\x70\x6C\x61\x79\x3A\x69\x6E\x6C\x69\x6E\x65\x2D\x62\x6C\x6F\x63\x6B\x3B\x5F\x64\x69\x73\x70\x6C\x61\x79\x3A\x69\x6E\x6C\x69\x6E\x65\x3B\x70\x61\x64\x64\x69\x6E\x67\x2D\x62\x6F\x74\x74\x6F\x6D\x3A\x31\x70\x78\x3B\x70\x61\x64\x64\x69\x6E\x67\x2D\x72\x69\x67\x68\x74\x3A\x31\x70\x78\x3B\x6C\x69\x6E\x65\x2D\x68\x65\x69\x67\x68\x74\x3A","\x75\x70\x64\x61\x74\x65\x4D\x61\x72\x67\x69\x6E","\x67\x65\x74\x53\x70\x61\x63\x69\x6E\x67","\x70\x72\x65\x73\x65\x72\x76\x65\x49\x6D\x61\x67\x65\x41\x73\x70\x65\x63\x74","\x69\x6D\x61\x67\x65\x46\x6C\x69\x70\x48","\x69\x6D\x61\x67\x65\x46\x6C\x69\x70\x56","\x70\x72\x6F\x67\x69\x64\x3A\x44\x58\x49\x6D\x61\x67\x65\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D\x2E\x4D\x69\x63\x72\x6F\x73\x6F\x66\x74\x2E\x42\x61\x73\x69\x63\x49\x6D\x61\x67\x65\x28\x72\x6F\x74\x61\x74\x69\x6F\x6E\x3D\x32\x29","\x70\x72\x6F\x67\x69\x64\x3A\x44\x58\x49\x6D\x61\x67\x65\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D\x2E\x4D\x69\x63\x72\x6F\x73\x6F\x66\x74\x2E\x42\x61\x73\x69\x63\x49\x6D\x61\x67\x65\x28\x6D\x69\x72\x72\x6F\x72\x3D\x31\x29","\x70\x72\x6F\x67\x69\x64\x3A\x44\x58\x49\x6D\x61\x67\x65\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D\x2E\x4D\x69\x63\x72\x6F\x73\x6F\x66\x74\x2E\x42\x61\x73\x69\x63\x49\x6D\x61\x67\x65\x28\x72\x6F\x74\x61\x74\x69\x6F\x6E\x3D\x32\x2C\x20\x6D\x69\x72\x72\x6F\x72\x3D\x31\x29","\x69\x6D\x61\x67\x65\x53\x69\x7A\x65","\x44\x45\x46\x41\x55\x4C\x54\x5F\x49\x4D\x41\x47\x45\x53\x49\x5A\x45","\x69\x6E\x64\x69\x63\x61\x74\x6F\x72\x53\x69\x7A\x65","\x69\x6E\x64\x69\x63\x61\x74\x6F\x72","\x70\x61\x69\x6E\x74\x49\x6D\x61\x67\x65","\x70\x61\x69\x6E\x74\x49\x6E\x64\x69\x63\x61\x74\x6F\x72","\x67\x65\x74\x49\x6D\x61\x67\x65\x42\x6F\x75\x6E\x64\x73","\x41\x4C\x49\x47\x4E\x5F\x54\x4F\x50","\x67\x65\x74\x49\x6E\x64\x69\x63\x61\x74\x6F\x72\x42\x6F\x75\x6E\x64\x73","\x63\x72\x65\x61\x74\x65\x4D\x61\x72\x6B\x65\x72","\x53\x54\x59\x4C\x45\x5F\x43\x55\x52\x56\x45\x44","\x70\x61\x69\x6E\x74\x43\x75\x72\x76\x65\x64\x4C\x69\x6E\x65","\x53\x54\x59\x4C\x45\x5F\x53\x54\x41\x52\x54\x53\x49\x5A\x45","\x53\x54\x59\x4C\x45\x5F\x45\x4E\x44\x53\x49\x5A\x45","\x53\x54\x59\x4C\x45\x5F\x53\x54\x41\x52\x54\x41\x52\x52\x4F\x57","\x53\x54\x59\x4C\x45\x5F\x45\x4E\x44\x41\x52\x52\x4F\x57","\x53\x54\x59\x4C\x45\x5F\x53\x54\x41\x52\x54\x46\x49\x4C\x4C","\x53\x54\x59\x4C\x45\x5F\x45\x4E\x44\x46\x49\x4C\x4C","\x70\x61\x69\x6E\x74\x52\x6F\x75\x6E\x64\x65\x64\x53\x77\x69\x6D\x6C\x61\x6E\x65","\x70\x61\x69\x6E\x74\x53\x77\x69\x6D\x6C\x61\x6E\x65","\x70\x61\x69\x6E\x74\x53\x65\x70\x61\x72\x61\x74\x6F\x72","\x75\x73\x65\x42\x6F\x75\x6E\x64\x69\x6E\x67\x42\x6F\x78","\x6D\x6F\x76\x65\x43\x65\x6C\x6C","\x67\x65\x74\x47\x72\x61\x70\x68","\x67\x65\x74\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74","\x67\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65","\x74\x72\x61\x76\x65\x72\x73\x65","\x67\x65\x74\x45\x64\x67\x65\x43\x6F\x75\x6E\x74","\x67\x65\x74\x45\x64\x67\x65\x41\x74","\x67\x65\x74\x54\x65\x72\x6D\x69\x6E\x61\x6C","\x67\x65\x74\x56\x69\x73\x69\x62\x6C\x65\x54\x65\x72\x6D\x69\x6E\x61\x6C","\x69\x73\x56\x65\x72\x74\x65\x78\x4D\x6F\x76\x61\x62\x6C\x65","\x69\x73\x43\x65\x6C\x6C\x4D\x6F\x76\x61\x62\x6C\x65","\x69\x73\x56\x65\x72\x74\x65\x78\x49\x67\x6E\x6F\x72\x65\x64","\x69\x73\x43\x65\x6C\x6C\x56\x69\x73\x69\x62\x6C\x65","\x69\x73\x45\x64\x67\x65\x49\x67\x6E\x6F\x72\x65\x64","\x73\x65\x74\x45\x64\x67\x65\x53\x74\x79\x6C\x65\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x73","\x73\x65\x74\x4F\x72\x74\x68\x6F\x67\x6F\x6E\x61\x6C\x45\x64\x67\x65","\x67\x65\x74\x50\x61\x72\x65\x6E\x74\x4F\x66\x66\x73\x65\x74","\x69\x73\x41\x6E\x63\x65\x73\x74\x6F\x72","\x67\x65\x74\x47\x65\x6F\x6D\x65\x74\x72\x79","\x73\x65\x74\x45\x64\x67\x65\x50\x6F\x69\x6E\x74\x73","\x73\x65\x74\x52\x65\x6C\x61\x74\x69\x76\x65","\x73\x65\x74\x47\x65\x6F\x6D\x65\x74\x72\x79","\x73\x65\x74\x56\x65\x72\x74\x65\x78\x4C\x6F\x63\x61\x74\x69\x6F\x6E","\x67\x65\x74\x56\x65\x72\x74\x65\x78\x42\x6F\x75\x6E\x64\x73","\x61\x72\x72\x61\x6E\x67\x65\x47\x72\x6F\x75\x70\x73","\x67\x65\x74\x43\x68\x69\x6C\x64\x56\x65\x72\x74\x69\x63\x65\x73","\x67\x65\x74\x42\x6F\x75\x6E\x64\x69\x6E\x67\x42\x6F\x78\x46\x72\x6F\x6D\x47\x65\x6F\x6D\x65\x74\x72\x79","\x69\x73\x53\x77\x69\x6D\x6C\x61\x6E\x65","\x67\x65\x74\x53\x74\x61\x72\x74\x53\x69\x7A\x65","\x78\x30","\x79\x30","\x6B\x65\x65\x70\x46\x69\x72\x73\x74\x4C\x6F\x63\x61\x74\x69\x6F\x6E","\x72\x65\x73\x69\x7A\x65\x50\x61\x72\x65\x6E\x74","\x72\x65\x73\x69\x7A\x65\x4C\x61\x73\x74","\x69\x73\x48\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C","\x67\x65\x74\x49\x6E\x64\x65\x78","\x67\x65\x74\x50\x61\x72\x65\x6E\x74\x53\x69\x7A\x65","\x69\x73\x4C\x61\x79\x65\x72","\x63\x75\x72\x72\x65\x6E\x74\x52\x6F\x6F\x74","\x69\x73\x43\x65\x6C\x6C\x43\x6F\x6C\x6C\x61\x70\x73\x65\x64","\x72\x65\x73\x69\x7A\x65\x56\x65\x72\x74\x69\x63\x65\x73","\x69\x6E\x76\x65\x72\x74","\x67\x72\x6F\x75\x70\x50\x61\x64\x64\x69\x6E\x67","\x70\x61\x72\x65\x6E\x74\x73\x43\x68\x61\x6E\x67\x65\x64","\x6D\x6F\x76\x65\x54\x72\x65\x65","\x6C\x65\x76\x65\x6C\x44\x69\x73\x74\x61\x6E\x63\x65","\x6E\x6F\x64\x65\x44\x69\x73\x74\x61\x6E\x63\x65","\x72\x65\x73\x65\x74\x45\x64\x67\x65\x73","\x70\x72\x65\x66\x48\x6F\x7A\x45\x64\x67\x65\x53\x65\x70","\x70\x72\x65\x66\x56\x65\x72\x74\x45\x64\x67\x65\x4F\x66\x66","\x6D\x69\x6E\x45\x64\x67\x65\x4A\x65\x74\x74\x79","\x63\x68\x61\x6E\x6E\x65\x6C\x42\x75\x66\x66\x65\x72","\x65\x64\x67\x65\x52\x6F\x75\x74\x69\x6E\x67","\x67\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x73","\x66\x69\x6E\x64\x54\x72\x65\x65\x52\x6F\x6F\x74\x73","\x64\x66\x73","\x6C\x61\x79\x6F\x75\x74","\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C\x4C\x61\x79\x6F\x75\x74","\x76\x65\x72\x74\x69\x63\x61\x6C\x4C\x61\x79\x6F\x75\x74","\x6D\x6F\x76\x65\x4E\x6F\x64\x65","\x61\x64\x6A\x75\x73\x74\x50\x61\x72\x65\x6E\x74\x73","\x6C\x6F\x63\x61\x6C\x45\x64\x67\x65\x50\x72\x6F\x63\x65\x73\x73\x69\x6E\x67","\x6E\x65\x78\x74","\x63\x72\x65\x61\x74\x65\x4E\x6F\x64\x65","\x61\x74\x74\x61\x63\x68\x50\x61\x72\x65\x6E\x74","\x6C\x61\x79\x6F\x75\x74\x4C\x65\x61\x66","\x6F\x66\x66\x73\x65\x74\x58","\x6F\x66\x66\x73\x65\x74\x59","\x75\x70\x70\x65\x72\x48\x65\x61\x64","\x63\x6F\x6E\x74\x6F\x75\x72","\x63\x72\x65\x61\x74\x65\x4C\x69\x6E\x65","\x6C\x6F\x77\x65\x72\x48\x65\x61\x64","\x75\x70\x70\x65\x72\x54\x61\x69\x6C","\x6C\x6F\x77\x65\x72\x54\x61\x69\x6C","\x6D\x65\x72\x67\x65","\x62\x72\x69\x64\x67\x65","\x73\x6F\x72\x74\x43\x65\x6C\x6C\x73","\x70\x72\x6F\x63\x65\x73\x73\x4E\x6F\x64\x65\x4F\x75\x74\x67\x6F\x69\x6E\x67","\x67\x65\x74\x45\x64\x67\x65\x73\x42\x65\x74\x77\x65\x65\x6E","\x77\x65\x69\x67\x68\x74\x65\x64\x56\x61\x6C\x75\x65","\x6E\x75\x64\x67\x65","\x76\x69\x73\x69\x74\x65\x64","\x72\x61\x6E\x6B\x49\x6E\x64\x65\x78","\x75\x73\x65\x49\x6E\x70\x75\x74\x4F\x72\x69\x67\x69\x6E","\x64\x69\x73\x61\x62\x6C\x65\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x66\x6F\x72\x63\x65\x43\x6F\x6E\x73\x74\x61\x6E\x74","\x66\x6F\x72\x63\x65\x43\x6F\x6E\x73\x74\x61\x6E\x74\x53\x71\x75\x61\x72\x65\x64","\x6D\x69\x6E\x44\x69\x73\x74\x61\x6E\x63\x65\x4C\x69\x6D\x69\x74","\x6D\x61\x78\x44\x69\x73\x74\x61\x6E\x63\x65\x4C\x69\x6D\x69\x74","\x6D\x69\x6E\x44\x69\x73\x74\x61\x6E\x63\x65\x4C\x69\x6D\x69\x74\x53\x71\x75\x61\x72\x65\x64","\x69\x6E\x69\x74\x69\x61\x6C\x54\x65\x6D\x70","\x74\x65\x6D\x70\x65\x72\x61\x74\x75\x72\x65","\x6D\x61\x78\x49\x74\x65\x72\x61\x74\x69\x6F\x6E\x73","\x69\x74\x65\x72\x61\x74\x69\x6F\x6E","\x61\x6C\x6C\x6F\x77\x65\x64\x54\x6F\x52\x75\x6E","\x76\x65\x72\x74\x65\x78\x41\x72\x72\x61\x79","\x67\x65\x74\x42\x6F\x75\x6E\x64\x73","\x69\x6E\x64\x69\x63\x65\x73","\x64\x69\x73\x70\x58","\x64\x69\x73\x70\x59","\x63\x65\x6C\x6C\x4C\x6F\x63\x61\x74\x69\x6F\x6E","\x69\x73\x4D\x6F\x76\x65\x61\x62\x6C\x65","\x6E\x65\x69\x67\x68\x62\x6F\x75\x72\x73","\x72\x61\x64\x69\x75\x73","\x72\x61\x64\x69\x75\x73\x53\x71\x75\x61\x72\x65\x64","\x67\x65\x74\x4F\x70\x70\x6F\x73\x69\x74\x65\x73","\x72\x65\x73\x65\x74\x45\x64\x67\x65","\x63\x61\x6C\x63\x52\x65\x70\x75\x6C\x73\x69\x6F\x6E","\x63\x61\x6C\x63\x41\x74\x74\x72\x61\x63\x74\x69\x6F\x6E","\x63\x61\x6C\x63\x50\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x72\x65\x64\x75\x63\x65\x54\x65\x6D\x70\x65\x72\x61\x74\x75\x72\x65","\x72\x61\x6E\x64\x6F\x6D","\x6D\x6F\x76\x65\x43\x69\x72\x63\x6C\x65","\x67\x65\x74\x52\x61\x64\x69\x75\x73","\x63\x69\x72\x63\x6C\x65","\x66\x69\x6E\x64\x50\x61\x72\x61\x6C\x6C\x65\x6C\x73","\x67\x65\x74\x45\x64\x67\x65\x49\x64","\x72\x6F\x75\x74\x65","\x6C\x61\x79\x6F\x75\x74\x73","\x6D\x61\x73\x74\x65\x72","\x70\x6C\x61\x63\x65\x4C\x61\x62\x65\x6C\x73","\x61\x76\x6F\x69\x64","\x69\x6E\x74\x65\x72\x73\x65\x63\x74\x73","\x74\x65\x6D\x70","\x6D\x61\x78\x52\x61\x6E\x6B","\x6D\x69\x6E\x52\x61\x6E\x6B","\x6E\x65\x78\x74\x4C\x61\x79\x65\x72\x43\x6F\x6E\x6E\x65\x63\x74\x65\x64\x43\x65\x6C\x6C\x73","\x70\x72\x65\x76\x69\x6F\x75\x73\x4C\x61\x79\x65\x72\x43\x6F\x6E\x6E\x65\x63\x74\x65\x64\x43\x65\x6C\x6C\x73","\x67\x65\x74\x4E\x65\x78\x74\x4C\x61\x79\x65\x72\x43\x6F\x6E\x6E\x65\x63\x74\x65\x64\x43\x65\x6C\x6C\x73","\x67\x65\x74\x50\x72\x65\x76\x69\x6F\x75\x73\x4C\x61\x79\x65\x72\x43\x6F\x6E\x6E\x65\x63\x74\x65\x64\x43\x65\x6C\x6C\x73","\x67\x65\x74\x47\x65\x6E\x65\x72\x61\x6C\x50\x75\x72\x70\x6F\x73\x65\x56\x61\x72\x69\x61\x62\x6C\x65","\x73\x65\x74\x47\x65\x6E\x65\x72\x61\x6C\x50\x75\x72\x70\x6F\x73\x65\x56\x61\x72\x69\x61\x62\x6C\x65","\x73\x65\x74\x58","\x73\x65\x74\x59","\x63\x6F\x6E\x6E\x65\x63\x74\x73\x41\x73\x54\x61\x72\x67\x65\x74","\x63\x6F\x6E\x6E\x65\x63\x74\x73\x41\x73\x53\x6F\x75\x72\x63\x65","\x68\x61\x73\x68\x43\x6F\x64\x65","\x67\x65\x74\x52\x61\x6E\x6B\x56\x61\x6C\x75\x65","\x67\x65\x74\x43\x6F\x72\x65\x43\x65\x6C\x6C","\x65\x64\x67\x65\x73","\x69\x73\x52\x65\x76\x65\x72\x73\x65\x64","\x74\x69\x67\x68\x74\x65\x6E\x54\x6F\x53\x6F\x75\x72\x63\x65","\x72\x6F\x6F\x74\x73","\x76\x65\x72\x74\x65\x78\x4D\x61\x70\x70\x65\x72","\x65\x64\x67\x65\x4D\x61\x70\x70\x65\x72","\x53\x4F\x55\x52\x43\x45\x53\x43\x41\x4E\x53\x54\x41\x52\x54\x52\x41\x4E\x4B","\x63\x72\x65\x61\x74\x65\x49\x6E\x74\x65\x72\x6E\x61\x6C\x43\x65\x6C\x6C\x73","\x72\x61\x6E\x6B\x73","\x64\x66\x73\x43\x6F\x75\x6E\x74","\x69\x6E\x69\x74\x69\x61\x6C\x52\x61\x6E\x6B","\x73\x6C\x69\x63\x65","\x66\x69\x78\x52\x61\x6E\x6B\x73","\x65\x78\x74\x65\x6E\x64\x65\x64\x44\x66\x73","\x6E\x65\x73\x74\x65\x64\x42\x65\x73\x74\x52\x61\x6E\x6B\x73","\x63\x75\x72\x72\x65\x6E\x74\x42\x65\x73\x74\x43\x72\x6F\x73\x73\x69\x6E\x67\x73","\x69\x74\x65\x72\x61\x74\x69\x6F\x6E\x73\x57\x69\x74\x68\x6F\x75\x74\x49\x6D\x70\x72\x6F\x76\x65\x6D\x65\x6E\x74","\x6D\x61\x78\x4E\x6F\x49\x6D\x70\x72\x6F\x76\x65\x6D\x65\x6E\x74\x49\x74\x65\x72\x61\x74\x69\x6F\x6E\x73","\x63\x61\x6C\x63\x75\x6C\x61\x74\x65\x43\x72\x6F\x73\x73\x69\x6E\x67\x73","\x77\x65\x69\x67\x68\x74\x65\x64\x4D\x65\x64\x69\x61\x6E","\x74\x72\x61\x6E\x73\x70\x6F\x73\x65","\x63\x61\x6C\x63\x75\x6C\x61\x74\x65\x52\x61\x6E\x6B\x43\x72\x6F\x73\x73\x69\x6E\x67","\x6D\x65\x64\x69\x61\x6E\x52\x61\x6E\x6B","\x6D\x65\x64\x69\x61\x6E\x56\x61\x6C\x75\x65","\x6C\x65\x6E\x74\x68","\x67\x65\x74\x49\x6E\x63\x6F\x6D\x69\x6E\x67\x45\x64\x67\x65\x73","\x69\x6E\x74\x72\x61\x43\x65\x6C\x6C\x53\x70\x61\x63\x69\x6E\x67","\x69\x6E\x74\x65\x72\x52\x61\x6E\x6B\x43\x65\x6C\x6C\x53\x70\x61\x63\x69\x6E\x67","\x6F\x72\x69\x65\x6E\x74\x61\x74\x69\x6F\x6E","\x69\x6E\x69\x74\x69\x61\x6C\x58","\x70\x61\x72\x61\x6C\x6C\x65\x6C\x45\x64\x67\x65\x53\x70\x61\x63\x69\x6E\x67","\x6A\x65\x74\x74\x79\x50\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x6C\x69\x6D\x69\x74\x58","\x63\x75\x72\x72\x65\x6E\x74\x58\x44\x65\x6C\x74\x61","\x77\x69\x64\x65\x73\x74\x52\x61\x6E\x6B","\x72\x61\x6E\x6B\x54\x6F\x70\x59","\x72\x61\x6E\x6B\x42\x6F\x74\x74\x6F\x6D\x59","\x77\x69\x64\x65\x73\x74\x52\x61\x6E\x6B\x56\x61\x6C\x75\x65","\x72\x61\x6E\x6B\x57\x69\x64\x74\x68\x73","\x72\x61\x6E\x6B\x59","\x66\x69\x6E\x65\x54\x75\x6E\x69\x6E\x67","\x50\x4F\x4C\x59\x4C\x49\x4E\x45","\x6E\x65\x78\x74\x4C\x61\x79\x65\x72\x43\x6F\x6E\x6E\x65\x63\x74\x65\x64\x43\x61\x63\x68\x65","\x70\x72\x65\x76\x69\x6F\x75\x73\x4C\x61\x79\x65\x72\x43\x6F\x6E\x6E\x65\x63\x74\x65\x64\x43\x61\x63\x68\x65","\x70\x72\x69\x6E\x74\x53\x74\x61\x74\x75\x73","\x3D\x3D\x3D\x3D\x3D\x3D\x43\x6F\x6F\x72\x64\x20\x61\x73\x73\x69\x67\x6E\x6D\x65\x6E\x74\x20\x64\x65\x62\x75\x67\x3D\x3D\x3D\x3D\x3D\x3D\x3D","\x52\x61\x6E\x6B\x20","\x20\x3A\x20","\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D","\x69\x6E\x69\x74\x69\x61\x6C\x43\x6F\x6F\x72\x64\x73","\x6D\x69\x6E\x4E\x6F\x64\x65","\x6D\x65\x64\x69\x61\x6E\x50\x6F\x73","\x6D\x69\x6E\x50\x61\x74\x68","\x73\x65\x74\x43\x65\x6C\x6C\x4C\x6F\x63\x61\x74\x69\x6F\x6E\x73","\x6D\x65\x64\x69\x61\x6E\x58\x56\x61\x6C\x75\x65","\x72\x61\x6E\x6B\x4D\x65\x64\x69\x61\x6E\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x63\x61\x6C\x63\x75\x6C\x61\x74\x65\x64\x57\x65\x69\x67\x68\x74\x65\x64\x56\x61\x6C\x75\x65","\x63\x61\x6C\x63\x75\x6C\x61\x74\x65\x57\x69\x64\x65\x73\x74\x52\x61\x6E\x6B","\x72\x61\x6E\x6B\x43\x6F\x6F\x72\x64\x69\x6E\x61\x74\x65\x73","\x65\x64\x67\x65\x2E\x65\x64\x67\x65\x73\x20\x69\x73\x20\x6E\x75\x6C\x6C","\x41\x74\x20\x6C\x65\x61\x73\x74\x20\x6F\x6E\x65\x20\x63\x65\x6C\x6C\x20\x68\x61\x73\x20\x6E\x6F\x20\x62\x6F\x75\x6E\x64\x73","\x72\x65\x70\x6F\x73\x69\x74\x69\x6F\x6E\x56\x61\x6C\x69\x64","\x4D\x41\x58\x5F\x56\x41\x4C\x55\x45","\x4F\x52\x54\x48\x4F\x47\x4F\x4E\x41\x4C","\x43\x55\x52\x56\x45","\x73\x65\x74\x45\x64\x67\x65\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x69\x73\x50\x6F\x72\x74","\x70\x72\x6F\x63\x65\x73\x73\x52\x65\x76\x65\x72\x73\x65\x64\x45\x64\x67\x65","\x64\x65\x74\x65\x72\x6D\x69\x6E\x69\x73\x74\x69\x63","\x6D\x6F\x76\x65\x50\x61\x72\x65\x6E\x74","\x70\x61\x72\x65\x6E\x74\x42\x6F\x72\x64\x65\x72","\x69\x6E\x74\x65\x72\x48\x69\x65\x72\x61\x72\x63\x68\x79\x53\x70\x61\x63\x69\x6E\x67","\x74\x72\x61\x76\x65\x72\x73\x65\x41\x6E\x63\x65\x73\x74\x6F\x72\x73","\x65\x64\x67\x65\x73\x43\x61\x63\x68\x65","\x72\x75\x6E","\x75\x70\x64\x61\x74\x65\x47\x72\x6F\x75\x70\x42\x6F\x75\x6E\x64\x73","\x66\x69\x6E\x64\x52\x6F\x6F\x74\x73","\x63\x6F\x6E\x63\x61\x74","\x69\x73\x56\x61\x6C\x69\x64\x41\x6E\x63\x65\x73\x74\x6F\x72","\x66\x69\x6C\x74\x65\x72\x44\x65\x73\x63\x65\x6E\x64\x61\x6E\x74\x73","\x63\x79\x63\x6C\x65\x53\x74\x61\x67\x65","\x6C\x61\x79\x65\x72\x69\x6E\x67\x53\x74\x61\x67\x65","\x63\x72\x6F\x73\x73\x69\x6E\x67\x53\x74\x61\x67\x65","\x70\x6C\x61\x63\x65\x6D\x65\x6E\x74\x53\x74\x61\x67\x65","\x63\x75\x72\x72\x65\x6E\x74\x45\x64\x69\x74","\x73\x65\x74\x52\x6F\x6F\x74","\x6D\x61\x69\x6E\x74\x61\x69\x6E\x45\x64\x67\x65\x50\x61\x72\x65\x6E\x74","\x63\x72\x65\x61\x74\x65\x49\x64\x73","\x70\x6F\x73\x74\x66\x69\x78","\x6E\x65\x78\x74\x49\x64","\x75\x70\x64\x61\x74\x65\x4C\x65\x76\x65\x6C","\x65\x6E\x64\x69\x6E\x67\x55\x70\x64\x61\x74\x65","\x63\x72\x65\x61\x74\x65\x52\x6F\x6F\x74","\x69\x73\x43\x72\x65\x61\x74\x65\x49\x64\x73","\x73\x65\x74\x43\x72\x65\x61\x74\x65\x49\x64\x73","\x69\x6E\x73\x65\x72\x74","\x66\x69\x6C\x74\x65\x72\x43\x65\x6C\x6C\x73","\x67\x65\x74\x44\x65\x73\x63\x65\x6E\x64\x61\x6E\x74\x73","\x72\x6F\x6F\x74\x43\x68\x61\x6E\x67\x65\x64","\x63\x65\x6C\x6C\x41\x64\x64\x65\x64","\x69\x73\x52\x6F\x6F\x74","\x75\x70\x64\x61\x74\x65\x45\x64\x67\x65\x50\x61\x72\x65\x6E\x74\x73","\x63\x72\x65\x61\x74\x65\x49\x64","\x73\x65\x74\x49\x64","\x69\x73\x4E\x75\x6D\x65\x72\x69\x63","\x75\x70\x64\x61\x74\x65\x45\x64\x67\x65\x50\x61\x72\x65\x6E\x74","\x67\x65\x74\x4E\x65\x61\x72\x65\x73\x74\x43\x6F\x6D\x6D\x6F\x6E\x41\x6E\x63\x65\x73\x74\x6F\x72","\x67\x65\x74\x4F\x72\x69\x67\x69\x6E","\x50\x41\x54\x48\x5F\x53\x45\x50\x41\x52\x41\x54\x4F\x52","\x67\x65\x74\x50\x61\x72\x65\x6E\x74\x50\x61\x74\x68","\x70\x61\x72\x65\x6E\x74\x46\x6F\x72\x43\x65\x6C\x6C\x43\x68\x61\x6E\x67\x65\x64","\x67\x65\x74\x43\x68\x69\x6C\x64\x72\x65\x6E","\x63\x68\x69\x6C\x64\x72\x65\x6E","\x67\x65\x74\x43\x68\x69\x6C\x64\x43\x65\x6C\x6C\x73","\x67\x65\x74\x43\x68\x69\x6C\x64\x45\x64\x67\x65\x73","\x73\x65\x74\x54\x65\x72\x6D\x69\x6E\x61\x6C","\x73\x65\x74\x54\x65\x72\x6D\x69\x6E\x61\x6C\x73","\x74\x65\x72\x6D\x69\x6E\x61\x6C\x46\x6F\x72\x43\x65\x6C\x6C\x43\x68\x61\x6E\x67\x65\x64","\x69\x6E\x73\x65\x72\x74\x45\x64\x67\x65","\x72\x65\x6D\x6F\x76\x65\x45\x64\x67\x65","\x67\x65\x74\x44\x69\x72\x65\x63\x74\x65\x64\x45\x64\x67\x65\x43\x6F\x75\x6E\x74","\x67\x65\x74\x4F\x75\x74\x67\x6F\x69\x6E\x67\x45\x64\x67\x65\x73","\x67\x65\x74\x54\x6F\x70\x6D\x6F\x73\x74\x43\x65\x6C\x6C\x73","\x69\x73\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x73\x65\x74\x56\x61\x6C\x75\x65","\x76\x61\x6C\x75\x65\x46\x6F\x72\x43\x65\x6C\x6C\x43\x68\x61\x6E\x67\x65\x64","\x76\x61\x6C\x75\x65\x43\x68\x61\x6E\x67\x65\x64","\x67\x65\x6F\x6D\x65\x74\x72\x79\x46\x6F\x72\x43\x65\x6C\x6C\x43\x68\x61\x6E\x67\x65\x64","\x73\x74\x79\x6C\x65\x46\x6F\x72\x43\x65\x6C\x6C\x43\x68\x61\x6E\x67\x65\x64","\x69\x73\x43\x6F\x6C\x6C\x61\x70\x73\x65\x64","\x73\x65\x74\x43\x6F\x6C\x6C\x61\x70\x73\x65\x64","\x63\x6F\x6C\x6C\x61\x70\x73\x65\x64\x53\x74\x61\x74\x65\x46\x6F\x72\x43\x65\x6C\x6C\x43\x68\x61\x6E\x67\x65\x64","\x76\x69\x73\x69\x62\x6C\x65\x53\x74\x61\x74\x65\x46\x6F\x72\x43\x65\x6C\x6C\x43\x68\x61\x6E\x67\x65\x64","\x6D\x65\x72\x67\x65\x43\x68\x69\x6C\x64\x72\x65\x6E","\x6D\x65\x72\x67\x65\x43\x68\x69\x6C\x64\x72\x65\x6E\x49\x6D\x70\x6C","\x67\x65\x74\x50\x61\x72\x65\x6E\x74\x73","\x63\x6C\x6F\x6E\x65\x43\x65\x6C\x6C","\x63\x6C\x6F\x6E\x65\x43\x65\x6C\x6C\x49\x6D\x70\x6C","\x72\x65\x73\x74\x6F\x72\x65\x43\x6C\x6F\x6E\x65","\x63\x65\x6C\x6C\x43\x6C\x6F\x6E\x65\x64","\x70\x72\x65\x76\x69\x6F\x75\x73\x49\x6E\x64\x65\x78","\x69\x6E\x64\x65\x78","\x74\x65\x72\x6D\x69\x6E\x61\x6C","\x63\x6F\x6C\x6C\x61\x70\x73\x65\x64","\x61\x74\x74\x72\x69\x62\x75\x74\x65","\x6F\x6E\x49\x6E\x69\x74","\x76\x65\x72\x74\x65\x78","\x65\x64\x67\x65","\x63\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x6D\x78\x54\x72\x61\x6E\x73\x69\x65\x6E\x74","\x69\x64\x20\x76\x61\x6C\x75\x65\x20\x70\x61\x72\x65\x6E\x74\x20\x73\x6F\x75\x72\x63\x65\x20\x74\x61\x72\x67\x65\x74\x20\x63\x68\x69\x6C\x64\x72\x65\x6E\x20\x65\x64\x67\x65\x73","\x73\x65\x74\x56\x65\x72\x74\x65\x78","\x73\x65\x74\x45\x64\x67\x65","\x73\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x73\x65\x74\x50\x61\x72\x65\x6E\x74","\x72\x65\x6D\x6F\x76\x65\x46\x72\x6F\x6D\x50\x61\x72\x65\x6E\x74","\x67\x65\x74\x45\x64\x67\x65\x49\x6E\x64\x65\x78","\x72\x65\x6D\x6F\x76\x65\x46\x72\x6F\x6D\x54\x65\x72\x6D\x69\x6E\x61\x6C","\x63\x6C\x6F\x6E\x65\x56\x61\x6C\x75\x65","\x54\x52\x41\x4E\x53\x4C\x41\x54\x45\x5F\x43\x4F\x4E\x54\x52\x4F\x4C\x5F\x50\x4F\x49\x4E\x54\x53","\x61\x6C\x74\x65\x72\x6E\x61\x74\x65\x42\x6F\x75\x6E\x64\x73","\x73\x6F\x75\x72\x63\x65\x50\x6F\x69\x6E\x74","\x74\x61\x72\x67\x65\x74\x50\x6F\x69\x6E\x74","\x73\x77\x61\x70","\x67\x65\x74\x54\x65\x72\x6D\x69\x6E\x61\x6C\x50\x6F\x69\x6E\x74","\x73\x65\x74\x54\x65\x72\x6D\x69\x6E\x61\x6C\x50\x6F\x69\x6E\x74","\x74\x61\x6E","\x70\x6F\x77","\x69\x6E\x74\x65\x72\x73\x65\x63\x74\x69\x6F\x6E","\x53\x54\x59\x4C\x45\x5F\x44\x49\x52\x45\x43\x54\x49\x4F\x4E","\x70\x61\x67\x65\x53\x63\x61\x6C\x65","\x70\x61\x67\x65\x46\x6F\x72\x6D\x61\x74","\x50\x72\x69\x6E\x74\x65\x72\x2D\x66\x72\x69\x65\x6E\x64\x6C\x79\x20\x76\x65\x72\x73\x69\x6F\x6E","\x70\x61\x67\x65\x53\x65\x6C\x65\x63\x74\x6F\x72","\x61\x75\x74\x6F\x4F\x72\x69\x67\x69\x6E","\x70\x72\x69\x6E\x74\x4F\x76\x65\x72\x6C\x61\x79\x73","\x77\x6E\x64","\x70\x61\x67\x65\x43\x6F\x75\x6E\x74","\x67\x65\x74\x57\x69\x6E\x64\x6F\x77","\x67\x65\x74\x44\x6F\x63\x74\x79\x70\x65","\x3C\x6D\x65\x74\x61\x20\x68\x74\x74\x70\x2D\x65\x71\x75\x69\x76\x3D\x22\x58\x2D\x55\x41\x2D\x43\x6F\x6D\x70\x61\x74\x69\x62\x6C\x65\x22\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3D\x22\x49\x45\x3D\x38\x22\x3E","\x69\x6E\x69\x74\x69\x61\x6C\x69\x7A\x65\x4F\x76\x65\x72\x6C\x61\x79","\x67\x65\x74\x44\x72\x61\x77\x50\x61\x6E\x65","\x77\x72\x69\x74\x65\x48\x65\x61\x64","\x3C\x62\x6F\x64\x79\x20\x63\x6C\x61\x73\x73\x3D\x22\x6D\x78\x50\x61\x67\x65\x22\x3E","\x63\x72\x65\x61\x74\x65\x50\x61\x67\x65\x53\x65\x6C\x65\x63\x74\x6F\x72","\x70\x61\x67\x65\x42\x72\x65\x61\x6B\x41\x66\x74\x65\x72","\x61\x6C\x77\x61\x79\x73","\x6D\x78\x50\x61\x67\x65\x42\x72\x65\x61\x6B","\x67\x65\x74\x43\x6F\x76\x65\x72\x50\x61\x67\x65\x73","\x67\x65\x74\x41\x70\x70\x65\x6E\x64\x69\x63\x65\x73","\x61\x64\x64\x47\x72\x61\x70\x68\x46\x72\x61\x67\x6D\x65\x6E\x74","\x72\x65\x6E\x64\x65\x72\x50\x61\x67\x65","\x6D\x78\x50\x61\x67\x65\x2D","\x3C\x74\x69\x74\x6C\x65\x3E","\x3C\x2F\x74\x69\x74\x6C\x65\x3E","\x3C\x73\x74\x79\x6C\x65\x20\x74\x79\x70\x65\x3D\x22\x74\x65\x78\x74\x2F\x63\x73\x73\x22\x3E","\x40\x6D\x65\x64\x69\x61\x20\x70\x72\x69\x6E\x74\x20\x7B","\x20\x20\x74\x61\x62\x6C\x65\x2E\x6D\x78\x50\x61\x67\x65\x53\x65\x6C\x65\x63\x74\x6F\x72\x20\x7B\x20\x64\x69\x73\x70\x6C\x61\x79\x3A\x20\x6E\x6F\x6E\x65\x3B\x20\x7D","\x20\x20\x68\x72\x2E\x6D\x78\x50\x61\x67\x65\x42\x72\x65\x61\x6B\x20\x7B\x20\x64\x69\x73\x70\x6C\x61\x79\x3A\x20\x6E\x6F\x6E\x65\x3B\x20\x7D","\x40\x6D\x65\x64\x69\x61\x20\x73\x63\x72\x65\x65\x6E\x20\x7B","\x20\x20\x74\x61\x62\x6C\x65\x2E\x6D\x78\x50\x61\x67\x65\x53\x65\x6C\x65\x63\x74\x6F\x72\x20\x7B\x20\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3A\x20\x66\x69\x78\x65\x64\x3B\x20\x72\x69\x67\x68\x74\x3A\x20\x31\x30\x70\x78\x3B\x20\x74\x6F\x70\x3A\x20\x31\x30\x70\x78\x3B\x66\x6F\x6E\x74\x2D\x66\x61\x6D\x69\x6C\x79\x3A\x20\x41\x72\x69\x61\x6C\x3B\x20\x66\x6F\x6E\x74\x2D\x73\x69\x7A\x65\x3A\x31\x30\x70\x74\x3B\x20\x62\x6F\x72\x64\x65\x72\x3A\x20\x73\x6F\x6C\x69\x64\x20\x31\x70\x78\x20\x64\x61\x72\x6B\x67\x72\x61\x79\x3B\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x3A\x20\x77\x68\x69\x74\x65\x3B\x20\x62\x6F\x72\x64\x65\x72\x2D\x63\x6F\x6C\x6C\x61\x70\x73\x65\x3A\x63\x6F\x6C\x6C\x61\x70\x73\x65\x3B\x20\x7D","\x20\x20\x74\x61\x62\x6C\x65\x2E\x6D\x78\x50\x61\x67\x65\x53\x65\x6C\x65\x63\x74\x6F\x72\x20\x74\x64\x20\x7B\x20\x62\x6F\x72\x64\x65\x72\x3A\x20\x73\x6F\x6C\x69\x64\x20\x31\x70\x78\x20\x67\x72\x61\x79\x3B\x20\x70\x61\x64\x64\x69\x6E\x67\x3A\x34\x70\x78\x3B\x20\x7D","\x20\x20\x62\x6F\x64\x79\x2E\x6D\x78\x50\x61\x67\x65\x20\x7B\x20\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x3A\x20\x67\x72\x61\x79\x3B\x20\x7D","\x3C\x2F\x73\x74\x79\x6C\x65\x3E","\x6D\x78\x50\x61\x67\x65\x53\x65\x6C\x65\x63\x74\x6F\x72","\x61","\x23\x6D\x78\x50\x61\x67\x65\x2D","\x70\x61\x67\x65\x42\x72\x65\x61\x6B\x49\x6E\x73\x69\x64\x65","\x67\x65\x74\x43\x61\x6E\x76\x61\x73","\x67\x65\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x6E\x65","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x6E\x65","\x73\x74\x79\x6C\x65\x73","\x63\x72\x65\x61\x74\x65\x44\x65\x66\x61\x75\x6C\x74\x56\x65\x72\x74\x65\x78\x53\x74\x79\x6C\x65","\x70\x75\x74\x44\x65\x66\x61\x75\x6C\x74\x56\x65\x72\x74\x65\x78\x53\x74\x79\x6C\x65","\x63\x72\x65\x61\x74\x65\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x70\x75\x74\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x53\x54\x59\x4C\x45\x5F\x53\x48\x41\x50\x45","\x53\x48\x41\x50\x45\x5F\x52\x45\x43\x54\x41\x4E\x47\x4C\x45","\x53\x54\x59\x4C\x45\x5F\x50\x45\x52\x49\x4D\x45\x54\x45\x52","\x52\x65\x63\x74\x61\x6E\x67\x6C\x65\x50\x65\x72\x69\x6D\x65\x74\x65\x72","\x53\x54\x59\x4C\x45\x5F\x56\x45\x52\x54\x49\x43\x41\x4C\x5F\x41\x4C\x49\x47\x4E","\x53\x54\x59\x4C\x45\x5F\x41\x4C\x49\x47\x4E","\x53\x54\x59\x4C\x45\x5F\x46\x49\x4C\x4C\x43\x4F\x4C\x4F\x52","\x23\x43\x33\x44\x39\x46\x46","\x53\x54\x59\x4C\x45\x5F\x53\x54\x52\x4F\x4B\x45\x43\x4F\x4C\x4F\x52","\x23\x36\x34\x38\x32\x42\x39","\x53\x54\x59\x4C\x45\x5F\x46\x4F\x4E\x54\x43\x4F\x4C\x4F\x52","\x23\x37\x37\x34\x34\x30\x30","\x53\x48\x41\x50\x45\x5F\x43\x4F\x4E\x4E\x45\x43\x54\x4F\x52","\x23\x34\x34\x36\x32\x39\x39","\x64\x65\x66\x61\x75\x6C\x74\x56\x65\x72\x74\x65\x78","\x70\x75\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65","\x64\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65","\x67\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x56\x65\x72\x74\x65\x78\x53\x74\x79\x6C\x65","\x67\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x6F\x72\x69\x67\x69\x6E","\x61\x62\x73\x6F\x6C\x75\x74\x65\x4F\x66\x66\x73\x65\x74","\x69\x6E\x76\x61\x6C\x69\x64","\x69\x6E\x76\x61\x6C\x69\x64\x4F\x72\x64\x65\x72","\x6F\x72\x64\x65\x72\x43\x68\x61\x6E\x67\x65\x64","\x76\x69\x73\x69\x62\x6C\x65\x53\x6F\x75\x72\x63\x65\x53\x74\x61\x74\x65","\x76\x69\x73\x69\x62\x6C\x65\x54\x61\x72\x67\x65\x74\x53\x74\x61\x74\x65","\x74\x65\x72\x6D\x69\x6E\x61\x6C\x44\x69\x73\x74\x61\x6E\x63\x65","\x73\x65\x67\x6D\x65\x6E\x74\x73","\x67\x65\x74\x50\x65\x72\x69\x6D\x65\x74\x65\x72\x42\x6F\x75\x6E\x64\x73","\x73\x65\x74\x41\x62\x73\x6F\x6C\x75\x74\x65\x54\x65\x72\x6D\x69\x6E\x61\x6C\x50\x6F\x69\x6E\x74","\x67\x65\x74\x56\x69\x73\x69\x62\x6C\x65\x54\x65\x72\x6D\x69\x6E\x61\x6C\x53\x74\x61\x74\x65","\x73\x65\x74\x56\x69\x73\x69\x62\x6C\x65\x54\x65\x72\x6D\x69\x6E\x61\x6C\x53\x74\x61\x74\x65","\x64\x6F\x6E\x65\x52\x65\x73\x6F\x75\x72\x63\x65","\x75\x70\x64\x61\x74\x69\x6E\x67\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x52\x65\x73\x6F\x75\x72\x63\x65","\x75\x70\x64\x61\x74\x69\x6E\x67\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x73\x69\x6E\x67\x6C\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x69\x73\x53\x69\x6E\x67\x6C\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x73\x65\x74\x53\x69\x6E\x67\x6C\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x69\x73\x53\x65\x6C\x65\x63\x74\x65\x64","\x63\x68\x61\x6E\x67\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x73\x65\x74\x43\x65\x6C\x6C","\x73\x65\x74\x43\x65\x6C\x6C\x73","\x67\x65\x74\x46\x69\x72\x73\x74\x53\x65\x6C\x65\x63\x74\x61\x62\x6C\x65\x43\x65\x6C\x6C","\x69\x73\x43\x65\x6C\x6C\x53\x65\x6C\x65\x63\x74\x61\x62\x6C\x65","\x61\x64\x64\x43\x65\x6C\x6C","\x72\x65\x6D\x6F\x76\x65\x43\x65\x6C\x6C","\x73\x65\x6C\x65\x63\x74\x69\x6F\x6E\x4D\x6F\x64\x65\x6C","\x61\x64\x64\x65\x64","\x72\x65\x6D\x6F\x76\x65\x64","\x6D\x78\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x68\x61\x6E\x67\x65\x2E\x65\x78\x65\x63\x75\x74\x65","\x65\x6E\x74\x65\x72","\x6C\x65\x61\x76\x65","\x65\x64\x69\x74\x69\x6E\x67\x43\x65\x6C\x6C","\x74\x72\x69\x67\x67\x65\x72","\x6D\x6F\x64\x69\x66\x69\x65\x64","\x61\x75\x74\x6F\x53\x69\x7A\x65","\x65\x6D\x70\x74\x79\x4C\x61\x62\x65\x6C\x54\x65\x78\x74","\x74\x65\x78\x74\x4E\x6F\x64\x65","\x6D\x78\x43\x65\x6C\x6C\x45\x64\x69\x74\x6F\x72","\x63\x6F\x6C\x73","\x32\x30","\x34","\x62\x6C\x75\x72","\x66\x6F\x63\x75\x73\x4C\x6F\x73\x74","\x6B\x65\x79\x64\x6F\x77\x6E","\x6B\x65\x79\x43\x6F\x64\x65","\x69\x73\x45\x6E\x74\x65\x72\x53\x74\x6F\x70\x73\x43\x65\x6C\x6C\x45\x64\x69\x74\x69\x6E\x67","\x73\x74\x6F\x70\x45\x64\x69\x74\x69\x6E\x67","\x63\x6C\x65\x61\x72\x4F\x6E\x43\x68\x61\x6E\x67\x65","\x73\x65\x74\x4D\x6F\x64\x69\x66\x69\x65\x64","\x6B\x65\x79\x70\x72\x65\x73\x73","\x69\x73\x4C\x61\x62\x65\x6C\x43\x6C\x69\x70\x70\x65\x64","\x69\x73\x57\x72\x61\x70\x70\x69\x6E\x67","\x41\x4C\x49\x47\x4E\x5F\x4C\x45\x46\x54","\x69\x73\x4D\x6F\x64\x69\x66\x69\x65\x64","\x69\x73\x49\x6E\x76\x6F\x6B\x65\x73\x53\x74\x6F\x70\x43\x65\x6C\x6C\x45\x64\x69\x74\x69\x6E\x67","\x69\x73\x48\x69\x64\x65\x4C\x61\x62\x65\x6C","\x6F\x75\x74\x6C\x69\x6E\x65","\x67\x65\x74\x45\x64\x69\x74\x6F\x72\x42\x6F\x75\x6E\x64\x73","\x67\x65\x74\x49\x6E\x69\x74\x69\x61\x6C\x56\x61\x6C\x75\x65","\x67\x65\x74\x45\x6D\x70\x74\x79\x4C\x61\x62\x65\x6C\x54\x65\x78\x74","\x63\x72\x65\x61\x74\x65\x54\x65\x78\x74\x44\x69\x76","\x67\x65\x74\x43\x75\x72\x72\x65\x6E\x74\x56\x61\x6C\x75\x65","\x67\x65\x74\x45\x64\x69\x74\x69\x6E\x67\x56\x61\x6C\x75\x65","\x53\x54\x59\x4C\x45\x5F\x53\x50\x41\x43\x49\x4E\x47","\x53\x54\x59\x4C\x45\x5F\x53\x50\x41\x43\x49\x4E\x47\x5F\x54\x4F\x50","\x53\x54\x59\x4C\x45\x5F\x53\x50\x41\x43\x49\x4E\x47\x5F\x52\x49\x47\x48\x54","\x53\x54\x59\x4C\x45\x5F\x53\x50\x41\x43\x49\x4E\x47\x5F\x42\x4F\x54\x54\x4F\x4D","\x53\x54\x59\x4C\x45\x5F\x53\x50\x41\x43\x49\x4E\x47\x5F\x4C\x45\x46\x54","\x67\x65\x74\x45\x64\x69\x74\x69\x6E\x67\x43\x65\x6C\x6C","\x64\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65\x53\x68\x61\x70\x65","\x64\x65\x66\x61\x75\x6C\x74\x56\x65\x72\x74\x65\x78\x53\x68\x61\x70\x65","\x64\x65\x66\x61\x75\x6C\x74\x54\x65\x78\x74\x53\x68\x61\x70\x65","\x6C\x65\x67\x61\x63\x79\x43\x6F\x6E\x74\x72\x6F\x6C\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x64\x65\x66\x61\x75\x6C\x74\x53\x68\x61\x70\x65\x73","\x72\x65\x67\x69\x73\x74\x65\x72\x53\x68\x61\x70\x65","\x69\x6E\x69\x74\x69\x61\x6C\x69\x7A\x65","\x63\x72\x65\x61\x74\x65\x53\x68\x61\x70\x65","\x69\x6E\x69\x74\x69\x61\x6C\x69\x7A\x65\x53\x68\x61\x70\x65","\x6F\x72\x64\x65\x72\x65\x64","\x6B\x65\x65\x70\x45\x64\x67\x65\x73\x49\x6E\x46\x6F\x72\x65\x67\x72\x6F\x75\x6E\x64","\x66\x69\x72\x73\x74\x45\x64\x67\x65","\x69\x6E\x73\x65\x72\x74\x53\x74\x61\x74\x65","\x63\x72\x65\x61\x74\x65\x43\x65\x6C\x6C\x4F\x76\x65\x72\x6C\x61\x79\x73","\x69\x6E\x73\x74\x61\x6C\x6C\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x67\x65\x74\x50\x72\x65\x76\x69\x6F\x75\x73\x53\x74\x61\x74\x65\x49\x6E\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x66\x69\x6E\x64\x50\x72\x65\x76\x69\x6F\x75\x73\x53\x74\x61\x74\x65\x49\x6E\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x6F\x72\x64\x65\x72","\x6F\x72\x64\x65\x72\x45\x64\x67\x65","\x6B\x65\x65\x70\x45\x64\x67\x65\x73\x49\x6E\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x67\x65\x74\x53\x68\x61\x70\x65\x43\x6F\x6E\x73\x74\x72\x75\x63\x74\x6F\x72","\x63\x6F\x6E\x66\x69\x67\x75\x72\x65\x53\x68\x61\x70\x65","\x67\x65\x74\x53\x68\x61\x70\x65","\x67\x65\x74\x49\x6E\x64\x69\x63\x61\x74\x6F\x72\x53\x68\x61\x70\x65","\x67\x65\x74\x49\x6E\x64\x69\x63\x61\x74\x6F\x72\x43\x6F\x6C\x6F\x72","\x67\x65\x74\x49\x6E\x64\x69\x63\x61\x74\x6F\x72\x47\x72\x61\x64\x69\x65\x6E\x74\x43\x6F\x6C\x6F\x72","\x53\x54\x59\x4C\x45\x5F\x49\x4E\x44\x49\x43\x41\x54\x4F\x52\x5F\x44\x49\x52\x45\x43\x54\x49\x4F\x4E","\x67\x65\x74\x49\x6E\x64\x69\x63\x61\x74\x6F\x72\x49\x6D\x61\x67\x65","\x70\x6F\x73\x74\x43\x6F\x6E\x66\x69\x67\x75\x72\x65\x53\x68\x61\x70\x65","\x72\x65\x73\x6F\x6C\x76\x65\x43\x6F\x6C\x6F\x72","\x67\x65\x74\x53\x77\x69\x6D\x6C\x61\x6E\x65","\x73\x77\x69\x6D\x6C\x61\x6E\x65\x49\x6E\x64\x69\x63\x61\x74\x6F\x72\x43\x6F\x6C\x6F\x72\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x69\x6E\x64\x69\x63\x61\x74\x65\x64","\x67\x65\x74\x4C\x61\x62\x65\x6C\x56\x61\x6C\x75\x65","\x67\x65\x74\x4C\x61\x62\x65\x6C","\x63\x72\x65\x61\x74\x65\x4C\x61\x62\x65\x6C","\x53\x54\x59\x4C\x45\x5F\x46\x4F\x4E\x54\x53\x49\x5A\x45","\x69\x73\x48\x74\x6D\x6C\x4C\x61\x62\x65\x6C","\x67\x65\x74\x56\x65\x72\x74\x69\x63\x61\x6C\x41\x6C\x69\x67\x6E","\x53\x54\x59\x4C\x45\x5F\x46\x4F\x4E\x54\x46\x41\x4D\x49\x4C\x59","\x53\x54\x59\x4C\x45\x5F\x46\x4F\x4E\x54\x53\x54\x59\x4C\x45","\x53\x54\x59\x4C\x45\x5F\x48\x4F\x52\x49\x5A\x4F\x4E\x54\x41\x4C","\x53\x54\x59\x4C\x45\x5F\x4C\x41\x42\x45\x4C\x5F\x42\x41\x43\x4B\x47\x52\x4F\x55\x4E\x44\x43\x4F\x4C\x4F\x52","\x53\x54\x59\x4C\x45\x5F\x4C\x41\x42\x45\x4C\x5F\x42\x4F\x52\x44\x45\x52\x43\x4F\x4C\x4F\x52","\x53\x54\x59\x4C\x45\x5F\x4F\x56\x45\x52\x46\x4C\x4F\x57","\x53\x54\x59\x4C\x45\x5F\x4C\x41\x42\x45\x4C\x5F\x50\x41\x44\x44\x49\x4E\x47","\x69\x6E\x69\x74\x69\x61\x6C\x69\x7A\x65\x4C\x61\x62\x65\x6C","\x63\x6F\x6E\x76\x65\x72\x74\x50\x6F\x69\x6E\x74","\x69\x73\x4C\x61\x62\x65\x6C\x45\x76\x65\x6E\x74","\x49\x4D\x47","\x4E\x4F\x5F\x46\x4F","\x67\x65\x74\x43\x65\x6C\x6C\x4F\x76\x65\x72\x6C\x61\x79\x73","\x6F\x76\x65\x72\x6C\x61\x79","\x69\x6E\x73\x74\x61\x6C\x6C\x43\x65\x6C\x6C\x4F\x76\x65\x72\x6C\x61\x79\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x69\x73\x45\x64\x69\x74\x69\x6E\x67","\x63\x72\x65\x61\x74\x65\x43\x6F\x6E\x74\x72\x6F\x6C","\x67\x65\x74\x46\x6F\x6C\x64\x69\x6E\x67\x49\x6D\x61\x67\x65","\x66\x6F\x6C\x64\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x63\x6F\x6E\x74\x72\x6F\x6C","\x69\x6E\x69\x74\x43\x6F\x6E\x74\x72\x6F\x6C","\x44\x49\x41\x4C\x45\x43\x54\x5F\x50\x52\x45\x46\x45\x52\x48\x54\x4D\x4C","\x69\x6E\x6E\x65\x72\x4E\x6F\x64\x65","\x69\x73\x53\x68\x61\x70\x65\x45\x76\x65\x6E\x74","\x67\x65\x73\x74\x75\x72\x65\x73\x74\x61\x72\x74","\x6C\x61\x73\x74\x54\x6F\x75\x63\x68\x54\x69\x6D\x65","\x67\x65\x73\x74\x75\x72\x65\x65\x6E\x64","\x67\x65\x73\x74\x75\x72\x65\x45\x6E\x61\x62\x6C\x65\x64","\x68\x61\x6E\x64\x6C\x65\x47\x65\x73\x74\x75\x72\x65","\x72\x65\x64\x72\x61\x77\x4C\x61\x62\x65\x6C","\x67\x65\x74\x4C\x61\x62\x65\x6C\x42\x6F\x75\x6E\x64\x73","\x69\x73\x43\x6C\x69\x70\x70\x69\x6E\x67","\x67\x65\x74\x54\x65\x78\x74\x53\x63\x61\x6C\x65","\x72\x6F\x74\x61\x74\x65\x4C\x61\x62\x65\x6C\x42\x6F\x75\x6E\x64\x73","\x72\x65\x64\x72\x61\x77\x43\x65\x6C\x6C\x4F\x76\x65\x72\x6C\x61\x79\x73","\x72\x65\x64\x72\x61\x77\x43\x6F\x6E\x74\x72\x6F\x6C","\x67\x65\x74\x43\x6F\x6E\x74\x72\x6F\x6C\x42\x6F\x75\x6E\x64\x73","\x65\x71\x75\x61\x6C\x45\x6E\x74\x72\x69\x65\x73","\x65\x71\x75\x61\x6C\x50\x6F\x69\x6E\x74\x73","\x67\x65\x74\x50\x6F\x72\x74\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x73","\x67\x65\x74\x52\x6F\x75\x74\x69\x6E\x67\x43\x65\x6E\x74\x65\x72\x59","\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D\x43\x6F\x6E\x74\x72\x6F\x6C\x50\x6F\x69\x6E\x74","\x67\x65\x74\x52\x6F\x75\x74\x69\x6E\x67\x43\x65\x6E\x74\x65\x72\x58","\x53\x54\x59\x4C\x45\x5F\x45\x4C\x42\x4F\x57","\x45\x4C\x42\x4F\x57\x5F\x56\x45\x52\x54\x49\x43\x41\x4C","\x6F\x72\x74\x68\x42\x75\x66\x66\x65\x72","\x44\x49\x52\x45\x43\x54\x49\x4F\x4E\x5F\x4D\x41\x53\x4B\x5F\x41\x4C\x4C","\x6C\x69\x6D\x69\x74\x73","\x76\x65\x72\x74\x65\x78\x53\x65\x70\x65\x72\x61\x74\x69\x6F\x6E\x73","\x72\x65\x76\x65\x72\x73\x65\x50\x6F\x72\x74\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x73","\x72\x6F\x75\x74\x65\x50\x61\x74\x74\x65\x72\x6E\x73","\x77\x61\x79\x50\x6F\x69\x6E\x74\x73\x31","\x64\x69\x72\x56\x65\x63\x74\x6F\x72\x73","\x54\x41\x52\x47\x45\x54\x5F\x4D\x41\x53\x4B","\x53\x4F\x55\x52\x43\x45\x5F\x4D\x41\x53\x4B","\x53\x49\x44\x45\x5F\x4D\x41\x53\x4B","\x43\x45\x4E\x54\x45\x52\x5F\x4D\x41\x53\x4B","\x76\x61\x6C\x75\x65\x73","\x70\x75\x74\x56\x61\x6C\x75\x65","\x67\x72\x61\x70\x68\x42\x6F\x75\x6E\x64\x73","\x45\x4D\x50\x54\x59\x5F\x50\x4F\x49\x4E\x54","\x75\x70\x64\x61\x74\x69\x6E\x67\x44\x6F\x63\x75\x6D\x65\x6E\x74\x52\x65\x73\x6F\x75\x72\x63\x65","\x75\x70\x64\x61\x74\x69\x6E\x67\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x61\x6C\x6C\x6F\x77\x45\x76\x61\x6C","\x63\x61\x70\x74\x75\x72\x65\x44\x6F\x63\x75\x6D\x65\x6E\x74\x47\x65\x73\x74\x75\x72\x65","\x6F\x70\x74\x69\x6D\x69\x7A\x65\x56\x6D\x6C\x52\x65\x66\x6C\x6F\x77\x73","\x72\x65\x6E\x64\x65\x72\x69\x6E\x67","\x75\x70\x64\x61\x74\x65\x53\x74\x79\x6C\x65","\x73\x65\x74\x47\x72\x61\x70\x68\x42\x6F\x75\x6E\x64\x73","\x73\x65\x74\x43\x75\x72\x72\x65\x6E\x74\x52\x6F\x6F\x74","\x73\x69\x7A\x65\x44\x69\x64\x43\x68\x61\x6E\x67\x65","\x72\x65\x76\x61\x6C\x69\x64\x61\x74\x65","\x70\x72\x65\x76\x69\x6F\x75\x73\x53\x63\x61\x6C\x65","\x70\x72\x65\x76\x69\x6F\x75\x73\x54\x72\x61\x6E\x73\x6C\x61\x74\x65","\x73\x65\x74\x53\x63\x61\x6C\x65","\x69\x6E\x76\x61\x6C\x69\x64\x61\x74\x65","\x76\x61\x6C\x69\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65\x53\x74\x61\x74\x65","\x6D\x78\x47\x72\x61\x70\x68\x56\x69\x65\x77\x2E\x76\x61\x6C\x69\x64\x61\x74\x65","\x76\x61\x6C\x69\x64\x61\x74\x65\x42\x6F\x75\x6E\x64\x73","\x76\x61\x6C\x69\x64\x61\x74\x65\x50\x6F\x69\x6E\x74\x73","\x76\x61\x6C\x69\x64\x61\x74\x65\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x63\x72\x65\x61\x74\x65\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x67\x65\x53\x68\x61\x70\x65","\x67\x65\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x72\x65\x64\x72\x61\x77\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x70\x61\x67\x65\x56\x69\x73\x69\x62\x6C\x65","\x67\x65\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x67\x65\x42\x6F\x75\x6E\x64\x73","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x67\x65\x53\x68\x61\x70\x65","\x74\x6F\x6F\x6C\x74\x69\x70\x48\x61\x6E\x64\x6C\x65\x72","\x69\x73\x48\x69\x64\x65\x4F\x6E\x48\x6F\x76\x65\x72","\x53\x54\x59\x4C\x45\x5F\x52\x4F\x54\x41\x54\x49\x4F\x4E","\x75\x70\x64\x61\x74\x65\x56\x65\x72\x74\x65\x78\x4C\x61\x62\x65\x6C\x4F\x66\x66\x73\x65\x74","\x67\x65\x74\x43\x68\x69\x6C\x64\x4F\x66\x66\x73\x65\x74\x46\x6F\x72\x43\x65\x6C\x6C","\x75\x70\x64\x61\x74\x65\x46\x69\x78\x65\x64\x54\x65\x72\x6D\x69\x6E\x61\x6C\x50\x6F\x69\x6E\x74\x73","\x75\x70\x64\x61\x74\x65\x50\x6F\x69\x6E\x74\x73","\x75\x70\x64\x61\x74\x65\x46\x6C\x6F\x61\x74\x69\x6E\x67\x54\x65\x72\x6D\x69\x6E\x61\x6C\x50\x6F\x69\x6E\x74\x73","\x75\x70\x64\x61\x74\x65\x45\x64\x67\x65\x42\x6F\x75\x6E\x64\x73","\x75\x70\x64\x61\x74\x65\x45\x64\x67\x65\x4C\x61\x62\x65\x6C\x4F\x66\x66\x73\x65\x74","\x63\x68\x69\x6C\x64\x4D\x6F\x76\x65\x64","\x69\x73\x52\x65\x6E\x64\x65\x72\x69\x6E\x67","\x67\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74","\x75\x70\x64\x61\x74\x65\x46\x69\x78\x65\x64\x54\x65\x72\x6D\x69\x6E\x61\x6C\x50\x6F\x69\x6E\x74","\x67\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x50\x6F\x69\x6E\x74","\x67\x65\x74\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x67\x65\x74\x54\x65\x72\x6D\x69\x6E\x61\x6C\x50\x6F\x72\x74","\x64\x65\x66\x61\x75\x6C\x74\x4C\x6F\x6F\x70\x53\x74\x79\x6C\x65","\x53\x54\x59\x4C\x45\x5F\x45\x44\x47\x45","\x69\x73\x41\x6C\x6C\x6F\x77\x45\x76\x61\x6C","\x75\x70\x64\x61\x74\x65\x46\x6C\x6F\x61\x74\x69\x6E\x67\x54\x65\x72\x6D\x69\x6E\x61\x6C\x50\x6F\x69\x6E\x74","\x67\x65\x74\x4E\x65\x78\x74\x50\x6F\x69\x6E\x74","\x69\x73\x4F\x72\x74\x68\x6F\x67\x6F\x6E\x61\x6C","\x53\x54\x59\x4C\x45\x5F\x50\x45\x52\x49\x4D\x45\x54\x45\x52\x5F\x53\x50\x41\x43\x49\x4E\x47","\x53\x54\x59\x4C\x45\x5F\x53\x4F\x55\x52\x43\x45\x5F\x50\x45\x52\x49\x4D\x45\x54\x45\x52\x5F\x53\x50\x41\x43\x49\x4E\x47","\x53\x54\x59\x4C\x45\x5F\x54\x41\x52\x47\x45\x54\x5F\x50\x45\x52\x49\x4D\x45\x54\x45\x52\x5F\x53\x50\x41\x43\x49\x4E\x47","\x67\x65\x74\x50\x65\x72\x69\x6D\x65\x74\x65\x72\x50\x6F\x69\x6E\x74","\x53\x54\x59\x4C\x45\x5F\x53\x4F\x55\x52\x43\x45\x5F\x50\x4F\x52\x54","\x53\x54\x59\x4C\x45\x5F\x54\x41\x52\x47\x45\x54\x5F\x50\x4F\x52\x54","\x67\x65\x74\x50\x65\x72\x69\x6D\x65\x74\x65\x72\x46\x75\x6E\x63\x74\x69\x6F\x6E","\x53\x54\x59\x4C\x45\x5F\x52\x4F\x55\x54\x49\x4E\x47\x5F\x43\x45\x4E\x54\x45\x52\x5F\x58","\x53\x54\x59\x4C\x45\x5F\x52\x4F\x55\x54\x49\x4E\x47\x5F\x43\x45\x4E\x54\x45\x52\x5F\x59","\x67\x65\x74\x52\x65\x6C\x61\x74\x69\x76\x65\x50\x6F\x69\x6E\x74","\x72\x65\x6C\x61\x74\x69\x76\x65\x43\x63\x77","\x73\x65\x74\x52\x65\x6E\x64\x65\x72\x69\x6E\x67","\x73\x65\x74\x41\x6C\x6C\x6F\x77\x45\x76\x61\x6C","\x67\x65\x74\x53\x74\x61\x74\x65\x73","\x67\x65\x74\x43\x65\x6C\x6C\x53\x74\x61\x74\x65\x73","\x69\x73\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72\x45\x76\x65\x6E\x74","\x69\x73\x53\x63\x72\x6F\x6C\x6C\x45\x76\x65\x6E\x74","\x70\x61\x6E\x6E\x69\x6E\x67\x48\x61\x6E\x64\x6C\x65\x72","\x6D\x6F\x76\x65\x48\x61\x6E\x64\x6C\x65\x72","\x65\x6E\x64\x48\x61\x6E\x64\x6C\x65\x72","\x63\x72\x65\x61\x74\x65\x48\x74\x6D\x6C\x50\x61\x6E\x65","\x75\x70\x64\x61\x74\x65\x48\x74\x6D\x6C\x43\x61\x6E\x76\x61\x73\x53\x69\x7A\x65","\x63\x72\x65\x61\x74\x65\x56\x6D\x6C\x50\x61\x6E\x65","\x63\x6F\x6F\x72\x64\x6F\x72\x69\x67\x69\x6E","\x30\x2C\x30","\x73\x74\x61\x74\x69\x63","\x69\x73\x55\x70","\x67\x65\x74\x54\x72\x61\x6E\x73\x6C\x61\x74\x65\x46\x6F\x72\x52\x6F\x6F\x74","\x55\x50","\x44\x4F\x57\x4E","\x6D\x6F\x75\x73\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x72\x65\x6E\x64\x65\x72\x48\x69\x6E\x74","\x52\x45\x4E\x44\x45\x52\x49\x4E\x47\x5F\x48\x49\x4E\x54\x5F\x45\x58\x41\x43\x54","\x52\x45\x4E\x44\x45\x52\x49\x4E\x47\x5F\x48\x49\x4E\x54\x5F\x46\x41\x53\x54\x45\x53\x54","\x52\x45\x4E\x44\x45\x52\x49\x4E\x47\x5F\x48\x49\x4E\x54\x5F\x46\x41\x53\x54\x45\x52","\x44\x49\x41\x4C\x45\x43\x54\x5F\x4D\x49\x58\x45\x44\x48\x54\x4D\x4C","\x6D\x75\x6C\x74\x69\x70\x6C\x69\x63\x69\x74\x69\x65\x73","\x69\x6D\x61\x67\x65\x42\x75\x6E\x64\x6C\x65\x73","\x63\x72\x65\x61\x74\x65\x43\x65\x6C\x6C\x52\x65\x6E\x64\x65\x72\x65\x72","\x63\x72\x65\x61\x74\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x4D\x6F\x64\x65\x6C","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x4D\x6F\x64\x65\x6C","\x63\x72\x65\x61\x74\x65\x53\x74\x79\x6C\x65\x73\x68\x65\x65\x74","\x73\x65\x74\x53\x74\x79\x6C\x65\x73\x68\x65\x65\x74","\x63\x72\x65\x61\x74\x65\x47\x72\x61\x70\x68\x56\x69\x65\x77","\x67\x72\x61\x70\x68\x4D\x6F\x64\x65\x6C\x43\x68\x61\x6E\x67\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x63\x72\x65\x61\x74\x65\x48\x61\x6E\x64\x6C\x65\x72\x73","\x2F\x72\x65\x73\x6F\x75\x72\x63\x65\x73\x2F\x67\x72\x61\x70\x68","\x45\x4D\x50\x54\x59\x5F\x41\x52\x52\x41\x59","\x63\x65\x6C\x6C\x45\x64\x69\x74\x6F\x72","\x70\x6F\x72\x74\x73\x45\x6E\x61\x62\x6C\x65\x64","\x64\x6F\x75\x62\x6C\x65\x54\x61\x70\x45\x6E\x61\x62\x6C\x65\x64","\x64\x6F\x75\x62\x6C\x65\x54\x61\x70\x54\x69\x6D\x65\x6F\x75\x74","\x64\x6F\x75\x62\x6C\x65\x54\x61\x70\x54\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x6C\x61\x73\x74\x54\x6F\x75\x63\x68\x59","\x74\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x64\x65\x66\x61\x75\x6C\x74\x4F\x76\x65\x72\x6C\x61\x70","\x64\x65\x66\x61\x75\x6C\x74\x50\x61\x72\x65\x6E\x74","\x61\x6C\x74\x65\x72\x6E\x61\x74\x65\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x70\x61\x67\x65\x42\x72\x65\x61\x6B\x73\x56\x69\x73\x69\x62\x6C\x65","\x70\x61\x67\x65\x42\x72\x65\x61\x6B\x43\x6F\x6C\x6F\x72","\x70\x61\x67\x65\x42\x72\x65\x61\x6B\x44\x61\x73\x68\x65\x64","\x6D\x69\x6E\x50\x61\x67\x65\x42\x72\x65\x61\x6B\x44\x69\x73\x74","\x70\x72\x65\x66\x65\x72\x50\x61\x67\x65\x53\x69\x7A\x65","\x65\x73\x63\x61\x70\x65\x45\x6E\x61\x62\x6C\x65\x64","\x69\x6E\x76\x6F\x6B\x65\x73\x53\x74\x6F\x70\x43\x65\x6C\x6C\x45\x64\x69\x74\x69\x6E\x67","\x65\x6E\x74\x65\x72\x53\x74\x6F\x70\x73\x43\x65\x6C\x6C\x45\x64\x69\x74\x69\x6E\x67","\x75\x73\x65\x53\x63\x72\x6F\x6C\x6C\x62\x61\x72\x73\x46\x6F\x72\x50\x61\x6E\x6E\x69\x6E\x67","\x65\x78\x70\x6F\x72\x74\x45\x6E\x61\x62\x6C\x65\x64","\x69\x6D\x70\x6F\x72\x74\x45\x6E\x61\x62\x6C\x65\x64","\x63\x65\x6C\x6C\x73\x4C\x6F\x63\x6B\x65\x64","\x63\x65\x6C\x6C\x73\x43\x6C\x6F\x6E\x65\x61\x62\x6C\x65","\x63\x65\x6C\x6C\x73\x45\x64\x69\x74\x61\x62\x6C\x65","\x63\x65\x6C\x6C\x73\x44\x65\x6C\x65\x74\x61\x62\x6C\x65","\x63\x65\x6C\x6C\x73\x4D\x6F\x76\x61\x62\x6C\x65","\x65\x64\x67\x65\x4C\x61\x62\x65\x6C\x73\x4D\x6F\x76\x61\x62\x6C\x65","\x76\x65\x72\x74\x65\x78\x4C\x61\x62\x65\x6C\x73\x4D\x6F\x76\x61\x62\x6C\x65","\x64\x72\x6F\x70\x45\x6E\x61\x62\x6C\x65\x64","\x73\x70\x6C\x69\x74\x45\x6E\x61\x62\x6C\x65\x64","\x63\x65\x6C\x6C\x73\x52\x65\x73\x69\x7A\x61\x62\x6C\x65","\x63\x65\x6C\x6C\x73\x42\x65\x6E\x64\x61\x62\x6C\x65","\x63\x65\x6C\x6C\x73\x53\x65\x6C\x65\x63\x74\x61\x62\x6C\x65","\x63\x65\x6C\x6C\x73\x44\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x61\x75\x74\x6F\x53\x69\x7A\x65\x43\x65\x6C\x6C\x73","\x74\x69\x6D\x65\x72\x41\x75\x74\x6F\x53\x63\x72\x6F\x6C\x6C","\x61\x6C\x6C\x6F\x77\x41\x75\x74\x6F\x50\x61\x6E\x6E\x69\x6E\x67","\x69\x67\x6E\x6F\x72\x65\x53\x63\x72\x6F\x6C\x6C\x62\x61\x72\x73","\x6D\x61\x78\x69\x6D\x75\x6D\x47\x72\x61\x70\x68\x42\x6F\x75\x6E\x64\x73","\x6D\x69\x6E\x69\x6D\x75\x6D\x47\x72\x61\x70\x68\x53\x69\x7A\x65","\x6D\x69\x6E\x69\x6D\x75\x6D\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72\x53\x69\x7A\x65","\x6D\x61\x78\x69\x6D\x75\x6D\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72\x53\x69\x7A\x65","\x72\x65\x73\x69\x7A\x65\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x61\x6C\x6C\x6F\x77\x4E\x65\x67\x61\x74\x69\x76\x65\x43\x6F\x6F\x72\x64\x69\x6E\x61\x74\x65\x73","\x63\x6F\x6E\x73\x74\x72\x61\x69\x6E\x43\x68\x69\x6C\x64\x72\x65\x6E","\x65\x78\x74\x65\x6E\x64\x50\x61\x72\x65\x6E\x74\x73","\x65\x78\x74\x65\x6E\x64\x50\x61\x72\x65\x6E\x74\x73\x4F\x6E\x41\x64\x64","\x63\x6F\x6C\x6C\x61\x70\x73\x65\x54\x6F\x50\x72\x65\x66\x65\x72\x72\x65\x64\x53\x69\x7A\x65","\x7A\x6F\x6F\x6D\x46\x61\x63\x74\x6F\x72","\x6B\x65\x65\x70\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x56\x69\x73\x69\x62\x6C\x65\x4F\x6E\x5A\x6F\x6F\x6D","\x63\x65\x6E\x74\x65\x72\x5A\x6F\x6F\x6D","\x72\x65\x73\x65\x74\x56\x69\x65\x77\x4F\x6E\x52\x6F\x6F\x74\x43\x68\x61\x6E\x67\x65","\x72\x65\x73\x65\x74\x45\x64\x67\x65\x73\x4F\x6E\x52\x65\x73\x69\x7A\x65","\x72\x65\x73\x65\x74\x45\x64\x67\x65\x73\x4F\x6E\x4D\x6F\x76\x65","\x72\x65\x73\x65\x74\x45\x64\x67\x65\x73\x4F\x6E\x43\x6F\x6E\x6E\x65\x63\x74","\x61\x6C\x6C\x6F\x77\x4C\x6F\x6F\x70\x73","\x4C\x6F\x6F\x70","\x6D\x75\x6C\x74\x69\x67\x72\x61\x70\x68","\x63\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65\x45\x64\x67\x65\x73","\x61\x6C\x6C\x6F\x77\x44\x61\x6E\x67\x6C\x69\x6E\x67\x45\x64\x67\x65\x73","\x63\x6C\x6F\x6E\x65\x49\x6E\x76\x61\x6C\x69\x64\x45\x64\x67\x65\x73","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74\x4F\x6E\x4D\x6F\x76\x65","\x6C\x61\x62\x65\x6C\x73\x56\x69\x73\x69\x62\x6C\x65","\x68\x74\x6D\x6C\x4C\x61\x62\x65\x6C\x73","\x73\x77\x69\x6D\x6C\x61\x6E\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x45\x6E\x61\x62\x6C\x65\x64","\x73\x77\x69\x6D\x6C\x61\x6E\x65\x4E\x65\x73\x74\x69\x6E\x67","\x6D\x69\x6E\x46\x69\x74\x53\x63\x61\x6C\x65","\x6D\x61\x78\x46\x69\x74\x53\x63\x61\x6C\x65","\x63\x6F\x6C\x6C\x61\x70\x73\x65\x64\x49\x6D\x61\x67\x65","\x2F\x63\x6F\x6C\x6C\x61\x70\x73\x65\x64\x2E\x67\x69\x66","\x65\x78\x70\x61\x6E\x64\x65\x64\x49\x6D\x61\x67\x65","\x2F\x65\x78\x70\x61\x6E\x64\x65\x64\x2E\x67\x69\x66","\x77\x61\x72\x6E\x69\x6E\x67\x49\x6D\x61\x67\x65","\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x6D\x78\x67\x72\x61\x70\x68\x2F\x69\x6D\x61\x67\x65\x73\x2F\x77\x61\x72\x6E\x69\x6E\x67\x2E\x67\x69\x66","\x61\x6C\x72\x65\x61\x64\x79\x43\x6F\x6E\x6E\x65\x63\x74\x65\x64\x52\x65\x73\x6F\x75\x72\x63\x65","\x61\x6C\x72\x65\x61\x64\x79\x43\x6F\x6E\x6E\x65\x63\x74\x65\x64","\x63\x6F\x6E\x74\x61\x69\x6E\x73\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x45\x72\x72\x6F\x72\x73\x52\x65\x73\x6F\x75\x72\x63\x65","\x63\x6F\x6E\x74\x61\x69\x6E\x73\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x45\x72\x72\x6F\x72\x73","\x63\x6F\x6C\x6C\x61\x70\x73\x65\x45\x78\x70\x61\x6E\x64\x52\x65\x73\x6F\x75\x72\x63\x65","\x63\x6F\x6C\x6C\x61\x70\x73\x65\x2D\x65\x78\x70\x61\x6E\x64","\x63\x72\x65\x61\x74\x65\x43\x65\x6C\x6C\x45\x64\x69\x74\x6F\x72","\x75\x6E\x6C\x6F\x61\x64","\x73\x65\x6C\x65\x63\x74\x73\x74\x61\x72\x74","\x3C\x76\x3A\x67\x72\x6F\x75\x70\x20\x73\x74\x79\x6C\x65\x3D\x22\x44\x49\x53\x50\x4C\x41\x59\x3A\x20\x6E\x6F\x6E\x65\x3B\x22\x3E\x3C\x2F\x76\x3A\x67\x72\x6F\x75\x70\x3E","\x70\x61\x6E\x6E\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73\x48\x61\x6E\x64\x6C\x65\x72","\x63\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x48\x61\x6E\x64\x6C\x65\x72","\x67\x65\x74\x53\x74\x79\x6C\x65\x73\x68\x65\x65\x74","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x4D\x6F\x64\x65\x6C","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73\x46\x6F\x72\x43\x68\x61\x6E\x67\x65\x73","\x70\x72\x6F\x63\x65\x73\x73\x43\x68\x61\x6E\x67\x65","\x67\x65\x74\x52\x65\x6D\x6F\x76\x65\x64\x43\x65\x6C\x6C\x73\x46\x6F\x72\x43\x68\x61\x6E\x67\x65\x73","\x72\x65\x6D\x6F\x76\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x63\x6C\x65\x61\x72\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x72\x65\x6D\x6F\x76\x65\x53\x74\x61\x74\x65\x46\x6F\x72\x43\x65\x6C\x6C","\x68\x6F\x6D\x65","\x61\x64\x64\x43\x65\x6C\x6C\x4F\x76\x65\x72\x6C\x61\x79","\x72\x65\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x4F\x76\x65\x72\x6C\x61\x79","\x72\x65\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x4F\x76\x65\x72\x6C\x61\x79\x73","\x63\x6C\x65\x61\x72\x43\x65\x6C\x6C\x4F\x76\x65\x72\x6C\x61\x79\x73","\x73\x65\x74\x43\x65\x6C\x6C\x57\x61\x72\x6E\x69\x6E\x67","\x3C\x66\x6F\x6E\x74\x20\x63\x6F\x6C\x6F\x72\x3D\x72\x65\x64\x3E","\x3C\x2F\x66\x6F\x6E\x74\x3E","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x73\x74\x61\x72\x74\x45\x64\x69\x74\x69\x6E\x67\x41\x74\x43\x65\x6C\x6C","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x69\x73\x43\x65\x6C\x6C\x45\x64\x69\x74\x61\x62\x6C\x65","\x63\x6F\x6E\x76\x65\x72\x74\x56\x61\x6C\x75\x65\x54\x6F\x53\x74\x72\x69\x6E\x67","\x69\x73\x41\x75\x74\x6F\x53\x69\x7A\x65\x43\x65\x6C\x6C","\x63\x65\x6C\x6C\x4C\x61\x62\x65\x6C\x43\x68\x61\x6E\x67\x65\x64","\x63\x65\x6C\x6C\x53\x69\x7A\x65\x55\x70\x64\x61\x74\x65\x64","\x68\x61\x6E\x64\x6C\x65\x72","\x73\x65\x6C\x65\x63\x74\x43\x65\x6C\x6C\x46\x6F\x72\x45\x76\x65\x6E\x74","\x69\x73\x53\x77\x69\x6D\x6C\x61\x6E\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x45\x6E\x61\x62\x6C\x65\x64","\x67\x65\x74\x53\x77\x69\x6D\x6C\x61\x6E\x65\x41\x74","\x69\x73\x54\x6F\x67\x67\x6C\x65\x45\x76\x65\x6E\x74","\x70\x61\x6E\x6E\x69\x6E\x67\x4D\x61\x6E\x61\x67\x65\x72","\x63\x72\x65\x61\x74\x65\x50\x61\x6E\x6E\x69\x6E\x67\x4D\x61\x6E\x61\x67\x65\x72","\x67\x65\x74\x42\x6F\x72\x64\x65\x72\x53\x69\x7A\x65\x73","\x74\x68\x69\x6E","\x6D\x65\x64\x69\x75\x6D","\x74\x68\x69\x63\x6B","\x62\x6F\x72\x64\x65\x72\x4C\x65\x66\x74\x57\x69\x64\x74\x68","\x62\x6F\x72\x64\x65\x72\x54\x6F\x70\x57\x69\x64\x74\x68","\x70\x61\x64\x64\x69\x6E\x67\x54\x6F\x70","\x62\x6F\x72\x64\x65\x72\x52\x69\x67\x68\x74\x57\x69\x64\x74\x68","\x62\x6F\x72\x64\x65\x72\x42\x6F\x74\x74\x6F\x6D\x57\x69\x64\x74\x68","\x70\x61\x64\x64\x69\x6E\x67\x42\x6F\x74\x74\x6F\x6D","\x67\x65\x74\x50\x72\x65\x66\x65\x72\x72\x65\x64\x50\x61\x67\x65\x53\x69\x7A\x65","\x67\x65\x74\x42\x6F\x72\x64\x65\x72","\x64\x6F\x52\x65\x73\x69\x7A\x65\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x6D\x69\x6E\x57\x69\x64\x74\x68","\x6D\x69\x6E\x48\x65\x69\x67\x68\x74","\x75\x70\x64\x61\x74\x65\x50\x61\x67\x65\x42\x72\x65\x61\x6B\x73","\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C\x50\x61\x67\x65\x42\x72\x65\x61\x6B\x73","\x76\x65\x72\x74\x69\x63\x61\x6C\x50\x61\x67\x65\x42\x72\x65\x61\x6B\x73","\x70\x6F\x73\x74\x50\x72\x6F\x63\x65\x73\x73\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65","\x53\x54\x59\x4C\x45\x5F\x49\x4D\x41\x47\x45","\x67\x65\x74\x49\x6D\x61\x67\x65\x46\x72\x6F\x6D\x42\x75\x6E\x64\x6C\x65\x73","\x64\x61\x74\x61\x3A\x69\x6D\x61\x67\x65\x2F","\x3B\x62\x61\x73\x65\x36\x34\x2C","\x73\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65","\x74\x6F\x67\x67\x6C\x65\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65","\x74\x6F\x67\x67\x6C\x65\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x73","\x74\x6F\x67\x67\x6C\x65\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x46\x6C\x61\x67\x73","\x73\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x46\x6C\x61\x67\x73","\x61\x64\x64\x49\x6D\x61\x67\x65\x42\x75\x6E\x64\x6C\x65","\x72\x65\x6D\x6F\x76\x65\x49\x6D\x61\x67\x65\x42\x75\x6E\x64\x6C\x65","\x62\x61\x63\x6B","\x67\x65\x74\x43\x65\x6C\x6C\x73\x46\x6F\x72\x47\x72\x6F\x75\x70","\x63\x72\x65\x61\x74\x65\x47\x72\x6F\x75\x70\x43\x65\x6C\x6C","\x67\x65\x74\x42\x6F\x75\x6E\x64\x73\x46\x6F\x72\x47\x72\x6F\x75\x70","\x61\x64\x64\x41\x6C\x6C\x45\x64\x67\x65\x73","\x67\x65\x74\x45\x64\x67\x65\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x45\x72\x72\x6F\x72","\x69\x6E\x73\x65\x72\x74\x56\x65\x72\x74\x65\x78","\x63\x72\x65\x61\x74\x65\x56\x65\x72\x74\x65\x78","\x63\x72\x65\x61\x74\x65\x45\x64\x67\x65","\x61\x64\x64\x45\x64\x67\x65","\x69\x73\x41\x6C\x6C\x6F\x77\x4E\x65\x67\x61\x74\x69\x76\x65\x43\x6F\x6F\x72\x64\x69\x6E\x61\x74\x65\x73","\x69\x73\x45\x78\x74\x65\x6E\x64\x50\x61\x72\x65\x6E\x74\x73\x4F\x6E\x41\x64\x64","\x69\x73\x45\x78\x74\x65\x6E\x64\x50\x61\x72\x65\x6E\x74","\x65\x78\x74\x65\x6E\x64\x50\x61\x72\x65\x6E\x74","\x63\x6F\x6E\x73\x74\x72\x61\x69\x6E\x43\x68\x69\x6C\x64","\x67\x65\x74\x44\x65\x6C\x65\x74\x61\x62\x6C\x65\x43\x65\x6C\x6C\x73","\x69\x6E\x63\x6C\x75\x64\x65\x45\x64\x67\x65\x73","\x6E\x65\x77\x45\x64\x67\x65","\x67\x65\x74\x46\x6F\x6C\x64\x61\x62\x6C\x65\x43\x65\x6C\x6C\x73","\x63\x6F\x6C\x6C\x61\x70\x73\x65","\x72\x65\x63\x75\x72\x73\x65","\x69\x73\x43\x65\x6C\x6C\x46\x6F\x6C\x64\x61\x62\x6C\x65","\x73\x77\x61\x70\x42\x6F\x75\x6E\x64\x73","\x75\x70\x64\x61\x74\x65\x41\x6C\x74\x65\x72\x6E\x61\x74\x65\x42\x6F\x75\x6E\x64\x73","\x67\x65\x74\x50\x72\x65\x66\x65\x72\x72\x65\x64\x53\x69\x7A\x65\x46\x6F\x72\x43\x65\x6C\x6C","\x67\x65\x74\x41\x6C\x6C\x45\x64\x67\x65\x73","\x69\x67\x6E\x6F\x72\x65\x43\x68\x69\x6C\x64\x72\x65\x6E","\x53\x48\x41\x50\x45\x5F\x4C\x41\x42\x45\x4C","\x53\x54\x59\x4C\x45\x5F\x49\x4D\x41\x47\x45\x5F\x57\x49\x44\x54\x48","\x53\x54\x59\x4C\x45\x5F\x49\x4D\x41\x47\x45\x5F\x48\x45\x49\x47\x48\x54","\x67\x65\x74\x53\x69\x7A\x65\x46\x6F\x72\x53\x74\x72\x69\x6E\x67","\x72\x65\x73\x69\x7A\x65\x43\x65\x6C\x6C","\x69\x73\x43\x6C\x6F\x6E\x65\x49\x6E\x76\x61\x6C\x69\x64\x45\x64\x67\x65\x73","\x73\x65\x74\x41\x6C\x6C\x6F\x77\x4E\x65\x67\x61\x74\x69\x76\x65\x43\x6F\x6F\x72\x64\x69\x6E\x61\x74\x65\x73","\x69\x73\x44\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74\x4F\x6E\x4D\x6F\x76\x65","\x69\x73\x41\x6C\x6C\x6F\x77\x44\x61\x6E\x67\x6C\x69\x6E\x67\x45\x64\x67\x65\x73","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74\x47\x72\x61\x70\x68","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x43\x65\x6C\x6C","\x67\x65\x74\x43\x65\x6C\x6C\x43\x6F\x6E\x74\x61\x69\x6E\x6D\x65\x6E\x74\x41\x72\x65\x61","\x67\x65\x74\x43\x75\x72\x72\x65\x6E\x74\x52\x6F\x6F\x74","\x67\x65\x74\x4D\x61\x78\x69\x6D\x75\x6D\x47\x72\x61\x70\x68\x42\x6F\x75\x6E\x64\x73","\x69\x73\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x43\x68\x69\x6C\x64","\x67\x65\x74\x4F\x76\x65\x72\x6C\x61\x70","\x67\x65\x74\x41\x6C\x6C\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x73","\x53\x54\x59\x4C\x45\x5F\x45\x58\x49\x54\x5F\x58","\x53\x54\x59\x4C\x45\x5F\x45\x4E\x54\x52\x59\x5F\x58","\x53\x54\x59\x4C\x45\x5F\x45\x58\x49\x54\x5F\x59","\x53\x54\x59\x4C\x45\x5F\x45\x4E\x54\x52\x59\x5F\x59","\x53\x54\x59\x4C\x45\x5F\x45\x58\x49\x54\x5F\x50\x45\x52\x49\x4D\x45\x54\x45\x52","\x53\x54\x59\x4C\x45\x5F\x45\x4E\x54\x52\x59\x5F\x50\x45\x52\x49\x4D\x45\x54\x45\x52","\x73\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74","\x70\x6F\x69\x6E\x74","\x53\x54\x59\x4C\x45\x5F\x46\x4C\x49\x50\x48","\x53\x54\x59\x4C\x45\x5F\x46\x4C\x49\x50\x56","\x69\x73\x50\x6F\x72\x74\x73\x45\x6E\x61\x62\x6C\x65\x64","\x67\x65\x74\x54\x65\x72\x6D\x69\x6E\x61\x6C\x46\x6F\x72\x50\x6F\x72\x74","\x69\x73\x43\x65\x6C\x6C\x44\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x65\x6E\x74\x65\x72\x47\x72\x6F\x75\x70","\x69\x73\x56\x61\x6C\x69\x64\x52\x6F\x6F\x74","\x65\x78\x69\x74\x47\x72\x6F\x75\x70","\x67\x65\x74\x43\x65\x6C\x6C\x42\x6F\x75\x6E\x64\x73","\x73\x68\x69\x66\x74\x50\x72\x65\x76\x69\x65\x77\x31","\x73\x68\x69\x66\x74\x50\x72\x65\x76\x69\x65\x77\x32","\x7A\x6F\x6F\x6D\x49\x6E","\x7A\x6F\x6F\x6D\x4F\x75\x74","\x7A\x6F\x6F\x6D\x41\x63\x74\x75\x61\x6C","\x7A\x6F\x6F\x6D\x54\x6F","\x73\x63\x72\x6F\x6C\x6C\x52\x65\x63\x74\x54\x6F\x56\x69\x73\x69\x62\x6C\x65","\x7A\x6F\x6F\x6D\x54\x6F\x52\x65\x63\x74","\x73\x63\x72\x6F\x6C\x6C\x43\x65\x6C\x6C\x54\x6F\x56\x69\x73\x69\x62\x6C\x65","\x69\x73\x43\x65\x6C\x6C\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x53\x54\x59\x4C\x45\x5F\x4F\x52\x54\x48\x4F\x47\x4F\x4E\x41\x4C","\x53\x65\x67\x6D\x65\x6E\x74\x43\x6F\x6E\x6E\x65\x63\x74\x6F\x72","\x45\x6C\x62\x6F\x77\x43\x6F\x6E\x6E\x65\x63\x74\x6F\x72","\x53\x69\x64\x65\x54\x6F\x53\x69\x64\x65","\x54\x6F\x70\x54\x6F\x42\x6F\x74\x74\x6F\x6D","\x45\x6E\x74\x69\x74\x79\x52\x65\x6C\x61\x74\x69\x6F\x6E","\x4F\x72\x74\x68\x43\x6F\x6E\x6E\x65\x63\x74\x6F\x72","\x69\x73\x4C\x6F\x6F\x70","\x69\x73\x43\x6C\x6F\x6E\x65\x45\x76\x65\x6E\x74","\x49\x53\x5F\x4D\x41\x43","\x69\x73\x4D\x65\x74\x61\x44\x6F\x77\x6E","\x69\x73\x41\x6C\x74\x44\x6F\x77\x6E","\x69\x73\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x65\x64\x45\x76\x65\x6E\x74","\x69\x73\x46\x6F\x72\x63\x65\x4D\x61\x72\x71\x75\x65\x65\x45\x76\x65\x6E\x74","\x76\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x41\x6C\x65\x72\x74","\x69\x73\x45\x64\x67\x65\x56\x61\x6C\x69\x64","\x69\x73\x56\x61\x6C\x69\x64\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E","\x63\x68\x65\x63\x6B","\x76\x61\x6C\x69\x64\x61\x74\x65\x45\x64\x67\x65","\x76\x61\x6C\x69\x64\x61\x74\x65\x47\x72\x61\x70\x68","\x67\x65\x74\x43\x65\x6C\x6C\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x45\x72\x72\x6F\x72","\x76\x61\x6C\x69\x64\x61\x74\x65\x43\x65\x6C\x6C","\x61\x74\x74\x72","\x63\x6F\x75\x6E\x74\x45\x72\x72\x6F\x72","\x73\x65\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x74\x6F\x53\x74\x72\x69\x6E\x67","\x69\x73\x48\x74\x6D\x6C\x4C\x61\x62\x65\x6C\x73","\x73\x65\x74\x48\x74\x6D\x6C\x4C\x61\x62\x65\x6C\x73","\x53\x54\x59\x4C\x45\x5F\x57\x48\x49\x54\x45\x5F\x53\x50\x41\x43\x45","\x67\x65\x74\x54\x6F\x6F\x6C\x74\x69\x70","\x67\x65\x74\x48\x61\x6E\x64\x6C\x65\x72","\x67\x65\x74\x54\x6F\x6F\x6C\x74\x69\x70\x46\x6F\x72\x4E\x6F\x64\x65","\x67\x65\x74\x54\x6F\x6F\x6C\x74\x69\x70\x46\x6F\x72\x43\x65\x6C\x6C","\x67\x65\x74\x43\x75\x72\x73\x6F\x72\x46\x6F\x72\x43\x65\x6C\x6C","\x53\x54\x59\x4C\x45\x5F\x49\x4E\x44\x49\x43\x41\x54\x4F\x52\x5F\x43\x4F\x4C\x4F\x52","\x53\x54\x59\x4C\x45\x5F\x49\x4E\x44\x49\x43\x41\x54\x4F\x52\x5F\x47\x52\x41\x44\x49\x45\x4E\x54\x43\x4F\x4C\x4F\x52","\x53\x54\x59\x4C\x45\x5F\x49\x4E\x44\x49\x43\x41\x54\x4F\x52\x5F\x53\x48\x41\x50\x45","\x53\x54\x59\x4C\x45\x5F\x49\x4E\x44\x49\x43\x41\x54\x4F\x52\x5F\x49\x4D\x41\x47\x45","\x73\x65\x74\x42\x6F\x72\x64\x65\x72","\x53\x48\x41\x50\x45\x5F\x53\x57\x49\x4D\x4C\x41\x4E\x45","\x69\x73\x52\x65\x73\x69\x7A\x65\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x73\x65\x74\x52\x65\x73\x69\x7A\x65\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x69\x73\x45\x73\x63\x61\x70\x65\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x45\x73\x63\x61\x70\x65\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x49\x6E\x76\x6F\x6B\x65\x73\x53\x74\x6F\x70\x43\x65\x6C\x6C\x45\x64\x69\x74\x69\x6E\x67","\x73\x65\x74\x45\x6E\x74\x65\x72\x53\x74\x6F\x70\x73\x43\x65\x6C\x6C\x45\x64\x69\x74\x69\x6E\x67","\x69\x73\x43\x65\x6C\x6C\x4C\x6F\x63\x6B\x65\x64","\x69\x73\x43\x65\x6C\x6C\x73\x4C\x6F\x63\x6B\x65\x64","\x73\x65\x74\x43\x65\x6C\x6C\x73\x4C\x6F\x63\x6B\x65\x64","\x67\x65\x74\x43\x6C\x6F\x6E\x65\x61\x62\x6C\x65\x43\x65\x6C\x6C\x73","\x69\x73\x43\x65\x6C\x6C\x43\x6C\x6F\x6E\x65\x61\x62\x6C\x65","\x69\x73\x43\x65\x6C\x6C\x73\x43\x6C\x6F\x6E\x65\x61\x62\x6C\x65","\x53\x54\x59\x4C\x45\x5F\x43\x4C\x4F\x4E\x45\x41\x42\x4C\x45","\x73\x65\x74\x43\x65\x6C\x6C\x73\x43\x6C\x6F\x6E\x65\x61\x62\x6C\x65","\x63\x61\x6E\x45\x78\x70\x6F\x72\x74\x43\x65\x6C\x6C","\x63\x61\x6E\x49\x6D\x70\x6F\x72\x74\x43\x65\x6C\x6C","\x69\x73\x43\x65\x6C\x6C\x73\x53\x65\x6C\x65\x63\x74\x61\x62\x6C\x65","\x73\x65\x74\x43\x65\x6C\x6C\x73\x53\x65\x6C\x65\x63\x74\x61\x62\x6C\x65","\x69\x73\x43\x65\x6C\x6C\x44\x65\x6C\x65\x74\x61\x62\x6C\x65","\x69\x73\x43\x65\x6C\x6C\x73\x44\x65\x6C\x65\x74\x61\x62\x6C\x65","\x53\x54\x59\x4C\x45\x5F\x44\x45\x4C\x45\x54\x41\x42\x4C\x45","\x73\x65\x74\x43\x65\x6C\x6C\x73\x44\x65\x6C\x65\x74\x61\x62\x6C\x65","\x69\x73\x4C\x61\x62\x65\x6C\x4D\x6F\x76\x61\x62\x6C\x65","\x67\x65\x74\x4D\x6F\x76\x61\x62\x6C\x65\x43\x65\x6C\x6C\x73","\x69\x73\x43\x65\x6C\x6C\x73\x4D\x6F\x76\x61\x62\x6C\x65","\x53\x54\x59\x4C\x45\x5F\x4D\x4F\x56\x41\x42\x4C\x45","\x73\x65\x74\x43\x65\x6C\x6C\x73\x4D\x6F\x76\x61\x62\x6C\x65","\x73\x65\x74\x50\x6F\x72\x74\x73\x45\x6E\x61\x62\x6C\x65\x64","\x67\x65\x74\x47\x72\x69\x64\x53\x69\x7A\x65","\x73\x65\x74\x47\x72\x69\x64\x53\x69\x7A\x65","\x67\x65\x74\x54\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x73\x65\x74\x54\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x69\x73\x56\x65\x72\x74\x65\x78\x4C\x61\x62\x65\x6C\x73\x4D\x6F\x76\x61\x62\x6C\x65","\x73\x65\x74\x56\x65\x72\x74\x65\x78\x4C\x61\x62\x65\x6C\x73\x4D\x6F\x76\x61\x62\x6C\x65","\x69\x73\x45\x64\x67\x65\x4C\x61\x62\x65\x6C\x73\x4D\x6F\x76\x61\x62\x6C\x65","\x73\x65\x74\x45\x64\x67\x65\x4C\x61\x62\x65\x6C\x73\x4D\x6F\x76\x61\x62\x6C\x65","\x69\x73\x53\x77\x69\x6D\x6C\x61\x6E\x65\x4E\x65\x73\x74\x69\x6E\x67","\x73\x65\x74\x53\x77\x69\x6D\x6C\x61\x6E\x65\x4E\x65\x73\x74\x69\x6E\x67","\x73\x65\x74\x53\x77\x69\x6D\x6C\x61\x6E\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x4D\x75\x6C\x74\x69\x67\x72\x61\x70\x68","\x73\x65\x74\x4D\x75\x6C\x74\x69\x67\x72\x61\x70\x68","\x69\x73\x41\x6C\x6C\x6F\x77\x4C\x6F\x6F\x70\x73","\x73\x65\x74\x41\x6C\x6C\x6F\x77\x44\x61\x6E\x67\x6C\x69\x6E\x67\x45\x64\x67\x65\x73","\x73\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65\x45\x64\x67\x65\x73","\x69\x73\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65\x45\x64\x67\x65\x73","\x73\x65\x74\x43\x6C\x6F\x6E\x65\x49\x6E\x76\x61\x6C\x69\x64\x45\x64\x67\x65\x73","\x73\x65\x74\x41\x6C\x6C\x6F\x77\x4C\x6F\x6F\x70\x73","\x73\x65\x74\x44\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74\x4F\x6E\x4D\x6F\x76\x65","\x73\x65\x74\x44\x72\x6F\x70\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x53\x70\x6C\x69\x74\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x53\x70\x6C\x69\x74\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x43\x65\x6C\x6C\x52\x65\x73\x69\x7A\x61\x62\x6C\x65","\x69\x73\x43\x65\x6C\x6C\x73\x52\x65\x73\x69\x7A\x61\x62\x6C\x65","\x53\x54\x59\x4C\x45\x5F\x52\x45\x53\x49\x5A\x41\x42\x4C\x45","\x73\x65\x74\x43\x65\x6C\x6C\x73\x52\x65\x73\x69\x7A\x61\x62\x6C\x65","\x69\x73\x54\x65\x72\x6D\x69\x6E\x61\x6C\x50\x6F\x69\x6E\x74\x4D\x6F\x76\x61\x62\x6C\x65","\x69\x73\x43\x65\x6C\x6C\x42\x65\x6E\x64\x61\x62\x6C\x65","\x69\x73\x43\x65\x6C\x6C\x73\x42\x65\x6E\x64\x61\x62\x6C\x65","\x53\x54\x59\x4C\x45\x5F\x42\x45\x4E\x44\x41\x42\x4C\x45","\x73\x65\x74\x43\x65\x6C\x6C\x73\x42\x65\x6E\x64\x61\x62\x6C\x65","\x69\x73\x43\x65\x6C\x6C\x73\x45\x64\x69\x74\x61\x62\x6C\x65","\x53\x54\x59\x4C\x45\x5F\x45\x44\x49\x54\x41\x42\x4C\x45","\x73\x65\x74\x43\x65\x6C\x6C\x73\x45\x64\x69\x74\x61\x62\x6C\x65","\x69\x73\x43\x65\x6C\x6C\x73\x44\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x73\x65\x74\x43\x65\x6C\x6C\x73\x44\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x69\x73\x56\x61\x6C\x69\x64\x53\x6F\x75\x72\x63\x65","\x69\x73\x56\x61\x6C\x69\x64\x54\x61\x72\x67\x65\x74","\x73\x65\x74\x54\x6F\x6F\x6C\x74\x69\x70\x73","\x73\x65\x74\x50\x61\x6E\x6E\x69\x6E\x67","\x69\x73\x41\x75\x74\x6F\x53\x69\x7A\x65\x43\x65\x6C\x6C\x73","\x53\x54\x59\x4C\x45\x5F\x41\x55\x54\x4F\x53\x49\x5A\x45","\x73\x65\x74\x41\x75\x74\x6F\x53\x69\x7A\x65\x43\x65\x6C\x6C\x73","\x69\x73\x45\x78\x74\x65\x6E\x64\x50\x61\x72\x65\x6E\x74\x73","\x73\x65\x74\x45\x78\x74\x65\x6E\x64\x50\x61\x72\x65\x6E\x74\x73","\x73\x65\x74\x45\x78\x74\x65\x6E\x64\x50\x61\x72\x65\x6E\x74\x73\x4F\x6E\x41\x64\x64","\x69\x73\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x43\x68\x69\x6C\x64\x72\x65\x6E","\x73\x65\x74\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x43\x68\x69\x6C\x64\x72\x65\x6E","\x69\x73\x41\x6C\x6C\x6F\x77\x4F\x76\x65\x72\x6C\x61\x70\x50\x61\x72\x65\x6E\x74","\x53\x54\x59\x4C\x45\x5F\x46\x4F\x4C\x44\x41\x42\x4C\x45","\x69\x73\x56\x61\x6C\x69\x64\x44\x72\x6F\x70\x54\x61\x72\x67\x65\x74","\x69\x73\x53\x70\x6C\x69\x74\x54\x61\x72\x67\x65\x74","\x73\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x50\x61\x72\x65\x6E\x74","\x68\x69\x74\x73\x53\x77\x69\x6D\x6C\x61\x6E\x65\x43\x6F\x6E\x74\x65\x6E\x74","\x67\x65\x74\x50\x6F\x69\x6E\x74\x46\x6F\x72\x45\x76\x65\x6E\x74","\x67\x65\x74\x43\x65\x6C\x6C\x73","\x67\x65\x74\x43\x65\x6C\x6C\x73\x42\x65\x79\x6F\x6E\x64","\x69\x73\x43\x65\x6C\x6C\x53\x65\x6C\x65\x63\x74\x65\x64","\x69\x73\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x45\x6D\x70\x74\x79","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x6F\x75\x6E\x74","\x61\x64\x64\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x61\x64\x64\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x72\x65\x6D\x6F\x76\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x73\x65\x6C\x65\x63\x74\x52\x65\x67\x69\x6F\x6E","\x73\x65\x6C\x65\x63\x74\x43\x65\x6C\x6C\x73\x46\x6F\x72\x45\x76\x65\x6E\x74","\x73\x65\x6C\x65\x63\x74\x4E\x65\x78\x74\x43\x65\x6C\x6C","\x73\x65\x6C\x65\x63\x74\x43\x65\x6C\x6C","\x73\x65\x6C\x65\x63\x74\x50\x72\x65\x76\x69\x6F\x75\x73\x43\x65\x6C\x6C","\x73\x65\x6C\x65\x63\x74\x50\x61\x72\x65\x6E\x74\x43\x65\x6C\x6C","\x73\x65\x6C\x65\x63\x74\x43\x68\x69\x6C\x64\x43\x65\x6C\x6C","\x73\x65\x6C\x65\x63\x74\x41\x6C\x6C","\x73\x65\x6C\x65\x63\x74\x56\x65\x72\x74\x69\x63\x65\x73","\x73\x65\x6C\x65\x63\x74\x43\x65\x6C\x6C\x73","\x73\x65\x6C\x65\x63\x74\x45\x64\x67\x65\x73","\x63\x72\x65\x61\x74\x65\x48\x61\x6E\x64\x6C\x65\x72","\x75\x70\x64\x61\x74\x65\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74","\x4D\x4F\x55\x53\x45\x5F\x44\x4F\x57\x4E","\x6C\x61\x73\x74\x54\x6F\x75\x63\x68\x58","\x6C\x61\x73\x74\x4D\x6F\x75\x73\x65\x58","\x6C\x61\x73\x74\x4D\x6F\x75\x73\x65\x59","\x4D\x4F\x55\x53\x45\x5F\x55\x50","\x4D\x4F\x55\x53\x45\x5F\x4D\x4F\x56\x45","\x64\x65\x73\x74\x72\x6F\x79\x65\x64","\x74\x6F\x6F\x6C\x74\x69\x70","\x68\x65\x6C\x70","\x67\x72\x61\x70\x68\x52\x65\x6E\x64\x65\x72\x48\x69\x6E\x74","\x73\x68\x6F\x77\x56\x69\x65\x77\x70\x6F\x72\x74","\x73\x69\x7A\x65\x72\x53\x69\x7A\x65","\x75\x70\x64\x61\x74\x65\x4F\x6E\x50\x61\x6E","\x73\x69\x7A\x65\x72\x49\x6D\x61\x67\x65","\x73\x68\x61\x70\x65\x2D\x72\x65\x6E\x64\x65\x72\x69\x6E\x67","\x6F\x70\x74\x69\x6D\x69\x7A\x65\x53\x70\x65\x65\x64","\x69\x6D\x61\x67\x65\x2D\x72\x65\x6E\x64\x65\x72\x69\x6E\x67","\x75\x70\x64\x61\x74\x65\x48\x61\x6E\x64\x6C\x65\x72","\x75\x70\x64\x61\x74\x65","\x70\x61\x6E\x48\x61\x6E\x64\x6C\x65\x72","\x72\x65\x66\x72\x65\x73\x68\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x6C\x65\x63\x74\x69\x6F\x6E\x42\x6F\x72\x64\x65\x72","\x72\x65\x64\x69\x72\x65\x63\x74\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74\x73","\x73\x69\x7A\x65\x72","\x63\x72\x65\x61\x74\x65\x53\x69\x7A\x65\x72","\x73\x65\x74\x5A\x6F\x6F\x6D\x45\x6E\x61\x62\x6C\x65\x64","\x67\x65\x74\x53\x6F\x75\x72\x63\x65\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72\x53\x69\x7A\x65","\x67\x65\x74\x4F\x75\x74\x6C\x69\x6E\x65\x4F\x66\x66\x73\x65\x74","\x73\x74\x61\x72\x74\x58","\x73\x74\x61\x72\x74\x59","\x64\x78\x30","\x64\x79\x30","\x6E","\x76\x61\x6C\x69\x64\x4E\x65\x69\x67\x68\x62\x6F\x72\x73","\x74\x79\x70\x65\x45\x72\x72\x6F\x72","\x76\x61\x6C\x69\x64\x4E\x65\x69\x67\x68\x62\x6F\x72\x73\x41\x6C\x6C\x6F\x77\x65\x64","\x63\x68\x65\x63\x6B\x54\x65\x72\x6D\x69\x6E\x61\x6C","\x63\x68\x65\x63\x6B\x4E\x65\x69\x67\x68\x62\x6F\x72\x73","\x63\x68\x65\x63\x6B\x54\x79\x70\x65","\x75\x6E\x64\x6F\x48\x61\x6E\x64\x6C\x65\x72","\x62\x75\x62\x62\x6C\x69\x6E\x67","\x69\x73\x42\x75\x62\x62\x6C\x69\x6E\x67","\x73\x65\x74\x42\x75\x62\x62\x6C\x69\x6E\x67","\x67\x65\x74\x4C\x61\x79\x6F\x75\x74","\x67\x65\x74\x43\x65\x6C\x6C\x73\x46\x6F\x72\x43\x68\x61\x6E\x67\x65\x73","\x67\x65\x74\x43\x65\x6C\x6C\x73\x46\x6F\x72\x43\x68\x61\x6E\x67\x65","\x65\x78\x65\x63\x75\x74\x65\x4C\x61\x79\x6F\x75\x74","\x72\x65\x73\x69\x7A\x65\x48\x61\x6E\x64\x6C\x65\x72","\x66\x6F\x6C\x64\x48\x61\x6E\x64\x6C\x65\x72","\x73\x68\x69\x66\x74\x52\x69\x67\x68\x74\x77\x61\x72\x64\x73","\x73\x68\x69\x66\x74\x44\x6F\x77\x6E\x77\x61\x72\x64\x73","\x69\x73\x43\x65\x6C\x6C\x49\x67\x6E\x6F\x72\x65\x64","\x69\x73\x43\x65\x6C\x6C\x53\x68\x69\x66\x74\x61\x62\x6C\x65","\x69\x73\x53\x68\x69\x66\x74\x52\x69\x67\x68\x74\x77\x61\x72\x64\x73","\x73\x65\x74\x53\x68\x69\x66\x74\x52\x69\x67\x68\x74\x77\x61\x72\x64\x73","\x69\x73\x53\x68\x69\x66\x74\x44\x6F\x77\x6E\x77\x61\x72\x64\x73","\x73\x65\x74\x53\x68\x69\x66\x74\x44\x6F\x77\x6E\x77\x61\x72\x64\x73","\x63\x65\x6C\x6C\x52\x65\x73\x69\x7A\x65\x64","\x67\x65\x74\x43\x65\x6C\x6C\x73\x54\x6F\x53\x68\x69\x66\x74","\x73\x68\x69\x66\x74\x43\x65\x6C\x6C","\x61\x64\x64\x45\x6E\x61\x62\x6C\x65\x64","\x72\x65\x73\x69\x7A\x65\x45\x6E\x61\x62\x6C\x65\x64","\x61\x64\x64\x48\x61\x6E\x64\x6C\x65\x72","\x69\x73\x41\x64\x64\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x52\x65\x73\x69\x7A\x65\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x48\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C","\x73\x65\x74\x41\x64\x64\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x52\x65\x73\x69\x7A\x65\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x53\x77\x69\x6D\x6C\x61\x6E\x65\x49\x67\x6E\x6F\x72\x65\x64","\x69\x73\x43\x65\x6C\x6C\x48\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C","\x73\x77\x69\x6D\x6C\x61\x6E\x65\x41\x64\x64\x65\x64","\x72\x65\x73\x69\x7A\x65\x53\x77\x69\x6D\x6C\x61\x6E\x65","\x6F\x6C\x64\x42\x6F\x75\x6E\x64\x73","\x6F\x6C\x64\x53\x74\x61\x74\x65\x73","\x6F\x6C\x64\x53\x63\x61\x6C\x65","\x64\x65\x6C\x74\x61\x73","\x63\x6F\x75\x6E\x74","\x58","\x59","\x61\x64\x64\x45\x64\x67\x65\x73","\x72\x65\x73\x6F\x6C\x76\x65","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x53\x74\x61\x74\x65","\x72\x65\x76\x61\x6C\x69\x64\x61\x74\x65\x53\x74\x61\x74\x65","\x75\x70\x64\x61\x74\x65\x50\x72\x65\x76\x69\x65\x77\x53\x68\x61\x70\x65","\x6D\x61\x78\x43\x65\x6C\x6C\x73","\x68\x69\x67\x68\x6C\x69\x67\x68\x74\x45\x6E\x61\x62\x6C\x65\x64","\x63\x6C\x6F\x6E\x65\x45\x6E\x61\x62\x6C\x65\x64","\x6D\x6F\x76\x65\x45\x6E\x61\x62\x6C\x65\x64","\x67\x75\x69\x64\x65","\x63\x75\x72\x72\x65\x6E\x74\x44\x78","\x63\x75\x72\x72\x65\x6E\x74\x44\x79","\x75\x70\x64\x61\x74\x65\x43\x75\x72\x73\x6F\x72","\x73\x65\x6C\x65\x63\x74\x45\x6E\x61\x62\x6C\x65\x64","\x63\x6F\x6E\x6E\x65\x63\x74\x4F\x6E\x44\x72\x6F\x70","\x73\x63\x72\x6F\x6C\x6C\x4F\x6E\x4D\x6F\x76\x65","\x70\x72\x65\x76\x69\x65\x77\x43\x6F\x6C\x6F\x72","\x68\x74\x6D\x6C\x50\x72\x65\x76\x69\x65\x77","\x73\x63\x61\x6C\x65\x47\x72\x69\x64","\x72\x6F\x74\x61\x74\x69\x6F\x6E\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x43\x6C\x6F\x6E\x65\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x43\x6C\x6F\x6E\x65\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x4D\x6F\x76\x65\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x4D\x6F\x76\x65\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x53\x65\x6C\x65\x63\x74\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x52\x65\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73\x46\x72\x6F\x6D\x50\x61\x72\x65\x6E\x74","\x73\x65\x74\x52\x65\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73\x46\x72\x6F\x6D\x50\x61\x72\x65\x6E\x74","\x67\x65\x74\x49\x6E\x69\x74\x69\x61\x6C\x43\x65\x6C\x6C\x46\x6F\x72\x45\x76\x65\x6E\x74","\x69\x73\x44\x65\x6C\x61\x79\x65\x64\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x64\x65\x6C\x61\x79\x65\x64\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x63\x65\x6C\x6C\x57\x61\x73\x43\x6C\x69\x63\x6B\x65\x64","\x53\x45\x4C\x45\x43\x54","\x66\x69\x72\x73\x74","\x67\x65\x74\x50\x72\x65\x76\x69\x65\x77\x42\x6F\x75\x6E\x64\x73","\x63\x72\x65\x61\x74\x65\x50\x72\x65\x76\x69\x65\x77\x53\x68\x61\x70\x65","\x70\x42\x6F\x75\x6E\x64\x73","\x75\x73\x65\x47\x75\x69\x64\x65\x73\x46\x6F\x72\x45\x76\x65\x6E\x74","\x73\x65\x74\x48\x69\x67\x68\x6C\x69\x67\x68\x74\x43\x6F\x6C\x6F\x72","\x56\x41\x4C\x49\x44\x5F\x43\x4F\x4C\x4F\x52","\x49\x4E\x56\x41\x4C\x49\x44\x5F\x43\x4F\x4E\x4E\x45\x43\x54\x5F\x54\x41\x52\x47\x45\x54\x5F\x43\x4F\x4C\x4F\x52","\x43\x55\x52\x53\x4F\x52\x5F\x4D\x4F\x56\x41\x42\x4C\x45\x5F\x45\x44\x47\x45","\x43\x55\x52\x53\x4F\x52\x5F\x4D\x4F\x56\x41\x42\x4C\x45\x5F\x56\x45\x52\x54\x45\x58","\x73\x65\x6C\x65\x63\x74\x44\x65\x6C\x61\x79\x65\x64","\x64\x65\x73\x74\x72\x6F\x79\x53\x68\x61\x70\x65\x73","\x67\x75\x69\x64\x65\x73","\x73\x68\x6F\x75\x6C\x64\x52\x65\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73\x46\x72\x6F\x6D\x50\x61\x72\x65\x6E\x74","\x74\x72\x69\x67\x67\x65\x72\x58","\x74\x72\x69\x67\x67\x65\x72\x59","\x75\x73\x65\x50\x6F\x70\x75\x70\x54\x72\x69\x67\x67\x65\x72","\x75\x73\x65\x4C\x65\x66\x74\x42\x75\x74\x74\x6F\x6E\x46\x6F\x72\x50\x61\x6E\x6E\x69\x6E\x67","\x73\x65\x6C\x65\x63\x74\x4F\x6E\x50\x6F\x70\x75\x70","\x63\x6C\x65\x61\x72\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x4F\x6E\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x69\x67\x6E\x6F\x72\x65\x43\x65\x6C\x6C","\x70\x72\x65\x76\x69\x65\x77\x45\x6E\x61\x62\x6C\x65\x64","\x75\x73\x65\x47\x72\x69\x64","\x69\x73\x50\x61\x6E\x6E\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x50\x61\x6E\x6E\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x50\x61\x6E\x6E\x69\x6E\x67\x54\x72\x69\x67\x67\x65\x72","\x70\x6F\x70\x75\x70\x54\x72\x69\x67\x67\x65\x72","\x70\x61\x6E\x6E\x69\x6E\x67\x54\x72\x69\x67\x67\x65\x72","\x63\x6F\x6E\x73\x75\x6D\x65\x50\x61\x6E\x6E\x69\x6E\x67\x54\x72\x69\x67\x67\x65\x72","\x67\x65\x74\x43\x65\x6C\x6C\x46\x6F\x72\x50\x6F\x70\x75\x70\x45\x76\x65\x6E\x74","\x76\x61\x6C\x69\x64\x43\x6F\x6C\x6F\x72","\x44\x45\x46\x41\x55\x4C\x54\x5F\x56\x41\x4C\x49\x44\x5F\x43\x4F\x4C\x4F\x52","\x69\x6E\x76\x61\x6C\x69\x64\x43\x6F\x6C\x6F\x72","\x44\x45\x46\x41\x55\x4C\x54\x5F\x49\x4E\x56\x41\x4C\x49\x44\x5F\x43\x4F\x4C\x4F\x52","\x68\x6F\x74\x73\x70\x6F\x74","\x44\x45\x46\x41\x55\x4C\x54\x5F\x48\x4F\x54\x53\x50\x4F\x54","\x68\x6F\x74\x73\x70\x6F\x74\x45\x6E\x61\x62\x6C\x65\x64","\x63\x75\x72\x72\x65\x6E\x74\x43\x6F\x6C\x6F\x72","\x76\x61\x6C\x69\x64\x53\x74\x61\x74\x65","\x6D\x61\x72\x6B\x65\x64\x53\x74\x61\x74\x65","\x73\x65\x74\x48\x6F\x74\x73\x70\x6F\x74","\x67\x65\x74\x48\x6F\x74\x73\x70\x6F\x74","\x73\x65\x74\x48\x6F\x74\x73\x70\x6F\x74\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x48\x6F\x74\x73\x70\x6F\x74\x45\x6E\x61\x62\x6C\x65\x64","\x68\x61\x73\x56\x61\x6C\x69\x64\x53\x74\x61\x74\x65","\x67\x65\x74\x56\x61\x6C\x69\x64\x53\x74\x61\x74\x65","\x67\x65\x74\x4D\x61\x72\x6B\x65\x64\x53\x74\x61\x74\x65","\x75\x6E\x6D\x61\x72\x6B","\x70\x72\x6F\x63\x65\x73\x73","\x69\x73\x56\x61\x6C\x69\x64\x53\x74\x61\x74\x65","\x67\x65\x74\x4D\x61\x72\x6B\x65\x72\x43\x6F\x6C\x6F\x72","\x6D\x61\x72\x6B\x43\x65\x6C\x6C","\x67\x65\x74\x53\x74\x61\x74\x65\x54\x6F\x4D\x61\x72\x6B","\x69\x6E\x74\x65\x72\x73\x65\x63\x74\x73\x48\x6F\x74\x73\x70\x6F\x74","\x72\x65\x73\x65\x74\x48\x61\x6E\x64\x6C\x65\x72","\x68\x61\x6E\x64\x6C\x65\x72\x73","\x6D\x61\x78\x48\x61\x6E\x64\x6C\x65\x72\x73","\x6D\x6F\x76\x65\x49\x63\x6F\x6E\x46\x72\x6F\x6E\x74","\x6D\x6F\x76\x65\x49\x63\x6F\x6E\x42\x61\x63\x6B","\x63\x6F\x6E\x6E\x65\x63\x74\x49\x6D\x61\x67\x65","\x74\x61\x72\x67\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x49\x6D\x61\x67\x65","\x63\x72\x65\x61\x74\x65\x54\x61\x72\x67\x65\x74","\x6D\x61\x72\x6B\x65\x72","\x63\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x48\x61\x6E\x64\x6C\x65\x72","\x77\x61\x79\x70\x6F\x69\x6E\x74\x73\x45\x6E\x61\x62\x6C\x65\x64","\x74\x61\x70\x41\x6E\x64\x48\x6F\x6C\x64\x45\x6E\x61\x62\x6C\x65\x64","\x74\x61\x70\x41\x6E\x64\x48\x6F\x6C\x64\x44\x65\x6C\x61\x79","\x74\x61\x70\x41\x6E\x64\x48\x6F\x6C\x64\x49\x6E\x50\x72\x6F\x67\x72\x65\x73\x73","\x74\x61\x70\x41\x6E\x64\x48\x6F\x6C\x64\x56\x61\x6C\x69\x64","\x74\x61\x70\x41\x6E\x64\x48\x6F\x6C\x64\x54\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x69\x6E\x69\x74\x69\x61\x6C\x54\x6F\x75\x63\x68\x58","\x69\x6E\x69\x74\x69\x61\x6C\x54\x6F\x75\x63\x68\x59","\x69\x67\x6E\x6F\x72\x65\x4D\x6F\x75\x73\x65\x44\x6F\x77\x6E","\x63\x6F\x6E\x6E\x65\x63\x74\x49\x63\x6F\x6E\x4F\x66\x66\x73\x65\x74","\x65\x64\x67\x65\x53\x74\x61\x74\x65","\x64\x72\x69\x6C\x6C\x48\x61\x6E\x64\x6C\x65\x72","\x6D\x6F\x75\x73\x65\x44\x6F\x77\x6E\x43\x6F\x75\x6E\x74\x65\x72","\x6D\x6F\x76\x65\x50\x72\x65\x76\x69\x65\x77\x41\x77\x61\x79","\x69\x73\x43\x72\x65\x61\x74\x65\x54\x61\x72\x67\x65\x74","\x73\x65\x74\x43\x72\x65\x61\x74\x65\x54\x61\x72\x67\x65\x74","\x69\x63\x6F\x6E\x53\x74\x61\x74\x65","\x69\x63\x6F\x6E\x73","\x72\x65\x64\x72\x61\x77\x49\x63\x6F\x6E\x73","\x64\x65\x73\x74\x72\x6F\x79\x49\x63\x6F\x6E\x73","\x69\x73\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65\x43\x65\x6C\x6C","\x69\x73\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6E\x67","\x76\x61\x6C\x69\x64\x61\x74\x65\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x45\x64\x67\x65\x53\x74\x61\x74\x65","\x67\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x49\x6D\x61\x67\x65","\x69\x73\x4D\x6F\x76\x65\x49\x63\x6F\x6E\x54\x6F\x46\x72\x6F\x6E\x74\x46\x6F\x72\x53\x74\x61\x74\x65","\x63\x72\x65\x61\x74\x65\x49\x63\x6F\x6E\x73","\x43\x55\x52\x53\x4F\x52\x5F\x43\x4F\x4E\x4E\x45\x43\x54","\x63\x75\x72\x72\x65\x6E\x74\x53\x74\x61\x74\x65","\x69\x63\x6F\x6E","\x67\x65\x74\x49\x63\x6F\x6E\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x69\x73\x53\x74\x61\x72\x74\x45\x76\x65\x6E\x74","\x63\x75\x72\x72\x65\x6E\x74\x46\x6F\x63\x75\x73","\x63\x75\x72\x72\x65\x6E\x74\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74","\x73\x6F\x75\x72\x63\x65\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74","\x77\x61\x79\x70\x6F\x69\x6E\x74\x73","\x74\x61\x70\x41\x6E\x64\x48\x6F\x6C\x64\x54\x68\x72\x65\x61\x64","\x63\x6C\x65\x61\x72\x54\x69\x6D\x65\x6F\x75\x74","\x74\x61\x70\x41\x6E\x64\x48\x6F\x6C\x64","\x73\x65\x6C\x65\x63\x74\x65\x64\x49\x63\x6F\x6E","\x69\x73\x49\x6D\x6D\x65\x64\x69\x61\x74\x65\x43\x6F\x6E\x6E\x65\x63\x74\x53\x6F\x75\x72\x63\x65","\x75\x70\x64\x61\x74\x65\x43\x75\x72\x72\x65\x6E\x74\x53\x74\x61\x74\x65","\x63\x6F\x6E\x76\x65\x72\x74\x57\x61\x79\x70\x6F\x69\x6E\x74","\x67\x65\x74\x54\x61\x72\x67\x65\x74\x50\x65\x72\x69\x6D\x65\x74\x65\x72\x50\x6F\x69\x6E\x74","\x67\x65\x74\x53\x6F\x75\x72\x63\x65\x50\x65\x72\x69\x6D\x65\x74\x65\x72\x50\x6F\x69\x6E\x74","\x64\x72\x61\x77\x50\x72\x65\x76\x69\x65\x77","\x75\x70\x64\x61\x74\x65\x49\x63\x6F\x6E\x73","\x69\x73\x53\x74\x6F\x70\x45\x76\x65\x6E\x74","\x61\x64\x64\x57\x61\x79\x70\x6F\x69\x6E\x74\x46\x6F\x72\x45\x76\x65\x6E\x74","\x67\x65\x74\x45\x64\x67\x65\x57\x69\x64\x74\x68","\x67\x65\x74\x45\x64\x67\x65\x43\x6F\x6C\x6F\x72","\x49\x4E\x56\x41\x4C\x49\x44\x5F\x43\x4F\x4C\x4F\x52","\x63\x72\x65\x61\x74\x65\x54\x61\x72\x67\x65\x74\x56\x65\x72\x74\x65\x78","\x67\x65\x74\x41\x6C\x69\x67\x6E\x6D\x65\x6E\x74\x54\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x70\x6F\x69\x6E\x74\x49\x6D\x61\x67\x65","\x2F\x70\x6F\x69\x6E\x74\x2E\x67\x69\x66","\x68\x69\x67\x68\x6C\x69\x67\x68\x74\x43\x6F\x6C\x6F\x72","\x66\x6F\x63\x75\x73\x49\x63\x6F\x6E\x73","\x66\x6F\x63\x75\x73\x48\x69\x67\x68\x6C\x69\x67\x68\x74","\x66\x6F\x63\x75\x73\x50\x6F\x69\x6E\x74\x73","\x63\x75\x72\x72\x65\x6E\x74\x46\x6F\x63\x75\x73\x41\x72\x65\x61","\x67\x65\x74\x49\x6D\x61\x67\x65\x46\x6F\x72\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74","\x69\x73\x45\x76\x65\x6E\x74\x49\x67\x6E\x6F\x72\x65\x64","\x72\x65\x70\x61\x69\x6E\x74","\x64\x65\x66\x61\x75\x6C\x74\x4F\x70\x61\x63\x69\x74\x79","\x73\x68\x61\x72\x65\x64\x44\x69\x76","\x63\x75\x72\x72\x65\x6E\x74\x58","\x63\x75\x72\x72\x65\x6E\x74\x59","\x64\x72\x61\x67\x48\x61\x6E\x64\x6C\x65\x72","\x6D\x78\x52\x75\x62\x62\x65\x72\x62\x61\x6E\x64","\x73\x69\x6E\x67\x6C\x65\x53\x69\x7A\x65\x72","\x61\x6C\x6C\x6F\x77\x48\x61\x6E\x64\x6C\x65\x42\x6F\x75\x6E\x64\x73\x43\x68\x65\x63\x6B","\x68\x61\x6E\x64\x6C\x65\x49\x6D\x61\x67\x65","\x72\x6F\x74\x61\x74\x69\x6F\x6E\x52\x61\x73\x74\x65\x72","\x73\x65\x6C\x65\x63\x74\x69\x6F\x6E\x42\x6F\x75\x6E\x64\x73","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x42\x6F\x75\x6E\x64\x73","\x63\x72\x65\x61\x74\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x53\x68\x61\x70\x65","\x73\x69\x7A\x65\x72\x73","\x6E\x2D\x72\x65\x73\x69\x7A\x65","\x6E\x65\x2D\x72\x65\x73\x69\x7A\x65","\x77\x2D\x72\x65\x73\x69\x7A\x65","\x65\x2D\x72\x65\x73\x69\x7A\x65","\x73\x77\x2D\x72\x65\x73\x69\x7A\x65","\x73\x2D\x72\x65\x73\x69\x7A\x65","\x73\x65\x2D\x72\x65\x73\x69\x7A\x65","\x6C\x61\x62\x65\x6C\x53\x68\x61\x70\x65","\x72\x6F\x74\x61\x74\x69\x6F\x6E\x53\x68\x61\x70\x65","\x48\x41\x4E\x44\x4C\x45\x5F\x53\x49\x5A\x45","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x6F\x6C\x6F\x72","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x53\x74\x72\x6F\x6B\x65\x57\x69\x64\x74\x68","\x69\x73\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x44\x61\x73\x68\x65\x64","\x56\x45\x52\x54\x45\x58\x5F\x53\x45\x4C\x45\x43\x54\x49\x4F\x4E\x5F\x43\x4F\x4C\x4F\x52","\x56\x45\x52\x54\x45\x58\x5F\x53\x45\x4C\x45\x43\x54\x49\x4F\x4E\x5F\x53\x54\x52\x4F\x4B\x45\x57\x49\x44\x54\x48","\x56\x45\x52\x54\x45\x58\x5F\x53\x45\x4C\x45\x43\x54\x49\x4F\x4E\x5F\x44\x41\x53\x48\x45\x44","\x63\x72\x65\x61\x74\x65\x53\x69\x7A\x65\x72\x53\x68\x61\x70\x65","\x69\x73\x53\x69\x7A\x65\x72\x56\x69\x73\x69\x62\x6C\x65","\x52\x4F\x54\x41\x54\x49\x4F\x4E\x5F\x48\x41\x4E\x44\x4C\x45","\x48\x41\x4E\x44\x4C\x45\x5F\x46\x49\x4C\x4C\x43\x4F\x4C\x4F\x52","\x6D\x6F\x76\x65\x53\x69\x7A\x65\x72\x54\x6F","\x67\x65\x74\x48\x61\x6E\x64\x6C\x65\x46\x6F\x72\x45\x76\x65\x6E\x74","\x4C\x41\x42\x45\x4C\x5F\x48\x41\x4E\x44\x4C\x45","\x70\x72\x65\x76\x69\x65\x77","\x63\x75\x72\x72\x65\x6E\x74\x41\x6C\x70\x68\x61","\x61\x74\x61\x6E","\x75\x6E\x69\x6F\x6E","\x72\x6F\x74\x61\x74\x65\x43\x65\x6C\x6C","\x6D\x6F\x76\x65\x43\x68\x69\x6C\x64\x72\x65\x6E","\x62\x65\x6E\x64\x73","\x72\x65\x6D\x6F\x76\x65\x45\x6E\x61\x62\x6C\x65\x64","\x73\x6E\x61\x70\x54\x6F\x54\x65\x72\x6D\x69\x6E\x61\x6C\x73","\x61\x62\x73\x70\x6F\x69\x6E\x74\x73","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x50\x6F\x69\x6E\x74\x73","\x69\x73\x41\x64\x64\x50\x6F\x69\x6E\x74\x45\x76\x65\x6E\x74","\x61\x64\x64\x50\x6F\x69\x6E\x74","\x63\x72\x65\x61\x74\x65\x42\x65\x6E\x64\x73","\x69\x6E\x69\x74\x42\x65\x6E\x64","\x43\x55\x52\x53\x4F\x52\x5F\x4C\x41\x42\x45\x4C\x5F\x48\x41\x4E\x44\x4C\x45","\x69\x73\x52\x65\x6D\x6F\x76\x65\x50\x6F\x69\x6E\x74\x45\x76\x65\x6E\x74","\x45\x44\x47\x45\x5F\x53\x45\x4C\x45\x43\x54\x49\x4F\x4E\x5F\x43\x4F\x4C\x4F\x52","\x45\x44\x47\x45\x5F\x53\x45\x4C\x45\x43\x54\x49\x4F\x4E\x5F\x53\x54\x52\x4F\x4B\x45\x57\x49\x44\x54\x48","\x45\x44\x47\x45\x5F\x53\x45\x4C\x45\x43\x54\x49\x4F\x4E\x5F\x44\x41\x53\x48\x45\x44","\x69\x73\x48\x61\x6E\x64\x6C\x65\x56\x69\x73\x69\x62\x6C\x65","\x63\x72\x65\x61\x74\x65\x48\x61\x6E\x64\x6C\x65\x53\x68\x61\x70\x65","\x69\x73\x48\x61\x6E\x64\x6C\x65\x45\x6E\x61\x62\x6C\x65\x64","\x43\x55\x52\x53\x4F\x52\x5F\x42\x45\x4E\x44\x5F\x48\x41\x4E\x44\x4C\x45","\x72\x65\x6D\x6F\x76\x65\x50\x6F\x69\x6E\x74","\x69\x73\x54\x61\x72\x67\x65\x74","\x69\x73\x4C\x61\x62\x65\x6C","\x63\x6C\x6F\x6E\x65\x50\x72\x65\x76\x69\x65\x77\x53\x74\x61\x74\x65","\x67\x65\x74\x53\x6E\x61\x70\x54\x6F\x54\x65\x72\x6D\x69\x6E\x61\x6C\x54\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x67\x65\x74\x50\x72\x65\x76\x69\x65\x77\x54\x65\x72\x6D\x69\x6E\x61\x6C\x53\x74\x61\x74\x65","\x67\x65\x74\x50\x72\x65\x76\x69\x65\x77\x50\x6F\x69\x6E\x74\x73","\x75\x70\x64\x61\x74\x65\x50\x72\x65\x76\x69\x65\x77\x53\x74\x61\x74\x65","\x73\x65\x74\x50\x72\x65\x76\x69\x65\x77\x43\x6F\x6C\x6F\x72","\x6D\x6F\x76\x65\x4C\x61\x62\x65\x6C","\x63\x68\x61\x6E\x67\x65\x54\x65\x72\x6D\x69\x6E\x61\x6C\x50\x6F\x69\x6E\x74","\x63\x68\x61\x6E\x67\x65\x50\x6F\x69\x6E\x74\x73","\x61\x64\x64\x50\x6F\x69\x6E\x74\x41\x74","\x66\x69\x6E\x64\x4E\x65\x61\x72\x65\x73\x74\x53\x65\x67\x6D\x65\x6E\x74","\x67\x65\x74\x48\x61\x6E\x64\x6C\x65\x46\x69\x6C\x6C\x43\x6F\x6C\x6F\x72","\x4C\x4F\x43\x4B\x45\x44\x5F\x48\x41\x4E\x44\x4C\x45\x5F\x46\x49\x4C\x4C\x43\x4F\x4C\x4F\x52","\x43\x4F\x4E\x4E\x45\x43\x54\x5F\x48\x41\x4E\x44\x4C\x45\x5F\x46\x49\x4C\x4C\x43\x4F\x4C\x4F\x52","\x4C\x41\x42\x45\x4C\x5F\x48\x41\x4E\x44\x4C\x45\x5F\x53\x49\x5A\x45","\x72\x65\x64\x72\x61\x77\x49\x6E\x6E\x65\x72\x42\x65\x6E\x64\x73","\x66\x6C\x69\x70\x45\x6E\x61\x62\x6C\x65\x64","\x64\x6F\x75\x62\x6C\x65\x43\x6C\x69\x63\x6B\x4F\x72\x69\x65\x6E\x74\x61\x74\x69\x6F\x6E\x52\x65\x73\x6F\x75\x72\x63\x65","\x64\x6F\x75\x62\x6C\x65\x43\x6C\x69\x63\x6B\x4F\x72\x69\x65\x6E\x74\x61\x74\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x56\x69\x72\x74\x75\x61\x6C\x42\x65\x6E\x64","\x67\x65\x74\x43\x75\x72\x73\x6F\x72\x46\x6F\x72\x42\x65\x6E\x64","\x45\x44\x47\x45\x53\x54\x59\x4C\x45\x5F\x54\x4F\x50\x54\x4F\x42\x4F\x54\x54\x4F\x4D","\x45\x44\x47\x45\x53\x54\x59\x4C\x45\x5F\x45\x4C\x42\x4F\x57","\x72\x6F\x77\x2D\x72\x65\x73\x69\x7A\x65","\x63\x6F\x6C\x2D\x72\x65\x73\x69\x7A\x65","\x6E\x6F\x72\x6D\x61\x6C\x4B\x65\x79\x73","\x73\x68\x69\x66\x74\x4B\x65\x79\x73","\x63\x6F\x6E\x74\x72\x6F\x6C\x4B\x65\x79\x73","\x63\x6F\x6E\x74\x72\x6F\x6C\x53\x68\x69\x66\x74\x4B\x65\x79\x73","\x6B\x65\x79\x44\x6F\x77\x6E","\x62\x69\x6E\x64\x4B\x65\x79","\x62\x69\x6E\x64\x53\x68\x69\x66\x74\x4B\x65\x79","\x62\x69\x6E\x64\x43\x6F\x6E\x74\x72\x6F\x6C\x4B\x65\x79","\x62\x69\x6E\x64\x43\x6F\x6E\x74\x72\x6F\x6C\x53\x68\x69\x66\x74\x4B\x65\x79","\x67\x65\x74\x46\x75\x6E\x63\x74\x69\x6F\x6E","\x69\x73\x47\x72\x61\x70\x68\x45\x76\x65\x6E\x74","\x68\x69\x64\x65\x4F\x6E\x48\x6F\x76\x65\x72","\x73\x65\x74\x48\x69\x64\x65\x4F\x6E\x48\x6F\x76\x65\x72","\x6D\x78\x54\x6F\x6F\x6C\x74\x69\x70","\x68\x69\x64\x65\x54\x6F\x6F\x6C\x74\x69\x70","\x73\x74\x61\x74\x65\x53\x6F\x75\x72\x63\x65","\x72\x65\x73\x65\x74\x54\x69\x6D\x65\x72","\x48\x49\x47\x48\x4C\x49\x47\x48\x54\x5F\x53\x54\x52\x4F\x4B\x45\x57\x49\x44\x54\x48","\x72\x65\x70\x61\x69\x6E\x74\x48\x61\x6E\x64\x6C\x65\x72","\x6B\x65\x65\x70\x4F\x6E\x54\x6F\x70","\x64\x72\x61\x77\x48\x69\x67\x68\x6C\x69\x67\x68\x74","\x65\x64\x69\x74\x6F\x72","\x68\x69\x64\x65\x50\x72\x6F\x70\x65\x72\x74\x69\x65\x73","\x62\x69\x6E\x64\x41\x63\x74\x69\x6F\x6E","\x63\x6F\x6E\x66\x69\x67","\x63\x72\x65\x61\x74\x65\x4D\x65\x6E\x75","\x63\x72\x65\x61\x74\x65\x43\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73","\x61\x64\x64\x49\x74\x65\x6D\x73","\x69\x66","\x61\x73","\x69\x63\x6F\x6E\x43\x6C\x73","\x61\x64\x64\x41\x63\x74\x69\x6F\x6E","\x73\x65\x70\x61\x72\x61\x74\x6F\x72","\x6E\x6F\x63\x65\x6C\x6C","\x6E\x63\x65\x6C\x6C\x73","\x6E\x6F\x74\x52\x6F\x6F\x74","\x6E\x6F\x6E\x45\x6D\x70\x74\x79","\x65\x78\x70\x61\x6E\x64\x61\x62\x6C\x65","\x63\x6F\x6C\x6C\x61\x70\x73\x61\x62\x6C\x65","\x76\x61\x6C\x69\x64\x52\x6F\x6F\x74","\x65\x6D\x70\x74\x79\x56\x61\x6C\x69\x64\x52\x6F\x6F\x74","\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E","\x74\x6F\x6F\x6C\x62\x61\x72","\x69\x6E\x73\x65\x72\x74\x46\x75\x6E\x63\x74\x69\x6F\x6E","\x2F\x73\x65\x70\x61\x72\x61\x74\x6F\x72\x2E\x67\x69\x66","\x61\x64\x64\x41\x63\x74\x69\x6F\x6E\x4F\x70\x74\x69\x6F\x6E","\x73\x65\x74\x4D\x6F\x64\x65","\x61\x64\x64\x50\x72\x6F\x74\x6F\x74\x79\x70\x65","\x69\x6E\x73\x74\x61\x6C\x6C\x44\x72\x6F\x70\x48\x61\x6E\x64\x6C\x65\x72","\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C\x46\x6C\x6F\x77","\x6D\x61\x6B\x65\x44\x72\x61\x67\x67\x61\x62\x6C\x65","\x61\x63\x74\x69\x6F\x6E\x73","\x61\x64\x64\x41\x63\x74\x69\x6F\x6E\x73","\x63\x79\x63\x6C\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x56\x61\x6C\x75\x65\x73","\x70\x6F\x70\x75\x70\x48\x61\x6E\x64\x6C\x65\x72","\x75\x6E\x64\x6F\x4D\x61\x6E\x61\x67\x65\x72","\x63\x72\x65\x61\x74\x65\x47\x72\x61\x70\x68","\x63\x72\x65\x61\x74\x65\x54\x6F\x6F\x6C\x62\x61\x72","\x6B\x65\x79\x48\x61\x6E\x64\x6C\x65\x72","\x63\x6F\x6E\x66\x69\x67\x75\x72\x65","\x63\x79\x63\x6C\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x4E\x61\x6D\x65","\x49\x53\x5F\x4C\x4F\x43\x41\x4C","\x63\x72\x65\x61\x74\x65\x53\x65\x73\x73\x69\x6F\x6E","\x2F\x72\x65\x73\x6F\x75\x72\x63\x65\x73\x2F\x65\x64\x69\x74\x6F\x72","\x61\x73\x6B\x5A\x6F\x6F\x6D\x52\x65\x73\x6F\x75\x72\x63\x65","\x61\x73\x6B\x5A\x6F\x6F\x6D","\x6C\x61\x73\x74\x53\x61\x76\x65\x64\x52\x65\x73\x6F\x75\x72\x63\x65","\x6C\x61\x73\x74\x53\x61\x76\x65\x64","\x63\x75\x72\x72\x65\x6E\x74\x46\x69\x6C\x65\x52\x65\x73\x6F\x75\x72\x63\x65","\x63\x75\x72\x72\x65\x6E\x74\x46\x69\x6C\x65","\x70\x72\x6F\x70\x65\x72\x74\x69\x65\x73\x52\x65\x73\x6F\x75\x72\x63\x65","\x74\x61\x73\x6B\x73\x52\x65\x73\x6F\x75\x72\x63\x65","\x74\x61\x73\x6B\x73","\x68\x65\x6C\x70\x52\x65\x73\x6F\x75\x72\x63\x65","\x6F\x75\x74\x6C\x69\x6E\x65\x52\x65\x73\x6F\x75\x72\x63\x65","\x64\x62\x6C\x43\x6C\x69\x63\x6B\x41\x63\x74\x69\x6F\x6E","\x73\x77\x69\x6D\x6C\x61\x6E\x65\x52\x65\x71\x75\x69\x72\x65\x64","\x66\x6F\x72\x63\x65\x64\x49\x6E\x73\x65\x72\x74\x69\x6E\x67","\x74\x65\x6D\x70\x6C\x61\x74\x65\x73","\x64\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x64\x65\x66\x61\x75\x6C\x74\x47\x72\x6F\x75\x70","\x67\x72\x6F\x75\x70\x42\x6F\x72\x64\x65\x72\x53\x69\x7A\x65","\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x70\x6F\x73\x74\x50\x61\x72\x61\x6D\x65\x74\x65\x72\x4E\x61\x6D\x65","\x75\x72\x6C\x50\x6F\x73\x74","\x75\x72\x6C\x49\x6D\x61\x67\x65","\x6C\x61\x79\x6F\x75\x74\x44\x69\x61\x67\x72\x61\x6D","\x73\x77\x69\x6D\x6C\x61\x6E\x65\x53\x70\x61\x63\x69\x6E\x67","\x6D\x61\x69\x6E\x74\x61\x69\x6E\x53\x77\x69\x6D\x6C\x61\x6E\x65\x73","\x6C\x61\x79\x6F\x75\x74\x53\x77\x69\x6D\x6C\x61\x6E\x65\x73","\x63\x79\x63\x6C\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x49\x6E\x64\x65\x78","\x74\x61\x73\x6B\x73\x57\x69\x6E\x64\x6F\x77\x49\x6D\x61\x67\x65","\x74\x61\x73\x6B\x73\x54\x6F\x70","\x68\x65\x6C\x70\x57\x69\x6E\x64\x6F\x77\x49\x6D\x61\x67\x65","\x75\x72\x6C\x48\x65\x6C\x70","\x68\x65\x6C\x70\x57\x69\x64\x74\x68","\x68\x65\x6C\x70\x48\x65\x69\x67\x68\x74","\x70\x72\x6F\x70\x65\x72\x74\x69\x65\x73\x57\x69\x64\x74\x68","\x70\x72\x6F\x70\x65\x72\x74\x69\x65\x73\x48\x65\x69\x67\x68\x74","\x6D\x6F\x76\x65\x50\x72\x6F\x70\x65\x72\x74\x69\x65\x73\x44\x69\x61\x6C\x6F\x67","\x76\x61\x6C\x69\x64\x61\x74\x69\x6E\x67","\x65\x78\x70\x6F\x72\x74\x49\x6D\x61\x67\x65","\x67\x65\x74\x55\x72\x6C\x49\x6D\x61\x67\x65","\x67\x65\x74\x56\x69\x65\x77\x58\x6D\x6C","\x5F\x62\x6C\x61\x6E\x6B","\x63\x75\x74","\x70\x61\x73\x74\x65","\x64\x65\x6C\x65\x74\x65","\x75\x6E\x67\x72\x6F\x75\x70","\x61\x63\x74\x75\x61\x6C\x53\x69\x7A\x65","\x73\x68\x6F\x77\x50\x72\x6F\x70\x65\x72\x74\x69\x65\x73","\x73\x65\x6C\x65\x63\x74\x4E\x6F\x6E\x65","\x74\x6F\x42\x61\x63\x6B","\x74\x6F\x46\x72\x6F\x6E\x74","\x73\x65\x6C\x65\x63\x74\x50\x72\x65\x76\x69\x6F\x75\x73","\x73\x65\x6C\x65\x63\x74\x4E\x65\x78\x74","\x73\x65\x6C\x65\x63\x74\x50\x61\x72\x65\x6E\x74","\x73\x65\x6C\x65\x63\x74\x43\x68\x69\x6C\x64","\x63\x6F\x6C\x6C\x61\x70\x73\x65\x41\x6C\x6C","\x65\x78\x70\x61\x6E\x64","\x65\x78\x70\x61\x6E\x64\x41\x6C\x6C","\x61\x6C\x69\x67\x6E\x43\x65\x6C\x6C\x73\x4C\x65\x66\x74","\x61\x6C\x69\x67\x6E\x43\x65\x6C\x6C\x73\x43\x65\x6E\x74\x65\x72","\x61\x6C\x69\x67\x6E\x43\x65\x6C\x6C\x73\x52\x69\x67\x68\x74","\x61\x6C\x69\x67\x6E\x43\x65\x6C\x6C\x73\x54\x6F\x70","\x61\x6C\x69\x67\x6E\x43\x65\x6C\x6C\x73\x4D\x69\x64\x64\x6C\x65","\x61\x6C\x69\x67\x6E\x43\x65\x6C\x6C\x73\x42\x6F\x74\x74\x6F\x6D","\x61\x6C\x69\x67\x6E\x46\x6F\x6E\x74\x4C\x65\x66\x74","\x61\x6C\x69\x67\x6E\x46\x6F\x6E\x74\x43\x65\x6E\x74\x65\x72","\x61\x6C\x69\x67\x6E\x46\x6F\x6E\x74\x52\x69\x67\x68\x74","\x61\x6C\x69\x67\x6E\x46\x6F\x6E\x74\x54\x6F\x70","\x61\x6C\x69\x67\x6E\x46\x6F\x6E\x74\x4D\x69\x64\x64\x6C\x65","\x61\x6C\x69\x67\x6E\x46\x6F\x6E\x74\x42\x6F\x74\x74\x6F\x6D","\x70\x72\x6F\x6D\x70\x74","\x74\x6F\x67\x67\x6C\x65\x54\x61\x73\x6B\x73","\x73\x68\x6F\x77\x54\x61\x73\x6B\x73","\x74\x6F\x67\x67\x6C\x65\x48\x65\x6C\x70","\x73\x68\x6F\x77\x48\x65\x6C\x70","\x74\x6F\x67\x67\x6C\x65\x4F\x75\x74\x6C\x69\x6E\x65","\x73\x68\x6F\x77\x4F\x75\x74\x6C\x69\x6E\x65","\x74\x6F\x67\x67\x6C\x65\x43\x6F\x6E\x73\x6F\x6C\x65","\x72\x65\x73\x65\x74\x48\x69\x73\x74\x6F\x72\x79","\x72\x65\x73\x65\x74\x46\x69\x72\x73\x74\x54\x69\x6D\x65","\x63\x6F\x6F\x6B\x69\x65","\x6D\x78\x67\x72\x61\x70\x68\x3D\x73\x65\x65\x6E\x3B\x20\x65\x78\x70\x69\x72\x65\x73\x3D\x46\x72\x69\x2C\x20\x32\x37\x20\x4A\x75\x6C\x20\x32\x30\x30\x31\x20\x30\x32\x3A\x34\x37\x3A\x31\x31\x20\x55\x54\x43\x3B\x20\x70\x61\x74\x68\x3D\x2F","\x43\x61\x6E\x6E\x6F\x74\x20\x65\x78\x65\x63\x75\x74\x65\x20","\x3A\x20","\x43\x61\x6E\x6E\x6F\x74\x20\x66\x69\x6E\x64\x20\x61\x63\x74\x69\x6F\x6E\x20","\x61\x64\x64\x54\x65\x6D\x70\x6C\x61\x74\x65","\x67\x65\x74\x54\x65\x6D\x70\x6C\x61\x74\x65","\x69\x6E\x73\x74\x61\x6C\x6C\x44\x62\x6C\x43\x6C\x69\x63\x6B\x48\x61\x6E\x64\x6C\x65\x72","\x69\x6E\x73\x74\x61\x6C\x6C\x55\x6E\x64\x6F\x48\x61\x6E\x64\x6C\x65\x72","\x69\x6E\x73\x74\x61\x6C\x6C\x44\x72\x69\x6C\x6C\x48\x61\x6E\x64\x6C\x65\x72","\x69\x6E\x73\x74\x61\x6C\x6C\x43\x68\x61\x6E\x67\x65\x48\x61\x6E\x64\x6C\x65\x72","\x69\x6E\x73\x74\x61\x6C\x6C\x49\x6E\x73\x65\x72\x74\x48\x61\x6E\x64\x6C\x65\x72","\x63\x72\x65\x61\x74\x65\x50\x6F\x70\x75\x70\x4D\x65\x6E\x75","\x63\x72\x65\x61\x74\x65\x53\x77\x69\x6D\x6C\x61\x6E\x65\x4D\x61\x6E\x61\x67\x65\x72","\x63\x72\x65\x61\x74\x65\x4C\x61\x79\x6F\x75\x74\x4D\x61\x6E\x61\x67\x65\x72","\x73\x77\x69\x6D\x6C\x61\x6E\x65\x4C\x61\x79\x6F\x75\x74","\x63\x72\x65\x61\x74\x65\x53\x77\x69\x6D\x6C\x61\x6E\x65\x4C\x61\x79\x6F\x75\x74","\x64\x69\x61\x67\x72\x61\x6D\x4C\x61\x79\x6F\x75\x74","\x63\x72\x65\x61\x74\x65\x44\x69\x61\x67\x72\x61\x6D\x4C\x61\x79\x6F\x75\x74","\x73\x65\x74\x47\x72\x61\x70\x68\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x72\x75\x62\x62\x65\x72\x62\x61\x6E\x64","\x73\x65\x74\x54\x6F\x6F\x6C\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x73\x65\x74\x53\x74\x61\x74\x75\x73\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x74\x6F\x4C\x6F\x63\x61\x6C\x65\x53\x74\x72\x69\x6E\x67","\x73\x65\x74\x53\x74\x61\x74\x75\x73","\x73\x65\x74\x54\x69\x74\x6C\x65\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x74\x54\x69\x74\x6C\x65","\x74\x72\x65\x65\x4C\x61\x79\x6F\x75\x74","\x20\x3E\x20","\x67\x65\x74\x52\x6F\x6F\x74\x54\x69\x74\x6C\x65","\x63\x72\x65\x61\x74\x65\x47\x72\x6F\x75\x70","\x72\x65\x61\x64\x47\x72\x61\x70\x68\x4D\x6F\x64\x65\x6C","\x67\x65\x74\x55\x72\x6C\x50\x6F\x73\x74","\x77\x72\x69\x74\x65\x47\x72\x61\x70\x68\x4D\x6F\x64\x65\x6C","\x70\x6F\x73\x74\x44\x69\x61\x67\x72\x61\x6D","\x73\x77\x61\x70\x53\x74\x79\x6C\x65\x73","\x63\x72\x65\x61\x74\x65\x50\x72\x6F\x70\x65\x72\x74\x69\x65\x73","\x69\x73\x50\x72\x6F\x70\x65\x72\x74\x69\x65\x73\x56\x69\x73\x69\x62\x6C\x65","\x72\x65\x61\x64\x6F\x6E\x6C\x79","\x49\x44","\x53\x74\x79\x6C\x65","\x63\x72\x65\x61\x74\x65\x54\x61\x73\x6B\x73","\x72\x65\x66\x72\x65\x73\x68\x54\x61\x73\x6B\x73","\x66\x72\x61\x6D\x65\x42\x6F\x72\x64\x65\x72","\x63\x6F\x6E\x73\x75\x6D\x65\x43\x79\x63\x6C\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x63\x79\x63\x6C\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x69\x73\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x65\x64\x4D\x6F\x76\x69\x6E\x67","\x63\x6F\x64\x65\x63\x73","\x74\x65\x6D\x70\x6C\x61\x74\x65","\x61\x64\x64\x41\x6C\x69\x61\x73","\x61\x6C\x69\x61\x73\x65\x73","\x72\x65\x67\x69\x73\x74\x65\x72","\x65\x6E\x63\x6F\x64\x65\x44\x65\x66\x61\x75\x6C\x74\x73","\x67\x65\x74\x4F\x62\x6A\x65\x63\x74","\x72\x65\x66\x65\x72\x65\x6E\x63\x65","\x67\x65\x74\x43\x6F\x64\x65\x63","\x69\x6D\x70\x6F\x72\x74\x4E\x6F\x64\x65","\x6D\x78\x43\x6F\x64\x65\x63\x2E\x65\x6E\x63\x6F\x64\x65\x3A\x20\x4E\x6F\x20\x63\x6F\x64\x65\x63\x20\x66\x6F\x72\x20","\x43\x61\x6E\x6E\x6F\x74\x20\x64\x65\x63\x6F\x64\x65\x20","\x65\x6E\x63\x6F\x64\x65\x43\x65\x6C\x6C","\x69\x73\x43\x65\x6C\x6C\x43\x6F\x64\x65\x63","\x64\x65\x63\x6F\x64\x65\x43\x65\x6C\x6C","\x69\x6E\x73\x65\x72\x74\x49\x6E\x74\x6F\x47\x72\x61\x70\x68","\x65\x78\x63\x6C\x75\x64\x65","\x69\x64\x72\x65\x66\x73","\x6D\x61\x70\x70\x69\x6E\x67","\x72\x65\x76\x65\x72\x73\x65","\x63\x6C\x6F\x6E\x65\x54\x65\x6D\x70\x6C\x61\x74\x65","\x67\x65\x74\x46\x69\x65\x6C\x64\x4E\x61\x6D\x65","\x67\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65\x4E\x61\x6D\x65","\x69\x73\x45\x78\x63\x6C\x75\x64\x65\x64","\x69\x73\x52\x65\x66\x65\x72\x65\x6E\x63\x65","\x62\x65\x66\x6F\x72\x65\x45\x6E\x63\x6F\x64\x65","\x65\x6E\x63\x6F\x64\x65\x4F\x62\x6A\x65\x63\x74","\x61\x66\x74\x65\x72\x45\x6E\x63\x6F\x64\x65","\x65\x6E\x63\x6F\x64\x65\x56\x61\x6C\x75\x65","\x6D\x78\x4F\x62\x6A\x65\x63\x74\x43\x6F\x64\x65\x63\x2E\x65\x6E\x63\x6F\x64\x65\x3A\x20\x4E\x6F\x20\x49\x44\x20\x66\x6F\x72\x20","\x77\x72\x69\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x77\x72\x69\x74\x65\x50\x72\x69\x6D\x69\x74\x69\x76\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x77\x72\x69\x74\x65\x43\x6F\x6D\x70\x6C\x65\x78\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x63\x6F\x6E\x76\x65\x72\x74\x56\x61\x6C\x75\x65\x54\x6F\x58\x6D\x6C","\x6D\x78\x4F\x62\x6A\x65\x63\x74\x43\x6F\x64\x65\x63\x2E\x65\x6E\x63\x6F\x64\x65\x3A\x20\x4E\x6F\x20\x6E\x6F\x64\x65\x20\x66\x6F\x72\x20","\x63\x6F\x6E\x76\x65\x72\x74\x56\x61\x6C\x75\x65\x46\x72\x6F\x6D\x58\x6D\x6C","\x62\x65\x66\x6F\x72\x65\x44\x65\x63\x6F\x64\x65","\x64\x65\x63\x6F\x64\x65\x4E\x6F\x64\x65","\x61\x66\x74\x65\x72\x44\x65\x63\x6F\x64\x65","\x64\x65\x63\x6F\x64\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x63\x6F\x64\x65\x43\x68\x69\x6C\x64\x72\x65\x6E","\x64\x65\x63\x6F\x64\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x6D\x78\x4F\x62\x6A\x65\x63\x74\x43\x6F\x64\x65\x63\x2E\x64\x65\x63\x6F\x64\x65\x3A\x20\x4E\x6F\x20\x6F\x62\x6A\x65\x63\x74\x20\x66\x6F\x72\x20","\x70\x72\x6F\x63\x65\x73\x73\x49\x6E\x63\x6C\x75\x64\x65","\x64\x65\x63\x6F\x64\x65\x43\x68\x69\x6C\x64","\x67\x65\x74\x46\x69\x65\x6C\x64\x54\x65\x6D\x70\x6C\x61\x74\x65","\x61\x64\x64\x4F\x62\x6A\x65\x63\x74\x56\x61\x6C\x75\x65","\x69\x6E\x63\x6C\x75\x64\x65","\x72\x65\x6D\x6F\x76\x65\x57\x68\x69\x74\x65\x73\x70\x61\x63\x65","\x64\x65\x63\x6F\x64\x65\x52\x6F\x6F\x74","\x67\x72\x61\x70\x68\x4C\x69\x73\x74\x65\x6E\x65\x72\x73\x20\x65\x76\x65\x6E\x74\x4C\x69\x73\x74\x65\x6E\x65\x72\x73\x20\x76\x69\x65\x77\x20\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72\x20\x63\x65\x6C\x6C\x52\x65\x6E\x64\x65\x72\x65\x72\x20\x65\x64\x69\x74\x6F\x72\x20\x73\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x6C\x61\x79\x65\x72","\x67\x65\x74\x53\x74\x72\x69\x6E\x67\x56\x61\x6C\x75\x65","\x6D\x78\x53\x74\x79\x6C\x65\x73\x68\x65\x65\x74\x43\x6F\x64\x65\x63\x2E\x64\x65\x63\x6F\x64\x65\x3A\x20\x73\x74\x79\x6C\x65\x73\x68\x65\x65\x74\x20","\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64\x20\x74\x6F\x20\x65\x78\x74\x65\x6E\x64","\x70\x72\x65\x73\x73\x65\x64\x49\x63\x6F\x6E","\x6D\x6F\x64\x65","\x74\x6F\x67\x67\x6C\x65","\x2D\x2D\x2D","\x63\x65\x6C\x6C\x53\x74\x79\x6C\x65","\x54\x65\x6D\x70\x6C\x61\x74\x65\x20","\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64","\x6D\x6F\x64\x69\x66\x69\x65\x64\x20\x6C\x61\x73\x74\x53\x6E\x61\x70\x73\x68\x6F\x74\x20\x69\x67\x6E\x6F\x72\x65\x64\x43\x68\x61\x6E\x67\x65\x73\x20\x75\x6E\x64\x6F\x4D\x61\x6E\x61\x67\x65\x72\x20\x67\x72\x61\x70\x68\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72\x20\x74\x6F\x6F\x6C\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x41\x72\x72\x61\x79","\x64\x65\x63\x6F\x64\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x73","\x75\x69","\x64\x65\x63\x6F\x64\x65\x55\x69","\x73\x65\x74\x4D\x61\x70\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x72\x65\x73\x6F\x75\x72\x63\x65","\x62\x61\x73\x65\x6E\x61\x6D\x65"];var mxClient={VERSION:_0x7ddb[0],IS_IE:0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[1]),IS_IE6:0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[4]),IS_QUIRKS:0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[1])&& (null== document[_0x7ddb[5]]|| 5== document[_0x7ddb[5]]),VML_PREFIX:_0x7ddb[6],OFFICE_PREFIX:_0x7ddb[7],IS_NS:0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[8])&& 0> navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[1]),IS_OP:0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[9]),IS_OT:0> navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[10])&& 0> navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[11])&& 0> navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[12])&& 0> navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[13])&& 0> navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[14])&& 0> navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[15]),IS_SF:0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[16])&& 0> navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[17]),IS_GC:0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[17]),IS_MT:0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[18])&& 0> navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[19])&& 0> navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[20])|| 0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[21])&& 0> navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[22])&& 0> navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[23])|| 0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[24])&& 0> navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[25])|| 0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[26])&& 0> navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[27]),IS_SVG:0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[18])|| 0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[21])|| 0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[28])|| 0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[26])|| 0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[29])|| 0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[30])|| 0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[16])|| 0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[31])|| 0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[9]),NO_FO:0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[19])|| 0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[22])|| 0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[20])|| 0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[23])|| 0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[25])|| 0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[27])|| 0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[32])|| 0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[33])|| 0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[9])|| 0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[1])|| 0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[34]),IS_VML:_0x7ddb[35]== navigator[_0x7ddb[37]][_0x7ddb[36]](),IS_MAC:0< navigator[_0x7ddb[3]][_0x7ddb[36]]()[_0x7ddb[2]](_0x7ddb[38]),IS_TOUCH:0< navigator[_0x7ddb[3]][_0x7ddb[36]]()[_0x7ddb[2]](_0x7ddb[39])|| 0< navigator[_0x7ddb[3]][_0x7ddb[36]]()[_0x7ddb[2]](_0x7ddb[40])|| 0< navigator[_0x7ddb[3]][_0x7ddb[36]]()[_0x7ddb[2]](_0x7ddb[41])|| 0< navigator[_0x7ddb[3]][_0x7ddb[36]]()[_0x7ddb[2]](_0x7ddb[42]),IS_LOCAL:0> document[_0x7ddb[45]][_0x7ddb[44]][_0x7ddb[2]](_0x7ddb[43])&& 0> document[_0x7ddb[45]][_0x7ddb[44]][_0x7ddb[2]](_0x7ddb[46]),isBrowserSupported:function(){return mxClient[_0x7ddb[47]]|| mxClient[_0x7ddb[48]]},link:function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x4= _0x9494x4|| document;if(mxClient[_0x7ddb[49]]){_0x9494x4[_0x7ddb[53]](_0x7ddb[50]+ _0x9494x2+ _0x7ddb[51]+ _0x9494x3+ _0x7ddb[52])}else {var _0x9494x5=_0x9494x4[_0x7ddb[55]](_0x7ddb[54]);_0x9494x5[_0x7ddb[57]](_0x7ddb[56],_0x9494x2);_0x9494x5[_0x7ddb[57]](_0x7ddb[44],_0x9494x3);_0x9494x5[_0x7ddb[57]](_0x7ddb[58],_0x7ddb[59]);_0x9494x5[_0x7ddb[57]](_0x7ddb[60],_0x7ddb[61]);_0x9494x4[_0x7ddb[64]](_0x7ddb[63])[0][_0x7ddb[62]](_0x9494x5)}},include:function(_0x9494x2){document[_0x7ddb[53]](_0x7ddb[65]+ _0x9494x2+ _0x7ddb[66])},dispose:function(){for(var _0x9494x2=0;_0x9494x2< mxEvent[_0x7ddb[68]][_0x7ddb[67]];_0x9494x2++){null!= mxEvent[_0x7ddb[68]][_0x9494x2][_0x7ddb[69]]&& mxEvent[_0x7ddb[70]](mxEvent[_0x7ddb[68]][_0x9494x2])}}};mxClient[_0x7ddb[71]]&& mxClient[_0x7ddb[72]]?mxClient[_0x7ddb[73]]= _0x7ddb[74]:mxClient[_0x7ddb[75]]|| mxClient[_0x7ddb[76]]?mxClient[_0x7ddb[73]]= _0x7ddb[77]:mxClient[_0x7ddb[78]]?mxClient[_0x7ddb[73]]= _0x7ddb[79]:mxClient[_0x7ddb[80]]&& 9<= document[_0x7ddb[5]]&& (mxClient[_0x7ddb[73]]= _0x7ddb[81]);_0x7ddb[82]== typeof mxLoadResources&& (mxLoadResources= !0);_0x7ddb[82]== typeof mxResourceExtension&& (mxResourceExtension= _0x7ddb[83]);_0x7ddb[82]== typeof mxLoadStylesheets&& (mxLoadStylesheets= !0);_0x7ddb[82]!= typeof mxBasePath&& 0< mxBasePath[_0x7ddb[67]]?(_0x7ddb[84]== mxBasePath[_0x7ddb[85]](mxBasePath[_0x7ddb[67]]- 1)&& (mxBasePath= mxBasePath[_0x7ddb[85]](0,mxBasePath[_0x7ddb[67]]- 1)),mxClient[_0x7ddb[86]]= mxBasePath):mxClient[_0x7ddb[86]]= _0x7ddb[87];_0x7ddb[82]!= typeof mxImageBasePath&& 0< mxImageBasePath[_0x7ddb[67]]?(_0x7ddb[84]== mxImageBasePath[_0x7ddb[85]](mxImageBasePath[_0x7ddb[67]]- 1)&& (mxImageBasePath= mxImageBasePath[_0x7ddb[85]](0,mxImageBasePath[_0x7ddb[67]]- 1)),mxClient[_0x7ddb[88]]= mxImageBasePath):mxClient[_0x7ddb[88]]= mxClient[_0x7ddb[86]]+ _0x7ddb[89];mxClient[_0x7ddb[90]]= _0x7ddb[82]!= typeof mxLanguage?mxLanguage:mxClient[_0x7ddb[80]]?navigator[_0x7ddb[91]]:navigator[_0x7ddb[90]];mxClient[_0x7ddb[92]]= _0x7ddb[82]!= typeof mxDefaultLanguage?mxDefaultLanguage:_0x7ddb[93];mxLoadStylesheets&& mxClient[_0x7ddb[54]](_0x7ddb[94],mxClient[_0x7ddb[86]]+ _0x7ddb[95]);_0x7ddb[82]!= typeof mxLanguages&& (mxClient[_0x7ddb[96]]= mxLanguages);if(mxClient[_0x7ddb[80]]){if(9<= document[_0x7ddb[5]]){mxClient[_0x7ddb[47]]= !1,mxClient[_0x7ddb[48]]= !0}else {8== document[_0x7ddb[5]]?(document[_0x7ddb[100]][_0x7ddb[99]](mxClient.VML_PREFIX,_0x7ddb[97],_0x7ddb[98]),document[_0x7ddb[100]][_0x7ddb[99]](mxClient.OFFICE_PREFIX,_0x7ddb[101],_0x7ddb[98])):(document[_0x7ddb[100]][_0x7ddb[99]](mxClient.VML_PREFIX,_0x7ddb[97]),document[_0x7ddb[100]][_0x7ddb[99]](mxClient.OFFICE_PREFIX,_0x7ddb[101]));var ss=document[_0x7ddb[102]]();ss[_0x7ddb[103]]= _0x7ddb[104];mxLoadStylesheets&& mxClient[_0x7ddb[54]](_0x7ddb[94],mxClient[_0x7ddb[86]]+ _0x7ddb[105])};window[_0x7ddb[108]](_0x7ddb[106],mxClient[_0x7ddb[107]])};var mxLog={consoleName:_0x7ddb[109],TRACE:!1,DEBUG:!0,WARN:!0,buffer:_0x7ddb[110],init:function(){if(null== mxLog[_0x7ddb[111]]&& null!= document[_0x7ddb[112]]){var _0x9494x2=mxLog[_0x7ddb[113]]+ _0x7ddb[114]+ mxClient[_0x7ddb[115]],_0x9494x3=document[_0x7ddb[55]](_0x7ddb[116]);_0x9494x3[_0x7ddb[57]](_0x7ddb[117],_0x7ddb[118]);_0x9494x3[_0x7ddb[57]](_0x7ddb[119],_0x7ddb[118]);var _0x9494x4=document[_0x7ddb[55]](_0x7ddb[120]),_0x9494x5=document[_0x7ddb[55]](_0x7ddb[121]),_0x9494x9=document[_0x7ddb[55]](_0x7ddb[122]);_0x9494x9[_0x7ddb[124]][_0x7ddb[123]]= _0x7ddb[125];mxLog[_0x7ddb[126]]= document[_0x7ddb[55]](_0x7ddb[126]);mxLog[_0x7ddb[126]][_0x7ddb[57]](_0x7ddb[127],_0x7ddb[128]);mxLog[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[119]]= _0x7ddb[118];mxLog[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[129]]= _0x7ddb[130];mxLog[_0x7ddb[126]][_0x7ddb[131]]= mxLog[_0x7ddb[132]];mxLog[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[117]]= mxClient[_0x7ddb[133]]&& _0x7ddb[134]!= document[_0x7ddb[135]]?_0x7ddb[136]:_0x7ddb[118];_0x9494x9[_0x7ddb[62]](mxLog[_0x7ddb[126]]);_0x9494x5[_0x7ddb[62]](_0x9494x9);_0x9494x4[_0x7ddb[62]](_0x9494x5);_0x9494x5= document[_0x7ddb[55]](_0x7ddb[121]);mxLog[_0x7ddb[122]]= document[_0x7ddb[55]](_0x7ddb[122]);mxLog[_0x7ddb[122]][_0x7ddb[124]][_0x7ddb[123]]= _0x7ddb[125];mxLog[_0x7ddb[122]][_0x7ddb[57]](_0x7ddb[119],_0x7ddb[137]);_0x9494x5[_0x7ddb[62]](mxLog[_0x7ddb[122]]);_0x9494x4[_0x7ddb[62]](_0x9494x5);_0x9494x3[_0x7ddb[62]](_0x9494x4);mxLog[_0x7ddb[140]](_0x7ddb[138],function(_0x9494x2){mxLog[_0x7ddb[139]]()});mxLog[_0x7ddb[140]](_0x7ddb[141],function(_0x9494x2){_0x9494x2= mxUtils[_0x7ddb[142]](document[_0x7ddb[112]]);mxLog[_0x7ddb[143]](_0x9494x2)});mxLog[_0x7ddb[140]](_0x7ddb[144],function(_0x9494x2){mxLog[_0x7ddb[145]]= !mxLog[_0x7ddb[145]];mxLog[_0x7ddb[145]]?mxLog[_0x7ddb[143]](_0x7ddb[146]):mxLog[_0x7ddb[143]](_0x7ddb[147])});mxLog[_0x7ddb[140]](_0x7ddb[148],function(_0x9494x2){try{mxUtils[_0x7ddb[149]](mxLog[_0x7ddb[126]][_0x7ddb[131]])}catch(_0x9494x3){mxUtils[_0x7ddb[150]](_0x9494x3)}});mxLog[_0x7ddb[140]](_0x7ddb[151],function(_0x9494x2){try{mxUtils[_0x7ddb[152]](mxLog[_0x7ddb[126]][_0x7ddb[131]])}catch(_0x9494x3){mxUtils[_0x7ddb[150]](_0x9494x3)}});mxLog[_0x7ddb[140]](_0x7ddb[153],function(_0x9494x2){mxLog[_0x7ddb[126]][_0x7ddb[131]]= _0x7ddb[110]});_0x9494x5= _0x9494x4= 0;_0x7ddb[154]=== typeof window[_0x7ddb[155]]?(_0x9494x4= window[_0x7ddb[156]],_0x9494x5= window[_0x7ddb[155]]):(_0x9494x4= document[_0x7ddb[158]][_0x7ddb[157]]|| document[_0x7ddb[112]][_0x7ddb[157]],_0x9494x5= document[_0x7ddb[112]][_0x7ddb[159]]);mxLog[_0x7ddb[111]]= new mxWindow(_0x9494x2,_0x9494x3,Math[_0x7ddb[160]](0,_0x9494x5- 320),Math[_0x7ddb[160]](0,_0x9494x4- 210),300,160);mxLog[_0x7ddb[111]][_0x7ddb[161]](!0);mxLog[_0x7ddb[111]][_0x7ddb[162]](!1);mxLog[_0x7ddb[111]][_0x7ddb[163]](!0);mxLog[_0x7ddb[111]][_0x7ddb[164]](!0);mxLog[_0x7ddb[111]][_0x7ddb[165]]= !1;if((mxClient[_0x7ddb[133]]|| mxClient[_0x7ddb[80]])&& !mxClient[_0x7ddb[76]]&& !mxClient[_0x7ddb[75]]&& _0x7ddb[134]!= document[_0x7ddb[135]]){var _0x9494xa=mxLog[_0x7ddb[111]][_0x7ddb[166]](),_0x9494x2=function(_0x9494x2,_0x9494x3){mxLog[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[119]]= Math[_0x7ddb[160]](0,_0x9494xa[_0x7ddb[167]]- 70)+ _0x7ddb[168]};mxLog[_0x7ddb[111]][_0x7ddb[169]](mxEvent.RESIZE_END,_0x9494x2);mxLog[_0x7ddb[111]][_0x7ddb[169]](mxEvent.MAXIMIZE,_0x9494x2);mxLog[_0x7ddb[111]][_0x7ddb[169]](mxEvent.NORMALIZE,_0x9494x2);mxLog[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[119]]= _0x7ddb[170]}}},info:function(){mxLog[_0x7ddb[171]](mxUtils.toString(navigator))},addButton:function(_0x9494x2,_0x9494x3){var _0x9494x4=document[_0x7ddb[55]](_0x7ddb[172]);mxUtils[_0x7ddb[53]](_0x9494x4,_0x9494x2);mxEvent[_0x7ddb[169]](_0x9494x4,_0x7ddb[173],_0x9494x3);mxLog[_0x7ddb[122]][_0x7ddb[62]](_0x9494x4)},isVisible:function(){return null!= mxLog[_0x7ddb[111]]?mxLog[_0x7ddb[111]][_0x7ddb[174]]():!1},show:function(){mxLog[_0x7ddb[175]](!0)},setVisible:function(_0x9494x2){null== mxLog[_0x7ddb[111]]&& mxLog[_0x7ddb[176]]();null!= mxLog[_0x7ddb[111]]&& mxLog[_0x7ddb[111]][_0x7ddb[175]](_0x9494x2)},enter:function(_0x9494x2){if(mxLog[_0x7ddb[145]]){return mxLog[_0x7ddb[171]](_0x7ddb[177]+ _0x9494x2),( new Date)[_0x7ddb[178]]()}},leave:function(_0x9494x2,_0x9494x3){if(mxLog[_0x7ddb[145]]){var _0x9494x4=0!= _0x9494x3?_0x7ddb[179]+ (( new Date)[_0x7ddb[178]]()- _0x9494x3)+ _0x7ddb[180]:_0x7ddb[110];mxLog[_0x7ddb[171]](_0x7ddb[181]+ _0x9494x2+ _0x9494x4)}},debug:function(){mxLog[_0x7ddb[182]]&& mxLog[_0x7ddb[171]][_0x7ddb[183]](this,arguments)},warn:function(){mxLog[_0x7ddb[184]]&& mxLog[_0x7ddb[171]][_0x7ddb[183]](this,arguments)},write:function(){for(var _0x9494x2=_0x7ddb[110],_0x9494x3=0;_0x9494x3< arguments[_0x7ddb[67]];_0x9494x3++){_0x9494x2+= arguments[_0x9494x3],_0x9494x3< arguments[_0x7ddb[67]]- 1&& (_0x9494x2+= _0x7ddb[185])};null!= mxLog[_0x7ddb[126]]?(mxLog[_0x7ddb[126]][_0x7ddb[131]]+= _0x9494x2,0<= navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[186])&& (mxLog[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[188],mxLog[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[189]),mxLog[_0x7ddb[126]][_0x7ddb[190]]= mxLog[_0x7ddb[126]][_0x7ddb[191]]):mxLog[_0x7ddb[132]]+= _0x9494x2},writeln:function(){for(var _0x9494x2=_0x7ddb[110],_0x9494x3=0;_0x9494x3< arguments[_0x7ddb[67]];_0x9494x3++){_0x9494x2+= arguments[_0x9494x3],_0x9494x3< arguments[_0x7ddb[67]]- 1&& (_0x9494x2+= _0x7ddb[185])};mxLog[_0x7ddb[53]](_0x9494x2+ _0x7ddb[192])}},mxObjectIdentity={FIELD_NAME:_0x7ddb[193],counter:0,get:function(_0x9494x2){if(_0x7ddb[194]== typeof _0x9494x2&& null== _0x9494x2[mxObjectIdentity[_0x7ddb[195]]]){var _0x9494x3=mxUtils[_0x7ddb[197]](_0x9494x2[_0x7ddb[196]]);_0x9494x2[mxObjectIdentity[_0x7ddb[195]]]= _0x9494x3+ _0x7ddb[198]+ mxObjectIdentity[_0x7ddb[199]]++};return _0x9494x2[mxObjectIdentity[_0x7ddb[195]]]},clear:function(_0x9494x2){_0x7ddb[194]== typeof _0x9494x2&& delete _0x9494x2[mxObjectIdentity[_0x7ddb[195]]]}};function mxDictionary(){this[_0x7ddb[200]]()}mxDictionary[_0x7ddb[202]][_0x7ddb[201]]= null;mxDictionary[_0x7ddb[202]][_0x7ddb[200]]= function(){this[_0x7ddb[201]]= {}};mxDictionary[_0x7ddb[202]][_0x7ddb[203]]= function(_0x9494x2){_0x9494x2= mxObjectIdentity[_0x7ddb[203]](_0x9494x2);return this[_0x7ddb[201]][_0x9494x2]};mxDictionary[_0x7ddb[202]][_0x7ddb[204]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=mxObjectIdentity[_0x7ddb[203]](_0x9494x2),_0x9494x5=this[_0x7ddb[201]][_0x9494x4];this[_0x7ddb[201]][_0x9494x4]= _0x9494x3;return _0x9494x5};mxDictionary[_0x7ddb[202]][_0x7ddb[205]]= function(_0x9494x2){_0x9494x2= mxObjectIdentity[_0x7ddb[203]](_0x9494x2);var _0x9494x3=this[_0x7ddb[201]][_0x9494x2];delete this[_0x7ddb[201]][_0x9494x2];return _0x9494x3};mxDictionary[_0x7ddb[202]][_0x7ddb[206]]= function(){var _0x9494x2=[],_0x9494x3;for(_0x9494x3 in this[_0x7ddb[201]]){_0x9494x2[_0x7ddb[207]](_0x9494x3)};return _0x9494x2};mxDictionary[_0x7ddb[202]][_0x7ddb[208]]= function(){var _0x9494x2=[],_0x9494x3;for(_0x9494x3 in this[_0x7ddb[201]]){_0x9494x2[_0x7ddb[207]](this[_0x7ddb[201]][_0x9494x3])};return _0x9494x2};mxDictionary[_0x7ddb[202]][_0x7ddb[209]]= function(_0x9494x2){for(var _0x9494x3 in this[_0x7ddb[201]]){_0x9494x2(_0x9494x3,this[_0x7ddb[201]][_0x9494x3])}};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(_0x9494x2){return null!= mxClient[_0x7ddb[96]]?0<= mxUtils[_0x7ddb[2]](mxClient[_0x7ddb[96]],_0x9494x2):!0},getDefaultBundle:function(_0x9494x2,_0x9494x3){return mxResources[_0x7ddb[210]]|| !mxResources[_0x7ddb[211]](_0x9494x3)?_0x9494x2+ mxResources[_0x7ddb[212]]:null},getSpecialBundle:function(_0x9494x2,_0x9494x3){if(null== mxClient[_0x7ddb[96]]|| !this[_0x7ddb[211]](_0x9494x3)){var _0x9494x4=_0x9494x3[_0x7ddb[2]](_0x7ddb[213]);0< _0x9494x4&& (_0x9494x3= _0x9494x3[_0x7ddb[85]](0,_0x9494x4))};return mxResources[_0x7ddb[214]]&& mxResources[_0x7ddb[211]](_0x9494x3)&& _0x9494x3!= mxClient[_0x7ddb[92]]?_0x9494x2+ _0x7ddb[215]+ _0x9494x3+ mxResources[_0x7ddb[212]]:null},add:function(_0x9494x2,_0x9494x3){_0x9494x3= null!= _0x9494x3?_0x9494x3:mxClient[_0x7ddb[90]][_0x7ddb[216]]();if(_0x9494x3!= mxConstants[_0x7ddb[217]]){var _0x9494x4=mxResources[_0x7ddb[218]](_0x9494x2,_0x9494x3);if(null!= _0x9494x4){try{var _0x9494x5=mxUtils[_0x7ddb[219]](_0x9494x4);_0x9494x5[_0x7ddb[220]]()&& mxResources[_0x7ddb[222]](_0x9494x5[_0x7ddb[221]]())}catch(e){}};_0x9494x4= mxResources[_0x7ddb[223]](_0x9494x2,_0x9494x3);if(null!= _0x9494x4){try{_0x9494x5= mxUtils[_0x7ddb[219]](_0x9494x4),_0x9494x5[_0x7ddb[220]]()&& mxResources[_0x7ddb[222]](_0x9494x5[_0x7ddb[221]]())}catch(f){}}}},parse:function(_0x9494x2){if(null!= _0x9494x2){_0x9494x2= _0x9494x2[_0x7ddb[224]](_0x7ddb[192]);for(var _0x9494x3=0;_0x9494x3< _0x9494x2[_0x7ddb[67]];_0x9494x3++){if(_0x7ddb[198]!= _0x9494x2[_0x9494x3][_0x7ddb[225]](0)){var _0x9494x4=_0x9494x2[_0x9494x3][_0x7ddb[2]](_0x7ddb[226]);if(0< _0x9494x4){var _0x9494x5=_0x9494x2[_0x9494x3][_0x7ddb[85]](0,_0x9494x4),_0x9494x9=_0x9494x2[_0x9494x3][_0x7ddb[67]];13== _0x9494x2[_0x9494x3][_0x7ddb[227]](_0x9494x9- 1)&& _0x9494x9--;_0x9494x4= _0x9494x2[_0x9494x3][_0x7ddb[85]](_0x9494x4+ 1,_0x9494x9);this[_0x7ddb[228]]?(_0x9494x4= _0x9494x4[_0x7ddb[230]](/\\(?=u[a-fA-F\d]{4})/g,_0x7ddb[229]),mxResources[_0x7ddb[231]][_0x9494x5]= unescape(_0x9494x4)):mxResources[_0x7ddb[231]][_0x9494x5]= _0x9494x4}}}}},get:function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x2= mxResources[_0x7ddb[231]][_0x9494x2];null== _0x9494x2&& (_0x9494x2= _0x9494x4);if(null!= _0x9494x2&& null!= _0x9494x3){_0x9494x4= [];for(var _0x9494x5=null,_0x9494x9=0;_0x9494x9< _0x9494x2[_0x7ddb[67]];_0x9494x9++){var _0x9494xa=_0x9494x2[_0x7ddb[225]](_0x9494x9);_0x7ddb[232]== _0x9494xa?_0x9494x5= _0x7ddb[110]:null!= _0x9494x5&& _0x7ddb[233]== _0x9494xa?(_0x9494x5= parseInt(_0x9494x5)- 1,0<= _0x9494x5&& _0x9494x5< _0x9494x3[_0x7ddb[67]]&& _0x9494x4[_0x7ddb[207]](_0x9494x3[_0x9494x5]),_0x9494x5= null):null!= _0x9494x5?_0x9494x5+= _0x9494xa:_0x9494x4[_0x7ddb[207]](_0x9494xa)};_0x9494x2= _0x9494x4[_0x7ddb[234]](_0x7ddb[110])};return _0x9494x2}};function mxPoint(_0x9494x2,_0x9494x3){this[_0x7ddb[235]]= null!= _0x9494x2?_0x9494x2:0;this[_0x7ddb[236]]= null!= _0x9494x3?_0x9494x3:0}mxPoint[_0x7ddb[202]][_0x7ddb[235]]= null;mxPoint[_0x7ddb[202]][_0x7ddb[236]]= null;mxPoint[_0x7ddb[202]][_0x7ddb[237]]= function(_0x9494x2){return _0x9494x2[_0x7ddb[235]]== this[_0x7ddb[235]]&& _0x9494x2[_0x7ddb[236]]== this[_0x7ddb[236]]};mxPoint[_0x7ddb[202]][_0x7ddb[238]]= function(){return mxUtils[_0x7ddb[238]](this)};function mxRectangle(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){mxPoint[_0x7ddb[239]](this,_0x9494x2,_0x9494x3);this[_0x7ddb[117]]= null!= _0x9494x4?_0x9494x4:0;this[_0x7ddb[119]]= null!= _0x9494x5?_0x9494x5:0}mxRectangle[_0x7ddb[202]]= new mxPoint;mxRectangle[_0x7ddb[202]][_0x7ddb[196]]= mxRectangle;mxRectangle[_0x7ddb[202]][_0x7ddb[117]]= null;mxRectangle[_0x7ddb[202]][_0x7ddb[119]]= null;mxRectangle[_0x7ddb[202]][_0x7ddb[240]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){this[_0x7ddb[235]]= _0x9494x2;this[_0x7ddb[236]]= _0x9494x3;this[_0x7ddb[117]]= _0x9494x4;this[_0x7ddb[119]]= _0x9494x5};mxRectangle[_0x7ddb[202]][_0x7ddb[241]]= function(){return this[_0x7ddb[235]]+ this[_0x7ddb[117]]/ 2};mxRectangle[_0x7ddb[202]][_0x7ddb[242]]= function(){return this[_0x7ddb[236]]+ this[_0x7ddb[119]]/ 2};mxRectangle[_0x7ddb[202]][_0x7ddb[99]]= function(_0x9494x2){if(null!= _0x9494x2){var _0x9494x3=Math[_0x7ddb[243]](this[_0x7ddb[235]],_0x9494x2[_0x7ddb[235]]),_0x9494x4=Math[_0x7ddb[243]](this[_0x7ddb[236]],_0x9494x2[_0x7ddb[236]]),_0x9494x5=Math[_0x7ddb[160]](this[_0x7ddb[235]]+ this[_0x7ddb[117]],_0x9494x2[_0x7ddb[235]]+ _0x9494x2[_0x7ddb[117]]);_0x9494x2= Math[_0x7ddb[160]](this[_0x7ddb[236]]+ this[_0x7ddb[119]],_0x9494x2[_0x7ddb[236]]+ _0x9494x2[_0x7ddb[119]]);this[_0x7ddb[235]]= _0x9494x3;this[_0x7ddb[236]]= _0x9494x4;this[_0x7ddb[117]]= _0x9494x5- _0x9494x3;this[_0x7ddb[119]]= _0x9494x2- _0x9494x4}};mxRectangle[_0x7ddb[202]][_0x7ddb[244]]= function(_0x9494x2){this[_0x7ddb[235]]-= _0x9494x2;this[_0x7ddb[236]]-= _0x9494x2;this[_0x7ddb[117]]+= 2* _0x9494x2;this[_0x7ddb[119]]+= 2* _0x9494x2};mxRectangle[_0x7ddb[202]][_0x7ddb[245]]= function(){return new mxPoint(this[_0x7ddb[235]],this[_0x7ddb[236]])};mxRectangle[_0x7ddb[202]][_0x7ddb[237]]= function(_0x9494x2){return _0x9494x2[_0x7ddb[235]]== this[_0x7ddb[235]]&& _0x9494x2[_0x7ddb[236]]== this[_0x7ddb[236]]&& _0x9494x2[_0x7ddb[117]]== this[_0x7ddb[117]]&& _0x9494x2[_0x7ddb[119]]== this[_0x7ddb[119]]};var mxEffects={animateChanges:function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=0,_0x9494x9=function(){for(var _0x9494x12=!1,_0x9494x13=0;_0x9494x13< _0x9494x3[_0x7ddb[67]];_0x9494x13++){var _0x9494x14=_0x9494x3[_0x9494x13];if(_0x9494x14 instanceof mxGeometryChange|| _0x9494x14 instanceof mxTerminalChange|| _0x9494x14 instanceof mxValueChange|| _0x9494x14 instanceof mxChildChange|| _0x9494x14 instanceof mxStyleChange){var _0x9494x15=_0x9494x2[_0x7ddb[249]]()[_0x7ddb[248]](_0x9494x14[_0x7ddb[246]]|| _0x9494x14[_0x7ddb[247]],!1);if(null!= _0x9494x15){if(_0x9494x12= !0,_0x9494x14[_0x7ddb[196]]!= mxGeometryChange|| _0x9494x2[_0x7ddb[251]][_0x7ddb[250]](_0x9494x14[_0x7ddb[246]])){mxUtils[_0x7ddb[254]](_0x9494x15[_0x7ddb[253]][_0x7ddb[252]],100* _0x9494x5/ 10)}else {var _0x9494x16=_0x9494x2[_0x7ddb[249]]()[_0x7ddb[255]],_0x9494x17=(_0x9494x14[_0x7ddb[256]][_0x7ddb[235]]- _0x9494x14[_0x7ddb[257]][_0x7ddb[235]])* _0x9494x16,_0x9494x18=(_0x9494x14[_0x7ddb[256]][_0x7ddb[236]]- _0x9494x14[_0x7ddb[257]][_0x7ddb[236]])* _0x9494x16,_0x9494x19=(_0x9494x14[_0x7ddb[256]][_0x7ddb[117]]- _0x9494x14[_0x7ddb[257]][_0x7ddb[117]])* _0x9494x16,_0x9494x16=(_0x9494x14[_0x7ddb[256]][_0x7ddb[119]]- _0x9494x14[_0x7ddb[257]][_0x7ddb[119]])* _0x9494x16;0== _0x9494x5?(_0x9494x15[_0x7ddb[235]]-= _0x9494x17,_0x9494x15[_0x7ddb[236]]-= _0x9494x18,_0x9494x15[_0x7ddb[117]]-= _0x9494x19,_0x9494x15[_0x7ddb[119]]-= _0x9494x16):(_0x9494x15[_0x7ddb[235]]+= _0x9494x17/ 10,_0x9494x15[_0x7ddb[236]]+= _0x9494x18/ 10,_0x9494x15[_0x7ddb[117]]+= _0x9494x19/ 10,_0x9494x15[_0x7ddb[119]]+= _0x9494x16/ 10);_0x9494x2[_0x7ddb[259]][_0x7ddb[258]](_0x9494x15);mxEffects[_0x7ddb[260]](_0x9494x2,_0x9494x14[_0x7ddb[246]],100* _0x9494x5/ 10)}}}};10> _0x9494x5&& _0x9494x12?(_0x9494x5++,window[_0x7ddb[261]](_0x9494x9,_0x9494xa)):null!= _0x9494x4&& _0x9494x4()},_0x9494xa=30;_0x9494x9()},cascadeOpacity:function(_0x9494x2,_0x9494x3,_0x9494x4){for(var _0x9494x5=_0x9494x2[_0x7ddb[251]][_0x7ddb[262]](_0x9494x3),_0x9494x9=0;_0x9494x9< _0x9494x5;_0x9494x9++){var _0x9494xa=_0x9494x2[_0x7ddb[251]][_0x7ddb[263]](_0x9494x3,_0x9494x9),_0x9494x12=_0x9494x2[_0x7ddb[249]]()[_0x7ddb[248]](_0x9494xa);null!= _0x9494x12&& (mxUtils[_0x7ddb[254]](_0x9494x12[_0x7ddb[253]][_0x7ddb[252]],_0x9494x4),mxEffects[_0x7ddb[260]](_0x9494x2,_0x9494xa,_0x9494x4))};_0x9494x3= _0x9494x2[_0x7ddb[251]][_0x7ddb[264]](_0x9494x3);if(null!= _0x9494x3){for(_0x9494x9= 0;_0x9494x9< _0x9494x3[_0x7ddb[67]];_0x9494x9++){_0x9494x5= _0x9494x2[_0x7ddb[249]]()[_0x7ddb[248]](_0x9494x3[_0x9494x9]),null!= _0x9494x5&& mxUtils[_0x7ddb[254]](_0x9494x5[_0x7ddb[253]][_0x7ddb[252]],_0x9494x4)}}},fadeOut:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){_0x9494x5= _0x9494x5|| 40;_0x9494x9= _0x9494x9|| 30;var _0x9494x12=_0x9494x3|| 100;mxUtils[_0x7ddb[254]](_0x9494x2,_0x9494x12);if(_0x9494xa|| null== _0x9494xa){var _0x9494x13=function(){_0x9494x12= Math[_0x7ddb[160]](_0x9494x12- _0x9494x5,0);mxUtils[_0x7ddb[254]](_0x9494x2,_0x9494x12);0< _0x9494x12?window[_0x7ddb[261]](_0x9494x13,_0x9494x9):(_0x9494x2[_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[188],_0x9494x4&& _0x9494x2[_0x7ddb[265]]&& _0x9494x2[_0x7ddb[265]][_0x7ddb[266]](_0x9494x2))};window[_0x7ddb[261]](_0x9494x13,_0x9494x9)}else {_0x9494x2[_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[188],_0x9494x4&& _0x9494x2[_0x7ddb[265]]&& _0x9494x2[_0x7ddb[265]][_0x7ddb[266]](_0x9494x2)}}},mxUtils={errorResource:_0x7ddb[130]!= mxClient[_0x7ddb[90]]?_0x7ddb[267]:_0x7ddb[110],closeResource:_0x7ddb[130]!= mxClient[_0x7ddb[90]]?_0x7ddb[268]:_0x7ddb[110],errorImage:mxClient[_0x7ddb[88]]+ _0x7ddb[269],removeCursors:function(_0x9494x2){null!= _0x9494x2[_0x7ddb[124]]&& (_0x9494x2[_0x7ddb[124]][_0x7ddb[270]]= _0x7ddb[110]);_0x9494x2= _0x9494x2[_0x7ddb[271]];if(null!= _0x9494x2){for(var _0x9494x3=_0x9494x2[_0x7ddb[67]],_0x9494x4=0;_0x9494x4< _0x9494x3;_0x9494x4+= 1){mxUtils[_0x7ddb[272]](_0x9494x2[_0x9494x4])}}},getCurrentStyle:function(){return mxClient[_0x7ddb[80]]?function(_0x9494x2){return null!= _0x9494x2?_0x9494x2[_0x7ddb[273]]:null}:function(_0x9494x2){return null!= _0x9494x2?window[_0x7ddb[274]](_0x9494x2,_0x7ddb[110]):null}}(),hasScrollbars:function(_0x9494x2){_0x9494x2= mxUtils[_0x7ddb[275]](_0x9494x2);return null!= _0x9494x2&& (_0x7ddb[276]== _0x9494x2[_0x7ddb[277]]|| _0x7ddb[278]== _0x9494x2[_0x7ddb[277]])},bind:function(_0x9494x2,_0x9494x3){return function(){return _0x9494x3[_0x7ddb[183]](_0x9494x2,arguments)}},eval:function(_0x9494x2){var _0x9494x3=null;if(0<= _0x9494x2[_0x7ddb[2]](_0x7ddb[279])){try{eval(_0x7ddb[280]+ _0x9494x2),_0x9494x3= _mxJavaScriptExpression,_mxJavaScriptExpression= null}catch(c){mxLog[_0x7ddb[283]](c[_0x7ddb[281]]+ _0x7ddb[282]+ _0x9494x2)}}else {try{_0x9494x3= eval(_0x9494x2)}catch(d){mxLog[_0x7ddb[283]](d[_0x7ddb[281]]+ _0x7ddb[282]+ _0x9494x2)}};return _0x9494x3},findNode:function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=_0x9494x2[_0x7ddb[284]](_0x9494x3);if(null!= _0x9494x5&& _0x9494x5== _0x9494x4){return _0x9494x2};for(_0x9494x2= _0x9494x2[_0x7ddb[285]];null!= _0x9494x2;){_0x9494x5= mxUtils[_0x7ddb[286]](_0x9494x2,_0x9494x3,_0x9494x4);if(null!= _0x9494x5){return _0x9494x5};_0x9494x2= _0x9494x2[_0x7ddb[287]]};return null},findNodeByAttribute:function(){return 9<= document[_0x7ddb[5]]?function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=null;if(null!= _0x9494x2){if(_0x9494x2[_0x7ddb[288]]== mxConstants[_0x7ddb[289]]&& _0x9494x2[_0x7ddb[284]](_0x9494x3)== _0x9494x4){_0x9494x5= _0x9494x2}else {for(_0x9494x2= _0x9494x2[_0x7ddb[285]];null!= _0x9494x2&& null== _0x9494x5;){_0x9494x5= mxUtils[_0x7ddb[290]](_0x9494x2,_0x9494x3,_0x9494x4),_0x9494x2= _0x9494x2[_0x7ddb[287]]}}};return _0x9494x5}:mxClient[_0x7ddb[80]]?function(_0x9494x2,_0x9494x3,_0x9494x4){return null== _0x9494x2?null:_0x9494x2[_0x7ddb[295]][_0x7ddb[294]](_0x7ddb[291]+ _0x9494x3+ _0x7ddb[292]+ _0x9494x4+ _0x7ddb[293])}:function(_0x9494x2,_0x9494x3,_0x9494x4){return null== _0x9494x2?null:_0x9494x2[_0x7ddb[295]][_0x7ddb[297]](_0x7ddb[291]+ _0x9494x3+ _0x7ddb[292]+ _0x9494x4+ _0x7ddb[293],_0x9494x2[_0x7ddb[295]],null,XPathResult.ANY_TYPE,null)[_0x7ddb[296]]()}}(),getFunctionName:function(_0x9494x2){var _0x9494x3=null;if(null!= _0x9494x2){if(null!= _0x9494x2[_0x7ddb[298]]){_0x9494x3= _0x9494x2[_0x7ddb[298]]}else {_0x9494x2= _0x9494x2.toString();for(_0x9494x3= 9;_0x7ddb[185]== _0x9494x2[_0x7ddb[225]](_0x9494x3);){_0x9494x3++};var _0x9494x4=_0x9494x2[_0x7ddb[2]](_0x7ddb[299],_0x9494x3),_0x9494x3=_0x9494x2[_0x7ddb[85]](_0x9494x3,_0x9494x4)}};return _0x9494x3},indexOf:function(_0x9494x2,_0x9494x3){if(null!= _0x9494x2&& null!= _0x9494x3){for(var _0x9494x4=0;_0x9494x4< _0x9494x2[_0x7ddb[67]];_0x9494x4++){if(_0x9494x2[_0x9494x4]== _0x9494x3){return _0x9494x4}}};return -1},remove:function(_0x9494x2,_0x9494x3){var _0x9494x4=null;if(_0x7ddb[194]== typeof _0x9494x3){for(var _0x9494x5=mxUtils[_0x7ddb[2]](_0x9494x3,_0x9494x2);0<= _0x9494x5;){_0x9494x3[_0x7ddb[300]](_0x9494x5,1),_0x9494x4= _0x9494x2,_0x9494x5= mxUtils[_0x7ddb[2]](_0x9494x3,_0x9494x2)}};for(var _0x9494x9 in _0x9494x3){_0x9494x3[_0x9494x9]== _0x9494x2&& ( delete _0x9494x3[_0x9494x9],_0x9494x4= _0x9494x2)};return _0x9494x4},isNode:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){return null!= _0x9494x2&& !isNaN(_0x9494x2[_0x7ddb[288]])&& (null== _0x9494x3|| _0x9494x2[_0x7ddb[301]][_0x7ddb[216]]()== _0x9494x3[_0x7ddb[216]]())?null== _0x9494x4|| _0x9494x2[_0x7ddb[284]](_0x9494x4)== _0x9494x5:!1},getChildNodes:function(_0x9494x2,_0x9494x3){_0x9494x3= _0x9494x3|| mxConstants[_0x7ddb[289]];for(var _0x9494x4=[],_0x9494x5=_0x9494x2[_0x7ddb[285]];null!= _0x9494x5;){_0x9494x5[_0x7ddb[288]]== _0x9494x3&& _0x9494x4[_0x7ddb[207]](_0x9494x5),_0x9494x5= _0x9494x5[_0x7ddb[287]]};return _0x9494x4},createXmlDocument:function(){var _0x9494x2=null;document[_0x7ddb[302]]&& document[_0x7ddb[302]][_0x7ddb[303]]?_0x9494x2= document[_0x7ddb[302]][_0x7ddb[303]](_0x7ddb[110],_0x7ddb[110],null):window[_0x7ddb[304]]&& (_0x9494x2= new ActiveXObject(_0x7ddb[305]));return _0x9494x2},parseXml:function(){return mxClient[_0x7ddb[80]]&& (_0x7ddb[82]=== typeof document[_0x7ddb[5]]|| 9> document[_0x7ddb[5]])?function(_0x9494x2){var _0x9494x3=mxUtils[_0x7ddb[306]]();_0x9494x3[_0x7ddb[307]]= _0x7ddb[308];_0x9494x3[_0x7ddb[309]](_0x9494x2);return _0x9494x3}:function(_0x9494x2){return ( new DOMParser)[_0x7ddb[311]](_0x9494x2,_0x7ddb[310])}}(),clearSelection:function(){if(document[_0x7ddb[312]]){return function(){document[_0x7ddb[312]][_0x7ddb[313]]()}};if(window[_0x7ddb[314]]){return function(){window[_0x7ddb[314]]()[_0x7ddb[315]]()}}}(),getPrettyXml:function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=[];if(null!= _0x9494x2){if(_0x9494x3= _0x9494x3|| _0x7ddb[316],_0x9494x4= _0x9494x4|| _0x7ddb[110],_0x9494x2[_0x7ddb[288]]== mxConstants[_0x7ddb[317]]){_0x9494x5[_0x7ddb[207]](_0x9494x2[_0x7ddb[318]])}else {_0x9494x5[_0x7ddb[207]](_0x9494x4+ _0x7ddb[319]+ _0x9494x2[_0x7ddb[301]]);var _0x9494x9=_0x9494x2[_0x7ddb[320]];if(null!= _0x9494x9){for(var _0x9494xa=0;_0x9494xa< _0x9494x9[_0x7ddb[67]];_0x9494xa++){var _0x9494x12=mxUtils[_0x7ddb[321]](_0x9494x9[_0x9494xa][_0x7ddb[318]]);_0x9494x5[_0x7ddb[207]](_0x7ddb[185]+ _0x9494x9[_0x9494xa][_0x7ddb[301]]+ _0x7ddb[322]+ _0x9494x12+ _0x7ddb[323])}};_0x9494x9= _0x9494x2[_0x7ddb[285]];if(null!= _0x9494x9){for(_0x9494x5[_0x7ddb[207]](_0x7ddb[324]);null!= _0x9494x9;){_0x9494x5[_0x7ddb[207]](mxUtils[_0x7ddb[325]](_0x9494x9,_0x9494x3,_0x9494x4+ _0x9494x3)),_0x9494x9= _0x9494x9[_0x7ddb[287]]};_0x9494x5[_0x7ddb[207]](_0x9494x4+ _0x7ddb[326]+ _0x9494x2[_0x7ddb[301]]+ _0x7ddb[324])}else {_0x9494x5[_0x7ddb[207]](_0x7ddb[327])}}};return _0x9494x5[_0x7ddb[234]](_0x7ddb[110])},removeWhitespace:function(_0x9494x2,_0x9494x3){for(var _0x9494x4=_0x9494x3?_0x9494x2[_0x7ddb[328]]:_0x9494x2[_0x7ddb[287]];null!= _0x9494x4&& _0x9494x4[_0x7ddb[288]]== mxConstants[_0x7ddb[317]];){var _0x9494x5=_0x9494x3?_0x9494x4[_0x7ddb[328]]:_0x9494x4[_0x7ddb[287]],_0x9494x9=mxUtils[_0x7ddb[329]](_0x9494x4);0== mxUtils[_0x7ddb[330]](_0x9494x9)[_0x7ddb[67]]&& _0x9494x4[_0x7ddb[265]][_0x7ddb[266]](_0x9494x4);_0x9494x4= _0x9494x5}},htmlEntities:function(_0x9494x2,_0x9494x3){_0x9494x2= (_0x9494x2|| _0x7ddb[110])[_0x7ddb[230]](/&/g,_0x7ddb[331]);_0x9494x2= _0x9494x2[_0x7ddb[230]](/"/g,_0x7ddb[332]);_0x9494x2= _0x9494x2[_0x7ddb[230]](/\'/g,_0x7ddb[333]);_0x9494x2= _0x9494x2[_0x7ddb[230]](/</g,_0x7ddb[334]);_0x9494x2= _0x9494x2[_0x7ddb[230]](/>/g,_0x7ddb[335]);if(null== _0x9494x3|| _0x9494x3){_0x9494x2= _0x9494x2[_0x7ddb[230]](/\n/g,_0x7ddb[336])};return _0x9494x2},isVml:function(_0x9494x2){return null!= _0x9494x2&& _0x7ddb[97]== _0x9494x2[_0x7ddb[337]]},getXml:function(_0x9494x2,_0x9494x3){var _0x9494x4=_0x7ddb[110];null!= _0x9494x2&& (_0x9494x4= _0x9494x2[_0x7ddb[338]],_0x9494x4= null== _0x9494x4?_0x9494x2[_0x7ddb[339]]?_0x9494x2[_0x7ddb[339]]:( new XMLSerializer)[_0x7ddb[340]](_0x9494x2):_0x9494x4[_0x7ddb[230]](/\r\n\t[\t]*/g,_0x7ddb[110])[_0x7ddb[230]](/>\r\n/g,_0x7ddb[341])[_0x7ddb[230]](/\r\n/g,_0x7ddb[192]));return _0x9494x4= _0x9494x4[_0x7ddb[230]](/\n/g,_0x9494x3|| _0x7ddb[336])},getTextContent:function(_0x9494x2){var _0x9494x3=_0x7ddb[110];null!= _0x9494x2&& (null!= _0x9494x2[_0x7ddb[285]]&& (_0x9494x2= _0x9494x2[_0x7ddb[285]]),_0x9494x3= _0x9494x2[_0x7ddb[318]]|| _0x7ddb[110]);return _0x9494x3},getInnerHtml:function(){return mxClient[_0x7ddb[80]]?function(_0x9494x2){return null!= _0x9494x2?_0x9494x2[_0x7ddb[339]]:_0x7ddb[110]}:function(_0x9494x2){return null!= _0x9494x2?( new XMLSerializer)[_0x7ddb[340]](_0x9494x2):_0x7ddb[110]}}(),getOuterHtml:function(){return mxClient[_0x7ddb[80]]?function(_0x9494x2){if(null!= _0x9494x2){if(null!= _0x9494x2[_0x7ddb[342]]){return _0x9494x2[_0x7ddb[342]]};var _0x9494x3=[];_0x9494x3[_0x7ddb[207]](_0x7ddb[319]+ _0x9494x2[_0x7ddb[301]]);var _0x9494x4=_0x9494x2[_0x7ddb[320]];if(null!= _0x9494x4){for(var _0x9494x5=0;_0x9494x5< _0x9494x4[_0x7ddb[67]];_0x9494x5++){var _0x9494x9=_0x9494x4[_0x9494x5][_0x7ddb[318]];null!= _0x9494x9&& 0< _0x9494x9[_0x7ddb[67]]&& (_0x9494x3[_0x7ddb[207]](_0x7ddb[185]),_0x9494x3[_0x7ddb[207]](_0x9494x4[_0x9494x5][_0x7ddb[301]]),_0x9494x3[_0x7ddb[207]](_0x7ddb[322]),_0x9494x3[_0x7ddb[207]](_0x9494x9),_0x9494x3[_0x7ddb[207]](_0x7ddb[323]))}};0== _0x9494x2[_0x7ddb[339]][_0x7ddb[67]]?_0x9494x3[_0x7ddb[207]](_0x7ddb[343]):(_0x9494x3[_0x7ddb[207]](_0x7ddb[341]),_0x9494x3[_0x7ddb[207]](_0x9494x2[_0x7ddb[339]]),_0x9494x3[_0x7ddb[207]](_0x7ddb[326]+ _0x9494x2[_0x7ddb[301]]+ _0x7ddb[341]));return _0x9494x3[_0x7ddb[234]](_0x7ddb[110])};return _0x7ddb[110]}:function(_0x9494x2){return null!= _0x9494x2?( new XMLSerializer)[_0x7ddb[340]](_0x9494x2):_0x7ddb[110]}}(),write:function(_0x9494x2,_0x9494x3){var _0x9494x4=_0x9494x2[_0x7ddb[295]][_0x7ddb[344]](_0x9494x3);null!= _0x9494x2&& _0x9494x2[_0x7ddb[62]](_0x9494x4);return _0x9494x4},writeln:function(_0x9494x2,_0x9494x3){var _0x9494x4=_0x9494x2[_0x7ddb[295]][_0x7ddb[344]](_0x9494x3);null!= _0x9494x2&& (_0x9494x2[_0x7ddb[62]](_0x9494x4),_0x9494x2[_0x7ddb[62]](document[_0x7ddb[55]](_0x7ddb[345])));return _0x9494x4},br:function(_0x9494x2,_0x9494x3){_0x9494x3= _0x9494x3|| 1;for(var _0x9494x4=null,_0x9494x5=0;_0x9494x5< _0x9494x3;_0x9494x5++){null!= _0x9494x2&& (_0x9494x4= _0x9494x2[_0x7ddb[295]][_0x7ddb[55]](_0x7ddb[345]),_0x9494x2[_0x7ddb[62]](_0x9494x4))};return _0x9494x4},button:function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x4= null!= _0x9494x4?_0x9494x4:document;_0x9494x4= _0x9494x4[_0x7ddb[55]](_0x7ddb[172]);mxUtils[_0x7ddb[53]](_0x9494x4,_0x9494x2);mxEvent[_0x7ddb[169]](_0x9494x4,_0x7ddb[173],function(_0x9494x2){_0x9494x3(_0x9494x2)});return _0x9494x4},para:function(_0x9494x2,_0x9494x3){var _0x9494x4=document[_0x7ddb[55]](_0x7ddb[346]);mxUtils[_0x7ddb[53]](_0x9494x4,_0x9494x3);null!= _0x9494x2&& _0x9494x2[_0x7ddb[62]](_0x9494x4);return _0x9494x4},addTransparentBackgroundFilter:function(_0x9494x2){_0x9494x2[_0x7ddb[124]][_0x7ddb[347]]+= _0x7ddb[348]+ mxClient[_0x7ddb[88]]+ _0x7ddb[349]},linkAction:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){return mxUtils[_0x7ddb[54]](_0x9494x2,_0x9494x3,function(){_0x9494x4[_0x7ddb[350]](_0x9494x5)},_0x9494x9)},linkInvoke:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){return mxUtils[_0x7ddb[54]](_0x9494x2,_0x9494x3,function(){_0x9494x4[_0x9494x5](_0x9494x9)},_0x9494xa)},link:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){var _0x9494x9=document[_0x7ddb[55]](_0x7ddb[351]);_0x9494x9[_0x7ddb[124]][_0x7ddb[352]]= _0x7ddb[353];_0x9494x9[_0x7ddb[124]][_0x7ddb[354]]= _0x7ddb[355];_0x9494x9[_0x7ddb[124]][_0x7ddb[270]]= _0x7ddb[356];null!= _0x9494x5&& (_0x9494x9[_0x7ddb[124]][_0x7ddb[357]]= _0x9494x5+ _0x7ddb[168]);mxEvent[_0x7ddb[169]](_0x9494x9,_0x7ddb[173],_0x9494x4);mxUtils[_0x7ddb[53]](_0x9494x9,_0x9494x3);null!= _0x9494x2&& _0x9494x2[_0x7ddb[62]](_0x9494x9);return _0x9494x9},fit:function(_0x9494x2){var _0x9494x3=parseInt(_0x9494x2[_0x7ddb[358]]),_0x9494x4=parseInt(_0x9494x2[_0x7ddb[359]]),_0x9494x5=document[_0x7ddb[112]],_0x9494x9=document[_0x7ddb[158]],_0x9494xa=(_0x9494x5[_0x7ddb[360]]|| _0x9494x9[_0x7ddb[360]])+ (_0x9494x5[_0x7ddb[159]]|| _0x9494x9[_0x7ddb[159]]);_0x9494x3+ _0x9494x4> _0x9494xa&& (_0x9494x2[_0x7ddb[124]][_0x7ddb[361]]= Math[_0x7ddb[160]](_0x9494x5[_0x7ddb[360]]|| _0x9494x9[_0x7ddb[360]],_0x9494xa- _0x9494x4)+ _0x7ddb[168]);_0x9494x3= parseInt(_0x9494x2[_0x7ddb[362]]);_0x9494x4= parseInt(_0x9494x2[_0x7ddb[167]]);_0x9494xa= (_0x9494x5[_0x7ddb[190]]|| _0x9494x9[_0x7ddb[190]])+ Math[_0x7ddb[160]](_0x9494x5[_0x7ddb[157]]|| 0,_0x9494x9[_0x7ddb[157]]);_0x9494x3+ _0x9494x4> _0x9494xa&& (_0x9494x2[_0x7ddb[124]][_0x7ddb[125]]= Math[_0x7ddb[160]](_0x9494x5[_0x7ddb[190]]|| _0x9494x9[_0x7ddb[190]],_0x9494xa- _0x9494x4)+ _0x7ddb[168])},open:function(_0x9494x2){if(mxClient[_0x7ddb[133]]){try{netscape[_0x7ddb[366]][_0x7ddb[365]][_0x7ddb[364]](_0x7ddb[363])}catch(b){return mxUtils[_0x7ddb[150]](_0x7ddb[367]),_0x7ddb[110]};var _0x9494x4=Components[_0x7ddb[372]][_0x7ddb[371]][_0x7ddb[370]](Components[_0x7ddb[369]][_0x7ddb[368]]);_0x9494x4[_0x7ddb[373]](_0x9494x2);if(!_0x9494x4[_0x7ddb[374]]()){return mxUtils[_0x7ddb[150]](_0x7ddb[375]),_0x7ddb[110]};_0x9494x2= Components[_0x7ddb[372]][_0x7ddb[377]][_0x7ddb[370]](Components[_0x7ddb[369]][_0x7ddb[376]]);_0x9494x2[_0x7ddb[176]](_0x9494x4,1,4,null);_0x9494x4= Components[_0x7ddb[372]][_0x7ddb[379]][_0x7ddb[370]](Components[_0x7ddb[369]][_0x7ddb[378]]);_0x9494x4[_0x7ddb[176]](_0x9494x2);return _0x9494x4[_0x7ddb[381]](_0x9494x4[_0x7ddb[380]]())};_0x9494x4= ( new ActiveXObject(_0x7ddb[382])).OpenTextFile(_0x9494x2,1);_0x9494x2= _0x9494x4[_0x7ddb[383]]();_0x9494x4[_0x7ddb[268]]();return _0x9494x2},save:function(_0x9494x2,_0x9494x3){if(mxClient[_0x7ddb[133]]){try{netscape[_0x7ddb[366]][_0x7ddb[365]][_0x7ddb[364]](_0x7ddb[363])}catch(c){mxUtils[_0x7ddb[150]](_0x7ddb[384]);return};var _0x9494x5=Components[_0x7ddb[372]][_0x7ddb[371]][_0x7ddb[370]](Components[_0x7ddb[369]][_0x7ddb[368]]);_0x9494x5[_0x7ddb[373]](_0x9494x2);_0x9494x5[_0x7ddb[374]]()|| _0x9494x5[_0x7ddb[385]](0,420);var _0x9494x9=Components[_0x7ddb[372]][_0x7ddb[387]][_0x7ddb[370]](Components[_0x7ddb[369]][_0x7ddb[386]]);_0x9494x9[_0x7ddb[176]](_0x9494x5,34,4,null);_0x9494x9[_0x7ddb[53]](_0x9494x3,_0x9494x3[_0x7ddb[67]]);_0x9494x9[_0x7ddb[388]]();_0x9494x9[_0x7ddb[268]]()}else {_0x9494x5= ( new ActiveXObject(_0x7ddb[382])).CreateTextFile(_0x9494x2,!0),_0x9494x5.Write(_0x9494x3),_0x9494x5.Close()}},saveAs:function(_0x9494x2){var _0x9494x3=document[_0x7ddb[55]](_0x7ddb[389]);_0x9494x3[_0x7ddb[57]](_0x7ddb[390],_0x7ddb[110]);_0x9494x3[_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[188];document[_0x7ddb[112]][_0x7ddb[62]](_0x9494x3);try{if(mxClient[_0x7ddb[133]]){var _0x9494x4=_0x9494x3[_0x7ddb[391]];_0x9494x4[_0x7ddb[392]]();_0x9494x4[_0x7ddb[53]](_0x9494x2);_0x9494x4[_0x7ddb[268]]();try{netscape[_0x7ddb[366]][_0x7ddb[365]][_0x7ddb[364]](_0x7ddb[363]),_0x9494x3[_0x7ddb[393]](),saveDocument(_0x9494x4)}catch(d){mxUtils[_0x7ddb[150]](_0x7ddb[394])}}else {_0x9494x4= _0x9494x3[_0x7ddb[396]][_0x7ddb[395]],_0x9494x4[_0x7ddb[53]](_0x9494x2),_0x9494x4[_0x7ddb[398]](_0x7ddb[397],!1,document[_0x7ddb[45]])}}finally{document[_0x7ddb[112]][_0x7ddb[266]](_0x9494x3)}},copy:function(_0x9494x2){if(window[_0x7ddb[399]]){window[_0x7ddb[399]][_0x7ddb[401]](_0x7ddb[400],_0x9494x2)}else {netscape[_0x7ddb[366]][_0x7ddb[365]][_0x7ddb[364]](_0x7ddb[363]);var _0x9494x3=Components[_0x7ddb[372]][_0x7ddb[403]][_0x7ddb[370]](Components[_0x7ddb[369]][_0x7ddb[402]]);if(_0x9494x3){var _0x9494x4=Components[_0x7ddb[372]][_0x7ddb[405]][_0x7ddb[370]](Components[_0x7ddb[369]][_0x7ddb[404]]);if(_0x9494x4){_0x9494x4[_0x7ddb[407]](_0x7ddb[406]);var _0x9494x5=Components[_0x7ddb[372]][_0x7ddb[409]][_0x7ddb[370]](Components[_0x7ddb[369]][_0x7ddb[408]]);_0x9494x5[_0x7ddb[410]]= _0x9494x2;_0x9494x4[_0x7ddb[411]](_0x7ddb[406],_0x9494x5,2* _0x9494x2[_0x7ddb[67]]);_0x9494x3[_0x7ddb[401]](_0x9494x4,null,Components[_0x7ddb[369]][_0x7ddb[402]][_0x7ddb[412]])}}}},load:function(_0x9494x2){_0x9494x2= new mxXmlRequest(_0x9494x2,null,_0x7ddb[413],!1);_0x9494x2[_0x7ddb[414]]();return _0x9494x2},get:function(_0x9494x2,_0x9494x3,_0x9494x4){return ( new mxXmlRequest(_0x9494x2,null,_0x7ddb[413]))[_0x7ddb[414]](_0x9494x3,_0x9494x4)},post:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){return ( new mxXmlRequest(_0x9494x2,_0x9494x3))[_0x7ddb[414]](_0x9494x4,_0x9494x5)},submit:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){return ( new mxXmlRequest(_0x9494x2,_0x9494x3))[_0x7ddb[415]](_0x9494x4,_0x9494x5)},loadInto:function(_0x9494x2,_0x9494x3,_0x9494x4){mxClient[_0x7ddb[80]]?_0x9494x3[_0x7ddb[416]]= function(){4== _0x9494x3[_0x7ddb[417]]&& _0x9494x4()}:_0x9494x3[_0x7ddb[418]](_0x7ddb[219],_0x9494x4,!1);_0x9494x3[_0x7ddb[219]](_0x9494x2)},getValue:function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x2= null!= _0x9494x2?_0x9494x2[_0x9494x3]:null;null== _0x9494x2&& (_0x9494x2= _0x9494x4);return _0x9494x2},getNumber:function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x2= null!= _0x9494x2?_0x9494x2[_0x9494x3]:null;null== _0x9494x2&& (_0x9494x2= _0x9494x4|| 0);return Number(_0x9494x2)},getColor:function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x2= null!= _0x9494x2?_0x9494x2[_0x9494x3]:null;null== _0x9494x2?_0x9494x2= _0x9494x4:_0x9494x2== mxConstants[_0x7ddb[217]]&& (_0x9494x2= null);return _0x9494x2},clone:function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x4= null!= _0x9494x4?_0x9494x4:!1;var _0x9494x5=null;if(null!= _0x9494x2&& _0x7ddb[279]== typeof _0x9494x2[_0x7ddb[196]]){var _0x9494x5= new _0x9494x2[_0x7ddb[196]],_0x9494x9;for(_0x9494x9 in _0x9494x2){if(_0x9494x9!= mxObjectIdentity[_0x7ddb[195]]&& (null== _0x9494x3|| 0> mxUtils[_0x7ddb[2]](_0x9494x3,_0x9494x9))){_0x9494x5[_0x9494x9]= !_0x9494x4&& _0x7ddb[194]== typeof _0x9494x2[_0x9494x9]?mxUtils[_0x7ddb[238]](_0x9494x2[_0x9494x9]):_0x9494x2[_0x9494x9]}}};return _0x9494x5},equalPoints:function(_0x9494x2,_0x9494x3){if(null== _0x9494x2&& null!= _0x9494x3|| null!= _0x9494x2&& null== _0x9494x3|| null!= _0x9494x2&& null!= _0x9494x3&& _0x9494x2[_0x7ddb[67]]!= _0x9494x3[_0x7ddb[67]]){return !1};if(null!= _0x9494x2&& null!= _0x9494x3){for(var _0x9494x4=0;_0x9494x4< _0x9494x2[_0x7ddb[67]];_0x9494x4++){if(_0x9494x2[_0x9494x4]== _0x9494x3[_0x9494x4]|| null!= _0x9494x2[_0x9494x4]&& !_0x9494x2[_0x9494x4][_0x7ddb[237]](_0x9494x3[_0x9494x4])){return !1}}};return !0},equalEntries:function(_0x9494x2,_0x9494x3){if(null== _0x9494x2&& null!= _0x9494x3|| null!= _0x9494x2&& null== _0x9494x3|| null!= _0x9494x2&& null!= _0x9494x3&& _0x9494x2[_0x7ddb[67]]!= _0x9494x3[_0x7ddb[67]]){return !1};if(null!= _0x9494x2&& null!= _0x9494x3){for(var _0x9494x4 in _0x9494x2){if(_0x9494x2[_0x9494x4]!= _0x9494x3[_0x9494x4]){return !1}}};return !0},extend:function(_0x9494x2,_0x9494x3){var _0x9494x4=function(){};_0x9494x4[_0x7ddb[202]]= _0x9494x3[_0x7ddb[202]];_0x9494x2[_0x7ddb[202]]= new _0x9494x4;_0x9494x2[_0x7ddb[202]][_0x7ddb[196]]= _0x9494x2},toString:function(_0x9494x2){var _0x9494x3=_0x7ddb[110],_0x9494x4;for(_0x9494x4 in _0x9494x2){try{if(null== _0x9494x2[_0x9494x4]){_0x9494x3+= _0x9494x4+ _0x7ddb[419]}else {if(_0x7ddb[279]== typeof _0x9494x2[_0x9494x4]){_0x9494x3+= _0x9494x4+ _0x7ddb[420]}else {if(_0x7ddb[194]== typeof _0x9494x2[_0x9494x4]){var _0x9494x5=mxUtils[_0x7ddb[197]](_0x9494x2[_0x9494x4][_0x7ddb[196]]),_0x9494x3=_0x9494x3+ (_0x9494x4+ _0x7ddb[421]+ _0x9494x5+ _0x7ddb[422])}else {_0x9494x3+= _0x9494x4+ _0x7ddb[423]+ _0x9494x2[_0x9494x4]+ _0x7ddb[192]}}}}catch(e){_0x9494x3+= _0x9494x4+ _0x7ddb[226]+ e[_0x7ddb[281]]}};return _0x9494x3},toRadians:function(_0x9494x2){return Math[_0x7ddb[424]]* _0x9494x2/ 180},arcToCurves:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13,_0x9494x14){_0x9494x13-= _0x9494x2;_0x9494x14-= _0x9494x3;if(0=== _0x9494x4|| 0=== _0x9494x5){return _0x9494x18};_0x9494x4= Math[_0x7ddb[425]](_0x9494x4);_0x9494x5= Math[_0x7ddb[425]](_0x9494x5);var _0x9494x15=-_0x9494x13/ 2,_0x9494x16=-_0x9494x14/ 2,_0x9494x17=Math[_0x7ddb[426]](_0x9494x9* Math[_0x7ddb[424]]/ 180),_0x9494x18=Math[_0x7ddb[427]](_0x9494x9* Math[_0x7ddb[424]]/ 180);_0x9494x9= _0x9494x17* _0x9494x15+ _0x9494x18* _0x9494x16;var _0x9494x15=-1* _0x9494x18 * _0x9494x15 + _0x9494x17* _0x9494x16,_0x9494x16=_0x9494x9* _0x9494x9,_0x9494x19=_0x9494x15* _0x9494x15,_0x9494x1a=_0x9494x4* _0x9494x4,_0x9494x1b=_0x9494x5* _0x9494x5,_0x9494x1c=_0x9494x16/ _0x9494x1a+ _0x9494x19/ _0x9494x1b;1< _0x9494x1c?(_0x9494x4*= Math[_0x7ddb[428]](_0x9494x1c),_0x9494x5*= Math[_0x7ddb[428]](_0x9494x1c),_0x9494xa= 0):(_0x9494x1c= 1,_0x9494xa=== _0x9494x12&& (_0x9494x1c= -1),_0x9494xa= _0x9494x1c* Math[_0x7ddb[428]]((_0x9494x1a* _0x9494x1b- _0x9494x1a* _0x9494x19- _0x9494x1b* _0x9494x16)/ (_0x9494x1a* _0x9494x19+ _0x9494x1b* _0x9494x16)));_0x9494x16= _0x9494xa* _0x9494x4* _0x9494x15/ _0x9494x5;_0x9494x19= -1* _0x9494xa * _0x9494x5 * _0x9494x9 / _0x9494x4;_0x9494x13= _0x9494x17* _0x9494x16- _0x9494x18* _0x9494x19+ _0x9494x13/ 2;_0x9494x14= _0x9494x18* _0x9494x16+ _0x9494x17* _0x9494x19+ _0x9494x14/ 2;_0x9494x1a= Math[_0x7ddb[429]]((_0x9494x15- _0x9494x19)/ _0x9494x5,(_0x9494x9- _0x9494x16)/ _0x9494x4)- Math[_0x7ddb[429]](0,1);_0x9494xa= 0<= _0x9494x1a?_0x9494x1a:2* Math[_0x7ddb[424]]+ _0x9494x1a;_0x9494x1a= Math[_0x7ddb[429]]((-_0x9494x15- _0x9494x19) / _0x9494x5,(-_0x9494x9- _0x9494x16) / _0x9494x4) - Math[_0x7ddb[429]]((_0x9494x15- _0x9494x19)/ _0x9494x5,(_0x9494x9- _0x9494x16)/ _0x9494x4);_0x9494x9= 0<= _0x9494x1a?_0x9494x1a:2* Math[_0x7ddb[424]]+ _0x9494x1a;0== _0x9494x12&& 0< _0x9494x9?_0x9494x9-= 2* Math[_0x7ddb[424]]:0!= _0x9494x12&& 0> _0x9494x9&& (_0x9494x9+= 2* Math[_0x7ddb[424]]);_0x9494x12= 2* _0x9494x9/ Math[_0x7ddb[424]];_0x9494x12= Math[_0x7ddb[430]](0> _0x9494x12?-1* _0x9494x12:_0x9494x12);_0x9494x9/= _0x9494x12;_0x9494x15= 8/ 3* Math[_0x7ddb[427]](_0x9494x9/ 4)* Math[_0x7ddb[427]](_0x9494x9/ 4)/ Math[_0x7ddb[427]](_0x9494x9/ 2);_0x9494x16= _0x9494x17* _0x9494x4;_0x9494x17*= _0x9494x5;_0x9494x4*= _0x9494x18;_0x9494x5*= _0x9494x18;for(var _0x9494x1d=Math[_0x7ddb[426]](_0x9494xa),_0x9494x1e=Math[_0x7ddb[427]](_0x9494xa),_0x9494x19=-_0x9494x15* (_0x9494x16* _0x9494x1e+ _0x9494x5* _0x9494x1d),_0x9494x1a=-_0x9494x15* (_0x9494x4* _0x9494x1e- _0x9494x17* _0x9494x1d),_0x9494x1c=_0x9494x1b= 0,_0x9494x18=[],_0x9494x1f=0;_0x9494x1f< _0x9494x12;++_0x9494x1f){_0x9494xa+= _0x9494x9;var _0x9494x1d=Math[_0x7ddb[426]](_0x9494xa),_0x9494x1e=Math[_0x7ddb[427]](_0x9494xa),_0x9494x1b=_0x9494x16* _0x9494x1d- _0x9494x5* _0x9494x1e+ _0x9494x13,_0x9494x1c=_0x9494x4* _0x9494x1d+ _0x9494x17* _0x9494x1e+ _0x9494x14,_0x9494x20=-_0x9494x15* (_0x9494x16* _0x9494x1e+ _0x9494x5* _0x9494x1d),_0x9494x1d=-_0x9494x15* (_0x9494x4* _0x9494x1e- _0x9494x17* _0x9494x1d),_0x9494x1e=6* _0x9494x1f;_0x9494x18[_0x9494x1e]= Number(_0x9494x19+ _0x9494x2);_0x9494x18[_0x9494x1e+ 1]= Number(_0x9494x1a+ _0x9494x3);_0x9494x18[_0x9494x1e+ 2]= Number(_0x9494x1b- _0x9494x20+ _0x9494x2);_0x9494x18[_0x9494x1e+ 3]= Number(_0x9494x1c- _0x9494x1d+ _0x9494x3);_0x9494x18[_0x9494x1e+ 4]= Number(_0x9494x1b+ _0x9494x2);_0x9494x18[_0x9494x1e+ 5]= Number(_0x9494x1c+ _0x9494x3);_0x9494x19= _0x9494x1b+ _0x9494x20;_0x9494x1a= _0x9494x1c+ _0x9494x1d};return _0x9494x18},getBoundingBox:function(_0x9494x2,_0x9494x3){var _0x9494x4=null;if(null!= _0x9494x2&& null!= _0x9494x3&& 0!= _0x9494x3){var _0x9494x5=mxUtils[_0x7ddb[431]](_0x9494x3),_0x9494x4=Math[_0x7ddb[426]](_0x9494x5),_0x9494x9=Math[_0x7ddb[427]](_0x9494x5),_0x9494xa= new mxPoint(_0x9494x2[_0x7ddb[235]]+ _0x9494x2[_0x7ddb[117]]/ 2,_0x9494x2[_0x7ddb[236]]+ _0x9494x2[_0x7ddb[119]]/ 2),_0x9494x12= new mxPoint(_0x9494x2[_0x7ddb[235]],_0x9494x2[_0x7ddb[236]]),_0x9494x5= new mxPoint(_0x9494x2[_0x7ddb[235]]+ _0x9494x2[_0x7ddb[117]],_0x9494x2[_0x7ddb[236]]),_0x9494x13= new mxPoint(_0x9494x5[_0x7ddb[235]],_0x9494x2[_0x7ddb[236]]+ _0x9494x2[_0x7ddb[119]]),_0x9494x14= new mxPoint(_0x9494x2[_0x7ddb[235]],_0x9494x13[_0x7ddb[236]]),_0x9494x12=mxUtils[_0x7ddb[432]](_0x9494x12,_0x9494x4,_0x9494x9,_0x9494xa),_0x9494x5=mxUtils[_0x7ddb[432]](_0x9494x5,_0x9494x4,_0x9494x9,_0x9494xa),_0x9494x13=mxUtils[_0x7ddb[432]](_0x9494x13,_0x9494x4,_0x9494x9,_0x9494xa),_0x9494x14=mxUtils[_0x7ddb[432]](_0x9494x14,_0x9494x4,_0x9494x9,_0x9494xa),_0x9494x4= new mxRectangle(_0x9494x12[_0x7ddb[235]],_0x9494x12[_0x7ddb[236]],0,0);_0x9494x4[_0x7ddb[99]]( new mxRectangle(_0x9494x5[_0x7ddb[235]],_0x9494x5[_0x7ddb[236]],0,0));_0x9494x4[_0x7ddb[99]]( new mxRectangle(_0x9494x13[_0x7ddb[235]],_0x9494x13[_0x7ddb[236]],0,0));_0x9494x4[_0x7ddb[99]]( new mxRectangle(_0x9494x14[_0x7ddb[235]],_0x9494x14[_0x7ddb[236]],0,0))};return _0x9494x4},getRotatedPoint:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){_0x9494x5= null!= _0x9494x5?_0x9494x5: new mxPoint;var _0x9494x9=_0x9494x2[_0x7ddb[235]]- _0x9494x5[_0x7ddb[235]];_0x9494x2= _0x9494x2[_0x7ddb[236]]- _0x9494x5[_0x7ddb[236]];return new mxPoint(_0x9494x9* _0x9494x3- _0x9494x2* _0x9494x4+ _0x9494x5[_0x7ddb[235]],_0x9494x2* _0x9494x3+ _0x9494x9* _0x9494x4+ _0x9494x5[_0x7ddb[236]])},getPortConstraints:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){_0x9494x2= mxUtils[_0x7ddb[433]](_0x9494x2[_0x7ddb[124]],mxConstants.STYLE_PORT_CONSTRAINT,null);if(null== _0x9494x2){return _0x9494x5};_0x9494x5= _0x9494x2.toString();_0x9494x2= mxConstants[_0x7ddb[434]];0<= _0x9494x5[_0x7ddb[2]](mxConstants.DIRECTION_NORTH)&& (_0x9494x2|= mxConstants[_0x7ddb[435]]);0<= _0x9494x5[_0x7ddb[2]](mxConstants.DIRECTION_WEST)&& (_0x9494x2|= mxConstants[_0x7ddb[436]]);0<= _0x9494x5[_0x7ddb[2]](mxConstants.DIRECTION_SOUTH)&& (_0x9494x2|= mxConstants[_0x7ddb[437]]);0<= _0x9494x5[_0x7ddb[2]](mxConstants.DIRECTION_EAST)&& (_0x9494x2|= mxConstants[_0x7ddb[438]]);return _0x9494x2},reversePortConstraints:function(_0x9494x2){var _0x9494x3=0,_0x9494x3=(_0x9494x2& mxConstants[_0x7ddb[436]])<< 3,_0x9494x3=_0x9494x3| (_0x9494x2& mxConstants[_0x7ddb[435]])<< 1,_0x9494x3=_0x9494x3| (_0x9494x2& mxConstants[_0x7ddb[437]])>> 1;return _0x9494x3|= (_0x9494x2& mxConstants[_0x7ddb[438]])>> 3},findNearestSegment:function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=-1;if(0< _0x9494x2[_0x7ddb[439]][_0x7ddb[67]]){for(var _0x9494x9=_0x9494x2[_0x7ddb[439]][0],_0x9494xa=null,_0x9494x12=1;_0x9494x12< _0x9494x2[_0x7ddb[439]][_0x7ddb[67]];_0x9494x12++){var _0x9494x13=_0x9494x2[_0x7ddb[439]][_0x9494x12],_0x9494x9=mxUtils[_0x7ddb[440]](_0x9494x9[_0x7ddb[235]],_0x9494x9[_0x7ddb[236]],_0x9494x13[_0x7ddb[235]],_0x9494x13[_0x7ddb[236]],_0x9494x3,_0x9494x4);if(null== _0x9494xa|| _0x9494x9< _0x9494xa){_0x9494xa= _0x9494x9,_0x9494x5= _0x9494x12- 1};_0x9494x9= _0x9494x13}};return _0x9494x5},rectangleIntersectsSegment:function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=_0x9494x2[_0x7ddb[236]],_0x9494x9=_0x9494x2[_0x7ddb[235]],_0x9494xa=_0x9494x5+ _0x9494x2[_0x7ddb[119]],_0x9494x12=_0x9494x9+ _0x9494x2[_0x7ddb[117]];_0x9494x2= _0x9494x3[_0x7ddb[235]];var _0x9494x13=_0x9494x4[_0x7ddb[235]];_0x9494x3[_0x7ddb[235]]> _0x9494x4[_0x7ddb[235]]&& (_0x9494x2= _0x9494x4[_0x7ddb[235]],_0x9494x13= _0x9494x3[_0x7ddb[235]]);_0x9494x13> _0x9494x12&& (_0x9494x13= _0x9494x12);_0x9494x2< _0x9494x9&& (_0x9494x2= _0x9494x9);if(_0x9494x2> _0x9494x13){return !1};var _0x9494x9=_0x9494x3[_0x7ddb[236]],_0x9494x12=_0x9494x4[_0x7ddb[236]],_0x9494x14=_0x9494x4[_0x7ddb[235]]- _0x9494x3[_0x7ddb[235]];1E-7< Math[_0x7ddb[425]](_0x9494x14)&& (_0x9494x4= (_0x9494x4[_0x7ddb[236]]- _0x9494x3[_0x7ddb[236]])/ _0x9494x14,_0x9494x3= _0x9494x3[_0x7ddb[236]]- _0x9494x4* _0x9494x3[_0x7ddb[235]],_0x9494x9= _0x9494x4* _0x9494x2+ _0x9494x3,_0x9494x12= _0x9494x4* _0x9494x13+ _0x9494x3);_0x9494x9> _0x9494x12&& (_0x9494x3= _0x9494x12,_0x9494x12= _0x9494x9,_0x9494x9= _0x9494x3);_0x9494x12> _0x9494xa&& (_0x9494x12= _0x9494xa);_0x9494x9< _0x9494x5&& (_0x9494x9= _0x9494x5);return _0x9494x9> _0x9494x12?!1:!0},contains:function(_0x9494x2,_0x9494x3,_0x9494x4){return _0x9494x2[_0x7ddb[235]]<= _0x9494x3&& _0x9494x2[_0x7ddb[235]]+ _0x9494x2[_0x7ddb[117]]>= _0x9494x3&& _0x9494x2[_0x7ddb[236]]<= _0x9494x4&& _0x9494x2[_0x7ddb[236]]+ _0x9494x2[_0x7ddb[119]]>= _0x9494x4},intersects:function(_0x9494x2,_0x9494x3){var _0x9494x4=_0x9494x2[_0x7ddb[117]],_0x9494x5=_0x9494x2[_0x7ddb[119]],_0x9494x9=_0x9494x3[_0x7ddb[117]],_0x9494xa=_0x9494x3[_0x7ddb[119]];if(0>= _0x9494x9|| 0>= _0x9494xa|| 0>= _0x9494x4|| 0>= _0x9494x5){return !1};var _0x9494x12=_0x9494x2[_0x7ddb[235]],_0x9494x13=_0x9494x2[_0x7ddb[236]],_0x9494x14=_0x9494x3[_0x7ddb[235]],_0x9494x15=_0x9494x3[_0x7ddb[236]],_0x9494x9=_0x9494x9+ _0x9494x14,_0x9494xa=_0x9494xa+ _0x9494x15,_0x9494x4=_0x9494x4+ _0x9494x12,_0x9494x5=_0x9494x5+ _0x9494x13;return (_0x9494x9< _0x9494x14|| _0x9494x9> _0x9494x12)&& (_0x9494xa< _0x9494x15|| _0x9494xa> _0x9494x13)&& (_0x9494x4< _0x9494x12|| _0x9494x4> _0x9494x14)&& (_0x9494x5< _0x9494x13|| _0x9494x5> _0x9494x15)},intersectsHotspot:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){_0x9494x5= null!= _0x9494x5?_0x9494x5:1;_0x9494x9= null!= _0x9494x9?_0x9494x9:0;_0x9494xa= null!= _0x9494xa?_0x9494xa:0;if(0< _0x9494x5){var _0x9494x12=_0x9494x2[_0x7ddb[241]](),_0x9494x13=_0x9494x2[_0x7ddb[242]](),_0x9494x14=_0x9494x2[_0x7ddb[117]],_0x9494x15=_0x9494x2[_0x7ddb[119]],_0x9494x16=mxUtils[_0x7ddb[433]](_0x9494x2[_0x7ddb[124]],mxConstants.STYLE_STARTSIZE)* _0x9494x2[_0x7ddb[441]][_0x7ddb[255]];0< _0x9494x16&& (mxUtils[_0x7ddb[433]](_0x9494x2[_0x7ddb[124]],mxConstants.STYLE_HORIZONTAL,!0)?(_0x9494x13= _0x9494x2[_0x7ddb[236]]+ _0x9494x16/ 2,_0x9494x15= _0x9494x16):(_0x9494x12= _0x9494x2[_0x7ddb[235]]+ _0x9494x16/ 2,_0x9494x14= _0x9494x16));_0x9494x14= Math[_0x7ddb[160]](_0x9494x9,_0x9494x14* _0x9494x5);_0x9494x15= Math[_0x7ddb[160]](_0x9494x9,_0x9494x15* _0x9494x5);0< _0x9494xa&& (_0x9494x14= Math[_0x7ddb[243]](_0x9494x14,_0x9494xa),_0x9494x15= Math[_0x7ddb[243]](_0x9494x15,_0x9494xa));_0x9494x5= new mxRectangle(_0x9494x12- _0x9494x14/ 2,_0x9494x13- _0x9494x15/ 2,_0x9494x14,_0x9494x15);_0x9494x12= mxUtils[_0x7ddb[431]](mxUtils[_0x7ddb[433]](_0x9494x2[_0x7ddb[124]],mxConstants.STYLE_ROTATION)|| 0);0!= _0x9494x12&& (_0x9494x9= Math[_0x7ddb[426]](-_0x9494x12),_0x9494xa= Math[_0x7ddb[427]](-_0x9494x12),_0x9494x12= new mxPoint(_0x9494x2[_0x7ddb[241]](),_0x9494x2[_0x7ddb[242]]()),_0x9494x2= mxUtils[_0x7ddb[432]]( new mxPoint(_0x9494x3,_0x9494x4),_0x9494x9,_0x9494xa,_0x9494x12),_0x9494x3= _0x9494x2[_0x7ddb[235]],_0x9494x4= _0x9494x2[_0x7ddb[236]]);return mxUtils[_0x7ddb[442]](_0x9494x5,_0x9494x3,_0x9494x4)};return !0},getOffset:function(_0x9494x2,_0x9494x3){var _0x9494x4=0,_0x9494x5=0;if(null!= _0x9494x3&& _0x9494x3){var _0x9494x9=document[_0x7ddb[112]],_0x9494xa=document[_0x7ddb[158]],_0x9494x4=_0x9494x4+ (_0x9494x9[_0x7ddb[360]]|| _0x9494xa[_0x7ddb[360]]),_0x9494x5=_0x9494x5+ (_0x9494x9[_0x7ddb[190]]|| _0x9494xa[_0x7ddb[190]])};for(;_0x9494x2[_0x7ddb[443]];){_0x9494x4+= _0x9494x2[_0x7ddb[358]],_0x9494x5+= _0x9494x2[_0x7ddb[362]],_0x9494x2= _0x9494x2[_0x7ddb[443]]};return new mxPoint(_0x9494x4,_0x9494x5)},getScrollOrigin:function(_0x9494x2){for(var _0x9494x3=document[_0x7ddb[112]],_0x9494x4=document[_0x7ddb[158]],_0x9494x5= new mxPoint(_0x9494x3[_0x7ddb[360]]|| _0x9494x4[_0x7ddb[360]],_0x9494x3[_0x7ddb[190]]|| _0x9494x4[_0x7ddb[190]]);null!= _0x9494x2&& _0x9494x2!= _0x9494x3&& _0x9494x2!= _0x9494x4;){!isNaN(_0x9494x2[_0x7ddb[360]])&& !isNaN(_0x9494x2[_0x7ddb[190]]) && (_0x9494x5[_0x7ddb[235]]+= _0x9494x2[_0x7ddb[360]],_0x9494x5[_0x7ddb[236]]+= _0x9494x2[_0x7ddb[190]]),_0x9494x2= _0x9494x2[_0x7ddb[265]]};return _0x9494x5},convertPoint:function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=mxUtils[_0x7ddb[444]](_0x9494x2);_0x9494x2= mxUtils[_0x7ddb[445]](_0x9494x2);_0x9494x2[_0x7ddb[235]]-= _0x9494x5[_0x7ddb[235]];_0x9494x2[_0x7ddb[236]]-= _0x9494x5[_0x7ddb[236]];return new mxPoint(_0x9494x3- _0x9494x2[_0x7ddb[235]],_0x9494x4- _0x9494x2[_0x7ddb[236]])},ltrim:function(_0x9494x2,_0x9494x3){return _0x9494x2[_0x7ddb[230]](RegExp(_0x7ddb[446]+ (_0x9494x3|| _0x7ddb[447])+ _0x7ddb[448],_0x7ddb[449]),_0x7ddb[110])},rtrim:function(_0x9494x2,_0x9494x3){return _0x9494x2[_0x7ddb[230]](RegExp(_0x7ddb[450]+ (_0x9494x3|| _0x7ddb[447])+ _0x7ddb[451],_0x7ddb[449]),_0x7ddb[110])},trim:function(_0x9494x2,_0x9494x3){return mxUtils[_0x7ddb[453]](mxUtils[_0x7ddb[452]](_0x9494x2,_0x9494x3),_0x9494x3)},isNumeric:function(_0x9494x2){return null!= _0x9494x2&& (null== _0x9494x2[_0x7ddb[67]]|| 0< _0x9494x2[_0x7ddb[67]]&& 0> _0x9494x2[_0x7ddb[2]](_0x7ddb[454])&& 0> _0x9494x2[_0x7ddb[2]](_0x7ddb[455]))&& !isNaN(_0x9494x2)},mod:function(_0x9494x2,_0x9494x3){return (_0x9494x2% _0x9494x3+ _0x9494x3)% _0x9494x3},intersection:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13){var _0x9494x14=(_0x9494x13- _0x9494xa)* (_0x9494x4- _0x9494x2)- (_0x9494x12- _0x9494x9)* (_0x9494x5- _0x9494x3);_0x9494x12= ((_0x9494x12- _0x9494x9)* (_0x9494x3- _0x9494xa)- (_0x9494x13- _0x9494xa)* (_0x9494x2- _0x9494x9))/ _0x9494x14;_0x9494x9= ((_0x9494x4- _0x9494x2)* (_0x9494x3- _0x9494xa)- (_0x9494x5- _0x9494x3)* (_0x9494x2- _0x9494x9))/ _0x9494x14;return 0<= _0x9494x12&& 1>= _0x9494x12&& 0<= _0x9494x9&& 1>= _0x9494x9? new mxPoint(_0x9494x2+ _0x9494x12* (_0x9494x4- _0x9494x2),_0x9494x3+ _0x9494x12* (_0x9494x5- _0x9494x3)):null},ptSegDistSq:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){_0x9494x4-= _0x9494x2;_0x9494x5-= _0x9494x3;_0x9494x9-= _0x9494x2;_0x9494xa-= _0x9494x3;0>= _0x9494x9* _0x9494x4+ _0x9494xa* _0x9494x5?_0x9494x4= 0:(_0x9494x9= _0x9494x4- _0x9494x9,_0x9494xa= _0x9494x5- _0x9494xa,_0x9494x2= _0x9494x9* _0x9494x4+ _0x9494xa* _0x9494x5,_0x9494x4= 0>= _0x9494x2?0:_0x9494x2* _0x9494x2/ (_0x9494x4* _0x9494x4+ _0x9494x5* _0x9494x5));_0x9494x9= _0x9494x9* _0x9494x9+ _0x9494xa* _0x9494xa- _0x9494x4;0> _0x9494x9&& (_0x9494x9= 0);return _0x9494x9},relativeCcw:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){_0x9494x4-= _0x9494x2;_0x9494x5-= _0x9494x3;_0x9494x9-= _0x9494x2;_0x9494xa-= _0x9494x3;_0x9494x2= _0x9494x9* _0x9494x5- _0x9494xa* _0x9494x4;0== _0x9494x2&& (_0x9494x2= _0x9494x9* _0x9494x4+ _0x9494xa* _0x9494x5,0< _0x9494x2&& (_0x9494x2= (_0x9494x9- _0x9494x4)* _0x9494x4+ (_0x9494xa- _0x9494x5)* _0x9494x5,0> _0x9494x2&& (_0x9494x2= 0)));return 0> _0x9494x2?-1:0< _0x9494x2?1:0},animateChanges:function(_0x9494x2,_0x9494x3){mxEffects[_0x7ddb[456]][_0x7ddb[183]](this,arguments)},cascadeOpacity:function(_0x9494x2,_0x9494x3,_0x9494x4){mxEffects[_0x7ddb[260]][_0x7ddb[183]](this,arguments)},fadeOut:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){mxEffects[_0x7ddb[457]][_0x7ddb[183]](this,arguments)},setOpacity:function(_0x9494x2,_0x9494x3){mxUtils[_0x7ddb[458]](_0x9494x2)?_0x9494x2[_0x7ddb[124]][_0x7ddb[347]]= 100<= _0x9494x3?null:_0x7ddb[459]+ _0x9494x3/ 5+ _0x7ddb[460]:mxClient[_0x7ddb[80]]&& (_0x7ddb[82]=== typeof document[_0x7ddb[5]]|| 9> document[_0x7ddb[5]])?_0x9494x2[_0x7ddb[124]][_0x7ddb[347]]= 100<= _0x9494x3?null:_0x7ddb[459]+ _0x9494x3+ _0x7ddb[460]:_0x9494x2[_0x7ddb[124]][_0x7ddb[461]]= _0x9494x3/ 100},createImage:function(_0x9494x2){var _0x9494x3=null;mxClient[_0x7ddb[49]]&& _0x7ddb[462]!= document[_0x7ddb[135]]?(_0x9494x3= document[_0x7ddb[55]](mxClient[_0x7ddb[463]]+ _0x7ddb[464]),_0x9494x3[_0x7ddb[57]](_0x7ddb[390],_0x9494x2),_0x9494x3[_0x7ddb[124]][_0x7ddb[465]]= _0x7ddb[130]):(_0x9494x3= document[_0x7ddb[55]](_0x7ddb[466]),_0x9494x3[_0x7ddb[57]](_0x7ddb[390],_0x9494x2),_0x9494x3[_0x7ddb[57]](_0x7ddb[467],_0x7ddb[468]));return _0x9494x3},sortCells:function(_0x9494x2,_0x9494x3){_0x9494x3= null!= _0x9494x3?_0x9494x3:!0;var _0x9494x4= new mxDictionary;_0x9494x2[_0x7ddb[470]](function(_0x9494x2,_0x9494x9){var _0x9494xa=_0x9494x4[_0x7ddb[203]](_0x9494x2);null== _0x9494xa&& (_0x9494xa= mxCellPath[_0x7ddb[385]](_0x9494x2)[_0x7ddb[224]](mxCellPath.PATH_SEPARATOR),_0x9494x4[_0x7ddb[204]](_0x9494x2,_0x9494xa));var _0x9494x12=_0x9494x4[_0x7ddb[203]](_0x9494x9);null== _0x9494x12&& (_0x9494x12= mxCellPath[_0x7ddb[385]](_0x9494x9)[_0x7ddb[224]](mxCellPath.PATH_SEPARATOR),_0x9494x4[_0x7ddb[204]](_0x9494x9,_0x9494x12));_0x9494xa= mxCellPath[_0x7ddb[469]](_0x9494xa,_0x9494x12);return 0== _0x9494xa?0:0< _0x9494xa== _0x9494x3?1:-1});return _0x9494x2},getStylename:function(_0x9494x2){return null!= _0x9494x2&& (_0x9494x2= _0x9494x2[_0x7ddb[224]](_0x7ddb[471])[0],0> _0x9494x2[_0x7ddb[2]](_0x7ddb[226]))?_0x9494x2:_0x7ddb[110]},getStylenames:function(_0x9494x2){var _0x9494x3=[];if(null!= _0x9494x2){_0x9494x2= _0x9494x2[_0x7ddb[224]](_0x7ddb[471]);for(var _0x9494x4=0;_0x9494x4< _0x9494x2[_0x7ddb[67]];_0x9494x4++){0> _0x9494x2[_0x9494x4][_0x7ddb[2]](_0x7ddb[226])&& _0x9494x3[_0x7ddb[207]](_0x9494x2[_0x9494x4])}};return _0x9494x3},indexOfStylename:function(_0x9494x2,_0x9494x3){if(null!= _0x9494x2&& null!= _0x9494x3){for(var _0x9494x4=_0x9494x2[_0x7ddb[224]](_0x7ddb[471]),_0x9494x5=0,_0x9494x9=0;_0x9494x9< _0x9494x4[_0x7ddb[67]];_0x9494x9++){if(_0x9494x4[_0x9494x9]== _0x9494x3){return _0x9494x5};_0x9494x5+= _0x9494x4[_0x9494x9][_0x7ddb[67]]+ 1}};return -1},addStylename:function(_0x9494x2,_0x9494x3){0> mxUtils[_0x7ddb[472]](_0x9494x2,_0x9494x3)&& (null== _0x9494x2?_0x9494x2= _0x7ddb[110]:0< _0x9494x2[_0x7ddb[67]]&& _0x7ddb[471]!= _0x9494x2[_0x7ddb[225]](_0x9494x2[_0x7ddb[67]]- 1)&& (_0x9494x2+= _0x7ddb[471]),_0x9494x2+= _0x9494x3);return _0x9494x2},removeStylename:function(_0x9494x2,_0x9494x3){var _0x9494x4=[];if(null!= _0x9494x2){for(var _0x9494x5=_0x9494x2[_0x7ddb[224]](_0x7ddb[471]),_0x9494x9=0;_0x9494x9< _0x9494x5[_0x7ddb[67]];_0x9494x9++){_0x9494x5[_0x9494x9]!= _0x9494x3&& _0x9494x4[_0x7ddb[207]](_0x9494x5[_0x9494x9])}};return _0x9494x4[_0x7ddb[234]](_0x7ddb[471])},removeAllStylenames:function(_0x9494x2){var _0x9494x3=[];if(null!= _0x9494x2){_0x9494x2= _0x9494x2[_0x7ddb[224]](_0x7ddb[471]);for(var _0x9494x4=0;_0x9494x4< _0x9494x2[_0x7ddb[67]];_0x9494x4++){0<= _0x9494x2[_0x9494x4][_0x7ddb[2]](_0x7ddb[226])&& _0x9494x3[_0x7ddb[207]](_0x9494x2[_0x9494x4])}};return _0x9494x3[_0x7ddb[234]](_0x7ddb[471])},setCellStyles:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){if(null!= _0x9494x3&& 0< _0x9494x3[_0x7ddb[67]]){_0x9494x2[_0x7ddb[473]]();try{for(var _0x9494x9=0;_0x9494x9< _0x9494x3[_0x7ddb[67]];_0x9494x9++){if(null!= _0x9494x3[_0x9494x9]){var _0x9494xa=mxUtils[_0x7ddb[475]](_0x9494x2[_0x7ddb[474]](_0x9494x3[_0x9494x9]),_0x9494x4,_0x9494x5);_0x9494x2[_0x7ddb[475]](_0x9494x3[_0x9494x9],_0x9494xa)}}}finally{_0x9494x2[_0x7ddb[476]]()}}},setStyle:function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=null!= _0x9494x4&& (_0x7ddb[82]== typeof _0x9494x4[_0x7ddb[67]]|| 0< _0x9494x4[_0x7ddb[67]]);if(null== _0x9494x2|| 0== _0x9494x2[_0x7ddb[67]]){_0x9494x5&& (_0x9494x2= _0x9494x3+ _0x7ddb[226]+ _0x9494x4)}else {var _0x9494x9=_0x9494x2[_0x7ddb[2]](_0x9494x3+ _0x7ddb[226]);0> _0x9494x9?_0x9494x5&& (_0x9494x5= _0x7ddb[471]== _0x9494x2[_0x7ddb[225]](_0x9494x2[_0x7ddb[67]]- 1)?_0x7ddb[110]:_0x7ddb[471],_0x9494x2= _0x9494x2+ _0x9494x5+ _0x9494x3+ _0x7ddb[226]+ _0x9494x4):(_0x9494x3= _0x9494x5?_0x9494x3+ _0x7ddb[226]+ _0x9494x4:_0x7ddb[110],_0x9494x4= _0x9494x2[_0x7ddb[2]](_0x7ddb[471],_0x9494x9),_0x9494x5|| _0x9494x4++,_0x9494x2= _0x9494x2[_0x7ddb[85]](0,_0x9494x9)+ _0x9494x3+ (_0x9494x4> _0x9494x9?_0x9494x2[_0x7ddb[85]](_0x9494x4):_0x7ddb[110]))};return _0x9494x2},setCellStyleFlags:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){if(null!= _0x9494x3&& 0< _0x9494x3[_0x7ddb[67]]){_0x9494x2[_0x7ddb[473]]();try{for(var _0x9494xa=0;_0x9494xa< _0x9494x3[_0x7ddb[67]];_0x9494xa++){if(null!= _0x9494x3[_0x9494xa]){var _0x9494x12=mxUtils[_0x7ddb[477]](_0x9494x2[_0x7ddb[474]](_0x9494x3[_0x9494xa]),_0x9494x4,_0x9494x5,_0x9494x9);_0x9494x2[_0x7ddb[475]](_0x9494x3[_0x9494xa],_0x9494x12)}}}finally{_0x9494x2[_0x7ddb[476]]()}}},setStyleFlag:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){if(null== _0x9494x2|| 0== _0x9494x2[_0x7ddb[67]]){_0x9494x2= _0x9494x5|| null== _0x9494x5?_0x9494x3+ _0x7ddb[226]+ _0x9494x4:_0x9494x3+ _0x7ddb[478]}else {var _0x9494x9=_0x9494x2[_0x7ddb[2]](_0x9494x3+ _0x7ddb[226]);if(0> _0x9494x9){_0x9494x9= _0x7ddb[471]== _0x9494x2[_0x7ddb[225]](_0x9494x2[_0x7ddb[67]]- 1)?_0x7ddb[110]:_0x7ddb[471],_0x9494x2= _0x9494x5|| null== _0x9494x5?_0x9494x2+ _0x9494x9+ _0x9494x3+ _0x7ddb[226]+ _0x9494x4:_0x9494x2+ _0x9494x9+ _0x9494x3+ _0x7ddb[478]}else {var _0x9494xa=_0x9494x2[_0x7ddb[2]](_0x7ddb[471],_0x9494x9),_0x9494x12=_0x7ddb[110],_0x9494x12=0> _0x9494xa?_0x9494x2[_0x7ddb[85]](_0x9494x9+ _0x9494x3[_0x7ddb[67]]+ 1):_0x9494x2[_0x7ddb[85]](_0x9494x9+ _0x9494x3[_0x7ddb[67]]+ 1,_0x9494xa),_0x9494x12=null== _0x9494x5?parseInt(_0x9494x12)^ _0x9494x4:_0x9494x5?parseInt(_0x9494x12)| _0x9494x4:parseInt(_0x9494x12)& ~_0x9494x4;_0x9494x2= _0x9494x2[_0x7ddb[85]](0,_0x9494x9)+ _0x9494x3+ _0x7ddb[226]+ _0x9494x12+ (0<= _0x9494xa?_0x9494x2[_0x7ddb[85]](_0x9494xa):_0x7ddb[110])}};return _0x9494x2},getAlignmentAsPoint:function(_0x9494x2,_0x9494x3){var _0x9494x4=0,_0x9494x5=0;_0x9494x2== mxConstants[_0x7ddb[479]]?_0x9494x4= -0.5:_0x9494x2== mxConstants[_0x7ddb[480]]&& (_0x9494x4= -1);_0x9494x3== mxConstants[_0x7ddb[481]]?_0x9494x5= -0.5:_0x9494x3== mxConstants[_0x7ddb[482]]&& (_0x9494x5= -1);return new mxPoint(_0x9494x4,_0x9494x5)},getSizeForString:function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x3= null!= _0x9494x3?_0x9494x3:mxConstants[_0x7ddb[483]];_0x9494x4= null!= _0x9494x4?_0x9494x4:mxConstants[_0x7ddb[484]];var _0x9494x5=document[_0x7ddb[55]](_0x7ddb[485]);_0x9494x5[_0x7ddb[124]][_0x7ddb[486]]= _0x9494x4;_0x9494x5[_0x7ddb[124]][_0x7ddb[487]]= Math[_0x7ddb[488]](_0x9494x3)+ _0x7ddb[168];_0x9494x5[_0x7ddb[124]][_0x7ddb[489]]= Math[_0x7ddb[488]](_0x9494x3* mxConstants[_0x7ddb[490]])+ _0x7ddb[168];_0x9494x5[_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[492];_0x9494x5[_0x7ddb[124]][_0x7ddb[493]]= _0x7ddb[494];_0x9494x5[_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[188];_0x9494x5[_0x7ddb[124]][_0x7ddb[495]]= mxClient[_0x7ddb[496]]?_0x7ddb[497]:_0x7ddb[498];_0x9494x5[_0x7ddb[124]][_0x7ddb[499]]= _0x7ddb[500];_0x9494x5[_0x7ddb[339]]= _0x9494x2;document[_0x7ddb[112]][_0x7ddb[62]](_0x9494x5);_0x9494x2= new mxRectangle(0,0,_0x9494x5[_0x7ddb[359]],_0x9494x5[_0x7ddb[167]]);document[_0x7ddb[112]][_0x7ddb[266]](_0x9494x5);return _0x9494x2},getViewXml:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x9494x5= null!= _0x9494x5?_0x9494x5:0;_0x9494x9= null!= _0x9494x9?_0x9494x9:0;_0x9494x3= null!= _0x9494x3?_0x9494x3:1;null== _0x9494x4&& (_0x9494x4= [_0x9494x2[_0x7ddb[502]]()[_0x7ddb[501]]()]);var _0x9494xa=_0x9494x2[_0x7ddb[249]](),_0x9494x12=null,_0x9494x13=_0x9494xa[_0x7ddb[503]]();_0x9494xa[_0x7ddb[504]](!1);var _0x9494x14=_0x9494xa[_0x7ddb[505]],_0x9494x15=_0x9494xa[_0x7ddb[506]];_0x9494x2[_0x7ddb[507]]== mxConstants[_0x7ddb[508]]?(_0x9494xa[_0x7ddb[505]]= document[_0x7ddb[509]](mxConstants.NS_SVG,_0x7ddb[449]),_0x9494xa[_0x7ddb[510]][_0x7ddb[62]](_0x9494xa[_0x7ddb[505]]),_0x9494xa[_0x7ddb[506]]= document[_0x7ddb[509]](mxConstants.NS_SVG,_0x7ddb[449])):(_0x9494xa[_0x7ddb[505]]= _0x9494xa[_0x7ddb[505]][_0x7ddb[511]](!1),_0x9494xa[_0x7ddb[510]][_0x7ddb[62]](_0x9494xa[_0x7ddb[505]]),_0x9494xa[_0x7ddb[506]]= _0x9494xa[_0x7ddb[506]][_0x7ddb[511]](!1));_0x9494xa[_0x7ddb[510]][_0x7ddb[62]](_0x9494xa[_0x7ddb[506]]);var _0x9494x16=_0x9494xa[_0x7ddb[512]]();_0x9494xa[_0x7ddb[513]]= new mxPoint(_0x9494x5,_0x9494x9);_0x9494x3= new mxTemporaryCellStates(_0x9494x2[_0x7ddb[249]](),_0x9494x3,_0x9494x4);try{_0x9494x12= ( new mxCodec)[_0x7ddb[514]](_0x9494x2[_0x7ddb[249]]())}finally{_0x9494x3[_0x7ddb[515]](),_0x9494xa[_0x7ddb[513]]= _0x9494x16,_0x9494xa[_0x7ddb[510]][_0x7ddb[266]](_0x9494xa[_0x7ddb[505]]),_0x9494xa[_0x7ddb[510]][_0x7ddb[266]](_0x9494xa[_0x7ddb[506]]),_0x9494xa[_0x7ddb[505]]= _0x9494x14,_0x9494xa[_0x7ddb[506]]= _0x9494x15,_0x9494xa[_0x7ddb[504]](_0x9494x13)};return _0x9494x12},getScaleForPageCount:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){if(1> _0x9494x2){return 1};_0x9494x4= null!= _0x9494x4?_0x9494x4:mxConstants[_0x7ddb[516]];_0x9494x5= null!= _0x9494x5?_0x9494x5:0;var _0x9494x9=_0x9494x4[_0x7ddb[117]]- 2* _0x9494x5;_0x9494x4= _0x9494x4[_0x7ddb[119]]- 2* _0x9494x5;_0x9494x5= _0x9494x3[_0x7ddb[517]]()[_0x7ddb[238]]();_0x9494x3= _0x9494x3[_0x7ddb[249]]()[_0x7ddb[518]]();_0x9494x5[_0x7ddb[117]]/= _0x9494x3;_0x9494x5[_0x7ddb[119]]/= _0x9494x3;_0x9494x3= _0x9494x5[_0x7ddb[117]];_0x9494x4= _0x9494x3/ _0x9494x5[_0x7ddb[119]]/ (_0x9494x9/ _0x9494x4);_0x9494x5= Math[_0x7ddb[428]](_0x9494x2);var _0x9494xa=Math[_0x7ddb[428]](_0x9494x4);_0x9494x4= _0x9494x5* _0x9494xa;_0x9494x5/= _0x9494xa;if(1> _0x9494x4&& _0x9494x5> _0x9494x2){var _0x9494x12=_0x9494x5/ _0x9494x2;_0x9494x5= _0x9494x2;_0x9494x4/= _0x9494x12};1> _0x9494x5&& _0x9494x4> _0x9494x2&& (_0x9494x12= _0x9494x4/ _0x9494x2,_0x9494x4= _0x9494x2,_0x9494x5/= _0x9494x12);_0x9494x12= Math[_0x7ddb[430]](_0x9494x4)* Math[_0x7ddb[430]](_0x9494x5);for(_0x9494xa= 0;_0x9494x12> _0x9494x2;){var _0x9494x12=Math[_0x7ddb[519]](_0x9494x4)/ _0x9494x4,_0x9494x13=Math[_0x7ddb[519]](_0x9494x5)/ _0x9494x5;1== _0x9494x12&& (_0x9494x12= Math[_0x7ddb[519]](_0x9494x4- 1)/ _0x9494x4);1== _0x9494x13&& (_0x9494x13= Math[_0x7ddb[519]](_0x9494x5- 1)/ _0x9494x5);_0x9494x12= _0x9494x12> _0x9494x13?_0x9494x12:_0x9494x13;_0x9494x4*= _0x9494x12;_0x9494x5*= _0x9494x12;_0x9494x12= Math[_0x7ddb[430]](_0x9494x4)* Math[_0x7ddb[430]](_0x9494x5);_0x9494xa++;if(10< _0x9494xa){break}};return 0.99999* (_0x9494x9* _0x9494x4/ _0x9494x3)},show:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){_0x9494x4= null!= _0x9494x4?_0x9494x4:0;_0x9494x5= null!= _0x9494x5?_0x9494x5:0;null== _0x9494x3?_0x9494x3= window[_0x7ddb[392]]()[_0x7ddb[395]]:_0x9494x3[_0x7ddb[392]]();var _0x9494x9=_0x9494x2[_0x7ddb[517]]();_0x9494x4= -_0x9494x9[_0x7ddb[235]]+ _0x9494x4;_0x9494x5= -_0x9494x9[_0x7ddb[236]]+ _0x9494x5;if(mxClient[_0x7ddb[80]]){for(var _0x9494x9=_0x7ddb[520],_0x9494xa=document[_0x7ddb[64]](_0x7ddb[521]),_0x9494x12=0;_0x9494x12< _0x9494xa[_0x7ddb[67]];_0x9494x12++){_0x9494x9+= _0x9494xa[_0x9494x12][_0x7ddb[342]]};_0x9494x9+= _0x7ddb[522];for(_0x9494x12= 0;_0x9494x12< document[_0x7ddb[523]][_0x7ddb[67]];_0x9494x12++){try{_0x9494x9+= document[_0x7ddb[523]](_0x9494x12)[_0x7ddb[103]]}catch(h){}};_0x9494x9+= _0x7ddb[524];_0x9494x9+= _0x7ddb[525];_0x9494x9+= _0x9494x2[_0x7ddb[526]][_0x7ddb[339]];_0x9494x9+= _0x7ddb[527];_0x9494x9+= _0x7ddb[528];_0x9494x3[_0x7ddb[171]](_0x9494x9);_0x9494x3[_0x7ddb[268]]();_0x9494x2= _0x9494x3[_0x7ddb[112]][_0x7ddb[64]](_0x7ddb[529])[0];null!= _0x9494x2&& (_0x9494x2[_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[492],_0x9494x2[_0x7ddb[124]][_0x7ddb[361]]= _0x9494x4+ _0x7ddb[168],_0x9494x2[_0x7ddb[124]][_0x7ddb[125]]= _0x9494x5+ _0x7ddb[168])}else {_0x9494x3[_0x7ddb[171]](_0x7ddb[530]);_0x9494x3[_0x7ddb[171]](_0x7ddb[531]);_0x9494xa= document[_0x7ddb[64]](_0x7ddb[521]);for(_0x9494x12= 0;_0x9494x12< _0x9494xa[_0x7ddb[67]];_0x9494x12++){_0x9494x3[_0x7ddb[171]](mxUtils[_0x7ddb[532]](_0x9494xa[_0x9494x12]))};_0x9494xa= document[_0x7ddb[64]](_0x7ddb[54]);for(_0x9494x12= 0;_0x9494x12< _0x9494xa[_0x7ddb[67]];_0x9494x12++){_0x9494x3[_0x7ddb[171]](mxUtils[_0x7ddb[532]](_0x9494xa[_0x9494x12]))};_0x9494xa= document[_0x7ddb[64]](_0x7ddb[124]);for(_0x9494x12= 0;_0x9494x12< _0x9494xa[_0x7ddb[67]];_0x9494x12++){_0x9494x3[_0x7ddb[171]](mxUtils[_0x7ddb[532]](_0x9494xa[_0x9494x12]))};_0x9494x3[_0x7ddb[171]](_0x7ddb[533]);_0x9494x3[_0x7ddb[171]](_0x7ddb[534]);_0x9494x3[_0x7ddb[268]]();null== _0x9494x3[_0x7ddb[112]]&& _0x9494x3[_0x7ddb[158]][_0x7ddb[62]](_0x9494x3[_0x7ddb[55]](_0x7ddb[112]));_0x9494x3[_0x7ddb[112]][_0x7ddb[124]][_0x7ddb[277]]= _0x7ddb[278];for(_0x9494x2= _0x9494x2[_0x7ddb[526]][_0x7ddb[285]];null!= _0x9494x2;){_0x9494x12= _0x9494x2[_0x7ddb[511]](!0),_0x9494x3[_0x7ddb[112]][_0x7ddb[62]](_0x9494x12),_0x9494x2= _0x9494x2[_0x7ddb[287]]};_0x9494x2= _0x9494x3[_0x7ddb[64]](_0x7ddb[449])[0];null!= _0x9494x2&& (_0x9494x2[_0x7ddb[57]](_0x7ddb[535],_0x7ddb[536]+ _0x9494x4+ _0x7ddb[537]+ _0x9494x5+ _0x7ddb[460]),_0x9494x4= _0x9494x2[_0x7ddb[538]],_0x9494x4[_0x7ddb[57]](_0x7ddb[117],_0x9494x9[_0x7ddb[117]]+ Math[_0x7ddb[160]](_0x9494x9[_0x7ddb[235]],0)+ 3),_0x9494x4[_0x7ddb[57]](_0x7ddb[119],_0x9494x9[_0x7ddb[119]]+ Math[_0x7ddb[160]](_0x9494x9[_0x7ddb[236]],0)+ 3))};mxUtils[_0x7ddb[272]](_0x9494x3[_0x7ddb[112]]);return _0x9494x3},printScreen:function(_0x9494x2){var _0x9494x3=window[_0x7ddb[392]]();mxUtils[_0x7ddb[539]](_0x9494x2,_0x9494x3[_0x7ddb[395]]);_0x9494x2= function(){_0x9494x3[_0x7ddb[393]]();_0x9494x3[_0x7ddb[540]]();_0x9494x3[_0x7ddb[268]]()};mxClient[_0x7ddb[76]]?_0x9494x3[_0x7ddb[261]](_0x9494x2,500):_0x9494x2()},popup:function(_0x9494x2,_0x9494x3){if(_0x9494x3){var _0x9494x4=document[_0x7ddb[55]](_0x7ddb[485]);_0x9494x4[_0x7ddb[124]][_0x7ddb[277]]= _0x7ddb[276];_0x9494x4[_0x7ddb[124]][_0x7ddb[117]]= _0x7ddb[541];_0x9494x4[_0x7ddb[124]][_0x7ddb[119]]= _0x7ddb[542];var _0x9494x5=document[_0x7ddb[55]](_0x7ddb[543]);_0x9494x5[_0x7ddb[339]]= mxUtils[_0x7ddb[321]](_0x9494x2,!1)[_0x7ddb[230]](/\n/g,_0x7ddb[545])[_0x7ddb[230]](/ /g,_0x7ddb[544]);_0x9494x4[_0x7ddb[62]](_0x9494x5);_0x9494x4= new mxWindow(_0x7ddb[546],_0x9494x4,document[_0x7ddb[112]][_0x7ddb[159]]/ 2- 320,(document[_0x7ddb[112]][_0x7ddb[157]]|| document[_0x7ddb[158]][_0x7ddb[157]])/ 2- 240,640,480,!1,!0);_0x9494x4[_0x7ddb[164]](!0);_0x9494x4[_0x7ddb[175]](!0)}else {mxClient[_0x7ddb[133]]?(_0x9494x4= window[_0x7ddb[392]](),_0x9494x4[_0x7ddb[395]][_0x7ddb[171]](_0x7ddb[547]+ mxUtils[_0x7ddb[321]](_0x9494x2)+ _0x7ddb[548]),_0x9494x4[_0x7ddb[395]][_0x7ddb[268]]()):(_0x9494x4= window[_0x7ddb[392]](),_0x9494x5= _0x9494x4[_0x7ddb[395]][_0x7ddb[55]](_0x7ddb[543]),_0x9494x5[_0x7ddb[339]]= mxUtils[_0x7ddb[321]](_0x9494x2,!1)[_0x7ddb[230]](/\n/g,_0x7ddb[545])[_0x7ddb[230]](/ /g,_0x7ddb[544]),_0x9494x4[_0x7ddb[395]][_0x7ddb[112]][_0x7ddb[62]](_0x9494x5))}},alert:function(_0x9494x2){alert(_0x9494x2)},prompt:function(_0x9494x2,_0x9494x3){return prompt(_0x9494x2,_0x9494x3)},confirm:function(_0x9494x2){return confirm(_0x9494x2)},error:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){var _0x9494x9=document[_0x7ddb[55]](_0x7ddb[485]);_0x9494x9[_0x7ddb[124]][_0x7ddb[549]]= _0x7ddb[550];var _0x9494xa=document[_0x7ddb[55]](_0x7ddb[466]);_0x9494xa[_0x7ddb[57]](_0x7ddb[390],_0x9494x5|| mxUtils[_0x7ddb[551]]);_0x9494xa[_0x7ddb[57]](_0x7ddb[552],_0x7ddb[553]);_0x9494xa[_0x7ddb[124]][_0x7ddb[123]]= _0x7ddb[554];_0x9494x9[_0x7ddb[62]](_0x9494xa);_0x9494x9[_0x7ddb[62]](document[_0x7ddb[344]](_0x7ddb[555]));_0x9494x9[_0x7ddb[62]](document[_0x7ddb[344]](_0x7ddb[555]));_0x9494x9[_0x7ddb[62]](document[_0x7ddb[344]](_0x7ddb[555]));mxUtils[_0x7ddb[53]](_0x9494x9,_0x9494x2);_0x9494x2= document[_0x7ddb[112]][_0x7ddb[159]];_0x9494x5= document[_0x7ddb[112]][_0x7ddb[157]]|| document[_0x7ddb[158]][_0x7ddb[157]];var _0x9494x12= new mxWindow(mxResources[_0x7ddb[203]](mxUtils[_0x7ddb[556]])|| mxUtils[_0x7ddb[556]],_0x9494x9,(_0x9494x2- _0x9494x3)/ 2,_0x9494x5/ 4,_0x9494x3,null,!1,!0);_0x9494x4&& (mxUtils[_0x7ddb[345]](_0x9494x9),_0x9494x3= document[_0x7ddb[55]](_0x7ddb[346]),_0x9494x4= document[_0x7ddb[55]](_0x7ddb[172]),mxClient[_0x7ddb[80]]?_0x9494x4[_0x7ddb[124]][_0x7ddb[103]]= _0x7ddb[557]:_0x9494x4[_0x7ddb[57]](_0x7ddb[124],_0x7ddb[557]),mxEvent[_0x7ddb[169]](_0x9494x4,_0x7ddb[173],function(_0x9494x2){_0x9494x12[_0x7ddb[515]]()}),mxUtils[_0x7ddb[53]](_0x9494x4,mxResources[_0x7ddb[203]](mxUtils[_0x7ddb[558]])|| mxUtils[_0x7ddb[558]]),_0x9494x3[_0x7ddb[62]](_0x9494x4),_0x9494x9[_0x7ddb[62]](_0x9494x3),mxUtils[_0x7ddb[345]](_0x9494x9),_0x9494x12[_0x7ddb[164]](!0));_0x9494x12[_0x7ddb[175]](!0);return _0x9494x12},makeDraggable:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13,_0x9494x14,_0x9494x15){_0x9494x2= new mxDragSource(_0x9494x2,_0x9494x4);_0x9494x2[_0x7ddb[559]]= new mxPoint(null!= _0x9494x9?_0x9494x9:0,null!= _0x9494xa?_0x9494xa:mxConstants[_0x7ddb[560]]);_0x9494x2[_0x7ddb[561]]= _0x9494x12;_0x9494x2[_0x7ddb[562]](!1);null!= _0x9494x14&& (_0x9494x2[_0x7ddb[563]]= _0x9494x14);null!= _0x9494x15&& (_0x9494x2[_0x7ddb[564]]= _0x9494x15);_0x9494x2[_0x7ddb[565]]= function(_0x9494x2){return _0x7ddb[279]== typeof _0x9494x3?_0x9494x3(_0x9494x2):_0x9494x3};null!= _0x9494x5&& (_0x9494x2[_0x7ddb[566]]= function(){return _0x9494x5[_0x7ddb[511]](!0)},_0x9494x13&& (_0x9494x2[_0x7ddb[567]]= function(_0x9494x2){var _0x9494x3=_0x9494x5[_0x7ddb[511]](!0),_0x9494x4=parseInt(_0x9494x3[_0x7ddb[124]][_0x7ddb[117]]),_0x9494x9=parseInt(_0x9494x3[_0x7ddb[124]][_0x7ddb[119]]);_0x9494x3[_0x7ddb[124]][_0x7ddb[117]]= Math[_0x7ddb[488]](_0x9494x4* _0x9494x2[_0x7ddb[441]][_0x7ddb[255]])+ _0x7ddb[168];_0x9494x3[_0x7ddb[124]][_0x7ddb[119]]= Math[_0x7ddb[488]](_0x9494x9* _0x9494x2[_0x7ddb[441]][_0x7ddb[255]])+ _0x7ddb[168];return _0x9494x3}));return _0x9494x2}},mxConstants={DEFAULT_HOTSPOT:0.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:_0x7ddb[568],RENDERING_HINT_FASTER:_0x7ddb[569],RENDERING_HINT_FASTEST:_0x7ddb[570],DIALECT_SVG:_0x7ddb[571],DIALECT_VML:_0x7ddb[572],DIALECT_MIXEDHTML:_0x7ddb[573],DIALECT_PREFERHTML:_0x7ddb[574],DIALECT_STRICTHTML:_0x7ddb[575],NS_SVG:_0x7ddb[576],NS_XHTML:_0x7ddb[577],NS_XLINK:_0x7ddb[578],SHADOWCOLOR:_0x7ddb[579],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:_0x7ddb[580],DEFAULT_INVALID_COLOR:_0x7ddb[581],HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:_0x7ddb[582],CURSOR_MOVABLE_EDGE:_0x7ddb[582],CURSOR_LABEL_HANDLE:_0x7ddb[583],CURSOR_BEND_HANDLE:_0x7ddb[356],CURSOR_CONNECT:_0x7ddb[356],HIGHLIGHT_COLOR:_0x7ddb[580],CONNECT_TARGET_COLOR:_0x7ddb[584],INVALID_CONNECT_TARGET_COLOR:_0x7ddb[581],DROP_TARGET_COLOR:_0x7ddb[584],VALID_COLOR:_0x7ddb[580],INVALID_COLOR:_0x7ddb[581],EDGE_SELECTION_COLOR:_0x7ddb[580],VERTEX_SELECTION_COLOR:_0x7ddb[580],VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:_0x7ddb[581],GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:_0x7ddb[585],OUTLINE_STROKEWIDTH:mxClient[_0x7ddb[80]]?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:_0x7ddb[580],HANDLE_STROKECOLOR:_0x7ddb[586],LABEL_HANDLE_FILLCOLOR:_0x7ddb[587],CONNECT_HANDLE_FILLCOLOR:_0x7ddb[584],LOCKED_HANDLE_FILLCOLOR:_0x7ddb[581],OUTLINE_HANDLE_FILLCOLOR:_0x7ddb[588],OUTLINE_HANDLE_STROKECOLOR:_0x7ddb[589],DEFAULT_FONTFAMILY:_0x7ddb[590],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:0.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:_0x7ddb[130],STYLE_PERIMETER:_0x7ddb[591],STYLE_SOURCE_PORT:_0x7ddb[592],STYLE_TARGET_PORT:_0x7ddb[593],STYLE_PORT_CONSTRAINT:_0x7ddb[594],STYLE_OPACITY:_0x7ddb[461],STYLE_TEXT_OPACITY:_0x7ddb[595],STYLE_OVERFLOW:_0x7ddb[277],STYLE_ORTHOGONAL:_0x7ddb[596],STYLE_EXIT_X:_0x7ddb[597],STYLE_EXIT_Y:_0x7ddb[598],STYLE_EXIT_PERIMETER:_0x7ddb[599],STYLE_ENTRY_X:_0x7ddb[600],STYLE_ENTRY_Y:_0x7ddb[601],STYLE_ENTRY_PERIMETER:_0x7ddb[602],STYLE_WHITE_SPACE:_0x7ddb[493],STYLE_ROTATION:_0x7ddb[603],STYLE_FILLCOLOR:_0x7ddb[604],STYLE_SWIMLANE_FILLCOLOR:_0x7ddb[605],STYLE_GRADIENTCOLOR:_0x7ddb[606],STYLE_GRADIENT_DIRECTION:_0x7ddb[607],STYLE_STROKECOLOR:_0x7ddb[608],STYLE_SEPARATORCOLOR:_0x7ddb[609],STYLE_STROKEWIDTH:_0x7ddb[610],STYLE_ALIGN:_0x7ddb[611],STYLE_VERTICAL_ALIGN:_0x7ddb[123],STYLE_LABEL_POSITION:_0x7ddb[612],STYLE_VERTICAL_LABEL_POSITION:_0x7ddb[613],STYLE_IMAGE_ASPECT:_0x7ddb[614],STYLE_IMAGE_ALIGN:_0x7ddb[615],STYLE_IMAGE_VERTICAL_ALIGN:_0x7ddb[616],STYLE_GLASS:_0x7ddb[617],STYLE_IMAGE:_0x7ddb[618],STYLE_IMAGE_WIDTH:_0x7ddb[619],STYLE_IMAGE_HEIGHT:_0x7ddb[620],STYLE_IMAGE_BACKGROUND:_0x7ddb[621],STYLE_IMAGE_BORDER:_0x7ddb[622],STYLE_FLIPH:_0x7ddb[623],STYLE_FLIPV:_0x7ddb[624],STYLE_NOLABEL:_0x7ddb[625],STYLE_NOEDGESTYLE:_0x7ddb[626],STYLE_LABEL_BACKGROUNDCOLOR:_0x7ddb[627],STYLE_LABEL_BORDERCOLOR:_0x7ddb[628],STYLE_LABEL_PADDING:_0x7ddb[629],STYLE_INDICATOR_SHAPE:_0x7ddb[630],STYLE_INDICATOR_IMAGE:_0x7ddb[631],STYLE_INDICATOR_COLOR:_0x7ddb[632],STYLE_INDICATOR_STROKECOLOR:_0x7ddb[633],STYLE_INDICATOR_GRADIENTCOLOR:_0x7ddb[634],STYLE_INDICATOR_SPACING:_0x7ddb[635],STYLE_INDICATOR_WIDTH:_0x7ddb[636],STYLE_INDICATOR_HEIGHT:_0x7ddb[637],STYLE_INDICATOR_DIRECTION:_0x7ddb[638],STYLE_SHADOW:_0x7ddb[639],STYLE_SEGMENT:_0x7ddb[640],STYLE_ENDARROW:_0x7ddb[641],STYLE_STARTARROW:_0x7ddb[642],STYLE_ENDSIZE:_0x7ddb[643],STYLE_STARTSIZE:_0x7ddb[644],STYLE_SWIMLANE_LINE:_0x7ddb[645],STYLE_ENDFILL:_0x7ddb[646],STYLE_STARTFILL:_0x7ddb[647],STYLE_DASHED:_0x7ddb[648],STYLE_DASH_PATTERN:_0x7ddb[649],STYLE_ROUNDED:_0x7ddb[650],STYLE_CURVED:_0x7ddb[651],STYLE_ARCSIZE:_0x7ddb[652],STYLE_SMOOTH:_0x7ddb[653],STYLE_SOURCE_PERIMETER_SPACING:_0x7ddb[654],STYLE_TARGET_PERIMETER_SPACING:_0x7ddb[655],STYLE_PERIMETER_SPACING:_0x7ddb[656],STYLE_SPACING:_0x7ddb[657],STYLE_SPACING_TOP:_0x7ddb[658],STYLE_SPACING_LEFT:_0x7ddb[659],STYLE_SPACING_BOTTOM:_0x7ddb[660],STYLE_SPACING_RIGHT:_0x7ddb[661],STYLE_HORIZONTAL:_0x7ddb[662],STYLE_DIRECTION:_0x7ddb[663],STYLE_ELBOW:_0x7ddb[664],STYLE_FONTCOLOR:_0x7ddb[665],STYLE_FONTFAMILY:_0x7ddb[486],STYLE_FONTSIZE:_0x7ddb[487],STYLE_FONTSTYLE:_0x7ddb[666],STYLE_AUTOSIZE:_0x7ddb[667],STYLE_FOLDABLE:_0x7ddb[668],STYLE_EDITABLE:_0x7ddb[669],STYLE_BENDABLE:_0x7ddb[670],STYLE_MOVABLE:_0x7ddb[671],STYLE_RESIZABLE:_0x7ddb[672],STYLE_CLONEABLE:_0x7ddb[673],STYLE_DELETABLE:_0x7ddb[674],STYLE_SHAPE:_0x7ddb[253],STYLE_EDGE:_0x7ddb[675],STYLE_LOOP:_0x7ddb[676],STYLE_ROUTING_CENTER_X:_0x7ddb[677],STYLE_ROUTING_CENTER_Y:_0x7ddb[678],FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:_0x7ddb[679],SHAPE_ELLIPSE:_0x7ddb[680],SHAPE_DOUBLE_ELLIPSE:_0x7ddb[681],SHAPE_RHOMBUS:_0x7ddb[682],SHAPE_LINE:_0x7ddb[683],SHAPE_IMAGE:_0x7ddb[618],SHAPE_ARROW:_0x7ddb[684],SHAPE_LABEL:_0x7ddb[685],SHAPE_CYLINDER:_0x7ddb[686],SHAPE_SWIMLANE:_0x7ddb[687],SHAPE_CONNECTOR:_0x7ddb[688],SHAPE_ACTOR:_0x7ddb[689],SHAPE_CLOUD:_0x7ddb[690],SHAPE_TRIANGLE:_0x7ddb[691],SHAPE_HEXAGON:_0x7ddb[692],ARROW_CLASSIC:_0x7ddb[693],ARROW_BLOCK:_0x7ddb[694],ARROW_OPEN:_0x7ddb[392],ARROW_OVAL:_0x7ddb[695],ARROW_DIAMOND:_0x7ddb[696],ARROW_DIAMOND_THIN:_0x7ddb[697],ALIGN_LEFT:_0x7ddb[361],ALIGN_CENTER:_0x7ddb[698],ALIGN_RIGHT:_0x7ddb[699],ALIGN_TOP:_0x7ddb[125],ALIGN_MIDDLE:_0x7ddb[554],ALIGN_BOTTOM:_0x7ddb[553],DIRECTION_NORTH:_0x7ddb[700],DIRECTION_SOUTH:_0x7ddb[701],DIRECTION_EAST:_0x7ddb[702],DIRECTION_WEST:_0x7ddb[703],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:_0x7ddb[704],ELBOW_HORIZONTAL:_0x7ddb[662],EDGESTYLE_ELBOW:_0x7ddb[705],EDGESTYLE_ENTITY_RELATION:_0x7ddb[706],EDGESTYLE_LOOP:_0x7ddb[707],EDGESTYLE_SIDETOSIDE:_0x7ddb[708],EDGESTYLE_TOPTOBOTTOM:_0x7ddb[709],EDGESTYLE_ORTHOGONAL:_0x7ddb[710],EDGESTYLE_SEGMENT:_0x7ddb[711],PERIMETER_ELLIPSE:_0x7ddb[712],PERIMETER_RECTANGLE:_0x7ddb[713],PERIMETER_RHOMBUS:_0x7ddb[714],PERIMETER_TRIANGLE:_0x7ddb[715]};function mxEventObject(_0x9494x2){this[_0x7ddb[298]]= _0x9494x2;this[_0x7ddb[716]]= [];for(var _0x9494x3=1;_0x9494x3< arguments[_0x7ddb[67]];_0x9494x3+= 2){null!= arguments[_0x9494x3+ 1]&& (this[_0x7ddb[716]][arguments[_0x9494x3]]= arguments[_0x9494x3+ 1])}}mxEventObject[_0x7ddb[202]][_0x7ddb[298]]= null;mxEventObject[_0x7ddb[202]][_0x7ddb[716]]= null;mxEventObject[_0x7ddb[202]][_0x7ddb[717]]= !1;mxEventObject[_0x7ddb[202]][_0x7ddb[718]]= function(){return this[_0x7ddb[298]]};mxEventObject[_0x7ddb[202]][_0x7ddb[719]]= function(){return this[_0x7ddb[716]]};mxEventObject[_0x7ddb[202]][_0x7ddb[720]]= function(_0x9494x2){return this[_0x7ddb[716]][_0x9494x2]};mxEventObject[_0x7ddb[202]][_0x7ddb[721]]= function(){return this[_0x7ddb[717]]};mxEventObject[_0x7ddb[202]][_0x7ddb[722]]= function(){this[_0x7ddb[717]]= !0};function mxMouseEvent(_0x9494x2,_0x9494x3){this[_0x7ddb[723]]= _0x9494x2;this[_0x7ddb[724]]= _0x9494x3}mxMouseEvent[_0x7ddb[202]][_0x7ddb[717]]= !1;mxMouseEvent[_0x7ddb[202]][_0x7ddb[723]]= null;mxMouseEvent[_0x7ddb[202]][_0x7ddb[725]]= null;mxMouseEvent[_0x7ddb[202]][_0x7ddb[726]]= null;mxMouseEvent[_0x7ddb[202]][_0x7ddb[724]]= null;mxMouseEvent[_0x7ddb[202]][_0x7ddb[727]]= function(){return this[_0x7ddb[723]]};mxMouseEvent[_0x7ddb[202]][_0x7ddb[728]]= function(){return mxEvent[_0x7ddb[728]](this[_0x7ddb[723]])};mxMouseEvent[_0x7ddb[202]][_0x7ddb[729]]= function(_0x9494x2){if(null!= _0x9494x2){for(var _0x9494x3=this[_0x7ddb[728]]();null!= _0x9494x3;){if(_0x9494x3== _0x9494x2[_0x7ddb[252]]){return !0};_0x9494x3= _0x9494x3[_0x7ddb[265]]}};return !1};mxMouseEvent[_0x7ddb[202]][_0x7ddb[730]]= function(){return mxEvent[_0x7ddb[731]](this[_0x7ddb[727]]())};mxMouseEvent[_0x7ddb[202]][_0x7ddb[732]]= function(){return mxEvent[_0x7ddb[733]](this[_0x7ddb[727]]())};mxMouseEvent[_0x7ddb[202]][_0x7ddb[734]]= function(){return this[_0x7ddb[725]]};mxMouseEvent[_0x7ddb[202]][_0x7ddb[735]]= function(){return this[_0x7ddb[726]]};mxMouseEvent[_0x7ddb[202]][_0x7ddb[248]]= function(){return this[_0x7ddb[724]]};mxMouseEvent[_0x7ddb[202]][_0x7ddb[736]]= function(){var _0x9494x2=this[_0x7ddb[248]]();return null!= _0x9494x2?_0x9494x2[_0x7ddb[246]]:null};mxMouseEvent[_0x7ddb[202]][_0x7ddb[737]]= function(){return mxEvent[_0x7ddb[737]](this[_0x7ddb[727]]())};mxMouseEvent[_0x7ddb[202]][_0x7ddb[721]]= function(){return this[_0x7ddb[717]]};mxMouseEvent[_0x7ddb[202]][_0x7ddb[722]]= function(_0x9494x2){(null!= _0x9494x2?_0x9494x2:1)&& this[_0x7ddb[723]][_0x7ddb[738]]&& this[_0x7ddb[723]][_0x7ddb[738]]();this[_0x7ddb[723]][_0x7ddb[739]]= !1;this[_0x7ddb[717]]= !0};function mxEventSource(_0x9494x2){this[_0x7ddb[740]](_0x9494x2)}mxEventSource[_0x7ddb[202]][_0x7ddb[741]]= null;mxEventSource[_0x7ddb[202]][_0x7ddb[742]]= !0;mxEventSource[_0x7ddb[202]][_0x7ddb[743]]= null;mxEventSource[_0x7ddb[202]][_0x7ddb[503]]= function(){return this[_0x7ddb[742]]};mxEventSource[_0x7ddb[202]][_0x7ddb[504]]= function(_0x9494x2){this[_0x7ddb[742]]= _0x9494x2};mxEventSource[_0x7ddb[202]][_0x7ddb[744]]= function(){return this[_0x7ddb[743]]};mxEventSource[_0x7ddb[202]][_0x7ddb[740]]= function(_0x9494x2){this[_0x7ddb[743]]= _0x9494x2};mxEventSource[_0x7ddb[202]][_0x7ddb[169]]= function(_0x9494x2,_0x9494x3){null== this[_0x7ddb[741]]&& (this[_0x7ddb[741]]= []);this[_0x7ddb[741]][_0x7ddb[207]](_0x9494x2);this[_0x7ddb[741]][_0x7ddb[207]](_0x9494x3)};mxEventSource[_0x7ddb[202]][_0x7ddb[745]]= function(_0x9494x2){if(null!= this[_0x7ddb[741]]){for(var _0x9494x3=0;_0x9494x3< this[_0x7ddb[741]][_0x7ddb[67]];){this[_0x7ddb[741]][_0x9494x3+ 1]== _0x9494x2?this[_0x7ddb[741]][_0x7ddb[300]](_0x9494x3,2):_0x9494x3+= 2}}};mxEventSource[_0x7ddb[202]][_0x7ddb[746]]= function(_0x9494x2,_0x9494x3){if(null!= this[_0x7ddb[741]]&& this[_0x7ddb[503]]()){null== _0x9494x2&& (_0x9494x2= new mxEventObject);null== _0x9494x3&& (_0x9494x3= this[_0x7ddb[744]]());null== _0x9494x3&& (_0x9494x3= this);for(var _0x9494x4=[_0x9494x3,_0x9494x2],_0x9494x5=0;_0x9494x5< this[_0x7ddb[741]][_0x7ddb[67]];_0x9494x5+= 2){var _0x9494x9=this[_0x7ddb[741]][_0x9494x5];(null== _0x9494x9|| _0x9494x9== _0x9494x2[_0x7ddb[718]]())&& this[_0x7ddb[741]][_0x9494x5+ 1][_0x7ddb[183]](this,_0x9494x4)}}};var mxEvent={objects:[],addListener:function(){var _0x9494x2=function(_0x9494x2,_0x9494x4,_0x9494x5){null== _0x9494x2[_0x7ddb[69]]&& (_0x9494x2[_0x7ddb[69]]= [],mxEvent[_0x7ddb[68]][_0x7ddb[207]](_0x9494x2));_0x9494x2[_0x7ddb[69]][_0x7ddb[207]]({name:_0x9494x4,f:_0x9494x5})};return window[_0x7ddb[418]]?function(_0x9494x3,_0x9494x4,_0x9494x5){_0x9494x3[_0x7ddb[418]](_0x9494x4,_0x9494x5,!1);_0x9494x2(_0x9494x3,_0x9494x4,_0x9494x5)}:function(_0x9494x3,_0x9494x4,_0x9494x5){_0x9494x3[_0x7ddb[108]](_0x7ddb[747]+ _0x9494x4,_0x9494x5);_0x9494x2(_0x9494x3,_0x9494x4,_0x9494x5)}}(),removeListener:function(){var _0x9494x2=function(_0x9494x2,_0x9494x4,_0x9494x5){if(null!= _0x9494x2[_0x7ddb[69]]){_0x9494x4= _0x9494x2[_0x7ddb[69]][_0x7ddb[67]];for(var _0x9494x9=0;_0x9494x9< _0x9494x4;_0x9494x9++){if(_0x9494x2[_0x7ddb[69]][_0x9494x9][_0x7ddb[748]]== _0x9494x5){_0x9494x2[_0x7ddb[69]][_0x7ddb[300]](_0x9494x9,1);break}};0== _0x9494x2[_0x7ddb[69]][_0x7ddb[67]]&& (_0x9494x2[_0x7ddb[69]]= null)}};return window[_0x7ddb[749]]?function(_0x9494x3,_0x9494x4,_0x9494x5){_0x9494x3[_0x7ddb[749]](_0x9494x4,_0x9494x5,!1);_0x9494x2(_0x9494x3,_0x9494x4,_0x9494x5)}:function(_0x9494x3,_0x9494x4,_0x9494x5){_0x9494x3[_0x7ddb[750]](_0x7ddb[747]+ _0x9494x4,_0x9494x5);_0x9494x2(_0x9494x3,_0x9494x4,_0x9494x5)}}(),removeAllListeners:function(_0x9494x2){var _0x9494x3=_0x9494x2[_0x7ddb[69]];if(null!= _0x9494x3){for(;0< _0x9494x3[_0x7ddb[67]];){var _0x9494x4=_0x9494x3[0];mxEvent[_0x7ddb[745]](_0x9494x2,_0x9494x4[_0x7ddb[298]],_0x9494x4[_0x7ddb[748]])}}},addGestureListeners:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){null!= _0x9494x3&& mxEvent[_0x7ddb[169]](_0x9494x2,_0x7ddb[751],_0x9494x3);null!= _0x9494x4&& mxEvent[_0x7ddb[169]](_0x9494x2,_0x7ddb[752],_0x9494x4);null!= _0x9494x5&& mxEvent[_0x7ddb[169]](_0x9494x2,_0x7ddb[753],_0x9494x5);mxClient[_0x7ddb[754]]&& (null!= _0x9494x3&& mxEvent[_0x7ddb[169]](_0x9494x2,_0x7ddb[755],_0x9494x3),null!= _0x9494x4&& mxEvent[_0x7ddb[169]](_0x9494x2,_0x7ddb[756],_0x9494x4),null!= _0x9494x5&& mxEvent[_0x7ddb[169]](_0x9494x2,_0x7ddb[757],_0x9494x5))},removeGestureListeners:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){null!= _0x9494x3&& mxEvent[_0x7ddb[745]](_0x9494x2,_0x7ddb[751],_0x9494x3);null!= _0x9494x4&& mxEvent[_0x7ddb[745]](_0x9494x2,_0x7ddb[752],_0x9494x4);null!= _0x9494x5&& mxEvent[_0x7ddb[745]](_0x9494x2,_0x7ddb[753],_0x9494x5);mxClient[_0x7ddb[754]]&& (null!= _0x9494x3&& mxEvent[_0x7ddb[745]](_0x9494x2,_0x7ddb[755],_0x9494x3),null!= _0x9494x4&& mxEvent[_0x7ddb[745]](_0x9494x2,_0x7ddb[756],_0x9494x4),null!= _0x9494x5&& mxEvent[_0x7ddb[745]](_0x9494x2,_0x7ddb[757],_0x9494x5))},redirectMouseEvents:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12){var _0x9494x13=function(_0x9494x2){return _0x7ddb[279]== typeof _0x9494x4?_0x9494x4(_0x9494x2):_0x9494x4};mxEvent[_0x7ddb[759]](_0x9494x2,function(_0x9494x2){null!= _0x9494x5?_0x9494x5(_0x9494x2):mxEvent[_0x7ddb[721]](_0x9494x2)|| _0x9494x3[_0x7ddb[758]](mxEvent.MOUSE_DOWN, new mxMouseEvent(_0x9494x2,_0x9494x13(_0x9494x2)))},function(_0x9494x2){null!= _0x9494x9?_0x9494x9(_0x9494x2):mxEvent[_0x7ddb[721]](_0x9494x2)|| _0x9494x3[_0x7ddb[758]](mxEvent.MOUSE_MOVE, new mxMouseEvent(_0x9494x2,_0x9494x13(_0x9494x2)))},function(_0x9494x2){null!= _0x9494xa?_0x9494xa(_0x9494x2):mxEvent[_0x7ddb[721]](_0x9494x2)|| _0x9494x3[_0x7ddb[758]](mxEvent.MOUSE_UP, new mxMouseEvent(_0x9494x2,_0x9494x13(_0x9494x2)))});mxEvent[_0x7ddb[169]](_0x9494x2,_0x7ddb[760],function(_0x9494x2){if(null!= _0x9494x12){_0x9494x12(_0x9494x2)}else {if(!mxEvent[_0x7ddb[721]](_0x9494x2)){var _0x9494x4=_0x9494x13(_0x9494x2);_0x9494x3[_0x7ddb[761]](_0x9494x2,null!= _0x9494x4?_0x9494x4[_0x7ddb[246]]:null)}}})},release:function(_0x9494x2){if(null!= _0x9494x2&& (mxEvent[_0x7ddb[70]](_0x9494x2),_0x9494x2= _0x9494x2[_0x7ddb[271]],null!= _0x9494x2)){for(var _0x9494x3=_0x9494x2[_0x7ddb[67]],_0x9494x4=0;_0x9494x4< _0x9494x3;_0x9494x4+= 1){mxEvent[_0x7ddb[762]](_0x9494x2[_0x9494x4])}}},addMouseWheelListener:function(_0x9494x2){if(null!= _0x9494x2){var _0x9494x3=function(_0x9494x3){null== _0x9494x3&& (_0x9494x3= window[_0x7ddb[763]]);var _0x9494x5=0,_0x9494x5=mxClient[_0x7ddb[133]]&& !mxClient[_0x7ddb[75]]&& !mxClient[_0x7ddb[76]]?-_0x9494x3[_0x7ddb[764]]/ 2:_0x9494x3[_0x7ddb[765]]/ 120;0!= _0x9494x5&& _0x9494x2(_0x9494x3,0< _0x9494x5)};mxClient[_0x7ddb[133]]?mxEvent[_0x7ddb[169]](window,mxClient[_0x7ddb[75]]|| mxClient[_0x7ddb[76]]?_0x7ddb[766]:_0x7ddb[767],_0x9494x3):mxEvent[_0x7ddb[169]](document,_0x7ddb[766],_0x9494x3)}},disableContextMenu:function(){return mxClient[_0x7ddb[80]]&& (_0x7ddb[82]=== typeof document[_0x7ddb[5]]|| 9> document[_0x7ddb[5]])?function(_0x9494x2){mxEvent[_0x7ddb[169]](_0x9494x2,_0x7ddb[768],function(){return !1})}:function(_0x9494x2){_0x9494x2[_0x7ddb[57]](_0x7ddb[769],_0x7ddb[770])}}(),getSource:function(_0x9494x2){return null!= _0x9494x2[_0x7ddb[771]]?_0x9494x2[_0x7ddb[771]]:_0x9494x2[_0x7ddb[772]]},isConsumed:function(_0x9494x2){return null!= _0x9494x2[_0x7ddb[721]]&& _0x9494x2[_0x7ddb[721]]},isLeftMouseButton:function(_0x9494x2){return _0x9494x2[_0x7ddb[172]]== (mxClient[_0x7ddb[80]]&& (_0x7ddb[82]=== typeof document[_0x7ddb[5]]|| 9> document[_0x7ddb[5]])?1:0)},isRightMouseButton:function(_0x9494x2){return 2== _0x9494x2[_0x7ddb[172]]},isPopupTrigger:function(_0x9494x2){return mxEvent[_0x7ddb[773]](_0x9494x2)|| mxEvent[_0x7ddb[774]](_0x9494x2)&& !mxEvent[_0x7ddb[775]](_0x9494x2)},isShiftDown:function(_0x9494x2){return null!= _0x9494x2?_0x9494x2[_0x7ddb[776]]:!1},isAltDown:function(_0x9494x2){return null!= _0x9494x2?_0x9494x2[_0x7ddb[777]]:!1},isControlDown:function(_0x9494x2){return null!= _0x9494x2?_0x9494x2[_0x7ddb[778]]:!1},isMetaDown:function(_0x9494x2){return null!= _0x9494x2?_0x9494x2[_0x7ddb[779]]:!1},getMainEvent:function(_0x9494x2){(_0x7ddb[755]== _0x9494x2[_0x7ddb[60]]|| _0x7ddb[756]== _0x9494x2[_0x7ddb[60]])&& null!= _0x9494x2[_0x7ddb[780]]&& null!= _0x9494x2[_0x7ddb[780]][0]?_0x9494x2= _0x9494x2[_0x7ddb[780]][0]:_0x7ddb[757]== _0x9494x2[_0x7ddb[60]]&& (null!= _0x9494x2[_0x7ddb[781]]&& null!= _0x9494x2[_0x7ddb[781]][0])&& (_0x9494x2= _0x9494x2[_0x7ddb[781]][0]);return _0x9494x2},getClientX:function(_0x9494x2){return mxEvent[_0x7ddb[783]](_0x9494x2)[_0x7ddb[782]]},getClientY:function(_0x9494x2){return mxEvent[_0x7ddb[783]](_0x9494x2)[_0x7ddb[784]]},consume:function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x4= null!= _0x9494x4?_0x9494x4:!0;if(null!= _0x9494x3?_0x9494x3:1){_0x9494x2[_0x7ddb[738]]?(_0x9494x4&& _0x9494x2[_0x7ddb[785]](),_0x9494x2[_0x7ddb[738]]()):_0x9494x4&& (_0x9494x2[_0x7ddb[786]]= !0)};_0x9494x2[_0x7ddb[721]]= !0;_0x9494x2[_0x7ddb[739]]= !1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:_0x7ddb[787],MOUSE_MOVE:_0x7ddb[788],MOUSE_UP:_0x7ddb[789],ACTIVATE:_0x7ddb[790],RESIZE_START:_0x7ddb[791],RESIZE:_0x7ddb[129],RESIZE_END:_0x7ddb[792],MOVE_START:_0x7ddb[793],MOVE:_0x7ddb[582],MOVE_END:_0x7ddb[794],PAN_START:_0x7ddb[795],PAN:_0x7ddb[796],PAN_END:_0x7ddb[797],MINIMIZE:_0x7ddb[798],NORMALIZE:_0x7ddb[799],MAXIMIZE:_0x7ddb[800],HIDE:_0x7ddb[801],SHOW:_0x7ddb[539],CLOSE:_0x7ddb[268],DESTROY:_0x7ddb[515],REFRESH:_0x7ddb[802],SIZE:_0x7ddb[803],SELECT:_0x7ddb[804],FIRED:_0x7ddb[805],GET:_0x7ddb[203],RECEIVE:_0x7ddb[806],CONNECT:_0x7ddb[807],DISCONNECT:_0x7ddb[808],SUSPEND:_0x7ddb[809],RESUME:_0x7ddb[810],MARK:_0x7ddb[811],SESSION:_0x7ddb[812],ROOT:_0x7ddb[813],POST:_0x7ddb[814],OPEN:_0x7ddb[392],SAVE:_0x7ddb[815],BEFORE_ADD_VERTEX:_0x7ddb[816],ADD_VERTEX:_0x7ddb[817],AFTER_ADD_VERTEX:_0x7ddb[818],DONE:_0x7ddb[819],EXECUTE:_0x7ddb[350],EXECUTED:_0x7ddb[820],BEGIN_UPDATE:_0x7ddb[473],START_EDIT:_0x7ddb[821],END_UPDATE:_0x7ddb[476],END_EDIT:_0x7ddb[822],BEFORE_UNDO:_0x7ddb[823],UNDO:_0x7ddb[824],REDO:_0x7ddb[825],CHANGE:_0x7ddb[826],NOTIFY:_0x7ddb[827],LAYOUT_CELLS:_0x7ddb[828],CLICK:_0x7ddb[173],SCALE:_0x7ddb[255],TRANSLATE:_0x7ddb[513],SCALE_AND_TRANSLATE:_0x7ddb[829],UP:_0x7ddb[830],DOWN:_0x7ddb[831],ADD:_0x7ddb[99],REMOVE:_0x7ddb[205],CLEAR:_0x7ddb[200],ADD_CELLS:_0x7ddb[832],CELLS_ADDED:_0x7ddb[833],MOVE_CELLS:_0x7ddb[834],CELLS_MOVED:_0x7ddb[835],RESIZE_CELLS:_0x7ddb[836],CELLS_RESIZED:_0x7ddb[837],TOGGLE_CELLS:_0x7ddb[838],CELLS_TOGGLED:_0x7ddb[839],ORDER_CELLS:_0x7ddb[840],CELLS_ORDERED:_0x7ddb[841],REMOVE_CELLS:_0x7ddb[842],CELLS_REMOVED:_0x7ddb[843],GROUP_CELLS:_0x7ddb[844],UNGROUP_CELLS:_0x7ddb[845],REMOVE_CELLS_FROM_PARENT:_0x7ddb[846],FOLD_CELLS:_0x7ddb[847],CELLS_FOLDED:_0x7ddb[848],ALIGN_CELLS:_0x7ddb[849],LABEL_CHANGED:_0x7ddb[850],CONNECT_CELL:_0x7ddb[851],CELL_CONNECTED:_0x7ddb[852],SPLIT_EDGE:_0x7ddb[853],FLIP_EDGE:_0x7ddb[854],START_EDITING:_0x7ddb[855],ADD_OVERLAY:_0x7ddb[856],REMOVE_OVERLAY:_0x7ddb[857],UPDATE_CELL_SIZE:_0x7ddb[858],ESCAPE:_0x7ddb[859],CLICK:_0x7ddb[173],DOUBLE_CLICK:_0x7ddb[860],START:_0x7ddb[861],RESET:_0x7ddb[862]};function mxXmlRequest(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){this[_0x7ddb[863]]= _0x9494x2;this[_0x7ddb[864]]= _0x9494x3;this[_0x7ddb[865]]= _0x9494x4|| _0x7ddb[866];this[_0x7ddb[307]]= null!= _0x9494x5?_0x9494x5:!0;this[_0x7ddb[867]]= _0x9494x9;this[_0x7ddb[868]]= _0x9494xa}mxXmlRequest[_0x7ddb[202]][_0x7ddb[863]]= null;mxXmlRequest[_0x7ddb[202]][_0x7ddb[864]]= null;mxXmlRequest[_0x7ddb[202]][_0x7ddb[865]]= null;mxXmlRequest[_0x7ddb[202]][_0x7ddb[307]]= null;mxXmlRequest[_0x7ddb[202]][_0x7ddb[869]]= !1;mxXmlRequest[_0x7ddb[202]][_0x7ddb[867]]= null;mxXmlRequest[_0x7ddb[202]][_0x7ddb[868]]= null;mxXmlRequest[_0x7ddb[202]][_0x7ddb[870]]= null;mxXmlRequest[_0x7ddb[202]][_0x7ddb[871]]= function(){return this[_0x7ddb[869]]};mxXmlRequest[_0x7ddb[202]][_0x7ddb[872]]= function(_0x9494x2){this[_0x7ddb[869]]= _0x9494x2};mxXmlRequest[_0x7ddb[202]][_0x7ddb[221]]= function(){return this[_0x7ddb[870]][_0x7ddb[873]]};mxXmlRequest[_0x7ddb[202]][_0x7ddb[220]]= function(){return 4== this[_0x7ddb[870]][_0x7ddb[417]]};mxXmlRequest[_0x7ddb[202]][_0x7ddb[874]]= function(){var _0x9494x2=this[_0x7ddb[875]]();return null!= _0x9494x2?_0x9494x2[_0x7ddb[158]]:null};mxXmlRequest[_0x7ddb[202]][_0x7ddb[875]]= function(){var _0x9494x2=this[_0x7ddb[870]][_0x7ddb[876]];if(9<= document[_0x7ddb[5]]|| null== _0x9494x2|| null== _0x9494x2[_0x7ddb[158]]){_0x9494x2= mxUtils[_0x7ddb[877]](this[_0x7ddb[870]][_0x7ddb[873]])};return _0x9494x2};mxXmlRequest[_0x7ddb[202]][_0x7ddb[221]]= function(){return this[_0x7ddb[870]][_0x7ddb[873]]};mxXmlRequest[_0x7ddb[202]][_0x7ddb[878]]= function(){return this[_0x7ddb[870]][_0x7ddb[879]]};mxXmlRequest[_0x7ddb[202]][_0x7ddb[385]]= function(){if(window[_0x7ddb[880]]){return function(){var _0x9494x2= new XMLHttpRequest;this[_0x7ddb[871]]()&& _0x9494x2[_0x7ddb[881]]&& _0x9494x2[_0x7ddb[881]](_0x7ddb[882]);return _0x9494x2}};if(_0x7ddb[82]!= typeof ActiveXObject){return function(){return new ActiveXObject(_0x7ddb[883])}}}();mxXmlRequest[_0x7ddb[202]][_0x7ddb[414]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[870]]= this[_0x7ddb[385]]();null!= this[_0x7ddb[870]]&& (null!= _0x9494x2&& (this[_0x7ddb[870]][_0x7ddb[416]]= mxUtils[_0x7ddb[885]](this,function(){this[_0x7ddb[220]]()&& (_0x9494x2(this),this[_0x7ddb[884]]= null)})),this[_0x7ddb[870]][_0x7ddb[392]](this[_0x7ddb[865]],this[_0x7ddb[863]],this[_0x7ddb[307]],this[_0x7ddb[867]],this[_0x7ddb[868]]),this[_0x7ddb[886]](this[_0x7ddb[870]],this[_0x7ddb[864]]),this[_0x7ddb[870]][_0x7ddb[414]](this[_0x7ddb[864]]))};mxXmlRequest[_0x7ddb[202]][_0x7ddb[886]]= function(_0x9494x2,_0x9494x3){null!= _0x9494x3&& _0x9494x2[_0x7ddb[889]](_0x7ddb[887],_0x7ddb[888])};mxXmlRequest[_0x7ddb[202]][_0x7ddb[415]]= function(_0x9494x2,_0x9494x3){_0x9494x2= _0x9494x2|| document;var _0x9494x4=null;_0x9494x2== document&& (_0x9494x4= window[_0x7ddb[890]],window[_0x7ddb[890]]= null);var _0x9494x5=_0x9494x2[_0x7ddb[55]](_0x7ddb[891]);_0x9494x5[_0x7ddb[57]](_0x7ddb[865],this[_0x7ddb[865]]);_0x9494x5[_0x7ddb[57]](_0x7ddb[892],this[_0x7ddb[863]]);null!= _0x9494x3&& _0x9494x5[_0x7ddb[57]](_0x7ddb[772],_0x9494x3);_0x9494x5[_0x7ddb[124]][_0x7ddb[495]]= _0x7ddb[130];_0x9494x5[_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[188];for(var _0x9494x9=0< this[_0x7ddb[864]][_0x7ddb[2]](_0x7ddb[893])?this[_0x7ddb[864]][_0x7ddb[224]](_0x7ddb[893]):this[_0x7ddb[864]][_0x7ddb[224]](),_0x9494xa=0;_0x9494xa< _0x9494x9[_0x7ddb[67]];_0x9494xa++){var _0x9494x12=_0x9494x9[_0x9494xa][_0x7ddb[2]](_0x7ddb[226]);if(0< _0x9494x12){var _0x9494x13=_0x9494x9[_0x9494xa][_0x7ddb[85]](0,_0x9494x12),_0x9494x14=_0x9494x9[_0x9494xa][_0x7ddb[85]](_0x9494x12+ 1),_0x9494x12=_0x9494x2[_0x7ddb[55]](_0x7ddb[126]);_0x9494x12[_0x7ddb[57]](_0x7ddb[298],_0x9494x13);_0x9494x14= _0x9494x14[_0x7ddb[230]](/\n/g,_0x7ddb[336]);_0x9494x13= _0x9494x2[_0x7ddb[344]](_0x9494x14);_0x9494x12[_0x7ddb[62]](_0x9494x13);_0x9494x5[_0x7ddb[62]](_0x9494x12)}};_0x9494x2[_0x7ddb[112]][_0x7ddb[62]](_0x9494x5);_0x9494x5[_0x7ddb[894]]();_0x9494x2[_0x7ddb[112]][_0x7ddb[266]](_0x9494x5);null!= _0x9494x4&& (window[_0x7ddb[890]]= _0x9494x4)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null== mxClipboard[_0x7ddb[895]]},cut:function(_0x9494x2,_0x9494x3){_0x9494x3= mxClipboard[_0x7ddb[149]](_0x9494x2,_0x9494x3);mxClipboard[_0x7ddb[896]]= 0;mxClipboard[_0x7ddb[842]](_0x9494x2,_0x9494x3);return _0x9494x3},removeCells:function(_0x9494x2,_0x9494x3){_0x9494x2[_0x7ddb[842]](_0x9494x3)},copy:function(_0x9494x2,_0x9494x3){_0x9494x3= _0x9494x3|| _0x9494x2[_0x7ddb[897]]();var _0x9494x4=_0x9494x2[_0x7ddb[898]](_0x9494x3);mxClipboard[_0x7ddb[896]]= 1;mxClipboard[_0x7ddb[895]]= _0x9494x2[_0x7ddb[899]](_0x9494x4);return _0x9494x4},paste:function(_0x9494x2){if(null!= mxClipboard[_0x7ddb[895]]){var _0x9494x3=_0x9494x2[_0x7ddb[900]](mxClipboard[_0x7ddb[895]]),_0x9494x4=mxClipboard[_0x7ddb[896]]* mxClipboard[_0x7ddb[901]],_0x9494x5=_0x9494x2[_0x7ddb[902]](),_0x9494x3=_0x9494x2[_0x7ddb[903]](_0x9494x3,_0x9494x4,_0x9494x4,_0x9494x5);mxClipboard[_0x7ddb[896]]++;_0x9494x2[_0x7ddb[904]](_0x9494x3)}}};function mxWindow(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13,_0x9494x14,_0x9494x15){null!= _0x9494x3&& (_0x9494x12= null!= _0x9494x12?_0x9494x12:!0,this[_0x7ddb[905]]= _0x9494x3,this[_0x7ddb[176]](_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x15),this[_0x7ddb[906]](),this[_0x7ddb[907]](),this[_0x7ddb[908]](),this[_0x7ddb[909]](_0x9494x12),this[_0x7ddb[910]](_0x9494x2),(null== _0x9494x13|| _0x9494x13)&& this[_0x7ddb[911]](),null!= _0x9494x14&& null!= _0x9494x14[_0x7ddb[265]]?_0x9494x14[_0x7ddb[265]][_0x7ddb[912]](this[_0x7ddb[485]],_0x9494x14):document[_0x7ddb[112]][_0x7ddb[62]](this[_0x7ddb[485]]))}mxWindow[_0x7ddb[202]]= new mxEventSource;mxWindow[_0x7ddb[202]][_0x7ddb[196]]= mxWindow;mxWindow[_0x7ddb[202]][_0x7ddb[913]]= mxClient[_0x7ddb[88]]+ _0x7ddb[914];mxWindow[_0x7ddb[202]][_0x7ddb[915]]= mxClient[_0x7ddb[88]]+ _0x7ddb[916];mxWindow[_0x7ddb[202]][_0x7ddb[917]]= mxClient[_0x7ddb[88]]+ _0x7ddb[918];mxWindow[_0x7ddb[202]][_0x7ddb[919]]= mxClient[_0x7ddb[88]]+ _0x7ddb[920];mxWindow[_0x7ddb[202]][_0x7ddb[921]]= mxClient[_0x7ddb[88]]+ _0x7ddb[922];mxWindow[_0x7ddb[202]][_0x7ddb[189]]= !1;mxWindow[_0x7ddb[202]][_0x7ddb[905]]= !1;mxWindow[_0x7ddb[202]][_0x7ddb[923]]= new mxRectangle(0,0,50,40);mxWindow[_0x7ddb[202]][_0x7ddb[924]]= !1;mxWindow[_0x7ddb[202]][_0x7ddb[905]]= !1;mxWindow[_0x7ddb[202]][_0x7ddb[165]]= !0;mxWindow[_0x7ddb[202]][_0x7ddb[176]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x9494x9= null!= _0x9494x9?_0x9494x9:_0x7ddb[925];this[_0x7ddb[485]]= document[_0x7ddb[55]](_0x7ddb[485]);this[_0x7ddb[485]][_0x7ddb[926]]= _0x9494x9;this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[361]]= _0x9494x2+ _0x7ddb[168];this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[125]]= _0x9494x3+ _0x7ddb[168];this[_0x7ddb[116]]= document[_0x7ddb[55]](_0x7ddb[116]);this[_0x7ddb[116]][_0x7ddb[926]]= _0x9494x9;null!= _0x9494x4&& (mxClient[_0x7ddb[80]]|| (this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[117]]= _0x9494x4+ _0x7ddb[168]),this[_0x7ddb[116]][_0x7ddb[124]][_0x7ddb[117]]= _0x9494x4+ _0x7ddb[168]);null!= _0x9494x5&& (mxClient[_0x7ddb[80]]|| (this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[119]]= _0x9494x5+ _0x7ddb[168]),this[_0x7ddb[116]][_0x7ddb[124]][_0x7ddb[119]]= _0x9494x5+ _0x7ddb[168]);_0x9494x2= document[_0x7ddb[55]](_0x7ddb[120]);_0x9494x3= document[_0x7ddb[55]](_0x7ddb[121]);this[_0x7ddb[924]]= document[_0x7ddb[55]](_0x7ddb[122]);this[_0x7ddb[924]][_0x7ddb[926]]= _0x9494x9+ _0x7ddb[927];_0x9494x3[_0x7ddb[62]](this[_0x7ddb[924]]);_0x9494x2[_0x7ddb[62]](_0x9494x3);_0x9494x3= document[_0x7ddb[55]](_0x7ddb[121]);this[_0x7ddb[122]]= document[_0x7ddb[55]](_0x7ddb[122]);this[_0x7ddb[122]][_0x7ddb[926]]= _0x9494x9+ _0x7ddb[928];this[_0x7ddb[929]]= document[_0x7ddb[55]](_0x7ddb[485]);this[_0x7ddb[929]][_0x7ddb[926]]= _0x9494x9+ _0x7ddb[928];this[_0x7ddb[929]][_0x7ddb[124]][_0x7ddb[117]]= _0x7ddb[118];this[_0x7ddb[929]][_0x7ddb[62]](this[_0x7ddb[905]]);if(mxClient[_0x7ddb[80]]|| _0x7ddb[529]!= this[_0x7ddb[905]][_0x7ddb[301]][_0x7ddb[36]]()){this[_0x7ddb[929]][_0x7ddb[124]][_0x7ddb[119]]= _0x7ddb[118]};this[_0x7ddb[122]][_0x7ddb[62]](this[_0x7ddb[929]]);_0x9494x3[_0x7ddb[62]](this[_0x7ddb[122]]);_0x9494x2[_0x7ddb[62]](_0x9494x3);this[_0x7ddb[116]][_0x7ddb[62]](_0x9494x2);this[_0x7ddb[485]][_0x7ddb[62]](this[_0x7ddb[116]]);_0x9494x9= mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[790]]()});mxEvent[_0x7ddb[169]](this[_0x7ddb[924]],_0x7ddb[751],_0x9494x9);mxEvent[_0x7ddb[169]](this[_0x7ddb[116]],_0x7ddb[751],_0x9494x9);mxClient[_0x7ddb[754]]&& (mxEvent[_0x7ddb[169]](this[_0x7ddb[924]],_0x7ddb[755],_0x9494x9),mxEvent[_0x7ddb[169]](this[_0x7ddb[116]],_0x7ddb[755],_0x9494x9));this[_0x7ddb[801]]()};mxWindow[_0x7ddb[202]][_0x7ddb[910]]= function(_0x9494x2){for(var _0x9494x3=this[_0x7ddb[924]][_0x7ddb[285]];null!= _0x9494x3;){var _0x9494x4=_0x9494x3[_0x7ddb[287]];_0x9494x3[_0x7ddb[288]]== mxConstants[_0x7ddb[317]]&& _0x9494x3[_0x7ddb[265]][_0x7ddb[266]](_0x9494x3);_0x9494x3= _0x9494x4};mxUtils[_0x7ddb[53]](this[_0x7ddb[924]],_0x9494x2|| _0x7ddb[110])};mxWindow[_0x7ddb[202]][_0x7ddb[162]]= function(_0x9494x2){0> navigator[_0x7ddb[3]][_0x7ddb[2]](_0x7ddb[186])&& (this[_0x7ddb[929]][_0x7ddb[124]][_0x7ddb[277]]= _0x9494x2?_0x7ddb[278]:_0x7ddb[188])};mxWindow[_0x7ddb[202]][_0x7ddb[790]]= function(){if(mxWindow[_0x7ddb[930]]!= this){var _0x9494x2=mxUtils[_0x7ddb[275]](this[_0x7ddb[166]]()),_0x9494x2=null!= _0x9494x2?_0x9494x2[_0x7ddb[931]]:3;if(mxWindow[_0x7ddb[930]]){var _0x9494x3=mxWindow[_0x7ddb[930]][_0x7ddb[166]]();null!= _0x9494x3&& null!= _0x9494x3[_0x7ddb[124]]&& (_0x9494x3[_0x7ddb[124]][_0x7ddb[931]]= _0x9494x2)};_0x9494x3= mxWindow[_0x7ddb[930]];this[_0x7ddb[166]]()[_0x7ddb[124]][_0x7ddb[931]]= parseInt(_0x9494x2)+ 1;mxWindow[_0x7ddb[930]]= this;this[_0x7ddb[746]]( new mxEventObject(mxEvent.ACTIVATE,_0x7ddb[932],_0x9494x3))}};mxWindow[_0x7ddb[202]][_0x7ddb[166]]= function(){return this[_0x7ddb[485]]};mxWindow[_0x7ddb[202]][_0x7ddb[933]]= function(){mxUtils[_0x7ddb[933]](this[_0x7ddb[485]])};mxWindow[_0x7ddb[202]][_0x7ddb[934]]= function(){return null!= this[_0x7ddb[129]]?_0x7ddb[130]!= this[_0x7ddb[129]][_0x7ddb[124]][_0x7ddb[495]]:!1};mxWindow[_0x7ddb[202]][_0x7ddb[163]]= function(_0x9494x2){_0x9494x2?null== this[_0x7ddb[129]]?(this[_0x7ddb[129]]= document[_0x7ddb[55]](_0x7ddb[466]),this[_0x7ddb[129]][_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[492],this[_0x7ddb[129]][_0x7ddb[124]][_0x7ddb[553]]= _0x7ddb[935],this[_0x7ddb[129]][_0x7ddb[124]][_0x7ddb[699]]= _0x7ddb[935],this[_0x7ddb[129]][_0x7ddb[57]](_0x7ddb[390],mxClient[_0x7ddb[88]]+ _0x7ddb[922]),this[_0x7ddb[129]][_0x7ddb[124]][_0x7ddb[270]]= _0x7ddb[936],mxEvent[_0x7ddb[759]](this[_0x7ddb[129]],mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[790]]();var _0x9494x4=mxEvent[_0x7ddb[731]](_0x9494x2),_0x9494x5=mxEvent[_0x7ddb[733]](_0x9494x2),_0x9494x9=this[_0x7ddb[485]][_0x7ddb[359]],_0x9494xa=this[_0x7ddb[485]][_0x7ddb[167]],_0x9494x12=mxUtils[_0x7ddb[885]](this,function(_0x9494x2){var _0x9494x3=mxEvent[_0x7ddb[731]](_0x9494x2)- _0x9494x4,_0x9494x12=mxEvent[_0x7ddb[733]](_0x9494x2)- _0x9494x5;this[_0x7ddb[937]](_0x9494x9+ _0x9494x3,_0x9494xa+ _0x9494x12);this[_0x7ddb[746]]( new mxEventObject(mxEvent.RESIZE,_0x7ddb[763],_0x9494x2));mxEvent[_0x7ddb[722]](_0x9494x2)}),_0x9494x13=mxUtils[_0x7ddb[885]](this,function(_0x9494x2){mxEvent[_0x7ddb[938]](document,null,_0x9494x12,_0x9494x13);this[_0x7ddb[746]]( new mxEventObject(mxEvent.RESIZE_END,_0x7ddb[763],_0x9494x2));mxEvent[_0x7ddb[722]](_0x9494x2)});mxEvent[_0x7ddb[759]](document,null,_0x9494x12,_0x9494x13);this[_0x7ddb[746]]( new mxEventObject(mxEvent.RESIZE_START,_0x7ddb[763],_0x9494x2));mxEvent[_0x7ddb[722]](_0x9494x2)}),null,null),this[_0x7ddb[485]][_0x7ddb[62]](this[_0x7ddb[129]])):this[_0x7ddb[129]][_0x7ddb[124]][_0x7ddb[495]]= _0x7ddb[497]:null!= this[_0x7ddb[129]]&& (this[_0x7ddb[129]][_0x7ddb[124]][_0x7ddb[495]]= _0x7ddb[130])};mxWindow[_0x7ddb[202]][_0x7ddb[937]]= function(_0x9494x2,_0x9494x3){_0x9494x2= Math[_0x7ddb[160]](this[_0x7ddb[923]][_0x7ddb[117]],_0x9494x2);_0x9494x3= Math[_0x7ddb[160]](this[_0x7ddb[923]][_0x7ddb[119]],_0x9494x3);mxClient[_0x7ddb[80]]|| (this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[117]]= _0x9494x2+ _0x7ddb[168],this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[119]]= _0x9494x3+ _0x7ddb[168]);this[_0x7ddb[116]][_0x7ddb[124]][_0x7ddb[117]]= _0x9494x2+ _0x7ddb[168];this[_0x7ddb[116]][_0x7ddb[124]][_0x7ddb[119]]= _0x9494x3+ _0x7ddb[168];mxClient[_0x7ddb[80]]|| (this[_0x7ddb[929]][_0x7ddb[124]][_0x7ddb[119]]= this[_0x7ddb[485]][_0x7ddb[167]]- this[_0x7ddb[924]][_0x7ddb[167]]- 2+ _0x7ddb[168])};mxWindow[_0x7ddb[202]][_0x7ddb[909]]= function(_0x9494x2){this[_0x7ddb[798]][_0x7ddb[124]][_0x7ddb[495]]= _0x9494x2?_0x7ddb[110]:_0x7ddb[130]};mxWindow[_0x7ddb[202]][_0x7ddb[939]]= function(){return new mxRectangle(0,0,0,this[_0x7ddb[924]][_0x7ddb[167]])};mxWindow[_0x7ddb[202]][_0x7ddb[907]]= function(){this[_0x7ddb[798]]= document[_0x7ddb[55]](_0x7ddb[466]);this[_0x7ddb[798]][_0x7ddb[57]](_0x7ddb[390],this[_0x7ddb[915]]);this[_0x7ddb[798]][_0x7ddb[57]](_0x7ddb[611],_0x7ddb[699]);this[_0x7ddb[798]][_0x7ddb[57]](_0x7ddb[924],_0x7ddb[940]);this[_0x7ddb[798]][_0x7ddb[124]][_0x7ddb[270]]= _0x7ddb[356];this[_0x7ddb[798]][_0x7ddb[124]][_0x7ddb[941]]= _0x7ddb[942];this[_0x7ddb[798]][_0x7ddb[124]][_0x7ddb[495]]= _0x7ddb[130];this[_0x7ddb[924]][_0x7ddb[62]](this[_0x7ddb[798]]);var _0x9494x2=!1,_0x9494x3=null,_0x9494x4=null,_0x9494x5=mxUtils[_0x7ddb[885]](this,function(_0x9494x5){this[_0x7ddb[790]]();if(_0x9494x2){_0x9494x2= !1,this[_0x7ddb[798]][_0x7ddb[57]](_0x7ddb[390],this[_0x7ddb[915]]),this[_0x7ddb[798]][_0x7ddb[57]](_0x7ddb[924],_0x7ddb[940]),this[_0x7ddb[929]][_0x7ddb[124]][_0x7ddb[495]]= _0x7ddb[110],this[_0x7ddb[800]][_0x7ddb[124]][_0x7ddb[495]]= _0x9494x3,mxClient[_0x7ddb[80]]|| (this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[119]]= _0x9494x4),this[_0x7ddb[116]][_0x7ddb[124]][_0x7ddb[119]]= _0x9494x4,null!= this[_0x7ddb[129]]&& (this[_0x7ddb[129]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[110]),this[_0x7ddb[746]]( new mxEventObject(mxEvent.NORMALIZE,_0x7ddb[763],_0x9494x5))}else {_0x9494x2= !0;this[_0x7ddb[798]][_0x7ddb[57]](_0x7ddb[390],this[_0x7ddb[917]]);this[_0x7ddb[798]][_0x7ddb[57]](_0x7ddb[924],_0x7ddb[943]);this[_0x7ddb[929]][_0x7ddb[124]][_0x7ddb[495]]= _0x7ddb[130];_0x9494x3= this[_0x7ddb[800]][_0x7ddb[124]][_0x7ddb[495]];this[_0x7ddb[800]][_0x7ddb[124]][_0x7ddb[495]]= _0x7ddb[130];_0x9494x4= this[_0x7ddb[116]][_0x7ddb[124]][_0x7ddb[119]];var _0x9494xa=this[_0x7ddb[939]]();0< _0x9494xa[_0x7ddb[119]]&& (mxClient[_0x7ddb[80]]|| (this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[119]]= _0x9494xa[_0x7ddb[119]]+ _0x7ddb[168]),this[_0x7ddb[116]][_0x7ddb[124]][_0x7ddb[119]]= _0x9494xa[_0x7ddb[119]]+ _0x7ddb[168]);0< _0x9494xa[_0x7ddb[117]]&& (mxClient[_0x7ddb[80]]|| (this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[117]]= _0x9494xa[_0x7ddb[117]]+ _0x7ddb[168]),this[_0x7ddb[116]][_0x7ddb[124]][_0x7ddb[117]]= _0x9494xa[_0x7ddb[117]]+ _0x7ddb[168]);null!= this[_0x7ddb[129]]&& (this[_0x7ddb[129]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[188]);this[_0x7ddb[746]]( new mxEventObject(mxEvent.MINIMIZE,_0x7ddb[763],_0x9494x5))};mxEvent[_0x7ddb[722]](_0x9494x5)});mxEvent[_0x7ddb[169]](this[_0x7ddb[798]],_0x7ddb[751],_0x9494x5);mxClient[_0x7ddb[754]]&& mxEvent[_0x7ddb[169]](this[_0x7ddb[798]],_0x7ddb[755],_0x9494x5)};mxWindow[_0x7ddb[202]][_0x7ddb[161]]= function(_0x9494x2){this[_0x7ddb[800]][_0x7ddb[124]][_0x7ddb[495]]= _0x9494x2?_0x7ddb[110]:_0x7ddb[130]};mxWindow[_0x7ddb[202]][_0x7ddb[906]]= function(){this[_0x7ddb[800]]= document[_0x7ddb[55]](_0x7ddb[466]);this[_0x7ddb[800]][_0x7ddb[57]](_0x7ddb[390],this[_0x7ddb[919]]);this[_0x7ddb[800]][_0x7ddb[57]](_0x7ddb[611],_0x7ddb[699]);this[_0x7ddb[800]][_0x7ddb[57]](_0x7ddb[924],_0x7ddb[944]);this[_0x7ddb[800]][_0x7ddb[124]][_0x7ddb[270]]= _0x7ddb[583];this[_0x7ddb[800]][_0x7ddb[124]][_0x7ddb[945]]= _0x7ddb[942];this[_0x7ddb[800]][_0x7ddb[124]][_0x7ddb[270]]= _0x7ddb[356];this[_0x7ddb[800]][_0x7ddb[124]][_0x7ddb[495]]= _0x7ddb[130];this[_0x7ddb[924]][_0x7ddb[62]](this[_0x7ddb[800]]);var _0x9494x2=!1,_0x9494x3=null,_0x9494x4=null,_0x9494x5=null,_0x9494x9=null,_0x9494xa=mxUtils[_0x7ddb[885]](this,function(_0x9494xa){this[_0x7ddb[790]]();if(_0x7ddb[130]!= this[_0x7ddb[800]][_0x7ddb[124]][_0x7ddb[495]]){if(_0x9494x2){_0x9494x2= !1;this[_0x7ddb[800]][_0x7ddb[57]](_0x7ddb[390],this[_0x7ddb[919]]);this[_0x7ddb[800]][_0x7ddb[57]](_0x7ddb[924],_0x7ddb[944]);this[_0x7ddb[929]][_0x7ddb[124]][_0x7ddb[495]]= _0x7ddb[110];this[_0x7ddb[798]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[110];this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[361]]= _0x9494x3+ _0x7ddb[168];this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[125]]= _0x9494x4+ _0x7ddb[168];if(!mxClient[_0x7ddb[80]]&& (this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[119]]= _0x9494x5,this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[117]]= _0x9494x9,_0x9494x13= mxUtils[_0x7ddb[275]](this[_0x7ddb[929]]),_0x7ddb[278]== _0x9494x13[_0x7ddb[277]]|| null!= this[_0x7ddb[129]])){this[_0x7ddb[929]][_0x7ddb[124]][_0x7ddb[119]]= this[_0x7ddb[485]][_0x7ddb[167]]- this[_0x7ddb[924]][_0x7ddb[167]]- 2+ _0x7ddb[168]};this[_0x7ddb[116]][_0x7ddb[124]][_0x7ddb[119]]= _0x9494x5;this[_0x7ddb[116]][_0x7ddb[124]][_0x7ddb[117]]= _0x9494x9;null!= this[_0x7ddb[129]]&& (this[_0x7ddb[129]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[110]);this[_0x7ddb[746]]( new mxEventObject(mxEvent.NORMALIZE,_0x7ddb[763],_0x9494xa))}else {_0x9494x2= !0;this[_0x7ddb[800]][_0x7ddb[57]](_0x7ddb[390],this[_0x7ddb[917]]);this[_0x7ddb[800]][_0x7ddb[57]](_0x7ddb[924],_0x7ddb[943]);this[_0x7ddb[929]][_0x7ddb[124]][_0x7ddb[495]]= _0x7ddb[110];this[_0x7ddb[798]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[188];_0x9494x3= parseInt(this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[361]]);_0x9494x4= parseInt(this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[125]]);_0x9494x5= this[_0x7ddb[116]][_0x7ddb[124]][_0x7ddb[119]];_0x9494x9= this[_0x7ddb[116]][_0x7ddb[124]][_0x7ddb[117]];this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[361]]= _0x7ddb[946];this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[125]]= _0x7ddb[946];mxClient[_0x7ddb[80]]|| (this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[119]]= document[_0x7ddb[112]][_0x7ddb[157]]- 2+ _0x7ddb[168],this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[117]]= document[_0x7ddb[112]][_0x7ddb[159]]- 2+ _0x7ddb[168]);this[_0x7ddb[116]][_0x7ddb[124]][_0x7ddb[117]]= document[_0x7ddb[112]][_0x7ddb[159]]- 2+ _0x7ddb[168];this[_0x7ddb[116]][_0x7ddb[124]][_0x7ddb[119]]= document[_0x7ddb[112]][_0x7ddb[157]]- 2+ _0x7ddb[168];null!= this[_0x7ddb[129]]&& (this[_0x7ddb[129]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[188]);if(!mxClient[_0x7ddb[80]]){var _0x9494x13=mxUtils[_0x7ddb[275]](this[_0x7ddb[929]]);if(_0x7ddb[278]== _0x9494x13[_0x7ddb[277]]|| null!= this[_0x7ddb[129]]){this[_0x7ddb[929]][_0x7ddb[124]][_0x7ddb[119]]= this[_0x7ddb[485]][_0x7ddb[167]]- this[_0x7ddb[924]][_0x7ddb[167]]- 2+ _0x7ddb[168]}};this[_0x7ddb[746]]( new mxEventObject(mxEvent.MAXIMIZE,_0x7ddb[763],_0x9494xa))};mxEvent[_0x7ddb[722]](_0x9494xa)}});mxEvent[_0x7ddb[759]](this[_0x7ddb[800]],_0x9494xa);mxEvent[_0x7ddb[169]](this[_0x7ddb[924]],_0x7ddb[760],_0x9494xa)};mxWindow[_0x7ddb[202]][_0x7ddb[911]]= function(){this[_0x7ddb[924]][_0x7ddb[124]][_0x7ddb[270]]= _0x7ddb[582];mxEvent[_0x7ddb[759]](this[_0x7ddb[924]],mxUtils[_0x7ddb[885]](this,function(_0x9494x2){var _0x9494x3=mxEvent[_0x7ddb[731]](_0x9494x2),_0x9494x4=mxEvent[_0x7ddb[733]](_0x9494x2),_0x9494x5=this[_0x7ddb[730]](),_0x9494x9=this[_0x7ddb[732]](),_0x9494xa=mxUtils[_0x7ddb[885]](this,function(_0x9494x2){var _0x9494xa=mxEvent[_0x7ddb[731]](_0x9494x2)- _0x9494x3,_0x9494x12=mxEvent[_0x7ddb[733]](_0x9494x2)- _0x9494x4;this[_0x7ddb[947]](_0x9494x5+ _0x9494xa,_0x9494x9+ _0x9494x12);this[_0x7ddb[746]]( new mxEventObject(mxEvent.MOVE,_0x7ddb[763],_0x9494x2));mxEvent[_0x7ddb[722]](_0x9494x2)}),_0x9494x12=mxUtils[_0x7ddb[885]](this,function(_0x9494x2){mxEvent[_0x7ddb[938]](document,null,_0x9494xa,_0x9494x12);this[_0x7ddb[746]]( new mxEventObject(mxEvent.MOVE_END,_0x7ddb[763],_0x9494x2));mxEvent[_0x7ddb[722]](_0x9494x2)});mxEvent[_0x7ddb[759]](document,null,_0x9494xa,_0x9494x12);this[_0x7ddb[746]]( new mxEventObject(mxEvent.MOVE_START,_0x7ddb[763],_0x9494x2));mxEvent[_0x7ddb[722]](_0x9494x2)}))};mxWindow[_0x7ddb[202]][_0x7ddb[947]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[361]]= _0x9494x2+ _0x7ddb[168];this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[125]]= _0x9494x3+ _0x7ddb[168]};mxWindow[_0x7ddb[202]][_0x7ddb[730]]= function(){return parseInt(this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[361]])};mxWindow[_0x7ddb[202]][_0x7ddb[732]]= function(){return parseInt(this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[125]])};mxWindow[_0x7ddb[202]][_0x7ddb[908]]= function(){this[_0x7ddb[948]]= document[_0x7ddb[55]](_0x7ddb[466]);this[_0x7ddb[948]][_0x7ddb[57]](_0x7ddb[390],this[_0x7ddb[913]]);this[_0x7ddb[948]][_0x7ddb[57]](_0x7ddb[611],_0x7ddb[699]);this[_0x7ddb[948]][_0x7ddb[57]](_0x7ddb[924],_0x7ddb[949]);this[_0x7ddb[948]][_0x7ddb[124]][_0x7ddb[945]]= _0x7ddb[935];this[_0x7ddb[948]][_0x7ddb[124]][_0x7ddb[270]]= _0x7ddb[356];this[_0x7ddb[948]][_0x7ddb[124]][_0x7ddb[495]]= _0x7ddb[130];this[_0x7ddb[924]][_0x7ddb[950]](this[_0x7ddb[948]],this[_0x7ddb[924]][_0x7ddb[285]]);mxEvent[_0x7ddb[759]](this[_0x7ddb[948]],mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[746]]( new mxEventObject(mxEvent.CLOSE,_0x7ddb[763],_0x9494x2));this[_0x7ddb[165]]?this[_0x7ddb[515]]():this[_0x7ddb[175]](!1);mxEvent[_0x7ddb[722]](_0x9494x2)}))};mxWindow[_0x7ddb[202]][_0x7ddb[951]]= function(_0x9494x2){this[_0x7ddb[618]]= document[_0x7ddb[55]](_0x7ddb[466]);this[_0x7ddb[618]][_0x7ddb[57]](_0x7ddb[390],_0x9494x2);this[_0x7ddb[618]][_0x7ddb[57]](_0x7ddb[611],_0x7ddb[361]);this[_0x7ddb[618]][_0x7ddb[124]][_0x7ddb[941]]= _0x7ddb[952];this[_0x7ddb[618]][_0x7ddb[124]][_0x7ddb[945]]= _0x7ddb[946];this[_0x7ddb[618]][_0x7ddb[124]][_0x7ddb[953]]= _0x7ddb[954];this[_0x7ddb[924]][_0x7ddb[950]](this[_0x7ddb[618]],this[_0x7ddb[924]][_0x7ddb[285]])};mxWindow[_0x7ddb[202]][_0x7ddb[164]]= function(_0x9494x2){this[_0x7ddb[948]][_0x7ddb[124]][_0x7ddb[495]]= _0x9494x2?_0x7ddb[110]:_0x7ddb[130]};mxWindow[_0x7ddb[202]][_0x7ddb[174]]= function(){return null!= this[_0x7ddb[485]]?_0x7ddb[188]!= this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[187]]:!1};mxWindow[_0x7ddb[202]][_0x7ddb[175]]= function(_0x9494x2){null!= this[_0x7ddb[485]]&& this[_0x7ddb[174]]()!= _0x9494x2&& (_0x9494x2?this[_0x7ddb[539]]():this[_0x7ddb[801]]())};mxWindow[_0x7ddb[202]][_0x7ddb[539]]= function(){this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[110];this[_0x7ddb[790]]();var _0x9494x2=mxUtils[_0x7ddb[275]](this[_0x7ddb[929]]);if(!mxClient[_0x7ddb[80]]&& (_0x7ddb[278]== _0x9494x2[_0x7ddb[277]]|| null!= this[_0x7ddb[129]])){this[_0x7ddb[929]][_0x7ddb[124]][_0x7ddb[119]]= this[_0x7ddb[485]][_0x7ddb[167]]- this[_0x7ddb[924]][_0x7ddb[167]]- 2+ _0x7ddb[168]};this[_0x7ddb[746]]( new mxEventObject(mxEvent.SHOW))};mxWindow[_0x7ddb[202]][_0x7ddb[801]]= function(){this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[188];this[_0x7ddb[746]]( new mxEventObject(mxEvent.HIDE))};mxWindow[_0x7ddb[202]][_0x7ddb[515]]= function(){this[_0x7ddb[746]]( new mxEventObject(mxEvent.DESTROY));null!= this[_0x7ddb[485]]&& (mxEvent[_0x7ddb[762]](this[_0x7ddb[485]]),this[_0x7ddb[485]][_0x7ddb[265]][_0x7ddb[266]](this[_0x7ddb[485]]),this[_0x7ddb[485]]= null);this[_0x7ddb[929]]= this[_0x7ddb[905]]= this[_0x7ddb[924]]= null};function mxForm(_0x9494x2){this[_0x7ddb[116]]= document[_0x7ddb[55]](_0x7ddb[116]);this[_0x7ddb[116]][_0x7ddb[926]]= _0x9494x2;this[_0x7ddb[112]]= document[_0x7ddb[55]](_0x7ddb[120]);this[_0x7ddb[116]][_0x7ddb[62]](this[_0x7ddb[112]])}mxForm[_0x7ddb[202]][_0x7ddb[116]]= null;mxForm[_0x7ddb[202]][_0x7ddb[112]]= !1;mxForm[_0x7ddb[202]][_0x7ddb[955]]= function(){return this[_0x7ddb[116]]};mxForm[_0x7ddb[202]][_0x7ddb[956]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=document[_0x7ddb[55]](_0x7ddb[121]),_0x9494x5=document[_0x7ddb[55]](_0x7ddb[122]);_0x9494x4[_0x7ddb[62]](_0x9494x5);var _0x9494x5=document[_0x7ddb[55]](_0x7ddb[122]),_0x9494x9=document[_0x7ddb[55]](_0x7ddb[172]);mxUtils[_0x7ddb[53]](_0x9494x9,mxResources[_0x7ddb[203]](_0x7ddb[957])|| _0x7ddb[958]);_0x9494x5[_0x7ddb[62]](_0x9494x9);mxEvent[_0x7ddb[169]](_0x9494x9,_0x7ddb[173],function(){_0x9494x2()});_0x9494x9= document[_0x7ddb[55]](_0x7ddb[172]);mxUtils[_0x7ddb[53]](_0x9494x9,mxResources[_0x7ddb[203]](_0x7ddb[959])|| _0x7ddb[960]);_0x9494x5[_0x7ddb[62]](_0x9494x9);mxEvent[_0x7ddb[169]](_0x9494x9,_0x7ddb[173],function(){_0x9494x3()});_0x9494x4[_0x7ddb[62]](_0x9494x5);this[_0x7ddb[112]][_0x7ddb[62]](_0x9494x4)};mxForm[_0x7ddb[202]][_0x7ddb[961]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=document[_0x7ddb[55]](_0x7ddb[962]);_0x9494x4[_0x7ddb[57]](_0x7ddb[60],_0x7ddb[963]);_0x9494x4[_0x7ddb[131]]= _0x9494x3;return this[_0x7ddb[964]](_0x9494x2,_0x9494x4)};mxForm[_0x7ddb[202]][_0x7ddb[965]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=document[_0x7ddb[55]](_0x7ddb[962]);_0x9494x4[_0x7ddb[57]](_0x7ddb[60],_0x7ddb[966]);this[_0x7ddb[964]](_0x9494x2,_0x9494x4);_0x9494x3&& (_0x9494x4[_0x7ddb[967]]= !0);return _0x9494x4};mxForm[_0x7ddb[202]][_0x7ddb[968]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=document[_0x7ddb[55]](_0x7ddb[126]);mxClient[_0x7ddb[133]]&& _0x9494x4--;_0x9494x5[_0x7ddb[57]](_0x7ddb[969],_0x9494x4|| 2);_0x9494x5[_0x7ddb[131]]= _0x9494x3;return this[_0x7ddb[964]](_0x9494x2,_0x9494x5)};mxForm[_0x7ddb[202]][_0x7ddb[970]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=document[_0x7ddb[55]](_0x7ddb[804]);null!= _0x9494x4&& _0x9494x5[_0x7ddb[57]](_0x7ddb[803],_0x9494x4);_0x9494x3&& _0x9494x5[_0x7ddb[57]](_0x7ddb[971],_0x7ddb[128]);return this[_0x7ddb[964]](_0x9494x2,_0x9494x5)};mxForm[_0x7ddb[202]][_0x7ddb[972]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){var _0x9494x9=document[_0x7ddb[55]](_0x7ddb[973]);mxUtils[_0x7ddb[171]](_0x9494x9,_0x9494x3);_0x9494x9[_0x7ddb[57]](_0x7ddb[131],_0x9494x4);_0x9494x5&& _0x9494x9[_0x7ddb[57]](_0x7ddb[974],_0x9494x5);_0x9494x2[_0x7ddb[62]](_0x9494x9)};mxForm[_0x7ddb[202]][_0x7ddb[964]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=document[_0x7ddb[55]](_0x7ddb[121]),_0x9494x5=document[_0x7ddb[55]](_0x7ddb[122]);mxUtils[_0x7ddb[53]](_0x9494x5,_0x9494x2);_0x9494x4[_0x7ddb[62]](_0x9494x5);_0x9494x5= document[_0x7ddb[55]](_0x7ddb[122]);_0x9494x5[_0x7ddb[62]](_0x9494x3);_0x9494x4[_0x7ddb[62]](_0x9494x5);this[_0x7ddb[112]][_0x7ddb[62]](_0x9494x4);return _0x9494x3};function mxImage(_0x9494x2,_0x9494x3,_0x9494x4){this[_0x7ddb[390]]= _0x9494x2;this[_0x7ddb[117]]= _0x9494x3;this[_0x7ddb[119]]= _0x9494x4}mxImage[_0x7ddb[202]][_0x7ddb[390]]= null;mxImage[_0x7ddb[202]][_0x7ddb[117]]= null;mxImage[_0x7ddb[202]][_0x7ddb[119]]= null;function mxDivResizer(_0x9494x2,_0x9494x3){if(_0x7ddb[485]== _0x9494x2[_0x7ddb[301]][_0x7ddb[216]]()){null== _0x9494x3&& (_0x9494x3= window);this[_0x7ddb[485]]= _0x9494x2;var _0x9494x4=mxUtils[_0x7ddb[275]](_0x9494x2);null!= _0x9494x4&& (this[_0x7ddb[975]]= _0x7ddb[278]== _0x9494x4[_0x7ddb[117]],this[_0x7ddb[976]]= _0x7ddb[278]== _0x9494x4[_0x7ddb[119]]);mxEvent[_0x7ddb[169]](_0x9494x3,_0x7ddb[129],mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[977]]|| (this[_0x7ddb[977]]= !0,this[_0x7ddb[129]](),this[_0x7ddb[977]]= !1)}));this[_0x7ddb[129]]()}}mxDivResizer[_0x7ddb[202]][_0x7ddb[975]]= !0;mxDivResizer[_0x7ddb[202]][_0x7ddb[976]]= !0;mxDivResizer[_0x7ddb[202]][_0x7ddb[977]]= !1;mxDivResizer[_0x7ddb[202]][_0x7ddb[129]]= function(){var _0x9494x2=this[_0x7ddb[978]](),_0x9494x3=this[_0x7ddb[979]](),_0x9494x4=parseInt(this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[361]]),_0x9494x5=parseInt(this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[699]]),_0x9494x9=parseInt(this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[125]]),_0x9494xa=parseInt(this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[553]]);this[_0x7ddb[975]]&& (!isNaN(_0x9494x4)&& !isNaN(_0x9494x5) && 0<= _0x9494x4 && 0<= _0x9494x5 && 0< _0x9494x2- _0x9494x5- _0x9494x4)&& (this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[117]]= _0x9494x2- _0x9494x5- _0x9494x4+ _0x7ddb[168]);this[_0x7ddb[976]]&& (!isNaN(_0x9494x9)&& !isNaN(_0x9494xa) && 0<= _0x9494x9 && 0<= _0x9494xa && 0< _0x9494x3- _0x9494x9- _0x9494xa)&& (this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[119]]= _0x9494x3- _0x9494x9- _0x9494xa+ _0x7ddb[168])};mxDivResizer[_0x7ddb[202]][_0x7ddb[978]]= function(){return document[_0x7ddb[112]][_0x7ddb[159]]};mxDivResizer[_0x7ddb[202]][_0x7ddb[979]]= function(){return document[_0x7ddb[112]][_0x7ddb[157]]};function mxDragSource(_0x9494x2,_0x9494x3){this[_0x7ddb[980]]= _0x9494x2;this[_0x7ddb[981]]= _0x9494x3;mxEvent[_0x7ddb[759]](_0x9494x2,mxUtils[_0x7ddb[885]](this,this[_0x7ddb[787]]))}mxDragSource[_0x7ddb[202]][_0x7ddb[980]]= null;mxDragSource[_0x7ddb[202]][_0x7ddb[981]]= null;mxDragSource[_0x7ddb[202]][_0x7ddb[559]]= null;mxDragSource[_0x7ddb[202]][_0x7ddb[982]]= null;mxDragSource[_0x7ddb[202]][_0x7ddb[983]]= null;mxDragSource[_0x7ddb[202]][_0x7ddb[984]]= !0;mxDragSource[_0x7ddb[202]][_0x7ddb[985]]= null;mxDragSource[_0x7ddb[202]][_0x7ddb[986]]= null;mxDragSource[_0x7ddb[202]][_0x7ddb[987]]= null;mxDragSource[_0x7ddb[202]][_0x7ddb[988]]= null;mxDragSource[_0x7ddb[202]][_0x7ddb[989]]= null;mxDragSource[_0x7ddb[202]][_0x7ddb[561]]= !0;mxDragSource[_0x7ddb[202]][_0x7ddb[990]]= !0;mxDragSource[_0x7ddb[202]][_0x7ddb[991]]= !0;mxDragSource[_0x7ddb[202]][_0x7ddb[563]]= !0;mxDragSource[_0x7ddb[202]][_0x7ddb[992]]= 100;mxDragSource[_0x7ddb[202]][_0x7ddb[993]]= 70;mxDragSource[_0x7ddb[202]][_0x7ddb[994]]= function(){return this[_0x7ddb[984]]};mxDragSource[_0x7ddb[202]][_0x7ddb[995]]= function(_0x9494x2){this[_0x7ddb[984]]= _0x9494x2};mxDragSource[_0x7ddb[202]][_0x7ddb[996]]= function(){return this[_0x7ddb[990]]};mxDragSource[_0x7ddb[202]][_0x7ddb[562]]= function(_0x9494x2){this[_0x7ddb[990]]= _0x9494x2};mxDragSource[_0x7ddb[202]][_0x7ddb[997]]= function(){return this[_0x7ddb[991]]};mxDragSource[_0x7ddb[202]][_0x7ddb[998]]= function(_0x9494x2){this[_0x7ddb[991]]= _0x9494x2};mxDragSource[_0x7ddb[202]][_0x7ddb[565]]= function(_0x9494x2){return null};mxDragSource[_0x7ddb[202]][_0x7ddb[564]]= function(_0x9494x2,_0x9494x3,_0x9494x4){return _0x9494x2[_0x7ddb[999]](_0x9494x3,_0x9494x4)};mxDragSource[_0x7ddb[202]][_0x7ddb[566]]= function(_0x9494x2){return this[_0x7ddb[980]][_0x7ddb[511]](!0)};mxDragSource[_0x7ddb[202]][_0x7ddb[567]]= function(_0x9494x2){return null};mxDragSource[_0x7ddb[202]][_0x7ddb[787]]= function(_0x9494x2){this[_0x7ddb[984]]&& (!mxEvent[_0x7ddb[721]](_0x9494x2)&& null== this[_0x7ddb[1000]])&& (this[_0x7ddb[1001]](_0x9494x2),this[_0x7ddb[1000]]= mxUtils[_0x7ddb[885]](this,this[_0x7ddb[788]]),this[_0x7ddb[1002]]= mxUtils[_0x7ddb[885]](this,this[_0x7ddb[789]]),mxEvent[_0x7ddb[759]](document,null,this[_0x7ddb[1000]],this[_0x7ddb[1002]]),mxEvent[_0x7ddb[722]](_0x9494x2,!0,!1))};mxDragSource[_0x7ddb[202]][_0x7ddb[1001]]= function(_0x9494x2){this[_0x7ddb[982]]= this[_0x7ddb[566]](_0x9494x2);this[_0x7ddb[982]][_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[492];this[_0x7ddb[982]][_0x7ddb[124]][_0x7ddb[931]]= this[_0x7ddb[992]];mxUtils[_0x7ddb[254]](this[_0x7ddb[982]],this[_0x7ddb[993]])};mxDragSource[_0x7ddb[202]][_0x7ddb[1003]]= function(_0x9494x2){null!= this[_0x7ddb[982]]&& (null!= this[_0x7ddb[982]][_0x7ddb[265]]&& this[_0x7ddb[982]][_0x7ddb[265]][_0x7ddb[266]](this[_0x7ddb[982]]),this[_0x7ddb[982]]= null)};mxDragSource[_0x7ddb[202]][_0x7ddb[1004]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=mxEvent[_0x7ddb[731]](_0x9494x3),_0x9494x5=mxEvent[_0x7ddb[733]](_0x9494x3),_0x9494x9=mxUtils[_0x7ddb[445]](_0x9494x2[_0x7ddb[526]]),_0x9494xa=mxUtils[_0x7ddb[444]]();return _0x9494x4>= _0x9494x9[_0x7ddb[235]]- _0x9494xa[_0x7ddb[235]]&& _0x9494x5>= _0x9494x9[_0x7ddb[236]]- _0x9494xa[_0x7ddb[236]]&& _0x9494x4<= _0x9494x9[_0x7ddb[235]]- _0x9494xa[_0x7ddb[235]]+ _0x9494x2[_0x7ddb[526]][_0x7ddb[359]]&& _0x9494x5<= _0x9494x9[_0x7ddb[236]]- _0x9494xa[_0x7ddb[236]]+ _0x9494x2[_0x7ddb[526]][_0x7ddb[167]]};mxDragSource[_0x7ddb[202]][_0x7ddb[788]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[565]](_0x9494x2);null!= _0x9494x3&& !this[_0x7ddb[1004]](_0x9494x3,_0x9494x2)&& (_0x9494x3= null);_0x9494x3!= this[_0x7ddb[985]]&& (null!= this[_0x7ddb[985]]&& this[_0x7ddb[1005]](this[_0x7ddb[985]]),this[_0x7ddb[985]]= _0x9494x3,null!= this[_0x7ddb[985]]&& this[_0x7ddb[1006]](this[_0x7ddb[985]]));null!= this[_0x7ddb[985]]&& this[_0x7ddb[1007]](this[_0x7ddb[985]],_0x9494x2);if(null!= this[_0x7ddb[982]]&& (null== this[_0x7ddb[983]]|| _0x7ddb[189]!= this[_0x7ddb[983]][_0x7ddb[124]][_0x7ddb[187]])){var _0x9494x3=mxEvent[_0x7ddb[731]](_0x9494x2),_0x9494x4=mxEvent[_0x7ddb[733]](_0x9494x2);null== this[_0x7ddb[982]][_0x7ddb[265]]&& document[_0x7ddb[112]][_0x7ddb[62]](this[_0x7ddb[982]]);this[_0x7ddb[982]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[189];null!= this[_0x7ddb[559]]&& (_0x9494x3+= this[_0x7ddb[559]][_0x7ddb[235]],_0x9494x4+= this[_0x7ddb[559]][_0x7ddb[236]]);_0x9494x3+= document[_0x7ddb[112]][_0x7ddb[360]]|| document[_0x7ddb[158]][_0x7ddb[360]];_0x9494x4+= document[_0x7ddb[112]][_0x7ddb[190]]|| document[_0x7ddb[158]][_0x7ddb[190]];this[_0x7ddb[982]][_0x7ddb[124]][_0x7ddb[361]]= _0x9494x3+ _0x7ddb[168];this[_0x7ddb[982]][_0x7ddb[124]][_0x7ddb[125]]= _0x9494x4+ _0x7ddb[168]}else {null!= this[_0x7ddb[982]]&& (this[_0x7ddb[982]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[188])};mxEvent[_0x7ddb[722]](_0x9494x2)};mxDragSource[_0x7ddb[202]][_0x7ddb[789]]= function(_0x9494x2){if(null!= this[_0x7ddb[985]]){if(null!= this[_0x7ddb[987]]&& (null== this[_0x7ddb[983]]|| _0x7ddb[188]!= this[_0x7ddb[983]][_0x7ddb[124]][_0x7ddb[187]])){var _0x9494x3=this[_0x7ddb[985]][_0x7ddb[441]][_0x7ddb[255]],_0x9494x4=this[_0x7ddb[985]][_0x7ddb[441]][_0x7ddb[513]];this[_0x7ddb[1008]](this[_0x7ddb[985]],_0x9494x2,this[_0x7ddb[986]],this[_0x7ddb[987]][_0x7ddb[235]]/ _0x9494x3- _0x9494x4[_0x7ddb[235]],this[_0x7ddb[987]][_0x7ddb[236]]/ _0x9494x3- _0x9494x4[_0x7ddb[236]])};this[_0x7ddb[1005]](this[_0x7ddb[985]])};this[_0x7ddb[1003]](_0x9494x2);mxEvent[_0x7ddb[938]](document,null,this[_0x7ddb[1000]],this[_0x7ddb[1002]]);this[_0x7ddb[985]]= this[_0x7ddb[1002]]= this[_0x7ddb[1000]]= null;mxEvent[_0x7ddb[722]](_0x9494x2)};mxDragSource[_0x7ddb[202]][_0x7ddb[1006]]= function(_0x9494x2){_0x9494x2[_0x7ddb[1009]]= !0;this[_0x7ddb[983]]= this[_0x7ddb[567]](_0x9494x2);this[_0x7ddb[996]]()&& null!= this[_0x7ddb[983]]&& (this[_0x7ddb[988]]= new mxGuide(_0x9494x2,_0x9494x2[_0x7ddb[1011]][_0x7ddb[1010]]()));this[_0x7ddb[563]]&& (this[_0x7ddb[989]]= new mxCellHighlight(_0x9494x2,mxConstants.DROP_TARGET_COLOR))};mxDragSource[_0x7ddb[202]][_0x7ddb[1005]]= function(_0x9494x2){this[_0x7ddb[987]]= this[_0x7ddb[986]]= null;_0x9494x2[_0x7ddb[1009]]= !1;null!= this[_0x7ddb[983]]&& (null!= this[_0x7ddb[983]][_0x7ddb[265]]&& this[_0x7ddb[983]][_0x7ddb[265]][_0x7ddb[266]](this[_0x7ddb[983]]),this[_0x7ddb[983]]= null);null!= this[_0x7ddb[988]]&& (this[_0x7ddb[988]][_0x7ddb[515]](),this[_0x7ddb[988]]= null);null!= this[_0x7ddb[989]]&& (this[_0x7ddb[989]][_0x7ddb[515]](),this[_0x7ddb[989]]= null)};mxDragSource[_0x7ddb[202]][_0x7ddb[1007]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=mxUtils[_0x7ddb[445]](_0x9494x2[_0x7ddb[526]]),_0x9494x5=mxUtils[_0x7ddb[444]](_0x9494x2[_0x7ddb[526]]),_0x9494x9=mxEvent[_0x7ddb[731]](_0x9494x3)- _0x9494x4[_0x7ddb[235]]+ _0x9494x5[_0x7ddb[235]],_0x9494x4=mxEvent[_0x7ddb[733]](_0x9494x3)- _0x9494x4[_0x7ddb[236]]+ _0x9494x5[_0x7ddb[236]];_0x9494x2[_0x7ddb[1012]]&& (null== this[_0x7ddb[561]]|| this[_0x7ddb[561]])&& _0x9494x2[_0x7ddb[1014]](_0x9494x9,_0x9494x4,_0x9494x2[_0x7ddb[1013]]);null!= this[_0x7ddb[989]]&& _0x9494x2[_0x7ddb[1015]]()&& (this[_0x7ddb[986]]= this[_0x7ddb[564]](_0x9494x2,_0x9494x9,_0x9494x4),_0x9494x5= _0x9494x2[_0x7ddb[249]]()[_0x7ddb[248]](this[_0x7ddb[986]]),this[_0x7ddb[989]][_0x7ddb[1016]](_0x9494x5));if(null!= this[_0x7ddb[983]]){null== this[_0x7ddb[983]][_0x7ddb[265]]&& (_0x9494x2[_0x7ddb[526]][_0x7ddb[62]](this[_0x7ddb[983]]),this[_0x7ddb[983]][_0x7ddb[124]][_0x7ddb[931]]= _0x7ddb[1017],this[_0x7ddb[983]][_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[492]);var _0x9494x5=this[_0x7ddb[997]]()&& _0x9494x2[_0x7ddb[1018]](_0x9494x3),_0x9494xa=!0;if(null!= this[_0x7ddb[988]]&& this[_0x7ddb[988]][_0x7ddb[1019]](_0x9494x3)){var _0x9494xa=parseInt(this[_0x7ddb[983]][_0x7ddb[124]][_0x7ddb[117]]),_0x9494x12=parseInt(this[_0x7ddb[983]][_0x7ddb[124]][_0x7ddb[119]]),_0x9494xa= new mxRectangle(0,0,_0x9494xa,_0x9494x12),_0x9494x4= new mxPoint(_0x9494x9,_0x9494x4),_0x9494x4=this[_0x7ddb[988]][_0x7ddb[582]](_0x9494xa,_0x9494x4,_0x9494x5),_0x9494xa=!1,_0x9494x9=_0x9494x4[_0x7ddb[235]],_0x9494x4=_0x9494x4[_0x7ddb[236]]}else {if(_0x9494x5){var _0x9494x5=_0x9494x2[_0x7ddb[441]][_0x7ddb[255]],_0x9494x12=_0x9494x2[_0x7ddb[441]][_0x7ddb[513]],_0x9494x13=_0x9494x2[_0x7ddb[1020]]/ 2,_0x9494x9=(_0x9494x2[_0x7ddb[1021]](_0x9494x9/ _0x9494x5- _0x9494x12[_0x7ddb[235]]- _0x9494x13)+ _0x9494x12[_0x7ddb[235]])* _0x9494x5,_0x9494x4=(_0x9494x2[_0x7ddb[1021]](_0x9494x4/ _0x9494x5- _0x9494x12[_0x7ddb[236]]- _0x9494x13)+ _0x9494x12[_0x7ddb[236]])* _0x9494x5}};null!= this[_0x7ddb[988]]&& _0x9494xa&& this[_0x7ddb[988]][_0x7ddb[801]]();null!= this[_0x7ddb[1022]]&& (_0x9494x9+= this[_0x7ddb[1022]][_0x7ddb[235]],_0x9494x4+= this[_0x7ddb[1022]][_0x7ddb[236]]);this[_0x7ddb[983]][_0x7ddb[124]][_0x7ddb[361]]= Math[_0x7ddb[488]](_0x9494x9)+ _0x7ddb[168];this[_0x7ddb[983]][_0x7ddb[124]][_0x7ddb[125]]= Math[_0x7ddb[488]](_0x9494x4)+ _0x7ddb[168];this[_0x7ddb[983]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[189]};this[_0x7ddb[987]]= new mxPoint(_0x9494x9,_0x9494x4)};mxDragSource[_0x7ddb[202]][_0x7ddb[1008]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){this[_0x7ddb[981]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9);_0x9494x2[_0x7ddb[526]][_0x7ddb[393]]()};function mxToolbar(_0x9494x2){this[_0x7ddb[526]]= _0x9494x2}mxToolbar[_0x7ddb[202]]= new mxEventSource;mxToolbar[_0x7ddb[202]][_0x7ddb[196]]= mxToolbar;mxToolbar[_0x7ddb[202]][_0x7ddb[526]]= null;mxToolbar[_0x7ddb[202]][_0x7ddb[984]]= !0;mxToolbar[_0x7ddb[202]][_0x7ddb[1023]]= !1;mxToolbar[_0x7ddb[202]][_0x7ddb[1024]]= !0;mxToolbar[_0x7ddb[202]][_0x7ddb[1025]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){var _0x9494x12=document[_0x7ddb[55]](null!= _0x9494x3?_0x7ddb[466]:_0x7ddb[172]),_0x9494x13=_0x9494x9|| (null!= _0x9494xa?_0x7ddb[1026]:_0x7ddb[1027]);_0x9494x12[_0x7ddb[926]]= _0x9494x13;_0x9494x12[_0x7ddb[57]](_0x7ddb[390],_0x9494x3);null!= _0x9494x2&& (null!= _0x9494x3?_0x9494x12[_0x7ddb[57]](_0x7ddb[924],_0x9494x2):mxUtils[_0x7ddb[53]](_0x9494x12,_0x9494x2));this[_0x7ddb[526]][_0x7ddb[62]](_0x9494x12);null!= _0x9494x4&& (mxEvent[_0x7ddb[169]](_0x9494x12,_0x7ddb[173],_0x9494x4),mxClient[_0x7ddb[754]]&& mxEvent[_0x7ddb[169]](_0x9494x12,_0x7ddb[757],_0x9494x4));_0x9494x2= mxUtils[_0x7ddb[885]](this,function(_0x9494x2){null!= _0x9494x5?_0x9494x12[_0x7ddb[57]](_0x7ddb[390],_0x9494x3):_0x9494x12[_0x7ddb[124]][_0x7ddb[1028]]= _0x7ddb[110]});mxEvent[_0x7ddb[759]](_0x9494x12,mxUtils[_0x7ddb[885]](this,function(_0x9494x2){null!= _0x9494x5?_0x9494x12[_0x7ddb[57]](_0x7ddb[390],_0x9494x5):_0x9494x12[_0x7ddb[124]][_0x7ddb[1028]]= _0x7ddb[579];if(null!= _0x9494xa){null== this[_0x7ddb[1029]]&& (this[_0x7ddb[1029]]= new mxPopupMenu,this[_0x7ddb[1029]][_0x7ddb[176]]());var _0x9494x3=this[_0x7ddb[1030]];this[_0x7ddb[1029]][_0x7ddb[1031]]()&& this[_0x7ddb[1029]][_0x7ddb[1032]]();_0x9494x3!= _0x9494x12&& (this[_0x7ddb[1030]]= _0x9494x12,this[_0x7ddb[1029]][_0x7ddb[1033]]= _0x9494xa,_0x9494x3= new mxPoint(_0x9494x12[_0x7ddb[358]],_0x9494x12[_0x7ddb[362]]+ _0x9494x12[_0x7ddb[167]]),this[_0x7ddb[1029]][_0x7ddb[152]](_0x9494x3[_0x7ddb[235]],_0x9494x3[_0x7ddb[236]],null,_0x9494x2),this[_0x7ddb[1029]][_0x7ddb[1031]]()&& (_0x9494x12[_0x7ddb[926]]= _0x9494x13+ _0x7ddb[1034],this[_0x7ddb[1029]][_0x7ddb[1032]]= function(){mxPopupMenu[_0x7ddb[202]][_0x7ddb[1032]][_0x7ddb[183]](this);_0x9494x12[_0x7ddb[926]]= _0x9494x13;this[_0x7ddb[1030]]= null}))}}),null,_0x9494x2);mxEvent[_0x7ddb[169]](_0x9494x12,_0x7ddb[1035],_0x9494x2);return _0x9494x12};mxToolbar[_0x7ddb[202]][_0x7ddb[970]]= function(_0x9494x2){var _0x9494x3=document[_0x7ddb[55]](_0x7ddb[485]);_0x9494x3[_0x7ddb[124]][_0x7ddb[495]]= _0x7ddb[497];_0x9494x3[_0x7ddb[926]]= _0x7ddb[1036];var _0x9494x4=document[_0x7ddb[55]](_0x7ddb[804]);_0x9494x4[_0x7ddb[926]]= _0x9494x2|| _0x7ddb[1037];_0x9494x3[_0x7ddb[62]](_0x9494x4);this[_0x7ddb[526]][_0x7ddb[62]](_0x9494x3);return _0x9494x4};mxToolbar[_0x7ddb[202]][_0x7ddb[1038]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=document[_0x7ddb[55]](_0x7ddb[804]);_0x9494x4[_0x7ddb[926]]= _0x9494x3|| _0x7ddb[1037];this[_0x7ddb[972]](_0x9494x4,_0x9494x2,null);mxEvent[_0x7ddb[169]](_0x9494x4,_0x7ddb[826],function(_0x9494x2){var _0x9494x3=_0x9494x4[_0x7ddb[1040]][_0x9494x4[_0x7ddb[1039]]];_0x9494x4[_0x7ddb[1039]]= 0;null!= _0x9494x3[_0x7ddb[1041]]&& _0x9494x3[_0x7ddb[1041]](_0x9494x2)});this[_0x7ddb[526]][_0x7ddb[62]](_0x9494x4);return _0x9494x4};mxToolbar[_0x7ddb[202]][_0x7ddb[972]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=document[_0x7ddb[55]](_0x7ddb[973]);mxUtils[_0x7ddb[171]](_0x9494x5,_0x9494x3);_0x7ddb[279]== typeof _0x9494x4?_0x9494x5[_0x7ddb[1041]]= _0x9494x4:_0x9494x5[_0x7ddb[57]](_0x7ddb[131],_0x9494x4);_0x9494x2[_0x7ddb[62]](_0x9494x5);return _0x9494x5};mxToolbar[_0x7ddb[202]][_0x7ddb[1042]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){var _0x9494xa=document[_0x7ddb[55]](_0x7ddb[466]);_0x9494xa[_0x7ddb[1043]]= _0x9494x9|| _0x7ddb[1026];_0x9494xa[_0x7ddb[926]]= _0x9494xa[_0x7ddb[1043]];_0x9494xa[_0x7ddb[57]](_0x7ddb[390],_0x9494x3);_0x9494xa[_0x7ddb[1044]]= _0x9494x5;null!= _0x9494x2&& _0x9494xa[_0x7ddb[57]](_0x7ddb[924],_0x9494x2);mxEvent[_0x7ddb[169]](_0x9494xa,_0x7ddb[173],mxUtils[_0x7ddb[885]](this,function(_0x9494x2){_0x9494x2= this[_0x7ddb[1045]][_0x7ddb[1044]];null!= _0x9494x2?(this[_0x7ddb[1045]][_0x7ddb[1044]]= this[_0x7ddb[1045]][_0x7ddb[284]](_0x7ddb[390]),this[_0x7ddb[1045]][_0x7ddb[57]](_0x7ddb[390],_0x9494x2)):this[_0x7ddb[1045]][_0x7ddb[926]]= this[_0x7ddb[1045]][_0x7ddb[1043]];this[_0x7ddb[1024]]&& (this[_0x7ddb[1046]]= _0x9494xa);this[_0x7ddb[1045]]= _0x9494xa;_0x9494x2= _0x9494xa[_0x7ddb[1044]];null!= _0x9494x2?(_0x9494xa[_0x7ddb[1044]]= _0x9494xa[_0x7ddb[284]](_0x7ddb[390]),_0x9494xa[_0x7ddb[57]](_0x7ddb[390],_0x9494x2)):_0x9494xa[_0x7ddb[926]]= _0x9494xa[_0x7ddb[1043]]+ _0x7ddb[1034];this[_0x7ddb[746]]( new mxEventObject(mxEvent.SELECT));_0x9494x4()}));this[_0x7ddb[526]][_0x7ddb[62]](_0x9494xa);null== this[_0x7ddb[1046]]&& (this[_0x7ddb[1046]]= _0x9494xa,this[_0x7ddb[1047]](_0x9494xa),_0x9494x4());return _0x9494xa};mxToolbar[_0x7ddb[202]][_0x7ddb[1048]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){_0x9494xa= null!= _0x9494xa?_0x9494xa:!0;var _0x9494x12=document[_0x7ddb[55]](null!= _0x9494x3?_0x7ddb[466]:_0x7ddb[172]);_0x9494x12[_0x7ddb[1043]]= _0x9494x9|| _0x7ddb[1026];_0x9494x12[_0x7ddb[926]]= _0x9494x12[_0x7ddb[1043]];_0x9494x12[_0x7ddb[57]](_0x7ddb[390],_0x9494x3);_0x9494x12[_0x7ddb[1044]]= _0x9494x5;null!= _0x9494x2&& _0x9494x12[_0x7ddb[57]](_0x7ddb[924],_0x9494x2);this[_0x7ddb[984]]&& _0x9494xa&& (mxEvent[_0x7ddb[169]](_0x9494x12,_0x7ddb[173],mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[1047]](_0x9494x12,_0x9494x4);this[_0x7ddb[1023]]= !1})),mxEvent[_0x7ddb[169]](_0x9494x12,_0x7ddb[760],mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[1047]](_0x9494x12,_0x9494x4);this[_0x7ddb[1023]]= !0})),null== this[_0x7ddb[1046]]&& (this[_0x7ddb[1046]]= _0x9494x12,this[_0x7ddb[1049]]= _0x9494x4,this[_0x7ddb[1047]](_0x9494x12,_0x9494x4)));this[_0x7ddb[526]][_0x7ddb[62]](_0x9494x12);return _0x9494x12};mxToolbar[_0x7ddb[202]][_0x7ddb[1047]]= function(_0x9494x2,_0x9494x3){if(this[_0x7ddb[1045]]!= _0x9494x2){if(null!= this[_0x7ddb[1045]]){var _0x9494x4=this[_0x7ddb[1045]][_0x7ddb[1044]];null!= _0x9494x4?(this[_0x7ddb[1045]][_0x7ddb[1044]]= this[_0x7ddb[1045]][_0x7ddb[284]](_0x7ddb[390]),this[_0x7ddb[1045]][_0x7ddb[57]](_0x7ddb[390],_0x9494x4)):this[_0x7ddb[1045]][_0x7ddb[926]]= this[_0x7ddb[1045]][_0x7ddb[1043]]};this[_0x7ddb[1045]]= _0x9494x2;_0x9494x4= this[_0x7ddb[1045]][_0x7ddb[1044]];null!= _0x9494x4?(this[_0x7ddb[1045]][_0x7ddb[1044]]= this[_0x7ddb[1045]][_0x7ddb[284]](_0x7ddb[390]),this[_0x7ddb[1045]][_0x7ddb[57]](_0x7ddb[390],_0x9494x4)):this[_0x7ddb[1045]][_0x7ddb[926]]= this[_0x7ddb[1045]][_0x7ddb[1043]]+ _0x7ddb[1034];this[_0x7ddb[746]]( new mxEventObject(mxEvent.SELECT,_0x7ddb[279],_0x9494x3))}};mxToolbar[_0x7ddb[202]][_0x7ddb[1050]]= function(_0x9494x2){(_0x9494x2|| !this[_0x7ddb[1023]])&& this[_0x7ddb[1045]]!= this[_0x7ddb[1046]]&& this[_0x7ddb[1047]](this[_0x7ddb[1046]],this[_0x7ddb[1049]])};mxToolbar[_0x7ddb[202]][_0x7ddb[1051]]= function(_0x9494x2){return this[_0x7ddb[1025]](null,_0x9494x2,null)};mxToolbar[_0x7ddb[202]][_0x7ddb[1052]]= function(){mxUtils[_0x7ddb[345]](this[_0x7ddb[526]])};mxToolbar[_0x7ddb[202]][_0x7ddb[1053]]= function(){var _0x9494x2=document[_0x7ddb[55]](_0x7ddb[1054]);_0x9494x2[_0x7ddb[124]][_0x7ddb[941]]= _0x7ddb[1055];_0x9494x2[_0x7ddb[57]](_0x7ddb[803],_0x7ddb[500]);this[_0x7ddb[526]][_0x7ddb[62]](_0x9494x2)};mxToolbar[_0x7ddb[202]][_0x7ddb[515]]= function(){mxEvent[_0x7ddb[762]](this[_0x7ddb[526]]);this[_0x7ddb[1045]]= this[_0x7ddb[1049]]= this[_0x7ddb[1046]]= this[_0x7ddb[526]]= null;null!= this[_0x7ddb[1029]]&& this[_0x7ddb[1029]][_0x7ddb[515]]()};function mxSession(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){this[_0x7ddb[251]]= _0x9494x2;this[_0x7ddb[1056]]= _0x9494x3;this[_0x7ddb[1057]]= _0x9494x4;this[_0x7ddb[1058]]= _0x9494x5;null!= _0x9494x2&& (this[_0x7ddb[1059]]= new mxCodec,this[_0x7ddb[1059]][_0x7ddb[1060]]= function(_0x9494x3){return _0x9494x2[_0x7ddb[736]](_0x9494x3)});_0x9494x2[_0x7ddb[169]](mxEvent.NOTIFY,mxUtils[_0x7ddb[885]](this,function(_0x9494x2,_0x9494x3){var _0x9494x4=_0x9494x3[_0x7ddb[720]](_0x7ddb[1061]);(null!= _0x9494x4&& this[_0x7ddb[143]]|| this[_0x7ddb[1062]]&& !this[_0x7ddb[1063]])&& this[_0x7ddb[827]](_0x7ddb[1064]+ this[_0x7ddb[1067]](_0x9494x4[_0x7ddb[1065]],_0x9494x4[_0x7ddb[1066]])+ _0x7ddb[1068])}))}mxSession[_0x7ddb[202]]= new mxEventSource;mxSession[_0x7ddb[202]][_0x7ddb[196]]= mxSession;mxSession[_0x7ddb[202]][_0x7ddb[251]]= null;mxSession[_0x7ddb[202]][_0x7ddb[1056]]= null;mxSession[_0x7ddb[202]][_0x7ddb[1057]]= null;mxSession[_0x7ddb[202]][_0x7ddb[1058]]= null;mxSession[_0x7ddb[202]][_0x7ddb[1059]]= null;mxSession[_0x7ddb[202]][_0x7ddb[1069]]= _0x7ddb[336];mxSession[_0x7ddb[202]][_0x7ddb[1070]]= !0;mxSession[_0x7ddb[202]][_0x7ddb[1071]]= !0;mxSession[_0x7ddb[202]][_0x7ddb[1072]]= 0;mxSession[_0x7ddb[202]][_0x7ddb[1073]]= 0;mxSession[_0x7ddb[202]][_0x7ddb[143]]= !1;mxSession[_0x7ddb[202]][_0x7ddb[1062]]= !1;mxSession[_0x7ddb[202]][_0x7ddb[1063]]= !1;mxSession[_0x7ddb[202]][_0x7ddb[1074]]= !1;mxSession[_0x7ddb[202]][_0x7ddb[861]]= function(){this[_0x7ddb[143]]?(this[_0x7ddb[1062]]= !0,this[_0x7ddb[746]]( new mxEventObject(mxEvent.CONNECT))):this[_0x7ddb[1062]]|| this[_0x7ddb[203]](this[_0x7ddb[1056]],mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[1062]]= !0;this[_0x7ddb[746]]( new mxEventObject(mxEvent.CONNECT));this[_0x7ddb[1075]]()}))};mxSession[_0x7ddb[202]][_0x7ddb[809]]= function(){this[_0x7ddb[1062]]&& !this[_0x7ddb[1063]]&& (this[_0x7ddb[1063]]= !0,this[_0x7ddb[746]]( new mxEventObject(mxEvent.SUSPEND)))};mxSession[_0x7ddb[202]][_0x7ddb[810]]= function(_0x9494x2,_0x9494x3,_0x9494x4){this[_0x7ddb[1062]]&& this[_0x7ddb[1063]]&& (this[_0x7ddb[1063]]= !1,this[_0x7ddb[746]]( new mxEventObject(mxEvent.RESUME)),this[_0x7ddb[1074]]|| this[_0x7ddb[1075]]())};mxSession[_0x7ddb[202]][_0x7ddb[1076]]= function(_0x9494x2){this[_0x7ddb[1062]]&& (this[_0x7ddb[1062]]= !1);this[_0x7ddb[746]]( new mxEventObject(mxEvent.DISCONNECT,_0x7ddb[1077],_0x9494x2))};mxSession[_0x7ddb[202]][_0x7ddb[1075]]= function(){this[_0x7ddb[1062]]&& !this[_0x7ddb[1063]]&& null!= this[_0x7ddb[1057]]?(this[_0x7ddb[1074]]= !0,this[_0x7ddb[203]](this[_0x7ddb[1057]],mxUtils[_0x7ddb[885]](this,function(){this[_0x7ddb[1075]]()}))):this[_0x7ddb[1074]]= !1};mxSession[_0x7ddb[202]][_0x7ddb[827]]= function(_0x9494x2,_0x9494x3,_0x9494x4){null!= _0x9494x2&& 0< _0x9494x2[_0x7ddb[67]]&& (null!= this[_0x7ddb[1058]]&& (this[_0x7ddb[143]]?(mxLog[_0x7ddb[539]](),mxLog[_0x7ddb[143]](_0x7ddb[1078]+ this[_0x7ddb[1058]]+ _0x7ddb[1079]+ _0x9494x2)):(_0x9494x2= _0x7ddb[1080]+ _0x9494x2+ _0x7ddb[1081],this[_0x7ddb[1070]]&& (_0x9494x2= encodeURIComponent(_0x9494x2)),mxUtils[_0x7ddb[814]](this[_0x7ddb[1058]],_0x7ddb[1082]+ _0x9494x2,_0x9494x3,_0x9494x4))),this[_0x7ddb[1072]]+= _0x9494x2[_0x7ddb[67]],this[_0x7ddb[746]]( new mxEventObject(mxEvent.NOTIFY,_0x7ddb[863],this[_0x7ddb[1058]],_0x7ddb[338],_0x9494x2)))};mxSession[_0x7ddb[202]][_0x7ddb[203]]= function(_0x9494x2,_0x9494x3,_0x9494x4){if(_0x7ddb[82]!= typeof mxUtils){var _0x9494x5=mxUtils[_0x7ddb[885]](this,function(_0x9494x2){null!= _0x9494x4?_0x9494x4(_0x9494x2):this[_0x7ddb[1076]](_0x9494x2)});mxUtils[_0x7ddb[203]](_0x9494x2,mxUtils[_0x7ddb[885]](this,function(_0x9494x4){if(_0x7ddb[82]!= typeof mxUtils){if(_0x9494x4[_0x7ddb[220]]()&& 404!= _0x9494x4[_0x7ddb[878]]()){if(this[_0x7ddb[1073]]+= _0x9494x4[_0x7ddb[221]]()[_0x7ddb[67]],this[_0x7ddb[746]]( new mxEventObject(mxEvent.GET,_0x7ddb[863],_0x9494x2,_0x7ddb[870],_0x9494x4)),this[_0x7ddb[1083]](_0x9494x4)){if(0< _0x9494x4[_0x7ddb[221]]()[_0x7ddb[67]]){var _0x9494xa=_0x9494x4[_0x7ddb[874]]();null== _0x9494xa?_0x9494x5(_0x7ddb[1084]+ _0x9494x4[_0x7ddb[221]]()):this[_0x7ddb[806]](_0x9494xa)};null!= _0x9494x3&& _0x9494x3(_0x9494x4)}}else {_0x9494x5(_0x7ddb[1085])}}}),function(_0x9494x2){_0x9494x5(_0x7ddb[1086])})}};mxSession[_0x7ddb[202]][_0x7ddb[1083]]= function(_0x9494x2){return 0> _0x9494x2[_0x7ddb[221]]()[_0x7ddb[2]](_0x7ddb[1087])};mxSession[_0x7ddb[202]][_0x7ddb[1067]]= function(_0x9494x2,_0x9494x3){for(var _0x9494x4=_0x7ddb[110],_0x9494x5=_0x9494x3?-1:1,_0x9494x9=_0x9494x3?_0x9494x2[_0x7ddb[67]]- 1:0;0<= _0x9494x9&& _0x9494x9< _0x9494x2[_0x7ddb[67]];_0x9494x9+= _0x9494x5){var _0x9494xa=this[_0x7ddb[1059]][_0x7ddb[514]](_0x9494x2[_0x9494x9]),_0x9494x4=_0x9494x4+ mxUtils[_0x7ddb[875]](_0x9494xa,this[_0x7ddb[1069]])};return _0x9494x4};mxSession[_0x7ddb[202]][_0x7ddb[806]]= function(_0x9494x2){if(null!= _0x9494x2&& _0x9494x2[_0x7ddb[288]]== mxConstants[_0x7ddb[289]]){var _0x9494x3=_0x9494x2[_0x7ddb[284]](_0x7ddb[1088]);null!= _0x9494x3&& (this[_0x7ddb[251]][_0x7ddb[1089]]= _0x9494x3+ _0x7ddb[213]);for(_0x9494x3= _0x9494x2[_0x7ddb[285]];null!= _0x9494x3;){var _0x9494x4=_0x9494x3[_0x7ddb[301]][_0x7ddb[216]]();_0x7ddb[724]== _0x9494x4?this[_0x7ddb[1090]](_0x9494x3):_0x7ddb[1091]== _0x9494x4&& this[_0x7ddb[1092]](_0x9494x3);_0x9494x3= _0x9494x3[_0x7ddb[287]]};this[_0x7ddb[746]]( new mxEventObject(mxEvent.RECEIVE,_0x7ddb[252],_0x9494x2))}};mxSession[_0x7ddb[202]][_0x7ddb[1090]]= function(_0x9494x2){( new mxCodec(_0x9494x2[_0x7ddb[295]]))[_0x7ddb[1093]](_0x9494x2[_0x7ddb[285]],this[_0x7ddb[251]])};mxSession[_0x7ddb[202]][_0x7ddb[1092]]= function(_0x9494x2){for(_0x9494x2= _0x9494x2[_0x7ddb[285]];null!= _0x9494x2;){_0x7ddb[1061]== _0x9494x2[_0x7ddb[301]]&& this[_0x7ddb[1094]](_0x9494x2),_0x9494x2= _0x9494x2[_0x7ddb[287]]}};mxSession[_0x7ddb[202]][_0x7ddb[1094]]= function(_0x9494x2){_0x9494x2= this[_0x7ddb[1095]](_0x9494x2);if(0< _0x9494x2[_0x7ddb[67]]){var _0x9494x3=this[_0x7ddb[1096]](_0x9494x2);this[_0x7ddb[251]][_0x7ddb[746]]( new mxEventObject(mxEvent.CHANGE,_0x7ddb[1061],_0x9494x3,_0x7ddb[1065],_0x9494x2));this[_0x7ddb[251]][_0x7ddb[746]]( new mxEventObject(mxEvent.UNDO,_0x7ddb[1061],_0x9494x3));this[_0x7ddb[746]]( new mxEventObject(mxEvent.FIRED,_0x7ddb[1061],_0x9494x3))}};mxSession[_0x7ddb[202]][_0x7ddb[1096]]= function(_0x9494x2){var _0x9494x3= new mxUndoableEdit(this[_0x7ddb[251]],this[_0x7ddb[1071]]);_0x9494x3[_0x7ddb[1065]]= _0x9494x2;_0x9494x3[_0x7ddb[827]]= function(){_0x9494x3[_0x7ddb[1097]][_0x7ddb[746]]( new mxEventObject(mxEvent.CHANGE,_0x7ddb[1061],_0x9494x3,_0x7ddb[1065],_0x9494x3[_0x7ddb[1065]]));_0x9494x3[_0x7ddb[1097]][_0x7ddb[746]]( new mxEventObject(mxEvent.NOTIFY,_0x7ddb[1061],_0x9494x3,_0x7ddb[1065],_0x9494x3[_0x7ddb[1065]]))};return _0x9494x3};mxSession[_0x7ddb[202]][_0x7ddb[1095]]= function(_0x9494x2){this[_0x7ddb[1059]][_0x7ddb[395]]= _0x9494x2[_0x7ddb[295]];var _0x9494x3=[];for(_0x9494x2= _0x9494x2[_0x7ddb[285]];null!= _0x9494x2;){var _0x9494x4=this[_0x7ddb[1098]](_0x9494x2);null!= _0x9494x4&& _0x9494x3[_0x7ddb[207]](_0x9494x4);_0x9494x2= _0x9494x2[_0x7ddb[287]]};return _0x9494x3};mxSession[_0x7ddb[202]][_0x7ddb[1098]]= function(_0x9494x2){var _0x9494x3=null;_0x9494x2[_0x7ddb[288]]== mxConstants[_0x7ddb[289]]&& (_0x9494x3= _0x7ddb[1099]== _0x9494x2[_0x7ddb[301]]?( new mxCodec(_0x9494x2[_0x7ddb[295]]))[_0x7ddb[1093]](_0x9494x2):this[_0x7ddb[1059]][_0x7ddb[1093]](_0x9494x2),null!= _0x9494x3&& (_0x9494x3[_0x7ddb[251]]= this[_0x7ddb[251]],_0x9494x3[_0x7ddb[350]](),_0x7ddb[1100]== _0x9494x2[_0x7ddb[301]]&& null== _0x9494x3[_0x7ddb[1101]]&& this[_0x7ddb[1102]](_0x9494x3[_0x7ddb[247]])));return _0x9494x3};mxSession[_0x7ddb[202]][_0x7ddb[1102]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[1059]][_0x7ddb[1104]](_0x9494x2[_0x7ddb[1103]](),_0x9494x2);for(var _0x9494x4=this[_0x7ddb[251]][_0x7ddb[262]](_0x9494x2),_0x9494x5=0;_0x9494x5< _0x9494x4;_0x9494x5++){this[_0x7ddb[1102]](this[_0x7ddb[251]][_0x7ddb[263]](_0x9494x2,_0x9494x5))}};function mxUndoableEdit(_0x9494x2,_0x9494x3){this[_0x7ddb[1097]]= _0x9494x2;this[_0x7ddb[1065]]= [];this[_0x7ddb[1105]]= null!= _0x9494x3?_0x9494x3:!0}mxUndoableEdit[_0x7ddb[202]][_0x7ddb[1097]]= null;mxUndoableEdit[_0x7ddb[202]][_0x7ddb[1065]]= null;mxUndoableEdit[_0x7ddb[202]][_0x7ddb[1105]]= null;mxUndoableEdit[_0x7ddb[202]][_0x7ddb[1066]]= !1;mxUndoableEdit[_0x7ddb[202]][_0x7ddb[1106]]= !1;mxUndoableEdit[_0x7ddb[202]][_0x7ddb[1107]]= function(){return 0== this[_0x7ddb[1065]][_0x7ddb[67]]};mxUndoableEdit[_0x7ddb[202]][_0x7ddb[1108]]= function(){return this[_0x7ddb[1105]]};mxUndoableEdit[_0x7ddb[202]][_0x7ddb[99]]= function(_0x9494x2){this[_0x7ddb[1065]][_0x7ddb[207]](_0x9494x2)};mxUndoableEdit[_0x7ddb[202]][_0x7ddb[827]]= function(){};mxUndoableEdit[_0x7ddb[202]][_0x7ddb[1109]]= function(){};mxUndoableEdit[_0x7ddb[202]][_0x7ddb[824]]= function(){if(!this[_0x7ddb[1066]]){this[_0x7ddb[1097]][_0x7ddb[746]]( new mxEventObject(mxEvent.START_EDIT));for(var _0x9494x2=this[_0x7ddb[1065]][_0x7ddb[67]]- 1;0<= _0x9494x2;_0x9494x2--){var _0x9494x3=this[_0x7ddb[1065]][_0x9494x2];null!= _0x9494x3[_0x7ddb[350]]?_0x9494x3[_0x7ddb[350]]():null!= _0x9494x3[_0x7ddb[824]]&& _0x9494x3[_0x7ddb[824]]();this[_0x7ddb[1097]][_0x7ddb[746]]( new mxEventObject(mxEvent.EXECUTED,_0x7ddb[826],_0x9494x3))};this[_0x7ddb[1066]]= !0;this[_0x7ddb[1106]]= !1;this[_0x7ddb[1097]][_0x7ddb[746]]( new mxEventObject(mxEvent.END_EDIT))};this[_0x7ddb[827]]()};mxUndoableEdit[_0x7ddb[202]][_0x7ddb[825]]= function(){if(!this[_0x7ddb[1106]]){this[_0x7ddb[1097]][_0x7ddb[746]]( new mxEventObject(mxEvent.START_EDIT));for(var _0x9494x2=this[_0x7ddb[1065]][_0x7ddb[67]],_0x9494x3=0;_0x9494x3< _0x9494x2;_0x9494x3++){var _0x9494x4=this[_0x7ddb[1065]][_0x9494x3];null!= _0x9494x4[_0x7ddb[350]]?_0x9494x4[_0x7ddb[350]]():null!= _0x9494x4[_0x7ddb[825]]&& _0x9494x4[_0x7ddb[825]]();this[_0x7ddb[1097]][_0x7ddb[746]]( new mxEventObject(mxEvent.EXECUTED,_0x7ddb[826],_0x9494x4))};this[_0x7ddb[1066]]= !1;this[_0x7ddb[1106]]= !0;this[_0x7ddb[1097]][_0x7ddb[746]]( new mxEventObject(mxEvent.END_EDIT))};this[_0x7ddb[827]]()};function mxUndoManager(_0x9494x2){this[_0x7ddb[803]]= null!= _0x9494x2?_0x9494x2:100;this[_0x7ddb[200]]()}mxUndoManager[_0x7ddb[202]]= new mxEventSource;mxUndoManager[_0x7ddb[202]][_0x7ddb[196]]= mxUndoManager;mxUndoManager[_0x7ddb[202]][_0x7ddb[803]]= null;mxUndoManager[_0x7ddb[202]][_0x7ddb[1110]]= null;mxUndoManager[_0x7ddb[202]][_0x7ddb[1111]]= 0;mxUndoManager[_0x7ddb[202]][_0x7ddb[1107]]= function(){return 0== this[_0x7ddb[1110]][_0x7ddb[67]]};mxUndoManager[_0x7ddb[202]][_0x7ddb[200]]= function(){this[_0x7ddb[1110]]= [];this[_0x7ddb[1111]]= 0;this[_0x7ddb[746]]( new mxEventObject(mxEvent.CLEAR))};mxUndoManager[_0x7ddb[202]][_0x7ddb[1112]]= function(){return 0< this[_0x7ddb[1111]]};mxUndoManager[_0x7ddb[202]][_0x7ddb[824]]= function(){for(;0< this[_0x7ddb[1111]];){var _0x9494x2=this[_0x7ddb[1110]][--this[_0x7ddb[1111]]];_0x9494x2[_0x7ddb[824]]();if(_0x9494x2[_0x7ddb[1108]]()){this[_0x7ddb[746]]( new mxEventObject(mxEvent.UNDO,_0x7ddb[1061],_0x9494x2));break}}};mxUndoManager[_0x7ddb[202]][_0x7ddb[1113]]= function(){return this[_0x7ddb[1111]]< this[_0x7ddb[1110]][_0x7ddb[67]]};mxUndoManager[_0x7ddb[202]][_0x7ddb[825]]= function(){for(var _0x9494x2=this[_0x7ddb[1110]][_0x7ddb[67]];this[_0x7ddb[1111]]< _0x9494x2;){var _0x9494x3=this[_0x7ddb[1110]][this[_0x7ddb[1111]]++];_0x9494x3[_0x7ddb[825]]();if(_0x9494x3[_0x7ddb[1108]]()){this[_0x7ddb[746]]( new mxEventObject(mxEvent.REDO,_0x7ddb[1061],_0x9494x3));break}}};mxUndoManager[_0x7ddb[202]][_0x7ddb[1114]]= function(_0x9494x2){this[_0x7ddb[330]]();0< this[_0x7ddb[803]]&& this[_0x7ddb[803]]== this[_0x7ddb[1110]][_0x7ddb[67]]&& this[_0x7ddb[1110]][_0x7ddb[1115]]();this[_0x7ddb[1110]][_0x7ddb[207]](_0x9494x2);this[_0x7ddb[1111]]= this[_0x7ddb[1110]][_0x7ddb[67]];this[_0x7ddb[746]]( new mxEventObject(mxEvent.ADD,_0x7ddb[1061],_0x9494x2))};mxUndoManager[_0x7ddb[202]][_0x7ddb[330]]= function(){if(this[_0x7ddb[1110]][_0x7ddb[67]]> this[_0x7ddb[1111]]){for(var _0x9494x2=this[_0x7ddb[1110]][_0x7ddb[300]](this[_0x7ddb[1111]],this[_0x7ddb[1110]][_0x7ddb[67]]- this[_0x7ddb[1111]]),_0x9494x3=0;_0x9494x3< _0x9494x2[_0x7ddb[67]];_0x9494x3++){_0x9494x2[_0x9494x3][_0x7ddb[1109]]()}}};var mxUrlConverter=function(_0x9494x2){var _0x9494x3=!0,_0x9494x4=null,_0x9494x5=null;return {isEnabled:function(){return _0x9494x3},setEnabled:function(_0x9494x2){_0x9494x3= _0x9494x2},getBaseUrl:function(){return _0x9494x4},setBaseUrl:function(_0x9494x2){_0x9494x4= _0x9494x2},getBaseDomain:function(){return _0x9494x4},setBaseDomain:function(_0x9494x2){_0x9494x4= _0x9494x2},isRelativeUrl:function(_0x9494x2){return _0x7ddb[43]!= _0x9494x2[_0x7ddb[85]](0,7)&& _0x7ddb[46]!= _0x9494x2[_0x7ddb[85]](0,8)&& _0x7ddb[1116]!= _0x9494x2[_0x7ddb[85]](0,10)},convert:function(_0x9494x2){if(_0x9494x3&& this[_0x7ddb[1117]](_0x9494x2)){if(null== _0x9494x4){_0x9494x5= location[_0x7ddb[1118]]+ _0x7ddb[1119]+ location[_0x7ddb[1120]];_0x9494x4= _0x9494x5+ location[_0x7ddb[1121]];var _0x9494xa=_0x9494x4[_0x7ddb[1122]](_0x7ddb[84]);0< _0x9494xa&& (_0x9494x4= _0x9494x4[_0x7ddb[85]](0,_0x9494xa+ 1))};_0x9494x2= _0x7ddb[84]== _0x9494x2[_0x7ddb[225]](0)?_0x9494x5+ _0x9494x2:_0x9494x4+ _0x9494x2};return _0x9494x2}}};function mxPanningManager(_0x9494x2){this[_0x7ddb[1123]]= null;this[_0x7ddb[1124]]= !1;this[_0x7ddb[1125]]= this[_0x7ddb[1126]]= this[_0x7ddb[1127]]= this[_0x7ddb[1128]]= this[_0x7ddb[1129]]= this[_0x7ddb[1130]]= 0;this[_0x7ddb[1131]]= !1;this[_0x7ddb[190]]= this[_0x7ddb[360]]= 0;this[_0x7ddb[1132]]= {mouseDown:function(_0x9494x2,_0x9494x3){},mouseMove:function(_0x9494x2,_0x9494x3){},mouseUp:mxUtils[_0x7ddb[885]](this,function(_0x9494x2,_0x9494x3){this[_0x7ddb[1124]]&& this[_0x7ddb[1076]]()})};_0x9494x2[_0x7ddb[1133]](this[_0x7ddb[1132]]);mxEvent[_0x7ddb[169]](document,_0x7ddb[753],mxUtils[_0x7ddb[885]](this,function(){this[_0x7ddb[1124]]&& this[_0x7ddb[1076]]()}));var _0x9494x3=mxUtils[_0x7ddb[885]](this,function(){this[_0x7ddb[1131]]= mxUtils[_0x7ddb[1134]](_0x9494x2[_0x7ddb[526]]);this[_0x7ddb[360]]= _0x9494x2[_0x7ddb[526]][_0x7ddb[360]];this[_0x7ddb[190]]= _0x9494x2[_0x7ddb[526]][_0x7ddb[190]];return window[_0x7ddb[1141]](mxUtils[_0x7ddb[885]](this,function(){this[_0x7ddb[1130]]-= this[_0x7ddb[1126]];this[_0x7ddb[1129]]-= this[_0x7ddb[1125]];if(this[_0x7ddb[1131]]){var _0x9494x3=-_0x9494x2[_0x7ddb[526]][_0x7ddb[360]]- Math[_0x7ddb[430]](this[_0x7ddb[1126]]),_0x9494x5=-_0x9494x2[_0x7ddb[526]][_0x7ddb[190]]- Math[_0x7ddb[430]](this[_0x7ddb[1125]]);_0x9494x2[_0x7ddb[1135]](_0x9494x3,_0x9494x5);_0x9494x2[_0x7ddb[1136]]= this[_0x7ddb[360]]- _0x9494x2[_0x7ddb[526]][_0x7ddb[360]];_0x9494x2[_0x7ddb[1137]]= this[_0x7ddb[190]]- _0x9494x2[_0x7ddb[526]][_0x7ddb[190]];_0x9494x2[_0x7ddb[746]]( new mxEventObject(mxEvent.PAN))}else {_0x9494x2[_0x7ddb[1135]](this[_0x7ddb[1138]](),this[_0x7ddb[1139]]())}}),this[_0x7ddb[1140]])});this[_0x7ddb[1142]]= function(){return active};this[_0x7ddb[1138]]= function(){return Math[_0x7ddb[488]](this[_0x7ddb[1130]])};this[_0x7ddb[1139]]= function(){return Math[_0x7ddb[488]](this[_0x7ddb[1129]])};this[_0x7ddb[861]]= function(){this[_0x7ddb[1128]]= _0x9494x2[_0x7ddb[441]][_0x7ddb[513]][_0x7ddb[235]];this[_0x7ddb[1127]]= _0x9494x2[_0x7ddb[441]][_0x7ddb[513]][_0x7ddb[236]];this[_0x7ddb[1124]]= !0};this[_0x7ddb[1143]]= function(_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){this[_0x7ddb[1124]]|| this[_0x7ddb[861]]();this[_0x7ddb[360]]= _0x9494x2[_0x7ddb[526]][_0x7ddb[360]];this[_0x7ddb[190]]= _0x9494x2[_0x7ddb[526]][_0x7ddb[190]];_0x9494xa= null!= _0x9494xa?_0x9494xa:0;var _0x9494x12=_0x9494x2[_0x7ddb[526]];this[_0x7ddb[1126]]= _0x9494x4+ (null!= _0x9494x9?_0x9494x9:0)- _0x9494x12[_0x7ddb[360]]- _0x9494x12[_0x7ddb[159]];0> this[_0x7ddb[1126]]&& Math[_0x7ddb[425]](this[_0x7ddb[1126]])< this[_0x7ddb[467]]?this[_0x7ddb[1126]]= this[_0x7ddb[467]]+ this[_0x7ddb[1126]]:this[_0x7ddb[1126]]= this[_0x7ddb[1144]]?Math[_0x7ddb[160]](this[_0x7ddb[1126]],0):0;0== this[_0x7ddb[1126]]&& (this[_0x7ddb[1126]]= _0x9494x4- _0x9494x12[_0x7ddb[360]],this[_0x7ddb[1126]]= 0< this[_0x7ddb[1126]]&& this[_0x7ddb[1126]]< this[_0x7ddb[467]]?this[_0x7ddb[1126]]- this[_0x7ddb[467]]:this[_0x7ddb[1144]]?Math[_0x7ddb[243]](0,this[_0x7ddb[1126]]):0);this[_0x7ddb[1125]]= _0x9494x5+ _0x9494xa- _0x9494x12[_0x7ddb[190]]- _0x9494x12[_0x7ddb[157]];0> this[_0x7ddb[1125]]&& Math[_0x7ddb[425]](this[_0x7ddb[1125]])< this[_0x7ddb[467]]?this[_0x7ddb[1125]]= this[_0x7ddb[467]]+ this[_0x7ddb[1125]]:this[_0x7ddb[1125]]= this[_0x7ddb[1144]]?Math[_0x7ddb[160]](this[_0x7ddb[1125]],0):0;0== this[_0x7ddb[1125]]&& (this[_0x7ddb[1125]]= _0x9494x5- _0x9494x12[_0x7ddb[190]],this[_0x7ddb[1125]]= 0< this[_0x7ddb[1125]]&& this[_0x7ddb[1125]]< this[_0x7ddb[467]]?this[_0x7ddb[1125]]- this[_0x7ddb[467]]:this[_0x7ddb[1144]]?Math[_0x7ddb[243]](0,this[_0x7ddb[1125]]):0);0!= this[_0x7ddb[1126]]|| 0!= this[_0x7ddb[1125]]?(this[_0x7ddb[1126]]*= this[_0x7ddb[1145]],this[_0x7ddb[1125]]*= this[_0x7ddb[1145]],null== this[_0x7ddb[1123]]&& (this[_0x7ddb[1123]]= _0x9494x3())):null!= this[_0x7ddb[1123]]&& (window[_0x7ddb[1146]](this[_0x7ddb[1123]]),this[_0x7ddb[1123]]= null)};this[_0x7ddb[1076]]= function(){if(this[_0x7ddb[1124]]){if(this[_0x7ddb[1124]]= !1,null!= this[_0x7ddb[1123]]&& (window[_0x7ddb[1146]](this[_0x7ddb[1123]]),this[_0x7ddb[1123]]= null),this[_0x7ddb[1129]]= this[_0x7ddb[1130]]= 0,this[_0x7ddb[1131]]){_0x9494x2[_0x7ddb[1136]]= 0,_0x9494x2[_0x7ddb[1137]]= 0,_0x9494x2[_0x7ddb[746]]( new mxEventObject(mxEvent.PAN))}else {var _0x9494x3=_0x9494x2[_0x7ddb[1136]],_0x9494x5=_0x9494x2[_0x7ddb[1137]];if(0!= _0x9494x3|| 0!= _0x9494x5){_0x9494x2[_0x7ddb[1135]](0,0),_0x9494x2[_0x7ddb[441]][_0x7ddb[1147]](this[_0x7ddb[1128]]+ _0x9494x3/ _0x9494x2[_0x7ddb[441]][_0x7ddb[255]],this[_0x7ddb[1127]]+ _0x9494x5/ _0x9494x2[_0x7ddb[441]][_0x7ddb[255]])}}}};this[_0x7ddb[515]]= function(){_0x9494x2[_0x7ddb[1148]](this[_0x7ddb[1132]])}}mxPanningManager[_0x7ddb[202]][_0x7ddb[1145]]= 1/ 6;mxPanningManager[_0x7ddb[202]][_0x7ddb[1140]]= 10;mxPanningManager[_0x7ddb[202]][_0x7ddb[1144]]= !0;mxPanningManager[_0x7ddb[202]][_0x7ddb[467]]= 0;function mxPopupMenu(_0x9494x2){this[_0x7ddb[1033]]= _0x9494x2;null!= _0x9494x2&& this[_0x7ddb[176]]()}mxPopupMenu[_0x7ddb[202]]= new mxEventSource;mxPopupMenu[_0x7ddb[202]][_0x7ddb[196]]= mxPopupMenu;mxPopupMenu[_0x7ddb[202]][_0x7ddb[1149]]= mxClient[_0x7ddb[88]]+ _0x7ddb[1150];mxPopupMenu[_0x7ddb[202]][_0x7ddb[931]]= 10006;mxPopupMenu[_0x7ddb[202]][_0x7ddb[1033]]= null;mxPopupMenu[_0x7ddb[202]][_0x7ddb[1151]]= !1;mxPopupMenu[_0x7ddb[202]][_0x7ddb[984]]= !0;mxPopupMenu[_0x7ddb[202]][_0x7ddb[1152]]= 0;mxPopupMenu[_0x7ddb[202]][_0x7ddb[1153]]= !1;mxPopupMenu[_0x7ddb[202]][_0x7ddb[1154]]= !1;mxPopupMenu[_0x7ddb[202]][_0x7ddb[1155]]= !0;mxPopupMenu[_0x7ddb[202]][_0x7ddb[176]]= function(){this[_0x7ddb[116]]= document[_0x7ddb[55]](_0x7ddb[116]);this[_0x7ddb[116]][_0x7ddb[926]]= _0x7ddb[1156];this[_0x7ddb[120]]= document[_0x7ddb[55]](_0x7ddb[120]);this[_0x7ddb[116]][_0x7ddb[62]](this[_0x7ddb[120]]);this[_0x7ddb[485]]= document[_0x7ddb[55]](_0x7ddb[485]);this[_0x7ddb[485]][_0x7ddb[926]]= _0x7ddb[1156];this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[495]]= _0x7ddb[497];this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[931]]= this[_0x7ddb[931]];this[_0x7ddb[485]][_0x7ddb[62]](this[_0x7ddb[116]]);mxEvent[_0x7ddb[1157]](this[_0x7ddb[485]])};mxPopupMenu[_0x7ddb[202]][_0x7ddb[994]]= function(){return this[_0x7ddb[984]]};mxPopupMenu[_0x7ddb[202]][_0x7ddb[995]]= function(_0x9494x2){this[_0x7ddb[984]]= _0x9494x2};mxPopupMenu[_0x7ddb[202]][_0x7ddb[737]]= function(_0x9494x2){return _0x9494x2[_0x7ddb[737]]()|| this[_0x7ddb[1151]]&& mxEvent[_0x7ddb[1158]](_0x9494x2[_0x7ddb[727]]())};mxPopupMenu[_0x7ddb[202]][_0x7ddb[1025]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){_0x9494x5= _0x9494x5|| this;this[_0x7ddb[1152]]++;_0x9494x5[_0x7ddb[1159]]&& (_0x9494x5[_0x7ddb[1160]]&& this[_0x7ddb[1051]](_0x9494x5,!0),_0x9494x5[_0x7ddb[1159]]= !1);_0x9494x5[_0x7ddb[1160]]= !0;var _0x9494x12=document[_0x7ddb[55]](_0x7ddb[121]);_0x9494x12[_0x7ddb[926]]= _0x7ddb[1161];var _0x9494x13=document[_0x7ddb[55]](_0x7ddb[122]);_0x9494x13[_0x7ddb[926]]= _0x7ddb[1162];null!= _0x9494x3?(_0x9494x9= document[_0x7ddb[55]](_0x7ddb[466]),_0x9494x9[_0x7ddb[390]]= _0x9494x3,_0x9494x13[_0x7ddb[62]](_0x9494x9)):null!= _0x9494x9&& (_0x9494x3= document[_0x7ddb[55]](_0x7ddb[485]),_0x9494x3[_0x7ddb[926]]= _0x9494x9,_0x9494x13[_0x7ddb[62]](_0x9494x3));_0x9494x12[_0x7ddb[62]](_0x9494x13);this[_0x7ddb[1155]]&& (_0x9494x13= document[_0x7ddb[55]](_0x7ddb[122]),_0x9494x13[_0x7ddb[926]]= _0x7ddb[1161]+ (null!= _0x9494xa&& !_0x9494xa?_0x7ddb[1163]:_0x7ddb[110]),mxUtils[_0x7ddb[53]](_0x9494x13,_0x9494x2),_0x9494x13[_0x7ddb[611]]= _0x7ddb[361],_0x9494x12[_0x7ddb[62]](_0x9494x13),_0x9494x2= document[_0x7ddb[55]](_0x7ddb[122]),_0x9494x2[_0x7ddb[926]]= _0x7ddb[1161]+ (null!= _0x9494xa&& !_0x9494xa?_0x7ddb[1163]:_0x7ddb[110]),_0x9494x2[_0x7ddb[124]][_0x7ddb[1164]]= _0x7ddb[1055],_0x9494x2[_0x7ddb[124]][_0x7ddb[1165]]= _0x7ddb[699],_0x9494x12[_0x7ddb[62]](_0x9494x2),null== _0x9494x5[_0x7ddb[485]]&& this[_0x7ddb[1166]](_0x9494x5));_0x9494x5[_0x7ddb[120]][_0x7ddb[62]](_0x9494x12);if(null== _0x9494xa|| _0x9494xa){mxEvent[_0x7ddb[759]](_0x9494x12,mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[1167]]= _0x9494x12;_0x9494x5[_0x7ddb[1168]]!= _0x9494x12&& _0x9494x5[_0x7ddb[1168]]!= _0x9494x5&& (null!= _0x9494x5[_0x7ddb[1168]]&& null!= _0x9494x5[_0x7ddb[1168]][_0x7ddb[485]][_0x7ddb[265]]&& this[_0x7ddb[1169]](_0x9494x5),null!= _0x9494x12[_0x7ddb[485]]&& (this[_0x7ddb[1170]](_0x9494x5,_0x9494x12),_0x9494x5[_0x7ddb[1168]]= _0x9494x12));mxEvent[_0x7ddb[722]](_0x9494x2)}),mxUtils[_0x7ddb[885]](this,function(_0x9494x2){_0x9494x5[_0x7ddb[1168]]!= _0x9494x12&& _0x9494x5[_0x7ddb[1168]]!= _0x9494x5&& (null!= _0x9494x5[_0x7ddb[1168]]&& null!= _0x9494x5[_0x7ddb[1168]][_0x7ddb[485]][_0x7ddb[265]]&& this[_0x7ddb[1169]](_0x9494x5),this[_0x7ddb[1153]]&& null!= _0x9494x12[_0x7ddb[485]]&& (this[_0x7ddb[1170]](_0x9494x5,_0x9494x12),_0x9494x5[_0x7ddb[1168]]= _0x9494x12));_0x9494x12[_0x7ddb[926]]= _0x7ddb[1171]}),mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[1167]]== _0x9494x12&& (_0x9494x5[_0x7ddb[1168]]!= _0x9494x12&& this[_0x7ddb[1032]](),null!= _0x9494x4&& _0x9494x4(_0x9494x2));this[_0x7ddb[1167]]= null;mxEvent[_0x7ddb[722]](_0x9494x2)})),mxEvent[_0x7ddb[169]](_0x9494x12,_0x7ddb[1035],mxUtils[_0x7ddb[885]](this,function(_0x9494x2){_0x9494x12[_0x7ddb[926]]= _0x7ddb[1161]}))};return _0x9494x12};mxPopupMenu[_0x7ddb[202]][_0x7ddb[1166]]= function(_0x9494x2){_0x9494x2[_0x7ddb[116]]= document[_0x7ddb[55]](_0x7ddb[116]);_0x9494x2[_0x7ddb[116]][_0x7ddb[926]]= _0x7ddb[1156];_0x9494x2[_0x7ddb[120]]= document[_0x7ddb[55]](_0x7ddb[120]);_0x9494x2[_0x7ddb[116]][_0x7ddb[62]](_0x9494x2[_0x7ddb[120]]);_0x9494x2[_0x7ddb[485]]= document[_0x7ddb[55]](_0x7ddb[485]);_0x9494x2[_0x7ddb[485]][_0x7ddb[926]]= _0x7ddb[1156];_0x9494x2[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[492];_0x9494x2[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[495]]= _0x7ddb[497];_0x9494x2[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[931]]= this[_0x7ddb[931]];_0x9494x2[_0x7ddb[485]][_0x7ddb[62]](_0x9494x2[_0x7ddb[116]]);var _0x9494x3=document[_0x7ddb[55]](_0x7ddb[466]);_0x9494x3[_0x7ddb[57]](_0x7ddb[390],this[_0x7ddb[1149]]);td= _0x9494x2[_0x7ddb[285]][_0x7ddb[287]][_0x7ddb[287]];td[_0x7ddb[62]](_0x9494x3)};mxPopupMenu[_0x7ddb[202]][_0x7ddb[1170]]= function(_0x9494x2,_0x9494x3){if(null!= _0x9494x3[_0x7ddb[485]]){_0x9494x3[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[361]]= _0x9494x2[_0x7ddb[485]][_0x7ddb[358]]+ _0x9494x3[_0x7ddb[358]]+ _0x9494x3[_0x7ddb[359]]- 1+ _0x7ddb[168];_0x9494x3[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[125]]= _0x9494x2[_0x7ddb[485]][_0x7ddb[362]]+ _0x9494x3[_0x7ddb[362]]+ _0x7ddb[168];document[_0x7ddb[112]][_0x7ddb[62]](_0x9494x3[_0x7ddb[485]]);var _0x9494x4=parseInt(_0x9494x3[_0x7ddb[485]][_0x7ddb[358]]),_0x9494x5=parseInt(_0x9494x3[_0x7ddb[485]][_0x7ddb[359]]),_0x9494x9=document[_0x7ddb[112]],_0x9494xa=document[_0x7ddb[158]];if(_0x9494x4+ _0x9494x5> (_0x9494x9[_0x7ddb[360]]|| _0x9494xa[_0x7ddb[360]])+ (_0x9494x9[_0x7ddb[159]]|| _0x9494xa[_0x7ddb[159]])){_0x9494x3[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[361]]= _0x9494x2[_0x7ddb[485]][_0x7ddb[358]]- _0x9494x5+ (mxClient[_0x7ddb[80]]?6:-6)+ _0x7ddb[168]};mxUtils[_0x7ddb[933]](_0x9494x3[_0x7ddb[485]])}};mxPopupMenu[_0x7ddb[202]][_0x7ddb[1051]]= function(_0x9494x2,_0x9494x3){_0x9494x2= _0x9494x2|| this;if(this[_0x7ddb[1154]]&& !_0x9494x3){_0x9494x2[_0x7ddb[1159]]= !0}else {if(null!= _0x9494x2[_0x7ddb[120]]){_0x9494x2[_0x7ddb[1159]]= !1;var _0x9494x4=document[_0x7ddb[55]](_0x7ddb[121]),_0x9494x5=document[_0x7ddb[55]](_0x7ddb[122]);_0x9494x5[_0x7ddb[926]]= _0x7ddb[1162];_0x9494x5[_0x7ddb[124]][_0x7ddb[549]]= _0x7ddb[1172];_0x9494x4[_0x7ddb[62]](_0x9494x5);_0x9494x5= document[_0x7ddb[55]](_0x7ddb[122]);_0x9494x5[_0x7ddb[124]][_0x7ddb[549]]= _0x7ddb[1172];_0x9494x5[_0x7ddb[57]](_0x7ddb[1173],_0x7ddb[1174]);var _0x9494x9=document[_0x7ddb[55]](_0x7ddb[1054]);_0x9494x9[_0x7ddb[57]](_0x7ddb[803],_0x7ddb[500]);_0x9494x5[_0x7ddb[62]](_0x9494x9);_0x9494x4[_0x7ddb[62]](_0x9494x5);_0x9494x2[_0x7ddb[120]][_0x7ddb[62]](_0x9494x4)}}};mxPopupMenu[_0x7ddb[202]][_0x7ddb[152]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){if(null!= this[_0x7ddb[485]]&& null!= this[_0x7ddb[120]]&& null!= this[_0x7ddb[1033]]){this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[361]]= _0x9494x2+ _0x7ddb[168];for(this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[125]]= _0x9494x3+ _0x7ddb[168];null!= this[_0x7ddb[120]][_0x7ddb[285]];){mxEvent[_0x7ddb[762]](this[_0x7ddb[120]][_0x7ddb[285]]),this[_0x7ddb[120]][_0x7ddb[266]](this[_0x7ddb[120]][_0x7ddb[285]])};this[_0x7ddb[1152]]= 0;this[_0x7ddb[1033]](this,_0x9494x4,_0x9494x5);0< this[_0x7ddb[1152]]&& (this[_0x7ddb[1175]](),this[_0x7ddb[746]]( new mxEventObject(mxEvent.SHOW)))}};mxPopupMenu[_0x7ddb[202]][_0x7ddb[1031]]= function(){return null!= this[_0x7ddb[485]]&& this[_0x7ddb[485]][_0x7ddb[265]]== document[_0x7ddb[112]]};mxPopupMenu[_0x7ddb[202]][_0x7ddb[1175]]= function(){9<= document[_0x7ddb[5]]&& (this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[347]]= _0x7ddb[130]);document[_0x7ddb[112]][_0x7ddb[62]](this[_0x7ddb[485]]);mxUtils[_0x7ddb[933]](this[_0x7ddb[485]])};mxPopupMenu[_0x7ddb[202]][_0x7ddb[1032]]= function(){null!= this[_0x7ddb[485]]&& (null!= this[_0x7ddb[485]][_0x7ddb[265]]&& this[_0x7ddb[485]][_0x7ddb[265]][_0x7ddb[266]](this[_0x7ddb[485]]),this[_0x7ddb[1169]](this),this[_0x7ddb[1160]]= !1)};mxPopupMenu[_0x7ddb[202]][_0x7ddb[1169]]= function(_0x9494x2){null!= _0x9494x2[_0x7ddb[1168]]&& (this[_0x7ddb[1169]](_0x9494x2[_0x7ddb[1168]]),null!= _0x9494x2[_0x7ddb[1168]][_0x7ddb[485]][_0x7ddb[265]]&& _0x9494x2[_0x7ddb[1168]][_0x7ddb[485]][_0x7ddb[265]][_0x7ddb[266]](_0x9494x2[_0x7ddb[1168]][_0x7ddb[485]]),_0x9494x2[_0x7ddb[1168]]= null)};mxPopupMenu[_0x7ddb[202]][_0x7ddb[515]]= function(){null!= this[_0x7ddb[485]]&& (mxEvent[_0x7ddb[762]](this[_0x7ddb[485]]),null!= this[_0x7ddb[485]][_0x7ddb[265]]&& this[_0x7ddb[485]][_0x7ddb[265]][_0x7ddb[266]](this[_0x7ddb[485]]),this[_0x7ddb[485]]= null)};function mxAutoSaveManager(_0x9494x2){this[_0x7ddb[1176]]= mxUtils[_0x7ddb[885]](this,function(_0x9494x2,_0x9494x4){this[_0x7ddb[994]]()&& this[_0x7ddb[1177]](_0x9494x4[_0x7ddb[720]](_0x7ddb[1061])[_0x7ddb[1065]])});this[_0x7ddb[1178]](_0x9494x2)}mxAutoSaveManager[_0x7ddb[202]]= new mxEventSource;mxAutoSaveManager[_0x7ddb[202]][_0x7ddb[196]]= mxAutoSaveManager;mxAutoSaveManager[_0x7ddb[202]][_0x7ddb[1179]]= null;mxAutoSaveManager[_0x7ddb[202]][_0x7ddb[1180]]= 10;mxAutoSaveManager[_0x7ddb[202]][_0x7ddb[1181]]= 2;mxAutoSaveManager[_0x7ddb[202]][_0x7ddb[1182]]= 5;mxAutoSaveManager[_0x7ddb[202]][_0x7ddb[1183]]= 0;mxAutoSaveManager[_0x7ddb[202]][_0x7ddb[1184]]= 0;mxAutoSaveManager[_0x7ddb[202]][_0x7ddb[984]]= !0;mxAutoSaveManager[_0x7ddb[202]][_0x7ddb[1176]]= null;mxAutoSaveManager[_0x7ddb[202]][_0x7ddb[994]]= function(){return this[_0x7ddb[984]]};mxAutoSaveManager[_0x7ddb[202]][_0x7ddb[995]]= function(_0x9494x2){this[_0x7ddb[984]]= _0x9494x2};mxAutoSaveManager[_0x7ddb[202]][_0x7ddb[1178]]= function(_0x9494x2){null!= this[_0x7ddb[1179]]&& this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[745]](this[_0x7ddb[1176]]);this[_0x7ddb[1179]]= _0x9494x2;null!= this[_0x7ddb[1179]]&& this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[169]](mxEvent.CHANGE,this[_0x7ddb[1176]])};mxAutoSaveManager[_0x7ddb[202]][_0x7ddb[815]]= function(){};mxAutoSaveManager[_0x7ddb[202]][_0x7ddb[1177]]= function(_0x9494x2){_0x9494x2= (( new Date)[_0x7ddb[178]]()- this[_0x7ddb[1184]])/ 1E3;_0x9494x2> this[_0x7ddb[1180]]|| this[_0x7ddb[1183]]>= this[_0x7ddb[1182]]&& _0x9494x2> this[_0x7ddb[1181]]?(this[_0x7ddb[815]](),this[_0x7ddb[862]]()):this[_0x7ddb[1183]]++};mxAutoSaveManager[_0x7ddb[202]][_0x7ddb[862]]= function(){this[_0x7ddb[1184]]= ( new Date)[_0x7ddb[178]]();this[_0x7ddb[1183]]= 0};mxAutoSaveManager[_0x7ddb[202]][_0x7ddb[515]]= function(){this[_0x7ddb[1178]](null)};function mxAnimation(_0x9494x2){this[_0x7ddb[1140]]= null!= _0x9494x2?_0x9494x2:20}mxAnimation[_0x7ddb[202]]= new mxEventSource;mxAnimation[_0x7ddb[202]][_0x7ddb[196]]= mxAnimation;mxAnimation[_0x7ddb[202]][_0x7ddb[1140]]= null;mxAnimation[_0x7ddb[202]][_0x7ddb[1123]]= null;mxAnimation[_0x7ddb[202]][_0x7ddb[1185]]= function(){null== this[_0x7ddb[1123]]&& (this[_0x7ddb[1123]]= window[_0x7ddb[1141]](mxUtils[_0x7ddb[885]](this,this[_0x7ddb[1186]]),this[_0x7ddb[1140]]))};mxAnimation[_0x7ddb[202]][_0x7ddb[1186]]= function(){this[_0x7ddb[746]]( new mxEventObject(mxEvent.EXECUTE))};mxAnimation[_0x7ddb[202]][_0x7ddb[1187]]= function(){null!= this[_0x7ddb[1123]]&& (window[_0x7ddb[1146]](this[_0x7ddb[1123]]),this[_0x7ddb[1123]]= null,this[_0x7ddb[746]]( new mxEventObject(mxEvent.DONE)))};function mxMorphing(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){mxAnimation[_0x7ddb[239]](this,_0x9494x5);this[_0x7ddb[1179]]= _0x9494x2;this[_0x7ddb[1188]]= null!= _0x9494x3?_0x9494x3:6;this[_0x7ddb[1189]]= null!= _0x9494x4?_0x9494x4:1.5}mxMorphing[_0x7ddb[202]]= new mxAnimation;mxMorphing[_0x7ddb[202]][_0x7ddb[196]]= mxMorphing;mxMorphing[_0x7ddb[202]][_0x7ddb[1179]]= null;mxMorphing[_0x7ddb[202]][_0x7ddb[1188]]= null;mxMorphing[_0x7ddb[202]][_0x7ddb[1190]]= 0;mxMorphing[_0x7ddb[202]][_0x7ddb[1189]]= null;mxMorphing[_0x7ddb[202]][_0x7ddb[895]]= null;mxMorphing[_0x7ddb[202]][_0x7ddb[1186]]= function(){var _0x9494x2= new mxCellStatePreview(this[_0x7ddb[1179]]);if(null!= this[_0x7ddb[895]]){for(var _0x9494x3=0;_0x9494x3< this[_0x7ddb[895]][_0x7ddb[67]];_0x9494x3++){this[_0x7ddb[1191]](cells[_0x9494x3],_0x9494x2,!1)}}else {this[_0x7ddb[1191]](this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[501]](),_0x9494x2,!0)};this[_0x7ddb[539]](_0x9494x2);(_0x9494x2[_0x7ddb[1107]]()|| this[_0x7ddb[1190]]++ >= this[_0x7ddb[1188]])&& this[_0x7ddb[1187]]()};mxMorphing[_0x7ddb[202]][_0x7ddb[539]]= function(_0x9494x2){_0x9494x2[_0x7ddb[539]]()};mxMorphing[_0x7ddb[202]][_0x7ddb[1191]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[248]](_0x9494x2),_0x9494x9=null;if(null!= _0x9494x5&& (_0x9494x9= this[_0x7ddb[1192]](_0x9494x5),this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[1193]](_0x9494x2)&& (0!= _0x9494x9[_0x7ddb[235]]|| 0!= _0x9494x9[_0x7ddb[236]]))){var _0x9494xa=this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[512]](),_0x9494x12=this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[518]]();_0x9494x9[_0x7ddb[235]]+= _0x9494xa[_0x7ddb[235]]* _0x9494x12;_0x9494x9[_0x7ddb[236]]+= _0x9494xa[_0x7ddb[236]]* _0x9494x12;_0x9494x3[_0x7ddb[1194]](_0x9494x5,-_0x9494x9[_0x7ddb[235]]/ this[_0x7ddb[1189]],-_0x9494x9[_0x7ddb[236]]/ this[_0x7ddb[1189]])};if(_0x9494x4&& !this[_0x7ddb[1195]](_0x9494x5,_0x9494x9)){_0x9494x5= this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[262]](_0x9494x2);for(_0x9494x9= 0;_0x9494x9< _0x9494x5;_0x9494x9++){this[_0x7ddb[1191]](this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[263]](_0x9494x2,_0x9494x9),_0x9494x3,_0x9494x4)}}};mxMorphing[_0x7ddb[202]][_0x7ddb[1195]]= function(_0x9494x2,_0x9494x3){return null!= _0x9494x3&& (0!= _0x9494x3[_0x7ddb[235]]|| 0!= _0x9494x3[_0x7ddb[236]])};mxMorphing[_0x7ddb[202]][_0x7ddb[1192]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[1196]](_0x9494x2[_0x7ddb[246]]),_0x9494x4=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[512]](),_0x9494x5=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[518]]();_0x9494x2= new mxPoint(_0x9494x2[_0x7ddb[235]]/ _0x9494x5- _0x9494x4[_0x7ddb[235]],_0x9494x2[_0x7ddb[236]]/ _0x9494x5- _0x9494x4[_0x7ddb[236]]);return new mxPoint((_0x9494x3[_0x7ddb[235]]- _0x9494x2[_0x7ddb[235]])* _0x9494x5,(_0x9494x3[_0x7ddb[236]]- _0x9494x2[_0x7ddb[236]])* _0x9494x5)};mxMorphing[_0x7ddb[202]][_0x7ddb[1196]]= function(_0x9494x2){var _0x9494x3=null;null!= _0x9494x2&& (_0x9494x3= this[_0x7ddb[1196]](this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[1197]](_0x9494x2)),_0x9494x2= this[_0x7ddb[1179]][_0x7ddb[1198]](_0x9494x2),null!= _0x9494x2&& (_0x9494x3[_0x7ddb[235]]+= _0x9494x2[_0x7ddb[235]],_0x9494x3[_0x7ddb[236]]+= _0x9494x2[_0x7ddb[236]]));null== _0x9494x3&& (_0x9494x3= this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[512]](),_0x9494x3= new mxPoint(-_0x9494x3[_0x7ddb[235]],-_0x9494x3[_0x7ddb[236]]));return _0x9494x3};function mxImageBundle(_0x9494x2){this[_0x7ddb[1199]]= [];this[_0x7ddb[1200]]= null!= _0x9494x2?_0x9494x2:!1}mxImageBundle[_0x7ddb[202]][_0x7ddb[1199]]= null;mxImageBundle[_0x7ddb[202]][_0x7ddb[1199]]= null;mxImageBundle[_0x7ddb[202]][_0x7ddb[1201]]= function(_0x9494x2,_0x9494x3,_0x9494x4){this[_0x7ddb[1199]][_0x9494x2]= {value:_0x9494x3,fallback:_0x9494x4}};mxImageBundle[_0x7ddb[202]][_0x7ddb[1202]]= function(_0x9494x2){var _0x9494x3=null;null!= _0x9494x2&& (_0x9494x2= this[_0x7ddb[1199]][_0x9494x2],null!= _0x9494x2&& (_0x9494x3= this[_0x7ddb[1200]]?_0x9494x2[_0x7ddb[1203]]:_0x9494x2[_0x7ddb[131]]));return _0x9494x3};function mxImageExport(){}mxImageExport[_0x7ddb[202]][_0x7ddb[1204]]= !1;mxImageExport[_0x7ddb[202]][_0x7ddb[1205]]= function(_0x9494x2,_0x9494x3){null!= _0x9494x2&& (this[_0x7ddb[1207]](_0x9494x2,_0x9494x3,this[_0x7ddb[1206]]),this[_0x7ddb[1204]]&& this[_0x7ddb[1207]](_0x9494x2,_0x9494x3,this[_0x7ddb[1208]]))};mxImageExport[_0x7ddb[202]][_0x7ddb[1207]]= function(_0x9494x2,_0x9494x3,_0x9494x4){if(null!= _0x9494x2){_0x9494x4(_0x9494x2,_0x9494x3);for(var _0x9494x5=_0x9494x2[_0x7ddb[441]][_0x7ddb[1179]],_0x9494x9=_0x9494x5[_0x7ddb[251]][_0x7ddb[262]](_0x9494x2[_0x7ddb[246]]),_0x9494xa=0;_0x9494xa< _0x9494x9;_0x9494xa++){var _0x9494x12=_0x9494x5[_0x7ddb[441]][_0x7ddb[248]](_0x9494x5[_0x7ddb[251]][_0x7ddb[263]](_0x9494x2[_0x7ddb[246]],_0x9494xa));this[_0x7ddb[1207]](_0x9494x12,_0x9494x3,_0x9494x4)}}};mxImageExport[_0x7ddb[202]][_0x7ddb[1206]]= function(_0x9494x2,_0x9494x3){_0x9494x2[_0x7ddb[253]] instanceof mxShape&& (_0x9494x3[_0x7ddb[815]](),_0x9494x2[_0x7ddb[253]][_0x7ddb[1209]](_0x9494x3),_0x9494x3[_0x7ddb[1210]]());null!= _0x9494x2[_0x7ddb[963]]&& (_0x9494x3[_0x7ddb[815]](),_0x9494x2[_0x7ddb[963]][_0x7ddb[1209]](_0x9494x3),_0x9494x3[_0x7ddb[1210]]())};mxImageExport[_0x7ddb[202]][_0x7ddb[1208]]= function(_0x9494x2,_0x9494x3){null!= _0x9494x2[_0x7ddb[1211]]&& _0x9494x2[_0x7ddb[1211]][_0x7ddb[209]](function(_0x9494x2,_0x9494x5){_0x9494x5 instanceof mxShape&& _0x9494x5[_0x7ddb[1209]](_0x9494x3)})};function mxAbstractCanvas2D(){this[_0x7ddb[1212]]= this[_0x7ddb[1213]]();this[_0x7ddb[862]]()}mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[724]]= null;mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1214]]= null;mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1215]]= null;mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1216]]= !0;mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1217]]= 0;mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1218]]= 0;mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1219]]= _0x7ddb[1220];mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1221]]= _0x7ddb[1222];mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1223]]= _0x7ddb[1224];mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1225]]= _0x7ddb[1226];mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1227]]= _0x7ddb[1228];mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1229]]= !1;mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1213]]= function(){return new mxUrlConverter};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[862]]= function(){this[_0x7ddb[724]]= this[_0x7ddb[1230]]();this[_0x7ddb[1214]]= []};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1230]]= 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:_0x7ddb[1231],lineCap:_0x7ddb[1232],lineJoin:_0x7ddb[1233],miterLimit:10,fontColor:_0x7ddb[1234],fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants[_0x7ddb[483]],fontFamily:mxConstants[_0x7ddb[484]],fontStyle:0,shadow:!1,shadowColor:mxConstants[_0x7ddb[1235]],shadowAlpha:mxConstants[_0x7ddb[1236]],shadowDx:mxConstants[_0x7ddb[1237]],shadowDy:mxConstants[_0x7ddb[1238]],rotation:0,rotationCx:0,rotationCy:0}};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1239]]= function(_0x9494x2){return Math[_0x7ddb[488]](parseFloat(_0x9494x2))};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1240]]= function(){if(null!= this[_0x7ddb[1215]]&& (this[_0x7ddb[1215]][_0x7ddb[207]](arguments[0]),2< arguments[_0x7ddb[67]])){for(var _0x9494x2=this[_0x7ddb[724]],_0x9494x3=2;_0x9494x3< arguments[_0x7ddb[67]];_0x9494x3+= 2){this[_0x7ddb[1217]]= arguments[_0x9494x3- 1],this[_0x7ddb[1218]]= arguments[_0x9494x3],this[_0x7ddb[1215]][_0x7ddb[207]](this[_0x7ddb[1239]]((this[_0x7ddb[1217]]+ _0x9494x2[_0x7ddb[1126]])* _0x9494x2[_0x7ddb[255]])),this[_0x7ddb[1215]][_0x7ddb[207]](this[_0x7ddb[1239]]((this[_0x7ddb[1218]]+ _0x9494x2[_0x7ddb[1125]])* _0x9494x2[_0x7ddb[255]]))}}};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1241]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x9494x4*= Math[_0x7ddb[424]]/ 180;return mxUtils[_0x7ddb[432]]( new mxPoint(_0x9494x2,_0x9494x3),Math[_0x7ddb[426]](_0x9494x4),Math[_0x7ddb[427]](_0x9494x4), new mxPoint(_0x9494x5,_0x9494x9))};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[815]]= function(){this[_0x7ddb[1214]][_0x7ddb[207]](this[_0x7ddb[724]]);this[_0x7ddb[724]]= mxUtils[_0x7ddb[238]](this[_0x7ddb[724]])};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1210]]= function(){this[_0x7ddb[724]]= this[_0x7ddb[1214]][_0x7ddb[1242]]()};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[255]]= function(_0x9494x2){this[_0x7ddb[724]][_0x7ddb[255]]*= _0x9494x2;this[_0x7ddb[724]][_0x7ddb[610]]*= _0x9494x2};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[513]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[724]][_0x7ddb[1126]]+= _0x9494x2;this[_0x7ddb[724]][_0x7ddb[1125]]+= _0x9494x3};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1243]]= function(_0x9494x2){this[_0x7ddb[724]][_0x7ddb[1244]]= _0x9494x2};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1245]]= function(_0x9494x2){_0x9494x2== mxConstants[_0x7ddb[217]]&& (_0x9494x2= null);this[_0x7ddb[724]][_0x7ddb[604]]= _0x9494x2;this[_0x7ddb[724]][_0x7ddb[606]]= null};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1246]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13,_0x9494x14){_0x9494x4= this[_0x7ddb[724]];_0x9494x4[_0x7ddb[604]]= _0x9494x2;_0x9494x4[_0x7ddb[1247]]= null!= _0x9494x13?_0x9494x13:1;_0x9494x4[_0x7ddb[606]]= _0x9494x3;_0x9494x4[_0x7ddb[1248]]= null!= _0x9494x14?_0x9494x14:1;_0x9494x4[_0x7ddb[607]]= _0x9494x12};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1249]]= function(_0x9494x2){_0x9494x2== mxConstants[_0x7ddb[217]]&& (_0x9494x2= null);this[_0x7ddb[724]][_0x7ddb[608]]= _0x9494x2};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1250]]= function(_0x9494x2){this[_0x7ddb[724]][_0x7ddb[610]]= _0x9494x2};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1251]]= function(_0x9494x2){this[_0x7ddb[724]][_0x7ddb[648]]= _0x9494x2};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1252]]= function(_0x9494x2){this[_0x7ddb[724]][_0x7ddb[649]]= _0x9494x2};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1253]]= function(_0x9494x2){this[_0x7ddb[724]][_0x7ddb[1254]]= _0x9494x2};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1255]]= function(_0x9494x2){this[_0x7ddb[724]][_0x7ddb[1256]]= _0x9494x2};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1257]]= function(_0x9494x2){this[_0x7ddb[724]][_0x7ddb[1258]]= _0x9494x2};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1259]]= function(_0x9494x2){_0x9494x2== mxConstants[_0x7ddb[217]]&& (_0x9494x2= null);this[_0x7ddb[724]][_0x7ddb[665]]= _0x9494x2};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1260]]= function(_0x9494x2){_0x9494x2== mxConstants[_0x7ddb[217]]&& (_0x9494x2= null);this[_0x7ddb[724]][_0x7ddb[1261]]= _0x9494x2};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1262]]= function(_0x9494x2){_0x9494x2== mxConstants[_0x7ddb[217]]&& (_0x9494x2= null);this[_0x7ddb[724]][_0x7ddb[1263]]= _0x9494x2};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1264]]= function(_0x9494x2){this[_0x7ddb[724]][_0x7ddb[487]]= _0x9494x2};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1265]]= function(_0x9494x2){this[_0x7ddb[724]][_0x7ddb[486]]= _0x9494x2};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1266]]= function(_0x9494x2){null== _0x9494x2&& (_0x9494x2= 0);this[_0x7ddb[724]][_0x7ddb[666]]= _0x9494x2};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1267]]= function(_0x9494x2){this[_0x7ddb[724]][_0x7ddb[639]]= _0x9494x2};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1268]]= function(_0x9494x2){_0x9494x2== mxConstants[_0x7ddb[217]]&& (_0x9494x2= null);this[_0x7ddb[724]][_0x7ddb[1269]]= _0x9494x2};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1270]]= function(_0x9494x2){this[_0x7ddb[724]][_0x7ddb[1271]]= _0x9494x2};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1272]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[724]][_0x7ddb[1273]]= _0x9494x2;this[_0x7ddb[724]][_0x7ddb[1274]]= _0x9494x3};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1275]]= function(){this[_0x7ddb[1218]]= this[_0x7ddb[1217]]= 0;this[_0x7ddb[1215]]= []};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1276]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[1240]](this[_0x7ddb[1219]],_0x9494x2,_0x9494x3)};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1277]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[1240]](this[_0x7ddb[1221]],_0x9494x2,_0x9494x3)};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1278]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){this[_0x7ddb[1240]](this[_0x7ddb[1223]],_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5)};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1279]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){this[_0x7ddb[1240]](this[_0x7ddb[1225]],_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa)};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1280]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12){_0x9494x2= mxUtils[_0x7ddb[1281]](this[_0x7ddb[1217]],this[_0x7ddb[1218]],_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12);for(_0x9494x3= 0;_0x9494x3< _0x9494x2[_0x7ddb[67]];_0x9494x3+= 6){this[_0x7ddb[1279]](_0x9494x2[_0x9494x3],_0x9494x2[_0x9494x3+ 1],_0x9494x2[_0x9494x3+ 2],_0x9494x2[_0x9494x3+ 3],_0x9494x2[_0x9494x3+ 4],_0x9494x2[_0x9494x3+ 5])}};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[268]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){this[_0x7ddb[1240]](this[_0x7ddb[1227]])};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1282]]= function(){};function mxXmlCanvas2D(_0x9494x2){mxAbstractCanvas2D[_0x7ddb[239]](this);this[_0x7ddb[813]]= _0x9494x2;this[_0x7ddb[1283]]()}mxUtils[_0x7ddb[1284]](mxXmlCanvas2D,mxAbstractCanvas2D);mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1285]]= !0;mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1286]]= !0;mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1283]]= function(){var _0x9494x2;_0x9494x2= this[_0x7ddb[55]](_0x7ddb[1287]);_0x9494x2[_0x7ddb[57]](_0x7ddb[1288],mxConstants.DEFAULT_FONTFAMILY);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x2);_0x9494x2= this[_0x7ddb[55]](_0x7ddb[1289]);_0x9494x2[_0x7ddb[57]](_0x7ddb[803],mxConstants.DEFAULT_FONTSIZE);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x2);_0x9494x2= this[_0x7ddb[55]](_0x7ddb[1290]);_0x9494x2[_0x7ddb[57]](_0x7ddb[352],mxConstants.SHADOWCOLOR);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x2);_0x9494x2= this[_0x7ddb[55]](_0x7ddb[1291]);_0x9494x2[_0x7ddb[57]](_0x7ddb[1244],mxConstants.SHADOW_OPACITY);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x2);_0x9494x2= this[_0x7ddb[55]](_0x7ddb[1292]);_0x9494x2[_0x7ddb[57]](_0x7ddb[1126],mxConstants.SHADOW_OFFSET_X);_0x9494x2[_0x7ddb[57]](_0x7ddb[1125],mxConstants.SHADOW_OFFSET_Y);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x2)};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1239]]= function(_0x9494x2){return parseFloat(parseFloat(_0x9494x2)[_0x7ddb[1293]](2))};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[55]]= function(_0x9494x2){return this[_0x7ddb[813]][_0x7ddb[295]][_0x7ddb[55]](_0x9494x2)};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[815]]= function(){this[_0x7ddb[1286]]&& mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[815]][_0x7ddb[183]](this,arguments);this[_0x7ddb[813]][_0x7ddb[62]](this[_0x7ddb[55]](_0x7ddb[815]))};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1210]]= function(){this[_0x7ddb[1286]]&& mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1210]][_0x7ddb[183]](this,arguments);this[_0x7ddb[813]][_0x7ddb[62]](this[_0x7ddb[55]](_0x7ddb[1210]))};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[255]]= function(_0x9494x2){if(this[_0x7ddb[1286]]){if(this[_0x7ddb[724]][_0x7ddb[255]]== _0x9494x2){return};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1243]][_0x7ddb[183]](this,arguments)};var _0x9494x3=this[_0x7ddb[55]](_0x7ddb[255]);_0x9494x3[_0x7ddb[57]](_0x7ddb[255],_0x9494x2);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x3)};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[513]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[55]](_0x7ddb[513]);_0x9494x4[_0x7ddb[57]](_0x7ddb[1126],this[_0x7ddb[1239]](_0x9494x2));_0x9494x4[_0x7ddb[57]](_0x7ddb[1125],this[_0x7ddb[1239]](_0x9494x3));this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x4)};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1294]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){var _0x9494xa=this[_0x7ddb[55]](_0x7ddb[1294]);if(0!= _0x9494x2|| _0x9494x3|| _0x9494x4){_0x9494xa[_0x7ddb[57]](_0x7ddb[1295],this[_0x7ddb[1239]](_0x9494x2)),_0x9494xa[_0x7ddb[57]](_0x7ddb[623],_0x9494x3?_0x7ddb[500]:_0x7ddb[468]),_0x9494xa[_0x7ddb[57]](_0x7ddb[624],_0x9494x4?_0x7ddb[500]:_0x7ddb[468]),_0x9494xa[_0x7ddb[57]](_0x7ddb[1296],this[_0x7ddb[1239]](_0x9494x5)),_0x9494xa[_0x7ddb[57]](_0x7ddb[1297],this[_0x7ddb[1239]](_0x9494x9)),this[_0x7ddb[813]][_0x7ddb[62]](_0x9494xa)}};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1243]]= function(_0x9494x2){if(this[_0x7ddb[1286]]){if(this[_0x7ddb[724]][_0x7ddb[1244]]== _0x9494x2){return};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1243]][_0x7ddb[183]](this,arguments)};var _0x9494x3=this[_0x7ddb[55]](_0x7ddb[1244]);_0x9494x3[_0x7ddb[57]](_0x7ddb[1244],this[_0x7ddb[1239]](_0x9494x2));this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x3)};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1245]]= function(_0x9494x2){_0x9494x2== mxConstants[_0x7ddb[217]]&& (_0x9494x2= null);if(this[_0x7ddb[1286]]){if(this[_0x7ddb[724]][_0x7ddb[604]]== _0x9494x2){return};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1245]][_0x7ddb[183]](this,arguments)};var _0x9494x3=this[_0x7ddb[55]](_0x7ddb[1298]);_0x9494x3[_0x7ddb[57]](_0x7ddb[352],null!= _0x9494x2?_0x9494x2:mxConstants[_0x7ddb[217]]);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x3)};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1246]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13,_0x9494x14){if(null!= _0x9494x2&& null!= _0x9494x3){mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1246]][_0x7ddb[183]](this,arguments);var _0x9494x15=this[_0x7ddb[55]](_0x7ddb[1299]);_0x9494x15[_0x7ddb[57]](_0x7ddb[1300],_0x9494x2);_0x9494x15[_0x7ddb[57]](_0x7ddb[1301],_0x9494x3);_0x9494x15[_0x7ddb[57]](_0x7ddb[235],this[_0x7ddb[1239]](_0x9494x4));_0x9494x15[_0x7ddb[57]](_0x7ddb[236],this[_0x7ddb[1239]](_0x9494x5));_0x9494x15[_0x7ddb[57]](_0x7ddb[1302],this[_0x7ddb[1239]](_0x9494x9));_0x9494x15[_0x7ddb[57]](_0x7ddb[1303],this[_0x7ddb[1239]](_0x9494xa));null!= _0x9494x12&& _0x9494x15[_0x7ddb[57]](_0x7ddb[663],_0x9494x12);null!= _0x9494x13&& _0x9494x15[_0x7ddb[57]](_0x7ddb[1304],_0x9494x13);null!= _0x9494x14&& _0x9494x15[_0x7ddb[57]](_0x7ddb[1305],_0x9494x14);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x15)}};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1249]]= function(_0x9494x2){_0x9494x2== mxConstants[_0x7ddb[217]]&& (_0x9494x2= null);if(this[_0x7ddb[1286]]){if(this[_0x7ddb[724]][_0x7ddb[608]]== _0x9494x2){return};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1249]][_0x7ddb[183]](this,arguments)};var _0x9494x3=this[_0x7ddb[55]](_0x7ddb[1306]);_0x9494x3[_0x7ddb[57]](_0x7ddb[352],null!= _0x9494x2?_0x9494x2:mxConstants[_0x7ddb[217]]);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x3)};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1250]]= function(_0x9494x2){if(this[_0x7ddb[1286]]){if(this[_0x7ddb[724]][_0x7ddb[610]]== _0x9494x2){return};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1250]][_0x7ddb[183]](this,arguments)};var _0x9494x3=this[_0x7ddb[55]](_0x7ddb[1307]);_0x9494x3[_0x7ddb[57]](_0x7ddb[117],this[_0x7ddb[1239]](_0x9494x2));this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x3)};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1251]]= function(_0x9494x2){if(this[_0x7ddb[1286]]){if(this[_0x7ddb[724]][_0x7ddb[648]]== _0x9494x2){return};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1251]][_0x7ddb[183]](this,arguments)};var _0x9494x3=this[_0x7ddb[55]](_0x7ddb[648]);_0x9494x3[_0x7ddb[57]](_0x7ddb[648],_0x9494x2?_0x7ddb[500]:_0x7ddb[468]);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x3)};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1252]]= function(_0x9494x2){if(this[_0x7ddb[1286]]){if(this[_0x7ddb[724]][_0x7ddb[649]]== _0x9494x2){return};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1252]][_0x7ddb[183]](this,arguments)};var _0x9494x3=this[_0x7ddb[55]](_0x7ddb[1308]);_0x9494x3[_0x7ddb[57]](_0x7ddb[1309],_0x9494x2);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x3)};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1253]]= function(_0x9494x2){if(this[_0x7ddb[1286]]){if(this[_0x7ddb[724]][_0x7ddb[1254]]== _0x9494x2){return};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1253]][_0x7ddb[183]](this,arguments)};var _0x9494x3=this[_0x7ddb[55]](_0x7ddb[1310]);_0x9494x3[_0x7ddb[57]](_0x7ddb[1311],_0x9494x2);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x3)};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1255]]= function(_0x9494x2){if(this[_0x7ddb[1286]]){if(this[_0x7ddb[724]][_0x7ddb[1256]]== _0x9494x2){return};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1255]][_0x7ddb[183]](this,arguments)};var _0x9494x3=this[_0x7ddb[55]](_0x7ddb[1312]);_0x9494x3[_0x7ddb[57]](_0x7ddb[234],_0x9494x2);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x3)};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1257]]= function(_0x9494x2){if(this[_0x7ddb[1286]]){if(this[_0x7ddb[724]][_0x7ddb[1258]]== _0x9494x2){return};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1257]][_0x7ddb[183]](this,arguments)};var _0x9494x3=this[_0x7ddb[55]](_0x7ddb[1313]);_0x9494x3[_0x7ddb[57]](_0x7ddb[1314],_0x9494x2);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x3)};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1259]]= function(_0x9494x2){if(this[_0x7ddb[1285]]){_0x9494x2== mxConstants[_0x7ddb[217]]&& (_0x9494x2= null);if(this[_0x7ddb[1286]]){if(this[_0x7ddb[724]][_0x7ddb[665]]== _0x9494x2){return};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1259]][_0x7ddb[183]](this,arguments)};var _0x9494x3=this[_0x7ddb[55]](_0x7ddb[1315]);_0x9494x3[_0x7ddb[57]](_0x7ddb[352],null!= _0x9494x2?_0x9494x2:mxConstants[_0x7ddb[217]]);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x3)}};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1260]]= function(_0x9494x2){if(this[_0x7ddb[1285]]){_0x9494x2== mxConstants[_0x7ddb[217]]&& (_0x9494x2= null);if(this[_0x7ddb[1286]]){if(this[_0x7ddb[724]][_0x7ddb[1261]]== _0x9494x2){return};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1260]][_0x7ddb[183]](this,arguments)};var _0x9494x3=this[_0x7ddb[55]](_0x7ddb[1316]);_0x9494x3[_0x7ddb[57]](_0x7ddb[352],null!= _0x9494x2?_0x9494x2:mxConstants[_0x7ddb[217]]);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x3)}};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1262]]= function(_0x9494x2){if(this[_0x7ddb[1285]]){_0x9494x2== mxConstants[_0x7ddb[217]]&& (_0x9494x2= null);if(this[_0x7ddb[1286]]){if(this[_0x7ddb[724]][_0x7ddb[1263]]== _0x9494x2){return};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1262]][_0x7ddb[183]](this,arguments)};var _0x9494x3=this[_0x7ddb[55]](_0x7ddb[1317]);_0x9494x3[_0x7ddb[57]](_0x7ddb[352],null!= _0x9494x2?_0x9494x2:mxConstants[_0x7ddb[217]]);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x3)}};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1264]]= function(_0x9494x2){if(this[_0x7ddb[1285]]){if(this[_0x7ddb[1286]]){if(this[_0x7ddb[724]][_0x7ddb[487]]== _0x9494x2){return};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1264]][_0x7ddb[183]](this,arguments)};var _0x9494x3=this[_0x7ddb[55]](_0x7ddb[1289]);_0x9494x3[_0x7ddb[57]](_0x7ddb[803],_0x9494x2);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x3)}};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1265]]= function(_0x9494x2){if(this[_0x7ddb[1285]]){if(this[_0x7ddb[1286]]){if(this[_0x7ddb[724]][_0x7ddb[486]]== _0x9494x2){return};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1265]][_0x7ddb[183]](this,arguments)};var _0x9494x3=this[_0x7ddb[55]](_0x7ddb[1287]);_0x9494x3[_0x7ddb[57]](_0x7ddb[1288],_0x9494x2);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x3)}};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1266]]= function(_0x9494x2){if(this[_0x7ddb[1285]]){null== _0x9494x2&& (_0x9494x2= 0);if(this[_0x7ddb[1286]]){if(this[_0x7ddb[724]][_0x7ddb[666]]== _0x9494x2){return};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1266]][_0x7ddb[183]](this,arguments)};var _0x9494x3=this[_0x7ddb[55]](_0x7ddb[1318]);_0x9494x3[_0x7ddb[57]](_0x7ddb[124],_0x9494x2);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x3)}};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1267]]= function(_0x9494x2){if(this[_0x7ddb[1286]]){if(this[_0x7ddb[724]][_0x7ddb[639]]== _0x9494x2){return};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1267]][_0x7ddb[183]](this,arguments)};var _0x9494x3=this[_0x7ddb[55]](_0x7ddb[639]);_0x9494x3[_0x7ddb[57]](_0x7ddb[984],_0x9494x2?_0x7ddb[500]:_0x7ddb[468]);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x3)};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1268]]= function(_0x9494x2){if(this[_0x7ddb[1286]]){_0x9494x2== mxConstants[_0x7ddb[217]]&& (_0x9494x2= null);if(this[_0x7ddb[724]][_0x7ddb[1269]]== _0x9494x2){return};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1268]][_0x7ddb[183]](this,arguments)};var _0x9494x3=this[_0x7ddb[55]](_0x7ddb[1290]);_0x9494x3[_0x7ddb[57]](_0x7ddb[352],null!= _0x9494x2?_0x9494x2:mxConstants[_0x7ddb[217]]);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x3)};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1270]]= function(_0x9494x2){if(this[_0x7ddb[1286]]){if(this[_0x7ddb[724]][_0x7ddb[1271]]== _0x9494x2){return};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1270]][_0x7ddb[183]](this,arguments)};var _0x9494x3=this[_0x7ddb[55]](_0x7ddb[1291]);_0x9494x3[_0x7ddb[57]](_0x7ddb[1244],_0x9494x2);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x3)};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1272]]= function(_0x9494x2,_0x9494x3){if(this[_0x7ddb[1286]]){if(this[_0x7ddb[724]][_0x7ddb[1273]]== _0x9494x2&& this[_0x7ddb[724]][_0x7ddb[1274]]== _0x9494x3){return};mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1272]][_0x7ddb[183]](this,arguments)};var _0x9494x4=this[_0x7ddb[55]](_0x7ddb[1292]);_0x9494x4[_0x7ddb[57]](_0x7ddb[1126],_0x9494x2);_0x9494x4[_0x7ddb[57]](_0x7ddb[1125],_0x9494x3);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x4)};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1319]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){var _0x9494x9=this[_0x7ddb[55]](_0x7ddb[1319]);_0x9494x9[_0x7ddb[57]](_0x7ddb[235],this[_0x7ddb[1239]](_0x9494x2));_0x9494x9[_0x7ddb[57]](_0x7ddb[236],this[_0x7ddb[1239]](_0x9494x3));_0x9494x9[_0x7ddb[57]](_0x7ddb[1302],this[_0x7ddb[1239]](_0x9494x4));_0x9494x9[_0x7ddb[57]](_0x7ddb[1303],this[_0x7ddb[1239]](_0x9494x5));this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x9)};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1320]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){var _0x9494x12=this[_0x7ddb[55]](_0x7ddb[1320]);_0x9494x12[_0x7ddb[57]](_0x7ddb[235],this[_0x7ddb[1239]](_0x9494x2));_0x9494x12[_0x7ddb[57]](_0x7ddb[236],this[_0x7ddb[1239]](_0x9494x3));_0x9494x12[_0x7ddb[57]](_0x7ddb[1302],this[_0x7ddb[1239]](_0x9494x4));_0x9494x12[_0x7ddb[57]](_0x7ddb[1303],this[_0x7ddb[1239]](_0x9494x5));_0x9494x12[_0x7ddb[57]](_0x7ddb[1126],this[_0x7ddb[1239]](_0x9494x9));_0x9494x12[_0x7ddb[57]](_0x7ddb[1125],this[_0x7ddb[1239]](_0x9494xa));this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x12)};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[680]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){var _0x9494x9=this[_0x7ddb[55]](_0x7ddb[680]);_0x9494x9[_0x7ddb[57]](_0x7ddb[235],this[_0x7ddb[1239]](_0x9494x2));_0x9494x9[_0x7ddb[57]](_0x7ddb[236],this[_0x7ddb[1239]](_0x9494x3));_0x9494x9[_0x7ddb[57]](_0x7ddb[1302],this[_0x7ddb[1239]](_0x9494x4));_0x9494x9[_0x7ddb[57]](_0x7ddb[1303],this[_0x7ddb[1239]](_0x9494x5));this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x9)};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[618]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13){_0x9494x9= this[_0x7ddb[1212]][_0x7ddb[1321]](_0x9494x9);var _0x9494x14=this[_0x7ddb[55]](_0x7ddb[618]);_0x9494x14[_0x7ddb[57]](_0x7ddb[235],this[_0x7ddb[1239]](_0x9494x2));_0x9494x14[_0x7ddb[57]](_0x7ddb[236],this[_0x7ddb[1239]](_0x9494x3));_0x9494x14[_0x7ddb[57]](_0x7ddb[1302],this[_0x7ddb[1239]](_0x9494x4));_0x9494x14[_0x7ddb[57]](_0x7ddb[1303],this[_0x7ddb[1239]](_0x9494x5));_0x9494x14[_0x7ddb[57]](_0x7ddb[390],_0x9494x9);_0x9494x14[_0x7ddb[57]](_0x7ddb[1322],_0x9494xa?_0x7ddb[500]:_0x7ddb[468]);_0x9494x14[_0x7ddb[57]](_0x7ddb[623],_0x9494x12?_0x7ddb[500]:_0x7ddb[468]);_0x9494x14[_0x7ddb[57]](_0x7ddb[624],_0x9494x13?_0x7ddb[500]:_0x7ddb[468]);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x14)};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1275]]= function(){this[_0x7ddb[813]][_0x7ddb[62]](this[_0x7ddb[55]](_0x7ddb[1275]));this[_0x7ddb[1218]]= this[_0x7ddb[1217]]= 0};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1276]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[55]](_0x7ddb[582]);_0x9494x4[_0x7ddb[57]](_0x7ddb[235],this[_0x7ddb[1239]](_0x9494x2));_0x9494x4[_0x7ddb[57]](_0x7ddb[236],this[_0x7ddb[1239]](_0x9494x3));this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x4);this[_0x7ddb[1217]]= _0x9494x2;this[_0x7ddb[1218]]= _0x9494x3};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1277]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[55]](_0x7ddb[683]);_0x9494x4[_0x7ddb[57]](_0x7ddb[235],this[_0x7ddb[1239]](_0x9494x2));_0x9494x4[_0x7ddb[57]](_0x7ddb[236],this[_0x7ddb[1239]](_0x9494x3));this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x4);this[_0x7ddb[1217]]= _0x9494x2;this[_0x7ddb[1218]]= _0x9494x3};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1278]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){var _0x9494x9=this[_0x7ddb[55]](_0x7ddb[1323]);_0x9494x9[_0x7ddb[57]](_0x7ddb[1324],this[_0x7ddb[1239]](_0x9494x2));_0x9494x9[_0x7ddb[57]](_0x7ddb[1325],this[_0x7ddb[1239]](_0x9494x3));_0x9494x9[_0x7ddb[57]](_0x7ddb[1326],this[_0x7ddb[1239]](_0x9494x4));_0x9494x9[_0x7ddb[57]](_0x7ddb[1327],this[_0x7ddb[1239]](_0x9494x5));this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x9);this[_0x7ddb[1217]]= _0x9494x4;this[_0x7ddb[1218]]= _0x9494x5};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1279]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){var _0x9494x12=this[_0x7ddb[55]](_0x7ddb[1328]);_0x9494x12[_0x7ddb[57]](_0x7ddb[1324],this[_0x7ddb[1239]](_0x9494x2));_0x9494x12[_0x7ddb[57]](_0x7ddb[1325],this[_0x7ddb[1239]](_0x9494x3));_0x9494x12[_0x7ddb[57]](_0x7ddb[1326],this[_0x7ddb[1239]](_0x9494x4));_0x9494x12[_0x7ddb[57]](_0x7ddb[1327],this[_0x7ddb[1239]](_0x9494x5));_0x9494x12[_0x7ddb[57]](_0x7ddb[1329],this[_0x7ddb[1239]](_0x9494x9));_0x9494x12[_0x7ddb[57]](_0x7ddb[1330],this[_0x7ddb[1239]](_0x9494xa));this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x12);this[_0x7ddb[1217]]= _0x9494x9;this[_0x7ddb[1218]]= _0x9494xa};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[268]]= function(){this[_0x7ddb[813]][_0x7ddb[62]](this[_0x7ddb[55]](_0x7ddb[268]))};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[963]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13,_0x9494x14,_0x9494x15,_0x9494x16,_0x9494x17){if(this[_0x7ddb[1285]]&& null!= _0x9494x9){mxUtils[_0x7ddb[1331]](_0x9494x9)&& (_0x9494x9= mxUtils[_0x7ddb[532]](_0x9494x9));var _0x9494x18=this[_0x7ddb[55]](_0x7ddb[963]);_0x9494x18[_0x7ddb[57]](_0x7ddb[235],this[_0x7ddb[1239]](_0x9494x2));_0x9494x18[_0x7ddb[57]](_0x7ddb[236],this[_0x7ddb[1239]](_0x9494x3));_0x9494x18[_0x7ddb[57]](_0x7ddb[1302],this[_0x7ddb[1239]](_0x9494x4));_0x9494x18[_0x7ddb[57]](_0x7ddb[1303],this[_0x7ddb[1239]](_0x9494x5));_0x9494x18[_0x7ddb[57]](_0x7ddb[1332],_0x9494x9);null!= _0x9494xa&& _0x9494x18[_0x7ddb[57]](_0x7ddb[611],_0x9494xa);null!= _0x9494x12&& _0x9494x18[_0x7ddb[57]](_0x7ddb[552],_0x9494x12);_0x9494x18[_0x7ddb[57]](_0x7ddb[1333],_0x9494x13?_0x7ddb[500]:_0x7ddb[468]);null== _0x9494x14&& (_0x9494x14= _0x7ddb[110]);_0x9494x18[_0x7ddb[57]](_0x7ddb[1239],_0x9494x14);null!= _0x9494x15&& _0x9494x18[_0x7ddb[57]](_0x7ddb[1334],_0x9494x15?_0x7ddb[500]:_0x7ddb[468]);null!= _0x9494x16&& _0x9494x18[_0x7ddb[57]](_0x7ddb[1335],_0x9494x16?_0x7ddb[500]:_0x7ddb[468]);null!= _0x9494x17&& _0x9494x18[_0x7ddb[57]](_0x7ddb[603],_0x9494x17);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x18)}};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1336]]= function(){this[_0x7ddb[813]][_0x7ddb[62]](this[_0x7ddb[55]](_0x7ddb[1336]))};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1334]]= function(){this[_0x7ddb[813]][_0x7ddb[62]](this[_0x7ddb[55]](_0x7ddb[1334]))};mxXmlCanvas2D[_0x7ddb[202]][_0x7ddb[1337]]= function(){this[_0x7ddb[813]][_0x7ddb[62]](this[_0x7ddb[55]](_0x7ddb[1338]))};function mxSvgCanvas2D(_0x9494x2,_0x9494x3){mxAbstractCanvas2D[_0x7ddb[239]](this);this[_0x7ddb[813]]= _0x9494x2;this[_0x7ddb[1339]]= [];this[_0x7ddb[1340]]= null;this[_0x7ddb[1341]]= null!= _0x9494x3?_0x9494x3:!1;var _0x9494x4=null;if(_0x9494x2[_0x7ddb[295]]!= document){for(_0x9494x4= _0x9494x2;null!= _0x9494x4&& _0x7ddb[571]!= _0x9494x4[_0x7ddb[301]];){_0x9494x4= _0x9494x4[_0x7ddb[265]]}};null!= _0x9494x4&& (0< _0x9494x4[_0x7ddb[64]](_0x7ddb[1340])[_0x7ddb[67]]&& (this[_0x7ddb[1340]]= _0x9494x4[_0x7ddb[64]](_0x7ddb[1340])[0]),null== this[_0x7ddb[1340]]&& (this[_0x7ddb[1340]]= this[_0x7ddb[55]](_0x7ddb[1340]),null!= _0x9494x4[_0x7ddb[285]]?_0x9494x4[_0x7ddb[950]](this[_0x7ddb[1340]],_0x9494x4[_0x7ddb[285]]):_0x9494x4[_0x7ddb[62]](this[_0x7ddb[1340]])),this[_0x7ddb[1341]]&& this[_0x7ddb[1340]][_0x7ddb[62]](this[_0x7ddb[1342]]()))}mxUtils[_0x7ddb[1284]](mxSvgCanvas2D,mxAbstractCanvas2D);mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[252]]= null;mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1343]]= !0;mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1285]]= !0;mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1344]]= !0;mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1345]]= 0;mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1346]]= 0;mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1347]]= !1;mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[862]]= function(){mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[862]][_0x7ddb[183]](this,arguments);this[_0x7ddb[1339]]= []};mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1342]]= function(_0x9494x2){_0x9494x2= this[_0x7ddb[55]](_0x7ddb[124]);_0x9494x2[_0x7ddb[57]](_0x7ddb[60],_0x7ddb[61]);mxUtils[_0x7ddb[53]](_0x9494x2,_0x7ddb[1348]+ mxConstants[_0x7ddb[484]]+ _0x7ddb[1349]+ mxConstants[_0x7ddb[483]]+ _0x7ddb[1350]);return _0x9494x2};mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[55]]= function(_0x9494x2,_0x9494x3){if(null!= this[_0x7ddb[813]][_0x7ddb[295]][_0x7ddb[509]]){return this[_0x7ddb[813]][_0x7ddb[295]][_0x7ddb[509]](_0x9494x3|| mxConstants[_0x7ddb[1351]],_0x9494x2)};var _0x9494x4=this[_0x7ddb[813]][_0x7ddb[295]][_0x7ddb[55]](_0x9494x2);null!= _0x9494x3&& _0x9494x4[_0x7ddb[57]](_0x7ddb[1352],_0x9494x3);return _0x9494x4};mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1353]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x7ddb[198]== _0x9494x2[_0x7ddb[225]](0)&& (_0x9494x2= _0x9494x2[_0x7ddb[85]](1));_0x7ddb[198]== _0x9494x3[_0x7ddb[225]](0)&& (_0x9494x3= _0x9494x3[_0x7ddb[85]](1));_0x9494x2= _0x9494x2[_0x7ddb[216]]()+ _0x7ddb[213]+ _0x9494x4;_0x9494x3= _0x9494x3[_0x7ddb[216]]()+ _0x7ddb[213]+ _0x9494x5;_0x9494x4= null;null== _0x9494x9|| _0x9494x9== mxConstants[_0x7ddb[1354]]?_0x9494x4= _0x7ddb[1355]:_0x9494x9== mxConstants[_0x7ddb[1356]]?_0x9494x4= _0x7ddb[1357]:(_0x9494x5= _0x9494x2,_0x9494x2= _0x9494x3,_0x9494x3= _0x9494x5,_0x9494x9== mxConstants[_0x7ddb[1358]]?_0x9494x4= _0x7ddb[1355]:_0x9494x9== mxConstants[_0x7ddb[1359]]&& (_0x9494x4= _0x7ddb[1357]));return _0x7ddb[1360]+ _0x9494x2+ _0x7ddb[213]+ _0x9494x3+ _0x7ddb[213]+ _0x9494x4};mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1361]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){var _0x9494xa=this[_0x7ddb[1353]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9),_0x9494x12=this[_0x7ddb[1339]][_0x9494xa];if(null== _0x9494x12){var _0x9494x13=this[_0x7ddb[813]][_0x7ddb[538]],_0x9494x14=0,_0x9494x15=_0x9494xa+ _0x7ddb[213]+ _0x9494x14;if(null!= _0x9494x13){for(_0x9494x12= _0x9494x13[_0x7ddb[295]][_0x7ddb[1362]](_0x9494x15);null!= _0x9494x12&& _0x9494x12[_0x7ddb[538]]!= _0x9494x13;){_0x9494x15= _0x9494xa+ _0x7ddb[213]+ _0x9494x14++,_0x9494x12= _0x9494x13[_0x7ddb[295]][_0x7ddb[1362]](_0x9494x15)}}else {_0x9494x15= _0x7ddb[1363]+ ++this[_0x7ddb[1346]]};null== _0x9494x12&& (_0x9494x12= this[_0x7ddb[1364]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9),_0x9494x12[_0x7ddb[57]](_0x7ddb[1363],_0x9494x15),null!= this[_0x7ddb[1340]]?this[_0x7ddb[1340]][_0x7ddb[62]](_0x9494x12):_0x9494x13[_0x7ddb[62]](_0x9494x12));this[_0x7ddb[1339]][_0x9494xa]= _0x9494x12};return _0x9494x12[_0x7ddb[284]](_0x7ddb[1363])};mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1364]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){var _0x9494xa=this[_0x7ddb[55]](_0x7ddb[1365]);_0x9494xa[_0x7ddb[57]](_0x7ddb[1324],_0x7ddb[1366]);_0x9494xa[_0x7ddb[57]](_0x7ddb[1325],_0x7ddb[1366]);_0x9494xa[_0x7ddb[57]](_0x7ddb[1326],_0x7ddb[1366]);_0x9494xa[_0x7ddb[57]](_0x7ddb[1327],_0x7ddb[1366]);null== _0x9494x9|| _0x9494x9== mxConstants[_0x7ddb[1354]]?_0x9494xa[_0x7ddb[57]](_0x7ddb[1327],_0x7ddb[118]):_0x9494x9== mxConstants[_0x7ddb[1356]]?_0x9494xa[_0x7ddb[57]](_0x7ddb[1326],_0x7ddb[118]):_0x9494x9== mxConstants[_0x7ddb[1358]]?_0x9494xa[_0x7ddb[57]](_0x7ddb[1325],_0x7ddb[118]):_0x9494x9== mxConstants[_0x7ddb[1359]]&& _0x9494xa[_0x7ddb[57]](_0x7ddb[1324],_0x7ddb[118]);_0x9494x4= 1> _0x9494x4?_0x7ddb[1367]+ _0x9494x4:_0x7ddb[110];_0x9494x9= this[_0x7ddb[55]](_0x7ddb[1076]);_0x9494x9[_0x7ddb[57]](_0x7ddb[1368],_0x7ddb[1366]);_0x9494x9[_0x7ddb[57]](_0x7ddb[124],_0x7ddb[1369]+ _0x9494x2+ _0x9494x4);_0x9494xa[_0x7ddb[62]](_0x9494x9);_0x9494x4= 1> _0x9494x5?_0x7ddb[1367]+ _0x9494x5:_0x7ddb[110];_0x9494x9= this[_0x7ddb[55]](_0x7ddb[1076]);_0x9494x9[_0x7ddb[57]](_0x7ddb[1368],_0x7ddb[118]);_0x9494x9[_0x7ddb[57]](_0x7ddb[124],_0x7ddb[1369]+ _0x9494x3+ _0x9494x4);_0x9494xa[_0x7ddb[62]](_0x9494x9);return _0x9494xa};mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1370]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[252]],_0x9494x5=this[_0x7ddb[724]];if(null!= _0x9494x4){if(_0x7ddb[1215]== _0x9494x4[_0x7ddb[301]]){if(null!= this[_0x7ddb[1215]]&& 0< this[_0x7ddb[1215]][_0x7ddb[67]]){_0x9494x4[_0x7ddb[57]](_0x7ddb[1371],this[_0x7ddb[1215]][_0x7ddb[234]](_0x7ddb[185]))}else {return}};_0x9494x2&& null!= _0x9494x5[_0x7ddb[604]]?this[_0x7ddb[1372]]():this[_0x7ddb[1341]]|| (_0x7ddb[680]== _0x9494x4[_0x7ddb[301]]&& mxClient[_0x7ddb[133]]&& !mxClient[_0x7ddb[76]]&& !mxClient[_0x7ddb[75]]?_0x9494x4[_0x7ddb[57]](_0x7ddb[1334],_0x7ddb[1373]):_0x9494x4[_0x7ddb[57]](_0x7ddb[1334],_0x7ddb[130]),_0x9494x2= !1);_0x9494x3&& null!= _0x9494x5[_0x7ddb[608]]?this[_0x7ddb[1374]]():this[_0x7ddb[1341]]|| _0x9494x4[_0x7ddb[57]](_0x7ddb[1336],_0x7ddb[130]);null!= _0x9494x5[_0x7ddb[535]]&& 0< _0x9494x5[_0x7ddb[535]][_0x7ddb[67]]&& _0x9494x4[_0x7ddb[57]](_0x7ddb[535],_0x9494x5[_0x7ddb[535]]);_0x9494x5[_0x7ddb[639]]&& this[_0x7ddb[813]][_0x7ddb[62]](this[_0x7ddb[1375]](_0x9494x4));0< this[_0x7ddb[1345]]&& !_0x9494x2&& this[_0x7ddb[813]][_0x7ddb[62]](this[_0x7ddb[1376]](_0x9494x4));this[_0x7ddb[1229]]&& (_0x7ddb[1215]!= _0x9494x4[_0x7ddb[301]]|| this[_0x7ddb[1215]][this[_0x7ddb[1215]][_0x7ddb[67]]- 1]== this[_0x7ddb[1227]])&& _0x9494x4[_0x7ddb[57]](_0x7ddb[1377],_0x7ddb[1378]);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x4)}};mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1372]]= function(){var _0x9494x2=this[_0x7ddb[724]];1> _0x9494x2[_0x7ddb[1244]]&& this[_0x7ddb[252]][_0x7ddb[57]](_0x7ddb[1379],_0x9494x2[_0x7ddb[1244]]);null!= _0x9494x2[_0x7ddb[604]]&& (null!= _0x9494x2[_0x7ddb[606]]?(_0x9494x2= this[_0x7ddb[1361]](_0x9494x2[_0x7ddb[604]],_0x9494x2[_0x7ddb[606]],_0x9494x2[_0x7ddb[1247]],_0x9494x2[_0x7ddb[1248]],_0x9494x2[_0x7ddb[607]]),this[_0x7ddb[252]][_0x7ddb[57]](_0x7ddb[1334],_0x7ddb[1380]+ _0x9494x2+ _0x7ddb[460])):this[_0x7ddb[252]][_0x7ddb[57]](_0x7ddb[1334],_0x9494x2[_0x7ddb[604]][_0x7ddb[216]]()))};mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1374]]= function(){var _0x9494x2=this[_0x7ddb[724]];this[_0x7ddb[252]][_0x7ddb[57]](_0x7ddb[1336],_0x9494x2[_0x7ddb[608]][_0x7ddb[216]]());1> _0x9494x2[_0x7ddb[1244]]&& this[_0x7ddb[252]][_0x7ddb[57]](_0x7ddb[1381],_0x9494x2[_0x7ddb[1244]]);var _0x9494x3=Math[_0x7ddb[160]](1,this[_0x7ddb[1239]](_0x9494x2[_0x7ddb[610]]* _0x9494x2[_0x7ddb[255]]));1!= _0x9494x3&& this[_0x7ddb[252]][_0x7ddb[57]](_0x7ddb[1382],_0x9494x3);_0x7ddb[1215]== this[_0x7ddb[252]][_0x7ddb[301]]&& this[_0x7ddb[1383]]();_0x9494x2[_0x7ddb[648]]&& this[_0x7ddb[252]][_0x7ddb[57]](_0x7ddb[1384],this[_0x7ddb[1385]](_0x9494x3))};mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1383]]= function(){var _0x9494x2=this[_0x7ddb[724]];null!= _0x9494x2[_0x7ddb[1256]]&& _0x7ddb[1233]!= _0x9494x2[_0x7ddb[1256]]&& this[_0x7ddb[252]][_0x7ddb[57]](_0x7ddb[1386],_0x9494x2[_0x7ddb[1256]]);if(null!= _0x9494x2[_0x7ddb[1254]]){var _0x9494x3=_0x9494x2[_0x7ddb[1254]];_0x7ddb[1232]== _0x9494x3&& (_0x9494x3= _0x7ddb[1387]);_0x7ddb[1387]!= _0x9494x3&& this[_0x7ddb[252]][_0x7ddb[57]](_0x7ddb[1388],_0x9494x3)};null!= _0x9494x2[_0x7ddb[1258]]&& (!this[_0x7ddb[1341]]|| 10!= _0x9494x2[_0x7ddb[1258]])&& this[_0x7ddb[252]][_0x7ddb[57]](_0x7ddb[1389],_0x9494x2[_0x7ddb[1258]])};mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1385]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[724]][_0x7ddb[649]][_0x7ddb[224]](_0x7ddb[185]),_0x9494x4=[];if(0< _0x9494x3[_0x7ddb[67]]){for(var _0x9494x5=0;_0x9494x5< _0x9494x3[_0x7ddb[67]];_0x9494x5++){_0x9494x4[_0x9494x5]= Number(_0x9494x3[_0x9494x5])* _0x9494x2}};return _0x9494x4[_0x7ddb[234]](_0x7ddb[185])};mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1376]]= function(_0x9494x2){_0x9494x2= _0x9494x2[_0x7ddb[511]](!0);var _0x9494x3=parseFloat(_0x9494x2[_0x7ddb[284]](_0x7ddb[1382])|| 1)+ this[_0x7ddb[1345]];_0x9494x2[_0x7ddb[57]](_0x7ddb[1377],_0x7ddb[1336]);_0x9494x2[_0x7ddb[57]](_0x7ddb[187],_0x7ddb[188]);_0x9494x2[_0x7ddb[1390]](_0x7ddb[1384]);_0x9494x2[_0x7ddb[57]](_0x7ddb[1382],_0x9494x3);_0x9494x2[_0x7ddb[57]](_0x7ddb[1334],_0x7ddb[130]);_0x9494x2[_0x7ddb[57]](_0x7ddb[1336],mxClient[_0x7ddb[71]]?_0x7ddb[130]:_0x7ddb[1391]);return _0x9494x2};mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1375]]= function(_0x9494x2){_0x9494x2= _0x9494x2[_0x7ddb[511]](!0);var _0x9494x3=this[_0x7ddb[724]];_0x7ddb[130]!= _0x9494x2[_0x7ddb[284]](_0x7ddb[1334])&& _0x9494x2[_0x7ddb[57]](_0x7ddb[1334],_0x9494x3[_0x7ddb[1269]]);_0x7ddb[130]!= _0x9494x2[_0x7ddb[284]](_0x7ddb[1336])&& _0x9494x2[_0x7ddb[57]](_0x7ddb[1336],_0x9494x3[_0x7ddb[1269]]);_0x9494x2[_0x7ddb[57]](_0x7ddb[535],_0x7ddb[536]+ this[_0x7ddb[1239]](_0x9494x3[_0x7ddb[1273]]* _0x9494x3[_0x7ddb[255]])+ _0x7ddb[537]+ this[_0x7ddb[1239]](_0x9494x3[_0x7ddb[1274]]* _0x9494x3[_0x7ddb[255]])+ _0x7ddb[460]+ (_0x9494x3[_0x7ddb[535]]|| _0x7ddb[110]));_0x9494x2[_0x7ddb[57]](_0x7ddb[461],_0x9494x3[_0x7ddb[1271]]);return _0x9494x2};mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1294]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){if(0!= _0x9494x2|| _0x9494x3|| _0x9494x4){var _0x9494xa=this[_0x7ddb[724]];_0x9494x5+= _0x9494xa[_0x7ddb[1126]];_0x9494x9+= _0x9494xa[_0x7ddb[1125]];_0x9494x5*= _0x9494xa[_0x7ddb[255]];_0x9494x9*= _0x9494xa[_0x7ddb[255]];_0x9494xa[_0x7ddb[535]]= _0x9494xa[_0x7ddb[535]]|| _0x7ddb[110];if(_0x9494x3&& _0x9494x4){_0x9494x2+= 180}else {if(_0x9494x3^ _0x9494x4){var _0x9494x12=_0x9494x3?_0x9494x5:0,_0x9494x13=_0x9494x3?-1:1,_0x9494x14=_0x9494x4?_0x9494x9:0,_0x9494x15=_0x9494x4?-1:1;_0x9494xa[_0x7ddb[535]]+= _0x7ddb[536]+ this[_0x7ddb[1239]](_0x9494x12)+ _0x7ddb[537]+ this[_0x7ddb[1239]](_0x9494x14)+ _0x7ddb[1392]+ this[_0x7ddb[1239]](_0x9494x13)+ _0x7ddb[537]+ this[_0x7ddb[1239]](_0x9494x15)+ _0x7ddb[1393]+ this[_0x7ddb[1239]](-_0x9494x12)+ _0x7ddb[537]+ this[_0x7ddb[1239]](-_0x9494x14)+ _0x7ddb[460]}};if(_0x9494x3?!_0x9494x4:_0x9494x4){_0x9494x2*= -1};0!= _0x9494x2&& (_0x9494xa[_0x7ddb[535]]+= _0x7ddb[1394]+ this[_0x7ddb[1239]](_0x9494x2)+ _0x7ddb[537]+ this[_0x7ddb[1239]](_0x9494x5)+ _0x7ddb[537]+ this[_0x7ddb[1239]](_0x9494x9)+ _0x7ddb[460]);_0x9494xa[_0x7ddb[603]]+= _0x9494x2;_0x9494xa[_0x7ddb[1395]]= _0x9494x5;_0x9494xa[_0x7ddb[1396]]= _0x9494x9}};mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1275]]= function(){mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1275]][_0x7ddb[183]](this,arguments);this[_0x7ddb[252]]= this[_0x7ddb[55]](_0x7ddb[1215])};mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1319]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){var _0x9494x9=this[_0x7ddb[724]],_0x9494xa=this[_0x7ddb[55]](_0x7ddb[1319]);_0x9494xa[_0x7ddb[57]](_0x7ddb[235],this[_0x7ddb[1239]]((_0x9494x2+ _0x9494x9[_0x7ddb[1126]])* _0x9494x9[_0x7ddb[255]]));_0x9494xa[_0x7ddb[57]](_0x7ddb[236],this[_0x7ddb[1239]]((_0x9494x3+ _0x9494x9[_0x7ddb[1125]])* _0x9494x9[_0x7ddb[255]]));_0x9494xa[_0x7ddb[57]](_0x7ddb[117],this[_0x7ddb[1239]](_0x9494x4* _0x9494x9[_0x7ddb[255]]));_0x9494xa[_0x7ddb[57]](_0x7ddb[119],this[_0x7ddb[1239]](_0x9494x5* _0x9494x9[_0x7ddb[255]]));this[_0x7ddb[252]]= _0x9494xa};mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1320]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){this[_0x7ddb[1319]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5);0< _0x9494x9&& this[_0x7ddb[252]][_0x7ddb[57]](_0x7ddb[1397],this[_0x7ddb[1239]](_0x9494x9* this[_0x7ddb[724]][_0x7ddb[255]]));0< _0x9494xa&& this[_0x7ddb[252]][_0x7ddb[57]](_0x7ddb[1398],this[_0x7ddb[1239]](_0x9494xa* this[_0x7ddb[724]][_0x7ddb[255]]))};mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[680]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){var _0x9494x9=this[_0x7ddb[724]],_0x9494xa=this[_0x7ddb[55]](_0x7ddb[680]);_0x9494xa[_0x7ddb[57]](_0x7ddb[1296],Math[_0x7ddb[488]]((_0x9494x2+ _0x9494x4/ 2+ _0x9494x9[_0x7ddb[1126]])* _0x9494x9[_0x7ddb[255]]));_0x9494xa[_0x7ddb[57]](_0x7ddb[1297],Math[_0x7ddb[488]]((_0x9494x3+ _0x9494x5/ 2+ _0x9494x9[_0x7ddb[1125]])* _0x9494x9[_0x7ddb[255]]));_0x9494xa[_0x7ddb[57]](_0x7ddb[1397],_0x9494x4/ 2* _0x9494x9[_0x7ddb[255]]);_0x9494xa[_0x7ddb[57]](_0x7ddb[1398],_0x9494x5/ 2* _0x9494x9[_0x7ddb[255]]);this[_0x7ddb[252]]= _0x9494xa};mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[618]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13){_0x9494x9= this[_0x7ddb[1212]][_0x7ddb[1321]](_0x9494x9);_0x9494xa= null!= _0x9494xa?_0x9494xa:!0;_0x9494x12= null!= _0x9494x12?_0x9494x12:!1;_0x9494x13= null!= _0x9494x13?_0x9494x13:!1;var _0x9494x14=this[_0x7ddb[724]];_0x9494x2+= _0x9494x14[_0x7ddb[1126]];_0x9494x3+= _0x9494x14[_0x7ddb[1125]];var _0x9494x15=this[_0x7ddb[55]](_0x7ddb[618]);_0x9494x15[_0x7ddb[57]](_0x7ddb[235],this[_0x7ddb[1239]](_0x9494x2* _0x9494x14[_0x7ddb[255]]));_0x9494x15[_0x7ddb[57]](_0x7ddb[236],this[_0x7ddb[1239]](_0x9494x3* _0x9494x14[_0x7ddb[255]]));_0x9494x15[_0x7ddb[57]](_0x7ddb[117],this[_0x7ddb[1239]](_0x9494x4* _0x9494x14[_0x7ddb[255]]));_0x9494x15[_0x7ddb[57]](_0x7ddb[119],this[_0x7ddb[1239]](_0x9494x5* _0x9494x14[_0x7ddb[255]]));null== _0x9494x15[_0x7ddb[1399]]?_0x9494x15[_0x7ddb[57]](_0x7ddb[1400],_0x9494x9):_0x9494x15[_0x7ddb[1399]](mxConstants.NS_XLINK,_0x7ddb[44],_0x9494x9);_0x9494xa|| _0x9494x15[_0x7ddb[57]](_0x7ddb[1401],_0x7ddb[130]);1> _0x9494x14[_0x7ddb[1244]]&& _0x9494x15[_0x7ddb[57]](_0x7ddb[461],_0x9494x14[_0x7ddb[1244]]);_0x9494x9= this[_0x7ddb[724]][_0x7ddb[535]]|| _0x7ddb[110];if(_0x9494x12|| _0x9494x13){var _0x9494x16=_0x9494xa= 1,_0x9494x17=0,_0x9494x18=0;_0x9494x12&& (_0x9494xa= -1,_0x9494x17= -_0x9494x4- 2* _0x9494x2);_0x9494x13&& (_0x9494x16= -1,_0x9494x18= -_0x9494x5- 2* _0x9494x3);_0x9494x9+= _0x7ddb[1402]+ _0x9494xa+ _0x7ddb[537]+ _0x9494x16+ _0x7ddb[1393]+ _0x9494x17+ _0x7ddb[537]+ _0x9494x18+ _0x7ddb[460]};0< _0x9494x9[_0x7ddb[67]]&& _0x9494x15[_0x7ddb[57]](_0x7ddb[535],_0x9494x9);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x15);this[_0x7ddb[1347]]&& (_0x9494x15[_0x7ddb[57]](_0x7ddb[124],_0x7ddb[1403]),_0x9494x15= this[_0x7ddb[55]](_0x7ddb[1319]),_0x9494x15[_0x7ddb[57]](_0x7ddb[187],_0x7ddb[188]),_0x9494x15[_0x7ddb[57]](_0x7ddb[1377],_0x7ddb[1334]),_0x9494x15[_0x7ddb[57]](_0x7ddb[235],this[_0x7ddb[1239]](_0x9494x2* _0x9494x14[_0x7ddb[255]])),_0x9494x15[_0x7ddb[57]](_0x7ddb[236],this[_0x7ddb[1239]](_0x9494x3* _0x9494x14[_0x7ddb[255]])),_0x9494x15[_0x7ddb[57]](_0x7ddb[117],this[_0x7ddb[1239]](_0x9494x4* _0x9494x14[_0x7ddb[255]])),_0x9494x15[_0x7ddb[57]](_0x7ddb[119],this[_0x7ddb[1239]](_0x9494x5* _0x9494x14[_0x7ddb[255]])),this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x15))};mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1404]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x9494x4= this[_0x7ddb[724]];_0x9494x5= _0x7ddb[1405]+ Math[_0x7ddb[488]](_0x9494x4[_0x7ddb[487]])+ _0x7ddb[1406]+ _0x9494x4[_0x7ddb[486]]+ _0x7ddb[1407]+ _0x9494x4[_0x7ddb[665]]+ _0x7ddb[1408]+ Math[_0x7ddb[488]](_0x9494x4[_0x7ddb[487]]* mxConstants[_0x7ddb[490]])+ _0x7ddb[1409]+ _0x9494x5;(_0x9494x4[_0x7ddb[666]]& mxConstants[_0x7ddb[1410]])== mxConstants[_0x7ddb[1410]]&& (_0x9494x5+= _0x7ddb[1411]);(_0x9494x4[_0x7ddb[666]]& mxConstants[_0x7ddb[1412]])== mxConstants[_0x7ddb[1412]]&& (_0x9494x5+= _0x7ddb[1413]);(_0x9494x4[_0x7ddb[666]]& mxConstants[_0x7ddb[1414]])== mxConstants[_0x7ddb[1414]]&& (_0x9494x5+= _0x7ddb[1415]);_0x9494x3== mxConstants[_0x7ddb[479]]?_0x9494x5+= _0x7ddb[1416]:_0x9494x3== mxConstants[_0x7ddb[480]]&& (_0x9494x5+= _0x7ddb[1417]);_0x9494x3= _0x7ddb[110];null!= _0x9494x4[_0x7ddb[1261]]&& (_0x9494x3+= _0x7ddb[1418]+ _0x9494x4[_0x7ddb[1261]]+ _0x7ddb[471]);null!= _0x9494x4[_0x7ddb[1263]]&& (_0x9494x3+= _0x7ddb[1419]+ _0x9494x4[_0x7ddb[1263]]+ _0x7ddb[471]);mxUtils[_0x7ddb[1331]](_0x9494x2)|| (_0x9494x4= document[_0x7ddb[55]](_0x7ddb[126]),_0x9494x4[_0x7ddb[339]]= _0x9494x2[_0x7ddb[230]](/</g,_0x7ddb[1421])[_0x7ddb[230]](/>/g,_0x7ddb[1420])[_0x7ddb[230]](/</g,_0x7ddb[334])[_0x7ddb[230]](/>/g,_0x7ddb[335]),_0x9494x2= _0x9494x4[_0x7ddb[131]],_0x9494x9?_0x9494x5+= _0x9494x3:0< _0x9494x3[_0x7ddb[67]]&& (_0x9494x2= _0x7ddb[1422]+ _0x9494x3+ _0x7ddb[1423]+ _0x9494x2+ _0x7ddb[1424]));if(!mxClient[_0x7ddb[80]]&& document[_0x7ddb[509]]){return _0x9494x9= document[_0x7ddb[509]](_0x7ddb[577],_0x7ddb[485]),_0x9494x9[_0x7ddb[57]](_0x7ddb[124],_0x9494x5),mxUtils[_0x7ddb[1331]](_0x9494x2)?this[_0x7ddb[813]][_0x7ddb[295]]!= document?_0x9494x9[_0x7ddb[62]](_0x9494x2[_0x7ddb[511]](!0)):_0x9494x9[_0x7ddb[62]](_0x9494x2):_0x9494x9[_0x7ddb[339]]= _0x9494x2,_0x9494x9};mxUtils[_0x7ddb[1331]](_0x9494x2)&& this[_0x7ddb[813]][_0x7ddb[295]]!= document&& (_0x9494x2= _0x9494x2[_0x7ddb[342]]);_0x9494x2= _0x9494x2[_0x7ddb[230]](/<br>/g,_0x7ddb[1426])[_0x7ddb[230]](/<hr>/g,_0x7ddb[1425]);return mxUtils[_0x7ddb[877]](_0x7ddb[1427]+ _0x9494x5+ _0x7ddb[1423]+ _0x9494x2+ _0x7ddb[1424])[_0x7ddb[158]]};mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[963]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13,_0x9494x14,_0x9494x15,_0x9494x16,_0x9494x17){if(this[_0x7ddb[1285]]&& null!= _0x9494x9){_0x9494x17= null!= _0x9494x17?_0x9494x17:0;var _0x9494x18=this[_0x7ddb[724]];_0x9494x2+= _0x9494x18[_0x7ddb[1126]];_0x9494x3+= _0x9494x18[_0x7ddb[1125]];if(this[_0x7ddb[1344]]&& _0x7ddb[1428]== _0x9494x14){var _0x9494x19=_0x7ddb[1429];_0x9494x16?(_0x9494x19+= _0x7ddb[1430],0< _0x9494x5&& (_0x9494x19+= _0x7ddb[1431]+ Math[_0x7ddb[488]](_0x9494x5)+ _0x7ddb[1409]),0< _0x9494x4&& (_0x9494x19+= _0x7ddb[1432]+ Math[_0x7ddb[488]](_0x9494x4)+ _0x7ddb[1409])):_0x9494x15&& (_0x9494x19+= _0x7ddb[1432]+ Math[_0x7ddb[488]](_0x9494x4)+ _0x7ddb[1409],0< _0x9494x5&& (_0x9494x19+= _0x7ddb[1431]+ Math[_0x7ddb[488]](_0x9494x5)+ _0x7ddb[1409]));_0x9494x13?(!_0x9494x16&& 0< _0x9494x4 && (_0x9494x19+= _0x7ddb[1432]+ Math[_0x7ddb[488]](_0x9494x4)+ _0x7ddb[1409]),_0x9494x19+= _0x7ddb[1433]):_0x9494x19+= _0x7ddb[1434];_0x9494x13= this[_0x7ddb[55]](_0x7ddb[449]);1> _0x9494x18[_0x7ddb[1244]]&& _0x9494x13[_0x7ddb[57]](_0x7ddb[461],_0x9494x18[_0x7ddb[1244]]);_0x9494x14= this[_0x7ddb[55]](_0x7ddb[1435]);_0x9494x14[_0x7ddb[57]](_0x7ddb[1377],_0x7ddb[1378]);_0x9494x19= this[_0x7ddb[1404]](_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x19,_0x9494x15);if(null!= _0x9494x19){_0x9494x13[_0x7ddb[62]](_0x9494x14);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x13);var _0x9494x1a=0;if(mxClient[_0x7ddb[80]]&& !mxClient[_0x7ddb[48]]){var _0x9494x1b=document[_0x7ddb[55]](_0x7ddb[485]);_0x9494x1b[_0x7ddb[124]][_0x7ddb[103]]= _0x9494x19[_0x7ddb[284]](_0x7ddb[124]);_0x9494x1b[_0x7ddb[124]][_0x7ddb[495]]= mxClient[_0x7ddb[496]]?_0x7ddb[497]:_0x7ddb[498];_0x9494x1b[_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[188];_0x9494x1b[_0x7ddb[339]]= mxUtils[_0x7ddb[1331]](_0x9494x9)?_0x9494x9[_0x7ddb[342]]:_0x9494x9;document[_0x7ddb[112]][_0x7ddb[62]](_0x9494x1b);_0x9494x1a= _0x9494x1b[_0x7ddb[359]];_0x9494x5= mxClient[_0x7ddb[496]]&& 0< _0x9494x5&& _0x9494x16?Math[_0x7ddb[243]](_0x9494x5,_0x9494x1b[_0x7ddb[167]]+ 2):_0x9494x1b[_0x7ddb[167]];_0x9494x1b[_0x7ddb[265]][_0x7ddb[266]](_0x9494x1b);_0x9494x14[_0x7ddb[62]](_0x9494x19)}else {this[_0x7ddb[813]][_0x7ddb[295]]!= document?(_0x9494x19[_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[188],document[_0x7ddb[112]][_0x7ddb[62]](_0x9494x19),_0x9494x1a= _0x9494x19[_0x7ddb[359]],_0x9494x5= _0x9494x19[_0x7ddb[167]],_0x9494x14[_0x7ddb[62]](_0x9494x19),_0x9494x19[_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[110]):(_0x9494x14[_0x7ddb[62]](_0x9494x19),_0x9494x1a= _0x9494x19[_0x7ddb[359]],_0x9494x5= _0x9494x19[_0x7ddb[167]])};_0x9494x4= _0x9494x15?Math[_0x7ddb[160]](_0x9494x4,_0x9494x1a):_0x9494x1a;1> _0x9494x18[_0x7ddb[1244]]&& _0x9494x13[_0x7ddb[57]](_0x7ddb[461],_0x9494x18[_0x7ddb[1244]]);_0x9494x15= _0x9494x9= 0;_0x9494xa== mxConstants[_0x7ddb[479]]?_0x9494x9-= _0x9494x4/ 2:_0x9494xa== mxConstants[_0x7ddb[480]]&& (_0x9494x9-= _0x9494x4);_0x9494x2+= _0x9494x9;_0x9494x12== mxConstants[_0x7ddb[481]]?_0x9494x15-= _0x9494x5/ 2:_0x9494x12== mxConstants[_0x7ddb[482]]&& (_0x9494x15-= _0x9494x5);_0x9494x3+= _0x9494x15;_0x9494xa= 1!= _0x9494x18[_0x7ddb[255]]?_0x7ddb[1402]+ _0x9494x18[_0x7ddb[255]]+ _0x7ddb[460]:_0x7ddb[110];0!= _0x9494x18[_0x7ddb[603]]&& this[_0x7ddb[1216]]?(_0x9494xa+= _0x7ddb[1394]+ _0x9494x18[_0x7ddb[603]]+ _0x7ddb[537]+ _0x9494x4/ 2+ _0x7ddb[537]+ _0x9494x5/ 2+ _0x7ddb[460],_0x9494x3= this[_0x7ddb[1241]]((_0x9494x2+ _0x9494x4/ 2)* _0x9494x18[_0x7ddb[255]],(_0x9494x3+ _0x9494x5/ 2)* _0x9494x18[_0x7ddb[255]],_0x9494x18[_0x7ddb[603]],_0x9494x18[_0x7ddb[1395]],_0x9494x18[_0x7ddb[1396]]),_0x9494x2= _0x9494x3[_0x7ddb[235]]- _0x9494x4* _0x9494x18[_0x7ddb[255]]/ 2,_0x9494x3= _0x9494x3[_0x7ddb[236]]- _0x9494x5* _0x9494x18[_0x7ddb[255]]/ 2):(_0x9494x2*= _0x9494x18[_0x7ddb[255]],_0x9494x3*= _0x9494x18[_0x7ddb[255]]);0!= _0x9494x17&& (_0x9494xa+= _0x7ddb[1394]+ _0x9494x17+ _0x7ddb[537]+ -_0x9494x9+ _0x7ddb[537]+ -_0x9494x15+ _0x7ddb[460]);_0x9494x13[_0x7ddb[57]](_0x7ddb[535],_0x7ddb[536]+ Math[_0x7ddb[488]](_0x9494x2)+ _0x7ddb[537]+ Math[_0x7ddb[488]](_0x9494x3)+ _0x7ddb[460]+ _0x9494xa);_0x9494x14[_0x7ddb[57]](_0x7ddb[117],Math[_0x7ddb[488]](Math[_0x7ddb[160]](1,_0x9494x4)));_0x9494x14[_0x7ddb[57]](_0x7ddb[119],Math[_0x7ddb[488]](Math[_0x7ddb[160]](1,_0x9494x5)))}}else {this[_0x7ddb[1436]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13,_0x9494x15,_0x9494x16,_0x9494x17)}}};mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1437]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){_0x9494x2= Math[_0x7ddb[488]](_0x9494x2);_0x9494x3= Math[_0x7ddb[488]](_0x9494x3);_0x9494x4= Math[_0x7ddb[488]](_0x9494x4);_0x9494x5= Math[_0x7ddb[488]](_0x9494x5);for(var _0x9494x9=_0x7ddb[1438]+ _0x9494x2+ _0x7ddb[213]+ _0x9494x3+ _0x7ddb[213]+ _0x9494x4+ _0x7ddb[213]+ _0x9494x5,_0x9494xa=0,_0x9494x12=_0x9494x9+ _0x7ddb[213]+ _0x9494xa;null!= document[_0x7ddb[1362]](_0x9494x12);){_0x9494x12= _0x9494x9+ _0x7ddb[213]+ ++_0x9494xa};clip= this[_0x7ddb[55]](_0x7ddb[1439]);clip[_0x7ddb[57]](_0x7ddb[1363],_0x9494x12);_0x9494x9= this[_0x7ddb[55]](_0x7ddb[1319]);_0x9494x9[_0x7ddb[57]](_0x7ddb[235],_0x9494x2);_0x9494x9[_0x7ddb[57]](_0x7ddb[236],_0x9494x3);_0x9494x9[_0x7ddb[57]](_0x7ddb[117],_0x9494x4);_0x9494x9[_0x7ddb[57]](_0x7ddb[119],_0x9494x5);clip[_0x7ddb[62]](_0x9494x9);return clip};mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1436]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13,_0x9494x14,_0x9494x15,_0x9494x16){_0x9494x16= null!= _0x9494x16?_0x9494x16:0;_0x9494x13= this[_0x7ddb[724]];var _0x9494x17=Math[_0x7ddb[488]](_0x9494x13[_0x7ddb[487]]),_0x9494x18=this[_0x7ddb[55]](_0x7ddb[449]),_0x9494x19=_0x9494x13[_0x7ddb[535]]|| _0x7ddb[110];0!= _0x9494x16&& (_0x9494x19+= _0x7ddb[1394]+ _0x9494x16+ _0x7ddb[537]+ this[_0x7ddb[1239]](_0x9494x2* _0x9494x13[_0x7ddb[255]])+ _0x7ddb[537]+ this[_0x7ddb[1239]](_0x9494x3* _0x9494x13[_0x7ddb[255]])+ _0x7ddb[460]);if(_0x9494x15&& 0< _0x9494x4&& 0< _0x9494x5){var _0x9494x1a=_0x9494x2;_0x9494x16= _0x9494x3;_0x9494xa== mxConstants[_0x7ddb[479]]?_0x9494x1a-= _0x9494x4/ 2:_0x9494xa== mxConstants[_0x7ddb[480]]&& (_0x9494x1a-= _0x9494x4);_0x9494x12== mxConstants[_0x7ddb[481]]?_0x9494x16-= _0x9494x5/ 2:_0x9494x12== mxConstants[_0x7ddb[482]]&& (_0x9494x16-= _0x9494x5);_0x9494x16= this[_0x7ddb[1437]](_0x9494x1a* _0x9494x13[_0x7ddb[255]]- 2,_0x9494x16* _0x9494x13[_0x7ddb[255]]- 2,_0x9494x4* _0x9494x13[_0x7ddb[255]]+ 4,_0x9494x5* _0x9494x13[_0x7ddb[255]]+ 4);null!= this[_0x7ddb[1340]]?this[_0x7ddb[1340]][_0x7ddb[62]](_0x9494x16):this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x16);_0x9494x18[_0x7ddb[57]](_0x7ddb[1440],_0x7ddb[1380]+ _0x9494x16[_0x7ddb[284]](_0x7ddb[1363])+ _0x7ddb[460])};this[_0x7ddb[1441]](_0x9494x18,_0x9494xa);_0x9494x16= _0x9494xa== mxConstants[_0x7ddb[480]]?_0x7ddb[1282]:_0x9494xa== mxConstants[_0x7ddb[479]]?_0x7ddb[554]:_0x7ddb[861];_0x7ddb[861]!= _0x9494x16&& _0x9494x18[_0x7ddb[57]](_0x7ddb[1442],_0x9494x16);(!this[_0x7ddb[1341]]|| _0x9494x17!= mxConstants[_0x7ddb[483]]) && _0x9494x18[_0x7ddb[57]](_0x7ddb[1443],Math[_0x7ddb[488]](_0x9494x17* _0x9494x13[_0x7ddb[255]])+ _0x7ddb[168]);0< _0x9494x19[_0x7ddb[67]]&& _0x9494x18[_0x7ddb[57]](_0x7ddb[535],_0x9494x19);1> _0x9494x13[_0x7ddb[1244]]&& _0x9494x18[_0x7ddb[57]](_0x7ddb[461],_0x9494x13[_0x7ddb[1244]]);var _0x9494x19=_0x9494x9[_0x7ddb[224]](_0x7ddb[192]),_0x9494x1a=Math[_0x7ddb[488]](_0x9494x17* mxConstants[_0x7ddb[490]]),_0x9494x1b=_0x9494x17+ (_0x9494x19[_0x7ddb[67]]- 1)* _0x9494x1a;_0x9494x16= _0x9494x3+ _0x9494x17- 1;_0x9494x12== mxConstants[_0x7ddb[481]]?(_0x9494x5= (this[_0x7ddb[1343]]&& _0x9494x15&& 0< _0x9494x5?Math[_0x7ddb[243]](_0x9494x1b,_0x9494x5):_0x9494x1b)/ 2,_0x9494x16-= _0x9494x5+ 1):_0x9494x12== mxConstants[_0x7ddb[482]]&& (_0x9494x5= this[_0x7ddb[1343]]&& _0x9494x15&& 0< _0x9494x5?Math[_0x7ddb[243]](_0x9494x1b,_0x9494x5):_0x9494x1b,_0x9494x16-= _0x9494x5+ 2);for(_0x9494x5= 0;_0x9494x5< _0x9494x19[_0x7ddb[67]];_0x9494x5++){0< _0x9494x19[_0x9494x5][_0x7ddb[67]]&& 0< mxUtils[_0x7ddb[330]](_0x9494x19[_0x9494x5])[_0x7ddb[67]]&& (_0x9494x15= this[_0x7ddb[55]](_0x7ddb[963]),_0x9494x15[_0x7ddb[57]](_0x7ddb[235],this[_0x7ddb[1239]](_0x9494x2* _0x9494x13[_0x7ddb[255]])),_0x9494x15[_0x7ddb[57]](_0x7ddb[236],this[_0x7ddb[1239]](_0x9494x16* _0x9494x13[_0x7ddb[255]])),mxUtils[_0x7ddb[53]](_0x9494x15,_0x9494x19[_0x9494x5]),_0x9494x18[_0x7ddb[62]](_0x9494x15)),_0x9494x16+= _0x9494x1a};this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x18);this[_0x7ddb[1444]](_0x9494x18,_0x9494x9,_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x1b,_0x9494xa,_0x9494x12,_0x9494x14)};mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1441]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[724]];_0x9494x2[_0x7ddb[57]](_0x7ddb[1334],_0x9494x3[_0x7ddb[665]]);(!this[_0x7ddb[1341]]|| _0x9494x3[_0x7ddb[486]]!= mxConstants[_0x7ddb[484]]) && _0x9494x2[_0x7ddb[57]](_0x7ddb[1445],_0x9494x3[_0x7ddb[486]]);(_0x9494x3[_0x7ddb[666]]& mxConstants[_0x7ddb[1410]])== mxConstants[_0x7ddb[1410]]&& _0x9494x2[_0x7ddb[57]](_0x7ddb[1446],_0x7ddb[1447]);(_0x9494x3[_0x7ddb[666]]& mxConstants[_0x7ddb[1412]])== mxConstants[_0x7ddb[1412]]&& _0x9494x2[_0x7ddb[57]](_0x7ddb[1448],_0x7ddb[1449]);(_0x9494x3[_0x7ddb[666]]& mxConstants[_0x7ddb[1414]])== mxConstants[_0x7ddb[1414]]&& _0x9494x2[_0x7ddb[57]](_0x7ddb[1450],_0x7ddb[355])};mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1444]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13,_0x9494x14){var _0x9494x15=this[_0x7ddb[724]];if(null!= _0x9494x15[_0x7ddb[1261]]|| null!= _0x9494x15[_0x7ddb[1263]]){var _0x9494x16=null;_0x9494x14?(_0x9494x12== mxConstants[_0x7ddb[479]]?_0x9494x4-= _0x9494x9/ 2:_0x9494x12== mxConstants[_0x7ddb[480]]&& (_0x9494x4-= _0x9494x9),_0x9494x13== mxConstants[_0x7ddb[481]]?_0x9494x5-= _0x9494xa/ 2:_0x9494x13== mxConstants[_0x7ddb[482]]&& (_0x9494x5-= _0x9494xa),_0x9494x16= new mxRectangle((_0x9494x4+ 1)* _0x9494x15[_0x7ddb[255]],_0x9494x5* _0x9494x15[_0x7ddb[255]],(_0x9494x9- 2)* _0x9494x15[_0x7ddb[255]],(_0x9494xa+ 2)* _0x9494x15[_0x7ddb[255]])):null!= _0x9494x2[_0x7ddb[1451]]&& this[_0x7ddb[813]][_0x7ddb[295]]== document?(_0x9494x16= _0x9494x2[_0x7ddb[1451]](),_0x9494x3= mxClient[_0x7ddb[80]]&& mxClient[_0x7ddb[48]],_0x9494x16= new mxRectangle(_0x9494x16[_0x7ddb[235]],_0x9494x16[_0x7ddb[236]]+ (_0x9494x3?0:1),_0x9494x16[_0x7ddb[117]],_0x9494x16[_0x7ddb[119]]+ (_0x9494x3?1:0))):(_0x9494x16= document[_0x7ddb[55]](_0x7ddb[485]),_0x9494x16[_0x7ddb[124]][_0x7ddb[489]]= Math[_0x7ddb[488]](_0x9494x15[_0x7ddb[487]]* mxConstants[_0x7ddb[490]])+ _0x7ddb[168],_0x9494x16[_0x7ddb[124]][_0x7ddb[487]]= Math[_0x7ddb[488]](_0x9494x15[_0x7ddb[487]])+ _0x7ddb[168],_0x9494x16[_0x7ddb[124]][_0x7ddb[486]]= _0x9494x15[_0x7ddb[486]],_0x9494x16[_0x7ddb[124]][_0x7ddb[493]]= _0x7ddb[494],_0x9494x16[_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[492],_0x9494x16[_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[188],_0x9494x16[_0x7ddb[124]][_0x7ddb[495]]= mxClient[_0x7ddb[496]]?_0x7ddb[497]:_0x7ddb[498],_0x9494x16[_0x7ddb[124]][_0x7ddb[499]]= _0x7ddb[500],(_0x9494x15[_0x7ddb[666]]& mxConstants[_0x7ddb[1410]])== mxConstants[_0x7ddb[1410]]&& (_0x9494x16[_0x7ddb[124]][_0x7ddb[1452]]= _0x7ddb[1447]),(_0x9494x15[_0x7ddb[666]]& mxConstants[_0x7ddb[1412]])== mxConstants[_0x7ddb[1412]]&& (_0x9494x16[_0x7ddb[124]][_0x7ddb[666]]= _0x7ddb[1449]),_0x9494x3= mxUtils[_0x7ddb[321]](_0x9494x3,!1),_0x9494x16[_0x7ddb[339]]= _0x9494x3[_0x7ddb[230]](/\n/g,_0x7ddb[1453]),document[_0x7ddb[112]][_0x7ddb[62]](_0x9494x16),_0x9494x9= _0x9494x16[_0x7ddb[359]],_0x9494xa= _0x9494x16[_0x7ddb[167]],_0x9494x16[_0x7ddb[265]][_0x7ddb[266]](_0x9494x16),_0x9494x12== mxConstants[_0x7ddb[479]]?_0x9494x4-= _0x9494x9/ 2:_0x9494x12== mxConstants[_0x7ddb[480]]&& (_0x9494x4-= _0x9494x9),_0x9494x13== mxConstants[_0x7ddb[481]]?_0x9494x5-= _0x9494xa/ 2:_0x9494x13== mxConstants[_0x7ddb[482]]&& (_0x9494x5-= _0x9494xa),_0x9494x16= new mxRectangle((_0x9494x4+ 1)* _0x9494x15[_0x7ddb[255]],(_0x9494x5+ 2)* _0x9494x15[_0x7ddb[255]],_0x9494x9* _0x9494x15[_0x7ddb[255]],(_0x9494xa+ 1)* _0x9494x15[_0x7ddb[255]]));null!= _0x9494x16&& (_0x9494x3= this[_0x7ddb[55]](_0x7ddb[1319]),_0x9494x3[_0x7ddb[57]](_0x7ddb[1334],_0x9494x15[_0x7ddb[1261]]|| _0x7ddb[130]),_0x9494x3[_0x7ddb[57]](_0x7ddb[1336],_0x9494x15[_0x7ddb[1263]]|| _0x7ddb[130]),_0x9494x3[_0x7ddb[57]](_0x7ddb[235],Math[_0x7ddb[519]](_0x9494x16[_0x7ddb[235]]- 1)),_0x9494x3[_0x7ddb[57]](_0x7ddb[236],Math[_0x7ddb[519]](_0x9494x16[_0x7ddb[236]]- 1)),_0x9494x3[_0x7ddb[57]](_0x7ddb[117],Math[_0x7ddb[430]](_0x9494x16[_0x7ddb[117]]+ 2)),_0x9494x3[_0x7ddb[57]](_0x7ddb[119],Math[_0x7ddb[430]](_0x9494x16[_0x7ddb[119]])),_0x9494x15= null!= _0x9494x15[_0x7ddb[1263]]?Math[_0x7ddb[160]](1,this[_0x7ddb[1239]](_0x9494x15[_0x7ddb[255]])):0,_0x9494x3[_0x7ddb[57]](_0x7ddb[1382],_0x9494x15),this[_0x7ddb[813]][_0x7ddb[295]]== document&& 1== mxUtils[_0x7ddb[1454]](_0x9494x15,2)&& _0x9494x3[_0x7ddb[57]](_0x7ddb[535],_0x7ddb[1455]),_0x9494x2[_0x7ddb[950]](_0x9494x3,_0x9494x2[_0x7ddb[285]]))}};mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1336]]= function(){this[_0x7ddb[1370]](!1,!0)};mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1334]]= function(){this[_0x7ddb[1370]](!0,!1)};mxSvgCanvas2D[_0x7ddb[202]][_0x7ddb[1337]]= function(){this[_0x7ddb[1370]](!0,!0)};var mxVmlCanvas2D=function(_0x9494x2){mxAbstractCanvas2D[_0x7ddb[239]](this);this[_0x7ddb[813]]= _0x9494x2};mxUtils[_0x7ddb[1284]](mxVmlCanvas2D,mxAbstractCanvas2D);mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[252]]= null;mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[1285]]= !0;mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[1219]]= _0x7ddb[1456];mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[1221]]= _0x7ddb[1457];mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[1225]]= _0x7ddb[1458];mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[1227]]= _0x7ddb[235];mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[1459]]= _0x7ddb[110];mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[1460]]= 1;mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[1370]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[252]],_0x9494x5=this[_0x7ddb[724]];if(null!= _0x9494x4){if(_0x7ddb[253]== _0x9494x4[_0x7ddb[301]]){if(null!= this[_0x7ddb[1215]]&& 0< this[_0x7ddb[1215]][_0x7ddb[67]]){_0x9494x4[_0x7ddb[1215]]= this[_0x7ddb[1215]][_0x7ddb[234]](_0x7ddb[185])+ _0x7ddb[1461],_0x9494x4[_0x7ddb[124]][_0x7ddb[117]]= this[_0x7ddb[813]][_0x7ddb[124]][_0x7ddb[117]],_0x9494x4[_0x7ddb[124]][_0x7ddb[119]]= this[_0x7ddb[813]][_0x7ddb[124]][_0x7ddb[119]],_0x9494x4[_0x7ddb[1462]]= parseInt(_0x9494x4[_0x7ddb[124]][_0x7ddb[117]])+ _0x7ddb[185]+ parseInt(_0x9494x4[_0x7ddb[124]][_0x7ddb[119]])}else {return}};_0x9494x4[_0x7ddb[1463]]= this[_0x7ddb[1239]](Math[_0x7ddb[160]](1,_0x9494x5[_0x7ddb[610]]* _0x9494x5[_0x7ddb[255]]/ this[_0x7ddb[1460]]))+ _0x7ddb[168];_0x9494x5[_0x7ddb[639]]&& this[_0x7ddb[813]][_0x7ddb[62]](this[_0x7ddb[1375]](_0x9494x4,_0x9494x2&& null!= _0x9494x5[_0x7ddb[604]],_0x9494x3&& null!= _0x9494x5[_0x7ddb[608]]));_0x9494x3&& null!= _0x9494x5[_0x7ddb[608]]?(_0x9494x4[_0x7ddb[1464]]= _0x7ddb[128],_0x9494x4[_0x7ddb[1306]]= _0x9494x5[_0x7ddb[608]]):_0x9494x4[_0x7ddb[1464]]= _0x7ddb[308];_0x9494x4[_0x7ddb[62]](this[_0x7ddb[1465]]());_0x9494x2&& null!= _0x9494x5[_0x7ddb[604]]?_0x9494x4[_0x7ddb[62]](this[_0x7ddb[1466]]()):this[_0x7ddb[1229]]&& (_0x7ddb[253]!= _0x9494x4[_0x7ddb[301]]|| this[_0x7ddb[1215]][this[_0x7ddb[1215]][_0x7ddb[67]]- 1]== this[_0x7ddb[1227]])?_0x9494x4[_0x7ddb[62]](this[_0x7ddb[1467]]()):_0x9494x4[_0x7ddb[1468]]= _0x7ddb[308];this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x4)}};mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[1467]]= function(){var _0x9494x2=document[_0x7ddb[55]](mxClient[_0x7ddb[463]]+ _0x7ddb[1469]);_0x9494x2[_0x7ddb[390]]= mxClient[_0x7ddb[88]]+ _0x7ddb[1470];_0x9494x2[_0x7ddb[60]]= _0x7ddb[1471];return _0x9494x2};mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[1466]]= function(){var _0x9494x2=this[_0x7ddb[724]],_0x9494x3=document[_0x7ddb[55]](mxClient[_0x7ddb[463]]+ _0x7ddb[1469]);_0x9494x3[_0x7ddb[352]]= _0x9494x2[_0x7ddb[604]];if(null!= _0x9494x2[_0x7ddb[606]]){_0x9494x3[_0x7ddb[60]]= _0x7ddb[1299];_0x9494x3[_0x7ddb[865]]= _0x7ddb[130];_0x9494x3[_0x7ddb[1472]]= _0x9494x2[_0x7ddb[606]];var _0x9494x4=180- _0x9494x2[_0x7ddb[603]],_0x9494x4=_0x9494x2[_0x7ddb[607]]== mxConstants[_0x7ddb[1359]]?_0x9494x4- (90+ (_0x7ddb[235]== this[_0x7ddb[813]][_0x7ddb[124]][_0x7ddb[1473]]?180:0)):_0x9494x2[_0x7ddb[607]]== mxConstants[_0x7ddb[1356]]?_0x9494x4+ (90+ (_0x7ddb[235]== this[_0x7ddb[813]][_0x7ddb[124]][_0x7ddb[1473]]?180:0)):_0x9494x2[_0x7ddb[607]]== mxConstants[_0x7ddb[1358]]?_0x9494x4- (180+ (_0x7ddb[236]== this[_0x7ddb[813]][_0x7ddb[124]][_0x7ddb[1473]]?-180:0)):_0x9494x4+ (_0x7ddb[236]== this[_0x7ddb[813]][_0x7ddb[124]][_0x7ddb[1473]]?-180:0);if(_0x7ddb[235]== this[_0x7ddb[813]][_0x7ddb[124]][_0x7ddb[1473]]|| _0x7ddb[236]== this[_0x7ddb[813]][_0x7ddb[124]][_0x7ddb[1473]]){_0x9494x4*= -1};_0x9494x3[_0x7ddb[1474]]= mxUtils[_0x7ddb[1454]](_0x9494x4,360);_0x9494x3[_0x7ddb[461]]= 100* _0x9494x2[_0x7ddb[1244]]* _0x9494x2[_0x7ddb[1247]]+ _0x7ddb[229];_0x9494x3[_0x7ddb[57]](mxClient[_0x7ddb[1475]]+ _0x7ddb[1476],100* _0x9494x2[_0x7ddb[1244]]* _0x9494x2[_0x7ddb[1248]]+ _0x7ddb[229])}else {1> _0x9494x2[_0x7ddb[1244]]&& (_0x9494x3[_0x7ddb[461]]= 100* _0x9494x2[_0x7ddb[1244]]+ _0x7ddb[229])};return _0x9494x3};mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[1465]]= function(){var _0x9494x2=this[_0x7ddb[724]],_0x9494x3=document[_0x7ddb[55]](mxClient[_0x7ddb[463]]+ _0x7ddb[1477]);_0x9494x3[_0x7ddb[1478]]= _0x9494x2[_0x7ddb[1254]]|| _0x7ddb[1232];_0x9494x3[_0x7ddb[1479]]= _0x9494x2[_0x7ddb[1256]]|| _0x7ddb[1233];_0x9494x3[_0x7ddb[1313]]= _0x9494x2[_0x7ddb[1258]]|| _0x7ddb[1480];1> _0x9494x2[_0x7ddb[1244]]&& (_0x9494x3[_0x7ddb[461]]= 100* _0x9494x2[_0x7ddb[1244]]+ _0x7ddb[229]);_0x9494x2[_0x7ddb[648]]&& (_0x9494x3[_0x7ddb[1481]]= this[_0x7ddb[1482]]());return _0x9494x3};mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[1482]]= function(){var _0x9494x2=_0x7ddb[1483];if(null!= this[_0x7ddb[724]][_0x7ddb[649]]){var _0x9494x3=this[_0x7ddb[724]][_0x7ddb[649]][_0x7ddb[224]](_0x7ddb[185]);0< _0x9494x3[_0x7ddb[67]]&& 1== _0x9494x3[0]&& (_0x9494x2= _0x7ddb[1484])};return _0x9494x2};mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[1375]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=this[_0x7ddb[724]],_0x9494x9=-_0x9494x5[_0x7ddb[603]]* (Math[_0x7ddb[424]]/ 180),_0x9494xa=Math[_0x7ddb[426]](_0x9494x9),_0x9494x9=Math[_0x7ddb[427]](_0x9494x9),_0x9494x12=_0x9494x5[_0x7ddb[1273]]* _0x9494x5[_0x7ddb[255]],_0x9494x13=_0x9494x5[_0x7ddb[1274]]* _0x9494x5[_0x7ddb[255]];_0x7ddb[235]== this[_0x7ddb[813]][_0x7ddb[124]][_0x7ddb[1473]]?_0x9494x12*= -1:_0x7ddb[236]== this[_0x7ddb[813]][_0x7ddb[124]][_0x7ddb[1473]]&& (_0x9494x13*= -1);var _0x9494x14=_0x9494x2[_0x7ddb[511]](!0);_0x9494x14[_0x7ddb[124]][_0x7ddb[945]]= Math[_0x7ddb[488]](_0x9494x12* _0x9494xa- _0x9494x13* _0x9494x9)+ _0x7ddb[168];_0x9494x14[_0x7ddb[124]][_0x7ddb[953]]= Math[_0x7ddb[488]](_0x9494x12* _0x9494x9+ _0x9494x13* _0x9494xa)+ _0x7ddb[168];8== document[_0x7ddb[5]]&& (_0x9494x14[_0x7ddb[1463]]= _0x9494x2[_0x7ddb[1463]],_0x7ddb[253]== _0x9494x2[_0x7ddb[301]]&& (_0x9494x14[_0x7ddb[1215]]= this[_0x7ddb[1215]][_0x7ddb[234]](_0x7ddb[185])+ _0x7ddb[1461],_0x9494x14[_0x7ddb[124]][_0x7ddb[117]]= this[_0x7ddb[813]][_0x7ddb[124]][_0x7ddb[117]],_0x9494x14[_0x7ddb[124]][_0x7ddb[119]]= this[_0x7ddb[813]][_0x7ddb[124]][_0x7ddb[119]],_0x9494x14[_0x7ddb[1462]]= parseInt(_0x9494x2[_0x7ddb[124]][_0x7ddb[117]])+ _0x7ddb[185]+ parseInt(_0x9494x2[_0x7ddb[124]][_0x7ddb[119]])));_0x9494x4?(_0x9494x14[_0x7ddb[1306]]= _0x9494x5[_0x7ddb[1269]],_0x9494x14[_0x7ddb[62]](this[_0x7ddb[1485]]())):_0x9494x14[_0x7ddb[1464]]= _0x7ddb[308];_0x9494x3?_0x9494x14[_0x7ddb[62]](this[_0x7ddb[1486]]()):_0x9494x14[_0x7ddb[1468]]= _0x7ddb[308];return _0x9494x14};mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[1486]]= function(){var _0x9494x2=document[_0x7ddb[55]](mxClient[_0x7ddb[463]]+ _0x7ddb[1469]);_0x9494x2[_0x7ddb[352]]= this[_0x7ddb[724]][_0x7ddb[1269]];_0x9494x2[_0x7ddb[461]]= 100* this[_0x7ddb[724]][_0x7ddb[1244]]* this[_0x7ddb[724]][_0x7ddb[1271]]+ _0x7ddb[229];return _0x9494x2};mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[1485]]= function(){var _0x9494x2=this[_0x7ddb[1465]]();_0x9494x2[_0x7ddb[461]]= 100* this[_0x7ddb[724]][_0x7ddb[1244]]* this[_0x7ddb[724]][_0x7ddb[1271]]+ _0x7ddb[229];return _0x9494x2};mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[1294]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x9494x3&& _0x9494x4?_0x9494x2+= 180:_0x9494x3?this[_0x7ddb[813]][_0x7ddb[124]][_0x7ddb[1473]]= _0x7ddb[235]:_0x9494x4&& (this[_0x7ddb[813]][_0x7ddb[124]][_0x7ddb[1473]]= _0x7ddb[236]);if(_0x9494x3?!_0x9494x4:_0x9494x4){_0x9494x2*= -1};this[_0x7ddb[813]][_0x7ddb[124]][_0x7ddb[603]]= _0x9494x2;this[_0x7ddb[724]][_0x7ddb[603]]+= _0x9494x2;this[_0x7ddb[724]][_0x7ddb[1395]]= _0x9494x5;this[_0x7ddb[724]][_0x7ddb[1396]]= _0x9494x9};mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[1275]]= function(){mxAbstractCanvas2D[_0x7ddb[202]][_0x7ddb[1275]][_0x7ddb[183]](this,arguments);this[_0x7ddb[252]]= document[_0x7ddb[55]](mxClient[_0x7ddb[463]]+ _0x7ddb[1487]);this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[492]};mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[1278]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){var _0x9494x9=this[_0x7ddb[724]],_0x9494xa=(this[_0x7ddb[1217]]+ _0x9494x9[_0x7ddb[1126]])* _0x9494x9[_0x7ddb[255]],_0x9494x12=(this[_0x7ddb[1218]]+ _0x9494x9[_0x7ddb[1125]])* _0x9494x9[_0x7ddb[255]];_0x9494x2= (_0x9494x2+ _0x9494x9[_0x7ddb[1126]])* _0x9494x9[_0x7ddb[255]];_0x9494x3= (_0x9494x3+ _0x9494x9[_0x7ddb[1125]])* _0x9494x9[_0x7ddb[255]];_0x9494x4= (_0x9494x4+ _0x9494x9[_0x7ddb[1126]])* _0x9494x9[_0x7ddb[255]];_0x9494x5= (_0x9494x5+ _0x9494x9[_0x7ddb[1125]])* _0x9494x9[_0x7ddb[255]];var _0x9494x12=_0x9494x12+ 2/ 3* (_0x9494x3- _0x9494x12),_0x9494x13=_0x9494x4+ 2/ 3* (_0x9494x2- _0x9494x4);_0x9494x3= _0x9494x5+ 2/ 3* (_0x9494x3- _0x9494x5);this[_0x7ddb[1215]][_0x7ddb[207]](_0x7ddb[1488]+ this[_0x7ddb[1239]](_0x9494xa+ 2/ 3* (_0x9494x2- _0x9494xa))+ _0x7ddb[185]+ this[_0x7ddb[1239]](_0x9494x12)+ _0x7ddb[185]+ this[_0x7ddb[1239]](_0x9494x13)+ _0x7ddb[185]+ this[_0x7ddb[1239]](_0x9494x3)+ _0x7ddb[185]+ this[_0x7ddb[1239]](_0x9494x4)+ _0x7ddb[185]+ this[_0x7ddb[1239]](_0x9494x5));this[_0x7ddb[1217]]= _0x9494x4/ _0x9494x9[_0x7ddb[255]]- _0x9494x9[_0x7ddb[1126]];this[_0x7ddb[1218]]= _0x9494x5/ _0x9494x9[_0x7ddb[255]]- _0x9494x9[_0x7ddb[1125]]};mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[1489]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){var _0x9494xa=this[_0x7ddb[724]];_0x9494x2= document[_0x7ddb[55]](_0x9494x2);_0x9494x2[_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[492];_0x9494x2[_0x7ddb[124]][_0x7ddb[361]]= this[_0x7ddb[1239]]((_0x9494x3+ _0x9494xa[_0x7ddb[1126]])* _0x9494xa[_0x7ddb[255]])+ _0x7ddb[168];_0x9494x2[_0x7ddb[124]][_0x7ddb[125]]= this[_0x7ddb[1239]]((_0x9494x4+ _0x9494xa[_0x7ddb[1125]])* _0x9494xa[_0x7ddb[255]])+ _0x7ddb[168];_0x9494x2[_0x7ddb[124]][_0x7ddb[117]]= this[_0x7ddb[1239]](_0x9494x5* _0x9494xa[_0x7ddb[255]])+ _0x7ddb[168];_0x9494x2[_0x7ddb[124]][_0x7ddb[119]]= this[_0x7ddb[1239]](_0x9494x9* _0x9494xa[_0x7ddb[255]])+ _0x7ddb[168];return _0x9494x2};mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[1319]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){this[_0x7ddb[252]]= this[_0x7ddb[1489]](mxClient[_0x7ddb[463]]+ _0x7ddb[1490],_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5)};mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[1320]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){this[_0x7ddb[252]]= this[_0x7ddb[1489]](mxClient[_0x7ddb[463]]+ _0x7ddb[1491],_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5);this[_0x7ddb[252]][_0x7ddb[57]](_0x7ddb[1492],Math[_0x7ddb[160]](100* _0x9494x9/ _0x9494x4,100* _0x9494xa/ _0x9494x5)+ _0x7ddb[229])};mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[680]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){this[_0x7ddb[252]]= this[_0x7ddb[1489]](mxClient[_0x7ddb[463]]+ _0x7ddb[1493],_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5)};mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[618]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13){var _0x9494x14=null;_0x9494xa?(_0x9494x14= this[_0x7ddb[1489]](mxClient[_0x7ddb[463]]+ _0x7ddb[1490],_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5),_0x9494x14[_0x7ddb[1464]]= _0x7ddb[308],_0x9494x2= document[_0x7ddb[55]](mxClient[_0x7ddb[463]]+ _0x7ddb[1469]),_0x9494x2[_0x7ddb[1322]]= _0x9494xa?_0x7ddb[1494]:_0x7ddb[1495],_0x9494x2[_0x7ddb[1294]]= _0x7ddb[128],_0x9494x2[_0x7ddb[60]]= _0x7ddb[1496],_0x9494x2[_0x7ddb[390]]= _0x9494x9,_0x9494x14[_0x7ddb[62]](_0x9494x2)):(_0x9494x14= this[_0x7ddb[1489]](mxClient[_0x7ddb[463]]+ _0x7ddb[464],_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5),_0x9494x14[_0x7ddb[390]]= _0x9494x9);_0x9494x12&& _0x9494x13?_0x9494x14[_0x7ddb[124]][_0x7ddb[603]]= _0x7ddb[1497]:_0x9494x12?_0x9494x14[_0x7ddb[124]][_0x7ddb[1473]]= _0x7ddb[235]:_0x9494x13&& (_0x9494x14[_0x7ddb[124]][_0x7ddb[1473]]= _0x7ddb[236]);1> this[_0x7ddb[724]][_0x7ddb[1244]]&& (_0x9494x14[_0x7ddb[124]][_0x7ddb[347]]+= _0x7ddb[459]+ 100* this[_0x7ddb[724]][_0x7ddb[1244]]+ _0x7ddb[460]);this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x14)};mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[1404]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){_0x9494x4= document[_0x7ddb[55]](_0x7ddb[485]);var _0x9494x9=this[_0x7ddb[724]],_0x9494xa=_0x7ddb[110];null!= _0x9494x9[_0x7ddb[1261]]&& (_0x9494xa+= _0x7ddb[1418]+ _0x9494x9[_0x7ddb[1261]]+ _0x7ddb[471]);null!= _0x9494x9[_0x7ddb[1263]]&& (_0x9494xa+= _0x7ddb[1419]+ _0x9494x9[_0x7ddb[1263]]+ _0x7ddb[471]);mxUtils[_0x7ddb[1331]](_0x9494x2)?_0x9494x4[_0x7ddb[62]](_0x9494x2):0< _0x9494xa[_0x7ddb[67]]&& !_0x9494x5?(_0x9494x5= document[_0x7ddb[55]](_0x7ddb[485]),_0x9494x5[_0x7ddb[124]][_0x7ddb[103]]= _0x9494xa,_0x9494x5[_0x7ddb[124]][_0x7ddb[495]]= mxClient[_0x7ddb[496]]?_0x7ddb[497]:_0x7ddb[498],_0x9494x5[_0x7ddb[124]][_0x7ddb[499]]= _0x7ddb[500],_0x9494x5[_0x7ddb[339]]= _0x9494x2,_0x9494x4[_0x7ddb[62]](_0x9494x5)):(_0x9494x4[_0x7ddb[124]][_0x7ddb[103]]= _0x9494xa,_0x9494x4[_0x7ddb[339]]= _0x9494x2);_0x9494x2= _0x9494x4[_0x7ddb[124]];_0x9494x2[_0x7ddb[487]]= Math[_0x7ddb[488]](_0x9494x9[_0x7ddb[487]]/ this[_0x7ddb[1460]])+ _0x7ddb[168];_0x9494x2[_0x7ddb[486]]= _0x9494x9[_0x7ddb[486]];_0x9494x2[_0x7ddb[352]]= _0x9494x9[_0x7ddb[665]];_0x9494x2[_0x7ddb[123]]= _0x7ddb[125];_0x9494x2[_0x7ddb[1165]]= _0x9494x3|| _0x7ddb[361];_0x9494x2[_0x7ddb[489]]= Math[_0x7ddb[488]](_0x9494x9[_0x7ddb[487]]* mxConstants[_0x7ddb[490]]/ this[_0x7ddb[1460]])+ _0x7ddb[168];(_0x9494x9[_0x7ddb[666]]& mxConstants[_0x7ddb[1410]])== mxConstants[_0x7ddb[1410]]&& (_0x9494x2[_0x7ddb[1452]]= _0x7ddb[1447]);(_0x9494x9[_0x7ddb[666]]& mxConstants[_0x7ddb[1412]])== mxConstants[_0x7ddb[1412]]&& (_0x9494x2[_0x7ddb[666]]= _0x7ddb[1449]);(_0x9494x9[_0x7ddb[666]]& mxConstants[_0x7ddb[1414]])== mxConstants[_0x7ddb[1414]]&& (_0x9494x2[_0x7ddb[1498]]= _0x7ddb[355]);return _0x9494x4};mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[963]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13,_0x9494x14,_0x9494x15,_0x9494x16,_0x9494x17){if(this[_0x7ddb[1285]]&& null!= _0x9494x9){var _0x9494x18=this[_0x7ddb[724]];if(_0x7ddb[1428]== _0x9494x14){null!= _0x9494x18[_0x7ddb[603]]&& (_0x9494x3= this[_0x7ddb[1241]](_0x9494x2,_0x9494x3,_0x9494x18[_0x7ddb[603]],_0x9494x18[_0x7ddb[1395]],_0x9494x18[_0x7ddb[1396]]),_0x9494x2= _0x9494x3[_0x7ddb[235]],_0x9494x3= _0x9494x3[_0x7ddb[236]]);8== document[_0x7ddb[5]]?(_0x9494x2+= _0x9494x18[_0x7ddb[1126]],_0x9494x3+= _0x9494x18[_0x7ddb[1125]]):(_0x9494x2*= _0x9494x18[_0x7ddb[255]],_0x9494x3*= _0x9494x18[_0x7ddb[255]]);_0x9494x14= 8== document[_0x7ddb[5]]?document[_0x7ddb[55]](mxClient[_0x7ddb[463]]+ _0x7ddb[1499]):document[_0x7ddb[55]](_0x7ddb[485]);_0x9494x14[_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[492];_0x9494x14[_0x7ddb[124]][_0x7ddb[495]]= _0x7ddb[497];_0x9494x14[_0x7ddb[124]][_0x7ddb[361]]= this[_0x7ddb[1239]](_0x9494x2)+ _0x7ddb[168];_0x9494x14[_0x7ddb[124]][_0x7ddb[125]]= this[_0x7ddb[1239]](_0x9494x3)+ _0x7ddb[168];_0x9494x14[_0x7ddb[124]][_0x7ddb[499]]= _0x9494x18[_0x7ddb[255]];var _0x9494x19=document[_0x7ddb[55]](_0x7ddb[485]);_0x9494x19[_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[1500];_0x9494x19[_0x7ddb[124]][_0x7ddb[495]]= _0x7ddb[497];var _0x9494x1a=mxUtils[_0x7ddb[1501]](_0x9494xa,_0x9494x12),_0x9494x1b=_0x9494x1a[_0x7ddb[235]],_0x9494x1a=_0x9494x1a[_0x7ddb[236]];_0x9494x9= this[_0x7ddb[1404]](_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x15);_0x9494xa= document[_0x7ddb[55]](_0x7ddb[485]);_0x9494x13?(!_0x9494x16&& 0< _0x9494x4 && (_0x9494x9[_0x7ddb[124]][_0x7ddb[117]]= Math[_0x7ddb[488]](_0x9494x4)+ _0x7ddb[168]),_0x9494x9[_0x7ddb[124]][_0x7ddb[493]]= _0x7ddb[1502]):_0x9494x9[_0x7ddb[124]][_0x7ddb[493]]= _0x7ddb[494];_0x9494x13= _0x9494x18[_0x7ddb[603]]+ (_0x9494x17|| 0);this[_0x7ddb[1216]]&& 0!= _0x9494x13?(_0x9494xa[_0x7ddb[124]][_0x7ddb[495]]= _0x7ddb[497],_0x9494xa[_0x7ddb[124]][_0x7ddb[499]]= _0x7ddb[500],_0x9494xa[_0x7ddb[62]](_0x9494x9),8== document[_0x7ddb[5]]&& _0x7ddb[529]!= this[_0x7ddb[813]][_0x7ddb[301]]?(_0x9494x19[_0x7ddb[62]](_0x9494xa),_0x9494x14[_0x7ddb[62]](_0x9494x19)):_0x9494x14[_0x7ddb[62]](_0x9494xa)):8== document[_0x7ddb[5]]?(_0x9494x19[_0x7ddb[62]](_0x9494x9),_0x9494x14[_0x7ddb[62]](_0x9494x19)):(_0x9494x9[_0x7ddb[124]][_0x7ddb[495]]= _0x7ddb[497],_0x9494x14[_0x7ddb[62]](_0x9494x9));_0x7ddb[529]!= this[_0x7ddb[813]][_0x7ddb[301]]?(_0x9494x17= document[_0x7ddb[55]](mxClient[_0x7ddb[463]]+ _0x7ddb[1490]),_0x9494x17[_0x7ddb[1464]]= _0x7ddb[308],_0x9494x17[_0x7ddb[1468]]= _0x7ddb[308],_0x9494x17[_0x7ddb[62]](_0x9494x14),this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x17)):this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x14);_0x9494x16?(_0x9494x9[_0x7ddb[124]][_0x7ddb[277]]= _0x7ddb[188],0< _0x9494x4&& (_0x9494x9[_0x7ddb[124]][_0x7ddb[117]]= Math[_0x7ddb[488]](_0x9494x4)+ _0x7ddb[168]),0< _0x9494x5&& 8== document[_0x7ddb[5]]&& (_0x9494x9[_0x7ddb[124]][_0x7ddb[1503]]= Math[_0x7ddb[488]](_0x9494x5)+ _0x7ddb[168])):_0x9494x15&& (_0x9494x9[_0x7ddb[124]][_0x7ddb[117]]= _0x9494x4+ _0x7ddb[168],0< _0x9494x5&& (_0x9494x9[_0x7ddb[124]][_0x7ddb[1503]]= Math[_0x7ddb[488]](_0x9494x5)+ _0x7ddb[168]));if(this[_0x7ddb[1216]]&& 0!= _0x9494x13){_0x9494x4= _0x9494x13* (Math[_0x7ddb[424]]/ 180);_0x9494x13= parseFloat(parseFloat(Math[_0x7ddb[426]](_0x9494x4))[_0x7ddb[1293]](8));_0x9494x17= parseFloat(parseFloat(Math[_0x7ddb[427]](-_0x9494x4))[_0x7ddb[1293]](8));_0x9494x4%= 2* Math[_0x7ddb[424]];0> _0x9494x4&& (_0x9494x4+= 2* Math[_0x7ddb[424]]);_0x9494x4%= Math[_0x7ddb[424]];_0x9494x4> Math[_0x7ddb[424]]/ 2&& (_0x9494x4= Math[_0x7ddb[424]]- _0x9494x4);_0x9494x12= Math[_0x7ddb[426]](_0x9494x4);var _0x9494x1c=Math[_0x7ddb[427]](_0x9494x4);8== document[_0x7ddb[5]]&& (_0x9494x9[_0x7ddb[124]][_0x7ddb[495]]= _0x7ddb[498],_0x9494xa[_0x7ddb[124]][_0x7ddb[495]]= _0x7ddb[498],_0x9494x19[_0x7ddb[124]][_0x7ddb[495]]= _0x7ddb[498]);_0x9494x9[_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[188];document[_0x7ddb[112]][_0x7ddb[62]](_0x9494x9);_0x9494x4= _0x9494x9[_0x7ddb[359]];_0x9494x19= _0x9494x9[_0x7ddb[167]];if(mxClient[_0x7ddb[496]]&& (_0x9494x16|| _0x9494x15)&& _0x9494x19> _0x9494x5){_0x9494x19= _0x9494x5,_0x9494x9[_0x7ddb[124]][_0x7ddb[119]]= _0x9494x19+ _0x7ddb[168]};_0x9494x5= _0x9494x19;_0x9494x16= (_0x9494x5- _0x9494x5* _0x9494x12+ _0x9494x4* -_0x9494x1c)/ 2- _0x9494x17* _0x9494x4* (_0x9494x1b+ 0.5)+ _0x9494x13* _0x9494x5* (_0x9494x1a+ 0.5);_0x9494x15= (_0x9494x4- _0x9494x4* _0x9494x12+ _0x9494x5* -_0x9494x1c)/ 2+ _0x9494x13* _0x9494x4* (_0x9494x1b+ 0.5)+ _0x9494x17* _0x9494x5* (_0x9494x1a+ 0.5);_0x7ddb[1504]== _0x9494x14[_0x7ddb[301]]&& _0x7ddb[529]== this[_0x7ddb[813]][_0x7ddb[301]]?(_0x9494x1b= document[_0x7ddb[55]](_0x7ddb[485]),_0x9494x1b[_0x7ddb[124]][_0x7ddb[495]]= _0x7ddb[498],_0x9494x1b[_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[492],_0x9494x1b[_0x7ddb[124]][_0x7ddb[361]]= this[_0x7ddb[1239]](_0x9494x2+ (_0x9494x15- _0x9494x4/ 2)* _0x9494x18[_0x7ddb[255]])+ _0x7ddb[168],_0x9494x1b[_0x7ddb[124]][_0x7ddb[125]]= this[_0x7ddb[1239]](_0x9494x3+ (_0x9494x16- _0x9494x5/ 2)* _0x9494x18[_0x7ddb[255]])+ _0x7ddb[168],_0x9494x14[_0x7ddb[265]][_0x7ddb[62]](_0x9494x1b),_0x9494x1b[_0x7ddb[62]](_0x9494x14)):(_0x9494x18= 8== document[_0x7ddb[5]]?1:_0x9494x18[_0x7ddb[255]],_0x9494x14[_0x7ddb[124]][_0x7ddb[361]]= this[_0x7ddb[1239]](_0x9494x2+ (_0x9494x15- _0x9494x4/ 2)* _0x9494x18)+ _0x7ddb[168],_0x9494x14[_0x7ddb[124]][_0x7ddb[125]]= this[_0x7ddb[1239]](_0x9494x3+ (_0x9494x16- _0x9494x5/ 2)* _0x9494x18)+ _0x7ddb[168]);_0x9494xa[_0x7ddb[124]][_0x7ddb[347]]= _0x7ddb[1505]+ _0x9494x13+ _0x7ddb[1506]+ _0x9494x17+ _0x7ddb[1507]+ -_0x9494x17+ _0x7ddb[1508]+ _0x9494x13+ _0x7ddb[1509];_0x9494xa[_0x7ddb[124]][_0x7ddb[1028]]= this[_0x7ddb[1459]];1> this[_0x7ddb[724]][_0x7ddb[1244]]&& (_0x9494xa[_0x7ddb[124]][_0x7ddb[347]]+= _0x7ddb[459]+ 100* this[_0x7ddb[724]][_0x7ddb[1244]]+ _0x7ddb[460]);_0x9494x9[_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[110];_0x9494xa[_0x7ddb[62]](_0x9494x9)}else {8!= document[_0x7ddb[5]]?(_0x9494x9[_0x7ddb[124]][_0x7ddb[123]]= _0x7ddb[125],1> this[_0x7ddb[724]][_0x7ddb[1244]]&& (_0x9494x14[_0x7ddb[124]][_0x7ddb[347]]= _0x7ddb[459]+ 100* this[_0x7ddb[724]][_0x7ddb[1244]]+ _0x7ddb[460]),_0x9494x18= _0x9494x9[_0x7ddb[265]],_0x9494x9[_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[188],document[_0x7ddb[112]][_0x7ddb[62]](_0x9494x9),_0x9494x4= _0x9494x9[_0x7ddb[359]],_0x9494x19= _0x9494x9[_0x7ddb[167]],mxClient[_0x7ddb[496]]&& (_0x9494x16&& _0x9494x19> _0x9494x5)&& (_0x9494x19= _0x9494x5,_0x9494x9[_0x7ddb[124]][_0x7ddb[119]]= _0x9494x19+ _0x7ddb[168]),_0x9494x5= _0x9494x19,_0x9494x9[_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[110],_0x9494x18[_0x7ddb[62]](_0x9494x9),_0x9494x14[_0x7ddb[124]][_0x7ddb[361]]= this[_0x7ddb[1239]](_0x9494x2+ _0x9494x4* _0x9494x1b* this[_0x7ddb[724]][_0x7ddb[255]])+ _0x7ddb[168],_0x9494x14[_0x7ddb[124]][_0x7ddb[125]]= this[_0x7ddb[1239]](_0x9494x3+ _0x9494x5* _0x9494x1a* this[_0x7ddb[724]][_0x7ddb[255]])+ _0x7ddb[168]):(1> this[_0x7ddb[724]][_0x7ddb[1244]]&& (_0x9494x9[_0x7ddb[124]][_0x7ddb[347]]= _0x7ddb[459]+ 100* this[_0x7ddb[724]][_0x7ddb[1244]]+ _0x7ddb[460]),_0x9494x19[_0x7ddb[124]][_0x7ddb[361]]= 100* _0x9494x1b+ _0x7ddb[229],_0x9494x19[_0x7ddb[124]][_0x7ddb[125]]= 100* _0x9494x1a+ _0x7ddb[229])}}else {this[_0x7ddb[1436]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,mxUtils[_0x7ddb[321]](_0x9494x9,!1),_0x9494xa,_0x9494x12,_0x9494x13,_0x9494x14,_0x9494x15,_0x9494x16,_0x9494x17)}}};mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[1436]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13,_0x9494x14,_0x9494x15,_0x9494x16,_0x9494x17){_0x9494x5= this[_0x7ddb[724]];_0x9494x2= (_0x9494x2+ _0x9494x5[_0x7ddb[1126]])* _0x9494x5[_0x7ddb[255]];_0x9494x3= (_0x9494x3+ _0x9494x5[_0x7ddb[1125]])* _0x9494x5[_0x7ddb[255]];_0x9494x4= document[_0x7ddb[55]](mxClient[_0x7ddb[463]]+ _0x7ddb[1487]);_0x9494x4[_0x7ddb[124]][_0x7ddb[117]]= _0x7ddb[942];_0x9494x4[_0x7ddb[124]][_0x7ddb[119]]= _0x7ddb[942];_0x9494x4[_0x7ddb[1464]]= _0x7ddb[308];_0x9494x15= document[_0x7ddb[55]](mxClient[_0x7ddb[463]]+ _0x7ddb[1469]);_0x9494x15[_0x7ddb[352]]= _0x9494x5[_0x7ddb[665]];_0x9494x15[_0x7ddb[461]]= 100* _0x9494x5[_0x7ddb[1244]]+ _0x7ddb[229];_0x9494x4[_0x7ddb[62]](_0x9494x15);_0x9494x15= document[_0x7ddb[55]](mxClient[_0x7ddb[463]]+ _0x7ddb[1510]);_0x9494x15[_0x7ddb[1511]]= _0x7ddb[128];_0x9494x15[_0x7ddb[6]]= _0x7ddb[1512]+ this[_0x7ddb[1239]](0)+ _0x7ddb[185]+ this[_0x7ddb[1239]](0)+ _0x7ddb[1513]+ this[_0x7ddb[1239]](1)+ _0x7ddb[185]+ this[_0x7ddb[1239]](0);_0x9494x4[_0x7ddb[62]](_0x9494x15);_0x9494x15= document[_0x7ddb[55]](mxClient[_0x7ddb[463]]+ _0x7ddb[1514]);_0x9494x15[_0x7ddb[124]][_0x7ddb[103]]= _0x7ddb[1515]+ _0x9494xa;_0x9494x15[_0x7ddb[124]][_0x7ddb[611]]= _0x9494xa;_0x9494x15[_0x7ddb[124]][_0x7ddb[486]]= _0x9494x5[_0x7ddb[486]];_0x9494x15[_0x7ddb[1516]]= _0x9494x9;_0x9494x15[_0x7ddb[747]]= _0x7ddb[128];_0x9494xa= Math[_0x7ddb[488]](_0x9494x5[_0x7ddb[487]]* _0x9494x5[_0x7ddb[255]]/ this[_0x7ddb[1460]]);_0x9494x15[_0x7ddb[124]][_0x7ddb[487]]= _0x9494xa+ _0x7ddb[168];(_0x9494x5[_0x7ddb[666]]& mxConstants[_0x7ddb[1410]])== mxConstants[_0x7ddb[1410]]&& (_0x9494x15[_0x7ddb[124]][_0x7ddb[1452]]= _0x7ddb[1447]);(_0x9494x5[_0x7ddb[666]]& mxConstants[_0x7ddb[1412]])== mxConstants[_0x7ddb[1412]]&& (_0x9494x15[_0x7ddb[124]][_0x7ddb[666]]= _0x7ddb[1449]);(_0x9494x5[_0x7ddb[666]]& mxConstants[_0x7ddb[1414]])== mxConstants[_0x7ddb[1414]]&& (_0x9494x15[_0x7ddb[124]][_0x7ddb[354]]= _0x7ddb[355]);_0x9494x9= _0x9494x9[_0x7ddb[224]](_0x7ddb[192]);_0x9494x5= _0x9494xa+ (_0x9494x9[_0x7ddb[67]]- 1)* _0x9494xa* mxConstants[_0x7ddb[490]];_0x9494xa= _0x9494x9= 0;_0x9494x12== mxConstants[_0x7ddb[482]]?_0x9494xa= -_0x9494x5/ 2:_0x9494x12!= mxConstants[_0x7ddb[481]]&& (_0x9494xa= _0x9494x5/ 2);null!= _0x9494x17&& (_0x9494x4[_0x7ddb[124]][_0x7ddb[603]]= _0x9494x17,_0x9494x12= _0x9494x17* (Math[_0x7ddb[424]]/ 180),_0x9494x9= Math[_0x7ddb[427]](_0x9494x12)* _0x9494xa,_0x9494xa*= Math[_0x7ddb[426]](_0x9494x12));_0x9494x4[_0x7ddb[62]](_0x9494x15);_0x9494x4[_0x7ddb[124]][_0x7ddb[361]]= this[_0x7ddb[1239]](_0x9494x2- _0x9494x9)+ _0x7ddb[168];_0x9494x4[_0x7ddb[124]][_0x7ddb[125]]= this[_0x7ddb[1239]](_0x9494x3+ _0x9494xa)+ _0x7ddb[168];this[_0x7ddb[813]][_0x7ddb[62]](_0x9494x4)};mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[1336]]= function(){this[_0x7ddb[1370]](!1,!0)};mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[1334]]= function(){this[_0x7ddb[1370]](!0,!1)};mxVmlCanvas2D[_0x7ddb[202]][_0x7ddb[1337]]= function(){this[_0x7ddb[1370]](!0,!0)};function mxGuide(_0x9494x2,_0x9494x3){this[_0x7ddb[1179]]= _0x9494x2;this[_0x7ddb[1517]](_0x9494x3)}mxGuide[_0x7ddb[202]][_0x7ddb[1179]]= null;mxGuide[_0x7ddb[202]][_0x7ddb[1214]]= null;mxGuide[_0x7ddb[202]][_0x7ddb[662]]= !0;mxGuide[_0x7ddb[202]][_0x7ddb[704]]= !0;mxGuide[_0x7ddb[202]][_0x7ddb[1518]]= null;mxGuide[_0x7ddb[202]][_0x7ddb[1519]]= null;mxGuide[_0x7ddb[202]][_0x7ddb[1517]]= function(_0x9494x2){this[_0x7ddb[1214]]= _0x9494x2};mxGuide[_0x7ddb[202]][_0x7ddb[1019]]= function(_0x9494x2){return !0};mxGuide[_0x7ddb[202]][_0x7ddb[1520]]= function(){return this[_0x7ddb[1179]][_0x7ddb[1020]]* this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[255]]/ 2};mxGuide[_0x7ddb[202]][_0x7ddb[1521]]= function(_0x9494x2){_0x9494x2= new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH);_0x9494x2[_0x7ddb[1522]]= !0;return _0x9494x2};mxGuide[_0x7ddb[202]][_0x7ddb[582]]= function(_0x9494x2,_0x9494x3,_0x9494x4){if(null!= this[_0x7ddb[1214]]&& (this[_0x7ddb[662]]|| this[_0x7ddb[704]])&& null!= _0x9494x2&& null!= _0x9494x3){var _0x9494x5=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[513]],_0x9494x9=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[255]],_0x9494xa=_0x9494x3[_0x7ddb[235]],_0x9494x12=_0x9494x3[_0x7ddb[236]],_0x9494x13=!1,_0x9494x14=!1,_0x9494x15=this[_0x7ddb[1520]](),_0x9494x16=_0x9494x15,_0x9494x17=_0x9494x15,_0x9494x15=_0x9494x2[_0x7ddb[238]]();_0x9494x15[_0x7ddb[235]]+= _0x9494x3[_0x7ddb[235]];_0x9494x15[_0x7ddb[236]]+= _0x9494x3[_0x7ddb[236]];var _0x9494x18=_0x9494x15[_0x7ddb[235]],_0x9494x19=_0x9494x15[_0x7ddb[235]]+ _0x9494x15[_0x7ddb[117]],_0x9494x1a=_0x9494x15[_0x7ddb[241]](),_0x9494x1b=_0x9494x15[_0x7ddb[236]],_0x9494x1c=_0x9494x15[_0x7ddb[236]]+ _0x9494x15[_0x7ddb[119]],_0x9494x1d=_0x9494x15[_0x7ddb[242]]();_0x9494x3= function(_0x9494x3){_0x9494x3+= this[_0x7ddb[1179]][_0x7ddb[1136]];var _0x9494x4=!1;Math[_0x7ddb[425]](_0x9494x3- _0x9494x1a)< _0x9494x16?(_0x9494xa= _0x9494x3- _0x9494x2[_0x7ddb[241]](),_0x9494x16= Math[_0x7ddb[425]](_0x9494x3- _0x9494x1a),_0x9494x4= !0):Math[_0x7ddb[425]](_0x9494x3- _0x9494x18)< _0x9494x16?(_0x9494xa= _0x9494x3- _0x9494x2[_0x7ddb[235]],_0x9494x16= Math[_0x7ddb[425]](_0x9494x3- _0x9494x18),_0x9494x4= !0):Math[_0x7ddb[425]](_0x9494x3- _0x9494x19)< _0x9494x16&& (_0x9494xa= _0x9494x3- _0x9494x2[_0x7ddb[235]]- _0x9494x2[_0x7ddb[117]],_0x9494x16= Math[_0x7ddb[425]](_0x9494x3- _0x9494x19),_0x9494x4= !0);if(_0x9494x4){null== this[_0x7ddb[1518]]&& (this[_0x7ddb[1518]]= this[_0x7ddb[1521]](!0),this[_0x7ddb[1518]][_0x7ddb[507]]= this[_0x7ddb[1179]][_0x7ddb[507]]!= mxConstants[_0x7ddb[508]]?mxConstants[_0x7ddb[1523]]:mxConstants[_0x7ddb[508]],this[_0x7ddb[1518]][_0x7ddb[1229]]= !1,this[_0x7ddb[1518]][_0x7ddb[176]](this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[1524]]()));var _0x9494x5=this[_0x7ddb[1179]][_0x7ddb[526]];_0x9494x3-= this[_0x7ddb[1179]][_0x7ddb[1136]];this[_0x7ddb[1518]][_0x7ddb[1525]]= [ new mxPoint(_0x9494x3,-this[_0x7ddb[1179]][_0x7ddb[1137]]), new mxPoint(_0x9494x3,_0x9494x5[_0x7ddb[191]]- 3- this[_0x7ddb[1179]][_0x7ddb[1137]])]};_0x9494x13= _0x9494x13|| _0x9494x4};for(var _0x9494x15=function(_0x9494x3){_0x9494x3+= this[_0x7ddb[1179]][_0x7ddb[1137]];var _0x9494x4=!1;Math[_0x7ddb[425]](_0x9494x3- _0x9494x1d)< _0x9494x17?(_0x9494x12= _0x9494x3- _0x9494x2[_0x7ddb[242]](),_0x9494x17= Math[_0x7ddb[425]](_0x9494x3- _0x9494x1d),_0x9494x4= !0):Math[_0x7ddb[425]](_0x9494x3- _0x9494x1b)< _0x9494x17?(_0x9494x12= _0x9494x3- _0x9494x2[_0x7ddb[236]],_0x9494x17= Math[_0x7ddb[425]](_0x9494x3- _0x9494x1b),_0x9494x4= !0):Math[_0x7ddb[425]](_0x9494x3- _0x9494x1c)< _0x9494x17&& (_0x9494x12= _0x9494x3- _0x9494x2[_0x7ddb[236]]- _0x9494x2[_0x7ddb[119]],_0x9494x17= Math[_0x7ddb[425]](_0x9494x3- _0x9494x1c),_0x9494x4= !0);if(_0x9494x4){null== this[_0x7ddb[1519]]&& (this[_0x7ddb[1519]]= this[_0x7ddb[1521]](!1),this[_0x7ddb[1519]][_0x7ddb[507]]= this[_0x7ddb[1179]][_0x7ddb[507]]!= mxConstants[_0x7ddb[508]]?mxConstants[_0x7ddb[1523]]:mxConstants[_0x7ddb[508]],this[_0x7ddb[1519]][_0x7ddb[1229]]= !1,this[_0x7ddb[1519]][_0x7ddb[176]](this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[1524]]()));var _0x9494x5=this[_0x7ddb[1179]][_0x7ddb[526]];_0x9494x3-= this[_0x7ddb[1179]][_0x7ddb[1137]];this[_0x7ddb[1519]][_0x7ddb[1525]]= [ new mxPoint(-this[_0x7ddb[1179]][_0x7ddb[1136]],_0x9494x3), new mxPoint(_0x9494x5[_0x7ddb[1526]]- 3- this[_0x7ddb[1179]][_0x7ddb[1136]],_0x9494x3)]};_0x9494x14= _0x9494x14|| _0x9494x4},_0x9494x1e=0;_0x9494x1e< this[_0x7ddb[1214]][_0x7ddb[67]];_0x9494x1e++){var _0x9494x1f=this[_0x7ddb[1214]][_0x9494x1e];null!= _0x9494x1f&& (this[_0x7ddb[662]]&& (_0x9494x3[_0x7ddb[239]](this,_0x9494x1f[_0x7ddb[241]]()),_0x9494x3[_0x7ddb[239]](this,_0x9494x1f[_0x7ddb[235]]),_0x9494x3[_0x7ddb[239]](this,_0x9494x1f[_0x7ddb[235]]+ _0x9494x1f[_0x7ddb[117]])),this[_0x7ddb[704]]&& (_0x9494x15[_0x7ddb[239]](this,_0x9494x1f[_0x7ddb[242]]()),_0x9494x15[_0x7ddb[239]](this,_0x9494x1f[_0x7ddb[236]]),_0x9494x15[_0x7ddb[239]](this,_0x9494x1f[_0x7ddb[236]]+ _0x9494x1f[_0x7ddb[119]])))};!_0x9494x13&& null!= this[_0x7ddb[1518]]?this[_0x7ddb[1518]][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[188]:null!= this[_0x7ddb[1518]]&& (this[_0x7ddb[1518]][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[189],this[_0x7ddb[1518]][_0x7ddb[258]]());!_0x9494x14&& null!= this[_0x7ddb[1519]]?this[_0x7ddb[1519]][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[188]:null!= this[_0x7ddb[1519]]&& (this[_0x7ddb[1519]][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[189],this[_0x7ddb[1519]][_0x7ddb[258]]());_0x9494x4&& (_0x9494x13|| (_0x9494x4= _0x9494x2[_0x7ddb[235]]- (this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x2[_0x7ddb[235]]/ _0x9494x9- _0x9494x5[_0x7ddb[235]])+ _0x9494x5[_0x7ddb[235]])* _0x9494x9,_0x9494xa= this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494xa/ _0x9494x9)* _0x9494x9- _0x9494x4),_0x9494x14|| (_0x9494x5= _0x9494x2[_0x7ddb[236]]- (this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x2[_0x7ddb[236]]/ _0x9494x9- _0x9494x5[_0x7ddb[236]])+ _0x9494x5[_0x7ddb[236]])* _0x9494x9,_0x9494x12= this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x12/ _0x9494x9)* _0x9494x9- _0x9494x5));_0x9494x3= new mxPoint(_0x9494xa,_0x9494x12)};return _0x9494x3};mxGuide[_0x7ddb[202]][_0x7ddb[801]]= function(){null!= this[_0x7ddb[1518]]&& (this[_0x7ddb[1518]][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[188]);null!= this[_0x7ddb[1519]]&& (this[_0x7ddb[1519]][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[188])};mxGuide[_0x7ddb[202]][_0x7ddb[515]]= function(){null!= this[_0x7ddb[1518]]&& (this[_0x7ddb[1518]][_0x7ddb[515]](),this[_0x7ddb[1518]]= null);null!= this[_0x7ddb[1519]]&& (this[_0x7ddb[1519]][_0x7ddb[515]](),this[_0x7ddb[1519]]= null)};function mxStencil(_0x9494x2){this[_0x7ddb[1527]]= _0x9494x2;this[_0x7ddb[1528]]();this[_0x7ddb[1529]]()}mxStencil[_0x7ddb[1530]]= !1;mxStencil[_0x7ddb[202]][_0x7ddb[1527]]= null;mxStencil[_0x7ddb[202]][_0x7ddb[1531]]= null;mxStencil[_0x7ddb[202]][_0x7ddb[1322]]= null;mxStencil[_0x7ddb[202]][_0x7ddb[1532]]= null;mxStencil[_0x7ddb[202]][_0x7ddb[1533]]= null;mxStencil[_0x7ddb[202]][_0x7ddb[1534]]= null;mxStencil[_0x7ddb[202]][_0x7ddb[1535]]= null;mxStencil[_0x7ddb[202]][_0x7ddb[1307]]= null;mxStencil[_0x7ddb[202]][_0x7ddb[1528]]= function(){this[_0x7ddb[1535]]= this[_0x7ddb[1527]][_0x7ddb[64]](_0x7ddb[1536])[0];this[_0x7ddb[1534]]= this[_0x7ddb[1527]][_0x7ddb[64]](_0x7ddb[1537])[0];this[_0x7ddb[1532]]= Number(this[_0x7ddb[1527]][_0x7ddb[284]](_0x7ddb[1302])|| 100);this[_0x7ddb[1533]]= Number(this[_0x7ddb[1527]][_0x7ddb[284]](_0x7ddb[1303])|| 100);var _0x9494x2=this[_0x7ddb[1527]][_0x7ddb[284]](_0x7ddb[1322]);this[_0x7ddb[1322]]= null!= _0x9494x2?_0x9494x2:_0x7ddb[1538];_0x9494x2= this[_0x7ddb[1527]][_0x7ddb[284]](_0x7ddb[1307]);this[_0x7ddb[1307]]= null!= _0x9494x2?_0x9494x2:_0x7ddb[500]};mxStencil[_0x7ddb[202]][_0x7ddb[1529]]= function(){var _0x9494x2=this[_0x7ddb[1527]][_0x7ddb[64]](_0x7ddb[1539])[0];if(null!= _0x9494x2&& (_0x9494x2= mxUtils[_0x7ddb[1540]](_0x9494x2),null!= _0x9494x2&& 0< _0x9494x2[_0x7ddb[67]])){this[_0x7ddb[1531]]= [];for(var _0x9494x3=0;_0x9494x3< _0x9494x2[_0x7ddb[67]];_0x9494x3++){this[_0x7ddb[1531]][_0x7ddb[207]](this[_0x7ddb[1541]](_0x9494x2[_0x9494x3]))}}};mxStencil[_0x7ddb[202]][_0x7ddb[1541]]= function(_0x9494x2){var _0x9494x3=Number(_0x9494x2[_0x7ddb[284]](_0x7ddb[235])),_0x9494x4=Number(_0x9494x2[_0x7ddb[284]](_0x7ddb[236]));_0x9494x2= _0x7ddb[500]== _0x9494x2[_0x7ddb[284]](_0x7ddb[591]);return new mxConnectionConstraint( new mxPoint(_0x9494x3,_0x9494x4),_0x9494x2)};mxStencil[_0x7ddb[202]][_0x7ddb[1542]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x3= this[_0x7ddb[1543]](_0x9494x2,_0x9494x3,_0x9494x4);_0x9494x2= _0x9494x2[_0x7ddb[284]](_0x7ddb[1544]);if(mxStencil[_0x7ddb[1530]]&& null== _0x9494x2|| _0x7ddb[500]== _0x9494x2){_0x9494x3= mxResources[_0x7ddb[203]](_0x9494x3)};return _0x9494x3};mxStencil[_0x7ddb[202]][_0x7ddb[1543]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x3= _0x9494x2[_0x7ddb[284]](_0x9494x3);null== _0x9494x3&& (_0x9494x2= mxUtils[_0x7ddb[329]](_0x9494x2),null!= _0x9494x2&& (_0x9494x2= mxUtils[_0x7ddb[1545]](_0x9494x2),_0x7ddb[279]== typeof _0x9494x2&& (_0x9494x3= _0x9494x2(_0x9494x4))));return _0x9494x3};mxStencil[_0x7ddb[202]][_0x7ddb[1546]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){this[_0x7ddb[1547]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,this[_0x7ddb[1534]],!1);this[_0x7ddb[1547]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,this[_0x7ddb[1535]],!0)};mxStencil[_0x7ddb[202]][_0x7ddb[1547]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13){if(null!= _0x9494x12){var _0x9494x14=mxUtils[_0x7ddb[433]](_0x9494x3[_0x7ddb[124]],mxConstants.STYLE_DIRECTION,null);_0x9494x4= this[_0x7ddb[1548]](_0x9494x3[_0x7ddb[124]],_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x14);_0x9494x5= Math[_0x7ddb[243]](_0x9494x4[_0x7ddb[117]],_0x9494x4[_0x7ddb[119]]);_0x9494x5= _0x7ddb[1549]== this[_0x7ddb[1307]]?Number(mxUtils[_0x7ddb[1550]](_0x9494x3[_0x7ddb[124]],mxConstants.STYLE_STROKEWIDTH,1)):Number(this[_0x7ddb[1307]])* _0x9494x5;_0x9494x2[_0x7ddb[1250]](_0x9494x5);for(_0x9494x12= _0x9494x12[_0x7ddb[285]];null!= _0x9494x12;){_0x9494x12[_0x7ddb[288]]== mxConstants[_0x7ddb[289]]&& this[_0x7ddb[1551]](_0x9494x2,_0x9494x3,_0x9494x12,_0x9494x4,_0x9494x13),_0x9494x12= _0x9494x12[_0x7ddb[287]]}}};mxStencil[_0x7ddb[202]][_0x7ddb[1548]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){_0x9494x2= _0x9494x3;_0x9494x3= _0x9494x5/ this[_0x7ddb[1532]];var _0x9494x12=_0x9494x9/ this[_0x7ddb[1533]];if(_0x9494xa= _0x7ddb[700]== _0x9494xa|| _0x7ddb[701]== _0x9494xa){_0x9494x12= _0x9494x5/ this[_0x7ddb[1533]];_0x9494x3= _0x9494x9/ this[_0x7ddb[1532]];var _0x9494x13=(_0x9494x5- _0x9494x9)/ 2;_0x9494x2+= _0x9494x13;_0x9494x4-= _0x9494x13};_0x7ddb[1552]== this[_0x7ddb[1322]]&& (_0x9494x3= _0x9494x12= Math[_0x7ddb[243]](_0x9494x3,_0x9494x12),_0x9494xa?(_0x9494x2+= (_0x9494x9- this[_0x7ddb[1532]]* _0x9494x3)/ 2,_0x9494x4+= (_0x9494x5- this[_0x7ddb[1533]]* _0x9494x12)/ 2):(_0x9494x2+= (_0x9494x5- this[_0x7ddb[1532]]* _0x9494x3)/ 2,_0x9494x4+= (_0x9494x9- this[_0x7ddb[1533]]* _0x9494x12)/ 2));return new mxRectangle(_0x9494x2,_0x9494x4,_0x9494x3,_0x9494x12)};mxStencil[_0x7ddb[202]][_0x7ddb[1551]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){var _0x9494xa=_0x9494x4[_0x7ddb[301]],_0x9494x12=_0x9494x5[_0x7ddb[235]],_0x9494x13=_0x9494x5[_0x7ddb[236]],_0x9494x14=_0x9494x5[_0x7ddb[117]],_0x9494x15=_0x9494x5[_0x7ddb[119]],_0x9494x16=Math[_0x7ddb[243]](_0x9494x14,_0x9494x15);if(_0x7ddb[815]== _0x9494xa){_0x9494x2[_0x7ddb[815]]()}else {if(_0x7ddb[1210]== _0x9494xa){_0x9494x2[_0x7ddb[1210]]()}else {if(_0x7ddb[1215]== _0x9494xa){_0x9494x2[_0x7ddb[1275]]();for(_0x9494x4= _0x9494x4[_0x7ddb[285]];null!= _0x9494x4;){_0x9494x4[_0x7ddb[288]]== mxConstants[_0x7ddb[289]]&& this[_0x7ddb[1551]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9),_0x9494x4= _0x9494x4[_0x7ddb[287]]}}else {if(_0x7ddb[268]== _0x9494xa){_0x9494x2[_0x7ddb[268]]()}else {if(_0x7ddb[582]== _0x9494xa){_0x9494x2[_0x7ddb[1276]](_0x9494x12+ Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[235]))* _0x9494x14,_0x9494x13+ Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[236]))* _0x9494x15)}else {if(_0x7ddb[683]== _0x9494xa){_0x9494x2[_0x7ddb[1277]](_0x9494x12+ Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[235]))* _0x9494x14,_0x9494x13+ Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[236]))* _0x9494x15)}else {if(_0x7ddb[1323]== _0x9494xa){_0x9494x2[_0x7ddb[1278]](_0x9494x12+ Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[1324]))* _0x9494x14,_0x9494x13+ Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[1325]))* _0x9494x15,_0x9494x12+ Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[1326]))* _0x9494x14,_0x9494x13+ Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[1327]))* _0x9494x15)}else {if(_0x7ddb[1328]== _0x9494xa){_0x9494x2[_0x7ddb[1279]](_0x9494x12+ Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[1324]))* _0x9494x14,_0x9494x13+ Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[1325]))* _0x9494x15,_0x9494x12+ Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[1326]))* _0x9494x14,_0x9494x13+ Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[1327]))* _0x9494x15,_0x9494x12+ Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[1329]))* _0x9494x14,_0x9494x13+ Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[1330]))* _0x9494x15)}else {if(_0x7ddb[1553]== _0x9494xa){_0x9494x2[_0x7ddb[1280]](Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[1397]))* _0x9494x14,Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[1398]))* _0x9494x15,Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[1554])),Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[1555])),Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[1556])),_0x9494x12+ Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[235]))* _0x9494x14,_0x9494x13+ Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[236]))* _0x9494x15)}else {if(_0x7ddb[1319]== _0x9494xa){_0x9494x2[_0x7ddb[1319]](_0x9494x12+ Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[235]))* _0x9494x14,_0x9494x13+ Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[236]))* _0x9494x15,Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[1302]))* _0x9494x14,Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[1303]))* _0x9494x15)}else {if(_0x7ddb[1320]== _0x9494xa){_0x9494x3= _0x9494x4[_0x7ddb[284]](_0x7ddb[1492]),0== _0x9494x3&& (_0x9494x3= 100* mxConstants[_0x7ddb[1557]]),_0x9494x16= Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[1302]))* _0x9494x14,_0x9494x5= Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[1303]))* _0x9494x15,_0x9494x3= Number(_0x9494x3)/ 100,_0x9494x3= Math[_0x7ddb[243]](_0x9494x16* _0x9494x3,_0x9494x5* _0x9494x3),_0x9494x2[_0x7ddb[1320]](_0x9494x12+ Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[235]))* _0x9494x14,_0x9494x13+ Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[236]))* _0x9494x15,_0x9494x16,_0x9494x5,_0x9494x3,_0x9494x3)}else {if(_0x7ddb[680]== _0x9494xa){_0x9494x2[_0x7ddb[680]](_0x9494x12+ Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[235]))* _0x9494x14,_0x9494x13+ Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[236]))* _0x9494x15,Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[1302]))* _0x9494x14,Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[1303]))* _0x9494x15)}else {if(_0x7ddb[618]== _0x9494xa){_0x9494x3= this[_0x7ddb[1543]](_0x9494x4,_0x7ddb[390],_0x9494x3),_0x9494x2[_0x7ddb[618]](_0x9494x12+ Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[235]))* _0x9494x14,_0x9494x13+ Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[236]))* _0x9494x15,Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[1302]))* _0x9494x14,Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[1303]))* _0x9494x15,_0x9494x3,!1,_0x7ddb[500]== _0x9494x4[_0x7ddb[284]](_0x7ddb[623]),_0x7ddb[500]== _0x9494x4[_0x7ddb[284]](_0x7ddb[624]))}else {if(_0x7ddb[963]== _0x9494xa){_0x9494x16= this[_0x7ddb[1542]](_0x9494x4,_0x7ddb[1332],_0x9494x3);_0x9494x5= _0x7ddb[500]== _0x9494x4[_0x7ddb[284]](_0x7ddb[704])?-90:0;if(_0x7ddb[468]== _0x9494x4[_0x7ddb[284]](_0x7ddb[1558])){var _0x9494x17=_0x9494x3[_0x7ddb[603]],_0x9494x18=1== mxUtils[_0x7ddb[433]](_0x9494x3[_0x7ddb[124]],mxConstants.STYLE_FLIPH,0);_0x9494x3= 1== mxUtils[_0x7ddb[433]](_0x9494x3[_0x7ddb[124]],mxConstants.STYLE_FLIPV,0);_0x9494x5= _0x9494x18&& _0x9494x3?_0x9494x5- _0x9494x17:_0x9494x18|| _0x9494x3?_0x9494x5+ _0x9494x17:_0x9494x5- _0x9494x17};_0x9494x5-= _0x9494x4[_0x7ddb[284]](_0x7ddb[603]);_0x9494x2[_0x7ddb[963]](_0x9494x12+ Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[235]))* _0x9494x14,_0x9494x13+ Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[236]))* _0x9494x15,0,0,_0x9494x16,_0x9494x4[_0x7ddb[284]](_0x7ddb[611])|| _0x7ddb[361],_0x9494x4[_0x7ddb[284]](_0x7ddb[552])|| _0x7ddb[125],!1,_0x7ddb[110],!1,!1,_0x9494x5)}else {if(_0x7ddb[1559]== _0x9494xa){_0x9494x17= mxStencilRegistry[_0x7ddb[1560]](_0x9494x4[_0x7ddb[284]](_0x7ddb[298])),null!= _0x9494x17&& (_0x9494x12+= Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[235]))* _0x9494x14,_0x9494x13+= Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[236]))* _0x9494x15,_0x9494x16= Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[1302]))* _0x9494x14,_0x9494x5= Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[1303]))* _0x9494x15,_0x9494x17[_0x7ddb[1546]](_0x9494x2,_0x9494x3,_0x9494x12,_0x9494x13,_0x9494x16,_0x9494x5))}else {if(_0x7ddb[1338]== _0x9494xa){_0x9494x2[_0x7ddb[1337]]()}else {if(_0x7ddb[1334]== _0x9494xa){_0x9494x2[_0x7ddb[1334]]()}else {if(_0x7ddb[1336]== _0x9494xa){_0x9494x2[_0x7ddb[1336]]()}else {if(_0x7ddb[1307]== _0x9494xa){_0x9494x2[_0x7ddb[1250]](Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[117]))* _0x9494x16)}else {if(_0x7ddb[648]== _0x9494xa){_0x9494x2[_0x7ddb[1251]](_0x7ddb[500]== _0x9494x4[_0x7ddb[284]](_0x7ddb[648]))}else {if(_0x7ddb[1308]== _0x9494xa){if(_0x9494x4= _0x9494x4[_0x7ddb[284]](_0x7ddb[1309]),null!= _0x9494x4){_0x9494x4= _0x9494x4[_0x7ddb[224]](_0x7ddb[185]);_0x9494x14= [];for(_0x9494x15= 0;_0x9494x15< _0x9494x4[_0x7ddb[67]];_0x9494x15++){0< _0x9494x4[_0x9494x15][_0x7ddb[67]]&& _0x9494x14[_0x7ddb[207]](Number(_0x9494x4[_0x9494x15])* _0x9494x16)};_0x9494x4= _0x9494x14[_0x7ddb[234]](_0x7ddb[185]);_0x9494x2[_0x7ddb[1252]](_0x9494x4)}}else {_0x7ddb[1306]== _0x9494xa?_0x9494x2[_0x7ddb[1249]](_0x9494x4[_0x7ddb[284]](_0x7ddb[352])):_0x7ddb[1310]== _0x9494xa?_0x9494x2[_0x7ddb[1253]](_0x9494x4[_0x7ddb[284]](_0x7ddb[1311])):_0x7ddb[1312]== _0x9494xa?_0x9494x2[_0x7ddb[1255]](_0x9494x4[_0x7ddb[284]](_0x7ddb[234])):_0x7ddb[1313]== _0x9494xa?_0x9494x2[_0x7ddb[1257]](Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[1314]))):_0x7ddb[1298]== _0x9494xa?_0x9494x2[_0x7ddb[1245]](_0x9494x4[_0x7ddb[284]](_0x7ddb[352])):_0x7ddb[1244]== _0x9494xa?_0x9494x2[_0x7ddb[1243]](_0x9494x4[_0x7ddb[284]](_0x7ddb[1244])):_0x7ddb[1315]== _0x9494xa?_0x9494x2[_0x7ddb[1259]](_0x9494x4[_0x7ddb[284]](_0x7ddb[352])):_0x7ddb[1318]== _0x9494xa?_0x9494x2[_0x7ddb[1266]](_0x9494x4[_0x7ddb[284]](_0x7ddb[124])):_0x7ddb[1287]== _0x9494xa?_0x9494x2[_0x7ddb[1265]](_0x9494x4[_0x7ddb[284]](_0x7ddb[1288])):_0x7ddb[1289]== _0x9494xa&& _0x9494x2[_0x7ddb[1264]](Number(_0x9494x4[_0x7ddb[284]](_0x7ddb[803]))* _0x9494x16)}}}}}}}}}}}}}}}}}}}}};_0x9494x9&& (_0x7ddb[1338]== _0x9494xa|| _0x7ddb[1334]== _0x9494xa|| _0x7ddb[1336]== _0x9494xa)&& _0x9494x2[_0x7ddb[1267]](!1)};function mxShape(_0x9494x2){this[_0x7ddb[1561]]= _0x9494x2;this[_0x7ddb[1307]]= 1;this[_0x7ddb[603]]= 0;this[_0x7ddb[461]]= 100;this[_0x7ddb[624]]= this[_0x7ddb[623]]= !1}mxShape[_0x7ddb[202]][_0x7ddb[507]]= null;mxShape[_0x7ddb[202]][_0x7ddb[255]]= 1;mxShape[_0x7ddb[202]][_0x7ddb[1562]]= null;mxShape[_0x7ddb[202]][_0x7ddb[1525]]= null;mxShape[_0x7ddb[202]][_0x7ddb[252]]= null;mxShape[_0x7ddb[202]][_0x7ddb[124]]= null;mxShape[_0x7ddb[202]][_0x7ddb[124]]= null;mxShape[_0x7ddb[202]][_0x7ddb[1563]]= null;mxShape[_0x7ddb[202]][_0x7ddb[1561]]= null;mxShape[_0x7ddb[202]][_0x7ddb[1564]]= 6;mxShape[_0x7ddb[202]][_0x7ddb[1229]]= !0;mxShape[_0x7ddb[202]][_0x7ddb[1565]]= !1;mxShape[_0x7ddb[202]][_0x7ddb[1460]]= 1;mxShape[_0x7ddb[202]][_0x7ddb[176]]= function(_0x9494x2){null== this[_0x7ddb[252]]&& (this[_0x7ddb[252]]= this[_0x7ddb[385]](_0x9494x2),null!= _0x9494x2&& _0x9494x2[_0x7ddb[62]](this[_0x7ddb[252]]))};mxShape[_0x7ddb[202]][_0x7ddb[1566]]= function(){return !0};mxShape[_0x7ddb[202]][_0x7ddb[1567]]= function(){return !1};mxShape[_0x7ddb[202]][_0x7ddb[1568]]= function(){return 1== mxUtils[_0x7ddb[1454]](Math[_0x7ddb[160]](1,Math[_0x7ddb[488]](this[_0x7ddb[1307]]* this[_0x7ddb[255]])),2)?0.5:0};mxShape[_0x7ddb[202]][_0x7ddb[385]]= function(_0x9494x2){var _0x9494x3=null;return _0x9494x3= null!= _0x9494x2[_0x7ddb[538]]?this[_0x7ddb[1569]](_0x9494x2):8== document[_0x7ddb[5]]|| this[_0x7ddb[507]]== mxConstants[_0x7ddb[508]]|| this[_0x7ddb[507]]!= mxConstants[_0x7ddb[1523]]&& this[_0x7ddb[1567]]()?this[_0x7ddb[1570]](_0x9494x2):this[_0x7ddb[1571]](_0x9494x2)};mxShape[_0x7ddb[202]][_0x7ddb[1569]]= function(){return document[_0x7ddb[509]](mxConstants.NS_SVG,_0x7ddb[449])};mxShape[_0x7ddb[202]][_0x7ddb[1571]]= function(){var _0x9494x2=document[_0x7ddb[55]](mxClient[_0x7ddb[463]]+ _0x7ddb[1499]);_0x9494x2[_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[492];return _0x9494x2};mxShape[_0x7ddb[202]][_0x7ddb[1570]]= function(){var _0x9494x2=document[_0x7ddb[55]](_0x7ddb[485]);_0x9494x2[_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[492];return _0x9494x2};mxShape[_0x7ddb[202]][_0x7ddb[1572]]= function(){this[_0x7ddb[258]]()};mxShape[_0x7ddb[202]][_0x7ddb[258]]= function(){this[_0x7ddb[1573]]();this[_0x7ddb[1574]]()?(this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[110],_0x7ddb[529]== this[_0x7ddb[252]][_0x7ddb[301]]&& this[_0x7ddb[1567]]()?this[_0x7ddb[1575]]():this[_0x7ddb[1576]](),this[_0x7ddb[1577]]()):(this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[188],this[_0x7ddb[1563]]= null)};mxShape[_0x7ddb[202]][_0x7ddb[1573]]= function(){var _0x9494x2=this[_0x7ddb[1525]];if(null!= _0x9494x2&& 0< _0x9494x2[_0x7ddb[67]]&& null!= _0x9494x2[0]){this[_0x7ddb[1562]]= new mxRectangle(Number(_0x9494x2[0][_0x7ddb[235]]),Number(_0x9494x2[0][_0x7ddb[236]]),1,1);for(var _0x9494x3=1;_0x9494x3< this[_0x7ddb[1525]][_0x7ddb[67]];_0x9494x3++){null!= _0x9494x2[_0x9494x3]&& this[_0x7ddb[1562]][_0x7ddb[99]]( new mxRectangle(Number(_0x9494x2[_0x9494x3][_0x7ddb[235]]),Number(_0x9494x2[_0x9494x3][_0x7ddb[236]]),1,1))}}};mxShape[_0x7ddb[202]][_0x7ddb[1574]]= function(){return null!= this[_0x7ddb[1562]]&& !isNaN(this[_0x7ddb[1562]][_0x7ddb[235]])&& !isNaN(this[_0x7ddb[1562]][_0x7ddb[236]])&& !isNaN(this[_0x7ddb[1562]][_0x7ddb[117]])&& !isNaN(this[_0x7ddb[1562]][_0x7ddb[119]])&& 0< this[_0x7ddb[1562]][_0x7ddb[117]]&& 0< this[_0x7ddb[1562]][_0x7ddb[119]]};mxShape[_0x7ddb[202]][_0x7ddb[1578]]= function(){var _0x9494x2=document[_0x7ddb[55]](mxClient[_0x7ddb[463]]+ _0x7ddb[1499]);_0x9494x2[_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[492];_0x9494x2[_0x7ddb[124]][_0x7ddb[117]]= this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[117]];_0x9494x2[_0x7ddb[124]][_0x7ddb[119]]= this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[119]];return _0x9494x2};mxShape[_0x7ddb[202]][_0x7ddb[1576]]= function(){var _0x9494x2=this[_0x7ddb[1579]]();for(_0x9494x2[_0x7ddb[1229]]= this[_0x7ddb[1229]];this[_0x7ddb[252]][_0x7ddb[1580]]();){this[_0x7ddb[252]][_0x7ddb[266]](this[_0x7ddb[252]][_0x7ddb[1581]])};this[_0x7ddb[1209]](_0x9494x2);this[_0x7ddb[252]]!= _0x9494x2[_0x7ddb[813]]&& this[_0x7ddb[252]][_0x7ddb[1583]](_0x7ddb[1582],_0x9494x2[_0x7ddb[813]][_0x7ddb[342]]);_0x7ddb[529]== this[_0x7ddb[252]][_0x7ddb[301]]&& 8== document[_0x7ddb[5]]&& (this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[347]]= _0x7ddb[110],(null== this[_0x7ddb[1561]]|| !this[_0x7ddb[1565]])&& mxUtils[_0x7ddb[1584]](this[_0x7ddb[252]]));this[_0x7ddb[1585]](_0x9494x2)};mxShape[_0x7ddb[202]][_0x7ddb[1579]]= function(){var _0x9494x2=null,_0x9494x3=null;if(null!= this[_0x7ddb[252]][_0x7ddb[538]]){_0x9494x2= new mxSvgCanvas2D(this[_0x7ddb[252]],!1),_0x9494x2[_0x7ddb[1345]]= this[_0x7ddb[1564]],_0x9494x2[_0x7ddb[1347]]= mxClient[_0x7ddb[133]]&& !mxClient[_0x7ddb[75]]&& !mxClient[_0x7ddb[76]],_0x9494x3= this[_0x7ddb[1568]](),0!= _0x9494x3?this[_0x7ddb[252]][_0x7ddb[57]](_0x7ddb[535],_0x7ddb[536]+ _0x9494x3+ _0x7ddb[537]+ _0x9494x3+ _0x7ddb[460]):this[_0x7ddb[252]][_0x7ddb[1390]](_0x7ddb[535])}else {this[_0x7ddb[1586]]();var _0x9494x4=Math[_0x7ddb[160]](1,Math[_0x7ddb[488]](this[_0x7ddb[1562]][_0x7ddb[117]])),_0x9494x5=Math[_0x7ddb[160]](1,Math[_0x7ddb[488]](this[_0x7ddb[1562]][_0x7ddb[119]])),_0x9494x3=8== document[_0x7ddb[5]]&& this[_0x7ddb[1566]]()?this[_0x7ddb[1578]]():this[_0x7ddb[252]],_0x9494x2= new mxVmlCanvas2D(_0x9494x3,!1);_0x7ddb[110]!= _0x9494x3[_0x7ddb[337]]&& (_0x9494x3[_0x7ddb[1462]]= _0x9494x4* this[_0x7ddb[1460]]+ _0x7ddb[537]+ _0x9494x5* this[_0x7ddb[1460]],_0x9494x2[_0x7ddb[255]](this[_0x7ddb[1460]]),_0x9494x2[_0x7ddb[1460]]= this[_0x7ddb[1460]]);_0x9494x3= this[_0x7ddb[255]];_0x9494x2[_0x7ddb[513]](-Math[_0x7ddb[488]](this[_0x7ddb[1562]][_0x7ddb[235]]/ _0x9494x3),-Math[_0x7ddb[488]](this[_0x7ddb[1562]][_0x7ddb[236]]/ _0x9494x3))};return _0x9494x2};mxShape[_0x7ddb[202]][_0x7ddb[1586]]= function(){this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[361]]= Math[_0x7ddb[488]](this[_0x7ddb[1562]][_0x7ddb[235]])+ _0x7ddb[168];this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[125]]= Math[_0x7ddb[488]](this[_0x7ddb[1562]][_0x7ddb[236]])+ _0x7ddb[168];var _0x9494x2=Math[_0x7ddb[160]](1,Math[_0x7ddb[488]](this[_0x7ddb[1562]][_0x7ddb[117]])),_0x9494x3=Math[_0x7ddb[160]](1,Math[_0x7ddb[488]](this[_0x7ddb[1562]][_0x7ddb[119]]));this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[117]]= _0x9494x2+ _0x7ddb[168];this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[119]]= _0x9494x3+ _0x7ddb[168];this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[277]]= _0x7ddb[189]};mxShape[_0x7ddb[202]][_0x7ddb[1585]]= function(_0x9494x2){if(_0x9494x2 instanceof mxSvgCanvas2D){for(var _0x9494x3 in _0x9494x2[_0x7ddb[1339]]){var _0x9494x4=_0x9494x2[_0x7ddb[1339]][_0x9494x3];_0x9494x4[_0x7ddb[1587]]= (_0x9494x4[_0x7ddb[1587]]|| 0)+ 1};this[_0x7ddb[1589]](this[_0x7ddb[1588]]);this[_0x7ddb[1588]]= _0x9494x2[_0x7ddb[1339]]}};mxShape[_0x7ddb[202]][_0x7ddb[1209]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[255]],_0x9494x4=this[_0x7ddb[1562]][_0x7ddb[235]]/ _0x9494x3,_0x9494x5=this[_0x7ddb[1562]][_0x7ddb[236]]/ _0x9494x3,_0x9494x9=this[_0x7ddb[1562]][_0x7ddb[117]]/ _0x9494x3,_0x9494xa=this[_0x7ddb[1562]][_0x7ddb[119]]/ _0x9494x3;if(this[_0x7ddb[1590]]()){var _0x9494x12=(_0x9494x9- _0x9494xa)/ 2,_0x9494x4=_0x9494x4+ _0x9494x12,_0x9494x5=_0x9494x5- _0x9494x12,_0x9494x12=_0x9494x9,_0x9494x9=_0x9494xa,_0x9494xa=_0x9494x12};this[_0x7ddb[1591]](_0x9494x2,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa);this[_0x7ddb[1592]](_0x9494x2,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa);if(null!= this[_0x7ddb[1561]]){this[_0x7ddb[1593]](_0x9494x2,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa)}else {if(_0x9494x2[_0x7ddb[1250]](this[_0x7ddb[1307]]),null!= this[_0x7ddb[1525]]){_0x9494x4= [];for(_0x9494x5= 0;_0x9494x5< this[_0x7ddb[1525]][_0x7ddb[67]];_0x9494x5++){_0x9494x4[_0x7ddb[207]]( new mxPoint(this[_0x7ddb[1525]][_0x9494x5][_0x7ddb[235]]/ _0x9494x3,this[_0x7ddb[1525]][_0x9494x5][_0x7ddb[236]]/ _0x9494x3))};this[_0x7ddb[1594]](_0x9494x2,_0x9494x4)}else {this[_0x7ddb[1595]](_0x9494x2,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa)}}};mxShape[_0x7ddb[202]][_0x7ddb[1592]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){var _0x9494xa=null;null!= this[_0x7ddb[124]]&& (_0x9494xa= this[_0x7ddb[124]][_0x7ddb[649]]);_0x9494x2[_0x7ddb[1243]](this[_0x7ddb[461]]/ 100);null!= this[_0x7ddb[1596]]&& _0x9494x2[_0x7ddb[1267]](this[_0x7ddb[1596]]);null!= this[_0x7ddb[1522]]&& _0x9494x2[_0x7ddb[1251]](this[_0x7ddb[1522]]);null!= _0x9494xa&& _0x9494x2[_0x7ddb[1252]](_0x9494xa);null!= this[_0x7ddb[1299]]?(_0x9494x3= this[_0x7ddb[1597]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9),_0x9494x2[_0x7ddb[1246]](this[_0x7ddb[1334]],this[_0x7ddb[1299]],_0x9494x3[_0x7ddb[235]],_0x9494x3[_0x7ddb[236]],_0x9494x3[_0x7ddb[117]],_0x9494x3[_0x7ddb[119]],this[_0x7ddb[607]])):_0x9494x2[_0x7ddb[1245]](this[_0x7ddb[1334]]);_0x9494x2[_0x7ddb[1249]](this[_0x7ddb[1336]])};mxShape[_0x7ddb[202]][_0x7ddb[1597]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){return new mxRectangle(_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9)};mxShape[_0x7ddb[202]][_0x7ddb[1591]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x9494x2[_0x7ddb[255]](this[_0x7ddb[255]]);_0x9494x2[_0x7ddb[1294]](this[_0x7ddb[1598]](),this[_0x7ddb[623]],this[_0x7ddb[624]],_0x9494x3+ _0x9494x5/ 2,_0x9494x4+ _0x9494x9/ 2)};mxShape[_0x7ddb[202]][_0x7ddb[1593]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){this[_0x7ddb[1565]]&& (this[_0x7ddb[507]]== mxConstants[_0x7ddb[508]]?this[_0x7ddb[1599]](this[_0x7ddb[252]],_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9):8!= document[_0x7ddb[5]]&& this[_0x7ddb[1600]](this[_0x7ddb[252]]));this[_0x7ddb[1561]][_0x7ddb[1546]](_0x9494x2,this,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9)};mxShape[_0x7ddb[202]][_0x7ddb[1595]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){this[_0x7ddb[1601]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9);_0x9494x2[_0x7ddb[1267]](!1);this[_0x7ddb[1602]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9)};mxShape[_0x7ddb[202]][_0x7ddb[1601]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){};mxShape[_0x7ddb[202]][_0x7ddb[1602]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){};mxShape[_0x7ddb[202]][_0x7ddb[1594]]= function(_0x9494x2,_0x9494x3){};mxShape[_0x7ddb[202]][_0x7ddb[1603]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_ARCSIZE,100* mxConstants[_0x7ddb[1557]])/ 100;return Math[_0x7ddb[243]](_0x9494x2* _0x9494x4,_0x9494x3* _0x9494x4)};mxShape[_0x7ddb[202]][_0x7ddb[1604]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){var _0x9494x12=Math[_0x7ddb[430]](this[_0x7ddb[1307]]/ 2);_0x9494x2[_0x7ddb[1246]](_0x7ddb[1605],_0x7ddb[1605],_0x9494x3,_0x9494x4,_0x9494x5,0.6* _0x9494x9,_0x7ddb[701],0.9,0.1);_0x9494x2[_0x7ddb[1275]]();_0x9494xa+= 2* _0x9494x12;this[_0x7ddb[1606]]?(_0x9494x2[_0x7ddb[1276]](_0x9494x3- _0x9494x12+ _0x9494xa,_0x9494x4- _0x9494x12),_0x9494x2[_0x7ddb[1278]](_0x9494x3- _0x9494x12,_0x9494x4- _0x9494x12,_0x9494x3- _0x9494x12,_0x9494x4- _0x9494x12+ _0x9494xa),_0x9494x2[_0x7ddb[1277]](_0x9494x3- _0x9494x12,_0x9494x4+ 0.4* _0x9494x9),_0x9494x2[_0x7ddb[1278]](_0x9494x3+ 0.5* _0x9494x5,_0x9494x4+ 0.7* _0x9494x9,_0x9494x3+ _0x9494x5+ _0x9494x12,_0x9494x4+ 0.4* _0x9494x9),_0x9494x2[_0x7ddb[1277]](_0x9494x3+ _0x9494x5+ _0x9494x12,_0x9494x4- _0x9494x12+ _0x9494xa),_0x9494x2[_0x7ddb[1278]](_0x9494x3+ _0x9494x5+ _0x9494x12,_0x9494x4- _0x9494x12,_0x9494x3+ _0x9494x5+ _0x9494x12- _0x9494xa,_0x9494x4- _0x9494x12)):(_0x9494x2[_0x7ddb[1276]](_0x9494x3- _0x9494x12,_0x9494x4- _0x9494x12),_0x9494x2[_0x7ddb[1277]](_0x9494x3- _0x9494x12,_0x9494x4+ 0.4* _0x9494x9),_0x9494x2[_0x7ddb[1278]](_0x9494x3+ 0.5* _0x9494x5,_0x9494x4+ 0.7* _0x9494x9,_0x9494x3+ _0x9494x5+ _0x9494x12,_0x9494x4+ 0.4* _0x9494x9),_0x9494x2[_0x7ddb[1277]](_0x9494x3+ _0x9494x5+ _0x9494x12,_0x9494x4- _0x9494x12));_0x9494x2[_0x7ddb[268]]();_0x9494x2[_0x7ddb[1334]]()};mxShape[_0x7ddb[202]][_0x7ddb[183]]= function(_0x9494x2){this[_0x7ddb[724]]= _0x9494x2;this[_0x7ddb[124]]= _0x9494x2[_0x7ddb[124]];if(null!= this[_0x7ddb[124]]){this[_0x7ddb[1334]]= mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_FILLCOLOR,this[_0x7ddb[1334]]);this[_0x7ddb[1299]]= mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_GRADIENTCOLOR,this[_0x7ddb[1299]]);this[_0x7ddb[607]]= mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_GRADIENT_DIRECTION,this[_0x7ddb[607]]);this[_0x7ddb[461]]= mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_OPACITY,this[_0x7ddb[461]]);this[_0x7ddb[1336]]= mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_STROKECOLOR,this[_0x7ddb[1336]]);this[_0x7ddb[1307]]= mxUtils[_0x7ddb[1550]](this[_0x7ddb[124]],mxConstants.STYLE_STROKEWIDTH,this[_0x7ddb[1307]]);this[_0x7ddb[657]]= mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_SPACING,this[_0x7ddb[657]]);this[_0x7ddb[644]]= mxUtils[_0x7ddb[1550]](this[_0x7ddb[124]],mxConstants.STYLE_STARTSIZE,this[_0x7ddb[644]]);this[_0x7ddb[643]]= mxUtils[_0x7ddb[1550]](this[_0x7ddb[124]],mxConstants.STYLE_ENDSIZE,this[_0x7ddb[643]]);this[_0x7ddb[642]]= mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_STARTARROW,this[_0x7ddb[642]]);this[_0x7ddb[641]]= mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_ENDARROW,this[_0x7ddb[641]]);this[_0x7ddb[603]]= mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_ROTATION,this[_0x7ddb[603]]);this[_0x7ddb[663]]= mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_DIRECTION,this[_0x7ddb[663]]);this[_0x7ddb[623]]= 1== mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_FLIPH,0);this[_0x7ddb[624]]= 1== mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_FLIPV,0);null!= this[_0x7ddb[1561]]&& (this[_0x7ddb[623]]= 1== mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],_0x7ddb[1607],0)|| this[_0x7ddb[623]],this[_0x7ddb[624]]= 1== mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],_0x7ddb[1608],0)|| this[_0x7ddb[624]]);if(_0x7ddb[700]== this[_0x7ddb[663]]|| _0x7ddb[701]== this[_0x7ddb[663]]){_0x9494x2= this[_0x7ddb[623]],this[_0x7ddb[623]]= this[_0x7ddb[624]],this[_0x7ddb[624]]= _0x9494x2};this[_0x7ddb[1596]]= 1== mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_SHADOW,this[_0x7ddb[1596]]);this[_0x7ddb[1522]]= 1== mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_DASHED,this[_0x7ddb[1522]]);this[_0x7ddb[1606]]= 1== mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_ROUNDED,this[_0x7ddb[1606]]);this[_0x7ddb[617]]= 1== mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_GLASS,this[_0x7ddb[617]]);_0x7ddb[130]== this[_0x7ddb[1334]]&& (this[_0x7ddb[1334]]= null);_0x7ddb[130]== this[_0x7ddb[1299]]&& (this[_0x7ddb[1299]]= null);_0x7ddb[130]== this[_0x7ddb[1336]]&& (this[_0x7ddb[1336]]= null)}};mxShape[_0x7ddb[202]][_0x7ddb[1609]]= function(_0x9494x2){null== _0x9494x2&& (_0x9494x2= _0x7ddb[110]);this[_0x7ddb[270]]= _0x9494x2;null!= this[_0x7ddb[252]]&& (this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[270]]= _0x9494x2)};mxShape[_0x7ddb[202]][_0x7ddb[1610]]= function(){return this[_0x7ddb[270]]};mxShape[_0x7ddb[202]][_0x7ddb[1577]]= function(){if(null!= this[_0x7ddb[1562]]){var _0x9494x2=this[_0x7ddb[1611]]();if(null!= _0x9494x2){this[_0x7ddb[1612]](_0x9494x2);var _0x9494x3=this[_0x7ddb[1598]]();0!= _0x9494x3&& (_0x9494x2= mxUtils[_0x7ddb[1613]](_0x9494x2,_0x9494x3));_0x9494x2[_0x7ddb[235]]= Math[_0x7ddb[519]](_0x9494x2[_0x7ddb[235]]);_0x9494x2[_0x7ddb[236]]= Math[_0x7ddb[519]](_0x9494x2[_0x7ddb[236]]);_0x9494x2[_0x7ddb[117]]= Math[_0x7ddb[430]](_0x9494x2[_0x7ddb[117]]);_0x9494x2[_0x7ddb[119]]= Math[_0x7ddb[430]](_0x9494x2[_0x7ddb[119]])};this[_0x7ddb[1563]]= _0x9494x2}};mxShape[_0x7ddb[202]][_0x7ddb[1611]]= function(){var _0x9494x2=this[_0x7ddb[1562]][_0x7ddb[238]]();if(this[_0x7ddb[1590]]()){var _0x9494x3=(_0x9494x2[_0x7ddb[117]]- _0x9494x2[_0x7ddb[119]])/ 2;_0x9494x2[_0x7ddb[235]]+= _0x9494x3;_0x9494x2[_0x7ddb[236]]-= _0x9494x3;_0x9494x3= _0x9494x2[_0x7ddb[117]];_0x9494x2[_0x7ddb[117]]= _0x9494x2[_0x7ddb[119]];_0x9494x2[_0x7ddb[119]]= _0x9494x3};return _0x9494x2};mxShape[_0x7ddb[202]][_0x7ddb[1612]]= function(_0x9494x2){this[_0x7ddb[1596]]&& (_0x9494x2[_0x7ddb[117]]+= Math[_0x7ddb[430]](mxConstants[_0x7ddb[1237]]* this[_0x7ddb[255]]),_0x9494x2[_0x7ddb[119]]+= Math[_0x7ddb[430]](mxConstants[_0x7ddb[1238]]* this[_0x7ddb[255]]));var _0x9494x3=Math[_0x7ddb[430]](this[_0x7ddb[1307]]* this[_0x7ddb[255]]);_0x9494x2[_0x7ddb[244]](Math[_0x7ddb[430]](_0x9494x3/ 2))};mxShape[_0x7ddb[202]][_0x7ddb[1590]]= function(){return null== this[_0x7ddb[1561]]&& (_0x7ddb[700]== this[_0x7ddb[663]]|| _0x7ddb[701]== this[_0x7ddb[663]])};mxShape[_0x7ddb[202]][_0x7ddb[1614]]= function(){return null!= this[_0x7ddb[603]]?this[_0x7ddb[603]]:0};mxShape[_0x7ddb[202]][_0x7ddb[1615]]= function(){var _0x9494x2=this[_0x7ddb[1614]]();1!= mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_HORIZONTAL,1)&& (_0x9494x2+= mxText[_0x7ddb[202]][_0x7ddb[1616]]);return _0x9494x2};mxShape[_0x7ddb[202]][_0x7ddb[1598]]= function(){var _0x9494x2=this[_0x7ddb[1614]]();null!= this[_0x7ddb[663]]&& (_0x7ddb[700]== this[_0x7ddb[663]]?_0x9494x2+= 270:_0x7ddb[703]== this[_0x7ddb[663]]?_0x9494x2+= 180:_0x7ddb[701]== this[_0x7ddb[663]]&& (_0x9494x2+= 90));return _0x9494x2};mxShape[_0x7ddb[202]][_0x7ddb[1599]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x9494x2= document[_0x7ddb[509]](mxConstants.NS_SVG,_0x7ddb[1319]);_0x9494x2[_0x7ddb[57]](_0x7ddb[235],_0x9494x3);_0x9494x2[_0x7ddb[57]](_0x7ddb[236],_0x9494x4);_0x9494x2[_0x7ddb[57]](_0x7ddb[117],_0x9494x5);_0x9494x2[_0x7ddb[57]](_0x7ddb[119],_0x9494x9);_0x9494x2[_0x7ddb[57]](_0x7ddb[1334],_0x7ddb[130]);_0x9494x2[_0x7ddb[57]](_0x7ddb[1336],_0x7ddb[130]);_0x9494x2[_0x7ddb[57]](_0x7ddb[1377],_0x7ddb[1378]);this[_0x7ddb[252]][_0x7ddb[62]](_0x9494x2)};mxShape[_0x7ddb[202]][_0x7ddb[1600]]= function(_0x9494x2){_0x9494x2[_0x7ddb[124]][_0x7ddb[1617]]= _0x7ddb[1618]+ mxClient[_0x7ddb[88]]+ _0x7ddb[1619]};mxShape[_0x7ddb[202]][_0x7ddb[1589]]= function(_0x9494x2){if(null!= _0x9494x2){for(var _0x9494x3 in _0x9494x2){var _0x9494x4=_0x9494x2[_0x9494x3];_0x9494x4[_0x7ddb[1587]]= (_0x9494x4[_0x7ddb[1587]]|| 0)- 1;0== _0x9494x4[_0x7ddb[1587]]&& null!= _0x9494x4[_0x7ddb[265]]&& _0x9494x4[_0x7ddb[265]][_0x7ddb[266]](_0x9494x4)}}};mxShape[_0x7ddb[202]][_0x7ddb[515]]= function(){null!= this[_0x7ddb[252]]&& (mxEvent[_0x7ddb[762]](this[_0x7ddb[252]]),null!= this[_0x7ddb[252]][_0x7ddb[265]]&& this[_0x7ddb[252]][_0x7ddb[265]][_0x7ddb[266]](this[_0x7ddb[252]]),this[_0x7ddb[252]]= null);this[_0x7ddb[1589]](this[_0x7ddb[1588]]);this[_0x7ddb[1588]]= null};var mxStencilRegistry={stencils:[],addStencil:function(_0x9494x2,_0x9494x3){mxStencilRegistry[_0x7ddb[1620]][_0x9494x2]= _0x9494x3},getStencil:function(_0x9494x2){return mxStencilRegistry[_0x7ddb[1620]][_0x9494x2]}},mxMarker={markers:[],addMarker:function(_0x9494x2,_0x9494x3){mxMarker[_0x7ddb[1621]][_0x9494x2]= _0x9494x3},createMarker:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13,_0x9494x14,_0x9494x15){var _0x9494x16=mxMarker[_0x7ddb[1621]][_0x9494x4];return null!= _0x9494x16?_0x9494x16(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13,_0x9494x14,_0x9494x15):null}};(function(){function _0x9494x2(_0x9494x2,_0x9494x3,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13,_0x9494x14,_0x9494x15,_0x9494x16,_0x9494x17){_0x9494x3= 1.118* _0x9494x12* _0x9494x16;_0x9494x15= 1.118* _0x9494x13* _0x9494x16;_0x9494x12*= _0x9494x14+ _0x9494x16;_0x9494x13*= _0x9494x14+ _0x9494x16;var _0x9494x18=_0x9494xa[_0x7ddb[238]]();_0x9494x18[_0x7ddb[235]]-= _0x9494x3;_0x9494x18[_0x7ddb[236]]-= _0x9494x15;_0x9494x14= _0x9494x9!= mxConstants[_0x7ddb[1622]]?1:0.75;_0x9494xa[_0x7ddb[235]]+= -_0x9494x12* _0x9494x14 - _0x9494x3;_0x9494xa[_0x7ddb[236]]+= -_0x9494x13* _0x9494x14 - _0x9494x15;return function(){_0x9494x2[_0x7ddb[1275]]();_0x9494x2[_0x7ddb[1276]](_0x9494x18[_0x7ddb[235]],_0x9494x18[_0x7ddb[236]]);_0x9494x2[_0x7ddb[1277]](_0x9494x18[_0x7ddb[235]]- _0x9494x12- _0x9494x13/ 2,_0x9494x18[_0x7ddb[236]]- _0x9494x13+ _0x9494x12/ 2);_0x9494x9== mxConstants[_0x7ddb[1622]]&& _0x9494x2[_0x7ddb[1277]](_0x9494x18[_0x7ddb[235]]- 3* _0x9494x12/ 4,_0x9494x18[_0x7ddb[236]]- 3* _0x9494x13/ 4);_0x9494x2[_0x7ddb[1277]](_0x9494x18[_0x7ddb[235]]+ _0x9494x13/ 2- _0x9494x12,_0x9494x18[_0x7ddb[236]]- _0x9494x13- _0x9494x12/ 2);_0x9494x2[_0x7ddb[268]]();_0x9494x17?_0x9494x2[_0x7ddb[1337]]():_0x9494x2[_0x7ddb[1336]]()}}function _0x9494x3(_0x9494x2,_0x9494x3,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13,_0x9494x14,_0x9494x15,_0x9494x16,_0x9494x17){_0x9494x15= _0x9494x9== mxConstants[_0x7ddb[1623]]?0.7071:0.9862;_0x9494x3= _0x9494x12* _0x9494x16* _0x9494x15;_0x9494x15*= _0x9494x13* _0x9494x16;_0x9494x12*= _0x9494x14+ _0x9494x16;_0x9494x13*= _0x9494x14+ _0x9494x16;var _0x9494x18=_0x9494xa[_0x7ddb[238]]();_0x9494x18[_0x7ddb[235]]-= _0x9494x3;_0x9494x18[_0x7ddb[236]]-= _0x9494x15;_0x9494xa[_0x7ddb[235]]+= -_0x9494x12- _0x9494x3;_0x9494xa[_0x7ddb[236]]+= -_0x9494x13- _0x9494x15;var _0x9494x19=_0x9494x9== mxConstants[_0x7ddb[1623]]?2:3.4;return function(){_0x9494x2[_0x7ddb[1275]]();_0x9494x2[_0x7ddb[1276]](_0x9494x18[_0x7ddb[235]],_0x9494x18[_0x7ddb[236]]);_0x9494x2[_0x7ddb[1277]](_0x9494x18[_0x7ddb[235]]- _0x9494x12/ 2- _0x9494x13/ _0x9494x19,_0x9494x18[_0x7ddb[236]]+ _0x9494x12/ _0x9494x19- _0x9494x13/ 2);_0x9494x2[_0x7ddb[1277]](_0x9494x18[_0x7ddb[235]]- _0x9494x12,_0x9494x18[_0x7ddb[236]]- _0x9494x13);_0x9494x2[_0x7ddb[1277]](_0x9494x18[_0x7ddb[235]]- _0x9494x12/ 2+ _0x9494x13/ _0x9494x19,_0x9494x18[_0x7ddb[236]]- _0x9494x13/ 2- _0x9494x12/ _0x9494x19);_0x9494x2[_0x7ddb[268]]();_0x9494x17?_0x9494x2[_0x7ddb[1337]]():_0x9494x2[_0x7ddb[1336]]()}}mxMarker[_0x7ddb[1624]](_0x7ddb[693],_0x9494x2);mxMarker[_0x7ddb[1624]](_0x7ddb[694],_0x9494x2);mxMarker[_0x7ddb[1624]](_0x7ddb[392],function(_0x9494x2,_0x9494x3,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13,_0x9494x14,_0x9494x15,_0x9494x16,_0x9494x17){_0x9494x3= 1.118* _0x9494x12* _0x9494x16;_0x9494x9= 1.118* _0x9494x13* _0x9494x16;_0x9494x12*= _0x9494x14+ _0x9494x16;_0x9494x13*= _0x9494x14+ _0x9494x16;var _0x9494x18=_0x9494xa[_0x7ddb[238]]();_0x9494x18[_0x7ddb[235]]-= _0x9494x3;_0x9494x18[_0x7ddb[236]]-= _0x9494x9;_0x9494xa[_0x7ddb[235]]+= 2* -_0x9494x3;_0x9494xa[_0x7ddb[236]]+= 2* -_0x9494x9;return function(){_0x9494x2[_0x7ddb[1275]]();_0x9494x2[_0x7ddb[1276]](_0x9494x18[_0x7ddb[235]]- _0x9494x12- _0x9494x13/ 2,_0x9494x18[_0x7ddb[236]]- _0x9494x13+ _0x9494x12/ 2);_0x9494x2[_0x7ddb[1277]](_0x9494x18[_0x7ddb[235]],_0x9494x18[_0x7ddb[236]]);_0x9494x2[_0x7ddb[1277]](_0x9494x18[_0x7ddb[235]]+ _0x9494x13/ 2- _0x9494x12,_0x9494x18[_0x7ddb[236]]- _0x9494x13- _0x9494x12/ 2);_0x9494x2[_0x7ddb[1336]]()}});mxMarker[_0x7ddb[1624]](_0x7ddb[695],function(_0x9494x2,_0x9494x3,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13,_0x9494x14,_0x9494x15,_0x9494x16,_0x9494x17){var _0x9494x18=_0x9494x14/ 2,_0x9494x19=_0x9494xa[_0x7ddb[238]]();_0x9494xa[_0x7ddb[235]]-= _0x9494x12* _0x9494x18;_0x9494xa[_0x7ddb[236]]-= _0x9494x13* _0x9494x18;return function(){_0x9494x2[_0x7ddb[680]](_0x9494x19[_0x7ddb[235]]- _0x9494x18,_0x9494x19[_0x7ddb[236]]- _0x9494x18,_0x9494x14,_0x9494x14);_0x9494x17?_0x9494x2[_0x7ddb[1337]]():_0x9494x2[_0x7ddb[1336]]()}});mxMarker[_0x7ddb[1624]](_0x7ddb[696],_0x9494x3);mxMarker[_0x7ddb[1624]](_0x7ddb[697],_0x9494x3)})();function mxActor(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){mxShape[_0x7ddb[239]](this);this[_0x7ddb[1562]]= _0x9494x2;this[_0x7ddb[1334]]= _0x9494x3;this[_0x7ddb[1336]]= _0x9494x4;this[_0x7ddb[1307]]= null!= _0x9494x5?_0x9494x5:1}mxUtils[_0x7ddb[1284]](mxActor,mxShape);mxActor[_0x7ddb[202]][_0x7ddb[1595]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x9494x2[_0x7ddb[513]](_0x9494x3,_0x9494x4);_0x9494x2[_0x7ddb[1275]]();this[_0x7ddb[1625]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9);_0x9494x2[_0x7ddb[1337]]()};mxActor[_0x7ddb[202]][_0x7ddb[1625]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x9494x3= _0x9494x5/ 3;_0x9494x2[_0x7ddb[1276]](0,_0x9494x9);_0x9494x2[_0x7ddb[1279]](0,3* _0x9494x9/ 5,0,2* _0x9494x9/ 5,_0x9494x5/ 2,2* _0x9494x9/ 5);_0x9494x2[_0x7ddb[1279]](_0x9494x5/ 2- _0x9494x3,2* _0x9494x9/ 5,_0x9494x5/ 2- _0x9494x3,0,_0x9494x5/ 2,0);_0x9494x2[_0x7ddb[1279]](_0x9494x5/ 2+ _0x9494x3,0,_0x9494x5/ 2+ _0x9494x3,2* _0x9494x9/ 5,_0x9494x5/ 2,2* _0x9494x9/ 5);_0x9494x2[_0x7ddb[1279]](_0x9494x5,2* _0x9494x9/ 5,_0x9494x5,3* _0x9494x9/ 5,_0x9494x5,_0x9494x9);_0x9494x2[_0x7ddb[268]]()};function mxCloud(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){mxActor[_0x7ddb[239]](this);this[_0x7ddb[1562]]= _0x9494x2;this[_0x7ddb[1334]]= _0x9494x3;this[_0x7ddb[1336]]= _0x9494x4;this[_0x7ddb[1307]]= null!= _0x9494x5?_0x9494x5:1}mxUtils[_0x7ddb[1284]](mxCloud,mxActor);mxCloud[_0x7ddb[202]][_0x7ddb[1625]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x9494x2[_0x7ddb[1276]](0.25* _0x9494x5,0.25* _0x9494x9);_0x9494x2[_0x7ddb[1279]](0.05* _0x9494x5,0.25* _0x9494x9,0,0.5* _0x9494x9,0.16* _0x9494x5,0.55* _0x9494x9);_0x9494x2[_0x7ddb[1279]](0,0.66* _0x9494x9,0.18* _0x9494x5,0.9* _0x9494x9,0.31* _0x9494x5,0.8* _0x9494x9);_0x9494x2[_0x7ddb[1279]](0.4* _0x9494x5,_0x9494x9,0.7* _0x9494x5,_0x9494x9,0.8* _0x9494x5,0.8* _0x9494x9);_0x9494x2[_0x7ddb[1279]](_0x9494x5,0.8* _0x9494x9,_0x9494x5,0.6* _0x9494x9,0.875* _0x9494x5,0.5* _0x9494x9);_0x9494x2[_0x7ddb[1279]](_0x9494x5,0.3* _0x9494x9,0.8* _0x9494x5,0.1* _0x9494x9,0.625* _0x9494x5,0.2* _0x9494x9);_0x9494x2[_0x7ddb[1279]](0.5* _0x9494x5,0.05* _0x9494x9,0.3* _0x9494x5,0.05* _0x9494x9,0.25* _0x9494x5,0.25* _0x9494x9);_0x9494x2[_0x7ddb[268]]()};function mxRectangleShape(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){mxShape[_0x7ddb[239]](this);this[_0x7ddb[1562]]= _0x9494x2;this[_0x7ddb[1334]]= _0x9494x3;this[_0x7ddb[1336]]= _0x9494x4;this[_0x7ddb[1307]]= null!= _0x9494x5?_0x9494x5:1}mxUtils[_0x7ddb[1284]](mxRectangleShape,mxShape);mxRectangleShape[_0x7ddb[202]][_0x7ddb[1567]]= function(){return !this[_0x7ddb[1606]]&& !this[_0x7ddb[617]] && 0== this[_0x7ddb[603]]};mxRectangleShape[_0x7ddb[202]][_0x7ddb[1601]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){if(this[_0x7ddb[1606]]){var _0x9494xa=mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_ARCSIZE,100* mxConstants[_0x7ddb[1557]])/ 100,_0x9494xa=Math[_0x7ddb[243]](_0x9494x5* _0x9494xa,_0x9494x9* _0x9494xa);_0x9494x2[_0x7ddb[1320]](_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494xa)}else {_0x9494x2[_0x7ddb[1319]](_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9)};_0x9494x2[_0x7ddb[1337]]()};mxRectangleShape[_0x7ddb[202]][_0x7ddb[1602]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){this[_0x7ddb[617]]&& this[_0x7ddb[1604]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,this[_0x7ddb[1603]](_0x9494x5+ this[_0x7ddb[1307]],_0x9494x9+ this[_0x7ddb[1307]]))};mxRectangleShape[_0x7ddb[202]][_0x7ddb[1575]]= function(){this[_0x7ddb[1626]](this[_0x7ddb[252]]);this[_0x7ddb[1627]](this[_0x7ddb[252]]);this[_0x7ddb[1628]](this[_0x7ddb[252]])};mxRectangleShape[_0x7ddb[202]][_0x7ddb[1626]]= function(_0x9494x2){var _0x9494x3=9<= document[_0x7ddb[5]]?0:Math[_0x7ddb[430]](this[_0x7ddb[1307]]* this[_0x7ddb[255]]);_0x9494x2[_0x7ddb[124]][_0x7ddb[1629]]= Math[_0x7ddb[160]](1,_0x9494x3)+ _0x7ddb[168];_0x9494x2[_0x7ddb[124]][_0x7ddb[277]]= _0x7ddb[188];_0x9494x2[_0x7ddb[124]][_0x7ddb[361]]= Math[_0x7ddb[488]](this[_0x7ddb[1562]][_0x7ddb[235]]- _0x9494x3/ 2)+ _0x7ddb[168];_0x9494x2[_0x7ddb[124]][_0x7ddb[125]]= Math[_0x7ddb[488]](this[_0x7ddb[1562]][_0x7ddb[236]]- _0x9494x3/ 2)+ _0x7ddb[168];_0x7ddb[462]== document[_0x7ddb[135]]&& (_0x9494x3= -_0x9494x3);_0x9494x2[_0x7ddb[124]][_0x7ddb[117]]= Math[_0x7ddb[488]](Math[_0x7ddb[160]](0,this[_0x7ddb[1562]][_0x7ddb[117]]+ _0x9494x3))+ _0x7ddb[168];_0x9494x2[_0x7ddb[124]][_0x7ddb[119]]= Math[_0x7ddb[488]](Math[_0x7ddb[160]](0,this[_0x7ddb[1562]][_0x7ddb[119]]+ _0x9494x3))+ _0x7ddb[168]};mxRectangleShape[_0x7ddb[202]][_0x7ddb[1628]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[1336]];null!= _0x9494x3&& _0x9494x3!= mxConstants[_0x7ddb[217]]?(_0x9494x2[_0x7ddb[124]][_0x7ddb[1630]]= _0x9494x3,this[_0x7ddb[1522]]?_0x9494x2[_0x7ddb[124]][_0x7ddb[465]]= _0x7ddb[648]:0< this[_0x7ddb[1307]]&& (_0x9494x2[_0x7ddb[124]][_0x7ddb[465]]= _0x7ddb[1631]),_0x9494x2[_0x7ddb[124]][_0x7ddb[1629]]= Math[_0x7ddb[160]](1,Math[_0x7ddb[430]](this[_0x7ddb[1307]]* this[_0x7ddb[255]]))+ _0x7ddb[168]):_0x9494x2[_0x7ddb[124]][_0x7ddb[1629]]= _0x7ddb[946];_0x9494x3= this[_0x7ddb[1334]];null!= _0x9494x3&& _0x9494x3!= mxConstants[_0x7ddb[217]]?(_0x9494x2[_0x7ddb[124]][_0x7ddb[1028]]= _0x9494x3,_0x9494x2[_0x7ddb[124]][_0x7ddb[1617]]= _0x7ddb[130]):this[_0x7ddb[1229]]?_0x9494x2[_0x7ddb[124]][_0x7ddb[1028]]= _0x7ddb[1373]:8== document[_0x7ddb[5]]?mxUtils[_0x7ddb[1584]](_0x9494x2):this[_0x7ddb[1600]](_0x9494x2)};mxRectangleShape[_0x7ddb[202]][_0x7ddb[1627]]= function(_0x9494x2){var _0x9494x3=_0x7ddb[110];100> this[_0x7ddb[461]]&& (_0x9494x3+= _0x7ddb[459]+ this[_0x7ddb[461]]+ _0x7ddb[460]);this[_0x7ddb[1596]]&& (_0x9494x3+= _0x7ddb[1632]+ Math[_0x7ddb[488]](mxConstants[_0x7ddb[1237]]* this[_0x7ddb[255]])+ _0x7ddb[1633]+ Math[_0x7ddb[488]](mxConstants[_0x7ddb[1238]]* this[_0x7ddb[255]])+ _0x7ddb[1634]+ mxConstants[_0x7ddb[1235]]+ _0x7ddb[1635]);if(this[_0x7ddb[1299]]){var _0x9494x4=this[_0x7ddb[1334]],_0x9494x5=this[_0x7ddb[1299]],_0x9494x9=_0x7ddb[468],_0x9494xa={east:0,south:1,west:2,north:3},_0x9494x12=null!= this[_0x7ddb[663]]?_0x9494xa[this[_0x7ddb[663]]]:0;null!= this[_0x7ddb[607]]&& (_0x9494x12= mxUtils[_0x7ddb[1454]](_0x9494x12+ _0x9494xa[this[_0x7ddb[607]]]- 1,4));1== _0x9494x12?(_0x9494x9= _0x7ddb[500],_0x9494xa= _0x9494x4,_0x9494x4= _0x9494x5,_0x9494x5= _0x9494xa):2== _0x9494x12?(_0x9494xa= _0x9494x4,_0x9494x4= _0x9494x5,_0x9494x5= _0x9494xa):3== _0x9494x12&& (_0x9494x9= _0x7ddb[500]);_0x9494x3+= _0x7ddb[1636]+ _0x9494x4+ _0x7ddb[1637]+ _0x9494x5+ _0x7ddb[1638]+ _0x9494x9+ _0x7ddb[1635]};_0x9494x2[_0x7ddb[124]][_0x7ddb[347]]= _0x9494x3};function mxEllipse(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){mxShape[_0x7ddb[239]](this);this[_0x7ddb[1562]]= _0x9494x2;this[_0x7ddb[1334]]= _0x9494x3;this[_0x7ddb[1336]]= _0x9494x4;this[_0x7ddb[1307]]= null!= _0x9494x5?_0x9494x5:1}mxUtils[_0x7ddb[1284]](mxEllipse,mxShape);mxEllipse[_0x7ddb[202]][_0x7ddb[1595]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x9494x2[_0x7ddb[680]](_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9);_0x9494x2[_0x7ddb[1337]]()};function mxDoubleEllipse(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){mxShape[_0x7ddb[239]](this);this[_0x7ddb[1562]]= _0x9494x2;this[_0x7ddb[1334]]= _0x9494x3;this[_0x7ddb[1336]]= _0x9494x4;this[_0x7ddb[1307]]= null!= _0x9494x5?_0x9494x5:1}mxUtils[_0x7ddb[1284]](mxDoubleEllipse,mxShape);mxDoubleEllipse[_0x7ddb[202]][_0x7ddb[1460]]= 10;mxDoubleEllipse[_0x7ddb[202]][_0x7ddb[1601]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x9494x2[_0x7ddb[680]](_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9);_0x9494x2[_0x7ddb[1337]]()};mxDoubleEllipse[_0x7ddb[202]][_0x7ddb[1602]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){var _0x9494xa=Math[_0x7ddb[243]](4,Math[_0x7ddb[243]](_0x9494x5/ 5,_0x9494x9/ 5));_0x9494x5-= 2* _0x9494xa;_0x9494x9-= 2* _0x9494xa;0< _0x9494x5&& 0< _0x9494x9&& _0x9494x2[_0x7ddb[680]](_0x9494x3+ _0x9494xa,_0x9494x4+ _0x9494xa,_0x9494x5,_0x9494x9);_0x9494x2[_0x7ddb[1336]]()};function mxRhombus(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){mxShape[_0x7ddb[239]](this);this[_0x7ddb[1562]]= _0x9494x2;this[_0x7ddb[1334]]= _0x9494x3;this[_0x7ddb[1336]]= _0x9494x4;this[_0x7ddb[1307]]= null!= _0x9494x5?_0x9494x5:1}mxUtils[_0x7ddb[1284]](mxRhombus,mxShape);mxRhombus[_0x7ddb[202]][_0x7ddb[1595]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){var _0x9494xa=_0x9494x5/ 2,_0x9494x12=_0x9494x9/ 2;_0x9494x2[_0x7ddb[1275]]();_0x9494x2[_0x7ddb[1276]](_0x9494x3+ _0x9494xa,_0x9494x4);_0x9494x2[_0x7ddb[1277]](_0x9494x3+ _0x9494x5,_0x9494x4+ _0x9494x12);_0x9494x2[_0x7ddb[1277]](_0x9494x3+ _0x9494xa,_0x9494x4+ _0x9494x9);_0x9494x2[_0x7ddb[1277]](_0x9494x3,_0x9494x4+ _0x9494x12);_0x9494x2[_0x7ddb[268]]();_0x9494x2[_0x7ddb[1337]]()};function mxPolyline(_0x9494x2,_0x9494x3,_0x9494x4){mxShape[_0x7ddb[239]](this);this[_0x7ddb[1525]]= _0x9494x2;this[_0x7ddb[1336]]= _0x9494x3;this[_0x7ddb[1307]]= null!= _0x9494x4?_0x9494x4:1}mxUtils[_0x7ddb[1284]](mxPolyline,mxShape);mxPolyline[_0x7ddb[202]][_0x7ddb[1614]]= function(){return 0};mxPolyline[_0x7ddb[202]][_0x7ddb[1594]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[1639]](_0x9494x2,_0x9494x3,this[_0x7ddb[1606]])};mxPolyline[_0x7ddb[202]][_0x7ddb[1639]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/ 2,_0x9494x9=_0x9494x3[0],_0x9494xa=_0x9494x3[_0x9494x3[_0x7ddb[67]]- 1];_0x9494x2[_0x7ddb[1275]]();_0x9494x2[_0x7ddb[1276]](_0x9494x9[_0x7ddb[235]],_0x9494x9[_0x7ddb[236]]);for(var _0x9494x12=1;_0x9494x12< _0x9494x3[_0x7ddb[67]]- 1;_0x9494x12++){var _0x9494x13=_0x9494x3[_0x9494x12],_0x9494x14=_0x9494x9[_0x7ddb[235]]- _0x9494x13[_0x7ddb[235]],_0x9494x9=_0x9494x9[_0x7ddb[236]]- _0x9494x13[_0x7ddb[236]];if(_0x9494x4&& _0x9494x12< _0x9494x3[_0x7ddb[67]]- 1&& (0!= _0x9494x14|| 0!= _0x9494x9)){var _0x9494x15=Math[_0x7ddb[428]](_0x9494x14* _0x9494x14+ _0x9494x9* _0x9494x9),_0x9494x14=_0x9494x14* Math[_0x7ddb[243]](_0x9494x5,_0x9494x15/ 2)/ _0x9494x15,_0x9494x9=_0x9494x9* Math[_0x7ddb[243]](_0x9494x5,_0x9494x15/ 2)/ _0x9494x15;_0x9494x2[_0x7ddb[1277]](_0x9494x13[_0x7ddb[235]]+ _0x9494x14,_0x9494x13[_0x7ddb[236]]+ _0x9494x9);_0x9494x9= _0x9494x3[_0x9494x12+ 1];_0x9494x14= _0x9494x9[_0x7ddb[235]]- _0x9494x13[_0x7ddb[235]];_0x9494x9= _0x9494x9[_0x7ddb[236]]- _0x9494x13[_0x7ddb[236]];_0x9494x15= Math[_0x7ddb[160]](1,Math[_0x7ddb[428]](_0x9494x14* _0x9494x14+ _0x9494x9* _0x9494x9));_0x9494x14= _0x9494x14* Math[_0x7ddb[243]](_0x9494x5,_0x9494x15/ 2)/ _0x9494x15;_0x9494x9= _0x9494x9* Math[_0x7ddb[243]](_0x9494x5,_0x9494x15/ 2)/ _0x9494x15;_0x9494x14= _0x9494x13[_0x7ddb[235]]+ _0x9494x14;_0x9494x9= _0x9494x13[_0x7ddb[236]]+ _0x9494x9;_0x9494x2[_0x7ddb[1278]](_0x9494x13[_0x7ddb[235]],_0x9494x13[_0x7ddb[236]],_0x9494x14,_0x9494x9);_0x9494x13= new mxPoint(_0x9494x14,_0x9494x9)}else {_0x9494x2[_0x7ddb[1277]](_0x9494x13[_0x7ddb[235]],_0x9494x13[_0x7ddb[236]])};_0x9494x9= _0x9494x13};_0x9494x2[_0x7ddb[1277]](_0x9494xa[_0x7ddb[235]],_0x9494xa[_0x7ddb[236]]);_0x9494x2[_0x7ddb[1336]]()};function mxArrow(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12){mxShape[_0x7ddb[239]](this);this[_0x7ddb[1525]]= _0x9494x2;this[_0x7ddb[1334]]= _0x9494x3;this[_0x7ddb[1336]]= _0x9494x4;this[_0x7ddb[1307]]= null!= _0x9494x5?_0x9494x5:1;this[_0x7ddb[1640]]= null!= _0x9494x9?_0x9494x9:mxConstants[_0x7ddb[1641]];this[_0x7ddb[657]]= null!= _0x9494xa?_0x9494xa:mxConstants[_0x7ddb[1642]];this[_0x7ddb[643]]= null!= _0x9494x12?_0x9494x12:mxConstants[_0x7ddb[1643]]}mxUtils[_0x7ddb[1284]](mxArrow,mxShape);mxArrow[_0x7ddb[202]][_0x7ddb[1594]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=mxConstants[_0x7ddb[1642]],_0x9494x5=mxConstants[_0x7ddb[1641]],_0x9494x9=mxConstants[_0x7ddb[1643]],_0x9494xa=_0x9494x3[0],_0x9494x12=_0x9494x3[_0x9494x3[_0x7ddb[67]]- 1],_0x9494x13=_0x9494x12[_0x7ddb[235]]- _0x9494xa[_0x7ddb[235]],_0x9494x14=_0x9494x12[_0x7ddb[236]]- _0x9494xa[_0x7ddb[236]],_0x9494x15=Math[_0x7ddb[428]](_0x9494x13* _0x9494x13+ _0x9494x14* _0x9494x14),_0x9494x16=_0x9494x15- 2* _0x9494x4- _0x9494x9,_0x9494x13=_0x9494x13/ _0x9494x15,_0x9494x14=_0x9494x14/ _0x9494x15,_0x9494x15=_0x9494x5* _0x9494x14/ 3,_0x9494x5=-_0x9494x5* _0x9494x13 / 3,_0x9494x9=_0x9494xa[_0x7ddb[235]]- _0x9494x15/ 2+ _0x9494x4* _0x9494x13,_0x9494xa=_0x9494xa[_0x7ddb[236]]- _0x9494x5/ 2+ _0x9494x4* _0x9494x14,_0x9494x17=_0x9494x9+ _0x9494x15,_0x9494x18=_0x9494xa+ _0x9494x5,_0x9494x19=_0x9494x17+ _0x9494x16* _0x9494x13,_0x9494x16=_0x9494x18+ _0x9494x16* _0x9494x14,_0x9494x1a=_0x9494x19+ _0x9494x15,_0x9494x1b=_0x9494x16+ _0x9494x5,_0x9494x1c=_0x9494x1a- 3* _0x9494x15,_0x9494x1d=_0x9494x1b- 3* _0x9494x5;_0x9494x2[_0x7ddb[1275]]();_0x9494x2[_0x7ddb[1276]](_0x9494x9,_0x9494xa);_0x9494x2[_0x7ddb[1277]](_0x9494x17,_0x9494x18);_0x9494x2[_0x7ddb[1277]](_0x9494x19,_0x9494x16);_0x9494x2[_0x7ddb[1277]](_0x9494x1a,_0x9494x1b);_0x9494x2[_0x7ddb[1277]](_0x9494x12[_0x7ddb[235]]- _0x9494x4* _0x9494x13,_0x9494x12[_0x7ddb[236]]- _0x9494x4* _0x9494x14);_0x9494x2[_0x7ddb[1277]](_0x9494x1c,_0x9494x1d);_0x9494x2[_0x7ddb[1277]](_0x9494x1c+ _0x9494x15,_0x9494x1d+ _0x9494x5);_0x9494x2[_0x7ddb[268]]();_0x9494x2[_0x7ddb[1337]]()};function mxText(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13,_0x9494x14,_0x9494x15,_0x9494x16,_0x9494x17,_0x9494x18,_0x9494x19,_0x9494x1a,_0x9494x1b,_0x9494x1c,_0x9494x1d,_0x9494x1e,_0x9494x1f){mxShape[_0x7ddb[239]](this);this[_0x7ddb[131]]= _0x9494x2;this[_0x7ddb[1562]]= _0x9494x3;this[_0x7ddb[352]]= null!= _0x9494x9?_0x9494x9:_0x7ddb[586];this[_0x7ddb[611]]= null!= _0x9494x4?_0x9494x4:_0x7ddb[110];this[_0x7ddb[552]]= null!= _0x9494x5?_0x9494x5:_0x7ddb[110];this[_0x7ddb[1288]]= null!= _0x9494xa?_0x9494xa:mxConstants[_0x7ddb[484]];this[_0x7ddb[803]]= null!= _0x9494x12?_0x9494x12:mxConstants[_0x7ddb[483]];this[_0x7ddb[666]]= null!= _0x9494x13?_0x9494x13:mxConstants[_0x7ddb[1644]];this[_0x7ddb[657]]= parseInt(_0x9494x14|| 2);this[_0x7ddb[658]]= this[_0x7ddb[657]]+ parseInt(_0x9494x15|| 0);this[_0x7ddb[661]]= this[_0x7ddb[657]]+ parseInt(_0x9494x16|| 0);this[_0x7ddb[660]]= this[_0x7ddb[657]]+ parseInt(_0x9494x17|| 0);this[_0x7ddb[659]]= this[_0x7ddb[657]]+ parseInt(_0x9494x18|| 0);this[_0x7ddb[662]]= null!= _0x9494x19?_0x9494x19:!0;this[_0x7ddb[1537]]= _0x9494x1a;this[_0x7ddb[467]]= _0x9494x1b;this[_0x7ddb[1333]]= null!= _0x9494x1c?_0x9494x1c:!1;this[_0x7ddb[1645]]= null!= _0x9494x1d?_0x9494x1d:!1;this[_0x7ddb[277]]= null!= _0x9494x1e?_0x9494x1e:_0x7ddb[189];this[_0x7ddb[629]]= null!= _0x9494x1f?_0x9494x1f:0;this[_0x7ddb[603]]= 0}mxUtils[_0x7ddb[1284]](mxText,mxShape);mxText[_0x7ddb[202]][_0x7ddb[1646]]= 0;mxText[_0x7ddb[202]][_0x7ddb[1647]]= 0;mxText[_0x7ddb[202]][_0x7ddb[1648]]= 0;mxText[_0x7ddb[202]][_0x7ddb[1649]]= 0;mxText[_0x7ddb[202]][_0x7ddb[1650]]= !0;mxText[_0x7ddb[202]][_0x7ddb[1616]]= -90;mxText[_0x7ddb[202]][_0x7ddb[1651]]= !0;mxText[_0x7ddb[202]][_0x7ddb[1652]]= !1;mxText[_0x7ddb[202]][_0x7ddb[1566]]= function(){return !1};mxText[_0x7ddb[202]][_0x7ddb[1567]]= function(){return 8!= document[_0x7ddb[5]]};mxText[_0x7ddb[202]][_0x7ddb[1568]]= function(){return 0};mxText[_0x7ddb[202]][_0x7ddb[1574]]= function(){return null!= this[_0x7ddb[1562]]&& !isNaN(this[_0x7ddb[1562]][_0x7ddb[235]])&& !isNaN(this[_0x7ddb[1562]][_0x7ddb[236]])&& !isNaN(this[_0x7ddb[1562]][_0x7ddb[117]])&& !isNaN(this[_0x7ddb[1562]][_0x7ddb[119]])};mxText[_0x7ddb[202]][_0x7ddb[1577]]= function(){var _0x9494x2=this[_0x7ddb[252]];8== document[_0x7ddb[5]]&& null!= _0x9494x2[_0x7ddb[285]]&& (_0x9494x2= _0x9494x2[_0x7ddb[285]],null!= _0x9494x2[_0x7ddb[285]]&& (_0x9494x2= _0x9494x2[_0x7ddb[285]]));this[_0x7ddb[1563]]= this[_0x7ddb[1562]][_0x7ddb[238]]();var _0x9494x3=this[_0x7ddb[1615]]();if(!this[_0x7ddb[1652]]&& null!= _0x9494x2 && _0x7ddb[1334]!= this[_0x7ddb[277]] && (!this[_0x7ddb[1645]]|| !this[_0x7ddb[1651]])){var _0x9494x4=null,_0x9494x5=null;if(null!= _0x9494x2[_0x7ddb[538]]){if(null!= _0x9494x2[_0x7ddb[285]]&& null!= _0x9494x2[_0x7ddb[285]][_0x7ddb[285]]&& _0x7ddb[1435]== _0x9494x2[_0x7ddb[285]][_0x7ddb[285]][_0x7ddb[301]]){_0x9494x2= _0x9494x2[_0x7ddb[285]][_0x7ddb[285]],_0x9494x4= this[_0x7ddb[1333]]?this[_0x7ddb[1562]][_0x7ddb[117]]:parseInt(_0x9494x2[_0x7ddb[284]](_0x7ddb[117]))* this[_0x7ddb[255]],_0x9494x5= parseInt(_0x9494x2[_0x7ddb[284]](_0x7ddb[119]))* this[_0x7ddb[255]]}else {_0x9494x3= _0x9494x2[_0x7ddb[1451]]();if(0== _0x9494x3[_0x7ddb[117]]&& 0== _0x9494x3[_0x7ddb[119]]){return};this[_0x7ddb[1563]]= new mxRectangle(_0x9494x3[_0x7ddb[235]],_0x9494x3[_0x7ddb[236]],_0x9494x3[_0x7ddb[117]],_0x9494x3[_0x7ddb[119]]);_0x9494x3= 0}}else {_0x9494x5= this[_0x7ddb[724]][_0x7ddb[441]][_0x7ddb[1653]],null!= this[_0x7ddb[359]]&& null!= this[_0x7ddb[167]]?(_0x9494x4= this[_0x7ddb[1333]]?this[_0x7ddb[1562]][_0x7ddb[117]]:this[_0x7ddb[359]]* this[_0x7ddb[255]],_0x9494x5= this[_0x7ddb[167]]* this[_0x7ddb[255]]):null!= _0x9494x5?(this[_0x7ddb[1441]](_0x9494x5),this[_0x7ddb[1654]](_0x9494x5),mxUtils[_0x7ddb[1331]](this[_0x7ddb[131]])?_0x9494x5[_0x7ddb[339]]= this[_0x7ddb[131]][_0x7ddb[342]]:(_0x9494x4= this[_0x7ddb[1650]]?this[_0x7ddb[131]][_0x7ddb[230]](/\n/g,_0x7ddb[1453]):this[_0x7ddb[131]],_0x9494x5[_0x7ddb[339]]= _0x9494x4),_0x9494x4= this[_0x7ddb[1333]]?this[_0x7ddb[1562]][_0x7ddb[117]]:_0x9494x5[_0x7ddb[359]]* this[_0x7ddb[255]],_0x9494x5= _0x9494x5[_0x7ddb[167]]* this[_0x7ddb[255]]):(_0x9494x4= this[_0x7ddb[1333]]?this[_0x7ddb[1562]][_0x7ddb[117]]:_0x9494x2[_0x7ddb[359]]* this[_0x7ddb[255]],_0x9494x5= _0x9494x2[_0x7ddb[167]]* this[_0x7ddb[255]])};null!= _0x9494x4&& null!= _0x9494x5&& (this[_0x7ddb[1563]]= new mxRectangle(this[_0x7ddb[1562]][_0x7ddb[235]]+ this[_0x7ddb[1655]][_0x7ddb[235]]* _0x9494x4,this[_0x7ddb[1562]][_0x7ddb[236]]+ this[_0x7ddb[1655]][_0x7ddb[236]]* _0x9494x5,_0x9494x4,_0x9494x5))}else {this[_0x7ddb[1563]][_0x7ddb[235]]+= this[_0x7ddb[1655]][_0x7ddb[235]]* this[_0x7ddb[1563]][_0x7ddb[117]],this[_0x7ddb[1563]][_0x7ddb[236]]+= this[_0x7ddb[1655]][_0x7ddb[236]]* this[_0x7ddb[1563]][_0x7ddb[119]]};null!= this[_0x7ddb[1563]]&& (0!= _0x9494x3&& (_0x9494x3= mxUtils[_0x7ddb[1613]](this[_0x7ddb[1563]],_0x9494x3),this[_0x7ddb[1563]][_0x7ddb[235]]= _0x9494x3[_0x7ddb[235]],this[_0x7ddb[1563]][_0x7ddb[236]]= _0x9494x3[_0x7ddb[236]],mxClient[_0x7ddb[496]]|| (this[_0x7ddb[1563]][_0x7ddb[117]]= _0x9494x3[_0x7ddb[117]],this[_0x7ddb[1563]][_0x7ddb[119]]= _0x9494x3[_0x7ddb[119]])),this[_0x7ddb[1563]][_0x7ddb[235]]= Math[_0x7ddb[519]](this[_0x7ddb[1563]][_0x7ddb[235]]),this[_0x7ddb[1563]][_0x7ddb[236]]= Math[_0x7ddb[519]](this[_0x7ddb[1563]][_0x7ddb[236]]),this[_0x7ddb[1563]][_0x7ddb[117]]= Math[_0x7ddb[430]](this[_0x7ddb[1563]][_0x7ddb[117]]),this[_0x7ddb[1563]][_0x7ddb[119]]= Math[_0x7ddb[430]](this[_0x7ddb[1563]][_0x7ddb[119]]))};mxText[_0x7ddb[202]][_0x7ddb[1598]]= function(){return 0};mxText[_0x7ddb[202]][_0x7ddb[1615]]= function(){return null!= this[_0x7ddb[724]]&& null!= this[_0x7ddb[724]][_0x7ddb[253]]?this[_0x7ddb[724]][_0x7ddb[253]][_0x7ddb[1615]]():0};mxText[_0x7ddb[202]][_0x7ddb[1590]]= function(){return !this[_0x7ddb[662]]&& null!= this[_0x7ddb[724]] && this[_0x7ddb[724]][_0x7ddb[441]][_0x7ddb[1179]][_0x7ddb[251]][_0x7ddb[1193]](this[_0x7ddb[724]][_0x7ddb[246]])};mxText[_0x7ddb[202]][_0x7ddb[1592]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){mxShape[_0x7ddb[202]][_0x7ddb[1592]][_0x7ddb[183]](this,arguments);_0x9494x2[_0x7ddb[1259]](this[_0x7ddb[352]]);_0x9494x2[_0x7ddb[1260]](this[_0x7ddb[1537]]);_0x9494x2[_0x7ddb[1262]](this[_0x7ddb[467]]);_0x9494x2[_0x7ddb[1265]](this[_0x7ddb[1288]]);_0x9494x2[_0x7ddb[1264]](this[_0x7ddb[803]]);_0x9494x2[_0x7ddb[1266]](this[_0x7ddb[666]])};mxText[_0x7ddb[202]][_0x7ddb[1586]]= function(){this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[361]]= Math[_0x7ddb[488]](this[_0x7ddb[1562]][_0x7ddb[235]])+ _0x7ddb[168];this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[125]]= Math[_0x7ddb[488]](this[_0x7ddb[1562]][_0x7ddb[236]])+ _0x7ddb[168];this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[117]]= _0x7ddb[942];this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[119]]= _0x7ddb[942];this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[277]]= _0x7ddb[189]};mxText[_0x7ddb[202]][_0x7ddb[1209]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[255]],_0x9494x4=this[_0x7ddb[1562]][_0x7ddb[235]]/ _0x9494x3,_0x9494x5=this[_0x7ddb[1562]][_0x7ddb[236]]/ _0x9494x3,_0x9494x9=this[_0x7ddb[1562]][_0x7ddb[117]]/ _0x9494x3,_0x9494x3=this[_0x7ddb[1562]][_0x7ddb[119]]/ _0x9494x3;this[_0x7ddb[1591]](_0x9494x2,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494x3);this[_0x7ddb[1592]](_0x9494x2,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494x3);var _0x9494xa=mxUtils[_0x7ddb[1331]](this[_0x7ddb[131]])|| this[_0x7ddb[507]]== mxConstants[_0x7ddb[1656]],_0x9494x12=_0x9494xa|| _0x9494x2 instanceof mxVmlCanvas2D?_0x7ddb[1428]:_0x7ddb[110],_0x9494x13=this[_0x7ddb[131]];!_0x9494xa&& _0x7ddb[1428]== _0x9494x12 && (_0x9494x13= mxUtils[_0x7ddb[321]](_0x9494x13,!1));_0x9494x13= !mxUtils[_0x7ddb[1331]](this[_0x7ddb[131]])&& this[_0x7ddb[1650]] && _0x7ddb[1428]== _0x9494x12?_0x9494x13[_0x7ddb[230]](/\n/g,_0x7ddb[1453]):_0x9494x13;_0x9494x2[_0x7ddb[963]](_0x9494x4,_0x9494x5,_0x9494x9,_0x9494x3,_0x9494x13,this[_0x7ddb[611]],this[_0x7ddb[552]],this[_0x7ddb[1333]],_0x9494x12,_0x7ddb[1334]== this[_0x7ddb[277]],this[_0x7ddb[1645]],this[_0x7ddb[1615]]())};mxText[_0x7ddb[202]][_0x7ddb[1575]]= function(){var _0x9494x2=this[_0x7ddb[252]][_0x7ddb[124]];_0x9494x2[_0x7ddb[461]]= 1> this[_0x7ddb[461]]?this[_0x7ddb[461]]:_0x7ddb[110];_0x9494x2[_0x7ddb[277]]= _0x7ddb[110];_0x9494x2[_0x7ddb[117]]= _0x7ddb[110];_0x9494x2[_0x7ddb[119]]= _0x7ddb[110];this[_0x7ddb[1441]](this[_0x7ddb[252]]);this[_0x7ddb[1654]](this[_0x7ddb[252]]);this[_0x7ddb[1657]]();this[_0x7ddb[167]]= this[_0x7ddb[359]]= null;null!= mxClient[_0x7ddb[73]]?this[_0x7ddb[1658]]():this[_0x7ddb[1659]]()};mxText[_0x7ddb[202]][_0x7ddb[1658]]= function(){var _0x9494x2=this[_0x7ddb[1615]](),_0x9494x3=this[_0x7ddb[252]][_0x7ddb[124]],_0x9494x4=this[_0x7ddb[1655]][_0x7ddb[235]],_0x9494x5=this[_0x7ddb[1655]][_0x7ddb[236]];0!= _0x9494x2?(_0x9494x3[mxClient[_0x7ddb[73]]+ _0x7ddb[1660]]= 100* -_0x9494x4+ _0x7ddb[1661]+ 100* -_0x9494x5+ _0x7ddb[229],_0x9494x3[mxClient[_0x7ddb[73]]+ _0x7ddb[1662]]= _0x7ddb[536]+ 100* _0x9494x4+ _0x7ddb[1663]+ 100* _0x9494x5+ _0x7ddb[1664]+ this[_0x7ddb[255]]+ _0x7ddb[1665]+ _0x9494x2+ _0x7ddb[1666]):(_0x9494x3[mxClient[_0x7ddb[73]]+ _0x7ddb[1660]]= _0x7ddb[1667],_0x9494x3[mxClient[_0x7ddb[73]]+ _0x7ddb[1662]]= _0x7ddb[1402]+ this[_0x7ddb[255]]+ _0x7ddb[1393]+ 100* _0x9494x4+ _0x7ddb[1663]+ 100* _0x9494x5+ _0x7ddb[1668]);_0x9494x3[_0x7ddb[361]]= Math[_0x7ddb[488]](this[_0x7ddb[1562]][_0x7ddb[235]])+ _0x7ddb[168];_0x9494x3[_0x7ddb[125]]= Math[_0x7ddb[488]](this[_0x7ddb[1562]][_0x7ddb[236]])+ _0x7ddb[168]};mxText[_0x7ddb[202]][_0x7ddb[1659]]= function(){var _0x9494x2=this[_0x7ddb[252]][_0x7ddb[124]],_0x9494x3=this[_0x7ddb[1655]][_0x7ddb[235]],_0x9494x4=this[_0x7ddb[1655]][_0x7ddb[236]],_0x9494x5=this[_0x7ddb[255]];_0x9494x2[_0x7ddb[347]]= _0x7ddb[110];var _0x9494x9=0,_0x9494xa=0,_0x9494x12=null!= this[_0x7ddb[724]]?this[_0x7ddb[724]][_0x7ddb[441]][_0x7ddb[1653]]:null;if(null!= _0x9494x12){_0x9494x12[_0x7ddb[124]][_0x7ddb[277]]= _0x7ddb[110];_0x9494x12[_0x7ddb[124]][_0x7ddb[119]]= _0x7ddb[110];_0x9494x12[_0x7ddb[124]][_0x7ddb[117]]= _0x7ddb[110];this[_0x7ddb[1441]](_0x9494x12);this[_0x7ddb[1654]](_0x9494x12);if(mxUtils[_0x7ddb[1331]](this[_0x7ddb[131]])){_0x9494x12[_0x7ddb[339]]= this[_0x7ddb[131]][_0x7ddb[342]]}else {var _0x9494x13=this[_0x7ddb[131]];this[_0x7ddb[507]]!= mxConstants[_0x7ddb[1656]]&& (_0x9494x13= mxUtils[_0x7ddb[321]](_0x9494x13,!1));_0x9494x13= this[_0x7ddb[1650]]?_0x9494x13[_0x7ddb[230]](/\n/g,_0x7ddb[1453]):_0x9494x13;_0x9494x12[_0x7ddb[339]]= _0x9494x13};_0x9494x9= _0x9494x12[_0x7ddb[359]]+ 2;_0x9494xa= _0x9494x12[_0x7ddb[167]]+ 2}else {_0x9494x9= this[_0x7ddb[252]][_0x7ddb[359]],_0x9494xa= this[_0x7ddb[252]][_0x7ddb[167]]+ 1};this[_0x7ddb[359]]= _0x9494x9;this[_0x7ddb[167]]= _0x9494xa;_0x9494x12= this[_0x7ddb[1562]][_0x7ddb[117]]/ _0x9494x5;_0x9494x13= this[_0x7ddb[1562]][_0x7ddb[119]]/ _0x9494x5;mxClient[_0x7ddb[496]]&& (this[_0x7ddb[1645]]|| _0x7ddb[1334]== this[_0x7ddb[277]])&& 0< _0x9494x13?(_0x9494x13= Math[_0x7ddb[243]](_0x9494x13,_0x9494xa),_0x9494x2[_0x7ddb[119]]= Math[_0x7ddb[488]](_0x9494x13+ 1)+ _0x7ddb[168]):_0x9494x13= _0x9494xa;_0x7ddb[1334]!= this[_0x7ddb[277]]&& (mxClient[_0x7ddb[496]]&& (this[_0x7ddb[1645]]|| this[_0x7ddb[1333]])&& 0< _0x9494x12?(_0x9494x12= Math[_0x7ddb[243]](_0x9494x12,_0x9494x9),_0x9494x2[_0x7ddb[117]]= Math[_0x7ddb[488]](_0x9494x12)+ _0x7ddb[168]):_0x9494x12= _0x9494x9);var _0x9494x13=_0x9494x13* _0x9494x5,_0x9494x12=_0x9494x12* _0x9494x5,_0x9494x9=this[_0x7ddb[1615]]()* (Math[_0x7ddb[424]]/ 180),_0x9494xa=parseFloat(parseFloat(Math[_0x7ddb[426]](_0x9494x9))[_0x7ddb[1293]](8)),_0x9494x14=parseFloat(parseFloat(Math[_0x7ddb[427]](-_0x9494x9))[_0x7ddb[1293]](8)),_0x9494x9=_0x9494x9% (2* Math[_0x7ddb[424]]);0> _0x9494x9&& (_0x9494x9+= 2* Math[_0x7ddb[424]]);_0x9494x9%= Math[_0x7ddb[424]];_0x9494x9> Math[_0x7ddb[424]]/ 2&& (_0x9494x9= Math[_0x7ddb[424]]- _0x9494x9);var _0x9494x15=Math[_0x7ddb[426]](_0x9494x9),_0x9494x16=Math[_0x7ddb[427]](-_0x9494x9),_0x9494x3=_0x9494x12* -(_0x9494x3+ 0.5),_0x9494x4=_0x9494x13* -(_0x9494x4+ 0.5),_0x9494x17=(_0x9494x13- _0x9494x13* _0x9494x15+ _0x9494x12* _0x9494x16)/ 2+ _0x9494x14* _0x9494x3- _0x9494xa* _0x9494x4;0!= _0x9494x9&& (_0x9494x2[_0x7ddb[347]]= _0x7ddb[1505]+ _0x9494xa+ _0x7ddb[1506]+ _0x9494x14+ _0x7ddb[1507]+ -_0x9494x14+ _0x7ddb[1508]+ _0x9494xa+ _0x7ddb[1509]);_0x9494x2[_0x7ddb[499]]= _0x9494x5;_0x9494x2[_0x7ddb[361]]= Math[_0x7ddb[488]](this[_0x7ddb[1562]][_0x7ddb[235]]+ ((_0x9494x12- _0x9494x12* _0x9494x15+ _0x9494x13* _0x9494x16)/ 2- _0x9494xa* _0x9494x3- _0x9494x14* _0x9494x4)- _0x9494x12/ 2)+ _0x7ddb[168];_0x9494x2[_0x7ddb[125]]= Math[_0x7ddb[488]](this[_0x7ddb[1562]][_0x7ddb[236]]+ _0x9494x17- _0x9494x13/ 2)+ _0x7ddb[168]};mxText[_0x7ddb[202]][_0x7ddb[1657]]= function(){if(mxUtils[_0x7ddb[1331]](this[_0x7ddb[131]])){this[_0x7ddb[252]][_0x7ddb[339]]= _0x7ddb[110],this[_0x7ddb[252]][_0x7ddb[62]](this[_0x7ddb[131]])}else {var _0x9494x2=this[_0x7ddb[131]];this[_0x7ddb[507]]!= mxConstants[_0x7ddb[1656]]&& (_0x9494x2= mxUtils[_0x7ddb[321]](_0x9494x2,!1));var _0x9494x2=this[_0x7ddb[1650]]?_0x9494x2[_0x7ddb[230]](/\n/g,_0x7ddb[1453]):_0x9494x2,_0x9494x3=null!= this[_0x7ddb[1537]]&& this[_0x7ddb[1537]]!= mxConstants[_0x7ddb[217]]?this[_0x7ddb[1537]]:null,_0x9494x4=null!= this[_0x7ddb[467]]&& this[_0x7ddb[467]]!= mxConstants[_0x7ddb[217]]?this[_0x7ddb[467]]:null;if(null!= _0x9494x3|| null!= _0x9494x4){if(_0x7ddb[1334]== this[_0x7ddb[277]]){null!= _0x9494x3&& (this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[1028]]= _0x9494x3),null!= _0x9494x4&& (this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[467]]= _0x7ddb[1669]+ _0x9494x4)}else {var _0x9494x5=_0x7ddb[110];null!= _0x9494x3&& (_0x9494x5+= _0x7ddb[1418]+ _0x9494x3+ _0x7ddb[471]);null!= _0x9494x4&& (_0x9494x5+= _0x7ddb[1419]+ _0x9494x4+ _0x7ddb[471]);_0x9494x2= _0x7ddb[1670]+ _0x9494x5+ _0x7ddb[1671]+ this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[489]]+ _0x7ddb[1423]+ _0x9494x2+ _0x7ddb[1424];this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[489]]= _0x7ddb[110]}};this[_0x7ddb[252]][_0x7ddb[339]]= _0x9494x2}};mxText[_0x7ddb[202]][_0x7ddb[1441]]= function(_0x9494x2){_0x9494x2= _0x9494x2[_0x7ddb[124]];_0x9494x2[_0x7ddb[489]]= Math[_0x7ddb[488]](this[_0x7ddb[803]]* mxConstants[_0x7ddb[490]])+ _0x7ddb[168];_0x9494x2[_0x7ddb[487]]= Math[_0x7ddb[488]](this[_0x7ddb[803]])+ _0x7ddb[168];_0x9494x2[_0x7ddb[486]]= this[_0x7ddb[1288]];_0x9494x2[_0x7ddb[123]]= _0x7ddb[125];_0x9494x2[_0x7ddb[352]]= this[_0x7ddb[352]];_0x9494x2[_0x7ddb[1452]]= (this[_0x7ddb[666]]& mxConstants[_0x7ddb[1410]])== mxConstants[_0x7ddb[1410]]?_0x7ddb[1447]:_0x7ddb[110];_0x9494x2[_0x7ddb[666]]= (this[_0x7ddb[666]]& mxConstants[_0x7ddb[1412]])== mxConstants[_0x7ddb[1412]]?_0x7ddb[1449]:_0x7ddb[110];_0x9494x2[_0x7ddb[1498]]= (this[_0x7ddb[666]]& mxConstants[_0x7ddb[1414]])== mxConstants[_0x7ddb[1414]]?_0x7ddb[355]:_0x7ddb[110];_0x9494x2[_0x7ddb[1165]]= this[_0x7ddb[611]]== mxConstants[_0x7ddb[479]]?_0x7ddb[698]:this[_0x7ddb[611]]== mxConstants[_0x7ddb[480]]?_0x7ddb[699]:_0x7ddb[361]};mxText[_0x7ddb[202]][_0x7ddb[1654]]= function(_0x9494x2){var _0x9494x3=Math[_0x7ddb[488]](this[_0x7ddb[1562]][_0x7ddb[117]]/ this[_0x7ddb[255]]),_0x9494x4=Math[_0x7ddb[488]](this[_0x7ddb[1562]][_0x7ddb[119]]/ this[_0x7ddb[255]]);_0x9494x2= _0x9494x2[_0x7ddb[124]];this[_0x7ddb[1645]]?(_0x9494x2[_0x7ddb[277]]= _0x7ddb[188],0< _0x9494x4&& (_0x9494x2[_0x7ddb[1503]]= _0x9494x4+ _0x7ddb[168]),0< _0x9494x3&& (_0x9494x2[_0x7ddb[117]]= _0x9494x3+ _0x7ddb[168])):_0x7ddb[1334]== this[_0x7ddb[277]]&& (_0x9494x2[_0x7ddb[117]]= _0x9494x3+ _0x7ddb[168],0< _0x9494x4&& (_0x9494x2[_0x7ddb[1503]]= _0x9494x4+ _0x7ddb[168]));this[_0x7ddb[1333]]?(!this[_0x7ddb[1645]]&& 0< _0x9494x3 && (_0x9494x2[_0x7ddb[117]]= _0x9494x3+ _0x7ddb[168]),_0x9494x2[_0x7ddb[493]]= _0x7ddb[1502]):_0x9494x2[_0x7ddb[493]]= _0x7ddb[494]};mxText[_0x7ddb[202]][_0x7ddb[1672]]= function(){this[_0x7ddb[1655]]= mxUtils[_0x7ddb[1501]](this[_0x7ddb[611]],this[_0x7ddb[552]])};mxText[_0x7ddb[202]][_0x7ddb[1673]]= function(){var _0x9494x2=0,_0x9494x3=0,_0x9494x2=this[_0x7ddb[611]]== mxConstants[_0x7ddb[479]]?(this[_0x7ddb[659]]- this[_0x7ddb[661]])/ 2:this[_0x7ddb[611]]== mxConstants[_0x7ddb[480]]?-this[_0x7ddb[661]]- this[_0x7ddb[1649]]:this[_0x7ddb[659]]+ this[_0x7ddb[1648]],_0x9494x3=this[_0x7ddb[552]]== mxConstants[_0x7ddb[481]]?(this[_0x7ddb[658]]- this[_0x7ddb[660]])/ 2:this[_0x7ddb[552]]== mxConstants[_0x7ddb[482]]?-this[_0x7ddb[660]]- this[_0x7ddb[1647]]:this[_0x7ddb[658]]+ this[_0x7ddb[1646]];return new mxPoint(_0x9494x2,_0x9494x3)};function mxTriangle(){mxActor[_0x7ddb[239]](this)}mxUtils[_0x7ddb[1284]](mxTriangle,mxActor);mxTriangle[_0x7ddb[202]][_0x7ddb[1625]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x9494x2[_0x7ddb[1276]](0,0);_0x9494x2[_0x7ddb[1277]](_0x9494x5,0.5* _0x9494x9);_0x9494x2[_0x7ddb[1277]](0,_0x9494x9);_0x9494x2[_0x7ddb[268]]()};function mxHexagon(){mxActor[_0x7ddb[239]](this)}mxUtils[_0x7ddb[1284]](mxHexagon,mxActor);mxHexagon[_0x7ddb[202]][_0x7ddb[1625]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x9494x2[_0x7ddb[1276]](0.25* _0x9494x5,0);_0x9494x2[_0x7ddb[1277]](0.75* _0x9494x5,0);_0x9494x2[_0x7ddb[1277]](_0x9494x5,0.5* _0x9494x9);_0x9494x2[_0x7ddb[1277]](0.75* _0x9494x5,_0x9494x9);_0x9494x2[_0x7ddb[1277]](0.25* _0x9494x5,_0x9494x9);_0x9494x2[_0x7ddb[1277]](0,0.5* _0x9494x9);_0x9494x2[_0x7ddb[268]]()};function mxLine(_0x9494x2,_0x9494x3,_0x9494x4){mxShape[_0x7ddb[239]](this);this[_0x7ddb[1562]]= _0x9494x2;this[_0x7ddb[1336]]= _0x9494x3;this[_0x7ddb[1307]]= null!= _0x9494x4?_0x9494x4:1}mxUtils[_0x7ddb[1284]](mxLine,mxShape);mxLine[_0x7ddb[202]][_0x7ddb[1595]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x9494x4+= _0x9494x9/ 2;_0x9494x2[_0x7ddb[1275]]();_0x9494x2[_0x7ddb[1276]](_0x9494x3,_0x9494x4);_0x9494x2[_0x7ddb[1277]](_0x9494x3+ _0x9494x5,_0x9494x4);_0x9494x2[_0x7ddb[1336]]()};function mxImageShape(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){mxShape[_0x7ddb[239]](this);this[_0x7ddb[1562]]= _0x9494x2;this[_0x7ddb[618]]= _0x9494x3;this[_0x7ddb[1334]]= _0x9494x4;this[_0x7ddb[1336]]= _0x9494x5;this[_0x7ddb[1307]]= null!= _0x9494x9?_0x9494x9:1;this[_0x7ddb[639]]= !1}mxUtils[_0x7ddb[1284]](mxImageShape,mxRectangleShape);mxImageShape[_0x7ddb[202]][_0x7ddb[1674]]= !0;mxImageShape[_0x7ddb[202]][_0x7ddb[1568]]= function(){return !mxClient[_0x7ddb[80]]?0.5:0};mxImageShape[_0x7ddb[202]][_0x7ddb[183]]= function(_0x9494x2){mxShape[_0x7ddb[202]][_0x7ddb[183]][_0x7ddb[183]](this,arguments);this[_0x7ddb[1299]]= this[_0x7ddb[1336]]= this[_0x7ddb[1334]]= null;null!= this[_0x7ddb[124]]&& (this[_0x7ddb[1334]]= mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_IMAGE_BACKGROUND),this[_0x7ddb[1336]]= mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_IMAGE_BORDER),this[_0x7ddb[1674]]= 1== mxUtils[_0x7ddb[1550]](this[_0x7ddb[124]],mxConstants.STYLE_IMAGE_ASPECT,1),this[_0x7ddb[623]]= this[_0x7ddb[623]]|| 1== mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],_0x7ddb[1675],0),this[_0x7ddb[624]]= this[_0x7ddb[624]]|| 1== mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],_0x7ddb[1676],0))};mxImageShape[_0x7ddb[202]][_0x7ddb[1567]]= function(){return !this[_0x7ddb[1674]]};mxImageShape[_0x7ddb[202]][_0x7ddb[1570]]= function(){var _0x9494x2=document[_0x7ddb[55]](_0x7ddb[485]);_0x9494x2[_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[492];return _0x9494x2};mxImageShape[_0x7ddb[202]][_0x7ddb[1595]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){if(null!= this[_0x7ddb[618]]){var _0x9494xa=mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_IMAGE_BACKGROUND,null),_0x9494x12=mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_IMAGE_BORDER,null);if(null!= _0x9494xa|| null!= _0x9494x12){_0x9494x2[_0x7ddb[1245]](_0x9494xa),_0x9494x2[_0x7ddb[1249]](_0x9494x12),_0x9494x2[_0x7ddb[1319]](_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9),_0x9494x2[_0x7ddb[1337]]()};_0x9494x2[_0x7ddb[618]](_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,this[_0x7ddb[618]],this[_0x7ddb[1674]],!1,!1)}else {mxRectangleShape[_0x7ddb[202]][_0x7ddb[1601]][_0x7ddb[183]](this,arguments)}};mxImageShape[_0x7ddb[202]][_0x7ddb[1575]]= function(){this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[361]]= Math[_0x7ddb[488]](this[_0x7ddb[1562]][_0x7ddb[235]])+ _0x7ddb[168];this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[125]]= Math[_0x7ddb[488]](this[_0x7ddb[1562]][_0x7ddb[236]])+ _0x7ddb[168];this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[117]]= Math[_0x7ddb[160]](0,Math[_0x7ddb[488]](this[_0x7ddb[1562]][_0x7ddb[117]]))+ _0x7ddb[168];this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[119]]= Math[_0x7ddb[160]](0,Math[_0x7ddb[488]](this[_0x7ddb[1562]][_0x7ddb[119]]))+ _0x7ddb[168];this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[1028]]= this[_0x7ddb[1334]]|| _0x7ddb[110];this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[1630]]= this[_0x7ddb[1336]]|| _0x7ddb[110];this[_0x7ddb[252]][_0x7ddb[339]]= _0x7ddb[110];if(null!= this[_0x7ddb[618]]){var _0x9494x2=document[_0x7ddb[55]](mxClient[_0x7ddb[49]]|| null== mxClient[_0x7ddb[73]]&& 0!= this[_0x7ddb[603]]?mxClient[_0x7ddb[463]]+ _0x7ddb[464]:_0x7ddb[466]);_0x9494x2[_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[492];_0x9494x2[_0x7ddb[390]]= this[_0x7ddb[618]];var _0x9494x3=100> this[_0x7ddb[461]]?_0x7ddb[459]+ this[_0x7ddb[461]]+ _0x7ddb[460]:_0x7ddb[110];this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[347]]= _0x9494x3;this[_0x7ddb[623]]&& this[_0x7ddb[624]]?_0x9494x3+= _0x7ddb[1677]:this[_0x7ddb[623]]?_0x9494x3+= _0x7ddb[1678]:this[_0x7ddb[624]]&& (_0x9494x3+= _0x7ddb[1679]);_0x9494x2[_0x7ddb[124]][_0x7ddb[347]]!= _0x9494x3&& (_0x9494x2[_0x7ddb[124]][_0x7ddb[347]]= _0x9494x3);_0x7ddb[618]== _0x9494x2[_0x7ddb[301]]?_0x9494x2[_0x7ddb[124]][_0x7ddb[603]]= this[_0x7ddb[603]]:_0x9494x2[_0x7ddb[124]][mxClient[_0x7ddb[73]]+ _0x7ddb[1662]]= _0x7ddb[1394]+ this[_0x7ddb[603]]+ _0x7ddb[1666];_0x9494x2[_0x7ddb[124]][_0x7ddb[117]]= this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[117]];_0x9494x2[_0x7ddb[124]][_0x7ddb[119]]= this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[119]];this[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[1617]]= _0x7ddb[110];this[_0x7ddb[252]][_0x7ddb[62]](_0x9494x2)}else {this[_0x7ddb[1600]](this[_0x7ddb[252]])}};function mxLabel(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){mxRectangleShape[_0x7ddb[239]](this,_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5)}mxUtils[_0x7ddb[1284]](mxLabel,mxRectangleShape);mxLabel[_0x7ddb[202]][_0x7ddb[1680]]= mxConstants[_0x7ddb[1681]];mxLabel[_0x7ddb[202]][_0x7ddb[657]]= 2;mxLabel[_0x7ddb[202]][_0x7ddb[1682]]= 10;mxLabel[_0x7ddb[202]][_0x7ddb[635]]= 2;mxLabel[_0x7ddb[202]][_0x7ddb[176]]= function(_0x9494x2){mxShape[_0x7ddb[202]][_0x7ddb[176]][_0x7ddb[183]](this,arguments);null!= this[_0x7ddb[632]]&& null!= this[_0x7ddb[630]]&& (this[_0x7ddb[1683]]= new this[_0x7ddb[630]],this[_0x7ddb[1683]][_0x7ddb[507]]= this[_0x7ddb[507]],this[_0x7ddb[1683]][_0x7ddb[1562]]= this[_0x7ddb[1562]],this[_0x7ddb[1683]][_0x7ddb[1334]]= this[_0x7ddb[632]],this[_0x7ddb[1683]][_0x7ddb[1336]]= this[_0x7ddb[632]],this[_0x7ddb[1683]][_0x7ddb[1299]]= this[_0x7ddb[634]],this[_0x7ddb[1683]][_0x7ddb[663]]= this[_0x7ddb[638]],this[_0x7ddb[1683]][_0x7ddb[176]](this[_0x7ddb[252]]))};mxLabel[_0x7ddb[202]][_0x7ddb[258]]= function(){null!= this[_0x7ddb[1683]]&& (this[_0x7ddb[1683]][_0x7ddb[1334]]= this[_0x7ddb[632]],this[_0x7ddb[1683]][_0x7ddb[1336]]= this[_0x7ddb[632]],this[_0x7ddb[1683]][_0x7ddb[1299]]= this[_0x7ddb[634]],this[_0x7ddb[1683]][_0x7ddb[663]]= this[_0x7ddb[638]]);mxShape[_0x7ddb[202]][_0x7ddb[258]][_0x7ddb[183]](this,arguments)};mxLabel[_0x7ddb[202]][_0x7ddb[1567]]= function(){return mxRectangleShape[_0x7ddb[202]][_0x7ddb[1567]][_0x7ddb[183]](this,arguments)&& null== this[_0x7ddb[632]]&& null== this[_0x7ddb[630]]};mxLabel[_0x7ddb[202]][_0x7ddb[1602]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){this[_0x7ddb[1684]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9);this[_0x7ddb[1685]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9);mxRectangleShape[_0x7ddb[202]][_0x7ddb[1602]][_0x7ddb[183]](this,arguments)};mxLabel[_0x7ddb[202]][_0x7ddb[1684]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){null!= this[_0x7ddb[618]]&& (_0x9494x3= this[_0x7ddb[1686]](_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9),_0x9494x2[_0x7ddb[618]](_0x9494x3[_0x7ddb[235]],_0x9494x3[_0x7ddb[236]],_0x9494x3[_0x7ddb[117]],_0x9494x3[_0x7ddb[119]],this[_0x7ddb[618]],!1,!1,!1))};mxLabel[_0x7ddb[202]][_0x7ddb[1686]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){var _0x9494x9=mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),_0x9494xa=mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),_0x9494x12=mxUtils[_0x7ddb[1550]](this[_0x7ddb[124]],mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),_0x9494x13=mxUtils[_0x7ddb[1550]](this[_0x7ddb[124]],mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),_0x9494x14=mxUtils[_0x7ddb[1550]](this[_0x7ddb[124]],mxConstants.STYLE_SPACING,this[_0x7ddb[657]])+ 5;_0x9494x2= _0x9494x9== mxConstants[_0x7ddb[479]]?_0x9494x2+ (_0x9494x4- _0x9494x12)/ 2:_0x9494x9== mxConstants[_0x7ddb[480]]?_0x9494x2+ (_0x9494x4- _0x9494x12- _0x9494x14):_0x9494x2+ _0x9494x14;_0x9494x3= _0x9494xa== mxConstants[_0x7ddb[1687]]?_0x9494x3+ _0x9494x14:_0x9494xa== mxConstants[_0x7ddb[482]]?_0x9494x3+ (_0x9494x5- _0x9494x13- _0x9494x14):_0x9494x3+ (_0x9494x5- _0x9494x13)/ 2;return new mxRectangle(_0x9494x2,_0x9494x3,_0x9494x12,_0x9494x13)};mxLabel[_0x7ddb[202]][_0x7ddb[1685]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){null!= this[_0x7ddb[1683]]?(this[_0x7ddb[1683]][_0x7ddb[1562]]= this[_0x7ddb[1688]](_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9),this[_0x7ddb[1683]][_0x7ddb[1209]](_0x9494x2)):null!= this[_0x7ddb[631]]&& (_0x9494x3= this[_0x7ddb[1688]](_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9),_0x9494x2[_0x7ddb[618]](_0x9494x3[_0x7ddb[235]],_0x9494x3[_0x7ddb[236]],_0x9494x3[_0x7ddb[117]],_0x9494x3[_0x7ddb[119]],this[_0x7ddb[631]],!1,!1,!1))};mxLabel[_0x7ddb[202]][_0x7ddb[1688]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){var _0x9494x9=mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),_0x9494xa=mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),_0x9494x12=mxUtils[_0x7ddb[1550]](this[_0x7ddb[124]],mxConstants.STYLE_INDICATOR_WIDTH,this[_0x7ddb[1682]]),_0x9494x13=mxUtils[_0x7ddb[1550]](this[_0x7ddb[124]],mxConstants.STYLE_INDICATOR_HEIGHT,this[_0x7ddb[1682]]),_0x9494x14=this[_0x7ddb[657]]+ 5;_0x9494x2= _0x9494x9== mxConstants[_0x7ddb[480]]?_0x9494x2+ (_0x9494x4- _0x9494x12- _0x9494x14):_0x9494x9== mxConstants[_0x7ddb[479]]?_0x9494x2+ (_0x9494x4- _0x9494x12)/ 2:_0x9494x2+ _0x9494x14;_0x9494x3= _0x9494xa== mxConstants[_0x7ddb[482]]?_0x9494x3+ (_0x9494x5- _0x9494x13- _0x9494x14):_0x9494xa== mxConstants[_0x7ddb[1687]]?_0x9494x3+ _0x9494x14:_0x9494x3+ (_0x9494x5- _0x9494x13)/ 2;return new mxRectangle(_0x9494x2,_0x9494x3,_0x9494x12,_0x9494x13)};mxLabel[_0x7ddb[202]][_0x7ddb[1575]]= function(){for(mxRectangleShape[_0x7ddb[202]][_0x7ddb[1575]][_0x7ddb[183]](this,arguments);this[_0x7ddb[252]][_0x7ddb[1580]]();){this[_0x7ddb[252]][_0x7ddb[266]](this[_0x7ddb[252]][_0x7ddb[1581]])};if(null!= this[_0x7ddb[618]]){var _0x9494x2=document[_0x7ddb[55]](_0x7ddb[466]);_0x9494x2[_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[1500];_0x9494x2[_0x7ddb[57]](_0x7ddb[467],_0x7ddb[468]);var _0x9494x3=this[_0x7ddb[1686]](this[_0x7ddb[1562]][_0x7ddb[235]],this[_0x7ddb[1562]][_0x7ddb[236]],this[_0x7ddb[1562]][_0x7ddb[117]],this[_0x7ddb[1562]][_0x7ddb[119]]);_0x9494x3[_0x7ddb[235]]-= this[_0x7ddb[1562]][_0x7ddb[235]];_0x9494x3[_0x7ddb[236]]-= this[_0x7ddb[1562]][_0x7ddb[236]];_0x9494x2[_0x7ddb[124]][_0x7ddb[361]]= Math[_0x7ddb[488]](_0x9494x3[_0x7ddb[235]])+ _0x7ddb[168];_0x9494x2[_0x7ddb[124]][_0x7ddb[125]]= Math[_0x7ddb[488]](_0x9494x3[_0x7ddb[236]])+ _0x7ddb[168];_0x9494x2[_0x7ddb[124]][_0x7ddb[117]]= Math[_0x7ddb[488]](_0x9494x3[_0x7ddb[117]])+ _0x7ddb[168];_0x9494x2[_0x7ddb[124]][_0x7ddb[119]]= Math[_0x7ddb[488]](_0x9494x3[_0x7ddb[119]])+ _0x7ddb[168];_0x9494x2[_0x7ddb[390]]= this[_0x7ddb[618]];this[_0x7ddb[252]][_0x7ddb[62]](_0x9494x2)}};function mxCylinder(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){mxShape[_0x7ddb[239]](this);this[_0x7ddb[1562]]= _0x9494x2;this[_0x7ddb[1334]]= _0x9494x3;this[_0x7ddb[1336]]= _0x9494x4;this[_0x7ddb[1307]]= null!= _0x9494x5?_0x9494x5:1}mxUtils[_0x7ddb[1284]](mxCylinder,mxShape);mxCylinder[_0x7ddb[202]][_0x7ddb[1503]]= 40;mxCylinder[_0x7ddb[202]][_0x7ddb[1564]]= 0;mxCylinder[_0x7ddb[202]][_0x7ddb[1595]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x9494x2[_0x7ddb[513]](_0x9494x3,_0x9494x4);_0x9494x2[_0x7ddb[1275]]();this[_0x7ddb[1625]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,!1);_0x9494x2[_0x7ddb[1337]]();_0x9494x2[_0x7ddb[1267]](!1);_0x9494x2[_0x7ddb[1275]]();this[_0x7ddb[1625]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,!0);_0x9494x2[_0x7ddb[1336]]()};mxCylinder[_0x7ddb[202]][_0x7ddb[1625]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){_0x9494x3= Math[_0x7ddb[243]](this[_0x7ddb[1503]],Math[_0x7ddb[488]](_0x9494x9/ 5));if(_0x9494xa&& null!= this[_0x7ddb[1334]]|| !_0x9494xa&& null== this[_0x7ddb[1334]]){_0x9494x2[_0x7ddb[1276]](0,_0x9494x3),_0x9494x2[_0x7ddb[1279]](0,2* _0x9494x3,_0x9494x5,2* _0x9494x3,_0x9494x5,_0x9494x3),_0x9494xa|| (_0x9494x2[_0x7ddb[1336]](),_0x9494x2[_0x7ddb[1275]]())};_0x9494xa|| (_0x9494x2[_0x7ddb[1276]](0,_0x9494x3),_0x9494x2[_0x7ddb[1279]](0,-_0x9494x3/ 3,_0x9494x5,-_0x9494x3/ 3,_0x9494x5,_0x9494x3),_0x9494x2[_0x7ddb[1277]](_0x9494x5,_0x9494x9- _0x9494x3),_0x9494x2[_0x7ddb[1279]](_0x9494x5,_0x9494x9+ _0x9494x3/ 3,0,_0x9494x9+ _0x9494x3/ 3,0,_0x9494x9- _0x9494x3),_0x9494x2[_0x7ddb[268]]())};function mxConnector(_0x9494x2,_0x9494x3,_0x9494x4){mxPolyline[_0x7ddb[239]](this,_0x9494x2,_0x9494x3,_0x9494x4)}mxUtils[_0x7ddb[1284]](mxConnector,mxPolyline);mxConnector[_0x7ddb[202]][_0x7ddb[1594]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[1689]](_0x9494x2,_0x9494x3,!0),_0x9494x5=this[_0x7ddb[1689]](_0x9494x2,_0x9494x3,!1);null== this[_0x7ddb[124]]|| 1!= this[_0x7ddb[124]][mxConstants[_0x7ddb[1690]]]?this[_0x7ddb[1639]](_0x9494x2,_0x9494x3,this[_0x7ddb[1606]]):this[_0x7ddb[1691]](_0x9494x2,_0x9494x3);_0x9494x2[_0x7ddb[1245]](this[_0x7ddb[1336]]);_0x9494x2[_0x7ddb[1267]](!1);_0x9494x2[_0x7ddb[1251]](!1);null!= _0x9494x4&& _0x9494x4();null!= _0x9494x5&& _0x9494x5()};mxConnector[_0x7ddb[202]][_0x7ddb[1691]]= function(_0x9494x2,_0x9494x3){_0x9494x2[_0x7ddb[1275]]();var _0x9494x4=_0x9494x3[0],_0x9494x5=_0x9494x3[_0x7ddb[67]];_0x9494x2[_0x7ddb[1276]](_0x9494x4[_0x7ddb[235]],_0x9494x4[_0x7ddb[236]]);for(_0x9494x4= 1;_0x9494x4< _0x9494x5- 2;_0x9494x4++){var _0x9494x9=_0x9494x3[_0x9494x4],_0x9494xa=_0x9494x3[_0x9494x4+ 1];_0x9494x2[_0x7ddb[1278]](_0x9494x9[_0x7ddb[235]],_0x9494x9[_0x7ddb[236]],(_0x9494x9[_0x7ddb[235]]+ _0x9494xa[_0x7ddb[235]])/ 2,(_0x9494x9[_0x7ddb[236]]+ _0x9494xa[_0x7ddb[236]])/ 2)};_0x9494x9= _0x9494x3[_0x9494x5- 2];_0x9494xa= _0x9494x3[_0x9494x5- 1];_0x9494x2[_0x7ddb[1278]](_0x9494x9[_0x7ddb[235]],_0x9494x9[_0x7ddb[236]],_0x9494xa[_0x7ddb[235]],_0x9494xa[_0x7ddb[236]]);_0x9494x2[_0x7ddb[1336]]()};mxConnector[_0x7ddb[202]][_0x7ddb[1689]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=_0x9494x3[_0x7ddb[67]],_0x9494x9=_0x9494x4?_0x9494x3[1]:_0x9494x3[_0x9494x5- 2];_0x9494x3= _0x9494x4?_0x9494x3[0]:_0x9494x3[_0x9494x5- 1];var _0x9494x5=_0x9494x3[_0x7ddb[235]]- _0x9494x9[_0x7ddb[235]],_0x9494xa=_0x9494x3[_0x7ddb[236]]- _0x9494x9[_0x7ddb[236]],_0x9494x12=Math[_0x7ddb[160]](1,Math[_0x7ddb[428]](_0x9494x5* _0x9494x5+ _0x9494xa* _0x9494xa)),_0x9494x9=_0x9494x5/ _0x9494x12,_0x9494x5=_0x9494xa/ _0x9494x12,_0x9494xa=mxUtils[_0x7ddb[1550]](this[_0x7ddb[124]],_0x9494x4?mxConstants[_0x7ddb[1692]]:mxConstants[_0x7ddb[1693]],mxConstants.DEFAULT_MARKERSIZE),_0x9494x12=mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],_0x9494x4?mxConstants[_0x7ddb[1694]]:mxConstants[_0x7ddb[1695]]);return mxMarker[_0x7ddb[1689]](_0x9494x2,this,_0x9494x12,_0x9494x3,_0x9494x9,_0x9494x5,_0x9494xa,_0x9494x4,this[_0x7ddb[1307]],0!= this[_0x7ddb[124]][_0x9494x4?mxConstants[_0x7ddb[1696]]:mxConstants[_0x7ddb[1697]]])};mxConnector[_0x7ddb[202]][_0x7ddb[1612]]= function(_0x9494x2){mxShape[_0x7ddb[202]][_0x7ddb[1612]][_0x7ddb[183]](this,arguments);var _0x9494x3=0;mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_STARTARROW,mxConstants.NONE)!= mxConstants[_0x7ddb[217]]&& (_0x9494x3= mxUtils[_0x7ddb[1550]](this[_0x7ddb[124]],mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+ 1);mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_ENDARROW,mxConstants.NONE)!= mxConstants[_0x7ddb[217]]&& (_0x9494x3= Math[_0x7ddb[160]](_0x9494x3,mxUtils[_0x7ddb[1550]](this[_0x7ddb[124]],mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+ 1);_0x9494x2[_0x7ddb[244]](Math[_0x7ddb[430]](_0x9494x3* this[_0x7ddb[255]]))};function mxSwimlane(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){mxShape[_0x7ddb[239]](this);this[_0x7ddb[1562]]= _0x9494x2;this[_0x7ddb[1334]]= _0x9494x3;this[_0x7ddb[1336]]= _0x9494x4;this[_0x7ddb[1307]]= null!= _0x9494x5?_0x9494x5:1}mxUtils[_0x7ddb[1284]](mxSwimlane,mxShape);mxSwimlane[_0x7ddb[202]][_0x7ddb[1680]]= 16;mxSwimlane[_0x7ddb[202]][_0x7ddb[1597]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x9494x2= Math[_0x7ddb[243]](_0x9494x9,mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return new mxRectangle(_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x2)};mxSwimlane[_0x7ddb[202]][_0x7ddb[1614]]= function(){var _0x9494x2=mxShape[_0x7ddb[202]][_0x7ddb[1614]][_0x7ddb[183]](this,arguments);1!= mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_HORIZONTAL,1)&& (_0x9494x2+= mxText[_0x7ddb[202]][_0x7ddb[1616]]);return _0x9494x2};mxSwimlane[_0x7ddb[202]][_0x7ddb[1615]]= function(){return this[_0x7ddb[1614]]()};mxSwimlane[_0x7ddb[202]][_0x7ddb[1590]]= function(){return mxShape[_0x7ddb[202]][_0x7ddb[1590]][_0x7ddb[183]](this,arguments)|| 1!= mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_HORIZONTAL,1)};mxSwimlane[_0x7ddb[202]][_0x7ddb[1603]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x2= mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_ARCSIZE,100* mxConstants[_0x7ddb[1557]])/ 100;return 3* _0x9494x4* _0x9494x2};mxSwimlane[_0x7ddb[202]][_0x7ddb[1595]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){var _0x9494xa=Math[_0x7ddb[243]](_0x9494x9,mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),_0x9494x12=mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),_0x9494x13=1== mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_SWIMLANE_LINE,1),_0x9494x14=0;_0x9494x2[_0x7ddb[513]](_0x9494x3,_0x9494x4);this[_0x7ddb[1606]]?(_0x9494x14= this[_0x7ddb[1603]](_0x9494x5,_0x9494x9,_0x9494xa),this[_0x7ddb[1698]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x14,_0x9494x12,_0x9494x13)):this[_0x7ddb[1699]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13);_0x9494x12= mxUtils[_0x7ddb[433]](this[_0x7ddb[124]],mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE);this[_0x7ddb[1700]](_0x9494x2,_0x9494x5,_0x9494xa,_0x9494x9,_0x9494x12);null!= this[_0x7ddb[618]]&& (_0x9494x9= this[_0x7ddb[1686]](_0x9494x3,_0x9494xa,_0x9494x5,_0x9494x9),_0x9494x2[_0x7ddb[618]](_0x9494x9[_0x7ddb[235]]- _0x9494x3,_0x9494x9[_0x7ddb[236]]- _0x9494x4,_0x9494x9[_0x7ddb[117]],_0x9494x9[_0x7ddb[119]],this[_0x7ddb[618]],!1,!1,!1));this[_0x7ddb[617]]&& (_0x9494x2[_0x7ddb[1267]](!1),this[_0x7ddb[1604]](_0x9494x2,0,0,_0x9494x5,_0x9494xa,_0x9494x14))};mxSwimlane[_0x7ddb[202]][_0x7ddb[1699]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13){_0x9494x12!= mxConstants[_0x7ddb[217]]&& (_0x9494x2[_0x7ddb[815]](),_0x9494x2[_0x7ddb[1245]](_0x9494x12),_0x9494x2[_0x7ddb[1319]](0,0,_0x9494x5,_0x9494x9),_0x9494x2[_0x7ddb[1337]](),_0x9494x2[_0x7ddb[1210]](),_0x9494x2[_0x7ddb[1267]](!1));_0x9494x2[_0x7ddb[1275]]();_0x9494x2[_0x7ddb[1276]](0,_0x9494xa);_0x9494x2[_0x7ddb[1277]](0,0);_0x9494x2[_0x7ddb[1277]](_0x9494x5,0);_0x9494x2[_0x7ddb[1277]](_0x9494x5,_0x9494xa);_0x9494x13&& _0x9494x2[_0x7ddb[268]]();_0x9494x2[_0x7ddb[1337]]();_0x9494xa< _0x9494x9&& _0x9494x12== mxConstants[_0x7ddb[217]]&& (_0x9494x2[_0x7ddb[1229]]= !1,_0x9494x2[_0x7ddb[1275]](),_0x9494x2[_0x7ddb[1276]](0,_0x9494xa),_0x9494x2[_0x7ddb[1277]](0,_0x9494x9),_0x9494x2[_0x7ddb[1277]](_0x9494x5,_0x9494x9),_0x9494x2[_0x7ddb[1277]](_0x9494x5,_0x9494xa),_0x9494x2[_0x7ddb[1336]]())};mxSwimlane[_0x7ddb[202]][_0x7ddb[1698]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13,_0x9494x14){_0x9494x13!= mxConstants[_0x7ddb[217]]&& (_0x9494x2[_0x7ddb[815]](),_0x9494x2[_0x7ddb[1245]](_0x9494x13),_0x9494x2[_0x7ddb[1320]](0,0,_0x9494x5,_0x9494x9,_0x9494x12,_0x9494x12),_0x9494x2[_0x7ddb[1337]](),_0x9494x2[_0x7ddb[1210]](),_0x9494x2[_0x7ddb[1267]](!1));_0x9494x2[_0x7ddb[1275]]();_0x9494x2[_0x7ddb[1276]](_0x9494x5,_0x9494xa);_0x9494x2[_0x7ddb[1277]](_0x9494x5,_0x9494x12);_0x9494x2[_0x7ddb[1278]](_0x9494x5,0,_0x9494x5- Math[_0x7ddb[243]](_0x9494x5/ 2,_0x9494x12),0);_0x9494x2[_0x7ddb[1277]](Math[_0x7ddb[243]](_0x9494x5/ 2,_0x9494x12),0);_0x9494x2[_0x7ddb[1278]](0,0,0,_0x9494x12);_0x9494x2[_0x7ddb[1277]](0,_0x9494xa);_0x9494x14&& _0x9494x2[_0x7ddb[268]]();_0x9494x2[_0x7ddb[1337]]();_0x9494xa< _0x9494x9&& _0x9494x13== mxConstants[_0x7ddb[217]]&& (_0x9494x2[_0x7ddb[1229]]= !1,_0x9494x2[_0x7ddb[1275]](),_0x9494x2[_0x7ddb[1276]](0,_0x9494xa),_0x9494x2[_0x7ddb[1277]](0,_0x9494x9- _0x9494x12),_0x9494x2[_0x7ddb[1278]](0,_0x9494x9,Math[_0x7ddb[243]](_0x9494x5/ 2,_0x9494x12),_0x9494x9),_0x9494x2[_0x7ddb[1277]](_0x9494x5- Math[_0x7ddb[243]](_0x9494x5/ 2,_0x9494x12),_0x9494x9),_0x9494x2[_0x7ddb[1278]](_0x9494x5,_0x9494x9,_0x9494x5,_0x9494x9- _0x9494x12),_0x9494x2[_0x7ddb[1277]](_0x9494x5,_0x9494xa),_0x9494x2[_0x7ddb[1336]]())};mxSwimlane[_0x7ddb[202]][_0x7ddb[1700]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x9494x9!= mxConstants[_0x7ddb[217]]&& (_0x9494x2[_0x7ddb[1249]](_0x9494x9),_0x9494x2[_0x7ddb[1251]](!0),_0x9494x2[_0x7ddb[1275]](),_0x9494x2[_0x7ddb[1276]](_0x9494x3,_0x9494x4),_0x9494x2[_0x7ddb[1277]](_0x9494x3,_0x9494x5),_0x9494x2[_0x7ddb[1336]](),_0x9494x2[_0x7ddb[1251]](!1))};mxSwimlane[_0x7ddb[202]][_0x7ddb[1686]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){return new mxRectangle(_0x9494x2+ _0x9494x4- this[_0x7ddb[1680]],_0x9494x3,this[_0x7ddb[1680]],this[_0x7ddb[1680]])};function mxGraphLayout(_0x9494x2){this[_0x7ddb[1179]]= _0x9494x2}mxGraphLayout[_0x7ddb[202]][_0x7ddb[1179]]= null;mxGraphLayout[_0x7ddb[202]][_0x7ddb[1701]]= !0;mxGraphLayout[_0x7ddb[202]][_0x7ddb[1101]]= null;mxGraphLayout[_0x7ddb[202]][_0x7ddb[1702]]= function(_0x9494x2,_0x9494x3,_0x9494x4){};mxGraphLayout[_0x7ddb[202]][_0x7ddb[350]]= function(_0x9494x2){};mxGraphLayout[_0x7ddb[202]][_0x7ddb[1703]]= function(){return this[_0x7ddb[1179]]};mxGraphLayout[_0x7ddb[202]][_0x7ddb[1704]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){_0x9494x4= this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[248]](_0x9494x3);_0x9494x3= null!= _0x9494x4?_0x9494x4[_0x7ddb[124]]:this[_0x7ddb[1179]][_0x7ddb[1705]](_0x9494x3);return null!= _0x9494x3?_0x9494x3[_0x9494x2]:null};mxGraphLayout[_0x7ddb[1706]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){if(null!= _0x9494x4&& null!= _0x9494x2){_0x9494x3= null!= _0x9494x3?_0x9494x3:!0;_0x9494x9= _0x9494x9|| [];var _0x9494xa=mxCellPath[_0x7ddb[385]](_0x9494x2);if(null== _0x9494x9[_0x9494xa]&& (_0x9494x9[_0x9494xa]= _0x9494x2,_0x9494x5= _0x9494x4(_0x9494x2,_0x9494x5),null== _0x9494x5|| _0x9494x5)){if(_0x9494x5= this[_0x7ddb[1179]][_0x7ddb[251]][_0x7ddb[1707]](_0x9494x2),0< _0x9494x5){for(_0x9494xa= 0;_0x9494xa< _0x9494x5;_0x9494xa++){var _0x9494x12=this[_0x7ddb[1179]][_0x7ddb[251]][_0x7ddb[1708]](_0x9494x2,_0x9494xa),_0x9494x13=this[_0x7ddb[1179]][_0x7ddb[251]][_0x7ddb[1709]](_0x9494x12,!0)== _0x9494x2;if(!_0x9494x3|| _0x9494x13){_0x9494x13= this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[1710]](_0x9494x12,!_0x9494x13),this[_0x7ddb[1706]](_0x9494x13,_0x9494x3,_0x9494x4,_0x9494x12,_0x9494x9)}}}}}};mxGraphLayout[_0x7ddb[202]][_0x7ddb[1711]]= function(_0x9494x2){return this[_0x7ddb[1179]][_0x7ddb[1712]](_0x9494x2)};mxGraphLayout[_0x7ddb[202]][_0x7ddb[1713]]= function(_0x9494x2){return !this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[1193]](_0x9494x2)|| !this[_0x7ddb[1179]][_0x7ddb[1714]](_0x9494x2)};mxGraphLayout[_0x7ddb[202]][_0x7ddb[1715]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[1179]][_0x7ddb[502]]();return !_0x9494x3[_0x7ddb[250]](_0x9494x2)|| !this[_0x7ddb[1179]][_0x7ddb[1714]](_0x9494x2) || null== _0x9494x3[_0x7ddb[1709]](_0x9494x2,!0) || null== _0x9494x3[_0x7ddb[1709]](_0x9494x2,!1)};mxGraphLayout[_0x7ddb[202]][_0x7ddb[1716]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[1179]][_0x7ddb[1717]](mxConstants.STYLE_NOEDGESTYLE,_0x9494x3?_0x7ddb[468]:_0x7ddb[500],[_0x9494x2])};mxGraphLayout[_0x7ddb[202]][_0x7ddb[1718]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[1179]][_0x7ddb[1717]](mxConstants.STYLE_ORTHOGONAL,_0x9494x3?_0x7ddb[500]:_0x7ddb[468],[_0x9494x2])};mxGraphLayout[_0x7ddb[202]][_0x7ddb[1719]]= function(_0x9494x2){var _0x9494x3= new mxPoint;if(null!= _0x9494x2&& _0x9494x2!= this[_0x7ddb[1101]]){var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[502]]();if(_0x9494x4[_0x7ddb[1720]](this[_0x7ddb[1101]],_0x9494x2)){for(var _0x9494x5=_0x9494x4[_0x7ddb[1721]](_0x9494x2);_0x9494x2!= this[_0x7ddb[1101]];){_0x9494x3[_0x7ddb[235]]+= _0x9494x5[_0x7ddb[235]],_0x9494x3[_0x7ddb[236]]+= _0x9494x5[_0x7ddb[236]],_0x9494x2= _0x9494x4[_0x7ddb[1197]](_0x9494x2),_0x9494x5= _0x9494x4[_0x7ddb[1721]](_0x9494x2)}}};return _0x9494x3};mxGraphLayout[_0x7ddb[202]][_0x7ddb[1722]]= function(_0x9494x2,_0x9494x3){if(null!= _0x9494x2){var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[251]],_0x9494x5=_0x9494x4[_0x7ddb[1721]](_0x9494x2);null== _0x9494x5?(_0x9494x5= new mxGeometry,_0x9494x5[_0x7ddb[1723]](!0)):_0x9494x5= _0x9494x5[_0x7ddb[238]]();if(null!= this[_0x7ddb[1101]]&& null!= _0x9494x3){for(var _0x9494x9=_0x9494x4[_0x7ddb[1197]](_0x9494x2),_0x9494x9=this[_0x7ddb[1719]](_0x9494x9),_0x9494xa=0;_0x9494xa< _0x9494x3[_0x7ddb[67]];_0x9494xa++){_0x9494x3[_0x9494xa][_0x7ddb[235]]-= _0x9494x9[_0x7ddb[235]],_0x9494x3[_0x9494xa][_0x7ddb[236]]-= _0x9494x9[_0x7ddb[236]]}};_0x9494x5[_0x7ddb[1525]]= _0x9494x3;_0x9494x4[_0x7ddb[1724]](_0x9494x2,_0x9494x5)}};mxGraphLayout[_0x7ddb[202]][_0x7ddb[1725]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x9=_0x9494x5[_0x7ddb[1721]](_0x9494x2),_0x9494xa=null;if(null!= _0x9494x9){_0x9494xa= new mxRectangle(_0x9494x3,_0x9494x4,_0x9494x9[_0x7ddb[117]],_0x9494x9[_0x7ddb[119]]);if(this[_0x7ddb[1701]]){var _0x9494x12=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[248]](_0x9494x2);if(null!= _0x9494x12&& null!= _0x9494x12[_0x7ddb[963]]&& null!= _0x9494x12[_0x7ddb[963]][_0x7ddb[1563]]){var _0x9494x13=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[255]],_0x9494x14=_0x9494x12[_0x7ddb[963]][_0x7ddb[1563]];_0x9494x12[_0x7ddb[963]][_0x7ddb[1563]][_0x7ddb[235]]< _0x9494x12[_0x7ddb[235]]&& (_0x9494x3+= (_0x9494x12[_0x7ddb[235]]- _0x9494x14[_0x7ddb[235]])/ _0x9494x13,_0x9494xa[_0x7ddb[117]]= _0x9494x14[_0x7ddb[117]]);_0x9494x12[_0x7ddb[963]][_0x7ddb[1563]][_0x7ddb[236]]< _0x9494x12[_0x7ddb[236]]&& (_0x9494x4+= (_0x9494x12[_0x7ddb[236]]- _0x9494x14[_0x7ddb[236]])/ _0x9494x13,_0x9494xa[_0x7ddb[119]]= _0x9494x14[_0x7ddb[119]])}};null!= this[_0x7ddb[1101]]&& (_0x9494x12= _0x9494x5[_0x7ddb[1197]](_0x9494x2),null!= _0x9494x12&& _0x9494x12!= this[_0x7ddb[1101]]&& (_0x9494x12= this[_0x7ddb[1719]](_0x9494x12),_0x9494x3-= _0x9494x12[_0x7ddb[235]],_0x9494x4-= _0x9494x12[_0x7ddb[236]]));if(_0x9494x9[_0x7ddb[235]]!= _0x9494x3|| _0x9494x9[_0x7ddb[236]]!= _0x9494x4){_0x9494x9= _0x9494x9[_0x7ddb[238]](),_0x9494x9[_0x7ddb[235]]= _0x9494x3,_0x9494x9[_0x7ddb[236]]= _0x9494x4,_0x9494x5[_0x7ddb[1724]](_0x9494x2,_0x9494x9)}};return _0x9494xa};mxGraphLayout[_0x7ddb[202]][_0x7ddb[1726]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[1721]](_0x9494x2);if(this[_0x7ddb[1701]]){var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[248]](_0x9494x2);if(null!= _0x9494x4&& null!= _0x9494x4[_0x7ddb[963]]&& null!= _0x9494x4[_0x7ddb[963]][_0x7ddb[1563]]){var _0x9494x5=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[255]],_0x9494x9=_0x9494x4[_0x7ddb[963]][_0x7ddb[1563]],_0x9494xa=Math[_0x7ddb[160]](_0x9494x4[_0x7ddb[235]]- _0x9494x9[_0x7ddb[235]],0)/ _0x9494x5,_0x9494x12=Math[_0x7ddb[160]](_0x9494x4[_0x7ddb[236]]- _0x9494x9[_0x7ddb[236]],0)/ _0x9494x5,_0x9494x13=Math[_0x7ddb[160]](_0x9494x9[_0x7ddb[235]]+ _0x9494x9[_0x7ddb[117]]- (_0x9494x4[_0x7ddb[235]]+ _0x9494x4[_0x7ddb[117]]),0)/ _0x9494x5,_0x9494x4=Math[_0x7ddb[160]](_0x9494x9[_0x7ddb[236]]+ _0x9494x9[_0x7ddb[119]]- (_0x9494x4[_0x7ddb[236]]+ _0x9494x4[_0x7ddb[119]]),0)/ _0x9494x5,_0x9494x3= new mxRectangle(_0x9494x3[_0x7ddb[235]]- _0x9494xa,_0x9494x3[_0x7ddb[236]]- _0x9494x12,_0x9494x3[_0x7ddb[117]]+ _0x9494xa+ _0x9494x13,_0x9494x3[_0x7ddb[119]]+ _0x9494x12+ _0x9494x4)}};null!= this[_0x7ddb[1101]]&& (_0x9494x2= this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[1197]](_0x9494x2),_0x9494x3= _0x9494x3[_0x7ddb[238]](),null!= _0x9494x2&& _0x9494x2!= this[_0x7ddb[1101]]&& (_0x9494x2= this[_0x7ddb[1719]](_0x9494x2),_0x9494x3[_0x7ddb[235]]+= _0x9494x2[_0x7ddb[235]],_0x9494x3[_0x7ddb[236]]+= _0x9494x2[_0x7ddb[236]]));return new mxRectangle(_0x9494x3[_0x7ddb[235]],_0x9494x3[_0x7ddb[236]],_0x9494x3[_0x7ddb[117]],_0x9494x3[_0x7ddb[119]])};mxGraphLayout[_0x7ddb[202]][_0x7ddb[1727]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[473]]();try{for(var _0x9494x4=_0x9494x2[_0x7ddb[67]]- 1;0<= _0x9494x4;_0x9494x4--){var _0x9494x5=_0x9494x2[_0x9494x4],_0x9494x9=this[_0x7ddb[1179]][_0x7ddb[1728]](_0x9494x5),_0x9494xa=this[_0x7ddb[1179]][_0x7ddb[1729]](_0x9494x9),_0x9494x12=this[_0x7ddb[1179]][_0x7ddb[1198]](_0x9494x5),_0x9494x13=0,_0x9494x14=0;if(this[_0x7ddb[1179]][_0x7ddb[1730]](_0x9494x5)){var _0x9494x15=this[_0x7ddb[1179]][_0x7ddb[1731]](_0x9494x5),_0x9494x13=_0x9494x15[_0x7ddb[117]],_0x9494x14=_0x9494x15[_0x7ddb[119]]};null!= _0x9494xa&& null!= _0x9494x12&& (_0x9494x12= _0x9494x12[_0x7ddb[238]](),_0x9494x12[_0x7ddb[235]]= _0x9494x12[_0x7ddb[235]]+ _0x9494xa[_0x7ddb[235]]- _0x9494x3- _0x9494x13,_0x9494x12[_0x7ddb[236]]= _0x9494x12[_0x7ddb[236]]+ _0x9494xa[_0x7ddb[236]]- _0x9494x3- _0x9494x14,_0x9494x12[_0x7ddb[117]]= _0x9494xa[_0x7ddb[117]]+ 2* _0x9494x3+ _0x9494x13,_0x9494x12[_0x7ddb[119]]= _0x9494xa[_0x7ddb[119]]+ 2* _0x9494x3+ _0x9494x14,this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[1724]](_0x9494x5,_0x9494x12),this[_0x7ddb[1179]][_0x7ddb[834]](_0x9494x9,_0x9494x3+ _0x9494x13- _0x9494xa[_0x7ddb[235]],_0x9494x3+ _0x9494x14- _0x9494xa[_0x7ddb[236]]))}}finally{this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[476]]()}};function mxStackLayout(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){mxGraphLayout[_0x7ddb[239]](this,_0x9494x2);this[_0x7ddb[662]]= null!= _0x9494x3?_0x9494x3:!0;this[_0x7ddb[657]]= null!= _0x9494x4?_0x9494x4:0;this[_0x7ddb[1732]]= null!= _0x9494x5?_0x9494x5:0;this[_0x7ddb[1733]]= null!= _0x9494x9?_0x9494x9:0;this[_0x7ddb[467]]= null!= _0x9494xa?_0x9494xa:0}mxStackLayout[_0x7ddb[202]]= new mxGraphLayout;mxStackLayout[_0x7ddb[202]][_0x7ddb[196]]= mxStackLayout;mxStackLayout[_0x7ddb[202]][_0x7ddb[662]]= null;mxStackLayout[_0x7ddb[202]][_0x7ddb[657]]= null;mxStackLayout[_0x7ddb[202]][_0x7ddb[1732]]= null;mxStackLayout[_0x7ddb[202]][_0x7ddb[1733]]= null;mxStackLayout[_0x7ddb[202]][_0x7ddb[467]]= 0;mxStackLayout[_0x7ddb[202]][_0x7ddb[1734]]= !1;mxStackLayout[_0x7ddb[202]][_0x7ddb[1334]]= !1;mxStackLayout[_0x7ddb[202]][_0x7ddb[1735]]= !1;mxStackLayout[_0x7ddb[202]][_0x7ddb[1736]]= !1;mxStackLayout[_0x7ddb[202]][_0x7ddb[1333]]= null;mxStackLayout[_0x7ddb[202]][_0x7ddb[1737]]= function(){return this[_0x7ddb[662]]};mxStackLayout[_0x7ddb[202]][_0x7ddb[1702]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x9=_0x9494x5[_0x7ddb[1197]](_0x9494x2),_0x9494xa=this[_0x7ddb[1737]]();if(null!= _0x9494x2&& null!= _0x9494x9){var _0x9494x12=0,_0x9494x13=0,_0x9494x14=_0x9494x5[_0x7ddb[262]](_0x9494x9);_0x9494x3= _0x9494xa?_0x9494x3:_0x9494x4;_0x9494x12= this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[248]](_0x9494x9);null!= _0x9494x12&& (_0x9494x3-= _0x9494xa?_0x9494x12[_0x7ddb[235]]:_0x9494x12[_0x7ddb[236]]);for(_0x9494x12= 0;_0x9494x12< _0x9494x14;_0x9494x12++){if(_0x9494x4= _0x9494x5[_0x7ddb[263]](_0x9494x9,_0x9494x12),_0x9494x4!= _0x9494x2&& (_0x9494x4= _0x9494x5[_0x7ddb[1721]](_0x9494x4),null!= _0x9494x4)){_0x9494x4= _0x9494xa?_0x9494x4[_0x7ddb[235]]+ _0x9494x4[_0x7ddb[117]]/ 2:_0x9494x4[_0x7ddb[236]]+ _0x9494x4[_0x7ddb[119]]/ 2;if(_0x9494x13< _0x9494x3&& _0x9494x4> _0x9494x3){break};_0x9494x13= _0x9494x4}};_0x9494xa= _0x9494x9[_0x7ddb[1738]](_0x9494x2);_0x9494xa= Math[_0x7ddb[160]](0,_0x9494x12- (_0x9494x12> _0x9494xa?1:0));_0x9494x5[_0x7ddb[99]](_0x9494x9,_0x9494x2,_0x9494xa)}};mxStackLayout[_0x7ddb[202]][_0x7ddb[1739]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x4=_0x9494x3[_0x7ddb[1721]](_0x9494x2);if(null!= this[_0x7ddb[1179]][_0x7ddb[526]]&& (null== _0x9494x4&& _0x9494x3[_0x7ddb[1740]](_0x9494x2)|| _0x9494x2== this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[1741]])){_0x9494x4= new mxRectangle(0,0,this[_0x7ddb[1179]][_0x7ddb[526]][_0x7ddb[359]]- 1,this[_0x7ddb[1179]][_0x7ddb[526]][_0x7ddb[167]]- 1)};return _0x9494x4};mxStackLayout[_0x7ddb[202]][_0x7ddb[350]]= function(_0x9494x2){if(null!= _0x9494x2){var _0x9494x3=this[_0x7ddb[1737]](),_0x9494x4=this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x5=this[_0x7ddb[1739]](_0x9494x2),_0x9494x9=0;null!= _0x9494x5&& (_0x9494x9= _0x9494x3?_0x9494x5[_0x7ddb[119]]:_0x9494x5[_0x7ddb[117]]);var _0x9494x9=_0x9494x9- (2* this[_0x7ddb[657]]+ 2* this[_0x7ddb[467]]),_0x9494xa=this[_0x7ddb[1732]]+ this[_0x7ddb[467]],_0x9494x12=this[_0x7ddb[1733]]+ this[_0x7ddb[467]];if(this[_0x7ddb[1179]][_0x7ddb[1730]](_0x9494x2)){var _0x9494x13=this[_0x7ddb[1179]][_0x7ddb[1705]](_0x9494x2),_0x9494x14=mxUtils[_0x7ddb[433]](_0x9494x13,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE),_0x9494x13=mxUtils[_0x7ddb[433]](_0x9494x13,mxConstants.STYLE_HORIZONTAL,!0);_0x9494x3== _0x9494x13&& (_0x9494x9-= _0x9494x14);_0x9494x3?_0x9494x12+= _0x9494x14:_0x9494xa+= _0x9494x14};_0x9494x4[_0x7ddb[473]]();try{for(var _0x9494x14=0,_0x9494x13=null,_0x9494x15=_0x9494x4[_0x7ddb[262]](_0x9494x2),_0x9494x16=0;_0x9494x16< _0x9494x15;_0x9494x16++){var _0x9494x17=_0x9494x4[_0x7ddb[263]](_0x9494x2,_0x9494x16);if(!this[_0x7ddb[1713]](_0x9494x17)&& this[_0x7ddb[1711]](_0x9494x17)){var _0x9494x18=_0x9494x4[_0x7ddb[1721]](_0x9494x17);if(null!= _0x9494x18){_0x9494x18= _0x9494x18[_0x7ddb[238]]();if(null!= this[_0x7ddb[1333]]&& null!= _0x9494x13&& (_0x9494x3&& _0x9494x13[_0x7ddb[235]]+ _0x9494x13[_0x7ddb[117]]+ _0x9494x18[_0x7ddb[117]]+ 2* this[_0x7ddb[657]]> this[_0x7ddb[1333]]|| !_0x9494x3&& _0x9494x13[_0x7ddb[236]]+ _0x9494x13[_0x7ddb[119]]+ _0x9494x18[_0x7ddb[119]]+ 2* this[_0x7ddb[657]]> this[_0x7ddb[1333]])){_0x9494x13= null,_0x9494x3?_0x9494x12+= _0x9494x14+ this[_0x7ddb[657]]:_0x9494xa+= _0x9494x14+ this[_0x7ddb[657]],_0x9494x14= 0};_0x9494x14= Math[_0x7ddb[160]](_0x9494x14,_0x9494x3?_0x9494x18[_0x7ddb[119]]:_0x9494x18[_0x7ddb[117]]);null!= _0x9494x13?_0x9494x3?_0x9494x18[_0x7ddb[235]]= _0x9494x13[_0x7ddb[235]]+ _0x9494x13[_0x7ddb[117]]+ this[_0x7ddb[657]]:_0x9494x18[_0x7ddb[236]]= _0x9494x13[_0x7ddb[236]]+ _0x9494x13[_0x7ddb[119]]+ this[_0x7ddb[657]]:this[_0x7ddb[1734]]|| (_0x9494x3?_0x9494x18[_0x7ddb[235]]= _0x9494xa:_0x9494x18[_0x7ddb[236]]= _0x9494x12);_0x9494x3?_0x9494x18[_0x7ddb[236]]= _0x9494x12:_0x9494x18[_0x7ddb[235]]= _0x9494xa;this[_0x7ddb[1334]]&& 0< _0x9494x9&& (_0x9494x3?_0x9494x18[_0x7ddb[119]]= _0x9494x9:_0x9494x18[_0x7ddb[117]]= _0x9494x9);_0x9494x4[_0x7ddb[1724]](_0x9494x17,_0x9494x18);_0x9494x13= _0x9494x18}}};this[_0x7ddb[1735]]&& null!= _0x9494x5&& null!= _0x9494x13&& !this[_0x7ddb[1179]][_0x7ddb[1742]](_0x9494x2)?(_0x9494x5= _0x9494x5[_0x7ddb[238]](),_0x9494x3?_0x9494x5[_0x7ddb[117]]= _0x9494x13[_0x7ddb[235]]+ _0x9494x13[_0x7ddb[117]]+ this[_0x7ddb[657]]:_0x9494x5[_0x7ddb[119]]= _0x9494x13[_0x7ddb[236]]+ _0x9494x13[_0x7ddb[119]]+ this[_0x7ddb[657]],_0x9494x4[_0x7ddb[1724]](_0x9494x2,_0x9494x5)):this[_0x7ddb[1736]]&& (null!= _0x9494x5&& null!= _0x9494x13)&& (_0x9494x3?_0x9494x13[_0x7ddb[117]]= _0x9494x5[_0x7ddb[117]]- _0x9494x13[_0x7ddb[235]]- this[_0x7ddb[657]]:_0x9494x13[_0x7ddb[119]]= _0x9494x5[_0x7ddb[119]]- _0x9494x13[_0x7ddb[236]]- this[_0x7ddb[657]])}finally{_0x9494x4[_0x7ddb[476]]()}}};function mxPartitionLayout(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){mxGraphLayout[_0x7ddb[239]](this,_0x9494x2);this[_0x7ddb[662]]= null!= _0x9494x3?_0x9494x3:!0;this[_0x7ddb[657]]= _0x9494x4|| 0;this[_0x7ddb[467]]= _0x9494x5|| 0}mxPartitionLayout[_0x7ddb[202]]= new mxGraphLayout;mxPartitionLayout[_0x7ddb[202]][_0x7ddb[196]]= mxPartitionLayout;mxPartitionLayout[_0x7ddb[202]][_0x7ddb[662]]= null;mxPartitionLayout[_0x7ddb[202]][_0x7ddb[657]]= null;mxPartitionLayout[_0x7ddb[202]][_0x7ddb[467]]= null;mxPartitionLayout[_0x7ddb[202]][_0x7ddb[1743]]= !0;mxPartitionLayout[_0x7ddb[202]][_0x7ddb[1737]]= function(){return this[_0x7ddb[662]]};mxPartitionLayout[_0x7ddb[202]][_0x7ddb[1702]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x4= this[_0x7ddb[1179]][_0x7ddb[502]]();var _0x9494x5=_0x9494x4[_0x7ddb[1197]](_0x9494x2);if(null!= _0x9494x2&& null!= _0x9494x5){for(var _0x9494x9=0,_0x9494xa=0,_0x9494x12=_0x9494x4[_0x7ddb[262]](_0x9494x5),_0x9494x9=0;_0x9494x9< _0x9494x12;_0x9494x9++){var _0x9494x13=_0x9494x4[_0x7ddb[263]](_0x9494x5,_0x9494x9),_0x9494x13=this[_0x7ddb[1726]](_0x9494x13);if(null!= _0x9494x13){_0x9494x13= _0x9494x13[_0x7ddb[235]]+ _0x9494x13[_0x7ddb[117]]/ 2;if(_0x9494xa< _0x9494x3&& _0x9494x13> _0x9494x3){break};_0x9494xa= _0x9494x13}};_0x9494x3= _0x9494x5[_0x7ddb[1738]](_0x9494x2);_0x9494x3= Math[_0x7ddb[160]](0,_0x9494x9- (_0x9494x9> _0x9494x3?1:0));_0x9494x4[_0x7ddb[99]](_0x9494x5,_0x9494x2,_0x9494x3)}};mxPartitionLayout[_0x7ddb[202]][_0x7ddb[350]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[1737]](),_0x9494x4=this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x5=_0x9494x4[_0x7ddb[1721]](_0x9494x2);if(null!= this[_0x7ddb[1179]][_0x7ddb[526]]&& (null== _0x9494x5&& _0x9494x4[_0x7ddb[1740]](_0x9494x2)|| _0x9494x2== this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[1741]])){_0x9494x5= new mxRectangle(0,0,this[_0x7ddb[1179]][_0x7ddb[526]][_0x7ddb[359]]- 1,this[_0x7ddb[1179]][_0x7ddb[526]][_0x7ddb[167]]- 1)};if(null!= _0x9494x5){for(var _0x9494x9=[],_0x9494xa=_0x9494x4[_0x7ddb[262]](_0x9494x2),_0x9494x12=0;_0x9494x12< _0x9494xa;_0x9494x12++){var _0x9494x13=_0x9494x4[_0x7ddb[263]](_0x9494x2,_0x9494x12);!this[_0x7ddb[1713]](_0x9494x13)&& this[_0x7ddb[1711]](_0x9494x13) && _0x9494x9[_0x7ddb[207]](_0x9494x13)};_0x9494xa= _0x9494x9[_0x7ddb[67]];if(0< _0x9494xa){var _0x9494x14=this[_0x7ddb[467]],_0x9494x15=this[_0x7ddb[467]],_0x9494x16=_0x9494x3?_0x9494x5[_0x7ddb[119]]:_0x9494x5[_0x7ddb[117]],_0x9494x16=_0x9494x16- 2* this[_0x7ddb[467]];_0x9494x2= this[_0x7ddb[1179]][_0x7ddb[1730]](_0x9494x2)?this[_0x7ddb[1179]][_0x7ddb[1731]](_0x9494x2): new mxRectangle;_0x9494x16-= _0x9494x3?_0x9494x2[_0x7ddb[119]]:_0x9494x2[_0x7ddb[117]];_0x9494x14+= _0x9494x2[_0x7ddb[117]];_0x9494x15+= _0x9494x2[_0x7ddb[119]];_0x9494x2= this[_0x7ddb[467]]+ (_0x9494xa- 1)* this[_0x7ddb[657]];_0x9494x5= _0x9494x3?(_0x9494x5[_0x7ddb[117]]- _0x9494x14- _0x9494x2)/ _0x9494xa:(_0x9494x5[_0x7ddb[119]]- _0x9494x15- _0x9494x2)/ _0x9494xa;if(0< _0x9494x5){_0x9494x4[_0x7ddb[473]]();try{for(_0x9494x12= 0;_0x9494x12< _0x9494xa;_0x9494x12++){var _0x9494x13=_0x9494x9[_0x9494x12],_0x9494x17=_0x9494x4[_0x7ddb[1721]](_0x9494x13);null!= _0x9494x17&& (_0x9494x17= _0x9494x17[_0x7ddb[238]](),_0x9494x17[_0x7ddb[235]]= _0x9494x14,_0x9494x17[_0x7ddb[236]]= _0x9494x15,_0x9494x3?(this[_0x7ddb[1743]]&& (_0x9494x17[_0x7ddb[117]]= _0x9494x5,_0x9494x17[_0x7ddb[119]]= _0x9494x16),_0x9494x14+= _0x9494x5+ this[_0x7ddb[657]]):(this[_0x7ddb[1743]]&& (_0x9494x17[_0x7ddb[119]]= _0x9494x5,_0x9494x17[_0x7ddb[117]]= _0x9494x16),_0x9494x15+= _0x9494x5+ this[_0x7ddb[657]]),_0x9494x4[_0x7ddb[1724]](_0x9494x13,_0x9494x17))}}finally{_0x9494x4[_0x7ddb[476]]()}}}}};function mxCompactTreeLayout(_0x9494x2,_0x9494x3,_0x9494x4){mxGraphLayout[_0x7ddb[239]](this,_0x9494x2);this[_0x7ddb[662]]= null!= _0x9494x3?_0x9494x3:!0;this[_0x7ddb[1744]]= null!= _0x9494x4?_0x9494x4:!1}mxCompactTreeLayout[_0x7ddb[202]]= new mxGraphLayout;mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[196]]= mxCompactTreeLayout;mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[662]]= null;mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1744]]= null;mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1735]]= !0;mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1745]]= 10;mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1746]]= null;mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1747]]= !1;mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1748]]= 10;mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1749]]= 20;mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1750]]= !0;mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1751]]= 5;mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1752]]= 4;mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1753]]= 8;mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1754]]= 4;mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1755]]= !0;mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1713]]= function(_0x9494x2){return mxGraphLayout[_0x7ddb[202]][_0x7ddb[1713]][_0x7ddb[183]](this,arguments)|| 0== this[_0x7ddb[1179]][_0x7ddb[1756]](_0x9494x2)[_0x7ddb[67]]};mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1737]]= function(){return this[_0x7ddb[662]]};mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[350]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[1101]]= _0x9494x2;var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[502]]();if(null== _0x9494x3){if(0< this[_0x7ddb[1179]][_0x7ddb[264]](_0x9494x2,_0x9494x4[_0x7ddb[1197]](_0x9494x2),this[_0x7ddb[1744]],!this[_0x7ddb[1744]],!1)[_0x7ddb[67]]){_0x9494x3= _0x9494x2}else {var _0x9494x5=this[_0x7ddb[1179]][_0x7ddb[1757]](_0x9494x2,!0,this[_0x7ddb[1744]]);if(0< _0x9494x5[_0x7ddb[67]]){for(var _0x9494x9=0;_0x9494x9< _0x9494x5[_0x7ddb[67]];_0x9494x9++){if(!this[_0x7ddb[1713]](_0x9494x5[_0x9494x9])&& 0< this[_0x7ddb[1179]][_0x7ddb[264]](_0x9494x5[_0x9494x9],null,this[_0x7ddb[1744]],!this[_0x7ddb[1744]],!1)[_0x7ddb[67]]){_0x9494x3= _0x9494x5[_0x9494x9];break}}}}};if(null!= _0x9494x3){this[_0x7ddb[1746]]= this[_0x7ddb[1735]]?{}:null;_0x9494x4[_0x7ddb[473]]();try{var _0x9494xa=this[_0x7ddb[1758]](_0x9494x3,_0x9494x2);if(null!= _0x9494xa){this[_0x7ddb[1759]](_0x9494xa);var _0x9494x12=this[_0x7ddb[1179]][_0x7ddb[1020]],_0x9494x5=_0x9494x12;if(!this[_0x7ddb[1747]]){var _0x9494x13=this[_0x7ddb[1726]](_0x9494x3);null!= _0x9494x13&& (_0x9494x12= _0x9494x13[_0x7ddb[235]],_0x9494x5= _0x9494x13[_0x7ddb[236]])};_0x9494x13= null;_0x9494x13= this[_0x7ddb[1737]]()?this[_0x7ddb[1760]](_0x9494xa,_0x9494x12,_0x9494x5):this[_0x7ddb[1761]](_0x9494xa,null,_0x9494x12,_0x9494x5);if(null!= _0x9494x13){var _0x9494x14=_0x9494x9= 0;0> _0x9494x13[_0x7ddb[235]]&& (_0x9494x9= Math[_0x7ddb[425]](_0x9494x12- _0x9494x13[_0x7ddb[235]]));0> _0x9494x13[_0x7ddb[236]]&& (_0x9494x14= Math[_0x7ddb[425]](_0x9494x5- _0x9494x13[_0x7ddb[236]]));(0!= _0x9494x9|| 0!= _0x9494x14)&& this[_0x7ddb[1762]](_0x9494xa,_0x9494x9,_0x9494x14);this[_0x7ddb[1735]]&& this[_0x7ddb[1763]]();this[_0x7ddb[1755]]&& this[_0x7ddb[1764]](_0x9494xa)}}}finally{_0x9494x4[_0x7ddb[476]]()}}};mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1762]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x2[_0x7ddb[235]]+= _0x9494x3;_0x9494x2[_0x7ddb[236]]+= _0x9494x4;this[_0x7ddb[183]](_0x9494x2);for(_0x9494x2= _0x9494x2[_0x7ddb[247]];null!= _0x9494x2;){this[_0x7ddb[1762]](_0x9494x2,_0x9494x3,_0x9494x4),_0x9494x2= _0x9494x2[_0x7ddb[1765]]}};mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1758]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x4= null!= _0x9494x4?_0x9494x4:[];var _0x9494x5=mxCellPath[_0x7ddb[385]](_0x9494x2),_0x9494x9=null;if(null!= _0x9494x2&& null== _0x9494x4[_0x9494x5]&& !this[_0x7ddb[1713]](_0x9494x2)){_0x9494x4[_0x9494x5]= _0x9494x2;var _0x9494x9=this[_0x7ddb[1766]](_0x9494x2),_0x9494x5=this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494xa=null;_0x9494x2= this[_0x7ddb[1179]][_0x7ddb[264]](_0x9494x2,_0x9494x3,this[_0x7ddb[1744]],!this[_0x7ddb[1744]],!1,!0);for(var _0x9494x12=this[_0x7ddb[1179]][_0x7ddb[249]](),_0x9494x13=0;_0x9494x13< _0x9494x2[_0x7ddb[67]];_0x9494x13++){var _0x9494x14=_0x9494x2[_0x9494x13];if(!this[_0x7ddb[1715]](_0x9494x14)){this[_0x7ddb[1750]]&& this[_0x7ddb[1722]](_0x9494x14,null);this[_0x7ddb[1755]]&& (this[_0x7ddb[1716]](_0x9494x14,!1),this[_0x7ddb[1722]](_0x9494x14,null));var _0x9494x15=_0x9494x12[_0x7ddb[248]](_0x9494x14),_0x9494x14=null!= _0x9494x15?_0x9494x15[_0x7ddb[1710]](this[_0x7ddb[1744]]):_0x9494x12[_0x7ddb[1710]](_0x9494x14,this[_0x7ddb[1744]]),_0x9494x15=this[_0x7ddb[1758]](_0x9494x14,_0x9494x3,_0x9494x4);null!= _0x9494x15&& null!= _0x9494x5[_0x7ddb[1721]](_0x9494x14)&& (null== _0x9494xa?_0x9494x9[_0x7ddb[247]]= _0x9494x15:_0x9494xa[_0x7ddb[1765]]= _0x9494x15,_0x9494xa= _0x9494x15)}}};return _0x9494x9};mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1759]]= function(_0x9494x2){if(null!= _0x9494x2){for(var _0x9494x3=_0x9494x2[_0x7ddb[247]];null!= _0x9494x3;){this[_0x7ddb[1759]](_0x9494x3),_0x9494x3= _0x9494x3[_0x7ddb[1765]]};null!= _0x9494x2[_0x7ddb[247]]?this[_0x7ddb[1767]](_0x9494x2,this[_0x7ddb[234]](_0x9494x2)):this[_0x7ddb[1768]](_0x9494x2)}};mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1760]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){_0x9494x2[_0x7ddb[235]]+= _0x9494x3+ _0x9494x2[_0x7ddb[1769]];_0x9494x2[_0x7ddb[236]]+= _0x9494x4+ _0x9494x2[_0x7ddb[1770]];_0x9494x5= this[_0x7ddb[183]](_0x9494x2,_0x9494x5);_0x9494x3= _0x9494x2[_0x7ddb[247]];if(null!= _0x9494x3){_0x9494x5= this[_0x7ddb[1760]](_0x9494x3,_0x9494x2[_0x7ddb[235]],_0x9494x2[_0x7ddb[236]],_0x9494x5);_0x9494x4= _0x9494x2[_0x7ddb[236]]+ _0x9494x3[_0x7ddb[1770]];for(var _0x9494x9=_0x9494x3[_0x7ddb[1765]];null!= _0x9494x9;){_0x9494x5= this[_0x7ddb[1760]](_0x9494x9,_0x9494x2[_0x7ddb[235]]+ _0x9494x3[_0x7ddb[1769]],_0x9494x4,_0x9494x5),_0x9494x4+= _0x9494x9[_0x7ddb[1770]],_0x9494x9= _0x9494x9[_0x7ddb[1765]]}};return _0x9494x5};mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1761]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x9494x2[_0x7ddb[235]]+= _0x9494x4+ _0x9494x2[_0x7ddb[1770]];_0x9494x2[_0x7ddb[236]]+= _0x9494x5+ _0x9494x2[_0x7ddb[1769]];_0x9494x9= this[_0x7ddb[183]](_0x9494x2,_0x9494x9);_0x9494x3= _0x9494x2[_0x7ddb[247]];if(null!= _0x9494x3){_0x9494x9= this[_0x7ddb[1761]](_0x9494x3,_0x9494x2,_0x9494x2[_0x7ddb[235]],_0x9494x2[_0x7ddb[236]],_0x9494x9);_0x9494x4= _0x9494x2[_0x7ddb[235]]+ _0x9494x3[_0x7ddb[1770]];for(_0x9494x5= _0x9494x3[_0x7ddb[1765]];null!= _0x9494x5;){_0x9494x9= this[_0x7ddb[1761]](_0x9494x5,_0x9494x2,_0x9494x4,_0x9494x2[_0x7ddb[236]]+ _0x9494x3[_0x7ddb[1769]],_0x9494x9),_0x9494x4+= _0x9494x5[_0x7ddb[1770]],_0x9494x5= _0x9494x5[_0x7ddb[1765]]}};return _0x9494x9};mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1767]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[1749]]+ this[_0x7ddb[1748]],_0x9494x5=(_0x9494x3- _0x9494x2[_0x7ddb[117]])/ 2- this[_0x7ddb[1749]],_0x9494x9=_0x9494x5+ _0x9494x2[_0x7ddb[117]]+ 2* this[_0x7ddb[1749]]- _0x9494x3;_0x9494x2[_0x7ddb[247]][_0x7ddb[1769]]= _0x9494x4+ _0x9494x2[_0x7ddb[119]];_0x9494x2[_0x7ddb[247]][_0x7ddb[1770]]= _0x9494x9;_0x9494x2[_0x7ddb[1772]][_0x7ddb[1771]]= this[_0x7ddb[1773]](_0x9494x2[_0x7ddb[119]],0,this[_0x7ddb[1773]](_0x9494x4,_0x9494x9,_0x9494x2[_0x7ddb[1772]][_0x7ddb[1771]]));_0x9494x2[_0x7ddb[1772]][_0x7ddb[1774]]= this[_0x7ddb[1773]](_0x9494x2[_0x7ddb[119]],0,this[_0x7ddb[1773]](_0x9494x4,_0x9494x5,_0x9494x2[_0x7ddb[1772]][_0x7ddb[1774]]))};mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1768]]= function(_0x9494x2){var _0x9494x3=2* this[_0x7ddb[1749]];_0x9494x2[_0x7ddb[1772]][_0x7ddb[1775]]= this[_0x7ddb[1773]](_0x9494x2[_0x7ddb[119]]+ _0x9494x3,0);_0x9494x2[_0x7ddb[1772]][_0x7ddb[1771]]= _0x9494x2[_0x7ddb[1772]][_0x7ddb[1775]];_0x9494x2[_0x7ddb[1772]][_0x7ddb[1776]]= this[_0x7ddb[1773]](0,-_0x9494x2[_0x7ddb[117]]- _0x9494x3);_0x9494x2[_0x7ddb[1772]][_0x7ddb[1774]]= this[_0x7ddb[1773]](_0x9494x2[_0x7ddb[119]]+ _0x9494x3,0,_0x9494x2[_0x7ddb[1772]][_0x7ddb[1776]])};mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[234]]= function(_0x9494x2){var _0x9494x3=2* this[_0x7ddb[1749]],_0x9494x4=_0x9494x2[_0x7ddb[247]];_0x9494x2[_0x7ddb[1772]]= _0x9494x4[_0x7ddb[1772]];for(var _0x9494x5=_0x9494x4[_0x7ddb[117]]+ _0x9494x3,_0x9494x9=_0x9494x5,_0x9494x4=_0x9494x4[_0x7ddb[1765]];null!= _0x9494x4;){var _0x9494xa=this[_0x7ddb[1777]](_0x9494x2[_0x7ddb[1772]],_0x9494x4[_0x7ddb[1772]]);_0x9494x4[_0x7ddb[1770]]= _0x9494xa+ _0x9494x5;_0x9494x4[_0x7ddb[1769]]= 0;_0x9494x5= _0x9494x4[_0x7ddb[117]]+ _0x9494x3;_0x9494x9+= _0x9494xa+ _0x9494x5;_0x9494x4= _0x9494x4[_0x7ddb[1765]]};return _0x9494x9};mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1777]]= function(_0x9494x2,_0x9494x3){for(var _0x9494x4=0,_0x9494x5=0,_0x9494x9=0,_0x9494xa=_0x9494x2[_0x7ddb[1774]],_0x9494x12=_0x9494x3[_0x7ddb[1771]];null!= _0x9494x12&& null!= _0x9494xa;){var _0x9494x13=this[_0x7ddb[1368]](_0x9494x4,_0x9494x5,_0x9494x12[_0x7ddb[1126]],_0x9494x12[_0x7ddb[1125]],_0x9494xa[_0x7ddb[1126]],_0x9494xa[_0x7ddb[1125]]),_0x9494x5=_0x9494x5+ _0x9494x13,_0x9494x9=_0x9494x9+ _0x9494x13;_0x9494x4+ _0x9494x12[_0x7ddb[1126]]<= _0x9494xa[_0x7ddb[1126]]?(_0x9494x4+= _0x9494x12[_0x7ddb[1126]],_0x9494x5+= _0x9494x12[_0x7ddb[1125]],_0x9494x12= _0x9494x12[_0x7ddb[1765]]):(_0x9494x4-= _0x9494xa[_0x7ddb[1126]],_0x9494x5-= _0x9494xa[_0x7ddb[1125]],_0x9494xa= _0x9494xa[_0x7ddb[1765]])};null!= _0x9494x12?(_0x9494x4= this[_0x7ddb[1778]](_0x9494x2[_0x7ddb[1775]],0,0,_0x9494x12,_0x9494x4,_0x9494x5),_0x9494x2[_0x7ddb[1775]]= null!= _0x9494x4[_0x7ddb[1765]]?_0x9494x3[_0x7ddb[1775]]:_0x9494x4,_0x9494x2[_0x7ddb[1776]]= _0x9494x3[_0x7ddb[1776]]):(_0x9494x4= this[_0x7ddb[1778]](_0x9494x3[_0x7ddb[1776]],_0x9494x4,_0x9494x5,_0x9494xa,0,0),null== _0x9494x4[_0x7ddb[1765]]&& (_0x9494x2[_0x7ddb[1776]]= _0x9494x4));_0x9494x2[_0x7ddb[1774]]= _0x9494x3[_0x7ddb[1774]];return _0x9494x9};mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1368]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){var _0x9494x12=0;if(_0x9494x9<= _0x9494x2|| 0>= _0x9494x2+ _0x9494x4){return 0};_0x9494x12= 0< _0x9494x9* _0x9494x5- _0x9494x4* _0x9494xa?0> _0x9494x2?_0x9494x2* _0x9494x5/ _0x9494x4- _0x9494x3:0< _0x9494x2?_0x9494x2* _0x9494xa/ _0x9494x9- _0x9494x3:-_0x9494x3:_0x9494x9< _0x9494x2+ _0x9494x4?_0x9494xa- (_0x9494x3+ (_0x9494x9- _0x9494x2)* _0x9494x5/ _0x9494x4):_0x9494x9> _0x9494x2+ _0x9494x4?(_0x9494x4+ _0x9494x2)* _0x9494xa/ _0x9494x9- (_0x9494x3+ _0x9494x5):_0x9494xa- (_0x9494x3+ _0x9494x5);return 0< _0x9494x12?_0x9494x12:0};mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1778]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){_0x9494x3= _0x9494x9+ _0x9494x5[_0x7ddb[1126]]- _0x9494x3;_0x9494x9= _0x9494x9= 0;0== _0x9494x5[_0x7ddb[1126]]?_0x9494x9= _0x9494x5[_0x7ddb[1125]]:(_0x9494x9= _0x9494x3* _0x9494x5[_0x7ddb[1125]],_0x9494x9/= _0x9494x5[_0x7ddb[1126]]);_0x9494x3= this[_0x7ddb[1773]](_0x9494x3,_0x9494x9,_0x9494x5[_0x7ddb[1765]]);_0x9494x2[_0x7ddb[1765]]= this[_0x7ddb[1773]](0,_0x9494xa+ _0x9494x5[_0x7ddb[1125]]- _0x9494x9- _0x9494x4,_0x9494x3);return _0x9494x3};mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1766]]= function(_0x9494x2){var _0x9494x3={};_0x9494x3[_0x7ddb[246]]= _0x9494x2;_0x9494x3[_0x7ddb[235]]= 0;_0x9494x3[_0x7ddb[236]]= 0;_0x9494x3[_0x7ddb[117]]= 0;_0x9494x3[_0x7ddb[119]]= 0;_0x9494x2= this[_0x7ddb[1726]](_0x9494x2);null!= _0x9494x2&& (this[_0x7ddb[1737]]()?(_0x9494x3[_0x7ddb[117]]= _0x9494x2[_0x7ddb[119]],_0x9494x3[_0x7ddb[119]]= _0x9494x2[_0x7ddb[117]]):(_0x9494x3[_0x7ddb[117]]= _0x9494x2[_0x7ddb[117]],_0x9494x3[_0x7ddb[119]]= _0x9494x2[_0x7ddb[119]]));_0x9494x3[_0x7ddb[1769]]= 0;_0x9494x3[_0x7ddb[1770]]= 0;_0x9494x3[_0x7ddb[1772]]= {};return _0x9494x3};mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[183]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x5=_0x9494x2[_0x7ddb[246]],_0x9494x9=_0x9494x4[_0x7ddb[1721]](_0x9494x5);null!= _0x9494x5&& null!= _0x9494x9&& (this[_0x7ddb[1711]](_0x9494x5)&& (_0x9494x9= this[_0x7ddb[1725]](_0x9494x5,_0x9494x2[_0x7ddb[235]],_0x9494x2[_0x7ddb[236]]),this[_0x7ddb[1735]]&& (_0x9494x4= _0x9494x4[_0x7ddb[1197]](_0x9494x5),_0x9494x5= mxCellPath[_0x7ddb[385]](_0x9494x4),null== this[_0x7ddb[1746]][_0x9494x5]&& (this[_0x7ddb[1746]][_0x9494x5]= _0x9494x4))),_0x9494x3= null== _0x9494x3? new mxRectangle(_0x9494x9[_0x7ddb[235]],_0x9494x9[_0x7ddb[236]],_0x9494x9[_0x7ddb[117]],_0x9494x9[_0x7ddb[119]]): new mxRectangle(Math[_0x7ddb[243]](_0x9494x3[_0x7ddb[235]],_0x9494x9[_0x7ddb[235]]),Math[_0x7ddb[243]](_0x9494x3[_0x7ddb[236]],_0x9494x9[_0x7ddb[236]]),Math[_0x7ddb[160]](_0x9494x3[_0x7ddb[235]]+ _0x9494x3[_0x7ddb[117]],_0x9494x9[_0x7ddb[235]]+ _0x9494x9[_0x7ddb[117]]),Math[_0x7ddb[160]](_0x9494x3[_0x7ddb[236]]+ _0x9494x3[_0x7ddb[119]],_0x9494x9[_0x7ddb[236]]+ _0x9494x9[_0x7ddb[119]])));return _0x9494x3};mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1773]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5={};_0x9494x5[_0x7ddb[1126]]= _0x9494x2;_0x9494x5[_0x7ddb[1125]]= _0x9494x3;_0x9494x5[_0x7ddb[1765]]= _0x9494x4;return _0x9494x5};mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1763]]= function(){var _0x9494x2=[],_0x9494x3;for(_0x9494x3 in this[_0x7ddb[1746]]){_0x9494x2[_0x7ddb[207]](this[_0x7ddb[1746]][_0x9494x3])};this[_0x7ddb[1727]](mxUtils[_0x7ddb[1779]](_0x9494x2,!0),this[_0x7ddb[1745]])};mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1764]]= function(_0x9494x2){this[_0x7ddb[1780]](_0x9494x2);for(_0x9494x2= _0x9494x2[_0x7ddb[247]];null!= _0x9494x2;){this[_0x7ddb[1764]](_0x9494x2),_0x9494x2= _0x9494x2[_0x7ddb[1765]]}};mxCompactTreeLayout[_0x7ddb[202]][_0x7ddb[1780]]= function(_0x9494x2){for(var _0x9494x3=_0x9494x2[_0x7ddb[247]],_0x9494x4=_0x9494x2[_0x7ddb[246]],_0x9494x5=0,_0x9494x9=[];null!= _0x9494x3;){_0x9494x5++;var _0x9494xa=_0x9494x3[_0x7ddb[235]];this[_0x7ddb[662]]&& (_0x9494xa= _0x9494x3[_0x7ddb[236]]);_0x9494x9[_0x7ddb[207]]( new WeightedCellSorter(_0x9494x3,_0x9494xa));_0x9494x3= _0x9494x3[_0x7ddb[1765]]};_0x9494x9[_0x7ddb[470]](WeightedCellSorter[_0x7ddb[202]][_0x7ddb[469]]);var _0x9494xa=_0x9494x2[_0x7ddb[117]],_0x9494x12=(_0x9494x5+ 1)* this[_0x7ddb[1751]];_0x9494xa> _0x9494x12+ 2* this[_0x7ddb[1751]]&& (_0x9494xa-= 2* this[_0x7ddb[1751]]);_0x9494x2= _0x9494xa/ _0x9494x5;_0x9494x3= _0x9494x2/ 2;_0x9494xa> _0x9494x12+ 2* this[_0x7ddb[1751]]&& (_0x9494x3+= this[_0x7ddb[1751]]);for(var _0x9494xa=this[_0x7ddb[1753]]- this[_0x7ddb[1752]],_0x9494x12=0,_0x9494x13=this[_0x7ddb[1726]](_0x9494x4),_0x9494x14=0;_0x9494x14< _0x9494x9[_0x7ddb[67]];_0x9494x14++){for(var _0x9494x15=_0x9494x9[_0x9494x14][_0x7ddb[246]][_0x7ddb[246]],_0x9494x16=this[_0x7ddb[1726]](_0x9494x15),_0x9494x15=this[_0x7ddb[1179]][_0x7ddb[1781]](_0x9494x4,_0x9494x15,!1),_0x9494x17=[],_0x9494x18=0,_0x9494x19=0,_0x9494x1a=0;_0x9494x1a< _0x9494x15[_0x7ddb[67]];_0x9494x1a++){this[_0x7ddb[662]]?(_0x9494x18= _0x9494x13[_0x7ddb[235]]+ _0x9494x13[_0x7ddb[117]],_0x9494x19= _0x9494x13[_0x7ddb[236]]+ _0x9494x3,_0x9494x17[_0x7ddb[207]]( new mxPoint(_0x9494x18,_0x9494x19)),_0x9494x18= _0x9494x13[_0x7ddb[235]]+ _0x9494x13[_0x7ddb[117]]+ _0x9494xa,_0x9494x17[_0x7ddb[207]]( new mxPoint(_0x9494x18,_0x9494x19)),_0x9494x19= _0x9494x16[_0x7ddb[236]]+ _0x9494x16[_0x7ddb[119]]/ 2):(_0x9494x18= _0x9494x13[_0x7ddb[235]]+ _0x9494x3,_0x9494x19= _0x9494x13[_0x7ddb[236]]+ _0x9494x13[_0x7ddb[119]],_0x9494x17[_0x7ddb[207]]( new mxPoint(_0x9494x18,_0x9494x19)),_0x9494x19= _0x9494x13[_0x7ddb[236]]+ _0x9494x13[_0x7ddb[119]]+ _0x9494xa,_0x9494x17[_0x7ddb[207]]( new mxPoint(_0x9494x18,_0x9494x19)),_0x9494x18= _0x9494x16[_0x7ddb[235]]+ _0x9494x16[_0x7ddb[117]]/ 2),_0x9494x17[_0x7ddb[207]]( new mxPoint(_0x9494x18,_0x9494x19)),this[_0x7ddb[1722]](_0x9494x15[_0x9494x1a],_0x9494x17)};_0x9494x14< _0x9494x5/ 2?_0x9494xa+= this[_0x7ddb[1752]]:_0x9494x14> _0x9494x5/ 2&& (_0x9494xa-= this[_0x7ddb[1752]]);_0x9494x3+= _0x9494x2;_0x9494x12= Math[_0x7ddb[160]](_0x9494x12,_0x9494xa)}};function WeightedCellSorter(_0x9494x2,_0x9494x3){this[_0x7ddb[246]]= _0x9494x2;this[_0x7ddb[1782]]= _0x9494x3}WeightedCellSorter[_0x7ddb[202]][_0x7ddb[1782]]= 0;WeightedCellSorter[_0x7ddb[202]][_0x7ddb[1783]]= !1;WeightedCellSorter[_0x7ddb[202]][_0x7ddb[1784]]= !1;WeightedCellSorter[_0x7ddb[202]][_0x7ddb[1785]]= null;WeightedCellSorter[_0x7ddb[202]][_0x7ddb[246]]= null;WeightedCellSorter[_0x7ddb[202]][_0x7ddb[469]]= function(_0x9494x2,_0x9494x3){return null!= _0x9494x2&& null!= _0x9494x3?_0x9494x3[_0x7ddb[1782]]> _0x9494x2[_0x7ddb[1782]]?1:_0x9494x3[_0x7ddb[1782]]< _0x9494x2[_0x7ddb[1782]]?-1:_0x9494x3[_0x7ddb[1783]]?1:-1:0};function mxFastOrganicLayout(_0x9494x2){mxGraphLayout[_0x7ddb[239]](this,_0x9494x2)}mxFastOrganicLayout[_0x7ddb[202]]= new mxGraphLayout;mxFastOrganicLayout[_0x7ddb[202]][_0x7ddb[196]]= mxFastOrganicLayout;mxFastOrganicLayout[_0x7ddb[202]][_0x7ddb[1786]]= !0;mxFastOrganicLayout[_0x7ddb[202]][_0x7ddb[1750]]= !0;mxFastOrganicLayout[_0x7ddb[202]][_0x7ddb[1787]]= !0;mxFastOrganicLayout[_0x7ddb[202]][_0x7ddb[1788]]= 50;mxFastOrganicLayout[_0x7ddb[202]][_0x7ddb[1789]]= 0;mxFastOrganicLayout[_0x7ddb[202]][_0x7ddb[1790]]= 2;mxFastOrganicLayout[_0x7ddb[202]][_0x7ddb[1791]]= 500;mxFastOrganicLayout[_0x7ddb[202]][_0x7ddb[1792]]= 4;mxFastOrganicLayout[_0x7ddb[202]][_0x7ddb[1793]]= 200;mxFastOrganicLayout[_0x7ddb[202]][_0x7ddb[1794]]= 0;mxFastOrganicLayout[_0x7ddb[202]][_0x7ddb[1795]]= 0;mxFastOrganicLayout[_0x7ddb[202]][_0x7ddb[1796]]= 0;mxFastOrganicLayout[_0x7ddb[202]][_0x7ddb[1797]]= !0;mxFastOrganicLayout[_0x7ddb[202]][_0x7ddb[1713]]= function(_0x9494x2){return mxGraphLayout[_0x7ddb[202]][_0x7ddb[1713]][_0x7ddb[183]](this,arguments)|| 0== this[_0x7ddb[1179]][_0x7ddb[1756]](_0x9494x2)[_0x7ddb[67]]};mxFastOrganicLayout[_0x7ddb[202]][_0x7ddb[350]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[1179]][_0x7ddb[502]]();this[_0x7ddb[1798]]= [];for(var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[1728]](_0x9494x2),_0x9494x5=0;_0x9494x5< _0x9494x4[_0x7ddb[67]];_0x9494x5++){this[_0x7ddb[1713]](_0x9494x4[_0x9494x5])|| this[_0x7ddb[1798]][_0x7ddb[207]](_0x9494x4[_0x9494x5])};var _0x9494x9=this[_0x7ddb[1786]]?this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[1799]](this[_0x7ddb[1798]]):null,_0x9494xa=this[_0x7ddb[1798]][_0x7ddb[67]];this[_0x7ddb[1800]]= [];this[_0x7ddb[1801]]= [];this[_0x7ddb[1802]]= [];this[_0x7ddb[1803]]= [];this[_0x7ddb[1804]]= [];this[_0x7ddb[1805]]= [];this[_0x7ddb[1806]]= [];this[_0x7ddb[1807]]= [];0.0010> this[_0x7ddb[1788]]&& (this[_0x7ddb[1788]]= 0.0010);this[_0x7ddb[1789]]= this[_0x7ddb[1788]]* this[_0x7ddb[1788]];for(_0x9494x5= 0;_0x9494x5< this[_0x7ddb[1798]][_0x7ddb[67]];_0x9494x5++){var _0x9494x12=this[_0x7ddb[1798]][_0x9494x5];this[_0x7ddb[1803]][_0x9494x5]= [];var _0x9494x13=mxCellPath[_0x7ddb[385]](_0x9494x12);this[_0x7ddb[1800]][_0x9494x13]= _0x9494x5;var _0x9494x14=this[_0x7ddb[1726]](_0x9494x12),_0x9494x15=_0x9494x14[_0x7ddb[117]],_0x9494x16=_0x9494x14[_0x7ddb[119]],_0x9494x17=_0x9494x14[_0x7ddb[235]],_0x9494x18=_0x9494x14[_0x7ddb[236]];this[_0x7ddb[1803]][_0x9494x5][0]= _0x9494x17+ _0x9494x15/ 2;this[_0x7ddb[1803]][_0x9494x5][1]= _0x9494x18+ _0x9494x16/ 2;this[_0x7ddb[1806]][_0x9494x5]= Math[_0x7ddb[243]](_0x9494x15,_0x9494x16);this[_0x7ddb[1807]][_0x9494x5]= this[_0x7ddb[1806]][_0x9494x5]* this[_0x7ddb[1806]][_0x9494x5]};_0x9494x3[_0x7ddb[473]]();try{for(_0x9494x5= 0;_0x9494x5< _0x9494xa;_0x9494x5++){this[_0x7ddb[1801]][_0x9494x5]= 0;this[_0x7ddb[1802]][_0x9494x5]= 0;this[_0x7ddb[1804]][_0x9494x5]= this[_0x7ddb[1711]](this[_0x7ddb[1798]][_0x9494x5]);var _0x9494x19=this[_0x7ddb[1179]][_0x7ddb[1756]](this[_0x7ddb[1798]][_0x9494x5],_0x9494x2),_0x9494x4=this[_0x7ddb[1179]][_0x7ddb[1808]](_0x9494x19,this[_0x7ddb[1798]][_0x9494x5]);this[_0x7ddb[1805]][_0x9494x5]= [];for(_0x9494x15= 0;_0x9494x15< _0x9494x4[_0x7ddb[67]];_0x9494x15++){this[_0x7ddb[1750]]&& this[_0x7ddb[1179]][_0x7ddb[1809]](_0x9494x19[_0x9494x15]);this[_0x7ddb[1787]]&& this[_0x7ddb[1716]](_0x9494x19[_0x9494x15],!1);var _0x9494x13=mxCellPath[_0x7ddb[385]](_0x9494x4[_0x9494x15]),_0x9494x1a=this[_0x7ddb[1800]][_0x9494x13];this[_0x7ddb[1805]][_0x9494x5][_0x9494x15]= null!= _0x9494x1a?_0x9494x1a:_0x9494x5}};this[_0x7ddb[1794]]= this[_0x7ddb[1793]];0== this[_0x7ddb[1795]]&& (this[_0x7ddb[1795]]= 20* Math[_0x7ddb[428]](_0x9494xa));for(this[_0x7ddb[1796]]= 0;this[_0x7ddb[1796]]< this[_0x7ddb[1795]];this[_0x7ddb[1796]]++){if(!this[_0x7ddb[1797]]){return};this[_0x7ddb[1810]]();this[_0x7ddb[1811]]();this[_0x7ddb[1812]]();this[_0x7ddb[1813]]()};_0x9494x2= _0x9494x4= null;for(_0x9494x5= 0;_0x9494x5< this[_0x7ddb[1798]][_0x7ddb[67]];_0x9494x5++){_0x9494x12= this[_0x7ddb[1798]][_0x9494x5],this[_0x7ddb[1711]](_0x9494x12)&& (_0x9494x14= this[_0x7ddb[1726]](_0x9494x12),null!= _0x9494x14&& (this[_0x7ddb[1803]][_0x9494x5][0]-= _0x9494x14[_0x7ddb[117]]/ 2,this[_0x7ddb[1803]][_0x9494x5][1]-= _0x9494x14[_0x7ddb[119]]/ 2,_0x9494x17= this[_0x7ddb[1179]][_0x7ddb[1021]](this[_0x7ddb[1803]][_0x9494x5][0]),_0x9494x18= this[_0x7ddb[1179]][_0x7ddb[1021]](this[_0x7ddb[1803]][_0x9494x5][1]),this[_0x7ddb[1725]](_0x9494x12,_0x9494x17,_0x9494x18),_0x9494x4= null== _0x9494x4?_0x9494x17:Math[_0x7ddb[243]](_0x9494x4,_0x9494x17),_0x9494x2= null== _0x9494x2?_0x9494x18:Math[_0x7ddb[243]](_0x9494x2,_0x9494x18)))};_0x9494x5= -(_0x9494x4|| 0)+ 1;_0x9494x12= -(_0x9494x2|| 0)+ 1;null!= _0x9494x9&& (_0x9494x5+= _0x9494x9[_0x7ddb[235]],_0x9494x12+= _0x9494x9[_0x7ddb[236]]);this[_0x7ddb[1179]][_0x7ddb[834]](this[_0x7ddb[1798]],_0x9494x5,_0x9494x12)}finally{_0x9494x3[_0x7ddb[476]]()}};mxFastOrganicLayout[_0x7ddb[202]][_0x7ddb[1812]]= function(){for(var _0x9494x2=0;_0x9494x2< this[_0x7ddb[1798]][_0x7ddb[67]];_0x9494x2++){if(this[_0x7ddb[1804]][_0x9494x2]){var _0x9494x3=Math[_0x7ddb[428]](this[_0x7ddb[1801]][_0x9494x2]* this[_0x7ddb[1801]][_0x9494x2]+ this[_0x7ddb[1802]][_0x9494x2]* this[_0x7ddb[1802]][_0x9494x2]);0.0010> _0x9494x3&& (_0x9494x3= 0.0010);var _0x9494x4=this[_0x7ddb[1801]][_0x9494x2]/ _0x9494x3* Math[_0x7ddb[243]](_0x9494x3,this[_0x7ddb[1794]]),_0x9494x3=this[_0x7ddb[1802]][_0x9494x2]/ _0x9494x3* Math[_0x7ddb[243]](_0x9494x3,this[_0x7ddb[1794]]);this[_0x7ddb[1801]][_0x9494x2]= 0;this[_0x7ddb[1802]][_0x9494x2]= 0;this[_0x7ddb[1803]][_0x9494x2][0]+= _0x9494x4;this[_0x7ddb[1803]][_0x9494x2][1]+= _0x9494x3}}};mxFastOrganicLayout[_0x7ddb[202]][_0x7ddb[1811]]= function(){for(var _0x9494x2=0;_0x9494x2< this[_0x7ddb[1798]][_0x7ddb[67]];_0x9494x2++){for(var _0x9494x3=0;_0x9494x3< this[_0x7ddb[1805]][_0x9494x2][_0x7ddb[67]];_0x9494x3++){var _0x9494x4=this[_0x7ddb[1805]][_0x9494x2][_0x9494x3];if(_0x9494x2!= _0x9494x4&& this[_0x7ddb[1804]][_0x9494x2]&& this[_0x7ddb[1804]][_0x9494x4]){var _0x9494x5=this[_0x7ddb[1803]][_0x9494x2][0]- this[_0x7ddb[1803]][_0x9494x4][0],_0x9494x9=this[_0x7ddb[1803]][_0x9494x2][1]- this[_0x7ddb[1803]][_0x9494x4][1],_0x9494xa=_0x9494x5* _0x9494x5+ _0x9494x9* _0x9494x9- this[_0x7ddb[1807]][_0x9494x2]- this[_0x7ddb[1807]][_0x9494x4];_0x9494xa< this[_0x7ddb[1792]]&& (_0x9494xa= this[_0x7ddb[1792]]);var _0x9494x12=Math[_0x7ddb[428]](_0x9494xa),_0x9494xa=_0x9494xa/ this[_0x7ddb[1788]],_0x9494x5=_0x9494x5/ _0x9494x12* _0x9494xa,_0x9494x9=_0x9494x9/ _0x9494x12* _0x9494xa;this[_0x7ddb[1801]][_0x9494x2]-= _0x9494x5;this[_0x7ddb[1802]][_0x9494x2]-= _0x9494x9;this[_0x7ddb[1801]][_0x9494x4]+= _0x9494x5;this[_0x7ddb[1802]][_0x9494x4]+= _0x9494x9}}}};mxFastOrganicLayout[_0x7ddb[202]][_0x7ddb[1810]]= function(){for(var _0x9494x2=this[_0x7ddb[1798]][_0x7ddb[67]],_0x9494x3=0;_0x9494x3< _0x9494x2;_0x9494x3++){for(var _0x9494x4=_0x9494x3;_0x9494x4< _0x9494x2;_0x9494x4++){if(!this[_0x7ddb[1797]]){return};if(_0x9494x4!= _0x9494x3&& this[_0x7ddb[1804]][_0x9494x3]&& this[_0x7ddb[1804]][_0x9494x4]){var _0x9494x5=this[_0x7ddb[1803]][_0x9494x3][0]- this[_0x7ddb[1803]][_0x9494x4][0],_0x9494x9=this[_0x7ddb[1803]][_0x9494x3][1]- this[_0x7ddb[1803]][_0x9494x4][1];0== _0x9494x5&& (_0x9494x5= 0.01+ Math[_0x7ddb[1814]]());0== _0x9494x9&& (_0x9494x9= 0.01+ Math[_0x7ddb[1814]]());var _0x9494xa=Math[_0x7ddb[428]](_0x9494x5* _0x9494x5+ _0x9494x9* _0x9494x9),_0x9494x12=_0x9494xa- this[_0x7ddb[1806]][_0x9494x3]- this[_0x7ddb[1806]][_0x9494x4];_0x9494x12> this[_0x7ddb[1791]]|| (_0x9494x12< this[_0x7ddb[1790]]&& (_0x9494x12= this[_0x7ddb[1790]]),_0x9494x12= this[_0x7ddb[1789]]/ _0x9494x12,_0x9494x5= _0x9494x5/ _0x9494xa* _0x9494x12,_0x9494x9= _0x9494x9/ _0x9494xa* _0x9494x12,this[_0x7ddb[1801]][_0x9494x3]+= _0x9494x5,this[_0x7ddb[1802]][_0x9494x3]+= _0x9494x9,this[_0x7ddb[1801]][_0x9494x4]-= _0x9494x5,this[_0x7ddb[1802]][_0x9494x4]-= _0x9494x9)}}}};mxFastOrganicLayout[_0x7ddb[202]][_0x7ddb[1813]]= function(){this[_0x7ddb[1794]]= this[_0x7ddb[1793]]* (1- this[_0x7ddb[1796]]/ this[_0x7ddb[1795]])};function mxCircleLayout(_0x9494x2,_0x9494x3){mxGraphLayout[_0x7ddb[239]](this,_0x9494x2);this[_0x7ddb[1806]]= null!= _0x9494x3?_0x9494x3:100}mxCircleLayout[_0x7ddb[202]]= new mxGraphLayout;mxCircleLayout[_0x7ddb[202]][_0x7ddb[196]]= mxCircleLayout;mxCircleLayout[_0x7ddb[202]][_0x7ddb[1806]]= null;mxCircleLayout[_0x7ddb[202]][_0x7ddb[1815]]= !1;mxCircleLayout[_0x7ddb[202]][_0x7ddb[1732]]= 0;mxCircleLayout[_0x7ddb[202]][_0x7ddb[1733]]= 0;mxCircleLayout[_0x7ddb[202]][_0x7ddb[1750]]= !0;mxCircleLayout[_0x7ddb[202]][_0x7ddb[1787]]= !0;mxCircleLayout[_0x7ddb[202]][_0x7ddb[350]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[1179]][_0x7ddb[502]]();_0x9494x3[_0x7ddb[473]]();try{for(var _0x9494x4=0,_0x9494x5=null,_0x9494x9=null,_0x9494xa=[],_0x9494x12=_0x9494x3[_0x7ddb[262]](_0x9494x2),_0x9494x13=0;_0x9494x13< _0x9494x12;_0x9494x13++){var _0x9494x14=_0x9494x3[_0x7ddb[263]](_0x9494x2,_0x9494x13);if(this[_0x7ddb[1713]](_0x9494x14)){this[_0x7ddb[1715]](_0x9494x14)|| (this[_0x7ddb[1750]]&& this[_0x7ddb[1179]][_0x7ddb[1809]](_0x9494x14),this[_0x7ddb[1787]]&& this[_0x7ddb[1716]](_0x9494x14,!1))}else {_0x9494xa[_0x7ddb[207]](_0x9494x14);var _0x9494x15=this[_0x7ddb[1726]](_0x9494x14),_0x9494x5=null== _0x9494x5?_0x9494x15[_0x7ddb[236]]:Math[_0x7ddb[243]](_0x9494x5,_0x9494x15[_0x7ddb[236]]),_0x9494x9=null== _0x9494x9?_0x9494x15[_0x7ddb[235]]:Math[_0x7ddb[243]](_0x9494x9,_0x9494x15[_0x7ddb[235]]),_0x9494x4=Math[_0x7ddb[160]](_0x9494x4,Math[_0x7ddb[160]](_0x9494x15[_0x7ddb[117]],_0x9494x15[_0x7ddb[119]]))}};var _0x9494x16=this[_0x7ddb[1816]](_0x9494xa[_0x7ddb[67]],_0x9494x4);this[_0x7ddb[1815]]&& (_0x9494x9= this[_0x7ddb[1732]],_0x9494x5= this[_0x7ddb[1733]]);this[_0x7ddb[1817]](_0x9494xa,_0x9494x16,_0x9494x9,_0x9494x5)}finally{_0x9494x3[_0x7ddb[476]]()}};mxCircleLayout[_0x7ddb[202]][_0x7ddb[1816]]= function(_0x9494x2,_0x9494x3){return Math[_0x7ddb[160]](_0x9494x2* _0x9494x3/ Math[_0x7ddb[424]],this[_0x7ddb[1806]])};mxCircleLayout[_0x7ddb[202]][_0x7ddb[1817]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){for(var _0x9494x9=_0x9494x2[_0x7ddb[67]],_0x9494xa=2* Math[_0x7ddb[424]]/ _0x9494x9,_0x9494x12=0;_0x9494x12< _0x9494x9;_0x9494x12++){this[_0x7ddb[1711]](_0x9494x2[_0x9494x12])&& this[_0x7ddb[1725]](_0x9494x2[_0x9494x12],_0x9494x4+ _0x9494x3+ _0x9494x3* Math[_0x7ddb[427]](_0x9494x12* _0x9494xa),_0x9494x5+ _0x9494x3+ _0x9494x3* Math[_0x7ddb[426]](_0x9494x12* _0x9494xa))}};function mxParallelEdgeLayout(_0x9494x2){mxGraphLayout[_0x7ddb[239]](this,_0x9494x2)}mxParallelEdgeLayout[_0x7ddb[202]]= new mxGraphLayout;mxParallelEdgeLayout[_0x7ddb[202]][_0x7ddb[196]]= mxParallelEdgeLayout;mxParallelEdgeLayout[_0x7ddb[202]][_0x7ddb[657]]= 20;mxParallelEdgeLayout[_0x7ddb[202]][_0x7ddb[350]]= function(_0x9494x2){_0x9494x2= this[_0x7ddb[1818]](_0x9494x2);this[_0x7ddb[1179]][_0x7ddb[251]][_0x7ddb[473]]();try{for(var _0x9494x3 in _0x9494x2){var _0x9494x4=_0x9494x2[_0x9494x3];1< _0x9494x4[_0x7ddb[67]]&& this[_0x7ddb[1759]](_0x9494x4)}}finally{this[_0x7ddb[1179]][_0x7ddb[251]][_0x7ddb[476]]()}};mxParallelEdgeLayout[_0x7ddb[202]][_0x7ddb[1818]]= function(_0x9494x2){for(var _0x9494x3=this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x4=[],_0x9494x5=_0x9494x3[_0x7ddb[262]](_0x9494x2),_0x9494x9=0;_0x9494x9< _0x9494x5;_0x9494x9++){var _0x9494xa=_0x9494x3[_0x7ddb[263]](_0x9494x2,_0x9494x9);if(!this[_0x7ddb[1715]](_0x9494xa)){var _0x9494x12=this[_0x7ddb[1819]](_0x9494xa);null!= _0x9494x12&& (null== _0x9494x4[_0x9494x12]&& (_0x9494x4[_0x9494x12]= []),_0x9494x4[_0x9494x12][_0x7ddb[207]](_0x9494xa))}};return _0x9494x4};mxParallelEdgeLayout[_0x7ddb[202]][_0x7ddb[1819]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[1179]][_0x7ddb[249]](),_0x9494x4=_0x9494x3[_0x7ddb[248]](_0x9494x2),_0x9494x5=null!= _0x9494x4?_0x9494x4[_0x7ddb[1710]](!0):_0x9494x3[_0x7ddb[1710]](_0x9494x2,!0);_0x9494x2= null!= _0x9494x4?_0x9494x4[_0x7ddb[1710]](!1):_0x9494x3[_0x7ddb[1710]](_0x9494x2,!1);return null!= _0x9494x5&& null!= _0x9494x2?(_0x9494x5= mxCellPath[_0x7ddb[385]](_0x9494x5),_0x9494x2= mxCellPath[_0x7ddb[385]](_0x9494x2),_0x9494x5> _0x9494x2?_0x9494x2+ _0x7ddb[213]+ _0x9494x5:_0x9494x5+ _0x7ddb[213]+ _0x9494x2):null};mxParallelEdgeLayout[_0x7ddb[202]][_0x7ddb[1759]]= function(_0x9494x2){var _0x9494x3=_0x9494x2[0],_0x9494x4=this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x5=_0x9494x4[_0x7ddb[1721]](_0x9494x4[_0x7ddb[1709]](_0x9494x3,!0)),_0x9494x9=_0x9494x4[_0x7ddb[1721]](_0x9494x4[_0x7ddb[1709]](_0x9494x3,!1));if(_0x9494x5== _0x9494x9){for(var _0x9494x3=_0x9494x5[_0x7ddb[235]]+ _0x9494x5[_0x7ddb[117]]+ this[_0x7ddb[657]],_0x9494x4=_0x9494x5[_0x7ddb[236]]+ _0x9494x5[_0x7ddb[119]]/ 2,_0x9494xa=0;_0x9494xa< _0x9494x2[_0x7ddb[67]];_0x9494xa++){this[_0x7ddb[1820]](_0x9494x2[_0x9494xa],_0x9494x3,_0x9494x4),_0x9494x3+= this[_0x7ddb[657]]}}else {if(null!= _0x9494x5&& null!= _0x9494x9){for(var _0x9494x3=_0x9494x5[_0x7ddb[235]]+ _0x9494x5[_0x7ddb[117]]/ 2,_0x9494x4=_0x9494x5[_0x7ddb[236]]+ _0x9494x5[_0x7ddb[119]]/ 2,_0x9494xa=_0x9494x9[_0x7ddb[235]]+ _0x9494x9[_0x7ddb[117]]/ 2- _0x9494x3,_0x9494x12=_0x9494x9[_0x7ddb[236]]+ _0x9494x9[_0x7ddb[119]]/ 2- _0x9494x4,_0x9494x9=Math[_0x7ddb[428]](_0x9494xa* _0x9494xa+ _0x9494x12* _0x9494x12),_0x9494x5=_0x9494x12* this[_0x7ddb[657]]/ _0x9494x9,_0x9494x9=_0x9494xa* this[_0x7ddb[657]]/ _0x9494x9,_0x9494x3=_0x9494x3+ _0x9494xa/ 2+ _0x9494x5* (_0x9494x2[_0x7ddb[67]]- 1)/ 2,_0x9494x4=_0x9494x4+ _0x9494x12/ 2- _0x9494x9* (_0x9494x2[_0x7ddb[67]]- 1)/ 2,_0x9494xa=0;_0x9494xa< _0x9494x2[_0x7ddb[67]];_0x9494xa++){this[_0x7ddb[1820]](_0x9494x2[_0x9494xa],_0x9494x3,_0x9494x4),_0x9494x3-= _0x9494x5,_0x9494x4+= _0x9494x9}}}};mxParallelEdgeLayout[_0x7ddb[202]][_0x7ddb[1820]]= function(_0x9494x2,_0x9494x3,_0x9494x4){this[_0x7ddb[1179]][_0x7ddb[1712]](_0x9494x2)&& this[_0x7ddb[1722]](_0x9494x2,[ new mxPoint(_0x9494x3,_0x9494x4)])};function mxCompositeLayout(_0x9494x2,_0x9494x3,_0x9494x4){mxGraphLayout[_0x7ddb[239]](this,_0x9494x2);this[_0x7ddb[1821]]= _0x9494x3;this[_0x7ddb[1822]]= _0x9494x4}mxCompositeLayout[_0x7ddb[202]]= new mxGraphLayout;mxCompositeLayout[_0x7ddb[202]][_0x7ddb[196]]= mxCompositeLayout;mxCompositeLayout[_0x7ddb[202]][_0x7ddb[1821]]= null;mxCompositeLayout[_0x7ddb[202]][_0x7ddb[1822]]= null;mxCompositeLayout[_0x7ddb[202]][_0x7ddb[1702]]= function(_0x9494x2,_0x9494x3,_0x9494x4){null!= this[_0x7ddb[1822]]?this[_0x7ddb[1822]][_0x7ddb[582]][_0x7ddb[183]](this[_0x7ddb[1822]],arguments):this[_0x7ddb[1821]][0][_0x7ddb[582]][_0x7ddb[183]](this[_0x7ddb[1821]][0],arguments)};mxCompositeLayout[_0x7ddb[202]][_0x7ddb[350]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[1179]][_0x7ddb[502]]();_0x9494x3[_0x7ddb[473]]();try{for(var _0x9494x4=0;_0x9494x4< this[_0x7ddb[1821]][_0x7ddb[67]];_0x9494x4++){this[_0x7ddb[1821]][_0x9494x4][_0x7ddb[350]][_0x7ddb[183]](this[_0x7ddb[1821]][_0x9494x4],arguments)}}finally{_0x9494x3[_0x7ddb[476]]()}};function mxEdgeLabelLayout(_0x9494x2,_0x9494x3){mxGraphLayout[_0x7ddb[239]](this,_0x9494x2)}mxEdgeLabelLayout[_0x7ddb[202]]= new mxGraphLayout;mxEdgeLabelLayout[_0x7ddb[202]][_0x7ddb[196]]= mxEdgeLabelLayout;mxEdgeLabelLayout[_0x7ddb[202]][_0x7ddb[350]]= function(_0x9494x2){for(var _0x9494x3=this[_0x7ddb[1179]][_0x7ddb[441]],_0x9494x4=this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x5=[],_0x9494x9=[],_0x9494xa=_0x9494x4[_0x7ddb[262]](_0x9494x2),_0x9494x12=0;_0x9494x12< _0x9494xa;_0x9494x12++){var _0x9494x13=_0x9494x4[_0x7ddb[263]](_0x9494x2,_0x9494x12),_0x9494x14=_0x9494x3[_0x7ddb[248]](_0x9494x13);null!= _0x9494x14&& (this[_0x7ddb[1713]](_0x9494x13)?this[_0x7ddb[1715]](_0x9494x13)|| _0x9494x5[_0x7ddb[207]](_0x9494x14):_0x9494x9[_0x7ddb[207]](_0x9494x14))};this[_0x7ddb[1823]](_0x9494x9,_0x9494x5)};mxEdgeLabelLayout[_0x7ddb[202]][_0x7ddb[1823]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[502]]();_0x9494x4[_0x7ddb[473]]();try{for(var _0x9494x5=0;_0x9494x5< _0x9494x3[_0x7ddb[67]];_0x9494x5++){var _0x9494x9=_0x9494x3[_0x9494x5];if(null!= _0x9494x9&& null!= _0x9494x9[_0x7ddb[963]]&& null!= _0x9494x9[_0x7ddb[963]][_0x7ddb[1563]]){for(var _0x9494xa=0;_0x9494xa< _0x9494x2[_0x7ddb[67]];_0x9494xa++){var _0x9494x12=_0x9494x2[_0x9494xa];null!= _0x9494x12&& this[_0x7ddb[1824]](_0x9494x9,_0x9494x12)}}}}finally{_0x9494x4[_0x7ddb[476]]()}};mxEdgeLabelLayout[_0x7ddb[202]][_0x7ddb[1824]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x5=_0x9494x2[_0x7ddb[963]][_0x7ddb[1563]];if(mxUtils[_0x7ddb[1825]](_0x9494x5,_0x9494x3)){var _0x9494x9=-_0x9494x5[_0x7ddb[236]]- _0x9494x5[_0x7ddb[119]] + _0x9494x3[_0x7ddb[236]],_0x9494xa=-_0x9494x5[_0x7ddb[236]]+ _0x9494x3[_0x7ddb[236]] + _0x9494x3[_0x7ddb[119]],_0x9494x9=Math[_0x7ddb[425]](_0x9494x9)< Math[_0x7ddb[425]](_0x9494xa)?_0x9494x9:_0x9494xa,_0x9494xa=-_0x9494x5[_0x7ddb[235]]- _0x9494x5[_0x7ddb[117]] + _0x9494x3[_0x7ddb[235]],_0x9494x5=-_0x9494x5[_0x7ddb[235]]+ _0x9494x3[_0x7ddb[235]] + _0x9494x3[_0x7ddb[117]],_0x9494x5=Math[_0x7ddb[425]](_0x9494xa)< Math[_0x7ddb[425]](_0x9494x5)?_0x9494xa:_0x9494x5;Math[_0x7ddb[425]](_0x9494x5)< Math[_0x7ddb[425]](_0x9494x9)?_0x9494x9= 0:_0x9494x5= 0;_0x9494xa= _0x9494x4[_0x7ddb[1721]](_0x9494x2[_0x7ddb[246]]);null!= _0x9494xa&& (_0x9494xa= _0x9494xa[_0x7ddb[238]](),null!= _0x9494xa[_0x7ddb[1368]]?(_0x9494xa[_0x7ddb[1368]][_0x7ddb[235]]+= _0x9494x5,_0x9494xa[_0x7ddb[1368]][_0x7ddb[236]]+= _0x9494x9):_0x9494xa[_0x7ddb[1368]]= new mxPoint(_0x9494x5,_0x9494x9),_0x9494x4[_0x7ddb[1724]](_0x9494x2[_0x7ddb[246]],_0x9494xa))}};function mxGraphAbstractHierarchyCell(){this[_0x7ddb[235]]= [];this[_0x7ddb[236]]= [];this[_0x7ddb[1826]]= []}mxGraphAbstractHierarchyCell[_0x7ddb[202]][_0x7ddb[1827]]= -1;mxGraphAbstractHierarchyCell[_0x7ddb[202]][_0x7ddb[1828]]= -1;mxGraphAbstractHierarchyCell[_0x7ddb[202]][_0x7ddb[235]]= null;mxGraphAbstractHierarchyCell[_0x7ddb[202]][_0x7ddb[236]]= null;mxGraphAbstractHierarchyCell[_0x7ddb[202]][_0x7ddb[117]]= 0;mxGraphAbstractHierarchyCell[_0x7ddb[202]][_0x7ddb[119]]= 0;mxGraphAbstractHierarchyCell[_0x7ddb[202]][_0x7ddb[1829]]= null;mxGraphAbstractHierarchyCell[_0x7ddb[202]][_0x7ddb[1830]]= null;mxGraphAbstractHierarchyCell[_0x7ddb[202]][_0x7ddb[1826]]= null;mxGraphAbstractHierarchyCell[_0x7ddb[202]][_0x7ddb[1831]]= function(_0x9494x2){return null};mxGraphAbstractHierarchyCell[_0x7ddb[202]][_0x7ddb[1832]]= function(_0x9494x2){return null};mxGraphAbstractHierarchyCell[_0x7ddb[202]][_0x7ddb[250]]= function(){return !1};mxGraphAbstractHierarchyCell[_0x7ddb[202]][_0x7ddb[1193]]= function(){return !1};mxGraphAbstractHierarchyCell[_0x7ddb[202]][_0x7ddb[1833]]= function(_0x9494x2){return null};mxGraphAbstractHierarchyCell[_0x7ddb[202]][_0x7ddb[1834]]= function(_0x9494x2,_0x9494x3){return null};mxGraphAbstractHierarchyCell[_0x7ddb[202]][_0x7ddb[1835]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[1193]]()?this[_0x7ddb[235]][0]= _0x9494x3:this[_0x7ddb[250]]()&& (this[_0x7ddb[235]][_0x9494x2- this[_0x7ddb[1828]]- 1]= _0x9494x3)};mxGraphAbstractHierarchyCell[_0x7ddb[202]][_0x7ddb[730]]= function(_0x9494x2){return this[_0x7ddb[1193]]()?this[_0x7ddb[235]][0]:this[_0x7ddb[250]]()?this[_0x7ddb[235]][_0x9494x2- this[_0x7ddb[1828]]- 1]:0};mxGraphAbstractHierarchyCell[_0x7ddb[202]][_0x7ddb[1836]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[1193]]()?this[_0x7ddb[236]][0]= _0x9494x3:this[_0x7ddb[250]]()&& (this[_0x7ddb[236]][_0x9494x2- this[_0x7ddb[1828]]- 1]= _0x9494x3)};function mxGraphHierarchyNode(_0x9494x2){mxGraphAbstractHierarchyCell[_0x7ddb[183]](this,arguments);this[_0x7ddb[246]]= _0x9494x2}mxGraphHierarchyNode[_0x7ddb[202]]= new mxGraphAbstractHierarchyCell;mxGraphHierarchyNode[_0x7ddb[202]][_0x7ddb[196]]= mxGraphHierarchyNode;mxGraphHierarchyNode[_0x7ddb[202]][_0x7ddb[246]]= null;mxGraphHierarchyNode[_0x7ddb[202]][_0x7ddb[1837]]= [];mxGraphHierarchyNode[_0x7ddb[202]][_0x7ddb[1838]]= [];mxGraphHierarchyNode[_0x7ddb[202]][_0x7ddb[1839]]= !1;mxGraphHierarchyNode[_0x7ddb[202]][_0x7ddb[1840]]= function(_0x9494x2){return this[_0x7ddb[1827]]};mxGraphHierarchyNode[_0x7ddb[202]][_0x7ddb[1831]]= function(_0x9494x2){if(null== this[_0x7ddb[1829]]){this[_0x7ddb[1829]]= [];this[_0x7ddb[1829]][0]= [];for(var _0x9494x3=0;_0x9494x3< this[_0x7ddb[1837]][_0x7ddb[67]];_0x9494x3++){var _0x9494x4=this[_0x7ddb[1837]][_0x9494x3];-1== _0x9494x4[_0x7ddb[1827]] || _0x9494x4[_0x7ddb[1827]]== _0x9494x2+ 1?this[_0x7ddb[1829]][0][_0x7ddb[207]](_0x9494x4[_0x7ddb[1097]]):this[_0x7ddb[1829]][0][_0x7ddb[207]](_0x9494x4)}};return this[_0x7ddb[1829]][0]};mxGraphHierarchyNode[_0x7ddb[202]][_0x7ddb[1832]]= function(_0x9494x2){if(null== this[_0x7ddb[1830]]){this[_0x7ddb[1830]]= [];this[_0x7ddb[1830]][0]= [];for(var _0x9494x3=0;_0x9494x3< this[_0x7ddb[1838]][_0x7ddb[67]];_0x9494x3++){var _0x9494x4=this[_0x7ddb[1838]][_0x9494x3];-1== _0x9494x4[_0x7ddb[1828]] || _0x9494x4[_0x7ddb[1828]]== _0x9494x2- 1?this[_0x7ddb[1830]][0][_0x7ddb[207]](_0x9494x4[_0x7ddb[772]]):this[_0x7ddb[1830]][0][_0x7ddb[207]](_0x9494x4)}};return this[_0x7ddb[1830]][0]};mxGraphHierarchyNode[_0x7ddb[202]][_0x7ddb[1193]]= function(){return !0};mxGraphHierarchyNode[_0x7ddb[202]][_0x7ddb[1833]]= function(_0x9494x2){return this[_0x7ddb[1826]][0]};mxGraphHierarchyNode[_0x7ddb[202]][_0x7ddb[1834]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[1826]][0]= _0x9494x3};mxGraphHierarchyNode[_0x7ddb[202]][_0x7ddb[1720]]= function(_0x9494x2){if(null!= _0x9494x2&& null!= this[_0x7ddb[1839]]&& null!= _0x9494x2[_0x7ddb[1839]]&& this[_0x7ddb[1839]][_0x7ddb[67]]< _0x9494x2[_0x7ddb[1839]][_0x7ddb[67]]){if(this[_0x7ddb[1839]]== _0x9494x2[_0x7ddb[1839]]){return !0};if(null== this[_0x7ddb[1839]]|| null== this[_0x7ddb[1839]]){return !1};for(var _0x9494x3=0;_0x9494x3< this[_0x7ddb[1839]][_0x7ddb[67]];_0x9494x3++){if(this[_0x7ddb[1839]][_0x9494x3]!= _0x9494x2[_0x7ddb[1839]][_0x9494x3]){return !1}};return !0};return !1};mxGraphHierarchyNode[_0x7ddb[202]][_0x7ddb[1841]]= function(){return this[_0x7ddb[246]]};function mxGraphHierarchyEdge(_0x9494x2){mxGraphAbstractHierarchyCell[_0x7ddb[183]](this,arguments);this[_0x7ddb[1842]]= _0x9494x2}mxGraphHierarchyEdge[_0x7ddb[202]]= new mxGraphAbstractHierarchyCell;mxGraphHierarchyEdge[_0x7ddb[202]][_0x7ddb[196]]= mxGraphHierarchyEdge;mxGraphHierarchyEdge[_0x7ddb[202]][_0x7ddb[1842]]= null;mxGraphHierarchyEdge[_0x7ddb[202]][_0x7ddb[1097]]= null;mxGraphHierarchyEdge[_0x7ddb[202]][_0x7ddb[772]]= null;mxGraphHierarchyEdge[_0x7ddb[202]][_0x7ddb[1843]]= !1;mxGraphHierarchyEdge[_0x7ddb[202]][_0x7ddb[1744]]= function(_0x9494x2){_0x9494x2= this[_0x7ddb[1097]];this[_0x7ddb[1097]]= this[_0x7ddb[772]];this[_0x7ddb[772]]= _0x9494x2;this[_0x7ddb[1843]]= !this[_0x7ddb[1843]]};mxGraphHierarchyEdge[_0x7ddb[202]][_0x7ddb[1831]]= function(_0x9494x2){if(null== this[_0x7ddb[1829]]){this[_0x7ddb[1829]]= [];for(var _0x9494x3=0;_0x9494x3< this[_0x7ddb[1826]][_0x7ddb[67]];_0x9494x3++){this[_0x7ddb[1829]][_0x9494x3]= [],_0x9494x3== this[_0x7ddb[1826]][_0x7ddb[67]]- 1?this[_0x7ddb[1829]][_0x9494x3][_0x7ddb[207]](this[_0x7ddb[1097]]):this[_0x7ddb[1829]][_0x9494x3][_0x7ddb[207]](this)}};return this[_0x7ddb[1829]][_0x9494x2- this[_0x7ddb[1828]]- 1]};mxGraphHierarchyEdge[_0x7ddb[202]][_0x7ddb[1832]]= function(_0x9494x2){if(null== this[_0x7ddb[1830]]){this[_0x7ddb[1830]]= [];for(var _0x9494x3=0;_0x9494x3< this[_0x7ddb[1826]][_0x7ddb[67]];_0x9494x3++){this[_0x7ddb[1830]][_0x9494x3]= [],0== _0x9494x3?this[_0x7ddb[1830]][_0x9494x3][_0x7ddb[207]](this[_0x7ddb[772]]):this[_0x7ddb[1830]][_0x9494x3][_0x7ddb[207]](this)}};return this[_0x7ddb[1830]][_0x9494x2- this[_0x7ddb[1828]]- 1]};mxGraphHierarchyEdge[_0x7ddb[202]][_0x7ddb[250]]= function(){return !0};mxGraphHierarchyEdge[_0x7ddb[202]][_0x7ddb[1833]]= function(_0x9494x2){return this[_0x7ddb[1826]][_0x9494x2- this[_0x7ddb[1828]]- 1]};mxGraphHierarchyEdge[_0x7ddb[202]][_0x7ddb[1834]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[1826]][_0x9494x2- this[_0x7ddb[1828]]- 1]= _0x9494x3};mxGraphHierarchyEdge[_0x7ddb[202]][_0x7ddb[1841]]= function(){return null!= this[_0x7ddb[1842]]&& 0< this[_0x7ddb[1842]][_0x7ddb[67]]?this[_0x7ddb[1842]][0]:null};function mxGraphHierarchyModel(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x9494x2[_0x7ddb[1703]]();this[_0x7ddb[1844]]= _0x9494x9;this[_0x7ddb[1845]]= _0x9494x4;this[_0x7ddb[1101]]= _0x9494x5;this[_0x7ddb[1846]]= {};this[_0x7ddb[1847]]= {};this[_0x7ddb[1827]]= 0;_0x9494x4= [];null== _0x9494x3&& (_0x9494x3= this[_0x7ddb[1179]][_0x7ddb[1728]](_0x9494x5));this[_0x7ddb[1827]]= this[_0x7ddb[1848]];this[_0x7ddb[1849]](_0x9494x2,_0x9494x3,_0x9494x4);for(_0x9494x5= 0;_0x9494x5< _0x9494x3[_0x7ddb[67]];_0x9494x5++){_0x9494x9= _0x9494x4[_0x9494x5][_0x7ddb[1838]];for(var _0x9494xa=0;_0x9494xa< _0x9494x9[_0x7ddb[67]];_0x9494xa++){var _0x9494x12=_0x9494x9[_0x9494xa],_0x9494x13=_0x9494x12[_0x7ddb[1842]];if(null!= _0x9494x13&& 0< _0x9494x13[_0x7ddb[67]]){var _0x9494x13=_0x9494x13[0],_0x9494x14=_0x9494x2[_0x7ddb[1710]](_0x9494x13,!1),_0x9494x14=mxCellPath[_0x7ddb[385]](_0x9494x14),_0x9494x14=this[_0x7ddb[1846]][_0x9494x14];_0x9494x4[_0x9494x5]== _0x9494x14&& (_0x9494x14= _0x9494x2[_0x7ddb[1710]](_0x9494x13,!0),_0x9494x14= mxCellPath[_0x7ddb[385]](_0x9494x14),_0x9494x14= this[_0x7ddb[1846]][_0x9494x14]);null!= _0x9494x14&& _0x9494x4[_0x9494x5]!= _0x9494x14&& (_0x9494x12[_0x7ddb[772]]= _0x9494x14,0== _0x9494x14[_0x7ddb[1837]][_0x7ddb[67]]&& (_0x9494x14[_0x7ddb[1837]]= []),0> mxUtils[_0x7ddb[2]](_0x9494x14[_0x7ddb[1837]],_0x9494x12)&& _0x9494x14[_0x7ddb[1837]][_0x7ddb[207]](_0x9494x12))}};_0x9494x4[_0x9494x5][_0x7ddb[1826]][0]= 1}}mxGraphHierarchyModel[_0x7ddb[202]][_0x7ddb[1827]]= null;mxGraphHierarchyModel[_0x7ddb[202]][_0x7ddb[1846]]= null;mxGraphHierarchyModel[_0x7ddb[202]][_0x7ddb[1847]]= null;mxGraphHierarchyModel[_0x7ddb[202]][_0x7ddb[1850]]= null;mxGraphHierarchyModel[_0x7ddb[202]][_0x7ddb[1845]]= null;mxGraphHierarchyModel[_0x7ddb[202]][_0x7ddb[1101]]= null;mxGraphHierarchyModel[_0x7ddb[202]][_0x7ddb[1851]]= 0;mxGraphHierarchyModel[_0x7ddb[202]][_0x7ddb[1848]]= 1E8;mxGraphHierarchyModel[_0x7ddb[202]][_0x7ddb[1844]]= !1;mxGraphHierarchyModel[_0x7ddb[202]][_0x7ddb[1849]]= function(_0x9494x2,_0x9494x3,_0x9494x4){for(var _0x9494x5=_0x9494x2[_0x7ddb[1703]](),_0x9494x9=0;_0x9494x9< _0x9494x3[_0x7ddb[67]];_0x9494x9++){_0x9494x4[_0x9494x9]= new mxGraphHierarchyNode(_0x9494x3[_0x9494x9]);var _0x9494xa=mxCellPath[_0x7ddb[385]](_0x9494x3[_0x9494x9]);this[_0x7ddb[1846]][_0x9494xa]= _0x9494x4[_0x9494x9];_0x9494xa= _0x9494x2[_0x7ddb[264]](_0x9494x3[_0x9494x9]);_0x9494x4[_0x9494x9][_0x7ddb[1838]]= [];for(var _0x9494x12=0;_0x9494x12< _0x9494xa[_0x7ddb[67]];_0x9494x12++){var _0x9494x13=_0x9494x2[_0x7ddb[1710]](_0x9494xa[_0x9494x12],!1);if(_0x9494x13!= _0x9494x3[_0x9494x9]&& _0x9494x13!= _0x9494x3[_0x9494x9]&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[251]][_0x7ddb[1193]](_0x9494x13)&& !_0x9494x2[_0x7ddb[1713]](_0x9494x13)){var _0x9494x14=_0x9494x2[_0x7ddb[1781]](_0x9494x3[_0x9494x9],_0x9494x13,!1),_0x9494x15=_0x9494x2[_0x7ddb[1781]](_0x9494x3[_0x9494x9],_0x9494x13,!0),_0x9494x13=mxCellPath[_0x7ddb[385]](_0x9494x14[0]);if(null!= _0x9494x14&& 0< _0x9494x14[_0x7ddb[67]]&& null== this[_0x7ddb[1847]][_0x9494x13]&& 2* _0x9494x15[_0x7ddb[67]]>= _0x9494x14[_0x7ddb[67]]){for(var _0x9494x15= new mxGraphHierarchyEdge(_0x9494x14),_0x9494x16=0;_0x9494x16< _0x9494x14[_0x7ddb[67]];_0x9494x16++){var _0x9494x17=_0x9494x14[_0x9494x16],_0x9494x13=mxCellPath[_0x7ddb[385]](_0x9494x17);this[_0x7ddb[1847]][_0x9494x13]= _0x9494x15;_0x9494x5[_0x7ddb[1809]](_0x9494x17);_0x9494x2[_0x7ddb[1787]]&& (_0x9494x2[_0x7ddb[1716]](_0x9494x17,!1),_0x9494x2[_0x7ddb[1718]](_0x9494x17,!0))};_0x9494x15[_0x7ddb[1097]]= _0x9494x4[_0x9494x9];0> mxUtils[_0x7ddb[2]](_0x9494x4[_0x9494x9][_0x7ddb[1838]],_0x9494x15)&& _0x9494x4[_0x9494x9][_0x7ddb[1838]][_0x7ddb[207]](_0x9494x15)}}};_0x9494x4[_0x9494x9][_0x7ddb[1826]][0]= 0}};mxGraphHierarchyModel[_0x7ddb[202]][_0x7ddb[1852]]= function(){var _0x9494x2=[];if(null!= this[_0x7ddb[1845]]){for(var _0x9494x3=0;_0x9494x3< this[_0x7ddb[1845]][_0x7ddb[67]];_0x9494x3++){var _0x9494x4=mxCellPath[_0x7ddb[385]](this[_0x7ddb[1845]][_0x9494x3]),_0x9494x4=this[_0x7ddb[1846]][_0x9494x4];null!= _0x9494x4&& _0x9494x2[_0x7ddb[207]](_0x9494x4)}};for(var _0x9494x5 in this[_0x7ddb[1846]]){_0x9494x4= this[_0x7ddb[1846]][_0x9494x5],_0x9494x4[_0x7ddb[1826]][0]= -1};for(var _0x9494x9=_0x9494x2[_0x7ddb[1853]]();0< _0x9494x2[_0x7ddb[67]];){var _0x9494x4=_0x9494x2[0],_0x9494xa,_0x9494x12;_0x9494xa= _0x9494x4[_0x7ddb[1837]];_0x9494x12= _0x9494x4[_0x7ddb[1838]];for(var _0x9494x13=!0,_0x9494x14=this[_0x7ddb[1848]],_0x9494x3=0;_0x9494x3< _0x9494xa[_0x7ddb[67]];_0x9494x3++){var _0x9494x15=_0x9494xa[_0x9494x3];if(5270620== _0x9494x15[_0x7ddb[1826]][0]){_0x9494x15= _0x9494x15[_0x7ddb[1097]],_0x9494x14= Math[_0x7ddb[243]](_0x9494x14,_0x9494x15[_0x7ddb[1826]][0]- 1)}else {_0x9494x13= !1;break}};if(_0x9494x13){_0x9494x4[_0x7ddb[1826]][0]= _0x9494x14;this[_0x7ddb[1827]]= Math[_0x7ddb[243]](this[_0x7ddb[1827]],_0x9494x14);if(null!= _0x9494x12){for(_0x9494x3= 0;_0x9494x3< _0x9494x12[_0x7ddb[67]];_0x9494x3++){_0x9494x15= _0x9494x12[_0x9494x3],_0x9494x15[_0x7ddb[1826]][0]= 5270620,_0x9494x15= _0x9494x15[_0x7ddb[772]],-1== _0x9494x15[_0x7ddb[1826]][0] && (_0x9494x2[_0x7ddb[207]](_0x9494x15),_0x9494x15[_0x7ddb[1826]][0]= -2)}};_0x9494x2[_0x7ddb[1115]]()}else {if(_0x9494x3= _0x9494x2[_0x7ddb[1115]](),_0x9494x2[_0x7ddb[207]](_0x9494x4),_0x9494x3== _0x9494x4&& 1== _0x9494x2[_0x7ddb[67]]){break}}};for(_0x9494x5 in this[_0x7ddb[1846]]){_0x9494x4= this[_0x7ddb[1846]][_0x9494x5],_0x9494x4[_0x7ddb[1826]][0]-= this[_0x7ddb[1827]]};for(_0x9494x3= 0;_0x9494x3< _0x9494x9[_0x7ddb[67]];_0x9494x3++){_0x9494x4= _0x9494x9[_0x9494x3];_0x9494x2= 0;_0x9494xa= _0x9494x4[_0x7ddb[1838]];for(_0x9494x5= 0;_0x9494x5< _0x9494xa[_0x7ddb[67]];_0x9494x5++){_0x9494x15= _0x9494xa[_0x9494x5],_0x9494x15= _0x9494x15[_0x7ddb[772]],_0x9494x4[_0x7ddb[1826]][0]= Math[_0x7ddb[160]](_0x9494x2,_0x9494x15[_0x7ddb[1826]][0]+ 1),_0x9494x2= _0x9494x4[_0x7ddb[1826]][0]}};this[_0x7ddb[1827]]= this[_0x7ddb[1848]]- this[_0x7ddb[1827]]};mxGraphHierarchyModel[_0x7ddb[202]][_0x7ddb[1854]]= function(){var _0x9494x2=[];this[_0x7ddb[1850]]= [];for(var _0x9494x3=0;_0x9494x3< this[_0x7ddb[1827]]+ 1;_0x9494x3++){_0x9494x2[_0x9494x3]= [],this[_0x7ddb[1850]][_0x9494x3]= _0x9494x2[_0x9494x3]};var _0x9494x4=null;if(null!= this[_0x7ddb[1845]]){for(var _0x9494x5=this[_0x7ddb[1845]],_0x9494x4=[],_0x9494x3=0;_0x9494x3< _0x9494x5[_0x7ddb[67]];_0x9494x3++){var _0x9494x9=mxCellPath[_0x7ddb[385]](_0x9494x5[_0x9494x3]);_0x9494x4[_0x9494x3]= this[_0x7ddb[1846]][_0x9494x9]}};this[_0x7ddb[209]](function(_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494x15){0== _0x9494x15&& (0> _0x9494x4[_0x7ddb[1827]]&& 0> _0x9494x4[_0x7ddb[1828]])&& (_0x9494x2[_0x9494x4[_0x7ddb[1826]][0]][_0x7ddb[207]](_0x9494x4),_0x9494x4[_0x7ddb[1827]]= _0x9494x4[_0x7ddb[1826]][0],_0x9494x4[_0x7ddb[1828]]= _0x9494x4[_0x7ddb[1826]][0],_0x9494x4[_0x7ddb[1826]][0]= _0x9494x2[_0x9494x4[_0x7ddb[1827]]][_0x7ddb[67]]- 1);if(null!= _0x9494x3&& null!= _0x9494x5&& 1< _0x9494x3[_0x7ddb[1827]]- _0x9494x4[_0x7ddb[1827]]){_0x9494x5[_0x7ddb[1827]]= _0x9494x3[_0x7ddb[1827]];_0x9494x5[_0x7ddb[1828]]= _0x9494x4[_0x7ddb[1827]];_0x9494x5[_0x7ddb[1826]]= [];_0x9494x5[_0x7ddb[235]]= [];_0x9494x5[_0x7ddb[236]]= [];for(_0x9494x3= _0x9494x5[_0x7ddb[1828]]+ 1;_0x9494x3< _0x9494x5[_0x7ddb[1827]];_0x9494x3++){_0x9494x2[_0x9494x3][_0x7ddb[207]](_0x9494x5),_0x9494x5[_0x7ddb[1834]](_0x9494x3,_0x9494x2[_0x9494x3][_0x7ddb[67]]- 1)}}},_0x9494x4,!1,null)};mxGraphHierarchyModel[_0x7ddb[202]][_0x7ddb[209]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){if(null!= _0x9494x3){for(var _0x9494x9=0;_0x9494x9< _0x9494x3[_0x7ddb[67]];_0x9494x9++){var _0x9494xa=_0x9494x3[_0x9494x9];null!= _0x9494xa&& (null== _0x9494x5&& (_0x9494x5= {}),_0x9494x4?(_0x9494xa[_0x7ddb[1839]]= [],_0x9494xa[_0x7ddb[1839]][0]= this[_0x7ddb[1851]],_0x9494xa[_0x7ddb[1839]][1]= _0x9494x9,this[_0x7ddb[1855]](null,_0x9494xa,null,_0x9494x2,_0x9494x5,_0x9494xa[_0x7ddb[1839]],_0x9494x9,0)):this[_0x7ddb[1758]](null,_0x9494xa,null,_0x9494x2,_0x9494x5,0))};this[_0x7ddb[1851]]++}};mxGraphHierarchyModel[_0x7ddb[202]][_0x7ddb[1758]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){if(null!= _0x9494x3){var _0x9494x12=mxCellPath[_0x7ddb[385]](_0x9494x3[_0x7ddb[246]]);if(null== _0x9494x9[_0x9494x12]){_0x9494x9[_0x9494x12]= _0x9494x3;_0x9494x5(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494xa,0);_0x9494x2= _0x9494x3[_0x7ddb[1838]][_0x7ddb[1853]]();for(_0x9494x4= 0;_0x9494x4< _0x9494x2[_0x7ddb[67]];_0x9494x4++){_0x9494x12= _0x9494x2[_0x9494x4],this[_0x7ddb[1758]](_0x9494x3,_0x9494x12[_0x7ddb[772]],_0x9494x12,_0x9494x5,_0x9494x9,_0x9494xa+ 1)}}else {_0x9494x5(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494xa,1)}}};mxGraphHierarchyModel[_0x7ddb[202]][_0x7ddb[1855]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13){if(null!= _0x9494x3){if(null!= _0x9494x2&& (null== _0x9494x3[_0x7ddb[1839]]|| _0x9494x3[_0x7ddb[1839]][0]!= _0x9494x2[_0x7ddb[1839]][0])){_0x9494xa= _0x9494x2[_0x7ddb[1839]][_0x7ddb[67]]+ 1,_0x9494x3[_0x7ddb[1839]]= _0x9494x2[_0x7ddb[1839]][_0x7ddb[1853]](),_0x9494x3[_0x7ddb[1839]][_0x9494xa- 1]= _0x9494x12};_0x9494x12= mxCellPath[_0x7ddb[385]](_0x9494x3[_0x7ddb[246]]);if(null== _0x9494x9[_0x9494x12]){_0x9494x9[_0x9494x12]= _0x9494x3;_0x9494x5(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x13,0);_0x9494x2= _0x9494x3[_0x7ddb[1838]][_0x7ddb[1853]]();for(_0x9494x4= 0;_0x9494x4< _0x9494x2[_0x7ddb[67]];_0x9494x4++){_0x9494x12= _0x9494x2[_0x9494x4],this[_0x7ddb[1855]](_0x9494x3,_0x9494x12[_0x7ddb[772]],_0x9494x12,_0x9494x5,_0x9494x9,_0x9494x3[_0x7ddb[1839]],_0x9494x4,_0x9494x13+ 1)}}else {_0x9494x5(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x13,1)}}};function mxHierarchicalLayoutStage(){}mxHierarchicalLayoutStage[_0x7ddb[202]][_0x7ddb[350]]= function(_0x9494x2){};function mxMedianHybridCrossingReduction(_0x9494x2){this[_0x7ddb[1759]]= _0x9494x2}mxMedianHybridCrossingReduction[_0x7ddb[202]]= new mxHierarchicalLayoutStage;mxMedianHybridCrossingReduction[_0x7ddb[202]][_0x7ddb[196]]= mxMedianHybridCrossingReduction;mxMedianHybridCrossingReduction[_0x7ddb[202]][_0x7ddb[1759]]= null;mxMedianHybridCrossingReduction[_0x7ddb[202]][_0x7ddb[1795]]= 24;mxMedianHybridCrossingReduction[_0x7ddb[202]][_0x7ddb[1856]]= null;mxMedianHybridCrossingReduction[_0x7ddb[202]][_0x7ddb[1857]]= 0;mxMedianHybridCrossingReduction[_0x7ddb[202]][_0x7ddb[1858]]= 0;mxMedianHybridCrossingReduction[_0x7ddb[202]][_0x7ddb[1859]]= 2;mxMedianHybridCrossingReduction[_0x7ddb[202]][_0x7ddb[350]]= function(_0x9494x2){_0x9494x2= this[_0x7ddb[1759]][_0x7ddb[502]]();this[_0x7ddb[1856]]= [];for(var _0x9494x3=0;_0x9494x3< _0x9494x2[_0x7ddb[1850]][_0x7ddb[67]];_0x9494x3++){this[_0x7ddb[1856]][_0x9494x3]= _0x9494x2[_0x7ddb[1850]][_0x9494x3][_0x7ddb[1853]]()};for(var _0x9494x4=0,_0x9494x5=this[_0x7ddb[1860]](_0x9494x2),_0x9494x3=0;_0x9494x3< this[_0x7ddb[1795]]&& _0x9494x4< this[_0x7ddb[1859]];_0x9494x3++){this[_0x7ddb[1861]](_0x9494x3,_0x9494x2);this[_0x7ddb[1862]](_0x9494x3,_0x9494x2);var _0x9494x9=this[_0x7ddb[1860]](_0x9494x2);if(_0x9494x9< _0x9494x5){_0x9494x5= _0x9494x9;for(_0x9494x9= _0x9494x4= 0;_0x9494x9< this[_0x7ddb[1856]][_0x7ddb[67]];_0x9494x9++){for(var _0x9494xa=_0x9494x2[_0x7ddb[1850]][_0x9494x9],_0x9494x12=0;_0x9494x12< _0x9494xa[_0x7ddb[67]];_0x9494x12++){var _0x9494x13=_0x9494xa[_0x9494x12];this[_0x7ddb[1856]][_0x9494x9][_0x9494x13[_0x7ddb[1833]](_0x9494x9)]= _0x9494x13}}}else {_0x9494x4++;for(_0x9494x9= 0;_0x9494x9< this[_0x7ddb[1856]][_0x7ddb[67]];_0x9494x9++){_0x9494xa= _0x9494x2[_0x7ddb[1850]][_0x9494x9];for(_0x9494x12= 0;_0x9494x12< _0x9494xa[_0x7ddb[67]];_0x9494x12++){_0x9494x13= _0x9494xa[_0x9494x12],_0x9494x13[_0x7ddb[1834]](_0x9494x9,_0x9494x12)}}};if(0== _0x9494x5){break}};_0x9494x4= [];_0x9494x5= [];for(_0x9494x3= 0;_0x9494x3< _0x9494x2[_0x7ddb[1827]]+ 1;_0x9494x3++){_0x9494x5[_0x9494x3]= [],_0x9494x4[_0x9494x3]= _0x9494x5[_0x9494x3]};for(_0x9494x3= 0;_0x9494x3< this[_0x7ddb[1856]][_0x7ddb[67]];_0x9494x3++){for(_0x9494x9= 0;_0x9494x9< this[_0x7ddb[1856]][_0x9494x3][_0x7ddb[67]];_0x9494x9++){_0x9494x5[_0x9494x3][_0x7ddb[207]](this[_0x7ddb[1856]][_0x9494x3][_0x9494x9])}};_0x9494x2[_0x7ddb[1850]]= _0x9494x4};mxMedianHybridCrossingReduction[_0x7ddb[202]][_0x7ddb[1860]]= function(_0x9494x2){for(var _0x9494x3=_0x9494x2[_0x7ddb[1850]][_0x7ddb[67]],_0x9494x4=0,_0x9494x5=1;_0x9494x5< _0x9494x3;_0x9494x5++){_0x9494x4+= this[_0x7ddb[1863]](_0x9494x5,_0x9494x2)};return _0x9494x4};mxMedianHybridCrossingReduction[_0x7ddb[202]][_0x7ddb[1863]]= function(_0x9494x2,_0x9494x3){for(var _0x9494x4=0,_0x9494x5=_0x9494x3[_0x7ddb[1850]][_0x9494x2],_0x9494x9=_0x9494x5[_0x7ddb[67]],_0x9494xa=_0x9494x3[_0x7ddb[1850]][_0x9494x2- 1][_0x7ddb[67]],_0x9494x12=[],_0x9494x13=0;_0x9494x13< _0x9494x9;_0x9494x13++){_0x9494x12[_0x9494x13]= []};for(_0x9494x13= 0;_0x9494x13< _0x9494x5[_0x7ddb[67]];_0x9494x13++){for(var _0x9494x14=_0x9494x5[_0x9494x13],_0x9494x15=_0x9494x14[_0x7ddb[1833]](_0x9494x2),_0x9494x16=_0x9494x14[_0x7ddb[1832]](_0x9494x2),_0x9494x14=0;_0x9494x14< _0x9494x16[_0x7ddb[67]];_0x9494x14++){var _0x9494x17=_0x9494x16[_0x9494x14][_0x7ddb[1833]](_0x9494x2- 1);_0x9494x12[_0x9494x15][_0x9494x17]= 201207}};for(_0x9494x13= 0;_0x9494x13< _0x9494x9;_0x9494x13++){for(_0x9494x14= 0;_0x9494x14< _0x9494xa;_0x9494x14++){if(201207== _0x9494x12[_0x9494x13][_0x9494x14]){for(_0x9494x5= _0x9494x13+ 1;_0x9494x5< _0x9494x9;_0x9494x5++){for(_0x9494x15= 0;_0x9494x15< _0x9494x14;_0x9494x15++){201207== _0x9494x12[_0x9494x5][_0x9494x15]&& _0x9494x4++}};for(_0x9494x5= 0;_0x9494x5< _0x9494x13;_0x9494x5++){for(_0x9494x15= _0x9494x14+ 1;_0x9494x15< _0x9494xa;_0x9494x15++){201207== _0x9494x12[_0x9494x5][_0x9494x15]&& _0x9494x4++}}}}};return _0x9494x4/ 2};mxMedianHybridCrossingReduction[_0x7ddb[202]][_0x7ddb[1862]]= function(_0x9494x2,_0x9494x3){for(var _0x9494x4=!0,_0x9494x5=0;_0x9494x4&& 10> _0x9494x5++;){for(var _0x9494x9=1== _0x9494x2% 2&& 1== _0x9494x5% 2,_0x9494x4=!1,_0x9494xa=0;_0x9494xa< _0x9494x3[_0x7ddb[1850]][_0x7ddb[67]];_0x9494xa++){for(var _0x9494x12=_0x9494x3[_0x7ddb[1850]][_0x9494xa],_0x9494x13=[],_0x9494x14=0;_0x9494x14< _0x9494x12[_0x7ddb[67]];_0x9494x14++){var _0x9494x15=_0x9494x12[_0x9494x14],_0x9494x16=_0x9494x15[_0x7ddb[1833]](_0x9494xa);0> _0x9494x16&& (_0x9494x16= _0x9494x14);_0x9494x13[_0x9494x16]= _0x9494x15};for(var _0x9494x17=_0x9494x16= _0x9494x15= null,_0x9494x18=null,_0x9494x19=null,_0x9494x1a=null,_0x9494x1b=null,_0x9494x1c=null,_0x9494x1d=null,_0x9494x1e=null,_0x9494x14=0;_0x9494x14< _0x9494x12[_0x7ddb[67]]- 1;_0x9494x14++){if(0== _0x9494x14){for(var _0x9494x1d=_0x9494x13[_0x9494x14],_0x9494x15=_0x9494x1d[_0x7ddb[1831]](_0x9494xa),_0x9494x16=_0x9494x1d[_0x7ddb[1832]](_0x9494xa),_0x9494x19=[],_0x9494x1a=[],_0x9494x1f=0;_0x9494x1f< _0x9494x15[_0x7ddb[67]];_0x9494x1f++){_0x9494x19[_0x9494x1f]= _0x9494x15[_0x9494x1f][_0x7ddb[1833]](_0x9494xa+ 1)};for(_0x9494x1f= 0;_0x9494x1f< _0x9494x16[_0x7ddb[67]];_0x9494x1f++){_0x9494x1a[_0x9494x1f]= _0x9494x16[_0x9494x1f][_0x7ddb[1833]](_0x9494xa- 1)}}else {_0x9494x15= _0x9494x17,_0x9494x16= _0x9494x18,_0x9494x19= _0x9494x1b,_0x9494x1a= _0x9494x1c,_0x9494x1d= _0x9494x1e};_0x9494x1e= _0x9494x13[_0x9494x14+ 1];_0x9494x17= _0x9494x1e[_0x7ddb[1831]](_0x9494xa);_0x9494x18= _0x9494x1e[_0x7ddb[1832]](_0x9494xa);_0x9494x1b= [];_0x9494x1c= [];for(_0x9494x1f= 0;_0x9494x1f< _0x9494x17[_0x7ddb[67]];_0x9494x1f++){_0x9494x1b[_0x9494x1f]= _0x9494x17[_0x9494x1f][_0x7ddb[1833]](_0x9494xa+ 1)};for(_0x9494x1f= 0;_0x9494x1f< _0x9494x18[_0x7ddb[67]];_0x9494x1f++){_0x9494x1c[_0x9494x1f]= _0x9494x18[_0x9494x1f][_0x7ddb[1833]](_0x9494xa- 1)};for(var _0x9494x20=0,_0x9494x62=0,_0x9494x1f=0;_0x9494x1f< _0x9494x19[_0x7ddb[67]];_0x9494x1f++){for(var _0x9494x63=0;_0x9494x63< _0x9494x1b[_0x7ddb[67]];_0x9494x63++){_0x9494x19[_0x9494x1f]> _0x9494x1b[_0x9494x63]&& _0x9494x20++,_0x9494x19[_0x9494x1f]< _0x9494x1b[_0x9494x63]&& _0x9494x62++}};for(_0x9494x1f= 0;_0x9494x1f< _0x9494x1a[_0x7ddb[67]];_0x9494x1f++){for(_0x9494x63= 0;_0x9494x63< _0x9494x1c[_0x7ddb[67]];_0x9494x63++){_0x9494x1a[_0x9494x1f]> _0x9494x1c[_0x9494x63]&& _0x9494x20++,_0x9494x1a[_0x9494x1f]< _0x9494x1c[_0x9494x63]&& _0x9494x62++}};if(_0x9494x62< _0x9494x20|| _0x9494x62== _0x9494x20&& _0x9494x9){_0x9494x17= _0x9494x1d[_0x7ddb[1833]](_0x9494xa),_0x9494x1d[_0x7ddb[1834]](_0x9494xa,_0x9494x1e[_0x7ddb[1833]](_0x9494xa)),_0x9494x1e[_0x7ddb[1834]](_0x9494xa,_0x9494x17),_0x9494x17= _0x9494x15,_0x9494x18= _0x9494x16,_0x9494x1b= _0x9494x19,_0x9494x1c= _0x9494x1a,_0x9494x1e= _0x9494x1d,_0x9494x9|| (_0x9494x4= !0)}}}}};mxMedianHybridCrossingReduction[_0x7ddb[202]][_0x7ddb[1861]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=0== _0x9494x2% 2;if(_0x9494x4){for(var _0x9494x5=_0x9494x3[_0x7ddb[1827]]- 1;0<= _0x9494x5;_0x9494x5--){this[_0x7ddb[1864]](_0x9494x5,_0x9494x4)}}else {for(_0x9494x5= 1;_0x9494x5< _0x9494x3[_0x7ddb[1827]];_0x9494x5++){this[_0x7ddb[1864]](_0x9494x5,_0x9494x4)}}};mxMedianHybridCrossingReduction[_0x7ddb[202]][_0x7ddb[1864]]= function(_0x9494x2,_0x9494x3){for(var _0x9494x4=this[_0x7ddb[1856]][_0x9494x2][_0x7ddb[67]],_0x9494x5=[],_0x9494x9=[],_0x9494xa=0;_0x9494xa< _0x9494x4;_0x9494xa++){var _0x9494x12=this[_0x7ddb[1856]][_0x9494x2][_0x9494xa],_0x9494x13= new MedianCellSorter;_0x9494x13[_0x7ddb[246]]= _0x9494x12;var _0x9494x14;_0x9494x14= _0x9494x3?_0x9494x12[_0x7ddb[1831]](_0x9494x2):_0x9494x12[_0x7ddb[1832]](_0x9494x2);var _0x9494x15;_0x9494x15= _0x9494x3?_0x9494x2+ 1:_0x9494x2- 1;null!= _0x9494x14&& 0!= _0x9494x14[_0x7ddb[67]]?(_0x9494x13[_0x7ddb[1865]]= this[_0x7ddb[1865]](_0x9494x14,_0x9494x15),_0x9494x5[_0x7ddb[207]](_0x9494x13)):_0x9494x9[_0x9494x12[_0x7ddb[1833]](_0x9494x2)]= !0};_0x9494x5[_0x7ddb[470]](MedianCellSorter[_0x7ddb[202]][_0x7ddb[469]]);for(_0x9494xa= 0;_0x9494xa< _0x9494x4;_0x9494xa++){null== _0x9494x9[_0x9494xa]&& (_0x9494x12= _0x9494x5[_0x7ddb[1115]]()[_0x7ddb[246]],_0x9494x12[_0x7ddb[1834]](_0x9494x2,_0x9494xa))}};mxMedianHybridCrossingReduction[_0x7ddb[202]][_0x7ddb[1865]]= function(_0x9494x2,_0x9494x3){for(var _0x9494x4=[],_0x9494x5=0,_0x9494x9=0;_0x9494x9< _0x9494x2[_0x7ddb[67]];_0x9494x9++){var _0x9494xa=_0x9494x2[_0x9494x9];_0x9494x4[_0x9494x5++]= _0x9494xa[_0x7ddb[1833]](_0x9494x3)};_0x9494x4[_0x7ddb[470]](function(_0x9494x2,_0x9494x3){return _0x9494x2- _0x9494x3});if(1== _0x9494x5% 2){return _0x9494x4[Math[_0x7ddb[519]](_0x9494x5/ 2)]};if(2== _0x9494x5){return (_0x9494x4[0]+ _0x9494x4[1])/ 2};_0x9494x9= _0x9494x5/ 2;_0x9494xa= _0x9494x4[_0x9494x9- 1]- _0x9494x4[0];_0x9494x5= _0x9494x4[_0x9494x5- 1]- _0x9494x4[_0x9494x9];return (_0x9494x4[_0x9494x9- 1]* _0x9494x5+ _0x9494x4[_0x9494x9]* _0x9494xa)/ (_0x9494xa+ _0x9494x5)};function MedianCellSorter(){}MedianCellSorter[_0x7ddb[202]][_0x7ddb[1865]]= 0;MedianCellSorter[_0x7ddb[202]][_0x7ddb[246]]= !1;MedianCellSorter[_0x7ddb[202]][_0x7ddb[469]]= function(_0x9494x2,_0x9494x3){return null!= _0x9494x2&& null!= _0x9494x3?_0x9494x3[_0x7ddb[1865]]> _0x9494x2[_0x7ddb[1865]]?-1:_0x9494x3[_0x7ddb[1865]]< _0x9494x2[_0x7ddb[1865]]?1:0:0};function mxMinimumCycleRemover(_0x9494x2){this[_0x7ddb[1759]]= _0x9494x2}mxMinimumCycleRemover[_0x7ddb[202]]= new mxHierarchicalLayoutStage;mxMinimumCycleRemover[_0x7ddb[202]][_0x7ddb[196]]= mxMinimumCycleRemover;mxMinimumCycleRemover[_0x7ddb[202]][_0x7ddb[1759]]= null;mxMinimumCycleRemover[_0x7ddb[202]][_0x7ddb[350]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[1759]][_0x7ddb[502]](),_0x9494x4={},_0x9494x5=mxUtils[_0x7ddb[238]](_0x9494x3[_0x7ddb[1846]],null,!0),_0x9494x9=null;if(null!= _0x9494x3[_0x7ddb[1845]]){var _0x9494xa=_0x9494x3[_0x7ddb[1845]],_0x9494x9=[];for(_0x9494x2= 0;_0x9494x2< _0x9494xa[_0x7ddb[67]];_0x9494x2++){var _0x9494x12=mxCellPath[_0x7ddb[385]](_0x9494xa[_0x9494x2]);_0x9494x9[_0x9494x2]= _0x9494x3[_0x7ddb[1846]][_0x9494x12]}};_0x9494x3[_0x7ddb[209]](function(_0x9494x2,_0x9494x3,_0x9494x9,_0x9494xa,_0x9494x12){_0x9494x3[_0x7ddb[1720]](_0x9494x2)&& (_0x9494x9[_0x7ddb[1744]](),mxUtils[_0x7ddb[205]](_0x9494x9,_0x9494x2[_0x7ddb[1838]]),_0x9494x2[_0x7ddb[1837]][_0x7ddb[207]](_0x9494x9),mxUtils[_0x7ddb[205]](_0x9494x9,_0x9494x3[_0x7ddb[1837]]),_0x9494x3[_0x7ddb[1838]][_0x7ddb[207]](_0x9494x9));_0x9494x2= mxCellPath[_0x7ddb[385]](_0x9494x3[_0x7ddb[246]]);_0x9494x4[_0x9494x2]= _0x9494x3;delete _0x9494x5[_0x9494x2]},_0x9494x9,!0,null);_0x9494x9= null;0< _0x9494x5[_0x7ddb[1866]]&& (_0x9494x9= mxUtils[_0x7ddb[238]](_0x9494x5,null,!0));_0x9494x2= mxUtils[_0x7ddb[238]](_0x9494x4,null,!0);_0x9494x3[_0x7ddb[209]](function(_0x9494x2,_0x9494x3,_0x9494x9,_0x9494xa,_0x9494x12){_0x9494x3[_0x7ddb[1720]](_0x9494x2)&& (_0x9494x9[_0x7ddb[1744]](),mxUtils[_0x7ddb[205]](_0x9494x9,_0x9494x2[_0x7ddb[1838]]),_0x9494x3[_0x7ddb[1838]][_0x7ddb[207]](_0x9494x9),_0x9494x2[_0x7ddb[1837]][_0x7ddb[207]](_0x9494x9),mxUtils[_0x7ddb[205]](_0x9494x9,_0x9494x3[_0x7ddb[1837]]));_0x9494x2= mxCellPath[_0x7ddb[385]](_0x9494x3[_0x7ddb[246]]);_0x9494x4[_0x9494x2]= _0x9494x3;delete _0x9494x5[_0x9494x2]},_0x9494x5,!0,_0x9494x2);_0x9494xa= this[_0x7ddb[1759]][_0x7ddb[1703]]();if(null!= _0x9494x9&& 0< _0x9494x9[_0x7ddb[67]]){_0x9494x3= _0x9494x3[_0x7ddb[1845]];for(_0x9494x2= 0;_0x9494x2< _0x9494x9[_0x7ddb[67]];_0x9494x2++){_0x9494x12= _0x9494x9[_0x9494x2][_0x7ddb[246]],0== _0x9494xa[_0x7ddb[1867]](_0x9494x12)[_0x7ddb[67]]&& _0x9494x3[_0x7ddb[207]](_0x9494x12)}}};function mxCoordinateAssignment(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){this[_0x7ddb[1759]]= _0x9494x2;this[_0x7ddb[1868]]= _0x9494x3;this[_0x7ddb[1869]]= _0x9494x4;this[_0x7ddb[1870]]= _0x9494x5;this[_0x7ddb[1871]]= _0x9494x9;this[_0x7ddb[1872]]= _0x9494xa}var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};mxCoordinateAssignment[_0x7ddb[202]]= new mxHierarchicalLayoutStage;mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[196]]= mxCoordinateAssignment;mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1759]]= null;mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1868]]= 30;mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1869]]= 100;mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1872]]= 10;mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1795]]= 8;mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1751]]= 5;mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1752]]= 2;mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1753]]= 12;mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1754]]= 4;mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1873]]= null;mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1870]]= mxConstants[_0x7ddb[1358]];mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1871]]= null;mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1874]]= null;mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1875]]= null;mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1876]]= null;mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1877]]= null;mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1878]]= null;mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1879]]= null;mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1880]]= null;mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1881]]= null;mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1882]]= !0;mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[675]]= mxHierarchicalEdgeStyle[_0x7ddb[1883]];mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1884]]= null;mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1885]]= null;mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1745]]= 10;mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1886]]= function(){var _0x9494x2=this[_0x7ddb[1759]][_0x7ddb[502]]();mxLog[_0x7ddb[539]]();mxLog[_0x7ddb[171]](_0x7ddb[1887]);for(var _0x9494x3=0;_0x9494x3< _0x9494x2[_0x7ddb[1850]][_0x7ddb[67]];_0x9494x3++){mxLog[_0x7ddb[53]](_0x7ddb[1888],_0x9494x3,_0x7ddb[1889]);for(var _0x9494x4=_0x9494x2[_0x7ddb[1850]][_0x9494x3],_0x9494x5=0;_0x9494x5< _0x9494x4[_0x7ddb[67]];_0x9494x5++){mxLog[_0x7ddb[53]](_0x9494x4[_0x9494x5][_0x7ddb[1833]](_0x9494x3),_0x7ddb[316])};mxLog[_0x7ddb[171]]()};mxLog[_0x7ddb[171]](_0x7ddb[1890])};mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[350]]= function(_0x9494x2){this[_0x7ddb[1873]]= [];_0x9494x2= this[_0x7ddb[1759]][_0x7ddb[502]]();this[_0x7ddb[1875]]= 0;this[_0x7ddb[1891]](this[_0x7ddb[1759]][_0x7ddb[1703]](),_0x9494x2);this[_0x7ddb[1882]]&& this[_0x7ddb[1892]](_0x9494x2);var _0x9494x3=1E8;if(this[_0x7ddb[1882]]){for(var _0x9494x4=0;_0x9494x4< this[_0x7ddb[1795]];_0x9494x4++){0!= _0x9494x4&& (this[_0x7ddb[1893]](_0x9494x4,_0x9494x2),this[_0x7ddb[1892]](_0x9494x2));if(this[_0x7ddb[1875]]< _0x9494x3){for(var _0x9494x5=0;_0x9494x5< _0x9494x2[_0x7ddb[1850]][_0x7ddb[67]];_0x9494x5++){for(var _0x9494x9=_0x9494x2[_0x7ddb[1850]][_0x9494x5],_0x9494xa=0;_0x9494xa< _0x9494x9[_0x7ddb[67]];_0x9494xa++){var _0x9494x12=_0x9494x9[_0x9494xa];_0x9494x12[_0x7ddb[1835]](_0x9494x5,_0x9494x12[_0x7ddb[1833]](_0x9494x5))}};_0x9494x3= this[_0x7ddb[1875]]}else {for(_0x9494x5= 0;_0x9494x5< _0x9494x2[_0x7ddb[1850]][_0x7ddb[67]];_0x9494x5++){_0x9494x9= _0x9494x2[_0x7ddb[1850]][_0x9494x5];for(_0x9494xa= 0;_0x9494xa< _0x9494x9[_0x7ddb[67]];_0x9494xa++){_0x9494x12= _0x9494x9[_0x9494xa],_0x9494x12[_0x7ddb[1834]](_0x9494x5,_0x9494x12[_0x7ddb[730]](_0x9494x5))}}};this[_0x7ddb[1894]](this[_0x7ddb[1759]][_0x7ddb[1703]](),_0x9494x2);this[_0x7ddb[1875]]= 0}};this[_0x7ddb[1895]](this[_0x7ddb[1759]][_0x7ddb[1703]](),_0x9494x2)};mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1892]]= function(_0x9494x2){for(var _0x9494x3=[],_0x9494x4=[],_0x9494x5=[],_0x9494x9=0;_0x9494x9<= _0x9494x2[_0x7ddb[1827]];_0x9494x9++){_0x9494x5[_0x9494x9]= _0x9494x2[_0x7ddb[1850]][_0x9494x9];for(var _0x9494xa=0;_0x9494xa< _0x9494x5[_0x9494x9][_0x7ddb[67]];_0x9494xa++){var _0x9494x12=_0x9494x5[_0x9494x9][_0x9494xa],_0x9494x13= new WeightedCellSorter(_0x9494x12,_0x9494x9);_0x9494x13[_0x7ddb[1785]]= _0x9494xa;_0x9494x13[_0x7ddb[1784]]= !0;_0x9494x3[_0x7ddb[207]](_0x9494x13);_0x9494x12= mxCellPath[_0x7ddb[385]](_0x9494x12[_0x7ddb[1841]]());_0x9494x4[_0x9494x12]= _0x9494x13}};_0x9494x2= 10* _0x9494x3[_0x7ddb[67]];for(_0x9494xa= 0;0< _0x9494x3[_0x7ddb[67]]&& _0x9494xa<= _0x9494x2;){var _0x9494x13=_0x9494x3[_0x7ddb[1115]](),_0x9494x9=_0x9494x13[_0x7ddb[246]],_0x9494x14=_0x9494x13[_0x7ddb[1782]],_0x9494x15=parseInt(_0x9494x13[_0x7ddb[1785]]),_0x9494x12=_0x9494x9[_0x7ddb[1831]](_0x9494x14),_0x9494x16=_0x9494x9[_0x7ddb[1832]](_0x9494x14),_0x9494x17=_0x9494x12[_0x7ddb[67]],_0x9494x18=_0x9494x16[_0x7ddb[67]],_0x9494x19=this[_0x7ddb[1896]](_0x9494x12,_0x9494x14+ 1),_0x9494x1a=this[_0x7ddb[1896]](_0x9494x16,_0x9494x14- 1),_0x9494x1b=_0x9494x17+ _0x9494x18,_0x9494x1c=_0x9494x9[_0x7ddb[1833]](_0x9494x14),_0x9494x1d=_0x9494x1c;0< _0x9494x1b&& (_0x9494x1d= (_0x9494x19* _0x9494x17+ _0x9494x1a* _0x9494x18)/ _0x9494x1b);_0x9494x17= !1;_0x9494x1d< _0x9494x1c- 1?0== _0x9494x15?(_0x9494x9[_0x7ddb[1834]](_0x9494x14,_0x9494x1d),_0x9494x17= !0):(_0x9494x15= _0x9494x5[_0x9494x14][_0x9494x15- 1],_0x9494x1c= _0x9494x15[_0x7ddb[1833]](_0x9494x14),_0x9494x1c= _0x9494x1c+ _0x9494x15[_0x7ddb[117]]/ 2+ this[_0x7ddb[1868]]+ _0x9494x9[_0x7ddb[117]]/ 2,_0x9494x1c< _0x9494x1d?(_0x9494x9[_0x7ddb[1834]](_0x9494x14,_0x9494x1d),_0x9494x17= !0):_0x9494x1c< _0x9494x9[_0x7ddb[1833]](_0x9494x14)- 1&& (_0x9494x9[_0x7ddb[1834]](_0x9494x14,_0x9494x1c),_0x9494x17= !0)):_0x9494x1d> _0x9494x1c+ 1&& (_0x9494x15== _0x9494x5[_0x9494x14][_0x7ddb[67]]- 1?(_0x9494x9[_0x7ddb[1834]](_0x9494x14,_0x9494x1d),_0x9494x17= !0):(_0x9494x15= _0x9494x5[_0x9494x14][_0x9494x15+ 1],_0x9494x1c= _0x9494x15[_0x7ddb[1833]](_0x9494x14),_0x9494x1c= _0x9494x1c- _0x9494x15[_0x7ddb[117]]/ 2- this[_0x7ddb[1868]]- _0x9494x9[_0x7ddb[117]]/ 2,_0x9494x1c> _0x9494x1d?(_0x9494x9[_0x7ddb[1834]](_0x9494x14,_0x9494x1d),_0x9494x17= !0):_0x9494x1c> _0x9494x9[_0x7ddb[1833]](_0x9494x14)+ 1&& (_0x9494x9[_0x7ddb[1834]](_0x9494x14,_0x9494x1c),_0x9494x17= !0)));if(_0x9494x17){for(_0x9494x9= 0;_0x9494x9< _0x9494x12[_0x7ddb[67]];_0x9494x9++){_0x9494x14= _0x9494x12[_0x9494x9],_0x9494x14= mxCellPath[_0x7ddb[385]](_0x9494x14[_0x7ddb[1841]]()),_0x9494x14= _0x9494x4[_0x9494x14],null!= _0x9494x14&& !1== _0x9494x14[_0x7ddb[1784]]&& (_0x9494x14[_0x7ddb[1784]]= !0,_0x9494x3[_0x7ddb[207]](_0x9494x14))};for(_0x9494x9= 0;_0x9494x9< _0x9494x16[_0x7ddb[67]];_0x9494x9++){_0x9494x14= _0x9494x16[_0x9494x9],_0x9494x14= mxCellPath[_0x7ddb[385]](_0x9494x14[_0x7ddb[1841]]()),_0x9494x14= _0x9494x4[_0x9494x14],null!= _0x9494x14&& !1== _0x9494x14[_0x7ddb[1784]]&& (_0x9494x14[_0x7ddb[1784]]= !0,_0x9494x3[_0x7ddb[207]](_0x9494x14))}};_0x9494x13[_0x7ddb[1784]]= !1;_0x9494xa++}};mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1893]]= function(_0x9494x2,_0x9494x3){if(0== _0x9494x2% 2){for(var _0x9494x4=_0x9494x3[_0x7ddb[1827]];0< _0x9494x4;_0x9494x4--){this[_0x7ddb[1897]](_0x9494x4- 1,_0x9494x3,_0x9494x4)}}else {for(_0x9494x4= 0;_0x9494x4< _0x9494x3[_0x7ddb[1827]]- 1;_0x9494x4++){this[_0x7ddb[1897]](_0x9494x4+ 1,_0x9494x3,_0x9494x4)}}};mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1897]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x3= _0x9494x3[_0x7ddb[1850]][_0x9494x2];for(var _0x9494x5=[],_0x9494x9=[],_0x9494xa=0;_0x9494xa< _0x9494x3[_0x7ddb[67]];_0x9494xa++){var _0x9494x12=_0x9494x3[_0x9494xa];_0x9494x5[_0x9494xa]= new WeightedCellSorter;_0x9494x5[_0x9494xa][_0x7ddb[246]]= _0x9494x12;_0x9494x5[_0x9494xa][_0x7ddb[1785]]= _0x9494xa;var _0x9494x13=mxCellPath[_0x7ddb[385]](_0x9494x12[_0x7ddb[1841]]());_0x9494x9[_0x9494x13]= _0x9494x5[_0x9494xa];var _0x9494x14=null,_0x9494x14=_0x9494x4< _0x9494x2?_0x9494x12[_0x7ddb[1832]](_0x9494x2):_0x9494x12[_0x7ddb[1831]](_0x9494x2);_0x9494x5[_0x9494xa][_0x7ddb[1782]]= this[_0x7ddb[1898]](_0x9494x12,_0x9494x14)};_0x9494x5[_0x7ddb[470]](WeightedCellSorter[_0x7ddb[202]][_0x7ddb[469]]);for(_0x9494xa= 0;_0x9494xa< _0x9494x5[_0x7ddb[67]];_0x9494xa++){_0x9494x13= 0;_0x9494x12= _0x9494x5[_0x9494xa][_0x7ddb[246]];_0x9494x13= 0;_0x9494x14= _0x9494x4< _0x9494x2?_0x9494x12[_0x7ddb[1832]](_0x9494x2)[_0x7ddb[1853]]():_0x9494x12[_0x7ddb[1831]](_0x9494x2)[_0x7ddb[1853]]();null!= _0x9494x14&& (_0x9494x13= _0x9494x14[_0x7ddb[67]],_0x9494x13= 0< _0x9494x13?this[_0x7ddb[1896]](_0x9494x14,_0x9494x4):_0x9494x12[_0x7ddb[1833]](_0x9494x2));for(var _0x9494x15=0,_0x9494x14=-1E8,_0x9494x16=_0x9494x5[_0x9494xa][_0x7ddb[1785]]- 1;0<= _0x9494x16;){var _0x9494x17=mxCellPath[_0x7ddb[385]](_0x9494x3[_0x9494x16][_0x7ddb[1841]]()),_0x9494x17=_0x9494x9[_0x9494x17];if(null!= _0x9494x17){var _0x9494x18=_0x9494x17[_0x7ddb[246]];_0x9494x17[_0x7ddb[1784]]?(_0x9494x14= _0x9494x18[_0x7ddb[1833]](_0x9494x2)+ _0x9494x18[_0x7ddb[117]]/ 2+ this[_0x7ddb[1868]]+ _0x9494x15+ _0x9494x12[_0x7ddb[117]]/ 2,_0x9494x16= -1):(_0x9494x15+= _0x9494x18[_0x7ddb[117]]+ this[_0x7ddb[1868]],_0x9494x16--)}};_0x9494x15= 0;_0x9494x18= 1E8;for(_0x9494x16= _0x9494x5[_0x9494xa][_0x7ddb[1785]]+ 1;_0x9494x16< _0x9494x5[_0x7ddb[67]];){if(_0x9494x17= mxCellPath[_0x7ddb[385]](_0x9494x3[_0x9494x16][_0x7ddb[1841]]()),_0x9494x17= _0x9494x9[_0x9494x17],null!= _0x9494x17){var _0x9494x19=_0x9494x17[_0x7ddb[246]];_0x9494x17[_0x7ddb[1784]]?(_0x9494x18= _0x9494x19[_0x7ddb[1833]](_0x9494x2)- _0x9494x19[_0x7ddb[117]]/ 2- this[_0x7ddb[1868]]- _0x9494x15- _0x9494x12[_0x7ddb[117]]/ 2,_0x9494x16= _0x9494x5[_0x7ddb[67]]):(_0x9494x15+= _0x9494x19[_0x7ddb[117]]+ this[_0x7ddb[1868]],_0x9494x16++)}};_0x9494x13>= _0x9494x14&& _0x9494x13<= _0x9494x18?_0x9494x12[_0x7ddb[1834]](_0x9494x2,_0x9494x13):_0x9494x13< _0x9494x14?(_0x9494x12[_0x7ddb[1834]](_0x9494x2,_0x9494x14),this[_0x7ddb[1875]]+= _0x9494x14- _0x9494x13):_0x9494x13> _0x9494x18&& (_0x9494x12[_0x7ddb[1834]](_0x9494x2,_0x9494x18),this[_0x7ddb[1875]]+= _0x9494x13- _0x9494x18);_0x9494x5[_0x9494xa][_0x7ddb[1784]]= !0}};mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1898]]= function(_0x9494x2,_0x9494x3){for(var _0x9494x4=0,_0x9494x5=0;_0x9494x5< _0x9494x3[_0x7ddb[67]];_0x9494x5++){var _0x9494x9=_0x9494x3[_0x9494x5];_0x9494x2[_0x7ddb[1193]]()&& _0x9494x9[_0x7ddb[1193]]()?_0x9494x4++:_0x9494x4= _0x9494x2[_0x7ddb[250]]()&& _0x9494x9[_0x7ddb[250]]()?_0x9494x4+ 8:_0x9494x4+ 2};return _0x9494x4};mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1896]]= function(_0x9494x2,_0x9494x3){if(0== _0x9494x2[_0x7ddb[67]]){return 0};for(var _0x9494x4=[],_0x9494x5=0;_0x9494x5< _0x9494x2[_0x7ddb[67]];_0x9494x5++){_0x9494x4[_0x9494x5]= _0x9494x2[_0x9494x5][_0x7ddb[1833]](_0x9494x3)};_0x9494x4[_0x7ddb[470]](function(_0x9494x2,_0x9494x3){return _0x9494x2- _0x9494x3});if(1== _0x9494x2[_0x7ddb[67]]% 2){return _0x9494x4[Math[_0x7ddb[519]](_0x9494x2[_0x7ddb[67]]/ 2)]};_0x9494x5= _0x9494x2[_0x7ddb[67]]/ 2;return (_0x9494x4[_0x9494x5- 1]+ _0x9494x4[_0x9494x5])/ 2};mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1891]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[1899]](_0x9494x2,_0x9494x3);for(var _0x9494x4=this[_0x7ddb[1876]];0<= _0x9494x4;_0x9494x4--){_0x9494x4< _0x9494x3[_0x7ddb[1827]]&& this[_0x7ddb[1900]](_0x9494x4,_0x9494x2,_0x9494x3)};for(_0x9494x4= this[_0x7ddb[1876]]+ 1;_0x9494x4<= _0x9494x3[_0x7ddb[1827]];_0x9494x4++){0< _0x9494x4&& this[_0x7ddb[1900]](_0x9494x4,_0x9494x2,_0x9494x3)}};mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1900]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x3= _0x9494x4[_0x7ddb[1850]][_0x9494x2];_0x9494x4= 0;for(var _0x9494x5=this[_0x7ddb[1871]]+ (this[_0x7ddb[1879]]- this[_0x7ddb[1880]][_0x9494x2])/ 2,_0x9494x9=!1,_0x9494xa=0;_0x9494xa< _0x9494x3[_0x7ddb[67]];_0x9494xa++){var _0x9494x12=_0x9494x3[_0x9494xa];if(_0x9494x12[_0x7ddb[1193]]()){var _0x9494x13=this[_0x7ddb[1759]][_0x7ddb[1726]](_0x9494x12[_0x7ddb[246]]);null!= _0x9494x13?this[_0x7ddb[1870]]== mxConstants[_0x7ddb[1358]]|| this[_0x7ddb[1870]]== mxConstants[_0x7ddb[1354]]?(_0x9494x12[_0x7ddb[117]]= _0x9494x13[_0x7ddb[117]],_0x9494x12[_0x7ddb[119]]= _0x9494x13[_0x7ddb[119]]):(_0x9494x12[_0x7ddb[117]]= _0x9494x13[_0x7ddb[119]],_0x9494x12[_0x7ddb[119]]= _0x9494x13[_0x7ddb[117]]):_0x9494x9= !0;_0x9494x4= Math[_0x7ddb[160]](_0x9494x4,_0x9494x12[_0x7ddb[119]])}else {_0x9494x12[_0x7ddb[250]]()&& (_0x9494x13= 1,null!= _0x9494x12[_0x7ddb[1842]]?_0x9494x13= _0x9494x12[_0x7ddb[1842]][_0x7ddb[67]]:mxLog[_0x7ddb[283]](_0x7ddb[1901]),_0x9494x12[_0x7ddb[117]]= (_0x9494x13- 1)* this[_0x7ddb[1872]])};_0x9494x5+= _0x9494x12[_0x7ddb[117]]/ 2;_0x9494x12[_0x7ddb[1835]](_0x9494x2,_0x9494x5);_0x9494x12[_0x7ddb[1834]](_0x9494x2,_0x9494x5);_0x9494x5+= _0x9494x12[_0x7ddb[117]]/ 2;_0x9494x5+= this[_0x7ddb[1868]]};!0== _0x9494x9 && mxLog[_0x7ddb[283]](_0x7ddb[1902])};mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1899]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=-this[_0x7ddb[1869]],_0x9494x5=0;this[_0x7ddb[1880]]= [];this[_0x7ddb[1881]]= [];for(var _0x9494x9=_0x9494x3[_0x7ddb[1827]];0<= _0x9494x9;_0x9494x9--){for(var _0x9494xa=0,_0x9494x12=_0x9494x3[_0x7ddb[1850]][_0x9494x9],_0x9494x13=this[_0x7ddb[1871]],_0x9494x14=!1,_0x9494x15=0;_0x9494x15< _0x9494x12[_0x7ddb[67]];_0x9494x15++){var _0x9494x16=_0x9494x12[_0x9494x15];if(_0x9494x16[_0x7ddb[1193]]()){var _0x9494x17=this[_0x7ddb[1759]][_0x7ddb[1726]](_0x9494x16[_0x7ddb[246]]);null!= _0x9494x17?this[_0x7ddb[1870]]== mxConstants[_0x7ddb[1358]]|| this[_0x7ddb[1870]]== mxConstants[_0x7ddb[1354]]?(_0x9494x16[_0x7ddb[117]]= _0x9494x17[_0x7ddb[117]],_0x9494x16[_0x7ddb[119]]= _0x9494x17[_0x7ddb[119]]):(_0x9494x16[_0x7ddb[117]]= _0x9494x17[_0x7ddb[119]],_0x9494x16[_0x7ddb[119]]= _0x9494x17[_0x7ddb[117]]):_0x9494x14= !0;_0x9494xa= Math[_0x7ddb[160]](_0x9494xa,_0x9494x16[_0x7ddb[119]])}else {_0x9494x16[_0x7ddb[250]]()&& (_0x9494x17= 1,null!= _0x9494x16[_0x7ddb[1842]]?_0x9494x17= _0x9494x16[_0x7ddb[1842]][_0x7ddb[67]]:mxLog[_0x7ddb[283]](_0x7ddb[1901]),_0x9494x16[_0x7ddb[117]]= (_0x9494x17- 1)* this[_0x7ddb[1872]])};_0x9494x13+= _0x9494x16[_0x7ddb[117]]/ 2;_0x9494x16[_0x7ddb[1835]](_0x9494x9,_0x9494x13);_0x9494x16[_0x7ddb[1834]](_0x9494x9,_0x9494x13);_0x9494x13+= _0x9494x16[_0x7ddb[117]]/ 2;_0x9494x13+= this[_0x7ddb[1868]];_0x9494x13> this[_0x7ddb[1879]]&& (this[_0x7ddb[1879]]= _0x9494x13,this[_0x7ddb[1876]]= _0x9494x9);this[_0x7ddb[1880]][_0x9494x9]= _0x9494x13};!0== _0x9494x14 && mxLog[_0x7ddb[283]](_0x7ddb[1902]);this[_0x7ddb[1881]][_0x9494x9]= _0x9494x4;_0x9494x13= _0x9494xa/ 2+ _0x9494x5/ 2+ this[_0x7ddb[1869]];_0x9494x5= _0x9494xa;_0x9494x4= this[_0x7ddb[1870]]== mxConstants[_0x7ddb[1358]]|| this[_0x7ddb[1870]]== mxConstants[_0x7ddb[1359]]?_0x9494x4+ _0x9494x13:_0x9494x4- _0x9494x13;for(_0x9494x15= 0;_0x9494x15< _0x9494x12[_0x7ddb[67]];_0x9494x15++){_0x9494x12[_0x9494x15][_0x7ddb[1836]](_0x9494x9,_0x9494x4)}}};mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1894]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=_0x9494x3[_0x7ddb[1847]],_0x9494x5;for(_0x9494x5 in _0x9494x4){var _0x9494x9=_0x9494x4[_0x9494x5];if(!(1> _0x9494x9[_0x7ddb[1827]]- _0x9494x9[_0x7ddb[1828]]- 1)){for(var _0x9494xa=_0x9494x9[_0x7ddb[1833]](_0x9494x9[_0x7ddb[1828]]+ 1),_0x9494x12=!0,_0x9494x13=0,_0x9494x14=_0x9494x9[_0x7ddb[1828]]+ 2;_0x9494x14< _0x9494x9[_0x7ddb[1827]];_0x9494x14++){var _0x9494x15=_0x9494x9[_0x7ddb[1833]](_0x9494x14);_0x9494xa!= _0x9494x15?(_0x9494x12= !1,_0x9494xa= _0x9494x15):_0x9494x13++};if(!_0x9494x12){for(var _0x9494x12=_0x9494xa= 0,_0x9494x15=[],_0x9494x16=[],_0x9494x17=_0x9494x9[_0x7ddb[1833]](_0x9494x9[_0x7ddb[1828]]+ 1),_0x9494x14=_0x9494x9[_0x7ddb[1828]]+ 1;_0x9494x14< _0x9494x9[_0x7ddb[1827]]- 1;_0x9494x14++){var _0x9494x18=_0x9494x9[_0x7ddb[730]](_0x9494x14+ 1);_0x9494x17== _0x9494x18?(_0x9494x15[_0x9494x14- _0x9494x9[_0x7ddb[1828]]- 1]= _0x9494x17,_0x9494xa++):this[_0x7ddb[1903]](_0x9494x3,_0x9494x9,_0x9494x14+ 1,_0x9494x17)?(_0x9494x15[_0x9494x14- _0x9494x9[_0x7ddb[1828]]- 1]= _0x9494x17,_0x9494xa++):_0x9494x17= _0x9494x15[_0x9494x14- _0x9494x9[_0x7ddb[1828]]- 1]= _0x9494x18};_0x9494x17= _0x9494x9[_0x7ddb[730]](_0x9494x14);for(_0x9494x14= _0x9494x9[_0x7ddb[1827]]- 1;_0x9494x14> _0x9494x9[_0x7ddb[1828]]+ 1;_0x9494x14--){_0x9494x18= _0x9494x9[_0x7ddb[730]](_0x9494x14- 1),_0x9494x17== _0x9494x18?(_0x9494x16[_0x9494x14- _0x9494x9[_0x7ddb[1828]]- 2]= _0x9494x17,_0x9494x12++):this[_0x7ddb[1903]](_0x9494x3,_0x9494x9,_0x9494x14- 1,_0x9494x17)?(_0x9494x16[_0x9494x14- _0x9494x9[_0x7ddb[1828]]- 2]= _0x9494x17,_0x9494x12++):(_0x9494x16[_0x9494x14- _0x9494x9[_0x7ddb[1828]]- 2]= _0x9494x9[_0x7ddb[730]](_0x9494x14- 1),_0x9494x17= _0x9494x18)};if(_0x9494x12> _0x9494x13|| _0x9494xa> _0x9494x13){if(_0x9494x12>= _0x9494xa){for(_0x9494x14= _0x9494x9[_0x7ddb[1827]]- 2;_0x9494x14> _0x9494x9[_0x7ddb[1828]];_0x9494x14--){_0x9494x9[_0x7ddb[1835]](_0x9494x14,_0x9494x16[_0x9494x14- _0x9494x9[_0x7ddb[1828]]- 1])}}else {if(_0x9494xa> _0x9494x12){for(_0x9494x14= _0x9494x9[_0x7ddb[1828]]+ 2;_0x9494x14< _0x9494x9[_0x7ddb[1827]];_0x9494x14++){_0x9494x9[_0x7ddb[1835]](_0x9494x14,_0x9494x15[_0x9494x14- _0x9494x9[_0x7ddb[1828]]- 2])}}}}}}}};mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1903]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){_0x9494x2= _0x9494x2[_0x7ddb[1850]][_0x9494x4];for(var _0x9494x9=-1,_0x9494xa=0;_0x9494xa< _0x9494x2[_0x7ddb[67]];_0x9494xa++){if(_0x9494x3== _0x9494x2[_0x9494xa]){_0x9494x9= _0x9494xa;break}};if(0> _0x9494x9){return !1};_0x9494xa= _0x9494x3[_0x7ddb[1833]](_0x9494x4);if(_0x9494x5< _0x9494xa){if(0== _0x9494x9){return !0};_0x9494x2= _0x9494x2[_0x9494x9- 1];_0x9494x4= _0x9494x2[_0x7ddb[1833]](_0x9494x4);_0x9494x4= _0x9494x4+ _0x9494x2[_0x7ddb[117]]/ 2+ this[_0x7ddb[1868]]+ _0x9494x3[_0x7ddb[117]]/ 2;if(!(_0x9494x4<= _0x9494x5)){return !1}}else {if(_0x9494x5> _0x9494xa){if(_0x9494x9== _0x9494x2[_0x7ddb[67]]- 1){return !0};_0x9494x2= _0x9494x2[_0x9494x9+ 1];_0x9494x4= _0x9494x2[_0x7ddb[1833]](_0x9494x4);_0x9494x4= _0x9494x4- _0x9494x2[_0x7ddb[117]]/ 2- this[_0x7ddb[1868]]- _0x9494x3[_0x7ddb[117]]/ 2;if(!(_0x9494x4>= _0x9494x5)){return !1}}};return !0};mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1895]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[1877]]= [];this[_0x7ddb[1878]]= [];for(var _0x9494x4=0;_0x9494x4< _0x9494x3[_0x7ddb[1850]][_0x7ddb[67]];_0x9494x4++){this[_0x7ddb[1877]][_0x9494x4]= Number[_0x7ddb[1904]],this[_0x7ddb[1878]][_0x9494x4]= 0};_0x9494x4= null;this[_0x7ddb[1759]][_0x7ddb[1735]]&& (_0x9494x4= {});var _0x9494x5=_0x9494x3[_0x7ddb[1847]],_0x9494x9=_0x9494x3[_0x7ddb[1846]],_0x9494xa;for(_0x9494xa in _0x9494x9){var _0x9494x12=_0x9494x9[_0x9494xa];this[_0x7ddb[1725]](_0x9494x12);if(this[_0x7ddb[1759]][_0x7ddb[1735]]){var _0x9494x12=_0x9494x2[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x12[_0x7ddb[246]]),_0x9494x13=mxCellPath[_0x7ddb[385]](_0x9494x12);null== _0x9494x4[_0x9494x13]&& (_0x9494x4[_0x9494x13]= _0x9494x12)}};this[_0x7ddb[1759]][_0x7ddb[1735]]&& null!= _0x9494x4&& this[_0x7ddb[1763]](_0x9494x4);(this[_0x7ddb[675]]== mxHierarchicalEdgeStyle[_0x7ddb[1905]]|| this[_0x7ddb[675]]== mxHierarchicalEdgeStyle[_0x7ddb[1883]]|| this[_0x7ddb[675]]== mxHierarchicalEdgeStyle[_0x7ddb[1906]])&& this[_0x7ddb[1764]](_0x9494x3);for(_0x9494xa in _0x9494x5){this[_0x7ddb[1907]](_0x9494x5[_0x9494xa])}};mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1763]]= function(_0x9494x2){var _0x9494x3=[],_0x9494x4;for(_0x9494x4 in _0x9494x2){_0x9494x3[_0x7ddb[207]](_0x9494x2[_0x9494x4])};this[_0x7ddb[1759]][_0x7ddb[1727]](mxUtils[_0x7ddb[1779]](_0x9494x3,!0),this[_0x7ddb[1745]])};mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1764]]= function(_0x9494x2){for(var _0x9494x3=0;_0x9494x3< _0x9494x2[_0x7ddb[1850]][_0x7ddb[67]];_0x9494x3++){for(var _0x9494x4=_0x9494x2[_0x7ddb[1850]][_0x9494x3],_0x9494x5=0;_0x9494x5< _0x9494x4[_0x7ddb[67]];_0x9494x5++){var _0x9494x9=_0x9494x4[_0x9494x5];if(_0x9494x9[_0x7ddb[1193]]()){for(var _0x9494xa=_0x9494x9[_0x7ddb[1832]](_0x9494x3),_0x9494x12=_0x9494x3- 1,_0x9494x13=0;2> _0x9494x13;_0x9494x13++){if(-1< _0x9494x12 && _0x9494x12< _0x9494x2[_0x7ddb[1850]][_0x7ddb[67]] && null!= _0x9494xa && 0< _0x9494xa[_0x7ddb[67]]){for(var _0x9494x14=[],_0x9494x15=0;_0x9494x15< _0x9494xa[_0x7ddb[67]];_0x9494x15++){var _0x9494x16= new WeightedCellSorter(_0x9494xa[_0x9494x15],_0x9494xa[_0x9494x15][_0x7ddb[730]](_0x9494x12));_0x9494x14[_0x7ddb[207]](_0x9494x16)};_0x9494x14[_0x7ddb[470]](WeightedCellSorter[_0x7ddb[202]][_0x7ddb[469]]);for(var _0x9494x16=_0x9494x9[_0x7ddb[235]][0]- _0x9494x9[_0x7ddb[117]]/ 2,_0x9494x17=_0x9494x16+ _0x9494x9[_0x7ddb[117]],_0x9494x18=_0x9494xa= 0,_0x9494x12=[],_0x9494x15=0;_0x9494x15< _0x9494x14[_0x7ddb[67]];_0x9494x15++){var _0x9494x19=_0x9494x14[_0x9494x15][_0x7ddb[246]],_0x9494x1a;if(_0x9494x19[_0x7ddb[1193]]()){_0x9494x1a= 0== _0x9494x13?_0x9494x9[_0x7ddb[1838]]:_0x9494x9[_0x7ddb[1837]];for(var _0x9494x1b=0;_0x9494x1b< _0x9494x1a[_0x7ddb[67]];_0x9494x1b++){if(_0x9494x1a[_0x9494x1b][_0x7ddb[1097]]== _0x9494x19|| _0x9494x1a[_0x9494x1b][_0x7ddb[772]]== _0x9494x19){_0x9494xa+= _0x9494x1a[_0x9494x1b][_0x7ddb[1842]][_0x7ddb[67]],_0x9494x18++,_0x9494x12[_0x7ddb[207]](_0x9494x1a[_0x9494x1b])}}}else {_0x9494xa+= _0x9494x19[_0x7ddb[1842]][_0x7ddb[67]],_0x9494x18++,_0x9494x12[_0x7ddb[207]](_0x9494x19)}};_0x9494x9[_0x7ddb[117]]> (_0x9494xa+ 1)* this[_0x7ddb[1751]]+ 2* this[_0x7ddb[1751]]&& (_0x9494x16+= this[_0x7ddb[1751]],_0x9494x17-= this[_0x7ddb[1751]]);_0x9494x14= (_0x9494x17- _0x9494x16)/ _0x9494xa;_0x9494x16+= _0x9494x14/ 2;_0x9494x17= this[_0x7ddb[1753]]- this[_0x7ddb[1752]];for(_0x9494x15= _0x9494x18= 0;_0x9494x15< _0x9494x12[_0x7ddb[67]];_0x9494x15++){_0x9494x19= _0x9494x12[_0x9494x15][_0x7ddb[1842]][_0x7ddb[67]];_0x9494x1b= mxCellPath[_0x7ddb[385]](_0x9494x12[_0x9494x15][_0x7ddb[1842]][0]);_0x9494x1a= this[_0x7ddb[1873]][_0x9494x1b];null== _0x9494x1a&& (_0x9494x1a= [],this[_0x7ddb[1873]][_0x9494x1b]= _0x9494x1a);_0x9494x15< _0x9494xa/ 2?_0x9494x17+= this[_0x7ddb[1752]]:_0x9494x15> _0x9494xa/ 2&& (_0x9494x17-= this[_0x7ddb[1752]]);for(_0x9494x1b= 0;_0x9494x1b< _0x9494x19;_0x9494x1b++){_0x9494x1a[4* _0x9494x1b+ 2* _0x9494x13]= _0x9494x16,_0x9494x16+= _0x9494x14,_0x9494x1a[4* _0x9494x1b+ 2* _0x9494x13+ 1]= _0x9494x17};_0x9494x18= Math[_0x7ddb[160]](_0x9494x18,_0x9494x17)}};_0x9494xa= _0x9494x9[_0x7ddb[1831]](_0x9494x3);_0x9494x12= _0x9494x3+ 1}}}}};mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1907]]= function(_0x9494x2){var _0x9494x3=0;if(101207!= _0x9494x2[_0x7ddb[1826]][0]){var _0x9494x4=_0x9494x2[_0x7ddb[1827]],_0x9494x5=_0x9494x2[_0x7ddb[1828]];_0x9494x4== _0x9494x5&& (_0x9494x4= _0x9494x2[_0x7ddb[1097]][_0x7ddb[1827]],_0x9494x5= _0x9494x2[_0x7ddb[772]][_0x7ddb[1828]]);for(var _0x9494x9=0,_0x9494xa=mxCellPath[_0x7ddb[385]](_0x9494x2[_0x7ddb[1842]][0]),_0x9494xa=this[_0x7ddb[1873]][_0x9494xa],_0x9494x12=_0x9494x2[_0x7ddb[1843]]?_0x9494x2[_0x7ddb[772]][_0x7ddb[246]]:_0x9494x2[_0x7ddb[1097]][_0x7ddb[246]],_0x9494x13=this[_0x7ddb[1759]][_0x7ddb[1179]],_0x9494x14=0;_0x9494x14< _0x9494x2[_0x7ddb[1842]][_0x7ddb[67]];_0x9494x14++){var _0x9494x15=_0x9494x2[_0x7ddb[1842]][_0x9494x14],_0x9494x16=this[_0x7ddb[1759]][_0x7ddb[1710]](_0x9494x15,!0),_0x9494x17=_0x9494x13[_0x7ddb[251]][_0x7ddb[1709]](_0x9494x15,!0),_0x9494x18=[],_0x9494x19=_0x9494x2[_0x7ddb[1843]];_0x9494x16!= _0x9494x12&& (_0x9494x19= !_0x9494x19);if(null!= _0x9494xa){var _0x9494x1a=_0x9494x19?2:0,_0x9494x1b=_0x9494x19?this[_0x7ddb[1877]][_0x9494x5]:this[_0x7ddb[1878]][_0x9494x4],_0x9494x1c=_0x9494xa[4* _0x9494x9+ 1+ _0x9494x1a];_0x9494x19&& (_0x9494x1c= -_0x9494x1c);_0x9494x1b+= _0x9494x1c;_0x9494x1a= _0x9494xa[4* _0x9494x9+ _0x9494x1a];_0x9494x17= _0x9494x13[_0x7ddb[251]][_0x7ddb[1709]](_0x9494x15,!0);this[_0x7ddb[1759]][_0x7ddb[1908]](_0x9494x17)&& _0x9494x13[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x17)== _0x9494x16&& (_0x9494x1a= _0x9494x13[_0x7ddb[441]][_0x7ddb[248]](_0x9494x17),_0x9494x1a= null!= _0x9494x1a?_0x9494x1a[_0x7ddb[235]]:_0x9494x16[_0x7ddb[256]][_0x7ddb[235]]+ _0x9494x2[_0x7ddb[1097]][_0x7ddb[117]]* _0x9494x17[_0x7ddb[256]][_0x7ddb[235]]);this[_0x7ddb[1870]]== mxConstants[_0x7ddb[1358]]|| this[_0x7ddb[1870]]== mxConstants[_0x7ddb[1354]]?(_0x9494x18[_0x7ddb[207]]( new mxPoint(_0x9494x1a,_0x9494x1b)),this[_0x7ddb[675]]== mxHierarchicalEdgeStyle[_0x7ddb[1906]]&& _0x9494x18[_0x7ddb[207]]( new mxPoint(_0x9494x1a,_0x9494x1b+ _0x9494x1c))):(_0x9494x18[_0x7ddb[207]]( new mxPoint(_0x9494x1b,_0x9494x1a)),this[_0x7ddb[675]]== mxHierarchicalEdgeStyle[_0x7ddb[1906]]&& _0x9494x18[_0x7ddb[207]]( new mxPoint(_0x9494x1b+ _0x9494x1c,_0x9494x1a)))};_0x9494x1a= _0x9494x2[_0x7ddb[235]][_0x7ddb[67]]- 1;_0x9494x1b= _0x9494x1c= -1;_0x9494x16= _0x9494x2[_0x7ddb[1827]]- 1;_0x9494x19&& (_0x9494x1a= 0,_0x9494x1c= _0x9494x2[_0x7ddb[235]][_0x7ddb[67]],_0x9494x1b= 1,_0x9494x16= _0x9494x2[_0x7ddb[1828]]+ 1);for(;_0x9494x2[_0x7ddb[1827]]!= _0x9494x2[_0x7ddb[1828]]&& _0x9494x1a!= _0x9494x1c;_0x9494x1a+= _0x9494x1b){var _0x9494x17=_0x9494x2[_0x7ddb[235]][_0x9494x1a]+ _0x9494x3,_0x9494x1d=(this[_0x7ddb[1877]][_0x9494x16]+ this[_0x7ddb[1878]][_0x9494x16+ 1])/ 2,_0x9494x1e=(this[_0x7ddb[1877]][_0x9494x16- 1]+ this[_0x7ddb[1878]][_0x9494x16])/ 2;if(_0x9494x19){var _0x9494x1f=_0x9494x1d,_0x9494x1d=_0x9494x1e,_0x9494x1e=_0x9494x1f};this[_0x7ddb[1870]]== mxConstants[_0x7ddb[1358]]|| this[_0x7ddb[1870]]== mxConstants[_0x7ddb[1354]]?(_0x9494x18[_0x7ddb[207]]( new mxPoint(_0x9494x17,_0x9494x1d)),_0x9494x18[_0x7ddb[207]]( new mxPoint(_0x9494x17,_0x9494x1e))):(_0x9494x18[_0x7ddb[207]]( new mxPoint(_0x9494x1d,_0x9494x17)),_0x9494x18[_0x7ddb[207]]( new mxPoint(_0x9494x1e,_0x9494x17)));this[_0x7ddb[1874]]= Math[_0x7ddb[160]](this[_0x7ddb[1874]],_0x9494x17);_0x9494x16+= _0x9494x1b};null!= _0x9494xa&& (_0x9494x1a= _0x9494x19?2:0,_0x9494x1b= _0x9494x19?this[_0x7ddb[1878]][_0x9494x4]:this[_0x7ddb[1877]][_0x9494x5],_0x9494x1c= _0x9494xa[4* _0x9494x9+ 3- _0x9494x1a],_0x9494x19&& (_0x9494x1c= -_0x9494x1c),_0x9494x1b-= _0x9494x1c,_0x9494x1a= _0x9494xa[4* _0x9494x9+ 2- _0x9494x1a],_0x9494x19= _0x9494x13[_0x7ddb[251]][_0x7ddb[1709]](_0x9494x15,!1),_0x9494x16= this[_0x7ddb[1759]][_0x7ddb[1710]](_0x9494x15,!1),this[_0x7ddb[1759]][_0x7ddb[1908]](_0x9494x19)&& _0x9494x13[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x19)== _0x9494x16&& (_0x9494x1a= _0x9494x13[_0x7ddb[441]][_0x7ddb[248]](_0x9494x19),_0x9494x1a= null!= _0x9494x1a?_0x9494x1a[_0x7ddb[235]]:_0x9494x16[_0x7ddb[256]][_0x7ddb[235]]+ _0x9494x2[_0x7ddb[772]][_0x7ddb[117]]* _0x9494x19[_0x7ddb[256]][_0x7ddb[235]]),this[_0x7ddb[1870]]== mxConstants[_0x7ddb[1358]]|| this[_0x7ddb[1870]]== mxConstants[_0x7ddb[1354]]?(this[_0x7ddb[675]]== mxHierarchicalEdgeStyle[_0x7ddb[1906]]&& _0x9494x18[_0x7ddb[207]]( new mxPoint(_0x9494x1a,_0x9494x1b- _0x9494x1c)),_0x9494x18[_0x7ddb[207]]( new mxPoint(_0x9494x1a,_0x9494x1b))):(this[_0x7ddb[675]]== mxHierarchicalEdgeStyle[_0x7ddb[1906]]&& _0x9494x18[_0x7ddb[207]]( new mxPoint(_0x9494x1b- _0x9494x1c,_0x9494x1a)),_0x9494x18[_0x7ddb[207]]( new mxPoint(_0x9494x1b,_0x9494x1a))));_0x9494x2[_0x7ddb[1843]]&& this[_0x7ddb[1909]](_0x9494x2,_0x9494x15);this[_0x7ddb[1759]][_0x7ddb[1722]](_0x9494x15,_0x9494x18);_0x9494x3= 0== _0x9494x3?this[_0x7ddb[1872]]:0< _0x9494x3?-_0x9494x3:-_0x9494x3+ this[_0x7ddb[1872]];_0x9494x9++};_0x9494x2[_0x7ddb[1826]][0]= 101207}};mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1725]]= function(_0x9494x2){var _0x9494x3=_0x9494x2[_0x7ddb[246]],_0x9494x4=_0x9494x2[_0x7ddb[235]][0]- _0x9494x2[_0x7ddb[117]]/ 2,_0x9494x5=_0x9494x2[_0x7ddb[236]][0]- _0x9494x2[_0x7ddb[119]]/ 2;this[_0x7ddb[1877]][_0x9494x2[_0x7ddb[1828]]]= Math[_0x7ddb[243]](this[_0x7ddb[1877]][_0x9494x2[_0x7ddb[1828]]],_0x9494x5);this[_0x7ddb[1878]][_0x9494x2[_0x7ddb[1828]]]= Math[_0x7ddb[160]](this[_0x7ddb[1878]][_0x9494x2[_0x7ddb[1828]]],_0x9494x5+ _0x9494x2[_0x7ddb[119]]);this[_0x7ddb[1870]]== mxConstants[_0x7ddb[1358]]|| this[_0x7ddb[1870]]== mxConstants[_0x7ddb[1354]]?this[_0x7ddb[1759]][_0x7ddb[1725]](_0x9494x3,_0x9494x4,_0x9494x5):this[_0x7ddb[1759]][_0x7ddb[1725]](_0x9494x3,_0x9494x5,_0x9494x4);this[_0x7ddb[1874]]= Math[_0x7ddb[160]](this[_0x7ddb[1874]],_0x9494x4+ _0x9494x2[_0x7ddb[117]])};mxCoordinateAssignment[_0x7ddb[202]][_0x7ddb[1909]]= function(_0x9494x2,_0x9494x3){};function WeightedCellSorter(_0x9494x2,_0x9494x3){this[_0x7ddb[246]]= _0x9494x2;this[_0x7ddb[1782]]= _0x9494x3}WeightedCellSorter[_0x7ddb[202]][_0x7ddb[1782]]= 0;WeightedCellSorter[_0x7ddb[202]][_0x7ddb[1783]]= !1;WeightedCellSorter[_0x7ddb[202]][_0x7ddb[1784]]= !1;WeightedCellSorter[_0x7ddb[202]][_0x7ddb[1785]]= null;WeightedCellSorter[_0x7ddb[202]][_0x7ddb[246]]= null;WeightedCellSorter[_0x7ddb[202]][_0x7ddb[469]]= function(_0x9494x2,_0x9494x3){return null!= _0x9494x2&& null!= _0x9494x3?_0x9494x3[_0x7ddb[1782]]> _0x9494x2[_0x7ddb[1782]]?-1:_0x9494x3[_0x7ddb[1782]]< _0x9494x2[_0x7ddb[1782]]?1:_0x9494x3[_0x7ddb[1783]]?-1:1:0};function mxHierarchicalLayout(_0x9494x2,_0x9494x3,_0x9494x4){mxGraphLayout[_0x7ddb[239]](this,_0x9494x2);this[_0x7ddb[1870]]= null!= _0x9494x3?_0x9494x3:mxConstants[_0x7ddb[1358]];this[_0x7ddb[1910]]= null!= _0x9494x4?_0x9494x4:!0}mxHierarchicalLayout[_0x7ddb[202]]= new mxGraphLayout;mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[196]]= mxHierarchicalLayout;mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[1845]]= null;mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[1735]]= !1;mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[1911]]= !1;mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[1912]]= 0;mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[1868]]= 30;mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[1869]]= 100;mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[1913]]= 60;mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[1872]]= 10;mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[1870]]= mxConstants[_0x7ddb[1358]];mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[1882]]= !0;mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[1844]]= !0;mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[1787]]= !0;mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[1914]]= !0;mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[251]]= null;mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[1915]]= null;mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[502]]= function(){return this[_0x7ddb[251]]};mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[350]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[1101]]= _0x9494x2;var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[251]];this[_0x7ddb[1915]]= {};if(!(null== _0x9494x3&& null== _0x9494x2)){if(null!= _0x9494x3&& null!= _0x9494x2){for(var _0x9494x5=[],_0x9494x9=0;_0x9494x9< _0x9494x3[_0x7ddb[67]];_0x9494x9++){_0x9494x4[_0x7ddb[1720]](_0x9494x2,_0x9494x3[_0x9494x9])&& _0x9494x5[_0x7ddb[207]](_0x9494x3[_0x9494x9])};this[_0x7ddb[1845]]= _0x9494x5}else {this[_0x7ddb[1845]]= _0x9494x3};_0x9494x4[_0x7ddb[473]]();try{this[_0x7ddb[1916]](_0x9494x2),this[_0x7ddb[1735]]&& !this[_0x7ddb[1179]][_0x7ddb[1742]](_0x9494x2)&& this[_0x7ddb[1179]][_0x7ddb[1917]]([_0x9494x2],this[_0x7ddb[1912]],this[_0x7ddb[1911]])}finally{_0x9494x4[_0x7ddb[476]]()}}};mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[1918]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=[];if(null!= _0x9494x2&& null!= _0x9494x3){var _0x9494x5=this[_0x7ddb[1179]][_0x7ddb[251]],_0x9494x9=null,_0x9494xa=-1E5,_0x9494x12;for(_0x9494x12 in _0x9494x3){var _0x9494x13=_0x9494x3[_0x9494x12];if(_0x9494x5[_0x7ddb[1193]](_0x9494x13)&& this[_0x7ddb[1179]][_0x7ddb[1714]](_0x9494x13)){for(var _0x9494x14=this[_0x7ddb[264]](_0x9494x13),_0x9494x15=0,_0x9494x16=0,_0x9494x17=0;_0x9494x17< _0x9494x14[_0x7ddb[67]];_0x9494x17++){this[_0x7ddb[1710]](_0x9494x14[_0x9494x17],!0)== _0x9494x13?_0x9494x15++:_0x9494x16++};0== _0x9494x16&& 0< _0x9494x15&& _0x9494x4[_0x7ddb[207]](_0x9494x13);_0x9494x14= _0x9494x15- _0x9494x16;_0x9494x14> _0x9494xa&& (_0x9494xa= _0x9494x14,_0x9494x9= _0x9494x13)}};0== _0x9494x4[_0x7ddb[67]]&& null!= _0x9494x9&& _0x9494x4[_0x7ddb[207]](_0x9494x9)};return _0x9494x4};mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[264]]= function(_0x9494x2){var _0x9494x3=mxCellPath[_0x7ddb[385]](_0x9494x2);if(null!= this[_0x7ddb[1915]][_0x9494x3]){return this[_0x7ddb[1915]][_0x9494x3]};for(var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[251]],_0x9494x5=[],_0x9494x9=this[_0x7ddb[1179]][_0x7ddb[1742]](_0x9494x2),_0x9494xa=_0x9494x4[_0x7ddb[262]](_0x9494x2),_0x9494x12=0;_0x9494x12< _0x9494xa;_0x9494x12++){var _0x9494x13=_0x9494x4[_0x7ddb[263]](_0x9494x2,_0x9494x12);if(this[_0x7ddb[1908]](_0x9494x13)){_0x9494x5= _0x9494x5[_0x7ddb[1919]](_0x9494x4[_0x7ddb[264]](_0x9494x13,!0,!0))}else {if(_0x9494x9|| !this[_0x7ddb[1179]][_0x7ddb[1714]](_0x9494x13)){_0x9494x5= _0x9494x5[_0x7ddb[1919]](_0x9494x4[_0x7ddb[264]](_0x9494x13,!0,!0))}}};_0x9494x5= _0x9494x5[_0x7ddb[1919]](_0x9494x4[_0x7ddb[264]](_0x9494x2,!0,!0));_0x9494x4= [];for(_0x9494x12= 0;_0x9494x12< _0x9494x5[_0x7ddb[67]];_0x9494x12++){_0x9494x9= this[_0x7ddb[1710]](_0x9494x5[_0x9494x12],!0),_0x9494xa= this[_0x7ddb[1710]](_0x9494x5[_0x9494x12],!1),(_0x9494x9== _0x9494xa|| _0x9494x9!= _0x9494xa&& (_0x9494xa== _0x9494x2&& (null== this[_0x7ddb[1101]]|| this[_0x7ddb[1179]][_0x7ddb[1920]](_0x9494x9,this[_0x7ddb[1101]],this[_0x7ddb[1914]]))|| _0x9494x9== _0x9494x2&& (null== this[_0x7ddb[1101]]|| this[_0x7ddb[1179]][_0x7ddb[1920]](_0x9494xa,this[_0x7ddb[1101]],this[_0x7ddb[1914]]))))&& _0x9494x4[_0x7ddb[207]](_0x9494x5[_0x9494x12])};return this[_0x7ddb[1915]][_0x9494x3]= _0x9494x4};mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[1710]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[248]](_0x9494x2),_0x9494x4=null!= _0x9494x4?_0x9494x4[_0x7ddb[1710]](_0x9494x3):this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[1710]](_0x9494x2,_0x9494x3);this[_0x7ddb[1908]](_0x9494x4)&& (_0x9494x4= this[_0x7ddb[1179]][_0x7ddb[251]][_0x7ddb[1197]](_0x9494x4));return _0x9494x4};mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[1916]]= function(_0x9494x2){var _0x9494x3=[],_0x9494x4=[];if(null== this[_0x7ddb[1845]]&& null!= _0x9494x2){var _0x9494x5={};this[_0x7ddb[1921]](_0x9494x2,_0x9494x5);this[_0x7ddb[1845]]= [];var _0x9494x9=!0,_0x9494xa;for(_0x9494xa in _0x9494x5){if(null!= _0x9494x5[_0x9494xa]){_0x9494x9= !1;break}};for(;!_0x9494x9;){for(var _0x9494x12=this[_0x7ddb[1918]](_0x9494x2,_0x9494x5),_0x9494x9=0;_0x9494x9< _0x9494x12[_0x7ddb[67]];_0x9494x9++){var _0x9494x13=[];_0x9494x3[_0x7ddb[207]](_0x9494x13);this[_0x7ddb[1706]](_0x9494x12[_0x9494x9],!0,null,_0x9494x4,_0x9494x13,_0x9494x3,_0x9494x5)};for(_0x9494x9= 0;_0x9494x9< _0x9494x12[_0x7ddb[67]];_0x9494x9++){this[_0x7ddb[1845]][_0x7ddb[207]](_0x9494x12[_0x9494x9])};_0x9494x9= !0;for(_0x9494xa in _0x9494x5){if(null!= _0x9494x5[_0x9494xa]){_0x9494x9= !1;break}}}}else {for(_0x9494x9= 0;_0x9494x9< roots[_0x7ddb[67]];_0x9494x9++){_0x9494x13= [],_0x9494x3[_0x7ddb[207]](_0x9494x13),traverse(roots[_0x7ddb[203]](_0x9494x9),!0,null,_0x9494x4,_0x9494x13,_0x9494x3,null)}};for(_0x9494x9= _0x9494x4= 0;_0x9494x9< _0x9494x3[_0x7ddb[67]];_0x9494x9++){_0x9494x13= _0x9494x3[_0x9494x9];_0x9494x5= [];for(_0x9494xa in _0x9494x13){_0x9494x5[_0x7ddb[207]](_0x9494x13[_0x9494xa])};this[_0x7ddb[251]]= new mxGraphHierarchyModel(this,_0x9494x5,this[_0x7ddb[1845]],_0x9494x2,this[_0x7ddb[1844]]);this[_0x7ddb[1922]](_0x9494x2);this[_0x7ddb[1923]]();this[_0x7ddb[1924]](_0x9494x2);_0x9494x4= this[_0x7ddb[1925]](_0x9494x4,_0x9494x2)}};mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[1921]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[251]];_0x9494x4[_0x7ddb[1193]](_0x9494x2)&& (_0x9494x2!= this[_0x7ddb[1101]]&& this[_0x7ddb[1179]][_0x7ddb[1714]](_0x9494x2))&& (_0x9494x3[mxCellPath[_0x7ddb[385]](_0x9494x2)]= _0x9494x2);if(this[_0x7ddb[1914]]|| _0x9494x2== this[_0x7ddb[1101]]&& this[_0x7ddb[1179]][_0x7ddb[1714]](_0x9494x2)){for(var _0x9494x5=_0x9494x4[_0x7ddb[262]](_0x9494x2),_0x9494x9=0;_0x9494x9< _0x9494x5;_0x9494x9++){var _0x9494xa=_0x9494x4[_0x7ddb[263]](_0x9494x2,_0x9494x9);this[_0x7ddb[1908]](_0x9494xa)|| this[_0x7ddb[1921]](_0x9494xa,_0x9494x3)}}};mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[1908]]= function(_0x9494x2){return _0x9494x2[_0x7ddb[256]][_0x7ddb[1500]]?!0:!1};mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[1781]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x4= null!= _0x9494x4?_0x9494x4:!1;for(var _0x9494x5=this[_0x7ddb[264]](_0x9494x2),_0x9494x9=[],_0x9494xa=0;_0x9494xa< _0x9494x5[_0x7ddb[67]];_0x9494xa++){var _0x9494x12=this[_0x7ddb[1710]](_0x9494x5[_0x9494xa],!0),_0x9494x13=this[_0x7ddb[1710]](_0x9494x5[_0x9494xa],!1);(_0x9494x12== _0x9494x2&& _0x9494x13== _0x9494x3|| !_0x9494x4&& _0x9494x12== _0x9494x3 && _0x9494x13== _0x9494x2)&& _0x9494x9[_0x7ddb[207]](_0x9494x5[_0x9494xa])};return _0x9494x9};mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[1706]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12){if(null!= _0x9494x2&& null!= _0x9494x5){var _0x9494x13=mxCellPath[_0x7ddb[385]](_0x9494x2);if(null== _0x9494x5[_0x9494x13]&& (null== _0x9494x12|| null!= _0x9494x12[_0x9494x13])){null== _0x9494x9[_0x9494x13]&& (_0x9494x9[_0x9494x13]= _0x9494x2);null== _0x9494x5[_0x9494x13]&& (_0x9494x5[_0x9494x13]= _0x9494x2);delete _0x9494x12[_0x9494x13];var _0x9494x14=this[_0x7ddb[264]](_0x9494x2);for(_0x9494x4= 0;_0x9494x4< _0x9494x14[_0x7ddb[67]];_0x9494x4++){if(_0x9494x13= this[_0x7ddb[1710]](_0x9494x14[_0x9494x4],!0)== _0x9494x2,!_0x9494x3|| _0x9494x13){_0x9494x13= this[_0x7ddb[1710]](_0x9494x14[_0x9494x4],!_0x9494x13),_0x9494x9= this[_0x7ddb[1706]](_0x9494x13,_0x9494x3,_0x9494x14[_0x9494x4],_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12)}}}else {if(null== _0x9494x9[_0x9494x13]){for(_0x9494x4= 0;_0x9494x4< _0x9494xa[_0x7ddb[67]];_0x9494x4++){if(_0x9494x2= _0x9494xa[_0x9494x4],null!= _0x9494x2[_0x9494x13]){for(_0x9494x14 in _0x9494x9){_0x9494x2[_0x9494x14]= _0x9494x9[_0x9494x14]};_0x9494xa[_0x7ddb[1242]]();return _0x9494x2}}}}};return _0x9494x9};mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[1922]]= function(_0x9494x2){( new mxMinimumCycleRemover(this))[_0x7ddb[350]](_0x9494x2)};mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[1923]]= function(){this[_0x7ddb[251]][_0x7ddb[1852]]();this[_0x7ddb[251]][_0x7ddb[1854]]()};mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[1924]]= function(_0x9494x2){( new mxMedianHybridCrossingReduction(this))[_0x7ddb[350]](_0x9494x2)};mxHierarchicalLayout[_0x7ddb[202]][_0x7ddb[1925]]= function(_0x9494x2,_0x9494x3){var _0x9494x4= new mxCoordinateAssignment(this,this[_0x7ddb[1868]],this[_0x7ddb[1869]],this[_0x7ddb[1870]],_0x9494x2,this[_0x7ddb[1872]]);_0x9494x4[_0x7ddb[1882]]= this[_0x7ddb[1882]];_0x9494x4[_0x7ddb[350]](_0x9494x3);return _0x9494x4[_0x7ddb[1874]]+ this[_0x7ddb[1913]]};function mxGraphModel(_0x9494x2){this[_0x7ddb[1926]]= this[_0x7ddb[1096]]();null!= _0x9494x2?this[_0x7ddb[1927]](_0x9494x2):this[_0x7ddb[200]]()}mxGraphModel[_0x7ddb[202]]= new mxEventSource;mxGraphModel[_0x7ddb[202]][_0x7ddb[196]]= mxGraphModel;mxGraphModel[_0x7ddb[202]][_0x7ddb[813]]= null;mxGraphModel[_0x7ddb[202]][_0x7ddb[895]]= null;mxGraphModel[_0x7ddb[202]][_0x7ddb[1928]]= !0;mxGraphModel[_0x7ddb[202]][_0x7ddb[1929]]= !0;mxGraphModel[_0x7ddb[202]][_0x7ddb[1089]]= _0x7ddb[110];mxGraphModel[_0x7ddb[202]][_0x7ddb[1930]]= _0x7ddb[110];mxGraphModel[_0x7ddb[202]][_0x7ddb[1931]]= 0;mxGraphModel[_0x7ddb[202]][_0x7ddb[1926]]= null;mxGraphModel[_0x7ddb[202]][_0x7ddb[1932]]= 0;mxGraphModel[_0x7ddb[202]][_0x7ddb[1933]]= !1;mxGraphModel[_0x7ddb[202]][_0x7ddb[200]]= function(){this[_0x7ddb[1927]](this[_0x7ddb[1934]]())};mxGraphModel[_0x7ddb[202]][_0x7ddb[1935]]= function(){return this[_0x7ddb[1929]]};mxGraphModel[_0x7ddb[202]][_0x7ddb[1936]]= function(_0x9494x2){this[_0x7ddb[1929]]= _0x9494x2};mxGraphModel[_0x7ddb[202]][_0x7ddb[1934]]= function(){var _0x9494x2= new mxCell;_0x9494x2[_0x7ddb[1937]]( new mxCell);return _0x9494x2};mxGraphModel[_0x7ddb[202]][_0x7ddb[736]]= function(_0x9494x2){return null!= this[_0x7ddb[895]]?this[_0x7ddb[895]][_0x9494x2]:null};mxGraphModel[_0x7ddb[202]][_0x7ddb[1938]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=null;if(null!= _0x9494x2){for(var _0x9494x4=[],_0x9494x5=0;_0x9494x5< _0x9494x2[_0x7ddb[67]];_0x9494x5++){_0x9494x3(_0x9494x2[_0x9494x5])&& _0x9494x4[_0x7ddb[207]](_0x9494x2[_0x9494x5])}};return _0x9494x4};mxGraphModel[_0x7ddb[202]][_0x7ddb[1939]]= function(_0x9494x2){return this[_0x7ddb[1921]](null,_0x9494x2)};mxGraphModel[_0x7ddb[202]][_0x7ddb[1921]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=[];_0x9494x3= _0x9494x3|| this[_0x7ddb[501]]();(null== _0x9494x2|| _0x9494x2(_0x9494x3))&& _0x9494x4[_0x7ddb[207]](_0x9494x3);for(var _0x9494x5=this[_0x7ddb[262]](_0x9494x3),_0x9494x9=0;_0x9494x9< _0x9494x5;_0x9494x9++){var _0x9494xa=this[_0x7ddb[263]](_0x9494x3,_0x9494x9),_0x9494x4=_0x9494x4[_0x7ddb[1919]](this[_0x7ddb[1921]](_0x9494x2,_0x9494xa))};return _0x9494x4};mxGraphModel[_0x7ddb[202]][_0x7ddb[501]]= function(_0x9494x2){var _0x9494x3=_0x9494x2|| this[_0x7ddb[813]];if(null!= _0x9494x2){for(;null!= _0x9494x2;){_0x9494x3= _0x9494x2,_0x9494x2= this[_0x7ddb[1197]](_0x9494x2)}};return _0x9494x3};mxGraphModel[_0x7ddb[202]][_0x7ddb[1927]]= function(_0x9494x2){this[_0x7ddb[350]]( new mxRootChange(this,_0x9494x2));return _0x9494x2};mxGraphModel[_0x7ddb[202]][_0x7ddb[1940]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[813]];this[_0x7ddb[813]]= _0x9494x2;this[_0x7ddb[1931]]= 0;this[_0x7ddb[895]]= null;this[_0x7ddb[1941]](_0x9494x2);return _0x9494x3};mxGraphModel[_0x7ddb[202]][_0x7ddb[1942]]= function(_0x9494x2){return null!= _0x9494x2&& this[_0x7ddb[813]]== _0x9494x2};mxGraphModel[_0x7ddb[202]][_0x7ddb[1740]]= function(_0x9494x2){return this[_0x7ddb[1942]](this[_0x7ddb[1197]](_0x9494x2))};mxGraphModel[_0x7ddb[202]][_0x7ddb[1720]]= function(_0x9494x2,_0x9494x3){for(;null!= _0x9494x3&& _0x9494x3!= _0x9494x2;){_0x9494x3= this[_0x7ddb[1197]](_0x9494x3)};return _0x9494x3== _0x9494x2};mxGraphModel[_0x7ddb[202]][_0x7ddb[442]]= function(_0x9494x2){return this[_0x7ddb[1720]](this[_0x7ddb[813]],_0x9494x2)};mxGraphModel[_0x7ddb[202]][_0x7ddb[1197]]= function(_0x9494x2){return null!= _0x9494x2?_0x9494x2[_0x7ddb[1197]]():null};mxGraphModel[_0x7ddb[202]][_0x7ddb[99]]= function(_0x9494x2,_0x9494x3,_0x9494x4){if(_0x9494x3!= _0x9494x2&& null!= _0x9494x2&& null!= _0x9494x3){null== _0x9494x4&& (_0x9494x4= this[_0x7ddb[262]](_0x9494x2));var _0x9494x5=_0x9494x2!= this[_0x7ddb[1197]](_0x9494x3);this[_0x7ddb[350]]( new mxChildChange(this,_0x9494x2,_0x9494x3,_0x9494x4));this[_0x7ddb[1928]]&& _0x9494x5&& this[_0x7ddb[1943]](_0x9494x3)};return _0x9494x3};mxGraphModel[_0x7ddb[202]][_0x7ddb[1941]]= function(_0x9494x2){if(null!= _0x9494x2){null== _0x9494x2[_0x7ddb[1103]]()&& this[_0x7ddb[1929]]&& _0x9494x2[_0x7ddb[1945]](this[_0x7ddb[1944]](_0x9494x2));if(null!= _0x9494x2[_0x7ddb[1103]]()){var _0x9494x3=this[_0x7ddb[736]](_0x9494x2[_0x7ddb[1103]]());if(_0x9494x3!= _0x9494x2){for(;null!= _0x9494x3;){_0x9494x2[_0x7ddb[1945]](this[_0x7ddb[1944]](_0x9494x2)),_0x9494x3= this[_0x7ddb[736]](_0x9494x2[_0x7ddb[1103]]())};null== this[_0x7ddb[895]]&& (this[_0x7ddb[895]]= {});this[_0x7ddb[895]][_0x9494x2[_0x7ddb[1103]]()]= _0x9494x2}};mxUtils[_0x7ddb[1946]](_0x9494x2[_0x7ddb[1103]]())&& (this[_0x7ddb[1931]]= Math[_0x7ddb[160]](this[_0x7ddb[1931]],_0x9494x2[_0x7ddb[1103]]()));for(var _0x9494x3=this[_0x7ddb[262]](_0x9494x2),_0x9494x4=0;_0x9494x4< _0x9494x3;_0x9494x4++){this[_0x7ddb[1941]](this[_0x7ddb[263]](_0x9494x2,_0x9494x4))}}};mxGraphModel[_0x7ddb[202]][_0x7ddb[1944]]= function(_0x9494x2){_0x9494x2= this[_0x7ddb[1931]];this[_0x7ddb[1931]]++;return this[_0x7ddb[1089]]+ _0x9494x2+ this[_0x7ddb[1930]]};mxGraphModel[_0x7ddb[202]][_0x7ddb[1943]]= function(_0x9494x2,_0x9494x3){_0x9494x3= _0x9494x3|| this[_0x7ddb[501]](_0x9494x2);for(var _0x9494x4=this[_0x7ddb[262]](_0x9494x2),_0x9494x5=0;_0x9494x5< _0x9494x4;_0x9494x5++){var _0x9494x9=this[_0x7ddb[263]](_0x9494x2,_0x9494x5);this[_0x7ddb[1943]](_0x9494x9,_0x9494x3)};_0x9494x9= this[_0x7ddb[1707]](_0x9494x2);_0x9494x4= [];for(_0x9494x5= 0;_0x9494x5< _0x9494x9;_0x9494x5++){_0x9494x4[_0x7ddb[207]](this[_0x7ddb[1708]](_0x9494x2,_0x9494x5))};for(_0x9494x5= 0;_0x9494x5< _0x9494x4[_0x7ddb[67]];_0x9494x5++){_0x9494x9= _0x9494x4[_0x9494x5],this[_0x7ddb[1720]](_0x9494x3,_0x9494x9)&& this[_0x7ddb[1947]](_0x9494x9,_0x9494x3)}};mxGraphModel[_0x7ddb[202]][_0x7ddb[1947]]= function(_0x9494x2,_0x9494x3){for(var _0x9494x4=this[_0x7ddb[1709]](_0x9494x2,!0),_0x9494x5=this[_0x7ddb[1709]](_0x9494x2,!1),_0x9494x9=null;null!= _0x9494x4&& !this[_0x7ddb[250]](_0x9494x4)&& null!= _0x9494x4[_0x7ddb[256]]&& _0x9494x4[_0x7ddb[256]][_0x7ddb[1500]];){_0x9494x4= this[_0x7ddb[1197]](_0x9494x4)};for(;null!= _0x9494x5&& !this[_0x7ddb[250]](_0x9494x5)&& null!= _0x9494x5[_0x7ddb[256]]&& _0x9494x5[_0x7ddb[256]][_0x7ddb[1500]];){_0x9494x5= this[_0x7ddb[1197]](_0x9494x5)};if(this[_0x7ddb[1720]](_0x9494x3,_0x9494x4)&& this[_0x7ddb[1720]](_0x9494x3,_0x9494x5)&& (_0x9494x9= _0x9494x4== _0x9494x5?this[_0x7ddb[1197]](_0x9494x4):this[_0x7ddb[1948]](_0x9494x4,_0x9494x5),null!= _0x9494x9&& (this[_0x7ddb[1197]](_0x9494x9)!= this[_0x7ddb[813]]|| this[_0x7ddb[1720]](_0x9494x9,_0x9494x2))&& this[_0x7ddb[1197]](_0x9494x2)!= _0x9494x9)){_0x9494x4= this[_0x7ddb[1721]](_0x9494x2);if(null!= _0x9494x4){var _0x9494xa=this[_0x7ddb[1949]](this[_0x7ddb[1197]](_0x9494x2)),_0x9494x12=this[_0x7ddb[1949]](_0x9494x9),_0x9494x5=_0x9494x12[_0x7ddb[235]]- _0x9494xa[_0x7ddb[235]],_0x9494xa=_0x9494x12[_0x7ddb[236]]- _0x9494xa[_0x7ddb[236]],_0x9494x4=_0x9494x4[_0x7ddb[238]]();_0x9494x4[_0x7ddb[513]](-_0x9494x5,-_0x9494xa);this[_0x7ddb[1724]](_0x9494x2,_0x9494x4)};this[_0x7ddb[99]](_0x9494x9,_0x9494x2,this[_0x7ddb[262]](_0x9494x9))}};mxGraphModel[_0x7ddb[202]][_0x7ddb[1949]]= function(_0x9494x2){var _0x9494x3=null;null!= _0x9494x2?(_0x9494x3= this[_0x7ddb[1949]](this[_0x7ddb[1197]](_0x9494x2)),this[_0x7ddb[250]](_0x9494x2)|| (_0x9494x2= this[_0x7ddb[1721]](_0x9494x2),null!= _0x9494x2&& (_0x9494x3[_0x7ddb[235]]+= _0x9494x2[_0x7ddb[235]],_0x9494x3[_0x7ddb[236]]+= _0x9494x2[_0x7ddb[236]]))):_0x9494x3= new mxPoint;return _0x9494x3};mxGraphModel[_0x7ddb[202]][_0x7ddb[1948]]= function(_0x9494x2,_0x9494x3){if(null!= _0x9494x2&& null!= _0x9494x3){var _0x9494x4=mxCellPath[_0x7ddb[385]](_0x9494x3);if(null!= _0x9494x4&& 0< _0x9494x4[_0x7ddb[67]]){var _0x9494x5=_0x9494x2,_0x9494x9=mxCellPath[_0x7ddb[385]](_0x9494x5);if(_0x9494x4[_0x7ddb[67]]< _0x9494x9[_0x7ddb[67]]){var _0x9494x5=_0x9494x3,_0x9494xa=_0x9494x9,_0x9494x9=_0x9494x4,_0x9494x4=_0x9494xa};for(;null!= _0x9494x5;){_0x9494xa= this[_0x7ddb[1197]](_0x9494x5);if(0== _0x9494x4[_0x7ddb[2]](_0x9494x9+ mxCellPath[_0x7ddb[1950]])&& null!= _0x9494xa){return _0x9494x5};_0x9494x9= mxCellPath[_0x7ddb[1951]](_0x9494x9);_0x9494x5= _0x9494xa}}};return null};mxGraphModel[_0x7ddb[202]][_0x7ddb[205]]= function(_0x9494x2){_0x9494x2== this[_0x7ddb[813]]?this[_0x7ddb[1927]](null):null!= this[_0x7ddb[1197]](_0x9494x2)&& this[_0x7ddb[350]]( new mxChildChange(this,null,_0x9494x2));return _0x9494x2};mxGraphModel[_0x7ddb[202]][_0x7ddb[1102]]= function(_0x9494x2){if(null!= _0x9494x2&& null!= this[_0x7ddb[895]]){for(var _0x9494x3=this[_0x7ddb[262]](_0x9494x2)- 1;0<= _0x9494x3;_0x9494x3--){this[_0x7ddb[1102]](this[_0x7ddb[263]](_0x9494x2,_0x9494x3))};null!= this[_0x7ddb[895]]&& null!= _0x9494x2[_0x7ddb[1103]]()&& delete this[_0x7ddb[895]][_0x9494x2[_0x7ddb[1103]]()]}};mxGraphModel[_0x7ddb[202]][_0x7ddb[1952]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=this[_0x7ddb[1197]](_0x9494x2);null!= _0x9494x3?(_0x9494x3!= _0x9494x5|| _0x9494x5[_0x7ddb[1738]](_0x9494x2)!= _0x9494x4)&& _0x9494x3[_0x7ddb[1937]](_0x9494x2,_0x9494x4):null!= _0x9494x5&& (_0x9494x4= _0x9494x5[_0x7ddb[1738]](_0x9494x2),_0x9494x5[_0x7ddb[205]](_0x9494x4));!this[_0x7ddb[442]](_0x9494x5)&& null!= _0x9494x3?this[_0x7ddb[1941]](_0x9494x2):null== _0x9494x3&& this[_0x7ddb[1102]](_0x9494x2);return _0x9494x5};mxGraphModel[_0x7ddb[202]][_0x7ddb[262]]= function(_0x9494x2){return null!= _0x9494x2?_0x9494x2[_0x7ddb[262]]():0};mxGraphModel[_0x7ddb[202]][_0x7ddb[263]]= function(_0x9494x2,_0x9494x3){return null!= _0x9494x2?_0x9494x2[_0x7ddb[263]](_0x9494x3):null};mxGraphModel[_0x7ddb[202]][_0x7ddb[1953]]= function(_0x9494x2){return null!= _0x9494x2?_0x9494x2[_0x7ddb[1954]]:null};mxGraphModel[_0x7ddb[202]][_0x7ddb[1728]]= function(_0x9494x2){return this[_0x7ddb[1955]](_0x9494x2,!0,!1)};mxGraphModel[_0x7ddb[202]][_0x7ddb[1956]]= function(_0x9494x2){return this[_0x7ddb[1955]](_0x9494x2,!1,!0)};mxGraphModel[_0x7ddb[202]][_0x7ddb[1955]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x3= null!= _0x9494x3?_0x9494x3:!1;_0x9494x4= null!= _0x9494x4?_0x9494x4:!1;for(var _0x9494x5=this[_0x7ddb[262]](_0x9494x2),_0x9494x9=[],_0x9494xa=0;_0x9494xa< _0x9494x5;_0x9494xa++){var _0x9494x12=this[_0x7ddb[263]](_0x9494x2,_0x9494xa);(!_0x9494x4&& !_0x9494x3 || _0x9494x4&& this[_0x7ddb[250]](_0x9494x12) || _0x9494x3&& this[_0x7ddb[1193]](_0x9494x12)) && _0x9494x9[_0x7ddb[207]](_0x9494x12)};return _0x9494x9};mxGraphModel[_0x7ddb[202]][_0x7ddb[1709]]= function(_0x9494x2,_0x9494x3){return null!= _0x9494x2?_0x9494x2[_0x7ddb[1709]](_0x9494x3):null};mxGraphModel[_0x7ddb[202]][_0x7ddb[1957]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=_0x9494x3!= this[_0x7ddb[1709]](_0x9494x2,_0x9494x4);this[_0x7ddb[350]]( new mxTerminalChange(this,_0x9494x2,_0x9494x3,_0x9494x4));this[_0x7ddb[1928]]&& _0x9494x5&& this[_0x7ddb[1947]](_0x9494x2,this[_0x7ddb[501]]());return _0x9494x3};mxGraphModel[_0x7ddb[202]][_0x7ddb[1958]]= function(_0x9494x2,_0x9494x3,_0x9494x4){this[_0x7ddb[473]]();try{this[_0x7ddb[1957]](_0x9494x2,_0x9494x3,!0),this[_0x7ddb[1957]](_0x9494x2,_0x9494x4,!1)}finally{this[_0x7ddb[476]]()}};mxGraphModel[_0x7ddb[202]][_0x7ddb[1959]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=this[_0x7ddb[1709]](_0x9494x2,_0x9494x4);null!= _0x9494x3?_0x9494x3[_0x7ddb[1960]](_0x9494x2,_0x9494x4):null!= _0x9494x5&& _0x9494x5[_0x7ddb[1961]](_0x9494x2,_0x9494x4);return _0x9494x5};mxGraphModel[_0x7ddb[202]][_0x7ddb[1707]]= function(_0x9494x2){return null!= _0x9494x2?_0x9494x2[_0x7ddb[1707]]():0};mxGraphModel[_0x7ddb[202]][_0x7ddb[1708]]= function(_0x9494x2,_0x9494x3){return null!= _0x9494x2?_0x9494x2[_0x7ddb[1708]](_0x9494x3):null};mxGraphModel[_0x7ddb[202]][_0x7ddb[1962]]= function(_0x9494x2,_0x9494x3,_0x9494x4){for(var _0x9494x5=0,_0x9494x9=this[_0x7ddb[1707]](_0x9494x2),_0x9494xa=0;_0x9494xa< _0x9494x9;_0x9494xa++){var _0x9494x12=this[_0x7ddb[1708]](_0x9494x2,_0x9494xa);_0x9494x12!= _0x9494x4&& this[_0x7ddb[1709]](_0x9494x12,_0x9494x3)== _0x9494x2&& _0x9494x5++};return _0x9494x5};mxGraphModel[_0x7ddb[202]][_0x7ddb[1756]]= function(_0x9494x2){return this[_0x7ddb[264]](_0x9494x2,!0,!0,!1)};mxGraphModel[_0x7ddb[202]][_0x7ddb[1867]]= function(_0x9494x2){return this[_0x7ddb[264]](_0x9494x2,!0,!1,!1)};mxGraphModel[_0x7ddb[202]][_0x7ddb[1963]]= function(_0x9494x2){return this[_0x7ddb[264]](_0x9494x2,!1,!0,!1)};mxGraphModel[_0x7ddb[202]][_0x7ddb[264]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){_0x9494x3= null!= _0x9494x3?_0x9494x3:!0;_0x9494x4= null!= _0x9494x4?_0x9494x4:!0;_0x9494x5= null!= _0x9494x5?_0x9494x5:!0;for(var _0x9494x9=this[_0x7ddb[1707]](_0x9494x2),_0x9494xa=[],_0x9494x12=0;_0x9494x12< _0x9494x9;_0x9494x12++){var _0x9494x13=this[_0x7ddb[1708]](_0x9494x2,_0x9494x12),_0x9494x14=this[_0x7ddb[1709]](_0x9494x13,!0),_0x9494x15=this[_0x7ddb[1709]](_0x9494x13,!1);(_0x9494x5&& _0x9494x14== _0x9494x15|| _0x9494x14!= _0x9494x15&& (_0x9494x3&& _0x9494x15== _0x9494x2|| _0x9494x4&& _0x9494x14== _0x9494x2))&& _0x9494xa[_0x7ddb[207]](_0x9494x13)};return _0x9494xa};mxGraphModel[_0x7ddb[202]][_0x7ddb[1781]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x4= null!= _0x9494x4?_0x9494x4:!1;var _0x9494x5=this[_0x7ddb[1707]](_0x9494x2),_0x9494x9=this[_0x7ddb[1707]](_0x9494x3),_0x9494xa=_0x9494x2,_0x9494x12=_0x9494x5;_0x9494x9< _0x9494x5&& (_0x9494x12= _0x9494x9,_0x9494xa= _0x9494x3);_0x9494x5= [];for(_0x9494x9= 0;_0x9494x9< _0x9494x12;_0x9494x9++){var _0x9494x13=this[_0x7ddb[1708]](_0x9494xa,_0x9494x9),_0x9494x14=this[_0x7ddb[1709]](_0x9494x13,!0),_0x9494x15=this[_0x7ddb[1709]](_0x9494x13,!1),_0x9494x16=_0x9494x15== _0x9494x2&& _0x9494x14== _0x9494x3;(_0x9494x14== _0x9494x2&& _0x9494x15== _0x9494x3|| !_0x9494x4&& _0x9494x16)&& _0x9494x5[_0x7ddb[207]](_0x9494x13)};return _0x9494x5};mxGraphModel[_0x7ddb[202]][_0x7ddb[1808]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){_0x9494x4= null!= _0x9494x4?_0x9494x4:!0;_0x9494x5= null!= _0x9494x5?_0x9494x5:!0;var _0x9494x9=[];if(null!= _0x9494x2){for(var _0x9494xa=0;_0x9494xa< _0x9494x2[_0x7ddb[67]];_0x9494xa++){var _0x9494x12=this[_0x7ddb[1709]](_0x9494x2[_0x9494xa],!0),_0x9494x13=this[_0x7ddb[1709]](_0x9494x2[_0x9494xa],!1);_0x9494x12== _0x9494x3&& null!= _0x9494x13&& _0x9494x13!= _0x9494x3&& _0x9494x5?_0x9494x9[_0x7ddb[207]](_0x9494x13):_0x9494x13== _0x9494x3&& (null!= _0x9494x12&& _0x9494x12!= _0x9494x3&& _0x9494x4)&& _0x9494x9[_0x7ddb[207]](_0x9494x12)}};return _0x9494x9};mxGraphModel[_0x7ddb[202]][_0x7ddb[1964]]= function(_0x9494x2){for(var _0x9494x3=[],_0x9494x4=0;_0x9494x4< _0x9494x2[_0x7ddb[67]];_0x9494x4++){for(var _0x9494x5=_0x9494x2[_0x9494x4],_0x9494x9=!0,_0x9494xa=this[_0x7ddb[1197]](_0x9494x5);null!= _0x9494xa;){if(0<= mxUtils[_0x7ddb[2]](_0x9494x2,_0x9494xa)){_0x9494x9= !1;break};_0x9494xa= this[_0x7ddb[1197]](_0x9494xa)};_0x9494x9&& _0x9494x3[_0x7ddb[207]](_0x9494x5)};return _0x9494x3};mxGraphModel[_0x7ddb[202]][_0x7ddb[1193]]= function(_0x9494x2){return null!= _0x9494x2?_0x9494x2[_0x7ddb[1193]]():!1};mxGraphModel[_0x7ddb[202]][_0x7ddb[250]]= function(_0x9494x2){return null!= _0x9494x2?_0x9494x2[_0x7ddb[250]]():!1};mxGraphModel[_0x7ddb[202]][_0x7ddb[1965]]= function(_0x9494x2){return null!= _0x9494x2?_0x9494x2[_0x7ddb[1965]]():!1};mxGraphModel[_0x7ddb[202]][_0x7ddb[433]]= function(_0x9494x2){return null!= _0x9494x2?_0x9494x2[_0x7ddb[433]]():null};mxGraphModel[_0x7ddb[202]][_0x7ddb[1966]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[350]]( new mxValueChange(this,_0x9494x2,_0x9494x3));return _0x9494x3};mxGraphModel[_0x7ddb[202]][_0x7ddb[1967]]= function(_0x9494x2,_0x9494x3){return _0x9494x2[_0x7ddb[1968]](_0x9494x3)};mxGraphModel[_0x7ddb[202]][_0x7ddb[1721]]= function(_0x9494x2,_0x9494x3){return null!= _0x9494x2?_0x9494x2[_0x7ddb[1721]]():null};mxGraphModel[_0x7ddb[202]][_0x7ddb[1724]]= function(_0x9494x2,_0x9494x3){_0x9494x3!= this[_0x7ddb[1721]](_0x9494x2)&& this[_0x7ddb[350]]( new mxGeometryChange(this,_0x9494x2,_0x9494x3));return _0x9494x3};mxGraphModel[_0x7ddb[202]][_0x7ddb[1969]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[1721]](_0x9494x2);_0x9494x2[_0x7ddb[1724]](_0x9494x3);return _0x9494x4};mxGraphModel[_0x7ddb[202]][_0x7ddb[474]]= function(_0x9494x2){return null!= _0x9494x2?_0x9494x2[_0x7ddb[474]]():null};mxGraphModel[_0x7ddb[202]][_0x7ddb[475]]= function(_0x9494x2,_0x9494x3){_0x9494x3!= this[_0x7ddb[474]](_0x9494x2)&& this[_0x7ddb[350]]( new mxStyleChange(this,_0x9494x2,_0x9494x3));return _0x9494x3};mxGraphModel[_0x7ddb[202]][_0x7ddb[1970]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[474]](_0x9494x2);_0x9494x2[_0x7ddb[475]](_0x9494x3);return _0x9494x4};mxGraphModel[_0x7ddb[202]][_0x7ddb[1971]]= function(_0x9494x2){return null!= _0x9494x2?_0x9494x2[_0x7ddb[1971]]():!1};mxGraphModel[_0x7ddb[202]][_0x7ddb[1972]]= function(_0x9494x2,_0x9494x3){_0x9494x3!= this[_0x7ddb[1971]](_0x9494x2)&& this[_0x7ddb[350]]( new mxCollapseChange(this,_0x9494x2,_0x9494x3));return _0x9494x3};mxGraphModel[_0x7ddb[202]][_0x7ddb[1973]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[1971]](_0x9494x2);_0x9494x2[_0x7ddb[1972]](_0x9494x3);return _0x9494x4};mxGraphModel[_0x7ddb[202]][_0x7ddb[174]]= function(_0x9494x2){return null!= _0x9494x2?_0x9494x2[_0x7ddb[174]]():!1};mxGraphModel[_0x7ddb[202]][_0x7ddb[175]]= function(_0x9494x2,_0x9494x3){_0x9494x3!= this[_0x7ddb[174]](_0x9494x2)&& this[_0x7ddb[350]]( new mxVisibleChange(this,_0x9494x2,_0x9494x3));return _0x9494x3};mxGraphModel[_0x7ddb[202]][_0x7ddb[1974]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[174]](_0x9494x2);_0x9494x2[_0x7ddb[175]](_0x9494x3);return _0x9494x4};mxGraphModel[_0x7ddb[202]][_0x7ddb[350]]= function(_0x9494x2){_0x9494x2[_0x7ddb[350]]();this[_0x7ddb[473]]();this[_0x7ddb[1926]][_0x7ddb[99]](_0x9494x2);this[_0x7ddb[746]]( new mxEventObject(mxEvent.EXECUTE,_0x7ddb[826],_0x9494x2));this[_0x7ddb[746]]( new mxEventObject(mxEvent.EXECUTED,_0x7ddb[826],_0x9494x2));this[_0x7ddb[476]]()};mxGraphModel[_0x7ddb[202]][_0x7ddb[473]]= function(){this[_0x7ddb[1932]]++;this[_0x7ddb[746]]( new mxEventObject(mxEvent.BEGIN_UPDATE));1== this[_0x7ddb[1932]]&& this[_0x7ddb[746]]( new mxEventObject(mxEvent.START_EDIT))};mxGraphModel[_0x7ddb[202]][_0x7ddb[476]]= function(){this[_0x7ddb[1932]]--;0== this[_0x7ddb[1932]]&& this[_0x7ddb[746]]( new mxEventObject(mxEvent.END_EDIT));if(!this[_0x7ddb[1933]]){this[_0x7ddb[1933]]= 0== this[_0x7ddb[1932]];this[_0x7ddb[746]]( new mxEventObject(mxEvent.END_UPDATE,_0x7ddb[1061],this[_0x7ddb[1926]]));try{if(this[_0x7ddb[1933]]&& !this[_0x7ddb[1926]][_0x7ddb[1107]]()){this[_0x7ddb[746]]( new mxEventObject(mxEvent.BEFORE_UNDO,_0x7ddb[1061],this[_0x7ddb[1926]]));var _0x9494x2=this[_0x7ddb[1926]];this[_0x7ddb[1926]]= this[_0x7ddb[1096]]();_0x9494x2[_0x7ddb[827]]();this[_0x7ddb[746]]( new mxEventObject(mxEvent.UNDO,_0x7ddb[1061],_0x9494x2))}}finally{this[_0x7ddb[1933]]= !1}}};mxGraphModel[_0x7ddb[202]][_0x7ddb[1096]]= function(){var _0x9494x2= new mxUndoableEdit(this,!0);_0x9494x2[_0x7ddb[827]]= function(){_0x9494x2[_0x7ddb[1097]][_0x7ddb[746]]( new mxEventObject(mxEvent.CHANGE,_0x7ddb[1061],_0x9494x2,_0x7ddb[1065],_0x9494x2[_0x7ddb[1065]]));_0x9494x2[_0x7ddb[1097]][_0x7ddb[746]]( new mxEventObject(mxEvent.NOTIFY,_0x7ddb[1061],_0x9494x2,_0x7ddb[1065],_0x9494x2[_0x7ddb[1065]]))};return _0x9494x2};mxGraphModel[_0x7ddb[202]][_0x7ddb[1975]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x4= null!= _0x9494x4?_0x9494x4:!0;this[_0x7ddb[473]]();try{var _0x9494x5={};this[_0x7ddb[1976]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5);for(var _0x9494x9 in _0x9494x5){var _0x9494xa=_0x9494x5[_0x9494x9],_0x9494x12=this[_0x7ddb[1709]](_0x9494xa,!0);null!= _0x9494x12&& (_0x9494x12= _0x9494x5[mxCellPath[_0x7ddb[385]](_0x9494x12)],this[_0x7ddb[1957]](_0x9494xa,_0x9494x12,!0));_0x9494x12= this[_0x7ddb[1709]](_0x9494xa,!1);null!= _0x9494x12&& (_0x9494x12= _0x9494x5[mxCellPath[_0x7ddb[385]](_0x9494x12)],this[_0x7ddb[1957]](_0x9494xa,_0x9494x12,!1))}}finally{this[_0x7ddb[476]]()}};mxGraphModel[_0x7ddb[202]][_0x7ddb[1976]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){this[_0x7ddb[473]]();try{for(var _0x9494x9=_0x9494x2[_0x7ddb[262]](),_0x9494xa=0;_0x9494xa< _0x9494x9;_0x9494xa++){var _0x9494x12=_0x9494x2[_0x7ddb[263]](_0x9494xa);if(_0x7ddb[279]== typeof _0x9494x12[_0x7ddb[1103]]){var _0x9494x13=_0x9494x12[_0x7ddb[1103]](),_0x9494x14=null!= _0x9494x13&& (!this[_0x7ddb[250]](_0x9494x12)|| !_0x9494x4)?this[_0x7ddb[736]](_0x9494x13):null;if(null== _0x9494x14){var _0x9494x15=_0x9494x12[_0x7ddb[238]]();_0x9494x15[_0x7ddb[1945]](_0x9494x13);_0x9494x15[_0x7ddb[1957]](_0x9494x12[_0x7ddb[1709]](!0),!0);_0x9494x15[_0x7ddb[1957]](_0x9494x12[_0x7ddb[1709]](!1),!1);_0x9494x14= _0x9494x3[_0x7ddb[1937]](_0x9494x15);this[_0x7ddb[1941]](_0x9494x14)};_0x9494x5[mxCellPath[_0x7ddb[385]](_0x9494x12)]= _0x9494x14;this[_0x7ddb[1976]](_0x9494x12,_0x9494x14,_0x9494x4,_0x9494x5)}}}finally{this[_0x7ddb[476]]()}};mxGraphModel[_0x7ddb[202]][_0x7ddb[1977]]= function(_0x9494x2){var _0x9494x3=[];if(null!= _0x9494x2){for(var _0x9494x4={},_0x9494x5=0;_0x9494x5< _0x9494x2[_0x7ddb[67]];_0x9494x5++){var _0x9494x9=this[_0x7ddb[1197]](_0x9494x2[_0x9494x5]);if(null!= _0x9494x9){var _0x9494xa=mxCellPath[_0x7ddb[385]](_0x9494x9);null== _0x9494x4[_0x9494xa]&& (_0x9494x4[_0x9494xa]= _0x9494x9,_0x9494x3[_0x7ddb[207]](_0x9494x9))}}};return _0x9494x3};mxGraphModel[_0x7ddb[202]][_0x7ddb[1978]]= function(_0x9494x2){return null!= _0x9494x2?this[_0x7ddb[899]]([_0x9494x2],!0)[0]:null};mxGraphModel[_0x7ddb[202]][_0x7ddb[899]]= function(_0x9494x2,_0x9494x3){for(var _0x9494x4={},_0x9494x5=[],_0x9494x9=0;_0x9494x9< _0x9494x2[_0x7ddb[67]];_0x9494x9++){null!= _0x9494x2[_0x9494x9]?_0x9494x5[_0x7ddb[207]](this[_0x7ddb[1979]](_0x9494x2[_0x9494x9],_0x9494x4,_0x9494x3)):_0x9494x5[_0x7ddb[207]](null)};for(_0x9494x9= 0;_0x9494x9< _0x9494x5[_0x7ddb[67]];_0x9494x9++){null!= _0x9494x5[_0x9494x9]&& this[_0x7ddb[1980]](_0x9494x5[_0x9494x9],_0x9494x2[_0x9494x9],_0x9494x4)};return _0x9494x5};mxGraphModel[_0x7ddb[202]][_0x7ddb[1979]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=this[_0x7ddb[1981]](_0x9494x2);_0x9494x3[mxObjectIdentity[_0x7ddb[203]](_0x9494x2)]= _0x9494x5;if(_0x9494x4){_0x9494x4= this[_0x7ddb[262]](_0x9494x2);for(var _0x9494x9=0;_0x9494x9< _0x9494x4;_0x9494x9++){var _0x9494xa=this[_0x7ddb[1979]](this[_0x7ddb[263]](_0x9494x2,_0x9494x9),_0x9494x3,!0);_0x9494x5[_0x7ddb[1937]](_0x9494xa)}};return _0x9494x5};mxGraphModel[_0x7ddb[202]][_0x7ddb[1981]]= function(_0x9494x2){return _0x9494x2[_0x7ddb[238]]()};mxGraphModel[_0x7ddb[202]][_0x7ddb[1980]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=this[_0x7ddb[1709]](_0x9494x3,!0);null!= _0x9494x5&& (_0x9494x5= _0x9494x4[mxObjectIdentity[_0x7ddb[203]](_0x9494x5)],null!= _0x9494x5&& _0x9494x5[_0x7ddb[1960]](_0x9494x2,!0));_0x9494x5= this[_0x7ddb[1709]](_0x9494x3,!1);null!= _0x9494x5&& (_0x9494x5= _0x9494x4[mxObjectIdentity[_0x7ddb[203]](_0x9494x5)],null!= _0x9494x5&& _0x9494x5[_0x7ddb[1960]](_0x9494x2,!1));for(var _0x9494x5=this[_0x7ddb[262]](_0x9494x2),_0x9494x9=0;_0x9494x9< _0x9494x5;_0x9494x9++){this[_0x7ddb[1980]](this[_0x7ddb[263]](_0x9494x2,_0x9494x9),this[_0x7ddb[263]](_0x9494x3,_0x9494x9),_0x9494x4)}};function mxRootChange(_0x9494x2,_0x9494x3){this[_0x7ddb[251]]= _0x9494x2;this[_0x7ddb[257]]= this[_0x7ddb[813]]= _0x9494x3}mxRootChange[_0x7ddb[202]][_0x7ddb[350]]= function(){this[_0x7ddb[813]]= this[_0x7ddb[257]];this[_0x7ddb[257]]= this[_0x7ddb[251]][_0x7ddb[1940]](this[_0x7ddb[257]])};function mxChildChange(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){this[_0x7ddb[251]]= _0x9494x2;this[_0x7ddb[257]]= this[_0x7ddb[1101]]= _0x9494x3;this[_0x7ddb[247]]= _0x9494x4;this[_0x7ddb[1982]]= this[_0x7ddb[1983]]= _0x9494x5}mxChildChange[_0x7ddb[202]][_0x7ddb[350]]= function(){var _0x9494x2=this[_0x7ddb[251]][_0x7ddb[1197]](this[_0x7ddb[247]]),_0x9494x3=null!= _0x9494x2?_0x9494x2[_0x7ddb[1738]](this[_0x7ddb[247]]):0;null== this[_0x7ddb[257]]&& this[_0x7ddb[807]](this[_0x7ddb[247]],!1);_0x9494x2= this[_0x7ddb[251]][_0x7ddb[1952]](this[_0x7ddb[247]],this[_0x7ddb[257]],this[_0x7ddb[1982]]);null!= this[_0x7ddb[257]]&& this[_0x7ddb[807]](this[_0x7ddb[247]],!0);this[_0x7ddb[1101]]= this[_0x7ddb[257]];this[_0x7ddb[257]]= _0x9494x2;this[_0x7ddb[1983]]= this[_0x7ddb[1982]];this[_0x7ddb[1982]]= _0x9494x3};mxChildChange[_0x7ddb[202]][_0x7ddb[807]]= function(_0x9494x2,_0x9494x3){_0x9494x3= null!= _0x9494x3?_0x9494x3:!0;var _0x9494x4=_0x9494x2[_0x7ddb[1709]](!0),_0x9494x5=_0x9494x2[_0x7ddb[1709]](!1);null!= _0x9494x4&& (_0x9494x3?this[_0x7ddb[251]][_0x7ddb[1959]](_0x9494x2,_0x9494x4,!0):this[_0x7ddb[251]][_0x7ddb[1959]](_0x9494x2,null,!0));null!= _0x9494x5&& (_0x9494x3?this[_0x7ddb[251]][_0x7ddb[1959]](_0x9494x2,_0x9494x5,!1):this[_0x7ddb[251]][_0x7ddb[1959]](_0x9494x2,null,!1));_0x9494x2[_0x7ddb[1957]](_0x9494x4,!0);_0x9494x2[_0x7ddb[1957]](_0x9494x5,!1);_0x9494x4= this[_0x7ddb[251]][_0x7ddb[262]](_0x9494x2);for(_0x9494x5= 0;_0x9494x5< _0x9494x4;_0x9494x5++){this[_0x7ddb[807]](this[_0x7ddb[251]][_0x7ddb[263]](_0x9494x2,_0x9494x5),_0x9494x3)}};function mxTerminalChange(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){this[_0x7ddb[251]]= _0x9494x2;this[_0x7ddb[246]]= _0x9494x3;this[_0x7ddb[257]]= this[_0x7ddb[1984]]= _0x9494x4;this[_0x7ddb[1097]]= _0x9494x5}mxTerminalChange[_0x7ddb[202]][_0x7ddb[350]]= function(){this[_0x7ddb[1984]]= this[_0x7ddb[257]];this[_0x7ddb[257]]= this[_0x7ddb[251]][_0x7ddb[1959]](this[_0x7ddb[246]],this[_0x7ddb[257]],this[_0x7ddb[1097]])};function mxValueChange(_0x9494x2,_0x9494x3,_0x9494x4){this[_0x7ddb[251]]= _0x9494x2;this[_0x7ddb[246]]= _0x9494x3;this[_0x7ddb[257]]= this[_0x7ddb[131]]= _0x9494x4}mxValueChange[_0x7ddb[202]][_0x7ddb[350]]= function(){this[_0x7ddb[131]]= this[_0x7ddb[257]];this[_0x7ddb[257]]= this[_0x7ddb[251]][_0x7ddb[1967]](this[_0x7ddb[246]],this[_0x7ddb[257]])};function mxStyleChange(_0x9494x2,_0x9494x3,_0x9494x4){this[_0x7ddb[251]]= _0x9494x2;this[_0x7ddb[246]]= _0x9494x3;this[_0x7ddb[257]]= this[_0x7ddb[124]]= _0x9494x4}mxStyleChange[_0x7ddb[202]][_0x7ddb[350]]= function(){this[_0x7ddb[124]]= this[_0x7ddb[257]];this[_0x7ddb[257]]= this[_0x7ddb[251]][_0x7ddb[1970]](this[_0x7ddb[246]],this[_0x7ddb[257]])};function mxGeometryChange(_0x9494x2,_0x9494x3,_0x9494x4){this[_0x7ddb[251]]= _0x9494x2;this[_0x7ddb[246]]= _0x9494x3;this[_0x7ddb[257]]= this[_0x7ddb[256]]= _0x9494x4}mxGeometryChange[_0x7ddb[202]][_0x7ddb[350]]= function(){this[_0x7ddb[256]]= this[_0x7ddb[257]];this[_0x7ddb[257]]= this[_0x7ddb[251]][_0x7ddb[1969]](this[_0x7ddb[246]],this[_0x7ddb[257]])};function mxCollapseChange(_0x9494x2,_0x9494x3,_0x9494x4){this[_0x7ddb[251]]= _0x9494x2;this[_0x7ddb[246]]= _0x9494x3;this[_0x7ddb[257]]= this[_0x7ddb[1985]]= _0x9494x4}mxCollapseChange[_0x7ddb[202]][_0x7ddb[350]]= function(){this[_0x7ddb[1985]]= this[_0x7ddb[257]];this[_0x7ddb[257]]= this[_0x7ddb[251]][_0x7ddb[1973]](this[_0x7ddb[246]],this[_0x7ddb[257]])};function mxVisibleChange(_0x9494x2,_0x9494x3,_0x9494x4){this[_0x7ddb[251]]= _0x9494x2;this[_0x7ddb[246]]= _0x9494x3;this[_0x7ddb[257]]= this[_0x7ddb[189]]= _0x9494x4}mxVisibleChange[_0x7ddb[202]][_0x7ddb[350]]= function(){this[_0x7ddb[189]]= this[_0x7ddb[257]];this[_0x7ddb[257]]= this[_0x7ddb[251]][_0x7ddb[1974]](this[_0x7ddb[246]],this[_0x7ddb[257]])};function mxCellAttributeChange(_0x9494x2,_0x9494x3,_0x9494x4){this[_0x7ddb[246]]= _0x9494x2;this[_0x7ddb[1986]]= _0x9494x3;this[_0x7ddb[257]]= this[_0x7ddb[131]]= _0x9494x4}mxCellAttributeChange[_0x7ddb[202]][_0x7ddb[350]]= function(){var _0x9494x2=this[_0x7ddb[246]][_0x7ddb[284]](this[_0x7ddb[1986]]);null== this[_0x7ddb[257]]?this[_0x7ddb[246]][_0x7ddb[131]][_0x7ddb[1390]](this[_0x7ddb[1986]]):this[_0x7ddb[246]][_0x7ddb[57]](this[_0x7ddb[1986]],this[_0x7ddb[257]]);this[_0x7ddb[257]]= _0x9494x2};function mxCell(_0x9494x2,_0x9494x3,_0x9494x4){this[_0x7ddb[131]]= _0x9494x2;this[_0x7ddb[1724]](_0x9494x3);this[_0x7ddb[475]](_0x9494x4);if(null!= this[_0x7ddb[1987]]){this[_0x7ddb[1987]]()}}mxCell[_0x7ddb[202]][_0x7ddb[1363]]= null;mxCell[_0x7ddb[202]][_0x7ddb[131]]= null;mxCell[_0x7ddb[202]][_0x7ddb[256]]= null;mxCell[_0x7ddb[202]][_0x7ddb[124]]= null;mxCell[_0x7ddb[202]][_0x7ddb[1988]]= !1;mxCell[_0x7ddb[202]][_0x7ddb[1989]]= !1;mxCell[_0x7ddb[202]][_0x7ddb[1990]]= !0;mxCell[_0x7ddb[202]][_0x7ddb[189]]= !0;mxCell[_0x7ddb[202]][_0x7ddb[1985]]= !1;mxCell[_0x7ddb[202]][_0x7ddb[1101]]= null;mxCell[_0x7ddb[202]][_0x7ddb[1097]]= null;mxCell[_0x7ddb[202]][_0x7ddb[772]]= null;mxCell[_0x7ddb[202]][_0x7ddb[1954]]= null;mxCell[_0x7ddb[202]][_0x7ddb[1842]]= null;mxCell[_0x7ddb[202]][_0x7ddb[1991]]= _0x7ddb[1992][_0x7ddb[224]](_0x7ddb[185]);mxCell[_0x7ddb[202]][_0x7ddb[1103]]= function(){return this[_0x7ddb[1363]]};mxCell[_0x7ddb[202]][_0x7ddb[1945]]= function(_0x9494x2){this[_0x7ddb[1363]]= _0x9494x2};mxCell[_0x7ddb[202]][_0x7ddb[433]]= function(){return this[_0x7ddb[131]]};mxCell[_0x7ddb[202]][_0x7ddb[1966]]= function(_0x9494x2){this[_0x7ddb[131]]= _0x9494x2};mxCell[_0x7ddb[202]][_0x7ddb[1968]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[433]]();this[_0x7ddb[1966]](_0x9494x2);return _0x9494x3};mxCell[_0x7ddb[202]][_0x7ddb[1721]]= function(){return this[_0x7ddb[256]]};mxCell[_0x7ddb[202]][_0x7ddb[1724]]= function(_0x9494x2){this[_0x7ddb[256]]= _0x9494x2};mxCell[_0x7ddb[202]][_0x7ddb[474]]= function(){return this[_0x7ddb[124]]};mxCell[_0x7ddb[202]][_0x7ddb[475]]= function(_0x9494x2){this[_0x7ddb[124]]= _0x9494x2};mxCell[_0x7ddb[202]][_0x7ddb[1193]]= function(){return this[_0x7ddb[1988]]};mxCell[_0x7ddb[202]][_0x7ddb[1993]]= function(_0x9494x2){this[_0x7ddb[1988]]= _0x9494x2};mxCell[_0x7ddb[202]][_0x7ddb[250]]= function(){return this[_0x7ddb[1989]]};mxCell[_0x7ddb[202]][_0x7ddb[1994]]= function(_0x9494x2){this[_0x7ddb[1989]]= _0x9494x2};mxCell[_0x7ddb[202]][_0x7ddb[1965]]= function(){return this[_0x7ddb[1990]]};mxCell[_0x7ddb[202]][_0x7ddb[1995]]= function(_0x9494x2){this[_0x7ddb[1990]]= _0x9494x2};mxCell[_0x7ddb[202]][_0x7ddb[174]]= function(){return this[_0x7ddb[189]]};mxCell[_0x7ddb[202]][_0x7ddb[175]]= function(_0x9494x2){this[_0x7ddb[189]]= _0x9494x2};mxCell[_0x7ddb[202]][_0x7ddb[1971]]= function(){return this[_0x7ddb[1985]]};mxCell[_0x7ddb[202]][_0x7ddb[1972]]= function(_0x9494x2){this[_0x7ddb[1985]]= _0x9494x2};mxCell[_0x7ddb[202]][_0x7ddb[1197]]= function(){return this[_0x7ddb[1101]]};mxCell[_0x7ddb[202]][_0x7ddb[1996]]= function(_0x9494x2){this[_0x7ddb[1101]]= _0x9494x2};mxCell[_0x7ddb[202]][_0x7ddb[1709]]= function(_0x9494x2){return _0x9494x2?this[_0x7ddb[1097]]:this[_0x7ddb[772]]};mxCell[_0x7ddb[202]][_0x7ddb[1957]]= function(_0x9494x2,_0x9494x3){_0x9494x3?this[_0x7ddb[1097]]= _0x9494x2:this[_0x7ddb[772]]= _0x9494x2;return _0x9494x2};mxCell[_0x7ddb[202]][_0x7ddb[262]]= function(){return null== this[_0x7ddb[1954]]?0:this[_0x7ddb[1954]][_0x7ddb[67]]};mxCell[_0x7ddb[202]][_0x7ddb[1738]]= function(_0x9494x2){return mxUtils[_0x7ddb[2]](this[_0x7ddb[1954]],_0x9494x2)};mxCell[_0x7ddb[202]][_0x7ddb[263]]= function(_0x9494x2){return null== this[_0x7ddb[1954]]?null:this[_0x7ddb[1954]][_0x9494x2]};mxCell[_0x7ddb[202]][_0x7ddb[1937]]= function(_0x9494x2,_0x9494x3){null!= _0x9494x2&& (null== _0x9494x3&& (_0x9494x3= this[_0x7ddb[262]](),_0x9494x2[_0x7ddb[1197]]()== this&& _0x9494x3--),_0x9494x2[_0x7ddb[1997]](),_0x9494x2[_0x7ddb[1996]](this),null== this[_0x7ddb[1954]]?(this[_0x7ddb[1954]]= [],this[_0x7ddb[1954]][_0x7ddb[207]](_0x9494x2)):this[_0x7ddb[1954]][_0x7ddb[300]](_0x9494x3,0,_0x9494x2));return _0x9494x2};mxCell[_0x7ddb[202]][_0x7ddb[205]]= function(_0x9494x2){var _0x9494x3=null;null!= this[_0x7ddb[1954]]&& 0<= _0x9494x2&& (_0x9494x3= this[_0x7ddb[263]](_0x9494x2),null!= _0x9494x3&& (this[_0x7ddb[1954]][_0x7ddb[300]](_0x9494x2,1),_0x9494x3[_0x7ddb[1996]](null)));return _0x9494x3};mxCell[_0x7ddb[202]][_0x7ddb[1997]]= function(){if(null!= this[_0x7ddb[1101]]){var _0x9494x2=this[_0x7ddb[1101]][_0x7ddb[1738]](this);this[_0x7ddb[1101]][_0x7ddb[205]](_0x9494x2)}};mxCell[_0x7ddb[202]][_0x7ddb[1707]]= function(){return null== this[_0x7ddb[1842]]?0:this[_0x7ddb[1842]][_0x7ddb[67]]};mxCell[_0x7ddb[202]][_0x7ddb[1998]]= function(_0x9494x2){return mxUtils[_0x7ddb[2]](this[_0x7ddb[1842]],_0x9494x2)};mxCell[_0x7ddb[202]][_0x7ddb[1708]]= function(_0x9494x2){return null== this[_0x7ddb[1842]]?null:this[_0x7ddb[1842]][_0x9494x2]};mxCell[_0x7ddb[202]][_0x7ddb[1960]]= function(_0x9494x2,_0x9494x3){if(null!= _0x9494x2&& (_0x9494x2[_0x7ddb[1999]](_0x9494x3),_0x9494x2[_0x7ddb[1957]](this,_0x9494x3),null== this[_0x7ddb[1842]]|| _0x9494x2[_0x7ddb[1709]](!_0x9494x3) != this|| 0> mxUtils[_0x7ddb[2]](this[_0x7ddb[1842]],_0x9494x2))){null== this[_0x7ddb[1842]]&& (this[_0x7ddb[1842]]= []),this[_0x7ddb[1842]][_0x7ddb[207]](_0x9494x2)};return _0x9494x2};mxCell[_0x7ddb[202]][_0x7ddb[1961]]= function(_0x9494x2,_0x9494x3){if(null!= _0x9494x2){if(_0x9494x2[_0x7ddb[1709]](!_0x9494x3) != this && null!= this[_0x7ddb[1842]]){var _0x9494x4=this[_0x7ddb[1998]](_0x9494x2);0<= _0x9494x4&& this[_0x7ddb[1842]][_0x7ddb[300]](_0x9494x4,1)};_0x9494x2[_0x7ddb[1957]](null,_0x9494x3)};return _0x9494x2};mxCell[_0x7ddb[202]][_0x7ddb[1999]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[1709]](_0x9494x2);null!= _0x9494x3&& _0x9494x3[_0x7ddb[1961]](this,_0x9494x2)};mxCell[_0x7ddb[202]][_0x7ddb[284]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[433]]();return (null!= _0x9494x4&& _0x9494x4[_0x7ddb[288]]== mxConstants[_0x7ddb[289]]?_0x9494x4[_0x7ddb[284]](_0x9494x2):null)|| _0x9494x3};mxCell[_0x7ddb[202]][_0x7ddb[57]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[433]]();null!= _0x9494x4&& _0x9494x4[_0x7ddb[288]]== mxConstants[_0x7ddb[289]]&& _0x9494x4[_0x7ddb[57]](_0x9494x2,_0x9494x3)};mxCell[_0x7ddb[202]][_0x7ddb[238]]= function(){var _0x9494x2=mxUtils[_0x7ddb[238]](this,this[_0x7ddb[1991]]);_0x9494x2[_0x7ddb[1966]](this[_0x7ddb[2000]]());return _0x9494x2};mxCell[_0x7ddb[202]][_0x7ddb[2000]]= function(){var _0x9494x2=this[_0x7ddb[433]]();null!= _0x9494x2&& (_0x7ddb[279]== typeof _0x9494x2[_0x7ddb[238]]?_0x9494x2= _0x9494x2[_0x7ddb[238]]():isNaN(_0x9494x2[_0x7ddb[288]])|| (_0x9494x2= _0x9494x2[_0x7ddb[511]](!0)));return _0x9494x2};function mxGeometry(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){mxRectangle[_0x7ddb[239]](this,_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5)}mxGeometry[_0x7ddb[202]]= new mxRectangle;mxGeometry[_0x7ddb[202]][_0x7ddb[196]]= mxGeometry;mxGeometry[_0x7ddb[202]][_0x7ddb[2001]]= !0;mxGeometry[_0x7ddb[202]][_0x7ddb[2002]]= null;mxGeometry[_0x7ddb[202]][_0x7ddb[2003]]= null;mxGeometry[_0x7ddb[202]][_0x7ddb[2004]]= null;mxGeometry[_0x7ddb[202]][_0x7ddb[1525]]= null;mxGeometry[_0x7ddb[202]][_0x7ddb[1368]]= null;mxGeometry[_0x7ddb[202]][_0x7ddb[1500]]= !1;mxGeometry[_0x7ddb[202]][_0x7ddb[2005]]= function(){if(null!= this[_0x7ddb[2002]]){var _0x9494x2= new mxRectangle(this[_0x7ddb[235]],this[_0x7ddb[236]],this[_0x7ddb[117]],this[_0x7ddb[119]]);this[_0x7ddb[235]]= this[_0x7ddb[2002]][_0x7ddb[235]];this[_0x7ddb[236]]= this[_0x7ddb[2002]][_0x7ddb[236]];this[_0x7ddb[117]]= this[_0x7ddb[2002]][_0x7ddb[117]];this[_0x7ddb[119]]= this[_0x7ddb[2002]][_0x7ddb[119]];this[_0x7ddb[2002]]= _0x9494x2}};mxGeometry[_0x7ddb[202]][_0x7ddb[2006]]= function(_0x9494x2){return _0x9494x2?this[_0x7ddb[2003]]:this[_0x7ddb[2004]]};mxGeometry[_0x7ddb[202]][_0x7ddb[2007]]= function(_0x9494x2,_0x9494x3){_0x9494x3?this[_0x7ddb[2003]]= _0x9494x2:this[_0x7ddb[2004]]= _0x9494x2;return _0x9494x2};mxGeometry[_0x7ddb[202]][_0x7ddb[513]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[238]]();this[_0x7ddb[1500]]|| (this[_0x7ddb[235]]+= _0x9494x2,this[_0x7ddb[236]]+= _0x9494x3);null!= this[_0x7ddb[2003]]&& (this[_0x7ddb[2003]][_0x7ddb[235]]+= _0x9494x2,this[_0x7ddb[2003]][_0x7ddb[236]]+= _0x9494x3);null!= this[_0x7ddb[2004]]&& (this[_0x7ddb[2004]][_0x7ddb[235]]+= _0x9494x2,this[_0x7ddb[2004]][_0x7ddb[236]]+= _0x9494x3);if(this[_0x7ddb[2001]]&& null!= this[_0x7ddb[1525]]){for(var _0x9494x4=this[_0x7ddb[1525]][_0x7ddb[67]],_0x9494x5=0;_0x9494x5< _0x9494x4;_0x9494x5++){var _0x9494x9=this[_0x7ddb[1525]][_0x9494x5];null!= _0x9494x9&& (_0x9494x9[_0x7ddb[235]]+= _0x9494x2,_0x9494x9[_0x7ddb[236]]+= _0x9494x3)}}};var mxCellPath={PATH_SEPARATOR:_0x7ddb[87],create:function(_0x9494x2){var _0x9494x3=_0x7ddb[110];if(null!= _0x9494x2){for(var _0x9494x4=_0x9494x2[_0x7ddb[1197]]();null!= _0x9494x4;){_0x9494x3= _0x9494x4[_0x7ddb[1738]](_0x9494x2)+ mxCellPath[_0x7ddb[1950]]+ _0x9494x3,_0x9494x2= _0x9494x4,_0x9494x4= _0x9494x2[_0x7ddb[1197]]()}};_0x9494x2= _0x9494x3[_0x7ddb[67]];1< _0x9494x2&& (_0x9494x3= _0x9494x3[_0x7ddb[85]](0,_0x9494x2- 1));return _0x9494x3},getParentPath:function(_0x9494x2){if(null!= _0x9494x2){var _0x9494x3=_0x9494x2[_0x7ddb[1122]](mxCellPath.PATH_SEPARATOR);if(0<= _0x9494x3){return _0x9494x2[_0x7ddb[85]](0,_0x9494x3)};if(0< _0x9494x2[_0x7ddb[67]]){return _0x7ddb[110]}};return null},resolve:function(_0x9494x2,_0x9494x3){var _0x9494x4=_0x9494x2;if(null!= _0x9494x3){for(var _0x9494x5=_0x9494x3[_0x7ddb[224]](mxCellPath.PATH_SEPARATOR),_0x9494x9=0;_0x9494x9< _0x9494x5[_0x7ddb[67]];_0x9494x9++){_0x9494x4= _0x9494x4[_0x7ddb[263]](parseInt(_0x9494x5[_0x9494x9]))}};return _0x9494x4},compare:function(_0x9494x2,_0x9494x3){for(var _0x9494x4=Math[_0x7ddb[243]](_0x9494x2[_0x7ddb[67]],_0x9494x3[_0x7ddb[67]]),_0x9494x5=0,_0x9494x9=0;_0x9494x9< _0x9494x4;_0x9494x9++){if(_0x9494x2[_0x9494x9]!= _0x9494x3[_0x9494x9]){0== _0x9494x2[_0x9494x9][_0x7ddb[67]]|| 0== _0x9494x3[_0x9494x9][_0x7ddb[67]]?_0x9494x5= _0x9494x2[_0x9494x9]== _0x9494x3[_0x9494x9]?0:_0x9494x2[_0x9494x9]> _0x9494x3[_0x9494x9]?1:-1:(_0x9494x4= parseInt(_0x9494x2[_0x9494x9]),_0x9494x9= parseInt(_0x9494x3[_0x9494x9]),_0x9494x5= _0x9494x4== _0x9494x9?0:_0x9494x4> _0x9494x9?1:-1);break}};0== _0x9494x5&& (_0x9494x4= _0x9494x2[_0x7ddb[67]],_0x9494x9= _0x9494x3[_0x7ddb[67]],_0x9494x4!= _0x9494x9&& (_0x9494x5= _0x9494x4> _0x9494x9?1:-1));return _0x9494x5}},mxPerimeter={RectanglePerimeter:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){_0x9494x3= _0x9494x2[_0x7ddb[241]]();var _0x9494x9=_0x9494x2[_0x7ddb[242]](),_0x9494xa=Math[_0x7ddb[429]](_0x9494x4[_0x7ddb[236]]- _0x9494x9,_0x9494x4[_0x7ddb[235]]- _0x9494x3),_0x9494x12= new mxPoint(0,0),_0x9494x13=Math[_0x7ddb[424]],_0x9494x14=Math[_0x7ddb[424]]/ 2- _0x9494xa,_0x9494x15=Math[_0x7ddb[429]](_0x9494x2[_0x7ddb[119]],_0x9494x2[_0x7ddb[117]]);_0x9494xa< -_0x9494x13+ _0x9494x15|| _0x9494xa> _0x9494x13- _0x9494x15?(_0x9494x12[_0x7ddb[235]]= _0x9494x2[_0x7ddb[235]],_0x9494x12[_0x7ddb[236]]= _0x9494x9- _0x9494x2[_0x7ddb[117]]* Math[_0x7ddb[2008]](_0x9494xa)/ 2):_0x9494xa< -_0x9494x15?(_0x9494x12[_0x7ddb[236]]= _0x9494x2[_0x7ddb[236]],_0x9494x12[_0x7ddb[235]]= _0x9494x3- _0x9494x2[_0x7ddb[119]]* Math[_0x7ddb[2008]](_0x9494x14)/ 2):_0x9494xa< _0x9494x15?(_0x9494x12[_0x7ddb[235]]= _0x9494x2[_0x7ddb[235]]+ _0x9494x2[_0x7ddb[117]],_0x9494x12[_0x7ddb[236]]= _0x9494x9+ _0x9494x2[_0x7ddb[117]]* Math[_0x7ddb[2008]](_0x9494xa)/ 2):(_0x9494x12[_0x7ddb[236]]= _0x9494x2[_0x7ddb[236]]+ _0x9494x2[_0x7ddb[119]],_0x9494x12[_0x7ddb[235]]= _0x9494x3+ _0x9494x2[_0x7ddb[119]]* Math[_0x7ddb[2008]](_0x9494x14)/ 2);_0x9494x5&& (_0x9494x4[_0x7ddb[235]]>= _0x9494x2[_0x7ddb[235]]&& _0x9494x4[_0x7ddb[235]]<= _0x9494x2[_0x7ddb[235]]+ _0x9494x2[_0x7ddb[117]]?_0x9494x12[_0x7ddb[235]]= _0x9494x4[_0x7ddb[235]]:_0x9494x4[_0x7ddb[236]]>= _0x9494x2[_0x7ddb[236]]&& _0x9494x4[_0x7ddb[236]]<= _0x9494x2[_0x7ddb[236]]+ _0x9494x2[_0x7ddb[119]]&& (_0x9494x12[_0x7ddb[236]]= _0x9494x4[_0x7ddb[236]]),_0x9494x4[_0x7ddb[235]]< _0x9494x2[_0x7ddb[235]]?_0x9494x12[_0x7ddb[235]]= _0x9494x2[_0x7ddb[235]]:_0x9494x4[_0x7ddb[235]]> _0x9494x2[_0x7ddb[235]]+ _0x9494x2[_0x7ddb[117]]&& (_0x9494x12[_0x7ddb[235]]= _0x9494x2[_0x7ddb[235]]+ _0x9494x2[_0x7ddb[117]]),_0x9494x4[_0x7ddb[236]]< _0x9494x2[_0x7ddb[236]]?_0x9494x12[_0x7ddb[236]]= _0x9494x2[_0x7ddb[236]]:_0x9494x4[_0x7ddb[236]]> _0x9494x2[_0x7ddb[236]]+ _0x9494x2[_0x7ddb[119]]&& (_0x9494x12[_0x7ddb[236]]= _0x9494x2[_0x7ddb[236]]+ _0x9494x2[_0x7ddb[119]]));return _0x9494x12},EllipsePerimeter:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){var _0x9494x9=_0x9494x2[_0x7ddb[235]],_0x9494xa=_0x9494x2[_0x7ddb[236]],_0x9494x12=_0x9494x2[_0x7ddb[117]]/ 2,_0x9494x13=_0x9494x2[_0x7ddb[119]]/ 2,_0x9494x14=_0x9494x9+ _0x9494x12,_0x9494x15=_0x9494xa+ _0x9494x13;_0x9494x3= _0x9494x4[_0x7ddb[235]];_0x9494x4= _0x9494x4[_0x7ddb[236]];var _0x9494x16=parseInt(_0x9494x3- _0x9494x14),_0x9494x17=parseInt(_0x9494x4- _0x9494x15);if(0== _0x9494x16&& 0!= _0x9494x17){return new mxPoint(_0x9494x14,_0x9494x15+ _0x9494x13* _0x9494x17/ Math[_0x7ddb[425]](_0x9494x17))};if(0== _0x9494x16&& 0== _0x9494x17){return new mxPoint(_0x9494x3,_0x9494x4)};if(_0x9494x5){if(_0x9494x4>= _0x9494xa&& _0x9494x4<= _0x9494xa+ _0x9494x2[_0x7ddb[119]]){return _0x9494x2= _0x9494x4- _0x9494x15,_0x9494x2= Math[_0x7ddb[428]](_0x9494x12* _0x9494x12* (1- _0x9494x2* _0x9494x2/ (_0x9494x13* _0x9494x13)))|| 0,_0x9494x3<= _0x9494x9&& (_0x9494x2= -_0x9494x2), new mxPoint(_0x9494x14+ _0x9494x2,_0x9494x4)};if(_0x9494x3>= _0x9494x9&& _0x9494x3<= _0x9494x9+ _0x9494x2[_0x7ddb[117]]){return _0x9494x2= _0x9494x3- _0x9494x14,_0x9494x2= Math[_0x7ddb[428]](_0x9494x13* _0x9494x13* (1- _0x9494x2* _0x9494x2/ (_0x9494x12* _0x9494x12)))|| 0,_0x9494x4<= _0x9494xa&& (_0x9494x2= -_0x9494x2), new mxPoint(_0x9494x3,_0x9494x15+ _0x9494x2)}};_0x9494x9= _0x9494x17/ _0x9494x16;_0x9494x15-= _0x9494x9* _0x9494x14;_0x9494xa= _0x9494x12* _0x9494x12* _0x9494x9* _0x9494x9+ _0x9494x13* _0x9494x13;_0x9494x2= -2* _0x9494x14 * _0x9494xa;_0x9494x13= Math[_0x7ddb[428]](_0x9494x2* _0x9494x2- 4* _0x9494xa* (_0x9494x12* _0x9494x12* _0x9494x9* _0x9494x9* _0x9494x14* _0x9494x14+ _0x9494x13* _0x9494x13* _0x9494x14* _0x9494x14- _0x9494x12* _0x9494x12* _0x9494x13* _0x9494x13));_0x9494x12= (-_0x9494x2+ _0x9494x13) / (2* _0x9494xa);_0x9494x13= (-_0x9494x2- _0x9494x13) / (2* _0x9494xa);_0x9494x14= _0x9494x9* _0x9494x12+ _0x9494x15;_0x9494x15= _0x9494x9* _0x9494x13+ _0x9494x15;_0x9494x9= Math[_0x7ddb[428]](Math[_0x7ddb[2009]](_0x9494x12- _0x9494x3,2)+ Math[_0x7ddb[2009]](_0x9494x14- _0x9494x4,2));_0x9494x3= Math[_0x7ddb[428]](Math[_0x7ddb[2009]](_0x9494x13- _0x9494x3,2)+ Math[_0x7ddb[2009]](_0x9494x15- _0x9494x4,2));_0x9494xa= _0x9494x4= 0;_0x9494x9< _0x9494x3?(_0x9494x4= _0x9494x12,_0x9494xa= _0x9494x14):(_0x9494x4= _0x9494x13,_0x9494xa= _0x9494x15);return new mxPoint(_0x9494x4,_0x9494xa)},RhombusPerimeter:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){_0x9494x3= _0x9494x2[_0x7ddb[235]];var _0x9494x9=_0x9494x2[_0x7ddb[236]],_0x9494xa=_0x9494x2[_0x7ddb[117]];_0x9494x2= _0x9494x2[_0x7ddb[119]];var _0x9494x12=_0x9494x3+ _0x9494xa/ 2,_0x9494x13=_0x9494x9+ _0x9494x2/ 2,_0x9494x14=_0x9494x4[_0x7ddb[235]];_0x9494x4= _0x9494x4[_0x7ddb[236]];if(_0x9494x12== _0x9494x14){return _0x9494x13> _0x9494x4? new mxPoint(_0x9494x12,_0x9494x9): new mxPoint(_0x9494x12,_0x9494x9+ _0x9494x2)};if(_0x9494x13== _0x9494x4){return _0x9494x12> _0x9494x14? new mxPoint(_0x9494x3,_0x9494x13): new mxPoint(_0x9494x3+ _0x9494xa,_0x9494x13)};var _0x9494x15=_0x9494x12,_0x9494x16=_0x9494x13;_0x9494x5&& (_0x9494x14>= _0x9494x3&& _0x9494x14<= _0x9494x3+ _0x9494xa?_0x9494x15= _0x9494x14:_0x9494x4>= _0x9494x9&& _0x9494x4<= _0x9494x9+ _0x9494x2&& (_0x9494x16= _0x9494x4));return _0x9494x14< _0x9494x12?_0x9494x4< _0x9494x13?mxUtils[_0x7ddb[2010]](_0x9494x14,_0x9494x4,_0x9494x15,_0x9494x16,_0x9494x12,_0x9494x9,_0x9494x3,_0x9494x13):mxUtils[_0x7ddb[2010]](_0x9494x14,_0x9494x4,_0x9494x15,_0x9494x16,_0x9494x12,_0x9494x9+ _0x9494x2,_0x9494x3,_0x9494x13):_0x9494x4< _0x9494x13?mxUtils[_0x7ddb[2010]](_0x9494x14,_0x9494x4,_0x9494x15,_0x9494x16,_0x9494x12,_0x9494x9,_0x9494x3+ _0x9494xa,_0x9494x13):mxUtils[_0x7ddb[2010]](_0x9494x14,_0x9494x4,_0x9494x15,_0x9494x16,_0x9494x12,_0x9494x9+ _0x9494x2,_0x9494x3+ _0x9494xa,_0x9494x13)},TrianglePerimeter:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){_0x9494x3= null!= _0x9494x3?_0x9494x3[_0x7ddb[124]][mxConstants[_0x7ddb[2011]]]:null;var _0x9494x9=_0x9494x3== mxConstants[_0x7ddb[1358]]|| _0x9494x3== mxConstants[_0x7ddb[1354]],_0x9494xa=_0x9494x2[_0x7ddb[235]],_0x9494x12=_0x9494x2[_0x7ddb[236]],_0x9494x13=_0x9494x2[_0x7ddb[117]];_0x9494x2= _0x9494x2[_0x7ddb[119]];var _0x9494x14=_0x9494xa+ _0x9494x13/ 2,_0x9494x15=_0x9494x12+ _0x9494x2/ 2,_0x9494x16= new mxPoint(_0x9494xa,_0x9494x12),_0x9494x17= new mxPoint(_0x9494xa+ _0x9494x13,_0x9494x15),_0x9494x18= new mxPoint(_0x9494xa,_0x9494x12+ _0x9494x2);_0x9494x3== mxConstants[_0x7ddb[1358]]?(_0x9494x16= _0x9494x18,_0x9494x17= new mxPoint(_0x9494x14,_0x9494x12),_0x9494x18= new mxPoint(_0x9494xa+ _0x9494x13,_0x9494x12+ _0x9494x2)):_0x9494x3== mxConstants[_0x7ddb[1354]]?(_0x9494x17= new mxPoint(_0x9494x14,_0x9494x12+ _0x9494x2),_0x9494x18= new mxPoint(_0x9494xa+ _0x9494x13,_0x9494x12)):_0x9494x3== mxConstants[_0x7ddb[1359]]&& (_0x9494x16= new mxPoint(_0x9494xa+ _0x9494x13,_0x9494x12),_0x9494x17= new mxPoint(_0x9494xa,_0x9494x15),_0x9494x18= new mxPoint(_0x9494xa+ _0x9494x13,_0x9494x12+ _0x9494x2));var _0x9494x19=_0x9494x4[_0x7ddb[235]]- _0x9494x14,_0x9494x1a=_0x9494x4[_0x7ddb[236]]- _0x9494x15,_0x9494x19=_0x9494x9?Math[_0x7ddb[429]](_0x9494x19,_0x9494x1a):Math[_0x7ddb[429]](_0x9494x1a,_0x9494x19),_0x9494x1b=_0x9494x9?Math[_0x7ddb[429]](_0x9494x13,_0x9494x2):Math[_0x7ddb[429]](_0x9494x2,_0x9494x13),_0x9494x1a=!1,_0x9494x1a=_0x9494x3== mxConstants[_0x7ddb[1358]]|| _0x9494x3== mxConstants[_0x7ddb[1359]]?_0x9494x19> -_0x9494x1b&& _0x9494x19< _0x9494x1b:_0x9494x19< -Math[_0x7ddb[424]]+ _0x9494x1b|| _0x9494x19> Math[_0x7ddb[424]]- _0x9494x1b,_0x9494x1b=null;_0x9494x1a?_0x9494x1b= _0x9494x5&& (_0x9494x9&& _0x9494x4[_0x7ddb[235]]>= _0x9494x16[_0x7ddb[235]]&& _0x9494x4[_0x7ddb[235]]<= _0x9494x18[_0x7ddb[235]]|| !_0x9494x9&& _0x9494x4[_0x7ddb[236]]>= _0x9494x16[_0x7ddb[236]] && _0x9494x4[_0x7ddb[236]]<= _0x9494x18[_0x7ddb[236]])?_0x9494x9? new mxPoint(_0x9494x4[_0x7ddb[235]],_0x9494x16[_0x7ddb[236]]): new mxPoint(_0x9494x16[_0x7ddb[235]],_0x9494x4[_0x7ddb[236]]):_0x9494x3== mxConstants[_0x7ddb[1358]]? new mxPoint(_0x9494xa+ _0x9494x13/ 2+ _0x9494x2* Math[_0x7ddb[2008]](_0x9494x19)/ 2,_0x9494x12+ _0x9494x2):_0x9494x3== mxConstants[_0x7ddb[1354]]? new mxPoint(_0x9494xa+ _0x9494x13/ 2- _0x9494x2* Math[_0x7ddb[2008]](_0x9494x19)/ 2,_0x9494x12):_0x9494x3== mxConstants[_0x7ddb[1359]]? new mxPoint(_0x9494xa+ _0x9494x13,_0x9494x12+ _0x9494x2/ 2+ _0x9494x13* Math[_0x7ddb[2008]](_0x9494x19)/ 2): new mxPoint(_0x9494xa,_0x9494x12+ _0x9494x2/ 2- _0x9494x13* Math[_0x7ddb[2008]](_0x9494x19)/ 2):(_0x9494x5&& (_0x9494x5= new mxPoint(_0x9494x14,_0x9494x15),_0x9494x4[_0x7ddb[236]]>= _0x9494x12&& _0x9494x4[_0x7ddb[236]]<= _0x9494x12+ _0x9494x2?(_0x9494x5[_0x7ddb[235]]= _0x9494x9?_0x9494x14:_0x9494x3== mxConstants[_0x7ddb[1359]]?_0x9494xa+ _0x9494x13:_0x9494xa,_0x9494x5[_0x7ddb[236]]= _0x9494x4[_0x7ddb[236]]):_0x9494x4[_0x7ddb[235]]>= _0x9494xa&& _0x9494x4[_0x7ddb[235]]<= _0x9494xa+ _0x9494x13&& (_0x9494x5[_0x7ddb[235]]= _0x9494x4[_0x7ddb[235]],_0x9494x5[_0x7ddb[236]]= !_0x9494x9?_0x9494x15:_0x9494x3== mxConstants[_0x7ddb[1358]]?_0x9494x12+ _0x9494x2:_0x9494x12),_0x9494x14= _0x9494x5[_0x7ddb[235]],_0x9494x15= _0x9494x5[_0x7ddb[236]]),_0x9494x1b= _0x9494x9&& _0x9494x4[_0x7ddb[235]]<= _0x9494xa+ _0x9494x13/ 2|| !_0x9494x9&& _0x9494x4[_0x7ddb[236]]<= _0x9494x12+ _0x9494x2/ 2?mxUtils[_0x7ddb[2010]](_0x9494x4[_0x7ddb[235]],_0x9494x4[_0x7ddb[236]],_0x9494x14,_0x9494x15,_0x9494x16[_0x7ddb[235]],_0x9494x16[_0x7ddb[236]],_0x9494x17[_0x7ddb[235]],_0x9494x17[_0x7ddb[236]]):mxUtils[_0x7ddb[2010]](_0x9494x4[_0x7ddb[235]],_0x9494x4[_0x7ddb[236]],_0x9494x14,_0x9494x15,_0x9494x17[_0x7ddb[235]],_0x9494x17[_0x7ddb[236]],_0x9494x18[_0x7ddb[235]],_0x9494x18[_0x7ddb[236]]));null== _0x9494x1b&& (_0x9494x1b= new mxPoint(_0x9494x14,_0x9494x15));return _0x9494x1b}};function mxPrintPreview(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13,_0x9494x14){this[_0x7ddb[1179]]= _0x9494x2;this[_0x7ddb[255]]= null!= _0x9494x3?_0x9494x3:1/ _0x9494x2[_0x7ddb[2012]];this[_0x7ddb[467]]= null!= _0x9494x5?_0x9494x5:0;this[_0x7ddb[2013]]= null!= _0x9494x4?_0x9494x4:_0x9494x2[_0x7ddb[2013]];this[_0x7ddb[924]]= null!= _0x9494x13?_0x9494x13:_0x7ddb[2014];this[_0x7ddb[1732]]= null!= _0x9494x9?_0x9494x9:0;this[_0x7ddb[1733]]= null!= _0x9494xa?_0x9494xa:0;this[_0x7ddb[1630]]= _0x9494x12;this[_0x7ddb[2015]]= null!= _0x9494x14?_0x9494x14:!0}mxPrintPreview[_0x7ddb[202]][_0x7ddb[1179]]= null;mxPrintPreview[_0x7ddb[202]][_0x7ddb[2013]]= null;mxPrintPreview[_0x7ddb[202]][_0x7ddb[255]]= null;mxPrintPreview[_0x7ddb[202]][_0x7ddb[467]]= 0;mxPrintPreview[_0x7ddb[202]][_0x7ddb[1732]]= 0;mxPrintPreview[_0x7ddb[202]][_0x7ddb[1733]]= 0;mxPrintPreview[_0x7ddb[202]][_0x7ddb[2016]]= !0;mxPrintPreview[_0x7ddb[202]][_0x7ddb[2017]]= !1;mxPrintPreview[_0x7ddb[202]][_0x7ddb[1630]]= null;mxPrintPreview[_0x7ddb[202]][_0x7ddb[924]]= null;mxPrintPreview[_0x7ddb[202]][_0x7ddb[2015]]= null;mxPrintPreview[_0x7ddb[202]][_0x7ddb[2018]]= null;mxPrintPreview[_0x7ddb[202]][_0x7ddb[2019]]= 0;mxPrintPreview[_0x7ddb[202]][_0x7ddb[2020]]= function(){return this[_0x7ddb[2018]]};mxPrintPreview[_0x7ddb[202]][_0x7ddb[2021]]= function(){var _0x9494x2=_0x7ddb[110];8== document[_0x7ddb[5]]&& (_0x9494x2= _0x7ddb[2022]);return _0x9494x2};mxPrintPreview[_0x7ddb[202]][_0x7ddb[392]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[1179]][_0x7ddb[259]][_0x7ddb[2023]],_0x9494x4=null;try{this[_0x7ddb[2017]]&& (this[_0x7ddb[1179]][_0x7ddb[259]][_0x7ddb[2023]]= function(_0x9494x2,_0x9494x3){_0x9494x3[_0x7ddb[176]](_0x9494x2[_0x7ddb[441]][_0x7ddb[2024]]())});if(null== this[_0x7ddb[2018]]){this[_0x7ddb[2018]]= window[_0x7ddb[392]]();var _0x9494x5=this[_0x7ddb[2018]][_0x7ddb[395]],_0x9494x9=this[_0x7ddb[2021]]();null!= _0x9494x9&& 0< _0x9494x9[_0x7ddb[67]]&& _0x9494x5[_0x7ddb[171]](_0x9494x9);_0x9494x5[_0x7ddb[171]](_0x7ddb[528]);_0x9494x5[_0x7ddb[171]](_0x7ddb[531]);this[_0x7ddb[2025]](_0x9494x5,_0x9494x2);_0x9494x5[_0x7ddb[171]](_0x7ddb[533]);_0x9494x5[_0x7ddb[171]](_0x7ddb[2026]);mxClient[_0x7ddb[54]](_0x7ddb[94],mxClient[_0x7ddb[86]]+ _0x7ddb[95],_0x9494x5);mxClient[_0x7ddb[47]]&& (_0x9494x5[_0x7ddb[100]][_0x7ddb[99]](_0x7ddb[6],_0x7ddb[97]),_0x9494x5[_0x7ddb[100]][_0x7ddb[99]](_0x7ddb[7],_0x7ddb[101]),_0x9494x5[_0x7ddb[102]]()[_0x7ddb[103]]= _0x7ddb[104],mxClient[_0x7ddb[54]](_0x7ddb[94],mxClient[_0x7ddb[86]]+ _0x7ddb[105],_0x9494x5));var _0x9494xa=this[_0x7ddb[1179]][_0x7ddb[517]]()[_0x7ddb[238]](),_0x9494x12=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[518]](),_0x9494x13=_0x9494x12/ this[_0x7ddb[255]],_0x9494x14=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[512]]();this[_0x7ddb[2016]]|| (this[_0x7ddb[1732]]= -_0x9494x14[_0x7ddb[235]]* this[_0x7ddb[255]],this[_0x7ddb[1733]]= -_0x9494x14[_0x7ddb[236]]* this[_0x7ddb[255]],_0x9494xa[_0x7ddb[117]]+= _0x9494xa[_0x7ddb[235]],_0x9494xa[_0x7ddb[119]]+= _0x9494xa[_0x7ddb[236]],_0x9494xa[_0x7ddb[235]]= 0,this[_0x7ddb[467]]= _0x9494xa[_0x7ddb[236]]= 0);_0x9494xa[_0x7ddb[117]]/= _0x9494x13;_0x9494xa[_0x7ddb[119]]/= _0x9494x13;var _0x9494x15=this[_0x7ddb[2013]][_0x7ddb[117]]- 2* this[_0x7ddb[467]],_0x9494x16=this[_0x7ddb[2013]][_0x7ddb[119]]- 2* this[_0x7ddb[467]],_0x9494x17=Math[_0x7ddb[160]](1,Math[_0x7ddb[430]]((_0x9494xa[_0x7ddb[117]]+ this[_0x7ddb[1732]])/ _0x9494x15)),_0x9494x18=Math[_0x7ddb[160]](1,Math[_0x7ddb[430]]((_0x9494xa[_0x7ddb[119]]+ this[_0x7ddb[1733]])/ _0x9494x16));this[_0x7ddb[2019]]= _0x9494x17* _0x9494x18;var _0x9494x19=mxUtils[_0x7ddb[885]](this,function(){if(this[_0x7ddb[2015]]&& (1< _0x9494x18|| 1< _0x9494x17)){var _0x9494x2=this[_0x7ddb[2027]](_0x9494x18,_0x9494x17);_0x9494x5[_0x7ddb[112]][_0x7ddb[62]](_0x9494x2);if(mxClient[_0x7ddb[80]]){_0x9494x2[_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[492];var _0x9494x3=function(){_0x9494x2[_0x7ddb[124]][_0x7ddb[125]]= _0x9494x5[_0x7ddb[112]][_0x7ddb[190]]+ 10+ _0x7ddb[168]};mxEvent[_0x7ddb[169]](this[_0x7ddb[2018]],_0x7ddb[276],function(_0x9494x2){_0x9494x3()});mxEvent[_0x7ddb[169]](this[_0x7ddb[2018]],_0x7ddb[129],function(_0x9494x2){_0x9494x3()})}}});_0x9494x2= function(_0x9494x2,_0x9494x3){null!= this[_0x7ddb[1630]]&& (_0x9494x2[_0x7ddb[124]][_0x7ddb[1630]]= this[_0x7ddb[1630]],_0x9494x2[_0x7ddb[124]][_0x7ddb[465]]= _0x7ddb[1631],_0x9494x2[_0x7ddb[124]][_0x7ddb[1629]]= _0x7ddb[942]);_0x9494x2[_0x7ddb[124]][_0x7ddb[1537]]= _0x7ddb[1391];_0x9494x3&& (_0x9494x2[_0x7ddb[124]][_0x7ddb[2028]]= _0x7ddb[2029]);mxClient[_0x7ddb[80]]?(_0x9494x5[_0x7ddb[171]](_0x9494x2[_0x7ddb[342]]),_0x9494x2[_0x7ddb[265]][_0x7ddb[266]](_0x9494x2)):(_0x9494x2[_0x7ddb[265]][_0x7ddb[266]](_0x9494x2),_0x9494x5[_0x7ddb[112]][_0x7ddb[62]](_0x9494x2));if(_0x9494x3){var _0x9494x4=_0x9494x5[_0x7ddb[55]](_0x7ddb[1054]);_0x9494x4[_0x7ddb[926]]= _0x7ddb[2030];_0x9494x5[_0x7ddb[112]][_0x7ddb[62]](_0x9494x4)}};var _0x9494x1a=this[_0x7ddb[2031]](this[_0x7ddb[2013]][_0x7ddb[117]],this[_0x7ddb[2013]][_0x7ddb[119]]);if(null!= _0x9494x1a){for(var _0x9494x1b=0;_0x9494x1b< _0x9494x1a[_0x7ddb[67]];_0x9494x1b++){_0x9494x2(_0x9494x1a[_0x9494x1b],!0)}};for(var _0x9494x1c=this[_0x7ddb[2032]](this[_0x7ddb[2013]][_0x7ddb[117]],this[_0x7ddb[2013]][_0x7ddb[119]]),_0x9494x1b=0;_0x9494x1b< _0x9494x18;_0x9494x1b++){for(var _0x9494x1d=_0x9494x1b* _0x9494x16/ this[_0x7ddb[255]]- this[_0x7ddb[1733]]/ this[_0x7ddb[255]]+ (_0x9494xa[_0x7ddb[236]]- _0x9494x14[_0x7ddb[236]]* _0x9494x12)/ _0x9494x12,_0x9494x1a=0;_0x9494x1a< _0x9494x17;_0x9494x1a++){if(null== this[_0x7ddb[2018]]){return null};var _0x9494x1e=_0x9494x1a* _0x9494x15/ this[_0x7ddb[255]]- this[_0x7ddb[1732]]/ this[_0x7ddb[255]]+ (_0x9494xa[_0x7ddb[235]]- _0x9494x14[_0x7ddb[235]]* _0x9494x12)/ _0x9494x12,_0x9494x1f=_0x9494x1b* _0x9494x17+ _0x9494x1a+ 1,_0x9494x4=this[_0x7ddb[2034]](this[_0x7ddb[2013]][_0x7ddb[117]],this[_0x7ddb[2013]][_0x7ddb[119]],mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[2033]](-_0x9494x1e,-_0x9494x1d,this[_0x7ddb[255]],_0x9494x1f,_0x9494x2)}));_0x9494x4[_0x7ddb[57]](_0x7ddb[1363],_0x7ddb[2035]+ _0x9494x1f);_0x9494x2(_0x9494x4,null!= _0x9494x1c|| _0x9494x1b< _0x9494x18- 1|| _0x9494x1a< _0x9494x17- 1)}};if(null!= _0x9494x1c){for(_0x9494x1b= 0;_0x9494x1b< _0x9494x1c[_0x7ddb[67]];_0x9494x1b++){_0x9494x2(_0x9494x1c[_0x9494x1b],_0x9494x1b< _0x9494x1c[_0x7ddb[67]])}};_0x9494x5[_0x7ddb[171]](_0x7ddb[527]);_0x9494x5[_0x7ddb[171]](_0x7ddb[534]);_0x9494x5[_0x7ddb[268]]();_0x9494x19();mxEvent[_0x7ddb[762]](_0x9494x5[_0x7ddb[112]])};this[_0x7ddb[2018]][_0x7ddb[393]]()}catch(y){null!= _0x9494x4&& null!= _0x9494x4[_0x7ddb[265]]&& _0x9494x4[_0x7ddb[265]][_0x7ddb[266]](_0x9494x4)}finally{this[_0x7ddb[1179]][_0x7ddb[259]][_0x7ddb[2023]]= _0x9494x3};return this[_0x7ddb[2018]]};mxPrintPreview[_0x7ddb[202]][_0x7ddb[2025]]= function(_0x9494x2,_0x9494x3){null!= this[_0x7ddb[924]]&& _0x9494x2[_0x7ddb[171]](_0x7ddb[2036]+ this[_0x7ddb[924]]+ _0x7ddb[2037]);_0x9494x2[_0x7ddb[171]](_0x7ddb[2038]);_0x9494x2[_0x7ddb[171]](_0x7ddb[2039]);_0x9494x2[_0x7ddb[171]](_0x7ddb[2040]);_0x9494x2[_0x7ddb[171]](_0x7ddb[2041]);_0x9494x2[_0x7ddb[171]](_0x7ddb[233]);_0x9494x2[_0x7ddb[171]](_0x7ddb[2042]);_0x9494x2[_0x7ddb[171]](_0x7ddb[2043]);_0x9494x2[_0x7ddb[171]](_0x7ddb[2044]);_0x9494x2[_0x7ddb[171]](_0x7ddb[2045]);_0x9494x2[_0x7ddb[171]](_0x7ddb[233]);null!= _0x9494x3&& _0x9494x2[_0x7ddb[171]](_0x9494x3);_0x9494x2[_0x7ddb[171]](_0x7ddb[2046])};mxPrintPreview[_0x7ddb[202]][_0x7ddb[2027]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[2018]][_0x7ddb[395]],_0x9494x5=_0x9494x4[_0x7ddb[55]](_0x7ddb[116]);_0x9494x5[_0x7ddb[926]]= _0x7ddb[2047];_0x9494x5[_0x7ddb[57]](_0x7ddb[467],_0x7ddb[468]);for(var _0x9494x9=_0x9494x4[_0x7ddb[55]](_0x7ddb[120]),_0x9494xa=0;_0x9494xa< _0x9494x2;_0x9494xa++){for(var _0x9494x12=_0x9494x4[_0x7ddb[55]](_0x7ddb[121]),_0x9494x13=0;_0x9494x13< _0x9494x3;_0x9494x13++){var _0x9494x14=_0x9494xa* _0x9494x3+ _0x9494x13+ 1,_0x9494x15=_0x9494x4[_0x7ddb[55]](_0x7ddb[122]);if(!mxClient[_0x7ddb[133]]|| mxClient[_0x7ddb[75]] || mxClient[_0x7ddb[76]]){var _0x9494x16=_0x9494x4[_0x7ddb[55]](_0x7ddb[2048]);_0x9494x16[_0x7ddb[57]](_0x7ddb[44],_0x7ddb[2049]+ _0x9494x14);mxUtils[_0x7ddb[53]](_0x9494x16,_0x9494x14,_0x9494x4);_0x9494x15[_0x7ddb[62]](_0x9494x16)}else {mxUtils[_0x7ddb[53]](_0x9494x15,_0x9494x14,_0x9494x4)};_0x9494x12[_0x7ddb[62]](_0x9494x15)};_0x9494x9[_0x7ddb[62]](_0x9494x12)};_0x9494x5[_0x7ddb[62]](_0x9494x9);return _0x9494x5};mxPrintPreview[_0x7ddb[202]][_0x7ddb[2034]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=document[_0x7ddb[55]](_0x7ddb[485]);try{_0x9494x5[_0x7ddb[124]][_0x7ddb[117]]= _0x9494x2+ _0x7ddb[168];_0x9494x5[_0x7ddb[124]][_0x7ddb[119]]= _0x9494x3+ _0x7ddb[168];_0x9494x5[_0x7ddb[124]][_0x7ddb[277]]= _0x7ddb[188];_0x9494x5[_0x7ddb[124]][_0x7ddb[2050]]= _0x7ddb[1824];_0x9494x5[_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[1500];var _0x9494x9=document[_0x7ddb[55]](_0x7ddb[485]);_0x9494x9[_0x7ddb[124]][_0x7ddb[125]]= this[_0x7ddb[467]]+ _0x7ddb[168];_0x9494x9[_0x7ddb[124]][_0x7ddb[361]]= this[_0x7ddb[467]]+ _0x7ddb[168];_0x9494x9[_0x7ddb[124]][_0x7ddb[117]]= _0x9494x2- 2* this[_0x7ddb[467]]+ _0x7ddb[168];_0x9494x9[_0x7ddb[124]][_0x7ddb[119]]= _0x9494x3- 2* this[_0x7ddb[467]]+ _0x7ddb[168];_0x9494x9[_0x7ddb[124]][_0x7ddb[277]]= _0x7ddb[188];this[_0x7ddb[1179]][_0x7ddb[507]]== mxConstants[_0x7ddb[1523]]&& (_0x9494x9[_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[492]);_0x9494x5[_0x7ddb[62]](_0x9494x9);document[_0x7ddb[112]][_0x7ddb[62]](_0x9494x5);_0x9494x4(_0x9494x9)}catch(f){throw _0x9494x5[_0x7ddb[265]][_0x7ddb[266]](_0x9494x5),f};return _0x9494x5};mxPrintPreview[_0x7ddb[202]][_0x7ddb[2033]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x9494x5= this[_0x7ddb[1179]][_0x7ddb[249]]();var _0x9494xa=this[_0x7ddb[1179]][_0x7ddb[526]];this[_0x7ddb[1179]][_0x7ddb[526]]= _0x9494x9;var _0x9494x12=_0x9494x5[_0x7ddb[2051]](),_0x9494x13=_0x9494x5[_0x7ddb[2052]](),_0x9494x14=_0x9494x5[_0x7ddb[2024]](),_0x9494x15=_0x9494x5[_0x7ddb[1524]]();this[_0x7ddb[1179]][_0x7ddb[507]]== mxConstants[_0x7ddb[508]]?_0x9494x5[_0x7ddb[1569]]():this[_0x7ddb[1179]][_0x7ddb[507]]== mxConstants[_0x7ddb[1523]]?_0x9494x5[_0x7ddb[1571]]():_0x9494x5[_0x7ddb[1570]]();var _0x9494x16=_0x9494x5[_0x7ddb[503]]();_0x9494x5[_0x7ddb[504]](!1);var _0x9494x17=this[_0x7ddb[1179]][_0x7ddb[994]]();this[_0x7ddb[1179]][_0x7ddb[995]](!1);var _0x9494x18=_0x9494x5[_0x7ddb[512]]();_0x9494x5[_0x7ddb[513]]= new mxPoint(_0x9494x2,_0x9494x3);_0x9494x2= null;try{var _0x9494x19=[this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[501]]()];_0x9494x2= new mxTemporaryCellStates(_0x9494x5,_0x9494x4,_0x9494x19)}finally{if(mxClient[_0x7ddb[80]]){_0x9494x5[_0x7ddb[506]][_0x7ddb[339]]= _0x7ddb[110]}else {for(_0x9494x4= _0x9494x9[_0x7ddb[285]];null!= _0x9494x4;){_0x9494x19= _0x9494x4[_0x7ddb[287]],_0x9494x3= _0x9494x4[_0x7ddb[301]][_0x7ddb[216]](),_0x7ddb[571]== _0x9494x3?(_0x9494x4[_0x7ddb[57]](_0x7ddb[117],parseInt(_0x9494x9[_0x7ddb[124]][_0x7ddb[117]])),_0x9494x4[_0x7ddb[57]](_0x7ddb[119],parseInt(_0x9494x9[_0x7ddb[124]][_0x7ddb[119]]))):_0x7ddb[583]!= _0x9494x4[_0x7ddb[124]][_0x7ddb[270]]&& _0x7ddb[116]!= _0x9494x3&& _0x9494x4[_0x7ddb[265]][_0x7ddb[266]](_0x9494x4),_0x9494x4= _0x9494x19}};_0x9494x5[_0x7ddb[506]][_0x7ddb[265]][_0x7ddb[266]](_0x9494x5[_0x7ddb[506]]);this[_0x7ddb[1179]][_0x7ddb[995]](_0x9494x17);this[_0x7ddb[1179]][_0x7ddb[526]]= _0x9494xa;_0x9494x5[_0x7ddb[510]]= _0x9494x12;_0x9494x5[_0x7ddb[2053]]= _0x9494x13;_0x9494x5[_0x7ddb[505]]= _0x9494x14;_0x9494x5[_0x7ddb[506]]= _0x9494x15;_0x9494x5[_0x7ddb[513]]= _0x9494x18;_0x9494x2[_0x7ddb[515]]();_0x9494x5[_0x7ddb[504]](_0x9494x16)}};mxPrintPreview[_0x7ddb[202]][_0x7ddb[2031]]= function(){return null};mxPrintPreview[_0x7ddb[202]][_0x7ddb[2032]]= function(){return null};mxPrintPreview[_0x7ddb[202]][_0x7ddb[540]]= function(){var _0x9494x2=this[_0x7ddb[392]]();null!= _0x9494x2&& _0x9494x2[_0x7ddb[540]]()};mxPrintPreview[_0x7ddb[202]][_0x7ddb[268]]= function(){null!= this[_0x7ddb[2018]]&& (this[_0x7ddb[2018]][_0x7ddb[268]](),this[_0x7ddb[2018]]= null)};function mxStylesheet(){this[_0x7ddb[2054]]= {};this[_0x7ddb[2056]](this[_0x7ddb[2055]]());this[_0x7ddb[2058]](this[_0x7ddb[2057]]())}mxStylesheet[_0x7ddb[202]][_0x7ddb[2055]]= function(){var _0x9494x2={};_0x9494x2[mxConstants[_0x7ddb[2059]]]= mxConstants[_0x7ddb[2060]];_0x9494x2[mxConstants[_0x7ddb[2061]]]= mxPerimeter[_0x7ddb[2062]];_0x9494x2[mxConstants[_0x7ddb[2063]]]= mxConstants[_0x7ddb[481]];_0x9494x2[mxConstants[_0x7ddb[2064]]]= mxConstants[_0x7ddb[479]];_0x9494x2[mxConstants[_0x7ddb[2065]]]= _0x7ddb[2066];_0x9494x2[mxConstants[_0x7ddb[2067]]]= _0x7ddb[2068];_0x9494x2[mxConstants[_0x7ddb[2069]]]= _0x7ddb[2070];return _0x9494x2};mxStylesheet[_0x7ddb[202]][_0x7ddb[2057]]= function(){var _0x9494x2={};_0x9494x2[mxConstants[_0x7ddb[2059]]]= mxConstants[_0x7ddb[2071]];_0x9494x2[mxConstants[_0x7ddb[1695]]]= mxConstants[_0x7ddb[1622]];_0x9494x2[mxConstants[_0x7ddb[2063]]]= mxConstants[_0x7ddb[481]];_0x9494x2[mxConstants[_0x7ddb[2064]]]= mxConstants[_0x7ddb[479]];_0x9494x2[mxConstants[_0x7ddb[2067]]]= _0x7ddb[2068];_0x9494x2[mxConstants[_0x7ddb[2069]]]= _0x7ddb[2072];return _0x9494x2};mxStylesheet[_0x7ddb[202]][_0x7ddb[2056]]= function(_0x9494x2){this[_0x7ddb[2074]](_0x7ddb[2073],_0x9494x2)};mxStylesheet[_0x7ddb[202]][_0x7ddb[2058]]= function(_0x9494x2){this[_0x7ddb[2074]](_0x7ddb[2075],_0x9494x2)};mxStylesheet[_0x7ddb[202]][_0x7ddb[2076]]= function(){return this[_0x7ddb[2054]][_0x7ddb[2073]]};mxStylesheet[_0x7ddb[202]][_0x7ddb[2077]]= function(){return this[_0x7ddb[2054]][_0x7ddb[2075]]};mxStylesheet[_0x7ddb[202]][_0x7ddb[2074]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[2054]][_0x9494x2]= _0x9494x3};mxStylesheet[_0x7ddb[202]][_0x7ddb[1705]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=_0x9494x3;if(null!= _0x9494x2&& 0< _0x9494x2[_0x7ddb[67]]){for(var _0x9494x5=_0x9494x2[_0x7ddb[224]](_0x7ddb[471]),_0x9494x4=null!= _0x9494x4&& _0x7ddb[471]!= _0x9494x2[_0x7ddb[225]](0)?mxUtils[_0x7ddb[238]](_0x9494x4):{},_0x9494x9=0;_0x9494x9< _0x9494x5[_0x7ddb[67]];_0x9494x9++){var _0x9494xa=_0x9494x5[_0x9494x9],_0x9494x12=_0x9494xa[_0x7ddb[2]](_0x7ddb[226]);if(0<= _0x9494x12){var _0x9494x13=_0x9494xa[_0x7ddb[85]](0,_0x9494x12),_0x9494xa=_0x9494xa[_0x7ddb[85]](_0x9494x12+ 1);_0x9494xa== mxConstants[_0x7ddb[217]]? delete _0x9494x4[_0x9494x13]:mxUtils[_0x7ddb[1946]](_0x9494xa)?_0x9494x4[_0x9494x13]= parseFloat(_0x9494xa):_0x9494x4[_0x9494x13]= _0x9494xa}else {if(_0x9494xa= this[_0x7ddb[2054]][_0x9494xa],null!= _0x9494xa){for(_0x9494x13 in _0x9494xa){_0x9494x4[_0x9494x13]= _0x9494xa[_0x9494x13]}}}}};return _0x9494x4};function mxCellState(_0x9494x2,_0x9494x3,_0x9494x4){this[_0x7ddb[441]]= _0x9494x2;this[_0x7ddb[246]]= _0x9494x3;this[_0x7ddb[124]]= _0x9494x4;this[_0x7ddb[2078]]= new mxPoint;this[_0x7ddb[2079]]= new mxPoint}mxCellState[_0x7ddb[202]]= new mxRectangle;mxCellState[_0x7ddb[202]][_0x7ddb[196]]= mxCellState;mxCellState[_0x7ddb[202]][_0x7ddb[441]]= null;mxCellState[_0x7ddb[202]][_0x7ddb[246]]= null;mxCellState[_0x7ddb[202]][_0x7ddb[124]]= null;mxCellState[_0x7ddb[202]][_0x7ddb[2080]]= !0;mxCellState[_0x7ddb[202]][_0x7ddb[2081]]= !1;mxCellState[_0x7ddb[202]][_0x7ddb[2082]]= !1;mxCellState[_0x7ddb[202]][_0x7ddb[2078]]= null;mxCellState[_0x7ddb[202]][_0x7ddb[439]]= null;mxCellState[_0x7ddb[202]][_0x7ddb[2079]]= null;mxCellState[_0x7ddb[202]][_0x7ddb[2083]]= null;mxCellState[_0x7ddb[202]][_0x7ddb[2084]]= null;mxCellState[_0x7ddb[202]][_0x7ddb[2085]]= 0;mxCellState[_0x7ddb[202]][_0x7ddb[67]]= 0;mxCellState[_0x7ddb[202]][_0x7ddb[2086]]= null;mxCellState[_0x7ddb[202]][_0x7ddb[253]]= null;mxCellState[_0x7ddb[202]][_0x7ddb[963]]= null;mxCellState[_0x7ddb[202]][_0x7ddb[2087]]= function(_0x9494x2,_0x9494x3){_0x9494x2= _0x9494x2|| 0;_0x9494x3= null!= _0x9494x3?_0x9494x3: new mxRectangle(this[_0x7ddb[235]],this[_0x7ddb[236]],this[_0x7ddb[117]],this[_0x7ddb[119]]);if(null!= this[_0x7ddb[253]]&& null!= this[_0x7ddb[253]][_0x7ddb[1561]]){var _0x9494x4=this[_0x7ddb[253]][_0x7ddb[1561]][_0x7ddb[1548]](this[_0x7ddb[124]],_0x9494x3[_0x7ddb[235]],_0x9494x3[_0x7ddb[236]],_0x9494x3[_0x7ddb[117]],_0x9494x3[_0x7ddb[119]]);_0x9494x3[_0x7ddb[235]]= _0x9494x4[_0x7ddb[235]];_0x9494x3[_0x7ddb[236]]= _0x9494x4[_0x7ddb[236]];_0x9494x3[_0x7ddb[117]]= this[_0x7ddb[253]][_0x7ddb[1561]][_0x7ddb[1532]]* _0x9494x4[_0x7ddb[117]];_0x9494x3[_0x7ddb[119]]= this[_0x7ddb[253]][_0x7ddb[1561]][_0x7ddb[1533]]* _0x9494x4[_0x7ddb[119]]};0!= _0x9494x2&& _0x9494x3[_0x7ddb[244]](_0x9494x2);return _0x9494x3};mxCellState[_0x7ddb[202]][_0x7ddb[2088]]= function(_0x9494x2,_0x9494x3){_0x9494x3?(null== this[_0x7ddb[439]]&& (this[_0x7ddb[439]]= []),0== this[_0x7ddb[439]][_0x7ddb[67]]?this[_0x7ddb[439]][_0x7ddb[207]](_0x9494x2):this[_0x7ddb[439]][0]= _0x9494x2):null== this[_0x7ddb[439]]?(this[_0x7ddb[439]]= [],this[_0x7ddb[439]][_0x7ddb[207]](null),this[_0x7ddb[439]][_0x7ddb[207]](_0x9494x2)):1== this[_0x7ddb[439]][_0x7ddb[67]]?this[_0x7ddb[439]][_0x7ddb[207]](_0x9494x2):this[_0x7ddb[439]][this[_0x7ddb[439]][_0x7ddb[67]]- 1]= _0x9494x2};mxCellState[_0x7ddb[202]][_0x7ddb[1609]]= function(_0x9494x2){null!= this[_0x7ddb[253]]&& this[_0x7ddb[253]][_0x7ddb[1609]](_0x9494x2);null!= this[_0x7ddb[963]]&& this[_0x7ddb[963]][_0x7ddb[1609]](_0x9494x2)};mxCellState[_0x7ddb[202]][_0x7ddb[1710]]= function(_0x9494x2){_0x9494x2= this[_0x7ddb[2089]](_0x9494x2);return null!= _0x9494x2?_0x9494x2[_0x7ddb[246]]:null};mxCellState[_0x7ddb[202]][_0x7ddb[2089]]= function(_0x9494x2){return _0x9494x2?this[_0x7ddb[2083]]:this[_0x7ddb[2084]]};mxCellState[_0x7ddb[202]][_0x7ddb[2090]]= function(_0x9494x2,_0x9494x3){_0x9494x3?this[_0x7ddb[2083]]= _0x9494x2:this[_0x7ddb[2084]]= _0x9494x2};mxCellState[_0x7ddb[202]][_0x7ddb[515]]= function(){this[_0x7ddb[441]][_0x7ddb[1179]][_0x7ddb[259]][_0x7ddb[515]](this)};mxCellState[_0x7ddb[202]][_0x7ddb[238]]= function(){var _0x9494x2= new mxCellState(this[_0x7ddb[441]],this[_0x7ddb[246]],this[_0x7ddb[124]]);if(null!= this[_0x7ddb[439]]){_0x9494x2[_0x7ddb[439]]= [];for(var _0x9494x3=0;_0x9494x3< this[_0x7ddb[439]][_0x7ddb[67]];_0x9494x3++){_0x9494x2[_0x7ddb[439]][_0x9494x3]= this[_0x7ddb[439]][_0x9494x3][_0x7ddb[238]]()}};null!= this[_0x7ddb[2078]]&& (_0x9494x2[_0x7ddb[2078]]= this[_0x7ddb[2078]][_0x7ddb[238]]());null!= this[_0x7ddb[2079]]&& (_0x9494x2[_0x7ddb[2079]]= this[_0x7ddb[2079]][_0x7ddb[238]]());null!= this[_0x7ddb[1563]]&& (_0x9494x2[_0x7ddb[1563]]= this[_0x7ddb[1563]][_0x7ddb[238]]());_0x9494x2[_0x7ddb[2085]]= this[_0x7ddb[2085]];_0x9494x2[_0x7ddb[2086]]= this[_0x7ddb[2086]];_0x9494x2[_0x7ddb[67]]= this[_0x7ddb[67]];_0x9494x2[_0x7ddb[235]]= this[_0x7ddb[235]];_0x9494x2[_0x7ddb[236]]= this[_0x7ddb[236]];_0x9494x2[_0x7ddb[117]]= this[_0x7ddb[117]];_0x9494x2[_0x7ddb[119]]= this[_0x7ddb[119]];return _0x9494x2};function mxGraphSelectionModel(_0x9494x2){this[_0x7ddb[1179]]= _0x9494x2;this[_0x7ddb[895]]= []}mxGraphSelectionModel[_0x7ddb[202]]= new mxEventSource;mxGraphSelectionModel[_0x7ddb[202]][_0x7ddb[196]]= mxGraphSelectionModel;mxGraphSelectionModel[_0x7ddb[202]][_0x7ddb[2091]]= _0x7ddb[130]!= mxClient[_0x7ddb[90]]?_0x7ddb[819]:_0x7ddb[110];mxGraphSelectionModel[_0x7ddb[202]][_0x7ddb[2092]]= _0x7ddb[130]!= mxClient[_0x7ddb[90]]?_0x7ddb[2093]:_0x7ddb[110];mxGraphSelectionModel[_0x7ddb[202]][_0x7ddb[1179]]= null;mxGraphSelectionModel[_0x7ddb[202]][_0x7ddb[2094]]= !1;mxGraphSelectionModel[_0x7ddb[202]][_0x7ddb[2095]]= function(){return this[_0x7ddb[2094]]};mxGraphSelectionModel[_0x7ddb[202]][_0x7ddb[2096]]= function(_0x9494x2){this[_0x7ddb[2094]]= _0x9494x2};mxGraphSelectionModel[_0x7ddb[202]][_0x7ddb[2097]]= function(_0x9494x2){return null!= _0x9494x2?0<= mxUtils[_0x7ddb[2]](this[_0x7ddb[895]],_0x9494x2):!1};mxGraphSelectionModel[_0x7ddb[202]][_0x7ddb[1107]]= function(){return 0== this[_0x7ddb[895]][_0x7ddb[67]]};mxGraphSelectionModel[_0x7ddb[202]][_0x7ddb[200]]= function(){this[_0x7ddb[2098]](null,this[_0x7ddb[895]])};mxGraphSelectionModel[_0x7ddb[202]][_0x7ddb[2099]]= function(_0x9494x2){null!= _0x9494x2&& this[_0x7ddb[2100]]([_0x9494x2])};mxGraphSelectionModel[_0x7ddb[202]][_0x7ddb[2100]]= function(_0x9494x2){if(null!= _0x9494x2){this[_0x7ddb[2094]]&& (_0x9494x2= [this[_0x7ddb[2101]](_0x9494x2)]);for(var _0x9494x3=[],_0x9494x4=0;_0x9494x4< _0x9494x2[_0x7ddb[67]];_0x9494x4++){this[_0x7ddb[1179]][_0x7ddb[2102]](_0x9494x2[_0x9494x4])&& _0x9494x3[_0x7ddb[207]](_0x9494x2[_0x9494x4])};this[_0x7ddb[2098]](_0x9494x3,this[_0x7ddb[895]])}};mxGraphSelectionModel[_0x7ddb[202]][_0x7ddb[2101]]= function(_0x9494x2){if(null!= _0x9494x2){for(var _0x9494x3=0;_0x9494x3< _0x9494x2[_0x7ddb[67]];_0x9494x3++){if(this[_0x7ddb[1179]][_0x7ddb[2102]](_0x9494x2[_0x9494x3])){return _0x9494x2[_0x9494x3]}}};return null};mxGraphSelectionModel[_0x7ddb[202]][_0x7ddb[2103]]= function(_0x9494x2){null!= _0x9494x2&& this[_0x7ddb[832]]([_0x9494x2])};mxGraphSelectionModel[_0x7ddb[202]][_0x7ddb[832]]= function(_0x9494x2){if(null!= _0x9494x2){var _0x9494x3=null;this[_0x7ddb[2094]]&& (_0x9494x3= this[_0x7ddb[895]],_0x9494x2= [this[_0x7ddb[2101]](_0x9494x2)]);for(var _0x9494x4=[],_0x9494x5=0;_0x9494x5< _0x9494x2[_0x7ddb[67]];_0x9494x5++){!this[_0x7ddb[2097]](_0x9494x2[_0x9494x5])&& this[_0x7ddb[1179]][_0x7ddb[2102]](_0x9494x2[_0x9494x5]) && _0x9494x4[_0x7ddb[207]](_0x9494x2[_0x9494x5])};this[_0x7ddb[2098]](_0x9494x4,_0x9494x3)}};mxGraphSelectionModel[_0x7ddb[202]][_0x7ddb[2104]]= function(_0x9494x2){null!= _0x9494x2&& this[_0x7ddb[842]]([_0x9494x2])};mxGraphSelectionModel[_0x7ddb[202]][_0x7ddb[842]]= function(_0x9494x2){if(null!= _0x9494x2){for(var _0x9494x3=[],_0x9494x4=0;_0x9494x4< _0x9494x2[_0x7ddb[67]];_0x9494x4++){this[_0x7ddb[2097]](_0x9494x2[_0x9494x4])&& _0x9494x3[_0x7ddb[207]](_0x9494x2[_0x9494x4])};this[_0x7ddb[2098]](null,_0x9494x3)}};mxGraphSelectionModel[_0x7ddb[202]][_0x7ddb[2098]]= function(_0x9494x2,_0x9494x3){if(null!= _0x9494x2&& 0< _0x9494x2[_0x7ddb[67]]&& null!= _0x9494x2[0]|| null!= _0x9494x3&& 0< _0x9494x3[_0x7ddb[67]]&& null!= _0x9494x3[0]){var _0x9494x4= new mxSelectionChange(this,_0x9494x2,_0x9494x3);_0x9494x4[_0x7ddb[350]]();var _0x9494x5= new mxUndoableEdit(this,!1);_0x9494x5[_0x7ddb[99]](_0x9494x4);this[_0x7ddb[746]]( new mxEventObject(mxEvent.UNDO,_0x7ddb[1061],_0x9494x5))}};mxGraphSelectionModel[_0x7ddb[202]][_0x7ddb[1941]]= function(_0x9494x2){null!= _0x9494x2&& !this[_0x7ddb[2097]](_0x9494x2)&& this[_0x7ddb[895]][_0x7ddb[207]](_0x9494x2)};mxGraphSelectionModel[_0x7ddb[202]][_0x7ddb[1102]]= function(_0x9494x2){null!= _0x9494x2&& (_0x9494x2= mxUtils[_0x7ddb[2]](this[_0x7ddb[895]],_0x9494x2),0<= _0x9494x2&& this[_0x7ddb[895]][_0x7ddb[300]](_0x9494x2,1))};function mxSelectionChange(_0x9494x2,_0x9494x3,_0x9494x4){this[_0x7ddb[2105]]= _0x9494x2;this[_0x7ddb[2106]]= null!= _0x9494x3?_0x9494x3[_0x7ddb[1853]]():null;this[_0x7ddb[2107]]= null!= _0x9494x4?_0x9494x4[_0x7ddb[1853]]():null}mxSelectionChange[_0x7ddb[202]][_0x7ddb[350]]= function(){var _0x9494x2=mxLog[_0x7ddb[2109]](_0x7ddb[2108]);window[_0x7ddb[879]]= mxResources[_0x7ddb[203]](this[_0x7ddb[2105]][_0x7ddb[2092]])|| this[_0x7ddb[2105]][_0x7ddb[2092]];if(null!= this[_0x7ddb[2107]]){for(var _0x9494x3=0;_0x9494x3< this[_0x7ddb[2107]][_0x7ddb[67]];_0x9494x3++){this[_0x7ddb[2105]][_0x7ddb[1102]](this[_0x7ddb[2107]][_0x9494x3])}};if(null!= this[_0x7ddb[2106]]){for(_0x9494x3= 0;_0x9494x3< this[_0x7ddb[2106]][_0x7ddb[67]];_0x9494x3++){this[_0x7ddb[2105]][_0x7ddb[1941]](this[_0x7ddb[2106]][_0x9494x3])}};_0x9494x3= this[_0x7ddb[2106]];this[_0x7ddb[2106]]= this[_0x7ddb[2107]];this[_0x7ddb[2107]]= _0x9494x3;window[_0x7ddb[879]]= mxResources[_0x7ddb[203]](this[_0x7ddb[2105]][_0x7ddb[2091]])|| this[_0x7ddb[2105]][_0x7ddb[2091]];mxLog[_0x7ddb[2110]](_0x7ddb[2108],_0x9494x2);this[_0x7ddb[2105]][_0x7ddb[746]]( new mxEventObject(mxEvent.CHANGE,_0x7ddb[2106],this[_0x7ddb[2106]],_0x7ddb[2107],this[_0x7ddb[2107]]))};function mxCellEditor(_0x9494x2){this[_0x7ddb[1179]]= _0x9494x2}mxCellEditor[_0x7ddb[202]][_0x7ddb[1179]]= null;mxCellEditor[_0x7ddb[202]][_0x7ddb[126]]= null;mxCellEditor[_0x7ddb[202]][_0x7ddb[2111]]= null;mxCellEditor[_0x7ddb[202]][_0x7ddb[2112]]= null;mxCellEditor[_0x7ddb[202]][_0x7ddb[2113]]= !1;mxCellEditor[_0x7ddb[202]][_0x7ddb[2114]]= !0;mxCellEditor[_0x7ddb[202]][_0x7ddb[2115]]= _0x7ddb[110];mxCellEditor[_0x7ddb[202]][_0x7ddb[2116]]= _0x7ddb[110];mxCellEditor[_0x7ddb[202]][_0x7ddb[176]]= function(){this[_0x7ddb[126]]= document[_0x7ddb[55]](_0x7ddb[126]);this[_0x7ddb[126]][_0x7ddb[926]]= _0x7ddb[2117];this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[492];this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[277]]= _0x7ddb[189];this[_0x7ddb[126]][_0x7ddb[57]](_0x7ddb[2118],_0x7ddb[2119]);this[_0x7ddb[126]][_0x7ddb[57]](_0x7ddb[969],_0x7ddb[2120]);mxClient[_0x7ddb[133]]&& (this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[129]]= _0x7ddb[130]);mxEvent[_0x7ddb[169]](this[_0x7ddb[126]],_0x7ddb[2121],mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[2122]]()}));mxEvent[_0x7ddb[169]](this[_0x7ddb[126]],_0x7ddb[2123],mxUtils[_0x7ddb[885]](this,function(_0x9494x2){mxEvent[_0x7ddb[721]](_0x9494x2)|| (113== _0x9494x2[_0x7ddb[2124]]|| this[_0x7ddb[1179]][_0x7ddb[2125]]()&& 13== _0x9494x2[_0x7ddb[2124]]&& !mxEvent[_0x7ddb[775]](_0x9494x2)&& !mxEvent[_0x7ddb[774]](_0x9494x2)?(this[_0x7ddb[1179]][_0x7ddb[2126]](!1),mxEvent[_0x7ddb[722]](_0x9494x2)):27== _0x9494x2[_0x7ddb[2124]]?(this[_0x7ddb[1179]][_0x7ddb[2126]](!0),mxEvent[_0x7ddb[722]](_0x9494x2)):(this[_0x7ddb[2127]]&& (this[_0x7ddb[2127]]= !1,this[_0x7ddb[126]][_0x7ddb[131]]= _0x7ddb[110]),this[_0x7ddb[2128]](!0)))}));mxEvent[_0x7ddb[169]](this[_0x7ddb[126]],_0x7ddb[2129],mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[2114]]&& !mxEvent[_0x7ddb[721]](_0x9494x2)&& setTimeout(mxUtils[_0x7ddb[885]](this,function(){this[_0x7ddb[129]]()}),0)}))};mxCellEditor[_0x7ddb[202]][_0x7ddb[129]]= function(){if(null!= this[_0x7ddb[1653]]){var _0x9494x2=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[248]](this[_0x7ddb[2111]]),_0x9494x3=this[_0x7ddb[1179]][_0x7ddb[2130]](_0x9494x2[_0x7ddb[246]]),_0x9494x4=this[_0x7ddb[1179]][_0x7ddb[2131]](_0x9494x2[_0x7ddb[246]]);if(this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[250]](_0x9494x2[_0x7ddb[246]])){this[_0x7ddb[1562]][_0x7ddb[235]]= _0x9494x2[_0x7ddb[2079]][_0x7ddb[235]],this[_0x7ddb[1562]][_0x7ddb[236]]= _0x9494x2[_0x7ddb[2079]][_0x7ddb[236]],this[_0x7ddb[1562]][_0x7ddb[117]]= 0,this[_0x7ddb[1562]][_0x7ddb[119]]= 0}else {if(null!= this[_0x7ddb[1562]]){this[_0x7ddb[1562]][_0x7ddb[235]]= _0x9494x2[_0x7ddb[235]];this[_0x7ddb[1562]][_0x7ddb[236]]= _0x9494x2[_0x7ddb[236]];this[_0x7ddb[1562]][_0x7ddb[117]]= _0x9494x2[_0x7ddb[117]];this[_0x7ddb[1562]][_0x7ddb[119]]= _0x9494x2[_0x7ddb[119]];var _0x9494x5=mxUtils[_0x7ddb[433]](_0x9494x2[_0x7ddb[124]],mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);_0x9494x5== mxConstants[_0x7ddb[2132]]?this[_0x7ddb[1562]][_0x7ddb[235]]-= _0x9494x2[_0x7ddb[117]]:_0x9494x5== mxConstants[_0x7ddb[480]]&& (this[_0x7ddb[1562]][_0x7ddb[235]]+= _0x9494x2[_0x7ddb[117]]);_0x9494x5= mxUtils[_0x7ddb[433]](_0x9494x2[_0x7ddb[124]],mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE);_0x9494x5== mxConstants[_0x7ddb[1687]]?this[_0x7ddb[1562]][_0x7ddb[236]]-= _0x9494x2[_0x7ddb[119]]:_0x9494x5== mxConstants[_0x7ddb[482]]&& (this[_0x7ddb[1562]][_0x7ddb[236]]+= _0x9494x2[_0x7ddb[119]])}};_0x9494x5= this[_0x7ddb[126]][_0x7ddb[131]];if(_0x7ddb[192]== _0x9494x5[_0x7ddb[225]](_0x9494x5[_0x7ddb[67]]- 1)|| _0x7ddb[110]== _0x9494x5){_0x9494x5+= _0x7ddb[544]};_0x9494x5= mxUtils[_0x7ddb[321]](_0x9494x5,!1);_0x9494x4?(this[_0x7ddb[1653]][_0x7ddb[124]][_0x7ddb[493]]= _0x7ddb[1502],this[_0x7ddb[1653]][_0x7ddb[124]][_0x7ddb[117]]= this[_0x7ddb[1562]][_0x7ddb[117]]+ _0x7ddb[168]):_0x9494x5= _0x9494x5[_0x7ddb[230]](/ /g,_0x7ddb[544]);_0x9494x5= _0x9494x5[_0x7ddb[230]](/\n/g,_0x7ddb[1453]);this[_0x7ddb[1653]][_0x7ddb[339]]= _0x9494x5;var _0x9494x5=this[_0x7ddb[1653]][_0x7ddb[359]]+ 30,_0x9494x9=this[_0x7ddb[1653]][_0x7ddb[167]]+ 16,_0x9494x5=Math[_0x7ddb[160]](_0x9494x5,40),_0x9494x9=Math[_0x7ddb[160]](_0x9494x9,20);_0x9494x3&& (_0x9494x5= Math[_0x7ddb[243]](this[_0x7ddb[1562]][_0x7ddb[117]]- 4,_0x9494x5),_0x9494x9= Math[_0x7ddb[243]](this[_0x7ddb[1562]][_0x7ddb[119]],_0x9494x9));var _0x9494xa=null!= _0x9494x2[_0x7ddb[963]]?_0x9494x2[_0x7ddb[963]][_0x7ddb[1655]]:null;null== _0x9494xa&& (_0x9494xa= mxUtils[_0x7ddb[433]](_0x9494x2[_0x7ddb[124]],mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),_0x9494x2= mxUtils[_0x7ddb[433]](_0x9494x2[_0x7ddb[124]],mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),_0x9494xa= mxUtils[_0x7ddb[1501]](_0x9494xa,_0x9494x2));if(null!= _0x9494xa){if(_0x9494x3|| !_0x9494x4){this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[361]]= Math[_0x7ddb[160]](0,Math[_0x7ddb[488]](this[_0x7ddb[1562]][_0x7ddb[235]]- _0x9494xa[_0x7ddb[235]]* this[_0x7ddb[1562]][_0x7ddb[117]]+ _0x9494xa[_0x7ddb[235]]* _0x9494x5)- 3)+ _0x7ddb[168]};this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[125]]= Math[_0x7ddb[160]](0,Math[_0x7ddb[488]](this[_0x7ddb[1562]][_0x7ddb[236]]- _0x9494xa[_0x7ddb[236]]* this[_0x7ddb[1562]][_0x7ddb[119]]+ _0x9494xa[_0x7ddb[236]]* _0x9494x9)+ 4)+ _0x7ddb[168]};if(_0x9494x3|| !_0x9494x4){this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[117]]= _0x9494x5+ _0x7ddb[168]};this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[119]]= _0x9494x9+ _0x7ddb[168]}};mxCellEditor[_0x7ddb[202]][_0x7ddb[2133]]= function(){return this[_0x7ddb[2113]]};mxCellEditor[_0x7ddb[202]][_0x7ddb[2128]]= function(_0x9494x2){this[_0x7ddb[2113]]= _0x9494x2};mxCellEditor[_0x7ddb[202]][_0x7ddb[2122]]= function(){this[_0x7ddb[2126]](!this[_0x7ddb[1179]][_0x7ddb[2134]]())};mxCellEditor[_0x7ddb[202]][_0x7ddb[855]]= function(_0x9494x2,_0x9494x3){null== this[_0x7ddb[126]]&& this[_0x7ddb[176]]();this[_0x7ddb[2126]](!0);var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[248]](_0x9494x2);if(null!= _0x9494x4){this[_0x7ddb[2111]]= _0x9494x2;this[_0x7ddb[2112]]= _0x9494x3;this[_0x7ddb[2116]]= null;null!= _0x9494x4[_0x7ddb[963]]&& this[_0x7ddb[2135]](_0x9494x4)&& (this[_0x7ddb[2116]]= _0x9494x4[_0x7ddb[963]][_0x7ddb[252]],this[_0x7ddb[2116]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[188]);var _0x9494x5=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[255]],_0x9494x5=mxUtils[_0x7ddb[433]](_0x9494x4[_0x7ddb[124]],mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)* _0x9494x5,_0x9494x9=mxUtils[_0x7ddb[433]](_0x9494x4[_0x7ddb[124]],mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY),_0x9494xa=mxUtils[_0x7ddb[433]](_0x9494x4[_0x7ddb[124]],mxConstants.STYLE_FONTCOLOR,_0x7ddb[586]),_0x9494x12=mxUtils[_0x7ddb[433]](_0x9494x4[_0x7ddb[124]],mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),_0x9494x13=(mxUtils[_0x7ddb[433]](_0x9494x4[_0x7ddb[124]],mxConstants.STYLE_FONTSTYLE,0)& mxConstants[_0x7ddb[1410]])== mxConstants[_0x7ddb[1410]],_0x9494x14=(mxUtils[_0x7ddb[433]](_0x9494x4[_0x7ddb[124]],mxConstants.STYLE_FONTSTYLE,0)& mxConstants[_0x7ddb[1412]])== mxConstants[_0x7ddb[1412]],_0x9494x15=(mxUtils[_0x7ddb[433]](_0x9494x4[_0x7ddb[124]],mxConstants.STYLE_FONTSTYLE,0)& mxConstants[_0x7ddb[1414]])== mxConstants[_0x7ddb[1414]];this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[487]]= Math[_0x7ddb[488]](_0x9494x5)+ _0x7ddb[168];this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[489]]= Math[_0x7ddb[488]](_0x9494x5* mxConstants[_0x7ddb[490]])+ _0x7ddb[168];this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[486]]= _0x9494x9;this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[1165]]= _0x9494x12;this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[352]]= _0x9494xa;this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[1452]]= _0x9494x13?_0x7ddb[1447]:_0x7ddb[1502];this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[666]]= _0x9494x14?_0x7ddb[1449]:_0x7ddb[110];this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[354]]= _0x9494x15?_0x7ddb[355]:_0x7ddb[110];this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[277]]= _0x7ddb[278];this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[2136]]= _0x7ddb[130];this[_0x7ddb[1562]]= _0x9494x5= this[_0x7ddb[2137]](_0x9494x4);this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[361]]= _0x9494x5[_0x7ddb[235]]+ _0x7ddb[168];this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[125]]= _0x9494x5[_0x7ddb[236]]+ _0x7ddb[168];this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[117]]= _0x9494x5[_0x7ddb[117]]+ _0x7ddb[168];this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[119]]= _0x9494x5[_0x7ddb[119]]+ _0x7ddb[168];this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[931]]= 5;_0x9494x4= this[_0x7ddb[2138]](_0x9494x4,_0x9494x3);null== _0x9494x4|| 0== _0x9494x4[_0x7ddb[67]]?(_0x9494x4= this[_0x7ddb[2139]](),this[_0x7ddb[2127]]= !0):this[_0x7ddb[2127]]= !1;this[_0x7ddb[2128]](!1);this[_0x7ddb[126]][_0x7ddb[131]]= _0x9494x4;this[_0x7ddb[1179]][_0x7ddb[526]][_0x7ddb[62]](this[_0x7ddb[126]]);_0x7ddb[130]!= this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[495]]&& (this[_0x7ddb[2114]]&& (this[_0x7ddb[1653]]= this[_0x7ddb[2140]](),document[_0x7ddb[112]][_0x7ddb[62]](this[_0x7ddb[1653]]),this[_0x7ddb[129]]()),this[_0x7ddb[126]][_0x7ddb[393]](),this[_0x7ddb[126]][_0x7ddb[804]]())}};mxCellEditor[_0x7ddb[202]][_0x7ddb[2140]]= function(){var _0x9494x2=document[_0x7ddb[55]](_0x7ddb[485]),_0x9494x3=_0x9494x2[_0x7ddb[124]];_0x9494x3[_0x7ddb[491]]= _0x7ddb[492];_0x9494x3[_0x7ddb[493]]= _0x7ddb[494];_0x9494x3[_0x7ddb[187]]= _0x7ddb[188];_0x9494x3[_0x7ddb[495]]= mxClient[_0x7ddb[496]]?_0x7ddb[497]:_0x7ddb[498];_0x9494x3[_0x7ddb[499]]= _0x7ddb[500];_0x9494x3[_0x7ddb[123]]= _0x7ddb[125];_0x9494x3[_0x7ddb[489]]= this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[489]];_0x9494x3[_0x7ddb[487]]= this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[487]];_0x9494x3[_0x7ddb[486]]= this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[486]];_0x9494x3[_0x7ddb[1452]]= this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[1452]];_0x9494x3[_0x7ddb[1165]]= this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[1165]];_0x9494x3[_0x7ddb[666]]= this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[666]];_0x9494x3[_0x7ddb[354]]= this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[354]];return _0x9494x2};mxCellEditor[_0x7ddb[202]][_0x7ddb[2126]]= function(_0x9494x2){null!= this[_0x7ddb[2111]]&& (null!= this[_0x7ddb[2116]]&& (this[_0x7ddb[2116]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[189],this[_0x7ddb[2116]]= null),!_0x9494x2&& this[_0x7ddb[2133]]() && this[_0x7ddb[1179]][_0x7ddb[850]](this[_0x7ddb[2111]],this[_0x7ddb[2141]](),this[_0x7ddb[2112]]),null!= this[_0x7ddb[1653]]&& (document[_0x7ddb[112]][_0x7ddb[266]](this[_0x7ddb[1653]]),this[_0x7ddb[1653]]= null),this[_0x7ddb[1562]]= this[_0x7ddb[2112]]= this[_0x7ddb[2111]]= null,this[_0x7ddb[126]][_0x7ddb[2121]](),this[_0x7ddb[126]][_0x7ddb[265]][_0x7ddb[266]](this[_0x7ddb[126]]))};mxCellEditor[_0x7ddb[202]][_0x7ddb[2138]]= function(_0x9494x2,_0x9494x3){return this[_0x7ddb[1179]][_0x7ddb[2142]](_0x9494x2[_0x7ddb[246]],_0x9494x3)};mxCellEditor[_0x7ddb[202]][_0x7ddb[2141]]= function(){return this[_0x7ddb[126]][_0x7ddb[131]][_0x7ddb[230]](/\r/g,_0x7ddb[110])};mxCellEditor[_0x7ddb[202]][_0x7ddb[2135]]= function(_0x9494x2){return !0};mxCellEditor[_0x7ddb[202]][_0x7ddb[939]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[255]];return new mxRectangle(0,0,null== _0x9494x2[_0x7ddb[963]]?30:_0x9494x2[_0x7ddb[963]][_0x7ddb[803]]* _0x9494x3+ 20,_0x7ddb[361]== this[_0x7ddb[126]][_0x7ddb[124]][_0x7ddb[1165]]?120:40)};mxCellEditor[_0x7ddb[202]][_0x7ddb[2137]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[250]](_0x9494x2[_0x7ddb[246]]),_0x9494x4=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[255]],_0x9494x5=this[_0x7ddb[939]](_0x9494x2),_0x9494x9=_0x9494x5[_0x7ddb[117]],_0x9494x5=_0x9494x5[_0x7ddb[119]],_0x9494xa=parseInt(_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2143]]]|| 2)* _0x9494x4,_0x9494x12=parseInt(_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2144]]]|| 0)* _0x9494x4+ _0x9494xa,_0x9494x13=parseInt(_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2145]]]|| 0)* _0x9494x4+ _0x9494xa,_0x9494x14=parseInt(_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2146]]]|| 0)* _0x9494x4+ _0x9494xa,_0x9494x4=parseInt(_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2147]]]|| 0)* _0x9494x4+ _0x9494xa,_0x9494x13= new mxRectangle(_0x9494x2[_0x7ddb[235]],_0x9494x2[_0x7ddb[236]],Math[_0x7ddb[160]](_0x9494x9,_0x9494x2[_0x7ddb[117]]- _0x9494x4- _0x9494x13),Math[_0x7ddb[160]](_0x9494x5,_0x9494x2[_0x7ddb[119]]- _0x9494x12- _0x9494x14));_0x9494x3?(_0x9494x13[_0x7ddb[235]]= _0x9494x2[_0x7ddb[2079]][_0x7ddb[235]],_0x9494x13[_0x7ddb[236]]= _0x9494x2[_0x7ddb[2079]][_0x7ddb[236]],null!= _0x9494x2[_0x7ddb[963]]&& null!= _0x9494x2[_0x7ddb[963]][_0x7ddb[1563]]&& (0< _0x9494x2[_0x7ddb[963]][_0x7ddb[1563]][_0x7ddb[235]]&& (_0x9494x13[_0x7ddb[235]]= _0x9494x2[_0x7ddb[963]][_0x7ddb[1563]][_0x7ddb[235]]),0< _0x9494x2[_0x7ddb[963]][_0x7ddb[1563]][_0x7ddb[236]]&& (_0x9494x13[_0x7ddb[236]]= _0x9494x2[_0x7ddb[963]][_0x7ddb[1563]][_0x7ddb[236]]))):null!= _0x9494x2[_0x7ddb[963]]&& null!= _0x9494x2[_0x7ddb[963]][_0x7ddb[1563]]&& (_0x9494x13[_0x7ddb[235]]= Math[_0x7ddb[243]](_0x9494x13[_0x7ddb[235]],_0x9494x2[_0x7ddb[963]][_0x7ddb[1563]][_0x7ddb[235]]),_0x9494x13[_0x7ddb[236]]= Math[_0x7ddb[243]](_0x9494x13[_0x7ddb[236]],_0x9494x2[_0x7ddb[963]][_0x7ddb[1563]][_0x7ddb[236]]));_0x9494x13[_0x7ddb[235]]+= _0x9494x4;_0x9494x13[_0x7ddb[236]]+= _0x9494x12;null!= _0x9494x2[_0x7ddb[963]]&& null!= _0x9494x2[_0x7ddb[963]][_0x7ddb[1563]]&& (_0x9494x3?(_0x9494x13[_0x7ddb[117]]= Math[_0x7ddb[160]](_0x9494x9,_0x9494x2[_0x7ddb[963]][_0x7ddb[1563]][_0x7ddb[117]]),_0x9494x13[_0x7ddb[119]]= Math[_0x7ddb[160]](_0x9494x5,_0x9494x2[_0x7ddb[963]][_0x7ddb[1563]][_0x7ddb[119]])):(_0x9494x13[_0x7ddb[117]]= Math[_0x7ddb[160]](_0x9494x13[_0x7ddb[117]],_0x9494x2[_0x7ddb[963]][_0x7ddb[1563]][_0x7ddb[117]]),_0x9494x13[_0x7ddb[119]]= Math[_0x7ddb[160]](_0x9494x13[_0x7ddb[119]],_0x9494x2[_0x7ddb[963]][_0x7ddb[1563]][_0x7ddb[119]])));this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[1193]](_0x9494x2[_0x7ddb[246]])&& (_0x9494x3= mxUtils[_0x7ddb[433]](_0x9494x2[_0x7ddb[124]],mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER),_0x9494x3== mxConstants[_0x7ddb[2132]]?_0x9494x13[_0x7ddb[235]]-= _0x9494x2[_0x7ddb[117]]:_0x9494x3== mxConstants[_0x7ddb[480]]&& (_0x9494x13[_0x7ddb[235]]+= _0x9494x2[_0x7ddb[117]]),_0x9494x3= mxUtils[_0x7ddb[433]](_0x9494x2[_0x7ddb[124]],mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE),_0x9494x3== mxConstants[_0x7ddb[1687]]?_0x9494x13[_0x7ddb[236]]-= _0x9494x2[_0x7ddb[119]]:_0x9494x3== mxConstants[_0x7ddb[482]]&& (_0x9494x13[_0x7ddb[236]]+= _0x9494x2[_0x7ddb[119]]));return _0x9494x13};mxCellEditor[_0x7ddb[202]][_0x7ddb[2139]]= function(_0x9494x2){return this[_0x7ddb[2115]]};mxCellEditor[_0x7ddb[202]][_0x7ddb[2148]]= function(){return this[_0x7ddb[2111]]};mxCellEditor[_0x7ddb[202]][_0x7ddb[515]]= function(){null!= this[_0x7ddb[126]]&& (mxEvent[_0x7ddb[762]](this[_0x7ddb[126]]),null!= this[_0x7ddb[126]][_0x7ddb[265]]&& this[_0x7ddb[126]][_0x7ddb[265]][_0x7ddb[266]](this[_0x7ddb[126]]),this[_0x7ddb[126]]= null)};function mxCellRenderer(){}mxCellRenderer[_0x7ddb[202]][_0x7ddb[2149]]= mxConnector;mxCellRenderer[_0x7ddb[202]][_0x7ddb[2150]]= mxRectangleShape;mxCellRenderer[_0x7ddb[202]][_0x7ddb[2151]]= mxText;mxCellRenderer[_0x7ddb[202]][_0x7ddb[2152]]= !0;mxCellRenderer[_0x7ddb[202]][_0x7ddb[2153]]= {};mxCellRenderer[_0x7ddb[2154]]= function(_0x9494x2,_0x9494x3){mxCellRenderer[_0x7ddb[202]][_0x7ddb[2153]][_0x9494x2]= _0x9494x3};mxCellRenderer[_0x7ddb[2154]](mxConstants.SHAPE_RECTANGLE,mxRectangleShape);mxCellRenderer[_0x7ddb[2154]](mxConstants.SHAPE_ELLIPSE,mxEllipse);mxCellRenderer[_0x7ddb[2154]](mxConstants.SHAPE_RHOMBUS,mxRhombus);mxCellRenderer[_0x7ddb[2154]](mxConstants.SHAPE_CYLINDER,mxCylinder);mxCellRenderer[_0x7ddb[2154]](mxConstants.SHAPE_CONNECTOR,mxConnector);mxCellRenderer[_0x7ddb[2154]](mxConstants.SHAPE_ACTOR,mxActor);mxCellRenderer[_0x7ddb[2154]](mxConstants.SHAPE_TRIANGLE,mxTriangle);mxCellRenderer[_0x7ddb[2154]](mxConstants.SHAPE_HEXAGON,mxHexagon);mxCellRenderer[_0x7ddb[2154]](mxConstants.SHAPE_CLOUD,mxCloud);mxCellRenderer[_0x7ddb[2154]](mxConstants.SHAPE_LINE,mxLine);mxCellRenderer[_0x7ddb[2154]](mxConstants.SHAPE_ARROW,mxArrow);mxCellRenderer[_0x7ddb[2154]](mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse);mxCellRenderer[_0x7ddb[2154]](mxConstants.SHAPE_SWIMLANE,mxSwimlane);mxCellRenderer[_0x7ddb[2154]](mxConstants.SHAPE_IMAGE,mxImageShape);mxCellRenderer[_0x7ddb[2154]](mxConstants.SHAPE_LABEL,mxLabel);mxCellRenderer[_0x7ddb[202]][_0x7ddb[2155]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=_0x9494x2[_0x7ddb[441]][_0x7ddb[1179]][_0x7ddb[502]]();if(null!= _0x9494x2[_0x7ddb[441]][_0x7ddb[1179]][_0x7ddb[526]]&& null== _0x9494x2[_0x7ddb[253]]&& _0x9494x2[_0x7ddb[246]]!= _0x9494x2[_0x7ddb[441]][_0x7ddb[1741]]&& (_0x9494x4[_0x7ddb[1193]](_0x9494x2[_0x7ddb[246]])|| _0x9494x4[_0x7ddb[250]](_0x9494x2[_0x7ddb[246]]))){if(this[_0x7ddb[2156]](_0x9494x2),null!= _0x9494x2[_0x7ddb[253]]&& (null== _0x9494x3|| _0x9494x3)){this[_0x7ddb[2157]](_0x9494x2),_0x9494x2[_0x7ddb[441]][_0x7ddb[1179]][_0x7ddb[2158]]|| _0x9494x4[_0x7ddb[250]](_0x9494x2[_0x7ddb[246]])?_0x9494x2[_0x7ddb[2081]]= !0:_0x9494x2[_0x7ddb[441]][_0x7ddb[1179]][_0x7ddb[2159]]&& null!= this[_0x7ddb[2160]]&& (this[_0x7ddb[2160]][_0x7ddb[265]]== _0x9494x2[_0x7ddb[253]][_0x7ddb[252]][_0x7ddb[265]]?this[_0x7ddb[2161]](_0x9494x2,this[_0x7ddb[2160]]):this[_0x7ddb[2160]]= null),_0x9494x2[_0x7ddb[253]][_0x7ddb[255]]= _0x9494x2[_0x7ddb[441]][_0x7ddb[255]],this[_0x7ddb[2162]](_0x9494x2),this[_0x7ddb[2163]](_0x9494x2)}}};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2157]]= function(_0x9494x2){_0x9494x2[_0x7ddb[253]][_0x7ddb[176]](_0x9494x2[_0x7ddb[441]][_0x7ddb[2024]]())};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2164]]= function(_0x9494x2,_0x9494x3){for(var _0x9494x4=null,_0x9494x5=_0x9494x2[_0x7ddb[441]][_0x7ddb[1179]],_0x9494x9=_0x9494x5[_0x7ddb[502]](),_0x9494xa=_0x9494x2[_0x7ddb[246]],_0x9494x12=_0x9494x9[_0x7ddb[1197]](_0x9494xa);null!= _0x9494x12&& null== _0x9494x4;){_0x9494x4= this[_0x7ddb[2165]](_0x9494x5,_0x9494x12,_0x9494xa,_0x9494x3),_0x9494xa= _0x9494x12,_0x9494x12= _0x9494x9[_0x7ddb[1197]](_0x9494xa)};return _0x9494x4};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2165]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){var _0x9494x9=null,_0x9494xa=_0x9494x2[_0x7ddb[502]]();for(_0x9494x4= null!= _0x9494x4?_0x9494x3[_0x7ddb[1738]](_0x9494x4)- 1:_0x9494xa[_0x7ddb[262]](_0x9494x3)- 1;0<= _0x9494x4&& null== _0x9494x9;_0x9494x4--){_0x9494x9= this[_0x7ddb[2165]](_0x9494x2,_0x9494xa[_0x7ddb[263]](_0x9494x3,_0x9494x4),null,_0x9494x5)};if(null== _0x9494x9&& (_0x9494x9= _0x9494x2[_0x7ddb[441]][_0x7ddb[248]](_0x9494x3),null!= _0x9494x9&& (null== _0x9494x9[_0x7ddb[253]]|| null== _0x9494x9[_0x7ddb[253]][_0x7ddb[252]]|| _0x9494x9[_0x7ddb[253]][_0x7ddb[252]][_0x7ddb[265]]!= _0x9494x5))){_0x9494x9= null};return _0x9494x9};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2166]]= function(_0x9494x2){var _0x9494x3=_0x9494x2[_0x7ddb[253]][_0x7ddb[252]][_0x7ddb[265]],_0x9494x4=this[_0x7ddb[2164]](_0x9494x2,_0x9494x3),_0x9494x5=_0x9494x3[_0x7ddb[285]];null!= _0x9494x4&& (_0x9494x5= _0x9494x4[_0x7ddb[253]][_0x7ddb[252]],null!= _0x9494x4[_0x7ddb[963]]&& (null!= _0x9494x4[_0x7ddb[963]][_0x7ddb[252]]&& _0x9494x4[_0x7ddb[963]][_0x7ddb[252]][_0x7ddb[265]]== _0x9494x3)&& (_0x9494x5= _0x9494x4[_0x7ddb[963]][_0x7ddb[252]]),_0x9494x5= _0x9494x5[_0x7ddb[287]]);this[_0x7ddb[2161]](_0x9494x2,_0x9494x5)};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2167]]= function(_0x9494x2){var _0x9494x3=_0x9494x2[_0x7ddb[441]],_0x9494x4=_0x9494x3[_0x7ddb[1179]][_0x7ddb[502]]();if(_0x9494x3[_0x7ddb[1179]][_0x7ddb[2159]]){if(null== this[_0x7ddb[2160]]|| null== this[_0x7ddb[2160]][_0x7ddb[265]]|| this[_0x7ddb[2160]][_0x7ddb[265]]!= _0x9494x2[_0x7ddb[253]][_0x7ddb[252]][_0x7ddb[265]]){this[_0x7ddb[2160]]= _0x9494x2[_0x7ddb[253]][_0x7ddb[252]]}}else {if(_0x9494x3[_0x7ddb[1179]][_0x7ddb[2168]]){var _0x9494x5=_0x9494x2[_0x7ddb[253]][_0x7ddb[252]],_0x9494x9=_0x9494x5[_0x7ddb[265]],_0x9494x4=_0x9494x4[_0x7ddb[1197]](_0x9494x2[_0x7ddb[246]]),_0x9494x3=_0x9494x3[_0x7ddb[248]](_0x9494x4),_0x9494x9=null!= _0x9494x3&& null!= _0x9494x3[_0x7ddb[253]]&& null!= _0x9494x3[_0x7ddb[253]][_0x7ddb[252]]?_0x9494x3[_0x7ddb[253]][_0x7ddb[252]][_0x7ddb[287]]:_0x9494x9[_0x7ddb[285]];null!= _0x9494x9&& _0x9494x9!= _0x9494x5&& this[_0x7ddb[2161]](_0x9494x2,_0x9494x9)}}};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2161]]= function(_0x9494x2,_0x9494x3){_0x9494x2[_0x7ddb[253]][_0x7ddb[252]][_0x7ddb[265]][_0x7ddb[950]](_0x9494x2[_0x7ddb[253]][_0x7ddb[252]],_0x9494x3);null!= _0x9494x2[_0x7ddb[963]]&& (null!= _0x9494x2[_0x7ddb[963]][_0x7ddb[252]]&& _0x9494x2[_0x7ddb[963]][_0x7ddb[252]][_0x7ddb[265]]== _0x9494x2[_0x7ddb[253]][_0x7ddb[252]][_0x7ddb[265]])&& _0x9494x2[_0x7ddb[253]][_0x7ddb[252]][_0x7ddb[265]][_0x7ddb[950]](_0x9494x2[_0x7ddb[963]][_0x7ddb[252]],_0x9494x2[_0x7ddb[253]][_0x7ddb[252]][_0x7ddb[287]])};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2156]]= function(_0x9494x2){if(null!= _0x9494x2[_0x7ddb[124]]){var _0x9494x3=mxStencilRegistry[_0x7ddb[1560]](_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2059]]]);null!= _0x9494x3?_0x9494x2[_0x7ddb[253]]= new mxShape(_0x9494x3):(_0x9494x3= this[_0x7ddb[2169]](_0x9494x2),_0x9494x2[_0x7ddb[253]]= new _0x9494x3);_0x9494x2[_0x7ddb[253]][_0x7ddb[1525]]= _0x9494x2[_0x7ddb[439]];_0x9494x2[_0x7ddb[253]][_0x7ddb[1562]]= new mxRectangle(_0x9494x2[_0x7ddb[235]],_0x9494x2[_0x7ddb[236]],_0x9494x2[_0x7ddb[117]],_0x9494x2[_0x7ddb[119]]);_0x9494x2[_0x7ddb[253]][_0x7ddb[507]]= _0x9494x2[_0x7ddb[441]][_0x7ddb[1179]][_0x7ddb[507]];this[_0x7ddb[2170]](_0x9494x2)}};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2171]]= function(_0x9494x2){return null!= _0x9494x2?mxCellRenderer[_0x7ddb[202]][_0x7ddb[2153]][_0x9494x2]:null};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2169]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[2171]](_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2059]]]);null== _0x9494x3&& (_0x9494x3= _0x9494x2[_0x7ddb[441]][_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[250]](_0x9494x2[_0x7ddb[246]])?this[_0x7ddb[2149]]:this[_0x7ddb[2150]]);return _0x9494x3};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2170]]= function(_0x9494x2){_0x9494x2[_0x7ddb[253]][_0x7ddb[183]](_0x9494x2);_0x9494x2[_0x7ddb[253]][_0x7ddb[618]]= _0x9494x2[_0x7ddb[441]][_0x7ddb[1179]][_0x7ddb[1202]](_0x9494x2);_0x9494x2[_0x7ddb[253]][_0x7ddb[630]]= this[_0x7ddb[2171]](_0x9494x2[_0x7ddb[441]][_0x7ddb[1179]][_0x7ddb[2172]](_0x9494x2));_0x9494x2[_0x7ddb[253]][_0x7ddb[632]]= _0x9494x2[_0x7ddb[441]][_0x7ddb[1179]][_0x7ddb[2173]](_0x9494x2);_0x9494x2[_0x7ddb[253]][_0x7ddb[634]]= _0x9494x2[_0x7ddb[441]][_0x7ddb[1179]][_0x7ddb[2174]](_0x9494x2);_0x9494x2[_0x7ddb[253]][_0x7ddb[638]]= _0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2175]]];_0x9494x2[_0x7ddb[253]][_0x7ddb[631]]= _0x9494x2[_0x7ddb[441]][_0x7ddb[1179]][_0x7ddb[2176]](_0x9494x2);this[_0x7ddb[2177]](_0x9494x2)};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2177]]= function(_0x9494x2){null!= _0x9494x2[_0x7ddb[253]]&& (this[_0x7ddb[2178]](_0x9494x2,_0x7ddb[632],mxConstants.STYLE_FILLCOLOR),this[_0x7ddb[2178]](_0x9494x2,_0x7ddb[634],mxConstants.STYLE_GRADIENTCOLOR),this[_0x7ddb[2178]](_0x9494x2,_0x7ddb[1334],mxConstants.STYLE_FILLCOLOR),this[_0x7ddb[2178]](_0x9494x2,_0x7ddb[1336],mxConstants.STYLE_STROKECOLOR),this[_0x7ddb[2178]](_0x9494x2,_0x7ddb[1299],mxConstants.STYLE_GRADIENTCOLOR))};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2178]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=_0x9494x2[_0x7ddb[253]][_0x9494x3],_0x9494x9=_0x9494x2[_0x7ddb[441]][_0x7ddb[1179]],_0x9494xa=null;_0x7ddb[1549]== _0x9494x5?_0x9494xa= _0x9494x9[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x2[_0x7ddb[246]]):_0x7ddb[687]== _0x9494x5?(_0x9494xa= null!= _0x9494x9[_0x7ddb[251]][_0x7ddb[1709]](_0x9494x2[_0x7ddb[246]],!1)?_0x9494x9[_0x7ddb[251]][_0x7ddb[1709]](_0x9494x2[_0x7ddb[246]],!1):_0x9494x2[_0x7ddb[246]],_0x9494xa= _0x9494x9[_0x7ddb[2179]](_0x9494xa),_0x9494x4= _0x9494x9[_0x7ddb[2180]]):_0x7ddb[2181]== _0x9494x5&& (_0x9494x2[_0x7ddb[253]][_0x9494x3]= _0x9494x2[_0x7ddb[253]][_0x7ddb[632]]);null!= _0x9494xa&& (_0x9494x5= _0x9494x9[_0x7ddb[249]]()[_0x7ddb[248]](_0x9494xa),_0x9494x2[_0x7ddb[253]][_0x9494x3]= null,null!= _0x9494x5&& (_0x9494x2[_0x7ddb[253]][_0x9494x3]= null!= _0x9494x5[_0x7ddb[253]]&& _0x7ddb[632]!= _0x9494x3?_0x9494x5[_0x7ddb[253]][_0x9494x3]:_0x9494x5[_0x7ddb[124]][_0x9494x4]))};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2182]]= function(_0x9494x2){return _0x9494x2[_0x7ddb[441]][_0x7ddb[1179]][_0x7ddb[2183]](_0x9494x2[_0x7ddb[246]])};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2184]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=_0x9494x2[_0x7ddb[441]][_0x7ddb[1179]];_0x9494x4[_0x7ddb[502]]()[_0x7ddb[250]](_0x9494x2[_0x7ddb[246]]);if(0< _0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2185]]]|| null== _0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2185]]]){var _0x9494x5=_0x9494x4[_0x7ddb[2186]](_0x9494x2[_0x7ddb[246]])|| null!= _0x9494x3&& mxUtils[_0x7ddb[1331]](_0x9494x3);_0x9494x2[_0x7ddb[963]]= new this[_0x7ddb[2151]](_0x9494x3, new mxRectangle,_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2064]]]|| mxConstants[_0x7ddb[479]],_0x9494x4[_0x7ddb[2187]](_0x9494x2),_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2069]]],_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2188]]],_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2185]]],_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2189]]],_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2143]]],_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2144]]],_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2145]]],_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2146]]],_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2147]]],_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2190]]],_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2191]]],_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2192]]],_0x9494x4[_0x7ddb[2131]](_0x9494x2[_0x7ddb[246]])&& _0x9494x4[_0x7ddb[2186]](_0x9494x2[_0x7ddb[246]]),_0x9494x4[_0x7ddb[2130]](_0x9494x2[_0x7ddb[246]]),_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2193]]],_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2194]]]);_0x9494x2[_0x7ddb[963]][_0x7ddb[461]]= mxUtils[_0x7ddb[433]](_0x9494x2[_0x7ddb[124]],mxConstants.STYLE_TEXT_OPACITY,100);_0x9494x2[_0x7ddb[963]][_0x7ddb[507]]= _0x9494x5?mxConstants[_0x7ddb[1656]]:_0x9494x2[_0x7ddb[441]][_0x7ddb[1179]][_0x7ddb[507]];_0x9494x2[_0x7ddb[963]][_0x7ddb[724]]= _0x9494x2;this[_0x7ddb[2195]](_0x9494x2);var _0x9494x9=!1,_0x9494xa=function(_0x9494x3){var _0x9494x5=_0x9494x2;if(mxClient[_0x7ddb[754]]|| _0x9494x9){_0x9494x5= mxEvent[_0x7ddb[731]](_0x9494x3),_0x9494x3= mxEvent[_0x7ddb[733]](_0x9494x3),_0x9494x3= mxUtils[_0x7ddb[2196]](_0x9494x4[_0x7ddb[526]],_0x9494x5,_0x9494x3),_0x9494x5= _0x9494x4[_0x7ddb[441]][_0x7ddb[248]](_0x9494x4[_0x7ddb[999]](_0x9494x3[_0x7ddb[235]],_0x9494x3[_0x7ddb[236]]))};return _0x9494x5};mxEvent[_0x7ddb[759]](_0x9494x2[_0x7ddb[963]][_0x7ddb[252]],mxUtils[_0x7ddb[885]](this,function(_0x9494x3){this[_0x7ddb[2197]](_0x9494x2,_0x9494x3)&& (_0x9494x4[_0x7ddb[758]](mxEvent.MOUSE_DOWN, new mxMouseEvent(_0x9494x3,_0x9494x2)),_0x9494x9= _0x9494x4[_0x7ddb[507]]!= mxConstants[_0x7ddb[508]]&& _0x7ddb[2198]== mxEvent[_0x7ddb[728]](_0x9494x3)[_0x7ddb[301]])}),mxUtils[_0x7ddb[885]](this,function(_0x9494x3){this[_0x7ddb[2197]](_0x9494x2,_0x9494x3)&& _0x9494x4[_0x7ddb[758]](mxEvent.MOUSE_MOVE, new mxMouseEvent(_0x9494x3,_0x9494xa(_0x9494x3)))}),mxUtils[_0x7ddb[885]](this,function(_0x9494x3){this[_0x7ddb[2197]](_0x9494x2,_0x9494x3)&& (_0x9494x4[_0x7ddb[758]](mxEvent.MOUSE_UP, new mxMouseEvent(_0x9494x3,_0x9494xa(_0x9494x3))),_0x9494x9= !1)}));mxEvent[_0x7ddb[169]](_0x9494x2[_0x7ddb[963]][_0x7ddb[252]],_0x7ddb[760],mxUtils[_0x7ddb[885]](this,function(_0x9494x3){this[_0x7ddb[2197]](_0x9494x2,_0x9494x3)&& (_0x9494x4[_0x7ddb[761]](_0x9494x3,_0x9494x2[_0x7ddb[246]]),mxEvent[_0x7ddb[722]](_0x9494x3))}))}};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2195]]= function(_0x9494x2){var _0x9494x3=_0x9494x2[_0x7ddb[441]][_0x7ddb[1179]];_0x9494x2[_0x7ddb[963]][_0x7ddb[507]]!= mxConstants[_0x7ddb[508]]&& (mxClient[_0x7ddb[48]]&& mxClient[_0x7ddb[2199]]?_0x9494x2[_0x7ddb[963]][_0x7ddb[176]](_0x9494x3[_0x7ddb[526]]):mxUtils[_0x7ddb[458]](_0x9494x2[_0x7ddb[441]][_0x7ddb[2024]]())&& (null!= _0x9494x2[_0x7ddb[253]][_0x7ddb[685]]?_0x9494x2[_0x7ddb[963]][_0x7ddb[176]](_0x9494x2[_0x7ddb[253]][_0x7ddb[685]]):_0x9494x2[_0x7ddb[963]][_0x7ddb[176]](_0x9494x2[_0x7ddb[253]][_0x7ddb[252]])));null== _0x9494x2[_0x7ddb[963]][_0x7ddb[252]]&& (_0x9494x2[_0x7ddb[963]][_0x7ddb[176]](_0x9494x2[_0x7ddb[441]][_0x7ddb[2024]]()),null!= _0x9494x2[_0x7ddb[253]]&& null!= _0x9494x2[_0x7ddb[963]]&& _0x9494x2[_0x7ddb[253]][_0x7ddb[252]][_0x7ddb[265]][_0x7ddb[950]](_0x9494x2[_0x7ddb[963]][_0x7ddb[252]],_0x9494x2[_0x7ddb[253]][_0x7ddb[252]][_0x7ddb[287]]))};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2162]]= function(_0x9494x2){var _0x9494x3=_0x9494x2[_0x7ddb[441]][_0x7ddb[1179]][_0x7ddb[2200]](_0x9494x2[_0x7ddb[246]]),_0x9494x4=null;if(null!= _0x9494x3){for(var _0x9494x4= new mxDictionary,_0x9494x5=0;_0x9494x5< _0x9494x3[_0x7ddb[67]];_0x9494x5++){var _0x9494x9=null!= _0x9494x2[_0x7ddb[1211]]?_0x9494x2[_0x7ddb[1211]][_0x7ddb[205]](_0x9494x3[_0x9494x5]):null;null== _0x9494x9&& (_0x9494x9= new mxImageShape( new mxRectangle,_0x9494x3[_0x9494x5][_0x7ddb[618]][_0x7ddb[390]]),_0x9494x9[_0x7ddb[507]]= _0x9494x2[_0x7ddb[441]][_0x7ddb[1179]][_0x7ddb[507]],_0x9494x9[_0x7ddb[1674]]= !1,_0x9494x9[_0x7ddb[2201]]= _0x9494x3[_0x9494x5],this[_0x7ddb[2023]](_0x9494x2,_0x9494x9),this[_0x7ddb[2202]](_0x9494x2,_0x9494x3[_0x9494x5],_0x9494x9),null!= _0x9494x3[_0x9494x5][_0x7ddb[270]]&& (_0x9494x9[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[270]]= _0x9494x3[_0x9494x5][_0x7ddb[270]]));_0x9494x4[_0x7ddb[204]](_0x9494x3[_0x9494x5],_0x9494x9)}};null!= _0x9494x2[_0x7ddb[1211]]&& _0x9494x2[_0x7ddb[1211]][_0x7ddb[209]](function(_0x9494x2,_0x9494x3){_0x9494x3[_0x7ddb[515]]()});_0x9494x2[_0x7ddb[1211]]= _0x9494x4};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2023]]= function(_0x9494x2,_0x9494x3){_0x9494x3[_0x7ddb[176]](_0x9494x2[_0x7ddb[441]][_0x7ddb[1524]]())};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2202]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=_0x9494x2[_0x7ddb[441]][_0x7ddb[1179]];mxEvent[_0x7ddb[169]](_0x9494x4[_0x7ddb[252]],_0x7ddb[173],function(_0x9494x4){_0x9494x5[_0x7ddb[2203]]()&& _0x9494x5[_0x7ddb[2126]](!_0x9494x5[_0x7ddb[2134]]());_0x9494x3[_0x7ddb[746]]( new mxEventObject(mxEvent.CLICK,_0x7ddb[763],_0x9494x4,_0x7ddb[246],_0x9494x2[_0x7ddb[246]]))});mxEvent[_0x7ddb[759]](_0x9494x4[_0x7ddb[252]],function(_0x9494x2){mxEvent[_0x7ddb[722]](_0x9494x2)},function(_0x9494x3){_0x9494x5[_0x7ddb[758]](mxEvent.MOUSE_MOVE, new mxMouseEvent(_0x9494x3,_0x9494x2))});mxClient[_0x7ddb[754]]&& mxEvent[_0x7ddb[169]](_0x9494x4[_0x7ddb[252]],_0x7ddb[757],function(_0x9494x4){_0x9494x3[_0x7ddb[746]]( new mxEventObject(mxEvent.CLICK,_0x7ddb[763],_0x9494x4,_0x7ddb[246],_0x9494x2[_0x7ddb[246]]))})};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2204]]= function(_0x9494x2){var _0x9494x3=_0x9494x2[_0x7ddb[441]][_0x7ddb[1179]],_0x9494x4=_0x9494x3[_0x7ddb[2205]](_0x9494x2);if(_0x9494x3[_0x7ddb[2206]]&& null!= _0x9494x4){if(null== _0x9494x2[_0x7ddb[2207]]){var _0x9494x5= new mxRectangle(0,0,_0x9494x4[_0x7ddb[117]],_0x9494x4[_0x7ddb[119]]);_0x9494x2[_0x7ddb[2207]]= new mxImageShape(_0x9494x5,_0x9494x4[_0x7ddb[390]]);_0x9494x2[_0x7ddb[2207]][_0x7ddb[1674]]= !1;_0x9494x2[_0x7ddb[2207]][_0x7ddb[507]]= _0x9494x3[_0x7ddb[507]];this[_0x7ddb[2208]](_0x9494x2,_0x9494x2[_0x7ddb[2207]],!0,function(_0x9494x4){if(_0x9494x3[_0x7ddb[994]]()){var _0x9494x5=!_0x9494x3[_0x7ddb[1742]](_0x9494x2[_0x7ddb[246]]);_0x9494x3[_0x7ddb[847]](_0x9494x5,!1,[_0x9494x2[_0x7ddb[246]]]);mxEvent[_0x7ddb[722]](_0x9494x4)}})}}else {null!= _0x9494x2[_0x7ddb[2207]]&& (_0x9494x2[_0x7ddb[2207]][_0x7ddb[515]](),_0x9494x2[_0x7ddb[2207]]= null)}};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2208]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){var _0x9494x9=_0x9494x2[_0x7ddb[441]][_0x7ddb[1179]];_0x9494x9[_0x7ddb[2186]](_0x9494x2[_0x7ddb[246]])&& mxClient[_0x7ddb[2199]]&& _0x9494x9[_0x7ddb[507]]== mxConstants[_0x7ddb[508]]?(_0x9494x3[_0x7ddb[507]]= mxConstants[_0x7ddb[2209]],_0x9494x3[_0x7ddb[176]](_0x9494x9[_0x7ddb[526]]),_0x9494x3[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[931]]= 1):_0x9494x3[_0x7ddb[176]](_0x9494x2[_0x7ddb[441]][_0x7ddb[1524]]());_0x9494x3= _0x9494x3[_0x7ddb[2210]]|| _0x9494x3[_0x7ddb[252]];_0x9494x5&& (_0x9494x9[_0x7ddb[994]]()&& (_0x9494x3[_0x7ddb[124]][_0x7ddb[270]]= _0x7ddb[356]),mxEvent[_0x7ddb[169]](_0x9494x3,_0x7ddb[173],_0x9494x5));_0x9494x4&& mxEvent[_0x7ddb[759]](_0x9494x3,function(_0x9494x3){_0x9494x9[_0x7ddb[758]](mxEvent.MOUSE_DOWN, new mxMouseEvent(_0x9494x3,_0x9494x2));mxEvent[_0x7ddb[722]](_0x9494x3)},function(_0x9494x3){_0x9494x9[_0x7ddb[758]](mxEvent.MOUSE_MOVE, new mxMouseEvent(_0x9494x3,_0x9494x2))});return _0x9494x3};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2211]]= function(_0x9494x2,_0x9494x3){return !0};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2197]]= function(_0x9494x2,_0x9494x3){return !0};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2163]]= function(_0x9494x2){var _0x9494x3=_0x9494x2[_0x7ddb[441]][_0x7ddb[1179]],_0x9494x4=function(_0x9494x4){var _0x9494x5=_0x9494x2;if(_0x9494x3[_0x7ddb[507]]!= mxConstants[_0x7ddb[508]]&& _0x7ddb[2198]== mxEvent[_0x7ddb[728]](_0x9494x4)[_0x7ddb[301]]|| mxClient[_0x7ddb[754]]){_0x9494x5= mxEvent[_0x7ddb[731]](_0x9494x4),_0x9494x4= mxEvent[_0x7ddb[733]](_0x9494x4),_0x9494x4= mxUtils[_0x7ddb[2196]](_0x9494x3[_0x7ddb[526]],_0x9494x5,_0x9494x4),_0x9494x5= _0x9494x3[_0x7ddb[441]][_0x7ddb[248]](_0x9494x3[_0x7ddb[999]](_0x9494x4[_0x7ddb[235]],_0x9494x4[_0x7ddb[236]]))};return _0x9494x5},_0x9494x5=!1;mxEvent[_0x7ddb[169]](_0x9494x2[_0x7ddb[253]][_0x7ddb[252]],_0x7ddb[2212],mxUtils[_0x7ddb[885]](this,function(_0x9494x2){_0x9494x3[_0x7ddb[2213]]= 0;_0x9494x5= !0;mxEvent[_0x7ddb[722]](_0x9494x2)}));mxEvent[_0x7ddb[759]](_0x9494x2[_0x7ddb[253]][_0x7ddb[252]],mxUtils[_0x7ddb[885]](this,function(_0x9494x4){this[_0x7ddb[2211]](_0x9494x2,_0x9494x4)&& !_0x9494x5?_0x9494x3[_0x7ddb[758]](mxEvent.MOUSE_DOWN, new mxMouseEvent(_0x9494x4,null!= _0x9494x2[_0x7ddb[253]]&& mxEvent[_0x7ddb[728]](_0x9494x4)== _0x9494x2[_0x7ddb[253]][_0x7ddb[905]]?null:_0x9494x2)):_0x9494x5&& mxEvent[_0x7ddb[722]](_0x9494x4)}),mxUtils[_0x7ddb[885]](this,function(_0x9494x9){this[_0x7ddb[2211]](_0x9494x2,_0x9494x9)&& !_0x9494x5?_0x9494x3[_0x7ddb[758]](mxEvent.MOUSE_MOVE, new mxMouseEvent(_0x9494x9,null!= _0x9494x2[_0x7ddb[253]]&& mxEvent[_0x7ddb[728]](_0x9494x9)== _0x9494x2[_0x7ddb[253]][_0x7ddb[905]]?null:_0x9494x4(_0x9494x9))):_0x9494x5&& mxEvent[_0x7ddb[722]](_0x9494x9)}),mxUtils[_0x7ddb[885]](this,function(_0x9494x9){this[_0x7ddb[2211]](_0x9494x2,_0x9494x9)&& !_0x9494x5?_0x9494x3[_0x7ddb[758]](mxEvent.MOUSE_UP, new mxMouseEvent(_0x9494x9,null!= _0x9494x2[_0x7ddb[253]]&& mxEvent[_0x7ddb[728]](_0x9494x9)== _0x9494x2[_0x7ddb[253]][_0x7ddb[905]]?null:_0x9494x4(_0x9494x9))):_0x9494x5&& mxEvent[_0x7ddb[722]](_0x9494x9)}));var _0x9494x9=mxClient[_0x7ddb[754]]?_0x7ddb[2214]:_0x7ddb[760];mxEvent[_0x7ddb[169]](_0x9494x2[_0x7ddb[253]][_0x7ddb[252]],_0x9494x9,mxUtils[_0x7ddb[885]](this,function(_0x9494x4){_0x9494x5= !1;_0x7ddb[2214]== _0x9494x9?(_0x9494x3[_0x7ddb[2213]]= 0,_0x9494x3[_0x7ddb[2215]]&& (_0x9494x3[_0x7ddb[2216]](_0x9494x2,_0x9494x4),mxEvent[_0x7ddb[722]](_0x9494x4))):this[_0x7ddb[2211]](_0x9494x2,_0x9494x4)&& (_0x9494x3[_0x7ddb[761]](_0x9494x4,null!= _0x9494x2[_0x7ddb[253]]&& mxEvent[_0x7ddb[728]](_0x9494x4)== _0x9494x2[_0x7ddb[253]][_0x7ddb[905]]?null:_0x9494x2[_0x7ddb[246]]),mxEvent[_0x7ddb[722]](_0x9494x4))}))};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2217]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[2182]](_0x9494x2);if(null== _0x9494x2[_0x7ddb[963]]&& null!= _0x9494x4&& (mxUtils[_0x7ddb[1331]](_0x9494x4)|| 0< _0x9494x4[_0x7ddb[67]])){this[_0x7ddb[2184]](_0x9494x2,_0x9494x4)}else {if(null!= _0x9494x2[_0x7ddb[963]]&& (null== _0x9494x4|| 0== _0x9494x4[_0x7ddb[67]])){_0x9494x2[_0x7ddb[963]][_0x7ddb[515]](),_0x9494x2[_0x7ddb[963]]= null}};if(null!= _0x9494x2[_0x7ddb[963]]){var _0x9494x5=_0x9494x2[_0x7ddb[441]][_0x7ddb[1179]],_0x9494x9=_0x9494x5[_0x7ddb[2131]](_0x9494x2[_0x7ddb[246]]),_0x9494x5=_0x9494x5[_0x7ddb[2130]](_0x9494x2[_0x7ddb[246]]),_0x9494xa=this[_0x7ddb[2218]](_0x9494x2);if(_0x9494x3|| _0x9494x2[_0x7ddb[963]][_0x7ddb[131]]!= _0x9494x4|| _0x9494x2[_0x7ddb[963]][_0x7ddb[2131]]!= _0x9494x9|| _0x9494x2[_0x7ddb[963]][_0x7ddb[2219]]!= _0x9494x5|| _0x9494x2[_0x7ddb[963]][_0x7ddb[255]]!= _0x9494x2[_0x7ddb[441]][_0x7ddb[255]]|| !_0x9494x2[_0x7ddb[963]][_0x7ddb[1562]][_0x7ddb[237]](_0x9494xa)){_0x9494x2[_0x7ddb[963]][_0x7ddb[131]]= _0x9494x4,_0x9494x2[_0x7ddb[963]][_0x7ddb[1562]]= _0x9494xa,_0x9494x2[_0x7ddb[963]][_0x7ddb[255]]= this[_0x7ddb[2220]](_0x9494x2),_0x9494x2[_0x7ddb[963]][_0x7ddb[2131]]= _0x9494x9,_0x9494x2[_0x7ddb[963]][_0x7ddb[2219]]= _0x9494x5,_0x9494x2[_0x7ddb[963]][_0x7ddb[258]]()}}};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2220]]= function(_0x9494x2){return _0x9494x2[_0x7ddb[441]][_0x7ddb[255]]};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2218]]= function(_0x9494x2){var _0x9494x3=_0x9494x2[_0x7ddb[441]][_0x7ddb[1179]],_0x9494x4=_0x9494x2[_0x7ddb[441]][_0x7ddb[255]],_0x9494x5=_0x9494x3[_0x7ddb[502]]()[_0x7ddb[250]](_0x9494x2[_0x7ddb[246]]),_0x9494x9= new mxRectangle(_0x9494x2[_0x7ddb[2079]][_0x7ddb[235]],_0x9494x2[_0x7ddb[2079]][_0x7ddb[236]]);_0x9494x2[_0x7ddb[963]][_0x7ddb[1672]]();_0x9494x5?(_0x9494x5= _0x9494x2[_0x7ddb[963]][_0x7ddb[1673]](),_0x9494x9[_0x7ddb[235]]+= _0x9494x5[_0x7ddb[235]]* _0x9494x4,_0x9494x9[_0x7ddb[236]]+= _0x9494x5[_0x7ddb[236]]* _0x9494x4,_0x9494x3= _0x9494x3[_0x7ddb[1198]](_0x9494x2[_0x7ddb[246]]),null!= _0x9494x3&& (_0x9494x9[_0x7ddb[117]]= Math[_0x7ddb[160]](0,_0x9494x2[_0x7ddb[963]][_0x7ddb[1655]][_0x7ddb[235]]* _0x9494x3[_0x7ddb[117]]* _0x9494x4- _0x9494x2[_0x7ddb[963]][_0x7ddb[659]]* _0x9494x4- _0x9494x2[_0x7ddb[963]][_0x7ddb[661]]* _0x9494x4),_0x9494x9[_0x7ddb[119]]= Math[_0x7ddb[160]](0,_0x9494x2[_0x7ddb[963]][_0x7ddb[1655]][_0x7ddb[236]]* _0x9494x3[_0x7ddb[119]]* _0x9494x4- _0x9494x2[_0x7ddb[963]][_0x7ddb[658]]* _0x9494x4- _0x9494x2[_0x7ddb[963]][_0x7ddb[660]]* _0x9494x4))):(_0x9494x2[_0x7ddb[963]][_0x7ddb[1590]]()&& (_0x9494x5= _0x9494x9[_0x7ddb[235]],_0x9494x9[_0x7ddb[235]]= _0x9494x9[_0x7ddb[236]],_0x9494x9[_0x7ddb[236]]= _0x9494x5),_0x9494x9[_0x7ddb[235]]+= _0x9494x2[_0x7ddb[235]],_0x9494x9[_0x7ddb[236]]+= _0x9494x2[_0x7ddb[236]],_0x9494x9[_0x7ddb[117]]= Math[_0x7ddb[160]](1,_0x9494x2[_0x7ddb[117]]),_0x9494x9[_0x7ddb[119]]= Math[_0x7ddb[160]](1,_0x9494x2[_0x7ddb[119]]),_0x9494x3[_0x7ddb[1730]](_0x9494x2[_0x7ddb[246]])&& (_0x9494x3= _0x9494x3[_0x7ddb[1731]](_0x9494x2[_0x7ddb[246]]),0< _0x9494x3[_0x7ddb[117]]?(_0x9494x5= Math[_0x7ddb[243]](_0x9494x9[_0x7ddb[117]],_0x9494x3[_0x7ddb[117]]* _0x9494x4),_0x9494x2[_0x7ddb[253]][_0x7ddb[623]]&& (_0x9494x9[_0x7ddb[235]]+= _0x9494x9[_0x7ddb[117]]- _0x9494x5),_0x9494x9[_0x7ddb[117]]= _0x9494x5):0< _0x9494x3[_0x7ddb[119]]&& (_0x9494x5= Math[_0x7ddb[243]](_0x9494x9[_0x7ddb[119]],_0x9494x3[_0x7ddb[119]]* _0x9494x4),_0x9494x2[_0x7ddb[253]][_0x7ddb[624]]&& (_0x9494x9[_0x7ddb[236]]+= _0x9494x9[_0x7ddb[119]]- _0x9494x5),_0x9494x9[_0x7ddb[119]]= _0x9494x5)),this[_0x7ddb[2221]](_0x9494x2,_0x9494x9));return _0x9494x9};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2221]]= function(_0x9494x2,_0x9494x3){if(_0x9494x2[_0x7ddb[963]][_0x7ddb[1590]]()){var _0x9494x4=(_0x9494x2[_0x7ddb[117]]- _0x9494x2[_0x7ddb[119]])/ 2;_0x9494x3[_0x7ddb[235]]+= _0x9494x4;_0x9494x3[_0x7ddb[236]]-= _0x9494x4;_0x9494x4= _0x9494x3[_0x7ddb[117]];_0x9494x3[_0x7ddb[117]]= _0x9494x3[_0x7ddb[119]];_0x9494x3[_0x7ddb[119]]= _0x9494x4};_0x9494x3[_0x7ddb[235]]-= _0x9494x2[_0x7ddb[963]][_0x7ddb[1655]][_0x7ddb[235]]* _0x9494x3[_0x7ddb[117]];_0x9494x3[_0x7ddb[236]]-= _0x9494x2[_0x7ddb[963]][_0x7ddb[1655]][_0x7ddb[236]]* _0x9494x3[_0x7ddb[119]];if(_0x7ddb[1334]!= _0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2193]]]){var _0x9494x4=_0x9494x2[_0x7ddb[441]][_0x7ddb[255]],_0x9494x5=_0x9494x2[_0x7ddb[963]][_0x7ddb[1673]]();_0x9494x3[_0x7ddb[235]]+= _0x9494x5[_0x7ddb[235]]* _0x9494x4;_0x9494x3[_0x7ddb[236]]+= _0x9494x5[_0x7ddb[236]]* _0x9494x4;_0x9494x3[_0x7ddb[117]]= Math[_0x7ddb[160]](0,_0x9494x3[_0x7ddb[117]]- _0x9494x2[_0x7ddb[963]][_0x7ddb[659]]* _0x9494x4- _0x9494x2[_0x7ddb[963]][_0x7ddb[661]]* _0x9494x4);_0x9494x3[_0x7ddb[119]]= Math[_0x7ddb[160]](0,_0x9494x3[_0x7ddb[119]]- _0x9494x2[_0x7ddb[963]][_0x7ddb[658]]* _0x9494x4- _0x9494x2[_0x7ddb[963]][_0x7ddb[660]]* _0x9494x4)};var _0x9494x9=_0x9494x2[_0x7ddb[963]][_0x7ddb[1615]]();if(0!= _0x9494x9&& (null!= _0x9494x2&& _0x9494x2[_0x7ddb[441]][_0x7ddb[1179]][_0x7ddb[251]][_0x7ddb[1193]](_0x9494x2[_0x7ddb[246]]))&& (_0x9494x4= _0x9494x2[_0x7ddb[241]](),_0x9494x5= _0x9494x2[_0x7ddb[242]](),_0x9494x3[_0x7ddb[235]]!= _0x9494x4|| _0x9494x3[_0x7ddb[236]]!= _0x9494x5)){_0x9494x9*= Math[_0x7ddb[424]]/ 180,pt= mxUtils[_0x7ddb[432]]( new mxPoint(_0x9494x3[_0x7ddb[235]],_0x9494x3[_0x7ddb[236]]),Math[_0x7ddb[426]](_0x9494x9),Math[_0x7ddb[427]](_0x9494x9), new mxPoint(_0x9494x4,_0x9494x5)),_0x9494x3[_0x7ddb[235]]= pt[_0x7ddb[235]],_0x9494x3[_0x7ddb[236]]= pt[_0x7ddb[236]]}};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2222]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[2162]](_0x9494x2);if(null!= _0x9494x2[_0x7ddb[1211]]){var _0x9494x4=mxUtils[_0x7ddb[1454]](mxUtils[_0x7ddb[433]](_0x9494x2[_0x7ddb[124]],mxConstants.STYLE_ROTATION,0),90),_0x9494x5=mxUtils[_0x7ddb[431]](_0x9494x4),_0x9494x9=Math[_0x7ddb[426]](_0x9494x5),_0x9494xa=Math[_0x7ddb[427]](_0x9494x5);_0x9494x2[_0x7ddb[1211]][_0x7ddb[209]](function(_0x9494x5,_0x9494x13){var _0x9494x14=_0x9494x13[_0x7ddb[2201]][_0x7ddb[1799]](_0x9494x2);if(!_0x9494x2[_0x7ddb[441]][_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[250]](_0x9494x2[_0x7ddb[246]])&& null!= _0x9494x2[_0x7ddb[253]] && 0!= _0x9494x4){var _0x9494x15=_0x9494x14[_0x7ddb[241]](),_0x9494x16=_0x9494x14[_0x7ddb[242]](),_0x9494x16=mxUtils[_0x7ddb[432]]( new mxPoint(_0x9494x15,_0x9494x16),_0x9494x9,_0x9494xa, new mxPoint(_0x9494x2[_0x7ddb[241]](),_0x9494x2[_0x7ddb[242]]())),_0x9494x15=_0x9494x16[_0x7ddb[235]],_0x9494x16=_0x9494x16[_0x7ddb[236]];_0x9494x14[_0x7ddb[235]]= Math[_0x7ddb[488]](_0x9494x15- _0x9494x14[_0x7ddb[117]]/ 2);_0x9494x14[_0x7ddb[236]]= Math[_0x7ddb[488]](_0x9494x16- _0x9494x14[_0x7ddb[119]]/ 2)};if(_0x9494x3|| null== _0x9494x13[_0x7ddb[1562]]|| _0x9494x13[_0x7ddb[255]]!= _0x9494x2[_0x7ddb[441]][_0x7ddb[255]]|| !_0x9494x13[_0x7ddb[1562]][_0x7ddb[237]](_0x9494x14)){_0x9494x13[_0x7ddb[1562]]= _0x9494x14,_0x9494x13[_0x7ddb[255]]= _0x9494x2[_0x7ddb[441]][_0x7ddb[255]],_0x9494x13[_0x7ddb[258]]()}})}};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2223]]= function(_0x9494x2,_0x9494x3){if(null!= _0x9494x2[_0x7ddb[2207]]){var _0x9494x4=this[_0x7ddb[2224]](_0x9494x2),_0x9494x5=this[_0x7ddb[2152]]?mxUtils[_0x7ddb[433]](_0x9494x2[_0x7ddb[124]],mxConstants.STYLE_ROTATION,0):_0x9494x2[_0x7ddb[253]][_0x7ddb[1615]](),_0x9494x9=_0x9494x2[_0x7ddb[441]][_0x7ddb[255]];if(_0x9494x3|| _0x9494x2[_0x7ddb[2207]][_0x7ddb[255]]!= _0x9494x9|| !_0x9494x2[_0x7ddb[2207]][_0x7ddb[1562]][_0x7ddb[237]](_0x9494x4)|| _0x9494x2[_0x7ddb[2207]][_0x7ddb[603]]!= _0x9494x5){_0x9494x2[_0x7ddb[2207]][_0x7ddb[603]]= _0x9494x5,_0x9494x2[_0x7ddb[2207]][_0x7ddb[1562]]= _0x9494x4,_0x9494x2[_0x7ddb[2207]][_0x7ddb[255]]= _0x9494x9,_0x9494x2[_0x7ddb[2207]][_0x7ddb[258]]()}}};mxCellRenderer[_0x7ddb[202]][_0x7ddb[2224]]= function(_0x9494x2){if(null!= _0x9494x2[_0x7ddb[2207]]){var _0x9494x3=_0x9494x2[_0x7ddb[2207]][_0x7ddb[255]],_0x9494x4=_0x9494x2[_0x7ddb[2207]][_0x7ddb[1562]][_0x7ddb[117]]/ _0x9494x3,_0x9494x3=_0x9494x2[_0x7ddb[2207]][_0x7ddb[1562]][_0x7ddb[119]]/ _0x9494x3,_0x9494x5=_0x9494x2[_0x7ddb[441]][_0x7ddb[255]],_0x9494x9=_0x9494x2[_0x7ddb[241]](),_0x9494xa=_0x9494x2[_0x7ddb[242]]();if(!_0x9494x2[_0x7ddb[441]][_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[250]](_0x9494x2[_0x7ddb[246]])&& (_0x9494x9= _0x9494x2[_0x7ddb[235]]+ _0x9494x4* _0x9494x5,_0x9494xa= _0x9494x2[_0x7ddb[236]]+ _0x9494x3* _0x9494x5,null!= _0x9494x2[_0x7ddb[253]])){var _0x9494x12=_0x9494x2[_0x7ddb[253]][_0x7ddb[1598]]();if(this[_0x7ddb[2152]]){_0x9494x12= mxUtils[_0x7ddb[433]](_0x9494x2[_0x7ddb[124]],mxConstants.STYLE_ROTATION,0)}else {if(_0x9494x2[_0x7ddb[253]][_0x7ddb[1590]]()){var _0x9494x13=(_0x9494x2[_0x7ddb[117]]- _0x9494x2[_0x7ddb[119]])/ 2,_0x9494x9=_0x9494x9+ _0x9494x13,_0x9494xa=_0x9494xa- _0x9494x13}};0!= _0x9494x12&& (_0x9494x13= mxUtils[_0x7ddb[431]](_0x9494x12),_0x9494x12= Math[_0x7ddb[426]](_0x9494x13),_0x9494x13= Math[_0x7ddb[427]](_0x9494x13),_0x9494xa= mxUtils[_0x7ddb[432]]( new mxPoint(_0x9494x9,_0x9494xa),_0x9494x12,_0x9494x13, new mxPoint(_0x9494x2[_0x7ddb[241]](),_0x9494x2[_0x7ddb[242]]())),_0x9494x9= _0x9494xa[_0x7ddb[235]],_0x9494xa= _0x9494xa[_0x7ddb[236]])};return _0x9494x2[_0x7ddb[441]][_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[250]](_0x9494x2[_0x7ddb[246]]), new mxRectangle(Math[_0x7ddb[488]](_0x9494x9- _0x9494x4/ 2* _0x9494x5),Math[_0x7ddb[488]](_0x9494xa- _0x9494x3/ 2* _0x9494x5),Math[_0x7ddb[488]](_0x9494x4* _0x9494x5),Math[_0x7ddb[488]](_0x9494x3* _0x9494x5))};return null};mxCellRenderer[_0x7ddb[202]][_0x7ddb[258]]= function(_0x9494x2,_0x9494x3,_0x9494x4){if(null!= _0x9494x2[_0x7ddb[253]]){var _0x9494x5=!1;_0x9494x2[_0x7ddb[441]][_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[250]](_0x9494x2[_0x7ddb[246]]);reconfigure= null!= _0x9494x3?_0x9494x3:!1;this[_0x7ddb[2204]](_0x9494x2);if(_0x9494x2[_0x7ddb[2082]]|| _0x9494x2[_0x7ddb[2081]]){_0x9494x2[_0x7ddb[441]][_0x7ddb[1179]][_0x7ddb[2158]]?this[_0x7ddb[2166]](_0x9494x2):this[_0x7ddb[2167]](_0x9494x2)};if(_0x9494x2[_0x7ddb[2082]]|| !mxUtils[_0x7ddb[2225]](_0x9494x2[_0x7ddb[253]][_0x7ddb[124]],_0x9494x2[_0x7ddb[124]])){this[_0x7ddb[2170]](_0x9494x2),_0x9494x3= !0};delete _0x9494x2[_0x7ddb[2081]];delete _0x9494x2[_0x7ddb[2082]];if(_0x9494x3|| null== _0x9494x2[_0x7ddb[253]][_0x7ddb[1562]]|| _0x9494x2[_0x7ddb[253]][_0x7ddb[255]]!= _0x9494x2[_0x7ddb[441]][_0x7ddb[255]]|| !_0x9494x2[_0x7ddb[253]][_0x7ddb[1562]][_0x7ddb[237]](_0x9494x2)|| !mxUtils[_0x7ddb[2226]](_0x9494x2[_0x7ddb[253]][_0x7ddb[1525]],_0x9494x2[_0x7ddb[439]])){_0x9494x5= !0,_0x9494x2[_0x7ddb[253]][_0x7ddb[1525]]= null!= _0x9494x2[_0x7ddb[439]]?_0x9494x2[_0x7ddb[439]][_0x7ddb[1853]]():null,_0x9494x2[_0x7ddb[253]][_0x7ddb[1562]]= new mxRectangle(_0x9494x2[_0x7ddb[235]],_0x9494x2[_0x7ddb[236]],_0x9494x2[_0x7ddb[117]],_0x9494x2[_0x7ddb[119]]),_0x9494x2[_0x7ddb[253]][_0x7ddb[255]]= _0x9494x2[_0x7ddb[441]][_0x7ddb[255]],null== _0x9494x4|| _0x9494x4?_0x9494x2[_0x7ddb[253]][_0x7ddb[258]]():_0x9494x2[_0x7ddb[253]][_0x7ddb[1577]]()};if(null== _0x9494x4|| _0x9494x4){this[_0x7ddb[2217]](_0x9494x2,_0x9494x5),this[_0x7ddb[2222]](_0x9494x2,_0x9494x5),this[_0x7ddb[2223]](_0x9494x2,_0x9494x5)}}};mxCellRenderer[_0x7ddb[202]][_0x7ddb[515]]= function(_0x9494x2){null!= _0x9494x2[_0x7ddb[253]]&& (null!= _0x9494x2[_0x7ddb[963]]&& (_0x9494x2[_0x7ddb[963]][_0x7ddb[515]](),_0x9494x2[_0x7ddb[963]]= null),null!= _0x9494x2[_0x7ddb[1211]]&& (_0x9494x2[_0x7ddb[1211]][_0x7ddb[209]](function(_0x9494x2,_0x9494x4){_0x9494x4[_0x7ddb[515]]()}),_0x9494x2[_0x7ddb[1211]]= null),null!= _0x9494x2[_0x7ddb[2207]]&& (_0x9494x2[_0x7ddb[2207]][_0x7ddb[515]](),_0x9494x2[_0x7ddb[2207]]= null),_0x9494x2[_0x7ddb[253]][_0x7ddb[515]](),_0x9494x2[_0x7ddb[253]]= null)};var mxEdgeStyle={EntityRelation:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){var _0x9494xa=_0x9494x2[_0x7ddb[441]],_0x9494x12=_0x9494xa[_0x7ddb[1179]];_0x9494x5= mxUtils[_0x7ddb[433]](_0x9494x2[_0x7ddb[124]],mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)* _0x9494xa[_0x7ddb[255]];var _0x9494x13=_0x9494x2[_0x7ddb[439]],_0x9494x14=_0x9494x13[0],_0x9494x15=_0x9494x13[_0x9494x13[_0x7ddb[67]]- 1],_0x9494x13=!1;if(null!= _0x9494x14){_0x9494x3= new mxCellState,_0x9494x3[_0x7ddb[235]]= _0x9494x14[_0x7ddb[235]],_0x9494x3[_0x7ddb[236]]= _0x9494x14[_0x7ddb[236]]}else {if(null!= _0x9494x3){var _0x9494x16=mxUtils[_0x7ddb[2227]](_0x9494x3,_0x9494x2,!0,mxConstants.DIRECTION_MASK_NONE);_0x9494x16!= mxConstants[_0x7ddb[434]]?_0x9494x13= _0x9494x16== mxConstants[_0x7ddb[436]]:(_0x9494x14= _0x9494x12[_0x7ddb[1198]](_0x9494x3[_0x7ddb[246]]),_0x9494x14[_0x7ddb[1500]]?_0x9494x13= 0.5>= _0x9494x14[_0x7ddb[235]]:null!= _0x9494x4&& (_0x9494x13= _0x9494x4[_0x7ddb[235]]+ _0x9494x4[_0x7ddb[117]]< _0x9494x3[_0x7ddb[235]]))}else {return}};_0x9494x14= !0;null!= _0x9494x15?(_0x9494x4= new mxCellState,_0x9494x4[_0x7ddb[235]]= _0x9494x15[_0x7ddb[235]],_0x9494x4[_0x7ddb[236]]= _0x9494x15[_0x7ddb[236]]):null!= _0x9494x4&& (_0x9494x16= mxUtils[_0x7ddb[2227]](_0x9494x4,_0x9494x2,!1,mxConstants.DIRECTION_MASK_NONE),_0x9494x16!= mxConstants[_0x7ddb[434]]?_0x9494x14= _0x9494x16== mxConstants[_0x7ddb[436]]:(_0x9494x2= _0x9494x12[_0x7ddb[1198]](_0x9494x4[_0x7ddb[246]]),_0x9494x2[_0x7ddb[1500]]?_0x9494x14= 0.5>= _0x9494x2[_0x7ddb[235]]:null!= _0x9494x3&& (_0x9494x14= _0x9494x3[_0x7ddb[235]]+ _0x9494x3[_0x7ddb[117]]< _0x9494x4[_0x7ddb[235]])));null!= _0x9494x3&& null!= _0x9494x4&& (_0x9494x2= _0x9494x13?_0x9494x3[_0x7ddb[235]]:_0x9494x3[_0x7ddb[235]]+ _0x9494x3[_0x7ddb[117]],_0x9494x3= _0x9494xa[_0x7ddb[2228]](_0x9494x3),_0x9494x12= _0x9494x14?_0x9494x4[_0x7ddb[235]]:_0x9494x4[_0x7ddb[235]]+ _0x9494x4[_0x7ddb[117]],_0x9494x4= _0x9494xa[_0x7ddb[2228]](_0x9494x4),_0x9494xa= new mxPoint(_0x9494x2+ (_0x9494x13?-_0x9494x5:_0x9494x5),_0x9494x3),_0x9494x15= new mxPoint(_0x9494x12+ (_0x9494x14?-_0x9494x5:_0x9494x5),_0x9494x4),_0x9494x13== _0x9494x14?(_0x9494x5= _0x9494x13?Math[_0x7ddb[243]](_0x9494x2,_0x9494x12)- _0x9494x5:Math[_0x7ddb[160]](_0x9494x2,_0x9494x12)+ _0x9494x5,_0x9494x9[_0x7ddb[207]]( new mxPoint(_0x9494x5,_0x9494x3)),_0x9494x9[_0x7ddb[207]]( new mxPoint(_0x9494x5,_0x9494x4))):(_0x9494xa[_0x7ddb[235]]< _0x9494x15[_0x7ddb[235]]== _0x9494x13?(_0x9494x5= _0x9494x3+ (_0x9494x4- _0x9494x3)/ 2,_0x9494x9[_0x7ddb[207]](_0x9494xa),_0x9494x9[_0x7ddb[207]]( new mxPoint(_0x9494xa[_0x7ddb[235]],_0x9494x5)),_0x9494x9[_0x7ddb[207]]( new mxPoint(_0x9494x15[_0x7ddb[235]],_0x9494x5))):_0x9494x9[_0x7ddb[207]](_0x9494xa),_0x9494x9[_0x7ddb[207]](_0x9494x15)))},Loop:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){if(null!= _0x9494x3){_0x9494x4= _0x9494x2[_0x7ddb[441]];var _0x9494xa=_0x9494x4[_0x7ddb[1179]];_0x9494x5= null!= _0x9494x5&& 0< _0x9494x5[_0x7ddb[67]]?_0x9494x5[0]:null;null!= _0x9494x5&& (_0x9494x5= _0x9494x4[_0x7ddb[2229]](_0x9494x2,_0x9494x5),mxUtils[_0x7ddb[442]](_0x9494x3,_0x9494x5[_0x7ddb[235]],_0x9494x5[_0x7ddb[236]])&& (_0x9494x5= null));var _0x9494x12=0,_0x9494x13=0,_0x9494x14=0,_0x9494x15=0,_0x9494xa=mxUtils[_0x7ddb[433]](_0x9494x2[_0x7ddb[124]],mxConstants.STYLE_SEGMENT,_0x9494xa[_0x7ddb[1020]])* _0x9494x4[_0x7ddb[255]];_0x9494x2= mxUtils[_0x7ddb[433]](_0x9494x2[_0x7ddb[124]],mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST);_0x9494x2== mxConstants[_0x7ddb[1358]]|| _0x9494x2== mxConstants[_0x7ddb[1354]]?(_0x9494x12= _0x9494x4[_0x7ddb[2230]](_0x9494x3),_0x9494x13= _0x9494xa):(_0x9494x14= _0x9494x4[_0x7ddb[2228]](_0x9494x3),_0x9494x15= _0x9494xa);null== _0x9494x5|| _0x9494x5[_0x7ddb[235]]< _0x9494x3[_0x7ddb[235]]|| _0x9494x5[_0x7ddb[235]]> _0x9494x3[_0x7ddb[235]]+ _0x9494x3[_0x7ddb[117]]?null!= _0x9494x5?(_0x9494x12= _0x9494x5[_0x7ddb[235]],_0x9494x15= Math[_0x7ddb[160]](Math[_0x7ddb[425]](_0x9494x14- _0x9494x5[_0x7ddb[236]]),_0x9494x15)):_0x9494x2== mxConstants[_0x7ddb[1358]]?_0x9494x14= _0x9494x3[_0x7ddb[236]]- 2* _0x9494x13:_0x9494x2== mxConstants[_0x7ddb[1354]]?_0x9494x14= _0x9494x3[_0x7ddb[236]]+ _0x9494x3[_0x7ddb[119]]+ 2* _0x9494x13:_0x9494x12= _0x9494x2== mxConstants[_0x7ddb[1356]]?_0x9494x3[_0x7ddb[235]]- 2* _0x9494x15:_0x9494x3[_0x7ddb[235]]+ _0x9494x3[_0x7ddb[117]]+ 2* _0x9494x15:null!= _0x9494x5&& (_0x9494x12= _0x9494x4[_0x7ddb[2230]](_0x9494x3),_0x9494x13= Math[_0x7ddb[160]](Math[_0x7ddb[425]](_0x9494x12- _0x9494x5[_0x7ddb[235]]),_0x9494x15),_0x9494x14= _0x9494x5[_0x7ddb[236]],_0x9494x15= 0);_0x9494x9[_0x7ddb[207]]( new mxPoint(_0x9494x12- _0x9494x13,_0x9494x14- _0x9494x15));_0x9494x9[_0x7ddb[207]]( new mxPoint(_0x9494x12+ _0x9494x13,_0x9494x14+ _0x9494x15))}},ElbowConnector:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){var _0x9494xa=null!= _0x9494x5&& 0< _0x9494x5[_0x7ddb[67]]?_0x9494x5[0]:null,_0x9494x12=!1,_0x9494x13=!1;if(null!= _0x9494x3&& null!= _0x9494x4){if(null!= _0x9494xa){var _0x9494x14=Math[_0x7ddb[243]](_0x9494x3[_0x7ddb[235]],_0x9494x4[_0x7ddb[235]]),_0x9494x15=Math[_0x7ddb[160]](_0x9494x3[_0x7ddb[235]]+ _0x9494x3[_0x7ddb[117]],_0x9494x4[_0x7ddb[235]]+ _0x9494x4[_0x7ddb[117]]),_0x9494x13=Math[_0x7ddb[243]](_0x9494x3[_0x7ddb[236]],_0x9494x4[_0x7ddb[236]]),_0x9494x16=Math[_0x7ddb[160]](_0x9494x3[_0x7ddb[236]]+ _0x9494x3[_0x7ddb[119]],_0x9494x4[_0x7ddb[236]]+ _0x9494x4[_0x7ddb[119]]),_0x9494xa=_0x9494x2[_0x7ddb[441]][_0x7ddb[2229]](_0x9494x2,_0x9494xa),_0x9494x12=_0x9494xa[_0x7ddb[236]]< _0x9494x13|| _0x9494xa[_0x7ddb[236]]> _0x9494x16,_0x9494x13=_0x9494xa[_0x7ddb[235]]< _0x9494x14|| _0x9494xa[_0x7ddb[235]]> _0x9494x15}else {_0x9494x14= Math[_0x7ddb[160]](_0x9494x3[_0x7ddb[235]],_0x9494x4[_0x7ddb[235]]),_0x9494x15= Math[_0x7ddb[243]](_0x9494x3[_0x7ddb[235]]+ _0x9494x3[_0x7ddb[117]],_0x9494x4[_0x7ddb[235]]+ _0x9494x4[_0x7ddb[117]]),_0x9494x12= _0x9494x14== _0x9494x15,_0x9494x12|| (_0x9494x13= Math[_0x7ddb[160]](_0x9494x3[_0x7ddb[236]],_0x9494x4[_0x7ddb[236]]),_0x9494x16= Math[_0x7ddb[243]](_0x9494x3[_0x7ddb[236]]+ _0x9494x3[_0x7ddb[119]],_0x9494x4[_0x7ddb[236]]+ _0x9494x4[_0x7ddb[119]]),_0x9494x13= _0x9494x13== _0x9494x16)}};!_0x9494x13&& (_0x9494x12|| _0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2231]]]== mxConstants[_0x7ddb[2232]])?mxEdgeStyle.TopToBottom(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9):mxEdgeStyle.SideToSide(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9)},SideToSide:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){var _0x9494xa=_0x9494x2[_0x7ddb[441]];_0x9494x5= null!= _0x9494x5&& 0< _0x9494x5[_0x7ddb[67]]?_0x9494x5[0]:null;var _0x9494x12=_0x9494x2[_0x7ddb[439]],_0x9494x13=_0x9494x12[0],_0x9494x12=_0x9494x12[_0x9494x12[_0x7ddb[67]]- 1];null!= _0x9494x5&& (_0x9494x5= _0x9494xa[_0x7ddb[2229]](_0x9494x2,_0x9494x5));null!= _0x9494x13&& (_0x9494x3= new mxCellState,_0x9494x3[_0x7ddb[235]]= _0x9494x13[_0x7ddb[235]],_0x9494x3[_0x7ddb[236]]= _0x9494x13[_0x7ddb[236]]);null!= _0x9494x12&& (_0x9494x4= new mxCellState,_0x9494x4[_0x7ddb[235]]= _0x9494x12[_0x7ddb[235]],_0x9494x4[_0x7ddb[236]]= _0x9494x12[_0x7ddb[236]]);null!= _0x9494x3&& null!= _0x9494x4&& (_0x9494x2= Math[_0x7ddb[160]](_0x9494x3[_0x7ddb[235]],_0x9494x4[_0x7ddb[235]]),_0x9494x13= Math[_0x7ddb[243]](_0x9494x3[_0x7ddb[235]]+ _0x9494x3[_0x7ddb[117]],_0x9494x4[_0x7ddb[235]]+ _0x9494x4[_0x7ddb[117]]),_0x9494x2= null!= _0x9494x5?_0x9494x5[_0x7ddb[235]]:_0x9494x13+ (_0x9494x2- _0x9494x13)/ 2,_0x9494x13= _0x9494xa[_0x7ddb[2228]](_0x9494x3),_0x9494xa= _0x9494xa[_0x7ddb[2228]](_0x9494x4),null!= _0x9494x5&& (_0x9494x5[_0x7ddb[236]]>= _0x9494x3[_0x7ddb[236]]&& _0x9494x5[_0x7ddb[236]]<= _0x9494x3[_0x7ddb[236]]+ _0x9494x3[_0x7ddb[119]]&& (_0x9494x13= _0x9494x5[_0x7ddb[236]]),_0x9494x5[_0x7ddb[236]]>= _0x9494x4[_0x7ddb[236]]&& _0x9494x5[_0x7ddb[236]]<= _0x9494x4[_0x7ddb[236]]+ _0x9494x4[_0x7ddb[119]]&& (_0x9494xa= _0x9494x5[_0x7ddb[236]])),!mxUtils[_0x7ddb[442]](_0x9494x4,_0x9494x2,_0x9494x13)&& !mxUtils[_0x7ddb[442]](_0x9494x3,_0x9494x2,_0x9494x13) && _0x9494x9[_0x7ddb[207]]( new mxPoint(_0x9494x2,_0x9494x13)),!mxUtils[_0x7ddb[442]](_0x9494x4,_0x9494x2,_0x9494xa)&& !mxUtils[_0x7ddb[442]](_0x9494x3,_0x9494x2,_0x9494xa) && _0x9494x9[_0x7ddb[207]]( new mxPoint(_0x9494x2,_0x9494xa)),1== _0x9494x9[_0x7ddb[67]]&& (null!= _0x9494x5?!mxUtils[_0x7ddb[442]](_0x9494x4,_0x9494x2,_0x9494x5[_0x7ddb[236]])&& !mxUtils[_0x7ddb[442]](_0x9494x3,_0x9494x2,_0x9494x5[_0x7ddb[236]]) && _0x9494x9[_0x7ddb[207]]( new mxPoint(_0x9494x2,_0x9494x5[_0x7ddb[236]])):(_0x9494xa= Math[_0x7ddb[160]](_0x9494x3[_0x7ddb[236]],_0x9494x4[_0x7ddb[236]]),_0x9494x3= Math[_0x7ddb[243]](_0x9494x3[_0x7ddb[236]]+ _0x9494x3[_0x7ddb[119]],_0x9494x4[_0x7ddb[236]]+ _0x9494x4[_0x7ddb[119]]),_0x9494x9[_0x7ddb[207]]( new mxPoint(_0x9494x2,_0x9494xa+ (_0x9494x3- _0x9494xa)/ 2)))))},TopToBottom:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){var _0x9494xa=_0x9494x2[_0x7ddb[441]];_0x9494x5= null!= _0x9494x5&& 0< _0x9494x5[_0x7ddb[67]]?_0x9494x5[0]:null;var _0x9494x12=_0x9494x2[_0x7ddb[439]],_0x9494x13=_0x9494x12[0],_0x9494x12=_0x9494x12[_0x9494x12[_0x7ddb[67]]- 1];null!= _0x9494x5&& (_0x9494x5= _0x9494xa[_0x7ddb[2229]](_0x9494x2,_0x9494x5));null!= _0x9494x13&& (_0x9494x3= new mxCellState,_0x9494x3[_0x7ddb[235]]= _0x9494x13[_0x7ddb[235]],_0x9494x3[_0x7ddb[236]]= _0x9494x13[_0x7ddb[236]]);null!= _0x9494x12&& (_0x9494x4= new mxCellState,_0x9494x4[_0x7ddb[235]]= _0x9494x12[_0x7ddb[235]],_0x9494x4[_0x7ddb[236]]= _0x9494x12[_0x7ddb[236]]);null!= _0x9494x3&& null!= _0x9494x4&& (_0x9494x13= Math[_0x7ddb[160]](_0x9494x3[_0x7ddb[236]],_0x9494x4[_0x7ddb[236]]),_0x9494x12= Math[_0x7ddb[243]](_0x9494x3[_0x7ddb[236]]+ _0x9494x3[_0x7ddb[119]],_0x9494x4[_0x7ddb[236]]+ _0x9494x4[_0x7ddb[119]]),_0x9494x2= _0x9494xa[_0x7ddb[2230]](_0x9494x3),null!= _0x9494x5&& (_0x9494x5[_0x7ddb[235]]>= _0x9494x3[_0x7ddb[235]]&& _0x9494x5[_0x7ddb[235]]<= _0x9494x3[_0x7ddb[235]]+ _0x9494x3[_0x7ddb[117]])&& (_0x9494x2= _0x9494x5[_0x7ddb[235]]),_0x9494x13= null!= _0x9494x5?_0x9494x5[_0x7ddb[236]]:_0x9494x12+ (_0x9494x13- _0x9494x12)/ 2,!mxUtils[_0x7ddb[442]](_0x9494x4,_0x9494x2,_0x9494x13)&& !mxUtils[_0x7ddb[442]](_0x9494x3,_0x9494x2,_0x9494x13) && _0x9494x9[_0x7ddb[207]]( new mxPoint(_0x9494x2,_0x9494x13)),_0x9494x2= null!= _0x9494x5&& _0x9494x5[_0x7ddb[235]]>= _0x9494x4[_0x7ddb[235]]&& _0x9494x5[_0x7ddb[235]]<= _0x9494x4[_0x7ddb[235]]+ _0x9494x4[_0x7ddb[117]]?_0x9494x5[_0x7ddb[235]]:_0x9494xa[_0x7ddb[2230]](_0x9494x4),!mxUtils[_0x7ddb[442]](_0x9494x4,_0x9494x2,_0x9494x13)&& !mxUtils[_0x7ddb[442]](_0x9494x3,_0x9494x2,_0x9494x13) && _0x9494x9[_0x7ddb[207]]( new mxPoint(_0x9494x2,_0x9494x13)),1== _0x9494x9[_0x7ddb[67]]&& (null!= _0x9494x5&& 1== _0x9494x9[_0x7ddb[67]]?!mxUtils[_0x7ddb[442]](_0x9494x4,_0x9494x5[_0x7ddb[235]],_0x9494x13)&& !mxUtils[_0x7ddb[442]](_0x9494x3,_0x9494x5[_0x7ddb[235]],_0x9494x13) && _0x9494x9[_0x7ddb[207]]( new mxPoint(_0x9494x5[_0x7ddb[235]],_0x9494x13)):(_0x9494xa= Math[_0x7ddb[160]](_0x9494x3[_0x7ddb[235]],_0x9494x4[_0x7ddb[235]]),_0x9494x3= Math[_0x7ddb[243]](_0x9494x3[_0x7ddb[235]]+ _0x9494x3[_0x7ddb[117]],_0x9494x4[_0x7ddb[235]]+ _0x9494x4[_0x7ddb[117]]),_0x9494x9[_0x7ddb[207]]( new mxPoint(_0x9494xa+ (_0x9494x3- _0x9494xa)/ 2,_0x9494x13)))))},SegmentConnector:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){var _0x9494xa=_0x9494x2[_0x7ddb[439]],_0x9494x12=!0,_0x9494x13=null,_0x9494x14=_0x9494xa[0];null== _0x9494x14&& null!= _0x9494x3?_0x9494x14= new mxPoint(_0x9494x2[_0x7ddb[441]][_0x7ddb[2230]](_0x9494x3),_0x9494x2[_0x7ddb[441]][_0x7ddb[2228]](_0x9494x3)):null!= _0x9494x14&& (_0x9494x14= _0x9494x14[_0x7ddb[238]]());var _0x9494x15=_0x9494xa[_0x7ddb[67]]- 1;if(null!= _0x9494x5&& 0< _0x9494x5[_0x7ddb[67]]){for(var _0x9494x13=_0x9494x2[_0x7ddb[441]][_0x7ddb[2229]](_0x9494x2,_0x9494x5[0]),_0x9494x16=_0x9494x3,_0x9494x17=_0x9494xa[0],_0x9494x18=!1,_0x9494x19=!1,_0x9494x18=_0x9494x13,_0x9494x1a=_0x9494x5[_0x7ddb[67]],_0x9494x1b=0;2> _0x9494x1b;_0x9494x1b++){var _0x9494x1c=null!= _0x9494x17&& _0x9494x17[_0x7ddb[235]]== _0x9494x18[_0x7ddb[235]],_0x9494x1d=null!= _0x9494x17&& _0x9494x17[_0x7ddb[236]]== _0x9494x18[_0x7ddb[236]],_0x9494x1e=null!= _0x9494x16&& _0x9494x18[_0x7ddb[236]]>= _0x9494x16[_0x7ddb[236]]&& _0x9494x18[_0x7ddb[236]]<= _0x9494x16[_0x7ddb[236]]+ _0x9494x16[_0x7ddb[119]],_0x9494x16=null!= _0x9494x16&& _0x9494x18[_0x7ddb[235]]>= _0x9494x16[_0x7ddb[235]]&& _0x9494x18[_0x7ddb[235]]<= _0x9494x16[_0x7ddb[235]]+ _0x9494x16[_0x7ddb[117]],_0x9494x18=_0x9494x1d|| null== _0x9494x17&& _0x9494x1e,_0x9494x19=_0x9494x1c|| null== _0x9494x17&& _0x9494x16;if(null!= _0x9494x17&& !_0x9494x1d&& !_0x9494x1c&& (_0x9494x1e|| _0x9494x16)){_0x9494x12= _0x9494x1e?!1:!0;break};if(_0x9494x19|| _0x9494x18){_0x9494x12= _0x9494x18;1== _0x9494x1b&& (_0x9494x12= 0== _0x9494x5[_0x7ddb[67]]% 2?_0x9494x18:_0x9494x19);break};_0x9494x16= _0x9494x4;_0x9494x17= _0x9494xa[_0x9494x15];_0x9494x18= _0x9494x2[_0x7ddb[441]][_0x7ddb[2229]](_0x9494x2,_0x9494x5[_0x9494x1a- 1])};_0x9494x12&& (null!= _0x9494xa[0]&& _0x9494xa[0][_0x7ddb[236]]!= _0x9494x13[_0x7ddb[236]]|| null== _0x9494xa[0]&& null!= _0x9494x3&& (_0x9494x13[_0x7ddb[236]]< _0x9494x3[_0x7ddb[236]]|| _0x9494x13[_0x7ddb[236]]> _0x9494x3[_0x7ddb[236]]+ _0x9494x3[_0x7ddb[119]]))?_0x9494x9[_0x7ddb[207]]( new mxPoint(_0x9494x14[_0x7ddb[235]],_0x9494x13[_0x7ddb[236]])):!_0x9494x12&& (null!= _0x9494xa[0]&& _0x9494xa[0][_0x7ddb[235]]!= _0x9494x13[_0x7ddb[235]]|| null== _0x9494xa[0]&& null!= _0x9494x3&& (_0x9494x13[_0x7ddb[235]]< _0x9494x3[_0x7ddb[235]]|| _0x9494x13[_0x7ddb[235]]> _0x9494x3[_0x7ddb[235]]+ _0x9494x3[_0x7ddb[117]])) && _0x9494x9[_0x7ddb[207]]( new mxPoint(_0x9494x13[_0x7ddb[235]],_0x9494x14[_0x7ddb[236]]));_0x9494x12?_0x9494x14[_0x7ddb[236]]= _0x9494x13[_0x7ddb[236]]:_0x9494x14[_0x7ddb[235]]= _0x9494x13[_0x7ddb[235]];for(_0x9494x1b= 0;_0x9494x1b< _0x9494x5[_0x7ddb[67]];_0x9494x1b++){_0x9494x12= !_0x9494x12,_0x9494x13= _0x9494x2[_0x7ddb[441]][_0x7ddb[2229]](_0x9494x2,_0x9494x5[_0x9494x1b]),_0x9494x12?_0x9494x14[_0x7ddb[236]]= _0x9494x13[_0x7ddb[236]]:_0x9494x14[_0x7ddb[235]]= _0x9494x13[_0x7ddb[235]],_0x9494x9[_0x7ddb[207]](_0x9494x14[_0x7ddb[238]]())}}else {_0x9494x13= _0x9494x14,_0x9494x12= !0};_0x9494x14= _0x9494xa[_0x9494x15];null== _0x9494x14&& null!= _0x9494x4&& (_0x9494x14= new mxPoint(_0x9494x2[_0x7ddb[441]][_0x7ddb[2230]](_0x9494x4),_0x9494x2[_0x7ddb[441]][_0x7ddb[2228]](_0x9494x4)));_0x9494x12&& (null!= _0x9494xa[_0x9494x15]&& _0x9494xa[_0x9494x15][_0x7ddb[236]]!= _0x9494x13[_0x7ddb[236]]|| null== _0x9494xa[_0x9494x15]&& null!= _0x9494x4&& (_0x9494x13[_0x7ddb[236]]< _0x9494x4[_0x7ddb[236]]|| _0x9494x13[_0x7ddb[236]]> _0x9494x4[_0x7ddb[236]]+ _0x9494x4[_0x7ddb[119]]))?_0x9494x9[_0x7ddb[207]]( new mxPoint(_0x9494x14[_0x7ddb[235]],_0x9494x13[_0x7ddb[236]])):!_0x9494x12&& (null!= _0x9494xa[_0x9494x15]&& _0x9494xa[_0x9494x15][_0x7ddb[235]]!= _0x9494x13[_0x7ddb[235]]|| null== _0x9494xa[_0x9494x15]&& null!= _0x9494x4&& (_0x9494x13[_0x7ddb[235]]< _0x9494x4[_0x7ddb[235]]|| _0x9494x13[_0x7ddb[235]]> _0x9494x4[_0x7ddb[235]]+ _0x9494x4[_0x7ddb[117]])) && _0x9494x9[_0x7ddb[207]]( new mxPoint(_0x9494x13[_0x7ddb[235]],_0x9494x14[_0x7ddb[236]]));if(null== _0x9494xa[0]&& null!= _0x9494x3){for(;1< _0x9494x9[_0x7ddb[67]]&& mxUtils[_0x7ddb[442]](_0x9494x3,_0x9494x9[1][_0x7ddb[235]],_0x9494x9[1][_0x7ddb[236]]);){_0x9494x9= _0x9494x9[_0x7ddb[300]](1,1)}};if(null== _0x9494xa[_0x9494x15]&& null!= _0x9494x4){for(;1< _0x9494x9[_0x7ddb[67]]&& mxUtils[_0x7ddb[442]](_0x9494x4,_0x9494x9[_0x9494x9[_0x7ddb[67]]- 1][_0x7ddb[235]],_0x9494x9[_0x9494x9[_0x7ddb[67]]- 1][_0x7ddb[236]]);){_0x9494x9= _0x9494x9[_0x7ddb[300]](_0x9494x9[_0x7ddb[67]]- 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(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){var _0x9494xa=_0x9494x2[_0x7ddb[441]][_0x7ddb[1179]],_0x9494x12=null== _0x9494x3?!1:_0x9494xa[_0x7ddb[502]]()[_0x7ddb[250]](_0x9494x3[_0x7ddb[246]]),_0x9494xa=null== _0x9494x4?!1:_0x9494xa[_0x7ddb[502]]()[_0x7ddb[250]](_0x9494x4[_0x7ddb[246]]);if(null!= _0x9494x5&& 0< _0x9494x5[_0x7ddb[67]]|| _0x9494x12|| _0x9494xa){mxEdgeStyle.SegmentConnector(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9)}else {_0x9494x5= _0x9494x2[_0x7ddb[439]];var _0x9494x13=_0x9494x5[0],_0x9494x14=_0x9494x5[_0x9494x5[_0x7ddb[67]]- 1];_0x9494x5= null!= _0x9494x3?_0x9494x3[_0x7ddb[235]]:_0x9494x13[_0x7ddb[235]];var _0x9494x12=null!= _0x9494x3?_0x9494x3[_0x7ddb[236]]:_0x9494x13[_0x7ddb[236]],_0x9494x15=null!= _0x9494x3?_0x9494x3[_0x7ddb[117]]:1,_0x9494x16=null!= _0x9494x3?_0x9494x3[_0x7ddb[119]]:1,_0x9494x17=null!= _0x9494x4?_0x9494x4[_0x7ddb[235]]:_0x9494x14[_0x7ddb[235]],_0x9494x18=null!= _0x9494x4?_0x9494x4[_0x7ddb[236]]:_0x9494x14[_0x7ddb[236]],_0x9494x19=null!= _0x9494x4?_0x9494x4[_0x7ddb[117]]:1,_0x9494x1a=null!= _0x9494x4?_0x9494x4[_0x7ddb[119]]:1,_0x9494xa=_0x9494x2[_0x7ddb[441]][_0x7ddb[255]]* mxEdgeStyle[_0x7ddb[2233]],_0x9494x1b=[mxConstants[_0x7ddb[2234]],mxConstants[_0x7ddb[2234]]];null!= _0x9494x3&& (_0x9494x1b[0]= mxUtils[_0x7ddb[2227]](_0x9494x3,_0x9494x2,!0,mxConstants.DIRECTION_MASK_ALL));null!= _0x9494x4&& (_0x9494x1b[1]= mxUtils[_0x7ddb[2227]](_0x9494x4,_0x9494x2,!1,mxConstants.DIRECTION_MASK_ALL));_0x9494x2= [0,0];_0x9494x5= [[_0x9494x5,_0x9494x12,_0x9494x15,_0x9494x16],[_0x9494x17,_0x9494x18,_0x9494x19,_0x9494x1a]];for(_0x9494x15= 0;2> _0x9494x15;_0x9494x15++){mxEdgeStyle[_0x7ddb[2235]][_0x9494x15][1]= _0x9494x5[_0x9494x15][0]- _0x9494xa,mxEdgeStyle[_0x7ddb[2235]][_0x9494x15][2]= _0x9494x5[_0x9494x15][1]- _0x9494xa,mxEdgeStyle[_0x7ddb[2235]][_0x9494x15][4]= _0x9494x5[_0x9494x15][0]+ _0x9494x5[_0x9494x15][2]+ _0x9494xa,mxEdgeStyle[_0x7ddb[2235]][_0x9494x15][8]= _0x9494x5[_0x9494x15][1]+ _0x9494x5[_0x9494x15][3]+ _0x9494xa};_0x9494x15= _0x9494x5[0][0]+ _0x9494x5[0][2]/ 2- (_0x9494x5[1][0]+ _0x9494x5[1][2]/ 2);_0x9494x16= _0x9494x5[0][1]+ _0x9494x5[0][3]/ 2- (_0x9494x5[1][1]+ _0x9494x5[1][3]/ 2);_0x9494x12= 0;0> _0x9494x15?_0x9494x12= 0> _0x9494x16?2:1:0>= _0x9494x16&& (_0x9494x12= 3,0== _0x9494x15&& (_0x9494x12= 2));_0x9494x16= null;null!= _0x9494x3&& (_0x9494x16= _0x9494x13);_0x9494x3= [[0.5,0.5],[0.5,0.5]];for(_0x9494x15= 0;2> _0x9494x15;_0x9494x15++){null!= _0x9494x16&& (_0x9494x3[_0x9494x15][0]= (_0x9494x16[_0x7ddb[235]]- _0x9494x5[_0x9494x15][0])/ _0x9494x5[_0x9494x15][2],0.01> _0x9494x3[_0x9494x15][0]?_0x9494x2[_0x9494x15]= mxConstants[_0x7ddb[436]]:0.99< _0x9494x3[_0x9494x15][0]&& (_0x9494x2[_0x9494x15]= mxConstants[_0x7ddb[438]]),_0x9494x3[_0x9494x15][1]= (_0x9494x16[_0x7ddb[236]]- _0x9494x5[_0x9494x15][1])/ _0x9494x5[_0x9494x15][3],0.01> _0x9494x3[_0x9494x15][1]?_0x9494x2[_0x9494x15]= mxConstants[_0x7ddb[435]]:0.99< _0x9494x3[_0x9494x15][1]&& (_0x9494x2[_0x9494x15]= mxConstants[_0x7ddb[437]])),_0x9494x16= null,null!= _0x9494x4&& (_0x9494x16= _0x9494x14)};_0x9494x15= _0x9494x5[0][1]- (_0x9494x5[1][1]+ _0x9494x5[1][3]);_0x9494x16= _0x9494x5[0][0]- (_0x9494x5[1][0]+ _0x9494x5[1][2]);_0x9494x17= _0x9494x5[1][1]- (_0x9494x5[0][1]+ _0x9494x5[0][3]);_0x9494x18= _0x9494x5[1][0]- (_0x9494x5[0][0]+ _0x9494x5[0][2]);mxEdgeStyle[_0x7ddb[2236]][1]= Math[_0x7ddb[160]](_0x9494x16- 2* _0x9494xa,0);mxEdgeStyle[_0x7ddb[2236]][2]= Math[_0x7ddb[160]](_0x9494x15- 2* _0x9494xa,0);mxEdgeStyle[_0x7ddb[2236]][4]= Math[_0x7ddb[160]](_0x9494x17- 2* _0x9494xa,0);mxEdgeStyle[_0x7ddb[2236]][3]= Math[_0x7ddb[160]](_0x9494x18- 2* _0x9494xa,0);_0x9494x4= [];_0x9494x13= [];_0x9494x14= [];_0x9494x13[0]= _0x9494x16>= _0x9494x18?mxConstants[_0x7ddb[436]]:mxConstants[_0x7ddb[438]];_0x9494x14[0]= _0x9494x15>= _0x9494x17?mxConstants[_0x7ddb[435]]:mxConstants[_0x7ddb[437]];_0x9494x13[1]= mxUtils[_0x7ddb[2237]](_0x9494x13[0]);_0x9494x14[1]= mxUtils[_0x7ddb[2237]](_0x9494x14[0]);_0x9494x16= _0x9494x16>= _0x9494x18?_0x9494x16:_0x9494x18;_0x9494x17= _0x9494x15>= _0x9494x17?_0x9494x15:_0x9494x17;_0x9494x18= [[0,0],[0,0]];_0x9494x19= !1;for(_0x9494x15= 0;2> _0x9494x15;_0x9494x15++){0== _0x9494x2[_0x9494x15]&& (0== (_0x9494x13[_0x9494x15]& _0x9494x1b[_0x9494x15])&& (_0x9494x13[_0x9494x15]= mxUtils[_0x7ddb[2237]](_0x9494x13[_0x9494x15])),0== (_0x9494x14[_0x9494x15]& _0x9494x1b[_0x9494x15])&& (_0x9494x14[_0x9494x15]= mxUtils[_0x7ddb[2237]](_0x9494x14[_0x9494x15])),_0x9494x18[_0x9494x15][0]= _0x9494x14[_0x9494x15],_0x9494x18[_0x9494x15][1]= _0x9494x13[_0x9494x15])};_0x9494x17> 2* _0x9494xa&& _0x9494x16> 2* _0x9494xa&& (0< (_0x9494x13[0]& _0x9494x1b[0])&& 0< (_0x9494x14[1]& _0x9494x1b[1])?(_0x9494x18[0][0]= _0x9494x13[0],_0x9494x18[0][1]= _0x9494x14[0],_0x9494x18[1][0]= _0x9494x14[1],_0x9494x18[1][1]= _0x9494x13[1],_0x9494x19= !0):0< (_0x9494x14[0]& _0x9494x1b[0])&& 0< (_0x9494x13[1]& _0x9494x1b[1])&& (_0x9494x18[0][0]= _0x9494x14[0],_0x9494x18[0][1]= _0x9494x13[0],_0x9494x18[1][0]= _0x9494x13[1],_0x9494x18[1][1]= _0x9494x14[1],_0x9494x19= !0));_0x9494x17> 2* _0x9494xa&& !_0x9494x19&& (_0x9494x18[0][0]= _0x9494x14[0],_0x9494x18[0][1]= _0x9494x13[0],_0x9494x18[1][0]= _0x9494x14[1],_0x9494x18[1][1]= _0x9494x13[1],_0x9494x19= !0);_0x9494x16> 2* _0x9494xa&& !_0x9494x19&& (_0x9494x18[0][0]= _0x9494x13[0],_0x9494x18[0][1]= _0x9494x14[0],_0x9494x18[1][0]= _0x9494x13[1],_0x9494x18[1][1]= _0x9494x14[1]);for(_0x9494x15= 0;2> _0x9494x15;_0x9494x15++){if(0== _0x9494x2[_0x9494x15]&& (0== (_0x9494x18[_0x9494x15][0]& _0x9494x1b[_0x9494x15])&& (_0x9494x18[_0x9494x15][0]= _0x9494x18[_0x9494x15][1]),_0x9494x4[_0x9494x15]= _0x9494x18[_0x9494x15][0]& _0x9494x1b[_0x9494x15],_0x9494x4[_0x9494x15]|= (_0x9494x18[_0x9494x15][1]& _0x9494x1b[_0x9494x15])<< 8,_0x9494x4[_0x9494x15]|= (_0x9494x18[1- _0x9494x15][_0x9494x15]& _0x9494x1b[_0x9494x15])<< 16,_0x9494x4[_0x9494x15]|= (_0x9494x18[1- _0x9494x15][1- _0x9494x15]& _0x9494x1b[_0x9494x15])<< 24,0== (_0x9494x4[_0x9494x15]& 15)&& (_0x9494x4[_0x9494x15]<<= 8),0== (_0x9494x4[_0x9494x15]& 3840)&& (_0x9494x4[_0x9494x15]= _0x9494x4[_0x9494x15]& 15| _0x9494x4[_0x9494x15]>> 8),0== (_0x9494x4[_0x9494x15]& 983040)&& (_0x9494x4[_0x9494x15]= _0x9494x4[_0x9494x15]& 65535| (_0x9494x4[_0x9494x15]& 251658240)>> 8),_0x9494x2[_0x9494x15]= _0x9494x4[_0x9494x15]& 15,_0x9494x1b[_0x9494x15]== mxConstants[_0x7ddb[436]]|| _0x9494x1b[_0x9494x15]== mxConstants[_0x7ddb[435]]|| _0x9494x1b[_0x9494x15]== mxConstants[_0x7ddb[438]]|| _0x9494x1b[_0x9494x15]== mxConstants[_0x7ddb[437]])){_0x9494x2[_0x9494x15]= _0x9494x1b[_0x9494x15]}};_0x9494x15= _0x9494x2[0]== mxConstants[_0x7ddb[438]]?3:_0x9494x2[0];_0x9494x1b= _0x9494x2[1]== mxConstants[_0x7ddb[438]]?3:_0x9494x2[1];_0x9494x15-= _0x9494x12;_0x9494x1b-= _0x9494x12;1> _0x9494x15&& (_0x9494x15+= 4);1> _0x9494x1b&& (_0x9494x1b+= 4);_0x9494x1b= mxEdgeStyle[_0x7ddb[2238]][_0x9494x15- 1][_0x9494x1b- 1];mxEdgeStyle[_0x7ddb[2239]][0][0]= _0x9494x5[0][0];mxEdgeStyle[_0x7ddb[2239]][0][1]= _0x9494x5[0][1];switch(_0x9494x2[0]){case mxConstants[_0x7ddb[436]]:mxEdgeStyle[_0x7ddb[2239]][0][0]-= _0x9494xa;mxEdgeStyle[_0x7ddb[2239]][0][1]+= _0x9494x3[0][1]* _0x9494x5[0][3];break;case mxConstants[_0x7ddb[437]]:mxEdgeStyle[_0x7ddb[2239]][0][0]+= _0x9494x3[0][0]* _0x9494x5[0][2];mxEdgeStyle[_0x7ddb[2239]][0][1]+= _0x9494x5[0][3]+ _0x9494xa;break;case mxConstants[_0x7ddb[438]]:mxEdgeStyle[_0x7ddb[2239]][0][0]+= _0x9494x5[0][2]+ _0x9494xa;mxEdgeStyle[_0x7ddb[2239]][0][1]+= _0x9494x3[0][1]* _0x9494x5[0][3];break;case mxConstants[_0x7ddb[435]]:mxEdgeStyle[_0x7ddb[2239]][0][0]+= _0x9494x3[0][0]* _0x9494x5[0][2],mxEdgeStyle[_0x7ddb[2239]][0][1]-= _0x9494xa};_0x9494xa= 0;_0x9494x13= _0x9494x4= 0< (_0x9494x2[0]& (mxConstants[_0x7ddb[438]]| mxConstants[_0x7ddb[436]]))?0:1;for(_0x9494x15= _0x9494x14= 0;_0x9494x15< _0x9494x1b[_0x7ddb[67]];_0x9494x15++){_0x9494x14= _0x9494x1b[_0x9494x15]& 15;_0x9494x1a= _0x9494x14== mxConstants[_0x7ddb[438]]?3:_0x9494x14;_0x9494x1a+= _0x9494x12;4< _0x9494x1a&& (_0x9494x1a-= 4);_0x9494x16= mxEdgeStyle[_0x7ddb[2240]][_0x9494x1a- 1];_0x9494x14= 0< _0x9494x1a% 2?0:1;_0x9494x14!= _0x9494x4&& (_0x9494xa++,mxEdgeStyle[_0x7ddb[2239]][_0x9494xa][0]= mxEdgeStyle[_0x7ddb[2239]][_0x9494xa- 1][0],mxEdgeStyle[_0x7ddb[2239]][_0x9494xa][1]= mxEdgeStyle[_0x7ddb[2239]][_0x9494xa- 1][1]);var _0x9494x1c=0< (_0x9494x1b[_0x9494x15]& mxEdgeStyle[_0x7ddb[2241]]),_0x9494x19=0< (_0x9494x1b[_0x9494x15]& mxEdgeStyle[_0x7ddb[2242]]),_0x9494x17=(_0x9494x1b[_0x9494x15]& mxEdgeStyle[_0x7ddb[2243]])>> 5,_0x9494x17=_0x9494x17<< _0x9494x12;15< _0x9494x17&& (_0x9494x17>>= 4);_0x9494x18= 0< (_0x9494x1b[_0x9494x15]& mxEdgeStyle[_0x7ddb[2244]]);(_0x9494x19|| _0x9494x1c)&& 9> _0x9494x17?(_0x9494x1a= 0,_0x9494x19= _0x9494x19?0:1,_0x9494x1a= _0x9494x18&& 0== _0x9494x14?_0x9494x5[_0x9494x19][0]+ _0x9494x3[_0x9494x19][0]* _0x9494x5[_0x9494x19][2]:_0x9494x18?_0x9494x5[_0x9494x19][1]+ _0x9494x3[_0x9494x19][1]* _0x9494x5[_0x9494x19][3]:mxEdgeStyle[_0x7ddb[2235]][_0x9494x19][_0x9494x17],0== _0x9494x14?(_0x9494x17= (_0x9494x1a- mxEdgeStyle[_0x7ddb[2239]][_0x9494xa][0])* _0x9494x16[0],0< _0x9494x17&& (mxEdgeStyle[_0x7ddb[2239]][_0x9494xa][0]+= _0x9494x16[0]* _0x9494x17)):(_0x9494x17= (_0x9494x1a- mxEdgeStyle[_0x7ddb[2239]][_0x9494xa][1])* _0x9494x16[1],0< _0x9494x17&& (mxEdgeStyle[_0x7ddb[2239]][_0x9494xa][1]+= _0x9494x16[1]* _0x9494x17))):_0x9494x18&& (mxEdgeStyle[_0x7ddb[2239]][_0x9494xa][0]+= _0x9494x16[0]* Math[_0x7ddb[425]](mxEdgeStyle[_0x7ddb[2236]][_0x9494x1a]/ 2),mxEdgeStyle[_0x7ddb[2239]][_0x9494xa][1]+= _0x9494x16[1]* Math[_0x7ddb[425]](mxEdgeStyle[_0x7ddb[2236]][_0x9494x1a]/ 2));0< _0x9494xa&& mxEdgeStyle[_0x7ddb[2239]][_0x9494xa][_0x9494x14]== mxEdgeStyle[_0x7ddb[2239]][_0x9494xa- 1][_0x9494x14]?_0x9494xa--:_0x9494x4= _0x9494x14};for(_0x9494x15= 0;_0x9494x15<= _0x9494xa&& !(_0x9494x15== _0x9494xa&& ((0< (_0x9494x2[1]& (mxConstants[_0x7ddb[438]]| mxConstants[_0x7ddb[436]]))?0:1)== _0x9494x13?0:1)!= (_0x9494xa+ 1)% 2);_0x9494x15++){_0x9494x9[_0x7ddb[207]]( new mxPoint(mxEdgeStyle[_0x7ddb[2239]][_0x9494x15][0],mxEdgeStyle[_0x7ddb[2239]][_0x9494x15][1]))}}},getRoutePattern:function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){var _0x9494x9=_0x9494x2[0]== mxConstants[_0x7ddb[438]]?3:_0x9494x2[0];_0x9494x2= _0x9494x2[1]== mxConstants[_0x7ddb[438]]?3:_0x9494x2[1];_0x9494x9-= _0x9494x3;_0x9494x2-= _0x9494x3;1> _0x9494x9&& (_0x9494x9+= 4);1> _0x9494x2&& (_0x9494x2+= 4);_0x9494x3= routePatterns[_0x9494x9- 1][_0x9494x2- 1];if(0== _0x9494x4|| 0== _0x9494x5){null!= inlineRoutePatterns[_0x9494x9- 1][_0x9494x2- 1]&& (_0x9494x3= inlineRoutePatterns[_0x9494x9- 1][_0x9494x2- 1])};return _0x9494x3}},mxStyleRegistry={values:[],putValue:function(_0x9494x2,_0x9494x3){mxStyleRegistry[_0x7ddb[2245]][_0x9494x2]= _0x9494x3},getValue:function(_0x9494x2){return mxStyleRegistry[_0x7ddb[2245]][_0x9494x2]},getName:function(_0x9494x2){for(var _0x9494x3 in mxStyleRegistry[_0x7ddb[2245]]){if(mxStyleRegistry[_0x7ddb[2245]][_0x9494x3]== _0x9494x2){return _0x9494x3}};return null}};mxStyleRegistry[_0x7ddb[2246]](mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector);mxStyleRegistry[_0x7ddb[2246]](mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation);mxStyleRegistry[_0x7ddb[2246]](mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop);mxStyleRegistry[_0x7ddb[2246]](mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide);mxStyleRegistry[_0x7ddb[2246]](mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom);mxStyleRegistry[_0x7ddb[2246]](mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector);mxStyleRegistry[_0x7ddb[2246]](mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector);mxStyleRegistry[_0x7ddb[2246]](mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter);mxStyleRegistry[_0x7ddb[2246]](mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter);mxStyleRegistry[_0x7ddb[2246]](mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter);mxStyleRegistry[_0x7ddb[2246]](mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter);function mxGraphView(_0x9494x2){this[_0x7ddb[1179]]= _0x9494x2;this[_0x7ddb[513]]= new mxPoint;this[_0x7ddb[2247]]= new mxRectangle;this[_0x7ddb[1214]]= new mxDictionary}mxGraphView[_0x7ddb[202]]= new mxEventSource;mxGraphView[_0x7ddb[202]][_0x7ddb[196]]= mxGraphView;mxGraphView[_0x7ddb[202]][_0x7ddb[2248]]= new mxPoint;mxGraphView[_0x7ddb[202]][_0x7ddb[2091]]= _0x7ddb[130]!= mxClient[_0x7ddb[90]]?_0x7ddb[819]:_0x7ddb[110];mxGraphView[_0x7ddb[202]][_0x7ddb[2249]]= _0x7ddb[130]!= mxClient[_0x7ddb[90]]?_0x7ddb[2250]:_0x7ddb[110];mxGraphView[_0x7ddb[202]][_0x7ddb[2251]]= !1;mxGraphView[_0x7ddb[202]][_0x7ddb[2252]]= !0;mxGraphView[_0x7ddb[202]][_0x7ddb[2253]]= !0;mxGraphView[_0x7ddb[202]][_0x7ddb[2254]]= !0;mxGraphView[_0x7ddb[202]][_0x7ddb[1179]]= null;mxGraphView[_0x7ddb[202]][_0x7ddb[1741]]= null;mxGraphView[_0x7ddb[202]][_0x7ddb[2247]]= null;mxGraphView[_0x7ddb[202]][_0x7ddb[255]]= 1;mxGraphView[_0x7ddb[202]][_0x7ddb[513]]= null;mxGraphView[_0x7ddb[202]][_0x7ddb[2255]]= !1;mxGraphView[_0x7ddb[202]][_0x7ddb[517]]= function(){return this[_0x7ddb[2247]]};mxGraphView[_0x7ddb[202]][_0x7ddb[2256]]= function(_0x9494x2){this[_0x7ddb[2247]]= _0x9494x2};mxGraphView[_0x7ddb[202]][_0x7ddb[1799]]= function(_0x9494x2){var _0x9494x3=null;if(null!= _0x9494x2&& 0< _0x9494x2[_0x7ddb[67]]){for(var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x5=0;_0x9494x5< _0x9494x2[_0x7ddb[67]];_0x9494x5++){if(_0x9494x4[_0x7ddb[1193]](_0x9494x2[_0x9494x5])|| _0x9494x4[_0x7ddb[250]](_0x9494x2[_0x9494x5])){var _0x9494x9=this[_0x7ddb[248]](_0x9494x2[_0x9494x5]);null!= _0x9494x9&& (null== _0x9494x3?_0x9494x3= new mxRectangle(_0x9494x9[_0x7ddb[235]],_0x9494x9[_0x7ddb[236]],_0x9494x9[_0x7ddb[117]],_0x9494x9[_0x7ddb[119]]):_0x9494x3[_0x7ddb[99]](_0x9494x9))}}};return _0x9494x3};mxGraphView[_0x7ddb[202]][_0x7ddb[2257]]= function(_0x9494x2){if(this[_0x7ddb[1741]]!= _0x9494x2){var _0x9494x3= new mxCurrentRootChange(this,_0x9494x2);_0x9494x3[_0x7ddb[350]]();var _0x9494x4= new mxUndoableEdit(this,!1);_0x9494x4[_0x7ddb[99]](_0x9494x3);this[_0x7ddb[746]]( new mxEventObject(mxEvent.UNDO,_0x7ddb[1061],_0x9494x4));this[_0x7ddb[1179]][_0x7ddb[2258]]()};return _0x9494x2};mxGraphView[_0x7ddb[202]][_0x7ddb[829]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=this[_0x7ddb[255]],_0x9494x9= new mxPoint(this[_0x7ddb[513]][_0x7ddb[235]],this[_0x7ddb[513]][_0x7ddb[236]]);if(this[_0x7ddb[255]]!= _0x9494x2|| this[_0x7ddb[513]][_0x7ddb[235]]!= _0x9494x3|| this[_0x7ddb[513]][_0x7ddb[236]]!= _0x9494x4){this[_0x7ddb[255]]= _0x9494x2,this[_0x7ddb[513]][_0x7ddb[235]]= _0x9494x3,this[_0x7ddb[513]][_0x7ddb[236]]= _0x9494x4,this[_0x7ddb[503]]()&& (this[_0x7ddb[2259]](),this[_0x7ddb[1179]][_0x7ddb[2258]]())};this[_0x7ddb[746]]( new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,_0x7ddb[255],_0x9494x2,_0x7ddb[2260],_0x9494x5,_0x7ddb[513],this[_0x7ddb[513]],_0x7ddb[2261],_0x9494x9))};mxGraphView[_0x7ddb[202]][_0x7ddb[518]]= function(){return this[_0x7ddb[255]]};mxGraphView[_0x7ddb[202]][_0x7ddb[2262]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[255]];this[_0x7ddb[255]]!= _0x9494x2&& (this[_0x7ddb[255]]= _0x9494x2,this[_0x7ddb[503]]()&& (this[_0x7ddb[2259]](),this[_0x7ddb[1179]][_0x7ddb[2258]]()));this[_0x7ddb[746]]( new mxEventObject(mxEvent.SCALE,_0x7ddb[255],_0x9494x2,_0x7ddb[2260],_0x9494x3))};mxGraphView[_0x7ddb[202]][_0x7ddb[512]]= function(){return this[_0x7ddb[513]]};mxGraphView[_0x7ddb[202]][_0x7ddb[1147]]= function(_0x9494x2,_0x9494x3){var _0x9494x4= new mxPoint(this[_0x7ddb[513]][_0x7ddb[235]],this[_0x7ddb[513]][_0x7ddb[236]]);if(this[_0x7ddb[513]][_0x7ddb[235]]!= _0x9494x2|| this[_0x7ddb[513]][_0x7ddb[236]]!= _0x9494x3){this[_0x7ddb[513]][_0x7ddb[235]]= _0x9494x2,this[_0x7ddb[513]][_0x7ddb[236]]= _0x9494x3,this[_0x7ddb[503]]()&& (this[_0x7ddb[2259]](),this[_0x7ddb[1179]][_0x7ddb[2258]]())};this[_0x7ddb[746]]( new mxEventObject(mxEvent.TRANSLATE,_0x7ddb[513],this[_0x7ddb[513]],_0x7ddb[2261],_0x9494x4))};mxGraphView[_0x7ddb[202]][_0x7ddb[802]]= function(){null!= this[_0x7ddb[1741]]&& this[_0x7ddb[200]]();this[_0x7ddb[2259]]()};mxGraphView[_0x7ddb[202]][_0x7ddb[2259]]= function(){this[_0x7ddb[2263]]();this[_0x7ddb[2264]]()};mxGraphView[_0x7ddb[202]][_0x7ddb[200]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=this[_0x7ddb[1179]][_0x7ddb[502]]();_0x9494x2= _0x9494x2|| _0x9494x5[_0x7ddb[501]]();_0x9494x3= null!= _0x9494x3?_0x9494x3:!1;_0x9494x4= null!= _0x9494x4?_0x9494x4:!0;this[_0x7ddb[2265]](_0x9494x2);if(_0x9494x4&& (_0x9494x3|| _0x9494x2!= this[_0x7ddb[1741]])){_0x9494x4= _0x9494x5[_0x7ddb[262]](_0x9494x2);for(var _0x9494x9=0;_0x9494x9< _0x9494x4;_0x9494x9++){this[_0x7ddb[200]](_0x9494x5[_0x7ddb[263]](_0x9494x2,_0x9494x9),_0x9494x3)}}else {this[_0x7ddb[2263]](_0x9494x2)}};mxGraphView[_0x7ddb[202]][_0x7ddb[2263]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){var _0x9494x9=this[_0x7ddb[1179]][_0x7ddb[502]]();_0x9494x2= _0x9494x2|| _0x9494x9[_0x7ddb[501]]();_0x9494x3= null!= _0x9494x3?_0x9494x3:!0;_0x9494x4= null!= _0x9494x4?_0x9494x4:!0;_0x9494x5= null!= _0x9494x5?_0x9494x5:!1;var _0x9494xa=this[_0x7ddb[248]](_0x9494x2);null!= _0x9494xa&& (_0x9494xa[_0x7ddb[2080]]= !0,_0x9494x5&& (_0x9494xa[_0x7ddb[2082]]= !0));if(_0x9494x3){for(var _0x9494x12=_0x9494x9[_0x7ddb[262]](_0x9494x2),_0x9494xa=0;_0x9494xa< _0x9494x12;_0x9494xa++){var _0x9494x13=_0x9494x9[_0x7ddb[263]](_0x9494x2,_0x9494xa);this[_0x7ddb[2263]](_0x9494x13,_0x9494x3,_0x9494x4,_0x9494x5)}};if(_0x9494x4){_0x9494x5= _0x9494x9[_0x7ddb[1707]](_0x9494x2);for(_0x9494xa= 0;_0x9494xa< _0x9494x5;_0x9494xa++){this[_0x7ddb[2263]](_0x9494x9[_0x7ddb[1708]](_0x9494x2,_0x9494xa),_0x9494x3,_0x9494x4)}}};mxGraphView[_0x7ddb[202]][_0x7ddb[2264]]= function(_0x9494x2){var _0x9494x3=mxLog[_0x7ddb[2109]](_0x7ddb[2266]);window[_0x7ddb[879]]= mxResources[_0x7ddb[203]](this[_0x7ddb[2249]])|| this[_0x7ddb[2249]];var _0x9494x4=null;if(this[_0x7ddb[2253]]&& null!= this[_0x7ddb[510]]&& null== this[_0x7ddb[1653]]&& (8== document[_0x7ddb[5]]|| mxClient[_0x7ddb[496]])){_0x9494x4= this[_0x7ddb[510]][_0x7ddb[124]][_0x7ddb[495]];this[_0x7ddb[510]][_0x7ddb[124]][_0x7ddb[495]]= _0x7ddb[130];var _0x9494x5=document[_0x7ddb[55]](_0x7ddb[485]);_0x9494x5[_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[492];_0x9494x5[_0x7ddb[124]][_0x7ddb[493]]= _0x7ddb[494];_0x9494x5[_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[188];_0x9494x5[_0x7ddb[124]][_0x7ddb[495]]= mxClient[_0x7ddb[496]]?_0x7ddb[497]:_0x7ddb[498];_0x9494x5[_0x7ddb[124]][_0x7ddb[499]]= _0x7ddb[500];document[_0x7ddb[112]][_0x7ddb[62]](_0x9494x5);this[_0x7ddb[1653]]= _0x9494x5};_0x9494x2= _0x9494x2|| (null!= this[_0x7ddb[1741]]?this[_0x7ddb[1741]]:this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[501]]());this[_0x7ddb[2267]](null,_0x9494x2);_0x9494x2= this[_0x7ddb[2268]](null,_0x9494x2);null== _0x9494x2&& (_0x9494x2= new mxRectangle);this[_0x7ddb[2256]](_0x9494x2);this[_0x7ddb[2269]]();null!= _0x9494x4&& (this[_0x7ddb[510]][_0x7ddb[124]][_0x7ddb[495]]= _0x9494x4,document[_0x7ddb[112]][_0x7ddb[266]](this[_0x7ddb[1653]]),this[_0x7ddb[1653]]= null);window[_0x7ddb[879]]= mxResources[_0x7ddb[203]](this[_0x7ddb[2091]])|| this[_0x7ddb[2091]];mxLog[_0x7ddb[2110]](_0x7ddb[2266],_0x9494x3)};mxGraphView[_0x7ddb[202]][_0x7ddb[2270]]= function(_0x9494x2){return new mxRectangleShape(_0x9494x2,_0x7ddb[1391],_0x7ddb[586])};mxGraphView[_0x7ddb[202]][_0x7ddb[2269]]= function(){var _0x9494x2=this[_0x7ddb[1179]][_0x7ddb[2271]]();if(null!= _0x9494x2){if(null== this[_0x7ddb[1617]]|| this[_0x7ddb[1617]][_0x7ddb[618]]!= _0x9494x2[_0x7ddb[390]]){null!= this[_0x7ddb[1617]]&& this[_0x7ddb[1617]][_0x7ddb[515]]();var _0x9494x3= new mxRectangle(0,0,1,1);this[_0x7ddb[1617]]= new mxImageShape(_0x9494x3,_0x9494x2[_0x7ddb[390]]);this[_0x7ddb[1617]][_0x7ddb[507]]= this[_0x7ddb[1179]][_0x7ddb[507]];this[_0x7ddb[1617]][_0x7ddb[176]](this[_0x7ddb[2053]]);this[_0x7ddb[1617]][_0x7ddb[258]]()};this[_0x7ddb[2272]](this[_0x7ddb[1617]],_0x9494x2)}else {null!= this[_0x7ddb[1617]]&& (this[_0x7ddb[1617]][_0x7ddb[515]](),this[_0x7ddb[1617]]= null)};this[_0x7ddb[1179]][_0x7ddb[2273]]?(_0x9494x3= this[_0x7ddb[2274]](),null== this[_0x7ddb[2275]]?(this[_0x7ddb[2275]]= this[_0x7ddb[2270]](_0x9494x3),this[_0x7ddb[2275]][_0x7ddb[255]]= this[_0x7ddb[255]],this[_0x7ddb[2275]][_0x7ddb[1596]]= !0,this[_0x7ddb[2275]][_0x7ddb[507]]= this[_0x7ddb[1179]][_0x7ddb[507]],this[_0x7ddb[2275]][_0x7ddb[176]](this[_0x7ddb[2053]]),this[_0x7ddb[2275]][_0x7ddb[258]](),mxEvent[_0x7ddb[169]](this[_0x7ddb[2275]][_0x7ddb[252]],_0x7ddb[760],mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[1179]][_0x7ddb[761]](_0x9494x2)})),mxEvent[_0x7ddb[759]](this[_0x7ddb[2275]][_0x7ddb[252]],mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[1179]][_0x7ddb[758]](mxEvent.MOUSE_DOWN, new mxMouseEvent(_0x9494x2))}),mxUtils[_0x7ddb[885]](this,function(_0x9494x2){null!= this[_0x7ddb[1179]][_0x7ddb[2276]]&& this[_0x7ddb[1179]][_0x7ddb[2276]][_0x7ddb[2277]]()&& this[_0x7ddb[1179]][_0x7ddb[2276]][_0x7ddb[801]]();this[_0x7ddb[1179]][_0x7ddb[1009]]&& !mxEvent[_0x7ddb[721]](_0x9494x2)&& this[_0x7ddb[1179]][_0x7ddb[758]](mxEvent.MOUSE_MOVE, new mxMouseEvent(_0x9494x2))}),mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[1179]][_0x7ddb[758]](mxEvent.MOUSE_UP, new mxMouseEvent(_0x9494x2))}))):(this[_0x7ddb[2275]][_0x7ddb[255]]= this[_0x7ddb[255]],this[_0x7ddb[2275]][_0x7ddb[1562]]= _0x9494x3,this[_0x7ddb[2275]][_0x7ddb[258]]())):null!= this[_0x7ddb[2275]]&& (this[_0x7ddb[2275]][_0x7ddb[515]](),this[_0x7ddb[2275]]= null)};mxGraphView[_0x7ddb[202]][_0x7ddb[2274]]= function(){var _0x9494x2=this[_0x7ddb[1179]][_0x7ddb[2013]],_0x9494x3=this[_0x7ddb[255]]* this[_0x7ddb[1179]][_0x7ddb[2012]];return new mxRectangle(this[_0x7ddb[255]]* this[_0x7ddb[513]][_0x7ddb[235]],this[_0x7ddb[255]]* this[_0x7ddb[513]][_0x7ddb[236]],_0x9494x2[_0x7ddb[117]]* _0x9494x3,_0x9494x2[_0x7ddb[119]]* _0x9494x3)};mxGraphView[_0x7ddb[202]][_0x7ddb[2272]]= function(_0x9494x2,_0x9494x3){_0x9494x2[_0x7ddb[255]]= this[_0x7ddb[255]];_0x9494x2[_0x7ddb[1562]][_0x7ddb[235]]= this[_0x7ddb[255]]* this[_0x7ddb[513]][_0x7ddb[235]];_0x9494x2[_0x7ddb[1562]][_0x7ddb[236]]= this[_0x7ddb[255]]* this[_0x7ddb[513]][_0x7ddb[236]];_0x9494x2[_0x7ddb[1562]][_0x7ddb[117]]= this[_0x7ddb[255]]* _0x9494x3[_0x7ddb[117]];_0x9494x2[_0x7ddb[1562]][_0x7ddb[119]]= this[_0x7ddb[255]]* _0x9494x3[_0x7ddb[119]];_0x9494x2[_0x7ddb[258]]()};mxGraphView[_0x7ddb[202]][_0x7ddb[2267]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x5=this[_0x7ddb[248]](_0x9494x3,!0);if(null!= _0x9494x5&& _0x9494x5[_0x7ddb[2080]]){if(this[_0x7ddb[1179]][_0x7ddb[1714]](_0x9494x3)){if(_0x9494x3!= this[_0x7ddb[1741]]&& null!= _0x9494x2){_0x9494x5[_0x7ddb[2079]][_0x7ddb[235]]= 0;_0x9494x5[_0x7ddb[2079]][_0x7ddb[236]]= 0;_0x9494x5[_0x7ddb[2078]][_0x7ddb[235]]= _0x9494x2[_0x7ddb[2078]][_0x7ddb[235]];_0x9494x5[_0x7ddb[2078]][_0x7ddb[236]]= _0x9494x2[_0x7ddb[2078]][_0x7ddb[236]];var _0x9494x9=this[_0x7ddb[1179]][_0x7ddb[1198]](_0x9494x3);if(null!= _0x9494x9){if(!_0x9494x4[_0x7ddb[250]](_0x9494x3)){var _0x9494xa=_0x9494x9[_0x7ddb[1368]]|| this[_0x7ddb[2248]];_0x9494x9[_0x7ddb[1500]]?(_0x9494x5[_0x7ddb[2078]][_0x7ddb[235]]+= _0x9494x9[_0x7ddb[235]]* _0x9494x2[_0x7ddb[117]]/ this[_0x7ddb[255]]+ _0x9494xa[_0x7ddb[235]],_0x9494x5[_0x7ddb[2078]][_0x7ddb[236]]+= _0x9494x9[_0x7ddb[236]]* _0x9494x2[_0x7ddb[119]]/ this[_0x7ddb[255]]+ _0x9494xa[_0x7ddb[236]]):(_0x9494x5[_0x7ddb[2079]][_0x7ddb[235]]= this[_0x7ddb[255]]* _0x9494xa[_0x7ddb[235]],_0x9494x5[_0x7ddb[2079]][_0x7ddb[236]]= this[_0x7ddb[255]]* _0x9494xa[_0x7ddb[236]],_0x9494x5[_0x7ddb[2078]][_0x7ddb[235]]+= _0x9494x9[_0x7ddb[235]],_0x9494x5[_0x7ddb[2078]][_0x7ddb[236]]+= _0x9494x9[_0x7ddb[236]])};_0x9494x5[_0x7ddb[235]]= this[_0x7ddb[255]]* (this[_0x7ddb[513]][_0x7ddb[235]]+ _0x9494x5[_0x7ddb[2078]][_0x7ddb[235]]);_0x9494x5[_0x7ddb[236]]= this[_0x7ddb[255]]* (this[_0x7ddb[513]][_0x7ddb[236]]+ _0x9494x5[_0x7ddb[2078]][_0x7ddb[236]]);_0x9494x5[_0x7ddb[117]]= this[_0x7ddb[255]]* _0x9494x9[_0x7ddb[117]];_0x9494x5[_0x7ddb[119]]= this[_0x7ddb[255]]* _0x9494x9[_0x7ddb[119]];if(_0x9494x4[_0x7ddb[1193]](_0x9494x3)){if(_0x9494x9[_0x7ddb[1500]]&& (_0x9494xa= mxUtils[_0x7ddb[431]](_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2278]]]|| _0x7ddb[468]),0!= _0x9494xa)){var _0x9494x9=Math[_0x7ddb[426]](_0x9494xa),_0x9494xa=Math[_0x7ddb[427]](_0x9494xa),_0x9494x12= new mxPoint(_0x9494x5[_0x7ddb[241]](),_0x9494x5[_0x7ddb[242]]()),_0x9494x13= new mxPoint(_0x9494x2[_0x7ddb[241]](),_0x9494x2[_0x7ddb[242]]()),_0x9494x9=mxUtils[_0x7ddb[432]](_0x9494x12,_0x9494x9,_0x9494xa,_0x9494x13);_0x9494x5[_0x7ddb[235]]= _0x9494x9[_0x7ddb[235]]- _0x9494x5[_0x7ddb[117]]/ 2;_0x9494x5[_0x7ddb[236]]= _0x9494x9[_0x7ddb[236]]- _0x9494x5[_0x7ddb[119]]/ 2};this[_0x7ddb[2279]](_0x9494x5)}}}}else {this[_0x7ddb[2265]](_0x9494x3)};_0x9494xa= this[_0x7ddb[1179]][_0x7ddb[2280]](_0x9494x3);null!= _0x9494xa&& (_0x9494x5[_0x7ddb[2078]][_0x7ddb[235]]+= _0x9494xa[_0x7ddb[235]],_0x9494x5[_0x7ddb[2078]][_0x7ddb[236]]+= _0x9494xa[_0x7ddb[236]])};if(null!= _0x9494x5&& (!this[_0x7ddb[1179]][_0x7ddb[1742]](_0x9494x3)|| _0x9494x3== this[_0x7ddb[1741]])){_0x9494x9= _0x9494x4[_0x7ddb[262]](_0x9494x3);for(_0x9494xa= 0;_0x9494xa< _0x9494x9;_0x9494xa++){_0x9494x12= _0x9494x4[_0x7ddb[263]](_0x9494x3,_0x9494xa),this[_0x7ddb[2267]](_0x9494x5,_0x9494x12)}}};mxGraphView[_0x7ddb[202]][_0x7ddb[2279]]= function(_0x9494x2){var _0x9494x3=mxUtils[_0x7ddb[433]](_0x9494x2[_0x7ddb[124]],mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);_0x9494x3== mxConstants[_0x7ddb[2132]]?_0x9494x2[_0x7ddb[2079]][_0x7ddb[235]]-= _0x9494x2[_0x7ddb[117]]:_0x9494x3== mxConstants[_0x7ddb[480]]&& (_0x9494x2[_0x7ddb[2079]][_0x7ddb[235]]+= _0x9494x2[_0x7ddb[117]]);_0x9494x3= mxUtils[_0x7ddb[433]](_0x9494x2[_0x7ddb[124]],mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE);_0x9494x3== mxConstants[_0x7ddb[1687]]?_0x9494x2[_0x7ddb[2079]][_0x7ddb[236]]-= _0x9494x2[_0x7ddb[119]]:_0x9494x3== mxConstants[_0x7ddb[482]]&& (_0x9494x2[_0x7ddb[2079]][_0x7ddb[236]]+= _0x9494x2[_0x7ddb[119]])};mxGraphView[_0x7ddb[202]][_0x7ddb[2268]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x5=this[_0x7ddb[248]](_0x9494x3),_0x9494x9=null;if(null!= _0x9494x5){if(_0x9494x5[_0x7ddb[2080]]){var _0x9494xa=this[_0x7ddb[1179]][_0x7ddb[1198]](_0x9494x3);if(null!= _0x9494xa&& _0x9494x4[_0x7ddb[250]](_0x9494x3)){var _0x9494x12=this[_0x7ddb[248]](this[_0x7ddb[1710]](_0x9494x3,!0));_0x9494x5[_0x7ddb[2090]](_0x9494x12,!0);if(null!= _0x9494x12&& _0x9494x4[_0x7ddb[250]](_0x9494x12[_0x7ddb[246]])&& !_0x9494x4[_0x7ddb[1720]](_0x9494x12[_0x7ddb[246]],_0x9494x3)){var _0x9494x13=this[_0x7ddb[248]](_0x9494x4[_0x7ddb[1197]](_0x9494x12[_0x7ddb[246]]));this[_0x7ddb[2268]](_0x9494x13,_0x9494x12[_0x7ddb[246]])};var _0x9494x14=this[_0x7ddb[248]](this[_0x7ddb[1710]](_0x9494x3,!1));_0x9494x5[_0x7ddb[2090]](_0x9494x14,!1);null!= _0x9494x14&& (_0x9494x4[_0x7ddb[250]](_0x9494x14[_0x7ddb[246]])&& !_0x9494x4[_0x7ddb[1720]](_0x9494x14[_0x7ddb[246]],_0x9494x3))&& (_0x9494x13= this[_0x7ddb[248]](_0x9494x4[_0x7ddb[1197]](_0x9494x14[_0x7ddb[246]])),this[_0x7ddb[2268]](_0x9494x13,_0x9494x14[_0x7ddb[246]]));this[_0x7ddb[2281]](_0x9494x5,_0x9494x12,_0x9494x14);this[_0x7ddb[2282]](_0x9494x5,_0x9494xa[_0x7ddb[1525]],_0x9494x12,_0x9494x14);this[_0x7ddb[2283]](_0x9494x5,_0x9494x12,_0x9494x14);this[_0x7ddb[2284]](_0x9494x5);this[_0x7ddb[2285]](_0x9494x5)}else {null!= _0x9494xa&& (_0x9494xa[_0x7ddb[1500]]&& null!= _0x9494x2&& _0x9494x4[_0x7ddb[250]](_0x9494x2[_0x7ddb[246]]))&& (_0x9494xa= this[_0x7ddb[245]](_0x9494x2,_0x9494xa),null!= _0x9494xa&& (_0x9494x5[_0x7ddb[235]]= _0x9494xa[_0x7ddb[235]],_0x9494x5[_0x7ddb[236]]= _0x9494xa[_0x7ddb[236]],_0x9494xa[_0x7ddb[235]]= _0x9494xa[_0x7ddb[235]]/ this[_0x7ddb[255]]- this[_0x7ddb[513]][_0x7ddb[235]],_0x9494xa[_0x7ddb[236]]= _0x9494xa[_0x7ddb[236]]/ this[_0x7ddb[255]]- this[_0x7ddb[513]][_0x7ddb[236]],_0x9494x5[_0x7ddb[2078]]= _0x9494xa,this[_0x7ddb[2286]](_0x9494x2,_0x9494x5)))};_0x9494x5[_0x7ddb[2080]]= !1;_0x9494x3!= this[_0x7ddb[1741]]&& this[_0x7ddb[1179]][_0x7ddb[259]][_0x7ddb[258]](_0x9494x5,!1,this[_0x7ddb[2287]]())};if(_0x9494x4[_0x7ddb[250]](_0x9494x3)|| _0x9494x4[_0x7ddb[1193]](_0x9494x3)){null!= _0x9494x5[_0x7ddb[253]]&& null!= _0x9494x5[_0x7ddb[253]][_0x7ddb[1563]]&& (_0x9494x9= _0x9494x5[_0x7ddb[253]][_0x7ddb[1563]][_0x7ddb[238]]()),null!= _0x9494x5[_0x7ddb[963]]&& !this[_0x7ddb[1179]][_0x7ddb[2130]](_0x9494x5[_0x7ddb[246]])&& null!= _0x9494x5[_0x7ddb[963]][_0x7ddb[1563]]&& (null!= _0x9494x9?_0x9494x9[_0x7ddb[99]](_0x9494x5[_0x7ddb[963]][_0x7ddb[1563]]):_0x9494x9= _0x9494x5[_0x7ddb[963]][_0x7ddb[1563]][_0x7ddb[238]]())}};if(null!= _0x9494x5&& (!this[_0x7ddb[1179]][_0x7ddb[1742]](_0x9494x3)|| _0x9494x3== this[_0x7ddb[1741]])){_0x9494xa= _0x9494x4[_0x7ddb[262]](_0x9494x3);for(_0x9494x12= 0;_0x9494x12< _0x9494xa;_0x9494x12++){_0x9494x13= _0x9494x4[_0x7ddb[263]](_0x9494x3,_0x9494x12),_0x9494x13= this[_0x7ddb[2268]](_0x9494x5,_0x9494x13),null!= _0x9494x13&& (null== _0x9494x9?_0x9494x9= _0x9494x13:_0x9494x9[_0x7ddb[99]](_0x9494x13))}};return _0x9494x9};mxGraphView[_0x7ddb[202]][_0x7ddb[2286]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=_0x9494x3[_0x7ddb[246]];if(!this[_0x7ddb[1179]][_0x7ddb[1742]](_0x9494x4)|| _0x9494x4== this[_0x7ddb[1741]]){for(var _0x9494x5=this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x9=_0x9494x5[_0x7ddb[262]](_0x9494x4),_0x9494xa=0;_0x9494xa< _0x9494x9;_0x9494xa++){this[_0x7ddb[2267]](_0x9494x3,_0x9494x5[_0x7ddb[263]](_0x9494x4,_0x9494xa))}}};mxGraphView[_0x7ddb[202]][_0x7ddb[2281]]= function(_0x9494x2,_0x9494x3,_0x9494x4){this[_0x7ddb[2289]](_0x9494x2,_0x9494x3,!0,this[_0x7ddb[1179]][_0x7ddb[2288]](_0x9494x2,_0x9494x3,!0));this[_0x7ddb[2289]](_0x9494x2,_0x9494x4,!1,this[_0x7ddb[1179]][_0x7ddb[2288]](_0x9494x2,_0x9494x4,!1))};mxGraphView[_0x7ddb[202]][_0x7ddb[2289]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){var _0x9494x9=null;null!= _0x9494x5&& (_0x9494x9= this[_0x7ddb[1179]][_0x7ddb[2290]](_0x9494x3,_0x9494x5));if(null== _0x9494x9&& null== _0x9494x3){_0x9494x3= this[_0x7ddb[255]];_0x9494x5= this[_0x7ddb[513]];var _0x9494xa=_0x9494x2[_0x7ddb[2078]],_0x9494x9=this[_0x7ddb[1179]][_0x7ddb[1198]](_0x9494x2[_0x7ddb[246]])[_0x7ddb[2006]](_0x9494x4);null!= _0x9494x9&& (_0x9494x9= new mxPoint(_0x9494x3* (_0x9494x5[_0x7ddb[235]]+ _0x9494x9[_0x7ddb[235]]+ _0x9494xa[_0x7ddb[235]]),_0x9494x3* (_0x9494x5[_0x7ddb[236]]+ _0x9494x9[_0x7ddb[236]]+ _0x9494xa[_0x7ddb[236]])))};_0x9494x2[_0x7ddb[2088]](_0x9494x9,_0x9494x4)};mxGraphView[_0x7ddb[202]][_0x7ddb[2282]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){if(null!= _0x9494x2){var _0x9494x9=[];_0x9494x9[_0x7ddb[207]](_0x9494x2[_0x7ddb[439]][0]);var _0x9494xa=this[_0x7ddb[2291]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5);if(null!= _0x9494xa){_0x9494x4= this[_0x7ddb[2292]](_0x9494x2,_0x9494x4,!0),_0x9494x5= this[_0x7ddb[2292]](_0x9494x2,_0x9494x5,!1),_0x9494xa(_0x9494x2,_0x9494x4,_0x9494x5,_0x9494x3,_0x9494x9)}else {if(null!= _0x9494x3){for(_0x9494xa= 0;_0x9494xa< _0x9494x3[_0x7ddb[67]];_0x9494xa++){null!= _0x9494x3[_0x9494xa]&& (_0x9494x5= mxUtils[_0x7ddb[238]](_0x9494x3[_0x9494xa]),_0x9494x9[_0x7ddb[207]](this[_0x7ddb[2229]](_0x9494x2,_0x9494x5)))}}};_0x9494x3= _0x9494x2[_0x7ddb[439]];_0x9494x9[_0x7ddb[207]](_0x9494x3[_0x9494x3[_0x7ddb[67]]- 1]);_0x9494x2[_0x7ddb[439]]= _0x9494x9}};mxGraphView[_0x7ddb[202]][_0x7ddb[2229]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=_0x9494x2[_0x7ddb[2078]];return new mxPoint(this[_0x7ddb[255]]* (_0x9494x3[_0x7ddb[235]]+ this[_0x7ddb[513]][_0x7ddb[235]]+ _0x9494x4[_0x7ddb[235]]),this[_0x7ddb[255]]* (_0x9494x3[_0x7ddb[236]]+ this[_0x7ddb[513]][_0x7ddb[236]]+ _0x9494x4[_0x7ddb[236]]))};mxGraphView[_0x7ddb[202]][_0x7ddb[2291]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){_0x9494x2= null!= _0x9494x4&& _0x9494x4== _0x9494x5?mxUtils[_0x7ddb[433]](_0x9494x2[_0x7ddb[124]],mxConstants.STYLE_LOOP,this[_0x7ddb[1179]][_0x7ddb[2293]]):!mxUtils[_0x7ddb[433]](_0x9494x2[_0x7ddb[124]],mxConstants.STYLE_NOEDGESTYLE,!1)?_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2294]]]:null;_0x7ddb[1516]== typeof _0x9494x2&& (_0x9494x3= mxStyleRegistry[_0x7ddb[433]](_0x9494x2),null== _0x9494x3&& this[_0x7ddb[2295]]()&& (_0x9494x3= mxUtils[_0x7ddb[1545]](_0x9494x2)),_0x9494x2= _0x9494x3);return _0x7ddb[279]== typeof _0x9494x2?_0x9494x2:null};mxGraphView[_0x7ddb[202]][_0x7ddb[2283]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=_0x9494x2[_0x7ddb[439]],_0x9494x9=_0x9494x5[0];null== _0x9494x5[_0x9494x5[_0x7ddb[67]]- 1]&& null!= _0x9494x4&& this[_0x7ddb[2296]](_0x9494x2,_0x9494x4,_0x9494x3,!1);null== _0x9494x9&& null!= _0x9494x3&& this[_0x7ddb[2296]](_0x9494x2,_0x9494x3,_0x9494x4,!0)};mxGraphView[_0x7ddb[202]][_0x7ddb[2296]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){_0x9494x3= this[_0x7ddb[2292]](_0x9494x2,_0x9494x3,_0x9494x5);var _0x9494x9=this[_0x7ddb[2297]](_0x9494x2,_0x9494x4,_0x9494x5),_0x9494xa=this[_0x7ddb[1179]][_0x7ddb[2298]](_0x9494x2);_0x9494x4= mxUtils[_0x7ddb[431]](Number(_0x9494x3[_0x7ddb[124]][mxConstants[_0x7ddb[2278]]]|| _0x7ddb[468]));var _0x9494x12= new mxPoint(_0x9494x3[_0x7ddb[241]](),_0x9494x3[_0x7ddb[242]]());if(0!= _0x9494x4){var _0x9494x13=Math[_0x7ddb[426]](-_0x9494x4),_0x9494x14=Math[_0x7ddb[427]](-_0x9494x4),_0x9494x9=mxUtils[_0x7ddb[432]](_0x9494x9,_0x9494x13,_0x9494x14,_0x9494x12)};_0x9494x13= parseFloat(_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2299]]]|| 0);_0x9494x13+= parseFloat(_0x9494x2[_0x7ddb[124]][_0x9494x5?mxConstants[_0x7ddb[2300]]:mxConstants[_0x7ddb[2301]]]|| 0);_0x9494x3= this[_0x7ddb[2302]](_0x9494x3,_0x9494x9,0== _0x9494x4&& _0x9494xa,_0x9494x13);0!= _0x9494x4&& (_0x9494x13= Math[_0x7ddb[426]](_0x9494x4),_0x9494x14= Math[_0x7ddb[427]](_0x9494x4),_0x9494x3= mxUtils[_0x7ddb[432]](_0x9494x3,_0x9494x13,_0x9494x14,_0x9494x12));_0x9494x2[_0x7ddb[2088]](_0x9494x3,_0x9494x5)};mxGraphView[_0x7ddb[202]][_0x7ddb[2292]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x2= mxUtils[_0x7ddb[433]](_0x9494x2[_0x7ddb[124]],_0x9494x4?mxConstants[_0x7ddb[2303]]:mxConstants[_0x7ddb[2304]]);null!= _0x9494x2&& (_0x9494x2= this[_0x7ddb[248]](this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[736]](_0x9494x2)),null!= _0x9494x2&& (_0x9494x3= _0x9494x2));return _0x9494x3};mxGraphView[_0x7ddb[202]][_0x7ddb[2302]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){var _0x9494x9=null;if(null!= _0x9494x2){var _0x9494xa=this[_0x7ddb[2305]](_0x9494x2);if(null!= _0x9494xa&& null!= _0x9494x3&& (_0x9494x5= this[_0x7ddb[2087]](_0x9494x2,_0x9494x5),0< _0x9494x5[_0x7ddb[117]]|| 0< _0x9494x5[_0x7ddb[119]])){_0x9494x9= _0x9494xa(_0x9494x5,_0x9494x2,_0x9494x3,_0x9494x4)};null== _0x9494x9&& (_0x9494x9= this[_0x7ddb[245]](_0x9494x2))};return _0x9494x9};mxGraphView[_0x7ddb[202]][_0x7ddb[2230]]= function(_0x9494x2){var _0x9494x3=null!= _0x9494x2[_0x7ddb[124]]?parseFloat(_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2306]]])|| 0:0;return _0x9494x2[_0x7ddb[241]]()+ _0x9494x3* _0x9494x2[_0x7ddb[117]]};mxGraphView[_0x7ddb[202]][_0x7ddb[2228]]= function(_0x9494x2){var _0x9494x3=null!= _0x9494x2[_0x7ddb[124]]?parseFloat(_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2307]]])|| 0:0;return _0x9494x2[_0x7ddb[242]]()+ _0x9494x3* _0x9494x2[_0x7ddb[119]]};mxGraphView[_0x7ddb[202]][_0x7ddb[2087]]= function(_0x9494x2,_0x9494x3){_0x9494x3= null!= _0x9494x3?_0x9494x3:0;null!= _0x9494x2&& (_0x9494x3+= parseFloat(_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2299]]]|| 0));return _0x9494x2[_0x7ddb[2087]](_0x9494x3* this[_0x7ddb[255]])};mxGraphView[_0x7ddb[202]][_0x7ddb[2305]]= function(_0x9494x2){_0x9494x2= _0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2061]]];if(_0x7ddb[1516]== typeof _0x9494x2){var _0x9494x3=mxStyleRegistry[_0x7ddb[433]](_0x9494x2);null== _0x9494x3&& this[_0x7ddb[2295]]()&& (_0x9494x3= mxUtils[_0x7ddb[1545]](_0x9494x2));_0x9494x2= _0x9494x3};return _0x7ddb[279]== typeof _0x9494x2?_0x9494x2:null};mxGraphView[_0x7ddb[202]][_0x7ddb[2297]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x2= _0x9494x2[_0x7ddb[439]];var _0x9494x5=null;if(null!= _0x9494x2&& (_0x9494x4|| 2< _0x9494x2[_0x7ddb[67]]|| null== _0x9494x3)){_0x9494x5= _0x9494x2[_0x7ddb[67]],_0x9494x5= _0x9494x2[_0x9494x4?Math[_0x7ddb[243]](1,_0x9494x5- 1):Math[_0x7ddb[160]](0,_0x9494x5- 2)]};null== _0x9494x5&& null!= _0x9494x3&& (_0x9494x5= new mxPoint(_0x9494x3[_0x7ddb[241]](),_0x9494x3[_0x7ddb[242]]()));return _0x9494x5};mxGraphView[_0x7ddb[202]][_0x7ddb[1710]]= function(_0x9494x2,_0x9494x3){for(var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x5=_0x9494x4[_0x7ddb[1709]](_0x9494x2,_0x9494x3),_0x9494x9=_0x9494x5;null!= _0x9494x5&& _0x9494x5!= this[_0x7ddb[1741]];){if(!this[_0x7ddb[1179]][_0x7ddb[1714]](_0x9494x9)|| this[_0x7ddb[1179]][_0x7ddb[1742]](_0x9494x5)){_0x9494x9= _0x9494x5};_0x9494x5= _0x9494x4[_0x7ddb[1197]](_0x9494x5)};_0x9494x4[_0x7ddb[1197]](_0x9494x9)== _0x9494x4[_0x7ddb[501]]()&& (_0x9494x9= null);return _0x9494x9};mxGraphView[_0x7ddb[202]][_0x7ddb[2284]]= function(_0x9494x2){var _0x9494x3=_0x9494x2[_0x7ddb[439]];_0x9494x2[_0x7ddb[67]]= 0;if(null!= _0x9494x3&& 0< _0x9494x3[_0x7ddb[67]]){var _0x9494x4=_0x9494x3[0],_0x9494x5=_0x9494x3[_0x9494x3[_0x7ddb[67]]- 1];if(null== _0x9494x4|| null== _0x9494x5){_0x9494x2[_0x7ddb[246]]!= this[_0x7ddb[1741]]&& this[_0x7ddb[200]](_0x9494x2[_0x7ddb[246]],!0)}else {if(_0x9494x4[_0x7ddb[235]]!= _0x9494x5[_0x7ddb[235]]|| _0x9494x4[_0x7ddb[236]]!= _0x9494x5[_0x7ddb[236]]){var _0x9494x9=_0x9494x5[_0x7ddb[235]]- _0x9494x4[_0x7ddb[235]],_0x9494xa=_0x9494x5[_0x7ddb[236]]- _0x9494x4[_0x7ddb[236]];_0x9494x2[_0x7ddb[2085]]= Math[_0x7ddb[428]](_0x9494x9* _0x9494x9+ _0x9494xa* _0x9494xa)}else {_0x9494x2[_0x7ddb[2085]]= 0};var _0x9494x5=0,_0x9494x12=[],_0x9494xa=_0x9494x4;if(null!= _0x9494xa){for(var _0x9494x4=_0x9494xa[_0x7ddb[235]],_0x9494x13=_0x9494xa[_0x7ddb[236]],_0x9494x14=_0x9494x4,_0x9494x15=_0x9494x13,_0x9494x16=1;_0x9494x16< _0x9494x3[_0x7ddb[67]];_0x9494x16++){var _0x9494x17=_0x9494x3[_0x9494x16];null!= _0x9494x17&& (_0x9494x9= _0x9494xa[_0x7ddb[235]]- _0x9494x17[_0x7ddb[235]],_0x9494xa= _0x9494xa[_0x7ddb[236]]- _0x9494x17[_0x7ddb[236]],_0x9494x9= Math[_0x7ddb[428]](_0x9494x9* _0x9494x9+ _0x9494xa* _0x9494xa),_0x9494x12[_0x7ddb[207]](_0x9494x9),_0x9494x5+= _0x9494x9,_0x9494xa= _0x9494x17,_0x9494x4= Math[_0x7ddb[243]](_0x9494xa[_0x7ddb[235]],_0x9494x4),_0x9494x13= Math[_0x7ddb[243]](_0x9494xa[_0x7ddb[236]],_0x9494x13),_0x9494x14= Math[_0x7ddb[160]](_0x9494xa[_0x7ddb[235]],_0x9494x14),_0x9494x15= Math[_0x7ddb[160]](_0x9494xa[_0x7ddb[236]],_0x9494x15))};_0x9494x2[_0x7ddb[67]]= _0x9494x5;_0x9494x2[_0x7ddb[2086]]= _0x9494x12;_0x9494x2[_0x7ddb[235]]= _0x9494x4;_0x9494x2[_0x7ddb[236]]= _0x9494x13;_0x9494x2[_0x7ddb[117]]= Math[_0x7ddb[160]](1,_0x9494x14- _0x9494x4);_0x9494x2[_0x7ddb[119]]= Math[_0x7ddb[160]](1,_0x9494x15- _0x9494x13)}}}};mxGraphView[_0x7ddb[202]][_0x7ddb[245]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=_0x9494x2[_0x7ddb[241]](),_0x9494x5=_0x9494x2[_0x7ddb[242]]();if(null!= _0x9494x2[_0x7ddb[2086]]&& (null== _0x9494x3|| _0x9494x3[_0x7ddb[1500]])){for(var _0x9494x9=_0x9494x2[_0x7ddb[439]][_0x7ddb[67]],_0x9494xa=((null!= _0x9494x3?_0x9494x3[_0x7ddb[235]]/ 2:0)+ 0.5)* _0x9494x2[_0x7ddb[67]],_0x9494x12=_0x9494x2[_0x7ddb[2086]][0],_0x9494x13=0,_0x9494x14=1;_0x9494xa> _0x9494x13+ _0x9494x12&& _0x9494x14< _0x9494x9- 1;){_0x9494x13+= _0x9494x12,_0x9494x12= _0x9494x2[_0x7ddb[2086]][_0x9494x14++]};_0x9494x9= 0== _0x9494x12?0:(_0x9494xa- _0x9494x13)/ _0x9494x12;_0x9494xa= _0x9494x2[_0x7ddb[439]][_0x9494x14- 1];_0x9494x14= _0x9494x2[_0x7ddb[439]][_0x9494x14];if(null!= _0x9494xa&& null!= _0x9494x14){_0x9494x13= _0x9494x4= _0x9494x5= 0;if(null!= _0x9494x3){var _0x9494x5=_0x9494x3[_0x7ddb[236]],_0x9494x15=_0x9494x3[_0x7ddb[1368]];null!= _0x9494x15&& (_0x9494x4= _0x9494x15[_0x7ddb[235]],_0x9494x13= _0x9494x15[_0x7ddb[236]])};_0x9494x15= _0x9494x14[_0x7ddb[235]]- _0x9494xa[_0x7ddb[235]];_0x9494x14= _0x9494x14[_0x7ddb[236]]- _0x9494xa[_0x7ddb[236]];_0x9494x4= _0x9494xa[_0x7ddb[235]]+ _0x9494x15* _0x9494x9+ ((0== _0x9494x12?0:_0x9494x14/ _0x9494x12)* _0x9494x5+ _0x9494x4)* this[_0x7ddb[255]];_0x9494x5= _0x9494xa[_0x7ddb[236]]+ _0x9494x14* _0x9494x9- ((0== _0x9494x12?0:_0x9494x15/ _0x9494x12)* _0x9494x5- _0x9494x13)* this[_0x7ddb[255]]}}else {null!= _0x9494x3&& (_0x9494x15= _0x9494x3[_0x7ddb[1368]],null!= _0x9494x15&& (_0x9494x4+= _0x9494x15[_0x7ddb[235]],_0x9494x5+= _0x9494x15[_0x7ddb[236]]))};return new mxPoint(_0x9494x4,_0x9494x5)};mxGraphView[_0x7ddb[202]][_0x7ddb[2308]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[1721]](_0x9494x2[_0x7ddb[246]]);if(null!= _0x9494x5){var _0x9494x9=_0x9494x2[_0x7ddb[439]][_0x7ddb[67]];if(_0x9494x5[_0x7ddb[1500]]&& 1< _0x9494x9){for(var _0x9494x5=_0x9494x2[_0x7ddb[67]],_0x9494xa=_0x9494x2[_0x7ddb[2086]],_0x9494x12=_0x9494x2[_0x7ddb[439]][0],_0x9494x13=_0x9494x2[_0x7ddb[439]][1],_0x9494x14=mxUtils[_0x7ddb[440]](_0x9494x12[_0x7ddb[235]],_0x9494x12[_0x7ddb[236]],_0x9494x13[_0x7ddb[235]],_0x9494x13[_0x7ddb[236]],_0x9494x3,_0x9494x4),_0x9494x15=0,_0x9494x16=0,_0x9494x17=0,_0x9494x18=2;_0x9494x18< _0x9494x9;_0x9494x18++){_0x9494x16+= _0x9494xa[_0x9494x18- 2],_0x9494x13= _0x9494x2[_0x7ddb[439]][_0x9494x18],_0x9494x12= mxUtils[_0x7ddb[440]](_0x9494x12[_0x7ddb[235]],_0x9494x12[_0x7ddb[236]],_0x9494x13[_0x7ddb[235]],_0x9494x13[_0x7ddb[236]],_0x9494x3,_0x9494x4),_0x9494x12<= _0x9494x14&& (_0x9494x14= _0x9494x12,_0x9494x15= _0x9494x18- 1,_0x9494x17= _0x9494x16),_0x9494x12= _0x9494x13};_0x9494x9= _0x9494xa[_0x9494x15];_0x9494x12= _0x9494x2[_0x7ddb[439]][_0x9494x15];_0x9494x13= _0x9494x2[_0x7ddb[439]][_0x9494x15+ 1];_0x9494x14= _0x9494x13[_0x7ddb[235]];_0x9494xa= _0x9494x13[_0x7ddb[236]];_0x9494x2= _0x9494x12[_0x7ddb[235]]- _0x9494x14;_0x9494x15= _0x9494x12[_0x7ddb[236]]- _0x9494xa;_0x9494x14= _0x9494x3- _0x9494x14;_0x9494xa= _0x9494x4- _0x9494xa;_0x9494x14= _0x9494x2- _0x9494x14;_0x9494xa= _0x9494x15- _0x9494xa;_0x9494xa= _0x9494x14* _0x9494x2+ _0x9494xa* _0x9494x15;_0x9494x2= Math[_0x7ddb[428]](0>= _0x9494xa?0:_0x9494xa* _0x9494xa/ (_0x9494x2* _0x9494x2+ _0x9494x15* _0x9494x15));_0x9494x2> _0x9494x9&& (_0x9494x2= _0x9494x9);_0x9494x9= Math[_0x7ddb[428]](mxUtils[_0x7ddb[440]](_0x9494x12[_0x7ddb[235]],_0x9494x12[_0x7ddb[236]],_0x9494x13[_0x7ddb[235]],_0x9494x13[_0x7ddb[236]],_0x9494x3,_0x9494x4));-1== mxUtils[_0x7ddb[2309]](_0x9494x12[_0x7ddb[235]],_0x9494x12[_0x7ddb[236]],_0x9494x13[_0x7ddb[235]],_0x9494x13[_0x7ddb[236]],_0x9494x3,_0x9494x4) && (_0x9494x9= -_0x9494x9);return new mxPoint(-2* ((_0x9494x5/ 2- _0x9494x17- _0x9494x2)/ _0x9494x5),_0x9494x9/ this[_0x7ddb[255]])}};return new mxPoint};mxGraphView[_0x7ddb[202]][_0x7ddb[2285]]= function(_0x9494x2){var _0x9494x3=_0x9494x2[_0x7ddb[439]];_0x9494x2[_0x7ddb[2079]][_0x7ddb[235]]= _0x9494x2[_0x7ddb[241]]();_0x9494x2[_0x7ddb[2079]][_0x7ddb[236]]= _0x9494x2[_0x7ddb[242]]();if(null!= _0x9494x3&& 0< _0x9494x3[_0x7ddb[67]]&& null!= _0x9494x2[_0x7ddb[2086]]){var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[1198]](_0x9494x2[_0x7ddb[246]]);if(_0x9494x4[_0x7ddb[1500]]){var _0x9494x5=this[_0x7ddb[245]](_0x9494x2,_0x9494x4);null!= _0x9494x5&& (_0x9494x2[_0x7ddb[2079]]= _0x9494x5)}else {var _0x9494x5=_0x9494x3[0],_0x9494x9=_0x9494x3[_0x9494x3[_0x7ddb[67]]- 1];if(null!= _0x9494x5&& null!= _0x9494x9){var _0x9494x3=_0x9494x9[_0x7ddb[235]]- _0x9494x5[_0x7ddb[235]],_0x9494xa=_0x9494x9[_0x7ddb[236]]- _0x9494x5[_0x7ddb[236]],_0x9494x12=_0x9494x9= 0,_0x9494x4=_0x9494x4[_0x7ddb[1368]];null!= _0x9494x4&& (_0x9494x9= _0x9494x4[_0x7ddb[235]],_0x9494x12= _0x9494x4[_0x7ddb[236]]);_0x9494x4= _0x9494x5[_0x7ddb[236]]+ _0x9494xa/ 2+ _0x9494x12* this[_0x7ddb[255]];_0x9494x2[_0x7ddb[2079]][_0x7ddb[235]]= _0x9494x5[_0x7ddb[235]]+ _0x9494x3/ 2+ _0x9494x9* this[_0x7ddb[255]];_0x9494x2[_0x7ddb[2079]][_0x7ddb[236]]= _0x9494x4}}}};mxGraphView[_0x7ddb[202]][_0x7ddb[248]]= function(_0x9494x2,_0x9494x3){_0x9494x3= _0x9494x3|| !1;var _0x9494x4=null;null!= _0x9494x2&& (_0x9494x4= this[_0x7ddb[1214]][_0x7ddb[203]](_0x9494x2),this[_0x7ddb[1179]][_0x7ddb[1714]](_0x9494x2)&& (null== _0x9494x4&& _0x9494x3&& this[_0x7ddb[1179]][_0x7ddb[1714]](_0x9494x2)?(_0x9494x4= this[_0x7ddb[1230]](_0x9494x2),this[_0x7ddb[1214]][_0x7ddb[204]](_0x9494x2,_0x9494x4)):_0x9494x3&& (null!= _0x9494x4&& this[_0x7ddb[2255]])&& (_0x9494x4[_0x7ddb[124]]= this[_0x7ddb[1179]][_0x7ddb[1705]](_0x9494x2))));return _0x9494x4};mxGraphView[_0x7ddb[202]][_0x7ddb[2287]]= function(){return this[_0x7ddb[2254]]};mxGraphView[_0x7ddb[202]][_0x7ddb[2310]]= function(_0x9494x2){this[_0x7ddb[2254]]= _0x9494x2};mxGraphView[_0x7ddb[202]][_0x7ddb[2295]]= function(){return this[_0x7ddb[2251]]};mxGraphView[_0x7ddb[202]][_0x7ddb[2311]]= function(_0x9494x2){this[_0x7ddb[2251]]= _0x9494x2};mxGraphView[_0x7ddb[202]][_0x7ddb[2312]]= function(){return this[_0x7ddb[1214]]};mxGraphView[_0x7ddb[202]][_0x7ddb[1517]]= function(_0x9494x2){this[_0x7ddb[1214]]= _0x9494x2};mxGraphView[_0x7ddb[202]][_0x7ddb[2313]]= function(_0x9494x2){if(null== _0x9494x2){return this[_0x7ddb[1214]]};for(var _0x9494x3=[],_0x9494x4=0;_0x9494x4< _0x9494x2[_0x7ddb[67]];_0x9494x4++){var _0x9494x5=this[_0x7ddb[248]](_0x9494x2[_0x9494x4]);null!= _0x9494x5&& _0x9494x3[_0x7ddb[207]](_0x9494x5)};return _0x9494x3};mxGraphView[_0x7ddb[202]][_0x7ddb[2265]]= function(_0x9494x2){var _0x9494x3=null;null!= _0x9494x2&& (_0x9494x3= this[_0x7ddb[1214]][_0x7ddb[205]](_0x9494x2),null!= _0x9494x3&& (this[_0x7ddb[1179]][_0x7ddb[259]][_0x7ddb[515]](_0x9494x3),_0x9494x3[_0x7ddb[515]]()));return _0x9494x3};mxGraphView[_0x7ddb[202]][_0x7ddb[1230]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[1179]][_0x7ddb[1705]](_0x9494x2);_0x9494x2= new mxCellState(this,_0x9494x2,_0x9494x3);this[_0x7ddb[1179]][_0x7ddb[259]][_0x7ddb[2155]](_0x9494x2,this[_0x7ddb[2287]]());return _0x9494x2};mxGraphView[_0x7ddb[202]][_0x7ddb[2051]]= function(){return this[_0x7ddb[510]]};mxGraphView[_0x7ddb[202]][_0x7ddb[2052]]= function(){return this[_0x7ddb[2053]]};mxGraphView[_0x7ddb[202]][_0x7ddb[2024]]= function(){return this[_0x7ddb[505]]};mxGraphView[_0x7ddb[202]][_0x7ddb[1524]]= function(){return this[_0x7ddb[506]]};mxGraphView[_0x7ddb[202]][_0x7ddb[2314]]= function(_0x9494x2){_0x9494x2= mxEvent[_0x7ddb[728]](_0x9494x2);return _0x9494x2== this[_0x7ddb[1179]][_0x7ddb[526]]|| _0x9494x2[_0x7ddb[265]]== this[_0x7ddb[2053]]|| null!= _0x9494x2[_0x7ddb[265]]&& _0x9494x2[_0x7ddb[265]][_0x7ddb[265]]== this[_0x7ddb[2053]]|| _0x9494x2== this[_0x7ddb[510]][_0x7ddb[265]]|| _0x9494x2== this[_0x7ddb[510]]|| _0x9494x2== this[_0x7ddb[2053]]|| _0x9494x2== this[_0x7ddb[505]]|| _0x9494x2== this[_0x7ddb[506]]};mxGraphView[_0x7ddb[202]][_0x7ddb[2315]]= function(_0x9494x2){var _0x9494x3=mxUtils[_0x7ddb[445]](this[_0x7ddb[1179]][_0x7ddb[526]]);_0x9494x2= new mxPoint(_0x9494x2[_0x7ddb[782]]- _0x9494x3[_0x7ddb[235]],_0x9494x2[_0x7ddb[784]]- _0x9494x3[_0x7ddb[236]]);var _0x9494x3=this[_0x7ddb[1179]][_0x7ddb[526]][_0x7ddb[359]],_0x9494x4=this[_0x7ddb[1179]][_0x7ddb[526]][_0x7ddb[159]];if(_0x9494x3> _0x9494x4&& _0x9494x2[_0x7ddb[235]]> _0x9494x4+ 2&& _0x9494x2[_0x7ddb[235]]<= _0x9494x3){return !0};_0x9494x3= this[_0x7ddb[1179]][_0x7ddb[526]][_0x7ddb[167]];_0x9494x4= this[_0x7ddb[1179]][_0x7ddb[526]][_0x7ddb[157]];return _0x9494x3> _0x9494x4&& _0x9494x2[_0x7ddb[236]]> _0x9494x4+ 2&& _0x9494x2[_0x7ddb[236]]<= _0x9494x3?!0:!1};mxGraphView[_0x7ddb[202]][_0x7ddb[176]]= function(){this[_0x7ddb[2163]]();var _0x9494x2=this[_0x7ddb[1179]];_0x9494x2[_0x7ddb[507]]== mxConstants[_0x7ddb[508]]?this[_0x7ddb[1569]]():_0x9494x2[_0x7ddb[507]]== mxConstants[_0x7ddb[1523]]?this[_0x7ddb[1571]]():this[_0x7ddb[1570]]()};mxGraphView[_0x7ddb[202]][_0x7ddb[2163]]= function(){var _0x9494x2=this[_0x7ddb[1179]],_0x9494x3=_0x9494x2[_0x7ddb[526]];if(null!= _0x9494x3){mxEvent[_0x7ddb[759]](_0x9494x3,mxUtils[_0x7ddb[885]](this,function(_0x9494x3){mxClient[_0x7ddb[754]]&& _0x9494x2[_0x7ddb[2203]]()&& _0x9494x2[_0x7ddb[2126]](!_0x9494x2[_0x7ddb[2134]]());this[_0x7ddb[2314]](_0x9494x3)&& (!mxClient[_0x7ddb[80]]&& !mxClient[_0x7ddb[76]] && !mxClient[_0x7ddb[71]] && !mxClient[_0x7ddb[75]] || !this[_0x7ddb[2315]](_0x9494x3))&& _0x9494x2[_0x7ddb[758]](mxEvent.MOUSE_DOWN, new mxMouseEvent(_0x9494x3))}),mxUtils[_0x7ddb[885]](this,function(_0x9494x3){this[_0x7ddb[2314]](_0x9494x3)&& _0x9494x2[_0x7ddb[758]](mxEvent.MOUSE_MOVE, new mxMouseEvent(_0x9494x3))}),mxUtils[_0x7ddb[885]](this,function(_0x9494x3){this[_0x7ddb[2314]](_0x9494x3)&& _0x9494x2[_0x7ddb[758]](mxEvent.MOUSE_UP, new mxMouseEvent(_0x9494x3))}));mxEvent[_0x7ddb[169]](_0x9494x3,_0x7ddb[760],mxUtils[_0x7ddb[885]](this,function(_0x9494x3){_0x9494x2[_0x7ddb[761]](_0x9494x3)}));var _0x9494x4=function(_0x9494x4){var _0x9494x9=null;mxClient[_0x7ddb[754]]&& (_0x9494x9= mxEvent[_0x7ddb[731]](_0x9494x4),_0x9494x4= mxEvent[_0x7ddb[733]](_0x9494x4),_0x9494x4= mxUtils[_0x7ddb[2196]](_0x9494x3,_0x9494x9,_0x9494x4),_0x9494x9= _0x9494x2[_0x7ddb[441]][_0x7ddb[248]](_0x9494x2[_0x7ddb[999]](_0x9494x4[_0x7ddb[235]],_0x9494x4[_0x7ddb[236]])));return _0x9494x9};_0x9494x2[_0x7ddb[1133]]({mouseDown:function(_0x9494x3,_0x9494x4){_0x9494x2[_0x7ddb[2316]][_0x7ddb[1032]]()},mouseMove:function(){},mouseUp:function(){}});this[_0x7ddb[2317]]= mxUtils[_0x7ddb[885]](this,function(_0x9494x3){null!= _0x9494x2[_0x7ddb[2276]]&& _0x9494x2[_0x7ddb[2276]][_0x7ddb[2277]]()&& _0x9494x2[_0x7ddb[2276]][_0x7ddb[801]]();this[_0x7ddb[2252]]&& (_0x9494x2[_0x7ddb[1009]]&& !mxEvent[_0x7ddb[721]](_0x9494x3))&& _0x9494x2[_0x7ddb[758]](mxEvent.MOUSE_MOVE, new mxMouseEvent(_0x9494x3,_0x9494x4(_0x9494x3)))});this[_0x7ddb[2318]]= mxUtils[_0x7ddb[885]](this,function(_0x9494x3){this[_0x7ddb[2252]]&& _0x9494x2[_0x7ddb[758]](mxEvent.MOUSE_UP, new mxMouseEvent(_0x9494x3))});mxEvent[_0x7ddb[759]](document,null,this[_0x7ddb[2317]],this[_0x7ddb[2318]])}};mxGraphView[_0x7ddb[202]][_0x7ddb[1570]]= function(){var _0x9494x2=this[_0x7ddb[1179]][_0x7ddb[526]];null!= _0x9494x2&& (this[_0x7ddb[510]]= this[_0x7ddb[2319]](_0x7ddb[118],_0x7ddb[118]),this[_0x7ddb[2053]]= this[_0x7ddb[2319]](_0x7ddb[942],_0x7ddb[942]),this[_0x7ddb[505]]= this[_0x7ddb[2319]](_0x7ddb[942],_0x7ddb[942]),this[_0x7ddb[506]]= this[_0x7ddb[2319]](_0x7ddb[942],_0x7ddb[942]),this[_0x7ddb[510]][_0x7ddb[62]](this[_0x7ddb[2053]]),this[_0x7ddb[510]][_0x7ddb[62]](this[_0x7ddb[505]]),this[_0x7ddb[510]][_0x7ddb[62]](this[_0x7ddb[506]]),_0x9494x2[_0x7ddb[62]](this[_0x7ddb[510]]),mxClient[_0x7ddb[496]]&& (_0x9494x2= mxUtils[_0x7ddb[885]](this,function(_0x9494x2){_0x9494x2= this[_0x7ddb[517]]();this[_0x7ddb[2320]](_0x9494x2[_0x7ddb[235]]+ _0x9494x2[_0x7ddb[117]]+ this[_0x7ddb[1179]][_0x7ddb[467]],_0x9494x2[_0x7ddb[236]]+ _0x9494x2[_0x7ddb[119]]+ this[_0x7ddb[1179]][_0x7ddb[467]])}),mxEvent[_0x7ddb[169]](window,_0x7ddb[129],_0x9494x2)))};mxGraphView[_0x7ddb[202]][_0x7ddb[2320]]= function(_0x9494x2,_0x9494x3){if(null!= this[_0x7ddb[1179]][_0x7ddb[526]]){var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[526]][_0x7ddb[167]];this[_0x7ddb[510]][_0x7ddb[124]][_0x7ddb[117]]= this[_0x7ddb[1179]][_0x7ddb[526]][_0x7ddb[359]]< _0x9494x2?_0x9494x2+ _0x7ddb[168]:_0x7ddb[118];this[_0x7ddb[510]][_0x7ddb[124]][_0x7ddb[119]]= _0x9494x4< _0x9494x3?_0x9494x3+ _0x7ddb[168]:_0x7ddb[118]}};mxGraphView[_0x7ddb[202]][_0x7ddb[2319]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=document[_0x7ddb[55]](_0x7ddb[529]);null!= _0x9494x2&& null!= _0x9494x3?(_0x9494x4[_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[492],_0x9494x4[_0x7ddb[124]][_0x7ddb[361]]= _0x7ddb[946],_0x9494x4[_0x7ddb[124]][_0x7ddb[125]]= _0x7ddb[946],_0x9494x4[_0x7ddb[124]][_0x7ddb[117]]= _0x9494x2,_0x9494x4[_0x7ddb[124]][_0x7ddb[119]]= _0x9494x3):_0x9494x4[_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[1500];return _0x9494x4};mxGraphView[_0x7ddb[202]][_0x7ddb[1571]]= function(){var _0x9494x2=this[_0x7ddb[1179]][_0x7ddb[526]];if(null!= _0x9494x2){var _0x9494x3=_0x9494x2[_0x7ddb[359]],_0x9494x4=_0x9494x2[_0x7ddb[167]];this[_0x7ddb[510]]= this[_0x7ddb[2321]](_0x9494x3,_0x9494x4);this[_0x7ddb[2053]]= this[_0x7ddb[2321]](_0x9494x3,_0x9494x4);this[_0x7ddb[505]]= this[_0x7ddb[2321]](_0x9494x3,_0x9494x4);this[_0x7ddb[506]]= this[_0x7ddb[2321]](_0x9494x3,_0x9494x4);this[_0x7ddb[510]][_0x7ddb[62]](this[_0x7ddb[2053]]);this[_0x7ddb[510]][_0x7ddb[62]](this[_0x7ddb[505]]);this[_0x7ddb[510]][_0x7ddb[62]](this[_0x7ddb[506]]);_0x9494x2[_0x7ddb[62]](this[_0x7ddb[510]])}};mxGraphView[_0x7ddb[202]][_0x7ddb[2321]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=document[_0x7ddb[55]](mxClient[_0x7ddb[463]]+ _0x7ddb[1499]);_0x9494x4[_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[492];_0x9494x4[_0x7ddb[124]][_0x7ddb[361]]= _0x7ddb[946];_0x9494x4[_0x7ddb[124]][_0x7ddb[125]]= _0x7ddb[946];_0x9494x4[_0x7ddb[124]][_0x7ddb[117]]= _0x9494x2+ _0x7ddb[168];_0x9494x4[_0x7ddb[124]][_0x7ddb[119]]= _0x9494x3+ _0x7ddb[168];_0x9494x4[_0x7ddb[57]](_0x7ddb[1462],_0x9494x2+ _0x7ddb[537]+ _0x9494x3);_0x9494x4[_0x7ddb[57]](_0x7ddb[2322],_0x7ddb[2323]);return _0x9494x4};mxGraphView[_0x7ddb[202]][_0x7ddb[1569]]= function(){var _0x9494x2=this[_0x7ddb[1179]][_0x7ddb[526]];this[_0x7ddb[510]]= document[_0x7ddb[509]](mxConstants.NS_SVG,_0x7ddb[449]);this[_0x7ddb[2053]]= document[_0x7ddb[509]](mxConstants.NS_SVG,_0x7ddb[449]);this[_0x7ddb[510]][_0x7ddb[62]](this[_0x7ddb[2053]]);this[_0x7ddb[505]]= document[_0x7ddb[509]](mxConstants.NS_SVG,_0x7ddb[449]);this[_0x7ddb[510]][_0x7ddb[62]](this[_0x7ddb[505]]);this[_0x7ddb[506]]= document[_0x7ddb[509]](mxConstants.NS_SVG,_0x7ddb[449]);this[_0x7ddb[510]][_0x7ddb[62]](this[_0x7ddb[506]]);var _0x9494x3=document[_0x7ddb[509]](mxConstants.NS_SVG,_0x7ddb[571]);_0x9494x3[_0x7ddb[124]][_0x7ddb[117]]= _0x7ddb[118];_0x9494x3[_0x7ddb[124]][_0x7ddb[119]]= _0x7ddb[118];_0x9494x3[_0x7ddb[124]][_0x7ddb[495]]= _0x7ddb[694];_0x9494x3[_0x7ddb[62]](this[_0x7ddb[510]]);null!= _0x9494x2&& (_0x9494x2[_0x7ddb[62]](_0x9494x3),_0x7ddb[2324]== mxUtils[_0x7ddb[275]](_0x9494x2)[_0x7ddb[491]]&& (_0x9494x2[_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[1500]))};mxGraphView[_0x7ddb[202]][_0x7ddb[515]]= function(){var _0x9494x2=null!= this[_0x7ddb[510]]?this[_0x7ddb[510]][_0x7ddb[538]]:null;null== _0x9494x2&& (_0x9494x2= this[_0x7ddb[510]]);null!= _0x9494x2&& null!= _0x9494x2[_0x7ddb[265]]&& (this[_0x7ddb[200]](this[_0x7ddb[1741]],!0),mxEvent[_0x7ddb[938]](document,null,this[_0x7ddb[2317]],this[_0x7ddb[2318]]),mxEvent[_0x7ddb[762]](this[_0x7ddb[1179]][_0x7ddb[526]]),_0x9494x2[_0x7ddb[265]][_0x7ddb[266]](_0x9494x2),this[_0x7ddb[506]]= this[_0x7ddb[505]]= this[_0x7ddb[2053]]= this[_0x7ddb[510]]= this[_0x7ddb[2318]]= this[_0x7ddb[2317]]= null)};function mxCurrentRootChange(_0x9494x2,_0x9494x3){this[_0x7ddb[441]]= _0x9494x2;this[_0x7ddb[257]]= this[_0x7ddb[813]]= _0x9494x3;this[_0x7ddb[2325]]= null== _0x9494x3;if(!this[_0x7ddb[2325]]){for(var _0x9494x4=this[_0x7ddb[441]][_0x7ddb[1741]],_0x9494x5=this[_0x7ddb[441]][_0x7ddb[1179]][_0x7ddb[502]]();null!= _0x9494x4;){if(_0x9494x4== _0x9494x3){this[_0x7ddb[2325]]= !0;break};_0x9494x4= _0x9494x5[_0x7ddb[1197]](_0x9494x4)}}}mxCurrentRootChange[_0x7ddb[202]][_0x7ddb[350]]= function(){var _0x9494x2=this[_0x7ddb[441]][_0x7ddb[1741]];this[_0x7ddb[441]][_0x7ddb[1741]]= this[_0x7ddb[257]];this[_0x7ddb[257]]= _0x9494x2;_0x9494x2= this[_0x7ddb[441]][_0x7ddb[1179]][_0x7ddb[2326]](this[_0x7ddb[441]][_0x7ddb[1741]]);null!= _0x9494x2&& (this[_0x7ddb[441]][_0x7ddb[513]]= new mxPoint(-_0x9494x2[_0x7ddb[235]],-_0x9494x2[_0x7ddb[236]]));this[_0x7ddb[441]][_0x7ddb[746]]( new mxEventObject(this[_0x7ddb[2325]]?mxEvent[_0x7ddb[2327]]:mxEvent[_0x7ddb[2328]],_0x7ddb[813],this[_0x7ddb[441]][_0x7ddb[1741]],_0x7ddb[257],this[_0x7ddb[257]]));this[_0x7ddb[2325]]?(this[_0x7ddb[441]][_0x7ddb[200]](this[_0x7ddb[441]][_0x7ddb[1741]],!0),this[_0x7ddb[441]][_0x7ddb[2264]]()):this[_0x7ddb[441]][_0x7ddb[802]]();this[_0x7ddb[2325]]= !this[_0x7ddb[2325]]};function mxGraph(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){this[_0x7ddb[2329]]= null;this[_0x7ddb[2330]]= _0x9494x4;this[_0x7ddb[507]]= mxClient[_0x7ddb[48]]?mxConstants[_0x7ddb[508]]:_0x9494x4== mxConstants[_0x7ddb[2331]]&& mxClient[_0x7ddb[47]]?mxConstants[_0x7ddb[1523]]:_0x9494x4== mxConstants[_0x7ddb[2332]]?mxConstants[_0x7ddb[1656]]:_0x9494x4== mxConstants[_0x7ddb[2333]]?mxConstants[_0x7ddb[2209]]:mxConstants[_0x7ddb[2334]];this[_0x7ddb[251]]= null!= _0x9494x3?_0x9494x3: new mxGraphModel;this[_0x7ddb[2335]]= [];this[_0x7ddb[2336]]= [];this[_0x7ddb[259]]= this[_0x7ddb[2337]]();this[_0x7ddb[2339]](this[_0x7ddb[2338]]());this[_0x7ddb[2341]](null!= _0x9494x5?_0x9494x5:this[_0x7ddb[2340]]());this[_0x7ddb[441]]= this[_0x7ddb[2342]]();this[_0x7ddb[2343]]= mxUtils[_0x7ddb[885]](this,function(_0x9494x2,_0x9494x3){this[_0x7ddb[1177]](_0x9494x3[_0x7ddb[720]](_0x7ddb[1061])[_0x7ddb[1065]])});this[_0x7ddb[251]][_0x7ddb[169]](mxEvent.CHANGE,this[_0x7ddb[2343]]);this[_0x7ddb[2344]]();null!= _0x9494x2&& this[_0x7ddb[176]](_0x9494x2);this[_0x7ddb[441]][_0x7ddb[2259]]()}mxLoadResources&& mxResources[_0x7ddb[99]](mxClient[_0x7ddb[86]]+ _0x7ddb[2345]);mxGraph[_0x7ddb[202]]= new mxEventSource;mxGraph[_0x7ddb[202]][_0x7ddb[196]]= mxGraph;mxGraph[_0x7ddb[202]][_0x7ddb[2346]]= [];mxGraph[_0x7ddb[202]][_0x7ddb[2329]]= null;mxGraph[_0x7ddb[202]][_0x7ddb[1009]]= !1;mxGraph[_0x7ddb[202]][_0x7ddb[251]]= null;mxGraph[_0x7ddb[202]][_0x7ddb[441]]= null;mxGraph[_0x7ddb[202]][_0x7ddb[94]]= null;mxGraph[_0x7ddb[202]][_0x7ddb[2105]]= null;mxGraph[_0x7ddb[202]][_0x7ddb[2347]]= null;mxGraph[_0x7ddb[202]][_0x7ddb[259]]= null;mxGraph[_0x7ddb[202]][_0x7ddb[2335]]= null;mxGraph[_0x7ddb[202]][_0x7ddb[2330]]= null;mxGraph[_0x7ddb[202]][_0x7ddb[507]]= null;mxGraph[_0x7ddb[202]][_0x7ddb[1020]]= 10;mxGraph[_0x7ddb[202]][_0x7ddb[991]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2348]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2349]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2350]]= 700;mxGraph[_0x7ddb[202]][_0x7ddb[2351]]= 25;mxGraph[_0x7ddb[202]][_0x7ddb[2352]]= 0;mxGraph[_0x7ddb[202]][_0x7ddb[2352]]= 0;mxGraph[_0x7ddb[202]][_0x7ddb[2213]]= 0;mxGraph[_0x7ddb[202]][_0x7ddb[2215]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2353]]= 4;mxGraph[_0x7ddb[202]][_0x7ddb[2354]]= 0.5;mxGraph[_0x7ddb[202]][_0x7ddb[2355]]= null;mxGraph[_0x7ddb[202]][_0x7ddb[2356]]= null;mxGraph[_0x7ddb[202]][_0x7ddb[1617]]= null;mxGraph[_0x7ddb[202]][_0x7ddb[2273]]= !1;mxGraph[_0x7ddb[202]][_0x7ddb[2357]]= !1;mxGraph[_0x7ddb[202]][_0x7ddb[2358]]= _0x7ddb[579];mxGraph[_0x7ddb[202]][_0x7ddb[2359]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2360]]= 20;mxGraph[_0x7ddb[202]][_0x7ddb[2361]]= !1;mxGraph[_0x7ddb[202]][_0x7ddb[2013]]= mxConstants[_0x7ddb[516]];mxGraph[_0x7ddb[202]][_0x7ddb[2012]]= 1.5;mxGraph[_0x7ddb[202]][_0x7ddb[984]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2362]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2363]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2364]]= !1;mxGraph[_0x7ddb[202]][_0x7ddb[2365]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2366]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2367]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2368]]= !1;mxGraph[_0x7ddb[202]][_0x7ddb[2369]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2206]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2370]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2371]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2372]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2373]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2374]]= !1;mxGraph[_0x7ddb[202]][_0x7ddb[2375]]= !1;mxGraph[_0x7ddb[202]][_0x7ddb[2376]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2377]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2378]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2379]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2380]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2381]]= !1;mxGraph[_0x7ddb[202]][_0x7ddb[1012]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2382]]= !1;mxGraph[_0x7ddb[202]][_0x7ddb[2383]]= !1;mxGraph[_0x7ddb[202]][_0x7ddb[2384]]= !1;mxGraph[_0x7ddb[202]][_0x7ddb[1013]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2385]]= null;mxGraph[_0x7ddb[202]][_0x7ddb[2386]]= null;mxGraph[_0x7ddb[202]][_0x7ddb[2387]]= null;mxGraph[_0x7ddb[202]][_0x7ddb[2388]]= null;mxGraph[_0x7ddb[202]][_0x7ddb[2389]]= !1;mxGraph[_0x7ddb[202]][_0x7ddb[467]]= 0;mxGraph[_0x7ddb[202]][_0x7ddb[2158]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2159]]= !1;mxGraph[_0x7ddb[202]][_0x7ddb[2168]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2390]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2391]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2392]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2393]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2394]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2395]]= 1.2;mxGraph[_0x7ddb[202]][_0x7ddb[2396]]= !1;mxGraph[_0x7ddb[202]][_0x7ddb[2397]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2398]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2399]]= !1;mxGraph[_0x7ddb[202]][_0x7ddb[2400]]= !1;mxGraph[_0x7ddb[202]][_0x7ddb[2401]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2402]]= !1;mxGraph[_0x7ddb[202]][_0x7ddb[2293]]= mxEdgeStyle[_0x7ddb[2403]];mxGraph[_0x7ddb[202]][_0x7ddb[2404]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2405]]= !1;mxGraph[_0x7ddb[202]][_0x7ddb[2406]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2407]]= !1;mxGraph[_0x7ddb[202]][_0x7ddb[2408]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2409]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2410]]= !1;mxGraph[_0x7ddb[202]][_0x7ddb[2411]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2412]]= !0;mxGraph[_0x7ddb[202]][_0x7ddb[2180]]= mxConstants[_0x7ddb[2065]];mxGraph[_0x7ddb[202]][_0x7ddb[2336]]= null;mxGraph[_0x7ddb[202]][_0x7ddb[2413]]= 0.1;mxGraph[_0x7ddb[202]][_0x7ddb[2414]]= 8;mxGraph[_0x7ddb[202]][_0x7ddb[1136]]= 0;mxGraph[_0x7ddb[202]][_0x7ddb[1137]]= 0;mxGraph[_0x7ddb[202]][_0x7ddb[2415]]= new mxImage(mxClient[_0x7ddb[88]]+ _0x7ddb[2416],9,9);mxGraph[_0x7ddb[202]][_0x7ddb[2417]]= new mxImage(mxClient[_0x7ddb[88]]+ _0x7ddb[2418],9,9);mxGraph[_0x7ddb[202]][_0x7ddb[2419]]= new mxImage(_0x7ddb[2420],16,16);mxGraph[_0x7ddb[202]][_0x7ddb[2421]]= _0x7ddb[130]!= mxClient[_0x7ddb[90]]?_0x7ddb[2422]:_0x7ddb[110];mxGraph[_0x7ddb[202]][_0x7ddb[2423]]= _0x7ddb[130]!= mxClient[_0x7ddb[90]]?_0x7ddb[2424]:_0x7ddb[110];mxGraph[_0x7ddb[202]][_0x7ddb[2425]]= _0x7ddb[130]!= mxClient[_0x7ddb[90]]?_0x7ddb[2426]:_0x7ddb[110];mxGraph[_0x7ddb[202]][_0x7ddb[176]]= function(_0x9494x2){this[_0x7ddb[526]]= _0x9494x2;this[_0x7ddb[2347]]= this[_0x7ddb[2427]]();this[_0x7ddb[441]][_0x7ddb[176]]();this[_0x7ddb[2258]]();mxClient[_0x7ddb[80]]&& (mxEvent[_0x7ddb[169]](window,_0x7ddb[2428],mxUtils[_0x7ddb[885]](this,function(){this[_0x7ddb[515]]()})),mxEvent[_0x7ddb[169]](_0x9494x2,_0x7ddb[2429],mxUtils[_0x7ddb[885]](this,function(){return this[_0x7ddb[2203]]()})));8== document[_0x7ddb[5]]&& _0x9494x2[_0x7ddb[1583]](_0x7ddb[1582],_0x7ddb[2430])};mxGraph[_0x7ddb[202]][_0x7ddb[2344]]= function(_0x9494x2){this[_0x7ddb[2276]]= new mxTooltipHandler(this);this[_0x7ddb[2276]][_0x7ddb[995]](!1);this[_0x7ddb[2316]]= new mxPanningHandler(this);this[_0x7ddb[2316]][_0x7ddb[2431]]= !1;this[_0x7ddb[2432]]= new mxSelectionCellsHandler(this);this[_0x7ddb[2433]]= new mxConnectionHandler(this);this[_0x7ddb[2433]][_0x7ddb[995]](!1);this[_0x7ddb[1011]]= new mxGraphHandler(this)};mxGraph[_0x7ddb[202]][_0x7ddb[2338]]= function(){return new mxGraphSelectionModel(this)};mxGraph[_0x7ddb[202]][_0x7ddb[2340]]= function(){return new mxStylesheet};mxGraph[_0x7ddb[202]][_0x7ddb[2342]]= function(){return new mxGraphView(this)};mxGraph[_0x7ddb[202]][_0x7ddb[2337]]= function(){return new mxCellRenderer};mxGraph[_0x7ddb[202]][_0x7ddb[2427]]= function(){return new mxCellEditor(this)};mxGraph[_0x7ddb[202]][_0x7ddb[502]]= function(){return this[_0x7ddb[251]]};mxGraph[_0x7ddb[202]][_0x7ddb[249]]= function(){return this[_0x7ddb[441]]};mxGraph[_0x7ddb[202]][_0x7ddb[2434]]= function(){return this[_0x7ddb[94]]};mxGraph[_0x7ddb[202]][_0x7ddb[2341]]= function(_0x9494x2){this[_0x7ddb[94]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2435]]= function(){return this[_0x7ddb[2105]]};mxGraph[_0x7ddb[202]][_0x7ddb[2339]]= function(_0x9494x2){this[_0x7ddb[2105]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2436]]= function(_0x9494x2){for(var _0x9494x3=[],_0x9494x4=0;_0x9494x4< _0x9494x2[_0x7ddb[67]];_0x9494x4++){var _0x9494x5=_0x9494x2[_0x9494x4];if(_0x9494x5[_0x7ddb[196]]!= mxRootChange){var _0x9494x9=null;_0x9494x5 instanceof mxChildChange&& null== _0x9494x5[_0x7ddb[257]]?_0x9494x9= _0x9494x5[_0x7ddb[247]]:null!= _0x9494x5[_0x7ddb[246]]&& _0x9494x5[_0x7ddb[246]] instanceof mxCell&& (_0x9494x9= _0x9494x5[_0x7ddb[246]]);null!= _0x9494x9&& 0> mxUtils[_0x7ddb[2]](_0x9494x3,_0x9494x9)&& _0x9494x3[_0x7ddb[207]](_0x9494x9)}};return this[_0x7ddb[502]]()[_0x7ddb[1964]](_0x9494x3)};mxGraph[_0x7ddb[202]][_0x7ddb[1177]]= function(_0x9494x2){for(var _0x9494x3=0;_0x9494x3< _0x9494x2[_0x7ddb[67]];_0x9494x3++){this[_0x7ddb[2437]](_0x9494x2[_0x9494x3])};this[_0x7ddb[2439]](this[_0x7ddb[2438]](_0x9494x2));this[_0x7ddb[441]][_0x7ddb[2264]]();this[_0x7ddb[2258]]()};mxGraph[_0x7ddb[202]][_0x7ddb[2438]]= function(_0x9494x2){for(var _0x9494x3=[],_0x9494x4=0;_0x9494x4< _0x9494x2[_0x7ddb[67]];_0x9494x4++){var _0x9494x5=_0x9494x2[_0x9494x4];if(_0x9494x5 instanceof mxRootChange){break}else {_0x9494x5 instanceof mxChildChange?null!= _0x9494x5[_0x7ddb[257]]&& null== _0x9494x5[_0x7ddb[1101]]&& (_0x9494x3= _0x9494x3[_0x7ddb[1919]](this[_0x7ddb[251]][_0x7ddb[1939]](_0x9494x5[_0x7ddb[247]]))):_0x9494x5 instanceof mxVisibleChange&& (_0x9494x3= _0x9494x3[_0x7ddb[1919]](this[_0x7ddb[251]][_0x7ddb[1939]](_0x9494x5[_0x7ddb[246]])))}};return _0x9494x3};mxGraph[_0x7ddb[202]][_0x7ddb[2437]]= function(_0x9494x2){if(_0x9494x2 instanceof mxRootChange){this[_0x7ddb[2440]](),this[_0x7ddb[2441]](_0x9494x2[_0x7ddb[257]]),this[_0x7ddb[2398]]&& (this[_0x7ddb[441]][_0x7ddb[255]]= 1,this[_0x7ddb[441]][_0x7ddb[513]][_0x7ddb[235]]= 0,this[_0x7ddb[441]][_0x7ddb[513]][_0x7ddb[236]]= 0),this[_0x7ddb[746]]( new mxEventObject(mxEvent.ROOT))}else {if(_0x9494x2 instanceof mxChildChange){var _0x9494x3=this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x2[_0x7ddb[247]]);null!= _0x9494x3?this[_0x7ddb[441]][_0x7ddb[2263]](_0x9494x2[_0x7ddb[247]],!0,!1,null!= _0x9494x2[_0x7ddb[257]]):(this[_0x7ddb[2441]](_0x9494x2[_0x7ddb[247]]),this[_0x7ddb[441]][_0x7ddb[1741]]== _0x9494x2[_0x7ddb[247]]&& this[_0x7ddb[2442]]());_0x9494x3!= _0x9494x2[_0x7ddb[257]]&& (null!= _0x9494x3&& this[_0x7ddb[441]][_0x7ddb[2263]](_0x9494x3,!1,!1),null!= _0x9494x2[_0x7ddb[257]]&& this[_0x7ddb[441]][_0x7ddb[2263]](_0x9494x2[_0x7ddb[257]],!1,!1))}else {_0x9494x2 instanceof mxTerminalChange|| _0x9494x2 instanceof mxGeometryChange?this[_0x7ddb[441]][_0x7ddb[2263]](_0x9494x2[_0x7ddb[246]]):_0x9494x2 instanceof mxValueChange?this[_0x7ddb[441]][_0x7ddb[2263]](_0x9494x2[_0x7ddb[246]],!1,!1):_0x9494x2 instanceof mxStyleChange?(this[_0x7ddb[441]][_0x7ddb[2263]](_0x9494x2[_0x7ddb[246]],!0,!0,!1),this[_0x7ddb[441]][_0x7ddb[2265]](_0x9494x2[_0x7ddb[246]])):null!= _0x9494x2[_0x7ddb[246]]&& _0x9494x2[_0x7ddb[246]] instanceof mxCell&& this[_0x7ddb[2441]](_0x9494x2[_0x7ddb[246]])}}};mxGraph[_0x7ddb[202]][_0x7ddb[2441]]= function(_0x9494x2){for(var _0x9494x3=this[_0x7ddb[251]][_0x7ddb[262]](_0x9494x2),_0x9494x4=0;_0x9494x4< _0x9494x3;_0x9494x4++){this[_0x7ddb[2441]](this[_0x7ddb[251]][_0x7ddb[263]](_0x9494x2,_0x9494x4))};this[_0x7ddb[441]][_0x7ddb[2265]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2443]]= function(_0x9494x2,_0x9494x3){null== _0x9494x2[_0x7ddb[1211]]&& (_0x9494x2[_0x7ddb[1211]]= []);_0x9494x2[_0x7ddb[1211]][_0x7ddb[207]](_0x9494x3);var _0x9494x4=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x2);null!= _0x9494x4&& this[_0x7ddb[259]][_0x7ddb[258]](_0x9494x4);this[_0x7ddb[746]]( new mxEventObject(mxEvent.ADD_OVERLAY,_0x7ddb[246],_0x9494x2,_0x7ddb[2201],_0x9494x3));return _0x9494x3};mxGraph[_0x7ddb[202]][_0x7ddb[2200]]= function(_0x9494x2){return _0x9494x2[_0x7ddb[1211]]};mxGraph[_0x7ddb[202]][_0x7ddb[2444]]= function(_0x9494x2,_0x9494x3){if(null== _0x9494x3){this[_0x7ddb[2445]](_0x9494x2)}else {var _0x9494x4=mxUtils[_0x7ddb[2]](_0x9494x2[_0x7ddb[1211]],_0x9494x3);0<= _0x9494x4?(_0x9494x2[_0x7ddb[1211]][_0x7ddb[300]](_0x9494x4,1),0== _0x9494x2[_0x7ddb[1211]][_0x7ddb[67]]&& (_0x9494x2[_0x7ddb[1211]]= null),_0x9494x4= this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x2),null!= _0x9494x4&& this[_0x7ddb[259]][_0x7ddb[258]](_0x9494x4),this[_0x7ddb[746]]( new mxEventObject(mxEvent.REMOVE_OVERLAY,_0x7ddb[246],_0x9494x2,_0x7ddb[2201],_0x9494x3))):_0x9494x3= null};return _0x9494x3};mxGraph[_0x7ddb[202]][_0x7ddb[2445]]= function(_0x9494x2){var _0x9494x3=_0x9494x2[_0x7ddb[1211]];if(null!= _0x9494x3){_0x9494x2[_0x7ddb[1211]]= null;var _0x9494x4=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x2);null!= _0x9494x4&& this[_0x7ddb[259]][_0x7ddb[258]](_0x9494x4);for(_0x9494x4= 0;_0x9494x4< _0x9494x3[_0x7ddb[67]];_0x9494x4++){this[_0x7ddb[746]]( new mxEventObject(mxEvent.REMOVE_OVERLAY,_0x7ddb[246],_0x9494x2,_0x7ddb[2201],_0x9494x3[_0x9494x4]))}};return _0x9494x3};mxGraph[_0x7ddb[202]][_0x7ddb[2446]]= function(_0x9494x2){_0x9494x2= null!= _0x9494x2?_0x9494x2:this[_0x7ddb[251]][_0x7ddb[501]]();this[_0x7ddb[2445]](_0x9494x2);for(var _0x9494x3=this[_0x7ddb[251]][_0x7ddb[262]](_0x9494x2),_0x9494x4=0;_0x9494x4< _0x9494x3;_0x9494x4++){var _0x9494x5=this[_0x7ddb[251]][_0x7ddb[263]](_0x9494x2,_0x9494x4);this[_0x7ddb[2446]](_0x9494x5)}};mxGraph[_0x7ddb[202]][_0x7ddb[2447]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){if(null!= _0x9494x3&& 0< _0x9494x3[_0x7ddb[67]]){return _0x9494x4= null!= _0x9494x4?_0x9494x4:this[_0x7ddb[2419]],_0x9494x3= new mxCellOverlay(_0x9494x4,_0x7ddb[2448]+ _0x9494x3+ _0x7ddb[2449]),_0x9494x5&& _0x9494x3[_0x7ddb[169]](mxEvent.CLICK,mxUtils[_0x7ddb[885]](this,function(_0x9494x3,_0x9494x4){this[_0x7ddb[994]]()&& this[_0x7ddb[2450]](_0x9494x2)})),this[_0x7ddb[2443]](_0x9494x2,_0x9494x3)};this[_0x7ddb[2445]](_0x9494x2);return null};mxGraph[_0x7ddb[202]][_0x7ddb[855]]= function(_0x9494x2){this[_0x7ddb[2451]](null,_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2451]]= function(_0x9494x2,_0x9494x3){null== _0x9494x2&& (_0x9494x2= this[_0x7ddb[2452]](),null!= _0x9494x2&& !this[_0x7ddb[2453]](_0x9494x2)&& (_0x9494x2= null));null!= _0x9494x2&& (this[_0x7ddb[746]]( new mxEventObject(mxEvent.START_EDITING,_0x7ddb[246],_0x9494x2,_0x7ddb[763],_0x9494x3)),this[_0x7ddb[2347]][_0x7ddb[855]](_0x9494x2,_0x9494x3))};mxGraph[_0x7ddb[202]][_0x7ddb[2142]]= function(_0x9494x2,_0x9494x3){return this[_0x7ddb[2454]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2126]]= function(_0x9494x2){this[_0x7ddb[2347]][_0x7ddb[2126]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[850]]= function(_0x9494x2,_0x9494x3,_0x9494x4){this[_0x7ddb[251]][_0x7ddb[473]]();try{this[_0x7ddb[2456]](_0x9494x2,_0x9494x3,this[_0x7ddb[2455]](_0x9494x2)),this[_0x7ddb[746]]( new mxEventObject(mxEvent.LABEL_CHANGED,_0x7ddb[246],_0x9494x2,_0x7ddb[131],_0x9494x3,_0x7ddb[763],_0x9494x4))}finally{this[_0x7ddb[251]][_0x7ddb[476]]()};return _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2456]]= function(_0x9494x2,_0x9494x3,_0x9494x4){this[_0x7ddb[251]][_0x7ddb[473]]();try{this[_0x7ddb[251]][_0x7ddb[1966]](_0x9494x2,_0x9494x3),_0x9494x4&& this[_0x7ddb[2457]](_0x9494x2,!1)}finally{this[_0x7ddb[251]][_0x7ddb[476]]()}};mxGraph[_0x7ddb[202]][_0x7ddb[859]]= function(_0x9494x2){this[_0x7ddb[2126]](!0);this[_0x7ddb[2433]][_0x7ddb[862]]();this[_0x7ddb[1011]][_0x7ddb[862]]();_0x9494x2= this[_0x7ddb[897]]();for(var _0x9494x3=0;_0x9494x3< _0x9494x2[_0x7ddb[67]];_0x9494x3++){var _0x9494x4=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x2[_0x9494x3]);null!= _0x9494x4&& null!= _0x9494x4[_0x7ddb[2458]]&& _0x9494x4[_0x7ddb[2458]][_0x7ddb[862]]()}};mxGraph[_0x7ddb[202]][_0x7ddb[173]]= function(_0x9494x2){var _0x9494x3=_0x9494x2[_0x7ddb[727]](),_0x9494x4=_0x9494x2[_0x7ddb[736]](),_0x9494x5= new mxEventObject(mxEvent.CLICK,_0x7ddb[763],_0x9494x3,_0x7ddb[246],_0x9494x4);_0x9494x2[_0x7ddb[721]]()&& _0x9494x5[_0x7ddb[722]]();this[_0x7ddb[746]](_0x9494x5);this[_0x7ddb[994]]()&& (!mxEvent[_0x7ddb[721]](_0x9494x3)&& !_0x9494x5[_0x7ddb[721]]())&& (null!= _0x9494x4?this[_0x7ddb[2459]](_0x9494x4,_0x9494x3):(_0x9494x4= null,this[_0x7ddb[2460]]()&& (_0x9494x4= this[_0x7ddb[2461]](_0x9494x2[_0x7ddb[734]](),_0x9494x2[_0x7ddb[735]]())),null!= _0x9494x4?this[_0x7ddb[2459]](_0x9494x4,_0x9494x3):this[_0x7ddb[2462]](_0x9494x3)|| this[_0x7ddb[2440]]()))};mxGraph[_0x7ddb[202]][_0x7ddb[761]]= function(_0x9494x2,_0x9494x3){var _0x9494x4= new mxEventObject(mxEvent.DOUBLE_CLICK,_0x7ddb[763],_0x9494x2,_0x7ddb[246],_0x9494x3);this[_0x7ddb[746]](_0x9494x4);this[_0x7ddb[994]]()&& (!mxEvent[_0x7ddb[721]](_0x9494x2)&& !_0x9494x4[_0x7ddb[721]]() && null!= _0x9494x3 && this[_0x7ddb[2453]](_0x9494x3))&& this[_0x7ddb[2451]](_0x9494x3,_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[1014]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){if(!this[_0x7ddb[2382]]&& (this[_0x7ddb[2384]]|| mxUtils[_0x7ddb[1134]](this[_0x7ddb[526]]))){var _0x9494x9=this[_0x7ddb[526]];_0x9494x5= null!= _0x9494x5?_0x9494x5:20;if(_0x9494x2>= _0x9494x9[_0x7ddb[360]]&& _0x9494x3>= _0x9494x9[_0x7ddb[190]]&& _0x9494x2<= _0x9494x9[_0x7ddb[360]]+ _0x9494x9[_0x7ddb[159]]&& _0x9494x3<= _0x9494x9[_0x7ddb[190]]+ _0x9494x9[_0x7ddb[157]]){var _0x9494xa=_0x9494x9[_0x7ddb[360]]+ _0x9494x9[_0x7ddb[159]]- _0x9494x2;if(_0x9494xa< _0x9494x5){if(_0x9494x2= _0x9494x9[_0x7ddb[360]],_0x9494x9[_0x7ddb[360]]+= _0x9494x5- _0x9494xa,_0x9494x4&& _0x9494x2== _0x9494x9[_0x7ddb[360]]){if(this[_0x7ddb[507]]== mxConstants[_0x7ddb[508]]){_0x9494x2= this[_0x7ddb[441]][_0x7ddb[2024]]()[_0x7ddb[538]];var _0x9494x12=this[_0x7ddb[526]][_0x7ddb[1526]]+ _0x9494x5- _0x9494xa}else {_0x9494x12= Math[_0x7ddb[160]](_0x9494x9[_0x7ddb[159]],_0x9494x9[_0x7ddb[1526]])+ _0x9494x5- _0x9494xa,_0x9494x2= this[_0x7ddb[441]][_0x7ddb[2051]]()};_0x9494x2[_0x7ddb[124]][_0x7ddb[117]]= _0x9494x12+ _0x7ddb[168];_0x9494x9[_0x7ddb[360]]+= _0x9494x5- _0x9494xa}}else {_0x9494xa= _0x9494x2- _0x9494x9[_0x7ddb[360]],_0x9494xa< _0x9494x5&& (_0x9494x9[_0x7ddb[360]]-= _0x9494x5- _0x9494xa)};_0x9494xa= _0x9494x9[_0x7ddb[190]]+ _0x9494x9[_0x7ddb[157]]- _0x9494x3;_0x9494xa< _0x9494x5?(_0x9494x2= _0x9494x9[_0x7ddb[190]],_0x9494x9[_0x7ddb[190]]+= _0x9494x5- _0x9494xa,_0x9494x2== _0x9494x9[_0x7ddb[190]]&& _0x9494x4&& (this[_0x7ddb[507]]== mxConstants[_0x7ddb[508]]?(_0x9494x2= this[_0x7ddb[441]][_0x7ddb[2024]]()[_0x7ddb[538]],_0x9494x3= this[_0x7ddb[526]][_0x7ddb[191]]+ _0x9494x5- _0x9494xa):(_0x9494x3= Math[_0x7ddb[160]](_0x9494x9[_0x7ddb[157]],_0x9494x9[_0x7ddb[191]])+ _0x9494x5- _0x9494xa,_0x9494x2= this[_0x7ddb[441]][_0x7ddb[2051]]()),_0x9494x2[_0x7ddb[124]][_0x7ddb[119]]= _0x9494x3+ _0x7ddb[168],_0x9494x9[_0x7ddb[190]]+= _0x9494x5- _0x9494xa)):(_0x9494xa= _0x9494x3- _0x9494x9[_0x7ddb[190]],_0x9494xa< _0x9494x5&& (_0x9494x9[_0x7ddb[190]]-= _0x9494x5- _0x9494xa))}}else {this[_0x7ddb[2383]]&& !this[_0x7ddb[2316]][_0x7ddb[1124]]&& (null== this[_0x7ddb[2463]]&& (this[_0x7ddb[2463]]= this[_0x7ddb[2464]]()),this[_0x7ddb[2463]][_0x7ddb[1143]](_0x9494x2+ this[_0x7ddb[1136]],_0x9494x3+ this[_0x7ddb[1137]]))}};mxGraph[_0x7ddb[202]][_0x7ddb[2464]]= function(){return new mxPanningManager(this)};mxGraph[_0x7ddb[202]][_0x7ddb[2465]]= function(){function _0x9494x2(_0x9494x2){var _0x9494x3=0,_0x9494x3=_0x7ddb[2466]== _0x9494x2?2:_0x7ddb[2467]== _0x9494x2?4:_0x7ddb[2468]== _0x9494x2?6:parseInt(_0x9494x2);isNaN(_0x9494x3)&& (_0x9494x3= 0);return _0x9494x3}var _0x9494x3=mxUtils[_0x7ddb[275]](this[_0x7ddb[526]]),_0x9494x4= new mxRectangle;_0x9494x4[_0x7ddb[235]]= _0x9494x2(_0x9494x3[_0x7ddb[2469]])+ parseInt(_0x9494x3[_0x7ddb[357]]|| 0);_0x9494x4[_0x7ddb[236]]= _0x9494x2(_0x9494x3[_0x7ddb[2470]])+ parseInt(_0x9494x3[_0x7ddb[2471]]|| 0);_0x9494x4[_0x7ddb[117]]= _0x9494x2(_0x9494x3[_0x7ddb[2472]])+ parseInt(_0x9494x3[_0x7ddb[1164]]|| 0);_0x9494x4[_0x7ddb[119]]= _0x9494x2(_0x9494x3[_0x7ddb[2473]])+ parseInt(_0x9494x3[_0x7ddb[2474]]|| 0);return _0x9494x4};mxGraph[_0x7ddb[202]][_0x7ddb[2475]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x2= this[_0x7ddb[441]][_0x7ddb[255]];var _0x9494x5=this[_0x7ddb[441]][_0x7ddb[513]],_0x9494x9=this[_0x7ddb[2013]],_0x9494xa=_0x9494x2* this[_0x7ddb[2012]],_0x9494x9= new mxRectangle(0,0,_0x9494x9[_0x7ddb[117]]* _0x9494xa,_0x9494x9[_0x7ddb[119]]* _0x9494xa);_0x9494x3= this[_0x7ddb[2357]]?Math[_0x7ddb[430]](_0x9494x3/ _0x9494x9[_0x7ddb[117]]):1;_0x9494x4= this[_0x7ddb[2357]]?Math[_0x7ddb[430]](_0x9494x4/ _0x9494x9[_0x7ddb[119]]):1;return new mxRectangle(0,0,_0x9494x3* _0x9494x9[_0x7ddb[117]]+ 2+ _0x9494x5[_0x7ddb[235]]/ _0x9494x2,_0x9494x4* _0x9494x9[_0x7ddb[119]]+ 2+ _0x9494x5[_0x7ddb[236]]/ _0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2258]]= function(){var _0x9494x2=this[_0x7ddb[517]]();if(null!= this[_0x7ddb[526]]){var _0x9494x3=this[_0x7ddb[2476]](),_0x9494x4=Math[_0x7ddb[160]](0,_0x9494x2[_0x7ddb[235]]+ _0x9494x2[_0x7ddb[117]]+ 1+ _0x9494x3),_0x9494x3=Math[_0x7ddb[160]](0,_0x9494x2[_0x7ddb[236]]+ _0x9494x2[_0x7ddb[119]]+ 1+ _0x9494x3);null!= this[_0x7ddb[2387]]&& (_0x9494x4= Math[_0x7ddb[160]](_0x9494x4,this[_0x7ddb[2387]][_0x7ddb[117]]),_0x9494x3= Math[_0x7ddb[160]](_0x9494x3,this[_0x7ddb[2387]][_0x7ddb[119]]));this[_0x7ddb[2389]]&& this[_0x7ddb[2477]](_0x9494x4,_0x9494x3);if(this[_0x7ddb[2361]]|| !mxClient[_0x7ddb[80]]&& this[_0x7ddb[2273]]){var _0x9494x5=this[_0x7ddb[2475]](_0x9494x2,_0x9494x4,_0x9494x3);null!= _0x9494x5&& (_0x9494x4= _0x9494x5[_0x7ddb[117]],_0x9494x3= _0x9494x5[_0x7ddb[119]])};null!= this[_0x7ddb[2386]]&& (_0x9494x4= Math[_0x7ddb[160]](_0x9494x4,this[_0x7ddb[2386]][_0x7ddb[117]]* this[_0x7ddb[441]][_0x7ddb[255]]),_0x9494x3= Math[_0x7ddb[160]](_0x9494x3,this[_0x7ddb[2386]][_0x7ddb[119]]* this[_0x7ddb[441]][_0x7ddb[255]]));_0x9494x4= Math[_0x7ddb[430]](_0x9494x4- 1);_0x9494x3= Math[_0x7ddb[430]](_0x9494x3- 1);this[_0x7ddb[507]]== mxConstants[_0x7ddb[508]]?(_0x9494x5= this[_0x7ddb[441]][_0x7ddb[2024]]()[_0x7ddb[538]],_0x9494x5[_0x7ddb[124]][_0x7ddb[2478]]= Math[_0x7ddb[160]](1,_0x9494x4)+ _0x7ddb[168],_0x9494x5[_0x7ddb[124]][_0x7ddb[2479]]= Math[_0x7ddb[160]](1,_0x9494x3)+ _0x7ddb[168],_0x9494x5[_0x7ddb[124]][_0x7ddb[117]]= _0x7ddb[118],_0x9494x5[_0x7ddb[124]][_0x7ddb[119]]= _0x7ddb[118]):mxClient[_0x7ddb[496]]?this[_0x7ddb[441]][_0x7ddb[2320]](Math[_0x7ddb[160]](1,_0x9494x4),Math[_0x7ddb[160]](1,_0x9494x3)):(this[_0x7ddb[441]][_0x7ddb[510]][_0x7ddb[124]][_0x7ddb[2478]]= Math[_0x7ddb[160]](1,_0x9494x4)+ _0x7ddb[168],this[_0x7ddb[441]][_0x7ddb[510]][_0x7ddb[124]][_0x7ddb[2479]]= Math[_0x7ddb[160]](1,_0x9494x3)+ _0x7ddb[168]);this[_0x7ddb[2480]](this[_0x7ddb[2357]],_0x9494x4- 1,_0x9494x3- 1)};this[_0x7ddb[746]]( new mxEventObject(mxEvent.SIZE,_0x7ddb[1562],_0x9494x2))};mxGraph[_0x7ddb[202]][_0x7ddb[2477]]= function(_0x9494x2,_0x9494x3){if(mxClient[_0x7ddb[80]]){if(mxClient[_0x7ddb[496]]){var _0x9494x4=this[_0x7ddb[2465]]();_0x9494x2+= Math[_0x7ddb[160]](2,_0x9494x4[_0x7ddb[235]]+ _0x9494x4[_0x7ddb[117]]+ 1);_0x9494x3+= Math[_0x7ddb[160]](2,_0x9494x4[_0x7ddb[236]]+ _0x9494x4[_0x7ddb[119]]+ 1)}else {9<= document[_0x7ddb[5]]?(_0x9494x2+= 3,_0x9494x3+= 5):(_0x9494x2+= 1,_0x9494x3+= 1)}}else {_0x9494x3+= 1};null!= this[_0x7ddb[2388]]&& (_0x9494x2= Math[_0x7ddb[243]](this[_0x7ddb[2388]][_0x7ddb[117]],_0x9494x2),_0x9494x3= Math[_0x7ddb[243]](this[_0x7ddb[2388]][_0x7ddb[119]],_0x9494x3));this[_0x7ddb[526]][_0x7ddb[124]][_0x7ddb[117]]= Math[_0x7ddb[430]](_0x9494x2)+ _0x7ddb[168];this[_0x7ddb[526]][_0x7ddb[124]][_0x7ddb[119]]= Math[_0x7ddb[430]](_0x9494x3)+ _0x7ddb[168]};mxGraph[_0x7ddb[202]][_0x7ddb[2480]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=this[_0x7ddb[441]][_0x7ddb[255]],_0x9494x9=this[_0x7ddb[441]][_0x7ddb[513]],_0x9494xa=this[_0x7ddb[2013]],_0x9494x12=_0x9494x5* this[_0x7ddb[2012]],_0x9494x9= new mxRectangle(_0x9494x5* _0x9494x9[_0x7ddb[235]],_0x9494x5* _0x9494x9[_0x7ddb[236]],_0x9494xa[_0x7ddb[117]]* _0x9494x12,_0x9494xa[_0x7ddb[119]]* _0x9494x12);_0x9494x2= _0x9494x2&& Math[_0x7ddb[243]](_0x9494x9[_0x7ddb[117]],_0x9494x9[_0x7ddb[119]])> this[_0x7ddb[2360]];_0x9494x9[_0x7ddb[235]]= mxUtils[_0x7ddb[1454]](_0x9494x9[_0x7ddb[235]],_0x9494x9[_0x7ddb[117]]);_0x9494x9[_0x7ddb[236]]= mxUtils[_0x7ddb[1454]](_0x9494x9[_0x7ddb[236]],_0x9494x9[_0x7ddb[119]]);_0x9494xa= _0x9494x2?Math[_0x7ddb[430]]((_0x9494x3- _0x9494x9[_0x7ddb[235]])/ _0x9494x9[_0x7ddb[117]]):0;_0x9494x2= _0x9494x2?Math[_0x7ddb[430]]((_0x9494x4- _0x9494x9[_0x7ddb[236]])/ _0x9494x9[_0x7ddb[119]]):0;null== this[_0x7ddb[2481]]&& 0< _0x9494xa&& (this[_0x7ddb[2481]]= []);if(null!= this[_0x7ddb[2481]]){for(_0x9494x12= 0;_0x9494x12<= _0x9494xa;_0x9494x12++){var _0x9494x13=[ new mxPoint(_0x9494x9[_0x7ddb[235]]+ _0x9494x12* _0x9494x9[_0x7ddb[117]],1), new mxPoint(_0x9494x9[_0x7ddb[235]]+ _0x9494x12* _0x9494x9[_0x7ddb[117]],_0x9494x4)];null!= this[_0x7ddb[2481]][_0x9494x12]?(this[_0x7ddb[2481]][_0x9494x12][_0x7ddb[255]]= 1,this[_0x7ddb[2481]][_0x9494x12][_0x7ddb[1525]]= _0x9494x13,this[_0x7ddb[2481]][_0x9494x12][_0x7ddb[258]]()):(_0x9494x13= new mxPolyline(_0x9494x13,this[_0x7ddb[2358]],this[_0x7ddb[255]]),_0x9494x13[_0x7ddb[507]]= this[_0x7ddb[507]],_0x9494x13[_0x7ddb[1522]]= this[_0x7ddb[2359]],_0x9494x13[_0x7ddb[255]]= _0x9494x5,_0x9494x13[_0x7ddb[176]](this[_0x7ddb[441]][_0x7ddb[2053]]),_0x9494x13[_0x7ddb[258]](),this[_0x7ddb[2481]][_0x9494x12]= _0x9494x13)};for(_0x9494x12= _0x9494xa;_0x9494x12< this[_0x7ddb[2481]][_0x7ddb[67]];_0x9494x12++){this[_0x7ddb[2481]][_0x9494x12][_0x7ddb[515]]()};this[_0x7ddb[2481]][_0x7ddb[300]](_0x9494xa,this[_0x7ddb[2481]][_0x7ddb[67]]- _0x9494xa)};null== this[_0x7ddb[2482]]&& 0< _0x9494x2&& (this[_0x7ddb[2482]]= []);if(null!= this[_0x7ddb[2482]]){for(_0x9494x12= 0;_0x9494x12<= _0x9494x2;_0x9494x12++){_0x9494x13= [ new mxPoint(1,_0x9494x9[_0x7ddb[236]]+ _0x9494x12* _0x9494x9[_0x7ddb[119]]), new mxPoint(_0x9494x3,_0x9494x9[_0x7ddb[236]]+ _0x9494x12* _0x9494x9[_0x7ddb[119]])],null!= this[_0x7ddb[2482]][_0x9494x12]?(this[_0x7ddb[2482]][_0x9494x12][_0x7ddb[255]]= 1,this[_0x7ddb[2482]][_0x9494x12][_0x7ddb[1525]]= _0x9494x13,this[_0x7ddb[2482]][_0x9494x12][_0x7ddb[258]]()):(_0x9494x13= new mxPolyline(_0x9494x13,this[_0x7ddb[2358]],_0x9494x5),_0x9494x13[_0x7ddb[507]]= this[_0x7ddb[507]],_0x9494x13[_0x7ddb[1522]]= this[_0x7ddb[2359]],_0x9494x13[_0x7ddb[255]]= _0x9494x5,_0x9494x13[_0x7ddb[176]](this[_0x7ddb[441]][_0x7ddb[2053]]),_0x9494x13[_0x7ddb[258]](),this[_0x7ddb[2482]][_0x9494x12]= _0x9494x13)};for(_0x9494x12= _0x9494x2;_0x9494x12< this[_0x7ddb[2482]][_0x7ddb[67]];_0x9494x12++){this[_0x7ddb[2482]][_0x9494x12][_0x7ddb[515]]()};this[_0x7ddb[2482]][_0x7ddb[300]](_0x9494x2,this[_0x7ddb[2482]][_0x7ddb[67]]- _0x9494x2)}};mxGraph[_0x7ddb[202]][_0x7ddb[1705]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[251]][_0x7ddb[474]](_0x9494x2),_0x9494x4=null,_0x9494x4=this[_0x7ddb[251]][_0x7ddb[250]](_0x9494x2)?this[_0x7ddb[94]][_0x7ddb[2077]]():this[_0x7ddb[94]][_0x7ddb[2076]]();null!= _0x9494x3&& (_0x9494x4= this[_0x7ddb[2483]](this[_0x7ddb[94]][_0x7ddb[1705]](_0x9494x3,_0x9494x4)));null== _0x9494x4&& (_0x9494x4= mxGraph[_0x7ddb[202]][_0x7ddb[2346]]);return _0x9494x4};mxGraph[_0x7ddb[202]][_0x7ddb[2483]]= function(_0x9494x2){if(null!= _0x9494x2){var _0x9494x3=_0x9494x2[mxConstants[_0x7ddb[2484]]],_0x9494x4=this[_0x7ddb[2485]](_0x9494x3);null!= _0x9494x4?_0x9494x2[mxConstants[_0x7ddb[2484]]]= _0x9494x4:_0x9494x4= _0x9494x3;null!= _0x9494x4&& _0x7ddb[2486]== _0x9494x4[_0x7ddb[85]](0,11)&& (_0x9494x3= _0x9494x4[_0x7ddb[2]](_0x7ddb[537]),0< _0x9494x3&& (_0x9494x4= _0x9494x4[_0x7ddb[85]](0,_0x9494x3)+ _0x7ddb[2487]+ _0x9494x4[_0x7ddb[85]](_0x9494x3+ 1)),_0x9494x2[mxConstants[_0x7ddb[2484]]]= _0x9494x4)};return _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2488]]= function(_0x9494x2,_0x9494x3){_0x9494x3= _0x9494x3|| this[_0x7ddb[897]]();if(null!= _0x9494x3){this[_0x7ddb[251]][_0x7ddb[473]]();try{for(var _0x9494x4=0;_0x9494x4< _0x9494x3[_0x7ddb[67]];_0x9494x4++){this[_0x7ddb[251]][_0x7ddb[475]](_0x9494x3[_0x9494x4],_0x9494x2)}}finally{this[_0x7ddb[251]][_0x7ddb[476]]()}}};mxGraph[_0x7ddb[202]][_0x7ddb[2489]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x4= _0x9494x4|| this[_0x7ddb[2452]]();this[_0x7ddb[2490]](_0x9494x2,_0x9494x3,[_0x9494x4])};mxGraph[_0x7ddb[202]][_0x7ddb[2490]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x3= null!= _0x9494x3?_0x9494x3:!1;_0x9494x4= _0x9494x4|| this[_0x7ddb[897]]();if(null!= _0x9494x4&& 0< _0x9494x4[_0x7ddb[67]]){var _0x9494x5=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x4[0]),_0x9494x5=null!= _0x9494x5?_0x9494x5[_0x7ddb[124]]:this[_0x7ddb[1705]](_0x9494x4[0]);null!= _0x9494x5&& (_0x9494x3= mxUtils[_0x7ddb[433]](_0x9494x5,_0x9494x2,_0x9494x3)?0:1,this[_0x7ddb[1717]](_0x9494x2,_0x9494x3,_0x9494x4))}};mxGraph[_0x7ddb[202]][_0x7ddb[1717]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x4= _0x9494x4|| this[_0x7ddb[897]]();mxUtils[_0x7ddb[1717]](this[_0x7ddb[251]],_0x9494x4,_0x9494x2,_0x9494x3)};mxGraph[_0x7ddb[202]][_0x7ddb[2491]]= function(_0x9494x2,_0x9494x3,_0x9494x4){this[_0x7ddb[2492]](_0x9494x2,_0x9494x3,null,_0x9494x4)};mxGraph[_0x7ddb[202]][_0x7ddb[2492]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){_0x9494x5= _0x9494x5|| this[_0x7ddb[897]]();if(null!= _0x9494x5&& 0< _0x9494x5[_0x7ddb[67]]){if(null== _0x9494x4){var _0x9494x9=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x5[0]),_0x9494x9=null!= _0x9494x9?_0x9494x9[_0x7ddb[124]]:this[_0x7ddb[1705]](_0x9494x5[0]);null!= _0x9494x9&& (_0x9494x4= (parseInt(_0x9494x9[_0x9494x2]|| 0)& _0x9494x3)!= _0x9494x3)};mxUtils[_0x7ddb[2492]](this[_0x7ddb[251]],_0x9494x5,_0x9494x2,_0x9494x3,_0x9494x4)}};mxGraph[_0x7ddb[202]][_0x7ddb[849]]= function(_0x9494x2,_0x9494x3,_0x9494x4){null== _0x9494x3&& (_0x9494x3= this[_0x7ddb[897]]());if(null!= _0x9494x3&& 1< _0x9494x3[_0x7ddb[67]]){if(null== _0x9494x4){for(var _0x9494x5=0;_0x9494x5< _0x9494x3[_0x7ddb[67]];_0x9494x5++){var _0x9494x9=this[_0x7ddb[1198]](_0x9494x3[_0x9494x5]);if(null!= _0x9494x9&& !this[_0x7ddb[251]][_0x7ddb[250]](_0x9494x3[_0x9494x5])){if(null== _0x9494x4){if(_0x9494x2== mxConstants[_0x7ddb[479]]){_0x9494x4= _0x9494x9[_0x7ddb[235]]+ _0x9494x9[_0x7ddb[117]]/ 2;break}else {if(_0x9494x2== mxConstants[_0x7ddb[480]]){_0x9494x4= _0x9494x9[_0x7ddb[235]]+ _0x9494x9[_0x7ddb[117]]}else {if(_0x9494x2== mxConstants[_0x7ddb[1687]]){_0x9494x4= _0x9494x9[_0x7ddb[236]]}else {if(_0x9494x2== mxConstants[_0x7ddb[481]]){_0x9494x4= _0x9494x9[_0x7ddb[236]]+ _0x9494x9[_0x7ddb[119]]/ 2;break}else {_0x9494x4= _0x9494x2== mxConstants[_0x7ddb[482]]?_0x9494x9[_0x7ddb[236]]+ _0x9494x9[_0x7ddb[119]]:_0x9494x9[_0x7ddb[235]]}}}}}else {_0x9494x4= _0x9494x2== mxConstants[_0x7ddb[480]]?Math[_0x7ddb[160]](_0x9494x4,_0x9494x9[_0x7ddb[235]]+ _0x9494x9[_0x7ddb[117]]):_0x9494x2== mxConstants[_0x7ddb[1687]]?Math[_0x7ddb[243]](_0x9494x4,_0x9494x9[_0x7ddb[236]]):_0x9494x2== mxConstants[_0x7ddb[482]]?Math[_0x7ddb[160]](_0x9494x4,_0x9494x9[_0x7ddb[236]]+ _0x9494x9[_0x7ddb[119]]):Math[_0x7ddb[243]](_0x9494x4,_0x9494x9[_0x7ddb[235]])}}}};if(null!= _0x9494x4){this[_0x7ddb[251]][_0x7ddb[473]]();try{for(_0x9494x5= 0;_0x9494x5< _0x9494x3[_0x7ddb[67]];_0x9494x5++){_0x9494x9= this[_0x7ddb[1198]](_0x9494x3[_0x9494x5]),null!= _0x9494x9&& !this[_0x7ddb[251]][_0x7ddb[250]](_0x9494x3[_0x9494x5])&& (_0x9494x9= _0x9494x9[_0x7ddb[238]](),_0x9494x2== mxConstants[_0x7ddb[479]]?_0x9494x9[_0x7ddb[235]]= _0x9494x4- _0x9494x9[_0x7ddb[117]]/ 2:_0x9494x2== mxConstants[_0x7ddb[480]]?_0x9494x9[_0x7ddb[235]]= _0x9494x4- _0x9494x9[_0x7ddb[117]]:_0x9494x2== mxConstants[_0x7ddb[1687]]?_0x9494x9[_0x7ddb[236]]= _0x9494x4:_0x9494x2== mxConstants[_0x7ddb[481]]?_0x9494x9[_0x7ddb[236]]= _0x9494x4- _0x9494x9[_0x7ddb[119]]/ 2:_0x9494x2== mxConstants[_0x7ddb[482]]?_0x9494x9[_0x7ddb[236]]= _0x9494x4- _0x9494x9[_0x7ddb[119]]:_0x9494x9[_0x7ddb[235]]= _0x9494x4,this[_0x7ddb[251]][_0x7ddb[1724]](_0x9494x3[_0x9494x5],_0x9494x9))};this[_0x7ddb[746]]( new mxEventObject(mxEvent.ALIGN_CELLS,_0x7ddb[611],_0x9494x2,_0x7ddb[895],_0x9494x3))}finally{this[_0x7ddb[251]][_0x7ddb[476]]()}}};return _0x9494x3};mxGraph[_0x7ddb[202]][_0x7ddb[854]]= function(_0x9494x2){if(null!= _0x9494x2&& null!= this[_0x7ddb[2356]]){this[_0x7ddb[251]][_0x7ddb[473]]();try{var _0x9494x3=this[_0x7ddb[251]][_0x7ddb[474]](_0x9494x2);null== _0x9494x3|| 0== _0x9494x3[_0x7ddb[67]]?this[_0x7ddb[251]][_0x7ddb[475]](_0x9494x2,this[_0x7ddb[2356]]):this[_0x7ddb[251]][_0x7ddb[475]](_0x9494x2,null);this[_0x7ddb[1809]](_0x9494x2);this[_0x7ddb[746]]( new mxEventObject(mxEvent.FLIP_EDGE,_0x7ddb[1989],_0x9494x2))}finally{this[_0x7ddb[251]][_0x7ddb[476]]()}};return _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2493]]= function(_0x9494x2){this[_0x7ddb[2336]][_0x7ddb[207]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2494]]= function(_0x9494x2){for(var _0x9494x3=[],_0x9494x4=0;_0x9494x4< this[_0x7ddb[2336]][_0x7ddb[67]];_0x9494x4++){this[_0x7ddb[2336]][_0x9494x4]!= _0x9494x2&& _0x9494x3[_0x7ddb[207]](this[_0x7ddb[2336]][_0x9494x4])};this[_0x7ddb[2336]]= _0x9494x3};mxGraph[_0x7ddb[202]][_0x7ddb[2485]]= function(_0x9494x2){if(null!= _0x9494x2){for(var _0x9494x3=0;_0x9494x3< this[_0x7ddb[2336]][_0x7ddb[67]];_0x9494x3++){var _0x9494x4=this[_0x7ddb[2336]][_0x9494x3][_0x7ddb[1202]](_0x9494x2);if(null!= _0x9494x4){return _0x9494x4}}};return null};mxGraph[_0x7ddb[202]][_0x7ddb[840]]= function(_0x9494x2,_0x9494x3){null== _0x9494x3&& (_0x9494x3= mxUtils[_0x7ddb[1779]](this[_0x7ddb[897]](),!0));this[_0x7ddb[251]][_0x7ddb[473]]();try{this[_0x7ddb[841]](_0x9494x3,_0x9494x2),this[_0x7ddb[746]]( new mxEventObject(mxEvent.ORDER_CELLS,_0x7ddb[2495],_0x9494x2,_0x7ddb[895],_0x9494x3))}finally{this[_0x7ddb[251]][_0x7ddb[476]]()};return _0x9494x3};mxGraph[_0x7ddb[202]][_0x7ddb[841]]= function(_0x9494x2,_0x9494x3){if(null!= _0x9494x2){this[_0x7ddb[251]][_0x7ddb[473]]();try{for(var _0x9494x4=0;_0x9494x4< _0x9494x2[_0x7ddb[67]];_0x9494x4++){var _0x9494x5=this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x2[_0x9494x4]);_0x9494x3?this[_0x7ddb[251]][_0x7ddb[99]](_0x9494x5,_0x9494x2[_0x9494x4],_0x9494x4):this[_0x7ddb[251]][_0x7ddb[99]](_0x9494x5,_0x9494x2[_0x9494x4],this[_0x7ddb[251]][_0x7ddb[262]](_0x9494x5)- 1)};this[_0x7ddb[746]]( new mxEventObject(mxEvent.CELLS_ORDERED,_0x7ddb[2495],_0x9494x3,_0x7ddb[895],_0x9494x2))}finally{this[_0x7ddb[251]][_0x7ddb[476]]()}}};mxGraph[_0x7ddb[202]][_0x7ddb[844]]= function(_0x9494x2,_0x9494x3,_0x9494x4){null== _0x9494x4&& (_0x9494x4= mxUtils[_0x7ddb[1779]](this[_0x7ddb[897]](),!0));_0x9494x4= this[_0x7ddb[2496]](_0x9494x4);null== _0x9494x2&& (_0x9494x2= this[_0x7ddb[2497]](_0x9494x4));var _0x9494x5=this[_0x7ddb[2498]](_0x9494x2,_0x9494x4,_0x9494x3);if(0< _0x9494x4[_0x7ddb[67]]&& null!= _0x9494x5){var _0x9494x9=this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x2);null== _0x9494x9&& (_0x9494x9= this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x4[0]));this[_0x7ddb[251]][_0x7ddb[473]]();try{null== this[_0x7ddb[1198]](_0x9494x2)&& this[_0x7ddb[251]][_0x7ddb[1724]](_0x9494x2, new mxGeometry);var _0x9494xa=this[_0x7ddb[251]][_0x7ddb[262]](_0x9494x9);this[_0x7ddb[833]]([_0x9494x2],_0x9494x9,_0x9494xa,null,null,!1);_0x9494xa= this[_0x7ddb[251]][_0x7ddb[262]](_0x9494x2);this[_0x7ddb[833]](_0x9494x4,_0x9494x2,_0x9494xa,null,null,!1,!1);this[_0x7ddb[835]](_0x9494x4,-_0x9494x5[_0x7ddb[235]],-_0x9494x5[_0x7ddb[236]],!1,!0);this[_0x7ddb[837]]([_0x9494x2],[_0x9494x5]);this[_0x7ddb[746]]( new mxEventObject(mxEvent.GROUP_CELLS,_0x7ddb[1504],_0x9494x2,_0x7ddb[467],_0x9494x3,_0x7ddb[895],_0x9494x4))}finally{this[_0x7ddb[251]][_0x7ddb[476]]()}};return _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2496]]= function(_0x9494x2){var _0x9494x3=[];if(null!= _0x9494x2&& 0< _0x9494x2[_0x7ddb[67]]){var _0x9494x4=this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x2[0]);_0x9494x3[_0x7ddb[207]](_0x9494x2[0]);for(var _0x9494x5=1;_0x9494x5< _0x9494x2[_0x7ddb[67]];_0x9494x5++){this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x2[_0x9494x5])== _0x9494x4&& _0x9494x3[_0x7ddb[207]](_0x9494x2[_0x9494x5])}};return _0x9494x3};mxGraph[_0x7ddb[202]][_0x7ddb[2498]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x3= this[_0x7ddb[1729]](_0x9494x3);null!= _0x9494x3&& (this[_0x7ddb[1730]](_0x9494x2)&& (_0x9494x2= this[_0x7ddb[1731]](_0x9494x2),_0x9494x3[_0x7ddb[235]]-= _0x9494x2[_0x7ddb[117]],_0x9494x3[_0x7ddb[236]]-= _0x9494x2[_0x7ddb[119]],_0x9494x3[_0x7ddb[117]]+= _0x9494x2[_0x7ddb[117]],_0x9494x3[_0x7ddb[119]]+= _0x9494x2[_0x7ddb[119]]),_0x9494x3[_0x7ddb[235]]-= _0x9494x4,_0x9494x3[_0x7ddb[236]]-= _0x9494x4,_0x9494x3[_0x7ddb[117]]+= 2* _0x9494x4,_0x9494x3[_0x7ddb[119]]+= 2* _0x9494x4);return _0x9494x3};mxGraph[_0x7ddb[202]][_0x7ddb[2497]]= function(_0x9494x2){_0x9494x2= new mxCell(_0x7ddb[110]);_0x9494x2[_0x7ddb[1993]](!0);_0x9494x2[_0x7ddb[1995]](!1);return _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[845]]= function(_0x9494x2){var _0x9494x3=[];if(null== _0x9494x2){_0x9494x2= this[_0x7ddb[897]]();for(var _0x9494x4=[],_0x9494x5=0;_0x9494x5< _0x9494x2[_0x7ddb[67]];_0x9494x5++){0< this[_0x7ddb[251]][_0x7ddb[262]](_0x9494x2[_0x9494x5])&& _0x9494x4[_0x7ddb[207]](_0x9494x2[_0x9494x5])};_0x9494x2= _0x9494x4};if(null!= _0x9494x2&& 0< _0x9494x2[_0x7ddb[67]]){this[_0x7ddb[251]][_0x7ddb[473]]();try{for(_0x9494x5= 0;_0x9494x5< _0x9494x2[_0x7ddb[67]];_0x9494x5++){var _0x9494x9=this[_0x7ddb[251]][_0x7ddb[1953]](_0x9494x2[_0x9494x5]);if(null!= _0x9494x9&& 0< _0x9494x9[_0x7ddb[67]]){var _0x9494x9=_0x9494x9[_0x7ddb[1853]](),_0x9494xa=this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x2[_0x9494x5]),_0x9494x12=this[_0x7ddb[251]][_0x7ddb[262]](_0x9494xa);this[_0x7ddb[833]](_0x9494x9,_0x9494xa,_0x9494x12,null,null,!0);_0x9494x3= _0x9494x3[_0x7ddb[1919]](_0x9494x9)}};this[_0x7ddb[843]](this[_0x7ddb[2499]](_0x9494x2));this[_0x7ddb[746]]( new mxEventObject(mxEvent.UNGROUP_CELLS,_0x7ddb[895],_0x9494x2))}finally{this[_0x7ddb[251]][_0x7ddb[476]]()}};return _0x9494x3};mxGraph[_0x7ddb[202]][_0x7ddb[846]]= function(_0x9494x2){null== _0x9494x2&& (_0x9494x2= this[_0x7ddb[897]]());this[_0x7ddb[251]][_0x7ddb[473]]();try{var _0x9494x3=this[_0x7ddb[902]](),_0x9494x4=this[_0x7ddb[251]][_0x7ddb[262]](_0x9494x3);this[_0x7ddb[833]](_0x9494x2,_0x9494x3,_0x9494x4,null,null,!0);this[_0x7ddb[746]]( new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,_0x7ddb[895],_0x9494x2))}finally{this[_0x7ddb[251]][_0x7ddb[476]]()};return _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[1917]]= function(_0x9494x2,_0x9494x3,_0x9494x4){null== _0x9494x2&& (_0x9494x2= this[_0x7ddb[897]]());_0x9494x3= null!= _0x9494x3?_0x9494x3:0;_0x9494x4= null!= _0x9494x4?_0x9494x4:!1;this[_0x7ddb[251]][_0x7ddb[473]]();try{for(var _0x9494x5=0;_0x9494x5< _0x9494x2[_0x7ddb[67]];_0x9494x5++){var _0x9494x9=this[_0x7ddb[1198]](_0x9494x2[_0x9494x5]);if(null!= _0x9494x9){var _0x9494xa=this[_0x7ddb[1955]](_0x9494x2[_0x9494x5]);if(null!= _0x9494xa&& 0< _0x9494xa[_0x7ddb[67]]){var _0x9494x12=this[_0x7ddb[1729]](_0x9494xa);if(0< _0x9494x12[_0x7ddb[117]]&& 0< _0x9494x12[_0x7ddb[119]]){var _0x9494x13=this[_0x7ddb[1730]](_0x9494x2[_0x9494x5])?this[_0x7ddb[1731]](_0x9494x2[_0x9494x5]): new mxRectangle,_0x9494x9=_0x9494x9[_0x7ddb[238]]();_0x9494x4&& (_0x9494x9[_0x7ddb[235]]+= _0x9494x12[_0x7ddb[235]]- _0x9494x13[_0x7ddb[117]]- _0x9494x3,_0x9494x9[_0x7ddb[236]]+= _0x9494x12[_0x7ddb[236]]- _0x9494x13[_0x7ddb[119]]- _0x9494x3);_0x9494x9[_0x7ddb[117]]= _0x9494x12[_0x7ddb[117]]+ _0x9494x13[_0x7ddb[117]]+ 2* _0x9494x3;_0x9494x9[_0x7ddb[119]]= _0x9494x12[_0x7ddb[119]]+ _0x9494x13[_0x7ddb[119]]+ 2* _0x9494x3;this[_0x7ddb[251]][_0x7ddb[1724]](_0x9494x2[_0x9494x5],_0x9494x9);this[_0x7ddb[834]](_0x9494xa,-_0x9494x12[_0x7ddb[235]]+ _0x9494x13[_0x7ddb[117]] + _0x9494x3,-_0x9494x12[_0x7ddb[236]]+ _0x9494x13[_0x7ddb[119]] + _0x9494x3)}}}}}finally{this[_0x7ddb[251]][_0x7ddb[476]]()};return _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[899]]= function(_0x9494x2,_0x9494x3){_0x9494x3= null!= _0x9494x3?_0x9494x3:!0;var _0x9494x4=null;if(null!= _0x9494x2){for(var _0x9494x5={},_0x9494x4=[],_0x9494x9=0;_0x9494x9< _0x9494x2[_0x7ddb[67]];_0x9494x9++){var _0x9494xa=mxCellPath[_0x7ddb[385]](_0x9494x2[_0x9494x9]);_0x9494x5[_0x9494xa]= _0x9494x2[_0x9494x9];_0x9494x4[_0x7ddb[207]](_0x9494x2[_0x9494x9])};if(0< _0x9494x4[_0x7ddb[67]]){for(var _0x9494xa=this[_0x7ddb[441]][_0x7ddb[255]],_0x9494x12=this[_0x7ddb[441]][_0x7ddb[513]],_0x9494x4=this[_0x7ddb[251]][_0x7ddb[899]](_0x9494x2,!0),_0x9494x9=0;_0x9494x9< _0x9494x2[_0x7ddb[67]];_0x9494x9++){if(!_0x9494x3&& this[_0x7ddb[251]][_0x7ddb[250]](_0x9494x4[_0x9494x9]) && null!= this[_0x7ddb[2500]](_0x9494x4[_0x9494x9],this[_0x7ddb[251]][_0x7ddb[1709]](_0x9494x4[_0x9494x9],!0),this[_0x7ddb[251]][_0x7ddb[1709]](_0x9494x4[_0x9494x9],!1))){_0x9494x4[_0x9494x9]= null}else {var _0x9494x13=this[_0x7ddb[251]][_0x7ddb[1721]](_0x9494x4[_0x9494x9]);if(null!= _0x9494x13){var _0x9494x14=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x2[_0x9494x9]),_0x9494x15=this[_0x7ddb[441]][_0x7ddb[248]](this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x2[_0x9494x9]));if(null!= _0x9494x14&& null!= _0x9494x15){var _0x9494x16=_0x9494x15[_0x7ddb[2078]][_0x7ddb[235]],_0x9494x15=_0x9494x15[_0x7ddb[2078]][_0x7ddb[236]];if(this[_0x7ddb[251]][_0x7ddb[250]](_0x9494x4[_0x9494x9])){for(var _0x9494x14=_0x9494x14[_0x7ddb[439]],_0x9494x17=this[_0x7ddb[251]][_0x7ddb[1709]](_0x9494x2[_0x9494x9],!0),_0x9494x18=mxCellPath[_0x7ddb[385]](_0x9494x17);null!= _0x9494x17&& null== _0x9494x5[_0x9494x18];){_0x9494x17= this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x17),_0x9494x18= mxCellPath[_0x7ddb[385]](_0x9494x17)};null== _0x9494x17&& _0x9494x13[_0x7ddb[2007]]( new mxPoint(_0x9494x14[0][_0x7ddb[235]]/ _0x9494xa- _0x9494x12[_0x7ddb[235]],_0x9494x14[0][_0x7ddb[236]]/ _0x9494xa- _0x9494x12[_0x7ddb[236]]),!0);_0x9494x17= this[_0x7ddb[251]][_0x7ddb[1709]](_0x9494x2[_0x9494x9],!1);for(_0x9494x18= mxCellPath[_0x7ddb[385]](_0x9494x17);null!= _0x9494x17&& null== _0x9494x5[_0x9494x18];){_0x9494x17= this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x17),_0x9494x18= mxCellPath[_0x7ddb[385]](_0x9494x17)};null== _0x9494x17&& (_0x9494x17= _0x9494x14[_0x7ddb[67]]- 1,_0x9494x13[_0x7ddb[2007]]( new mxPoint(_0x9494x14[_0x9494x17][_0x7ddb[235]]/ _0x9494xa- _0x9494x12[_0x7ddb[235]],_0x9494x14[_0x9494x17][_0x7ddb[236]]/ _0x9494xa- _0x9494x12[_0x7ddb[236]]),!1));_0x9494x13= _0x9494x13[_0x7ddb[1525]];if(null!= _0x9494x13){for(_0x9494x14= 0;_0x9494x14< _0x9494x13[_0x7ddb[67]];_0x9494x14++){_0x9494x13[_0x9494x14][_0x7ddb[235]]+= _0x9494x16,_0x9494x13[_0x9494x14][_0x7ddb[236]]+= _0x9494x15}}}else {_0x9494x13[_0x7ddb[235]]+= _0x9494x16,_0x9494x13[_0x7ddb[236]]+= _0x9494x15}}}}}}else {_0x9494x4= []}};return _0x9494x4};mxGraph[_0x7ddb[202]][_0x7ddb[2501]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13,_0x9494x14){_0x9494x3= this[_0x7ddb[2502]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13,_0x9494x14);return this[_0x7ddb[2103]](_0x9494x3,_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2502]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13,_0x9494x14){_0x9494x2= new mxGeometry(_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12);_0x9494x2[_0x7ddb[1500]]= null!= _0x9494x14?_0x9494x14:!1;_0x9494x4= new mxCell(_0x9494x4,_0x9494x2,_0x9494x13);_0x9494x4[_0x7ddb[1945]](_0x9494x3);_0x9494x4[_0x7ddb[1993]](!0);_0x9494x4[_0x7ddb[1995]](!0);return _0x9494x4};mxGraph[_0x7ddb[202]][_0x7ddb[1960]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){_0x9494x3= this[_0x7ddb[2503]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa);return this[_0x7ddb[2504]](_0x9494x3,_0x9494x2,_0x9494x5,_0x9494x9)};mxGraph[_0x7ddb[202]][_0x7ddb[2503]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){_0x9494x2= new mxCell(_0x9494x4, new mxGeometry,_0x9494xa);_0x9494x2[_0x7ddb[1945]](_0x9494x3);_0x9494x2[_0x7ddb[1994]](!0);_0x9494x2[_0x7ddb[256]][_0x7ddb[1500]]= !0;return _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2504]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){return this[_0x7ddb[2103]](_0x9494x2,_0x9494x3,_0x9494x9,_0x9494x4,_0x9494x5)};mxGraph[_0x7ddb[202]][_0x7ddb[2103]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){return this[_0x7ddb[832]]([_0x9494x2],_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9)[0]};mxGraph[_0x7ddb[202]][_0x7ddb[832]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){null== _0x9494x3&& (_0x9494x3= this[_0x7ddb[902]]());null== _0x9494x4&& (_0x9494x4= this[_0x7ddb[251]][_0x7ddb[262]](_0x9494x3));this[_0x7ddb[251]][_0x7ddb[473]]();try{this[_0x7ddb[833]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,!1,!0),this[_0x7ddb[746]]( new mxEventObject(mxEvent.ADD_CELLS,_0x7ddb[895],_0x9494x2,_0x7ddb[1101],_0x9494x3,_0x7ddb[1983],_0x9494x4,_0x7ddb[1097],_0x9494x5,_0x7ddb[772],_0x9494x9))}finally{this[_0x7ddb[251]][_0x7ddb[476]]()};return _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[833]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12){if(null!= _0x9494x2&& null!= _0x9494x3&& null!= _0x9494x4){this[_0x7ddb[251]][_0x7ddb[473]]();try{for(var _0x9494x13=_0x9494xa?this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x3):null,_0x9494x14=null!= _0x9494x13?_0x9494x13[_0x7ddb[2078]]:null,_0x9494x15= new mxPoint(0,0),_0x9494x13=0;_0x9494x13< _0x9494x2[_0x7ddb[67]];_0x9494x13++){if(null== _0x9494x2[_0x9494x13]){_0x9494x4--}else {var _0x9494x16=this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x2[_0x9494x13]);if(null!= _0x9494x14&& _0x9494x2[_0x9494x13]!= _0x9494x3&& _0x9494x3!= _0x9494x16){var _0x9494x17=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x16),_0x9494x18=null!= _0x9494x17?_0x9494x17[_0x7ddb[2078]]:_0x9494x15,_0x9494x19=this[_0x7ddb[251]][_0x7ddb[1721]](_0x9494x2[_0x9494x13]);if(null!= _0x9494x19){var _0x9494x1a=_0x9494x18[_0x7ddb[235]]- _0x9494x14[_0x7ddb[235]],_0x9494x1b=_0x9494x18[_0x7ddb[236]]- _0x9494x14[_0x7ddb[236]],_0x9494x19=_0x9494x19[_0x7ddb[238]]();_0x9494x19[_0x7ddb[513]](_0x9494x1a,_0x9494x1b);!_0x9494x19[_0x7ddb[1500]]&& (this[_0x7ddb[251]][_0x7ddb[1193]](_0x9494x2[_0x9494x13])&& !this[_0x7ddb[2505]]()) && (_0x9494x19[_0x7ddb[235]]= Math[_0x7ddb[160]](0,_0x9494x19[_0x7ddb[235]]),_0x9494x19[_0x7ddb[236]]= Math[_0x7ddb[160]](0,_0x9494x19[_0x7ddb[236]]));this[_0x7ddb[251]][_0x7ddb[1724]](_0x9494x2[_0x9494x13],_0x9494x19)}};_0x9494x3== _0x9494x16&& _0x9494x4+ _0x9494x13> this[_0x7ddb[251]][_0x7ddb[262]](_0x9494x3)&& _0x9494x4--;this[_0x7ddb[251]][_0x7ddb[99]](_0x9494x3,_0x9494x2[_0x9494x13],_0x9494x4+ _0x9494x13);this[_0x7ddb[2506]]()&& this[_0x7ddb[2507]](_0x9494x2[_0x9494x13])&& this[_0x7ddb[2508]](_0x9494x2[_0x9494x13]);(null== _0x9494x12|| _0x9494x12)&& this[_0x7ddb[2509]](_0x9494x2[_0x9494x13]);null!= _0x9494x5&& this[_0x7ddb[852]](_0x9494x2[_0x9494x13],_0x9494x5,!0);null!= _0x9494x9&& this[_0x7ddb[852]](_0x9494x2[_0x9494x13],_0x9494x9,!1)}};this[_0x7ddb[746]]( new mxEventObject(mxEvent.CELLS_ADDED,_0x7ddb[895],_0x9494x2,_0x7ddb[1101],_0x9494x3,_0x7ddb[1983],_0x9494x4,_0x7ddb[1097],_0x9494x5,_0x7ddb[772],_0x9494x9,_0x7ddb[492],_0x9494xa))}finally{this[_0x7ddb[251]][_0x7ddb[476]]()}}};mxGraph[_0x7ddb[202]][_0x7ddb[842]]= function(_0x9494x2,_0x9494x3){_0x9494x3= null!= _0x9494x3?_0x9494x3:!0;null== _0x9494x2&& (_0x9494x2= this[_0x7ddb[2510]](this[_0x7ddb[897]]()));_0x9494x3&& (_0x9494x2= this[_0x7ddb[2510]](this[_0x7ddb[2499]](_0x9494x2)));this[_0x7ddb[251]][_0x7ddb[473]]();try{this[_0x7ddb[843]](_0x9494x2),this[_0x7ddb[746]]( new mxEventObject(mxEvent.REMOVE_CELLS,_0x7ddb[895],_0x9494x2,_0x7ddb[2511],_0x9494x3))}finally{this[_0x7ddb[251]][_0x7ddb[476]]()};return _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[843]]= function(_0x9494x2){if(null!= _0x9494x2&& 0< _0x9494x2[_0x7ddb[67]]){var _0x9494x3=this[_0x7ddb[441]][_0x7ddb[255]],_0x9494x4=this[_0x7ddb[441]][_0x7ddb[513]];this[_0x7ddb[251]][_0x7ddb[473]]();try{for(var _0x9494x5={},_0x9494x9=0;_0x9494x9< _0x9494x2[_0x7ddb[67]];_0x9494x9++){var _0x9494xa=mxCellPath[_0x7ddb[385]](_0x9494x2[_0x9494x9]);_0x9494x5[_0x9494xa]= _0x9494x2[_0x9494x9]};for(_0x9494x9= 0;_0x9494x9< _0x9494x2[_0x7ddb[67]];_0x9494x9++){for(var _0x9494x12=this[_0x7ddb[1756]](_0x9494x2[_0x9494x9]),_0x9494x13=0;_0x9494x13< _0x9494x12[_0x7ddb[67]];_0x9494x13++){if(_0x9494xa= mxCellPath[_0x7ddb[385]](_0x9494x12[_0x9494x13]),null== _0x9494x5[_0x9494xa]){var _0x9494x14=this[_0x7ddb[251]][_0x7ddb[1721]](_0x9494x12[_0x9494x13]);if(null!= _0x9494x14){var _0x9494x15=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x12[_0x9494x13]);if(null!= _0x9494x15){var _0x9494x14=_0x9494x14[_0x7ddb[238]](),_0x9494x16=_0x9494x15[_0x7ddb[1710]](!0) == _0x9494x2[_0x9494x9],_0x9494x17=_0x9494x15[_0x7ddb[439]],_0x9494x18=_0x9494x16?0:_0x9494x17[_0x7ddb[67]]- 1;_0x9494x14[_0x7ddb[2007]]( new mxPoint(_0x9494x17[_0x9494x18][_0x7ddb[235]]/ _0x9494x3- _0x9494x4[_0x7ddb[235]],_0x9494x17[_0x9494x18][_0x7ddb[236]]/ _0x9494x3- _0x9494x4[_0x7ddb[236]]),_0x9494x16);this[_0x7ddb[251]][_0x7ddb[1957]](_0x9494x12[_0x9494x13],null,_0x9494x16);this[_0x7ddb[251]][_0x7ddb[1724]](_0x9494x12[_0x9494x13],_0x9494x14)}}}};this[_0x7ddb[251]][_0x7ddb[205]](_0x9494x2[_0x9494x9])};this[_0x7ddb[746]]( new mxEventObject(mxEvent.CELLS_REMOVED,_0x7ddb[895],_0x9494x2))}finally{this[_0x7ddb[251]][_0x7ddb[476]]()}}};mxGraph[_0x7ddb[202]][_0x7ddb[853]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x9494x5= _0x9494x5|| 0;_0x9494x9= _0x9494x9|| 0;null== _0x9494x4&& (_0x9494x4= this[_0x7ddb[899]]([_0x9494x2])[0]);var _0x9494xa=this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x2),_0x9494x12=this[_0x7ddb[251]][_0x7ddb[1709]](_0x9494x2,!0);this[_0x7ddb[251]][_0x7ddb[473]]();try{this[_0x7ddb[835]](_0x9494x3,_0x9494x5,_0x9494x9,!1,!1),this[_0x7ddb[833]](_0x9494x3,_0x9494xa,this[_0x7ddb[251]][_0x7ddb[262]](_0x9494xa),null,null,!0),this[_0x7ddb[833]]([_0x9494x4],_0x9494xa,this[_0x7ddb[251]][_0x7ddb[262]](_0x9494xa),_0x9494x12,_0x9494x3[0],!1),this[_0x7ddb[852]](_0x9494x2,_0x9494x3[0],!0),this[_0x7ddb[746]]( new mxEventObject(mxEvent.SPLIT_EDGE,_0x7ddb[1989],_0x9494x2,_0x7ddb[895],_0x9494x3,_0x7ddb[2512],_0x9494x4,_0x7ddb[1126],_0x9494x5,_0x7ddb[1125],_0x9494x9))}finally{this[_0x7ddb[251]][_0x7ddb[476]]()};return _0x9494x4};mxGraph[_0x7ddb[202]][_0x7ddb[838]]= function(_0x9494x2,_0x9494x3,_0x9494x4){null== _0x9494x3&& (_0x9494x3= this[_0x7ddb[897]]());_0x9494x4&& (_0x9494x3= this[_0x7ddb[2499]](_0x9494x3));this[_0x7ddb[251]][_0x7ddb[473]]();try{this[_0x7ddb[839]](_0x9494x3,_0x9494x2),this[_0x7ddb[746]]( new mxEventObject(mxEvent.TOGGLE_CELLS,_0x7ddb[539],_0x9494x2,_0x7ddb[895],_0x9494x3,_0x7ddb[2511],_0x9494x4))}finally{this[_0x7ddb[251]][_0x7ddb[476]]()};return _0x9494x3};mxGraph[_0x7ddb[202]][_0x7ddb[839]]= function(_0x9494x2,_0x9494x3){if(null!= _0x9494x2&& 0< _0x9494x2[_0x7ddb[67]]){this[_0x7ddb[251]][_0x7ddb[473]]();try{for(var _0x9494x4=0;_0x9494x4< _0x9494x2[_0x7ddb[67]];_0x9494x4++){this[_0x7ddb[251]][_0x7ddb[175]](_0x9494x2[_0x9494x4],_0x9494x3)}}finally{this[_0x7ddb[251]][_0x7ddb[476]]()}}};mxGraph[_0x7ddb[202]][_0x7ddb[847]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){_0x9494x3= null!= _0x9494x3?_0x9494x3:!1;null== _0x9494x4&& (_0x9494x4= this[_0x7ddb[2513]](this[_0x7ddb[897]](),_0x9494x2));this[_0x7ddb[2126]](!1);this[_0x7ddb[251]][_0x7ddb[473]]();try{this[_0x7ddb[848]](_0x9494x4,_0x9494x2,_0x9494x3,_0x9494x5),this[_0x7ddb[746]]( new mxEventObject(mxEvent.FOLD_CELLS,_0x7ddb[2514],_0x9494x2,_0x7ddb[2515],_0x9494x3,_0x7ddb[895],_0x9494x4))}finally{this[_0x7ddb[251]][_0x7ddb[476]]()};return _0x9494x4};mxGraph[_0x7ddb[202]][_0x7ddb[848]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){if(null!= _0x9494x2&& 0< _0x9494x2[_0x7ddb[67]]){this[_0x7ddb[251]][_0x7ddb[473]]();try{for(var _0x9494x9=0;_0x9494x9< _0x9494x2[_0x7ddb[67]];_0x9494x9++){if((!_0x9494x5|| this[_0x7ddb[2516]](_0x9494x2[_0x9494x9],_0x9494x3)) && _0x9494x3!= this[_0x7ddb[1742]](_0x9494x2[_0x9494x9])){if(this[_0x7ddb[251]][_0x7ddb[1972]](_0x9494x2[_0x9494x9],_0x9494x3),this[_0x7ddb[2517]](_0x9494x2[_0x9494x9],_0x9494x3),this[_0x7ddb[2507]](_0x9494x2[_0x9494x9])&& this[_0x7ddb[2508]](_0x9494x2[_0x9494x9]),_0x9494x4){var _0x9494xa=this[_0x7ddb[251]][_0x7ddb[1953]](_0x9494x2[_0x9494x9]);this[_0x7ddb[847]](_0x9494xa,_0x9494x3,_0x9494x4)}}};this[_0x7ddb[746]]( new mxEventObject(mxEvent.CELLS_FOLDED,_0x7ddb[895],_0x9494x2,_0x7ddb[2514],_0x9494x3,_0x7ddb[2515],_0x9494x4))}finally{this[_0x7ddb[251]][_0x7ddb[476]]()}}};mxGraph[_0x7ddb[202]][_0x7ddb[2517]]= function(_0x9494x2,_0x9494x3){if(null!= _0x9494x2){var _0x9494x4=this[_0x7ddb[251]][_0x7ddb[1721]](_0x9494x2);null!= _0x9494x4&& (_0x9494x4= _0x9494x4[_0x7ddb[238]](),this[_0x7ddb[2518]](_0x9494x2,_0x9494x4,_0x9494x3),_0x9494x4[_0x7ddb[2005]](),this[_0x7ddb[251]][_0x7ddb[1724]](_0x9494x2,_0x9494x4))}};mxGraph[_0x7ddb[202]][_0x7ddb[2518]]= function(_0x9494x2,_0x9494x3,_0x9494x4){if(null!= _0x9494x2&& null!= _0x9494x3){_0x9494x4= this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x2);_0x9494x4= null!= _0x9494x4?_0x9494x4[_0x7ddb[124]]:this[_0x7ddb[1705]](_0x9494x2);if(null== _0x9494x3[_0x7ddb[2002]]){var _0x9494x5=_0x9494x3;this[_0x7ddb[2394]]&& (_0x9494x2= this[_0x7ddb[2519]](_0x9494x2),null!= _0x9494x2&& (_0x9494x5= _0x9494x2,_0x9494x2= mxUtils[_0x7ddb[433]](_0x9494x4,mxConstants.STYLE_STARTSIZE),0< _0x9494x2&& (_0x9494x5[_0x7ddb[119]]= Math[_0x7ddb[160]](_0x9494x5[_0x7ddb[119]],_0x9494x2))));_0x9494x3[_0x7ddb[2002]]= new mxRectangle(0,0,_0x9494x5[_0x7ddb[117]],_0x9494x5[_0x7ddb[119]])};if(null!= _0x9494x3[_0x7ddb[2002]]){_0x9494x3[_0x7ddb[2002]][_0x7ddb[235]]= _0x9494x3[_0x7ddb[235]];_0x9494x3[_0x7ddb[2002]][_0x7ddb[236]]= _0x9494x3[_0x7ddb[236]];var _0x9494x9=mxUtils[_0x7ddb[431]](_0x9494x4[mxConstants[_0x7ddb[2278]]]|| _0x7ddb[468]);0!= _0x9494x9&& (_0x9494x2= _0x9494x3[_0x7ddb[2002]][_0x7ddb[241]]()- _0x9494x3[_0x7ddb[241]](),_0x9494x4= _0x9494x3[_0x7ddb[2002]][_0x7ddb[242]]()- _0x9494x3[_0x7ddb[242]](),_0x9494x5= Math[_0x7ddb[426]](_0x9494x9),_0x9494x9= Math[_0x7ddb[427]](_0x9494x9),_0x9494x3[_0x7ddb[2002]][_0x7ddb[235]]+= _0x9494x5* _0x9494x2- _0x9494x9* _0x9494x4- _0x9494x2,_0x9494x3[_0x7ddb[2002]][_0x7ddb[236]]+= _0x9494x9* _0x9494x2+ _0x9494x5* _0x9494x4- _0x9494x4)}}};mxGraph[_0x7ddb[202]][_0x7ddb[2499]]= function(_0x9494x2){var _0x9494x3=_0x9494x2[_0x7ddb[1853]]();return _0x9494x3= _0x9494x3[_0x7ddb[1919]](this[_0x7ddb[2520]](_0x9494x2))};mxGraph[_0x7ddb[202]][_0x7ddb[2520]]= function(_0x9494x2){var _0x9494x3=[];if(null!= _0x9494x2){for(var _0x9494x4=0;_0x9494x4< _0x9494x2[_0x7ddb[67]];_0x9494x4++){for(var _0x9494x5=this[_0x7ddb[251]][_0x7ddb[1707]](_0x9494x2[_0x9494x4]),_0x9494x9=0;_0x9494x9< _0x9494x5;_0x9494x9++){_0x9494x3[_0x7ddb[207]](this[_0x7ddb[251]][_0x7ddb[1708]](_0x9494x2[_0x9494x4],_0x9494x9))};_0x9494x5= this[_0x7ddb[251]][_0x7ddb[1953]](_0x9494x2[_0x9494x4]);_0x9494x3= _0x9494x3[_0x7ddb[1919]](this[_0x7ddb[2520]](_0x9494x5))}};return _0x9494x3};mxGraph[_0x7ddb[202]][_0x7ddb[858]]= function(_0x9494x2,_0x9494x3){_0x9494x3= null!= _0x9494x3?_0x9494x3:!1;this[_0x7ddb[251]][_0x7ddb[473]]();try{this[_0x7ddb[2457]](_0x9494x2,_0x9494x3),this[_0x7ddb[746]]( new mxEventObject(mxEvent.UPDATE_CELL_SIZE,_0x7ddb[246],_0x9494x2,_0x7ddb[2521],_0x9494x3))}finally{this[_0x7ddb[251]][_0x7ddb[476]]()};return _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2457]]= function(_0x9494x2,_0x9494x3){if(null!= _0x9494x2){this[_0x7ddb[251]][_0x7ddb[473]]();try{var _0x9494x4=this[_0x7ddb[2519]](_0x9494x2),_0x9494x5=this[_0x7ddb[251]][_0x7ddb[1721]](_0x9494x2);if(null!= _0x9494x4&& null!= _0x9494x5){var _0x9494x9=this[_0x7ddb[1742]](_0x9494x2),_0x9494x5=_0x9494x5[_0x7ddb[238]]();if(this[_0x7ddb[1730]](_0x9494x2)){var _0x9494xa=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x2),_0x9494x12=null!= _0x9494xa?_0x9494xa[_0x7ddb[124]]:this[_0x7ddb[1705]](_0x9494x2),_0x9494x13=this[_0x7ddb[251]][_0x7ddb[474]](_0x9494x2);null== _0x9494x13&& (_0x9494x13= _0x7ddb[110]);mxUtils[_0x7ddb[433]](_0x9494x12,mxConstants.STYLE_HORIZONTAL,!0)?(_0x9494x13= mxUtils[_0x7ddb[475]](_0x9494x13,mxConstants.STYLE_STARTSIZE,_0x9494x4[_0x7ddb[119]]+ 8),_0x9494x9&& (_0x9494x5[_0x7ddb[119]]= _0x9494x4[_0x7ddb[119]]+ 8),_0x9494x5[_0x7ddb[117]]= _0x9494x4[_0x7ddb[117]]):(_0x9494x13= mxUtils[_0x7ddb[475]](_0x9494x13,mxConstants.STYLE_STARTSIZE,_0x9494x4[_0x7ddb[117]]+ 8),_0x9494x9&& (_0x9494x5[_0x7ddb[117]]= _0x9494x4[_0x7ddb[117]]+ 8),_0x9494x5[_0x7ddb[119]]= _0x9494x4[_0x7ddb[119]]);this[_0x7ddb[251]][_0x7ddb[475]](_0x9494x2,_0x9494x13)}else {_0x9494x5[_0x7ddb[117]]= _0x9494x4[_0x7ddb[117]],_0x9494x5[_0x7ddb[119]]= _0x9494x4[_0x7ddb[119]]};if(!_0x9494x3&& !_0x9494x9){var _0x9494x14=this[_0x7ddb[441]][_0x7ddb[1799]](this[_0x7ddb[251]][_0x7ddb[1953]](_0x9494x2));if(null!= _0x9494x14){var _0x9494x15=this[_0x7ddb[441]][_0x7ddb[513]],_0x9494x16=this[_0x7ddb[441]][_0x7ddb[255]],_0x9494x17=(_0x9494x14[_0x7ddb[236]]+ _0x9494x14[_0x7ddb[119]])/ _0x9494x16- _0x9494x5[_0x7ddb[236]]- _0x9494x15[_0x7ddb[236]];_0x9494x5[_0x7ddb[117]]= Math[_0x7ddb[160]](_0x9494x5[_0x7ddb[117]],(_0x9494x14[_0x7ddb[235]]+ _0x9494x14[_0x7ddb[117]])/ _0x9494x16- _0x9494x5[_0x7ddb[235]]- _0x9494x15[_0x7ddb[235]]);_0x9494x5[_0x7ddb[119]]= Math[_0x7ddb[160]](_0x9494x5[_0x7ddb[119]],_0x9494x17)}};this[_0x7ddb[837]]([_0x9494x2],[_0x9494x5])}}finally{this[_0x7ddb[251]][_0x7ddb[476]]()}}};mxGraph[_0x7ddb[202]][_0x7ddb[2519]]= function(_0x9494x2){var _0x9494x3=null;if(null!= _0x9494x2){var _0x9494x4=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x2),_0x9494x5=null!= _0x9494x4?_0x9494x4[_0x7ddb[124]]:this[_0x7ddb[1705]](_0x9494x2);if(null!= _0x9494x5&& !this[_0x7ddb[251]][_0x7ddb[250]](_0x9494x2)){var _0x9494x9=_0x9494x5[mxConstants[_0x7ddb[2185]]]|| mxConstants[_0x7ddb[483]],_0x9494xa=0,_0x9494x3=0;if((null!= this[_0x7ddb[1202]](_0x9494x4)|| null!= _0x9494x5[mxConstants[_0x7ddb[2484]]])&& _0x9494x5[mxConstants[_0x7ddb[2059]]]== mxConstants[_0x7ddb[2522]]){_0x9494x5[mxConstants[_0x7ddb[2063]]]== mxConstants[_0x7ddb[481]]&& (_0x9494xa+= parseFloat(_0x9494x5[mxConstants[_0x7ddb[2523]]])|| mxLabel[_0x7ddb[202]][_0x7ddb[1680]]),_0x9494x5[mxConstants[_0x7ddb[2064]]]!= mxConstants[_0x7ddb[479]]&& (_0x9494x3+= parseFloat(_0x9494x5[mxConstants[_0x7ddb[2524]]])|| mxLabel[_0x7ddb[202]][_0x7ddb[1680]])};_0x9494xa+= 2* (_0x9494x5[mxConstants[_0x7ddb[2143]]]|| 0);_0x9494xa+= _0x9494x5[mxConstants[_0x7ddb[2147]]]|| 0;_0x9494xa+= _0x9494x5[mxConstants[_0x7ddb[2145]]]|| 0;_0x9494x3+= 2* (_0x9494x5[mxConstants[_0x7ddb[2143]]]|| 0);_0x9494x3+= _0x9494x5[mxConstants[_0x7ddb[2144]]]|| 0;_0x9494x3+= _0x9494x5[mxConstants[_0x7ddb[2146]]]|| 0;_0x9494x4= this[_0x7ddb[2205]](_0x9494x4);null!= _0x9494x4&& (_0x9494xa+= _0x9494x4[_0x7ddb[117]]+ 8);_0x9494x4= this[_0x7ddb[2183]](_0x9494x2);null!= _0x9494x4&& 0< _0x9494x4[_0x7ddb[67]]?(this[_0x7ddb[2186]](_0x9494x2)|| (_0x9494x4= _0x9494x4[_0x7ddb[230]](/\n/g,_0x7ddb[545])),_0x9494x9= mxUtils[_0x7ddb[2525]](_0x9494x4,_0x9494x9,_0x9494x5[mxConstants[_0x7ddb[2188]]]),_0x9494x2= _0x9494x9[_0x7ddb[117]]+ _0x9494xa,_0x9494x3= _0x9494x9[_0x7ddb[119]]+ _0x9494x3,mxUtils[_0x7ddb[433]](_0x9494x5,mxConstants.STYLE_HORIZONTAL,!0)|| (_0x9494x5= _0x9494x3,_0x9494x3= _0x9494x2,_0x9494x2= _0x9494x5),this[_0x7ddb[991]]&& (_0x9494x2= this[_0x7ddb[1021]](_0x9494x2+ this[_0x7ddb[1020]]/ 2),_0x9494x3= this[_0x7ddb[1021]](_0x9494x3+ this[_0x7ddb[1020]]/ 2)),_0x9494x3= new mxRectangle(0,0,_0x9494x2,_0x9494x3)):(_0x9494x5= 4* this[_0x7ddb[1020]],_0x9494x3= new mxRectangle(0,0,_0x9494x5,_0x9494x5))}};return _0x9494x3};mxGraph[_0x7ddb[202]][_0x7ddb[2216]]= function(_0x9494x2,_0x9494x3){if(0.2< Math[_0x7ddb[425]](1- _0x9494x3[_0x7ddb[255]])){var _0x9494x4=this[_0x7ddb[441]][_0x7ddb[255]],_0x9494x5=this[_0x7ddb[441]][_0x7ddb[513]],_0x9494x9=_0x9494x2[_0x7ddb[117]]* _0x9494x3[_0x7ddb[255]],_0x9494xa=_0x9494x2[_0x7ddb[119]]* _0x9494x3[_0x7ddb[255]],_0x9494x12=_0x9494x2[_0x7ddb[236]]- (_0x9494xa- _0x9494x2[_0x7ddb[119]])/ 2,_0x9494x4= new mxRectangle(this[_0x7ddb[1021]]((_0x9494x2[_0x7ddb[235]]- (_0x9494x9- _0x9494x2[_0x7ddb[117]])/ 2)/ _0x9494x4)- _0x9494x5[_0x7ddb[235]],this[_0x7ddb[1021]](_0x9494x12/ _0x9494x4)- _0x9494x5[_0x7ddb[236]],this[_0x7ddb[1021]](_0x9494x9/ _0x9494x4),this[_0x7ddb[1021]](_0x9494xa/ _0x9494x4));this[_0x7ddb[2526]](_0x9494x2[_0x7ddb[246]],_0x9494x4)}};mxGraph[_0x7ddb[202]][_0x7ddb[2526]]= function(_0x9494x2,_0x9494x3){return this[_0x7ddb[836]]([_0x9494x2],[_0x9494x3])[0]};mxGraph[_0x7ddb[202]][_0x7ddb[836]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[251]][_0x7ddb[473]]();try{this[_0x7ddb[837]](_0x9494x2,_0x9494x3),this[_0x7ddb[746]]( new mxEventObject(mxEvent.RESIZE_CELLS,_0x7ddb[895],_0x9494x2,_0x7ddb[1562],_0x9494x3))}finally{this[_0x7ddb[251]][_0x7ddb[476]]()};return _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[837]]= function(_0x9494x2,_0x9494x3){if(null!= _0x9494x2&& null!= _0x9494x3&& _0x9494x2[_0x7ddb[67]]== _0x9494x3[_0x7ddb[67]]){this[_0x7ddb[251]][_0x7ddb[473]]();try{for(var _0x9494x4=0;_0x9494x4< _0x9494x2[_0x7ddb[67]];_0x9494x4++){var _0x9494x5=_0x9494x3[_0x9494x4],_0x9494x9=this[_0x7ddb[251]][_0x7ddb[1721]](_0x9494x2[_0x9494x4]);if(null!= _0x9494x9&& (_0x9494x9[_0x7ddb[235]]!= _0x9494x5[_0x7ddb[235]]|| _0x9494x9[_0x7ddb[236]]!= _0x9494x5[_0x7ddb[236]]|| _0x9494x9[_0x7ddb[117]]!= _0x9494x5[_0x7ddb[117]]|| _0x9494x9[_0x7ddb[119]]!= _0x9494x5[_0x7ddb[119]])){_0x9494x9= _0x9494x9[_0x7ddb[238]]();if(_0x9494x9[_0x7ddb[1500]]){var _0x9494xa=_0x9494x9[_0x7ddb[1368]];null!= _0x9494xa&& (_0x9494xa[_0x7ddb[235]]+= _0x9494x5[_0x7ddb[235]]- _0x9494x9[_0x7ddb[235]],_0x9494xa[_0x7ddb[236]]+= _0x9494x5[_0x7ddb[236]]- _0x9494x9[_0x7ddb[236]])}else {_0x9494x9[_0x7ddb[235]]= _0x9494x5[_0x7ddb[235]],_0x9494x9[_0x7ddb[236]]= _0x9494x5[_0x7ddb[236]]};_0x9494x9[_0x7ddb[117]]= _0x9494x5[_0x7ddb[117]];_0x9494x9[_0x7ddb[119]]= _0x9494x5[_0x7ddb[119]];!_0x9494x9[_0x7ddb[1500]]&& (this[_0x7ddb[251]][_0x7ddb[1193]](_0x9494x2[_0x9494x4])&& !this[_0x7ddb[2505]]()) && (_0x9494x9[_0x7ddb[235]]= Math[_0x7ddb[160]](0,_0x9494x9[_0x7ddb[235]]),_0x9494x9[_0x7ddb[236]]= Math[_0x7ddb[160]](0,_0x9494x9[_0x7ddb[236]]));this[_0x7ddb[251]][_0x7ddb[1724]](_0x9494x2[_0x9494x4],_0x9494x9);this[_0x7ddb[2507]](_0x9494x2[_0x9494x4])&& this[_0x7ddb[2508]](_0x9494x2[_0x9494x4])}};this[_0x7ddb[2399]]&& this[_0x7ddb[1750]](_0x9494x2);this[_0x7ddb[746]]( new mxEventObject(mxEvent.CELLS_RESIZED,_0x7ddb[895],_0x9494x2,_0x7ddb[1562],_0x9494x3))}finally{this[_0x7ddb[251]][_0x7ddb[476]]()}}};mxGraph[_0x7ddb[202]][_0x7ddb[2508]]= function(_0x9494x2){if(null!= _0x9494x2){var _0x9494x3=this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x2),_0x9494x4=this[_0x7ddb[251]][_0x7ddb[1721]](_0x9494x3);if(null!= _0x9494x3&& (null!= _0x9494x4&& !this[_0x7ddb[1742]](_0x9494x3))&& (_0x9494x2= this[_0x7ddb[251]][_0x7ddb[1721]](_0x9494x2),null!= _0x9494x2&& (_0x9494x4[_0x7ddb[117]]< _0x9494x2[_0x7ddb[235]]+ _0x9494x2[_0x7ddb[117]]|| _0x9494x4[_0x7ddb[119]]< _0x9494x2[_0x7ddb[236]]+ _0x9494x2[_0x7ddb[119]]))){_0x9494x4= _0x9494x4[_0x7ddb[238]](),_0x9494x4[_0x7ddb[117]]= Math[_0x7ddb[160]](_0x9494x4[_0x7ddb[117]],_0x9494x2[_0x7ddb[235]]+ _0x9494x2[_0x7ddb[117]]),_0x9494x4[_0x7ddb[119]]= Math[_0x7ddb[160]](_0x9494x4[_0x7ddb[119]],_0x9494x2[_0x7ddb[236]]+ _0x9494x2[_0x7ddb[119]]),this[_0x7ddb[837]]([_0x9494x3],[_0x9494x4])}}};mxGraph[_0x7ddb[202]][_0x7ddb[903]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){return this[_0x7ddb[834]](_0x9494x2,_0x9494x3,_0x9494x4,!0,_0x9494x5,_0x9494x9)};mxGraph[_0x7ddb[202]][_0x7ddb[834]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){_0x9494x3= null!= _0x9494x3?_0x9494x3:0;_0x9494x4= null!= _0x9494x4?_0x9494x4:0;_0x9494x5= null!= _0x9494x5?_0x9494x5:!1;if(null!= _0x9494x2&& (0!= _0x9494x3|| 0!= _0x9494x4|| _0x9494x5|| null!= _0x9494x9)){this[_0x7ddb[251]][_0x7ddb[473]]();try{_0x9494x5&& (_0x9494x2= this[_0x7ddb[899]](_0x9494x2,this[_0x7ddb[2527]]()),null== _0x9494x9&& (_0x9494x9= this[_0x7ddb[902]]()));var _0x9494x12=this[_0x7ddb[2505]]();null!= _0x9494x9&& this[_0x7ddb[2528]](!0);this[_0x7ddb[835]](_0x9494x2,_0x9494x3,_0x9494x4,!_0x9494x5&& this[_0x7ddb[2529]]() && this[_0x7ddb[2530]](),null== _0x9494x9);this[_0x7ddb[2528]](_0x9494x12);if(null!= _0x9494x9){var _0x9494x13=this[_0x7ddb[251]][_0x7ddb[262]](_0x9494x9);this[_0x7ddb[833]](_0x9494x2,_0x9494x9,_0x9494x13,null,null,!0)};this[_0x7ddb[746]]( new mxEventObject(mxEvent.MOVE_CELLS,_0x7ddb[895],_0x9494x2,_0x7ddb[1126],_0x9494x3,_0x7ddb[1125],_0x9494x4,_0x7ddb[238],_0x9494x5,_0x7ddb[772],_0x9494x9,_0x7ddb[763],_0x9494xa))}finally{this[_0x7ddb[251]][_0x7ddb[476]]()}};return _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[835]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){if(null!= _0x9494x2&& (0!= _0x9494x3|| 0!= _0x9494x4)){this[_0x7ddb[251]][_0x7ddb[473]]();try{_0x9494x5&& this[_0x7ddb[2531]](_0x9494x2);for(var _0x9494xa=0;_0x9494xa< _0x9494x2[_0x7ddb[67]];_0x9494xa++){this[_0x7ddb[2532]](_0x9494x2[_0x9494xa],_0x9494x3,_0x9494x4),_0x9494x9&& this[_0x7ddb[2509]](_0x9494x2[_0x9494xa])};this[_0x7ddb[2400]]&& this[_0x7ddb[1750]](_0x9494x2);this[_0x7ddb[746]]( new mxEventObject(mxEvent.CELLS_MOVED,_0x7ddb[895],_0x9494x2,_0x7ddb[1126],_0x9494x4,_0x7ddb[1125],_0x9494x4,_0x7ddb[808],_0x9494x5))}finally{this[_0x7ddb[251]][_0x7ddb[476]]()}}};mxGraph[_0x7ddb[202]][_0x7ddb[2532]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=this[_0x7ddb[251]][_0x7ddb[1721]](_0x9494x2);null!= _0x9494x5&& (_0x9494x5= _0x9494x5[_0x7ddb[238]](),_0x9494x5[_0x7ddb[513]](_0x9494x3,_0x9494x4),!_0x9494x5[_0x7ddb[1500]]&& (this[_0x7ddb[251]][_0x7ddb[1193]](_0x9494x2)&& !this[_0x7ddb[2505]]()) && (_0x9494x5[_0x7ddb[235]]= Math[_0x7ddb[160]](0,_0x9494x5[_0x7ddb[235]]),_0x9494x5[_0x7ddb[236]]= Math[_0x7ddb[160]](0,_0x9494x5[_0x7ddb[236]])),_0x9494x5[_0x7ddb[1500]]&& !this[_0x7ddb[251]][_0x7ddb[250]](_0x9494x2)&& (null== _0x9494x5[_0x7ddb[1368]]?_0x9494x5[_0x7ddb[1368]]= new mxPoint(_0x9494x3,_0x9494x4):(_0x9494x5[_0x7ddb[1368]][_0x7ddb[235]]+= _0x9494x3,_0x9494x5[_0x7ddb[1368]][_0x7ddb[236]]+= _0x9494x4)),this[_0x7ddb[251]][_0x7ddb[1724]](_0x9494x2,_0x9494x5))};mxGraph[_0x7ddb[202]][_0x7ddb[2533]]= function(_0x9494x2){if(null!= _0x9494x2&& !this[_0x7ddb[251]][_0x7ddb[250]](_0x9494x2)){var _0x9494x3=this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x2);if(_0x9494x3== this[_0x7ddb[902]]()|| _0x9494x3== this[_0x7ddb[2534]]()){return this[_0x7ddb[2535]]()};if(null!= _0x9494x3&& _0x9494x3!= this[_0x7ddb[902]]()){var _0x9494x4=this[_0x7ddb[251]][_0x7ddb[1721]](_0x9494x3);if(null!= _0x9494x4){var _0x9494x5=_0x9494x2= 0,_0x9494x9=_0x9494x4[_0x7ddb[117]],_0x9494x4=_0x9494x4[_0x7ddb[119]];this[_0x7ddb[1730]](_0x9494x3)&& (_0x9494x3= this[_0x7ddb[1731]](_0x9494x3),_0x9494x2= _0x9494x3[_0x7ddb[117]],_0x9494x9-= _0x9494x3[_0x7ddb[117]],_0x9494x5= _0x9494x3[_0x7ddb[119]],_0x9494x4-= _0x9494x3[_0x7ddb[119]]);return new mxRectangle(_0x9494x2,_0x9494x5,_0x9494x9,_0x9494x4)}}};return null};mxGraph[_0x7ddb[202]][_0x7ddb[2535]]= function(){return this[_0x7ddb[2385]]};mxGraph[_0x7ddb[202]][_0x7ddb[2509]]= function(_0x9494x2){if(null!= _0x9494x2){var _0x9494x3=this[_0x7ddb[251]][_0x7ddb[1721]](_0x9494x2),_0x9494x4=this[_0x7ddb[2536]](_0x9494x2)?this[_0x7ddb[2533]](_0x9494x2):this[_0x7ddb[2535]]();if(null!= _0x9494x3&& null!= _0x9494x4&& !_0x9494x3[_0x7ddb[1500]]&& (_0x9494x3[_0x7ddb[235]]< _0x9494x4[_0x7ddb[235]]|| _0x9494x3[_0x7ddb[236]]< _0x9494x4[_0x7ddb[236]]|| _0x9494x4[_0x7ddb[117]]< _0x9494x3[_0x7ddb[235]]+ _0x9494x3[_0x7ddb[117]]|| _0x9494x4[_0x7ddb[119]]< _0x9494x3[_0x7ddb[236]]+ _0x9494x3[_0x7ddb[119]])){_0x9494x2= this[_0x7ddb[2537]](_0x9494x2),0< _0x9494x4[_0x7ddb[117]]&& (_0x9494x3[_0x7ddb[235]]= Math[_0x7ddb[243]](_0x9494x3[_0x7ddb[235]],_0x9494x4[_0x7ddb[235]]+ _0x9494x4[_0x7ddb[117]]- (1- _0x9494x2)* _0x9494x3[_0x7ddb[117]])),0< _0x9494x4[_0x7ddb[119]]&& (_0x9494x3[_0x7ddb[236]]= Math[_0x7ddb[243]](_0x9494x3[_0x7ddb[236]],_0x9494x4[_0x7ddb[236]]+ _0x9494x4[_0x7ddb[119]]- (1- _0x9494x2)* _0x9494x3[_0x7ddb[119]])),_0x9494x3[_0x7ddb[235]]= Math[_0x7ddb[160]](_0x9494x3[_0x7ddb[235]],_0x9494x4[_0x7ddb[235]]- _0x9494x3[_0x7ddb[117]]* _0x9494x2),_0x9494x3[_0x7ddb[236]]= Math[_0x7ddb[160]](_0x9494x3[_0x7ddb[236]],_0x9494x4[_0x7ddb[236]]- _0x9494x3[_0x7ddb[119]]* _0x9494x2)}}};mxGraph[_0x7ddb[202]][_0x7ddb[1750]]= function(_0x9494x2){if(null!= _0x9494x2){for(var _0x9494x3={},_0x9494x4=0;_0x9494x4< _0x9494x2[_0x7ddb[67]];_0x9494x4++){var _0x9494x5=mxCellPath[_0x7ddb[385]](_0x9494x2[_0x9494x4]);_0x9494x3[_0x9494x5]= _0x9494x2[_0x9494x4]};this[_0x7ddb[251]][_0x7ddb[473]]();try{for(_0x9494x4= 0;_0x9494x4< _0x9494x2[_0x7ddb[67]];_0x9494x4++){var _0x9494x9=this[_0x7ddb[251]][_0x7ddb[264]](_0x9494x2[_0x9494x4]);if(null!= _0x9494x9){for(_0x9494x5= 0;_0x9494x5< _0x9494x9[_0x7ddb[67]];_0x9494x5++){var _0x9494xa=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x9[_0x9494x5]),_0x9494x12=null!= _0x9494xa?_0x9494xa[_0x7ddb[1710]](!0):this[_0x7ddb[441]][_0x7ddb[1710]](_0x9494x9[_0x9494x5],!0),_0x9494x13=null!= _0x9494xa?_0x9494xa[_0x7ddb[1710]](!1):this[_0x7ddb[441]][_0x7ddb[1710]](_0x9494x9[_0x9494x5],!1),_0x9494x14=mxCellPath[_0x7ddb[385]](_0x9494x12),_0x9494x15=mxCellPath[_0x7ddb[385]](_0x9494x13);(null== _0x9494x3[_0x9494x14]|| null== _0x9494x3[_0x9494x15])&& this[_0x7ddb[1809]](_0x9494x9[_0x9494x5])}};this[_0x7ddb[1750]](this[_0x7ddb[251]][_0x7ddb[1953]](_0x9494x2[_0x9494x4]))}}finally{this[_0x7ddb[251]][_0x7ddb[476]]()}}};mxGraph[_0x7ddb[202]][_0x7ddb[1809]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[251]][_0x7ddb[1721]](_0x9494x2);null!= _0x9494x3&& (null!= _0x9494x3[_0x7ddb[1525]]&& 0< _0x9494x3[_0x7ddb[1525]][_0x7ddb[67]])&& (_0x9494x3= _0x9494x3[_0x7ddb[238]](),_0x9494x3[_0x7ddb[1525]]= [],this[_0x7ddb[251]][_0x7ddb[1724]](_0x9494x2,_0x9494x3));return _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2538]]= function(_0x9494x2,_0x9494x3){return null!= _0x9494x2&& null!= _0x9494x2[_0x7ddb[253]]&& null!= _0x9494x2[_0x7ddb[253]][_0x7ddb[1561]]?_0x9494x2[_0x7ddb[253]][_0x7ddb[1561]][_0x7ddb[1531]]:null};mxGraph[_0x7ddb[202]][_0x7ddb[2288]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x3= null;var _0x9494x5=_0x9494x2[_0x7ddb[124]][_0x9494x4?mxConstants[_0x7ddb[2539]]:mxConstants[_0x7ddb[2540]]];if(null!= _0x9494x5){var _0x9494x9=_0x9494x2[_0x7ddb[124]][_0x9494x4?mxConstants[_0x7ddb[2541]]:mxConstants[_0x7ddb[2542]]];null!= _0x9494x9&& (_0x9494x3= new mxPoint(parseFloat(_0x9494x5),parseFloat(_0x9494x9)))};_0x9494x5= !1;null!= _0x9494x3&& (_0x9494x5= mxUtils[_0x7ddb[433]](_0x9494x2[_0x7ddb[124]],_0x9494x4?mxConstants[_0x7ddb[2543]]:mxConstants[_0x7ddb[2544]],!0));return new mxConnectionConstraint(_0x9494x3,_0x9494x5)};mxGraph[_0x7ddb[202]][_0x7ddb[2545]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){if(null!= _0x9494x5){this[_0x7ddb[251]][_0x7ddb[473]]();try{null== _0x9494x5|| null== _0x9494x5[_0x7ddb[2546]]?(this[_0x7ddb[1717]](_0x9494x4?mxConstants[_0x7ddb[2539]]:mxConstants[_0x7ddb[2540]],null,[_0x9494x2]),this[_0x7ddb[1717]](_0x9494x4?mxConstants[_0x7ddb[2541]]:mxConstants[_0x7ddb[2542]],null,[_0x9494x2]),this[_0x7ddb[1717]](_0x9494x4?mxConstants[_0x7ddb[2543]]:mxConstants[_0x7ddb[2544]],null,[_0x9494x2])):null!= _0x9494x5[_0x7ddb[2546]]&& (this[_0x7ddb[1717]](_0x9494x4?mxConstants[_0x7ddb[2539]]:mxConstants[_0x7ddb[2540]],_0x9494x5[_0x7ddb[2546]][_0x7ddb[235]],[_0x9494x2]),this[_0x7ddb[1717]](_0x9494x4?mxConstants[_0x7ddb[2541]]:mxConstants[_0x7ddb[2542]],_0x9494x5[_0x7ddb[2546]][_0x7ddb[236]],[_0x9494x2]),_0x9494x5[_0x7ddb[591]]?this[_0x7ddb[1717]](_0x9494x4?mxConstants[_0x7ddb[2543]]:mxConstants[_0x7ddb[2544]],null,[_0x9494x2]):this[_0x7ddb[1717]](_0x9494x4?mxConstants[_0x7ddb[2543]]:mxConstants[_0x7ddb[2544]],_0x7ddb[468],[_0x9494x2]))}finally{this[_0x7ddb[251]][_0x7ddb[476]]()}}};mxGraph[_0x7ddb[202]][_0x7ddb[2290]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=null;if(null!= _0x9494x2){var _0x9494x5=this[_0x7ddb[441]][_0x7ddb[2087]](_0x9494x2),_0x9494x9= new mxPoint(_0x9494x5[_0x7ddb[241]](),_0x9494x5[_0x7ddb[242]]()),_0x9494xa=_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2011]]],_0x9494x12=0;if(null!= _0x9494xa&& (_0x7ddb[700]== _0x9494xa?_0x9494x12+= 270:_0x7ddb[703]== _0x9494xa?_0x9494x12+= 180:_0x7ddb[701]== _0x9494xa&& (_0x9494x12+= 90),_0x7ddb[700]== _0x9494xa|| _0x7ddb[701]== _0x9494xa)){_0x9494x5[_0x7ddb[235]]+= _0x9494x5[_0x7ddb[117]]/ 2- _0x9494x5[_0x7ddb[119]]/ 2;_0x9494x5[_0x7ddb[236]]+= _0x9494x5[_0x7ddb[119]]/ 2- _0x9494x5[_0x7ddb[117]]/ 2;var _0x9494x13=_0x9494x5[_0x7ddb[117]];_0x9494x5[_0x7ddb[117]]= _0x9494x5[_0x7ddb[119]];_0x9494x5[_0x7ddb[119]]= _0x9494x13};if(null!= _0x9494x3[_0x7ddb[2546]]){var _0x9494x14=_0x9494x4= 1,_0x9494x15=0,_0x9494x16=0;if(this[_0x7ddb[502]]()[_0x7ddb[1193]](_0x9494x2[_0x7ddb[246]])){var _0x9494x17=_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2547]]],_0x9494x18=_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2548]]];null!= _0x9494x2[_0x7ddb[253]][_0x7ddb[1561]]&& (_0x9494x17= 1== mxUtils[_0x7ddb[433]](_0x9494x2[_0x7ddb[124]],_0x7ddb[1607],0)|| _0x9494x17,_0x9494x18= 1== mxUtils[_0x7ddb[433]](_0x9494x2[_0x7ddb[124]],_0x7ddb[1608],0)|| _0x9494x18);if(_0x7ddb[700]== _0x9494xa|| _0x7ddb[701]== _0x9494xa){_0x9494x13= _0x9494x17,_0x9494x17= _0x9494x18,_0x9494x18= _0x9494x13};_0x9494x17&& (_0x9494x4= -1,_0x9494x15= -_0x9494x5[_0x7ddb[117]]);_0x9494x18&& (_0x9494x14= -1,_0x9494x16= -_0x9494x5[_0x7ddb[119]])};_0x9494x4= new mxPoint(_0x9494x5[_0x7ddb[235]]+ _0x9494x3[_0x7ddb[2546]][_0x7ddb[235]]* _0x9494x5[_0x7ddb[117]]* _0x9494x4- _0x9494x15,_0x9494x5[_0x7ddb[236]]+ _0x9494x3[_0x7ddb[2546]][_0x7ddb[236]]* _0x9494x5[_0x7ddb[119]]* _0x9494x14- _0x9494x16)};_0x9494xa= _0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2278]]]|| 0;_0x9494x3[_0x7ddb[591]]?(0!= _0x9494x12&& null!= _0x9494x4&& (_0x9494x13= _0x9494x5= 0,90== _0x9494x12?_0x9494x13= 1:180== _0x9494x12?_0x9494x5= -1:270== _0x9494xa&& (_0x9494x13= -1),_0x9494x4= mxUtils[_0x7ddb[432]](_0x9494x4,_0x9494x5,_0x9494x13,_0x9494x9)),null!= _0x9494x4&& _0x9494x3[_0x7ddb[591]]&& (_0x9494x4= this[_0x7ddb[441]][_0x7ddb[2302]](_0x9494x2,_0x9494x4,!1))):_0x9494xa+= _0x9494x12;0!= _0x9494xa&& null!= _0x9494x4&& (_0x9494x12= mxUtils[_0x7ddb[431]](_0x9494xa),_0x9494x5= Math[_0x7ddb[426]](_0x9494x12),_0x9494x13= Math[_0x7ddb[427]](_0x9494x12),_0x9494x4= mxUtils[_0x7ddb[432]](_0x9494x4,_0x9494x5,_0x9494x13,_0x9494x9))};return _0x9494x4};mxGraph[_0x7ddb[202]][_0x7ddb[851]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){this[_0x7ddb[251]][_0x7ddb[473]]();try{var _0x9494x9=this[_0x7ddb[251]][_0x7ddb[1709]](_0x9494x2,_0x9494x4);this[_0x7ddb[852]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5);this[_0x7ddb[746]]( new mxEventObject(mxEvent.CONNECT_CELL,_0x7ddb[1989],_0x9494x2,_0x7ddb[1984],_0x9494x3,_0x7ddb[1097],_0x9494x4,_0x7ddb[257],_0x9494x9))}finally{this[_0x7ddb[251]][_0x7ddb[476]]()};return _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[852]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){if(null!= _0x9494x2){this[_0x7ddb[251]][_0x7ddb[473]]();try{var _0x9494x9=this[_0x7ddb[251]][_0x7ddb[1709]](_0x9494x2,_0x9494x4);this[_0x7ddb[2545]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5);this[_0x7ddb[2549]]()&& (_0x9494x5= null,this[_0x7ddb[1908]](_0x9494x3)&& (_0x9494x5= _0x9494x3[_0x7ddb[1103]](),_0x9494x3= this[_0x7ddb[2550]](_0x9494x3,_0x9494x4)),this[_0x7ddb[1717]](_0x9494x4?mxConstants[_0x7ddb[2303]]:mxConstants[_0x7ddb[2304]],_0x9494x5,[_0x9494x2]));this[_0x7ddb[251]][_0x7ddb[1957]](_0x9494x2,_0x9494x3,_0x9494x4);this[_0x7ddb[2401]]&& this[_0x7ddb[1809]](_0x9494x2);this[_0x7ddb[746]]( new mxEventObject(mxEvent.CELL_CONNECTED,_0x7ddb[1989],_0x9494x2,_0x7ddb[1984],_0x9494x3,_0x7ddb[1097],_0x9494x4,_0x7ddb[257],_0x9494x9))}finally{this[_0x7ddb[251]][_0x7ddb[476]]()}}};mxGraph[_0x7ddb[202]][_0x7ddb[2531]]= function(_0x9494x2){if(null!= _0x9494x2){this[_0x7ddb[251]][_0x7ddb[473]]();try{for(var _0x9494x3=this[_0x7ddb[441]][_0x7ddb[255]],_0x9494x4=this[_0x7ddb[441]][_0x7ddb[513]],_0x9494x5={},_0x9494x9=0;_0x9494x9< _0x9494x2[_0x7ddb[67]];_0x9494x9++){var _0x9494xa=mxCellPath[_0x7ddb[385]](_0x9494x2[_0x9494x9]);_0x9494x5[_0x9494xa]= _0x9494x2[_0x9494x9]};for(_0x9494x9= 0;_0x9494x9< _0x9494x2[_0x7ddb[67]];_0x9494x9++){if(this[_0x7ddb[251]][_0x7ddb[250]](_0x9494x2[_0x9494x9])){var _0x9494x12=this[_0x7ddb[251]][_0x7ddb[1721]](_0x9494x2[_0x9494x9]);if(null!= _0x9494x12){var _0x9494x13=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x2[_0x9494x9]),_0x9494x14=this[_0x7ddb[441]][_0x7ddb[248]](this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x2[_0x9494x9]));if(null!= _0x9494x13&& null!= _0x9494x14){var _0x9494x12=_0x9494x12[_0x7ddb[238]](),_0x9494x15=-_0x9494x14[_0x7ddb[2078]][_0x7ddb[235]],_0x9494x16=-_0x9494x14[_0x7ddb[2078]][_0x7ddb[236]],_0x9494x17=_0x9494x13[_0x7ddb[439]],_0x9494x18=this[_0x7ddb[251]][_0x7ddb[1709]](_0x9494x2[_0x9494x9],!0);if(null!= _0x9494x18&& this[_0x7ddb[2551]](_0x9494x2[_0x9494x9],_0x9494x18,!0)){for(var _0x9494x19=mxCellPath[_0x7ddb[385]](_0x9494x18);null!= _0x9494x18&& null== _0x9494x5[_0x9494x19];){_0x9494x18= this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x18),_0x9494x19= mxCellPath[_0x7ddb[385]](_0x9494x18)};null== _0x9494x18&& (_0x9494x12[_0x7ddb[2007]]( new mxPoint(_0x9494x17[0][_0x7ddb[235]]/ _0x9494x3- _0x9494x4[_0x7ddb[235]]+ _0x9494x15,_0x9494x17[0][_0x7ddb[236]]/ _0x9494x3- _0x9494x4[_0x7ddb[236]]+ _0x9494x16),!0),this[_0x7ddb[251]][_0x7ddb[1957]](_0x9494x2[_0x9494x9],null,!0))};var _0x9494x1a=this[_0x7ddb[251]][_0x7ddb[1709]](_0x9494x2[_0x9494x9],!1);if(null!= _0x9494x1a&& this[_0x7ddb[2551]](_0x9494x2[_0x9494x9],_0x9494x1a,!1)){for(var _0x9494x1b=mxCellPath[_0x7ddb[385]](_0x9494x1a);null!= _0x9494x1a&& null== _0x9494x5[_0x9494x1b];){_0x9494x1a= this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x1a),_0x9494x1b= mxCellPath[_0x7ddb[385]](_0x9494x1a)};if(null== _0x9494x1a){var _0x9494x1c=_0x9494x17[_0x7ddb[67]]- 1;_0x9494x12[_0x7ddb[2007]]( new mxPoint(_0x9494x17[_0x9494x1c][_0x7ddb[235]]/ _0x9494x3- _0x9494x4[_0x7ddb[235]]+ _0x9494x15,_0x9494x17[_0x9494x1c][_0x7ddb[236]]/ _0x9494x3- _0x9494x4[_0x7ddb[236]]+ _0x9494x16),!1);this[_0x7ddb[251]][_0x7ddb[1957]](_0x9494x2[_0x9494x9],null,!1)}};this[_0x7ddb[251]][_0x7ddb[1724]](_0x9494x2[_0x9494x9],_0x9494x12)}}}}}finally{this[_0x7ddb[251]][_0x7ddb[476]]()}}};mxGraph[_0x7ddb[202]][_0x7ddb[2534]]= function(){return this[_0x7ddb[441]][_0x7ddb[1741]]};mxGraph[_0x7ddb[202]][_0x7ddb[2326]]= function(_0x9494x2){return null};mxGraph[_0x7ddb[202]][_0x7ddb[1908]]= function(_0x9494x2){return !1};mxGraph[_0x7ddb[202]][_0x7ddb[2550]]= function(_0x9494x2,_0x9494x3){return this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2280]]= function(_0x9494x2){return null};mxGraph[_0x7ddb[202]][_0x7ddb[2552]]= function(_0x9494x2){_0x9494x2= _0x9494x2|| this[_0x7ddb[2452]]();null!= _0x9494x2&& this[_0x7ddb[2553]](_0x9494x2)&& (this[_0x7ddb[441]][_0x7ddb[2257]](_0x9494x2),this[_0x7ddb[2440]]())};mxGraph[_0x7ddb[202]][_0x7ddb[2554]]= function(){var _0x9494x2=this[_0x7ddb[251]][_0x7ddb[501]](),_0x9494x3=this[_0x7ddb[2534]]();if(null!= _0x9494x3){for(var _0x9494x4=this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x3);_0x9494x4!= _0x9494x2&& !this[_0x7ddb[2553]](_0x9494x4)&& this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x4)!= _0x9494x2;){_0x9494x4= this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x4)};_0x9494x4== _0x9494x2|| this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x4)== _0x9494x2?this[_0x7ddb[441]][_0x7ddb[2257]](null):this[_0x7ddb[441]][_0x7ddb[2257]](_0x9494x4);null!= this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x3)&& this[_0x7ddb[2450]](_0x9494x3)}};mxGraph[_0x7ddb[202]][_0x7ddb[2442]]= function(){var _0x9494x2=this[_0x7ddb[2534]]();null!= _0x9494x2&& (this[_0x7ddb[441]][_0x7ddb[2257]](null),null!= this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x2)&& this[_0x7ddb[2450]](_0x9494x2))};mxGraph[_0x7ddb[202]][_0x7ddb[2553]]= function(_0x9494x2){return null!= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[517]]= function(){return this[_0x7ddb[441]][_0x7ddb[517]]()};mxGraph[_0x7ddb[202]][_0x7ddb[2555]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=[_0x9494x2];_0x9494x3&& (_0x9494x5= _0x9494x5[_0x7ddb[1919]](this[_0x7ddb[251]][_0x7ddb[264]](_0x9494x2)));_0x9494x5= this[_0x7ddb[441]][_0x7ddb[1799]](_0x9494x5);if(_0x9494x4){_0x9494x4= this[_0x7ddb[251]][_0x7ddb[262]](_0x9494x2);for(var _0x9494x9=0;_0x9494x9< _0x9494x4;_0x9494x9++){var _0x9494xa=this[_0x7ddb[2555]](this[_0x7ddb[251]][_0x7ddb[263]](_0x9494x2,_0x9494x9),_0x9494x3,!0);null!= _0x9494x5?_0x9494x5[_0x7ddb[99]](_0x9494xa):_0x9494x5= _0x9494xa}};return _0x9494x5};mxGraph[_0x7ddb[202]][_0x7ddb[1729]]= function(_0x9494x2,_0x9494x3){_0x9494x3= null!= _0x9494x3?_0x9494x3:!1;var _0x9494x4=null;if(null!= _0x9494x2){for(var _0x9494x5=0;_0x9494x5< _0x9494x2[_0x7ddb[67]];_0x9494x5++){if(_0x9494x3|| this[_0x7ddb[251]][_0x7ddb[1193]](_0x9494x2[_0x9494x5])){var _0x9494x9=this[_0x7ddb[1198]](_0x9494x2[_0x9494x5]);if(null!= _0x9494x9){var _0x9494xa=_0x9494x9[_0x7ddb[1525]];if(null!= _0x9494xa&& 0< _0x9494xa[_0x7ddb[67]]){for(var _0x9494x12= new mxRectangle(_0x9494xa[0][_0x7ddb[235]],_0x9494xa[0][_0x7ddb[236]],0,0),_0x9494x13=function(_0x9494x2){null!= _0x9494x2&& _0x9494x12[_0x7ddb[99]]( new mxRectangle(_0x9494x2[_0x7ddb[235]],_0x9494x2[_0x7ddb[236]],0,0))},_0x9494x14=1;_0x9494x14< _0x9494xa[_0x7ddb[67]];_0x9494x14++){_0x9494x13(_0x9494xa[_0x9494x14])};_0x9494x13(_0x9494x9[_0x7ddb[2006]](!0));_0x9494x13(_0x9494x9[_0x7ddb[2006]](!1))};null== _0x9494x4?_0x9494x4= new mxRectangle(_0x9494x9[_0x7ddb[235]],_0x9494x9[_0x7ddb[236]],_0x9494x9[_0x7ddb[117]],_0x9494x9[_0x7ddb[119]]):_0x9494x4[_0x7ddb[99]](_0x9494x9)}}}};return _0x9494x4};mxGraph[_0x7ddb[202]][_0x7ddb[802]]= function(_0x9494x2){this[_0x7ddb[441]][_0x7ddb[200]](_0x9494x2,null== _0x9494x2);this[_0x7ddb[441]][_0x7ddb[2264]]();this[_0x7ddb[2258]]();this[_0x7ddb[746]]( new mxEventObject(mxEvent.REFRESH))};mxGraph[_0x7ddb[202]][_0x7ddb[1021]]= function(_0x9494x2){this[_0x7ddb[991]]&& (_0x9494x2= Math[_0x7ddb[488]](_0x9494x2/ this[_0x7ddb[1020]])* this[_0x7ddb[1020]]);return _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[1135]]= function(_0x9494x2,_0x9494x3){if(this[_0x7ddb[2365]]&& mxUtils[_0x7ddb[1134]](this[_0x7ddb[526]])){this[_0x7ddb[526]][_0x7ddb[360]]= -_0x9494x2,this[_0x7ddb[526]][_0x7ddb[190]]= -_0x9494x3}else {var _0x9494x4=this[_0x7ddb[441]][_0x7ddb[2051]]();if(this[_0x7ddb[507]]== mxConstants[_0x7ddb[508]]){if(0== _0x9494x2&& 0== _0x9494x3){if(mxClient[_0x7ddb[80]]?_0x9494x4[_0x7ddb[57]](_0x7ddb[535],_0x7ddb[536]+ _0x9494x2+ _0x7ddb[537]+ _0x9494x3+ _0x7ddb[460]):_0x9494x4[_0x7ddb[1390]](_0x7ddb[535]),null!= this[_0x7ddb[2556]]){for(var _0x9494x5=this[_0x7ddb[2556]][_0x7ddb[285]];null!= _0x9494x5;){var _0x9494x9=_0x9494x5[_0x7ddb[287]];this[_0x7ddb[526]][_0x7ddb[62]](_0x9494x5);_0x9494x5= _0x9494x9};this[_0x7ddb[2556]][_0x7ddb[265]][_0x7ddb[266]](this[_0x7ddb[2556]]);this[_0x7ddb[2556]]= null;this[_0x7ddb[526]][_0x7ddb[62]](_0x9494x4[_0x7ddb[265]]);for(_0x9494x5= this[_0x7ddb[2557]][_0x7ddb[285]];null!= _0x9494x5;){_0x9494x9= _0x9494x5[_0x7ddb[287]],this[_0x7ddb[526]][_0x7ddb[62]](_0x9494x5),_0x9494x5= _0x9494x9};this[_0x7ddb[2557]][_0x7ddb[265]][_0x7ddb[266]](this[_0x7ddb[2557]]);this[_0x7ddb[2557]]= null}}else {_0x9494x4[_0x7ddb[57]](_0x7ddb[535],_0x7ddb[536]+ _0x9494x2+ _0x7ddb[537]+ _0x9494x3+ _0x7ddb[460]);if(null== this[_0x7ddb[2556]]){this[_0x7ddb[2556]]= document[_0x7ddb[55]](_0x7ddb[485]);this[_0x7ddb[2556]][_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[492];this[_0x7ddb[2556]][_0x7ddb[124]][_0x7ddb[277]]= _0x7ddb[189];this[_0x7ddb[2557]]= document[_0x7ddb[55]](_0x7ddb[485]);this[_0x7ddb[2557]][_0x7ddb[124]][_0x7ddb[491]]= _0x7ddb[492];this[_0x7ddb[2557]][_0x7ddb[124]][_0x7ddb[277]]= _0x7ddb[189];for(var _0x9494xa=this[_0x7ddb[2556]],_0x9494x5=this[_0x7ddb[526]][_0x7ddb[285]];null!= _0x9494x5;){_0x9494x9= _0x9494x5[_0x7ddb[287]],_0x9494x5!= _0x9494x4[_0x7ddb[265]]?_0x9494xa[_0x7ddb[62]](_0x9494x5):_0x9494xa= this[_0x7ddb[2557]],_0x9494x5= _0x9494x9};this[_0x7ddb[526]][_0x7ddb[950]](this[_0x7ddb[2556]],_0x9494x4[_0x7ddb[265]]);this[_0x7ddb[526]][_0x7ddb[62]](this[_0x7ddb[2557]])};this[_0x7ddb[2556]][_0x7ddb[124]][_0x7ddb[361]]= _0x9494x2+ _0x7ddb[168];this[_0x7ddb[2556]][_0x7ddb[124]][_0x7ddb[125]]= _0x9494x3+ _0x7ddb[168];this[_0x7ddb[2557]][_0x7ddb[124]][_0x7ddb[361]]= _0x9494x2+ _0x7ddb[168];this[_0x7ddb[2557]][_0x7ddb[124]][_0x7ddb[125]]= _0x9494x3+ _0x7ddb[168]}}else {_0x9494x4[_0x7ddb[124]][_0x7ddb[361]]= _0x9494x2+ _0x7ddb[168],_0x9494x4[_0x7ddb[124]][_0x7ddb[125]]= _0x9494x3+ _0x7ddb[168]};this[_0x7ddb[1136]]= _0x9494x2;this[_0x7ddb[1137]]= _0x9494x3;this[_0x7ddb[746]]( new mxEventObject(mxEvent.PAN))}};mxGraph[_0x7ddb[202]][_0x7ddb[2558]]= function(){this[_0x7ddb[499]](this[_0x7ddb[2395]])};mxGraph[_0x7ddb[202]][_0x7ddb[2559]]= function(){this[_0x7ddb[499]](1/ this[_0x7ddb[2395]])};mxGraph[_0x7ddb[202]][_0x7ddb[2560]]= function(){1== this[_0x7ddb[441]][_0x7ddb[255]]?this[_0x7ddb[441]][_0x7ddb[1147]](0,0):(this[_0x7ddb[441]][_0x7ddb[513]][_0x7ddb[235]]= 0,this[_0x7ddb[441]][_0x7ddb[513]][_0x7ddb[236]]= 0,this[_0x7ddb[441]][_0x7ddb[2262]](1))};mxGraph[_0x7ddb[202]][_0x7ddb[2561]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[499]](_0x9494x2/ this[_0x7ddb[441]][_0x7ddb[255]],_0x9494x3)};mxGraph[_0x7ddb[202]][_0x7ddb[499]]= function(_0x9494x2,_0x9494x3){_0x9494x3= null!= _0x9494x3?_0x9494x3:this[_0x7ddb[2397]];var _0x9494x4=this[_0x7ddb[441]][_0x7ddb[255]]* _0x9494x2,_0x9494x5=this[_0x7ddb[441]][_0x7ddb[248]](this[_0x7ddb[2452]]());if(this[_0x7ddb[2396]]&& null!= _0x9494x5){_0x9494x5= new mxRectangle(_0x9494x5[_0x7ddb[235]]* _0x9494x2,_0x9494x5[_0x7ddb[236]]* _0x9494x2,_0x9494x5[_0x7ddb[117]]* _0x9494x2,_0x9494x5[_0x7ddb[119]]* _0x9494x2),this[_0x7ddb[441]][_0x7ddb[255]]= _0x9494x4,this[_0x7ddb[2562]](_0x9494x5)|| (this[_0x7ddb[441]][_0x7ddb[2259]](),this[_0x7ddb[441]][_0x7ddb[2262]](_0x9494x4))}else {if(_0x9494x3&& !mxUtils[_0x7ddb[1134]](this[_0x7ddb[526]])){var _0x9494x5=this[_0x7ddb[526]][_0x7ddb[359]],_0x9494x9=this[_0x7ddb[526]][_0x7ddb[167]];if(1< _0x9494x2){var _0x9494xa=(_0x9494x2- 1)/ (2* _0x9494x4),_0x9494x5=_0x9494x5* -_0x9494xa,_0x9494x9=_0x9494x9* -_0x9494xa}else {_0x9494xa= (1/ _0x9494x2- 1)/ (2* this[_0x7ddb[441]][_0x7ddb[255]]),_0x9494x5*= _0x9494xa,_0x9494x9*= _0x9494xa};this[_0x7ddb[441]][_0x7ddb[829]](_0x9494x4,this[_0x7ddb[441]][_0x7ddb[513]][_0x7ddb[235]]+ _0x9494x5,this[_0x7ddb[441]][_0x7ddb[513]][_0x7ddb[236]]+ _0x9494x9)}else {this[_0x7ddb[441]][_0x7ddb[2262]](_0x9494x4),mxUtils[_0x7ddb[1134]](this[_0x7ddb[526]])&& (_0x9494x9= _0x9494x5= 0,_0x9494x3&& (_0x9494x5= this[_0x7ddb[526]][_0x7ddb[359]]* (_0x9494x2- 1)/ 2,_0x9494x9= this[_0x7ddb[526]][_0x7ddb[167]]* (_0x9494x2- 1)/ 2),this[_0x7ddb[526]][_0x7ddb[360]]= Math[_0x7ddb[488]](this[_0x7ddb[526]][_0x7ddb[360]]* _0x9494x2+ _0x9494x5),this[_0x7ddb[526]][_0x7ddb[190]]= Math[_0x7ddb[488]](this[_0x7ddb[526]][_0x7ddb[190]]* _0x9494x2+ _0x9494x9))}}};mxGraph[_0x7ddb[202]][_0x7ddb[2563]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[526]][_0x7ddb[159]]/ _0x9494x2[_0x7ddb[117]]/ (this[_0x7ddb[526]][_0x7ddb[157]]/ _0x9494x2[_0x7ddb[119]]);_0x9494x2[_0x7ddb[235]]= Math[_0x7ddb[160]](0,_0x9494x2[_0x7ddb[235]]);_0x9494x2[_0x7ddb[236]]= Math[_0x7ddb[160]](0,_0x9494x2[_0x7ddb[236]]);var _0x9494x4=Math[_0x7ddb[243]](this[_0x7ddb[526]][_0x7ddb[1526]],_0x9494x2[_0x7ddb[235]]+ _0x9494x2[_0x7ddb[117]]),_0x9494x5=Math[_0x7ddb[243]](this[_0x7ddb[526]][_0x7ddb[191]],_0x9494x2[_0x7ddb[236]]+ _0x9494x2[_0x7ddb[119]]);_0x9494x2[_0x7ddb[117]]= _0x9494x4- _0x9494x2[_0x7ddb[235]];_0x9494x2[_0x7ddb[119]]= _0x9494x5- _0x9494x2[_0x7ddb[236]];1> _0x9494x3?(_0x9494x3= _0x9494x2[_0x7ddb[119]]/ _0x9494x3,_0x9494x4= (_0x9494x3- _0x9494x2[_0x7ddb[119]])/ 2,_0x9494x2[_0x7ddb[119]]= _0x9494x3,_0x9494x3= Math[_0x7ddb[243]](_0x9494x2[_0x7ddb[236]],_0x9494x4),_0x9494x2[_0x7ddb[236]]-= _0x9494x3,_0x9494x5= Math[_0x7ddb[243]](this[_0x7ddb[526]][_0x7ddb[191]],_0x9494x2[_0x7ddb[236]]+ _0x9494x2[_0x7ddb[119]]),_0x9494x2[_0x7ddb[119]]= _0x9494x5- _0x9494x2[_0x7ddb[236]]):(_0x9494x3*= _0x9494x2[_0x7ddb[117]],_0x9494x4= (_0x9494x3- _0x9494x2[_0x7ddb[117]])/ 2,_0x9494x2[_0x7ddb[117]]= _0x9494x3,_0x9494x3= Math[_0x7ddb[243]](_0x9494x2[_0x7ddb[235]],_0x9494x4),_0x9494x2[_0x7ddb[235]]-= _0x9494x3,_0x9494x4= Math[_0x7ddb[243]](this[_0x7ddb[526]][_0x7ddb[1526]],_0x9494x2[_0x7ddb[235]]+ _0x9494x2[_0x7ddb[117]]),_0x9494x2[_0x7ddb[117]]= _0x9494x4- _0x9494x2[_0x7ddb[235]]);_0x9494x3= this[_0x7ddb[526]][_0x7ddb[159]]/ _0x9494x2[_0x7ddb[117]];_0x9494x4= this[_0x7ddb[441]][_0x7ddb[255]]* _0x9494x3;mxUtils[_0x7ddb[1134]](this[_0x7ddb[526]])?(this[_0x7ddb[441]][_0x7ddb[2262]](_0x9494x4),this[_0x7ddb[526]][_0x7ddb[360]]= Math[_0x7ddb[488]](_0x9494x2[_0x7ddb[235]]* _0x9494x3),this[_0x7ddb[526]][_0x7ddb[190]]= Math[_0x7ddb[488]](_0x9494x2[_0x7ddb[236]]* _0x9494x3)):this[_0x7ddb[441]][_0x7ddb[829]](_0x9494x4,this[_0x7ddb[441]][_0x7ddb[513]][_0x7ddb[235]]- _0x9494x2[_0x7ddb[235]]/ this[_0x7ddb[441]][_0x7ddb[255]],this[_0x7ddb[441]][_0x7ddb[513]][_0x7ddb[236]]- _0x9494x2[_0x7ddb[236]]/ this[_0x7ddb[441]][_0x7ddb[255]])};mxGraph[_0x7ddb[202]][_0x7ddb[933]]= function(_0x9494x2,_0x9494x3){if(null!= this[_0x7ddb[526]]){_0x9494x2= null!= _0x9494x2?_0x9494x2:0;_0x9494x3= null!= _0x9494x3?_0x9494x3:!1;var _0x9494x4=this[_0x7ddb[526]][_0x7ddb[159]],_0x9494x5=this[_0x7ddb[526]][_0x7ddb[157]],_0x9494x9=this[_0x7ddb[441]][_0x7ddb[517]]();_0x9494x3&& (null!= _0x9494x9[_0x7ddb[235]]&& null!= _0x9494x9[_0x7ddb[236]])&& (_0x9494x9[_0x7ddb[117]]+= _0x9494x9[_0x7ddb[235]],_0x9494x9[_0x7ddb[119]]+= _0x9494x9[_0x7ddb[236]],_0x9494x9[_0x7ddb[235]]= 0,_0x9494x9[_0x7ddb[236]]= 0);var _0x9494xa=this[_0x7ddb[441]][_0x7ddb[255]],_0x9494x12=_0x9494x9[_0x7ddb[117]]/ _0x9494xa,_0x9494x13=_0x9494x9[_0x7ddb[119]]/ _0x9494xa;null!= this[_0x7ddb[1617]]&& (_0x9494x12= Math[_0x7ddb[160]](_0x9494x12,this[_0x7ddb[1617]][_0x7ddb[117]]- _0x9494x9[_0x7ddb[235]]/ _0x9494xa),_0x9494x13= Math[_0x7ddb[160]](_0x9494x13,this[_0x7ddb[1617]][_0x7ddb[119]]- _0x9494x9[_0x7ddb[236]]/ _0x9494xa));var _0x9494x14=_0x9494x3?_0x9494x2:2* _0x9494x2,_0x9494x4=Math[_0x7ddb[519]](100* Math[_0x7ddb[243]](_0x9494x4/ (_0x9494x12+ _0x9494x14),_0x9494x5/ (_0x9494x13+ _0x9494x14)))/ 100;null!= this[_0x7ddb[2413]]&& (_0x9494x4= Math[_0x7ddb[160]](_0x9494x4,this[_0x7ddb[2413]]));null!= this[_0x7ddb[2414]]&& (_0x9494x4= Math[_0x7ddb[243]](_0x9494x4,this[_0x7ddb[2414]]));_0x9494x3?this[_0x7ddb[441]][_0x7ddb[255]]!= _0x9494x4&& this[_0x7ddb[441]][_0x7ddb[2262]](_0x9494x4):mxUtils[_0x7ddb[1134]](this[_0x7ddb[526]])?(this[_0x7ddb[441]][_0x7ddb[2262]](_0x9494x4),null!= _0x9494x9[_0x7ddb[235]]&& (this[_0x7ddb[526]][_0x7ddb[360]]= Math[_0x7ddb[488]](_0x9494x9[_0x7ddb[235]]/ _0x9494xa)* _0x9494x4- _0x9494x2- Math[_0x7ddb[160]](0,(this[_0x7ddb[526]][_0x7ddb[159]]- _0x9494x12* _0x9494x4)/ 2)),null!= _0x9494x9[_0x7ddb[236]]&& (this[_0x7ddb[526]][_0x7ddb[190]]= Math[_0x7ddb[488]](_0x9494x9[_0x7ddb[236]]/ _0x9494xa)* _0x9494x4- _0x9494x2- Math[_0x7ddb[160]](0,(this[_0x7ddb[526]][_0x7ddb[157]]- _0x9494x13* _0x9494x4)/ 2))):this[_0x7ddb[441]][_0x7ddb[829]](_0x9494x4,null!= _0x9494x9[_0x7ddb[235]]?Math[_0x7ddb[519]](this[_0x7ddb[441]][_0x7ddb[513]][_0x7ddb[235]]- _0x9494x9[_0x7ddb[235]]/ _0x9494xa+ _0x9494x2+ 1):_0x9494x2,null!= _0x9494x9[_0x7ddb[236]]?Math[_0x7ddb[519]](this[_0x7ddb[441]][_0x7ddb[513]][_0x7ddb[236]]- _0x9494x9[_0x7ddb[236]]/ _0x9494xa+ _0x9494x2+ 1):_0x9494x2)};return this[_0x7ddb[441]][_0x7ddb[255]]};mxGraph[_0x7ddb[202]][_0x7ddb[2564]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=-this[_0x7ddb[441]][_0x7ddb[513]][_0x7ddb[235]],_0x9494x5=-this[_0x7ddb[441]][_0x7ddb[513]][_0x7ddb[236]],_0x9494x9=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x2);null!= _0x9494x9&& (_0x9494x4= new mxRectangle(_0x9494x4+ _0x9494x9[_0x7ddb[235]],_0x9494x5+ _0x9494x9[_0x7ddb[236]],_0x9494x9[_0x7ddb[117]],_0x9494x9[_0x7ddb[119]]),_0x9494x3&& null!= this[_0x7ddb[526]]&& (_0x9494x5= this[_0x7ddb[526]][_0x7ddb[159]],_0x9494x9= this[_0x7ddb[526]][_0x7ddb[157]],_0x9494x4[_0x7ddb[235]]= _0x9494x4[_0x7ddb[241]]()- _0x9494x5/ 2,_0x9494x4[_0x7ddb[117]]= _0x9494x5,_0x9494x4[_0x7ddb[236]]= _0x9494x4[_0x7ddb[242]]()- _0x9494x9/ 2,_0x9494x4[_0x7ddb[119]]= _0x9494x9),this[_0x7ddb[2562]](_0x9494x4)&& this[_0x7ddb[441]][_0x7ddb[1147]](this[_0x7ddb[441]][_0x7ddb[513]][_0x7ddb[235]],this[_0x7ddb[441]][_0x7ddb[513]][_0x7ddb[236]]))};mxGraph[_0x7ddb[202]][_0x7ddb[2562]]= function(_0x9494x2){var _0x9494x3=!1;if(null!= _0x9494x2){var _0x9494x4=this[_0x7ddb[526]][_0x7ddb[359]],_0x9494x5=this[_0x7ddb[526]][_0x7ddb[167]],_0x9494x9=Math[_0x7ddb[243]](_0x9494x4,_0x9494x2[_0x7ddb[117]]),_0x9494xa=Math[_0x7ddb[243]](_0x9494x5,_0x9494x2[_0x7ddb[119]]);if(mxUtils[_0x7ddb[1134]](this[_0x7ddb[526]])){_0x9494x4= this[_0x7ddb[526]];_0x9494x2[_0x7ddb[235]]+= this[_0x7ddb[441]][_0x7ddb[513]][_0x7ddb[235]];_0x9494x2[_0x7ddb[236]]+= this[_0x7ddb[441]][_0x7ddb[513]][_0x7ddb[236]];var _0x9494x12=_0x9494x4[_0x7ddb[360]]- _0x9494x2[_0x7ddb[235]],_0x9494x5=Math[_0x7ddb[160]](_0x9494x12- _0x9494x4[_0x7ddb[360]],0);0< _0x9494x12?_0x9494x4[_0x7ddb[360]]-= _0x9494x12+ 2:(_0x9494x12= _0x9494x2[_0x7ddb[235]]+ _0x9494x9- _0x9494x4[_0x7ddb[360]]- _0x9494x4[_0x7ddb[159]],0< _0x9494x12&& (_0x9494x4[_0x7ddb[360]]+= _0x9494x12+ 2));_0x9494x9= _0x9494x4[_0x7ddb[190]]- _0x9494x2[_0x7ddb[236]];_0x9494x12= Math[_0x7ddb[160]](0,_0x9494x9- _0x9494x4[_0x7ddb[190]]);0< _0x9494x9?_0x9494x4[_0x7ddb[190]]-= _0x9494x9+ 2:(_0x9494x9= _0x9494x2[_0x7ddb[236]]+ _0x9494xa- _0x9494x4[_0x7ddb[190]]- _0x9494x4[_0x7ddb[157]],0< _0x9494x9&& (_0x9494x4[_0x7ddb[190]]+= _0x9494x9+ 2));!this[_0x7ddb[2365]]&& (0!= _0x9494x5|| 0!= _0x9494x12) && this[_0x7ddb[441]][_0x7ddb[1147]](_0x9494x5,_0x9494x12)}else {var _0x9494x12=-this[_0x7ddb[441]][_0x7ddb[513]][_0x7ddb[235]],_0x9494x13=-this[_0x7ddb[441]][_0x7ddb[513]][_0x7ddb[236]],_0x9494x14=this[_0x7ddb[441]][_0x7ddb[255]];_0x9494x2[_0x7ddb[235]]+ _0x9494x9> _0x9494x12+ _0x9494x4&& (this[_0x7ddb[441]][_0x7ddb[513]][_0x7ddb[235]]-= (_0x9494x2[_0x7ddb[235]]+ _0x9494x9- _0x9494x4- _0x9494x12)/ _0x9494x14,_0x9494x3= !0);_0x9494x2[_0x7ddb[236]]+ _0x9494xa> _0x9494x13+ _0x9494x5&& (this[_0x7ddb[441]][_0x7ddb[513]][_0x7ddb[236]]-= (_0x9494x2[_0x7ddb[236]]+ _0x9494xa- _0x9494x5- _0x9494x13)/ _0x9494x14,_0x9494x3= !0);_0x9494x2[_0x7ddb[235]]< _0x9494x12&& (this[_0x7ddb[441]][_0x7ddb[513]][_0x7ddb[235]]+= (_0x9494x12- _0x9494x2[_0x7ddb[235]])/ _0x9494x14,_0x9494x3= !0);_0x9494x2[_0x7ddb[236]]< _0x9494x13&& (this[_0x7ddb[441]][_0x7ddb[513]][_0x7ddb[236]]+= (_0x9494x13- _0x9494x2[_0x7ddb[236]])/ _0x9494x14,_0x9494x3= !0);_0x9494x3&& (this[_0x7ddb[441]][_0x7ddb[802]](),null!= this[_0x7ddb[2432]]&& this[_0x7ddb[2432]][_0x7ddb[802]]())}};return _0x9494x3};mxGraph[_0x7ddb[202]][_0x7ddb[1198]]= function(_0x9494x2){return this[_0x7ddb[251]][_0x7ddb[1721]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[1714]]= function(_0x9494x2){return this[_0x7ddb[251]][_0x7ddb[174]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[1742]]= function(_0x9494x2){return this[_0x7ddb[251]][_0x7ddb[1971]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2565]]= function(_0x9494x2){return this[_0x7ddb[251]][_0x7ddb[1965]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2298]]= function(_0x9494x2){var _0x9494x3=_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2566]]];if(null!= _0x9494x3){return _0x9494x3};_0x9494x2= this[_0x7ddb[441]][_0x7ddb[2291]](_0x9494x2);return _0x9494x2== mxEdgeStyle[_0x7ddb[2567]]|| _0x9494x2== mxEdgeStyle[_0x7ddb[2568]]|| _0x9494x2== mxEdgeStyle[_0x7ddb[2569]]|| _0x9494x2== mxEdgeStyle[_0x7ddb[2570]]|| _0x9494x2== mxEdgeStyle[_0x7ddb[2571]]|| _0x9494x2== mxEdgeStyle[_0x7ddb[2572]]};mxGraph[_0x7ddb[202]][_0x7ddb[2573]]= function(_0x9494x2){var _0x9494x3=_0x9494x2[_0x7ddb[2089]](!0);_0x9494x2= _0x9494x2[_0x7ddb[2089]](!1);return null!= _0x9494x3&& _0x9494x3== _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2574]]= function(_0x9494x2){return mxEvent[_0x7ddb[775]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2462]]= function(_0x9494x2){return mxClient[_0x7ddb[2575]]?mxEvent[_0x7ddb[2576]](_0x9494x2):mxEvent[_0x7ddb[775]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[1018]]= function(_0x9494x2){return null!= _0x9494x2&& !mxEvent[_0x7ddb[2577]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2578]]= function(_0x9494x2){return mxEvent[_0x7ddb[774]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2579]]= function(_0x9494x2){return mxEvent[_0x7ddb[2577]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2580]]= function(_0x9494x2){mxUtils[_0x7ddb[150]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2581]]= function(_0x9494x2,_0x9494x3,_0x9494x4){return null== this[_0x7ddb[2500]](_0x9494x2,_0x9494x3,_0x9494x4)};mxGraph[_0x7ddb[202]][_0x7ddb[2500]]= function(_0x9494x2,_0x9494x3,_0x9494x4){if(null!= _0x9494x2&& !this[_0x7ddb[2530]]()&& (null== _0x9494x3|| null== _0x9494x4)){return _0x7ddb[110]};if(null!= _0x9494x2&& null== this[_0x7ddb[251]][_0x7ddb[1709]](_0x9494x2,!0)&& null== this[_0x7ddb[251]][_0x7ddb[1709]](_0x9494x2,!1)){return null};if(!this[_0x7ddb[2402]]&& _0x9494x3== _0x9494x4&& null!= _0x9494x3 || !this[_0x7ddb[2582]](_0x9494x3,_0x9494x4)){return _0x7ddb[110]};if(null!= _0x9494x3&& null!= _0x9494x4){var _0x9494x5=_0x7ddb[110];if(!this[_0x7ddb[2404]]){var _0x9494x9=this[_0x7ddb[251]][_0x7ddb[1781]](_0x9494x3,_0x9494x4,!0);if(1< _0x9494x9[_0x7ddb[67]]|| 1== _0x9494x9[_0x7ddb[67]]&& _0x9494x9[0]!= _0x9494x2){_0x9494x5+= (mxResources[_0x7ddb[203]](this[_0x7ddb[2421]])|| this[_0x7ddb[2421]])+ _0x7ddb[192]}};var _0x9494x9=this[_0x7ddb[251]][_0x7ddb[1962]](_0x9494x3,!0,_0x9494x2),_0x9494xa=this[_0x7ddb[251]][_0x7ddb[1962]](_0x9494x4,!1,_0x9494x2);if(null!= this[_0x7ddb[2335]]){for(var _0x9494x12=0;_0x9494x12< this[_0x7ddb[2335]][_0x7ddb[67]];_0x9494x12++){var _0x9494x13=this[_0x7ddb[2335]][_0x9494x12][_0x7ddb[2583]](this,_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x9,_0x9494xa);null!= _0x9494x13&& (_0x9494x5+= _0x9494x13)}};_0x9494x13= this[_0x7ddb[2584]](_0x9494x2,_0x9494x3,_0x9494x4);null!= _0x9494x13&& (_0x9494x5+= _0x9494x13);return 0< _0x9494x5[_0x7ddb[67]]?_0x9494x5:null};return this[_0x7ddb[2406]]?null:_0x7ddb[110]};mxGraph[_0x7ddb[202]][_0x7ddb[2584]]= function(_0x9494x2,_0x9494x3,_0x9494x4){return null};mxGraph[_0x7ddb[202]][_0x7ddb[2585]]= function(_0x9494x2,_0x9494x3){_0x9494x2= null!= _0x9494x2?_0x9494x2:this[_0x7ddb[251]][_0x7ddb[501]]();_0x9494x3= null!= _0x9494x3?_0x9494x3:{};for(var _0x9494x4=!0,_0x9494x5=this[_0x7ddb[251]][_0x7ddb[262]](_0x9494x2),_0x9494x9=0;_0x9494x9< _0x9494x5;_0x9494x9++){var _0x9494xa=this[_0x7ddb[251]][_0x7ddb[263]](_0x9494x2,_0x9494x9),_0x9494x12=_0x9494x3;this[_0x7ddb[2553]](_0x9494xa)&& (_0x9494x12= {});_0x9494x12= this[_0x7ddb[2585]](_0x9494xa,_0x9494x12);null!= _0x9494x12?this[_0x7ddb[2447]](_0x9494xa,_0x9494x12[_0x7ddb[230]](/\n/g,_0x7ddb[545])):this[_0x7ddb[2447]](_0x9494xa,null);_0x9494x4= _0x9494x4&& null== _0x9494x12};_0x9494x5= _0x7ddb[110];this[_0x7ddb[1742]](_0x9494x2)&& !_0x9494x4&& (_0x9494x5+= (mxResources[_0x7ddb[203]](this[_0x7ddb[2423]])|| this[_0x7ddb[2423]])+ _0x7ddb[192]);_0x9494x5= this[_0x7ddb[251]][_0x7ddb[250]](_0x9494x2)?_0x9494x5+ (this[_0x7ddb[2500]](_0x9494x2,this[_0x7ddb[251]][_0x7ddb[1709]](_0x9494x2,!0),this[_0x7ddb[251]][_0x7ddb[1709]](_0x9494x2,!1))|| _0x7ddb[110]):_0x9494x5+ (this[_0x7ddb[2586]](_0x9494x2)|| _0x7ddb[110]);_0x9494x9= this[_0x7ddb[2587]](_0x9494x2,_0x9494x3);null!= _0x9494x9&& (_0x9494x5+= _0x9494x9);null== this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x2)&& this[_0x7ddb[441]][_0x7ddb[2264]]();return 0< _0x9494x5[_0x7ddb[67]]|| !_0x9494x4?_0x9494x5:null};mxGraph[_0x7ddb[202]][_0x7ddb[2586]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[251]][_0x7ddb[1962]](_0x9494x2,!0),_0x9494x4=this[_0x7ddb[251]][_0x7ddb[1962]](_0x9494x2,!1);_0x9494x2= this[_0x7ddb[251]][_0x7ddb[433]](_0x9494x2);var _0x9494x5=_0x7ddb[110];if(null!= this[_0x7ddb[2335]]){for(var _0x9494x9=0;_0x9494x9< this[_0x7ddb[2335]][_0x7ddb[67]];_0x9494x9++){var _0x9494xa=this[_0x7ddb[2335]][_0x9494x9];if(_0x9494xa[_0x7ddb[1097]]&& mxUtils[_0x7ddb[1331]](_0x9494x2,_0x9494xa[_0x7ddb[60]],_0x9494xa[_0x7ddb[2588]],_0x9494xa[_0x7ddb[131]])&& (0== _0x9494xa[_0x7ddb[160]]&& 0< _0x9494x3|| 1== _0x9494xa[_0x7ddb[243]]&& 0== _0x9494x3|| 1== _0x9494xa[_0x7ddb[160]]&& 1< _0x9494x3)){_0x9494x5+= _0x9494xa[_0x7ddb[2589]]+ _0x7ddb[192]}else {if(!_0x9494xa[_0x7ddb[1097]]&& mxUtils[_0x7ddb[1331]](_0x9494x2,_0x9494xa[_0x7ddb[60]],_0x9494xa[_0x7ddb[2588]],_0x9494xa[_0x7ddb[131]]) && (0== _0x9494xa[_0x7ddb[160]]&& 0< _0x9494x4|| 1== _0x9494xa[_0x7ddb[243]]&& 0== _0x9494x4|| 1== _0x9494xa[_0x7ddb[160]]&& 1< _0x9494x4)){_0x9494x5+= _0x9494xa[_0x7ddb[2589]]+ _0x7ddb[192]}}}};return 0< _0x9494x5[_0x7ddb[67]]?_0x9494x5:null};mxGraph[_0x7ddb[202]][_0x7ddb[2587]]= function(_0x9494x2,_0x9494x3){return null};mxGraph[_0x7ddb[202]][_0x7ddb[2271]]= function(){return this[_0x7ddb[1617]]};mxGraph[_0x7ddb[202]][_0x7ddb[2590]]= function(_0x9494x2){this[_0x7ddb[1617]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2205]]= function(_0x9494x2){if(null!= _0x9494x2&& this[_0x7ddb[2206]]&& !this[_0x7ddb[502]]()[_0x7ddb[250]](_0x9494x2[_0x7ddb[246]])){var _0x9494x3=this[_0x7ddb[1742]](_0x9494x2[_0x7ddb[246]]);if(this[_0x7ddb[2516]](_0x9494x2[_0x7ddb[246]],!_0x9494x3)){return _0x9494x3?this[_0x7ddb[2415]]:this[_0x7ddb[2417]]}};return null};mxGraph[_0x7ddb[202]][_0x7ddb[2454]]= function(_0x9494x2){_0x9494x2= this[_0x7ddb[251]][_0x7ddb[433]](_0x9494x2);if(null!= _0x9494x2){if(mxUtils[_0x7ddb[1331]](_0x9494x2)){return _0x9494x2[_0x7ddb[301]]};if(_0x7ddb[279]== typeof _0x9494x2[_0x7ddb[2591]]){return _0x9494x2.toString()}};return _0x7ddb[110]};mxGraph[_0x7ddb[202]][_0x7ddb[2183]]= function(_0x9494x2){var _0x9494x3=_0x7ddb[110];if(this[_0x7ddb[2409]]&& null!= _0x9494x2){var _0x9494x4=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x2),_0x9494x4=null!= _0x9494x4?_0x9494x4[_0x7ddb[124]]:this[_0x7ddb[1705]](_0x9494x2);mxUtils[_0x7ddb[433]](_0x9494x4,mxConstants.STYLE_NOLABEL,!1)|| (_0x9494x3= this[_0x7ddb[2454]](_0x9494x2))};return _0x9494x3};mxGraph[_0x7ddb[202]][_0x7ddb[2186]]= function(_0x9494x2){return this[_0x7ddb[2592]]()};mxGraph[_0x7ddb[202]][_0x7ddb[2592]]= function(){return this[_0x7ddb[2410]]};mxGraph[_0x7ddb[202]][_0x7ddb[2593]]= function(_0x9494x2){this[_0x7ddb[2410]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2131]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x2);_0x9494x2= null!= _0x9494x3?_0x9494x3[_0x7ddb[124]]:this[_0x7ddb[1705]](_0x9494x2);return null!= _0x9494x2?_0x7ddb[1333]== _0x9494x2[mxConstants[_0x7ddb[2594]]]:!1};mxGraph[_0x7ddb[202]][_0x7ddb[2130]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x2);_0x9494x2= null!= _0x9494x3?_0x9494x3[_0x7ddb[124]]:this[_0x7ddb[1705]](_0x9494x2);return null!= _0x9494x2?_0x7ddb[188]== _0x9494x2[mxConstants[_0x7ddb[2193]]]:!1};mxGraph[_0x7ddb[202]][_0x7ddb[2595]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){var _0x9494x9=null;if(null!= _0x9494x2){if(null!= _0x9494x2[_0x7ddb[2207]]&& (_0x9494x3== _0x9494x2[_0x7ddb[2207]][_0x7ddb[252]]|| _0x9494x3[_0x7ddb[265]]== _0x9494x2[_0x7ddb[2207]][_0x7ddb[252]])){_0x9494x9= this[_0x7ddb[2425]],_0x9494x9= mxResources[_0x7ddb[203]](_0x9494x9)|| _0x9494x9};null== _0x9494x9&& null!= _0x9494x2[_0x7ddb[1211]]&& _0x9494x2[_0x7ddb[1211]][_0x7ddb[209]](function(_0x9494x2,_0x9494x4){if(null== _0x9494x9&& (_0x9494x3== _0x9494x4[_0x7ddb[252]]|| _0x9494x3[_0x7ddb[265]]== _0x9494x4[_0x7ddb[252]])){_0x9494x9= _0x9494x4[_0x7ddb[2201]].toString()}});null== _0x9494x9&& (_0x9494x4= this[_0x7ddb[2432]][_0x7ddb[2596]](_0x9494x2[_0x7ddb[246]]),null!= _0x9494x4&& _0x7ddb[279]== typeof _0x9494x4[_0x7ddb[2597]]&& (_0x9494x9= _0x9494x4[_0x7ddb[2597]](_0x9494x3)));null== _0x9494x9&& (_0x9494x9= this[_0x7ddb[2598]](_0x9494x2[_0x7ddb[246]]))};return _0x9494x9};mxGraph[_0x7ddb[202]][_0x7ddb[2598]]= function(_0x9494x2){var _0x9494x3=null;return _0x9494x3= null!= _0x9494x2&& null!= _0x9494x2[_0x7ddb[2595]]?_0x9494x2[_0x7ddb[2595]]():this[_0x7ddb[2454]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2599]]= function(_0x9494x2){return null};mxGraph[_0x7ddb[202]][_0x7ddb[1731]]= function(_0x9494x2){var _0x9494x3= new mxRectangle,_0x9494x4=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x2);_0x9494x2= null!= _0x9494x4?_0x9494x4[_0x7ddb[124]]:this[_0x7ddb[1705]](_0x9494x2);null!= _0x9494x2&& (_0x9494x4= parseInt(mxUtils[_0x7ddb[433]](_0x9494x2,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils[_0x7ddb[433]](_0x9494x2,mxConstants.STYLE_HORIZONTAL,!0)?_0x9494x3[_0x7ddb[119]]= _0x9494x4:_0x9494x3[_0x7ddb[117]]= _0x9494x4);return _0x9494x3};mxGraph[_0x7ddb[202]][_0x7ddb[1202]]= function(_0x9494x2){return null!= _0x9494x2&& null!= _0x9494x2[_0x7ddb[124]]?_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2484]]]:null};mxGraph[_0x7ddb[202]][_0x7ddb[2187]]= function(_0x9494x2){return null!= _0x9494x2&& null!= _0x9494x2[_0x7ddb[124]]?_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2063]]]|| mxConstants[_0x7ddb[481]]:null};mxGraph[_0x7ddb[202]][_0x7ddb[2173]]= function(_0x9494x2){return null!= _0x9494x2&& null!= _0x9494x2[_0x7ddb[124]]?_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2600]]]:null};mxGraph[_0x7ddb[202]][_0x7ddb[2174]]= function(_0x9494x2){return null!= _0x9494x2&& null!= _0x9494x2[_0x7ddb[124]]?_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2601]]]:null};mxGraph[_0x7ddb[202]][_0x7ddb[2172]]= function(_0x9494x2){return null!= _0x9494x2&& null!= _0x9494x2[_0x7ddb[124]]?_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2602]]]:null};mxGraph[_0x7ddb[202]][_0x7ddb[2176]]= function(_0x9494x2){return null!= _0x9494x2&& null!= _0x9494x2[_0x7ddb[124]]?_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2603]]]:null};mxGraph[_0x7ddb[202]][_0x7ddb[2476]]= function(){return this[_0x7ddb[467]]};mxGraph[_0x7ddb[202]][_0x7ddb[2604]]= function(_0x9494x2){this[_0x7ddb[467]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[1730]]= function(_0x9494x2){if(null!= _0x9494x2&& this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x2)!= this[_0x7ddb[251]][_0x7ddb[501]]()){var _0x9494x3=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x2),_0x9494x3=null!= _0x9494x3?_0x9494x3[_0x7ddb[124]]:this[_0x7ddb[1705]](_0x9494x2);if(null!= _0x9494x3&& !this[_0x7ddb[251]][_0x7ddb[250]](_0x9494x2)){return _0x9494x3[mxConstants[_0x7ddb[2059]]]== mxConstants[_0x7ddb[2605]]}};return !1};mxGraph[_0x7ddb[202]][_0x7ddb[2606]]= function(){return this[_0x7ddb[2389]]};mxGraph[_0x7ddb[202]][_0x7ddb[2607]]= function(_0x9494x2){this[_0x7ddb[2389]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[994]]= function(){return this[_0x7ddb[984]]};mxGraph[_0x7ddb[202]][_0x7ddb[995]]= function(_0x9494x2){this[_0x7ddb[984]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2608]]= function(){return this[_0x7ddb[2362]]};mxGraph[_0x7ddb[202]][_0x7ddb[2609]]= function(_0x9494x2){this[_0x7ddb[2362]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2134]]= function(){return this[_0x7ddb[2363]]};mxGraph[_0x7ddb[202]][_0x7ddb[2610]]= function(_0x9494x2){this[_0x7ddb[2363]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2125]]= function(){return this[_0x7ddb[2364]]};mxGraph[_0x7ddb[202]][_0x7ddb[2611]]= function(_0x9494x2){this[_0x7ddb[2364]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2612]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[251]][_0x7ddb[1721]](_0x9494x2);return this[_0x7ddb[2613]]()|| null!= _0x9494x3&& this[_0x7ddb[251]][_0x7ddb[1193]](_0x9494x2)&& _0x9494x3[_0x7ddb[1500]]};mxGraph[_0x7ddb[202]][_0x7ddb[2613]]= function(){return this[_0x7ddb[2368]]};mxGraph[_0x7ddb[202]][_0x7ddb[2614]]= function(_0x9494x2){this[_0x7ddb[2368]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2615]]= function(_0x9494x2){return this[_0x7ddb[251]][_0x7ddb[1938]](_0x9494x2,mxUtils[_0x7ddb[885]](this,function(_0x9494x2){return this[_0x7ddb[2616]](_0x9494x2)}))};mxGraph[_0x7ddb[202]][_0x7ddb[2616]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x2);_0x9494x2= null!= _0x9494x3?_0x9494x3[_0x7ddb[124]]:this[_0x7ddb[1705]](_0x9494x2);return this[_0x7ddb[2617]]()&& 0!= _0x9494x2[mxConstants[_0x7ddb[2618]]]};mxGraph[_0x7ddb[202]][_0x7ddb[2617]]= function(){return this[_0x7ddb[2369]]};mxGraph[_0x7ddb[202]][_0x7ddb[2619]]= function(_0x9494x2){this[_0x7ddb[2369]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[898]]= function(_0x9494x2){return this[_0x7ddb[251]][_0x7ddb[1938]](_0x9494x2,mxUtils[_0x7ddb[885]](this,function(_0x9494x2){return this[_0x7ddb[2620]](_0x9494x2)}))};mxGraph[_0x7ddb[202]][_0x7ddb[2620]]= function(_0x9494x2){return this[_0x7ddb[2366]]};mxGraph[_0x7ddb[202]][_0x7ddb[900]]= function(_0x9494x2){return this[_0x7ddb[251]][_0x7ddb[1938]](_0x9494x2,mxUtils[_0x7ddb[885]](this,function(_0x9494x2){return this[_0x7ddb[2621]](_0x9494x2)}))};mxGraph[_0x7ddb[202]][_0x7ddb[2621]]= function(_0x9494x2){return this[_0x7ddb[2367]]};mxGraph[_0x7ddb[202]][_0x7ddb[2102]]= function(_0x9494x2){return this[_0x7ddb[2622]]()};mxGraph[_0x7ddb[202]][_0x7ddb[2622]]= function(){return this[_0x7ddb[2379]]};mxGraph[_0x7ddb[202]][_0x7ddb[2623]]= function(_0x9494x2){this[_0x7ddb[2379]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2510]]= function(_0x9494x2){return this[_0x7ddb[251]][_0x7ddb[1938]](_0x9494x2,mxUtils[_0x7ddb[885]](this,function(_0x9494x2){return this[_0x7ddb[2624]](_0x9494x2)}))};mxGraph[_0x7ddb[202]][_0x7ddb[2624]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x2);_0x9494x2= null!= _0x9494x3?_0x9494x3[_0x7ddb[124]]:this[_0x7ddb[1705]](_0x9494x2);return this[_0x7ddb[2625]]()&& 0!= _0x9494x2[mxConstants[_0x7ddb[2626]]]};mxGraph[_0x7ddb[202]][_0x7ddb[2625]]= function(){return this[_0x7ddb[2371]]};mxGraph[_0x7ddb[202]][_0x7ddb[2627]]= function(_0x9494x2){this[_0x7ddb[2371]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2628]]= function(_0x9494x2){return !this[_0x7ddb[2612]](_0x9494x2)&& (this[_0x7ddb[251]][_0x7ddb[250]](_0x9494x2)&& this[_0x7ddb[2373]]|| this[_0x7ddb[251]][_0x7ddb[1193]](_0x9494x2)&& this[_0x7ddb[2374]])};mxGraph[_0x7ddb[202]][_0x7ddb[2629]]= function(_0x9494x2){return this[_0x7ddb[251]][_0x7ddb[1938]](_0x9494x2,mxUtils[_0x7ddb[885]](this,function(_0x9494x2){return this[_0x7ddb[1712]](_0x9494x2)}))};mxGraph[_0x7ddb[202]][_0x7ddb[1712]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x2),_0x9494x3=null!= _0x9494x3?_0x9494x3[_0x7ddb[124]]:this[_0x7ddb[1705]](_0x9494x2);return this[_0x7ddb[2630]]()&& !this[_0x7ddb[2612]](_0x9494x2)&& 0!= _0x9494x3[mxConstants[_0x7ddb[2631]]]};mxGraph[_0x7ddb[202]][_0x7ddb[2630]]= function(){return this[_0x7ddb[2372]]};mxGraph[_0x7ddb[202]][_0x7ddb[2632]]= function(_0x9494x2){this[_0x7ddb[2372]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[997]]= function(){return this[_0x7ddb[991]]};mxGraph[_0x7ddb[202]][_0x7ddb[998]]= function(_0x9494x2){this[_0x7ddb[991]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2549]]= function(){return this[_0x7ddb[2348]]};mxGraph[_0x7ddb[202]][_0x7ddb[2633]]= function(_0x9494x2){this[_0x7ddb[2348]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2634]]= function(){return this[_0x7ddb[1020]]};mxGraph[_0x7ddb[202]][_0x7ddb[2635]]= function(_0x9494x2){this[_0x7ddb[1020]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2636]]= function(){return this[_0x7ddb[2353]]};mxGraph[_0x7ddb[202]][_0x7ddb[2637]]= function(_0x9494x2){this[_0x7ddb[2353]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2638]]= function(){return this[_0x7ddb[2374]]};mxGraph[_0x7ddb[202]][_0x7ddb[2639]]= function(_0x9494x2){this[_0x7ddb[2374]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2640]]= function(){return this[_0x7ddb[2373]]};mxGraph[_0x7ddb[202]][_0x7ddb[2641]]= function(_0x9494x2){this[_0x7ddb[2373]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2642]]= function(){return this[_0x7ddb[2412]]};mxGraph[_0x7ddb[202]][_0x7ddb[2643]]= function(_0x9494x2){this[_0x7ddb[2412]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2460]]= function(){return this[_0x7ddb[2411]]};mxGraph[_0x7ddb[202]][_0x7ddb[2644]]= function(_0x9494x2){this[_0x7ddb[2411]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2645]]= function(){return this[_0x7ddb[2404]]};mxGraph[_0x7ddb[202]][_0x7ddb[2646]]= function(_0x9494x2){this[_0x7ddb[2404]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2647]]= function(){return this[_0x7ddb[2402]]};mxGraph[_0x7ddb[202]][_0x7ddb[2648]]= function(_0x9494x2){this[_0x7ddb[2406]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2530]]= function(){return this[_0x7ddb[2406]]};mxGraph[_0x7ddb[202]][_0x7ddb[2649]]= function(_0x9494x2){this[_0x7ddb[2405]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2650]]= function(){return this[_0x7ddb[2405]]};mxGraph[_0x7ddb[202]][_0x7ddb[2651]]= function(_0x9494x2){this[_0x7ddb[2407]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2527]]= function(){return this[_0x7ddb[2407]]};mxGraph[_0x7ddb[202]][_0x7ddb[2652]]= function(_0x9494x2){this[_0x7ddb[2402]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2529]]= function(){return this[_0x7ddb[2408]]};mxGraph[_0x7ddb[202]][_0x7ddb[2653]]= function(_0x9494x2){this[_0x7ddb[2408]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[1015]]= function(){return this[_0x7ddb[2375]]};mxGraph[_0x7ddb[202]][_0x7ddb[2654]]= function(_0x9494x2){this[_0x7ddb[2375]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2655]]= function(){return this[_0x7ddb[2376]]};mxGraph[_0x7ddb[202]][_0x7ddb[2656]]= function(_0x9494x2){this[_0x7ddb[2376]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2657]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x2),_0x9494x3=null!= _0x9494x3?_0x9494x3[_0x7ddb[124]]:this[_0x7ddb[1705]](_0x9494x2);return this[_0x7ddb[2658]]()&& !this[_0x7ddb[2612]](_0x9494x2)&& 0!= _0x9494x3[mxConstants[_0x7ddb[2659]]]};mxGraph[_0x7ddb[202]][_0x7ddb[2658]]= function(){return this[_0x7ddb[2377]]};mxGraph[_0x7ddb[202]][_0x7ddb[2660]]= function(_0x9494x2){this[_0x7ddb[2377]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2661]]= function(_0x9494x2,_0x9494x3){return !0};mxGraph[_0x7ddb[202]][_0x7ddb[2662]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x2),_0x9494x3=null!= _0x9494x3?_0x9494x3[_0x7ddb[124]]:this[_0x7ddb[1705]](_0x9494x2);return this[_0x7ddb[2663]]()&& !this[_0x7ddb[2612]](_0x9494x2)&& 0!= _0x9494x3[mxConstants[_0x7ddb[2664]]]};mxGraph[_0x7ddb[202]][_0x7ddb[2663]]= function(){return this[_0x7ddb[2378]]};mxGraph[_0x7ddb[202]][_0x7ddb[2665]]= function(_0x9494x2){this[_0x7ddb[2378]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2453]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x2),_0x9494x3=null!= _0x9494x3?_0x9494x3[_0x7ddb[124]]:this[_0x7ddb[1705]](_0x9494x2);return this[_0x7ddb[2666]]()&& !this[_0x7ddb[2612]](_0x9494x2)&& 0!= _0x9494x3[mxConstants[_0x7ddb[2667]]]};mxGraph[_0x7ddb[202]][_0x7ddb[2666]]= function(){return this[_0x7ddb[2370]]};mxGraph[_0x7ddb[202]][_0x7ddb[2668]]= function(_0x9494x2){this[_0x7ddb[2370]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2551]]= function(_0x9494x2,_0x9494x3,_0x9494x4){return this[_0x7ddb[2669]]()&& !this[_0x7ddb[2612]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2669]]= function(){return this[_0x7ddb[2380]]};mxGraph[_0x7ddb[202]][_0x7ddb[2670]]= function(_0x9494x2){this[_0x7ddb[2380]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2671]]= function(_0x9494x2){return null== _0x9494x2&& this[_0x7ddb[2406]]|| null!= _0x9494x2&& (!this[_0x7ddb[251]][_0x7ddb[250]](_0x9494x2)|| this[_0x7ddb[2405]])&& this[_0x7ddb[2565]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2672]]= function(_0x9494x2){return this[_0x7ddb[2671]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2582]]= function(_0x9494x2,_0x9494x3){return this[_0x7ddb[2671]](_0x9494x2)&& this[_0x7ddb[2672]](_0x9494x3)};mxGraph[_0x7ddb[202]][_0x7ddb[1995]]= function(_0x9494x2){this[_0x7ddb[2433]][_0x7ddb[995]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[1965]]= function(_0x9494x2){return this[_0x7ddb[2433]][_0x7ddb[994]]()};mxGraph[_0x7ddb[202]][_0x7ddb[2673]]= function(_0x9494x2){this[_0x7ddb[2276]][_0x7ddb[995]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2674]]= function(_0x9494x2){this[_0x7ddb[2316]][_0x7ddb[2431]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2203]]= function(_0x9494x2){if(null!= this[_0x7ddb[2347]]){var _0x9494x3=this[_0x7ddb[2347]][_0x7ddb[2148]]();return null== _0x9494x2?null!= _0x9494x3:_0x9494x2== _0x9494x3};return !1};mxGraph[_0x7ddb[202]][_0x7ddb[2455]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x2);_0x9494x2= null!= _0x9494x3?_0x9494x3[_0x7ddb[124]]:this[_0x7ddb[1705]](_0x9494x2);return this[_0x7ddb[2675]]()|| 1== _0x9494x2[mxConstants[_0x7ddb[2676]]]};mxGraph[_0x7ddb[202]][_0x7ddb[2675]]= function(){return this[_0x7ddb[2381]]};mxGraph[_0x7ddb[202]][_0x7ddb[2677]]= function(_0x9494x2){this[_0x7ddb[2381]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2507]]= function(_0x9494x2){return !this[_0x7ddb[502]]()[_0x7ddb[250]](_0x9494x2)&& this[_0x7ddb[2678]]()};mxGraph[_0x7ddb[202]][_0x7ddb[2678]]= function(){return this[_0x7ddb[2392]]};mxGraph[_0x7ddb[202]][_0x7ddb[2679]]= function(_0x9494x2){this[_0x7ddb[2392]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2506]]= function(){return this[_0x7ddb[2393]]};mxGraph[_0x7ddb[202]][_0x7ddb[2680]]= function(_0x9494x2){this[_0x7ddb[2393]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2536]]= function(_0x9494x2){return this[_0x7ddb[2681]]()&& !this[_0x7ddb[502]]()[_0x7ddb[250]](this[_0x7ddb[502]]()[_0x7ddb[1197]](_0x9494x2))};mxGraph[_0x7ddb[202]][_0x7ddb[2681]]= function(){return this[_0x7ddb[2391]]};mxGraph[_0x7ddb[202]][_0x7ddb[2682]]= function(_0x9494x2){this[_0x7ddb[2391]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2505]]= function(){return this[_0x7ddb[2390]]};mxGraph[_0x7ddb[202]][_0x7ddb[2528]]= function(_0x9494x2){this[_0x7ddb[2390]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2537]]= function(_0x9494x2){return this[_0x7ddb[2683]](_0x9494x2)?this[_0x7ddb[2354]]:0};mxGraph[_0x7ddb[202]][_0x7ddb[2683]]= function(_0x9494x2){return !1};mxGraph[_0x7ddb[202]][_0x7ddb[2513]]= function(_0x9494x2,_0x9494x3){return this[_0x7ddb[251]][_0x7ddb[1938]](_0x9494x2,mxUtils[_0x7ddb[885]](this,function(_0x9494x2){return this[_0x7ddb[2516]](_0x9494x2,_0x9494x3)}))};mxGraph[_0x7ddb[202]][_0x7ddb[2516]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x2),_0x9494x4=null!= _0x9494x4?_0x9494x4[_0x7ddb[124]]:this[_0x7ddb[1705]](_0x9494x2);return 0< this[_0x7ddb[251]][_0x7ddb[262]](_0x9494x2)&& 0!= _0x9494x4[mxConstants[_0x7ddb[2684]]]};mxGraph[_0x7ddb[202]][_0x7ddb[2685]]= function(_0x9494x2,_0x9494x3,_0x9494x4){return null!= _0x9494x2&& (this[_0x7ddb[2655]]()&& this[_0x7ddb[2686]](_0x9494x2,_0x9494x3,_0x9494x4)|| !this[_0x7ddb[251]][_0x7ddb[250]](_0x9494x2)&& (this[_0x7ddb[1730]](_0x9494x2)|| 0< this[_0x7ddb[251]][_0x7ddb[262]](_0x9494x2)&& !this[_0x7ddb[1742]](_0x9494x2)))};mxGraph[_0x7ddb[202]][_0x7ddb[2686]]= function(_0x9494x2,_0x9494x3,_0x9494x4){return this[_0x7ddb[251]][_0x7ddb[250]](_0x9494x2)&& null!= _0x9494x3&& 1== _0x9494x3[_0x7ddb[67]]&& this[_0x7ddb[2565]](_0x9494x3[0])&& null== this[_0x7ddb[2500]](_0x9494x2,this[_0x7ddb[251]][_0x7ddb[1709]](_0x9494x2,!0),_0x9494x3[0])?(_0x9494x4= this[_0x7ddb[251]][_0x7ddb[1709]](_0x9494x2,!0),_0x9494x2= this[_0x7ddb[251]][_0x7ddb[1709]](_0x9494x2,!1),!this[_0x7ddb[251]][_0x7ddb[1720]](_0x9494x3[0],_0x9494x4)&& !this[_0x7ddb[251]][_0x7ddb[1720]](_0x9494x3[0],_0x9494x2)):!1};mxGraph[_0x7ddb[202]][_0x7ddb[564]]= function(_0x9494x2,_0x9494x3,_0x9494x4){if(!this[_0x7ddb[2642]]()){for(var _0x9494x5=0;_0x9494x5< _0x9494x2[_0x7ddb[67]];_0x9494x5++){if(this[_0x7ddb[1730]](_0x9494x2[_0x9494x5])){return null}}};_0x9494x5= mxUtils[_0x7ddb[2196]](this[_0x7ddb[526]],mxEvent[_0x7ddb[731]](_0x9494x3),mxEvent[_0x7ddb[733]](_0x9494x3));_0x9494x5[_0x7ddb[235]]-= this[_0x7ddb[1136]];_0x9494x5[_0x7ddb[236]]-= this[_0x7ddb[1137]];_0x9494x5= this[_0x7ddb[2461]](_0x9494x5[_0x7ddb[235]],_0x9494x5[_0x7ddb[236]]);if(null== _0x9494x4){_0x9494x4= _0x9494x5}else {if(null!= _0x9494x5){for(var _0x9494x9=this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x5);null!= _0x9494x9&& this[_0x7ddb[1730]](_0x9494x9)&& _0x9494x9!= _0x9494x4;){_0x9494x9= this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x9)};_0x9494x9== _0x9494x4&& (_0x9494x4= _0x9494x5)}};for(;null!= _0x9494x4&& !this[_0x7ddb[2685]](_0x9494x4,_0x9494x2,_0x9494x3)&& !this[_0x7ddb[251]][_0x7ddb[1740]](_0x9494x4);){_0x9494x4= this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x4)};return !this[_0x7ddb[251]][_0x7ddb[1740]](_0x9494x4)&& 0> mxUtils[_0x7ddb[2]](_0x9494x2,_0x9494x4)?_0x9494x4:null};mxGraph[_0x7ddb[202]][_0x7ddb[902]]= function(){var _0x9494x2=this[_0x7ddb[2355]];null== _0x9494x2&& (_0x9494x2= this[_0x7ddb[2534]](),null== _0x9494x2&& (_0x9494x2= this[_0x7ddb[251]][_0x7ddb[501]](),_0x9494x2= this[_0x7ddb[251]][_0x7ddb[263]](_0x9494x2,0)));return _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2687]]= function(_0x9494x2){this[_0x7ddb[2355]]= _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2179]]= function(_0x9494x2){for(;null!= _0x9494x2&& !this[_0x7ddb[1730]](_0x9494x2);){_0x9494x2= this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x2)};return _0x9494x2};mxGraph[_0x7ddb[202]][_0x7ddb[2461]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x4= _0x9494x4|| this[_0x7ddb[902]]();if(null!= _0x9494x4){for(var _0x9494x5=this[_0x7ddb[251]][_0x7ddb[262]](_0x9494x4),_0x9494x9=0;_0x9494x9< _0x9494x5;_0x9494x9++){var _0x9494xa=this[_0x7ddb[251]][_0x7ddb[263]](_0x9494x4,_0x9494x9),_0x9494x12=this[_0x7ddb[2461]](_0x9494x2,_0x9494x3,_0x9494xa);if(null!= _0x9494x12){return _0x9494x12};if(this[_0x7ddb[1730]](_0x9494xa)&& (_0x9494x12= this[_0x7ddb[441]][_0x7ddb[248]](_0x9494xa),this[_0x7ddb[1825]](_0x9494x12,_0x9494x2,_0x9494x3))){return _0x9494xa}}};return null};mxGraph[_0x7ddb[202]][_0x7ddb[999]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x9494x5= null!= _0x9494x5?_0x9494x5:!0;_0x9494x9= null!= _0x9494x9?_0x9494x9:!0;_0x9494x4= null!= _0x9494x4?_0x9494x4:this[_0x7ddb[902]]();if(null!= _0x9494x4){for(var _0x9494xa=this[_0x7ddb[251]][_0x7ddb[262]](_0x9494x4)- 1;0<= _0x9494xa;_0x9494xa--){var _0x9494x12=this[_0x7ddb[251]][_0x7ddb[263]](_0x9494x4,_0x9494xa),_0x9494x13=this[_0x7ddb[999]](_0x9494x2,_0x9494x3,_0x9494x12,_0x9494x5,_0x9494x9);if(null!= _0x9494x13){return _0x9494x13};if(this[_0x7ddb[1714]](_0x9494x12)&& (_0x9494x9&& this[_0x7ddb[251]][_0x7ddb[250]](_0x9494x12)|| _0x9494x5&& this[_0x7ddb[251]][_0x7ddb[1193]](_0x9494x12))){if(_0x9494x13= this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x12),this[_0x7ddb[1825]](_0x9494x13,_0x9494x2,_0x9494x3)){return _0x9494x12}}}};return null};mxGraph[_0x7ddb[202]][_0x7ddb[1825]]= function(_0x9494x2,_0x9494x3,_0x9494x4){if(null!= _0x9494x2){var _0x9494x5=_0x9494x2[_0x7ddb[439]];if(null!= _0x9494x5){_0x9494x2= this[_0x7ddb[2353]]* this[_0x7ddb[2353]];for(var _0x9494x9=_0x9494x5[0],_0x9494xa=1;_0x9494xa< _0x9494x5[_0x7ddb[67]];_0x9494xa++){var _0x9494x12=_0x9494x5[_0x9494xa];if(mxUtils[_0x7ddb[440]](_0x9494x9[_0x7ddb[235]],_0x9494x9[_0x7ddb[236]],_0x9494x12[_0x7ddb[235]],_0x9494x12[_0x7ddb[236]],_0x9494x3,_0x9494x4)<= _0x9494x2){return !0};_0x9494x9= _0x9494x12}}else {if(_0x9494x9= mxUtils[_0x7ddb[431]](mxUtils[_0x7ddb[433]](_0x9494x2[_0x7ddb[124]],mxConstants.STYLE_ROTATION)|| 0),0!= _0x9494x9&& (_0x9494x5= Math[_0x7ddb[426]](-_0x9494x9),_0x9494x9= Math[_0x7ddb[427]](-_0x9494x9),_0x9494xa= new mxPoint(_0x9494x2[_0x7ddb[241]](),_0x9494x2[_0x7ddb[242]]()),_0x9494x9= mxUtils[_0x7ddb[432]]( new mxPoint(_0x9494x3,_0x9494x4),_0x9494x5,_0x9494x9,_0x9494xa),_0x9494x3= _0x9494x9[_0x7ddb[235]],_0x9494x4= _0x9494x9[_0x7ddb[236]]),mxUtils[_0x7ddb[442]](_0x9494x2,_0x9494x3,_0x9494x4)){return !0}}};return !1};mxGraph[_0x7ddb[202]][_0x7ddb[2688]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=this[_0x7ddb[249]]()[_0x7ddb[248]](_0x9494x2);_0x9494x2= this[_0x7ddb[1731]](_0x9494x2);if(null!= _0x9494x5){var _0x9494x9=this[_0x7ddb[249]]()[_0x7ddb[518]]();_0x9494x3-= _0x9494x5[_0x7ddb[235]];_0x9494x4-= _0x9494x5[_0x7ddb[236]];if(0< _0x9494x2[_0x7ddb[117]]&& 0< _0x9494x3&& _0x9494x3> _0x9494x2[_0x7ddb[117]]* _0x9494x9|| 0< _0x9494x2[_0x7ddb[119]]&& 0< _0x9494x4&& _0x9494x4> _0x9494x2[_0x7ddb[119]]* _0x9494x9){return !0}};return !1};mxGraph[_0x7ddb[202]][_0x7ddb[1728]]= function(_0x9494x2){return this[_0x7ddb[1955]](_0x9494x2,!0,!1)};mxGraph[_0x7ddb[202]][_0x7ddb[1956]]= function(_0x9494x2){return this[_0x7ddb[1955]](_0x9494x2,!1,!0)};mxGraph[_0x7ddb[202]][_0x7ddb[1955]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x2= null!= _0x9494x2?_0x9494x2:this[_0x7ddb[902]]();_0x9494x2= this[_0x7ddb[251]][_0x7ddb[1955]](_0x9494x2,null!= _0x9494x3?_0x9494x3:!1,null!= _0x9494x4?_0x9494x4:!1);_0x9494x3= [];for(_0x9494x4= 0;_0x9494x4< _0x9494x2[_0x7ddb[67]];_0x9494x4++){this[_0x7ddb[1714]](_0x9494x2[_0x9494x4])&& _0x9494x3[_0x7ddb[207]](_0x9494x2[_0x9494x4])};return _0x9494x3};mxGraph[_0x7ddb[202]][_0x7ddb[1756]]= function(_0x9494x2,_0x9494x3){return this[_0x7ddb[264]](_0x9494x2,_0x9494x3,!0,!0,!1)};mxGraph[_0x7ddb[202]][_0x7ddb[1867]]= function(_0x9494x2,_0x9494x3){return this[_0x7ddb[264]](_0x9494x2,_0x9494x3,!0,!1,!1)};mxGraph[_0x7ddb[202]][_0x7ddb[1963]]= function(_0x9494x2,_0x9494x3){return this[_0x7ddb[264]](_0x9494x2,_0x9494x3,!1,!0,!1)};mxGraph[_0x7ddb[202]][_0x7ddb[264]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){_0x9494x4= null!= _0x9494x4?_0x9494x4:!0;_0x9494x5= null!= _0x9494x5?_0x9494x5:!0;_0x9494x9= null!= _0x9494x9?_0x9494x9:!0;_0x9494xa= null!= _0x9494xa?_0x9494xa:!1;for(var _0x9494x12=[],_0x9494x13=this[_0x7ddb[1742]](_0x9494x2),_0x9494x14=this[_0x7ddb[251]][_0x7ddb[262]](_0x9494x2),_0x9494x15=0;_0x9494x15< _0x9494x14;_0x9494x15++){var _0x9494x16=this[_0x7ddb[251]][_0x7ddb[263]](_0x9494x2,_0x9494x15);if(_0x9494x13|| !this[_0x7ddb[1714]](_0x9494x16)){_0x9494x12= _0x9494x12[_0x7ddb[1919]](this[_0x7ddb[251]][_0x7ddb[264]](_0x9494x16,_0x9494x4,_0x9494x5))}};_0x9494x12= _0x9494x12[_0x7ddb[1919]](this[_0x7ddb[251]][_0x7ddb[264]](_0x9494x2,_0x9494x4,_0x9494x5));_0x9494x13= [];for(_0x9494x15= 0;_0x9494x15< _0x9494x12[_0x7ddb[67]];_0x9494x15++){_0x9494x16= this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x12[_0x9494x15]),_0x9494x14= null!= _0x9494x16?_0x9494x16[_0x7ddb[1710]](!0):this[_0x7ddb[441]][_0x7ddb[1710]](_0x9494x12[_0x9494x15],!0),_0x9494x16= null!= _0x9494x16?_0x9494x16[_0x7ddb[1710]](!1):this[_0x7ddb[441]][_0x7ddb[1710]](_0x9494x12[_0x9494x15],!1),(_0x9494x9&& _0x9494x14== _0x9494x16|| _0x9494x14!= _0x9494x16&& (_0x9494x4&& _0x9494x16== _0x9494x2&& (null== _0x9494x3|| this[_0x7ddb[1920]](_0x9494x14,_0x9494x3,_0x9494xa))|| _0x9494x5&& _0x9494x14== _0x9494x2&& (null== _0x9494x3|| this[_0x7ddb[1920]](_0x9494x16,_0x9494x3,_0x9494xa))))&& _0x9494x13[_0x7ddb[207]](_0x9494x12[_0x9494x15])};return _0x9494x13};mxGraph[_0x7ddb[202]][_0x7ddb[1920]]= function(_0x9494x2,_0x9494x3,_0x9494x4){return _0x9494x4?this[_0x7ddb[251]][_0x7ddb[1720]](_0x9494x3,_0x9494x2):this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x2)== _0x9494x3};mxGraph[_0x7ddb[202]][_0x7ddb[1808]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){_0x9494x4= null!= _0x9494x4?_0x9494x4:!0;_0x9494x5= null!= _0x9494x5?_0x9494x5:!0;var _0x9494x9=[],_0x9494xa={};if(null!= _0x9494x2){for(var _0x9494x12=0;_0x9494x12< _0x9494x2[_0x7ddb[67]];_0x9494x12++){var _0x9494x13=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x2[_0x9494x12]),_0x9494x14=null!= _0x9494x13?_0x9494x13[_0x7ddb[1710]](!0):this[_0x7ddb[441]][_0x7ddb[1710]](_0x9494x2[_0x9494x12],!0),_0x9494x13=null!= _0x9494x13?_0x9494x13[_0x7ddb[1710]](!1):this[_0x7ddb[441]][_0x7ddb[1710]](_0x9494x2[_0x9494x12],!1);if(_0x9494x14== _0x9494x3&& null!= _0x9494x13&& _0x9494x13!= _0x9494x3&& _0x9494x5){var _0x9494x15=mxCellPath[_0x7ddb[385]](_0x9494x13);null== _0x9494xa[_0x9494x15]&& (_0x9494xa[_0x9494x15]= _0x9494x13,_0x9494x9[_0x7ddb[207]](_0x9494x13))}else {_0x9494x13== _0x9494x3&& (null!= _0x9494x14&& _0x9494x14!= _0x9494x3&& _0x9494x4)&& (_0x9494x15= mxCellPath[_0x7ddb[385]](_0x9494x14),null== _0x9494xa[_0x9494x15]&& (_0x9494xa[_0x9494x15]= _0x9494x14,_0x9494x9[_0x7ddb[207]](_0x9494x14)))}}};return _0x9494x9};mxGraph[_0x7ddb[202]][_0x7ddb[1781]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x4= null!= _0x9494x4?_0x9494x4:!1;for(var _0x9494x5=this[_0x7ddb[264]](_0x9494x2),_0x9494x9=[],_0x9494xa=0;_0x9494xa< _0x9494x5[_0x7ddb[67]];_0x9494xa++){var _0x9494x12=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x5[_0x9494xa]),_0x9494x13=null!= _0x9494x12?_0x9494x12[_0x7ddb[1710]](!0):this[_0x7ddb[441]][_0x7ddb[1710]](_0x9494x5[_0x9494xa],!0),_0x9494x12=null!= _0x9494x12?_0x9494x12[_0x7ddb[1710]](!1):this[_0x7ddb[441]][_0x7ddb[1710]](_0x9494x5[_0x9494xa],!1);(_0x9494x13== _0x9494x2&& _0x9494x12== _0x9494x3|| !_0x9494x4&& _0x9494x13== _0x9494x3 && _0x9494x12== _0x9494x2)&& _0x9494x9[_0x7ddb[207]](_0x9494x5[_0x9494xa])};return _0x9494x9};mxGraph[_0x7ddb[202]][_0x7ddb[2689]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=mxUtils[_0x7ddb[2196]](this[_0x7ddb[526]],mxEvent[_0x7ddb[731]](_0x9494x2),mxEvent[_0x7ddb[733]](_0x9494x2)),_0x9494x5=this[_0x7ddb[441]][_0x7ddb[255]],_0x9494x9=this[_0x7ddb[441]][_0x7ddb[513]],_0x9494xa=!1!= _0x9494x3?this[_0x7ddb[1020]]/ 2:0;_0x9494x4[_0x7ddb[235]]= this[_0x7ddb[1021]](_0x9494x4[_0x7ddb[235]]/ _0x9494x5- _0x9494x9[_0x7ddb[235]]- _0x9494xa);_0x9494x4[_0x7ddb[236]]= this[_0x7ddb[1021]](_0x9494x4[_0x7ddb[236]]/ _0x9494x5- _0x9494x9[_0x7ddb[236]]- _0x9494xa);return _0x9494x4};mxGraph[_0x7ddb[202]][_0x7ddb[2690]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){_0x9494xa= null!= _0x9494xa?_0x9494xa:[];if(0< _0x9494x4|| 0< _0x9494x5){var _0x9494x12=_0x9494x2+ _0x9494x4,_0x9494x13=_0x9494x3+ _0x9494x5;_0x9494x9= _0x9494x9|| this[_0x7ddb[902]]();if(null!= _0x9494x9){for(var _0x9494x14=this[_0x7ddb[251]][_0x7ddb[262]](_0x9494x9),_0x9494x15=0;_0x9494x15< _0x9494x14;_0x9494x15++){var _0x9494x16=this[_0x7ddb[251]][_0x7ddb[263]](_0x9494x9,_0x9494x15),_0x9494x17=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x16);if(this[_0x7ddb[1714]](_0x9494x16)&& null!= _0x9494x17){var _0x9494x18=_0x9494x17,_0x9494x17=mxUtils[_0x7ddb[433]](_0x9494x17[_0x7ddb[124]],mxConstants.STYLE_ROTATION)|| 0;0!= _0x9494x17&& (_0x9494x18= mxUtils[_0x7ddb[1613]](_0x9494x18,_0x9494x17));_0x9494x18[_0x7ddb[235]]>= _0x9494x2&& _0x9494x18[_0x7ddb[236]]+ _0x9494x18[_0x7ddb[119]]<= _0x9494x13&& _0x9494x18[_0x7ddb[236]]>= _0x9494x3&& _0x9494x18[_0x7ddb[235]]+ _0x9494x18[_0x7ddb[117]]<= _0x9494x12?_0x9494xa[_0x7ddb[207]](_0x9494x16):this[_0x7ddb[2690]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x16,_0x9494xa)}}}};return _0x9494xa};mxGraph[_0x7ddb[202]][_0x7ddb[2691]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){var _0x9494xa=[];if(_0x9494x5|| _0x9494x9){if(null== _0x9494x4&& (_0x9494x4= this[_0x7ddb[902]]()),null!= _0x9494x4){for(var _0x9494x12=this[_0x7ddb[251]][_0x7ddb[262]](_0x9494x4),_0x9494x13=0;_0x9494x13< _0x9494x12;_0x9494x13++){var _0x9494x14=this[_0x7ddb[251]][_0x7ddb[263]](_0x9494x4,_0x9494x13),_0x9494x15=this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x14);this[_0x7ddb[1714]](_0x9494x14)&& null!= _0x9494x15&& (!_0x9494x5|| _0x9494x15[_0x7ddb[235]]>= _0x9494x2)&& (!_0x9494x9|| _0x9494x15[_0x7ddb[236]]>= _0x9494x3)&& _0x9494xa[_0x7ddb[207]](_0x9494x14)}}};return _0x9494xa};mxGraph[_0x7ddb[202]][_0x7ddb[1757]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x3= null!= _0x9494x3?_0x9494x3:!1;_0x9494x4= null!= _0x9494x4?_0x9494x4:!1;var _0x9494x5=[];if(null!= _0x9494x2){for(var _0x9494x9=this[_0x7ddb[502]](),_0x9494xa=_0x9494x9[_0x7ddb[262]](_0x9494x2),_0x9494x12=null,_0x9494x13=0,_0x9494x14=0;_0x9494x14< _0x9494xa;_0x9494x14++){var _0x9494x15=_0x9494x9[_0x7ddb[263]](_0x9494x2,_0x9494x14);if(this[_0x7ddb[251]][_0x7ddb[1193]](_0x9494x15)&& this[_0x7ddb[1714]](_0x9494x15)){for(var _0x9494x16=this[_0x7ddb[1756]](_0x9494x15,_0x9494x3?_0x9494x2:null),_0x9494x17=0,_0x9494x18=0,_0x9494x19=0;_0x9494x19< _0x9494x16[_0x7ddb[67]];_0x9494x19++){this[_0x7ddb[441]][_0x7ddb[1710]](_0x9494x16[_0x9494x19],!0)== _0x9494x15?_0x9494x17++:_0x9494x18++};(_0x9494x4&& 0== _0x9494x17&& 0< _0x9494x18|| !_0x9494x4&& 0== _0x9494x18 && 0< _0x9494x17)&& _0x9494x5[_0x7ddb[207]](_0x9494x15);_0x9494x16= _0x9494x4?_0x9494x18- _0x9494x17:_0x9494x17- _0x9494x18;_0x9494x16> _0x9494x13&& (_0x9494x13= _0x9494x16,_0x9494x12= _0x9494x15)}};0== _0x9494x5[_0x7ddb[67]]&& null!= _0x9494x12&& _0x9494x5[_0x7ddb[207]](_0x9494x12)};return _0x9494x5};mxGraph[_0x7ddb[202]][_0x7ddb[1706]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){if(null!= _0x9494x4&& null!= _0x9494x2){_0x9494x3= null!= _0x9494x3?_0x9494x3:!0;_0x9494x9= _0x9494x9|| [];var _0x9494xa=mxCellPath[_0x7ddb[385]](_0x9494x2);if(null== _0x9494x9[_0x9494xa]&& (_0x9494x9[_0x9494xa]= _0x9494x2,_0x9494x5= _0x9494x4(_0x9494x2,_0x9494x5),null== _0x9494x5|| _0x9494x5)){if(_0x9494x5= this[_0x7ddb[251]][_0x7ddb[1707]](_0x9494x2),0< _0x9494x5){for(_0x9494xa= 0;_0x9494xa< _0x9494x5;_0x9494xa++){var _0x9494x12=this[_0x7ddb[251]][_0x7ddb[1708]](_0x9494x2,_0x9494xa),_0x9494x13=this[_0x7ddb[251]][_0x7ddb[1709]](_0x9494x12,!0)== _0x9494x2;if(!_0x9494x3|| _0x9494x13){_0x9494x13= this[_0x7ddb[251]][_0x7ddb[1709]](_0x9494x12,!_0x9494x13),this[_0x7ddb[1706]](_0x9494x13,_0x9494x3,_0x9494x4,_0x9494x12,_0x9494x9)}}}}}};mxGraph[_0x7ddb[202]][_0x7ddb[2692]]= function(_0x9494x2){return this[_0x7ddb[2435]]()[_0x7ddb[2097]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2693]]= function(){return this[_0x7ddb[2435]]()[_0x7ddb[1107]]()};mxGraph[_0x7ddb[202]][_0x7ddb[2440]]= function(){return this[_0x7ddb[2435]]()[_0x7ddb[200]]()};mxGraph[_0x7ddb[202]][_0x7ddb[2694]]= function(){return this[_0x7ddb[2435]]()[_0x7ddb[895]][_0x7ddb[67]]};mxGraph[_0x7ddb[202]][_0x7ddb[2452]]= function(){return this[_0x7ddb[2435]]()[_0x7ddb[895]][0]};mxGraph[_0x7ddb[202]][_0x7ddb[897]]= function(){return this[_0x7ddb[2435]]()[_0x7ddb[895]][_0x7ddb[1853]]()};mxGraph[_0x7ddb[202]][_0x7ddb[2450]]= function(_0x9494x2){this[_0x7ddb[2435]]()[_0x7ddb[2099]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[904]]= function(_0x9494x2){this[_0x7ddb[2435]]()[_0x7ddb[2100]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2695]]= function(_0x9494x2){this[_0x7ddb[2435]]()[_0x7ddb[2103]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2696]]= function(_0x9494x2){this[_0x7ddb[2435]]()[_0x7ddb[832]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2697]]= function(_0x9494x2){this[_0x7ddb[2435]]()[_0x7ddb[2104]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2439]]= function(_0x9494x2){this[_0x7ddb[2435]]()[_0x7ddb[842]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2698]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[2690]](_0x9494x2[_0x7ddb[235]],_0x9494x2[_0x7ddb[236]],_0x9494x2[_0x7ddb[117]],_0x9494x2[_0x7ddb[119]]);this[_0x7ddb[2699]](_0x9494x4,_0x9494x3);return _0x9494x4};mxGraph[_0x7ddb[202]][_0x7ddb[2700]]= function(){this[_0x7ddb[2701]](!0)};mxGraph[_0x7ddb[202]][_0x7ddb[2702]]= function(){this[_0x7ddb[2701]]()};mxGraph[_0x7ddb[202]][_0x7ddb[2703]]= function(){this[_0x7ddb[2701]](!1,!0)};mxGraph[_0x7ddb[202]][_0x7ddb[2704]]= function(){this[_0x7ddb[2701]](!1,!1,!0)};mxGraph[_0x7ddb[202]][_0x7ddb[2701]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=this[_0x7ddb[2105]],_0x9494x9=0< _0x9494x5[_0x7ddb[895]][_0x7ddb[67]]?_0x9494x5[_0x7ddb[895]][0]:null;1< _0x9494x5[_0x7ddb[895]][_0x7ddb[67]]&& _0x9494x5[_0x7ddb[200]]();var _0x9494x5=null!= _0x9494x9?this[_0x7ddb[251]][_0x7ddb[1197]](_0x9494x9):this[_0x7ddb[902]](),_0x9494xa=this[_0x7ddb[251]][_0x7ddb[262]](_0x9494x5);null== _0x9494x9&& 0< _0x9494xa?(_0x9494x2= this[_0x7ddb[251]][_0x7ddb[263]](_0x9494x5,0),this[_0x7ddb[2450]](_0x9494x2)):(null== _0x9494x9|| _0x9494x3)&& null!= this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x5)&& null!= this[_0x7ddb[251]][_0x7ddb[1721]](_0x9494x5)?this[_0x7ddb[2534]]()!= _0x9494x5&& this[_0x7ddb[2450]](_0x9494x5):null!= _0x9494x9&& _0x9494x4?0< this[_0x7ddb[251]][_0x7ddb[262]](_0x9494x9)&& (_0x9494x2= this[_0x7ddb[251]][_0x7ddb[263]](_0x9494x9,0),this[_0x7ddb[2450]](_0x9494x2)):0< _0x9494xa&& (_0x9494x3= _0x9494x5[_0x7ddb[1738]](_0x9494x9),_0x9494x2?(_0x9494x3++,_0x9494x2= this[_0x7ddb[251]][_0x7ddb[263]](_0x9494x5,_0x9494x3% _0x9494xa)):(_0x9494x3--,_0x9494x2= this[_0x7ddb[251]][_0x7ddb[263]](_0x9494x5,0> _0x9494x3?_0x9494xa- 1:_0x9494x3)),this[_0x7ddb[2450]](_0x9494x2))};mxGraph[_0x7ddb[202]][_0x7ddb[2705]]= function(_0x9494x2){_0x9494x2= _0x9494x2|| this[_0x7ddb[902]]();_0x9494x2= this[_0x7ddb[251]][_0x7ddb[1953]](_0x9494x2);null!= _0x9494x2&& this[_0x7ddb[904]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2706]]= function(_0x9494x2){this[_0x7ddb[2707]](!0,!1,_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2708]]= function(_0x9494x2){this[_0x7ddb[2707]](!1,!0,_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2707]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x4= _0x9494x4|| this[_0x7ddb[902]]();var _0x9494x5=mxUtils[_0x7ddb[885]](this,function(_0x9494x4){return null!= this[_0x7ddb[441]][_0x7ddb[248]](_0x9494x4)&& 0== this[_0x7ddb[251]][_0x7ddb[262]](_0x9494x4)&& (this[_0x7ddb[251]][_0x7ddb[1193]](_0x9494x4)&& _0x9494x2|| this[_0x7ddb[251]][_0x7ddb[250]](_0x9494x4)&& _0x9494x3)});_0x9494x4= this[_0x7ddb[251]][_0x7ddb[1921]](_0x9494x5,_0x9494x4);this[_0x7ddb[904]](_0x9494x4)};mxGraph[_0x7ddb[202]][_0x7ddb[2459]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[2692]](_0x9494x2);this[_0x7ddb[2462]](_0x9494x3)?_0x9494x4?this[_0x7ddb[2697]](_0x9494x2):this[_0x7ddb[2695]](_0x9494x2):(!_0x9494x4|| 1!= this[_0x7ddb[2694]]()) && this[_0x7ddb[2450]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2699]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[2462]](_0x9494x3)?this[_0x7ddb[2696]](_0x9494x2):this[_0x7ddb[904]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[2709]]= function(_0x9494x2){var _0x9494x3=null;null!= _0x9494x2&& (this[_0x7ddb[251]][_0x7ddb[250]](_0x9494x2[_0x7ddb[246]])?(_0x9494x3= this[_0x7ddb[441]][_0x7ddb[2291]](_0x9494x2),_0x9494x3= this[_0x7ddb[2573]](_0x9494x2)|| _0x9494x3== mxEdgeStyle[_0x7ddb[2568]]|| _0x9494x3== mxEdgeStyle[_0x7ddb[2569]]|| _0x9494x3== mxEdgeStyle[_0x7ddb[2570]]? new mxElbowEdgeHandler(_0x9494x2):_0x9494x3== mxEdgeStyle[_0x7ddb[2567]]|| _0x9494x3== mxEdgeStyle[_0x7ddb[2572]]? new mxEdgeSegmentHandler(_0x9494x2): new mxEdgeHandler(_0x9494x2)):_0x9494x3= new mxVertexHandler(_0x9494x2));return _0x9494x3};mxGraph[_0x7ddb[202]][_0x7ddb[1133]]= function(_0x9494x2){null== this[_0x7ddb[2329]]&& (this[_0x7ddb[2329]]= []);this[_0x7ddb[2329]][_0x7ddb[207]](_0x9494x2)};mxGraph[_0x7ddb[202]][_0x7ddb[1148]]= function(_0x9494x2){if(null!= this[_0x7ddb[2329]]){for(var _0x9494x3=0;_0x9494x3< this[_0x7ddb[2329]][_0x7ddb[67]];_0x9494x3++){if(this[_0x7ddb[2329]][_0x9494x3]== _0x9494x2){this[_0x7ddb[2329]][_0x7ddb[300]](_0x9494x3,1);break}}}};mxGraph[_0x7ddb[202]][_0x7ddb[2710]]= function(_0x9494x2){if(null== _0x9494x2[_0x7ddb[725]]|| null== _0x9494x2[_0x7ddb[726]]){var _0x9494x3=mxUtils[_0x7ddb[2196]](this[_0x7ddb[526]],_0x9494x2[_0x7ddb[730]](),_0x9494x2[_0x7ddb[732]]());_0x9494x2[_0x7ddb[725]]= _0x9494x3[_0x7ddb[235]]- this[_0x7ddb[1136]];_0x9494x2[_0x7ddb[726]]= _0x9494x3[_0x7ddb[236]]- this[_0x7ddb[1137]]}};mxGraph[_0x7ddb[202]][_0x7ddb[758]]= function(_0x9494x2,_0x9494x3,_0x9494x4){null== _0x9494x4&& (_0x9494x4= this);this[_0x7ddb[2710]](_0x9494x3);_0x9494x2== mxEvent[_0x7ddb[2711]]&& (this[_0x7ddb[1009]]= !0);if(mxClient[_0x7ddb[754]]&& this[_0x7ddb[2349]]&& _0x9494x2== mxEvent[_0x7ddb[2711]]){var _0x9494x5=( new Date)[_0x7ddb[178]]();_0x9494x5- this[_0x7ddb[2213]]< this[_0x7ddb[2350]]&& Math[_0x7ddb[425]](this[_0x7ddb[2712]]- _0x9494x3[_0x7ddb[730]]())< this[_0x7ddb[2351]]&& Math[_0x7ddb[425]](this[_0x7ddb[2352]]- _0x9494x3[_0x7ddb[732]]())< this[_0x7ddb[2351]]?(this[_0x7ddb[2213]]= 0,this[_0x7ddb[761]](_0x9494x3[_0x7ddb[727]](),_0x9494x3[_0x7ddb[736]]()),_0x9494x3[_0x7ddb[727]]()[_0x7ddb[786]]= !0):(this[_0x7ddb[2712]]= _0x9494x3[_0x7ddb[730]](),this[_0x7ddb[2352]]= _0x9494x3[_0x7ddb[732]](),this[_0x7ddb[2213]]= _0x9494x5)};_0x9494x5= 2!= _0x9494x3[_0x7ddb[727]]()[_0x7ddb[764]];if(mxClient[_0x7ddb[80]]&& _0x7ddb[462]== document[_0x7ddb[135]]){if(null!= this[_0x7ddb[2713]]&& Math[_0x7ddb[425]](this[_0x7ddb[2713]]- _0x9494x3[_0x7ddb[730]]())> this[_0x7ddb[2351]]|| null!= this[_0x7ddb[2714]]&& Math[_0x7ddb[425]](this[_0x7ddb[2714]]- _0x9494x3[_0x7ddb[732]]())> this[_0x7ddb[2351]]){_0x9494x5= !0};_0x9494x2== mxEvent[_0x7ddb[2715]]&& (this[_0x7ddb[2713]]= _0x9494x3[_0x7ddb[730]](),this[_0x7ddb[2714]]= _0x9494x3[_0x7ddb[732]]())};if((_0x9494x2!= mxEvent[_0x7ddb[2715]]|| this[_0x7ddb[1009]])&& _0x9494x5){if(_0x9494x2== mxEvent[_0x7ddb[2715]]&& (this[_0x7ddb[1009]]= !1),!this[_0x7ddb[2203]]()&& (mxClient[_0x7ddb[71]]|| mxClient[_0x7ddb[75]]|| mxClient[_0x7ddb[76]]|| mxClient[_0x7ddb[80]]&& mxClient[_0x7ddb[48]]|| _0x9494x3[_0x7ddb[727]]()[_0x7ddb[772]]!= this[_0x7ddb[526]])){_0x9494x2== mxEvent[_0x7ddb[2716]]&& (this[_0x7ddb[1009]]&& this[_0x7ddb[1012]])&& this[_0x7ddb[1014]](_0x9494x3[_0x7ddb[734]](),_0x9494x3[_0x7ddb[735]](),this[_0x7ddb[1013]]);if(null!= this[_0x7ddb[2329]]){_0x9494x4= [_0x9494x4,_0x9494x3];_0x9494x3[_0x7ddb[727]]()[_0x7ddb[739]]= !0;for(_0x9494x5= 0;_0x9494x5< this[_0x7ddb[2329]][_0x7ddb[67]];_0x9494x5++){var _0x9494x9=this[_0x7ddb[2329]][_0x9494x5];_0x9494x2== mxEvent[_0x7ddb[2711]]?_0x9494x9[_0x7ddb[787]][_0x7ddb[183]](_0x9494x9,_0x9494x4):_0x9494x2== mxEvent[_0x7ddb[2716]]?_0x9494x9[_0x7ddb[788]][_0x7ddb[183]](_0x9494x9,_0x9494x4):_0x9494x2== mxEvent[_0x7ddb[2715]]&& _0x9494x9[_0x7ddb[789]][_0x7ddb[183]](_0x9494x9,_0x9494x4)}};_0x9494x2== mxEvent[_0x7ddb[2715]]&& this[_0x7ddb[173]](_0x9494x3)}}else {_0x9494x2== mxEvent[_0x7ddb[2715]]&& (this[_0x7ddb[1009]]= !1)}};mxGraph[_0x7ddb[202]][_0x7ddb[515]]= function(){this[_0x7ddb[2717]]|| (this[_0x7ddb[2717]]= !0,null!= this[_0x7ddb[2276]]&& this[_0x7ddb[2276]][_0x7ddb[515]](),null!= this[_0x7ddb[2432]]&& this[_0x7ddb[2432]][_0x7ddb[515]](),null!= this[_0x7ddb[2316]]&& this[_0x7ddb[2316]][_0x7ddb[515]](),null!= this[_0x7ddb[2433]]&& this[_0x7ddb[2433]][_0x7ddb[515]](),null!= this[_0x7ddb[1011]]&& this[_0x7ddb[1011]][_0x7ddb[515]](),null!= this[_0x7ddb[2347]]&& this[_0x7ddb[2347]][_0x7ddb[515]](),null!= this[_0x7ddb[441]]&& this[_0x7ddb[441]][_0x7ddb[515]](),null!= this[_0x7ddb[251]]&& null!= this[_0x7ddb[2343]]&& (this[_0x7ddb[251]][_0x7ddb[745]](this[_0x7ddb[2343]]),this[_0x7ddb[2343]]= null),this[_0x7ddb[526]]= null)};function mxCellOverlay(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){this[_0x7ddb[618]]= _0x9494x2;this[_0x7ddb[2718]]= _0x9494x3;this[_0x7ddb[611]]= null!= _0x9494x4?_0x9494x4:this[_0x7ddb[611]];this[_0x7ddb[123]]= null!= _0x9494x5?_0x9494x5:this[_0x7ddb[123]];this[_0x7ddb[1368]]= null!= _0x9494x9?_0x9494x9: new mxPoint;this[_0x7ddb[270]]= null!= _0x9494xa?_0x9494xa:_0x7ddb[2719]}mxCellOverlay[_0x7ddb[202]]= new mxEventSource;mxCellOverlay[_0x7ddb[202]][_0x7ddb[196]]= mxCellOverlay;mxCellOverlay[_0x7ddb[202]][_0x7ddb[618]]= null;mxCellOverlay[_0x7ddb[202]][_0x7ddb[2718]]= null;mxCellOverlay[_0x7ddb[202]][_0x7ddb[611]]= mxConstants[_0x7ddb[480]];mxCellOverlay[_0x7ddb[202]][_0x7ddb[123]]= mxConstants[_0x7ddb[482]];mxCellOverlay[_0x7ddb[202]][_0x7ddb[1368]]= null;mxCellOverlay[_0x7ddb[202]][_0x7ddb[270]]= null;mxCellOverlay[_0x7ddb[202]][_0x7ddb[2354]]= 0.5;mxCellOverlay[_0x7ddb[202]][_0x7ddb[1799]]= function(_0x9494x2){var _0x9494x3=_0x9494x2[_0x7ddb[441]][_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[250]](_0x9494x2[_0x7ddb[246]]),_0x9494x4=_0x9494x2[_0x7ddb[441]][_0x7ddb[255]],_0x9494x5=null,_0x9494x9=this[_0x7ddb[618]][_0x7ddb[117]],_0x9494xa=this[_0x7ddb[618]][_0x7ddb[119]];_0x9494x3?(_0x9494x3= _0x9494x2[_0x7ddb[439]],1== _0x9494x3[_0x7ddb[67]]% 2?_0x9494x5= _0x9494x3[Math[_0x7ddb[519]](_0x9494x3[_0x7ddb[67]]/ 2)]:(_0x9494x5= _0x9494x3[_0x7ddb[67]]/ 2,_0x9494x2= _0x9494x3[_0x9494x5- 1],_0x9494x3= _0x9494x3[_0x9494x5],_0x9494x5= new mxPoint(_0x9494x2[_0x7ddb[235]]+ (_0x9494x3[_0x7ddb[235]]- _0x9494x2[_0x7ddb[235]])/ 2,_0x9494x2[_0x7ddb[236]]+ (_0x9494x3[_0x7ddb[236]]- _0x9494x2[_0x7ddb[236]])/ 2))):(_0x9494x5= new mxPoint,_0x9494x5[_0x7ddb[235]]= this[_0x7ddb[611]]== mxConstants[_0x7ddb[2132]]?_0x9494x2[_0x7ddb[235]]:this[_0x7ddb[611]]== mxConstants[_0x7ddb[479]]?_0x9494x2[_0x7ddb[235]]+ _0x9494x2[_0x7ddb[117]]/ 2:_0x9494x2[_0x7ddb[235]]+ _0x9494x2[_0x7ddb[117]],_0x9494x5[_0x7ddb[236]]= this[_0x7ddb[123]]== mxConstants[_0x7ddb[1687]]?_0x9494x2[_0x7ddb[236]]:this[_0x7ddb[123]]== mxConstants[_0x7ddb[481]]?_0x9494x2[_0x7ddb[236]]+ _0x9494x2[_0x7ddb[119]]/ 2:_0x9494x2[_0x7ddb[236]]+ _0x9494x2[_0x7ddb[119]]);return new mxRectangle(Math[_0x7ddb[488]](_0x9494x5[_0x7ddb[235]]- (_0x9494x9* this[_0x7ddb[2354]]- this[_0x7ddb[1368]][_0x7ddb[235]])* _0x9494x4),Math[_0x7ddb[488]](_0x9494x5[_0x7ddb[236]]- (_0x9494xa* this[_0x7ddb[2354]]- this[_0x7ddb[1368]][_0x7ddb[236]])* _0x9494x4),_0x9494x9* _0x9494x4,_0x9494xa* _0x9494x4)};mxCellOverlay[_0x7ddb[202]][_0x7ddb[2591]]= function(){return this[_0x7ddb[2718]]};function mxOutline(_0x9494x2,_0x9494x3){this[_0x7ddb[1097]]= _0x9494x2;null!= _0x9494x3&& this[_0x7ddb[176]](_0x9494x3)}mxOutline[_0x7ddb[202]][_0x7ddb[1097]]= null;mxOutline[_0x7ddb[202]][_0x7ddb[2136]]= null;mxOutline[_0x7ddb[202]][_0x7ddb[2720]]= mxConstants[_0x7ddb[2333]];mxOutline[_0x7ddb[202]][_0x7ddb[984]]= !0;mxOutline[_0x7ddb[202]][_0x7ddb[2721]]= !0;mxOutline[_0x7ddb[202]][_0x7ddb[467]]= 10;mxOutline[_0x7ddb[202]][_0x7ddb[2722]]= 8;mxOutline[_0x7ddb[202]][_0x7ddb[2723]]= !1;mxOutline[_0x7ddb[202]][_0x7ddb[2724]]= null;mxOutline[_0x7ddb[202]][_0x7ddb[1063]]= !1;mxOutline[_0x7ddb[202]][_0x7ddb[176]]= function(_0x9494x2){this[_0x7ddb[2136]]= new mxGraph(_0x9494x2,this[_0x7ddb[1097]][_0x7ddb[502]](),this[_0x7ddb[2720]],this[_0x7ddb[1097]][_0x7ddb[2434]]());this[_0x7ddb[2136]][_0x7ddb[2206]]= !1;this[_0x7ddb[2136]][_0x7ddb[1012]]= !1;var _0x9494x3=this[_0x7ddb[2136]][_0x7ddb[1177]];this[_0x7ddb[2136]][_0x7ddb[1177]]= mxUtils[_0x7ddb[885]](this,function(_0x9494x2){!this[_0x7ddb[1063]]&& null!= this[_0x7ddb[2136]] && _0x9494x3[_0x7ddb[183]](this[_0x7ddb[2136]],arguments)});mxClient[_0x7ddb[48]]&& (_0x9494x2= this[_0x7ddb[2136]][_0x7ddb[249]]()[_0x7ddb[2051]]()[_0x7ddb[265]],_0x9494x2[_0x7ddb[57]](_0x7ddb[2725],_0x7ddb[2726]),_0x9494x2[_0x7ddb[57]](_0x7ddb[2727],_0x7ddb[2726]));this[_0x7ddb[2136]][_0x7ddb[2409]]= !1;this[_0x7ddb[2136]][_0x7ddb[995]](!1);this[_0x7ddb[2728]]= mxUtils[_0x7ddb[885]](this,function(_0x9494x2,_0x9494x3){!this[_0x7ddb[1063]]&& !this[_0x7ddb[1124]] && this[_0x7ddb[2729]]()});this[_0x7ddb[1097]][_0x7ddb[502]]()[_0x7ddb[169]](mxEvent.CHANGE,this[_0x7ddb[2728]]);this[_0x7ddb[2136]][_0x7ddb[1133]](this);_0x9494x2= this[_0x7ddb[1097]][_0x7ddb[249]]();_0x9494x2[_0x7ddb[169]](mxEvent.SCALE,this[_0x7ddb[2728]]);_0x9494x2[_0x7ddb[169]](mxEvent.TRANSLATE,this[_0x7ddb[2728]]);_0x9494x2[_0x7ddb[169]](mxEvent.SCALE_AND_TRANSLATE,this[_0x7ddb[2728]]);_0x9494x2[_0x7ddb[169]](mxEvent.DOWN,this[_0x7ddb[2728]]);_0x9494x2[_0x7ddb[169]](mxEvent.UP,this[_0x7ddb[2728]]);mxEvent[_0x7ddb[169]](this[_0x7ddb[1097]][_0x7ddb[526]],_0x7ddb[276],this[_0x7ddb[2728]]);this[_0x7ddb[2730]]= mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[2723]]&& this[_0x7ddb[2728]][_0x7ddb[183]](this,arguments)});this[_0x7ddb[1097]][_0x7ddb[169]](mxEvent.PAN,this[_0x7ddb[2730]]);this[_0x7ddb[2731]]= mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[2136]][_0x7ddb[2341]](this[_0x7ddb[1097]][_0x7ddb[2434]]());this[_0x7ddb[2136]][_0x7ddb[802]]()});this[_0x7ddb[1097]][_0x7ddb[169]](mxEvent.REFRESH,this[_0x7ddb[2731]]);this[_0x7ddb[1562]]= new mxRectangle(0,0,0,0);this[_0x7ddb[2732]]= new mxRectangleShape(this[_0x7ddb[1562]],null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH);this[_0x7ddb[2732]][_0x7ddb[507]]= this[_0x7ddb[2136]][_0x7ddb[507]]!= mxConstants[_0x7ddb[508]]?mxConstants[_0x7ddb[1523]]:mxConstants[_0x7ddb[508]];this[_0x7ddb[2732]][_0x7ddb[176]](this[_0x7ddb[2136]][_0x7ddb[249]]()[_0x7ddb[1524]]());mxEvent[_0x7ddb[2733]](this[_0x7ddb[2732]][_0x7ddb[252]],this[_0x7ddb[2136]]);this[_0x7ddb[2732]][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[1537]]= _0x7ddb[110];this[_0x7ddb[2734]]= this[_0x7ddb[2735]]();this[_0x7ddb[2734]][_0x7ddb[176]](this[_0x7ddb[2136]][_0x7ddb[249]]()[_0x7ddb[1524]]());this[_0x7ddb[984]]&& (this[_0x7ddb[2734]][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[270]]= _0x7ddb[356]);mxEvent[_0x7ddb[169]](this[_0x7ddb[2734]][_0x7ddb[252]],mxClient[_0x7ddb[754]]?_0x7ddb[755]:_0x7ddb[751],mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[2136]][_0x7ddb[758]](mxEvent.MOUSE_DOWN, new mxMouseEvent(_0x9494x2))}));this[_0x7ddb[2732]][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[495]]= this[_0x7ddb[2721]]?_0x7ddb[110]:_0x7ddb[130];this[_0x7ddb[2734]][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[495]]= this[_0x7ddb[2732]][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[495]];this[_0x7ddb[2732]][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[270]]= _0x7ddb[582];this[_0x7ddb[2729]](!1)};mxOutline[_0x7ddb[202]][_0x7ddb[994]]= function(){return this[_0x7ddb[984]]};mxOutline[_0x7ddb[202]][_0x7ddb[995]]= function(_0x9494x2){this[_0x7ddb[984]]= _0x9494x2};mxOutline[_0x7ddb[202]][_0x7ddb[2736]]= function(_0x9494x2){this[_0x7ddb[2734]][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[187]]= _0x9494x2?_0x7ddb[189]:_0x7ddb[188]};mxOutline[_0x7ddb[202]][_0x7ddb[802]]= function(){this[_0x7ddb[2729]](!0)};mxOutline[_0x7ddb[202]][_0x7ddb[2735]]= function(){var _0x9494x2=null!= this[_0x7ddb[2724]]? new mxImageShape( new mxRectangle(0,0,this[_0x7ddb[2724]][_0x7ddb[117]],this[_0x7ddb[2724]][_0x7ddb[119]]),this[_0x7ddb[2724]][_0x7ddb[390]]): new mxRectangleShape( new mxRectangle(0,0,this[_0x7ddb[2722]],this[_0x7ddb[2722]]),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);_0x9494x2[_0x7ddb[507]]= this[_0x7ddb[2136]][_0x7ddb[507]];return _0x9494x2};mxOutline[_0x7ddb[202]][_0x7ddb[2737]]= function(){return new mxRectangle(0,0,this[_0x7ddb[1097]][_0x7ddb[526]][_0x7ddb[1526]],this[_0x7ddb[1097]][_0x7ddb[526]][_0x7ddb[191]])};mxOutline[_0x7ddb[202]][_0x7ddb[2738]]= function(_0x9494x2){return null};mxOutline[_0x7ddb[202]][_0x7ddb[2729]]= function(_0x9494x2){if(null!= this[_0x7ddb[1097]]){var _0x9494x3=this[_0x7ddb[1097]][_0x7ddb[441]][_0x7ddb[255]],_0x9494x4=this[_0x7ddb[1097]][_0x7ddb[517]](),_0x9494x4= new mxRectangle(_0x9494x4[_0x7ddb[235]]/ _0x9494x3+ this[_0x7ddb[1097]][_0x7ddb[1136]],_0x9494x4[_0x7ddb[236]]/ _0x9494x3+ this[_0x7ddb[1097]][_0x7ddb[1137]],_0x9494x4[_0x7ddb[117]]/ _0x9494x3,_0x9494x4[_0x7ddb[119]]/ _0x9494x3),_0x9494x5= new mxRectangle(0,0,this[_0x7ddb[1097]][_0x7ddb[526]][_0x7ddb[159]]/ _0x9494x3,this[_0x7ddb[1097]][_0x7ddb[526]][_0x7ddb[157]]/ _0x9494x3),_0x9494x9=_0x9494x4[_0x7ddb[238]]();_0x9494x9[_0x7ddb[99]](_0x9494x5);var _0x9494xa=this[_0x7ddb[2737]](),_0x9494x5=Math[_0x7ddb[160]](_0x9494xa[_0x7ddb[117]]/ _0x9494x3,_0x9494x9[_0x7ddb[117]]),_0x9494x3=Math[_0x7ddb[160]](_0x9494xa[_0x7ddb[119]]/ _0x9494x3,_0x9494x9[_0x7ddb[119]]),_0x9494x9=Math[_0x7ddb[160]](0,this[_0x7ddb[2136]][_0x7ddb[526]][_0x7ddb[159]]- this[_0x7ddb[467]]),_0x9494xa=Math[_0x7ddb[160]](0,this[_0x7ddb[2136]][_0x7ddb[526]][_0x7ddb[157]]- this[_0x7ddb[467]]),_0x9494x9=Math[_0x7ddb[243]](_0x9494x9/ _0x9494x5,_0x9494xa/ _0x9494x3);if(0< _0x9494x9){this[_0x7ddb[2136]][_0x7ddb[249]]()[_0x7ddb[255]]!= _0x9494x9&& (this[_0x7ddb[2136]][_0x7ddb[249]]()[_0x7ddb[255]]= _0x9494x9,_0x9494x2= !0);_0x9494x5= this[_0x7ddb[2136]][_0x7ddb[249]]();_0x9494x5[_0x7ddb[1741]]!= this[_0x7ddb[1097]][_0x7ddb[249]]()[_0x7ddb[1741]]&& _0x9494x5[_0x7ddb[2257]](this[_0x7ddb[1097]][_0x7ddb[249]]()[_0x7ddb[1741]]);var _0x9494x3=this[_0x7ddb[1097]][_0x7ddb[441]][_0x7ddb[513]],_0x9494xa=_0x9494x3[_0x7ddb[235]]+ this[_0x7ddb[1097]][_0x7ddb[1136]],_0x9494x12=_0x9494x3[_0x7ddb[236]]+ this[_0x7ddb[1097]][_0x7ddb[1137]],_0x9494x9=this[_0x7ddb[2738]](_0x9494x9);null!= _0x9494x9&& (_0x9494xa+= _0x9494x9[_0x7ddb[235]],_0x9494x12+= _0x9494x9[_0x7ddb[236]]);0> _0x9494x4[_0x7ddb[235]]&& (_0x9494xa-= _0x9494x4[_0x7ddb[235]]);0> _0x9494x4[_0x7ddb[236]]&& (_0x9494x12-= _0x9494x4[_0x7ddb[236]]);if(_0x9494x5[_0x7ddb[513]][_0x7ddb[235]]!= _0x9494xa|| _0x9494x5[_0x7ddb[513]][_0x7ddb[236]]!= _0x9494x12){_0x9494x5[_0x7ddb[513]][_0x7ddb[235]]= _0x9494xa,_0x9494x5[_0x7ddb[513]][_0x7ddb[236]]= _0x9494x12,_0x9494x2= !0};var _0x9494x4=_0x9494x5[_0x7ddb[513]],_0x9494x9=this[_0x7ddb[1097]][_0x7ddb[249]]()[_0x7ddb[255]],_0x9494xa=_0x9494x9/ _0x9494x5[_0x7ddb[255]],_0x9494x12=1/ _0x9494x5[_0x7ddb[255]],_0x9494x13=this[_0x7ddb[1097]][_0x7ddb[526]];this[_0x7ddb[1562]]= new mxRectangle((_0x9494x4[_0x7ddb[235]]- _0x9494x3[_0x7ddb[235]]- this[_0x7ddb[1097]][_0x7ddb[1136]])/ _0x9494x12,(_0x9494x4[_0x7ddb[236]]- _0x9494x3[_0x7ddb[236]]- this[_0x7ddb[1097]][_0x7ddb[1137]])/ _0x9494x12,_0x9494x13[_0x7ddb[159]]/ _0x9494xa,_0x9494x13[_0x7ddb[157]]/ _0x9494xa);this[_0x7ddb[1562]][_0x7ddb[235]]+= this[_0x7ddb[1097]][_0x7ddb[526]][_0x7ddb[360]]* _0x9494x5[_0x7ddb[255]]/ _0x9494x9;this[_0x7ddb[1562]][_0x7ddb[236]]+= this[_0x7ddb[1097]][_0x7ddb[526]][_0x7ddb[190]]* _0x9494x5[_0x7ddb[255]]/ _0x9494x9;_0x9494x4= this[_0x7ddb[2732]][_0x7ddb[1562]];if(_0x9494x4[_0x7ddb[235]]!= this[_0x7ddb[1562]][_0x7ddb[235]]|| _0x9494x4[_0x7ddb[236]]!= this[_0x7ddb[1562]][_0x7ddb[236]]|| _0x9494x4[_0x7ddb[117]]!= this[_0x7ddb[1562]][_0x7ddb[117]]|| _0x9494x4[_0x7ddb[119]]!= this[_0x7ddb[1562]][_0x7ddb[119]]){this[_0x7ddb[2732]][_0x7ddb[1562]]= this[_0x7ddb[1562]],this[_0x7ddb[2732]][_0x7ddb[258]]()};_0x9494x4= this[_0x7ddb[2734]][_0x7ddb[1562]];_0x9494x5= new mxRectangle(this[_0x7ddb[1562]][_0x7ddb[235]]+ this[_0x7ddb[1562]][_0x7ddb[117]]- _0x9494x4[_0x7ddb[117]]/ 2,this[_0x7ddb[1562]][_0x7ddb[236]]+ this[_0x7ddb[1562]][_0x7ddb[119]]- _0x9494x4[_0x7ddb[119]]/ 2,_0x9494x4[_0x7ddb[117]],_0x9494x4[_0x7ddb[119]]);if(_0x9494x4[_0x7ddb[235]]!= _0x9494x5[_0x7ddb[235]]|| _0x9494x4[_0x7ddb[236]]!= _0x9494x5[_0x7ddb[236]]|| _0x9494x4[_0x7ddb[117]]!= _0x9494x5[_0x7ddb[117]]|| _0x9494x4[_0x7ddb[119]]!= _0x9494x5[_0x7ddb[119]]){this[_0x7ddb[2734]][_0x7ddb[1562]]= _0x9494x5,_0x7ddb[188]!= this[_0x7ddb[2734]][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[187]]&& this[_0x7ddb[2734]][_0x7ddb[258]]()};_0x9494x2&& this[_0x7ddb[2136]][_0x7ddb[441]][_0x7ddb[2259]]()}}};mxOutline[_0x7ddb[202]][_0x7ddb[787]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[984]]&& this[_0x7ddb[2721]]&& (this[_0x7ddb[499]]= _0x9494x3[_0x7ddb[729]](this[_0x7ddb[2734]]),this[_0x7ddb[2739]]= _0x9494x3[_0x7ddb[730]](),this[_0x7ddb[2740]]= _0x9494x3[_0x7ddb[732]](),this[_0x7ddb[1124]]= !0,this[_0x7ddb[1097]][_0x7ddb[2365]]&& mxUtils[_0x7ddb[1134]](this[_0x7ddb[1097]][_0x7ddb[526]])?(this[_0x7ddb[2741]]= this[_0x7ddb[1097]][_0x7ddb[526]][_0x7ddb[360]],this[_0x7ddb[2742]]= this[_0x7ddb[1097]][_0x7ddb[526]][_0x7ddb[190]]):this[_0x7ddb[2742]]= this[_0x7ddb[2741]]= 0);_0x9494x3[_0x7ddb[722]]()};mxOutline[_0x7ddb[202]][_0x7ddb[788]]= function(_0x9494x2,_0x9494x3){if(this[_0x7ddb[1124]]){this[_0x7ddb[2732]][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[495]]= this[_0x7ddb[2721]]?_0x7ddb[110]:_0x7ddb[130];this[_0x7ddb[2734]][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[495]]= this[_0x7ddb[2732]][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[495]];var _0x9494x4=_0x9494x3[_0x7ddb[730]]()- this[_0x7ddb[2739]],_0x9494x5=_0x9494x3[_0x7ddb[732]]()- this[_0x7ddb[2740]],_0x9494x9=null;if(this[_0x7ddb[499]]){_0x9494x9= this[_0x7ddb[1097]][_0x7ddb[526]],_0x9494x5= _0x9494x4/ (_0x9494x9[_0x7ddb[159]]/ _0x9494x9[_0x7ddb[157]]),_0x9494x9= new mxRectangle(this[_0x7ddb[1562]][_0x7ddb[235]],this[_0x7ddb[1562]][_0x7ddb[236]],Math[_0x7ddb[160]](1,this[_0x7ddb[1562]][_0x7ddb[117]]+ _0x9494x4),Math[_0x7ddb[160]](1,this[_0x7ddb[1562]][_0x7ddb[119]]+ _0x9494x5)),this[_0x7ddb[2732]][_0x7ddb[1562]]= _0x9494x9,this[_0x7ddb[2732]][_0x7ddb[258]]()}else {var _0x9494xa=this[_0x7ddb[2136]][_0x7ddb[249]]()[_0x7ddb[255]],_0x9494x9= new mxRectangle(this[_0x7ddb[1562]][_0x7ddb[235]]+ _0x9494x4,this[_0x7ddb[1562]][_0x7ddb[236]]+ _0x9494x5,this[_0x7ddb[1562]][_0x7ddb[117]],this[_0x7ddb[1562]][_0x7ddb[119]]);this[_0x7ddb[2732]][_0x7ddb[1562]]= _0x9494x9;this[_0x7ddb[2732]][_0x7ddb[258]]();_0x9494x4= _0x9494x4/ _0x9494xa* this[_0x7ddb[1097]][_0x7ddb[249]]()[_0x7ddb[255]];_0x9494x5= _0x9494x5/ _0x9494xa* this[_0x7ddb[1097]][_0x7ddb[249]]()[_0x7ddb[255]];this[_0x7ddb[1097]][_0x7ddb[1135]](-_0x9494x4- this[_0x7ddb[2741]],-_0x9494x5- this[_0x7ddb[2742]])};_0x9494x4= this[_0x7ddb[2734]][_0x7ddb[1562]];this[_0x7ddb[2734]][_0x7ddb[1562]]= new mxRectangle(_0x9494x9[_0x7ddb[235]]+ _0x9494x9[_0x7ddb[117]]- _0x9494x4[_0x7ddb[117]]/ 2,_0x9494x9[_0x7ddb[236]]+ _0x9494x9[_0x7ddb[119]]- _0x9494x4[_0x7ddb[119]]/ 2,_0x9494x4[_0x7ddb[117]],_0x9494x4[_0x7ddb[119]]);_0x7ddb[188]!= this[_0x7ddb[2734]][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[187]]&& this[_0x7ddb[2734]][_0x7ddb[258]]();_0x9494x3[_0x7ddb[722]]()}};mxOutline[_0x7ddb[202]][_0x7ddb[789]]= function(_0x9494x2,_0x9494x3){if(this[_0x7ddb[1124]]){var _0x9494x4=_0x9494x3[_0x7ddb[730]]()- this[_0x7ddb[2739]],_0x9494x5=_0x9494x3[_0x7ddb[732]]()- this[_0x7ddb[2740]];if(0< Math[_0x7ddb[425]](_0x9494x4)|| 0< Math[_0x7ddb[425]](_0x9494x5)){if(this[_0x7ddb[499]]){var _0x9494x5=this[_0x7ddb[2732]][_0x7ddb[1562]][_0x7ddb[117]],_0x9494x9=this[_0x7ddb[1097]][_0x7ddb[249]]()[_0x7ddb[255]];this[_0x7ddb[1097]][_0x7ddb[2561]](_0x9494x9- _0x9494x4* _0x9494x9/ _0x9494x5,!1)}else {if(!this[_0x7ddb[1097]][_0x7ddb[2365]]|| !mxUtils[_0x7ddb[1134]](this[_0x7ddb[1097]][_0x7ddb[526]])){this[_0x7ddb[1097]][_0x7ddb[1135]](0,0),_0x9494x4/= this[_0x7ddb[2136]][_0x7ddb[249]]()[_0x7ddb[255]],_0x9494x5/= this[_0x7ddb[2136]][_0x7ddb[249]]()[_0x7ddb[255]],_0x9494x9= this[_0x7ddb[1097]][_0x7ddb[249]]()[_0x7ddb[513]],this[_0x7ddb[1097]][_0x7ddb[249]]()[_0x7ddb[1147]](_0x9494x9[_0x7ddb[235]]- _0x9494x4,_0x9494x9[_0x7ddb[236]]- _0x9494x5)}};this[_0x7ddb[2729]]();_0x9494x3[_0x7ddb[722]]()};this[_0x7ddb[1983]]= null;this[_0x7ddb[1124]]= !1}};mxOutline[_0x7ddb[202]][_0x7ddb[515]]= function(){null!= this[_0x7ddb[1097]]&& (this[_0x7ddb[1097]][_0x7ddb[745]](this[_0x7ddb[2730]]),this[_0x7ddb[1097]][_0x7ddb[745]](this[_0x7ddb[2731]]),this[_0x7ddb[1097]][_0x7ddb[502]]()[_0x7ddb[745]](this[_0x7ddb[2728]]),this[_0x7ddb[1097]][_0x7ddb[249]]()[_0x7ddb[745]](this[_0x7ddb[2728]]),mxEvent[_0x7ddb[169]](this[_0x7ddb[1097]][_0x7ddb[526]],_0x7ddb[276],this[_0x7ddb[2728]]),this[_0x7ddb[1097]]= null);null!= this[_0x7ddb[2136]]&& (this[_0x7ddb[2136]][_0x7ddb[1148]](this),this[_0x7ddb[2136]][_0x7ddb[515]](),this[_0x7ddb[2136]]= null);null!= this[_0x7ddb[2732]]&& (this[_0x7ddb[2732]][_0x7ddb[515]](),this[_0x7ddb[2732]]= null);null!= this[_0x7ddb[2734]]&& (this[_0x7ddb[2734]][_0x7ddb[515]](),this[_0x7ddb[2734]]= null)};function mxMultiplicity(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13,_0x9494x14,_0x9494x15){this[_0x7ddb[1097]]= _0x9494x2;this[_0x7ddb[60]]= _0x9494x3;this[_0x7ddb[2588]]= _0x9494x4;this[_0x7ddb[131]]= _0x9494x5;this[_0x7ddb[243]]= null!= _0x9494x9?_0x9494x9:0;this[_0x7ddb[160]]= null!= _0x9494xa?_0x9494xa:_0x7ddb[2743];this[_0x7ddb[2744]]= _0x9494x12;this[_0x7ddb[2589]]= mxResources[_0x7ddb[203]](_0x9494x13)|| _0x9494x13;this[_0x7ddb[2745]]= mxResources[_0x7ddb[203]](_0x9494x14)|| _0x9494x14;this[_0x7ddb[2746]]= null!= _0x9494x15?_0x9494x15:!0}mxMultiplicity[_0x7ddb[202]][_0x7ddb[60]]= null;mxMultiplicity[_0x7ddb[202]][_0x7ddb[2588]]= null;mxMultiplicity[_0x7ddb[202]][_0x7ddb[131]]= null;mxMultiplicity[_0x7ddb[202]][_0x7ddb[1097]]= null;mxMultiplicity[_0x7ddb[202]][_0x7ddb[243]]= null;mxMultiplicity[_0x7ddb[202]][_0x7ddb[160]]= null;mxMultiplicity[_0x7ddb[202]][_0x7ddb[2744]]= null;mxMultiplicity[_0x7ddb[202]][_0x7ddb[2746]]= !0;mxMultiplicity[_0x7ddb[202]][_0x7ddb[2589]]= null;mxMultiplicity[_0x7ddb[202]][_0x7ddb[2745]]= null;mxMultiplicity[_0x7ddb[202]][_0x7ddb[2583]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){var _0x9494x12=_0x7ddb[110];if(this[_0x7ddb[1097]]&& this[_0x7ddb[2747]](_0x9494x2,_0x9494x4,_0x9494x3)|| !this[_0x7ddb[1097]]&& this[_0x7ddb[2747]](_0x9494x2,_0x9494x5,_0x9494x3)){if(null!= this[_0x7ddb[2589]]&& (this[_0x7ddb[1097]]&& (0== this[_0x7ddb[160]]|| _0x9494x9>= this[_0x7ddb[160]])|| !this[_0x7ddb[1097]]&& (0== this[_0x7ddb[160]]|| _0x9494xa>= this[_0x7ddb[160]]))){_0x9494x12+= this[_0x7ddb[2589]]+ _0x7ddb[192]};null!= this[_0x7ddb[2744]]&& (null!= this[_0x7ddb[2745]]&& 0< this[_0x7ddb[2744]][_0x7ddb[67]])&& (this[_0x7ddb[2748]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5)|| (_0x9494x12+= this[_0x7ddb[2745]]+ _0x7ddb[192]))};return 0< _0x9494x12[_0x7ddb[67]]?_0x9494x12:null};mxMultiplicity[_0x7ddb[202]][_0x7ddb[2748]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){_0x9494x3= _0x9494x2[_0x7ddb[251]][_0x7ddb[433]](_0x9494x4);_0x9494x5= _0x9494x2[_0x7ddb[251]][_0x7ddb[433]](_0x9494x5);_0x9494x4= !this[_0x7ddb[2746]];for(var _0x9494x9=this[_0x7ddb[2744]],_0x9494xa=0;_0x9494xa< _0x9494x9[_0x7ddb[67]];_0x9494xa++){if(this[_0x7ddb[1097]]&& this[_0x7ddb[2749]](_0x9494x2,_0x9494x5,_0x9494x9[_0x9494xa])){_0x9494x4= this[_0x7ddb[2746]];break}else {if(!this[_0x7ddb[1097]]&& this[_0x7ddb[2749]](_0x9494x2,_0x9494x3,_0x9494x9[_0x9494xa])){_0x9494x4= this[_0x7ddb[2746]];break}}};return _0x9494x4};mxMultiplicity[_0x7ddb[202]][_0x7ddb[2747]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x3= _0x9494x2[_0x7ddb[251]][_0x7ddb[433]](_0x9494x3);return this[_0x7ddb[2749]](_0x9494x2,_0x9494x3,this[_0x7ddb[60]],this[_0x7ddb[2588]],this[_0x7ddb[131]])};mxMultiplicity[_0x7ddb[202]][_0x7ddb[2749]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){return null!= _0x9494x3?isNaN(_0x9494x3[_0x7ddb[288]])?_0x9494x3== _0x9494x4:mxUtils[_0x7ddb[1331]](_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9):!1};function mxLayoutManager(_0x9494x2){this[_0x7ddb[2750]]= mxUtils[_0x7ddb[885]](this,function(_0x9494x2,_0x9494x4){this[_0x7ddb[994]]()&& this[_0x7ddb[823]](_0x9494x4[_0x7ddb[720]](_0x7ddb[1061]))});this[_0x7ddb[2317]]= mxUtils[_0x7ddb[885]](this,function(_0x9494x2,_0x9494x4){this[_0x7ddb[994]]()&& this[_0x7ddb[835]](_0x9494x4[_0x7ddb[720]](_0x7ddb[895]),_0x9494x4[_0x7ddb[720]](_0x7ddb[763]))});this[_0x7ddb[1178]](_0x9494x2)}mxLayoutManager[_0x7ddb[202]]= new mxEventSource;mxLayoutManager[_0x7ddb[202]][_0x7ddb[196]]= mxLayoutManager;mxLayoutManager[_0x7ddb[202]][_0x7ddb[1179]]= null;mxLayoutManager[_0x7ddb[202]][_0x7ddb[2751]]= !0;mxLayoutManager[_0x7ddb[202]][_0x7ddb[984]]= !0;mxLayoutManager[_0x7ddb[202]][_0x7ddb[2728]]= null;mxLayoutManager[_0x7ddb[202]][_0x7ddb[2317]]= null;mxLayoutManager[_0x7ddb[202]][_0x7ddb[994]]= function(){return this[_0x7ddb[984]]};mxLayoutManager[_0x7ddb[202]][_0x7ddb[995]]= function(_0x9494x2){this[_0x7ddb[984]]= _0x9494x2};mxLayoutManager[_0x7ddb[202]][_0x7ddb[2752]]= function(){return this[_0x7ddb[2751]]};mxLayoutManager[_0x7ddb[202]][_0x7ddb[2753]]= function(_0x9494x2){this[_0x7ddb[2751]]= _0x9494x2};mxLayoutManager[_0x7ddb[202]][_0x7ddb[1703]]= function(){return this[_0x7ddb[1179]]};mxLayoutManager[_0x7ddb[202]][_0x7ddb[1178]]= function(_0x9494x2){if(null!= this[_0x7ddb[1179]]){var _0x9494x3=this[_0x7ddb[1179]][_0x7ddb[502]]();_0x9494x3[_0x7ddb[745]](this[_0x7ddb[2750]]);this[_0x7ddb[1179]][_0x7ddb[745]](this[_0x7ddb[2317]])};this[_0x7ddb[1179]]= _0x9494x2;null!= this[_0x7ddb[1179]]&& (_0x9494x3= this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x3[_0x7ddb[169]](mxEvent.BEFORE_UNDO,this[_0x7ddb[2750]]),this[_0x7ddb[1179]][_0x7ddb[169]](mxEvent.MOVE_CELLS,this[_0x7ddb[2317]]))};mxLayoutManager[_0x7ddb[202]][_0x7ddb[2754]]= function(_0x9494x2){return null};mxLayoutManager[_0x7ddb[202]][_0x7ddb[823]]= function(_0x9494x2){_0x9494x2= this[_0x7ddb[2755]](_0x9494x2[_0x7ddb[1065]]);var _0x9494x3=this[_0x7ddb[1703]]()[_0x7ddb[502]]();if(this[_0x7ddb[2752]]()){for(var _0x9494x4=_0x9494x3[_0x7ddb[1977]](_0x9494x2);0< _0x9494x4[_0x7ddb[67]];){_0x9494x2= _0x9494x2[_0x7ddb[1919]](_0x9494x4),_0x9494x4= _0x9494x3[_0x7ddb[1977]](_0x9494x4)}};this[_0x7ddb[828]](mxUtils[_0x7ddb[1779]](_0x9494x2,!1))};mxLayoutManager[_0x7ddb[202]][_0x7ddb[835]]= function(_0x9494x2,_0x9494x3){if(null!= _0x9494x2&& null!= _0x9494x3){for(var _0x9494x4=mxUtils[_0x7ddb[2196]](this[_0x7ddb[1703]]()[_0x7ddb[526]],mxEvent[_0x7ddb[731]](_0x9494x3),mxEvent[_0x7ddb[733]](_0x9494x3)),_0x9494x5=this[_0x7ddb[1703]]()[_0x7ddb[502]](),_0x9494x9=0;_0x9494x9< _0x9494x2[_0x7ddb[67]];_0x9494x9++){var _0x9494xa=this[_0x7ddb[2754]](_0x9494x5[_0x7ddb[1197]](_0x9494x2[_0x9494x9]));null!= _0x9494xa&& _0x9494xa[_0x7ddb[1702]](_0x9494x2[_0x9494x9],_0x9494x4[_0x7ddb[235]],_0x9494x4[_0x7ddb[236]])}}};mxLayoutManager[_0x7ddb[202]][_0x7ddb[2755]]= function(_0x9494x2){for(var _0x9494x3=[],_0x9494x4={},_0x9494x5=0;_0x9494x5< _0x9494x2[_0x7ddb[67]];_0x9494x5++){var _0x9494x9=_0x9494x2[_0x9494x5];if(_0x9494x9 instanceof mxRootChange){return []};for(var _0x9494x9=this[_0x7ddb[2756]](_0x9494x9),_0x9494xa=0;_0x9494xa< _0x9494x9[_0x7ddb[67]];_0x9494xa++){if(null!= _0x9494x9[_0x9494xa]){var _0x9494x12=mxCellPath[_0x7ddb[385]](_0x9494x9[_0x9494xa]);null== _0x9494x4[_0x9494x12]&& (_0x9494x4[_0x9494x12]= _0x9494x9[_0x9494xa],_0x9494x3[_0x7ddb[207]](_0x9494x9[_0x9494xa]))}}};return _0x9494x3};mxLayoutManager[_0x7ddb[202]][_0x7ddb[2756]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[1703]]()[_0x7ddb[502]]();return _0x9494x2 instanceof mxChildChange?[_0x9494x2[_0x7ddb[247]],_0x9494x2[_0x7ddb[257]],_0x9494x3[_0x7ddb[1197]](_0x9494x2[_0x7ddb[247]])]:_0x9494x2 instanceof mxTerminalChange|| _0x9494x2 instanceof mxGeometryChange?[_0x9494x2[_0x7ddb[246]],_0x9494x3[_0x7ddb[1197]](_0x9494x2[_0x7ddb[246]])]:[]};mxLayoutManager[_0x7ddb[202]][_0x7ddb[828]]= function(_0x9494x2){if(0< _0x9494x2[_0x7ddb[67]]){var _0x9494x3=this[_0x7ddb[1703]]()[_0x7ddb[502]]();_0x9494x3[_0x7ddb[473]]();try{for(var _0x9494x4=null,_0x9494x5=0;_0x9494x5< _0x9494x2[_0x7ddb[67]];_0x9494x5++){_0x9494x2[_0x9494x5]!= _0x9494x3[_0x7ddb[501]]()&& _0x9494x2[_0x9494x5]!= _0x9494x4&& (_0x9494x4= _0x9494x2[_0x9494x5],this[_0x7ddb[2757]](this[_0x7ddb[2754]](_0x9494x4),_0x9494x4))};this[_0x7ddb[746]]( new mxEventObject(mxEvent.LAYOUT_CELLS,_0x7ddb[895],_0x9494x2))}finally{_0x9494x3[_0x7ddb[476]]()}}};mxLayoutManager[_0x7ddb[202]][_0x7ddb[2757]]= function(_0x9494x2,_0x9494x3){null!= _0x9494x2&& null!= _0x9494x3&& _0x9494x2[_0x7ddb[350]](_0x9494x3)};mxLayoutManager[_0x7ddb[202]][_0x7ddb[515]]= function(){this[_0x7ddb[1178]](null)};function mxSpaceManager(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){this[_0x7ddb[2758]]= mxUtils[_0x7ddb[885]](this,function(_0x9494x2,_0x9494x3){this[_0x7ddb[994]]()&& this[_0x7ddb[837]](_0x9494x3[_0x7ddb[720]](_0x7ddb[895]))});this[_0x7ddb[2759]]= mxUtils[_0x7ddb[885]](this,function(_0x9494x2,_0x9494x3){this[_0x7ddb[994]]()&& this[_0x7ddb[837]](_0x9494x3[_0x7ddb[720]](_0x7ddb[895]))});this[_0x7ddb[2760]]= null!= _0x9494x3?_0x9494x3:!0;this[_0x7ddb[2761]]= null!= _0x9494x4?_0x9494x4:!0;this[_0x7ddb[2392]]= null!= _0x9494x5?_0x9494x5:!0;this[_0x7ddb[1178]](_0x9494x2)}mxSpaceManager[_0x7ddb[202]]= new mxEventSource;mxSpaceManager[_0x7ddb[202]][_0x7ddb[196]]= mxSpaceManager;mxSpaceManager[_0x7ddb[202]][_0x7ddb[1179]]= null;mxSpaceManager[_0x7ddb[202]][_0x7ddb[984]]= !0;mxSpaceManager[_0x7ddb[202]][_0x7ddb[2760]]= !0;mxSpaceManager[_0x7ddb[202]][_0x7ddb[2761]]= !0;mxSpaceManager[_0x7ddb[202]][_0x7ddb[2392]]= !0;mxSpaceManager[_0x7ddb[202]][_0x7ddb[2758]]= null;mxSpaceManager[_0x7ddb[202]][_0x7ddb[2759]]= null;mxSpaceManager[_0x7ddb[202]][_0x7ddb[2762]]= function(_0x9494x2){return !this[_0x7ddb[1703]]()[_0x7ddb[502]]()[_0x7ddb[1193]](_0x9494x2)};mxSpaceManager[_0x7ddb[202]][_0x7ddb[2763]]= function(_0x9494x2){return this[_0x7ddb[1703]]()[_0x7ddb[502]]()[_0x7ddb[1193]](_0x9494x2)&& this[_0x7ddb[1703]]()[_0x7ddb[1712]](_0x9494x2)};mxSpaceManager[_0x7ddb[202]][_0x7ddb[994]]= function(){return this[_0x7ddb[984]]};mxSpaceManager[_0x7ddb[202]][_0x7ddb[995]]= function(_0x9494x2){this[_0x7ddb[984]]= _0x9494x2};mxSpaceManager[_0x7ddb[202]][_0x7ddb[2764]]= function(){return this[_0x7ddb[2760]]};mxSpaceManager[_0x7ddb[202]][_0x7ddb[2765]]= function(_0x9494x2){this[_0x7ddb[2760]]= _0x9494x2};mxSpaceManager[_0x7ddb[202]][_0x7ddb[2766]]= function(){return this[_0x7ddb[2761]]};mxSpaceManager[_0x7ddb[202]][_0x7ddb[2767]]= function(_0x9494x2){this[_0x7ddb[2761]]= _0x9494x2};mxSpaceManager[_0x7ddb[202]][_0x7ddb[2678]]= function(){return this[_0x7ddb[2392]]};mxSpaceManager[_0x7ddb[202]][_0x7ddb[2679]]= function(_0x9494x2){this[_0x7ddb[2392]]= _0x9494x2};mxSpaceManager[_0x7ddb[202]][_0x7ddb[1703]]= function(){return this[_0x7ddb[1179]]};mxSpaceManager[_0x7ddb[202]][_0x7ddb[1178]]= function(_0x9494x2){null!= this[_0x7ddb[1179]]&& (this[_0x7ddb[1179]][_0x7ddb[745]](this[_0x7ddb[2758]]),this[_0x7ddb[1179]][_0x7ddb[745]](this[_0x7ddb[2759]]));this[_0x7ddb[1179]]= _0x9494x2;null!= this[_0x7ddb[1179]]&& (this[_0x7ddb[1179]][_0x7ddb[169]](mxEvent.RESIZE_CELLS,this[_0x7ddb[2758]]),this[_0x7ddb[1179]][_0x7ddb[169]](mxEvent.FOLD_CELLS,this[_0x7ddb[2759]]))};mxSpaceManager[_0x7ddb[202]][_0x7ddb[837]]= function(_0x9494x2){if(null!= _0x9494x2){var _0x9494x3=this[_0x7ddb[1179]][_0x7ddb[502]]();_0x9494x3[_0x7ddb[473]]();try{for(var _0x9494x4=0;_0x9494x4< _0x9494x2[_0x7ddb[67]];_0x9494x4++){if(!this[_0x7ddb[2762]](_0x9494x2[_0x9494x4])){this[_0x7ddb[2768]](_0x9494x2[_0x9494x4]);break}}}finally{_0x9494x3[_0x7ddb[476]]()}}};mxSpaceManager[_0x7ddb[202]][_0x7ddb[2768]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[1703]](),_0x9494x4=_0x9494x3[_0x7ddb[249]](),_0x9494x5=_0x9494x3[_0x7ddb[502]](),_0x9494x9=_0x9494x4[_0x7ddb[248]](_0x9494x2),_0x9494xa=_0x9494x4[_0x7ddb[248]](_0x9494x5[_0x7ddb[1197]](_0x9494x2));if(null!= _0x9494x9&& null!= _0x9494xa){var _0x9494x12=this[_0x7ddb[2769]](_0x9494x9),_0x9494x13=_0x9494x5[_0x7ddb[1721]](_0x9494x2);if(null!= _0x9494x12&& null!= _0x9494x13){var _0x9494x14=_0x9494x4[_0x7ddb[513]],_0x9494x15=_0x9494x4[_0x7ddb[255]],_0x9494x4=_0x9494x9[_0x7ddb[235]]- _0x9494xa[_0x7ddb[2078]][_0x7ddb[235]]- _0x9494x14[_0x7ddb[235]]* _0x9494x15,_0x9494xa=_0x9494x9[_0x7ddb[236]]- _0x9494xa[_0x7ddb[2078]][_0x7ddb[236]]- _0x9494x14[_0x7ddb[236]]* _0x9494x15,_0x9494x14=_0x9494x9[_0x7ddb[235]]+ _0x9494x9[_0x7ddb[117]],_0x9494x16=_0x9494x9[_0x7ddb[236]]+ _0x9494x9[_0x7ddb[119]],_0x9494x17=_0x9494x9[_0x7ddb[117]]- _0x9494x13[_0x7ddb[117]]* _0x9494x15+ _0x9494x4- _0x9494x13[_0x7ddb[235]]* _0x9494x15,_0x9494x18=_0x9494x9[_0x7ddb[119]]- _0x9494x13[_0x7ddb[119]]* _0x9494x15+ _0x9494xa- _0x9494x13[_0x7ddb[236]]* _0x9494x15,_0x9494x19=1- _0x9494x13[_0x7ddb[117]]* _0x9494x15/ _0x9494x9[_0x7ddb[117]],_0x9494x9=1- _0x9494x13[_0x7ddb[119]]* _0x9494x15/ _0x9494x9[_0x7ddb[119]];_0x9494x5[_0x7ddb[473]]();try{for(_0x9494x13= 0;_0x9494x13< _0x9494x12[_0x7ddb[67]];_0x9494x13++){_0x9494x12[_0x9494x13]!= _0x9494x2&& this[_0x7ddb[2763]](_0x9494x12[_0x9494x13])&& this[_0x7ddb[2770]](_0x9494x12[_0x9494x13],_0x9494x17,_0x9494x18,_0x9494x4,_0x9494xa,_0x9494x14,_0x9494x16,_0x9494x19,_0x9494x9,this[_0x7ddb[2678]]()&& _0x9494x3[_0x7ddb[2507]](_0x9494x12[_0x9494x13]))}}finally{_0x9494x5[_0x7ddb[476]]()}}}};mxSpaceManager[_0x7ddb[202]][_0x7ddb[2770]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13,_0x9494x14,_0x9494x15){_0x9494x5= this[_0x7ddb[1703]]();var _0x9494x16=_0x9494x5[_0x7ddb[249]]()[_0x7ddb[248]](_0x9494x2);if(null!= _0x9494x16){var _0x9494x17=_0x9494x5[_0x7ddb[502]](),_0x9494x18=_0x9494x17[_0x7ddb[1721]](_0x9494x2);if(null!= _0x9494x18){_0x9494x17[_0x7ddb[473]]();try{if(this[_0x7ddb[2764]]()){if(_0x9494x16[_0x7ddb[235]]>= _0x9494xa){_0x9494x18= _0x9494x18[_0x7ddb[238]](),_0x9494x18[_0x7ddb[513]](-_0x9494x3,0)}else {var _0x9494x19=Math[_0x7ddb[160]](0,_0x9494x16[_0x7ddb[235]]- x0),_0x9494x18=_0x9494x18[_0x7ddb[238]]();_0x9494x18[_0x7ddb[513]](-_0x9494x13* _0x9494x19,0)}};if(this[_0x7ddb[2766]]()){if(_0x9494x16[_0x7ddb[236]]>= _0x9494x12){_0x9494x18= _0x9494x18[_0x7ddb[238]](),_0x9494x18[_0x7ddb[513]](0,-_0x9494x4)}else {var _0x9494x1a=Math[_0x7ddb[160]](0,_0x9494x16[_0x7ddb[236]]- _0x9494x9),_0x9494x18=_0x9494x18[_0x7ddb[238]]();_0x9494x18[_0x7ddb[513]](0,-_0x9494x14* _0x9494x1a)}};_0x9494x18!= _0x9494x17[_0x7ddb[1721]](_0x9494x2)&& (_0x9494x17[_0x7ddb[1724]](_0x9494x2,_0x9494x18),_0x9494x15&& _0x9494x5[_0x7ddb[2508]](_0x9494x2))}finally{_0x9494x17[_0x7ddb[476]]()}}}};mxSpaceManager[_0x7ddb[202]][_0x7ddb[2769]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[1703]](),_0x9494x4=_0x9494x3[_0x7ddb[502]]()[_0x7ddb[1197]](_0x9494x2[_0x7ddb[246]]),_0x9494x5=this[_0x7ddb[2766]](),_0x9494x9=this[_0x7ddb[2764]]();return _0x9494x3[_0x7ddb[2691]](_0x9494x2[_0x7ddb[235]]+ (_0x9494x5?0:_0x9494x2[_0x7ddb[117]]),_0x9494x2[_0x7ddb[236]]+ (_0x9494x5&& _0x9494x9?0:_0x9494x2[_0x7ddb[119]]),_0x9494x4,_0x9494x9,_0x9494x5)};mxSpaceManager[_0x7ddb[202]][_0x7ddb[515]]= function(){this[_0x7ddb[1178]](null)};function mxSwimlaneManager(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){this[_0x7ddb[662]]= null!= _0x9494x3?_0x9494x3:!0;this[_0x7ddb[2771]]= null!= _0x9494x4?_0x9494x4:!0;this[_0x7ddb[2772]]= null!= _0x9494x5?_0x9494x5:!0;this[_0x7ddb[2773]]= mxUtils[_0x7ddb[885]](this,function(_0x9494x2,_0x9494x3){this[_0x7ddb[994]]()&& this[_0x7ddb[2774]]()&& this[_0x7ddb[833]](_0x9494x3[_0x7ddb[720]](_0x7ddb[895]))});this[_0x7ddb[2758]]= mxUtils[_0x7ddb[885]](this,function(_0x9494x2,_0x9494x3){this[_0x7ddb[994]]()&& this[_0x7ddb[2775]]()&& this[_0x7ddb[837]](_0x9494x3[_0x7ddb[720]](_0x7ddb[895]))});this[_0x7ddb[1178]](_0x9494x2)}mxSwimlaneManager[_0x7ddb[202]]= new mxEventSource;mxSwimlaneManager[_0x7ddb[202]][_0x7ddb[196]]= mxSwimlaneManager;mxSwimlaneManager[_0x7ddb[202]][_0x7ddb[1179]]= null;mxSwimlaneManager[_0x7ddb[202]][_0x7ddb[984]]= !0;mxSwimlaneManager[_0x7ddb[202]][_0x7ddb[662]]= !0;mxSwimlaneManager[_0x7ddb[202]][_0x7ddb[2771]]= !0;mxSwimlaneManager[_0x7ddb[202]][_0x7ddb[2772]]= !0;mxSwimlaneManager[_0x7ddb[202]][_0x7ddb[2773]]= null;mxSwimlaneManager[_0x7ddb[202]][_0x7ddb[2758]]= null;mxSwimlaneManager[_0x7ddb[202]][_0x7ddb[994]]= function(){return this[_0x7ddb[984]]};mxSwimlaneManager[_0x7ddb[202]][_0x7ddb[995]]= function(_0x9494x2){this[_0x7ddb[984]]= _0x9494x2};mxSwimlaneManager[_0x7ddb[202]][_0x7ddb[1737]]= function(){return this[_0x7ddb[662]]};mxSwimlaneManager[_0x7ddb[202]][_0x7ddb[2776]]= function(_0x9494x2){this[_0x7ddb[662]]= _0x9494x2};mxSwimlaneManager[_0x7ddb[202]][_0x7ddb[2774]]= function(){return this[_0x7ddb[2771]]};mxSwimlaneManager[_0x7ddb[202]][_0x7ddb[2777]]= function(_0x9494x2){this[_0x7ddb[2771]]= _0x9494x2};mxSwimlaneManager[_0x7ddb[202]][_0x7ddb[2775]]= function(){return this[_0x7ddb[2772]]};mxSwimlaneManager[_0x7ddb[202]][_0x7ddb[2778]]= function(_0x9494x2){this[_0x7ddb[2772]]= _0x9494x2};mxSwimlaneManager[_0x7ddb[202]][_0x7ddb[1703]]= function(){return this[_0x7ddb[1179]]};mxSwimlaneManager[_0x7ddb[202]][_0x7ddb[1178]]= function(_0x9494x2){null!= this[_0x7ddb[1179]]&& (this[_0x7ddb[1179]][_0x7ddb[745]](this[_0x7ddb[2773]]),this[_0x7ddb[1179]][_0x7ddb[745]](this[_0x7ddb[2758]]));this[_0x7ddb[1179]]= _0x9494x2;null!= this[_0x7ddb[1179]]&& (this[_0x7ddb[1179]][_0x7ddb[169]](mxEvent.ADD_CELLS,this[_0x7ddb[2773]]),this[_0x7ddb[1179]][_0x7ddb[169]](mxEvent.CELLS_RESIZED,this[_0x7ddb[2758]]))};mxSwimlaneManager[_0x7ddb[202]][_0x7ddb[2779]]= function(_0x9494x2){return !this[_0x7ddb[1703]]()[_0x7ddb[1730]](_0x9494x2)};mxSwimlaneManager[_0x7ddb[202]][_0x7ddb[2780]]= function(_0x9494x2){if(this[_0x7ddb[1179]][_0x7ddb[1730]](_0x9494x2)){var _0x9494x3=this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[248]](_0x9494x2);_0x9494x2= null!= _0x9494x3?_0x9494x3[_0x7ddb[124]]:this[_0x7ddb[1179]][_0x7ddb[1705]](_0x9494x2);return 1== mxUtils[_0x7ddb[433]](_0x9494x2,mxConstants.STYLE_HORIZONTAL,1)};return !this[_0x7ddb[1737]]()};mxSwimlaneManager[_0x7ddb[202]][_0x7ddb[833]]= function(_0x9494x2){if(null!= _0x9494x2){var _0x9494x3=this[_0x7ddb[1703]]()[_0x7ddb[502]]();_0x9494x3[_0x7ddb[473]]();try{for(var _0x9494x4=0;_0x9494x4< _0x9494x2[_0x7ddb[67]];_0x9494x4++){this[_0x7ddb[2779]](_0x9494x2[_0x9494x4])|| this[_0x7ddb[2781]](_0x9494x2[_0x9494x4])}}finally{_0x9494x3[_0x7ddb[476]]()}}};mxSwimlaneManager[_0x7ddb[202]][_0x7ddb[2781]]= function(_0x9494x2){for(var _0x9494x3=this[_0x7ddb[1703]]()[_0x7ddb[502]](),_0x9494x4=_0x9494x3[_0x7ddb[1197]](_0x9494x2),_0x9494x5=_0x9494x3[_0x7ddb[262]](_0x9494x4),_0x9494x9=null,_0x9494xa=0;_0x9494xa< _0x9494x5;_0x9494xa++){var _0x9494x12=_0x9494x3[_0x7ddb[263]](_0x9494x4,_0x9494xa);if(_0x9494x12!= _0x9494x2&& !this[_0x7ddb[2779]](_0x9494x12)&& (_0x9494x9= _0x9494x3[_0x7ddb[1721]](_0x9494x12),null!= _0x9494x9)){break}};null!= _0x9494x9&& this[_0x7ddb[2782]](_0x9494x2,_0x9494x9[_0x7ddb[117]],_0x9494x9[_0x7ddb[119]])};mxSwimlaneManager[_0x7ddb[202]][_0x7ddb[837]]= function(_0x9494x2){if(null!= _0x9494x2){var _0x9494x3=this[_0x7ddb[1703]]()[_0x7ddb[502]]();_0x9494x3[_0x7ddb[473]]();try{for(var _0x9494x4=0;_0x9494x4< _0x9494x2[_0x7ddb[67]];_0x9494x4++){if(!this[_0x7ddb[2779]](_0x9494x2[_0x9494x4])){var _0x9494x5=_0x9494x3[_0x7ddb[1721]](_0x9494x2[_0x9494x4]);if(null!= _0x9494x5){for(var _0x9494x9= new mxRectangle(0,0,_0x9494x5[_0x7ddb[117]],_0x9494x5[_0x7ddb[119]]),_0x9494xa=_0x9494x2[_0x9494x4],_0x9494x12=_0x9494xa;null!= _0x9494x12;){var _0x9494xa=_0x9494x12,_0x9494x12=_0x9494x3[_0x7ddb[1197]](_0x9494x12),_0x9494x13=this[_0x7ddb[1179]][_0x7ddb[1730]](_0x9494x12)?this[_0x7ddb[1179]][_0x7ddb[1731]](_0x9494x12): new mxRectangle;_0x9494x9[_0x7ddb[117]]+= _0x9494x13[_0x7ddb[117]];_0x9494x9[_0x7ddb[119]]+= _0x9494x13[_0x7ddb[119]]};this[_0x7ddb[2782]](_0x9494xa,_0x9494x9[_0x7ddb[117]],_0x9494x9[_0x7ddb[119]])}}}}finally{_0x9494x3[_0x7ddb[476]]()}}};mxSwimlaneManager[_0x7ddb[202]][_0x7ddb[2782]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=this[_0x7ddb[1703]]()[_0x7ddb[502]]();_0x9494x5[_0x7ddb[473]]();try{if(!this[_0x7ddb[2779]](_0x9494x2)){var _0x9494x9=_0x9494x5[_0x7ddb[1721]](_0x9494x2);if(null!= _0x9494x9){var _0x9494xa=this[_0x7ddb[2780]](_0x9494x2);if(_0x9494xa&& _0x9494x9[_0x7ddb[119]]!= _0x9494x4|| !_0x9494xa&& _0x9494x9[_0x7ddb[117]]!= _0x9494x3){_0x9494x9= _0x9494x9[_0x7ddb[238]](),_0x9494xa?_0x9494x9[_0x7ddb[119]]= _0x9494x4:_0x9494x9[_0x7ddb[117]]= _0x9494x3,_0x9494x5[_0x7ddb[1724]](_0x9494x2,_0x9494x9)}}};var _0x9494x12=this[_0x7ddb[1179]][_0x7ddb[1730]](_0x9494x2)?this[_0x7ddb[1179]][_0x7ddb[1731]](_0x9494x2): new mxRectangle;_0x9494x3-= _0x9494x12[_0x7ddb[117]];_0x9494x4-= _0x9494x12[_0x7ddb[119]];for(var _0x9494x13=_0x9494x5[_0x7ddb[262]](_0x9494x2),_0x9494x9=0;_0x9494x9< _0x9494x13;_0x9494x9++){var _0x9494x14=_0x9494x5[_0x7ddb[263]](_0x9494x2,_0x9494x9);this[_0x7ddb[2782]](_0x9494x14,_0x9494x3,_0x9494x4)}}finally{_0x9494x5[_0x7ddb[476]]()}};mxSwimlaneManager[_0x7ddb[202]][_0x7ddb[515]]= function(){this[_0x7ddb[1178]](null)};function mxTemporaryCellStates(_0x9494x2,_0x9494x3,_0x9494x4){this[_0x7ddb[441]]= _0x9494x2;_0x9494x3= null!= _0x9494x3?_0x9494x3:1;this[_0x7ddb[2783]]= _0x9494x2[_0x7ddb[517]]();this[_0x7ddb[2784]]= _0x9494x2[_0x7ddb[2312]]();this[_0x7ddb[2785]]= _0x9494x2[_0x7ddb[518]]();_0x9494x2[_0x7ddb[1517]]( new mxDictionary);_0x9494x2[_0x7ddb[2262]](_0x9494x3);if(null!= _0x9494x4){_0x9494x3= _0x9494x2[_0x7ddb[1230]]( new mxCell);for(var _0x9494x5=0;_0x9494x5< _0x9494x4[_0x7ddb[67]];_0x9494x5++){_0x9494x2[_0x7ddb[2267]](_0x9494x3,_0x9494x4[_0x9494x5])};for(var _0x9494x9=null,_0x9494x5=0;_0x9494x5< _0x9494x4[_0x7ddb[67]];_0x9494x5++){var _0x9494xa=_0x9494x2[_0x7ddb[2268]](_0x9494x3,_0x9494x4[_0x9494x5]);null== _0x9494x9?_0x9494x9= _0x9494xa:_0x9494x9[_0x7ddb[99]](_0x9494xa)};null== _0x9494x9&& (_0x9494x9= new mxRectangle);_0x9494x2[_0x7ddb[2256]](_0x9494x9)}}mxTemporaryCellStates[_0x7ddb[202]][_0x7ddb[441]]= null;mxTemporaryCellStates[_0x7ddb[202]][_0x7ddb[2784]]= null;mxTemporaryCellStates[_0x7ddb[202]][_0x7ddb[2783]]= null;mxTemporaryCellStates[_0x7ddb[202]][_0x7ddb[2785]]= null;mxTemporaryCellStates[_0x7ddb[202]][_0x7ddb[515]]= function(){this[_0x7ddb[441]][_0x7ddb[2262]](this[_0x7ddb[2785]]);this[_0x7ddb[441]][_0x7ddb[1517]](this[_0x7ddb[2784]]);this[_0x7ddb[441]][_0x7ddb[2256]](this[_0x7ddb[2783]])};function mxCellStatePreview(_0x9494x2){this[_0x7ddb[1179]]= _0x9494x2;this[_0x7ddb[2786]]= {}}mxCellStatePreview[_0x7ddb[202]][_0x7ddb[1179]]= null;mxCellStatePreview[_0x7ddb[202]][_0x7ddb[2786]]= null;mxCellStatePreview[_0x7ddb[202]][_0x7ddb[2787]]= 0;mxCellStatePreview[_0x7ddb[202]][_0x7ddb[1107]]= function(){return 0== this[_0x7ddb[2787]]};mxCellStatePreview[_0x7ddb[202]][_0x7ddb[1194]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x9494x5= null!= _0x9494x5?_0x9494x5:!0;_0x9494x9= null!= _0x9494x9?_0x9494x9:!0;var _0x9494xa=mxCellPath[_0x7ddb[385]](_0x9494x2[_0x7ddb[246]]),_0x9494x12=this[_0x7ddb[2786]][_0x9494xa];null== _0x9494x12?(_0x9494x12= new mxPoint(_0x9494x3,_0x9494x4),this[_0x7ddb[2786]][_0x9494xa]= _0x9494x12,this[_0x7ddb[2787]]++):_0x9494x5?(_0x9494x12[_0x7ddb[2788]]+= _0x9494x3,_0x9494x12[_0x7ddb[2789]]+= _0x9494x4):(_0x9494x12[_0x7ddb[2788]]= _0x9494x3,_0x9494x12[_0x7ddb[2789]]= _0x9494x4);_0x9494x9&& this[_0x7ddb[2790]](_0x9494x2);return _0x9494x12};mxCellStatePreview[_0x7ddb[202]][_0x7ddb[539]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x4=_0x9494x3[_0x7ddb[501]](),_0x9494x5;for(_0x9494x5 in this[_0x7ddb[2786]]){var _0x9494x9=mxCellPath[_0x7ddb[2791]](_0x9494x4,_0x9494x5),_0x9494xa=this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[248]](_0x9494x9),_0x9494x12=this[_0x7ddb[2786]][_0x9494x5],_0x9494x9=this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[248]](_0x9494x3[_0x7ddb[1197]](_0x9494x9));this[_0x7ddb[2792]](_0x9494x9,_0x9494xa,_0x9494x12[_0x7ddb[235]],_0x9494x12[_0x7ddb[236]])};for(_0x9494x5 in this[_0x7ddb[2786]]){_0x9494x9= mxCellPath[_0x7ddb[2791]](_0x9494x4,_0x9494x5),_0x9494xa= this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[248]](_0x9494x9),_0x9494x12= this[_0x7ddb[2786]][_0x9494x5],_0x9494x9= this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[248]](_0x9494x3[_0x7ddb[1197]](_0x9494x9)),this[_0x7ddb[2793]](_0x9494x9,_0x9494xa,_0x9494x12[_0x7ddb[235]],_0x9494x12[_0x7ddb[236]],_0x9494x2)}};mxCellStatePreview[_0x7ddb[202]][_0x7ddb[2792]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){if(null!= _0x9494x3){var _0x9494x9=this[_0x7ddb[1179]][_0x7ddb[502]]();if(_0x9494x9[_0x7ddb[1193]](_0x9494x3[_0x7ddb[246]])){_0x9494x3[_0x7ddb[2080]]= !0;this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[2267]](_0x9494x2,_0x9494x3[_0x7ddb[246]]);_0x9494x2= _0x9494x9[_0x7ddb[1721]](_0x9494x3[_0x7ddb[246]]);var _0x9494xa=mxCellPath[_0x7ddb[385]](_0x9494x3[_0x7ddb[246]]);if((0!= _0x9494x4|| 0!= _0x9494x5)&& null!= _0x9494x2&& (!_0x9494x2[_0x7ddb[1500]]|| null!= this[_0x7ddb[2786]][_0x9494xa])){_0x9494x3[_0x7ddb[235]]+= _0x9494x4,_0x9494x3[_0x7ddb[236]]+= _0x9494x5}};_0x9494x2= _0x9494x9[_0x7ddb[262]](_0x9494x3[_0x7ddb[246]]);for(_0x9494xa= 0;_0x9494xa< _0x9494x2;_0x9494xa++){this[_0x7ddb[2792]](_0x9494x3,this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[248]](_0x9494x9[_0x7ddb[263]](_0x9494x3[_0x7ddb[246]],_0x9494xa)),_0x9494x4,_0x9494x5)}}};mxCellStatePreview[_0x7ddb[202]][_0x7ddb[2793]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){if(null!= _0x9494x3){_0x9494x3[_0x7ddb[2080]]= !0;this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[2268]](_0x9494x2,_0x9494x3[_0x7ddb[246]]);var _0x9494xa=mxCellPath[_0x7ddb[385]](_0x9494x3[_0x7ddb[246]]),_0x9494x12=this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x13=this[_0x7ddb[1179]][_0x7ddb[1198]](_0x9494x3[_0x7ddb[246]]);if((0!= _0x9494x4|| 0!= _0x9494x5)&& null!= _0x9494x13&& _0x9494x13[_0x7ddb[1500]]&& _0x9494x12[_0x7ddb[1193]](_0x9494x3[_0x7ddb[246]])&& (null== _0x9494x2|| _0x9494x12[_0x7ddb[1193]](_0x9494x2[_0x7ddb[246]])|| null!= this[_0x7ddb[2786]][_0x9494xa])){_0x9494x3[_0x7ddb[235]]+= _0x9494x4,_0x9494x3[_0x7ddb[236]]+= _0x9494x5,this[_0x7ddb[1179]][_0x7ddb[259]][_0x7ddb[258]](_0x9494x3)};null!= _0x9494x9&& _0x9494x9(_0x9494x3);_0x9494x2= _0x9494x12[_0x7ddb[262]](_0x9494x3[_0x7ddb[246]]);for(_0x9494xa= 0;_0x9494xa< _0x9494x2;_0x9494xa++){this[_0x7ddb[2793]](_0x9494x3,this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[248]](_0x9494x12[_0x7ddb[263]](_0x9494x3[_0x7ddb[246]],_0x9494xa)),_0x9494x4,_0x9494x5,_0x9494x9)}}};mxCellStatePreview[_0x7ddb[202]][_0x7ddb[2790]]= function(_0x9494x2){for(var _0x9494x3=this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x4=_0x9494x3[_0x7ddb[1707]](_0x9494x2[_0x7ddb[246]]),_0x9494x5=0;_0x9494x5< _0x9494x4;_0x9494x5++){var _0x9494x9=this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[248]](_0x9494x3[_0x7ddb[1708]](_0x9494x2[_0x7ddb[246]],_0x9494x5));null!= _0x9494x9&& this[_0x7ddb[1194]](_0x9494x9,0,0)}};function mxConnectionConstraint(_0x9494x2,_0x9494x3){this[_0x7ddb[2546]]= _0x9494x2;this[_0x7ddb[591]]= null!= _0x9494x3?_0x9494x3:!0}mxConnectionConstraint[_0x7ddb[202]][_0x7ddb[2546]]= null;mxConnectionConstraint[_0x7ddb[202]][_0x7ddb[591]]= null;function mxGraphHandler(_0x9494x2){this[_0x7ddb[1179]]= _0x9494x2;this[_0x7ddb[1179]][_0x7ddb[1133]](this);this[_0x7ddb[2730]]= mxUtils[_0x7ddb[885]](this,function(){this[_0x7ddb[2794]]()});this[_0x7ddb[1179]][_0x7ddb[169]](mxEvent.PAN,this[_0x7ddb[2730]])}mxGraphHandler[_0x7ddb[202]][_0x7ddb[1179]]= null;mxGraphHandler[_0x7ddb[202]][_0x7ddb[2795]]= mxClient[_0x7ddb[80]]?20:50;mxGraphHandler[_0x7ddb[202]][_0x7ddb[984]]= !0;mxGraphHandler[_0x7ddb[202]][_0x7ddb[2796]]= !0;mxGraphHandler[_0x7ddb[202]][_0x7ddb[2797]]= !0;mxGraphHandler[_0x7ddb[202]][_0x7ddb[2798]]= !0;mxGraphHandler[_0x7ddb[202]][_0x7ddb[990]]= !1;mxGraphHandler[_0x7ddb[202]][_0x7ddb[2799]]= null;mxGraphHandler[_0x7ddb[202]][_0x7ddb[2800]]= null;mxGraphHandler[_0x7ddb[202]][_0x7ddb[2801]]= null;mxGraphHandler[_0x7ddb[202]][_0x7ddb[2802]]= !0;mxGraphHandler[_0x7ddb[202]][_0x7ddb[2803]]= !0;mxGraphHandler[_0x7ddb[202]][_0x7ddb[846]]= !0;mxGraphHandler[_0x7ddb[202]][_0x7ddb[2804]]= !1;mxGraphHandler[_0x7ddb[202]][_0x7ddb[2805]]= !0;mxGraphHandler[_0x7ddb[202]][_0x7ddb[923]]= 6;mxGraphHandler[_0x7ddb[202]][_0x7ddb[2806]]= _0x7ddb[586];mxGraphHandler[_0x7ddb[202]][_0x7ddb[2807]]= !1;mxGraphHandler[_0x7ddb[202]][_0x7ddb[253]]= null;mxGraphHandler[_0x7ddb[202]][_0x7ddb[2808]]= !1;mxGraphHandler[_0x7ddb[202]][_0x7ddb[2809]]= !0;mxGraphHandler[_0x7ddb[202]][_0x7ddb[994]]= function(){return this[_0x7ddb[984]]};mxGraphHandler[_0x7ddb[202]][_0x7ddb[995]]= function(_0x9494x2){this[_0x7ddb[984]]= _0x9494x2};mxGraphHandler[_0x7ddb[202]][_0x7ddb[2810]]= function(){return this[_0x7ddb[2797]]};mxGraphHandler[_0x7ddb[202]][_0x7ddb[2811]]= function(_0x9494x2){this[_0x7ddb[2797]]= _0x9494x2};mxGraphHandler[_0x7ddb[202]][_0x7ddb[2812]]= function(){return this[_0x7ddb[2798]]};mxGraphHandler[_0x7ddb[202]][_0x7ddb[2813]]= function(_0x9494x2){this[_0x7ddb[2798]]= _0x9494x2};mxGraphHandler[_0x7ddb[202]][_0x7ddb[2814]]= function(){return this[_0x7ddb[2803]]};mxGraphHandler[_0x7ddb[202]][_0x7ddb[2815]]= function(_0x9494x2){this[_0x7ddb[2803]]= _0x9494x2};mxGraphHandler[_0x7ddb[202]][_0x7ddb[2816]]= function(){return this[_0x7ddb[846]]};mxGraphHandler[_0x7ddb[202]][_0x7ddb[2817]]= function(_0x9494x2){this[_0x7ddb[846]]= _0x9494x2};mxGraphHandler[_0x7ddb[202]][_0x7ddb[2818]]= function(_0x9494x2){return _0x9494x2[_0x7ddb[736]]()};mxGraphHandler[_0x7ddb[202]][_0x7ddb[2819]]= function(_0x9494x2){return this[_0x7ddb[1179]][_0x7ddb[2692]](_0x9494x2)};mxGraphHandler[_0x7ddb[202]][_0x7ddb[787]]= function(_0x9494x2,_0x9494x3){if(!_0x9494x3[_0x7ddb[721]]()&& this[_0x7ddb[994]]() && this[_0x7ddb[1179]][_0x7ddb[994]]() && !this[_0x7ddb[1179]][_0x7ddb[2579]](_0x9494x3[_0x7ddb[727]]()) && null!= _0x9494x3[_0x7ddb[248]]()){var _0x9494x4=this[_0x7ddb[2818]](_0x9494x3);this[_0x7ddb[246]]= null;this[_0x7ddb[2820]]= this[_0x7ddb[2819]](_0x9494x4);this[_0x7ddb[2814]]()&& !this[_0x7ddb[2820]]&& this[_0x7ddb[1179]][_0x7ddb[2459]](_0x9494x4,_0x9494x3[_0x7ddb[727]]());if(this[_0x7ddb[2812]]()){var _0x9494x5=this[_0x7ddb[1179]][_0x7ddb[251]],_0x9494x9=_0x9494x5[_0x7ddb[1721]](_0x9494x4);this[_0x7ddb[1179]][_0x7ddb[1712]](_0x9494x4)&& (!_0x9494x5[_0x7ddb[250]](_0x9494x4)|| 1< this[_0x7ddb[1179]][_0x7ddb[2694]]() || null!= _0x9494x9[_0x7ddb[1525]]&& 0< _0x9494x9[_0x7ddb[1525]][_0x7ddb[67]] || null== _0x9494x5[_0x7ddb[1709]](_0x9494x4,!0) || null== _0x9494x5[_0x7ddb[1709]](_0x9494x4,!1) || this[_0x7ddb[1179]][_0x7ddb[2406]] || this[_0x7ddb[1179]][_0x7ddb[2574]](_0x9494x3[_0x7ddb[727]]())&& this[_0x7ddb[1179]][_0x7ddb[2617]]())&& this[_0x7ddb[861]](_0x9494x4,_0x9494x3[_0x7ddb[730]](),_0x9494x3[_0x7ddb[732]]());this[_0x7ddb[2821]]= !0;!mxClient[_0x7ddb[75]]&& !mxClient[_0x7ddb[76]] || _0x7ddb[2822]!= _0x9494x3[_0x7ddb[728]]()[_0x7ddb[301]]?_0x9494x3[_0x7ddb[722]]():mxClient[_0x7ddb[75]]&& _0x7ddb[2822]== _0x9494x3[_0x7ddb[728]]()[_0x7ddb[301]]&& (this[_0x7ddb[2821]]= !1,this[_0x7ddb[2823]]= null)}}};mxGraphHandler[_0x7ddb[202]][_0x7ddb[1010]]= function(){var _0x9494x2=this[_0x7ddb[1179]][_0x7ddb[902]](),_0x9494x3=this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x4=mxUtils[_0x7ddb[885]](this,function(_0x9494x2){return null!= this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[248]](_0x9494x2)&& _0x9494x3[_0x7ddb[1193]](_0x9494x2)&& null!= _0x9494x3[_0x7ddb[1721]](_0x9494x2)&& !_0x9494x3[_0x7ddb[1721]](_0x9494x2)[_0x7ddb[1500]]});return this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[2313]](_0x9494x3[_0x7ddb[1921]](_0x9494x4,_0x9494x2))};mxGraphHandler[_0x7ddb[202]][_0x7ddb[2690]]= function(_0x9494x2){return !this[_0x7ddb[2820]]&& this[_0x7ddb[1179]][_0x7ddb[1712]](_0x9494x2)?[_0x9494x2]:this[_0x7ddb[1179]][_0x7ddb[2629]](this[_0x7ddb[1179]][_0x7ddb[897]]())};mxGraphHandler[_0x7ddb[202]][_0x7ddb[2824]]= function(_0x9494x2){_0x9494x2= this[_0x7ddb[1613]](_0x9494x2);null!= _0x9494x2&& (_0x9494x2[_0x7ddb[244]](-1,-1),_0x9494x2[_0x7ddb[117]]< this[_0x7ddb[923]]&& (_0x9494x2[_0x7ddb[235]]-= (this[_0x7ddb[923]]- _0x9494x2[_0x7ddb[117]])/ 2,_0x9494x2[_0x7ddb[117]]= this[_0x7ddb[923]]),_0x9494x2[_0x7ddb[119]]< this[_0x7ddb[923]]&& (_0x9494x2[_0x7ddb[236]]-= (this[_0x7ddb[923]]- _0x9494x2[_0x7ddb[119]])/ 2,_0x9494x2[_0x7ddb[119]]= this[_0x7ddb[923]]));return _0x9494x2};mxGraphHandler[_0x7ddb[202]][_0x7ddb[1613]]= function(_0x9494x2){var _0x9494x3=null;if(null!= _0x9494x2&& 0< _0x9494x2[_0x7ddb[67]]){for(var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x5=0;_0x9494x5< _0x9494x2[_0x7ddb[67]];_0x9494x5++){if(_0x9494x4[_0x7ddb[1193]](_0x9494x2[_0x9494x5])|| _0x9494x4[_0x7ddb[250]](_0x9494x2[_0x9494x5])){var _0x9494x9=this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[248]](_0x9494x2[_0x9494x5]);if(null!= _0x9494x9){var _0x9494xa=_0x9494x9;_0x9494x4[_0x7ddb[1193]](_0x9494x2[_0x9494x5])&& (null!= _0x9494x9[_0x7ddb[253]]&& null!= _0x9494x9[_0x7ddb[253]][_0x7ddb[1563]])&& (_0x9494xa= _0x9494x9[_0x7ddb[253]][_0x7ddb[1563]]);null== _0x9494x3?_0x9494x3= new mxRectangle(_0x9494xa[_0x7ddb[235]],_0x9494xa[_0x7ddb[236]],_0x9494xa[_0x7ddb[117]],_0x9494xa[_0x7ddb[119]]):_0x9494x3[_0x7ddb[99]](_0x9494xa)}}}};return _0x9494x3};mxGraphHandler[_0x7ddb[202]][_0x7ddb[2825]]= function(_0x9494x2){_0x9494x2= new mxRectangleShape(_0x9494x2,null,this[_0x7ddb[2806]]);_0x9494x2[_0x7ddb[1522]]= !0;this[_0x7ddb[2807]]?(_0x9494x2[_0x7ddb[507]]= mxConstants[_0x7ddb[1656]],_0x9494x2[_0x7ddb[176]](this[_0x7ddb[1179]][_0x7ddb[526]])):(_0x9494x2[_0x7ddb[507]]= this[_0x7ddb[1179]][_0x7ddb[507]]!= mxConstants[_0x7ddb[508]]?mxConstants[_0x7ddb[1523]]:mxConstants[_0x7ddb[508]],_0x9494x2[_0x7ddb[176]](this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[1524]]()),_0x9494x2[_0x7ddb[1229]]= !1);return _0x9494x2};mxGraphHandler[_0x7ddb[202]][_0x7ddb[861]]= function(_0x9494x2,_0x9494x3,_0x9494x4){this[_0x7ddb[246]]= _0x9494x2;this[_0x7ddb[2823]]= mxUtils[_0x7ddb[2196]](this[_0x7ddb[1179]][_0x7ddb[526]],_0x9494x3,_0x9494x4);this[_0x7ddb[895]]= this[_0x7ddb[2690]](this[_0x7ddb[246]]);this[_0x7ddb[1562]]= this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[1799]](this[_0x7ddb[895]]);this[_0x7ddb[2826]]= this[_0x7ddb[2824]](this[_0x7ddb[895]]);this[_0x7ddb[990]]&& (this[_0x7ddb[2799]]= new mxGuide(this[_0x7ddb[1179]],this[_0x7ddb[1010]]()))};mxGraphHandler[_0x7ddb[202]][_0x7ddb[2827]]= function(_0x9494x2){return null!= this[_0x7ddb[2799]]?this[_0x7ddb[2799]][_0x7ddb[1019]](_0x9494x2[_0x7ddb[727]]()):!0};mxGraphHandler[_0x7ddb[202]][_0x7ddb[1021]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[2808]]?this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[255]]:1;_0x9494x2[_0x7ddb[235]]= this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x2[_0x7ddb[235]]/ _0x9494x3)* _0x9494x3;_0x9494x2[_0x7ddb[236]]= this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x2[_0x7ddb[236]]/ _0x9494x3)* _0x9494x3;return _0x9494x2};mxGraphHandler[_0x7ddb[202]][_0x7ddb[788]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[1179]];if(!_0x9494x3[_0x7ddb[721]]()&& _0x9494x4[_0x7ddb[1009]] && null!= this[_0x7ddb[246]] && null!= this[_0x7ddb[2823]] && null!= this[_0x7ddb[1562]]){var _0x9494x5=mxUtils[_0x7ddb[2196]](_0x9494x4[_0x7ddb[526]],_0x9494x3[_0x7ddb[730]](),_0x9494x3[_0x7ddb[732]]()),_0x9494x9=_0x9494x5[_0x7ddb[235]]- this[_0x7ddb[2823]][_0x7ddb[235]],_0x9494xa=_0x9494x5[_0x7ddb[236]]- this[_0x7ddb[2823]][_0x7ddb[236]],_0x9494x5=_0x9494x4[_0x7ddb[2353]];if(null!= this[_0x7ddb[253]]|| Math[_0x7ddb[425]](_0x9494x9)> _0x9494x5|| Math[_0x7ddb[425]](_0x9494xa)> _0x9494x5){null== this[_0x7ddb[1016]]&& (this[_0x7ddb[1016]]= new mxCellHighlight(this[_0x7ddb[1179]],mxConstants.DROP_TARGET_COLOR,3));null== this[_0x7ddb[253]]&& (this[_0x7ddb[253]]= this[_0x7ddb[2825]](this[_0x7ddb[1562]]));var _0x9494x12=_0x9494x4[_0x7ddb[1018]](_0x9494x3[_0x7ddb[727]]()),_0x9494x5=!0;if(null!= this[_0x7ddb[2799]]&& this[_0x7ddb[2827]](_0x9494x3)){_0x9494xa= this[_0x7ddb[2799]][_0x7ddb[582]](this[_0x7ddb[1562]], new mxPoint(_0x9494x9,_0x9494xa),_0x9494x12),_0x9494x5= !1,_0x9494x9= _0x9494xa[_0x7ddb[235]],_0x9494xa= _0x9494xa[_0x7ddb[236]]}else {if(_0x9494x12){var _0x9494x13=_0x9494x4[_0x7ddb[249]]()[_0x7ddb[513]],_0x9494x14=_0x9494x4[_0x7ddb[249]]()[_0x7ddb[255]],_0x9494x12=this[_0x7ddb[1562]][_0x7ddb[235]]- (_0x9494x4[_0x7ddb[1021]](this[_0x7ddb[1562]][_0x7ddb[235]]/ _0x9494x14- _0x9494x13[_0x7ddb[235]])+ _0x9494x13[_0x7ddb[235]])* _0x9494x14,_0x9494x13=this[_0x7ddb[1562]][_0x7ddb[236]]- (_0x9494x4[_0x7ddb[1021]](this[_0x7ddb[1562]][_0x7ddb[236]]/ _0x9494x14- _0x9494x13[_0x7ddb[236]])+ _0x9494x13[_0x7ddb[236]])* _0x9494x14,_0x9494xa=this[_0x7ddb[1021]]( new mxPoint(_0x9494x9,_0x9494xa)),_0x9494x9=_0x9494xa[_0x7ddb[235]]- _0x9494x12,_0x9494xa=_0x9494xa[_0x7ddb[236]]- _0x9494x13}};null!= this[_0x7ddb[2799]]&& _0x9494x5&& this[_0x7ddb[2799]][_0x7ddb[801]]();_0x9494x4[_0x7ddb[2578]](_0x9494x3[_0x7ddb[727]]())&& (Math[_0x7ddb[425]](_0x9494x9)> Math[_0x7ddb[425]](_0x9494xa)?_0x9494xa= 0:_0x9494x9= 0);this[_0x7ddb[2800]]= _0x9494x9;this[_0x7ddb[2801]]= _0x9494xa;this[_0x7ddb[2794]]();_0x9494x5= null;_0x9494xa= _0x9494x3[_0x7ddb[736]]();_0x9494x4[_0x7ddb[1015]]()&& this[_0x7ddb[2796]]&& (_0x9494x5= _0x9494x4[_0x7ddb[564]](this[_0x7ddb[895]],_0x9494x3[_0x7ddb[727]](),_0x9494xa));_0x9494x12= _0x9494x5;for(_0x9494x13= _0x9494x4[_0x7ddb[502]]();null!= _0x9494x12&& _0x9494x12!= this[_0x7ddb[895]][0];){_0x9494x12= _0x9494x13[_0x7ddb[1197]](_0x9494x12)};var _0x9494x14=_0x9494x4[_0x7ddb[2574]](_0x9494x3[_0x7ddb[727]]())&& _0x9494x4[_0x7ddb[2617]]()&& this[_0x7ddb[2810]](),_0x9494x9=_0x9494x4[_0x7ddb[249]]()[_0x7ddb[248]](_0x9494x5),_0x9494x15=!1;null!= _0x9494x9&& null== _0x9494x12&& (_0x9494x13[_0x7ddb[1197]](this[_0x7ddb[246]])!= _0x9494x5|| _0x9494x14)?(this[_0x7ddb[772]]!= _0x9494x5&& (this[_0x7ddb[772]]= _0x9494x5,this[_0x7ddb[2828]](mxConstants.DROP_TARGET_COLOR)),_0x9494x15= !0):(this[_0x7ddb[772]]= null,this[_0x7ddb[2804]]&& (null!= _0x9494xa&& 1== this[_0x7ddb[895]][_0x7ddb[67]]&& _0x9494x4[_0x7ddb[502]]()[_0x7ddb[1193]](_0x9494xa)&& _0x9494x4[_0x7ddb[2565]](_0x9494xa))&& (_0x9494x9= _0x9494x4[_0x7ddb[249]]()[_0x7ddb[248]](_0x9494xa),null!= _0x9494x9&& (_0x9494x4= null== _0x9494x4[_0x7ddb[2500]](null,this[_0x7ddb[246]],_0x9494xa)?mxConstants[_0x7ddb[2829]]:mxConstants[_0x7ddb[2830]],this[_0x7ddb[2828]](_0x9494x4),_0x9494x15= !0)));null!= _0x9494x9&& _0x9494x15?this[_0x7ddb[1016]][_0x7ddb[1016]](_0x9494x9):this[_0x7ddb[1016]][_0x7ddb[801]]()};_0x9494x3[_0x7ddb[722]]();mxEvent[_0x7ddb[722]](_0x9494x3[_0x7ddb[727]]())}else {if((this[_0x7ddb[2812]]()|| this[_0x7ddb[2810]]())&& this[_0x7ddb[2802]]&& !_0x9494x3[_0x7ddb[721]]()&& null!= _0x9494x3[_0x7ddb[248]]()&& !_0x9494x4[_0x7ddb[1009]]){_0x9494x9= _0x9494x4[_0x7ddb[2599]](_0x9494x3[_0x7ddb[736]]()),null== _0x9494x9&& (_0x9494x4[_0x7ddb[994]]()&& _0x9494x4[_0x7ddb[1712]](_0x9494x3[_0x7ddb[736]]()))&& (_0x9494x9= _0x9494x4[_0x7ddb[502]]()[_0x7ddb[250]](_0x9494x3[_0x7ddb[736]]())?mxConstants[_0x7ddb[2831]]:mxConstants[_0x7ddb[2832]]),_0x9494x3[_0x7ddb[248]]()[_0x7ddb[1609]](_0x9494x9),_0x9494x3[_0x7ddb[722]]()}}};mxGraphHandler[_0x7ddb[202]][_0x7ddb[2794]]= function(){null!= this[_0x7ddb[253]]&& (this[_0x7ddb[253]][_0x7ddb[1562]]= new mxRectangle(Math[_0x7ddb[488]](this[_0x7ddb[2826]][_0x7ddb[235]]+ this[_0x7ddb[2800]]- this[_0x7ddb[1179]][_0x7ddb[1136]]),Math[_0x7ddb[488]](this[_0x7ddb[2826]][_0x7ddb[236]]+ this[_0x7ddb[2801]]- this[_0x7ddb[1179]][_0x7ddb[1137]]),this[_0x7ddb[2826]][_0x7ddb[117]],this[_0x7ddb[2826]][_0x7ddb[119]]),this[_0x7ddb[253]][_0x7ddb[258]]())};mxGraphHandler[_0x7ddb[202]][_0x7ddb[2828]]= function(_0x9494x2){null!= this[_0x7ddb[1016]]&& this[_0x7ddb[1016]][_0x7ddb[2828]](_0x9494x2)};mxGraphHandler[_0x7ddb[202]][_0x7ddb[789]]= function(_0x9494x2,_0x9494x3){if(!_0x9494x3[_0x7ddb[721]]()){var _0x9494x4=this[_0x7ddb[1179]];if(null!= this[_0x7ddb[246]]&& null!= this[_0x7ddb[2823]]&& null!= this[_0x7ddb[253]]&& null!= this[_0x7ddb[2800]]&& null!= this[_0x7ddb[2801]]){var _0x9494x5=_0x9494x4[_0x7ddb[249]]()[_0x7ddb[255]],_0x9494x9=_0x9494x4[_0x7ddb[2574]](_0x9494x3[_0x7ddb[727]]())&& _0x9494x4[_0x7ddb[2617]]()&& this[_0x7ddb[2810]](),_0x9494xa=this[_0x7ddb[2800]]/ _0x9494x5,_0x9494x5=this[_0x7ddb[2801]]/ _0x9494x5,_0x9494x12=_0x9494x3[_0x7ddb[736]]();this[_0x7ddb[2804]]&& null== this[_0x7ddb[772]]&& null!= _0x9494x12&& _0x9494x4[_0x7ddb[502]]()[_0x7ddb[1193]](_0x9494x12)&& _0x9494x4[_0x7ddb[2565]](_0x9494x12)&& _0x9494x4[_0x7ddb[2581]](null,this[_0x7ddb[246]],_0x9494x12)?_0x9494x4[_0x7ddb[2433]][_0x7ddb[807]](this[_0x7ddb[246]],_0x9494x12,_0x9494x3[_0x7ddb[727]]()):(_0x9494x12= this[_0x7ddb[772]],_0x9494x4[_0x7ddb[2655]]()&& _0x9494x4[_0x7ddb[2686]](_0x9494x12,this[_0x7ddb[895]],_0x9494x3[_0x7ddb[727]]())?_0x9494x4[_0x7ddb[853]](_0x9494x12,this[_0x7ddb[895]],null,_0x9494xa,_0x9494x5):this[_0x7ddb[834]](this[_0x7ddb[895]],_0x9494xa,_0x9494x5,_0x9494x9,this[_0x7ddb[772]],_0x9494x3[_0x7ddb[727]]()))}else {this[_0x7ddb[2814]]()&& (this[_0x7ddb[2820]]&& null!= this[_0x7ddb[246]])&& this[_0x7ddb[2833]](_0x9494x3)}};this[_0x7ddb[2821]]&& _0x9494x3[_0x7ddb[722]]();this[_0x7ddb[862]]()};mxGraphHandler[_0x7ddb[202]][_0x7ddb[2833]]= function(_0x9494x2){this[_0x7ddb[1179]][_0x7ddb[2459]](this[_0x7ddb[246]],_0x9494x2[_0x7ddb[727]]())};mxGraphHandler[_0x7ddb[202]][_0x7ddb[862]]= function(){this[_0x7ddb[2834]]();this[_0x7ddb[2820]]= this[_0x7ddb[2821]]= !1;this[_0x7ddb[772]]= this[_0x7ddb[246]]= this[_0x7ddb[2823]]= this[_0x7ddb[2835]]= this[_0x7ddb[2801]]= this[_0x7ddb[2800]]= null};mxGraphHandler[_0x7ddb[202]][_0x7ddb[2836]]= function(_0x9494x2,_0x9494x3,_0x9494x4){if(this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[1193]](_0x9494x2)){_0x9494x2= this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[248]](_0x9494x2);_0x9494x4= mxUtils[_0x7ddb[2196]](this[_0x7ddb[1179]][_0x7ddb[526]],mxEvent[_0x7ddb[731]](_0x9494x4),mxEvent[_0x7ddb[733]](_0x9494x4));var _0x9494x5=mxUtils[_0x7ddb[431]](mxUtils[_0x7ddb[433]](_0x9494x2[_0x7ddb[124]],mxConstants.STYLE_ROTATION)|| 0);if(0!= _0x9494x5){_0x9494x3= Math[_0x7ddb[426]](-_0x9494x5);var _0x9494x5=Math[_0x7ddb[427]](-_0x9494x5),_0x9494x9= new mxPoint(_0x9494x2[_0x7ddb[241]](),_0x9494x2[_0x7ddb[242]]());_0x9494x4= mxUtils[_0x7ddb[432]](_0x9494x4,_0x9494x3,_0x9494x5,_0x9494x9)};return null!= _0x9494x2&& !mxUtils[_0x7ddb[442]](_0x9494x2,_0x9494x4[_0x7ddb[235]],_0x9494x4[_0x7ddb[236]])};return !1};mxGraphHandler[_0x7ddb[202]][_0x7ddb[834]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){_0x9494x5&& (_0x9494x2= this[_0x7ddb[1179]][_0x7ddb[2615]](_0x9494x2));null== _0x9494x9&& (this[_0x7ddb[2816]]()&& this[_0x7ddb[2836]](this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[1197]](this[_0x7ddb[246]]),_0x9494x2,_0x9494xa))&& (_0x9494x9= this[_0x7ddb[1179]][_0x7ddb[902]]());_0x9494x2= this[_0x7ddb[1179]][_0x7ddb[834]](_0x9494x2,_0x9494x3- this[_0x7ddb[1179]][_0x7ddb[1136]]/ this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[255]],_0x9494x4- this[_0x7ddb[1179]][_0x7ddb[1137]]/ this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[255]],_0x9494x5,_0x9494x9,_0x9494xa);this[_0x7ddb[2814]]()&& this[_0x7ddb[2805]]&& this[_0x7ddb[1179]][_0x7ddb[2564]](_0x9494x2[0]);_0x9494x5&& this[_0x7ddb[1179]][_0x7ddb[904]](_0x9494x2)};mxGraphHandler[_0x7ddb[202]][_0x7ddb[2834]]= function(){null!= this[_0x7ddb[253]]&& (this[_0x7ddb[253]][_0x7ddb[515]](),this[_0x7ddb[253]]= null);null!= this[_0x7ddb[2799]]&& (this[_0x7ddb[2799]][_0x7ddb[515]](),this[_0x7ddb[2799]]= null);null!= this[_0x7ddb[1016]]&& (this[_0x7ddb[1016]][_0x7ddb[515]](),this[_0x7ddb[1016]]= null)};mxGraphHandler[_0x7ddb[202]][_0x7ddb[515]]= function(){this[_0x7ddb[1179]][_0x7ddb[1148]](this);this[_0x7ddb[1179]][_0x7ddb[745]](this[_0x7ddb[2730]]);this[_0x7ddb[2834]]()};function mxPanningHandler(_0x9494x2,_0x9494x3){null!= _0x9494x2&& (this[_0x7ddb[1179]]= _0x9494x2,this[_0x7ddb[1033]]= _0x9494x3,this[_0x7ddb[1179]][_0x7ddb[1133]](this),this[_0x7ddb[176]]())}mxPanningHandler[_0x7ddb[202]]= new mxPopupMenu;mxPanningHandler[_0x7ddb[202]][_0x7ddb[196]]= mxPanningHandler;mxPanningHandler[_0x7ddb[202]][_0x7ddb[1179]]= null;mxPanningHandler[_0x7ddb[202]][_0x7ddb[2837]]= null;mxPanningHandler[_0x7ddb[202]][_0x7ddb[2838]]= null;mxPanningHandler[_0x7ddb[202]][_0x7ddb[2839]]= !0;mxPanningHandler[_0x7ddb[202]][_0x7ddb[2840]]= !1;mxPanningHandler[_0x7ddb[202]][_0x7ddb[2841]]= !0;mxPanningHandler[_0x7ddb[202]][_0x7ddb[2842]]= !0;mxPanningHandler[_0x7ddb[202]][_0x7ddb[2843]]= !1;mxPanningHandler[_0x7ddb[202]][_0x7ddb[2844]]= !0;mxPanningHandler[_0x7ddb[202]][_0x7ddb[2845]]= !1;mxPanningHandler[_0x7ddb[202]][_0x7ddb[2431]]= !0;mxPanningHandler[_0x7ddb[202]][_0x7ddb[2846]]= function(){return this[_0x7ddb[2431]]};mxPanningHandler[_0x7ddb[202]][_0x7ddb[2847]]= function(_0x9494x2){this[_0x7ddb[2431]]= _0x9494x2};mxPanningHandler[_0x7ddb[202]][_0x7ddb[176]]= function(){mxPopupMenu[_0x7ddb[202]][_0x7ddb[176]][_0x7ddb[183]](this);mxEvent[_0x7ddb[169]](this[_0x7ddb[485]],mxClient[_0x7ddb[754]]?_0x7ddb[756]:_0x7ddb[752],mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[1179]][_0x7ddb[2276]][_0x7ddb[801]]()}))};mxPanningHandler[_0x7ddb[202]][_0x7ddb[2848]]= function(_0x9494x2){var _0x9494x3=_0x9494x2[_0x7ddb[727]]();return this[_0x7ddb[2840]]&& (this[_0x7ddb[2843]]|| null== _0x9494x2[_0x7ddb[248]]())&& mxEvent[_0x7ddb[1158]](_0x9494x3)|| mxEvent[_0x7ddb[775]](_0x9494x3)&& mxEvent[_0x7ddb[774]](_0x9494x3)|| this[_0x7ddb[2839]]&& mxEvent[_0x7ddb[737]](_0x9494x3)};mxPanningHandler[_0x7ddb[202]][_0x7ddb[787]]= function(_0x9494x2,_0x9494x3){if(!_0x9494x3[_0x7ddb[721]]()&& this[_0x7ddb[994]]()){this[_0x7ddb[1032]]();this[_0x7ddb[2741]]= -this[_0x7ddb[1179]][_0x7ddb[526]][_0x7ddb[360]];this[_0x7ddb[2742]]= -this[_0x7ddb[1179]][_0x7ddb[526]][_0x7ddb[190]];var _0x9494x4=mxUtils[_0x7ddb[2196]](this[_0x7ddb[1179]][_0x7ddb[526]],_0x9494x3[_0x7ddb[730]](),_0x9494x3[_0x7ddb[732]]());this[_0x7ddb[2837]]= _0x9494x4[_0x7ddb[235]];this[_0x7ddb[2838]]= _0x9494x4[_0x7ddb[236]];this[_0x7ddb[2849]]= this[_0x7ddb[737]](_0x9494x3);this[_0x7ddb[2850]]= this[_0x7ddb[2846]]()&& this[_0x7ddb[2848]](_0x9494x3);this[_0x7ddb[2739]]= _0x9494x3[_0x7ddb[730]]();this[_0x7ddb[2740]]= _0x9494x3[_0x7ddb[732]]();this[_0x7ddb[2850]]&& this[_0x7ddb[2851]](_0x9494x3)}};mxPanningHandler[_0x7ddb[202]][_0x7ddb[2851]]= function(_0x9494x2){_0x9494x2[_0x7ddb[722]]()};mxPanningHandler[_0x7ddb[202]][_0x7ddb[788]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=_0x9494x3[_0x7ddb[730]]()- this[_0x7ddb[2739]],_0x9494x5=_0x9494x3[_0x7ddb[732]]()- this[_0x7ddb[2740]];if(this[_0x7ddb[1124]]){this[_0x7ddb[2844]]&& (this[_0x7ddb[2845]]&& (_0x9494x4= this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x4),_0x9494x5= this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x5)),this[_0x7ddb[1179]][_0x7ddb[1135]](_0x9494x4+ this[_0x7ddb[2741]],_0x9494x5+ this[_0x7ddb[2742]])),this[_0x7ddb[746]]( new mxEventObject(mxEvent.PAN,_0x7ddb[763],_0x9494x3)),_0x9494x3[_0x7ddb[722]]()}else {if(this[_0x7ddb[2850]]){var _0x9494x9=this[_0x7ddb[1124]];this[_0x7ddb[1124]]= Math[_0x7ddb[425]](_0x9494x4)> this[_0x7ddb[1179]][_0x7ddb[2353]]|| Math[_0x7ddb[425]](_0x9494x5)> this[_0x7ddb[1179]][_0x7ddb[2353]];!_0x9494x9&& this[_0x7ddb[1124]] && this[_0x7ddb[746]]( new mxEventObject(mxEvent.PAN_START,_0x7ddb[763],_0x9494x3))}}};mxPanningHandler[_0x7ddb[202]][_0x7ddb[789]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=Math[_0x7ddb[425]](_0x9494x3[_0x7ddb[730]]()- this[_0x7ddb[2739]]),_0x9494x5=Math[_0x7ddb[425]](_0x9494x3[_0x7ddb[732]]()- this[_0x7ddb[2740]]);if(this[_0x7ddb[1124]]){if(!this[_0x7ddb[1179]][_0x7ddb[2365]]|| !mxUtils[_0x7ddb[1134]](this[_0x7ddb[1179]][_0x7ddb[526]])){_0x9494x4= _0x9494x3[_0x7ddb[730]]()- this[_0x7ddb[2739]];_0x9494x5= _0x9494x3[_0x7ddb[732]]()- this[_0x7ddb[2740]];this[_0x7ddb[2845]]&& (_0x9494x4= this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x4),_0x9494x5= this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x5));var _0x9494x9=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[255]],_0x9494xa=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[513]];this[_0x7ddb[1179]][_0x7ddb[1135]](0,0);this[_0x7ddb[1135]](_0x9494xa[_0x7ddb[235]]+ _0x9494x4/ _0x9494x9,_0x9494xa[_0x7ddb[236]]+ _0x9494x5/ _0x9494x9)};this[_0x7ddb[1124]]= !1;this[_0x7ddb[746]]( new mxEventObject(mxEvent.PAN_END,_0x7ddb[763],_0x9494x3));_0x9494x3[_0x7ddb[722]]()}else {this[_0x7ddb[2849]]&& (_0x9494x4< this[_0x7ddb[1179]][_0x7ddb[2353]]&& _0x9494x5< this[_0x7ddb[1179]][_0x7ddb[2353]])&& (_0x9494x4= this[_0x7ddb[2852]](_0x9494x3),this[_0x7ddb[1179]][_0x7ddb[994]]()&& this[_0x7ddb[2841]]&& null!= _0x9494x4&& !this[_0x7ddb[1179]][_0x7ddb[2692]](_0x9494x4)?this[_0x7ddb[1179]][_0x7ddb[2450]](_0x9494x4):this[_0x7ddb[2842]]&& null== _0x9494x4&& this[_0x7ddb[1179]][_0x7ddb[2440]](),this[_0x7ddb[1179]][_0x7ddb[2276]][_0x7ddb[801]](),_0x9494x5= mxUtils[_0x7ddb[444]](),_0x9494x5= new mxPoint(_0x9494x3[_0x7ddb[730]]()+ _0x9494x5[_0x7ddb[235]],_0x9494x3[_0x7ddb[732]]()+ _0x9494x5[_0x7ddb[236]]),this[_0x7ddb[152]](_0x9494x5[_0x7ddb[235]]+ 1,_0x9494x5[_0x7ddb[236]]+ 1,_0x9494x4,_0x9494x3[_0x7ddb[727]]()),_0x9494x3[_0x7ddb[722]]())};this[_0x7ddb[2849]]= this[_0x7ddb[2850]]= !1};mxPanningHandler[_0x7ddb[202]][_0x7ddb[2852]]= function(_0x9494x2){return _0x9494x2[_0x7ddb[736]]()};mxPanningHandler[_0x7ddb[202]][_0x7ddb[1135]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[1147]](_0x9494x2,_0x9494x3)};mxPanningHandler[_0x7ddb[202]][_0x7ddb[515]]= function(){this[_0x7ddb[1179]][_0x7ddb[1148]](this);mxPopupMenu[_0x7ddb[202]][_0x7ddb[515]][_0x7ddb[183]](this)};function mxCellMarker(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){mxEventSource[_0x7ddb[239]](this);null!= _0x9494x2&& (this[_0x7ddb[1179]]= _0x9494x2,this[_0x7ddb[2853]]= null!= _0x9494x3?_0x9494x3:mxConstants[_0x7ddb[2854]],this[_0x7ddb[2855]]= null!= _0x9494x3?_0x9494x4:mxConstants[_0x7ddb[2856]],this[_0x7ddb[2857]]= null!= _0x9494x5?_0x9494x5:mxConstants[_0x7ddb[2858]],this[_0x7ddb[1016]]= new mxCellHighlight(_0x9494x2))}mxUtils[_0x7ddb[1284]](mxCellMarker,mxEventSource);mxCellMarker[_0x7ddb[202]][_0x7ddb[1179]]= null;mxCellMarker[_0x7ddb[202]][_0x7ddb[984]]= !0;mxCellMarker[_0x7ddb[202]][_0x7ddb[2857]]= mxConstants[_0x7ddb[2858]];mxCellMarker[_0x7ddb[202]][_0x7ddb[2859]]= !1;mxCellMarker[_0x7ddb[202]][_0x7ddb[2853]]= null;mxCellMarker[_0x7ddb[202]][_0x7ddb[2855]]= null;mxCellMarker[_0x7ddb[202]][_0x7ddb[2860]]= null;mxCellMarker[_0x7ddb[202]][_0x7ddb[2861]]= null;mxCellMarker[_0x7ddb[202]][_0x7ddb[2862]]= null;mxCellMarker[_0x7ddb[202]][_0x7ddb[995]]= function(_0x9494x2){this[_0x7ddb[984]]= _0x9494x2};mxCellMarker[_0x7ddb[202]][_0x7ddb[994]]= function(){return this[_0x7ddb[984]]};mxCellMarker[_0x7ddb[202]][_0x7ddb[2863]]= function(_0x9494x2){this[_0x7ddb[2857]]= _0x9494x2};mxCellMarker[_0x7ddb[202]][_0x7ddb[2864]]= function(){return this[_0x7ddb[2857]]};mxCellMarker[_0x7ddb[202]][_0x7ddb[2865]]= function(_0x9494x2){this[_0x7ddb[2859]]= _0x9494x2};mxCellMarker[_0x7ddb[202]][_0x7ddb[2866]]= function(){return this[_0x7ddb[2859]]};mxCellMarker[_0x7ddb[202]][_0x7ddb[2867]]= function(){return null!= this[_0x7ddb[2861]]};mxCellMarker[_0x7ddb[202]][_0x7ddb[2868]]= function(){return this[_0x7ddb[2861]]};mxCellMarker[_0x7ddb[202]][_0x7ddb[2869]]= function(){return this[_0x7ddb[2862]]};mxCellMarker[_0x7ddb[202]][_0x7ddb[862]]= function(){this[_0x7ddb[2861]]= null;null!= this[_0x7ddb[2862]]&& (this[_0x7ddb[2862]]= null,this[_0x7ddb[2870]]())};mxCellMarker[_0x7ddb[202]][_0x7ddb[2871]]= function(_0x9494x2){var _0x9494x3=null;if(this[_0x7ddb[994]]()){var _0x9494x3=this[_0x7ddb[248]](_0x9494x2),_0x9494x4=null!= _0x9494x3?this[_0x7ddb[2872]](_0x9494x3):!1;_0x9494x2= this[_0x7ddb[2873]](_0x9494x2[_0x7ddb[727]](),_0x9494x3,_0x9494x4);this[_0x7ddb[2861]]= _0x9494x4?_0x9494x3:null;if(_0x9494x3!= this[_0x7ddb[2862]]|| _0x9494x2!= this[_0x7ddb[2860]]){this[_0x7ddb[2860]]= _0x9494x2,null!= _0x9494x3&& null!= this[_0x7ddb[2860]]?(this[_0x7ddb[2862]]= _0x9494x3,this[_0x7ddb[811]]()):null!= this[_0x7ddb[2862]]&& (this[_0x7ddb[2862]]= null,this[_0x7ddb[2870]]())}};return _0x9494x3};mxCellMarker[_0x7ddb[202]][_0x7ddb[2874]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[248]](_0x9494x2);null!= _0x9494x4&& (this[_0x7ddb[2860]]= null!= _0x9494x3?_0x9494x3:this[_0x7ddb[2853]],this[_0x7ddb[2862]]= _0x9494x4,this[_0x7ddb[811]]())};mxCellMarker[_0x7ddb[202]][_0x7ddb[811]]= function(){this[_0x7ddb[1016]][_0x7ddb[2828]](this[_0x7ddb[2860]]);this[_0x7ddb[1016]][_0x7ddb[1016]](this[_0x7ddb[2862]]);this[_0x7ddb[746]]( new mxEventObject(mxEvent.MARK,_0x7ddb[724],this[_0x7ddb[2862]]))};mxCellMarker[_0x7ddb[202]][_0x7ddb[2870]]= function(){this[_0x7ddb[811]]()};mxCellMarker[_0x7ddb[202]][_0x7ddb[2872]]= function(_0x9494x2){return !0};mxCellMarker[_0x7ddb[202]][_0x7ddb[2873]]= function(_0x9494x2,_0x9494x3,_0x9494x4){return _0x9494x4?this[_0x7ddb[2853]]:this[_0x7ddb[2855]]};mxCellMarker[_0x7ddb[202]][_0x7ddb[248]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[1179]][_0x7ddb[249]]();cell= this[_0x7ddb[736]](_0x9494x2);_0x9494x3= this[_0x7ddb[2875]](_0x9494x3[_0x7ddb[248]](cell));return null!= _0x9494x3&& this[_0x7ddb[1825]](_0x9494x3,_0x9494x2)?_0x9494x3:null};mxCellMarker[_0x7ddb[202]][_0x7ddb[736]]= function(_0x9494x2){return _0x9494x2[_0x7ddb[736]]()};mxCellMarker[_0x7ddb[202]][_0x7ddb[2875]]= function(_0x9494x2){return _0x9494x2};mxCellMarker[_0x7ddb[202]][_0x7ddb[1825]]= function(_0x9494x2,_0x9494x3){return this[_0x7ddb[2859]]?mxUtils[_0x7ddb[2876]](_0x9494x2,_0x9494x3[_0x7ddb[734]](),_0x9494x3[_0x7ddb[735]](),this[_0x7ddb[2857]],mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE):!0};mxCellMarker[_0x7ddb[202]][_0x7ddb[515]]= function(){this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[745]](this[_0x7ddb[2877]]);this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[745]](this[_0x7ddb[2877]]);this[_0x7ddb[1016]][_0x7ddb[515]]()};function mxSelectionCellsHandler(_0x9494x2){mxEventSource[_0x7ddb[239]](this);this[_0x7ddb[1179]]= _0x9494x2;this[_0x7ddb[2878]]= new mxDictionary;this[_0x7ddb[1179]][_0x7ddb[1133]](this);this[_0x7ddb[2731]]= mxUtils[_0x7ddb[885]](this,function(_0x9494x2,_0x9494x4){this[_0x7ddb[994]]()&& this[_0x7ddb[802]]()});this[_0x7ddb[1179]][_0x7ddb[2435]]()[_0x7ddb[169]](mxEvent.CHANGE,this[_0x7ddb[2731]]);this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[169]](mxEvent.CHANGE,this[_0x7ddb[2731]]);this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[169]](mxEvent.SCALE,this[_0x7ddb[2731]]);this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[169]](mxEvent.TRANSLATE,this[_0x7ddb[2731]]);this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[169]](mxEvent.SCALE_AND_TRANSLATE,this[_0x7ddb[2731]]);this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[169]](mxEvent.DOWN,this[_0x7ddb[2731]]);this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[169]](mxEvent.UP,this[_0x7ddb[2731]])}mxUtils[_0x7ddb[1284]](mxSelectionCellsHandler,mxEventSource);mxSelectionCellsHandler[_0x7ddb[202]][_0x7ddb[1179]]= null;mxSelectionCellsHandler[_0x7ddb[202]][_0x7ddb[984]]= !0;mxSelectionCellsHandler[_0x7ddb[202]][_0x7ddb[2731]]= null;mxSelectionCellsHandler[_0x7ddb[202]][_0x7ddb[2879]]= 100;mxSelectionCellsHandler[_0x7ddb[202]][_0x7ddb[2878]]= null;mxSelectionCellsHandler[_0x7ddb[202]][_0x7ddb[994]]= function(){return this[_0x7ddb[984]]};mxSelectionCellsHandler[_0x7ddb[202]][_0x7ddb[995]]= function(_0x9494x2){this[_0x7ddb[984]]= _0x9494x2};mxSelectionCellsHandler[_0x7ddb[202]][_0x7ddb[2596]]= function(_0x9494x2){return this[_0x7ddb[2878]][_0x7ddb[203]](_0x9494x2)};mxSelectionCellsHandler[_0x7ddb[202]][_0x7ddb[862]]= function(){this[_0x7ddb[2878]][_0x7ddb[209]](function(_0x9494x2,_0x9494x3){_0x9494x3[_0x7ddb[862]][_0x7ddb[183]](_0x9494x3)})};mxSelectionCellsHandler[_0x7ddb[202]][_0x7ddb[802]]= function(){var _0x9494x2=this[_0x7ddb[2878]];this[_0x7ddb[2878]]= new mxDictionary;for(var _0x9494x3=this[_0x7ddb[1179]][_0x7ddb[897]](),_0x9494x4=0;_0x9494x4< _0x9494x3[_0x7ddb[67]];_0x9494x4++){var _0x9494x5=this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[248]](_0x9494x3[_0x9494x4]);if(null!= _0x9494x5){var _0x9494x9=_0x9494x2[_0x7ddb[205]](_0x9494x3[_0x9494x4]);null!= _0x9494x9&& (_0x9494x9[_0x7ddb[724]]!= _0x9494x5?(_0x9494x9[_0x7ddb[515]](),_0x9494x9= null):_0x9494x9[_0x7ddb[258]]());null== _0x9494x9&& (_0x9494x9= this[_0x7ddb[1179]][_0x7ddb[2709]](_0x9494x5),this[_0x7ddb[746]]( new mxEventObject(mxEvent.ADD,_0x7ddb[724],_0x9494x5)));null!= _0x9494x9&& this[_0x7ddb[2878]][_0x7ddb[204]](_0x9494x3[_0x9494x4],_0x9494x9)}};_0x9494x2[_0x7ddb[209]](mxUtils[_0x7ddb[885]](this,function(_0x9494x2,_0x9494x3){this[_0x7ddb[746]]( new mxEventObject(mxEvent.REMOVE,_0x7ddb[724],_0x9494x3[_0x7ddb[724]]));_0x9494x3[_0x7ddb[515]]()}))};mxSelectionCellsHandler[_0x7ddb[202]][_0x7ddb[787]]= function(_0x9494x2,_0x9494x3){if(this[_0x7ddb[1179]][_0x7ddb[994]]()&& this[_0x7ddb[994]]()){var _0x9494x4=[_0x9494x2,_0x9494x3];this[_0x7ddb[2878]][_0x7ddb[209]](function(_0x9494x2,_0x9494x3){_0x9494x3[_0x7ddb[787]][_0x7ddb[183]](_0x9494x3,_0x9494x4)})}};mxSelectionCellsHandler[_0x7ddb[202]][_0x7ddb[788]]= function(_0x9494x2,_0x9494x3){if(this[_0x7ddb[1179]][_0x7ddb[994]]()&& this[_0x7ddb[994]]()){var _0x9494x4=[_0x9494x2,_0x9494x3];this[_0x7ddb[2878]][_0x7ddb[209]](function(_0x9494x2,_0x9494x3){_0x9494x3[_0x7ddb[788]][_0x7ddb[183]](_0x9494x3,_0x9494x4)})}};mxSelectionCellsHandler[_0x7ddb[202]][_0x7ddb[789]]= function(_0x9494x2,_0x9494x3){if(this[_0x7ddb[1179]][_0x7ddb[994]]()&& this[_0x7ddb[994]]()){var _0x9494x4=[_0x9494x2,_0x9494x3];this[_0x7ddb[2878]][_0x7ddb[209]](function(_0x9494x2,_0x9494x3){_0x9494x3[_0x7ddb[789]][_0x7ddb[183]](_0x9494x3,_0x9494x4)})}};mxSelectionCellsHandler[_0x7ddb[202]][_0x7ddb[515]]= function(){this[_0x7ddb[1179]][_0x7ddb[1148]](this);null!= this[_0x7ddb[2731]]&& (this[_0x7ddb[1179]][_0x7ddb[2435]]()[_0x7ddb[745]](this[_0x7ddb[2731]]),this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[745]](this[_0x7ddb[2731]]),this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[745]](this[_0x7ddb[2731]]),this[_0x7ddb[2731]]= null)};function mxConnectionHandler(_0x9494x2,_0x9494x3){mxEventSource[_0x7ddb[239]](this);null!= _0x9494x2&& (this[_0x7ddb[1179]]= _0x9494x2,this[_0x7ddb[1033]]= _0x9494x3,this[_0x7ddb[176]]())}mxUtils[_0x7ddb[1284]](mxConnectionHandler,mxEventSource);mxConnectionHandler[_0x7ddb[202]][_0x7ddb[1179]]= null;mxConnectionHandler[_0x7ddb[202]][_0x7ddb[1033]]= !0;mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2880]]= !1;mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2881]]= !1;mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2882]]= null;mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2883]]= !1;mxConnectionHandler[_0x7ddb[202]][_0x7ddb[984]]= !0;mxConnectionHandler[_0x7ddb[202]][_0x7ddb[804]]= !0;mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2884]]= !1;mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2885]]= null;mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2886]]= null;mxConnectionHandler[_0x7ddb[202]][_0x7ddb[267]]= null;mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2887]]= !1;mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2888]]= !0;mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2889]]= 500;mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2890]]= !1;mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2891]]= !1;mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2892]]= 4;mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2893]]= 0;mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2894]]= 0;mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2895]]= !1;mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2823]]= null;mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2896]]= new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET);mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2897]]= null;mxConnectionHandler[_0x7ddb[202]][_0x7ddb[1176]]= null;mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2898]]= null;mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2899]]= 0;mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2900]]= mxClient[_0x7ddb[47]];mxConnectionHandler[_0x7ddb[202]][_0x7ddb[994]]= function(){return this[_0x7ddb[984]]};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[995]]= function(_0x9494x2){this[_0x7ddb[984]]= _0x9494x2};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2901]]= function(){return this[_0x7ddb[2884]]};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2902]]= function(_0x9494x2){this[_0x7ddb[2884]]= _0x9494x2};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2156]]= function(){var _0x9494x2= new mxPolyline([],mxConstants.INVALID_COLOR);_0x9494x2[_0x7ddb[507]]= this[_0x7ddb[1179]][_0x7ddb[507]]!= mxConstants[_0x7ddb[508]]?mxConstants[_0x7ddb[1523]]:mxConstants[_0x7ddb[508]];_0x9494x2[_0x7ddb[176]](this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[1524]]());_0x9494x2[_0x7ddb[1564]]= 0;_0x9494x2[_0x7ddb[1229]]= !1;_0x9494x2[_0x7ddb[1522]]= !0;if(this[_0x7ddb[1179]][_0x7ddb[507]]== mxConstants[_0x7ddb[508]]){_0x9494x2[_0x7ddb[252]][_0x7ddb[57]](_0x7ddb[1377],_0x7ddb[130])}else {var _0x9494x3=mxUtils[_0x7ddb[885]](this,function(_0x9494x2){_0x9494x2= mxUtils[_0x7ddb[2196]](this[_0x7ddb[1179]][_0x7ddb[526]],mxEvent[_0x7ddb[731]](_0x9494x2),mxEvent[_0x7ddb[733]](_0x9494x2));return this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[248]](this[_0x7ddb[1179]][_0x7ddb[999]](_0x9494x2[_0x7ddb[235]],_0x9494x2[_0x7ddb[236]]))});mxEvent[_0x7ddb[2733]](_0x9494x2[_0x7ddb[252]],this[_0x7ddb[1179]],_0x9494x3)};return _0x9494x2};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[176]]= function(){this[_0x7ddb[1179]][_0x7ddb[1133]](this);this[_0x7ddb[2885]]= this[_0x7ddb[1689]]();this[_0x7ddb[2886]]= new mxConstraintHandler(this[_0x7ddb[1179]]);this[_0x7ddb[1176]]= mxUtils[_0x7ddb[885]](this,function(_0x9494x2){null!= this[_0x7ddb[2903]]&& (this[_0x7ddb[2903]]= this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[248]](this[_0x7ddb[2903]][_0x7ddb[246]]));null!= this[_0x7ddb[2903]]?this[_0x7ddb[2905]](this[_0x7ddb[2904]],this[_0x7ddb[2903]]):(this[_0x7ddb[2906]](this[_0x7ddb[2904]]),this[_0x7ddb[257]]= null);this[_0x7ddb[2886]][_0x7ddb[862]]()});this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[169]](mxEvent.CHANGE,this[_0x7ddb[1176]]);this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[169]](mxEvent.SCALE,this[_0x7ddb[1176]]);this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[169]](mxEvent.TRANSLATE,this[_0x7ddb[1176]]);this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[169]](mxEvent.SCALE_AND_TRANSLATE,this[_0x7ddb[1176]]);this[_0x7ddb[2898]]= mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[2906]](this[_0x7ddb[2904]])});this[_0x7ddb[1179]][_0x7ddb[169]](mxEvent.START_EDITING,this[_0x7ddb[2898]]);this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[169]](mxEvent.DOWN,this[_0x7ddb[2898]]);this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[169]](mxEvent.UP,this[_0x7ddb[2898]])};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2907]]= function(_0x9494x2){return !0};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[1689]]= function(){var _0x9494x2= new mxCellMarker(this[_0x7ddb[1179]]);_0x9494x2[_0x7ddb[2859]]= !0;_0x9494x2[_0x7ddb[736]]= mxUtils[_0x7ddb[885]](this,function(_0x9494x3,_0x9494x4){_0x9494x4= mxCellMarker[_0x7ddb[202]][_0x7ddb[736]][_0x7ddb[183]](_0x9494x2,arguments);this[_0x7ddb[267]]= null;if(!this[_0x7ddb[2907]](_0x9494x4)){return null};null!= _0x9494x4?this[_0x7ddb[2908]]()?null!= this[_0x7ddb[257]]&& (this[_0x7ddb[267]]= this[_0x7ddb[2909]](this[_0x7ddb[257]][_0x7ddb[246]],_0x9494x4),null!= this[_0x7ddb[267]]&& 0== this[_0x7ddb[267]][_0x7ddb[67]]&& (_0x9494x4= null,this[_0x7ddb[2901]]()&& (this[_0x7ddb[267]]= null))):this[_0x7ddb[2671]](_0x9494x4)|| (_0x9494x4= null):this[_0x7ddb[2908]]()&& (!this[_0x7ddb[2901]]()&& !this[_0x7ddb[1179]][_0x7ddb[2406]])&& (this[_0x7ddb[267]]= _0x7ddb[110]);return _0x9494x4});_0x9494x2[_0x7ddb[2872]]= mxUtils[_0x7ddb[885]](this,function(_0x9494x3){return this[_0x7ddb[2908]]()?null== this[_0x7ddb[267]]:mxCellMarker[_0x7ddb[202]][_0x7ddb[2872]][_0x7ddb[183]](_0x9494x2,arguments)});_0x9494x2[_0x7ddb[2873]]= mxUtils[_0x7ddb[885]](this,function(_0x9494x3,_0x9494x4,_0x9494x5){return null== this[_0x7ddb[2882]]|| this[_0x7ddb[2908]]()?mxCellMarker[_0x7ddb[202]][_0x7ddb[2873]][_0x7ddb[183]](_0x9494x2,arguments):null});_0x9494x2[_0x7ddb[1825]]= mxUtils[_0x7ddb[885]](this,function(_0x9494x3,_0x9494x4){return null!= this[_0x7ddb[2882]]|| this[_0x7ddb[2908]]()?!0:mxCellMarker[_0x7ddb[202]][_0x7ddb[1825]][_0x7ddb[183]](_0x9494x2,arguments)});return _0x9494x2};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[861]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){this[_0x7ddb[257]]= _0x9494x2;this[_0x7ddb[2823]]= new mxPoint(_0x9494x3,_0x9494x4);this[_0x7ddb[2897]]= null!= _0x9494x5?_0x9494x5:this[_0x7ddb[2910]](null);this[_0x7ddb[2885]][_0x7ddb[2860]]= this[_0x7ddb[2885]][_0x7ddb[2853]];this[_0x7ddb[2885]][_0x7ddb[2862]]= _0x9494x2;this[_0x7ddb[2885]][_0x7ddb[811]]();this[_0x7ddb[746]]( new mxEventObject(mxEvent.START,_0x7ddb[724],this[_0x7ddb[257]]))};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2908]]= function(){return null!= this[_0x7ddb[2823]]&& null!= this[_0x7ddb[253]]};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2671]]= function(_0x9494x2){return this[_0x7ddb[1179]][_0x7ddb[2671]](_0x9494x2)};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2672]]= function(_0x9494x2){return !0};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2909]]= function(_0x9494x2,_0x9494x3){return !this[_0x7ddb[2672]](_0x9494x3)?_0x7ddb[110]:this[_0x7ddb[1179]][_0x7ddb[2500]](null,_0x9494x2,_0x9494x3)};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2911]]= function(_0x9494x2){return this[_0x7ddb[2882]]};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2912]]= function(_0x9494x2){return null!= _0x9494x2[_0x7ddb[963]]&& _0x9494x2[_0x7ddb[963]][_0x7ddb[252]][_0x7ddb[265]]== this[_0x7ddb[1179]][_0x7ddb[526]]?!0:this[_0x7ddb[2880]]};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2913]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[2911]](_0x9494x2);if(null!= _0x9494x3&& null!= _0x9494x2){this[_0x7ddb[2903]]= _0x9494x2;var _0x9494x4=[],_0x9494x5= new mxRectangle(0,0,_0x9494x3[_0x7ddb[117]],_0x9494x3[_0x7ddb[119]]),_0x9494x9= new mxImageShape(_0x9494x5,_0x9494x3[_0x7ddb[390]],null,null,0);_0x9494x9[_0x7ddb[1674]]= !1;this[_0x7ddb[2912]](_0x9494x2)?(_0x9494x9[_0x7ddb[507]]= mxConstants[_0x7ddb[1656]],_0x9494x9[_0x7ddb[176]](this[_0x7ddb[1179]][_0x7ddb[526]])):(_0x9494x9[_0x7ddb[507]]= this[_0x7ddb[1179]][_0x7ddb[507]]== mxConstants[_0x7ddb[508]]?mxConstants[_0x7ddb[508]]:mxConstants[_0x7ddb[1523]],_0x9494x9[_0x7ddb[176]](this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[1524]]()),this[_0x7ddb[2881]]&& null!= _0x9494x9[_0x7ddb[252]][_0x7ddb[328]]&& _0x9494x9[_0x7ddb[252]][_0x7ddb[265]][_0x7ddb[950]](_0x9494x9[_0x7ddb[252]],_0x9494x9[_0x7ddb[252]][_0x7ddb[265]][_0x7ddb[285]]));_0x9494x9[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[270]]= mxConstants[_0x7ddb[2914]];var _0x9494xa=mxUtils[_0x7ddb[885]](this,function(){return null!= this[_0x7ddb[2915]]?this[_0x7ddb[2915]]:_0x9494x2}),_0x9494x3=mxUtils[_0x7ddb[885]](this,function(_0x9494x2){mxEvent[_0x7ddb[721]](_0x9494x2)|| (this[_0x7ddb[2916]]= _0x9494x9,this[_0x7ddb[1179]][_0x7ddb[758]](mxEvent.MOUSE_DOWN, new mxMouseEvent(_0x9494x2,_0x9494xa())))});mxEvent[_0x7ddb[2733]](_0x9494x9[_0x7ddb[252]],this[_0x7ddb[1179]],_0x9494xa,_0x9494x3);_0x9494x4[_0x7ddb[207]](_0x9494x9);this[_0x7ddb[2905]](_0x9494x4,this[_0x7ddb[2903]]);return _0x9494x4};return null};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2905]]= function(_0x9494x2,_0x9494x3){if(null!= _0x9494x2&& null!= _0x9494x2[0]&& null!= _0x9494x3){var _0x9494x4=this[_0x7ddb[2917]](_0x9494x2[0],_0x9494x3);_0x9494x2[0][_0x7ddb[1562]][_0x7ddb[235]]= _0x9494x4[_0x7ddb[235]];_0x9494x2[0][_0x7ddb[1562]][_0x7ddb[236]]= _0x9494x4[_0x7ddb[236]];_0x9494x2[0][_0x7ddb[258]]()}};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2917]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[255]],_0x9494x5=_0x9494x3[_0x7ddb[241]](),_0x9494x9=_0x9494x3[_0x7ddb[242]]();if(this[_0x7ddb[1179]][_0x7ddb[1730]](_0x9494x3[_0x7ddb[246]])){var _0x9494xa=this[_0x7ddb[1179]][_0x7ddb[1731]](_0x9494x3[_0x7ddb[246]]),_0x9494x5=0!= _0x9494xa[_0x7ddb[117]]?_0x9494x3[_0x7ddb[235]]+ _0x9494xa[_0x7ddb[117]]* _0x9494x4/ 2:_0x9494x5,_0x9494x9=0!= _0x9494xa[_0x7ddb[119]]?_0x9494x3[_0x7ddb[236]]+ _0x9494xa[_0x7ddb[119]]* _0x9494x4/ 2:_0x9494x9,_0x9494xa=mxUtils[_0x7ddb[431]](mxUtils[_0x7ddb[433]](_0x9494x3[_0x7ddb[124]],mxConstants.STYLE_ROTATION)|| 0);if(0!= _0x9494xa){var _0x9494x4=Math[_0x7ddb[426]](_0x9494xa),_0x9494xa=Math[_0x7ddb[427]](_0x9494xa),_0x9494x12= new mxPoint(_0x9494x3[_0x7ddb[241]](),_0x9494x3[_0x7ddb[242]]()),_0x9494x9=mxUtils[_0x7ddb[432]]( new mxPoint(_0x9494x5,_0x9494x9),_0x9494x4,_0x9494xa,_0x9494x12),_0x9494x5=_0x9494x9[_0x7ddb[235]],_0x9494x9=_0x9494x9[_0x7ddb[236]]}};return new mxPoint(_0x9494x5- _0x9494x2[_0x7ddb[1562]][_0x7ddb[117]]/ 2,_0x9494x9- _0x9494x2[_0x7ddb[1562]][_0x7ddb[119]]/ 2)};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2906]]= function(_0x9494x2){if(null!= _0x9494x2){this[_0x7ddb[2903]]= null;for(var _0x9494x3=0;_0x9494x3< _0x9494x2[_0x7ddb[67]];_0x9494x3++){_0x9494x2[_0x9494x3][_0x7ddb[515]]()}}};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2918]]= function(_0x9494x2){return !this[_0x7ddb[1179]][_0x7ddb[2579]](_0x9494x2[_0x7ddb[727]]())&& (null!= this[_0x7ddb[2886]][_0x7ddb[2919]]&& null!= this[_0x7ddb[2886]][_0x7ddb[2920]]|| null!= this[_0x7ddb[257]]&& null== this[_0x7ddb[267]]&& (null== this[_0x7ddb[2904]]|| null!= this[_0x7ddb[2904]]&& null!= this[_0x7ddb[2916]]))};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[787]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[2899]]++;if(this[_0x7ddb[994]]()&& this[_0x7ddb[1179]][_0x7ddb[994]]()&& !_0x9494x3[_0x7ddb[721]]()&& !this[_0x7ddb[2908]]()&& this[_0x7ddb[2918]](_0x9494x3)){null!= this[_0x7ddb[2886]][_0x7ddb[2920]]&& null!= this[_0x7ddb[2886]][_0x7ddb[2919]]&& null!= this[_0x7ddb[2886]][_0x7ddb[987]]?(this[_0x7ddb[2921]]= this[_0x7ddb[2886]][_0x7ddb[2920]],this[_0x7ddb[257]]= this[_0x7ddb[2886]][_0x7ddb[2919]],this[_0x7ddb[2823]]= this[_0x7ddb[2886]][_0x7ddb[987]][_0x7ddb[238]]()):this[_0x7ddb[2823]]= new mxPoint(_0x9494x3[_0x7ddb[734]](),_0x9494x3[_0x7ddb[735]]());this[_0x7ddb[2897]]= this[_0x7ddb[2910]](_0x9494x3);this[_0x7ddb[2899]]= 1;this[_0x7ddb[2887]]&& null== this[_0x7ddb[253]]&& (this[_0x7ddb[2922]]= null,this[_0x7ddb[253]]= this[_0x7ddb[2156]]());if(null== this[_0x7ddb[257]]&& null!= this[_0x7ddb[2897]]){var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[2689]](_0x9494x3[_0x7ddb[727]]());this[_0x7ddb[2897]][_0x7ddb[246]][_0x7ddb[256]][_0x7ddb[2007]](_0x9494x4,!0)};this[_0x7ddb[746]]( new mxEventObject(mxEvent.START,_0x7ddb[724],this[_0x7ddb[257]]));_0x9494x3[_0x7ddb[722]]()}else {if(mxClient[_0x7ddb[754]]&& this[_0x7ddb[2888]]&& !this[_0x7ddb[2890]]&& this[_0x7ddb[994]]()&& this[_0x7ddb[1179]][_0x7ddb[994]]()&& !this[_0x7ddb[2908]]()){this[_0x7ddb[2890]]= !0;this[_0x7ddb[2893]]= _0x9494x3[_0x7ddb[730]]();this[_0x7ddb[2894]]= _0x9494x3[_0x7ddb[732]]();var _0x9494x5=this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[248]](this[_0x7ddb[2885]][_0x7ddb[736]](_0x9494x3));this[_0x7ddb[2923]]&& window[_0x7ddb[2924]](this[_0x7ddb[2923]]);this[_0x7ddb[2923]]= window[_0x7ddb[261]](mxUtils[_0x7ddb[885]](this,function(){this[_0x7ddb[2891]]&& this[_0x7ddb[2925]](_0x9494x3,_0x9494x5);this[_0x7ddb[2891]]= this[_0x7ddb[2890]]= !1}),this[_0x7ddb[2889]]);this[_0x7ddb[2891]]= !0}};this[_0x7ddb[2926]]= this[_0x7ddb[2916]];this[_0x7ddb[2916]]= null};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2925]]= function(_0x9494x2,_0x9494x3){null!= _0x9494x3&& (this[_0x7ddb[2885]][_0x7ddb[2860]]= this[_0x7ddb[2885]][_0x7ddb[2853]],this[_0x7ddb[2885]][_0x7ddb[2862]]= _0x9494x3,this[_0x7ddb[2885]][_0x7ddb[811]](),this[_0x7ddb[2823]]= new mxPoint(_0x9494x2[_0x7ddb[734]](),_0x9494x2[_0x7ddb[735]]()),this[_0x7ddb[2897]]= this[_0x7ddb[2910]](_0x9494x2),this[_0x7ddb[257]]= _0x9494x3,this[_0x7ddb[746]]( new mxEventObject(mxEvent.START,_0x7ddb[724],this[_0x7ddb[257]])))};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2927]]= function(_0x9494x2){return !this[_0x7ddb[1179]][_0x7ddb[1712]](_0x9494x2[_0x7ddb[246]])};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2910]]= function(_0x9494x2){return null};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2928]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[2885]][_0x7ddb[2871]](_0x9494x2);this[_0x7ddb[2886]][_0x7ddb[2729]](_0x9494x2,null== this[_0x7ddb[2823]]);this[_0x7ddb[2915]]= _0x9494x3};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2929]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[518]](),_0x9494x4=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[512]]();_0x9494x2[_0x7ddb[235]]= _0x9494x2[_0x7ddb[235]]/ _0x9494x3- _0x9494x4[_0x7ddb[235]];_0x9494x2[_0x7ddb[236]]= _0x9494x2[_0x7ddb[236]]/ _0x9494x3- _0x9494x4[_0x7ddb[236]]};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[788]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[2891]]&& (this[_0x7ddb[2891]]= Math[_0x7ddb[425]](this[_0x7ddb[2893]]- _0x9494x3[_0x7ddb[730]]())< this[_0x7ddb[2892]]&& Math[_0x7ddb[425]](this[_0x7ddb[2894]]- _0x9494x3[_0x7ddb[732]]())< this[_0x7ddb[2892]]);if(!_0x9494x3[_0x7ddb[721]]()&& (this[_0x7ddb[2895]]|| null!= this[_0x7ddb[2823]]|| !this[_0x7ddb[1179]][_0x7ddb[1009]])){!this[_0x7ddb[994]]()&& null!= this[_0x7ddb[2915]] && (this[_0x7ddb[2906]](this[_0x7ddb[2904]]),this[_0x7ddb[2915]]= null);(null!= this[_0x7ddb[2823]]|| this[_0x7ddb[994]]()&& this[_0x7ddb[1179]][_0x7ddb[994]]())&& this[_0x7ddb[2928]](_0x9494x3);if(null!= this[_0x7ddb[2823]]){var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[255]],_0x9494x4= new mxPoint(this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x3[_0x7ddb[734]]()/ _0x9494x4)* _0x9494x4,this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x3[_0x7ddb[735]]()/ _0x9494x4)* _0x9494x4),_0x9494x5=null,_0x9494x9=_0x9494x4;null!= this[_0x7ddb[2886]][_0x7ddb[2920]]&& (null!= this[_0x7ddb[2886]][_0x7ddb[2919]]&& null!= this[_0x7ddb[2886]][_0x7ddb[987]])&& (_0x9494x5= this[_0x7ddb[2886]][_0x7ddb[2920]],_0x9494x9= this[_0x7ddb[2886]][_0x7ddb[987]][_0x7ddb[238]]());var _0x9494xa=this[_0x7ddb[2823]];if(null!= this[_0x7ddb[2926]]){var _0x9494x12=this[_0x7ddb[2926]][_0x7ddb[1562]][_0x7ddb[117]],_0x9494x13=this[_0x7ddb[2926]][_0x7ddb[1562]][_0x7ddb[119]];null!= this[_0x7ddb[2915]]&& this[_0x7ddb[2883]]?(_0x9494x12= this[_0x7ddb[2917]](this[_0x7ddb[2926]],this[_0x7ddb[2915]]),this[_0x7ddb[2926]][_0x7ddb[1562]][_0x7ddb[235]]= _0x9494x12[_0x7ddb[235]],this[_0x7ddb[2926]][_0x7ddb[1562]][_0x7ddb[236]]= _0x9494x12[_0x7ddb[236]]):(_0x9494x12= new mxRectangle(_0x9494x3[_0x7ddb[734]]()+ this[_0x7ddb[2896]][_0x7ddb[235]],_0x9494x3[_0x7ddb[735]]()+ this[_0x7ddb[2896]][_0x7ddb[236]],_0x9494x12,_0x9494x13),this[_0x7ddb[2926]][_0x7ddb[1562]]= _0x9494x12);this[_0x7ddb[2926]][_0x7ddb[258]]()};if(null!= this[_0x7ddb[2897]]){this[_0x7ddb[2897]][_0x7ddb[439]]= [null,null!= this[_0x7ddb[2915]]?null:_0x9494x9];this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[2289]](this[_0x7ddb[2897]],this[_0x7ddb[257]],!0,this[_0x7ddb[2921]]);null!= this[_0x7ddb[2915]]&& (null== _0x9494x5&& (_0x9494x5= this[_0x7ddb[1179]][_0x7ddb[2288]](this[_0x7ddb[2897]],this[_0x7ddb[257]],!1)),this[_0x7ddb[2897]][_0x7ddb[2088]](null,!1),this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[2289]](this[_0x7ddb[2897]],this[_0x7ddb[2915]],!1,_0x9494x5));_0x9494xa= null;if(null!= this[_0x7ddb[2922]]){_0x9494xa= [];for(_0x9494x9= 0;_0x9494x9< this[_0x7ddb[2922]][_0x7ddb[67]];_0x9494x9++){_0x9494x5= this[_0x7ddb[2922]][_0x9494x9][_0x7ddb[238]](),this[_0x7ddb[2929]](_0x9494x5),_0x9494xa[_0x9494x9]= _0x9494x5}};this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[2282]](this[_0x7ddb[2897]],_0x9494xa,this[_0x7ddb[257]],this[_0x7ddb[2915]]);this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[2283]](this[_0x7ddb[2897]],this[_0x7ddb[257]],this[_0x7ddb[2915]]);_0x9494x9= this[_0x7ddb[2897]][_0x7ddb[439]][this[_0x7ddb[2897]][_0x7ddb[439]][_0x7ddb[67]]- 1];_0x9494xa= this[_0x7ddb[2897]][_0x7ddb[439]][0]}else {null!= this[_0x7ddb[2915]]&& null== this[_0x7ddb[2886]][_0x7ddb[2920]]&& (_0x9494x12= this[_0x7ddb[2930]](this[_0x7ddb[2915]],_0x9494x3),null!= _0x9494x12&& (_0x9494x9= _0x9494x12)),null== this[_0x7ddb[2921]]&& null!= this[_0x7ddb[257]]&& (_0x9494x12= this[_0x7ddb[2931]](this[_0x7ddb[257]],null!= this[_0x7ddb[2922]]&& 0< this[_0x7ddb[2922]][_0x7ddb[67]]?this[_0x7ddb[2922]][0]:_0x9494x9,_0x9494x3),null!= _0x9494x12&& (_0x9494xa= _0x9494x12))};if(null== this[_0x7ddb[2915]]&& this[_0x7ddb[2900]]){_0x9494x12= _0x9494xa;null!= this[_0x7ddb[2897]]&& 2< this[_0x7ddb[2897]][_0x7ddb[439]][_0x7ddb[67]]&& (_0x9494x5= this[_0x7ddb[2897]][_0x7ddb[439]][this[_0x7ddb[2897]][_0x7ddb[439]][_0x7ddb[67]]- 2],null!= _0x9494x5&& (_0x9494x12= _0x9494x5));_0x9494x5= _0x9494x9[_0x7ddb[235]]- _0x9494x12[_0x7ddb[235]];_0x9494x12= _0x9494x9[_0x7ddb[236]]- _0x9494x12[_0x7ddb[236]];_0x9494x13= Math[_0x7ddb[428]](_0x9494x5* _0x9494x5+ _0x9494x12* _0x9494x12);if(0== _0x9494x13){return};_0x9494x9[_0x7ddb[235]]-= 4* _0x9494x5/ _0x9494x13;_0x9494x9[_0x7ddb[236]]-= 4* _0x9494x12/ _0x9494x13};if(null== this[_0x7ddb[253]]&& (_0x9494x5= Math[_0x7ddb[425]](_0x9494x4[_0x7ddb[235]]- this[_0x7ddb[2823]][_0x7ddb[235]]),_0x9494x12= Math[_0x7ddb[425]](_0x9494x4[_0x7ddb[236]]- this[_0x7ddb[2823]][_0x7ddb[236]]),_0x9494x5> this[_0x7ddb[1179]][_0x7ddb[2353]]|| _0x9494x12> this[_0x7ddb[1179]][_0x7ddb[2353]])){this[_0x7ddb[253]]= this[_0x7ddb[2156]](),this[_0x7ddb[2928]](_0x9494x3)};null!= this[_0x7ddb[253]]&& (null!= this[_0x7ddb[2897]]?this[_0x7ddb[253]][_0x7ddb[1525]]= this[_0x7ddb[2897]][_0x7ddb[439]]:(_0x9494x4= [_0x9494xa],null!= this[_0x7ddb[2922]]&& (_0x9494x4= _0x9494x4[_0x7ddb[1919]](this[_0x7ddb[2922]])),_0x9494x4[_0x7ddb[207]](_0x9494x9),this[_0x7ddb[253]][_0x7ddb[1525]]= _0x9494x4),this[_0x7ddb[2932]]());mxEvent[_0x7ddb[722]](_0x9494x3[_0x7ddb[727]]());_0x9494x3[_0x7ddb[722]]()}else {!this[_0x7ddb[994]]()|| !this[_0x7ddb[1179]][_0x7ddb[994]]()?this[_0x7ddb[2886]][_0x7ddb[862]]():this[_0x7ddb[257]]!= this[_0x7ddb[2915]]&& null== this[_0x7ddb[2897]]?(this[_0x7ddb[2906]](this[_0x7ddb[2904]]),this[_0x7ddb[2904]]= null,null!= this[_0x7ddb[2915]]&& null== this[_0x7ddb[267]]&& (this[_0x7ddb[2904]]= this[_0x7ddb[2913]](this[_0x7ddb[2915]]),null== this[_0x7ddb[2904]]&& (this[_0x7ddb[2915]][_0x7ddb[1609]](mxConstants.CURSOR_CONNECT),_0x9494x3[_0x7ddb[722]]())),this[_0x7ddb[257]]= this[_0x7ddb[2915]]):this[_0x7ddb[257]]== this[_0x7ddb[2915]]&& (null!= this[_0x7ddb[2915]]&& null== this[_0x7ddb[2904]]&& !this[_0x7ddb[1179]][_0x7ddb[1009]])&& _0x9494x3[_0x7ddb[722]]()};null!= this[_0x7ddb[2886]][_0x7ddb[2920]]&& this[_0x7ddb[2885]][_0x7ddb[862]]();if(!this[_0x7ddb[1179]][_0x7ddb[1009]]&& null!= this[_0x7ddb[2915]] && null!= this[_0x7ddb[2904]]){_0x9494x4= !1;_0x9494xa= _0x9494x3[_0x7ddb[728]]();for(_0x9494x9= 0;_0x9494x9< this[_0x7ddb[2904]][_0x7ddb[67]]&& !_0x9494x4;_0x9494x9++){_0x9494x4= _0x9494xa== this[_0x7ddb[2904]][_0x9494x9][_0x7ddb[252]]|| _0x9494xa[_0x7ddb[265]]== this[_0x7ddb[2904]][_0x9494x9][_0x7ddb[252]]};_0x9494x4|| this[_0x7ddb[2933]](this[_0x7ddb[2915]],this[_0x7ddb[2904]],_0x9494x3)}}else {this[_0x7ddb[2886]][_0x7ddb[862]]()}};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2930]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=null,_0x9494x5=_0x9494x2[_0x7ddb[441]],_0x9494x9=_0x9494x5[_0x7ddb[2305]](_0x9494x2);if(null!= _0x9494x9){var _0x9494xa=null!= this[_0x7ddb[2922]]&& 0< this[_0x7ddb[2922]][_0x7ddb[67]]?this[_0x7ddb[2922]][this[_0x7ddb[2922]][_0x7ddb[67]]- 1]: new mxPoint(this[_0x7ddb[257]][_0x7ddb[241]](),this[_0x7ddb[257]][_0x7ddb[242]]()),_0x9494x5=_0x9494x9(_0x9494x5[_0x7ddb[2087]](_0x9494x2),this[_0x7ddb[2897]],_0x9494xa,!1);null!= _0x9494x5&& (_0x9494x4= _0x9494x5)}else {_0x9494x4= new mxPoint(_0x9494x2[_0x7ddb[241]](),_0x9494x2[_0x7ddb[242]]())};return _0x9494x4};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2931]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x4= null;var _0x9494x5=_0x9494x2[_0x7ddb[441]],_0x9494x9=_0x9494x5[_0x7ddb[2305]](_0x9494x2),_0x9494xa= new mxPoint(_0x9494x2[_0x7ddb[241]](),_0x9494x2[_0x7ddb[242]]());if(null!= _0x9494x9){var _0x9494x12=mxUtils[_0x7ddb[433]](_0x9494x2[_0x7ddb[124]],mxConstants.STYLE_ROTATION,0),_0x9494x13=-_0x9494x12* (Math[_0x7ddb[424]]/ 180);0!= _0x9494x12&& (_0x9494x3= mxUtils[_0x7ddb[432]]( new mxPoint(_0x9494x3[_0x7ddb[235]],_0x9494x3[_0x7ddb[236]]),Math[_0x7ddb[426]](_0x9494x13),Math[_0x7ddb[427]](_0x9494x13),_0x9494xa));_0x9494x2= _0x9494x9(_0x9494x5[_0x7ddb[2087]](_0x9494x2),_0x9494x2,_0x9494x3,!1);null!= _0x9494x2&& (0!= _0x9494x12&& (_0x9494x2= mxUtils[_0x7ddb[432]]( new mxPoint(_0x9494x2[_0x7ddb[235]],_0x9494x2[_0x7ddb[236]]),Math[_0x7ddb[426]](-_0x9494x13),Math[_0x7ddb[427]](-_0x9494x13),_0x9494xa)),_0x9494x4= _0x9494x2)}else {_0x9494x4= _0x9494xa};return _0x9494x4};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2933]]= function(_0x9494x2,_0x9494x3,_0x9494x4){};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2934]]= function(_0x9494x2){return null!= _0x9494x2[_0x7ddb[248]]()};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2935]]= function(_0x9494x2){var _0x9494x3=mxUtils[_0x7ddb[2196]](this[_0x7ddb[1179]][_0x7ddb[526]],_0x9494x2[_0x7ddb[730]](),_0x9494x2[_0x7ddb[732]]()),_0x9494x4=Math[_0x7ddb[425]](_0x9494x3[_0x7ddb[235]]- this[_0x7ddb[2823]][_0x7ddb[235]]),_0x9494x3=Math[_0x7ddb[425]](_0x9494x3[_0x7ddb[236]]- this[_0x7ddb[2823]][_0x7ddb[236]]);if(null!= this[_0x7ddb[2922]]|| 1< this[_0x7ddb[2899]]&& (_0x9494x4> this[_0x7ddb[1179]][_0x7ddb[2353]]|| _0x9494x3> this[_0x7ddb[1179]][_0x7ddb[2353]])){null== this[_0x7ddb[2922]]&& (this[_0x7ddb[2922]]= []),_0x9494x4= this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[255]],_0x9494x3= new mxPoint(this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x2[_0x7ddb[734]]()/ _0x9494x4)* _0x9494x4,this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x2[_0x7ddb[735]]()/ _0x9494x4)* _0x9494x4),this[_0x7ddb[2922]][_0x7ddb[207]](_0x9494x3)}};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[789]]= function(_0x9494x2,_0x9494x3){if(!_0x9494x3[_0x7ddb[721]]()&& this[_0x7ddb[2908]]()){if(this[_0x7ddb[2887]]&& !this[_0x7ddb[2934]](_0x9494x3)){this[_0x7ddb[2935]](_0x9494x3);_0x9494x3[_0x7ddb[722]]();return};if(null== this[_0x7ddb[267]]){var _0x9494x4=null!= this[_0x7ddb[257]]?this[_0x7ddb[257]][_0x7ddb[246]]:null,_0x9494x5=null;null!= this[_0x7ddb[2886]][_0x7ddb[2920]]&& null!= this[_0x7ddb[2886]][_0x7ddb[2919]]&& (_0x9494x5= this[_0x7ddb[2886]][_0x7ddb[2919]][_0x7ddb[246]]);null== _0x9494x5&& this[_0x7ddb[2885]][_0x7ddb[2867]]()&& (_0x9494x5= this[_0x7ddb[2885]][_0x7ddb[2861]][_0x7ddb[246]]);this[_0x7ddb[807]](_0x9494x4,_0x9494x5,_0x9494x3[_0x7ddb[727]](),_0x9494x3[_0x7ddb[736]]())}else {null!= this[_0x7ddb[257]]&& (null!= this[_0x7ddb[2885]][_0x7ddb[2861]]&& this[_0x7ddb[257]][_0x7ddb[246]]== this[_0x7ddb[2885]][_0x7ddb[2861]][_0x7ddb[246]])&& this[_0x7ddb[1179]][_0x7ddb[2459]](this[_0x7ddb[2885]][_0x7ddb[1097]],evt),0< this[_0x7ddb[267]][_0x7ddb[67]]&& this[_0x7ddb[1179]][_0x7ddb[2580]](this[_0x7ddb[267]])};this[_0x7ddb[2906]](this[_0x7ddb[2904]]);_0x9494x3[_0x7ddb[722]]()};null!= this[_0x7ddb[2823]]&& this[_0x7ddb[862]]();this[_0x7ddb[2891]]= this[_0x7ddb[2890]]= !1};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[862]]= function(){null!= this[_0x7ddb[253]]&& (this[_0x7ddb[253]][_0x7ddb[515]](),this[_0x7ddb[253]]= null);this[_0x7ddb[2906]](this[_0x7ddb[2904]]);this[_0x7ddb[2904]]= null;this[_0x7ddb[2885]][_0x7ddb[862]]();this[_0x7ddb[2886]][_0x7ddb[862]]();this[_0x7ddb[2921]]= this[_0x7ddb[267]]= this[_0x7ddb[257]]= this[_0x7ddb[2897]]= this[_0x7ddb[2926]]= null;this[_0x7ddb[2899]]= 0;this[_0x7ddb[2916]]= this[_0x7ddb[2823]]= null;this[_0x7ddb[746]]( new mxEventObject(mxEvent.RESET))};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2932]]= function(){var _0x9494x2=null== this[_0x7ddb[267]];this[_0x7ddb[253]][_0x7ddb[1307]]= this[_0x7ddb[2936]](_0x9494x2);_0x9494x2= this[_0x7ddb[2937]](_0x9494x2);this[_0x7ddb[253]][_0x7ddb[1336]]= _0x9494x2;this[_0x7ddb[253]][_0x7ddb[258]]()};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2937]]= function(_0x9494x2){return _0x9494x2?mxConstants[_0x7ddb[2829]]:mxConstants[_0x7ddb[2938]]};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2936]]= function(_0x9494x2){return _0x9494x2?3:1};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[807]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){if(null!= _0x9494x3|| this[_0x7ddb[2901]]()|| this[_0x7ddb[1179]][_0x7ddb[2406]]){var _0x9494x9=this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494xa=null;_0x9494x9[_0x7ddb[473]]();try{if(null!= _0x9494x2&& (null== _0x9494x3&& this[_0x7ddb[2901]]())&& (_0x9494x3= this[_0x7ddb[2939]](_0x9494x4,_0x9494x2),null!= _0x9494x3)){_0x9494x5= this[_0x7ddb[1179]][_0x7ddb[564]]([_0x9494x3],_0x9494x4,_0x9494x5);if(null== _0x9494x5|| !this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[250]](_0x9494x5)){var _0x9494x12=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[248]](_0x9494x5);if(null!= _0x9494x12){var _0x9494x13=_0x9494x9[_0x7ddb[1721]](_0x9494x3);_0x9494x13[_0x7ddb[235]]-= _0x9494x12[_0x7ddb[2078]][_0x7ddb[235]];_0x9494x13[_0x7ddb[236]]-= _0x9494x12[_0x7ddb[2078]][_0x7ddb[236]]}}else {_0x9494x5= this[_0x7ddb[1179]][_0x7ddb[902]]()};this[_0x7ddb[1179]][_0x7ddb[2103]](_0x9494x3,_0x9494x5)};var _0x9494x14=this[_0x7ddb[1179]][_0x7ddb[902]]();null!= _0x9494x2&& (null!= _0x9494x3&& _0x9494x9[_0x7ddb[1197]](_0x9494x2)== _0x9494x9[_0x7ddb[1197]](_0x9494x3)&& _0x9494x9[_0x7ddb[1197]](_0x9494x9[_0x7ddb[1197]](_0x9494x2))!= _0x9494x9[_0x7ddb[501]]())&& (_0x9494x14= _0x9494x9[_0x7ddb[1197]](_0x9494x2),null!= _0x9494x2[_0x7ddb[256]]&& _0x9494x2[_0x7ddb[256]][_0x7ddb[1500]]&& (null!= _0x9494x3[_0x7ddb[256]]&& _0x9494x3[_0x7ddb[256]][_0x7ddb[1500]])&& (_0x9494x14= _0x9494x9[_0x7ddb[1197]](_0x9494x14)));_0x9494x13= _0x9494x12= null;null!= this[_0x7ddb[2897]]&& (_0x9494x12= this[_0x7ddb[2897]][_0x7ddb[246]][_0x7ddb[131]],_0x9494x13= this[_0x7ddb[2897]][_0x7ddb[246]][_0x7ddb[124]]);_0x9494xa= this[_0x7ddb[1960]](_0x9494x14,null,_0x9494x12,_0x9494x2,_0x9494x3,_0x9494x13);if(null!= _0x9494xa){this[_0x7ddb[1179]][_0x7ddb[2545]](_0x9494xa,_0x9494x2,!0,this[_0x7ddb[2921]]);this[_0x7ddb[1179]][_0x7ddb[2545]](_0x9494xa,_0x9494x3,!1,this[_0x7ddb[2886]][_0x7ddb[2920]]);null!= this[_0x7ddb[2897]]&& _0x9494x9[_0x7ddb[1724]](_0x9494xa,this[_0x7ddb[2897]][_0x7ddb[246]][_0x7ddb[256]]);var _0x9494x15=_0x9494x9[_0x7ddb[1721]](_0x9494xa);null== _0x9494x15&& (_0x9494x15= new mxGeometry,_0x9494x15[_0x7ddb[1500]]= !0,_0x9494x9[_0x7ddb[1724]](_0x9494xa,_0x9494x15));if(null!= this[_0x7ddb[2922]]&& 0< this[_0x7ddb[2922]][_0x7ddb[67]]){var _0x9494x16=this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[255]],_0x9494x17=this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[513]];_0x9494x15[_0x7ddb[1525]]= [];for(_0x9494x2= 0;_0x9494x2< this[_0x7ddb[2922]][_0x7ddb[67]];_0x9494x2++){var _0x9494x18=this[_0x7ddb[2922]][_0x9494x2];_0x9494x15[_0x7ddb[1525]][_0x7ddb[207]]( new mxPoint(_0x9494x18[_0x7ddb[235]]/ _0x9494x16- _0x9494x17[_0x7ddb[235]],_0x9494x18[_0x7ddb[236]]/ _0x9494x16- _0x9494x17[_0x7ddb[236]]))}};null== _0x9494x3&& (_0x9494x18= this[_0x7ddb[1179]][_0x7ddb[2689]](_0x9494x4,!1),_0x9494x18[_0x7ddb[235]]-= this[_0x7ddb[1179]][_0x7ddb[1136]]/ this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[255]],_0x9494x18[_0x7ddb[236]]-= this[_0x7ddb[1179]][_0x7ddb[1137]]/ this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[255]],_0x9494x15[_0x7ddb[2007]](_0x9494x18,!1));this[_0x7ddb[746]]( new mxEventObject(mxEvent.CONNECT,_0x7ddb[246],_0x9494xa,_0x7ddb[763],_0x9494x4,_0x7ddb[772],_0x9494x5))}}catch(q){mxLog[_0x7ddb[539]](),mxLog[_0x7ddb[143]](q[_0x7ddb[281]])}finally{_0x9494x9[_0x7ddb[476]]()};this[_0x7ddb[804]]&& this[_0x7ddb[2707]](_0x9494xa,_0x9494x3)}};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2707]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[1179]][_0x7ddb[2450]](_0x9494x2)};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[1960]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){if(null== this[_0x7ddb[1033]]){return this[_0x7ddb[1179]][_0x7ddb[1960]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa)};_0x9494x3= this[_0x7ddb[2503]](_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa);return _0x9494x3= this[_0x7ddb[1179]][_0x7ddb[2504]](_0x9494x3,_0x9494x2,_0x9494x5,_0x9494x9)};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2939]]= function(_0x9494x2,_0x9494x3){for(var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[1198]](_0x9494x3);null!= _0x9494x4&& _0x9494x4[_0x7ddb[1500]];){_0x9494x3= this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[1197]](_0x9494x3),_0x9494x4= this[_0x7ddb[1179]][_0x7ddb[1198]](_0x9494x3)};var _0x9494x5=this[_0x7ddb[1179]][_0x7ddb[899]]([_0x9494x3])[0],_0x9494x4=this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[1721]](_0x9494x5);if(null!= _0x9494x4){var _0x9494x9=this[_0x7ddb[1179]][_0x7ddb[2689]](_0x9494x2);_0x9494x4[_0x7ddb[235]]= this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x9[_0x7ddb[235]]- _0x9494x4[_0x7ddb[117]]/ 2)- this[_0x7ddb[1179]][_0x7ddb[1136]]/ this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[255]];_0x9494x4[_0x7ddb[236]]= this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x9[_0x7ddb[236]]- _0x9494x4[_0x7ddb[119]]/ 2)- this[_0x7ddb[1179]][_0x7ddb[1137]]/ this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[255]];if(null!= this[_0x7ddb[2823]]){var _0x9494xa=this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[248]](_0x9494x3);if(null!= _0x9494xa){var _0x9494x12=this[_0x7ddb[2940]]();Math[_0x7ddb[425]](this[_0x7ddb[1179]][_0x7ddb[1021]](this[_0x7ddb[2823]][_0x7ddb[235]])- this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x9[_0x7ddb[235]]))<= _0x9494x12?_0x9494x4[_0x7ddb[235]]= _0x9494xa[_0x7ddb[235]]:Math[_0x7ddb[425]](this[_0x7ddb[1179]][_0x7ddb[1021]](this[_0x7ddb[2823]][_0x7ddb[236]])- this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x9[_0x7ddb[236]]))<= _0x9494x12&& (_0x9494x4[_0x7ddb[236]]= _0x9494xa[_0x7ddb[236]])}}};return _0x9494x5};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2940]]= function(){return this[_0x7ddb[1179]][_0x7ddb[997]]()?this[_0x7ddb[1179]][_0x7ddb[1020]]:this[_0x7ddb[1179]][_0x7ddb[2353]]};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[2503]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){var _0x9494x9=null;null!= this[_0x7ddb[1033]]&& (_0x9494x9= this[_0x7ddb[1033]](_0x9494x3,_0x9494x4,_0x9494x5));null== _0x9494x9&& (_0x9494x9= new mxCell(_0x9494x2|| _0x7ddb[110]),_0x9494x9[_0x7ddb[1994]](!0),_0x9494x9[_0x7ddb[475]](_0x9494x5),_0x9494x2= new mxGeometry,_0x9494x2[_0x7ddb[1500]]= !0,_0x9494x9[_0x7ddb[1724]](_0x9494x2));return _0x9494x9};mxConnectionHandler[_0x7ddb[202]][_0x7ddb[515]]= function(){this[_0x7ddb[1179]][_0x7ddb[1148]](this);null!= this[_0x7ddb[253]]&& (this[_0x7ddb[253]][_0x7ddb[515]](),this[_0x7ddb[253]]= null);null!= this[_0x7ddb[2885]]&& (this[_0x7ddb[2885]][_0x7ddb[515]](),this[_0x7ddb[2885]]= null);null!= this[_0x7ddb[2886]]&& (this[_0x7ddb[2886]][_0x7ddb[515]](),this[_0x7ddb[2886]]= null);null!= this[_0x7ddb[1176]]&& (this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[745]](this[_0x7ddb[1176]]),this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[745]](this[_0x7ddb[1176]]),this[_0x7ddb[1176]]= null);null!= this[_0x7ddb[2898]]&& (this[_0x7ddb[1179]][_0x7ddb[745]](this[_0x7ddb[2898]]),this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[745]](this[_0x7ddb[2898]]),this[_0x7ddb[2898]]= null)};function mxConstraintHandler(_0x9494x2){this[_0x7ddb[1179]]= _0x9494x2}mxConstraintHandler[_0x7ddb[202]][_0x7ddb[2941]]= new mxImage(mxClient[_0x7ddb[88]]+ _0x7ddb[2942],5,5);mxConstraintHandler[_0x7ddb[202]][_0x7ddb[1179]]= null;mxConstraintHandler[_0x7ddb[202]][_0x7ddb[984]]= !0;mxConstraintHandler[_0x7ddb[202]][_0x7ddb[2943]]= mxConstants[_0x7ddb[2854]];mxConstraintHandler[_0x7ddb[202]][_0x7ddb[994]]= function(){return this[_0x7ddb[984]]};mxConstraintHandler[_0x7ddb[202]][_0x7ddb[995]]= function(_0x9494x2){this[_0x7ddb[984]]= _0x9494x2};mxConstraintHandler[_0x7ddb[202]][_0x7ddb[862]]= function(){if(null!= this[_0x7ddb[2944]]){for(var _0x9494x2=0;_0x9494x2< this[_0x7ddb[2944]][_0x7ddb[67]];_0x9494x2++){this[_0x7ddb[2944]][_0x9494x2][_0x7ddb[515]]()};this[_0x7ddb[2944]]= null};null!= this[_0x7ddb[2945]]&& (this[_0x7ddb[2945]][_0x7ddb[515]](),this[_0x7ddb[2945]]= null);this[_0x7ddb[2946]]= this[_0x7ddb[2919]]= this[_0x7ddb[987]]= this[_0x7ddb[2947]]= this[_0x7ddb[2920]]= null};mxConstraintHandler[_0x7ddb[202]][_0x7ddb[2636]]= function(){return this[_0x7ddb[1179]][_0x7ddb[2636]]()};mxConstraintHandler[_0x7ddb[202]][_0x7ddb[2948]]= function(_0x9494x2,_0x9494x3,_0x9494x4){return this[_0x7ddb[2941]]};mxConstraintHandler[_0x7ddb[202]][_0x7ddb[2949]]= function(_0x9494x2,_0x9494x3){return !1};mxConstraintHandler[_0x7ddb[202]][_0x7ddb[2729]]= function(_0x9494x2,_0x9494x3){if(this[_0x7ddb[994]]()&& !this[_0x7ddb[2949]](_0x9494x2)){var _0x9494x4=this[_0x7ddb[2636]](),_0x9494x5= new mxRectangle(_0x9494x2[_0x7ddb[734]]()- _0x9494x4,_0x9494x2[_0x7ddb[735]]()- _0x9494x4,2* _0x9494x4,2* _0x9494x4),_0x9494x9=null!= _0x9494x2[_0x7ddb[736]]()?this[_0x7ddb[1179]][_0x7ddb[2565]](_0x9494x2[_0x7ddb[736]]()):!1;if(null== this[_0x7ddb[2947]]|| !mxUtils[_0x7ddb[1825]](this[_0x7ddb[2947]],_0x9494x5)|| null!= _0x9494x2[_0x7ddb[248]]()&& null!= this[_0x7ddb[2919]]&& _0x9494x9){if(this[_0x7ddb[2947]]= null,_0x9494x2[_0x7ddb[248]]()!= this[_0x7ddb[2919]]){if(this[_0x7ddb[2919]]= null,this[_0x7ddb[1531]]= null!= _0x9494x2[_0x7ddb[248]]()&& _0x9494x9?this[_0x7ddb[1179]][_0x7ddb[2538]](_0x9494x2[_0x7ddb[248]](),_0x9494x3):null,null!= this[_0x7ddb[1531]]){this[_0x7ddb[2919]]= _0x9494x2[_0x7ddb[248]]();this[_0x7ddb[2947]]= new mxRectangle(_0x9494x2[_0x7ddb[248]]()[_0x7ddb[235]],_0x9494x2[_0x7ddb[248]]()[_0x7ddb[236]],_0x9494x2[_0x7ddb[248]]()[_0x7ddb[117]],_0x9494x2[_0x7ddb[248]]()[_0x7ddb[119]]);if(null!= this[_0x7ddb[2944]]){for(_0x9494x9= 0;_0x9494x9< this[_0x7ddb[2944]][_0x7ddb[67]];_0x9494x9++){this[_0x7ddb[2944]][_0x9494x9][_0x7ddb[515]]()};this[_0x7ddb[2946]]= this[_0x7ddb[2944]]= null};this[_0x7ddb[2944]]= [];this[_0x7ddb[2946]]= [];for(_0x9494x9= 0;_0x9494x9< this[_0x7ddb[1531]][_0x7ddb[67]];_0x9494x9++){var _0x9494xa=this[_0x7ddb[1179]][_0x7ddb[2290]](_0x9494x2[_0x7ddb[248]](),this[_0x7ddb[1531]][_0x9494x9]),_0x9494x12=this[_0x7ddb[2948]](_0x9494x2[_0x7ddb[248]](),this[_0x7ddb[1531]][_0x9494x9],_0x9494xa),_0x9494x13=_0x9494x12[_0x7ddb[390]],_0x9494x12= new mxRectangle(_0x9494xa[_0x7ddb[235]]- _0x9494x12[_0x7ddb[117]]/ 2,_0x9494xa[_0x7ddb[236]]- _0x9494x12[_0x7ddb[119]]/ 2,_0x9494x12[_0x7ddb[117]],_0x9494x12[_0x7ddb[119]]),_0x9494x12= new mxImageShape(_0x9494x12,_0x9494x13);_0x9494x12[_0x7ddb[507]]= this[_0x7ddb[1179]][_0x7ddb[507]]!= mxConstants[_0x7ddb[508]]?mxConstants[_0x7ddb[2334]]:mxConstants[_0x7ddb[508]];_0x9494x12[_0x7ddb[1674]]= !1;_0x9494x12[_0x7ddb[176]](this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[1524]]());null!= _0x9494x12[_0x7ddb[252]][_0x7ddb[328]]&& _0x9494x12[_0x7ddb[252]][_0x7ddb[265]][_0x7ddb[950]](_0x9494x12[_0x7ddb[252]],_0x9494x12[_0x7ddb[252]][_0x7ddb[265]][_0x7ddb[285]]);_0x9494x13= mxUtils[_0x7ddb[885]](this,function(){return null!= this[_0x7ddb[2919]]?this[_0x7ddb[2919]]:_0x9494x2[_0x7ddb[248]]()});_0x9494x12[_0x7ddb[258]]();mxEvent[_0x7ddb[2733]](_0x9494x12[_0x7ddb[252]],this[_0x7ddb[1179]],_0x9494x13);this[_0x7ddb[2947]][_0x7ddb[99]](_0x9494x12[_0x7ddb[1562]]);this[_0x7ddb[2944]][_0x7ddb[207]](_0x9494x12);this[_0x7ddb[2946]][_0x7ddb[207]](_0x9494xa)};this[_0x7ddb[2947]][_0x7ddb[244]](_0x9494x4)}else {if(null!= this[_0x7ddb[2944]]){null!= this[_0x7ddb[2945]]&& (this[_0x7ddb[2945]][_0x7ddb[515]](),this[_0x7ddb[2945]]= null);for(_0x9494x9= 0;_0x9494x9< this[_0x7ddb[2944]][_0x7ddb[67]];_0x9494x9++){this[_0x7ddb[2944]][_0x9494x9][_0x7ddb[515]]()};this[_0x7ddb[2946]]= this[_0x7ddb[2944]]= null}}}};this[_0x7ddb[987]]= this[_0x7ddb[2920]]= null;if(null!= this[_0x7ddb[2944]]&& null!= this[_0x7ddb[1531]]&& (null== _0x9494x2[_0x7ddb[248]]()|| this[_0x7ddb[2919]]== _0x9494x2[_0x7ddb[248]]())){for(_0x9494x9= 0;_0x9494x9< this[_0x7ddb[2944]][_0x7ddb[67]];_0x9494x9++){if(mxUtils[_0x7ddb[1825]](this[_0x7ddb[2944]][_0x9494x9][_0x7ddb[1562]],_0x9494x5)){this[_0x7ddb[2920]]= this[_0x7ddb[1531]][_0x9494x9];this[_0x7ddb[987]]= this[_0x7ddb[2946]][_0x9494x9];_0x9494x4= this[_0x7ddb[2944]][_0x9494x9][_0x7ddb[1562]][_0x7ddb[238]]();_0x9494x4[_0x7ddb[244]](mxClient[_0x7ddb[80]]?3:2);mxClient[_0x7ddb[80]]&& (_0x9494x4[_0x7ddb[117]]-= 1,_0x9494x4[_0x7ddb[119]]-= 1);null== this[_0x7ddb[2945]]?(_0x9494x4= new mxRectangleShape(_0x9494x4,null,this[_0x7ddb[2943]],3),_0x9494x4[_0x7ddb[507]]= this[_0x7ddb[1179]][_0x7ddb[507]]== mxConstants[_0x7ddb[508]]?mxConstants[_0x7ddb[508]]:mxConstants[_0x7ddb[1523]],_0x9494x4[_0x7ddb[176]](this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[1524]]()),this[_0x7ddb[2945]]= _0x9494x4,_0x9494x13= mxUtils[_0x7ddb[885]](this,function(){return null!= this[_0x7ddb[2919]]?this[_0x7ddb[2919]]:_0x9494x2[_0x7ddb[248]]()}),mxEvent[_0x7ddb[2733]](_0x9494x4[_0x7ddb[252]],this[_0x7ddb[1179]],_0x9494x13)):(this[_0x7ddb[2945]][_0x7ddb[1562]]= _0x9494x4,this[_0x7ddb[2945]][_0x7ddb[258]]());break}}};null== this[_0x7ddb[2920]]&& null!= this[_0x7ddb[2945]]&& (this[_0x7ddb[2945]][_0x7ddb[515]](),this[_0x7ddb[2945]]= null)}};mxConstraintHandler[_0x7ddb[202]][_0x7ddb[515]]= function(){this[_0x7ddb[862]]()};function mxRubberband(_0x9494x2){null!= _0x9494x2&& (this[_0x7ddb[1179]]= _0x9494x2,this[_0x7ddb[1179]][_0x7ddb[1133]](this),this[_0x7ddb[2730]]= mxUtils[_0x7ddb[885]](this,function(){this[_0x7ddb[2950]]()}),this[_0x7ddb[1179]][_0x7ddb[169]](mxEvent.PAN,this[_0x7ddb[2730]]),mxClient[_0x7ddb[80]]&& mxEvent[_0x7ddb[169]](window,_0x7ddb[2428],mxUtils[_0x7ddb[885]](this,function(){this[_0x7ddb[515]]()})))}mxRubberband[_0x7ddb[202]][_0x7ddb[2951]]= 20;mxRubberband[_0x7ddb[202]][_0x7ddb[984]]= !0;mxRubberband[_0x7ddb[202]][_0x7ddb[485]]= null;mxRubberband[_0x7ddb[202]][_0x7ddb[2952]]= null;mxRubberband[_0x7ddb[202]][_0x7ddb[2953]]= 0;mxRubberband[_0x7ddb[202]][_0x7ddb[2954]]= 0;mxRubberband[_0x7ddb[202]][_0x7ddb[994]]= function(){return this[_0x7ddb[984]]};mxRubberband[_0x7ddb[202]][_0x7ddb[995]]= function(_0x9494x2){this[_0x7ddb[984]]= _0x9494x2};mxRubberband[_0x7ddb[202]][_0x7ddb[787]]= function(_0x9494x2,_0x9494x3){if(!_0x9494x3[_0x7ddb[721]]()&& this[_0x7ddb[994]]() && this[_0x7ddb[1179]][_0x7ddb[994]]() && (this[_0x7ddb[1179]][_0x7ddb[2579]](_0x9494x3[_0x7ddb[727]]())|| null== _0x9494x3[_0x7ddb[248]]())){var _0x9494x4=mxUtils[_0x7ddb[445]](this[_0x7ddb[1179]][_0x7ddb[526]]),_0x9494x5=mxUtils[_0x7ddb[444]](this[_0x7ddb[1179]][_0x7ddb[526]]);_0x9494x5[_0x7ddb[235]]-= _0x9494x4[_0x7ddb[235]];_0x9494x5[_0x7ddb[236]]-= _0x9494x4[_0x7ddb[236]];this[_0x7ddb[861]](_0x9494x3[_0x7ddb[730]]()+ _0x9494x5[_0x7ddb[235]],_0x9494x3[_0x7ddb[732]]()+ _0x9494x5[_0x7ddb[236]]);if(mxClient[_0x7ddb[133]]&& !mxClient[_0x7ddb[75]]&& !mxClient[_0x7ddb[76]]){var _0x9494x9=this[_0x7ddb[1179]][_0x7ddb[526]],_0x9494xa=function(_0x9494x2){_0x9494x2= new mxMouseEvent(_0x9494x2);var _0x9494x3=mxUtils[_0x7ddb[2196]](_0x9494x9,_0x9494x2[_0x7ddb[730]](),_0x9494x2[_0x7ddb[732]]());_0x9494x2[_0x7ddb[725]]= _0x9494x3[_0x7ddb[235]];_0x9494x2[_0x7ddb[726]]= _0x9494x3[_0x7ddb[236]];return _0x9494x2};this[_0x7ddb[2955]]= mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[788]](this[_0x7ddb[1179]],_0x9494xa(_0x9494x2))});this[_0x7ddb[981]]= mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[789]](this[_0x7ddb[1179]],_0x9494xa(_0x9494x2))});mxEvent[_0x7ddb[169]](document,_0x7ddb[752],this[_0x7ddb[2955]]);mxEvent[_0x7ddb[169]](document,_0x7ddb[753],this[_0x7ddb[981]])};_0x9494x3[_0x7ddb[722]](!1)}};mxRubberband[_0x7ddb[202]][_0x7ddb[861]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[2823]]= new mxPoint(_0x9494x2,_0x9494x3)};mxRubberband[_0x7ddb[202]][_0x7ddb[788]]= function(_0x9494x2,_0x9494x3){if(!_0x9494x3[_0x7ddb[721]]()&& null!= this[_0x7ddb[2823]]){var _0x9494x4=mxUtils[_0x7ddb[444]](this[_0x7ddb[1179]][_0x7ddb[526]]),_0x9494x5=mxUtils[_0x7ddb[445]](this[_0x7ddb[1179]][_0x7ddb[526]]);_0x9494x4[_0x7ddb[235]]-= _0x9494x5[_0x7ddb[235]];_0x9494x4[_0x7ddb[236]]-= _0x9494x5[_0x7ddb[236]];var _0x9494x5=_0x9494x3[_0x7ddb[730]]()+ _0x9494x4[_0x7ddb[235]],_0x9494x4=_0x9494x3[_0x7ddb[732]]()+ _0x9494x4[_0x7ddb[236]],_0x9494x9=this[_0x7ddb[2823]][_0x7ddb[235]]- _0x9494x5,_0x9494xa=this[_0x7ddb[2823]][_0x7ddb[236]]- _0x9494x4,_0x9494x12=this[_0x7ddb[1179]][_0x7ddb[2353]];if(null!= this[_0x7ddb[485]]|| Math[_0x7ddb[425]](_0x9494x9)> _0x9494x12|| Math[_0x7ddb[425]](_0x9494xa)> _0x9494x12){null== this[_0x7ddb[485]]&& (this[_0x7ddb[485]]= this[_0x7ddb[2156]]()),mxUtils[_0x7ddb[2440]](),this[_0x7ddb[2729]](_0x9494x5,_0x9494x4),_0x9494x3[_0x7ddb[722]]()}}};mxRubberband[_0x7ddb[202]][_0x7ddb[2156]]= function(){null== this[_0x7ddb[2952]]&& (this[_0x7ddb[2952]]= document[_0x7ddb[55]](_0x7ddb[485]),this[_0x7ddb[2952]][_0x7ddb[926]]= _0x7ddb[2956],mxUtils[_0x7ddb[254]](this[_0x7ddb[2952]],this[_0x7ddb[2951]]));this[_0x7ddb[1179]][_0x7ddb[526]][_0x7ddb[62]](this[_0x7ddb[2952]]);return this[_0x7ddb[2952]]};mxRubberband[_0x7ddb[202]][_0x7ddb[789]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=null!= this[_0x7ddb[485]];this[_0x7ddb[862]]();_0x9494x4&& (_0x9494x4= new mxRectangle(this[_0x7ddb[235]],this[_0x7ddb[236]],this[_0x7ddb[117]],this[_0x7ddb[119]]),this[_0x7ddb[1179]][_0x7ddb[2698]](_0x9494x4,_0x9494x3[_0x7ddb[727]]()),_0x9494x3[_0x7ddb[722]]())};mxRubberband[_0x7ddb[202]][_0x7ddb[862]]= function(){null!= this[_0x7ddb[485]]&& this[_0x7ddb[485]][_0x7ddb[265]][_0x7ddb[266]](this[_0x7ddb[485]]);null!= this[_0x7ddb[2955]]&& (mxEvent[_0x7ddb[745]](document,_0x7ddb[752],this[_0x7ddb[2955]]),this[_0x7ddb[2955]]= null);null!= this[_0x7ddb[981]]&& (mxEvent[_0x7ddb[745]](document,_0x7ddb[753],this[_0x7ddb[981]]),this[_0x7ddb[981]]= null);this[_0x7ddb[2954]]= this[_0x7ddb[2953]]= 0;this[_0x7ddb[485]]= this[_0x7ddb[2823]]= null};mxRubberband[_0x7ddb[202]][_0x7ddb[2729]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[2953]]= _0x9494x2;this[_0x7ddb[2954]]= _0x9494x3;this[_0x7ddb[2950]]()};mxRubberband[_0x7ddb[202]][_0x7ddb[2950]]= function(){if(null!= this[_0x7ddb[485]]){var _0x9494x2=this[_0x7ddb[2953]]- this[_0x7ddb[1179]][_0x7ddb[1136]],_0x9494x3=this[_0x7ddb[2954]]- this[_0x7ddb[1179]][_0x7ddb[1137]];this[_0x7ddb[235]]= Math[_0x7ddb[243]](this[_0x7ddb[2823]][_0x7ddb[235]],_0x9494x2);this[_0x7ddb[236]]= Math[_0x7ddb[243]](this[_0x7ddb[2823]][_0x7ddb[236]],_0x9494x3);this[_0x7ddb[117]]= Math[_0x7ddb[160]](this[_0x7ddb[2823]][_0x7ddb[235]],_0x9494x2)- this[_0x7ddb[235]];this[_0x7ddb[119]]= Math[_0x7ddb[160]](this[_0x7ddb[2823]][_0x7ddb[236]],_0x9494x3)- this[_0x7ddb[236]];_0x9494x2= mxClient[_0x7ddb[47]]?this[_0x7ddb[1179]][_0x7ddb[1137]]:0;this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[361]]= this[_0x7ddb[235]]+ (mxClient[_0x7ddb[47]]?this[_0x7ddb[1179]][_0x7ddb[1136]]:0)+ _0x7ddb[168];this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[125]]= this[_0x7ddb[236]]+ _0x9494x2+ _0x7ddb[168];this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[117]]= Math[_0x7ddb[160]](1,this[_0x7ddb[117]])+ _0x7ddb[168];this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[119]]= Math[_0x7ddb[160]](1,this[_0x7ddb[119]])+ _0x7ddb[168]}};mxRubberband[_0x7ddb[202]][_0x7ddb[515]]= function(){this[_0x7ddb[2717]]|| (this[_0x7ddb[2717]]= !0,this[_0x7ddb[1179]][_0x7ddb[1148]](this),this[_0x7ddb[1179]][_0x7ddb[745]](this[_0x7ddb[2730]]),this[_0x7ddb[862]](),null!= this[_0x7ddb[2952]]&& (this[_0x7ddb[2952]]= null))};function mxVertexHandler(_0x9494x2){null!= _0x9494x2&& (this[_0x7ddb[724]]= _0x9494x2,this[_0x7ddb[176]]())}mxVertexHandler[_0x7ddb[202]][_0x7ddb[1179]]= null;mxVertexHandler[_0x7ddb[202]][_0x7ddb[724]]= null;mxVertexHandler[_0x7ddb[202]][_0x7ddb[2957]]= !1;mxVertexHandler[_0x7ddb[202]][_0x7ddb[1983]]= null;mxVertexHandler[_0x7ddb[202]][_0x7ddb[2958]]= !0;mxVertexHandler[_0x7ddb[202]][_0x7ddb[2959]]= null;mxVertexHandler[_0x7ddb[202]][_0x7ddb[2353]]= 0;mxVertexHandler[_0x7ddb[202]][_0x7ddb[2809]]= !1;mxVertexHandler[_0x7ddb[202]][_0x7ddb[2960]]= !0;mxVertexHandler[_0x7ddb[202]][_0x7ddb[176]]= function(){this[_0x7ddb[1179]]= this[_0x7ddb[724]][_0x7ddb[441]][_0x7ddb[1179]];this[_0x7ddb[2961]]= this[_0x7ddb[2962]](this[_0x7ddb[724]]);this[_0x7ddb[1562]]= new mxRectangle(this[_0x7ddb[2961]][_0x7ddb[235]],this[_0x7ddb[2961]][_0x7ddb[236]],this[_0x7ddb[2961]][_0x7ddb[117]],this[_0x7ddb[2961]][_0x7ddb[119]]);this[_0x7ddb[2732]]= this[_0x7ddb[2963]](this[_0x7ddb[1562]]);this[_0x7ddb[2732]][_0x7ddb[507]]= this[_0x7ddb[1179]][_0x7ddb[507]]!= mxConstants[_0x7ddb[508]]?mxConstants[_0x7ddb[1523]]:mxConstants[_0x7ddb[508]];this[_0x7ddb[2732]][_0x7ddb[1229]]= !1;this[_0x7ddb[2732]][_0x7ddb[176]](this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[1524]]());this[_0x7ddb[1179]][_0x7ddb[1712]](this[_0x7ddb[724]][_0x7ddb[246]])&& (this[_0x7ddb[2732]][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[270]]= mxConstants[_0x7ddb[2832]]);mxEvent[_0x7ddb[2733]](this[_0x7ddb[2732]][_0x7ddb[252]],this[_0x7ddb[1179]],this[_0x7ddb[724]]);if(0>= mxGraphHandler[_0x7ddb[202]][_0x7ddb[2795]]|| this[_0x7ddb[1179]][_0x7ddb[2694]]()< mxGraphHandler[_0x7ddb[202]][_0x7ddb[2795]]){var _0x9494x2=this[_0x7ddb[1179]][_0x7ddb[2657]](this[_0x7ddb[724]][_0x7ddb[246]]);this[_0x7ddb[2964]]= [];if(_0x9494x2|| this[_0x7ddb[1179]][_0x7ddb[2628]](this[_0x7ddb[724]][_0x7ddb[246]])&& 2<= this[_0x7ddb[724]][_0x7ddb[117]]&& 2<= this[_0x7ddb[724]][_0x7ddb[119]]){var _0x9494x3=0;_0x9494x2&& (this[_0x7ddb[2957]]|| (this[_0x7ddb[2964]][_0x7ddb[207]](this[_0x7ddb[2735]](_0x7ddb[936],_0x9494x3++)),this[_0x7ddb[2964]][_0x7ddb[207]](this[_0x7ddb[2735]](_0x7ddb[2965],_0x9494x3++)),this[_0x7ddb[2964]][_0x7ddb[207]](this[_0x7ddb[2735]](_0x7ddb[2966],_0x9494x3++)),this[_0x7ddb[2964]][_0x7ddb[207]](this[_0x7ddb[2735]](_0x7ddb[2967],_0x9494x3++)),this[_0x7ddb[2964]][_0x7ddb[207]](this[_0x7ddb[2735]](_0x7ddb[2968],_0x9494x3++)),this[_0x7ddb[2964]][_0x7ddb[207]](this[_0x7ddb[2735]](_0x7ddb[2969],_0x9494x3++)),this[_0x7ddb[2964]][_0x7ddb[207]](this[_0x7ddb[2735]](_0x7ddb[2970],_0x9494x3++))),this[_0x7ddb[2964]][_0x7ddb[207]](this[_0x7ddb[2735]](_0x7ddb[2971],_0x9494x3++)));_0x9494x2= this[_0x7ddb[1179]][_0x7ddb[251]][_0x7ddb[1721]](this[_0x7ddb[724]][_0x7ddb[246]]);null!= _0x9494x2&& (!_0x9494x2[_0x7ddb[1500]]&& !this[_0x7ddb[1179]][_0x7ddb[1730]](this[_0x7ddb[724]][_0x7ddb[246]]) && this[_0x7ddb[1179]][_0x7ddb[2628]](this[_0x7ddb[724]][_0x7ddb[246]]))&& (this[_0x7ddb[2972]]= this[_0x7ddb[2735]](mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this[_0x7ddb[2964]][_0x7ddb[207]](this[_0x7ddb[2972]]))}else {this[_0x7ddb[1179]][_0x7ddb[1712]](this[_0x7ddb[724]][_0x7ddb[246]])&& (!this[_0x7ddb[1179]][_0x7ddb[2657]](this[_0x7ddb[724]][_0x7ddb[246]])&& 2> this[_0x7ddb[724]][_0x7ddb[117]] && 2> this[_0x7ddb[724]][_0x7ddb[119]])&& (this[_0x7ddb[2972]]= this[_0x7ddb[2735]](mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this[_0x7ddb[2964]][_0x7ddb[207]](this[_0x7ddb[2972]]))}};if(this[_0x7ddb[2809]]&& (0>= mxGraphHandler[_0x7ddb[202]][_0x7ddb[2795]]|| this[_0x7ddb[1179]][_0x7ddb[2694]]()< mxGraphHandler[_0x7ddb[202]][_0x7ddb[2795]])){this[_0x7ddb[2973]]= this[_0x7ddb[2735]](_0x7ddb[356],mxEvent.ROTATION_HANDLE,mxConstants[_0x7ddb[2974]]+ 3,mxConstants.HANDLE_FILLCOLOR),this[_0x7ddb[2964]][_0x7ddb[207]](this[_0x7ddb[2973]])};this[_0x7ddb[258]]()};mxVertexHandler[_0x7ddb[202]][_0x7ddb[2962]]= function(_0x9494x2){return new mxRectangle(Math[_0x7ddb[488]](_0x9494x2[_0x7ddb[235]]),Math[_0x7ddb[488]](_0x9494x2[_0x7ddb[236]]),Math[_0x7ddb[488]](_0x9494x2[_0x7ddb[117]]),Math[_0x7ddb[488]](_0x9494x2[_0x7ddb[119]]))};mxVertexHandler[_0x7ddb[202]][_0x7ddb[2963]]= function(_0x9494x2){_0x9494x2= new mxRectangleShape(_0x9494x2,null,this[_0x7ddb[2975]]());_0x9494x2[_0x7ddb[1307]]= this[_0x7ddb[2976]]();_0x9494x2[_0x7ddb[1522]]= this[_0x7ddb[2977]]();return _0x9494x2};mxVertexHandler[_0x7ddb[202]][_0x7ddb[2975]]= function(){return mxConstants[_0x7ddb[2978]]};mxVertexHandler[_0x7ddb[202]][_0x7ddb[2976]]= function(){return mxConstants[_0x7ddb[2979]]};mxVertexHandler[_0x7ddb[202]][_0x7ddb[2977]]= function(){return mxConstants[_0x7ddb[2980]]};mxVertexHandler[_0x7ddb[202]][_0x7ddb[2735]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){_0x9494x4= _0x9494x4|| mxConstants[_0x7ddb[2974]];_0x9494x4= new mxRectangle(0,0,_0x9494x4,_0x9494x4);_0x9494x5= this[_0x7ddb[2981]](_0x9494x4,_0x9494x3,_0x9494x5);_0x9494x5[_0x7ddb[1567]]()&& null!= this[_0x7ddb[724]][_0x7ddb[963]]&& this[_0x7ddb[724]][_0x7ddb[963]][_0x7ddb[252]][_0x7ddb[265]]== this[_0x7ddb[1179]][_0x7ddb[526]]?(_0x9494x5[_0x7ddb[1562]][_0x7ddb[119]]-= 1,_0x9494x5[_0x7ddb[1562]][_0x7ddb[117]]-= 1,_0x9494x5[_0x7ddb[507]]= mxConstants[_0x7ddb[1656]],_0x9494x5[_0x7ddb[176]](this[_0x7ddb[1179]][_0x7ddb[526]])):(_0x9494x5[_0x7ddb[507]]= this[_0x7ddb[1179]][_0x7ddb[507]]!= mxConstants[_0x7ddb[508]]?mxConstants[_0x7ddb[2334]]:mxConstants[_0x7ddb[508]],_0x9494x5[_0x7ddb[176]](this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[1524]]()));mxEvent[_0x7ddb[2733]](_0x9494x5[_0x7ddb[252]],this[_0x7ddb[1179]],this[_0x7ddb[724]]);this[_0x7ddb[1179]][_0x7ddb[994]]()&& (_0x9494x5[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[270]]= _0x9494x2);this[_0x7ddb[2982]](_0x9494x3)|| (_0x9494x5[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[188]);return _0x9494x5};mxVertexHandler[_0x7ddb[202]][_0x7ddb[2982]]= function(_0x9494x2){return !0};mxVertexHandler[_0x7ddb[202]][_0x7ddb[2981]]= function(_0x9494x2,_0x9494x3,_0x9494x4){return null!= this[_0x7ddb[2959]]?(_0x9494x2[_0x7ddb[117]]= this[_0x7ddb[2959]][_0x7ddb[117]],_0x9494x2[_0x7ddb[119]]= this[_0x7ddb[2959]][_0x7ddb[119]], new mxImageShape(_0x9494x2,this[_0x7ddb[2959]][_0x7ddb[390]])):_0x9494x3== mxEvent[_0x7ddb[2983]]? new mxEllipse(_0x9494x2,_0x9494x4|| mxConstants[_0x7ddb[2984]],mxConstants.HANDLE_STROKECOLOR): new mxRectangleShape(_0x9494x2,_0x9494x4|| mxConstants[_0x7ddb[2984]],mxConstants.HANDLE_STROKECOLOR)};mxVertexHandler[_0x7ddb[202]][_0x7ddb[2985]]= function(_0x9494x2,_0x9494x3,_0x9494x4){null!= _0x9494x2&& (_0x9494x2[_0x7ddb[1562]][_0x7ddb[235]]= Math[_0x7ddb[488]](_0x9494x3- _0x9494x2[_0x7ddb[1562]][_0x7ddb[117]]/ 2),_0x9494x2[_0x7ddb[1562]][_0x7ddb[236]]= Math[_0x7ddb[488]](_0x9494x4- _0x9494x2[_0x7ddb[1562]][_0x7ddb[119]]/ 2),_0x9494x2[_0x7ddb[258]]())};mxVertexHandler[_0x7ddb[202]][_0x7ddb[2986]]= function(_0x9494x2){if(_0x9494x2[_0x7ddb[729]](this[_0x7ddb[2973]])){return mxEvent[_0x7ddb[2983]]};if(_0x9494x2[_0x7ddb[729]](this[_0x7ddb[2972]])){return mxEvent[_0x7ddb[2987]]};if(null!= this[_0x7ddb[2964]]){for(var _0x9494x3=this[_0x7ddb[2353]],_0x9494x3=this[_0x7ddb[2958]]&& (mxClient[_0x7ddb[80]]|| 0< _0x9494x3)? new mxRectangle(_0x9494x2[_0x7ddb[734]]()- _0x9494x3,_0x9494x2[_0x7ddb[735]]()- _0x9494x3,2* _0x9494x3,2* _0x9494x3):null,_0x9494x4=0;_0x9494x4< this[_0x7ddb[2964]][_0x7ddb[67]];_0x9494x4++){if(_0x9494x2[_0x7ddb[729]](this[_0x7ddb[2964]][_0x9494x4])|| null!= _0x9494x3&& mxUtils[_0x7ddb[1825]](this[_0x7ddb[2964]][_0x9494x4][_0x7ddb[1562]],_0x9494x3)){return _0x9494x4}}};return null};mxVertexHandler[_0x7ddb[202]][_0x7ddb[787]]= function(_0x9494x2,_0x9494x3){if(!_0x9494x3[_0x7ddb[721]]()&& this[_0x7ddb[1179]][_0x7ddb[994]]() && !this[_0x7ddb[1179]][_0x7ddb[2579]](_0x9494x3[_0x7ddb[727]]()) && (0< this[_0x7ddb[2353]]|| _0x9494x3[_0x7ddb[248]]()== this[_0x7ddb[724]])){var _0x9494x4=this[_0x7ddb[2986]](_0x9494x3);null!= _0x9494x4&& (this[_0x7ddb[861]](_0x9494x3[_0x7ddb[730]](),_0x9494x3[_0x7ddb[732]](),_0x9494x4),_0x9494x3[_0x7ddb[722]]())}};mxVertexHandler[_0x7ddb[202]][_0x7ddb[861]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x2= mxUtils[_0x7ddb[2196]](this[_0x7ddb[1179]][_0x7ddb[526]],_0x9494x2,_0x9494x3);this[_0x7ddb[2739]]= _0x9494x2[_0x7ddb[235]];this[_0x7ddb[2740]]= _0x9494x2[_0x7ddb[236]];this[_0x7ddb[1983]]= _0x9494x4;this[_0x7ddb[2732]][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[495]]= _0x9494x4== mxEvent[_0x7ddb[2983]]?_0x7ddb[497]:_0x7ddb[130];this[_0x7ddb[2988]]= this[_0x7ddb[2963]](this[_0x7ddb[1562]]);!(mxClient[_0x7ddb[48]]&& 0!= Number(this[_0x7ddb[724]][_0x7ddb[124]][mxConstants[_0x7ddb[2278]]]|| _0x7ddb[468]))&& null!= this[_0x7ddb[724]][_0x7ddb[963]] && this[_0x7ddb[724]][_0x7ddb[963]][_0x7ddb[252]][_0x7ddb[265]]== this[_0x7ddb[1179]][_0x7ddb[526]]?(this[_0x7ddb[2988]][_0x7ddb[507]]= mxConstants[_0x7ddb[1656]],this[_0x7ddb[2988]][_0x7ddb[176]](this[_0x7ddb[1179]][_0x7ddb[526]])):(this[_0x7ddb[2988]][_0x7ddb[507]]= this[_0x7ddb[1179]][_0x7ddb[507]]!= mxConstants[_0x7ddb[508]]?mxConstants[_0x7ddb[1523]]:mxConstants[_0x7ddb[508]],this[_0x7ddb[2988]][_0x7ddb[176]](this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[1524]]()))};mxVertexHandler[_0x7ddb[202]][_0x7ddb[788]]= function(_0x9494x2,_0x9494x3){if(!_0x9494x3[_0x7ddb[721]]()&& null!= this[_0x7ddb[1983]]){var _0x9494x4= new mxPoint(_0x9494x3[_0x7ddb[734]](),_0x9494x3[_0x7ddb[735]]()),_0x9494x5=this[_0x7ddb[1179]][_0x7ddb[1018]](_0x9494x3[_0x7ddb[727]]()),_0x9494x9=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[255]];if(this[_0x7ddb[1983]]== mxEvent[_0x7ddb[2987]]){_0x9494x5&& (_0x9494x4[_0x7ddb[235]]= this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x4[_0x7ddb[235]]/ _0x9494x9)* _0x9494x9,_0x9494x4[_0x7ddb[236]]= this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x4[_0x7ddb[236]]/ _0x9494x9)* _0x9494x9),this[_0x7ddb[2985]](this[_0x7ddb[2964]][this[_0x7ddb[2964]][_0x7ddb[67]]- 1],_0x9494x4[_0x7ddb[235]],_0x9494x4[_0x7ddb[236]])}else {if(this[_0x7ddb[1983]]== mxEvent[_0x7ddb[2983]]){var _0x9494xa=this[_0x7ddb[724]][_0x7ddb[235]]+ this[_0x7ddb[724]][_0x7ddb[117]]/ 2- _0x9494x4[_0x7ddb[235]],_0x9494x12=this[_0x7ddb[724]][_0x7ddb[236]]+ this[_0x7ddb[724]][_0x7ddb[119]]/ 2- _0x9494x4[_0x7ddb[236]];this[_0x7ddb[2989]]= 0!= _0x9494xa?180* Math[_0x7ddb[2990]](_0x9494x12/ _0x9494xa)/ Math[_0x7ddb[424]]+ 90:0> _0x9494x12?180:0;0< _0x9494xa&& (this[_0x7ddb[2989]]-= 180);this[_0x7ddb[2960]]&& (_0x9494xa= _0x9494x4[_0x7ddb[235]]- this[_0x7ddb[724]][_0x7ddb[241]](),_0x9494x12= _0x9494x4[_0x7ddb[236]]- this[_0x7ddb[724]][_0x7ddb[242]](),_0x9494xa= Math[_0x7ddb[425]](Math[_0x7ddb[428]](_0x9494xa* _0x9494xa+ _0x9494x12* _0x9494x12)- this[_0x7ddb[724]][_0x7ddb[119]]/ 2- 20),_0x9494xa= Math[_0x7ddb[160]](1,5* Math[_0x7ddb[243]](3,Math[_0x7ddb[160]](0,Math[_0x7ddb[488]](80/ Math[_0x7ddb[425]](_0x9494xa))))),this[_0x7ddb[2989]]= Math[_0x7ddb[488]](this[_0x7ddb[2989]]/ _0x9494xa)* _0x9494xa);this[_0x7ddb[2732]][_0x7ddb[603]]= this[_0x7ddb[2989]];this[_0x7ddb[2732]][_0x7ddb[258]]()}else {var _0x9494x13=mxUtils[_0x7ddb[431]](this[_0x7ddb[724]][_0x7ddb[124]][mxConstants[_0x7ddb[2278]]]|| _0x7ddb[468]),_0x9494x14=Math[_0x7ddb[426]](-_0x9494x13),_0x9494x15=Math[_0x7ddb[427]](-_0x9494x13),_0x9494x16= new mxPoint(this[_0x7ddb[724]][_0x7ddb[241]](),this[_0x7ddb[724]][_0x7ddb[242]]()),_0x9494xa=_0x9494x4[_0x7ddb[235]]- this[_0x7ddb[2739]],_0x9494x12=_0x9494x4[_0x7ddb[236]]- this[_0x7ddb[2740]],_0x9494x4=this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[513]],_0x9494x17=_0x9494x15* _0x9494xa+ _0x9494x14* _0x9494x12,_0x9494xa=_0x9494x14* _0x9494xa- _0x9494x15* _0x9494x12;this[_0x7ddb[1562]]= this[_0x7ddb[2991]](this[_0x7ddb[2961]],_0x9494xa,_0x9494x17,this[_0x7ddb[1983]],_0x9494x5,_0x9494x9,_0x9494x4);_0x9494x14= Math[_0x7ddb[426]](_0x9494x13);_0x9494x15= Math[_0x7ddb[427]](_0x9494x13);_0x9494x12= new mxPoint(this[_0x7ddb[1562]][_0x7ddb[241]](),this[_0x7ddb[1562]][_0x7ddb[242]]());_0x9494xa= _0x9494x12[_0x7ddb[235]]- _0x9494x16[_0x7ddb[235]];_0x9494x12= _0x9494x12[_0x7ddb[236]]- _0x9494x16[_0x7ddb[236]];_0x9494x16= _0x9494x15* _0x9494xa+ _0x9494x14* _0x9494x12- _0x9494x12;this[_0x7ddb[1562]][_0x7ddb[235]]+= _0x9494x14* _0x9494xa- _0x9494x15* _0x9494x12- _0x9494xa;this[_0x7ddb[1562]][_0x7ddb[236]]+= _0x9494x16;this[_0x7ddb[2932]]()}};_0x9494x3[_0x7ddb[722]]()}else {null!= this[_0x7ddb[2986]](_0x9494x3)&& _0x9494x3[_0x7ddb[722]](!1)}};mxVertexHandler[_0x7ddb[202]][_0x7ddb[789]]= function(_0x9494x2,_0x9494x3){if(!_0x9494x3[_0x7ddb[721]]()&& null!= this[_0x7ddb[1983]] && null!= this[_0x7ddb[724]]){var _0x9494x4= new mxPoint(_0x9494x3[_0x7ddb[734]](),_0x9494x3[_0x7ddb[735]]());this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[473]]();try{if(this[_0x7ddb[1983]]== mxEvent[_0x7ddb[2983]]){null!= this[_0x7ddb[2989]]&& this[_0x7ddb[2992]](this[_0x7ddb[724]][_0x7ddb[246]],this[_0x7ddb[2989]]- (this[_0x7ddb[724]][_0x7ddb[124]][mxConstants[_0x7ddb[2278]]]|| 0))}else {var _0x9494x5=this[_0x7ddb[1179]][_0x7ddb[1018]](_0x9494x3[_0x7ddb[727]]()),_0x9494x9=mxUtils[_0x7ddb[431]](this[_0x7ddb[724]][_0x7ddb[124]][mxConstants[_0x7ddb[2278]]]|| _0x7ddb[468]),_0x9494xa=Math[_0x7ddb[426]](-_0x9494x9),_0x9494x12=Math[_0x7ddb[427]](-_0x9494x9),_0x9494x13=_0x9494x4[_0x7ddb[235]]- this[_0x7ddb[2739]],_0x9494x14=_0x9494x4[_0x7ddb[236]]- this[_0x7ddb[2740]],_0x9494x4=_0x9494x12* _0x9494x13+ _0x9494xa* _0x9494x14,_0x9494x13=_0x9494xa* _0x9494x13- _0x9494x12* _0x9494x14,_0x9494x14=_0x9494x4,_0x9494x15=this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[255]];this[_0x7ddb[2526]](this[_0x7ddb[724]][_0x7ddb[246]],_0x9494x13/ _0x9494x15,_0x9494x14/ _0x9494x15,this[_0x7ddb[1983]],_0x9494x5)}}finally{this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[476]]()};this[_0x7ddb[862]]();_0x9494x3[_0x7ddb[722]]()}};mxVertexHandler[_0x7ddb[202]][_0x7ddb[2992]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[502]]();if(_0x9494x4[_0x7ddb[1193]](_0x9494x2)){var _0x9494x5=_0x9494x2== this[_0x7ddb[724]]?this[_0x7ddb[724]]:this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[248]](_0x9494x2);null!= _0x9494x5&& this[_0x7ddb[1179]][_0x7ddb[1717]](mxConstants.STYLE_ROTATION,(_0x9494x5[_0x7ddb[124]][mxConstants[_0x7ddb[2278]]]|| 0)+ _0x9494x3,[_0x9494x2]);if(this[_0x7ddb[724]][_0x7ddb[246]]!= _0x9494x2&& (_0x9494x5= this[_0x7ddb[1179]][_0x7ddb[1198]](_0x9494x2),null!= _0x9494x5&& !_0x9494x5[_0x7ddb[1500]])){if(0!= _0x9494x3){var _0x9494x9=this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[1197]](_0x9494x2),_0x9494xa=this[_0x7ddb[1179]][_0x7ddb[1198]](_0x9494x9);if(!_0x9494x5[_0x7ddb[1500]]&& null!= _0x9494xa){var _0x9494x12=mxUtils[_0x7ddb[431]](_0x9494x3),_0x9494x9=Math[_0x7ddb[426]](_0x9494x12),_0x9494x12=Math[_0x7ddb[427]](_0x9494x12),_0x9494x13= new mxPoint(_0x9494x5[_0x7ddb[241]](),_0x9494x5[_0x7ddb[242]]()),_0x9494xa= new mxPoint(_0x9494xa[_0x7ddb[117]]/ 2,_0x9494xa[_0x7ddb[119]]/ 2),_0x9494x9=mxUtils[_0x7ddb[432]](_0x9494x13,_0x9494x9,_0x9494x12,_0x9494xa),_0x9494x5=_0x9494x5[_0x7ddb[238]]();_0x9494x5[_0x7ddb[235]]= _0x9494x9[_0x7ddb[235]]- _0x9494x5[_0x7ddb[117]]/ 2;_0x9494x5[_0x7ddb[236]]= _0x9494x9[_0x7ddb[236]]- _0x9494x5[_0x7ddb[119]]/ 2;_0x9494x4[_0x7ddb[1724]](_0x9494x2,_0x9494x5)}}else {_0x9494x5= _0x9494x5[_0x7ddb[238]](),_0x9494x5[_0x7ddb[235]]+= dx,_0x9494x5[_0x7ddb[236]]+= dy,_0x9494x4[_0x7ddb[1724]](_0x9494x2,_0x9494x5)}};_0x9494x5= _0x9494x4[_0x7ddb[262]](_0x9494x2);for(_0x9494x9= 0;_0x9494x9< _0x9494x5;_0x9494x9++){this[_0x7ddb[2992]](_0x9494x4[_0x7ddb[263]](_0x9494x2,_0x9494x9),_0x9494x3)}}};mxVertexHandler[_0x7ddb[202]][_0x7ddb[862]]= function(){this[_0x7ddb[1983]]= this[_0x7ddb[2989]]= null;null!= this[_0x7ddb[2988]]&& (this[_0x7ddb[2988]][_0x7ddb[515]](),this[_0x7ddb[2988]]= null);null!= this[_0x7ddb[2732]]&& (this[_0x7ddb[2732]][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[495]]= _0x7ddb[497],this[_0x7ddb[2961]]= this[_0x7ddb[2962]](this[_0x7ddb[724]]),this[_0x7ddb[1562]]= new mxRectangle(this[_0x7ddb[2961]][_0x7ddb[235]],this[_0x7ddb[2961]][_0x7ddb[236]],this[_0x7ddb[2961]][_0x7ddb[117]],this[_0x7ddb[2961]][_0x7ddb[119]]),this[_0x7ddb[2932]]())};mxVertexHandler[_0x7ddb[202]][_0x7ddb[2526]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){var _0x9494xa=this[_0x7ddb[1179]][_0x7ddb[251]][_0x7ddb[1721]](_0x9494x2);if(null!= _0x9494xa){if(_0x9494x5== mxEvent[_0x7ddb[2987]]){_0x9494x5= this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[255]],_0x9494x3= (this[_0x7ddb[2972]][_0x7ddb[1562]][_0x7ddb[241]]()- this[_0x7ddb[2739]])/ _0x9494x5,_0x9494x4= (this[_0x7ddb[2972]][_0x7ddb[1562]][_0x7ddb[242]]()- this[_0x7ddb[2740]])/ _0x9494x5,_0x9494xa= _0x9494xa[_0x7ddb[238]](),null== _0x9494xa[_0x7ddb[1368]]?_0x9494xa[_0x7ddb[1368]]= new mxPoint(_0x9494x3,_0x9494x4):(_0x9494xa[_0x7ddb[1368]][_0x7ddb[235]]+= _0x9494x3,_0x9494xa[_0x7ddb[1368]][_0x7ddb[236]]+= _0x9494x4),this[_0x7ddb[1179]][_0x7ddb[251]][_0x7ddb[1724]](_0x9494x2,_0x9494xa)}else {_0x9494x5= this[_0x7ddb[2991]](_0x9494xa,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,1, new mxPoint(0,0));var _0x9494x12=mxUtils[_0x7ddb[431]](this[_0x7ddb[724]][_0x7ddb[124]][mxConstants[_0x7ddb[2278]]]|| _0x7ddb[468]);if(0!= _0x9494x12){_0x9494x3= _0x9494x5[_0x7ddb[241]]()- _0x9494xa[_0x7ddb[241]]();_0x9494x4= _0x9494x5[_0x7ddb[242]]()- _0x9494xa[_0x7ddb[242]]();_0x9494x9= Math[_0x7ddb[426]](_0x9494x12);var _0x9494x13=Math[_0x7ddb[427]](_0x9494x12),_0x9494x12=_0x9494x9* _0x9494x3- _0x9494x13* _0x9494x4- _0x9494x3;_0x9494x3= _0x9494x13* _0x9494x3+ _0x9494x9* _0x9494x4- _0x9494x4;_0x9494x4= _0x9494x5[_0x7ddb[235]]- _0x9494xa[_0x7ddb[235]];var _0x9494x14=_0x9494x5[_0x7ddb[236]]- _0x9494xa[_0x7ddb[236]],_0x9494x15=_0x9494x9* _0x9494x4- _0x9494x13* _0x9494x14;_0x9494x9= _0x9494x13* _0x9494x4+ _0x9494x9* _0x9494x14;_0x9494x5[_0x7ddb[235]]+= _0x9494x12;_0x9494x5[_0x7ddb[236]]+= _0x9494x3;if(!this[_0x7ddb[1179]][_0x7ddb[1742]](_0x9494x2)&& (0!= _0x9494x12|| 0!= _0x9494x3)){_0x9494x4= _0x9494xa[_0x7ddb[235]]- _0x9494x5[_0x7ddb[235]]+ _0x9494x15,_0x9494x14= _0x9494xa[_0x7ddb[236]]- _0x9494x5[_0x7ddb[236]]+ _0x9494x9,this[_0x7ddb[2993]](_0x9494x2,_0x9494x4,_0x9494x14)}};this[_0x7ddb[1179]][_0x7ddb[2526]](_0x9494x2,_0x9494x5)}}};mxVertexHandler[_0x7ddb[202]][_0x7ddb[2993]]= function(_0x9494x2,_0x9494x3,_0x9494x4){for(var _0x9494x5=this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x9=_0x9494x5[_0x7ddb[262]](_0x9494x2),_0x9494xa=0;_0x9494xa< _0x9494x9;_0x9494xa++){var _0x9494x12=_0x9494x5[_0x7ddb[263]](_0x9494x2,_0x9494xa);if(_0x9494x5[_0x7ddb[1193]](_0x9494x12)){var _0x9494x13=this[_0x7ddb[1179]][_0x7ddb[1198]](_0x9494x12);null!= _0x9494x13&& !_0x9494x13[_0x7ddb[1500]]&& (_0x9494x13= _0x9494x13[_0x7ddb[238]](),_0x9494x13[_0x7ddb[235]]+= _0x9494x3,_0x9494x13[_0x7ddb[236]]+= _0x9494x4,_0x9494x5[_0x7ddb[1724]](_0x9494x12,_0x9494x13))}}};mxVertexHandler[_0x7ddb[202]][_0x7ddb[2991]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12){if(this[_0x7ddb[2957]]){_0x9494x12= _0x9494x2[_0x7ddb[235]]+ _0x9494x2[_0x7ddb[117]]+ _0x9494x3;var _0x9494x13=_0x9494x2[_0x7ddb[236]]+ _0x9494x2[_0x7ddb[119]]+ _0x9494x4;_0x9494x9&& (_0x9494x12= this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x12/ _0x9494xa)* _0x9494xa,_0x9494x13= this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x13/ _0x9494xa)* _0x9494xa);_0x9494xa= new mxRectangle(_0x9494x2[_0x7ddb[235]],_0x9494x2[_0x7ddb[236]],0,0);_0x9494xa[_0x7ddb[99]]( new mxRectangle(_0x9494x12,_0x9494x13,0,0));return _0x9494xa};var _0x9494x13=_0x9494x2[_0x7ddb[235]]- _0x9494x12[_0x7ddb[235]]* _0x9494xa,_0x9494x14=_0x9494x13+ _0x9494x2[_0x7ddb[117]],_0x9494x15=_0x9494x2[_0x7ddb[236]]- _0x9494x12[_0x7ddb[236]]* _0x9494xa;_0x9494x2= _0x9494x15+ _0x9494x2[_0x7ddb[119]];4< _0x9494x5?(_0x9494x2+= _0x9494x4,_0x9494x9&& (_0x9494x2= this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x2/ _0x9494xa)* _0x9494xa)):3> _0x9494x5&& (_0x9494x15+= _0x9494x4,_0x9494x9&& (_0x9494x15= this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x15/ _0x9494xa)* _0x9494xa));if(0== _0x9494x5|| 3== _0x9494x5|| 5== _0x9494x5){_0x9494x13+= _0x9494x3,_0x9494x9&& (_0x9494x13= this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x13/ _0x9494xa)* _0x9494xa)}else {if(2== _0x9494x5|| 4== _0x9494x5|| 7== _0x9494x5){_0x9494x14+= _0x9494x3,_0x9494x9&& (_0x9494x14= this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x14/ _0x9494xa)* _0x9494xa)}};_0x9494x9= _0x9494x14- _0x9494x13;_0x9494x2-= _0x9494x15;0> _0x9494x9&& (_0x9494x13+= _0x9494x9,_0x9494x9= Math[_0x7ddb[425]](_0x9494x9));0> _0x9494x2&& (_0x9494x15+= _0x9494x2,_0x9494x2= Math[_0x7ddb[425]](_0x9494x2));return new mxRectangle(_0x9494x13+ _0x9494x12[_0x7ddb[235]]* _0x9494xa,_0x9494x15+ _0x9494x12[_0x7ddb[236]]* _0x9494xa,_0x9494x9,_0x9494x2)};mxVertexHandler[_0x7ddb[202]][_0x7ddb[258]]= function(){this[_0x7ddb[2961]]= this[_0x7ddb[2962]](this[_0x7ddb[724]]);this[_0x7ddb[1562]]= new mxRectangle(this[_0x7ddb[724]][_0x7ddb[235]],this[_0x7ddb[724]][_0x7ddb[236]],this[_0x7ddb[724]][_0x7ddb[117]],this[_0x7ddb[724]][_0x7ddb[119]]);var _0x9494x2=this[_0x7ddb[724]];if(null!= this[_0x7ddb[2964]]){var _0x9494x3=_0x9494x2[_0x7ddb[235]]+ _0x9494x2[_0x7ddb[117]],_0x9494x4=_0x9494x2[_0x7ddb[236]]+ _0x9494x2[_0x7ddb[119]];if(this[_0x7ddb[2957]]){this[_0x7ddb[2985]](this[_0x7ddb[2964]][0],_0x9494x3,_0x9494x4)}else {var _0x9494x5=_0x9494x2[_0x7ddb[235]]+ _0x9494x2[_0x7ddb[117]]/ 2,_0x9494x9=_0x9494x2[_0x7ddb[236]]+ _0x9494x2[_0x7ddb[119]]/ 2;if(1< this[_0x7ddb[2964]][_0x7ddb[67]]){var _0x9494xa=mxUtils[_0x7ddb[431]](_0x9494x2[_0x7ddb[124]][mxConstants[_0x7ddb[2278]]]|| _0x7ddb[468]),_0x9494x12=Math[_0x7ddb[426]](_0x9494xa),_0x9494xa=Math[_0x7ddb[427]](_0x9494xa),_0x9494x13= new mxPoint(_0x9494x2[_0x7ddb[241]](),_0x9494x2[_0x7ddb[242]]()),_0x9494x14=mxUtils[_0x7ddb[432]]( new mxPoint(_0x9494x2[_0x7ddb[235]],_0x9494x2[_0x7ddb[236]]),_0x9494x12,_0x9494xa,_0x9494x13);this[_0x7ddb[2985]](this[_0x7ddb[2964]][0],_0x9494x14[_0x7ddb[235]],_0x9494x14[_0x7ddb[236]]);_0x9494x14[_0x7ddb[235]]= _0x9494x5;_0x9494x14[_0x7ddb[236]]= _0x9494x2[_0x7ddb[236]];_0x9494x14= mxUtils[_0x7ddb[432]](_0x9494x14,_0x9494x12,_0x9494xa,_0x9494x13);this[_0x7ddb[2985]](this[_0x7ddb[2964]][1],_0x9494x14[_0x7ddb[235]],_0x9494x14[_0x7ddb[236]]);_0x9494x14[_0x7ddb[235]]= _0x9494x3;_0x9494x14[_0x7ddb[236]]= _0x9494x2[_0x7ddb[236]];_0x9494x14= mxUtils[_0x7ddb[432]](_0x9494x14,_0x9494x12,_0x9494xa,_0x9494x13);this[_0x7ddb[2985]](this[_0x7ddb[2964]][2],_0x9494x14[_0x7ddb[235]],_0x9494x14[_0x7ddb[236]]);_0x9494x14[_0x7ddb[235]]= _0x9494x2[_0x7ddb[235]];_0x9494x14[_0x7ddb[236]]= _0x9494x9;_0x9494x14= mxUtils[_0x7ddb[432]](_0x9494x14,_0x9494x12,_0x9494xa,_0x9494x13);this[_0x7ddb[2985]](this[_0x7ddb[2964]][3],_0x9494x14[_0x7ddb[235]],_0x9494x14[_0x7ddb[236]]);_0x9494x14[_0x7ddb[235]]= _0x9494x3;_0x9494x14[_0x7ddb[236]]= _0x9494x9;_0x9494x14= mxUtils[_0x7ddb[432]](_0x9494x14,_0x9494x12,_0x9494xa,_0x9494x13);this[_0x7ddb[2985]](this[_0x7ddb[2964]][4],_0x9494x14[_0x7ddb[235]],_0x9494x14[_0x7ddb[236]]);_0x9494x14[_0x7ddb[235]]= _0x9494x2[_0x7ddb[235]];_0x9494x14[_0x7ddb[236]]= _0x9494x4;_0x9494x14= mxUtils[_0x7ddb[432]](_0x9494x14,_0x9494x12,_0x9494xa,_0x9494x13);this[_0x7ddb[2985]](this[_0x7ddb[2964]][5],_0x9494x14[_0x7ddb[235]],_0x9494x14[_0x7ddb[236]]);_0x9494x14[_0x7ddb[235]]= _0x9494x5;_0x9494x14[_0x7ddb[236]]= _0x9494x4;_0x9494x14= mxUtils[_0x7ddb[432]](_0x9494x14,_0x9494x12,_0x9494xa,_0x9494x13);this[_0x7ddb[2985]](this[_0x7ddb[2964]][6],_0x9494x14[_0x7ddb[235]],_0x9494x14[_0x7ddb[236]]);_0x9494x14[_0x7ddb[235]]= _0x9494x3;_0x9494x14[_0x7ddb[236]]= _0x9494x4;_0x9494x14= mxUtils[_0x7ddb[432]](_0x9494x14,_0x9494x12,_0x9494xa,_0x9494x13);this[_0x7ddb[2985]](this[_0x7ddb[2964]][7],_0x9494x14[_0x7ddb[235]],_0x9494x14[_0x7ddb[236]]);this[_0x7ddb[2985]](this[_0x7ddb[2964]][8],_0x9494x5+ _0x9494x2[_0x7ddb[2079]][_0x7ddb[235]],_0x9494x9+ _0x9494x2[_0x7ddb[2079]][_0x7ddb[236]])}else {2<= this[_0x7ddb[724]][_0x7ddb[117]]&& 2<= this[_0x7ddb[724]][_0x7ddb[119]]?this[_0x7ddb[2985]](this[_0x7ddb[2964]][0],_0x9494x5+ _0x9494x2[_0x7ddb[2079]][_0x7ddb[235]],_0x9494x9+ _0x9494x2[_0x7ddb[2079]][_0x7ddb[236]]):this[_0x7ddb[2985]](this[_0x7ddb[2964]][0],_0x9494x2[_0x7ddb[235]],_0x9494x2[_0x7ddb[236]])}}};null!= this[_0x7ddb[2973]]&& (_0x9494xa= mxUtils[_0x7ddb[431]](this[_0x7ddb[724]][_0x7ddb[124]][mxConstants[_0x7ddb[2278]]]|| _0x7ddb[468]),_0x9494x12= Math[_0x7ddb[426]](_0x9494xa),_0x9494xa= Math[_0x7ddb[427]](_0x9494xa),_0x9494x13= new mxPoint(this[_0x7ddb[724]][_0x7ddb[241]](),this[_0x7ddb[724]][_0x7ddb[242]]()),_0x9494x14= mxUtils[_0x7ddb[432]]( new mxPoint(_0x9494x2[_0x7ddb[235]]+ _0x9494x2[_0x7ddb[117]]/ 2,_0x9494x2[_0x7ddb[236]]- 16),_0x9494x12,_0x9494xa,_0x9494x13),this[_0x7ddb[2985]](this[_0x7ddb[2973]],_0x9494x14[_0x7ddb[235]],_0x9494x14[_0x7ddb[236]]));this[_0x7ddb[2732]][_0x7ddb[603]]= Number(this[_0x7ddb[724]][_0x7ddb[124]][mxConstants[_0x7ddb[2278]]]|| _0x7ddb[468]);this[_0x7ddb[2932]]()};mxVertexHandler[_0x7ddb[202]][_0x7ddb[2932]]= function(){null!= this[_0x7ddb[2988]]&& (this[_0x7ddb[2988]][_0x7ddb[1562]]= this[_0x7ddb[1562]],this[_0x7ddb[2988]][_0x7ddb[252]][_0x7ddb[265]]== this[_0x7ddb[1179]][_0x7ddb[526]]&& (this[_0x7ddb[2988]][_0x7ddb[1562]][_0x7ddb[117]]= Math[_0x7ddb[160]](0,this[_0x7ddb[2988]][_0x7ddb[1562]][_0x7ddb[117]]- 1),this[_0x7ddb[2988]][_0x7ddb[1562]][_0x7ddb[119]]= Math[_0x7ddb[160]](0,this[_0x7ddb[2988]][_0x7ddb[1562]][_0x7ddb[119]]- 1)),this[_0x7ddb[2988]][_0x7ddb[603]]= Number(this[_0x7ddb[724]][_0x7ddb[124]][mxConstants[_0x7ddb[2278]]]|| _0x7ddb[468]),this[_0x7ddb[2988]][_0x7ddb[258]]());this[_0x7ddb[2732]][_0x7ddb[1562]]= this[_0x7ddb[1562]];this[_0x7ddb[2732]][_0x7ddb[258]]()};mxVertexHandler[_0x7ddb[202]][_0x7ddb[515]]= function(){null!= this[_0x7ddb[2988]]&& (this[_0x7ddb[2988]][_0x7ddb[515]](),this[_0x7ddb[2988]]= null);this[_0x7ddb[2732]][_0x7ddb[515]]();this[_0x7ddb[2972]]= this[_0x7ddb[2732]]= null;if(null!= this[_0x7ddb[2964]]){for(var _0x9494x2=0;_0x9494x2< this[_0x7ddb[2964]][_0x7ddb[67]];_0x9494x2++){this[_0x7ddb[2964]][_0x9494x2][_0x7ddb[515]](),this[_0x7ddb[2964]][_0x9494x2]= null}}};function mxEdgeHandler(_0x9494x2){null!= _0x9494x2&& (this[_0x7ddb[724]]= _0x9494x2,this[_0x7ddb[176]]())}mxEdgeHandler[_0x7ddb[202]][_0x7ddb[1179]]= null;mxEdgeHandler[_0x7ddb[202]][_0x7ddb[724]]= null;mxEdgeHandler[_0x7ddb[202]][_0x7ddb[2885]]= null;mxEdgeHandler[_0x7ddb[202]][_0x7ddb[2886]]= null;mxEdgeHandler[_0x7ddb[202]][_0x7ddb[267]]= null;mxEdgeHandler[_0x7ddb[202]][_0x7ddb[253]]= null;mxEdgeHandler[_0x7ddb[202]][_0x7ddb[2994]]= null;mxEdgeHandler[_0x7ddb[202]][_0x7ddb[2972]]= null;mxEdgeHandler[_0x7ddb[202]][_0x7ddb[2797]]= !0;mxEdgeHandler[_0x7ddb[202]][_0x7ddb[2771]]= !1;mxEdgeHandler[_0x7ddb[202]][_0x7ddb[2995]]= !1;mxEdgeHandler[_0x7ddb[202]][_0x7ddb[574]]= !1;mxEdgeHandler[_0x7ddb[202]][_0x7ddb[2958]]= !0;mxEdgeHandler[_0x7ddb[202]][_0x7ddb[2996]]= !1;mxEdgeHandler[_0x7ddb[202]][_0x7ddb[2959]]= null;mxEdgeHandler[_0x7ddb[202]][_0x7ddb[2353]]= 0;mxEdgeHandler[_0x7ddb[202]][_0x7ddb[176]]= function(){this[_0x7ddb[1179]]= this[_0x7ddb[724]][_0x7ddb[441]][_0x7ddb[1179]];this[_0x7ddb[2885]]= this[_0x7ddb[1689]]();this[_0x7ddb[2886]]= new mxConstraintHandler(this[_0x7ddb[1179]]);this[_0x7ddb[1525]]= [];this[_0x7ddb[2997]]= this[_0x7ddb[2998]](this[_0x7ddb[724]]);this[_0x7ddb[253]]= this[_0x7ddb[2963]](this[_0x7ddb[2997]]);this[_0x7ddb[253]][_0x7ddb[507]]= this[_0x7ddb[1179]][_0x7ddb[507]]!= mxConstants[_0x7ddb[508]]?mxConstants[_0x7ddb[2334]]:mxConstants[_0x7ddb[508]];this[_0x7ddb[253]][_0x7ddb[176]](this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[1524]]());this[_0x7ddb[253]][_0x7ddb[1564]]= 0;this[_0x7ddb[253]][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[270]]= mxConstants[_0x7ddb[2831]];mxEvent[_0x7ddb[169]](this[_0x7ddb[253]][_0x7ddb[252]],_0x7ddb[760],mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[1179]][_0x7ddb[761]](_0x9494x2,this[_0x7ddb[724]][_0x7ddb[246]])}));mxEvent[_0x7ddb[759]](this[_0x7ddb[253]][_0x7ddb[252]],mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[2771]]&& this[_0x7ddb[2999]](_0x9494x2)?this[_0x7ddb[3000]](this[_0x7ddb[724]],_0x9494x2):this[_0x7ddb[1179]][_0x7ddb[758]](mxEvent.MOUSE_DOWN, new mxMouseEvent(_0x9494x2,this[_0x7ddb[724]]))}),mxUtils[_0x7ddb[885]](this,function(_0x9494x2){var _0x9494x4=this[_0x7ddb[724]][_0x7ddb[246]];if(null!= this[_0x7ddb[1983]]){var _0x9494x5=mxUtils[_0x7ddb[2196]](this[_0x7ddb[1179]][_0x7ddb[526]],mxEvent[_0x7ddb[731]](_0x9494x2),mxEvent[_0x7ddb[733]](_0x9494x2)),_0x9494x4=this[_0x7ddb[1179]][_0x7ddb[999]](_0x9494x5[_0x7ddb[235]],_0x9494x5[_0x7ddb[236]]);this[_0x7ddb[1179]][_0x7ddb[1730]](_0x9494x4)&& this[_0x7ddb[1179]][_0x7ddb[2688]](_0x9494x4,_0x9494x5[_0x7ddb[235]],_0x9494x5[_0x7ddb[236]])&& (_0x9494x4= null)};this[_0x7ddb[1179]][_0x7ddb[758]](mxEvent.MOUSE_MOVE, new mxMouseEvent(_0x9494x2,this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[248]](_0x9494x4)))}),mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[1179]][_0x7ddb[758]](mxEvent.MOUSE_UP, new mxMouseEvent(_0x9494x2,this[_0x7ddb[724]]))}));this[_0x7ddb[574]]= null!= this[_0x7ddb[724]][_0x7ddb[963]]&& this[_0x7ddb[724]][_0x7ddb[963]][_0x7ddb[252]][_0x7ddb[265]]== this[_0x7ddb[1179]][_0x7ddb[526]];if(!this[_0x7ddb[574]]){var _0x9494x2=this[_0x7ddb[724]][_0x7ddb[2089]](!0);null!= _0x9494x2&& (this[_0x7ddb[574]]= null!= _0x9494x2[_0x7ddb[963]]&& _0x9494x2[_0x7ddb[963]][_0x7ddb[252]][_0x7ddb[265]]== this[_0x7ddb[1179]][_0x7ddb[526]]);this[_0x7ddb[574]]|| (_0x9494x2= this[_0x7ddb[724]][_0x7ddb[2089]](!1),null!= _0x9494x2&& (this[_0x7ddb[574]]= null!= _0x9494x2[_0x7ddb[963]]&& _0x9494x2[_0x7ddb[963]][_0x7ddb[252]][_0x7ddb[265]]== this[_0x7ddb[1179]][_0x7ddb[526]]))};if(this[_0x7ddb[1179]][_0x7ddb[2694]]()< mxGraphHandler[_0x7ddb[202]][_0x7ddb[2795]]|| 0>= mxGraphHandler[_0x7ddb[202]][_0x7ddb[2795]]){this[_0x7ddb[2994]]= this[_0x7ddb[3001]]()};this[_0x7ddb[685]]= new mxPoint(this[_0x7ddb[724]][_0x7ddb[2079]][_0x7ddb[235]],this[_0x7ddb[724]][_0x7ddb[2079]][_0x7ddb[236]]);this[_0x7ddb[2972]]= new mxRectangleShape( new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR);this[_0x7ddb[2972]][_0x7ddb[1229]]= !1;this[_0x7ddb[3002]](this[_0x7ddb[2972]]);this[_0x7ddb[2972]][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[270]]= mxConstants[_0x7ddb[3003]];mxEvent[_0x7ddb[2733]](this[_0x7ddb[2972]][_0x7ddb[252]],this[_0x7ddb[1179]],this[_0x7ddb[724]]);this[_0x7ddb[258]]()};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[2999]]= function(_0x9494x2){return mxEvent[_0x7ddb[774]](_0x9494x2)};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[3004]]= function(_0x9494x2){return mxEvent[_0x7ddb[774]](_0x9494x2)};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[2998]]= function(_0x9494x2){return _0x9494x2[_0x7ddb[439]]};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[2963]]= function(_0x9494x2){_0x9494x2= new mxPolyline(_0x9494x2,this[_0x7ddb[2975]]());_0x9494x2[_0x7ddb[1307]]= this[_0x7ddb[2976]]();_0x9494x2[_0x7ddb[1522]]= this[_0x7ddb[2977]]();return _0x9494x2};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[2975]]= function(){return mxConstants[_0x7ddb[3005]]};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[2976]]= function(){return mxConstants[_0x7ddb[3006]]};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[2977]]= function(){return mxConstants[_0x7ddb[3007]]};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[2907]]= function(_0x9494x2){return !0};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[1689]]= function(){var _0x9494x2= new mxCellMarker(this[_0x7ddb[1179]]),_0x9494x3=this;_0x9494x2[_0x7ddb[736]]= function(_0x9494x2){var _0x9494x5=mxCellMarker[_0x7ddb[202]][_0x7ddb[736]][_0x7ddb[183]](this,arguments);if(!_0x9494x3[_0x7ddb[2907]](_0x9494x5)){return null};var _0x9494x9=_0x9494x3[_0x7ddb[1179]][_0x7ddb[502]]();if(_0x9494x5== _0x9494x3[_0x7ddb[724]][_0x7ddb[246]]|| null!= _0x9494x5&& !_0x9494x3[_0x7ddb[1179]][_0x7ddb[2405]]&& _0x9494x9[_0x7ddb[250]](_0x9494x5)){_0x9494x5= null};return _0x9494x5};_0x9494x2[_0x7ddb[2872]]= function(_0x9494x2){var _0x9494x5=_0x9494x3[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x5=_0x9494x3[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[2292]](_0x9494x2,_0x9494x3[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[248]](_0x9494x5[_0x7ddb[1709]](_0x9494x3[_0x7ddb[724]][_0x7ddb[246]],!_0x9494x3[_0x7ddb[729]])),!_0x9494x3[_0x7ddb[729]]),_0x9494x5=null!= _0x9494x5?_0x9494x5[_0x7ddb[246]]:null;_0x9494x3[_0x7ddb[267]]= _0x9494x3[_0x7ddb[2909]](_0x9494x3[_0x7ddb[729]]?_0x9494x2[_0x7ddb[246]]:_0x9494x5,_0x9494x3[_0x7ddb[729]]?_0x9494x5:_0x9494x2[_0x7ddb[246]]);return null== _0x9494x3[_0x7ddb[267]]};return _0x9494x2};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[2909]]= function(_0x9494x2,_0x9494x3){return this[_0x7ddb[1179]][_0x7ddb[2500]](this[_0x7ddb[724]][_0x7ddb[246]],_0x9494x2,_0x9494x3)};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[3001]]= function(){for(var _0x9494x2=this[_0x7ddb[724]][_0x7ddb[246]],_0x9494x3=[],_0x9494x4=0;_0x9494x4< this[_0x7ddb[2997]][_0x7ddb[67]];_0x9494x4++){if(this[_0x7ddb[3008]](_0x9494x4)){var _0x9494x5=_0x9494x4== this[_0x7ddb[2997]][_0x7ddb[67]]- 1;if((_0x9494x5= 0== _0x9494x4|| _0x9494x5)|| this[_0x7ddb[1179]][_0x7ddb[2662]](_0x9494x2)){var _0x9494x9=this[_0x7ddb[3009]](_0x9494x4);this[_0x7ddb[3002]](_0x9494x9);mxClient[_0x7ddb[754]]&& _0x9494x9[_0x7ddb[252]][_0x7ddb[57]](_0x7ddb[1377],_0x7ddb[130]);if(this[_0x7ddb[3010]](_0x9494x4)){if(mxClient[_0x7ddb[754]]){var _0x9494xa=mxUtils[_0x7ddb[885]](this,function(_0x9494x2){_0x9494x2= mxUtils[_0x7ddb[2196]](this[_0x7ddb[1179]][_0x7ddb[526]],mxEvent[_0x7ddb[731]](_0x9494x2),mxEvent[_0x7ddb[733]](_0x9494x2));return this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[248]](this[_0x7ddb[1179]][_0x7ddb[999]](_0x9494x2[_0x7ddb[235]],_0x9494x2[_0x7ddb[236]]))});mxEvent[_0x7ddb[2733]](_0x9494x9[_0x7ddb[252]],this[_0x7ddb[1179]],_0x9494xa)}else {_0x9494x9[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[270]]= mxConstants[_0x7ddb[3011]],mxEvent[_0x7ddb[2733]](_0x9494x9[_0x7ddb[252]],this[_0x7ddb[1179]],this[_0x7ddb[724]])}};_0x9494x3[_0x7ddb[207]](_0x9494x9);_0x9494x5|| (this[_0x7ddb[1525]][_0x7ddb[207]]( new mxPoint(0,0)),_0x9494x9[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[188])}}};return _0x9494x3};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[3010]]= function(_0x9494x2){return !0};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[3008]]= function(_0x9494x2){return !0};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[3009]]= function(_0x9494x2){if(null!= this[_0x7ddb[2959]]){return new mxImageShape( new mxRectangle(0,0,this[_0x7ddb[2959]][_0x7ddb[117]],this[_0x7ddb[2959]][_0x7ddb[119]]),this[_0x7ddb[2959]][_0x7ddb[390]])};_0x9494x2= mxConstants[_0x7ddb[2974]];this[_0x7ddb[574]]&& (_0x9494x2-= 1);return new mxRectangleShape( new mxRectangle(0,0,_0x9494x2,_0x9494x2),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[3002]]= function(_0x9494x2){this[_0x7ddb[574]]?(_0x9494x2[_0x7ddb[507]]= mxConstants[_0x7ddb[1656]],_0x9494x2[_0x7ddb[176]](this[_0x7ddb[1179]][_0x7ddb[526]])):(_0x9494x2[_0x7ddb[507]]= this[_0x7ddb[1179]][_0x7ddb[507]]!= mxConstants[_0x7ddb[508]]?mxConstants[_0x7ddb[2334]]:mxConstants[_0x7ddb[508]],_0x9494x2[_0x7ddb[176]](this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[1524]]()))};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[2986]]= function(_0x9494x2){if(null!= this[_0x7ddb[2994]]){for(var _0x9494x3=this[_0x7ddb[2353]],_0x9494x3=this[_0x7ddb[2958]]&& (mxClient[_0x7ddb[80]]|| 0< _0x9494x3)? new mxRectangle(_0x9494x2[_0x7ddb[734]]()- _0x9494x3,_0x9494x2[_0x7ddb[735]]()- _0x9494x3,2* _0x9494x3,2* _0x9494x3):null,_0x9494x4=0;_0x9494x4< this[_0x7ddb[2994]][_0x7ddb[67]];_0x9494x4++){if((_0x9494x2[_0x7ddb[729]](this[_0x7ddb[2994]][_0x9494x4])|| null!= _0x9494x3&& mxUtils[_0x7ddb[1825]](this[_0x7ddb[2994]][_0x9494x4][_0x7ddb[1562]],_0x9494x3))&& _0x7ddb[188]!= this[_0x7ddb[2994]][_0x9494x4][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[187]]){return _0x9494x4}}};if(_0x9494x2[_0x7ddb[729]](this[_0x7ddb[2972]])&& _0x7ddb[188]!= this[_0x7ddb[2972]][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[187]]|| _0x9494x2[_0x7ddb[729]](this[_0x7ddb[724]][_0x7ddb[963]])){if(!mxClient[_0x7ddb[75]]&& !mxClient[_0x7ddb[76]] || _0x7ddb[2822]!= _0x9494x2[_0x7ddb[728]]()[_0x7ddb[301]]){return mxEvent[_0x7ddb[2987]]}};return null};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[787]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=null,_0x9494x4=this[_0x7ddb[2986]](_0x9494x3);null!= _0x9494x4&& (!_0x9494x3[_0x7ddb[721]]()&& this[_0x7ddb[1179]][_0x7ddb[994]]() && !this[_0x7ddb[1179]][_0x7ddb[2579]](_0x9494x3[_0x7ddb[727]]()))&& (this[_0x7ddb[2995]]&& this[_0x7ddb[3004]](_0x9494x3[_0x7ddb[727]]())?this[_0x7ddb[3012]](this[_0x7ddb[724]],_0x9494x4):(_0x9494x4!= mxEvent[_0x7ddb[2987]]|| this[_0x7ddb[1179]][_0x7ddb[2628]](_0x9494x3[_0x7ddb[736]]()))&& this[_0x7ddb[861]](_0x9494x3[_0x7ddb[730]](),_0x9494x3[_0x7ddb[732]](),_0x9494x4),_0x9494x3[_0x7ddb[722]]())};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[861]]= function(_0x9494x2,_0x9494x3,_0x9494x4){this[_0x7ddb[2739]]= _0x9494x2;this[_0x7ddb[2740]]= _0x9494x3;this[_0x7ddb[729]]= null== this[_0x7ddb[2994]]?!1:0== _0x9494x4;this[_0x7ddb[3013]]= null== this[_0x7ddb[2994]]?!1:_0x9494x4== this[_0x7ddb[2994]][_0x7ddb[67]]- 1;this[_0x7ddb[3014]]= _0x9494x4== mxEvent[_0x7ddb[2987]];if(this[_0x7ddb[729]]|| this[_0x7ddb[3013]]){if(_0x9494x2= this[_0x7ddb[724]][_0x7ddb[246]],_0x9494x3= this[_0x7ddb[1179]][_0x7ddb[251]][_0x7ddb[1709]](_0x9494x2,this[_0x7ddb[729]]),null== _0x9494x3&& this[_0x7ddb[1179]][_0x7ddb[2661]](_0x9494x2,this[_0x7ddb[729]])|| null!= _0x9494x3&& this[_0x7ddb[1179]][_0x7ddb[2551]](_0x9494x2,_0x9494x3,this[_0x7ddb[729]])){this[_0x7ddb[1983]]= _0x9494x4}}else {this[_0x7ddb[1983]]= _0x9494x4}};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[3015]]= function(_0x9494x2,_0x9494x3){return this[_0x7ddb[724]][_0x7ddb[238]]()};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[3016]]= function(){return this[_0x7ddb[1179]][_0x7ddb[1020]]* this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[255]]/ 2};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[2689]]= function(_0x9494x2){var _0x9494x3= new mxPoint(_0x9494x2[_0x7ddb[734]](),_0x9494x2[_0x7ddb[735]]()),_0x9494x4=this[_0x7ddb[3016]](),_0x9494x5=this[_0x7ddb[1179]][_0x7ddb[249]](),_0x9494x9=!1,_0x9494xa=!1;if(this[_0x7ddb[2996]]&& 0< _0x9494x4){var _0x9494x12=function(_0x9494x2){if(null!= _0x9494x2){var _0x9494x5=_0x9494x2[_0x7ddb[235]];Math[_0x7ddb[425]](_0x9494x3[_0x7ddb[235]]- _0x9494x5)< _0x9494x4&& (_0x9494x3[_0x7ddb[235]]= _0x9494x5,_0x9494x9= !0);_0x9494x2= _0x9494x2[_0x7ddb[236]];Math[_0x7ddb[425]](_0x9494x3[_0x7ddb[236]]- _0x9494x2)< _0x9494x4&& (_0x9494x3[_0x7ddb[236]]= _0x9494x2,_0x9494xa= !0)}},_0x9494x13=function(_0x9494x2){null!= _0x9494x2&& _0x9494x12[_0x7ddb[239]](this, new mxPoint(_0x9494x5[_0x7ddb[2230]](_0x9494x2),_0x9494x5[_0x7ddb[2228]](_0x9494x2)))};_0x9494x13[_0x7ddb[239]](this,this[_0x7ddb[724]][_0x7ddb[2089]](!0));_0x9494x13[_0x7ddb[239]](this,this[_0x7ddb[724]][_0x7ddb[2089]](!1));if(null!= this[_0x7ddb[2997]]){for(_0x9494x13= 0;_0x9494x13< this[_0x7ddb[2997]];_0x9494x13++){_0x9494x13!= this[_0x7ddb[1983]]&& _0x9494x12[_0x7ddb[239]](this,this[_0x7ddb[2997]][_0x9494x13])}}};this[_0x7ddb[1179]][_0x7ddb[1018]](_0x9494x2[_0x7ddb[727]]())&& (_0x9494x2= _0x9494x5[_0x7ddb[255]],_0x9494x13= _0x9494x5[_0x7ddb[513]],_0x9494x9|| (_0x9494x3[_0x7ddb[235]]= (this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x3[_0x7ddb[235]]/ _0x9494x2- _0x9494x13[_0x7ddb[235]])+ _0x9494x13[_0x7ddb[235]])* _0x9494x2),_0x9494xa|| (_0x9494x3[_0x7ddb[236]]= (this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x3[_0x7ddb[236]]/ _0x9494x2- _0x9494x13[_0x7ddb[236]])+ _0x9494x13[_0x7ddb[236]])* _0x9494x2));return _0x9494x3};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[3017]]= function(_0x9494x2){this[_0x7ddb[2886]][_0x7ddb[2729]](_0x9494x2,this[_0x7ddb[729]]);this[_0x7ddb[2885]][_0x7ddb[2871]](_0x9494x2);_0x9494x2= this[_0x7ddb[2885]][_0x7ddb[2868]]();var _0x9494x3=null;null!= this[_0x7ddb[2886]][_0x7ddb[2919]]&& null!= this[_0x7ddb[2886]][_0x7ddb[2920]]&& this[_0x7ddb[2885]][_0x7ddb[862]]();null!= _0x9494x2?_0x9494x3= _0x9494x2:null!= this[_0x7ddb[2886]][_0x7ddb[2920]]&& null!= this[_0x7ddb[2886]][_0x7ddb[2919]]&& (_0x9494x3= this[_0x7ddb[2886]][_0x7ddb[2919]]);return _0x9494x3};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[3018]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[1179]][_0x7ddb[1198]](this[_0x7ddb[724]][_0x7ddb[246]]),_0x9494x3=null!= _0x9494x3[_0x7ddb[1525]]?_0x9494x3[_0x7ddb[1525]][_0x7ddb[1853]]():null;!this[_0x7ddb[729]]&& !this[_0x7ddb[3013]]?(this[_0x7ddb[2196]](_0x9494x2,!1),null== _0x9494x3?_0x9494x3= [_0x9494x2]:_0x9494x3[this[_0x7ddb[1983]]- 1]= _0x9494x2):this[_0x7ddb[1179]][_0x7ddb[2401]]&& (_0x9494x3= null);return _0x9494x3};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[3019]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=this[_0x7ddb[729]]?_0x9494x4:this[_0x7ddb[724]][_0x7ddb[2089]](!0),_0x9494x9=this[_0x7ddb[3013]]?_0x9494x4:this[_0x7ddb[724]][_0x7ddb[2089]](!1),_0x9494xa=this[_0x7ddb[1179]][_0x7ddb[2288]](_0x9494x2,_0x9494x5,!0),_0x9494x12=this[_0x7ddb[1179]][_0x7ddb[2288]](_0x9494x2,_0x9494x9,!1),_0x9494x13=this[_0x7ddb[2886]][_0x7ddb[2920]];null== _0x9494x13&& (_0x9494x13= new mxConnectionConstraint);this[_0x7ddb[729]]?_0x9494xa= _0x9494x13:this[_0x7ddb[3013]]&& (_0x9494x12= _0x9494x13);(!this[_0x7ddb[729]]|| null!= _0x9494x5) && _0x9494x2[_0x7ddb[441]][_0x7ddb[2289]](_0x9494x2,_0x9494x5,!0,_0x9494xa);(!this[_0x7ddb[3013]]|| null!= _0x9494x9) && _0x9494x2[_0x7ddb[441]][_0x7ddb[2289]](_0x9494x2,_0x9494x9,!1,_0x9494x12);if((this[_0x7ddb[729]]|| this[_0x7ddb[3013]])&& null== _0x9494x4){_0x9494x2[_0x7ddb[2088]](_0x9494x3,this[_0x7ddb[729]]),null== this[_0x7ddb[2885]][_0x7ddb[2869]]()&& (this[_0x7ddb[267]]= this[_0x7ddb[1179]][_0x7ddb[2406]]?null:_0x7ddb[110])};_0x9494x2[_0x7ddb[441]][_0x7ddb[2282]](_0x9494x2,this[_0x7ddb[1525]],_0x9494x5,_0x9494x9);_0x9494x2[_0x7ddb[441]][_0x7ddb[2283]](_0x9494x2,_0x9494x5,_0x9494x9)};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[788]]= function(_0x9494x2,_0x9494x3){if(null!= this[_0x7ddb[1983]]&& null!= this[_0x7ddb[2885]]){var _0x9494x4=this[_0x7ddb[2689]](_0x9494x3);if(this[_0x7ddb[3014]]){this[_0x7ddb[685]][_0x7ddb[235]]= _0x9494x4[_0x7ddb[235]],this[_0x7ddb[685]][_0x7ddb[236]]= _0x9494x4[_0x7ddb[236]]}else {this[_0x7ddb[1525]]= this[_0x7ddb[3018]](_0x9494x4);var _0x9494x5=this[_0x7ddb[729]]|| this[_0x7ddb[3013]]?this[_0x7ddb[3017]](_0x9494x3):null,_0x9494x9=this[_0x7ddb[3015]](_0x9494x4,null!= _0x9494x5?_0x9494x5[_0x7ddb[246]]:null);this[_0x7ddb[3019]](_0x9494x9,_0x9494x4,_0x9494x5);this[_0x7ddb[3020]](null== this[_0x7ddb[267]]?this[_0x7ddb[2885]][_0x7ddb[2853]]:this[_0x7ddb[2885]][_0x7ddb[2855]]);this[_0x7ddb[2997]]= _0x9494x9[_0x7ddb[439]];this[_0x7ddb[1124]]= !0};this[_0x7ddb[2932]]();mxEvent[_0x7ddb[722]](_0x9494x3[_0x7ddb[727]]());_0x9494x3[_0x7ddb[722]]()}else {mxClient[_0x7ddb[80]]&& null!= this[_0x7ddb[2986]](_0x9494x3)&& _0x9494x3[_0x7ddb[722]](!1)}};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[789]]= function(_0x9494x2,_0x9494x3){if(null!= this[_0x7ddb[1983]]&& null!= this[_0x7ddb[2885]]){var _0x9494x4=this[_0x7ddb[724]][_0x7ddb[246]];if(_0x9494x3[_0x7ddb[730]]()!= this[_0x7ddb[2739]]|| _0x9494x3[_0x7ddb[732]]()!= this[_0x7ddb[2740]]){if(null!= this[_0x7ddb[267]]){0< this[_0x7ddb[267]][_0x7ddb[67]]&& this[_0x7ddb[1179]][_0x7ddb[2580]](this[_0x7ddb[267]])}else {if(this[_0x7ddb[3014]]){this[_0x7ddb[3021]](this[_0x7ddb[724]],this[_0x7ddb[685]][_0x7ddb[235]],this[_0x7ddb[685]][_0x7ddb[236]])}else {if(this[_0x7ddb[729]]|| this[_0x7ddb[3013]]){var _0x9494x5=null;null!= this[_0x7ddb[2886]][_0x7ddb[2920]]&& null!= this[_0x7ddb[2886]][_0x7ddb[2919]]&& (_0x9494x5= this[_0x7ddb[2886]][_0x7ddb[2919]][_0x7ddb[246]]);null== _0x9494x5&& this[_0x7ddb[2885]][_0x7ddb[2867]]()&& (_0x9494x5= this[_0x7ddb[2885]][_0x7ddb[2861]][_0x7ddb[246]]);if(null!= _0x9494x5){_0x9494x4= this[_0x7ddb[807]](_0x9494x4,_0x9494x5,this[_0x7ddb[729]],this[_0x7ddb[1179]][_0x7ddb[2574]](_0x9494x3[_0x7ddb[727]]())&& this[_0x7ddb[2797]]&& this[_0x7ddb[1179]][_0x7ddb[2617]](),_0x9494x3)}else {if(this[_0x7ddb[1179]][_0x7ddb[2530]]()){_0x9494x5= this[_0x7ddb[2997]][this[_0x7ddb[729]]?0:this[_0x7ddb[2997]][_0x7ddb[67]]- 1];_0x9494x5[_0x7ddb[235]]= _0x9494x5[_0x7ddb[235]]/ this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[255]]- this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[513]][_0x7ddb[235]];_0x9494x5[_0x7ddb[236]]= _0x9494x5[_0x7ddb[236]]/ this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[255]]- this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[513]][_0x7ddb[236]];var _0x9494x9=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[248]](this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[1197]](_0x9494x4));null!= _0x9494x9&& (_0x9494x5[_0x7ddb[235]]-= _0x9494x9[_0x7ddb[2078]][_0x7ddb[235]],_0x9494x5[_0x7ddb[236]]-= _0x9494x9[_0x7ddb[2078]][_0x7ddb[236]]);_0x9494x5[_0x7ddb[235]]-= this[_0x7ddb[1179]][_0x7ddb[1136]]/ this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[255]];_0x9494x5[_0x7ddb[236]]-= this[_0x7ddb[1179]][_0x7ddb[1137]]/ this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[255]];this[_0x7ddb[3022]](_0x9494x4,_0x9494x5,this[_0x7ddb[729]])}}}else {this[_0x7ddb[1124]]?this[_0x7ddb[3023]](_0x9494x4,this[_0x7ddb[1525]]):(this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[2263]](this[_0x7ddb[724]][_0x7ddb[246]]),this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[2259]](this[_0x7ddb[724]][_0x7ddb[246]]))}}}};null!= this[_0x7ddb[2885]]&& (this[_0x7ddb[862]](),_0x9494x4!= this[_0x7ddb[724]][_0x7ddb[246]]&& this[_0x7ddb[1179]][_0x7ddb[2450]](_0x9494x4));_0x9494x3[_0x7ddb[722]]()}};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[862]]= function(){this[_0x7ddb[1525]]= this[_0x7ddb[685]]= this[_0x7ddb[1983]]= this[_0x7ddb[267]]= null;this[_0x7ddb[3013]]= this[_0x7ddb[729]]= this[_0x7ddb[3014]]= this[_0x7ddb[1124]]= !1;this[_0x7ddb[2885]][_0x7ddb[862]]();this[_0x7ddb[2886]][_0x7ddb[862]]();this[_0x7ddb[3020]](mxConstants.EDGE_SELECTION_COLOR);this[_0x7ddb[258]]()};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[3020]]= function(_0x9494x2){null!= this[_0x7ddb[253]]&& (this[_0x7ddb[253]][_0x7ddb[1336]]= _0x9494x2)};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[2196]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[518]](),_0x9494x5=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[512]]();_0x9494x3&& (_0x9494x2[_0x7ddb[235]]= this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x2[_0x7ddb[235]]),_0x9494x2[_0x7ddb[236]]= this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x2[_0x7ddb[236]]));_0x9494x2[_0x7ddb[235]]= Math[_0x7ddb[488]](_0x9494x2[_0x7ddb[235]]/ _0x9494x4- _0x9494x5[_0x7ddb[235]]);_0x9494x2[_0x7ddb[236]]= Math[_0x7ddb[488]](_0x9494x2[_0x7ddb[236]]/ _0x9494x4- _0x9494x5[_0x7ddb[236]]);_0x9494x4= this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[248]](this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[1197]](this[_0x7ddb[724]][_0x7ddb[246]]));null!= _0x9494x4&& (_0x9494x2[_0x7ddb[235]]-= _0x9494x4[_0x7ddb[2078]][_0x7ddb[235]],_0x9494x2[_0x7ddb[236]]-= _0x9494x4[_0x7ddb[2078]][_0x7ddb[236]]);return _0x9494x2};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[3021]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x9=_0x9494x5[_0x7ddb[1721]](_0x9494x2[_0x7ddb[246]]);if(null!= _0x9494x9){var _0x9494x9=_0x9494x9[_0x7ddb[238]](),_0x9494xa=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[2308]](_0x9494x2,_0x9494x3,_0x9494x4);_0x9494x9[_0x7ddb[235]]= _0x9494xa[_0x7ddb[235]];_0x9494x9[_0x7ddb[236]]= _0x9494xa[_0x7ddb[236]];var _0x9494x12=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[255]];_0x9494x9[_0x7ddb[1368]]= new mxPoint(0,0);_0x9494xa= this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[245]](_0x9494x2,_0x9494x9);_0x9494x9[_0x7ddb[1368]]= new mxPoint((_0x9494x3- _0x9494xa[_0x7ddb[235]])/ _0x9494x12,(_0x9494x4- _0x9494xa[_0x7ddb[236]])/ _0x9494x12);_0x9494x5[_0x7ddb[1724]](_0x9494x2[_0x7ddb[246]],_0x9494x9)}};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[807]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x9494x9= this[_0x7ddb[1179]][_0x7ddb[502]]();var _0x9494xa=_0x9494x9[_0x7ddb[1197]](_0x9494x2);_0x9494x9[_0x7ddb[473]]();try{if(_0x9494x5){var _0x9494x12=_0x9494x2[_0x7ddb[238]]();_0x9494x9[_0x7ddb[99]](_0x9494xa,_0x9494x12,_0x9494x9[_0x7ddb[262]](_0x9494xa));var _0x9494x13=_0x9494x9[_0x7ddb[1709]](_0x9494x2,!_0x9494x4);this[_0x7ddb[1179]][_0x7ddb[851]](_0x9494x12,_0x9494x13,!_0x9494x4);_0x9494x2= _0x9494x12};var _0x9494x14=this[_0x7ddb[2886]][_0x7ddb[2920]];null== _0x9494x14&& (_0x9494x14= new mxConnectionConstraint);this[_0x7ddb[1179]][_0x7ddb[851]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x14)}finally{_0x9494x9[_0x7ddb[476]]()};return _0x9494x2};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[3022]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x9=_0x9494x5[_0x7ddb[1721]](_0x9494x2);if(null!= _0x9494x9){_0x9494x5[_0x7ddb[473]]();try{_0x9494x9= _0x9494x9[_0x7ddb[238]](),_0x9494x9[_0x7ddb[2007]](_0x9494x3,_0x9494x4),_0x9494x5[_0x7ddb[1724]](_0x9494x2,_0x9494x9),this[_0x7ddb[1179]][_0x7ddb[851]](_0x9494x2,null,_0x9494x4, new mxConnectionConstraint)}finally{_0x9494x5[_0x7ddb[476]]()}}};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[3023]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x5=_0x9494x4[_0x7ddb[1721]](_0x9494x2);null!= _0x9494x5&& (_0x9494x5= _0x9494x5[_0x7ddb[238]](),_0x9494x5[_0x7ddb[1525]]= _0x9494x3,_0x9494x4[_0x7ddb[1724]](_0x9494x2,_0x9494x5))};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[3000]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=mxUtils[_0x7ddb[2196]](this[_0x7ddb[1179]][_0x7ddb[526]],mxEvent[_0x7ddb[731]](_0x9494x3),mxEvent[_0x7ddb[733]](_0x9494x3)),_0x9494x5=this[_0x7ddb[1179]][_0x7ddb[1018]](_0x9494x3);this[_0x7ddb[2196]](_0x9494x4,_0x9494x5);this[_0x7ddb[3024]](_0x9494x2,_0x9494x4[_0x7ddb[235]],_0x9494x4[_0x7ddb[236]]);mxEvent[_0x7ddb[722]](_0x9494x3)};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[3024]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=this[_0x7ddb[1179]][_0x7ddb[1198]](_0x9494x2[_0x7ddb[246]]);_0x9494x3= new mxPoint(_0x9494x3,_0x9494x4);if(null!= _0x9494x5){_0x9494x5= _0x9494x5[_0x7ddb[238]]();_0x9494x4= this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[513]];var _0x9494x9=this[_0x7ddb[1179]][_0x7ddb[441]][_0x7ddb[255]];_0x9494x4= mxUtils[_0x7ddb[3025]](_0x9494x2,(_0x9494x3[_0x7ddb[235]]+ _0x9494x4[_0x7ddb[235]])* _0x9494x9,(_0x9494x3[_0x7ddb[236]]+ _0x9494x4[_0x7ddb[236]])* _0x9494x9);null== _0x9494x5[_0x7ddb[1525]]?_0x9494x5[_0x7ddb[1525]]= [_0x9494x3]:_0x9494x5[_0x7ddb[1525]][_0x7ddb[300]](_0x9494x4,0,_0x9494x3);this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[1724]](_0x9494x2[_0x7ddb[246]],_0x9494x5);this[_0x7ddb[515]]();this[_0x7ddb[176]]()}};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[3012]]= function(_0x9494x2,_0x9494x3){if(0< _0x9494x3&& _0x9494x3< this[_0x7ddb[2997]][_0x7ddb[67]]- 1){var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[1198]](this[_0x7ddb[724]][_0x7ddb[246]]);null!= _0x9494x4&& null!= _0x9494x4[_0x7ddb[1525]]&& (_0x9494x4= _0x9494x4[_0x7ddb[238]](),_0x9494x4[_0x7ddb[1525]][_0x7ddb[300]](_0x9494x3- 1,1),this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[1724]](_0x9494x2[_0x7ddb[246]],_0x9494x4),this[_0x7ddb[515]](),this[_0x7ddb[176]]())}};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[3026]]= function(_0x9494x2){_0x9494x2= 0== _0x9494x2;var _0x9494x3=this[_0x7ddb[724]][_0x7ddb[246]],_0x9494x4=this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[1709]](_0x9494x3,_0x9494x2),_0x9494x5=mxConstants[_0x7ddb[2984]];null!= _0x9494x4&& !this[_0x7ddb[1179]][_0x7ddb[2551]](_0x9494x3,_0x9494x4,_0x9494x2)|| null== _0x9494x4&& !this[_0x7ddb[1179]][_0x7ddb[2661]](_0x9494x3,_0x9494x2)?_0x9494x5= mxConstants[_0x7ddb[3027]]:null!= _0x9494x4&& this[_0x7ddb[1179]][_0x7ddb[2551]](_0x9494x3,_0x9494x4,_0x9494x2)&& (_0x9494x5= mxConstants[_0x7ddb[3028]]);return _0x9494x5};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[258]]= function(){this[_0x7ddb[2997]]= this[_0x7ddb[724]][_0x7ddb[439]][_0x7ddb[1853]]();var _0x9494x2=this[_0x7ddb[724]][_0x7ddb[246]],_0x9494x3=mxConstants[_0x7ddb[3029]];this[_0x7ddb[685]]= new mxPoint(this[_0x7ddb[724]][_0x7ddb[2079]][_0x7ddb[235]],this[_0x7ddb[724]][_0x7ddb[2079]][_0x7ddb[236]]);this[_0x7ddb[2972]][_0x7ddb[1562]]= new mxRectangle(Math[_0x7ddb[488]](this[_0x7ddb[685]][_0x7ddb[235]]- _0x9494x3/ 2),Math[_0x7ddb[488]](this[_0x7ddb[685]][_0x7ddb[236]]- _0x9494x3/ 2),_0x9494x3,_0x9494x3);this[_0x7ddb[2972]][_0x7ddb[258]]();_0x9494x3= this[_0x7ddb[1179]][_0x7ddb[2183]](_0x9494x2);null!= _0x9494x3&& 0< _0x9494x3[_0x7ddb[67]]&& this[_0x7ddb[1179]][_0x7ddb[2628]](_0x9494x2)?this[_0x7ddb[2972]][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[189]:this[_0x7ddb[2972]][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[188];if(null!= this[_0x7ddb[2994]]&& 0< this[_0x7ddb[2994]][_0x7ddb[67]]){var _0x9494x4=this[_0x7ddb[2997]][_0x7ddb[67]]- 1,_0x9494x2=this[_0x7ddb[2997]][0],_0x9494x5=this[_0x7ddb[2997]][0][_0x7ddb[236]],_0x9494x3=this[_0x7ddb[2994]][0][_0x7ddb[1562]];this[_0x7ddb[2994]][0][_0x7ddb[1562]]= new mxRectangle(Math[_0x7ddb[488]](this[_0x7ddb[2997]][0][_0x7ddb[235]]- _0x9494x3[_0x7ddb[117]]/ 2),Math[_0x7ddb[488]](_0x9494x5- _0x9494x3[_0x7ddb[119]]/ 2),_0x9494x3[_0x7ddb[117]],_0x9494x3[_0x7ddb[119]]);this[_0x7ddb[2994]][0][_0x7ddb[1334]]= this[_0x7ddb[3026]](0);this[_0x7ddb[2994]][0][_0x7ddb[258]]();var _0x9494x5=this[_0x7ddb[2997]][_0x9494x4],_0x9494x9=this[_0x7ddb[2997]][_0x9494x4][_0x7ddb[235]],_0x9494x4=this[_0x7ddb[2997]][_0x9494x4][_0x7ddb[236]],_0x9494xa=this[_0x7ddb[2994]][_0x7ddb[67]]- 1,_0x9494x3=this[_0x7ddb[2994]][_0x9494xa][_0x7ddb[1562]];this[_0x7ddb[2994]][_0x9494xa][_0x7ddb[1562]]= new mxRectangle(Math[_0x7ddb[488]](_0x9494x9- _0x9494x3[_0x7ddb[117]]/ 2),Math[_0x7ddb[488]](_0x9494x4- _0x9494x3[_0x7ddb[119]]/ 2),_0x9494x3[_0x7ddb[117]],_0x9494x3[_0x7ddb[119]]);this[_0x7ddb[2994]][_0x9494xa][_0x7ddb[1334]]= this[_0x7ddb[3026]](_0x9494xa);this[_0x7ddb[2994]][_0x9494xa][_0x7ddb[258]]();this[_0x7ddb[3030]](_0x9494x2,_0x9494x5)};this[_0x7ddb[2932]]()};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[3030]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[1721]](this[_0x7ddb[724]][_0x7ddb[246]])[_0x7ddb[1525]];if(null!= _0x9494x4){null== this[_0x7ddb[1525]]&& (this[_0x7ddb[1525]]= []);for(var _0x9494x5=1;_0x9494x5< this[_0x7ddb[2994]][_0x7ddb[67]]- 1;_0x9494x5++){if(null!= this[_0x7ddb[2994]][_0x9494x5]){if(null!= this[_0x7ddb[2997]][_0x9494x5]){var _0x9494x9=this[_0x7ddb[2997]][_0x9494x5][_0x7ddb[235]],_0x9494xa=this[_0x7ddb[2997]][_0x9494x5][_0x7ddb[236]],_0x9494x12=this[_0x7ddb[2994]][_0x9494x5][_0x7ddb[1562]];this[_0x7ddb[2994]][_0x9494x5][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[189];this[_0x7ddb[2994]][_0x9494x5][_0x7ddb[1562]]= new mxRectangle(Math[_0x7ddb[488]](_0x9494x9- _0x9494x12[_0x7ddb[117]]/ 2),Math[_0x7ddb[488]](_0x9494xa- _0x9494x12[_0x7ddb[119]]/ 2),_0x9494x12[_0x7ddb[117]],_0x9494x12[_0x7ddb[119]]);this[_0x7ddb[2994]][_0x9494x5][_0x7ddb[258]]();this[_0x7ddb[1525]][_0x9494x5- 1]= _0x9494x4[_0x9494x5- 1]}else {this[_0x7ddb[2994]][_0x9494x5][_0x7ddb[515]](),this[_0x7ddb[2994]][_0x9494x5]= null}}}}};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[2932]]= function(){if(this[_0x7ddb[3014]]){var _0x9494x2=mxConstants[_0x7ddb[3029]],_0x9494x2= new mxRectangle(Math[_0x7ddb[488]](this[_0x7ddb[685]][_0x7ddb[235]]- _0x9494x2/ 2),Math[_0x7ddb[488]](this[_0x7ddb[685]][_0x7ddb[236]]- _0x9494x2/ 2),_0x9494x2,_0x9494x2);this[_0x7ddb[2972]][_0x7ddb[1562]]= _0x9494x2;this[_0x7ddb[2972]][_0x7ddb[258]]()}else {this[_0x7ddb[253]][_0x7ddb[1525]]= this[_0x7ddb[2997]],this[_0x7ddb[253]][_0x7ddb[258]]()}};mxEdgeHandler[_0x7ddb[202]][_0x7ddb[515]]= function(){null!= this[_0x7ddb[2885]]&& (this[_0x7ddb[2885]][_0x7ddb[515]](),this[_0x7ddb[2885]]= null);null!= this[_0x7ddb[253]]&& (this[_0x7ddb[253]][_0x7ddb[515]](),this[_0x7ddb[253]]= null);null!= this[_0x7ddb[2972]]&& (this[_0x7ddb[2972]][_0x7ddb[515]](),this[_0x7ddb[2972]]= null);null!= this[_0x7ddb[2886]]&& (this[_0x7ddb[2886]][_0x7ddb[515]](),this[_0x7ddb[2886]]= null);if(null!= this[_0x7ddb[2994]]){for(var _0x9494x2=0;_0x9494x2< this[_0x7ddb[2994]][_0x7ddb[67]];_0x9494x2++){null!= this[_0x7ddb[2994]][_0x9494x2]&& (this[_0x7ddb[2994]][_0x9494x2][_0x7ddb[515]](),this[_0x7ddb[2994]][_0x9494x2]= null)}}};function mxElbowEdgeHandler(_0x9494x2){mxEdgeHandler[_0x7ddb[239]](this,_0x9494x2)}mxUtils[_0x7ddb[1284]](mxElbowEdgeHandler,mxEdgeHandler);mxElbowEdgeHandler[_0x7ddb[202]]= new mxEdgeHandler;mxElbowEdgeHandler[_0x7ddb[202]][_0x7ddb[196]]= mxElbowEdgeHandler;mxElbowEdgeHandler[_0x7ddb[202]][_0x7ddb[3031]]= !0;mxElbowEdgeHandler[_0x7ddb[202]][_0x7ddb[3032]]= _0x7ddb[130]!= mxClient[_0x7ddb[90]]?_0x7ddb[3033]:_0x7ddb[110];mxElbowEdgeHandler[_0x7ddb[202]][_0x7ddb[3001]]= function(){var _0x9494x2=[],_0x9494x3=this[_0x7ddb[3009]](0);this[_0x7ddb[3002]](_0x9494x3);_0x9494x3[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[270]]= mxConstants[_0x7ddb[3011]];mxEvent[_0x7ddb[2733]](_0x9494x3[_0x7ddb[252]],this[_0x7ddb[1179]],this[_0x7ddb[724]]);_0x9494x2[_0x7ddb[207]](_0x9494x3);mxClient[_0x7ddb[754]]&& _0x9494x3[_0x7ddb[252]][_0x7ddb[57]](_0x7ddb[1377],_0x7ddb[130]);_0x9494x2[_0x7ddb[207]](this[_0x7ddb[3034]]());this[_0x7ddb[1525]][_0x7ddb[207]]( new mxPoint(0,0));_0x9494x3= this[_0x7ddb[3009]](2);this[_0x7ddb[3002]](_0x9494x3);_0x9494x3[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[270]]= mxConstants[_0x7ddb[3011]];mxEvent[_0x7ddb[2733]](_0x9494x3[_0x7ddb[252]],this[_0x7ddb[1179]],this[_0x7ddb[724]]);_0x9494x2[_0x7ddb[207]](_0x9494x3);mxClient[_0x7ddb[754]]&& _0x9494x3[_0x7ddb[252]][_0x7ddb[57]](_0x7ddb[1377],_0x7ddb[130]);return _0x9494x2};mxElbowEdgeHandler[_0x7ddb[202]][_0x7ddb[3034]]= function(){var _0x9494x2=this[_0x7ddb[3009]]();this[_0x7ddb[3002]](_0x9494x2);var _0x9494x3=this[_0x7ddb[3035]]();_0x9494x2[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[270]]= _0x9494x3;_0x9494x3= mxUtils[_0x7ddb[885]](this,function(_0x9494x2){!mxEvent[_0x7ddb[721]](_0x9494x2)&& this[_0x7ddb[3031]] && (this[_0x7ddb[1179]][_0x7ddb[854]](this[_0x7ddb[724]][_0x7ddb[246]],_0x9494x2),mxEvent[_0x7ddb[722]](_0x9494x2))});mxEvent[_0x7ddb[2733]](_0x9494x2[_0x7ddb[252]],this[_0x7ddb[1179]],this[_0x7ddb[724]],null,null,null,_0x9494x3);this[_0x7ddb[1179]][_0x7ddb[2662]](this[_0x7ddb[724]][_0x7ddb[246]])|| (_0x9494x2[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[495]]= _0x7ddb[130]);return _0x9494x2};mxElbowEdgeHandler[_0x7ddb[202]][_0x7ddb[3035]]= function(){return this[_0x7ddb[724]][_0x7ddb[124]][mxConstants[_0x7ddb[2294]]]== mxEdgeStyle[_0x7ddb[2570]]|| this[_0x7ddb[724]][_0x7ddb[124]][mxConstants[_0x7ddb[2294]]]== mxConstants[_0x7ddb[3036]]|| (this[_0x7ddb[724]][_0x7ddb[124]][mxConstants[_0x7ddb[2294]]]== mxEdgeStyle[_0x7ddb[2568]]|| this[_0x7ddb[724]][_0x7ddb[124]][mxConstants[_0x7ddb[2294]]]== mxConstants[_0x7ddb[3037]])&& this[_0x7ddb[724]][_0x7ddb[124]][mxConstants[_0x7ddb[2231]]]== mxConstants[_0x7ddb[2232]]?_0x7ddb[3038]:_0x7ddb[3039]};mxElbowEdgeHandler[_0x7ddb[202]][_0x7ddb[2597]]= function(_0x9494x2){var _0x9494x3=null;if(null!= this[_0x7ddb[2994]]&& null!= this[_0x7ddb[2994]][1]&& (_0x9494x2== this[_0x7ddb[2994]][1][_0x7ddb[252]]|| _0x9494x2[_0x7ddb[265]]== this[_0x7ddb[2994]][1][_0x7ddb[252]])){_0x9494x3= this[_0x7ddb[3032]],_0x9494x3= mxResources[_0x7ddb[203]](_0x9494x3)|| _0x9494x3};return _0x9494x3};mxElbowEdgeHandler[_0x7ddb[202]][_0x7ddb[2196]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[518]](),_0x9494x5=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[512]](),_0x9494x9=this[_0x7ddb[724]][_0x7ddb[2078]];_0x9494x3&& (_0x9494x2[_0x7ddb[235]]= this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x2[_0x7ddb[235]]),_0x9494x2[_0x7ddb[236]]= this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x2[_0x7ddb[236]]));_0x9494x2[_0x7ddb[235]]= Math[_0x7ddb[488]](_0x9494x2[_0x7ddb[235]]/ _0x9494x4- _0x9494x5[_0x7ddb[235]]- _0x9494x9[_0x7ddb[235]]);_0x9494x2[_0x7ddb[236]]= Math[_0x7ddb[488]](_0x9494x2[_0x7ddb[236]]/ _0x9494x4- _0x9494x5[_0x7ddb[236]]- _0x9494x9[_0x7ddb[236]])};mxElbowEdgeHandler[_0x7ddb[202]][_0x7ddb[3030]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[1721]](this[_0x7ddb[724]][_0x7ddb[246]])[_0x7ddb[1525]],_0x9494x4=null!= _0x9494x4?_0x9494x4[0]:null,_0x9494x4=null== _0x9494x4? new mxPoint(_0x9494x2[_0x7ddb[235]]+ (_0x9494x3[_0x7ddb[235]]- _0x9494x2[_0x7ddb[235]])/ 2,_0x9494x2[_0x7ddb[236]]+ (_0x9494x3[_0x7ddb[236]]- _0x9494x2[_0x7ddb[236]])/ 2): new mxPoint(this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[255]]* (_0x9494x4[_0x7ddb[235]]+ this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[513]][_0x7ddb[235]]+ this[_0x7ddb[724]][_0x7ddb[2078]][_0x7ddb[235]]),this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[255]]* (_0x9494x4[_0x7ddb[236]]+ this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[513]][_0x7ddb[236]]+ this[_0x7ddb[724]][_0x7ddb[2078]][_0x7ddb[236]])),_0x9494x5=this[_0x7ddb[2994]][1][_0x7ddb[1562]],_0x9494x9=_0x9494x5[_0x7ddb[117]],_0x9494x5=_0x9494x5[_0x7ddb[119]];null== this[_0x7ddb[2959]]&& (_0x9494x5= _0x9494x9= mxConstants[_0x7ddb[2974]]);var _0x9494xa= new mxRectangle(Math[_0x7ddb[488]](_0x9494x4[_0x7ddb[235]]- _0x9494x9/ 2),Math[_0x7ddb[488]](_0x9494x4[_0x7ddb[236]]- _0x9494x5/ 2),_0x9494x9,_0x9494x5);null== this[_0x7ddb[2959]]&& (_0x7ddb[188]!= this[_0x7ddb[2972]][_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[187]]&& mxUtils[_0x7ddb[1825]](_0x9494xa,this[_0x7ddb[2972]][_0x7ddb[1562]]))&& (_0x9494x9+= 3,_0x9494x5+= 3,_0x9494xa= new mxRectangle(Math[_0x7ddb[488]](_0x9494x4[_0x7ddb[235]]- _0x9494x9/ 2),Math[_0x7ddb[488]](_0x9494x4[_0x7ddb[236]]- _0x9494x5/ 2),_0x9494x9,_0x9494x5));this[_0x7ddb[2994]][1][_0x7ddb[1562]]= _0x9494xa;this[_0x7ddb[2994]][1][_0x7ddb[258]]()};function mxEdgeSegmentHandler(_0x9494x2){mxEdgeHandler[_0x7ddb[239]](this,_0x9494x2)}mxUtils[_0x7ddb[1284]](mxEdgeSegmentHandler,mxEdgeHandler);mxEdgeSegmentHandler[_0x7ddb[202]]= new mxElbowEdgeHandler;mxEdgeSegmentHandler[_0x7ddb[202]][_0x7ddb[196]]= mxEdgeSegmentHandler;mxEdgeSegmentHandler[_0x7ddb[202]][_0x7ddb[3018]]= function(_0x9494x2){if(this[_0x7ddb[729]]|| this[_0x7ddb[3013]]){return mxElbowEdgeHandler[_0x7ddb[202]][_0x7ddb[3018]][_0x7ddb[183]](this,arguments)};this[_0x7ddb[2196]](_0x9494x2,!1);var _0x9494x3=this[_0x7ddb[724]][_0x7ddb[439]],_0x9494x4=_0x9494x3[0][_0x7ddb[238]]();this[_0x7ddb[2196]](_0x9494x4,!1);for(var _0x9494x5=[],_0x9494x9=1;_0x9494x9< _0x9494x3[_0x7ddb[67]];_0x9494x9++){var _0x9494xa=_0x9494x3[_0x9494x9][_0x7ddb[238]]();this[_0x7ddb[2196]](_0x9494xa,!1);_0x9494x9== this[_0x7ddb[1983]]&& (_0x9494x4[_0x7ddb[235]]== _0x9494xa[_0x7ddb[235]]?(_0x9494x4[_0x7ddb[235]]= _0x9494x2[_0x7ddb[235]],_0x9494xa[_0x7ddb[235]]= _0x9494x2[_0x7ddb[235]]):(_0x9494x4[_0x7ddb[236]]= _0x9494x2[_0x7ddb[236]],_0x9494xa[_0x7ddb[236]]= _0x9494x2[_0x7ddb[236]]));_0x9494x9< _0x9494x3[_0x7ddb[67]]- 1&& _0x9494x5[_0x7ddb[207]](_0x9494xa);_0x9494x4= _0x9494xa};if(1== _0x9494x5[_0x7ddb[67]]){if(_0x9494x4= this[_0x7ddb[724]][_0x7ddb[441]],_0x9494x9= this[_0x7ddb[724]][_0x7ddb[2089]](!0),_0x9494xa= this[_0x7ddb[724]][_0x7ddb[2089]](!1),null!= _0x9494xa& null!= _0x9494x9){var _0x9494x12=this[_0x7ddb[724]][_0x7ddb[2078]][_0x7ddb[235]],_0x9494x13=this[_0x7ddb[724]][_0x7ddb[2078]][_0x7ddb[236]];mxUtils[_0x7ddb[442]](_0x9494xa,_0x9494x5[0][_0x7ddb[235]]+ _0x9494x12,_0x9494x5[0][_0x7ddb[236]]+ _0x9494x13)?_0x9494x3[1][_0x7ddb[236]]== _0x9494x3[2][_0x7ddb[236]]?_0x9494x5[0][_0x7ddb[236]]= _0x9494x4[_0x7ddb[2228]](_0x9494x9)- _0x9494x13:_0x9494x5[0][_0x7ddb[235]]= _0x9494x4[_0x7ddb[2230]](_0x9494x9)- _0x9494x12:mxUtils[_0x7ddb[442]](_0x9494x9,_0x9494x5[0][_0x7ddb[235]]+ _0x9494x12,_0x9494x5[0][_0x7ddb[236]]+ _0x9494x13)&& (_0x9494x3[1][_0x7ddb[236]]== _0x9494x3[0][_0x7ddb[236]]?_0x9494x5[0][_0x7ddb[236]]= _0x9494x4[_0x7ddb[2228]](_0x9494xa)- _0x9494x13:_0x9494x5[0][_0x7ddb[235]]= _0x9494x4[_0x7ddb[2230]](_0x9494xa)- _0x9494x12)}}else {0== _0x9494x5[_0x7ddb[67]]&& (_0x9494x5= [_0x9494x2])};return _0x9494x5};mxEdgeSegmentHandler[_0x7ddb[202]][_0x7ddb[3001]]= function(){var _0x9494x2=[],_0x9494x3=this[_0x7ddb[3009]](0);this[_0x7ddb[3002]](_0x9494x3);_0x9494x3[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[270]]= mxConstants[_0x7ddb[3011]];mxEvent[_0x7ddb[2733]](_0x9494x3[_0x7ddb[252]],this[_0x7ddb[1179]],this[_0x7ddb[724]]);_0x9494x2[_0x7ddb[207]](_0x9494x3);mxClient[_0x7ddb[754]]&& _0x9494x3[_0x7ddb[252]][_0x7ddb[57]](_0x7ddb[1377],_0x7ddb[130]);var _0x9494x4=this[_0x7ddb[724]][_0x7ddb[439]];if(this[_0x7ddb[1179]][_0x7ddb[2662]](this[_0x7ddb[724]][_0x7ddb[246]])){null== this[_0x7ddb[1525]]&& (this[_0x7ddb[1525]]= []);for(var _0x9494x5=0;_0x9494x5< _0x9494x4[_0x7ddb[67]]- 1;_0x9494x5++){_0x9494x3= this[_0x7ddb[3034]](),_0x9494x2[_0x7ddb[207]](_0x9494x3),_0x9494x3[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[270]]= 0== _0x9494x4[_0x9494x5][_0x7ddb[235]]- _0x9494x4[_0x9494x5+ 1][_0x7ddb[235]]?_0x7ddb[3039]:_0x7ddb[3038],this[_0x7ddb[1525]][_0x7ddb[207]]( new mxPoint(0,0)),mxClient[_0x7ddb[754]]&& _0x9494x3[_0x7ddb[252]][_0x7ddb[57]](_0x7ddb[1377],_0x7ddb[130])}};_0x9494x3= this[_0x7ddb[3009]](_0x9494x4[_0x7ddb[67]]);this[_0x7ddb[3002]](_0x9494x3);_0x9494x3[_0x7ddb[252]][_0x7ddb[124]][_0x7ddb[270]]= mxConstants[_0x7ddb[3011]];mxEvent[_0x7ddb[2733]](_0x9494x3[_0x7ddb[252]],this[_0x7ddb[1179]],this[_0x7ddb[724]]);_0x9494x2[_0x7ddb[207]](_0x9494x3);mxClient[_0x7ddb[754]]&& _0x9494x3[_0x7ddb[252]][_0x7ddb[57]](_0x7ddb[1377],_0x7ddb[130]);return _0x9494x2};mxEdgeSegmentHandler[_0x7ddb[202]][_0x7ddb[258]]= function(){this[_0x7ddb[802]]();mxEdgeHandler[_0x7ddb[202]][_0x7ddb[258]][_0x7ddb[183]](this,arguments)};mxEdgeSegmentHandler[_0x7ddb[202]][_0x7ddb[802]]= function(){if(null!= this[_0x7ddb[2994]]){for(var _0x9494x2=0;_0x9494x2< this[_0x7ddb[2994]][_0x7ddb[67]];_0x9494x2++){null!= this[_0x7ddb[2994]][_0x9494x2]&& (this[_0x7ddb[2994]][_0x9494x2][_0x7ddb[515]](),this[_0x7ddb[2994]][_0x9494x2]= null)};this[_0x7ddb[2994]]= this[_0x7ddb[3001]]()}};mxEdgeSegmentHandler[_0x7ddb[202]][_0x7ddb[3030]]= function(_0x9494x2,_0x9494x3){if(this[_0x7ddb[1179]][_0x7ddb[2662]](this[_0x7ddb[724]][_0x7ddb[246]])){var _0x9494x4=mxConstants[_0x7ddb[2974]],_0x9494x5=this[_0x7ddb[724]][_0x7ddb[439]];if(null!= _0x9494x5&& 1< _0x9494x5[_0x7ddb[67]]){for(var _0x9494x9=0;_0x9494x9< this[_0x7ddb[724]][_0x7ddb[439]][_0x7ddb[67]]- 1;_0x9494x9++){if(null!= this[_0x7ddb[2994]][_0x9494x9+ 1]){_0x9494x2= _0x9494x5[_0x9494x9];_0x9494x3= _0x9494x5[_0x9494x9+ 1];var _0x9494xa= new mxPoint(_0x9494x2[_0x7ddb[235]]+ (_0x9494x3[_0x7ddb[235]]- _0x9494x2[_0x7ddb[235]])/ 2,_0x9494x2[_0x7ddb[236]]+ (_0x9494x3[_0x7ddb[236]]- _0x9494x2[_0x7ddb[236]])/ 2);this[_0x7ddb[2994]][_0x9494x9+ 1][_0x7ddb[1562]]= new mxRectangle(Math[_0x7ddb[488]](_0x9494xa[_0x7ddb[235]]- _0x9494x4/ 2),Math[_0x7ddb[488]](_0x9494xa[_0x7ddb[236]]- _0x9494x4/ 2),_0x9494x4,_0x9494x4);this[_0x7ddb[2994]][_0x9494x9+ 1][_0x7ddb[258]]()}}}}};mxEdgeSegmentHandler[_0x7ddb[202]][_0x7ddb[3023]]= function(_0x9494x2,_0x9494x3){_0x9494x3= [];var _0x9494x4=this[_0x7ddb[2997]];if(1< _0x9494x4[_0x7ddb[67]]){for(var _0x9494x5=_0x9494x4[0],_0x9494x9=_0x9494x4[1],_0x9494xa=2;_0x9494xa< _0x9494x4[_0x7ddb[67]];_0x9494xa++){var _0x9494x12=_0x9494x4[_0x9494xa];if((Math[_0x7ddb[488]](_0x9494x5[_0x7ddb[235]])!= Math[_0x7ddb[488]](_0x9494x9[_0x7ddb[235]])|| Math[_0x7ddb[488]](_0x9494x9[_0x7ddb[235]])!= Math[_0x7ddb[488]](_0x9494x12[_0x7ddb[235]]))&& (Math[_0x7ddb[488]](_0x9494x5[_0x7ddb[236]])!= Math[_0x7ddb[488]](_0x9494x9[_0x7ddb[236]])|| Math[_0x7ddb[488]](_0x9494x9[_0x7ddb[236]])!= Math[_0x7ddb[488]](_0x9494x12[_0x7ddb[236]]))){_0x9494x5= _0x9494x9,_0x9494x9= _0x9494x9[_0x7ddb[238]](),this[_0x7ddb[2196]](_0x9494x9,!1),_0x9494x3[_0x7ddb[207]](_0x9494x9)};_0x9494x9= _0x9494x12}};mxElbowEdgeHandler[_0x7ddb[202]][_0x7ddb[3023]][_0x7ddb[183]](this,arguments)};function mxKeyHandler(_0x9494x2,_0x9494x3){null!= _0x9494x2&& (this[_0x7ddb[1179]]= _0x9494x2,this[_0x7ddb[772]]= _0x9494x3|| document[_0x7ddb[158]],this[_0x7ddb[3040]]= [],this[_0x7ddb[3041]]= [],this[_0x7ddb[3042]]= [],this[_0x7ddb[3043]]= [],mxEvent[_0x7ddb[169]](this[_0x7ddb[772]],_0x7ddb[2123],mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[3044]](_0x9494x2)})),mxClient[_0x7ddb[80]]&& mxEvent[_0x7ddb[169]](window,_0x7ddb[2428],mxUtils[_0x7ddb[885]](this,function(){this[_0x7ddb[515]]()})))}mxKeyHandler[_0x7ddb[202]][_0x7ddb[1179]]= null;mxKeyHandler[_0x7ddb[202]][_0x7ddb[772]]= null;mxKeyHandler[_0x7ddb[202]][_0x7ddb[3040]]= null;mxKeyHandler[_0x7ddb[202]][_0x7ddb[3041]]= null;mxKeyHandler[_0x7ddb[202]][_0x7ddb[3042]]= null;mxKeyHandler[_0x7ddb[202]][_0x7ddb[3043]]= null;mxKeyHandler[_0x7ddb[202]][_0x7ddb[984]]= !0;mxKeyHandler[_0x7ddb[202]][_0x7ddb[994]]= function(){return this[_0x7ddb[984]]};mxKeyHandler[_0x7ddb[202]][_0x7ddb[995]]= function(_0x9494x2){this[_0x7ddb[984]]= _0x9494x2};mxKeyHandler[_0x7ddb[202]][_0x7ddb[3045]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[3040]][_0x9494x2]= _0x9494x3};mxKeyHandler[_0x7ddb[202]][_0x7ddb[3046]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[3041]][_0x9494x2]= _0x9494x3};mxKeyHandler[_0x7ddb[202]][_0x7ddb[3047]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[3042]][_0x9494x2]= _0x9494x3};mxKeyHandler[_0x7ddb[202]][_0x7ddb[3048]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[3043]][_0x9494x2]= _0x9494x3};mxKeyHandler[_0x7ddb[202]][_0x7ddb[775]]= function(_0x9494x2){return mxEvent[_0x7ddb[775]](_0x9494x2)};mxKeyHandler[_0x7ddb[202]][_0x7ddb[3049]]= function(_0x9494x2){return null!= _0x9494x2?this[_0x7ddb[775]](_0x9494x2)?mxEvent[_0x7ddb[774]](_0x9494x2)?this[_0x7ddb[3043]][_0x9494x2[_0x7ddb[2124]]]:this[_0x7ddb[3042]][_0x9494x2[_0x7ddb[2124]]]:mxEvent[_0x7ddb[774]](_0x9494x2)?this[_0x7ddb[3041]][_0x9494x2[_0x7ddb[2124]]]:this[_0x7ddb[3040]][_0x9494x2[_0x7ddb[2124]]]:null};mxKeyHandler[_0x7ddb[202]][_0x7ddb[3050]]= function(_0x9494x2){_0x9494x2= mxEvent[_0x7ddb[728]](_0x9494x2);if(_0x9494x2== this[_0x7ddb[772]]|| _0x9494x2[_0x7ddb[265]]== this[_0x7ddb[772]]|| null!= this[_0x7ddb[1179]][_0x7ddb[2347]]&& _0x9494x2== this[_0x7ddb[1179]][_0x7ddb[2347]][_0x7ddb[126]]){return !0};for(;null!= _0x9494x2;){if(_0x9494x2== this[_0x7ddb[1179]][_0x7ddb[526]]){return !0};_0x9494x2= _0x9494x2[_0x7ddb[265]]};return !1};mxKeyHandler[_0x7ddb[202]][_0x7ddb[3044]]= function(_0x9494x2){if(this[_0x7ddb[1179]][_0x7ddb[994]]()&& !mxEvent[_0x7ddb[721]](_0x9494x2)&& this[_0x7ddb[3050]](_0x9494x2)&& this[_0x7ddb[994]]()){if(27== _0x9494x2[_0x7ddb[2124]]){this[_0x7ddb[859]](_0x9494x2)}else {if(!this[_0x7ddb[1179]][_0x7ddb[2203]]()){var _0x9494x3=this[_0x7ddb[3049]](_0x9494x2);null!= _0x9494x3&& (_0x9494x3(_0x9494x2),mxEvent[_0x7ddb[722]](_0x9494x2))}}}};mxKeyHandler[_0x7ddb[202]][_0x7ddb[859]]= function(_0x9494x2){this[_0x7ddb[1179]][_0x7ddb[2608]]()&& this[_0x7ddb[1179]][_0x7ddb[859]](_0x9494x2)};mxKeyHandler[_0x7ddb[202]][_0x7ddb[515]]= function(){this[_0x7ddb[772]]= null};function mxTooltipHandler(_0x9494x2,_0x9494x3){null!= _0x9494x2&& (this[_0x7ddb[1179]]= _0x9494x2,this[_0x7ddb[1140]]= _0x9494x3|| 500,this[_0x7ddb[1179]][_0x7ddb[1133]](this))}mxTooltipHandler[_0x7ddb[202]][_0x7ddb[931]]= 10005;mxTooltipHandler[_0x7ddb[202]][_0x7ddb[1179]]= null;mxTooltipHandler[_0x7ddb[202]][_0x7ddb[1140]]= null;mxTooltipHandler[_0x7ddb[202]][_0x7ddb[3051]]= !1;mxTooltipHandler[_0x7ddb[202]][_0x7ddb[984]]= !0;mxTooltipHandler[_0x7ddb[202]][_0x7ddb[994]]= function(){return this[_0x7ddb[984]]};mxTooltipHandler[_0x7ddb[202]][_0x7ddb[995]]= function(_0x9494x2){this[_0x7ddb[984]]= _0x9494x2};mxTooltipHandler[_0x7ddb[202]][_0x7ddb[2277]]= function(){return this[_0x7ddb[3051]]};mxTooltipHandler[_0x7ddb[202]][_0x7ddb[3052]]= function(_0x9494x2){this[_0x7ddb[3051]]= _0x9494x2};mxTooltipHandler[_0x7ddb[202]][_0x7ddb[176]]= function(){null!= document[_0x7ddb[112]]&& (this[_0x7ddb[485]]= document[_0x7ddb[55]](_0x7ddb[485]),this[_0x7ddb[485]][_0x7ddb[926]]= _0x7ddb[3053],this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[188],this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[931]]= this[_0x7ddb[931]],document[_0x7ddb[112]][_0x7ddb[62]](this[_0x7ddb[485]]),mxEvent[_0x7ddb[169]](this[_0x7ddb[485]],_0x7ddb[751],mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[3054]]()})))};mxTooltipHandler[_0x7ddb[202]][_0x7ddb[787]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[862]](_0x9494x3,!1);this[_0x7ddb[3054]]()};mxTooltipHandler[_0x7ddb[202]][_0x7ddb[788]]= function(_0x9494x2,_0x9494x3){if(_0x9494x3[_0x7ddb[730]]()!= this[_0x7ddb[1217]]|| _0x9494x3[_0x7ddb[732]]()!= this[_0x7ddb[1218]]){this[_0x7ddb[862]](_0x9494x3,!0),(this[_0x7ddb[2277]]()|| _0x9494x3[_0x7ddb[248]]()!= this[_0x7ddb[724]]|| _0x9494x3[_0x7ddb[728]]()!= this[_0x7ddb[252]]&& (!this[_0x7ddb[3055]]|| null!= _0x9494x3[_0x7ddb[248]]()&& this[_0x7ddb[3055]]== (_0x9494x3[_0x7ddb[729]](_0x9494x3[_0x7ddb[248]]()[_0x7ddb[253]])|| !_0x9494x3[_0x7ddb[729]](_0x9494x3[_0x7ddb[248]]()[_0x7ddb[963]]))))&& this[_0x7ddb[3054]]()};this[_0x7ddb[1217]]= _0x9494x3[_0x7ddb[730]]();this[_0x7ddb[1218]]= _0x9494x3[_0x7ddb[732]]()};mxTooltipHandler[_0x7ddb[202]][_0x7ddb[789]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[862]](_0x9494x3,!0);this[_0x7ddb[3054]]()};mxTooltipHandler[_0x7ddb[202]][_0x7ddb[3056]]= function(){null!= this[_0x7ddb[1123]]&& (window[_0x7ddb[2924]](this[_0x7ddb[1123]]),this[_0x7ddb[1123]]= null)};mxTooltipHandler[_0x7ddb[202]][_0x7ddb[862]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[3056]]();if(_0x9494x3&& this[_0x7ddb[994]]()&& null!= _0x9494x2[_0x7ddb[248]]()&& (null== this[_0x7ddb[485]]|| _0x7ddb[188]== this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[187]])){var _0x9494x4=_0x9494x2[_0x7ddb[248]](),_0x9494x5=_0x9494x2[_0x7ddb[728]](),_0x9494x9=_0x9494x2[_0x7ddb[730]](),_0x9494xa=_0x9494x2[_0x7ddb[732]](),_0x9494x12=_0x9494x2[_0x7ddb[729]](_0x9494x4[_0x7ddb[253]])|| _0x9494x2[_0x7ddb[729]](_0x9494x4[_0x7ddb[963]]);this[_0x7ddb[1123]]= window[_0x7ddb[261]](mxUtils[_0x7ddb[885]](this,function(){if(!this[_0x7ddb[1179]][_0x7ddb[2203]]()&& !this[_0x7ddb[1179]][_0x7ddb[2316]][_0x7ddb[1031]]()){var _0x9494x2=this[_0x7ddb[1179]][_0x7ddb[2595]](_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa);this[_0x7ddb[539]](_0x9494x2,_0x9494x9,_0x9494xa);this[_0x7ddb[724]]= _0x9494x4;this[_0x7ddb[252]]= _0x9494x5;this[_0x7ddb[3055]]= _0x9494x12}}),this[_0x7ddb[1140]])}};mxTooltipHandler[_0x7ddb[202]][_0x7ddb[801]]= function(){this[_0x7ddb[3056]]();this[_0x7ddb[3054]]()};mxTooltipHandler[_0x7ddb[202]][_0x7ddb[3054]]= function(){null!= this[_0x7ddb[485]]&& (this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[188])};mxTooltipHandler[_0x7ddb[202]][_0x7ddb[539]]= function(_0x9494x2,_0x9494x3,_0x9494x4){if(null!= _0x9494x2&& 0< _0x9494x2[_0x7ddb[67]]){null== this[_0x7ddb[485]]&& this[_0x7ddb[176]]();var _0x9494x5=mxUtils[_0x7ddb[444]]();this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[361]]= _0x9494x3+ _0x9494x5[_0x7ddb[235]]+ _0x7ddb[168];this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[125]]= _0x9494x4+ mxConstants[_0x7ddb[560]]+ _0x9494x5[_0x7ddb[236]]+ _0x7ddb[168];mxUtils[_0x7ddb[1331]](_0x9494x2)?(this[_0x7ddb[485]][_0x7ddb[339]]= _0x7ddb[110],this[_0x7ddb[485]][_0x7ddb[62]](_0x9494x2)):this[_0x7ddb[485]][_0x7ddb[339]]= _0x9494x2[_0x7ddb[230]](/\n/g,_0x7ddb[545]);this[_0x7ddb[485]][_0x7ddb[124]][_0x7ddb[187]]= _0x7ddb[110];mxUtils[_0x7ddb[933]](this[_0x7ddb[485]])}};mxTooltipHandler[_0x7ddb[202]][_0x7ddb[515]]= function(){this[_0x7ddb[1179]][_0x7ddb[1148]](this);mxEvent[_0x7ddb[762]](this[_0x7ddb[485]]);null!= this[_0x7ddb[485]]&& null!= this[_0x7ddb[485]][_0x7ddb[265]]&& this[_0x7ddb[485]][_0x7ddb[265]][_0x7ddb[266]](this[_0x7ddb[485]]);this[_0x7ddb[485]]= null};function mxCellTracker(_0x9494x2,_0x9494x3,_0x9494x4){mxCellMarker[_0x7ddb[239]](this,_0x9494x2,_0x9494x3);this[_0x7ddb[1179]][_0x7ddb[1133]](this);null!= _0x9494x4&& (this[_0x7ddb[736]]= _0x9494x4);mxClient[_0x7ddb[80]]&& mxEvent[_0x7ddb[169]](window,_0x7ddb[2428],mxUtils[_0x7ddb[885]](this,function(){this[_0x7ddb[515]]()}))}mxUtils[_0x7ddb[1284]](mxCellTracker,mxCellMarker);mxCellTracker[_0x7ddb[202]][_0x7ddb[787]]= function(_0x9494x2,_0x9494x3){};mxCellTracker[_0x7ddb[202]][_0x7ddb[788]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[994]]()&& this[_0x7ddb[2871]](_0x9494x3)};mxCellTracker[_0x7ddb[202]][_0x7ddb[789]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[862]]()};mxCellTracker[_0x7ddb[202]][_0x7ddb[515]]= function(){this[_0x7ddb[2717]]|| (this[_0x7ddb[2717]]= !0,this[_0x7ddb[1179]][_0x7ddb[1148]](this),mxCellMarker[_0x7ddb[202]][_0x7ddb[515]][_0x7ddb[183]](this))};function mxCellHighlight(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){null!= _0x9494x2&& (this[_0x7ddb[1179]]= _0x9494x2,this[_0x7ddb[2943]]= null!= _0x9494x3?_0x9494x3:mxConstants[_0x7ddb[2854]],this[_0x7ddb[610]]= null!= _0x9494x4?_0x9494x4:mxConstants[_0x7ddb[3057]],this[_0x7ddb[648]]= null!= _0x9494x5?_0x9494x5:!1,this[_0x7ddb[3058]]= mxUtils[_0x7ddb[885]](this,function(){this[_0x7ddb[2950]]()}),this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[169]](mxEvent.SCALE,this[_0x7ddb[3058]]),this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[169]](mxEvent.TRANSLATE,this[_0x7ddb[3058]]),this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[169]](mxEvent.SCALE_AND_TRANSLATE,this[_0x7ddb[3058]]),this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[169]](mxEvent.CHANGE,this[_0x7ddb[3058]]),this[_0x7ddb[2877]]= mxUtils[_0x7ddb[885]](this,function(){this[_0x7ddb[801]]()}),this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[169]](mxEvent.DOWN,this[_0x7ddb[2877]]),this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[169]](mxEvent.UP,this[_0x7ddb[2877]]))}mxCellHighlight[_0x7ddb[202]][_0x7ddb[3059]]= !1;mxCellHighlight[_0x7ddb[202]][_0x7ddb[1179]]= !0;mxCellHighlight[_0x7ddb[202]][_0x7ddb[724]]= null;mxCellHighlight[_0x7ddb[202]][_0x7ddb[657]]= 2;mxCellHighlight[_0x7ddb[202]][_0x7ddb[2877]]= null;mxCellHighlight[_0x7ddb[202]][_0x7ddb[2828]]= function(_0x9494x2){this[_0x7ddb[2943]]= _0x9494x2;null!= this[_0x7ddb[253]]&& (this[_0x7ddb[253]][_0x7ddb[1336]]= _0x9494x2)};mxCellHighlight[_0x7ddb[202]][_0x7ddb[3060]]= function(){this[_0x7ddb[253]]= this[_0x7ddb[2156]]();this[_0x7ddb[2950]]();!this[_0x7ddb[3059]]&& this[_0x7ddb[253]][_0x7ddb[252]][_0x7ddb[265]][_0x7ddb[285]]!= this[_0x7ddb[253]][_0x7ddb[252]] && this[_0x7ddb[253]][_0x7ddb[252]][_0x7ddb[265]][_0x7ddb[950]](this[_0x7ddb[253]][_0x7ddb[252]],this[_0x7ddb[253]][_0x7ddb[252]][_0x7ddb[265]][_0x7ddb[285]])};mxCellHighlight[_0x7ddb[202]][_0x7ddb[2156]]= function(){var _0x9494x2=null,_0x9494x2=this[_0x7ddb[1179]][_0x7ddb[251]][_0x7ddb[250]](this[_0x7ddb[724]][_0x7ddb[246]])? new mxPolyline(this[_0x7ddb[724]][_0x7ddb[439]],this[_0x7ddb[2943]],this[_0x7ddb[610]]): new mxRectangleShape( new mxRectangle,null,this[_0x7ddb[2943]],this[_0x7ddb[610]]);_0x9494x2[_0x7ddb[507]]= this[_0x7ddb[1179]][_0x7ddb[507]]!= mxConstants[_0x7ddb[508]]?mxConstants[_0x7ddb[1523]]:mxConstants[_0x7ddb[508]];_0x9494x2[_0x7ddb[176]](this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[1524]]());mxEvent[_0x7ddb[2733]](_0x9494x2[_0x7ddb[252]],this[_0x7ddb[1179]],this[_0x7ddb[724]]);_0x9494x2[_0x7ddb[1564]]= 0;_0x9494x2[_0x7ddb[1229]]= !1;_0x9494x2[_0x7ddb[1522]]= this[_0x7ddb[648]];return _0x9494x2};mxCellHighlight[_0x7ddb[202]][_0x7ddb[2950]]= function(){if(null!= this[_0x7ddb[724]]&& null!= this[_0x7ddb[253]]){var _0x9494x2=0;this[_0x7ddb[1179]][_0x7ddb[251]][_0x7ddb[250]](this[_0x7ddb[724]][_0x7ddb[246]])?this[_0x7ddb[253]][_0x7ddb[1525]]= this[_0x7ddb[724]][_0x7ddb[439]]:(this[_0x7ddb[253]][_0x7ddb[1562]]= new mxRectangle(this[_0x7ddb[724]][_0x7ddb[235]]- this[_0x7ddb[657]],this[_0x7ddb[724]][_0x7ddb[236]]- this[_0x7ddb[657]],this[_0x7ddb[724]][_0x7ddb[117]]+ 2* this[_0x7ddb[657]],this[_0x7ddb[724]][_0x7ddb[119]]+ 2* this[_0x7ddb[657]]),_0x9494x2= Number(this[_0x7ddb[724]][_0x7ddb[124]][mxConstants[_0x7ddb[2278]]]|| _0x7ddb[468]));null!= this[_0x7ddb[724]][_0x7ddb[253]]&& this[_0x7ddb[253]][_0x7ddb[1609]](this[_0x7ddb[724]][_0x7ddb[253]][_0x7ddb[1610]]());0!= _0x9494x2&& (this[_0x7ddb[253]][_0x7ddb[603]]= _0x9494x2);this[_0x7ddb[253]][_0x7ddb[258]]()}};mxCellHighlight[_0x7ddb[202]][_0x7ddb[801]]= function(){this[_0x7ddb[1016]](null)};mxCellHighlight[_0x7ddb[202]][_0x7ddb[1016]]= function(_0x9494x2){this[_0x7ddb[724]]!= _0x9494x2&& (null!= this[_0x7ddb[253]]&& (this[_0x7ddb[253]][_0x7ddb[515]](),this[_0x7ddb[253]]= null),this[_0x7ddb[724]]= _0x9494x2,null!= this[_0x7ddb[724]]&& this[_0x7ddb[3060]]())};mxCellHighlight[_0x7ddb[202]][_0x7ddb[515]]= function(){this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[745]](this[_0x7ddb[3058]]);this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[745]](this[_0x7ddb[3058]]);this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[745]](this[_0x7ddb[2877]]);this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[745]](this[_0x7ddb[2877]]);null!= this[_0x7ddb[253]]&& (this[_0x7ddb[253]][_0x7ddb[515]](),this[_0x7ddb[253]]= null)};function mxDefaultKeyHandler(_0x9494x2){if(null!= _0x9494x2){this[_0x7ddb[3061]]= _0x9494x2;this[_0x7ddb[2458]]= new mxKeyHandler(_0x9494x2[_0x7ddb[1179]]);var _0x9494x3=this[_0x7ddb[2458]][_0x7ddb[859]];this[_0x7ddb[2458]][_0x7ddb[859]]= function(_0x9494x4){_0x9494x3[_0x7ddb[183]](this,arguments);_0x9494x2[_0x7ddb[3062]]();_0x9494x2[_0x7ddb[746]]( new mxEventObject(mxEvent.ESCAPE,_0x7ddb[763],_0x9494x4))}}}mxDefaultKeyHandler[_0x7ddb[202]][_0x7ddb[3061]]= null;mxDefaultKeyHandler[_0x7ddb[202]][_0x7ddb[2458]]= null;mxDefaultKeyHandler[_0x7ddb[202]][_0x7ddb[3063]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=mxUtils[_0x7ddb[885]](this,function(){this[_0x7ddb[3061]][_0x7ddb[350]](_0x9494x3)});_0x9494x4?this[_0x7ddb[2458]][_0x7ddb[3047]](_0x9494x2,_0x9494x5):this[_0x7ddb[2458]][_0x7ddb[3045]](_0x9494x2,_0x9494x5)};mxDefaultKeyHandler[_0x7ddb[202]][_0x7ddb[515]]= function(){this[_0x7ddb[2458]][_0x7ddb[515]]();this[_0x7ddb[2458]]= null};function mxDefaultPopupMenu(_0x9494x2){this[_0x7ddb[3064]]= _0x9494x2}mxDefaultPopupMenu[_0x7ddb[202]][_0x7ddb[88]]= null;mxDefaultPopupMenu[_0x7ddb[202]][_0x7ddb[3064]]= null;mxDefaultPopupMenu[_0x7ddb[202]][_0x7ddb[3065]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){if(null!= this[_0x7ddb[3064]]){var _0x9494x9=this[_0x7ddb[3066]](_0x9494x2,_0x9494x4,_0x9494x5);this[_0x7ddb[3067]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,this[_0x7ddb[3064]][_0x7ddb[285]],null)}};mxDefaultPopupMenu[_0x7ddb[202]][_0x7ddb[3067]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12){for(var _0x9494x13=!1;null!= _0x9494xa;){if(_0x7ddb[99]== _0x9494xa[_0x7ddb[301]]){var _0x9494x14=_0x9494xa[_0x7ddb[284]](_0x7ddb[3068]);if(null== _0x9494x14|| _0x9494x9[_0x9494x14]){var _0x9494x14=_0x9494xa[_0x7ddb[284]](_0x7ddb[3069]),_0x9494x14=mxResources[_0x7ddb[203]](_0x9494x14)|| _0x9494x14,_0x9494x15=mxUtils[_0x7ddb[1545]](mxUtils[_0x7ddb[329]](_0x9494xa)),_0x9494x16=_0x9494xa[_0x7ddb[284]](_0x7ddb[892]),_0x9494x17=_0x9494xa[_0x7ddb[284]](_0x7ddb[2916]),_0x9494x18=_0x9494xa[_0x7ddb[284]](_0x7ddb[3070]);_0x9494x13&& (_0x9494x3[_0x7ddb[1051]](_0x9494x12),_0x9494x13= !1);null!= _0x9494x17&& this[_0x7ddb[88]]&& (_0x9494x17= this[_0x7ddb[88]]+ _0x9494x17);_0x9494x14= this[_0x7ddb[3071]](_0x9494x3,_0x9494x2,_0x9494x14,_0x9494x17,_0x9494x15,_0x9494x16,_0x9494x4,_0x9494x12,_0x9494x18);this[_0x7ddb[3067]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa[_0x7ddb[285]],_0x9494x14)}}else {_0x7ddb[3072]== _0x9494xa[_0x7ddb[301]]&& (_0x9494x13= !0)};_0x9494xa= _0x9494xa[_0x7ddb[287]]}};mxDefaultPopupMenu[_0x7ddb[202]][_0x7ddb[3071]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa,_0x9494x12,_0x9494x13,_0x9494x14){return _0x9494x2[_0x7ddb[1025]](_0x9494x4,_0x9494x5,function(_0x9494x2){_0x7ddb[279]== typeof _0x9494x9&& _0x9494x9[_0x7ddb[239]](_0x9494x3,_0x9494x3,_0x9494x12,_0x9494x2);null!= _0x9494xa&& _0x9494x3[_0x7ddb[350]](_0x9494xa,_0x9494x12,_0x9494x2)},_0x9494x13,_0x9494x14)};mxDefaultPopupMenu[_0x7ddb[202]][_0x7ddb[3066]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=_0x9494x2[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x9=_0x9494x5[_0x7ddb[262]](_0x9494x3),_0x9494xa=[];_0x9494xa[_0x7ddb[3073]]= null== _0x9494x3;_0x9494xa[_0x7ddb[3074]]= 1< _0x9494x2[_0x7ddb[1179]][_0x7ddb[2694]]();_0x9494xa[_0x7ddb[3075]]= _0x9494x5[_0x7ddb[501]]()!= _0x9494x5[_0x7ddb[1197]](_0x9494x2[_0x7ddb[1179]][_0x7ddb[902]]());_0x9494xa[_0x7ddb[246]]= null!= _0x9494x3;_0x9494x5= null!= _0x9494x3&& 1== _0x9494x2[_0x7ddb[1179]][_0x7ddb[2694]]();_0x9494xa[_0x7ddb[3076]]= _0x9494x5&& 0< _0x9494x9;_0x9494xa[_0x7ddb[3077]]= _0x9494x5&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[2516]](_0x9494x3,!1);_0x9494xa[_0x7ddb[3078]]= _0x9494x5&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[2516]](_0x9494x3,!0);_0x9494xa[_0x7ddb[3079]]= _0x9494x5&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[2553]](_0x9494x3);_0x9494xa[_0x7ddb[3080]]= _0x9494xa[_0x7ddb[3079]]&& 0== _0x9494x9;_0x9494xa[_0x7ddb[687]]= _0x9494x5&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[1730]](_0x9494x3);_0x9494x9= this[_0x7ddb[3064]][_0x7ddb[64]](_0x7ddb[3081]);for(_0x9494x5= 0;_0x9494x5< _0x9494x9[_0x7ddb[67]];_0x9494x5++){var _0x9494x12=mxUtils[_0x7ddb[1545]](mxUtils[_0x7ddb[329]](_0x9494x9[_0x9494x5])),_0x9494x13=_0x9494x9[_0x9494x5][_0x7ddb[284]](_0x7ddb[298]);null!= _0x9494x13&& _0x7ddb[279]== typeof _0x9494x12&& (_0x9494xa[_0x9494x13]= _0x9494x12(_0x9494x2,_0x9494x3,_0x9494x4))};return _0x9494xa};function mxDefaultToolbar(_0x9494x2,_0x9494x3){this[_0x7ddb[3061]]= _0x9494x3;null!= _0x9494x2&& null!= _0x9494x3&& this[_0x7ddb[176]](_0x9494x2)}mxDefaultToolbar[_0x7ddb[202]][_0x7ddb[3061]]= null;mxDefaultToolbar[_0x7ddb[202]][_0x7ddb[3082]]= null;mxDefaultToolbar[_0x7ddb[202]][_0x7ddb[2877]]= null;mxDefaultToolbar[_0x7ddb[202]][_0x7ddb[657]]= 4;mxDefaultToolbar[_0x7ddb[202]][_0x7ddb[2804]]= !1;mxDefaultToolbar[_0x7ddb[202]][_0x7ddb[176]]= function(_0x9494x2){null!= _0x9494x2&& (this[_0x7ddb[3082]]= new mxToolbar(_0x9494x2),this[_0x7ddb[3082]][_0x7ddb[169]](mxEvent.SELECT,mxUtils[_0x7ddb[885]](this,function(_0x9494x2,_0x9494x4){var _0x9494x5=_0x9494x4[_0x7ddb[720]](_0x7ddb[279]);this[_0x7ddb[3061]][_0x7ddb[3083]]= null!= _0x9494x5?mxUtils[_0x7ddb[885]](this,function(){_0x9494x5[_0x7ddb[183]](this,arguments);this[_0x7ddb[3082]][_0x7ddb[1050]]()}):null})),this[_0x7ddb[2877]]= mxUtils[_0x7ddb[885]](this,function(){null!= this[_0x7ddb[3082]]&& this[_0x7ddb[3082]][_0x7ddb[1050]](!0)}),this[_0x7ddb[3061]][_0x7ddb[1179]][_0x7ddb[169]](mxEvent.DOUBLE_CLICK,this[_0x7ddb[2877]]),this[_0x7ddb[3061]][_0x7ddb[169]](mxEvent.ESCAPE,this[_0x7ddb[2877]]))};mxDefaultToolbar[_0x7ddb[202]][_0x7ddb[1025]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){var _0x9494x9=mxUtils[_0x7ddb[885]](this,function(){null!= _0x9494x4&& 0< _0x9494x4[_0x7ddb[67]]&& this[_0x7ddb[3061]][_0x7ddb[350]](_0x9494x4)});return this[_0x7ddb[3082]][_0x7ddb[1025]](_0x9494x2,_0x9494x3,_0x9494x9,_0x9494x5)};mxDefaultToolbar[_0x7ddb[202]][_0x7ddb[1051]]= function(_0x9494x2){_0x9494x2= _0x9494x2|| mxClient[_0x7ddb[88]]+ _0x7ddb[3084];this[_0x7ddb[3082]][_0x7ddb[1051]](_0x9494x2)};mxDefaultToolbar[_0x7ddb[202]][_0x7ddb[970]]= function(){return this[_0x7ddb[3082]][_0x7ddb[970]]()};mxDefaultToolbar[_0x7ddb[202]][_0x7ddb[1038]]= function(_0x9494x2){return this[_0x7ddb[3082]][_0x7ddb[1038]](_0x9494x2)};mxDefaultToolbar[_0x7ddb[202]][_0x7ddb[3085]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=mxUtils[_0x7ddb[885]](this,function(){this[_0x7ddb[3061]][_0x7ddb[350]](_0x9494x4)});this[_0x7ddb[972]](_0x9494x2,_0x9494x3,_0x9494x5)};mxDefaultToolbar[_0x7ddb[202]][_0x7ddb[972]]= function(_0x9494x2,_0x9494x3,_0x9494x4){return this[_0x7ddb[3082]][_0x7ddb[972]](_0x9494x2,_0x9494x3,_0x9494x4)};mxDefaultToolbar[_0x7ddb[202]][_0x7ddb[1048]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){var _0x9494xa=mxUtils[_0x7ddb[885]](this,function(){this[_0x7ddb[3061]][_0x7ddb[3086]](_0x9494x4);null!= _0x9494x9&& _0x9494x9(this[_0x7ddb[3061]])});return this[_0x7ddb[3082]][_0x7ddb[1042]](_0x9494x2,_0x9494x3,_0x9494xa,_0x9494x5)};mxDefaultToolbar[_0x7ddb[202]][_0x7ddb[3087]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9,_0x9494xa){var _0x9494x12=function(){return _0x7ddb[279]== typeof _0x9494x4?_0x9494x4():null!= _0x9494x4?_0x9494x4[_0x7ddb[238]]():null},_0x9494x13=mxUtils[_0x7ddb[885]](this,function(_0x9494x2,_0x9494x3){_0x7ddb[279]== typeof _0x9494x9?_0x9494x9(this[_0x7ddb[3061]],_0x9494x12(),_0x9494x2,_0x9494x3):this[_0x7ddb[1008]](_0x9494x12(),_0x9494x2,_0x9494x3);this[_0x7ddb[3082]][_0x7ddb[1050]]();mxEvent[_0x7ddb[722]](_0x9494x2)});_0x9494x2= this[_0x7ddb[3082]][_0x7ddb[1048]](_0x9494x2,_0x9494x3,_0x9494x13,_0x9494x5,null,_0x9494xa);this[_0x7ddb[3088]](_0x9494x2,function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x13(_0x9494x3,_0x9494x4)});return _0x9494x2};mxDefaultToolbar[_0x7ddb[202]][_0x7ddb[1008]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=this[_0x7ddb[3061]][_0x7ddb[1179]],_0x9494x9=_0x9494x5[_0x7ddb[502]]();if(null== _0x9494x4|| _0x9494x9[_0x7ddb[250]](_0x9494x4)|| !this[_0x7ddb[2804]]|| !_0x9494x5[_0x7ddb[2565]](_0x9494x4)){for(;null!= _0x9494x4&& !_0x9494x5[_0x7ddb[2685]](_0x9494x4,[_0x9494x2],_0x9494x3);){_0x9494x4= _0x9494x9[_0x7ddb[1197]](_0x9494x4)};this[_0x7ddb[1937]](_0x9494x2,_0x9494x3,_0x9494x4)}else {this[_0x7ddb[807]](_0x9494x2,_0x9494x3,_0x9494x4)}};mxDefaultToolbar[_0x7ddb[202]][_0x7ddb[1937]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=this[_0x7ddb[3061]][_0x7ddb[1179]];if(_0x9494x5[_0x7ddb[2621]](_0x9494x2)){var _0x9494x9=mxEvent[_0x7ddb[731]](_0x9494x3),_0x9494xa=mxEvent[_0x7ddb[733]](_0x9494x3),_0x9494x9=mxUtils[_0x7ddb[2196]](_0x9494x5[_0x7ddb[526]],_0x9494x9,_0x9494xa);return _0x9494x5[_0x7ddb[2655]]()&& _0x9494x5[_0x7ddb[2686]](_0x9494x4,[_0x9494x2],_0x9494x3)?_0x9494x5[_0x7ddb[853]](_0x9494x4,[_0x9494x2],null,_0x9494x9[_0x7ddb[235]],_0x9494x9[_0x7ddb[236]]):this[_0x7ddb[3061]][_0x7ddb[817]](_0x9494x4,_0x9494x2,_0x9494x9[_0x7ddb[235]],_0x9494x9[_0x7ddb[236]])};return null};mxDefaultToolbar[_0x7ddb[202]][_0x7ddb[807]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x3= this[_0x7ddb[3061]][_0x7ddb[1179]];var _0x9494x5=_0x9494x3[_0x7ddb[502]]();if(null!= _0x9494x4&& _0x9494x3[_0x7ddb[2565]](_0x9494x2)&& _0x9494x3[_0x7ddb[2581]](null,_0x9494x4,_0x9494x2)){var _0x9494x9=null;_0x9494x5[_0x7ddb[473]]();try{var _0x9494xa=_0x9494x5[_0x7ddb[1721]](_0x9494x4),_0x9494x12=_0x9494x5[_0x7ddb[1721]](_0x9494x2)[_0x7ddb[238]]();_0x9494x12[_0x7ddb[235]]= _0x9494xa[_0x7ddb[235]]+ (_0x9494xa[_0x7ddb[117]]- _0x9494x12[_0x7ddb[117]])/ 2;_0x9494x12[_0x7ddb[236]]= _0x9494xa[_0x7ddb[236]]+ (_0x9494xa[_0x7ddb[119]]- _0x9494x12[_0x7ddb[119]])/ 2;var _0x9494x13=this[_0x7ddb[657]]* _0x9494x3[_0x7ddb[1020]],_0x9494x14=20* _0x9494x5[_0x7ddb[1962]](_0x9494x4,!0);this[_0x7ddb[3061]][_0x7ddb[3089]]?_0x9494x12[_0x7ddb[235]]+= (_0x9494x12[_0x7ddb[117]]+ _0x9494xa[_0x7ddb[117]])/ 2+ _0x9494x13+ _0x9494x14:_0x9494x12[_0x7ddb[236]]+= (_0x9494x12[_0x7ddb[119]]+ _0x9494xa[_0x7ddb[119]])/ 2+ _0x9494x13+ _0x9494x14;_0x9494x2[_0x7ddb[1724]](_0x9494x12);var _0x9494x15=_0x9494x5[_0x7ddb[1197]](_0x9494x4);_0x9494x3[_0x7ddb[2103]](_0x9494x2,_0x9494x15);_0x9494x3[_0x7ddb[2509]](_0x9494x2);_0x9494x9= this[_0x7ddb[3061]][_0x7ddb[2503]](_0x9494x4,_0x9494x2);if(null== _0x9494x5[_0x7ddb[1721]](_0x9494x9)){var _0x9494x16= new mxGeometry;_0x9494x16[_0x7ddb[1500]]= !0;_0x9494x5[_0x7ddb[1724]](_0x9494x9,_0x9494x16)};_0x9494x3[_0x7ddb[2504]](_0x9494x9,_0x9494x15,_0x9494x4,_0x9494x2)}finally{_0x9494x5[_0x7ddb[476]]()};_0x9494x3[_0x7ddb[904]]([_0x9494x2,_0x9494x9]);_0x9494x3[_0x7ddb[2564]](_0x9494x2)}};mxDefaultToolbar[_0x7ddb[202]][_0x7ddb[3088]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=document[_0x7ddb[55]](_0x7ddb[466]);_0x9494x4[_0x7ddb[57]](_0x7ddb[390],_0x9494x2[_0x7ddb[284]](_0x7ddb[390]));var _0x9494x5=mxUtils[_0x7ddb[885]](this,function(_0x9494x9){_0x9494x4[_0x7ddb[124]][_0x7ddb[117]]= 2* _0x9494x2[_0x7ddb[359]]+ _0x7ddb[168];_0x9494x4[_0x7ddb[124]][_0x7ddb[119]]= 2* _0x9494x2[_0x7ddb[167]]+ _0x7ddb[168];mxUtils[_0x7ddb[3090]](_0x9494x2,this[_0x7ddb[3061]][_0x7ddb[1179]],_0x9494x3,_0x9494x4);mxEvent[_0x7ddb[745]](_0x9494x4,_0x7ddb[219],_0x9494x5)});mxClient[_0x7ddb[80]]?_0x9494x5():mxEvent[_0x7ddb[169]](_0x9494x4,_0x7ddb[219],_0x9494x5)};mxDefaultToolbar[_0x7ddb[202]][_0x7ddb[515]]= function(){null!= this[_0x7ddb[2877]]&& (this[_0x7ddb[3061]][_0x7ddb[1179]][_0x7ddb[745]](_0x7ddb[760],this[_0x7ddb[2877]]),this[_0x7ddb[3061]][_0x7ddb[745]](_0x7ddb[859],this[_0x7ddb[2877]]),this[_0x7ddb[2877]]= null);null!= this[_0x7ddb[3082]]&& (this[_0x7ddb[3082]][_0x7ddb[515]](),this[_0x7ddb[3082]]= null)};function mxEditor(_0x9494x2){this[_0x7ddb[3091]]= [];this[_0x7ddb[3092]]();if(null!= document[_0x7ddb[112]]){this[_0x7ddb[3093]]= [];this[_0x7ddb[3094]]= new mxDefaultPopupMenu;this[_0x7ddb[3095]]= new mxUndoManager;this[_0x7ddb[1179]]= this[_0x7ddb[3096]]();this[_0x7ddb[3082]]= this[_0x7ddb[3097]]();this[_0x7ddb[3098]]= new mxDefaultKeyHandler(this);this[_0x7ddb[3099]](_0x9494x2);this[_0x7ddb[1179]][_0x7ddb[2180]]= this[_0x7ddb[3100]];!mxClient[_0x7ddb[3101]]&& null!= this[_0x7ddb[1056]] && (this[_0x7ddb[812]]= this[_0x7ddb[3102]]());if(null!= this[_0x7ddb[1987]]){this[_0x7ddb[1987]]()};mxClient[_0x7ddb[80]]&& mxEvent[_0x7ddb[169]](window,_0x7ddb[2428],mxUtils[_0x7ddb[885]](this,function(){this[_0x7ddb[515]]()}))}}mxLoadResources&& mxResources[_0x7ddb[99]](mxClient[_0x7ddb[86]]+ _0x7ddb[3103]);mxEditor[_0x7ddb[202]]= new mxEventSource;mxEditor[_0x7ddb[202]][_0x7ddb[196]]= mxEditor;mxEditor[_0x7ddb[202]][_0x7ddb[3104]]= _0x7ddb[130]!= mxClient[_0x7ddb[90]]?_0x7ddb[3105]:_0x7ddb[110];mxEditor[_0x7ddb[202]][_0x7ddb[3106]]= _0x7ddb[130]!= mxClient[_0x7ddb[90]]?_0x7ddb[3107]:_0x7ddb[110];mxEditor[_0x7ddb[202]][_0x7ddb[3108]]= _0x7ddb[130]!= mxClient[_0x7ddb[90]]?_0x7ddb[3109]:_0x7ddb[110];mxEditor[_0x7ddb[202]][_0x7ddb[3110]]= _0x7ddb[130]!= mxClient[_0x7ddb[90]]?_0x7ddb[716]:_0x7ddb[110];mxEditor[_0x7ddb[202]][_0x7ddb[3111]]= _0x7ddb[130]!= mxClient[_0x7ddb[90]]?_0x7ddb[3112]:_0x7ddb[110];mxEditor[_0x7ddb[202]][_0x7ddb[3113]]= _0x7ddb[130]!= mxClient[_0x7ddb[90]]?_0x7ddb[2719]:_0x7ddb[110];mxEditor[_0x7ddb[202]][_0x7ddb[3114]]= _0x7ddb[130]!= mxClient[_0x7ddb[90]]?_0x7ddb[2136]:_0x7ddb[110];mxEditor[_0x7ddb[202]][_0x7ddb[2136]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[1179]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[2720]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[3082]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[812]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[879]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[3094]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[3095]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[3098]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[3091]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[3115]]= _0x7ddb[1061];mxEditor[_0x7ddb[202]][_0x7ddb[3116]]= !1;mxEditor[_0x7ddb[202]][_0x7ddb[1157]]= !0;mxEditor[_0x7ddb[202]][_0x7ddb[3083]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[3117]]= !1;mxEditor[_0x7ddb[202]][_0x7ddb[3118]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[2075]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[3119]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[3120]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[3121]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[3122]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[1069]]= _0x7ddb[336];mxEditor[_0x7ddb[202]][_0x7ddb[3123]]= _0x7ddb[338];mxEditor[_0x7ddb[202]][_0x7ddb[1070]]= !0;mxEditor[_0x7ddb[202]][_0x7ddb[3124]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[3125]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[1056]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[1058]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[1057]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[3089]]= !1;mxEditor[_0x7ddb[202]][_0x7ddb[3126]]= !1;mxEditor[_0x7ddb[202]][_0x7ddb[3127]]= 0;mxEditor[_0x7ddb[202]][_0x7ddb[3128]]= !1;mxEditor[_0x7ddb[202]][_0x7ddb[3129]]= !1;mxEditor[_0x7ddb[202]][_0x7ddb[3093]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[3130]]= 0;mxEditor[_0x7ddb[202]][_0x7ddb[3100]]= _0x7ddb[604];mxEditor[_0x7ddb[202]][_0x7ddb[3112]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[3131]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[3132]]= 20;mxEditor[_0x7ddb[202]][_0x7ddb[2719]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[3133]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[3134]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[3135]]= 300;mxEditor[_0x7ddb[202]][_0x7ddb[3136]]= 260;mxEditor[_0x7ddb[202]][_0x7ddb[3137]]= 240;mxEditor[_0x7ddb[202]][_0x7ddb[3138]]= null;mxEditor[_0x7ddb[202]][_0x7ddb[3139]]= !1;mxEditor[_0x7ddb[202]][_0x7ddb[3140]]= !1;mxEditor[_0x7ddb[202]][_0x7ddb[2113]]= !1;mxEditor[_0x7ddb[202]][_0x7ddb[2133]]= function(){return this[_0x7ddb[2113]]};mxEditor[_0x7ddb[202]][_0x7ddb[2128]]= function(_0x9494x2){this[_0x7ddb[2113]]= _0x9494x2};mxEditor[_0x7ddb[202]][_0x7ddb[3092]]= function(){this[_0x7ddb[3071]](_0x7ddb[815],function(_0x9494x2){_0x9494x2[_0x7ddb[815]]()});this[_0x7ddb[3071]](_0x7ddb[540],function(_0x9494x2){( new mxPrintPreview(_0x9494x2[_0x7ddb[1179]],1))[_0x7ddb[392]]()});this[_0x7ddb[3071]](_0x7ddb[539],function(_0x9494x2){mxUtils[_0x7ddb[539]](_0x9494x2[_0x7ddb[1179]],null,10,10)});this[_0x7ddb[3071]](_0x7ddb[3141],function(_0x9494x2){var _0x9494x3=_0x9494x2[_0x7ddb[3142]]();if(null== _0x9494x3|| mxClient[_0x7ddb[3101]]){_0x9494x2[_0x7ddb[350]](_0x7ddb[539])}else {var _0x9494x4=mxUtils[_0x7ddb[3143]](_0x9494x2[_0x7ddb[1179]],1),_0x9494x4=mxUtils[_0x7ddb[875]](_0x9494x4,_0x7ddb[192]);mxUtils[_0x7ddb[894]](_0x9494x3,_0x9494x2[_0x7ddb[3123]]+ _0x7ddb[226]+ encodeURIComponent(_0x9494x4),document,_0x7ddb[3144])}});this[_0x7ddb[3071]](_0x7ddb[802],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[802]]()});this[_0x7ddb[3071]](_0x7ddb[3145],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& mxClipboard[_0x7ddb[3145]](_0x9494x2[_0x7ddb[1179]])});this[_0x7ddb[3071]](_0x7ddb[149],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& mxClipboard[_0x7ddb[149]](_0x9494x2[_0x7ddb[1179]])});this[_0x7ddb[3071]](_0x7ddb[3146],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& mxClipboard[_0x7ddb[3146]](_0x9494x2[_0x7ddb[1179]])});this[_0x7ddb[3071]](_0x7ddb[3147],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[842]]()});this[_0x7ddb[3071]](_0x7ddb[1504],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[2450]](_0x9494x2[_0x7ddb[844]]())});this[_0x7ddb[3071]](_0x7ddb[3148],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[904]](_0x9494x2[_0x7ddb[1179]][_0x7ddb[845]]())});this[_0x7ddb[3071]](_0x7ddb[1997],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[846]]()});this[_0x7ddb[3071]](_0x7ddb[824],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[824]]()});this[_0x7ddb[3071]](_0x7ddb[825],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[825]]()});this[_0x7ddb[3071]](_0x7ddb[2558],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[2558]]()});this[_0x7ddb[3071]](_0x7ddb[2559],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[2559]]()});this[_0x7ddb[3071]](_0x7ddb[3149],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[2560]]()});this[_0x7ddb[3071]](_0x7ddb[933],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[933]]()});this[_0x7ddb[3071]](_0x7ddb[3150],function(_0x9494x2,_0x9494x3){_0x9494x2[_0x7ddb[3150]](_0x9494x3)});this[_0x7ddb[3071]](_0x7ddb[2705],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[2705]]()});this[_0x7ddb[3071]](_0x7ddb[3151],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[2440]]()});this[_0x7ddb[3071]](_0x7ddb[2706],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[2706]]()});this[_0x7ddb[3071]](_0x7ddb[2708],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[2708]]()});this[_0x7ddb[3071]](_0x7ddb[1061],function(_0x9494x2,_0x9494x3){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[2453]](_0x9494x3)&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[2451]](_0x9494x3)});this[_0x7ddb[3071]](_0x7ddb[3152],function(_0x9494x2,_0x9494x3){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[840]](!0)});this[_0x7ddb[3071]](_0x7ddb[3153],function(_0x9494x2,_0x9494x3){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[840]](!1)});this[_0x7ddb[3071]](_0x7ddb[2552],function(_0x9494x2,_0x9494x3){_0x9494x2[_0x7ddb[1179]][_0x7ddb[2552]](_0x9494x3)});this[_0x7ddb[3071]](_0x7ddb[2554],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[2554]]()});this[_0x7ddb[3071]](_0x7ddb[2442],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[2442]]()});this[_0x7ddb[3071]](_0x7ddb[3154],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[2702]]()});this[_0x7ddb[3071]](_0x7ddb[3155],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[2700]]()});this[_0x7ddb[3071]](_0x7ddb[3156],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[2703]]()});this[_0x7ddb[3071]](_0x7ddb[3157],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[2704]]()});this[_0x7ddb[3071]](_0x7ddb[2514],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[847]](!0)});this[_0x7ddb[3071]](_0x7ddb[3158],function(_0x9494x2){if(_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()){var _0x9494x3=_0x9494x2[_0x7ddb[1179]][_0x7ddb[1728]]();_0x9494x2[_0x7ddb[1179]][_0x7ddb[847]](!0,!1,_0x9494x3)}});this[_0x7ddb[3071]](_0x7ddb[3159],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[847]](!1)});this[_0x7ddb[3071]](_0x7ddb[3160],function(_0x9494x2){if(_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()){var _0x9494x3=_0x9494x2[_0x7ddb[1179]][_0x7ddb[1728]]();_0x9494x2[_0x7ddb[1179]][_0x7ddb[847]](!1,!1,_0x9494x3)}});this[_0x7ddb[3071]](_0x7ddb[1447],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[2491]](mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)});this[_0x7ddb[3071]](_0x7ddb[1449],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[2491]](mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)});this[_0x7ddb[3071]](_0x7ddb[355],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[2491]](mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)});this[_0x7ddb[3071]](_0x7ddb[639],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[2491]](mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)});this[_0x7ddb[3071]](_0x7ddb[3161],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[849]](mxConstants.ALIGN_LEFT)});this[_0x7ddb[3071]](_0x7ddb[3162],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[849]](mxConstants.ALIGN_CENTER)});this[_0x7ddb[3071]](_0x7ddb[3163],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[849]](mxConstants.ALIGN_RIGHT)});this[_0x7ddb[3071]](_0x7ddb[3164],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[849]](mxConstants.ALIGN_TOP)});this[_0x7ddb[3071]](_0x7ddb[3165],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[849]](mxConstants.ALIGN_MIDDLE)});this[_0x7ddb[3071]](_0x7ddb[3166],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[849]](mxConstants.ALIGN_BOTTOM)});this[_0x7ddb[3071]](_0x7ddb[3167],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[1717]](mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)});this[_0x7ddb[3071]](_0x7ddb[3168],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[1717]](mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)});this[_0x7ddb[3071]](_0x7ddb[3169],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[1717]](mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)});this[_0x7ddb[3071]](_0x7ddb[3170],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[1717]](mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)});this[_0x7ddb[3071]](_0x7ddb[3171],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[1717]](mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)});this[_0x7ddb[3071]](_0x7ddb[3172],function(_0x9494x2){_0x9494x2[_0x7ddb[1179]][_0x7ddb[994]]()&& _0x9494x2[_0x7ddb[1179]][_0x7ddb[1717]](mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)});this[_0x7ddb[3071]](_0x7ddb[499],function(_0x9494x2){var _0x9494x3=100* _0x9494x2[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[255]],_0x9494x3=parseFloat(mxUtils[_0x7ddb[3173]](mxResources[_0x7ddb[203]](_0x9494x2[_0x7ddb[3104]])|| _0x9494x2[_0x7ddb[3104]],_0x9494x3))/ 100;isNaN(_0x9494x3)|| _0x9494x2[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[2262]](_0x9494x3)});this[_0x7ddb[3071]](_0x7ddb[3174],function(_0x9494x2){null!= _0x9494x2[_0x7ddb[3112]]?_0x9494x2[_0x7ddb[3112]][_0x7ddb[175]](!_0x9494x2[_0x7ddb[3112]][_0x7ddb[174]]()):_0x9494x2[_0x7ddb[3175]]()});this[_0x7ddb[3071]](_0x7ddb[3176],function(_0x9494x2){null!= _0x9494x2[_0x7ddb[2719]]?_0x9494x2[_0x7ddb[2719]][_0x7ddb[175]](!_0x9494x2[_0x7ddb[2719]][_0x7ddb[174]]()):_0x9494x2[_0x7ddb[3177]]()});this[_0x7ddb[3071]](_0x7ddb[3178],function(_0x9494x2){null== _0x9494x2[_0x7ddb[2136]]?_0x9494x2[_0x7ddb[3179]]():_0x9494x2[_0x7ddb[2136]][_0x7ddb[175]](!_0x9494x2[_0x7ddb[2136]][_0x7ddb[174]]())});this[_0x7ddb[3071]](_0x7ddb[3180],function(_0x9494x2){mxLog[_0x7ddb[175]](!mxLog[_0x7ddb[174]]())})};mxEditor[_0x7ddb[202]][_0x7ddb[3102]]= function(){var _0x9494x2=mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[746]]( new mxEventObject(mxEvent.SESSION,_0x7ddb[812],_0x9494x2))});return this[_0x7ddb[807]](this[_0x7ddb[1056]],this[_0x7ddb[1057]],this[_0x7ddb[1058]],_0x9494x2)};mxEditor[_0x7ddb[202]][_0x7ddb[3099]]= function(_0x9494x2){null!= _0x9494x2&& (( new mxCodec(_0x9494x2[_0x7ddb[295]]))[_0x7ddb[1093]](_0x9494x2,this),this[_0x7ddb[3181]]())};mxEditor[_0x7ddb[202]][_0x7ddb[3182]]= function(){document[_0x7ddb[3183]]= _0x7ddb[3184]};mxEditor[_0x7ddb[202]][_0x7ddb[3181]]= function(){this[_0x7ddb[1184]]= ( new Date)[_0x7ddb[178]]();this[_0x7ddb[3095]][_0x7ddb[200]]();this[_0x7ddb[1183]]= 0;this[_0x7ddb[2128]](!1)};mxEditor[_0x7ddb[202]][_0x7ddb[3071]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[3091]][_0x9494x2]= _0x9494x3};mxEditor[_0x7ddb[202]][_0x7ddb[350]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=this[_0x7ddb[3091]][_0x9494x2];if(null!= _0x9494x5){try{var _0x9494x9=arguments;_0x9494x9[0]= this;_0x9494x5[_0x7ddb[183]](this,_0x9494x9)}catch(f){throw mxUtils[_0x7ddb[267]](_0x7ddb[3185]+ _0x9494x2+ _0x7ddb[3186]+ f[_0x7ddb[281]],280,!0),f}}else {mxUtils[_0x7ddb[267]](_0x7ddb[3187]+ _0x9494x2,280,!0)}};mxEditor[_0x7ddb[202]][_0x7ddb[3188]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[3118]][_0x9494x2]= _0x9494x3};mxEditor[_0x7ddb[202]][_0x7ddb[3189]]= function(_0x9494x2){return this[_0x7ddb[3118]][_0x9494x2]};mxEditor[_0x7ddb[202]][_0x7ddb[3096]]= function(){var _0x9494x2= new mxGraph(null,null,this[_0x7ddb[2720]]);_0x9494x2[_0x7ddb[2673]](!0);_0x9494x2[_0x7ddb[2674]](!0);this[_0x7ddb[3190]](_0x9494x2);this[_0x7ddb[3191]](_0x9494x2);this[_0x7ddb[3192]](_0x9494x2);this[_0x7ddb[3193]](_0x9494x2);this[_0x7ddb[3194]](_0x9494x2);_0x9494x2[_0x7ddb[2316]][_0x7ddb[1033]]= mxUtils[_0x7ddb[885]](this,function(_0x9494x2,_0x9494x4,_0x9494x5){return this[_0x7ddb[3195]](_0x9494x2,_0x9494x4,_0x9494x5)});_0x9494x2[_0x7ddb[2433]][_0x7ddb[1033]]= mxUtils[_0x7ddb[885]](this,function(_0x9494x2,_0x9494x4){return this[_0x7ddb[2503]](_0x9494x2,_0x9494x4)});this[_0x7ddb[3196]](_0x9494x2);this[_0x7ddb[3197]](_0x9494x2);return _0x9494x2};mxEditor[_0x7ddb[202]][_0x7ddb[3196]]= function(_0x9494x2){_0x9494x2= new mxSwimlaneManager(_0x9494x2,!1);_0x9494x2[_0x7ddb[1737]]= mxUtils[_0x7ddb[885]](this,function(){return this[_0x7ddb[3089]]});_0x9494x2[_0x7ddb[994]]= mxUtils[_0x7ddb[885]](this,function(){return this[_0x7ddb[3128]]});return _0x9494x2};mxEditor[_0x7ddb[202]][_0x7ddb[3197]]= function(_0x9494x2){var _0x9494x3= new mxLayoutManager(_0x9494x2),_0x9494x4=this;_0x9494x3[_0x7ddb[2754]]= function(_0x9494x3){var _0x9494x9=null,_0x9494xa=_0x9494x4[_0x7ddb[1179]][_0x7ddb[502]]();if(null!= _0x9494xa[_0x7ddb[1197]](_0x9494x3)){if(_0x9494x4[_0x7ddb[3129]]&& _0x9494x2[_0x7ddb[1730]](_0x9494x3)){null== _0x9494x4[_0x7ddb[3198]]&& (_0x9494x4[_0x7ddb[3198]]= _0x9494x4[_0x7ddb[3199]]()),_0x9494x9= _0x9494x4[_0x7ddb[3198]]}else {if(_0x9494x4[_0x7ddb[3126]]&& (_0x9494x2[_0x7ddb[2553]](_0x9494x3)|| null== _0x9494xa[_0x7ddb[1197]](_0x9494xa[_0x7ddb[1197]](_0x9494x3)))){null== _0x9494x4[_0x7ddb[3200]]&& (_0x9494x4[_0x7ddb[3200]]= _0x9494x4[_0x7ddb[3201]]()),_0x9494x9= _0x9494x4[_0x7ddb[3200]]}}};return _0x9494x9};return _0x9494x3};mxEditor[_0x7ddb[202]][_0x7ddb[3202]]= function(_0x9494x2){null== this[_0x7ddb[1179]][_0x7ddb[526]]&& (this[_0x7ddb[1179]][_0x7ddb[176]](_0x9494x2),this[_0x7ddb[3203]]= new mxRubberband(this[_0x7ddb[1179]]),this[_0x7ddb[1157]]&& mxEvent[_0x7ddb[1157]](_0x9494x2),mxClient[_0x7ddb[496]]&& new mxDivResizer(_0x9494x2))};mxEditor[_0x7ddb[202]][_0x7ddb[3190]]= function(_0x9494x2){_0x9494x2[_0x7ddb[169]](mxEvent.DOUBLE_CLICK,mxUtils[_0x7ddb[885]](this,function(_0x9494x3,_0x9494x4){var _0x9494x5=_0x9494x4[_0x7ddb[720]](_0x7ddb[246]);null!= _0x9494x5&& (_0x9494x2[_0x7ddb[994]]()&& null!= this[_0x7ddb[3115]])&& (this[_0x7ddb[350]](this[_0x7ddb[3115]],_0x9494x5),_0x9494x4[_0x7ddb[722]]())}))};mxEditor[_0x7ddb[202]][_0x7ddb[3191]]= function(_0x9494x2){var _0x9494x3=mxUtils[_0x7ddb[885]](this,function(_0x9494x2,_0x9494x3){var _0x9494x9=_0x9494x3[_0x7ddb[720]](_0x7ddb[1061]);this[_0x7ddb[3095]][_0x7ddb[1114]](_0x9494x9)});_0x9494x2[_0x7ddb[502]]()[_0x7ddb[169]](mxEvent.UNDO,_0x9494x3);_0x9494x2[_0x7ddb[249]]()[_0x7ddb[169]](mxEvent.UNDO,_0x9494x3);_0x9494x3= function(_0x9494x3,_0x9494x5){var _0x9494x9=_0x9494x5[_0x7ddb[720]](_0x7ddb[1061])[_0x7ddb[1065]];_0x9494x2[_0x7ddb[904]](_0x9494x2[_0x7ddb[2436]](_0x9494x9))};this[_0x7ddb[3095]][_0x7ddb[169]](mxEvent.UNDO,_0x9494x3);this[_0x7ddb[3095]][_0x7ddb[169]](mxEvent.REDO,_0x9494x3)};mxEditor[_0x7ddb[202]][_0x7ddb[3192]]= function(_0x9494x2){var _0x9494x3=mxUtils[_0x7ddb[885]](this,function(_0x9494x2){this[_0x7ddb[746]]( new mxEventObject(mxEvent.ROOT))});_0x9494x2[_0x7ddb[249]]()[_0x7ddb[169]](mxEvent.DOWN,_0x9494x3);_0x9494x2[_0x7ddb[249]]()[_0x7ddb[169]](mxEvent.UP,_0x9494x3)};mxEditor[_0x7ddb[202]][_0x7ddb[3193]]= function(_0x9494x2){var _0x9494x3=mxUtils[_0x7ddb[885]](this,function(_0x9494x3,_0x9494x5){this[_0x7ddb[2128]](!0);!0== this[_0x7ddb[3140]] && _0x9494x2[_0x7ddb[2585]]();for(var _0x9494x9=_0x9494x5[_0x7ddb[720]](_0x7ddb[1061])[_0x7ddb[1065]],_0x9494xa=0;_0x9494xa< _0x9494x9[_0x7ddb[67]];_0x9494xa++){var _0x9494x12=_0x9494x9[_0x9494xa];if(_0x9494x12 instanceof mxRootChange|| _0x9494x12 instanceof mxValueChange&& _0x9494x12[_0x7ddb[246]]== this[_0x7ddb[1179]][_0x7ddb[251]][_0x7ddb[813]]|| _0x9494x12 instanceof mxCellAttributeChange&& _0x9494x12[_0x7ddb[246]]== this[_0x7ddb[1179]][_0x7ddb[251]][_0x7ddb[813]]){this[_0x7ddb[746]]( new mxEventObject(mxEvent.ROOT));break}}});_0x9494x2[_0x7ddb[502]]()[_0x7ddb[169]](mxEvent.CHANGE,_0x9494x3)};mxEditor[_0x7ddb[202]][_0x7ddb[3194]]= function(_0x9494x2){var _0x9494x3=this;_0x9494x2[_0x7ddb[1133]]({mouseDown:function(_0x9494x2,_0x9494x5){if(null!= _0x9494x3[_0x7ddb[3083]]&& !_0x9494x5[_0x7ddb[737]]()&& (_0x9494x3[_0x7ddb[3117]]|| null== _0x9494x5[_0x7ddb[248]]())){_0x9494x3[_0x7ddb[1179]][_0x7ddb[2440]](),_0x9494x3[_0x7ddb[3083]](_0x9494x5[_0x7ddb[727]](),_0x9494x5[_0x7ddb[736]]()),this[_0x7ddb[1142]]= !0,_0x9494x5[_0x7ddb[722]]()}},mouseMove:function(_0x9494x2,_0x9494x3){this[_0x7ddb[1142]]&& _0x9494x3[_0x7ddb[722]]()},mouseUp:function(_0x9494x2,_0x9494x3){this[_0x7ddb[1142]]&& (this[_0x7ddb[1142]]= !1,_0x9494x3[_0x7ddb[722]]())}})};mxEditor[_0x7ddb[202]][_0x7ddb[3201]]= function(){var _0x9494x2=this[_0x7ddb[1179]][_0x7ddb[1020]],_0x9494x3= new mxStackLayout(this[_0x7ddb[1179]],!this[_0x7ddb[3089]],this[_0x7ddb[3127]],2* _0x9494x2,2* _0x9494x2);_0x9494x3[_0x7ddb[1713]]= function(_0x9494x2){return !_0x9494x3[_0x7ddb[1179]][_0x7ddb[1730]](_0x9494x2)};return _0x9494x3};mxEditor[_0x7ddb[202]][_0x7ddb[3199]]= function(){return new mxCompactTreeLayout(this[_0x7ddb[1179]],this[_0x7ddb[3089]])};mxEditor[_0x7ddb[202]][_0x7ddb[3097]]= function(){return new mxDefaultToolbar(null,this)};mxEditor[_0x7ddb[202]][_0x7ddb[3204]]= function(_0x9494x2){this[_0x7ddb[3082]][_0x7ddb[176]](_0x9494x2);mxClient[_0x7ddb[496]]&& new mxDivResizer(_0x9494x2)};mxEditor[_0x7ddb[202]][_0x7ddb[3205]]= function(_0x9494x2){null== this[_0x7ddb[879]]&& (this[_0x7ddb[879]]= _0x9494x2,this[_0x7ddb[169]](mxEvent.SAVE,mxUtils[_0x7ddb[885]](this,function(){var _0x9494x2=( new Date)[_0x7ddb[3206]]();this[_0x7ddb[3207]]((mxResources[_0x7ddb[203]](this[_0x7ddb[3106]])|| this[_0x7ddb[3106]])+ _0x7ddb[3186]+ _0x9494x2)})),this[_0x7ddb[169]](mxEvent.OPEN,mxUtils[_0x7ddb[885]](this,function(){this[_0x7ddb[3207]]((mxResources[_0x7ddb[203]](this[_0x7ddb[3108]])|| this[_0x7ddb[3108]])+ _0x7ddb[3186]+ this[_0x7ddb[3122]])})),mxClient[_0x7ddb[496]]&& new mxDivResizer(_0x9494x2))};mxEditor[_0x7ddb[202]][_0x7ddb[3207]]= function(_0x9494x2){null!= this[_0x7ddb[879]]&& null!= _0x9494x2&& (this[_0x7ddb[879]][_0x7ddb[339]]= _0x9494x2)};mxEditor[_0x7ddb[202]][_0x7ddb[3208]]= function(_0x9494x2){this[_0x7ddb[169]](mxEvent.ROOT,mxUtils[_0x7ddb[885]](this,function(_0x9494x3){_0x9494x2[_0x7ddb[339]]= this[_0x7ddb[3209]]()}));mxClient[_0x7ddb[496]]&& new mxDivResizer(_0x9494x2)};mxEditor[_0x7ddb[202]][_0x7ddb[3210]]= function(_0x9494x2,_0x9494x3){null!= _0x9494x2&& ( new mxCompactTreeLayout(this[_0x7ddb[1179]],_0x9494x3))[_0x7ddb[350]](_0x9494x2)};mxEditor[_0x7ddb[202]][_0x7ddb[3209]]= function(){for(var _0x9494x2=_0x7ddb[110],_0x9494x3=this[_0x7ddb[1179]],_0x9494x4=_0x9494x3[_0x7ddb[2534]]();null!= _0x9494x4&& null!= _0x9494x3[_0x7ddb[502]]()[_0x7ddb[1197]](_0x9494x3[_0x7ddb[502]]()[_0x7ddb[1197]](_0x9494x4));){_0x9494x3[_0x7ddb[2553]](_0x9494x4)&& (_0x9494x2= _0x7ddb[3211]+ _0x9494x3[_0x7ddb[2454]](_0x9494x4)+ _0x9494x2),_0x9494x4= _0x9494x3[_0x7ddb[502]]()[_0x7ddb[1197]](_0x9494x4)};return this[_0x7ddb[3212]]()+ _0x9494x2};mxEditor[_0x7ddb[202]][_0x7ddb[3212]]= function(){var _0x9494x2=this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[501]]();return this[_0x7ddb[1179]][_0x7ddb[2454]](_0x9494x2)};mxEditor[_0x7ddb[202]][_0x7ddb[824]]= function(){this[_0x7ddb[3095]][_0x7ddb[824]]()};mxEditor[_0x7ddb[202]][_0x7ddb[825]]= function(){this[_0x7ddb[3095]][_0x7ddb[825]]()};mxEditor[_0x7ddb[202]][_0x7ddb[844]]= function(){var _0x9494x2=null!= this[_0x7ddb[3121]]?this[_0x7ddb[3121]]:this[_0x7ddb[1179]][_0x7ddb[1020]];return this[_0x7ddb[1179]][_0x7ddb[844]](this[_0x7ddb[3213]](),_0x9494x2)};mxEditor[_0x7ddb[202]][_0x7ddb[3213]]= function(){return this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[1978]](this[_0x7ddb[3120]])};mxEditor[_0x7ddb[202]][_0x7ddb[392]]= function(_0x9494x2){if(null!= _0x9494x2){var _0x9494x3=mxUtils[_0x7ddb[219]](_0x9494x2)[_0x7ddb[875]]();this[_0x7ddb[3214]](_0x9494x3[_0x7ddb[158]]);this[_0x7ddb[3122]]= _0x9494x2;this[_0x7ddb[746]]( new mxEventObject(mxEvent.OPEN,_0x7ddb[3122],_0x9494x2))}};mxEditor[_0x7ddb[202]][_0x7ddb[3214]]= function(_0x9494x2){( new mxCodec(_0x9494x2[_0x7ddb[295]]))[_0x7ddb[1093]](_0x9494x2,this[_0x7ddb[1179]][_0x7ddb[502]]());this[_0x7ddb[3181]]()};mxEditor[_0x7ddb[202]][_0x7ddb[815]]= function(_0x9494x2,_0x9494x3){_0x9494x2= _0x9494x2|| this[_0x7ddb[3215]]();if(null!= _0x9494x2&& 0< _0x9494x2[_0x7ddb[67]]){var _0x9494x4=this[_0x7ddb[3216]](_0x9494x3);this[_0x7ddb[3217]](_0x9494x2,_0x9494x4);this[_0x7ddb[2128]](!1)};this[_0x7ddb[746]]( new mxEventObject(mxEvent.SAVE,_0x7ddb[863],_0x9494x2))};mxEditor[_0x7ddb[202]][_0x7ddb[3217]]= function(_0x9494x2,_0x9494x3){this[_0x7ddb[1070]]&& (_0x9494x3= encodeURIComponent(_0x9494x3));mxUtils[_0x7ddb[814]](_0x9494x2,this[_0x7ddb[3123]]+ _0x7ddb[226]+ _0x9494x3,mxUtils[_0x7ddb[885]](this,function(_0x9494x4){this[_0x7ddb[746]]( new mxEventObject(mxEvent.POST,_0x7ddb[870],_0x9494x4,_0x7ddb[863],_0x9494x2,_0x7ddb[410],_0x9494x3))}))};mxEditor[_0x7ddb[202]][_0x7ddb[3216]]= function(_0x9494x2){_0x9494x2= null!= _0x9494x2?_0x9494x2:this[_0x7ddb[1069]];var _0x9494x3=( new mxCodec)[_0x7ddb[514]](this[_0x7ddb[1179]][_0x7ddb[502]]());return mxUtils[_0x7ddb[875]](_0x9494x3,_0x9494x2)};mxEditor[_0x7ddb[202]][_0x7ddb[3215]]= function(){return this[_0x7ddb[3124]]};mxEditor[_0x7ddb[202]][_0x7ddb[3142]]= function(){return this[_0x7ddb[3125]]};mxEditor[_0x7ddb[202]][_0x7ddb[807]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){var _0x9494x9=null;mxClient[_0x7ddb[3101]]|| (_0x9494x9= new mxSession(this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x2,_0x9494x3,_0x9494x4),_0x9494x9[_0x7ddb[169]](mxEvent.RECEIVE,mxUtils[_0x7ddb[885]](this,function(_0x9494x2,_0x9494x3){null!= _0x9494x3[_0x7ddb[720]](_0x7ddb[252])[_0x7ddb[284]](_0x7ddb[1088])&& this[_0x7ddb[3181]]()})),_0x9494x9[_0x7ddb[169]](mxEvent.DISCONNECT,_0x9494x5),_0x9494x9[_0x7ddb[169]](mxEvent.CONNECT,_0x9494x5),_0x9494x9[_0x7ddb[169]](mxEvent.NOTIFY,_0x9494x5),_0x9494x9[_0x7ddb[169]](mxEvent.GET,_0x9494x5),_0x9494x9[_0x7ddb[861]]());return _0x9494x9};mxEditor[_0x7ddb[202]][_0x7ddb[3218]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=this[_0x7ddb[1179]][_0x7ddb[2434]]()[_0x7ddb[2054]][_0x9494x3];this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[2434]]()[_0x7ddb[2074]](_0x9494x3,this[_0x7ddb[1179]][_0x7ddb[2434]]()[_0x7ddb[2054]][_0x9494x2]);this[_0x7ddb[1179]][_0x7ddb[2434]]()[_0x7ddb[2074]](_0x9494x2,_0x9494x4);this[_0x7ddb[1179]][_0x7ddb[802]]()};mxEditor[_0x7ddb[202]][_0x7ddb[3150]]= function(_0x9494x2){_0x9494x2= _0x9494x2|| this[_0x7ddb[1179]][_0x7ddb[2452]]();null== _0x9494x2&& (_0x9494x2= this[_0x7ddb[1179]][_0x7ddb[2534]](),null== _0x9494x2&& (_0x9494x2= this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[501]]()));if(null!= _0x9494x2){this[_0x7ddb[1179]][_0x7ddb[2126]](!0);var _0x9494x3=mxUtils[_0x7ddb[445]](this[_0x7ddb[1179]][_0x7ddb[526]]),_0x9494x4=_0x9494x3[_0x7ddb[235]]+ 10,_0x9494x3=_0x9494x3[_0x7ddb[236]];if(null!= this[_0x7ddb[716]]&& !this[_0x7ddb[3139]]){_0x9494x4= this[_0x7ddb[716]][_0x7ddb[730]](),_0x9494x3= this[_0x7ddb[716]][_0x7ddb[732]]()}else {var _0x9494x5=this[_0x7ddb[1179]][_0x7ddb[2555]](_0x9494x2);null!= _0x9494x5&& (_0x9494x4+= _0x9494x5[_0x7ddb[235]]+ Math[_0x7ddb[243]](200,_0x9494x5[_0x7ddb[117]]),_0x9494x3+= _0x9494x5[_0x7ddb[236]])};this[_0x7ddb[3062]]();_0x9494x2= this[_0x7ddb[3219]](_0x9494x2);null!= _0x9494x2&& (this[_0x7ddb[716]]= new mxWindow(mxResources[_0x7ddb[203]](this[_0x7ddb[3110]])|| this[_0x7ddb[3110]],_0x9494x2,_0x9494x4,_0x9494x3,this[_0x7ddb[3137]],this[_0x7ddb[3138]],!1),this[_0x7ddb[716]][_0x7ddb[175]](!0))}};mxEditor[_0x7ddb[202]][_0x7ddb[3220]]= function(){return null!= this[_0x7ddb[716]]};mxEditor[_0x7ddb[202]][_0x7ddb[3219]]= function(_0x9494x2){var _0x9494x3=this[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494x4=_0x9494x3[_0x7ddb[433]](_0x9494x2);if(mxUtils[_0x7ddb[1331]](_0x9494x4)){var _0x9494x5= new mxForm(_0x7ddb[716]);_0x9494x5[_0x7ddb[961]](_0x7ddb[3222],_0x9494x2[_0x7ddb[1103]]())[_0x7ddb[57]](_0x7ddb[3221],_0x7ddb[128]);var _0x9494x9=null,_0x9494xa=null,_0x9494x12=null,_0x9494x13=null,_0x9494x14=null;_0x9494x3[_0x7ddb[1193]](_0x9494x2)&& (_0x9494x9= _0x9494x3[_0x7ddb[1721]](_0x9494x2),null!= _0x9494x9&& (_0x9494xa= _0x9494x5[_0x7ddb[961]](_0x7ddb[125],_0x9494x9[_0x7ddb[236]]),_0x9494x12= _0x9494x5[_0x7ddb[961]](_0x7ddb[361],_0x9494x9[_0x7ddb[235]]),_0x9494x13= _0x9494x5[_0x7ddb[961]](_0x7ddb[117],_0x9494x9[_0x7ddb[117]]),_0x9494x14= _0x9494x5[_0x7ddb[961]](_0x7ddb[119],_0x9494x9[_0x7ddb[119]])));for(var _0x9494x15=_0x9494x3[_0x7ddb[474]](_0x9494x2),_0x9494x16=_0x9494x5[_0x7ddb[961]](_0x7ddb[3223],_0x9494x15|| _0x7ddb[110]),_0x9494x17=_0x9494x4[_0x7ddb[320]],_0x9494x18=[],_0x9494x4=0;_0x9494x4< _0x9494x17[_0x7ddb[67]];_0x9494x4++){_0x9494x18[_0x9494x4]= _0x9494x5[_0x7ddb[968]](_0x9494x17[_0x9494x4][_0x7ddb[301]],_0x9494x17[_0x9494x4][_0x7ddb[318]],_0x7ddb[685]== _0x9494x17[_0x9494x4][_0x7ddb[301]]?4:2)};_0x9494x4= mxUtils[_0x7ddb[885]](this,function(){this[_0x7ddb[3062]]();_0x9494x3[_0x7ddb[473]]();try{null!= _0x9494x9&& (_0x9494x9= _0x9494x9[_0x7ddb[238]](),_0x9494x9[_0x7ddb[235]]= parseFloat(_0x9494x12[_0x7ddb[131]]),_0x9494x9[_0x7ddb[236]]= parseFloat(_0x9494xa[_0x7ddb[131]]),_0x9494x9[_0x7ddb[117]]= parseFloat(_0x9494x13[_0x7ddb[131]]),_0x9494x9[_0x7ddb[119]]= parseFloat(_0x9494x14[_0x7ddb[131]]),_0x9494x3[_0x7ddb[1724]](_0x9494x2,_0x9494x9));0< _0x9494x16[_0x7ddb[131]][_0x7ddb[67]]?_0x9494x3[_0x7ddb[475]](_0x9494x2,_0x9494x16[_0x7ddb[131]]):_0x9494x3[_0x7ddb[475]](_0x9494x2,null);for(var _0x9494x4=0;_0x9494x4< _0x9494x17[_0x7ddb[67]];_0x9494x4++){var _0x9494x5= new mxCellAttributeChange(_0x9494x2,_0x9494x17[_0x9494x4][_0x7ddb[301]],_0x9494x18[_0x9494x4][_0x7ddb[131]]);_0x9494x3[_0x7ddb[350]](_0x9494x5)};this[_0x7ddb[1179]][_0x7ddb[2455]](_0x9494x2)&& this[_0x7ddb[1179]][_0x7ddb[858]](_0x9494x2)}finally{_0x9494x3[_0x7ddb[476]]()}});_0x9494x15= mxUtils[_0x7ddb[885]](this,function(){this[_0x7ddb[3062]]()});_0x9494x5[_0x7ddb[956]](_0x9494x4,_0x9494x15);return _0x9494x5[_0x7ddb[116]]};return null};mxEditor[_0x7ddb[202]][_0x7ddb[3062]]= function(){null!= this[_0x7ddb[716]]&& (this[_0x7ddb[716]][_0x7ddb[515]](),this[_0x7ddb[716]]= null)};mxEditor[_0x7ddb[202]][_0x7ddb[3175]]= function(){if(null== this[_0x7ddb[3112]]){var _0x9494x2=document[_0x7ddb[55]](_0x7ddb[485]);_0x9494x2[_0x7ddb[124]][_0x7ddb[549]]= _0x7ddb[952];_0x9494x2[_0x7ddb[124]][_0x7ddb[357]]= _0x7ddb[550];var _0x9494x3=document[_0x7ddb[112]][_0x7ddb[159]],_0x9494x3= new mxWindow(mxResources[_0x7ddb[203]](this[_0x7ddb[3111]])|| this[_0x7ddb[3111]],_0x9494x2,_0x9494x3- 220,this[_0x7ddb[3132]],200);_0x9494x3[_0x7ddb[164]](!0);_0x9494x3[_0x7ddb[165]]= !1;var _0x9494x4=mxUtils[_0x7ddb[885]](this,function(_0x9494x3){mxEvent[_0x7ddb[762]](_0x9494x2);_0x9494x2[_0x7ddb[339]]= _0x7ddb[110];this[_0x7ddb[3224]](_0x9494x2)});this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[169]](mxEvent.CHANGE,_0x9494x4);this[_0x7ddb[1179]][_0x7ddb[2435]]()[_0x7ddb[169]](mxEvent.CHANGE,_0x9494x4);this[_0x7ddb[1179]][_0x7ddb[169]](mxEvent.ROOT,_0x9494x4);null!= this[_0x7ddb[3131]]&& _0x9494x3[_0x7ddb[951]](this[_0x7ddb[3131]]);this[_0x7ddb[3112]]= _0x9494x3;this[_0x7ddb[3224]](_0x9494x2)};this[_0x7ddb[3112]][_0x7ddb[175]](!0)};mxEditor[_0x7ddb[202]][_0x7ddb[3225]]= function(_0x9494x2){null!= this[_0x7ddb[3112]]&& (_0x9494x2= this[_0x7ddb[3112]][_0x7ddb[905]],mxEvent[_0x7ddb[762]](_0x9494x2),_0x9494x2[_0x7ddb[339]]= _0x7ddb[110],this[_0x7ddb[3224]](_0x9494x2))};mxEditor[_0x7ddb[202]][_0x7ddb[3224]]= function(_0x9494x2){};mxEditor[_0x7ddb[202]][_0x7ddb[3177]]= function(_0x9494x2){if(null== this[_0x7ddb[2719]]){var _0x9494x3=document[_0x7ddb[55]](_0x7ddb[389]);_0x9494x3[_0x7ddb[57]](_0x7ddb[390],mxResources[_0x7ddb[203]](_0x7ddb[3134])|| this[_0x7ddb[3134]]);_0x9494x3[_0x7ddb[57]](_0x7ddb[119],_0x7ddb[118]);_0x9494x3[_0x7ddb[57]](_0x7ddb[117],_0x7ddb[118]);_0x9494x3[_0x7ddb[57]](_0x7ddb[3226],_0x7ddb[468]);_0x9494x3[_0x7ddb[124]][_0x7ddb[1028]]= _0x7ddb[1391];_0x9494x2= document[_0x7ddb[112]][_0x7ddb[159]];var _0x9494x4=document[_0x7ddb[112]][_0x7ddb[157]]|| document[_0x7ddb[158]][_0x7ddb[157]],_0x9494x5= new mxWindow(mxResources[_0x7ddb[203]](this[_0x7ddb[3113]])|| this[_0x7ddb[3113]],_0x9494x3,(_0x9494x2- this[_0x7ddb[3135]])/ 2,(_0x9494x4- this[_0x7ddb[3136]])/ 3,this[_0x7ddb[3135]],this[_0x7ddb[3136]]);_0x9494x5[_0x7ddb[161]](!0);_0x9494x5[_0x7ddb[164]](!0);_0x9494x5[_0x7ddb[165]]= !1;_0x9494x5[_0x7ddb[163]](!0);null!= this[_0x7ddb[3133]]&& _0x9494x5[_0x7ddb[951]](this[_0x7ddb[3133]]);mxClient[_0x7ddb[133]]&& (_0x9494x2= function(_0x9494x2){_0x9494x3[_0x7ddb[57]](_0x7ddb[119],_0x9494x5[_0x7ddb[485]][_0x7ddb[167]]- 26+ _0x7ddb[168])},_0x9494x5[_0x7ddb[169]](mxEvent.RESIZE_END,_0x9494x2),_0x9494x5[_0x7ddb[169]](mxEvent.MAXIMIZE,_0x9494x2),_0x9494x5[_0x7ddb[169]](mxEvent.NORMALIZE,_0x9494x2),_0x9494x5[_0x7ddb[169]](mxEvent.SHOW,_0x9494x2));this[_0x7ddb[2719]]= _0x9494x5};this[_0x7ddb[2719]][_0x7ddb[175]](!0)};mxEditor[_0x7ddb[202]][_0x7ddb[3179]]= function(){if(null== this[_0x7ddb[2136]]){var _0x9494x2=document[_0x7ddb[55]](_0x7ddb[485]);_0x9494x2[_0x7ddb[124]][_0x7ddb[277]]= _0x7ddb[188];_0x9494x2[_0x7ddb[124]][_0x7ddb[117]]= _0x7ddb[118];_0x9494x2[_0x7ddb[124]][_0x7ddb[119]]= _0x7ddb[118];_0x9494x2[_0x7ddb[124]][_0x7ddb[1537]]= _0x7ddb[1391];_0x9494x2[_0x7ddb[124]][_0x7ddb[270]]= _0x7ddb[582];var _0x9494x3= new mxWindow(mxResources[_0x7ddb[203]](this[_0x7ddb[3114]])|| this[_0x7ddb[3114]],_0x9494x2,600,480,200,200,!1),_0x9494x4= new mxOutline(this[_0x7ddb[1179]],_0x9494x2);_0x9494x3[_0x7ddb[164]](!0);_0x9494x3[_0x7ddb[163]](!0);_0x9494x3[_0x7ddb[165]]= !1;_0x9494x3[_0x7ddb[169]](mxEvent.RESIZE_END,function(){_0x9494x4[_0x7ddb[2729]]()});this[_0x7ddb[2136]]= _0x9494x3;this[_0x7ddb[2136]][_0x7ddb[2136]]= _0x9494x4};this[_0x7ddb[2136]][_0x7ddb[175]](!0);this[_0x7ddb[2136]][_0x7ddb[2136]][_0x7ddb[2729]](!0)};mxEditor[_0x7ddb[202]][_0x7ddb[3086]]= function(_0x9494x2){_0x7ddb[804]== _0x9494x2?(this[_0x7ddb[1179]][_0x7ddb[2316]][_0x7ddb[2840]]= !1,this[_0x7ddb[1179]][_0x7ddb[1995]](!1)):_0x7ddb[807]== _0x9494x2?(this[_0x7ddb[1179]][_0x7ddb[2316]][_0x7ddb[2840]]= !1,this[_0x7ddb[1179]][_0x7ddb[1995]](!0)):_0x7ddb[796]== _0x9494x2&& (this[_0x7ddb[1179]][_0x7ddb[2316]][_0x7ddb[2840]]= !0,this[_0x7ddb[1179]][_0x7ddb[1995]](!1))};mxEditor[_0x7ddb[202]][_0x7ddb[3195]]= function(_0x9494x2,_0x9494x3,_0x9494x4){this[_0x7ddb[3094]][_0x7ddb[3065]](this,_0x9494x2,_0x9494x3,_0x9494x4)};mxEditor[_0x7ddb[202]][_0x7ddb[2503]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=null;if(null!= this[_0x7ddb[2075]]){_0x9494x4= this[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[1978]](this[_0x7ddb[2075]])}else {_0x9494x4= new mxCell(_0x7ddb[110]);_0x9494x4[_0x7ddb[1994]](!0);var _0x9494x5= new mxGeometry;_0x9494x5[_0x7ddb[1500]]= !0;_0x9494x4[_0x7ddb[1724]](_0x9494x5)};_0x9494x5= this[_0x7ddb[2291]]();null!= _0x9494x5&& _0x9494x4[_0x7ddb[475]](_0x9494x5);return _0x9494x4};mxEditor[_0x7ddb[202]][_0x7ddb[2291]]= function(){return this[_0x7ddb[3119]]};mxEditor[_0x7ddb[202]][_0x7ddb[3227]]= function(_0x9494x2){return null!= this[_0x7ddb[3093]]&& 0< this[_0x7ddb[3093]][_0x7ddb[67]]&& this[_0x7ddb[1179]][_0x7ddb[1730]](_0x9494x2)?this[_0x7ddb[3093]][this[_0x7ddb[3130]]++ % this[_0x7ddb[3093]][_0x7ddb[67]]]:null};mxEditor[_0x7ddb[202]][_0x7ddb[3228]]= function(_0x9494x2){if(null!= this[_0x7ddb[3100]]){var _0x9494x3=this[_0x7ddb[3227]](_0x9494x2);null!= _0x9494x3&& _0x9494x2[_0x7ddb[475]](_0x9494x2[_0x7ddb[474]]()+ _0x7ddb[471]+ this[_0x7ddb[3100]]+ _0x7ddb[226]+ _0x9494x3)}};mxEditor[_0x7ddb[202]][_0x7ddb[817]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){for(var _0x9494x9=this[_0x7ddb[1179]][_0x7ddb[502]]();null!= _0x9494x2&& !this[_0x7ddb[1179]][_0x7ddb[2685]](_0x9494x2);){_0x9494x2= _0x9494x9[_0x7ddb[1197]](_0x9494x2)};_0x9494x2= null!= _0x9494x2?_0x9494x2:this[_0x7ddb[1179]][_0x7ddb[2461]](_0x9494x4,_0x9494x5);var _0x9494xa=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[255]],_0x9494x12=_0x9494x9[_0x7ddb[1721]](_0x9494x3),_0x9494x13=_0x9494x9[_0x7ddb[1721]](_0x9494x2);if(this[_0x7ddb[1179]][_0x7ddb[1730]](_0x9494x3)&& !this[_0x7ddb[1179]][_0x7ddb[2412]]){_0x9494x2= null}else {if(null== _0x9494x2&& this[_0x7ddb[3116]]){return null};if(null!= _0x9494x2&& null!= _0x9494x13){var _0x9494x14=this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[248]](_0x9494x2);if(null!= _0x9494x14){if(_0x9494x4-= _0x9494x14[_0x7ddb[2078]][_0x7ddb[235]]* _0x9494xa,_0x9494x5-= _0x9494x14[_0x7ddb[2078]][_0x7ddb[236]]* _0x9494xa,this[_0x7ddb[1179]][_0x7ddb[3229]]){var _0x9494x13=_0x9494x12[_0x7ddb[117]],_0x9494x15=_0x9494x12[_0x7ddb[119]],_0x9494x16=_0x9494x14[_0x7ddb[235]]+ _0x9494x14[_0x7ddb[117]];_0x9494x4+ _0x9494x13> _0x9494x16&& (_0x9494x4-= _0x9494x4+ _0x9494x13- _0x9494x16);_0x9494x16= _0x9494x14[_0x7ddb[236]]+ _0x9494x14[_0x7ddb[119]];_0x9494x5+ _0x9494x15> _0x9494x16&& (_0x9494x5-= _0x9494x5+ _0x9494x15- _0x9494x16)}}else {null!= _0x9494x13&& (_0x9494x4-= _0x9494x13[_0x7ddb[235]]* _0x9494xa,_0x9494x5-= _0x9494x13[_0x7ddb[236]]* _0x9494xa)}}};_0x9494x12= _0x9494x12[_0x7ddb[238]]();_0x9494x12[_0x7ddb[235]]= this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x4/ _0x9494xa- this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[513]][_0x7ddb[235]]- this[_0x7ddb[1179]][_0x7ddb[1020]]/ 2);_0x9494x12[_0x7ddb[236]]= this[_0x7ddb[1179]][_0x7ddb[1021]](_0x9494x5/ _0x9494xa- this[_0x7ddb[1179]][_0x7ddb[249]]()[_0x7ddb[513]][_0x7ddb[236]]- this[_0x7ddb[1179]][_0x7ddb[1020]]/ 2);_0x9494x3[_0x7ddb[1724]](_0x9494x12);null== _0x9494x2&& (_0x9494x2= this[_0x7ddb[1179]][_0x7ddb[902]]());this[_0x7ddb[3228]](_0x9494x3);this[_0x7ddb[746]]( new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,_0x7ddb[1988],_0x9494x3,_0x7ddb[1101],_0x9494x2));_0x9494x9[_0x7ddb[473]]();try{_0x9494x3= this[_0x7ddb[1179]][_0x7ddb[2103]](_0x9494x3,_0x9494x2),null!= _0x9494x3&& (this[_0x7ddb[1179]][_0x7ddb[2509]](_0x9494x3),this[_0x7ddb[746]]( new mxEventObject(mxEvent.ADD_VERTEX,_0x7ddb[1988],_0x9494x3)))}finally{_0x9494x9[_0x7ddb[476]]()};null!= _0x9494x3&& (this[_0x7ddb[1179]][_0x7ddb[2450]](_0x9494x3),this[_0x7ddb[1179]][_0x7ddb[2564]](_0x9494x3),this[_0x7ddb[746]]( new mxEventObject(mxEvent.AFTER_ADD_VERTEX,_0x7ddb[1988],_0x9494x3)));return _0x9494x3};mxEditor[_0x7ddb[202]][_0x7ddb[515]]= function(){this[_0x7ddb[2717]]|| (this[_0x7ddb[2717]]= !0,null!= this[_0x7ddb[3112]]&& this[_0x7ddb[3112]][_0x7ddb[515]](),null!= this[_0x7ddb[2136]]&& this[_0x7ddb[2136]][_0x7ddb[515]](),null!= this[_0x7ddb[716]]&& this[_0x7ddb[716]][_0x7ddb[515]](),null!= this[_0x7ddb[3098]]&& this[_0x7ddb[3098]][_0x7ddb[515]](),null!= this[_0x7ddb[3203]]&& this[_0x7ddb[3203]][_0x7ddb[515]](),null!= this[_0x7ddb[3082]]&& this[_0x7ddb[3082]][_0x7ddb[515]](),null!= this[_0x7ddb[1179]]&& this[_0x7ddb[1179]][_0x7ddb[515]](),this[_0x7ddb[3118]]= this[_0x7ddb[879]]= null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(_0x9494x2){if(null!= _0x9494x2){var _0x9494x3=_0x9494x2[_0x7ddb[718]]();mxCodecRegistry[_0x7ddb[3230]][_0x9494x3]= _0x9494x2;var _0x9494x4=mxUtils[_0x7ddb[197]](_0x9494x2[_0x7ddb[3231]][_0x7ddb[196]]);_0x9494x4!= _0x9494x3&& mxCodecRegistry[_0x7ddb[3232]](_0x9494x4,_0x9494x3)};return _0x9494x2},addAlias:function(_0x9494x2,_0x9494x3){mxCodecRegistry[_0x7ddb[3233]][_0x9494x2]= _0x9494x3},getCodec:function(_0x9494x2){var _0x9494x3=null;if(null!= _0x9494x2){var _0x9494x3=mxUtils[_0x7ddb[197]](_0x9494x2),_0x9494x4=mxCodecRegistry[_0x7ddb[3233]][_0x9494x3];null!= _0x9494x4&& (_0x9494x3= _0x9494x4);_0x9494x3= mxCodecRegistry[_0x7ddb[3230]][_0x9494x3];if(null== _0x9494x3){try{_0x9494x3= new mxObjectCodec( new _0x9494x2),mxCodecRegistry[_0x7ddb[3234]](_0x9494x3)}catch(d){}}};return _0x9494x3}};function mxCodec(_0x9494x2){this[_0x7ddb[395]]= _0x9494x2|| mxUtils[_0x7ddb[306]]();this[_0x7ddb[68]]= []}mxCodec[_0x7ddb[202]][_0x7ddb[395]]= null;mxCodec[_0x7ddb[202]][_0x7ddb[68]]= null;mxCodec[_0x7ddb[202]][_0x7ddb[3235]]= !1;mxCodec[_0x7ddb[202]][_0x7ddb[1104]]= function(_0x9494x2,_0x9494x3){return this[_0x7ddb[68]][_0x9494x2]= _0x9494x3};mxCodec[_0x7ddb[202]][_0x7ddb[3236]]= function(_0x9494x2){var _0x9494x3=null;null!= _0x9494x2&& (_0x9494x3= this[_0x7ddb[68]][_0x9494x2],null== _0x9494x3&& (_0x9494x3= this[_0x7ddb[1060]](_0x9494x2),null== _0x9494x3&& (_0x9494x2= this[_0x7ddb[1362]](_0x9494x2),null!= _0x9494x2&& (_0x9494x3= this[_0x7ddb[1093]](_0x9494x2)))));return _0x9494x3};mxCodec[_0x7ddb[202]][_0x7ddb[1060]]= function(_0x9494x2){return null};mxCodec[_0x7ddb[202]][_0x7ddb[1362]]= function(_0x9494x2,_0x9494x3){return mxUtils[_0x7ddb[290]](this[_0x7ddb[395]][_0x7ddb[158]],null!= _0x9494x3?_0x9494x3:_0x7ddb[1363],_0x9494x2)};mxCodec[_0x7ddb[202]][_0x7ddb[1103]]= function(_0x9494x2){var _0x9494x3=null;null!= _0x9494x2&& (_0x9494x3= this[_0x7ddb[3237]](_0x9494x2),null== _0x9494x3&& _0x9494x2 instanceof mxCell&& (_0x9494x3= _0x9494x2[_0x7ddb[1103]](),null== _0x9494x3&& (_0x9494x3= mxCellPath[_0x7ddb[385]](_0x9494x2),0== _0x9494x3[_0x7ddb[67]]&& (_0x9494x3= _0x7ddb[813]))));return _0x9494x3};mxCodec[_0x7ddb[202]][_0x7ddb[3237]]= function(_0x9494x2){return null};mxCodec[_0x7ddb[202]][_0x7ddb[514]]= function(_0x9494x2){var _0x9494x3=null;if(null!= _0x9494x2&& null!= _0x9494x2[_0x7ddb[196]]){var _0x9494x4=mxCodecRegistry[_0x7ddb[3238]](_0x9494x2[_0x7ddb[196]]);null!= _0x9494x4?_0x9494x3= _0x9494x4[_0x7ddb[514]](this,_0x9494x2):mxUtils[_0x7ddb[1331]](_0x9494x2)?_0x9494x3= mxClient[_0x7ddb[80]]?_0x9494x2[_0x7ddb[511]](!0):this[_0x7ddb[395]][_0x7ddb[3239]](_0x9494x2,!0):mxLog[_0x7ddb[283]](_0x7ddb[3240]+ mxUtils[_0x7ddb[197]](_0x9494x2[_0x7ddb[196]]))};return _0x9494x3};mxCodec[_0x7ddb[202]][_0x7ddb[1093]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=null;if(null!= _0x9494x2&& _0x9494x2[_0x7ddb[288]]== mxConstants[_0x7ddb[289]]){var _0x9494x5=null;try{_0x9494x5= eval(_0x9494x2[_0x7ddb[301]])}catch(e){};try{var _0x9494xa=mxCodecRegistry[_0x7ddb[3238]](_0x9494x5);null!= _0x9494xa?_0x9494x4= _0x9494xa[_0x7ddb[1093]](this,_0x9494x2,_0x9494x3):(_0x9494x4= _0x9494x2[_0x7ddb[511]](!0),_0x9494x4[_0x7ddb[1390]](_0x7ddb[3069]))}catch(g){mxLog[_0x7ddb[143]](_0x7ddb[3241]+ _0x9494x2[_0x7ddb[301]]+ _0x7ddb[3186]+ g[_0x7ddb[281]])}};return _0x9494x4};mxCodec[_0x7ddb[202]][_0x7ddb[3242]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x3[_0x7ddb[62]](this[_0x7ddb[514]](_0x9494x2));if(null== _0x9494x4|| _0x9494x4){_0x9494x4= _0x9494x2[_0x7ddb[262]]();for(var _0x9494x5=0;_0x9494x5< _0x9494x4;_0x9494x5++){this[_0x7ddb[3242]](_0x9494x2[_0x7ddb[263]](_0x9494x5),_0x9494x3)}}};mxCodec[_0x7ddb[202]][_0x7ddb[3243]]= function(_0x9494x2){return null!= _0x9494x2&& _0x7ddb[279]== typeof _0x9494x2[_0x7ddb[3243]]?_0x9494x2[_0x7ddb[3243]]():!1};mxCodec[_0x7ddb[202]][_0x7ddb[3244]]= function(_0x9494x2,_0x9494x3){_0x9494x3= null!= _0x9494x3?_0x9494x3:!0;var _0x9494x4=null;if(null!= _0x9494x2&& _0x9494x2[_0x7ddb[288]]== mxConstants[_0x7ddb[289]]){_0x9494x4= mxCodecRegistry[_0x7ddb[3238]](_0x9494x2[_0x7ddb[301]]);if(!this[_0x7ddb[3243]](_0x9494x4)){for(var _0x9494x5=_0x9494x2[_0x7ddb[285]];null!= _0x9494x5&& !this[_0x7ddb[3243]](_0x9494x4);){_0x9494x4= mxCodecRegistry[_0x7ddb[3238]](_0x9494x5[_0x7ddb[301]]),_0x9494x5= _0x9494x5[_0x7ddb[287]]}};this[_0x7ddb[3243]](_0x9494x4)|| (_0x9494x4= mxCodecRegistry[_0x7ddb[3238]](mxCell));_0x9494x4= _0x9494x4[_0x7ddb[1093]](this,_0x9494x2);_0x9494x3&& this[_0x7ddb[3245]](_0x9494x4)};return _0x9494x4};mxCodec[_0x7ddb[202]][_0x7ddb[3245]]= function(_0x9494x2){var _0x9494x3=_0x9494x2[_0x7ddb[1101]],_0x9494x4=_0x9494x2[_0x7ddb[1709]](!0),_0x9494x5=_0x9494x2[_0x7ddb[1709]](!1);_0x9494x2[_0x7ddb[1957]](null,!1);_0x9494x2[_0x7ddb[1957]](null,!0);_0x9494x2[_0x7ddb[1101]]= null;null!= _0x9494x3&& _0x9494x3[_0x7ddb[1937]](_0x9494x2);null!= _0x9494x4&& _0x9494x4[_0x7ddb[1960]](_0x9494x2,!0);null!= _0x9494x5&& _0x9494x5[_0x7ddb[1960]](_0x9494x2,!1)};mxCodec[_0x7ddb[202]][_0x7ddb[57]]= function(_0x9494x2,_0x9494x3,_0x9494x4){null!= _0x9494x3&& null!= _0x9494x4&& _0x9494x2[_0x7ddb[57]](_0x9494x3,_0x9494x4)};function mxObjectCodec(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){this[_0x7ddb[3231]]= _0x9494x2;this[_0x7ddb[3246]]= null!= _0x9494x3?_0x9494x3:[];this[_0x7ddb[3247]]= null!= _0x9494x4?_0x9494x4:[];this[_0x7ddb[3248]]= null!= _0x9494x5?_0x9494x5:[];this[_0x7ddb[3249]]= {};for(var _0x9494x9 in this[_0x7ddb[3248]]){this[_0x7ddb[3249]][this[_0x7ddb[3248]][_0x9494x9]]= _0x9494x9}}mxObjectCodec[_0x7ddb[202]][_0x7ddb[3231]]= null;mxObjectCodec[_0x7ddb[202]][_0x7ddb[3246]]= null;mxObjectCodec[_0x7ddb[202]][_0x7ddb[3247]]= null;mxObjectCodec[_0x7ddb[202]][_0x7ddb[3248]]= null;mxObjectCodec[_0x7ddb[202]][_0x7ddb[3249]]= null;mxObjectCodec[_0x7ddb[202]][_0x7ddb[718]]= function(){return mxUtils[_0x7ddb[197]](this[_0x7ddb[3231]][_0x7ddb[196]])};mxObjectCodec[_0x7ddb[202]][_0x7ddb[3250]]= function(){return new this[_0x7ddb[3231]][_0x7ddb[196]]};mxObjectCodec[_0x7ddb[202]][_0x7ddb[3251]]= function(_0x9494x2){if(null!= _0x9494x2){var _0x9494x3=this[_0x7ddb[3249]][_0x9494x2];null!= _0x9494x3&& (_0x9494x2= _0x9494x3)};return _0x9494x2};mxObjectCodec[_0x7ddb[202]][_0x7ddb[3252]]= function(_0x9494x2){if(null!= _0x9494x2){var _0x9494x3=this[_0x7ddb[3248]][_0x9494x2];null!= _0x9494x3&& (_0x9494x2= _0x9494x3)};return _0x9494x2};mxObjectCodec[_0x7ddb[202]][_0x7ddb[3253]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){return _0x9494x3== mxObjectIdentity[_0x7ddb[195]]|| 0<= mxUtils[_0x7ddb[2]](this[_0x7ddb[3246]],_0x9494x3)};mxObjectCodec[_0x7ddb[202]][_0x7ddb[3254]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){return 0<= mxUtils[_0x7ddb[2]](this[_0x7ddb[3247]],_0x9494x3)};mxObjectCodec[_0x7ddb[202]][_0x7ddb[514]]= function(_0x9494x2,_0x9494x3){var _0x9494x4=_0x9494x2[_0x7ddb[395]][_0x7ddb[55]](this[_0x7ddb[718]]());_0x9494x3= this[_0x7ddb[3255]](_0x9494x2,_0x9494x3,_0x9494x4);this[_0x7ddb[3256]](_0x9494x2,_0x9494x3,_0x9494x4);return this[_0x7ddb[3257]](_0x9494x2,_0x9494x3,_0x9494x4)};mxObjectCodec[_0x7ddb[202]][_0x7ddb[3256]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x2[_0x7ddb[57]](_0x9494x4,_0x7ddb[1363],_0x9494x2[_0x7ddb[1103]](_0x9494x3));for(var _0x9494x5 in _0x9494x3){var _0x9494x9=_0x9494x5,_0x9494xa=_0x9494x3[_0x9494x9];null!= _0x9494xa&& !this[_0x7ddb[3253]](_0x9494x3,_0x9494x9,_0x9494xa,!0)&& (mxUtils[_0x7ddb[1946]](_0x9494x9)&& (_0x9494x9= null),this[_0x7ddb[3258]](_0x9494x2,_0x9494x3,_0x9494x9,_0x9494xa,_0x9494x4))}};mxObjectCodec[_0x7ddb[202]][_0x7ddb[3258]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){if(null!= _0x9494x5){if(this[_0x7ddb[3254]](_0x9494x3,_0x9494x4,_0x9494x5,!0)){var _0x9494xa=_0x9494x2[_0x7ddb[1103]](_0x9494x5);if(null== _0x9494xa){mxLog[_0x7ddb[283]](_0x7ddb[3259]+ this[_0x7ddb[718]]()+ _0x7ddb[87]+ _0x9494x4+ _0x7ddb[226]+ _0x9494x5);return};_0x9494x5= _0x9494xa};_0x9494xa= this[_0x7ddb[3231]][_0x9494x4];if(null== _0x9494x4|| _0x9494x2[_0x7ddb[3235]]|| _0x9494xa!= _0x9494x5){_0x9494x4= this[_0x7ddb[3252]](_0x9494x4),this[_0x7ddb[3260]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9)}}};mxObjectCodec[_0x7ddb[202]][_0x7ddb[3260]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x7ddb[194]!= typeof _0x9494x5?this[_0x7ddb[3261]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9):this[_0x7ddb[3262]](_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9)};mxObjectCodec[_0x7ddb[202]][_0x7ddb[3261]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x9494x5= this[_0x7ddb[3263]](_0x9494x5);null== _0x9494x4?(_0x9494x3= _0x9494x2[_0x7ddb[395]][_0x7ddb[55]](_0x7ddb[99]),_0x7ddb[279]== typeof _0x9494x5?_0x9494x3[_0x7ddb[62]](_0x9494x2[_0x7ddb[395]][_0x7ddb[344]](_0x9494x5)):_0x9494x2[_0x7ddb[57]](_0x9494x3,_0x7ddb[131],_0x9494x5),_0x9494x9[_0x7ddb[62]](_0x9494x3)):_0x7ddb[279]!= typeof _0x9494x5&& _0x9494x2[_0x7ddb[57]](_0x9494x9,_0x9494x4,_0x9494x5)};mxObjectCodec[_0x7ddb[202]][_0x7ddb[3262]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5,_0x9494x9){_0x9494x2= _0x9494x2[_0x7ddb[514]](_0x9494x5);null!= _0x9494x2?(null!= _0x9494x4&& _0x9494x2[_0x7ddb[57]](_0x7ddb[3069],_0x9494x4),_0x9494x9[_0x7ddb[62]](_0x9494x2)):mxLog[_0x7ddb[283]](_0x7ddb[3264]+ this[_0x7ddb[718]]()+ _0x7ddb[87]+ _0x9494x4+ _0x7ddb[3186]+ _0x9494x5)};mxObjectCodec[_0x7ddb[202]][_0x7ddb[3263]]= function(_0x9494x2){if(_0x7ddb[82]== typeof _0x9494x2[_0x7ddb[67]]&& (!0== _0x9494x2 || !1== _0x9494x2)){_0x9494x2= !0== _0x9494x2?_0x7ddb[500]:_0x7ddb[468]};return _0x9494x2};mxObjectCodec[_0x7ddb[202]][_0x7ddb[3265]]= function(_0x9494x2){mxUtils[_0x7ddb[1946]](_0x9494x2)&& (_0x9494x2= parseFloat(_0x9494x2));return _0x9494x2};mxObjectCodec[_0x7ddb[202]][_0x7ddb[3255]]= function(_0x9494x2,_0x9494x3,_0x9494x4){return _0x9494x3};mxObjectCodec[_0x7ddb[202]][_0x7ddb[3257]]= function(_0x9494x2,_0x9494x3,_0x9494x4){return _0x9494x4};mxObjectCodec[_0x7ddb[202]][_0x7ddb[1093]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=_0x9494x3[_0x7ddb[284]](_0x7ddb[1363]),_0x9494x9=_0x9494x2[_0x7ddb[68]][_0x9494x5];null== _0x9494x9&& (_0x9494x9= _0x9494x4|| this[_0x7ddb[3250]](),null!= _0x9494x5&& _0x9494x2[_0x7ddb[1104]](_0x9494x5,_0x9494x9));_0x9494x3= this[_0x7ddb[3266]](_0x9494x2,_0x9494x3,_0x9494x9);this[_0x7ddb[3267]](_0x9494x2,_0x9494x3,_0x9494x9);return this[_0x7ddb[3268]](_0x9494x2,_0x9494x3,_0x9494x9)};mxObjectCodec[_0x7ddb[202]][_0x7ddb[3267]]= function(_0x9494x2,_0x9494x3,_0x9494x4){null!= _0x9494x3&& (this[_0x7ddb[3269]](_0x9494x2,_0x9494x3,_0x9494x4),this[_0x7ddb[3270]](_0x9494x2,_0x9494x3,_0x9494x4))};mxObjectCodec[_0x7ddb[202]][_0x7ddb[3269]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x3= _0x9494x3[_0x7ddb[320]];if(null!= _0x9494x3){for(var _0x9494x5=0;_0x9494x5< _0x9494x3[_0x7ddb[67]];_0x9494x5++){this[_0x7ddb[3271]](_0x9494x2,_0x9494x3[_0x9494x5],_0x9494x4)}}};mxObjectCodec[_0x7ddb[202]][_0x7ddb[3271]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=_0x9494x3[_0x7ddb[301]];if(_0x7ddb[3069]!= _0x9494x5&& _0x7ddb[1363]!= _0x9494x5){_0x9494x3= this[_0x7ddb[3265]](_0x9494x3[_0x7ddb[318]]);var _0x9494x9=this[_0x7ddb[3251]](_0x9494x5);if(this[_0x7ddb[3254]](_0x9494x4,_0x9494x9,_0x9494x3,!1)){_0x9494x2= _0x9494x2[_0x7ddb[3236]](_0x9494x3);if(null== _0x9494x2){mxLog[_0x7ddb[283]](_0x7ddb[3272]+ this[_0x7ddb[718]]()+ _0x7ddb[87]+ _0x9494x5+ _0x7ddb[226]+ _0x9494x3);return};_0x9494x3= _0x9494x2};this[_0x7ddb[3253]](_0x9494x4,_0x9494x5,_0x9494x3,!1)|| (_0x9494x4[_0x9494x5]= _0x9494x3)}};mxObjectCodec[_0x7ddb[202]][_0x7ddb[3270]]= function(_0x9494x2,_0x9494x3,_0x9494x4){for(_0x9494x3= _0x9494x3[_0x7ddb[285]];null!= _0x9494x3;){var _0x9494x5=_0x9494x3[_0x7ddb[287]];_0x9494x3[_0x7ddb[288]]== mxConstants[_0x7ddb[289]]&& !this[_0x7ddb[3273]](_0x9494x2,_0x9494x3,_0x9494x4)&& this[_0x7ddb[3274]](_0x9494x2,_0x9494x3,_0x9494x4);_0x9494x3= _0x9494x5}};mxObjectCodec[_0x7ddb[202]][_0x7ddb[3274]]= function(_0x9494x2,_0x9494x3,_0x9494x4){var _0x9494x5=this[_0x7ddb[3251]](_0x9494x3[_0x7ddb[284]](_0x7ddb[3069]));if(null== _0x9494x5|| !this[_0x7ddb[3253]](_0x9494x4,_0x9494x5,_0x9494x3,!1)){var _0x9494x9=this[_0x7ddb[3275]](_0x9494x4,_0x9494x5,_0x9494x3),_0x9494xa=null;_0x7ddb[99]== _0x9494x3[_0x7ddb[301]]?(_0x9494xa= _0x9494x3[_0x7ddb[284]](_0x7ddb[131]),null== _0x9494xa&& (_0x9494xa= mxUtils[_0x7ddb[1545]](mxUtils[_0x7ddb[329]](_0x9494x3)))):_0x9494xa= _0x9494x2[_0x7ddb[1093]](_0x9494x3,_0x9494x9);this[_0x7ddb[3276]](_0x9494x4,_0x9494x5,_0x9494xa,_0x9494x9)}};mxObjectCodec[_0x7ddb[202]][_0x7ddb[3275]]= function(_0x9494x2,_0x9494x3,_0x9494x4){_0x9494x2= _0x9494x2[_0x9494x3];_0x9494x2 instanceof Array&& 0< _0x9494x2[_0x7ddb[67]]&& (_0x9494x2= null);return _0x9494x2};mxObjectCodec[_0x7ddb[202]][_0x7ddb[3276]]= function(_0x9494x2,_0x9494x3,_0x9494x4,_0x9494x5){null!= _0x9494x4&& _0x9494x4!= _0x9494x5&& (null!= _0x9494x3&& 0< _0x9494x3[_0x7ddb[67]]?_0x9494x2[_0x9494x3]= _0x9494x4:_0x9494x2[_0x7ddb[207]](_0x9494x4))};mxObjectCodec[_0x7ddb[202]][_0x7ddb[3273]]= function(_0x9494x2,_0x9494x3,_0x9494x4){if(_0x7ddb[3277]== _0x9494x3[_0x7ddb[301]]){_0x9494x3= _0x9494x3[_0x7ddb[284]](_0x7ddb[298]);if(null!= _0x9494x3){try{var _0x9494x5=mxUtils[_0x7ddb[219]](_0x9494x3)[_0x7ddb[874]]();null!= _0x9494x5&& _0x9494x2[_0x7ddb[1093]](_0x9494x5,_0x9494x4)}catch(e){}};return !0};return !1};mxObjectCodec[_0x7ddb[202]][_0x7ddb[3266]]= function(_0x9494x2,_0x9494x3,_0x9494x4){return _0x9494x3};mxObjectCodec[_0x7ddb[202]][_0x7ddb[3268]]= function(_0x9494x2,_0x9494x3,_0x9494x4){return _0x9494x4};mxCodecRegistry[_0x7ddb[3234]](function(){var _0x9494x2= new mxObjectCodec( new mxCell,[_0x7ddb[1954],_0x7ddb[1842],_0x7ddb[1211],_0x7ddb[1991]],[_0x7ddb[1101],_0x7ddb[1097],_0x7ddb[772]]);_0x9494x2[_0x7ddb[3243]]= function(){return !0};_0x9494x2[_0x7ddb[3253]]= function(_0x9494x2,_0x9494x4,_0x9494x5,_0x9494x9){return mxObjectCodec[_0x7ddb[202]][_0x7ddb[3253]][_0x7ddb[183]](this,arguments)|| _0x9494x9&& _0x7ddb[131]== _0x9494x4&& _0x9494x5[_0x7ddb[288]]== mxConstants[_0x7ddb[289]]};_0x9494x2[_0x7ddb[3257]]= function(_0x9494x2,_0x9494x4,_0x9494x5){if(null!= _0x9494x4[_0x7ddb[131]]&& _0x9494x4[_0x7ddb[131]][_0x7ddb[288]]== mxConstants[_0x7ddb[289]]){var _0x9494x9=_0x9494x5;_0x9494x5= mxClient[_0x7ddb[80]]?_0x9494x4[_0x7ddb[131]][_0x7ddb[511]](!0):_0x9494x2[_0x7ddb[395]][_0x7ddb[3239]](_0x9494x4[_0x7ddb[131]],!0);_0x9494x5[_0x7ddb[62]](_0x9494x9);_0x9494x2= _0x9494x9[_0x7ddb[284]](_0x7ddb[1363]);_0x9494x5[_0x7ddb[57]](_0x7ddb[1363],_0x9494x2);_0x9494x9[_0x7ddb[1390]](_0x7ddb[1363])};return _0x9494x5};_0x9494x2[_0x7ddb[3266]]= function(_0x9494x2,_0x9494x4,_0x9494x5){var _0x9494x9=_0x9494x4,_0x9494xa=this[_0x7ddb[718]]();_0x9494x4[_0x7ddb[301]]!= _0x9494xa?(_0x9494x9= _0x9494x4[_0x7ddb[64]](_0x9494xa)[0],null!= _0x9494x9&& _0x9494x9[_0x7ddb[265]]== _0x9494x4?(mxUtils[_0x7ddb[3278]](_0x9494x9,!0),mxUtils[_0x7ddb[3278]](_0x9494x9,!1),_0x9494x9[_0x7ddb[265]][_0x7ddb[266]](_0x9494x9)):_0x9494x9= null,_0x9494x5[_0x7ddb[131]]= _0x9494x4[_0x7ddb[511]](!0),_0x9494x4= _0x9494x5[_0x7ddb[131]][_0x7ddb[284]](_0x7ddb[1363]),null!= _0x9494x4&& (_0x9494x5[_0x7ddb[1945]](_0x9494x4),_0x9494x5[_0x7ddb[131]][_0x7ddb[1390]](_0x7ddb[1363]))):_0x9494x5[_0x7ddb[1945]](_0x9494x4[_0x7ddb[284]](_0x7ddb[1363]));if(null!= _0x9494x9){for(_0x9494x4= 0;_0x9494x4< this[_0x7ddb[3247]][_0x7ddb[67]];_0x9494x4++){var _0x9494xa=this[_0x7ddb[3247]][_0x9494x4],_0x9494x12=_0x9494x9[_0x7ddb[284]](_0x9494xa);if(null!= _0x9494x12){_0x9494x9[_0x7ddb[1390]](_0x9494xa);var _0x9494x13=_0x9494x2[_0x7ddb[68]][_0x9494x12]|| _0x9494x2[_0x7ddb[1060]](_0x9494x12);null== _0x9494x13&& (_0x9494x12= _0x9494x2[_0x7ddb[1362]](_0x9494x12),null!= _0x9494x12&& (_0x9494x13= (mxCodecRegistry[_0x7ddb[3230]][_0x9494x12[_0x7ddb[301]]]|| this)[_0x7ddb[1093]](_0x9494x2,_0x9494x12)));_0x9494x5[_0x9494xa]= _0x9494x13}}};return _0x9494x9};return _0x9494x2}());mxCodecRegistry[_0x7ddb[3234]](function(){var _0x9494x2= new mxObjectCodec( new mxGraphModel);_0x9494x2[_0x7ddb[3256]]= function(_0x9494x2,_0x9494x4,_0x9494x5){var _0x9494x9=_0x9494x2[_0x7ddb[395]][_0x7ddb[55]](_0x7ddb[813]);_0x9494x2[_0x7ddb[3242]](_0x9494x4[_0x7ddb[501]](),_0x9494x9);_0x9494x5[_0x7ddb[62]](_0x9494x9)};_0x9494x2[_0x7ddb[3274]]= function(_0x9494x2,_0x9494x4,_0x9494x5){_0x7ddb[813]== _0x9494x4[_0x7ddb[301]]?this[_0x7ddb[3279]](_0x9494x2,_0x9494x4,_0x9494x5):mxObjectCodec[_0x7ddb[202]][_0x7ddb[3274]][_0x7ddb[183]](this,arguments)};_0x9494x2[_0x7ddb[3279]]= function(_0x9494x2,_0x9494x4,_0x9494x5){var _0x9494x9=null;for(_0x9494x4= _0x9494x4[_0x7ddb[285]];null!= _0x9494x4;){var _0x9494xa=_0x9494x2[_0x7ddb[3244]](_0x9494x4);null!= _0x9494xa&& null== _0x9494xa[_0x7ddb[1197]]()&& (_0x9494x9= _0x9494xa);_0x9494x4= _0x9494x4[_0x7ddb[287]]};null!= _0x9494x9&& _0x9494x5[_0x7ddb[1927]](_0x9494x9)};return _0x9494x2}());mxCodecRegistry[_0x7ddb[3234]](function(){var _0x9494x2= new mxObjectCodec( new mxRootChange,[_0x7ddb[251],_0x7ddb[257],_0x7ddb[813]]);_0x9494x2[_0x7ddb[3257]]= function(_0x9494x2,_0x9494x4,_0x9494x5){_0x9494x2[_0x7ddb[3242]](_0x9494x4[_0x7ddb[813]],_0x9494x5);return _0x9494x5};_0x9494x2[_0x7ddb[3266]]= function(_0x9494x2,_0x9494x4,_0x9494x5){if(null!= _0x9494x4[_0x7ddb[285]]&& _0x9494x4[_0x7ddb[285]][_0x7ddb[288]]== mxConstants[_0x7ddb[289]]){_0x9494x4= _0x9494x4[_0x7ddb[511]](!0);var _0x9494x9=_0x9494x4[_0x7ddb[285]];_0x9494x5[_0x7ddb[813]]= _0x9494x2[_0x7ddb[3244]](_0x9494x9,!1);_0x9494x5= _0x9494x9[_0x7ddb[287]];_0x9494x9[_0x7ddb[265]][_0x7ddb[266]](_0x9494x9);for(_0x9494x9= _0x9494x5;null!= _0x9494x9;){_0x9494x5= _0x9494x9[_0x7ddb[287]],_0x9494x2[_0x7ddb[3244]](_0x9494x9),_0x9494x9[_0x7ddb[265]][_0x7ddb[266]](_0x9494x9),_0x9494x9= _0x9494x5}};return _0x9494x4};_0x9494x2[_0x7ddb[3268]]= function(_0x9494x2,_0x9494x4,_0x9494x5){_0x9494x5[_0x7ddb[257]]= _0x9494x5[_0x7ddb[813]];return _0x9494x5};return _0x9494x2}());mxCodecRegistry[_0x7ddb[3234]](function(){var _0x9494x2= new mxObjectCodec( new mxChildChange,[_0x7ddb[251],_0x7ddb[247],_0x7ddb[1982]],[_0x7ddb[1101],_0x7ddb[257]]);_0x9494x2[_0x7ddb[3254]]= function(_0x9494x2,_0x9494x4,_0x9494x5,_0x9494x9){return _0x7ddb[247]== _0x9494x4&& (null!= _0x9494x2[_0x7ddb[257]]|| !_0x9494x9)?!0:0<= mxUtils[_0x7ddb[2]](this[_0x7ddb[3247]],_0x9494x4)};_0x9494x2[_0x7ddb[3257]]= function(_0x9494x2,_0x9494x4,_0x9494x5){this[_0x7ddb[3254]](_0x9494x4,_0x7ddb[247],_0x9494x4[_0x7ddb[247]],!0)?_0x9494x5[_0x7ddb[57]](_0x7ddb[247],_0x9494x2[_0x7ddb[1103]](_0x9494x4[_0x7ddb[247]])):_0x9494x2[_0x7ddb[3242]](_0x9494x4[_0x7ddb[247]],_0x9494x5);return _0x9494x5};_0x9494x2[_0x7ddb[3266]]= function(_0x9494x2,_0x9494x4,_0x9494x5){if(null!= _0x9494x4[_0x7ddb[285]]&& _0x9494x4[_0x7ddb[285]][_0x7ddb[288]]== mxConstants[_0x7ddb[289]]){_0x9494x4= _0x9494x4[_0x7ddb[511]](!0);var _0x9494x9=_0x9494x4[_0x7ddb[285]];_0x9494x5[_0x7ddb[247]]= _0x9494x2[_0x7ddb[3244]](_0x9494x9,!1);_0x9494x5= _0x9494x9[_0x7ddb[287]];_0x9494x9[_0x7ddb[265]][_0x7ddb[266]](_0x9494x9);for(_0x9494x9= _0x9494x5;null!= _0x9494x9;){_0x9494x5= _0x9494x9[_0x7ddb[287]];if(_0x9494x9[_0x7ddb[288]]== mxConstants[_0x7ddb[289]]){var _0x9494xa=_0x9494x9[_0x7ddb[284]](_0x7ddb[1363]);null== _0x9494x2[_0x7ddb[1060]](_0x9494xa)&& _0x9494x2[_0x7ddb[3244]](_0x9494x9)};_0x9494x9[_0x7ddb[265]][_0x7ddb[266]](_0x9494x9);_0x9494x9= _0x9494x5}}else {_0x9494x9= _0x9494x4[_0x7ddb[284]](_0x7ddb[247]),_0x9494x5[_0x7ddb[247]]= _0x9494x2[_0x7ddb[3236]](_0x9494x9)};return _0x9494x4};_0x9494x2[_0x7ddb[3268]]= function(_0x9494x2,_0x9494x4,_0x9494x5){_0x9494x5[_0x7ddb[247]][_0x7ddb[1101]]= _0x9494x5[_0x7ddb[257]];_0x9494x5[_0x7ddb[257]]= _0x9494x5[_0x7ddb[1101]];_0x9494x5[_0x7ddb[1982]]= _0x9494x5[_0x7ddb[1983]];return _0x9494x5};return _0x9494x2}());mxCodecRegistry[_0x7ddb[3234]](function(){var _0x9494x2= new mxObjectCodec( new mxTerminalChange,[_0x7ddb[251],_0x7ddb[257]],[_0x7ddb[246],_0x7ddb[1984]]);_0x9494x2[_0x7ddb[3268]]= function(_0x9494x2,_0x9494x4,_0x9494x5){_0x9494x5[_0x7ddb[257]]= _0x9494x5[_0x7ddb[1984]];return _0x9494x5};return _0x9494x2}());var mxGenericChangeCodec=function(_0x9494x2,_0x9494x3){var _0x9494x4= new mxObjectCodec(_0x9494x2,[_0x7ddb[251],_0x7ddb[257]],[_0x7ddb[246]]);_0x9494x4[_0x7ddb[3268]]= function(_0x9494x2,_0x9494x4,_0x9494xa){mxUtils[_0x7ddb[1331]](_0x9494xa[_0x7ddb[246]])&& (_0x9494xa[_0x7ddb[246]]= _0x9494x2[_0x7ddb[3244]](_0x9494xa[_0x7ddb[246]],!1));_0x9494xa[_0x7ddb[257]]= _0x9494xa[_0x9494x3];return _0x9494xa};return _0x9494x4};mxCodecRegistry[_0x7ddb[3234]](mxGenericChangeCodec( new mxValueChange,_0x7ddb[131]));mxCodecRegistry[_0x7ddb[3234]](mxGenericChangeCodec( new mxStyleChange,_0x7ddb[124]));mxCodecRegistry[_0x7ddb[3234]](mxGenericChangeCodec( new mxGeometryChange,_0x7ddb[256]));mxCodecRegistry[_0x7ddb[3234]](mxGenericChangeCodec( new mxCollapseChange,_0x7ddb[1985]));mxCodecRegistry[_0x7ddb[3234]](mxGenericChangeCodec( new mxVisibleChange,_0x7ddb[189]));mxCodecRegistry[_0x7ddb[3234]](mxGenericChangeCodec( new mxCellAttributeChange,_0x7ddb[131]));mxCodecRegistry[_0x7ddb[3234]](function(){return new mxObjectCodec( new mxGraph,_0x7ddb[3280][_0x7ddb[224]](_0x7ddb[185]))}());mxCodecRegistry[_0x7ddb[3234]](function(){var _0x9494x2= new mxObjectCodec( new mxGraphView);_0x9494x2[_0x7ddb[514]]= function(_0x9494x2,_0x9494x4){return this[_0x7ddb[3242]](_0x9494x2,_0x9494x4,_0x9494x4[_0x7ddb[1179]][_0x7ddb[502]]()[_0x7ddb[501]]())};_0x9494x2[_0x7ddb[3242]]= function(_0x9494x2,_0x9494x4,_0x9494x5){var _0x9494x9=_0x9494x4[_0x7ddb[1179]][_0x7ddb[502]](),_0x9494xa=_0x9494x4[_0x7ddb[248]](_0x9494x5),_0x9494x12=_0x9494x9[_0x7ddb[1197]](_0x9494x5);if(null== _0x9494x12|| null!= _0x9494xa){var _0x9494x13=_0x9494x9[_0x7ddb[262]](_0x9494x5),_0x9494x14=_0x9494x4[_0x7ddb[1179]][_0x7ddb[1198]](_0x9494x5),_0x9494x15=null;_0x9494x12== _0x9494x9[_0x7ddb[501]]()?_0x9494x15= _0x7ddb[3281]:null== _0x9494x12?_0x9494x15= _0x7ddb[1179]:_0x9494x9[_0x7ddb[250]](_0x9494x5)?_0x9494x15= _0x7ddb[1989]:0< _0x9494x13&& null!= _0x9494x14?_0x9494x15= _0x7ddb[1504]:_0x9494x9[_0x7ddb[1193]](_0x9494x5)&& (_0x9494x15= _0x7ddb[1988]);if(null!= _0x9494x15){var _0x9494x16=_0x9494x2[_0x7ddb[395]][_0x7ddb[55]](_0x9494x15);null!= _0x9494x4[_0x7ddb[1179]][_0x7ddb[2183]](_0x9494x5)&& (_0x9494x16[_0x7ddb[57]](_0x7ddb[685],_0x9494x4[_0x7ddb[1179]][_0x7ddb[2183]](_0x9494x5)),_0x9494x4[_0x7ddb[1179]][_0x7ddb[2186]](_0x9494x5)&& _0x9494x16[_0x7ddb[57]](_0x7ddb[1428],!0));if(null== _0x9494x12){var _0x9494x17=_0x9494x4[_0x7ddb[517]]();null!= _0x9494x17&& (_0x9494x16[_0x7ddb[57]](_0x7ddb[235],Math[_0x7ddb[488]](_0x9494x17[_0x7ddb[235]])),_0x9494x16[_0x7ddb[57]](_0x7ddb[236],Math[_0x7ddb[488]](_0x9494x17[_0x7ddb[236]])),_0x9494x16[_0x7ddb[57]](_0x7ddb[117],Math[_0x7ddb[488]](_0x9494x17[_0x7ddb[117]])),_0x9494x16[_0x7ddb[57]](_0x7ddb[119],Math[_0x7ddb[488]](_0x9494x17[_0x7ddb[119]])));_0x9494x16[_0x7ddb[57]](_0x7ddb[255],_0x9494x4[_0x7ddb[255]])}else {if(null!= _0x9494xa&& null!= _0x9494x14){for(_0x9494x17 in _0x9494xa[_0x7ddb[124]]){_0x9494x12= _0x9494xa[_0x7ddb[124]][_0x9494x17],_0x7ddb[279]== typeof _0x9494x12&& _0x7ddb[194]== typeof _0x9494x12&& (_0x9494x12= mxStyleRegistry[_0x7ddb[718]](_0x9494x12)),null!= _0x9494x12&& (_0x7ddb[279]!= typeof _0x9494x12&& _0x7ddb[194]!= typeof _0x9494x12)&& _0x9494x16[_0x7ddb[57]](_0x9494x17,_0x9494x12)};_0x9494x12= _0x9494xa[_0x7ddb[439]];if(null!= _0x9494x12&& 0< _0x9494x12[_0x7ddb[67]]){_0x9494x14= Math[_0x7ddb[488]](_0x9494x12[0][_0x7ddb[235]])+ _0x7ddb[537]+ Math[_0x7ddb[488]](_0x9494x12[0][_0x7ddb[236]]);for(_0x9494x17= 1;_0x9494x17< _0x9494x12[_0x7ddb[67]];_0x9494x17++){_0x9494x14+= _0x7ddb[185]+ Math[_0x7ddb[488]](_0x9494x12[_0x9494x17][_0x7ddb[235]])+ _0x7ddb[537]+ Math[_0x7ddb[488]](_0x9494x12[_0x9494x17][_0x7ddb[236]])};_0x9494x16[_0x7ddb[57]](_0x7ddb[1525],_0x9494x14)}else {_0x9494x16[_0x7ddb[57]](_0x7ddb[235],Math[_0x7ddb[488]](_0x9494xa[_0x7ddb[235]])),_0x9494x16[_0x7ddb[57]](_0x7ddb[236],Math[_0x7ddb[488]](_0x9494xa[_0x7ddb[236]])),_0x9494x16[_0x7ddb[57]](_0x7ddb[117],Math[_0x7ddb[488]](_0x9494xa[_0x7ddb[117]])),_0x9494x16[_0x7ddb[57]](_0x7ddb[119],Math[_0x7ddb[488]](_0x9494xa[_0x7ddb[119]]))};_0x9494x17= _0x9494xa[_0x7ddb[2079]];null!= _0x9494x17&& (0!= _0x9494x17[_0x7ddb[235]]&& _0x9494x16[_0x7ddb[57]](_0x7ddb[1126],Math[_0x7ddb[488]](_0x9494x17[_0x7ddb[235]])),0!= _0x9494x17[_0x7ddb[236]]&& _0x9494x16[_0x7ddb[57]](_0x7ddb[1125],Math[_0x7ddb[488]](_0x9494x17[_0x7ddb[236]])))}};for(_0x9494x17= 0;_0x9494x17< _0x9494x13;_0x9494x17++){_0x9494xa= this[_0x7ddb[3242]](_0x9494x2,_0x9494x4,_0x9494x9[_0x7ddb[263]](_0x9494x5,_0x9494x17)),null!= _0x9494xa&& _0x9494x16[_0x7ddb[62]](_0x9494xa)}}};return _0x9494x16};return _0x9494x2}());mxCodecRegistry[_0x7ddb[3234]](function(){var _0x9494x2= new mxObjectCodec( new mxStylesheet);_0x9494x2[_0x7ddb[514]]= function(_0x9494x2,_0x9494x4){var _0x9494x5=_0x9494x2[_0x7ddb[395]][_0x7ddb[55]](this[_0x7ddb[718]]()),_0x9494x9;for(_0x9494x9 in _0x9494x4[_0x7ddb[2054]]){var _0x9494xa=_0x9494x4[_0x7ddb[2054]][_0x9494x9],_0x9494x12=_0x9494x2[_0x7ddb[395]][_0x7ddb[55]](_0x7ddb[99]);if(null!= _0x9494x9){_0x9494x12[_0x7ddb[57]](_0x7ddb[3069],_0x9494x9);for(var _0x9494x13 in _0x9494xa){var _0x9494x14=this[_0x7ddb[3282]](_0x9494x13,_0x9494xa[_0x9494x13]);if(null!= _0x9494x14){var _0x9494x15=_0x9494x2[_0x7ddb[395]][_0x7ddb[55]](_0x7ddb[99]);_0x9494x15[_0x7ddb[57]](_0x7ddb[131],_0x9494x14);_0x9494x15[_0x7ddb[57]](_0x7ddb[3069],_0x9494x13);_0x9494x12[_0x7ddb[62]](_0x9494x15)}};0< _0x9494x12[_0x7ddb[271]][_0x7ddb[67]]&& _0x9494x5[_0x7ddb[62]](_0x9494x12)}};return _0x9494x5};_0x9494x2[_0x7ddb[3282]]= function(_0x9494x2,_0x9494x4){var _0x9494x5= typeof _0x9494x4;_0x7ddb[279]== _0x9494x5?_0x9494x4= mxStyleRegistry[_0x7ddb[718]](style[j]):_0x7ddb[194]== _0x9494x5&& (_0x9494x4= null);return _0x9494x4};_0x9494x2[_0x7ddb[1093]]= function(_0x9494x2,_0x9494x4,_0x9494x5){_0x9494x5= _0x9494x5|| new this[_0x7ddb[3231]][_0x7ddb[196]];var _0x9494x9=_0x9494x4[_0x7ddb[284]](_0x7ddb[1363]);null!= _0x9494x9&& (_0x9494x2[_0x7ddb[68]][_0x9494x9]= _0x9494x5);for(_0x9494x4= _0x9494x4[_0x7ddb[285]];null!= _0x9494x4;){if(!this[_0x7ddb[3273]](_0x9494x2,_0x9494x4,_0x9494x5)&& _0x7ddb[99]== _0x9494x4[_0x7ddb[301]] && (_0x9494x9= _0x9494x4[_0x7ddb[284]](_0x7ddb[3069]),null!= _0x9494x9)){var _0x9494xa=_0x9494x4[_0x7ddb[284]](_0x7ddb[1284]),_0x9494x12=null!= _0x9494xa?mxUtils[_0x7ddb[238]](_0x9494x5[_0x7ddb[2054]][_0x9494xa]):null;null== _0x9494x12&& (null!= _0x9494xa&& mxLog[_0x7ddb[283]](_0x7ddb[3283]+ _0x9494xa+ _0x7ddb[3284]),_0x9494x12= {});for(_0x9494xa= _0x9494x4[_0x7ddb[285]];null!= _0x9494xa;){if(_0x9494xa[_0x7ddb[288]]== mxConstants[_0x7ddb[289]]){var _0x9494x13=_0x9494xa[_0x7ddb[284]](_0x7ddb[3069]);if(_0x7ddb[99]== _0x9494xa[_0x7ddb[301]]){var _0x9494x14=mxUtils[_0x7ddb[329]](_0x9494xa),_0x9494x15=null;null!= _0x9494x14&& 0< _0x9494x14[_0x7ddb[67]]?_0x9494x15= mxUtils[_0x7ddb[1545]](_0x9494x14):(_0x9494x15= _0x9494xa[_0x7ddb[284]](_0x7ddb[131]),mxUtils[_0x7ddb[1946]](_0x9494x15)&& (_0x9494x15= parseFloat(_0x9494x15)));null!= _0x9494x15&& (_0x9494x12[_0x9494x13]= _0x9494x15)}else {_0x7ddb[205]== _0x9494xa[_0x7ddb[301]]&& delete _0x9494x12[_0x9494x13]}};_0x9494xa= _0x9494xa[_0x7ddb[287]]};_0x9494x5[_0x7ddb[2074]](_0x9494x9,_0x9494x12)};_0x9494x4= _0x9494x4[_0x7ddb[287]]};return _0x9494x5};return _0x9494x2}());mxCodecRegistry[_0x7ddb[3234]](function(){var _0x9494x2= new mxObjectCodec( new mxDefaultKeyHandler);_0x9494x2[_0x7ddb[514]]= function(_0x9494x2,_0x9494x4){return null};_0x9494x2[_0x7ddb[1093]]= function(_0x9494x2,_0x9494x4,_0x9494x5){if(null!= _0x9494x5){for(_0x9494x4= _0x9494x4[_0x7ddb[285]];null!= _0x9494x4;){if(!this[_0x7ddb[3273]](_0x9494x2,_0x9494x4,_0x9494x5)&& _0x7ddb[99]== _0x9494x4[_0x7ddb[301]]){var _0x9494x9=_0x9494x4[_0x7ddb[284]](_0x7ddb[3069]),_0x9494xa=_0x9494x4[_0x7ddb[284]](_0x7ddb[892]),_0x9494x12=_0x9494x4[_0x7ddb[284]](_0x7ddb[2207]);_0x9494x5[_0x7ddb[3063]](_0x9494x9,_0x9494xa,_0x9494x12)};_0x9494x4= _0x9494x4[_0x7ddb[287]]}};return _0x9494x5};return _0x9494x2}());mxCodecRegistry[_0x7ddb[3234]](function(){var _0x9494x2= new mxObjectCodec( new mxDefaultToolbar);_0x9494x2[_0x7ddb[514]]= function(_0x9494x2,_0x9494x4){return null};_0x9494x2[_0x7ddb[1093]]= function(_0x9494x2,_0x9494x4,_0x9494x5){if(null!= _0x9494x5){var _0x9494x9=_0x9494x5[_0x7ddb[3061]];for(_0x9494x4= _0x9494x4[_0x7ddb[285]];null!= _0x9494x4;){if(_0x9494x4[_0x7ddb[288]]== mxConstants[_0x7ddb[289]]&& !this[_0x7ddb[3273]](_0x9494x2,_0x9494x4,_0x9494x5)){if(_0x7ddb[3072]== _0x9494x4[_0x7ddb[301]]){_0x9494x5[_0x7ddb[1051]]()}else {if(_0x7ddb[345]== _0x9494x4[_0x7ddb[301]]){_0x9494x5[_0x7ddb[3082]][_0x7ddb[1052]]()}else {if(_0x7ddb[1054]== _0x9494x4[_0x7ddb[301]]){_0x9494x5[_0x7ddb[3082]][_0x7ddb[1053]]()}else {if(_0x7ddb[99]== _0x9494x4[_0x7ddb[301]]){var _0x9494xa=_0x9494x4[_0x7ddb[284]](_0x7ddb[3069]),_0x9494xa=mxResources[_0x7ddb[203]](_0x9494xa)|| _0x9494xa,_0x9494x12=_0x9494x4[_0x7ddb[284]](_0x7ddb[2916]),_0x9494x13=_0x9494x4[_0x7ddb[284]](_0x7ddb[3285]),_0x9494x14=_0x9494x4[_0x7ddb[284]](_0x7ddb[892]),_0x9494x15=_0x9494x4[_0x7ddb[284]](_0x7ddb[3286]),_0x9494x16=_0x9494x4[_0x7ddb[284]](_0x7ddb[3231]),_0x9494x17=_0x7ddb[468]!= _0x9494x4[_0x7ddb[284]](_0x7ddb[3287]),_0x9494x18=mxUtils[_0x7ddb[329]](_0x9494x4),_0x9494x19=null;if(null!= _0x9494x14){_0x9494x19= _0x9494x5[_0x7ddb[1025]](_0x9494xa,_0x9494x12,_0x9494x14,_0x9494x13)}else {if(null!= _0x9494x15){var _0x9494x1a=mxUtils[_0x7ddb[1545]](_0x9494x18),_0x9494x19=_0x9494x5[_0x7ddb[1048]](_0x9494xa,_0x9494x12,_0x9494x15,_0x9494x13,_0x9494x1a)}else {if(null!= _0x9494x16|| null!= _0x9494x18&& 0< _0x9494x18[_0x7ddb[67]]){_0x9494x19= _0x9494x9[_0x7ddb[3118]][_0x9494x16],_0x9494x16= _0x9494x4[_0x7ddb[284]](_0x7ddb[124]),null!= _0x9494x19&& null!= _0x9494x16&& (_0x9494x19= _0x9494x19[_0x7ddb[238]](),_0x9494x19[_0x7ddb[475]](_0x9494x16)),_0x9494x16= null,null!= _0x9494x18&& 0< _0x9494x18[_0x7ddb[67]]&& (_0x9494x16= mxUtils[_0x7ddb[1545]](_0x9494x18)),_0x9494x19= _0x9494x5[_0x7ddb[3087]](_0x9494xa,_0x9494x12,_0x9494x19,_0x9494x13,_0x9494x16,_0x9494x17)}else {if(_0x9494x13= mxUtils[_0x7ddb[1540]](_0x9494x4),0< _0x9494x13[_0x7ddb[67]]){if(null== _0x9494x12){_0x9494x16= _0x9494x5[_0x7ddb[1038]](_0x9494xa);for(_0x9494xa= 0;_0x9494xa< _0x9494x13[_0x7ddb[67]];_0x9494xa++){_0x9494x17= _0x9494x13[_0x9494xa],_0x7ddb[3072]== _0x9494x17[_0x7ddb[301]]?_0x9494x5[_0x7ddb[972]](_0x9494x16,_0x7ddb[3288]):_0x7ddb[99]== _0x9494x17[_0x7ddb[301]]&& (_0x9494x12= _0x9494x17[_0x7ddb[284]](_0x7ddb[3069]),_0x9494x17= _0x9494x17[_0x7ddb[284]](_0x7ddb[892]),_0x9494x5[_0x7ddb[3085]](_0x9494x16,_0x9494x12,_0x9494x17))}}else {var _0x9494x1b=null,_0x9494x1c=_0x9494x5[_0x7ddb[3087]](_0x9494xa,_0x9494x12,function(){var _0x9494x2=_0x9494x9[_0x7ddb[3118]][_0x9494x1b[_0x7ddb[131]]];if(null!= _0x9494x2){var _0x9494x2=_0x9494x2[_0x7ddb[238]](),_0x9494x3=_0x9494x1b[_0x7ddb[1040]][_0x9494x1b[_0x7ddb[1039]]][_0x7ddb[3289]];null!= _0x9494x3&& _0x9494x2[_0x7ddb[475]](_0x9494x3);return _0x9494x2};mxLog[_0x7ddb[283]](_0x7ddb[3290]+ _0x9494x2+ _0x7ddb[3291]);return null},null,null,_0x9494x17),_0x9494x1b=_0x9494x5[_0x7ddb[970]]();mxEvent[_0x7ddb[169]](_0x9494x1b,_0x7ddb[826],function(){_0x9494x5[_0x7ddb[3082]][_0x7ddb[1047]](_0x9494x1c,function(_0x9494x2){_0x9494x2= mxUtils[_0x7ddb[2196]](_0x9494x9[_0x7ddb[1179]][_0x7ddb[526]],mxEvent[_0x7ddb[731]](_0x9494x2),mxEvent[_0x7ddb[733]](_0x9494x2));return _0x9494x9[_0x7ddb[817]](null,_0x9494x1a(),_0x9494x2[_0x7ddb[235]],_0x9494x2[_0x7ddb[236]])});_0x9494x5[_0x7ddb[3082]][_0x7ddb[1023]]= !1});for(_0x9494xa= 0;_0x9494xa< _0x9494x13[_0x7ddb[67]];_0x9494xa++){_0x9494x17= _0x9494x13[_0x9494xa],_0x7ddb[3072]== _0x9494x17[_0x7ddb[301]]?_0x9494x5[_0x7ddb[972]](_0x9494x1b,_0x7ddb[3288]):_0x7ddb[99]== _0x9494x17[_0x7ddb[301]]&& (_0x9494x12= _0x9494x17[_0x7ddb[284]](_0x7ddb[3069]),_0x9494x18= _0x9494x17[_0x7ddb[284]](_0x7ddb[3231]),_0x9494x5[_0x7ddb[972]](_0x9494x1b,_0x9494x12,_0x9494x18|| _0x9494x16)[_0x7ddb[3289]]= _0x9494x17[_0x7ddb[284]](_0x7ddb[124]))}}}}}};null!= _0x9494x19&& (_0x9494x16= _0x9494x4[_0x7ddb[284]](_0x7ddb[1363]),null!= _0x9494x16&& 0< _0x9494x16[_0x7ddb[67]]&& _0x9494x19[_0x7ddb[57]](_0x7ddb[1363],_0x9494x16))}}}}};_0x9494x4= _0x9494x4[_0x7ddb[287]]}};return _0x9494x5};return _0x9494x2}());mxCodecRegistry[_0x7ddb[3234]](function(){var _0x9494x2= new mxObjectCodec( new mxDefaultPopupMenu);_0x9494x2[_0x7ddb[514]]= function(_0x9494x2,_0x9494x4){return null};_0x9494x2[_0x7ddb[1093]]= function(_0x9494x2,_0x9494x4,_0x9494x5){var _0x9494x9=_0x9494x4[_0x7ddb[64]](_0x7ddb[3277])[0];null!= _0x9494x9?this[_0x7ddb[3273]](_0x9494x2,_0x9494x9,_0x9494x5):null!= _0x9494x5&& (_0x9494x5[_0x7ddb[3064]]= _0x9494x4);return _0x9494x5};return _0x9494x2}());mxCodecRegistry[_0x7ddb[3234]](function(){var _0x9494x2= new mxObjectCodec( new mxEditor,_0x7ddb[3292][_0x7ddb[224]](_0x7ddb[185]));_0x9494x2[_0x7ddb[3268]]= function(_0x9494x2,_0x9494x4,_0x9494x5){_0x9494x2= _0x9494x4[_0x7ddb[284]](_0x7ddb[2075]);null!= _0x9494x2&& (_0x9494x4[_0x7ddb[1390]](_0x7ddb[2075]),_0x9494x5[_0x7ddb[2075]]= _0x9494x5[_0x7ddb[3118]][_0x9494x2]);_0x9494x2= _0x9494x4[_0x7ddb[284]](_0x7ddb[3120]);null!= _0x9494x2&& (_0x9494x4[_0x7ddb[1390]](_0x7ddb[3120]),_0x9494x5[_0x7ddb[3120]]= _0x9494x5[_0x7ddb[3118]][_0x9494x2]);return _0x9494x5};_0x9494x2[_0x7ddb[3274]]= function(_0x9494x2,_0x9494x4,_0x9494x5){if(_0x7ddb[3293]== _0x9494x4[_0x7ddb[301]]){if(_0x7ddb[3118]== _0x9494x4[_0x7ddb[284]](_0x7ddb[3069])){this[_0x7ddb[3294]](_0x9494x2,_0x9494x4,_0x9494x5);return}}else {if(_0x7ddb[3295]== _0x9494x4[_0x7ddb[301]]){this[_0x7ddb[3296]](_0x9494x2,_0x9494x4,_0x9494x5);return}};mxObjectCodec[_0x7ddb[202]][_0x7ddb[3274]][_0x7ddb[183]](this,arguments)};_0x9494x2[_0x7ddb[3296]]= function(_0x9494x2,_0x9494x4,_0x9494x5){for(_0x9494x2= _0x9494x4[_0x7ddb[285]];null!= _0x9494x2;){if(_0x7ddb[99]== _0x9494x2[_0x7ddb[301]]){_0x9494x4= _0x9494x2[_0x7ddb[284]](_0x7ddb[3069]);var _0x9494x9=_0x9494x2[_0x7ddb[284]](_0x7ddb[980]),_0x9494xa=_0x9494x2[_0x7ddb[284]](_0x7ddb[124]),_0x9494x12=null;if(null!= _0x9494x9){_0x9494x12= document[_0x7ddb[1362]](_0x9494x9),null!= _0x9494x12&& null!= _0x9494xa&& (_0x9494x12[_0x7ddb[124]][_0x7ddb[103]]+= _0x7ddb[471]+ _0x9494xa)}else {var _0x9494x9=parseInt(_0x9494x2[_0x7ddb[284]](_0x7ddb[235])),_0x9494x13=parseInt(_0x9494x2[_0x7ddb[284]](_0x7ddb[236])),_0x9494x14=_0x9494x2[_0x7ddb[284]](_0x7ddb[117]),_0x9494x15=_0x9494x2[_0x7ddb[284]](_0x7ddb[119]),_0x9494x12=document[_0x7ddb[55]](_0x7ddb[485]);_0x9494x12[_0x7ddb[124]][_0x7ddb[103]]= _0x9494xa;( new mxWindow(mxResources[_0x7ddb[203]](_0x9494x4)|| _0x9494x4,_0x9494x12,_0x9494x9,_0x9494x13,_0x9494x14,_0x9494x15,!1,!0))[_0x7ddb[175]](!0)};_0x7ddb[1179]== _0x9494x4?_0x9494x5[_0x7ddb[3202]](_0x9494x12):_0x7ddb[3082]== _0x9494x4?_0x9494x5[_0x7ddb[3204]](_0x9494x12):_0x7ddb[924]== _0x9494x4?_0x9494x5[_0x7ddb[3208]](_0x9494x12):_0x7ddb[879]== _0x9494x4?_0x9494x5[_0x7ddb[3205]](_0x9494x12):_0x7ddb[201]== _0x9494x4&& _0x9494x5[_0x7ddb[3297]](_0x9494x12)}else {_0x7ddb[3298]== _0x9494x2[_0x7ddb[301]]?mxResources[_0x7ddb[99]](_0x9494x2[_0x7ddb[284]](_0x7ddb[3299])):_0x7ddb[94]== _0x9494x2[_0x7ddb[301]]&& mxClient[_0x7ddb[54]](_0x7ddb[94],_0x9494x2[_0x7ddb[284]](_0x7ddb[298]))};_0x9494x2= _0x9494x2[_0x7ddb[287]]}};_0x9494x2[_0x7ddb[3294]]= function(_0x9494x2,_0x9494x4,_0x9494x5){null== _0x9494x5[_0x7ddb[3118]]&& (_0x9494x5[_0x7ddb[3118]]= []);_0x9494x4= mxUtils[_0x7ddb[1540]](_0x9494x4);for(var _0x9494x9=0;_0x9494x9< _0x9494x4[_0x7ddb[67]];_0x9494x9++){for(var _0x9494xa=_0x9494x4[_0x9494x9][_0x7ddb[284]](_0x7ddb[3069]),_0x9494x12=_0x9494x4[_0x9494x9][_0x7ddb[285]];null!= _0x9494x12&& 1!= _0x9494x12[_0x7ddb[288]];){_0x9494x12= _0x9494x12[_0x7ddb[287]]};null!= _0x9494x12&& (_0x9494x5[_0x7ddb[3118]][_0x9494xa]= _0x9494x2[_0x7ddb[3244]](_0x9494x12))}};return _0x9494x2}()) \ No newline at end of file +undefined \ No newline at end of file diff --git a/public/assets/plugins/square/js/Actions.js b/public/assets/plugins/square/js/Actions.js index e8152d2..66dc905 100644 --- a/public/assets/plugins/square/js/Actions.js +++ b/public/assets/plugins/square/js/Actions.js @@ -1 +1 @@ -var _0x807f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x64\x69\x74\x6F\x72\x55\x69","\x61\x63\x74\x69\x6F\x6E\x73","\x69\x6E\x69\x74","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x65\x64\x69\x74\x6F\x72","\x67\x72\x61\x70\x68","\x6E\x65\x77","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x73\x68\x6F\x77\x44\x69\x61\x6C\x6F\x67","\x61\x64\x64\x41\x63\x74\x69\x6F\x6E","\x6F\x70\x65\x6E","\x73\x61\x76\x65","\x73\x61\x76\x65\x46\x69\x6C\x65","\x43\x74\x72\x6C\x2B\x53","\x73\x61\x76\x65\x41\x73","\x43\x74\x72\x6C\x2B\x53\x68\x69\x66\x74\x2D\x53","\x70\x75\x62\x6C\x69\x73\x68","\x70\x75\x62\x6C\x69\x73\x68\x46\x69\x6C\x65","\x43\x74\x72\x6C\x2B\x53\x68\x69\x66\x74\x2B\x50","\x76\x61\x72\x69\x61\x62\x6C\x65","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x69\x6D\x70\x6F\x72\x74","\x65\x78\x70\x6F\x72\x74","\x43\x74\x72\x6C\x2B\x45","\x65\x64\x69\x74\x46\x69\x6C\x65","\x65\x64\x69\x74","\x67\x65\x74","\x62\x69\x6E\x64","\x70\x75\x74","\x70\x72\x69\x6E\x74","\x70\x72\x69\x6E\x74\x53\x63\x72\x65\x65\x6E","\x73\x70\x72\x69\x74\x65\x2D\x70\x72\x69\x6E\x74","\x43\x74\x72\x6C\x2B\x50","\x70\x72\x65\x76\x69\x65\x77","\x73\x68\x6F\x77","\x75\x6E\x64\x6F","\x75\x6E\x64\x6F\x4D\x61\x6E\x61\x67\x65\x72","\x73\x70\x72\x69\x74\x65\x2D\x75\x6E\x64\x6F","\x43\x74\x72\x6C\x2B\x5A","\x72\x65\x64\x6F","\x73\x70\x72\x69\x74\x65\x2D\x72\x65\x64\x6F","\x43\x74\x72\x6C\x2B\x59","\x63\x75\x74","\x73\x70\x72\x69\x74\x65\x2D\x63\x75\x74","\x43\x74\x72\x6C\x2B\x58","\x63\x6F\x70\x79","\x73\x70\x72\x69\x74\x65\x2D\x63\x6F\x70\x79","\x43\x74\x72\x6C\x2B\x43","\x70\x61\x73\x74\x65","\x73\x70\x72\x69\x74\x65\x2D\x70\x61\x73\x74\x65","\x43\x74\x72\x6C\x2B\x56","\x64\x65\x6C\x65\x74\x65","\x72\x65\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73","\x44\x65\x6C\x65\x74\x65","\x64\x75\x70\x6C\x69\x63\x61\x74\x65","\x67\x72\x69\x64\x53\x69\x7A\x65","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x43\x74\x72\x6C\x2B\x44","\x73\x65\x6C\x65\x63\x74\x56\x65\x72\x74\x69\x63\x65\x73","\x43\x74\x72\x6C\x2B\x53\x68\x69\x66\x74\x2B\x56","\x73\x65\x6C\x65\x63\x74\x45\x64\x67\x65\x73","\x43\x74\x72\x6C\x2B\x53\x68\x69\x66\x74\x2B\x45","\x73\x65\x6C\x65\x63\x74\x41\x6C\x6C","\x43\x74\x72\x6C\x2B\x41","\x68\x6F\x6D\x65","\x48\x6F\x6D\x65","\x65\x78\x69\x74\x47\x72\x6F\x75\x70","\x50\x61\x67\x65\x20\x55\x70","\x65\x6E\x74\x65\x72\x47\x72\x6F\x75\x70","\x50\x61\x67\x65\x20\x44\x6F\x77\x6E","\x65\x78\x70\x61\x6E\x64","\x66\x6F\x6C\x64\x43\x65\x6C\x6C\x73","\x45\x6E\x74\x65\x72","\x63\x6F\x6C\x6C\x61\x70\x73\x65","\x42\x61\x63\x6B\x73\x70\x61\x63\x65","\x74\x6F\x46\x72\x6F\x6E\x74","\x6F\x72\x64\x65\x72\x43\x65\x6C\x6C\x73","\x43\x74\x72\x6C\x2B\x46","\x74\x6F\x42\x61\x63\x6B","\x43\x74\x72\x6C\x2B\x42","\x67\x72\x6F\x75\x70","\x67\x72\x6F\x75\x70\x43\x65\x6C\x6C\x73","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x43\x74\x72\x6C\x2B\x47","\x75\x6E\x67\x72\x6F\x75\x70","\x75\x6E\x67\x72\x6F\x75\x70\x43\x65\x6C\x6C\x73","\x43\x74\x72\x6C\x2B\x55","\x72\x65\x6D\x6F\x76\x65\x46\x72\x6F\x6D\x47\x72\x6F\x75\x70","\x72\x65\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73\x46\x72\x6F\x6D\x50\x61\x72\x65\x6E\x74","\x65\x64\x69\x74\x4C\x69\x6E\x6B","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x67\x65\x74\x4C\x69\x6E\x6B\x46\x6F\x72\x43\x65\x6C\x6C","","\x65\x6E\x74\x65\x72\x56\x61\x6C\x75\x65","\x70\x72\x6F\x6D\x70\x74","\x73\x65\x74\x4C\x69\x6E\x6B\x46\x6F\x72\x43\x65\x6C\x6C","\x6F\x70\x65\x6E\x4C\x69\x6E\x6B","\x61\x75\x74\x6F\x73\x69\x7A\x65","\x62\x65\x67\x69\x6E\x55\x70\x64\x61\x74\x65","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x6C\x65\x6E\x67\x74\x68","\x67\x65\x74\x43\x68\x69\x6C\x64\x43\x6F\x75\x6E\x74","\x75\x70\x64\x61\x74\x65\x47\x72\x6F\x75\x70\x42\x6F\x75\x6E\x64\x73","\x75\x70\x64\x61\x74\x65\x43\x65\x6C\x6C\x53\x69\x7A\x65","\x65\x6E\x64\x55\x70\x64\x61\x74\x65","\x77\x6F\x72\x64\x57\x72\x61\x70","\x67\x65\x74\x53\x74\x61\x74\x65","\x67\x65\x74\x56\x69\x65\x77","\x77\x72\x61\x70","\x53\x54\x59\x4C\x45\x5F\x57\x48\x49\x54\x45\x5F\x53\x50\x41\x43\x45","\x73\x74\x79\x6C\x65","\x73\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x73","\x72\x6F\x74\x61\x74\x69\x6F\x6E","\x30","\x53\x54\x59\x4C\x45\x5F\x52\x4F\x54\x41\x54\x49\x4F\x4E","\x20\x28","\x20\x30\x2D\x33\x36\x30\x29","\x74\x69\x6C\x74","\x69\x73\x56\x65\x72\x74\x65\x78","\x67\x65\x74\x43\x65\x6C\x6C\x47\x65\x6F\x6D\x65\x74\x72\x79","\x63\x6C\x6F\x6E\x65","\x78","\x77\x69\x64\x74\x68","\x68\x65\x69\x67\x68\x74","\x79","\x73\x65\x74\x47\x65\x6F\x6D\x65\x74\x72\x79","\x76\x69\x65\x77","\x53\x54\x59\x4C\x45\x5F\x44\x49\x52\x45\x43\x54\x49\x4F\x4E","\x65\x61\x73\x74","\x73\x6F\x75\x74\x68","\x77\x65\x73\x74","\x6E\x6F\x72\x74\x68","\x43\x74\x72\x6C\x2B\x52","\x61\x63\x74\x75\x61\x6C\x53\x69\x7A\x65","\x7A\x6F\x6F\x6D\x54\x6F","\x7A\x6F\x6F\x6D\x49\x6E","\x41\x64\x64","\x7A\x6F\x6F\x6D\x4F\x75\x74","\x53\x75\x62\x74\x72\x61\x63\x74","\x66\x69\x74\x57\x69\x6E\x64\x6F\x77","\x66\x69\x74","\x66\x69\x74\x50\x61\x67\x65","\x70\x61\x67\x65\x56\x69\x73\x69\x62\x6C\x65","\x66\x75\x6E\x63\x74","\x70\x61\x67\x65\x56\x69\x65\x77","\x70\x61\x67\x65\x46\x6F\x72\x6D\x61\x74","\x70\x61\x67\x65\x53\x63\x61\x6C\x65","\x63\x6C\x69\x65\x6E\x74\x57\x69\x64\x74\x68","\x63\x6C\x69\x65\x6E\x74\x48\x65\x69\x67\x68\x74","\x6D\x69\x6E","\x66\x6C\x6F\x6F\x72","\x73\x63\x72\x6F\x6C\x6C\x4C\x65\x66\x74","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65","\x6D\x61\x78","\x72\x6F\x75\x6E\x64","\x73\x63\x72\x6F\x6C\x6C\x54\x6F\x70","\x66\x69\x74\x50\x61\x67\x65\x57\x69\x64\x74\x68","\x63\x75\x73\x74\x6F\x6D\x5A\x6F\x6F\x6D","\x63\x75\x73\x74\x6F\x6D","\x20\x28\x25\x29","\x67\x65\x74\x53\x63\x61\x6C\x65","\x67\x72\x69\x64","\x69\x73\x47\x72\x69\x64\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x47\x72\x69\x64\x45\x6E\x61\x62\x6C\x65\x64","\x75\x70\x64\x61\x74\x65\x47\x72\x61\x70\x68\x43\x6F\x6D\x70\x6F\x6E\x65\x6E\x74\x73","\x43\x74\x72\x6C\x2B\x53\x68\x69\x66\x74\x2B\x47","\x73\x65\x74\x54\x6F\x67\x67\x6C\x65\x41\x63\x74\x69\x6F\x6E","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x65\x64\x43\x61\x6C\x6C\x62\x61\x63\x6B","\x67\x75\x69\x64\x65\x73","\x67\x75\x69\x64\x65\x73\x45\x6E\x61\x62\x6C\x65\x64","\x67\x72\x61\x70\x68\x48\x61\x6E\x64\x6C\x65\x72","\x74\x6F\x6F\x6C\x74\x69\x70\x73","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64","\x74\x6F\x6F\x6C\x74\x69\x70\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x74\x45\x6E\x61\x62\x6C\x65\x64","\x6E\x61\x76\x69\x67\x61\x74\x69\x6F\x6E","\x66\x6F\x6C\x64\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x72\x65\x76\x61\x6C\x69\x64\x61\x74\x65","\x73\x63\x72\x6F\x6C\x6C\x62\x61\x72\x73","\x73\x63\x61\x6C\x65","\x73\x65\x74\x54\x72\x61\x6E\x73\x6C\x61\x74\x65","\x73\x69\x7A\x65\x44\x69\x64\x43\x68\x61\x6E\x67\x65","\x49\x53\x5F\x54\x4F\x55\x43\x48","\x6F\x76\x65\x72\x66\x6C\x6F\x77","\x61\x75\x74\x6F","\x70\x61\x67\x65\x42\x72\x65\x61\x6B\x73\x56\x69\x73\x69\x62\x6C\x65","\x70\x72\x65\x66\x65\x72\x50\x61\x67\x65\x53\x69\x7A\x65","\x76\x61\x6C\x69\x64\x61\x74\x65","\x75\x70\x64\x61\x74\x65","\x6F\x75\x74\x6C\x69\x6E\x65","\x68\x61\x73\x53\x63\x72\x6F\x6C\x6C\x62\x61\x72\x73","\x63\x6F\x6E\x6E\x65\x63\x74","\x63\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x43\x74\x72\x6C\x2B\x51","\x63\x6F\x70\x79\x43\x6F\x6E\x6E\x65\x63\x74","\x69\x73\x43\x72\x65\x61\x74\x65\x54\x61\x72\x67\x65\x74","\x73\x65\x74\x43\x72\x65\x61\x74\x65\x54\x61\x72\x67\x65\x74","\x68\x65\x6C\x70","\x6C\x61\x6E\x67\x75\x61\x67\x65","\x69\x73\x4C\x61\x6E\x67\x75\x61\x67\x65\x53\x75\x70\x70\x6F\x72\x74\x65\x64","\x5F","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x77\x69\x6B\x69\x2E\x78\x63\x61\x6C\x6C\x79\x6D\x6F\x74\x69\x6F\x6E\x2E\x63\x6F\x6D\x2F\x64\x69\x73\x70\x6C\x61\x79\x2F\x58\x4D\x44\x2F\x43\x61\x6C\x6C\x79\x2B\x53\x71\x75\x61\x72\x65","\x61\x62\x6F\x75\x74","\x20\x43\x61\x6C\x6C\x79\x20\x53\x71\x75\x61\x72\x65","\x46\x31","\x74\x6F\x67\x67\x6C\x65\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x46\x6C\x61\x67\x73","\x62\x6F\x6C\x64","\x69\x74\x61\x6C\x69\x63","\x75\x6E\x64\x65\x72\x6C\x69\x6E\x65","\x73\x68\x61\x64\x6F\x77","\x74\x6F\x67\x67\x6C\x65\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x73","\x64\x61\x73\x68\x65\x64","\x72\x6F\x75\x6E\x64\x65\x64","\x63\x75\x72\x76\x65\x64","\x29","\x67\x65\x74\x53\x74\x79\x6C\x65","\x73\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65","\x73\x65\x74\x41\x73\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65","\x73\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65","\x61\x64\x64\x57\x61\x79\x70\x6F\x69\x6E\x74","\x69\x73\x45\x64\x67\x65","\x67\x65\x74\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73\x48\x61\x6E\x64\x6C\x65\x72","\x67\x65\x74\x50\x61\x72\x65\x6E\x74","\x73\x74\x61\x74\x65","\x74\x72\x69\x67\x67\x65\x72\x58","\x70\x61\x6E\x6E\x69\x6E\x67\x48\x61\x6E\x64\x6C\x65\x72","\x74\x72\x69\x67\x67\x65\x72\x59","\x61\x64\x64\x50\x6F\x69\x6E\x74\x41\x74","\x72\x65\x6D\x6F\x76\x65\x57\x61\x79\x70\x6F\x69\x6E\x74","\x68\x61\x6E\x64\x6C\x65\x72","\x69\x6E\x64\x65\x78","\x72\x65\x6D\x6F\x76\x65\x50\x6F\x69\x6E\x74","\x69\x6D\x61\x67\x65","\x67\x65\x74\x47\x72\x69\x64\x53\x69\x7A\x65","\x67\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x50\x61\x72\x65\x6E\x74","\x69\x6E\x73\x65\x72\x74\x56\x65\x72\x74\x65\x78","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x6F\x75\x6E\x74","\x67\x65\x74\x47\x65\x6F\x6D\x65\x74\x72\x79","\x73\x63\x72\x6F\x6C\x6C\x43\x65\x6C\x6C\x54\x6F\x56\x69\x73\x69\x62\x6C\x65","\x53\x54\x59\x4C\x45\x5F\x49\x4D\x41\x47\x45","\x75\x72\x6C","\x6F\x6E\x6C\x6F\x61\x64","\x6F\x6E\x65\x72\x72\x6F\x72","\x66\x69\x6C\x65\x4E\x6F\x74\x46\x6F\x75\x6E\x64","\x61\x6C\x65\x72\x74","\x73\x72\x63","\x63\x61\x6C\x6C","\x6C\x61\x62\x65\x6C","\x65\x6E\x61\x62\x6C\x65\x64","\x69\x63\x6F\x6E\x43\x6C\x73","\x73\x68\x6F\x72\x74\x63\x75\x74","\x65\x78\x74\x65\x6E\x64","\x73\x74\x61\x74\x65\x43\x68\x61\x6E\x67\x65\x64","\x66\x69\x72\x65\x45\x76\x65\x6E\x74","\x74\x6F\x67\x67\x6C\x65\x41\x63\x74\x69\x6F\x6E","\x73\x65\x6C\x65\x63\x74\x65\x64\x43\x61\x6C\x6C\x62\x61\x63\x6B","\x69\x73\x53\x65\x6C\x65\x63\x74\x65\x64"];_0x807f[0];function Actions(_0x346bx2){this[_0x807f[1]]= _0x346bx2;this[_0x807f[2]]= new Object();this[_0x807f[3]]()}Actions[_0x807f[4]][_0x807f[3]]= function(){var _0x346bx3=this[_0x807f[1]];var _0x346bx4=_0x346bx3[_0x807f[5]];var _0x346bx5=_0x346bx4[_0x807f[6]];this[_0x807f[10]](_0x807f[7],function(){_0x346bx3[_0x807f[9]]( new NewDialog(_0x346bx3)[_0x807f[8]],300,180,true,true)});this[_0x807f[10]](_0x807f[11],function(){_0x346bx3[_0x807f[9]]( new OpenDialog(_0x346bx3)[_0x807f[8]],300,180,true,true)});this[_0x807f[10]](_0x807f[12],function(){_0x346bx3[_0x807f[13]](false)},null,null,_0x807f[14]);this[_0x807f[10]](_0x807f[15],function(){_0x346bx3[_0x807f[13]](true)},null,null,_0x807f[16]);this[_0x807f[10]](_0x807f[17],function(){_0x346bx3[_0x807f[18]](false)},null,null,_0x807f[19]);this[_0x807f[10]](_0x807f[20],function(){_0x346bx3[_0x807f[9]]( new VariableDialog(_0x346bx3)[_0x807f[8]],300,180,true,true)});this[_0x807f[10]](_0x807f[21],function(){_0x346bx3[_0x807f[9]]( new DescriptionDialog(_0x346bx3)[_0x807f[8]],300,180,true,true)});this[_0x807f[10]](_0x807f[22],function(){_0x346bx3[_0x807f[9]]( new ImportDialog(_0x346bx3)[_0x807f[8]],300,200,true,true)});this[_0x807f[10]](_0x807f[23],function(){_0x346bx3[_0x807f[9]]( new ExportDialog(_0x346bx3)[_0x807f[8]],300,200,true,true)},null,null,_0x807f[24]);this[_0x807f[29]](_0x807f[25], new Action(mxResources[_0x807f[27]](_0x807f[26]),mxUtils[_0x807f[28]](this,function(){this[_0x807f[1]][_0x807f[9]]( new EditFileDialog(_0x346bx3)[_0x807f[8]],620,420,true,true)})));this[_0x807f[10]](_0x807f[30],function(){mxUtils[_0x807f[31]](_0x346bx5)},null,_0x807f[32],_0x807f[33]);this[_0x807f[10]](_0x807f[34],function(){mxUtils[_0x807f[35]](_0x346bx5,null,10,10)});this[_0x807f[10]](_0x807f[36],function(){_0x346bx4[_0x807f[37]][_0x807f[36]]()},null,_0x807f[38],_0x807f[39]);this[_0x807f[10]](_0x807f[40],function(){_0x346bx4[_0x807f[37]][_0x807f[40]]()},null,_0x807f[41],_0x807f[42]);this[_0x807f[10]](_0x807f[43],function(){mxClipboard[_0x807f[43]](_0x346bx5)},null,_0x807f[44],_0x807f[45]);this[_0x807f[10]](_0x807f[46],function(){mxClipboard[_0x807f[46]](_0x346bx5)},null,_0x807f[47],_0x807f[48]);this[_0x807f[10]](_0x807f[49],function(){mxClipboard[_0x807f[49]](_0x346bx5)},false,_0x807f[50],_0x807f[51]);this[_0x807f[10]](_0x807f[52],function(){_0x346bx5[_0x807f[53]]()},null,null,_0x807f[54]);this[_0x807f[10]](_0x807f[55],function(){var _0x346bx6=_0x346bx5[_0x807f[56]];_0x346bx5[_0x807f[59]](_0x346bx5[_0x807f[58]](_0x346bx5[_0x807f[57]](),_0x346bx6,_0x346bx6,true))},null,null,_0x807f[60]);this[_0x807f[10]](_0x807f[61],function(){_0x346bx5[_0x807f[61]]()},null,null,_0x807f[62]);this[_0x807f[10]](_0x807f[63],function(){_0x346bx5[_0x807f[63]]()},null,null,_0x807f[64]);this[_0x807f[10]](_0x807f[65],function(){_0x346bx5[_0x807f[65]]()},null,null,_0x807f[66]);this[_0x807f[10]](_0x807f[67],function(){_0x346bx5[_0x807f[67]]()},null,null,_0x807f[68]);this[_0x807f[10]](_0x807f[69],function(){_0x346bx5[_0x807f[69]]()},null,null,_0x807f[70]);this[_0x807f[10]](_0x807f[71],function(){_0x346bx5[_0x807f[71]]()},null,null,_0x807f[72]);this[_0x807f[10]](_0x807f[73],function(){_0x346bx5[_0x807f[74]](false)},null,null,_0x807f[75]);this[_0x807f[10]](_0x807f[76],function(){_0x346bx5[_0x807f[74]](true)},null,null,_0x807f[77]);this[_0x807f[10]](_0x807f[78],function(){_0x346bx5[_0x807f[79]](false)},null,null,_0x807f[80]);this[_0x807f[10]](_0x807f[81],function(){_0x346bx5[_0x807f[79]](true)},null,null,_0x807f[82]);this[_0x807f[10]](_0x807f[83],function(){_0x346bx5[_0x807f[85]](_0x346bx5[_0x807f[84]](null,0))},null,null,_0x807f[86]);this[_0x807f[10]](_0x807f[87],function(){_0x346bx5[_0x807f[59]](_0x346bx5[_0x807f[88]]())},null,null,_0x807f[89]);this[_0x807f[10]](_0x807f[90],function(){_0x346bx5[_0x807f[91]]()});this[_0x807f[10]](_0x807f[92],function(){var _0x346bx7=_0x346bx5[_0x807f[93]]();var _0x346bx8=_0x346bx5[_0x807f[94]](_0x346bx7);if(_0x346bx8== null){_0x346bx8= _0x807f[95]};_0x346bx8= mxUtils[_0x807f[97]](mxResources[_0x807f[27]](_0x807f[96]),_0x346bx8);if(_0x346bx8!= null){_0x346bx5[_0x807f[98]](_0x346bx7,_0x346bx8)}});this[_0x807f[10]](_0x807f[99],function(){var _0x346bx7=_0x346bx5[_0x807f[93]]();var _0x346bx8=_0x346bx5[_0x807f[94]](_0x346bx7);if(_0x346bx8!= null){window[_0x807f[11]](_0x346bx8)}});this[_0x807f[10]](_0x807f[100],function(){var _0x346bx9=_0x346bx5[_0x807f[57]]();if(_0x346bx9!= null){_0x346bx5[_0x807f[102]]()[_0x807f[101]]();try{for(var _0x346bxa=0;_0x346bxa< _0x346bx9[_0x807f[103]];_0x346bxa++){var _0x346bx7=_0x346bx9[_0x346bxa];if(_0x346bx5[_0x807f[102]]()[_0x807f[104]](_0x346bx7)){_0x346bx5[_0x807f[105]]([_0x346bx7],20)}else {_0x346bx5[_0x807f[106]](_0x346bx7)}}}finally{_0x346bx5[_0x807f[102]]()[_0x807f[107]]()}}});this[_0x807f[10]](_0x807f[108],function(){var _0x346bxb=_0x346bx5[_0x807f[110]]()[_0x807f[109]](_0x346bx5[_0x807f[93]]());var _0x346bxc=_0x807f[111];if(_0x346bxb!= null&& _0x346bxb[_0x807f[113]][mxConstants[_0x807f[112]]]== _0x807f[111]){_0x346bxc= null};_0x346bx5[_0x807f[114]](mxConstants.STYLE_WHITE_SPACE,_0x346bxc)});this[_0x807f[10]](_0x807f[115],function(){var _0x346bxc=_0x807f[116];var _0x346bxb=_0x346bx5[_0x807f[110]]()[_0x807f[109]](_0x346bx5[_0x807f[93]]());if(_0x346bxb!= null){_0x346bxc= _0x346bxb[_0x807f[113]][mxConstants[_0x807f[117]]]|| _0x346bxc};_0x346bxc= mxUtils[_0x807f[97]](mxResources[_0x807f[27]](_0x807f[96])+ _0x807f[118]+ mxResources[_0x807f[27]](_0x807f[115])+ _0x807f[119],_0x346bxc);if(_0x346bxc!= null){_0x346bx5[_0x807f[114]](mxConstants.STYLE_ROTATION,_0x346bxc)}});this[_0x807f[10]](_0x807f[120],function(){var _0x346bx9=_0x346bx5[_0x807f[57]]();if(_0x346bx9!= null){_0x346bx5[_0x807f[102]]()[_0x807f[101]]();try{for(var _0x346bxa=0;_0x346bxa< _0x346bx9[_0x807f[103]];_0x346bxa++){var _0x346bx7=_0x346bx9[_0x346bxa];if(_0x346bx5[_0x807f[102]]()[_0x807f[121]](_0x346bx7)&& _0x346bx5[_0x807f[102]]()[_0x807f[104]](_0x346bx7)== 0){var _0x346bxd=_0x346bx5[_0x807f[122]](_0x346bx7);if(_0x346bxd!= null){_0x346bxd= _0x346bxd[_0x807f[123]]();_0x346bxd[_0x807f[124]]+= _0x346bxd[_0x807f[125]]/ 2- _0x346bxd[_0x807f[126]]/ 2;_0x346bxd[_0x807f[127]]+= _0x346bxd[_0x807f[126]]/ 2- _0x346bxd[_0x807f[125]]/ 2;var _0x346bxe=_0x346bxd[_0x807f[125]];_0x346bxd[_0x807f[125]]= _0x346bxd[_0x807f[126]];_0x346bxd[_0x807f[126]]= _0x346bxe;_0x346bx5[_0x807f[102]]()[_0x807f[128]](_0x346bx7,_0x346bxd);var _0x346bxb=_0x346bx5[_0x807f[129]][_0x807f[109]](_0x346bx7);if(_0x346bxb!= null){var _0x346bxf=_0x346bxb[_0x807f[113]][mxConstants[_0x807f[130]]]|| _0x807f[131];if(_0x346bxf== _0x807f[131]){_0x346bxf= _0x807f[132]}else {if(_0x346bxf== _0x807f[132]){_0x346bxf= _0x807f[133]}else {if(_0x346bxf== _0x807f[133]){_0x346bxf= _0x807f[134]}else {if(_0x346bxf== _0x807f[134]){_0x346bxf= _0x807f[131]}}}};_0x346bx5[_0x807f[114]](mxConstants.STYLE_DIRECTION,_0x346bxf,[_0x346bx7])}}}}}finally{_0x346bx5[_0x807f[102]]()[_0x807f[107]]()}}},null,null,_0x807f[135]);this[_0x807f[10]](_0x807f[136],function(){_0x346bx5[_0x807f[137]](1)});this[_0x807f[10]](_0x807f[138],function(){_0x346bx5[_0x807f[138]]()},null,null,_0x807f[139]);this[_0x807f[10]](_0x807f[140],function(){_0x346bx5[_0x807f[140]]()},null,null,_0x807f[141]);this[_0x807f[10]](_0x807f[142],function(){_0x346bx5[_0x807f[143]]()});this[_0x807f[10]](_0x807f[144],mxUtils[_0x807f[28]](this,function(){if(!_0x346bx5[_0x807f[145]]){this[_0x807f[27]](_0x807f[147])[_0x807f[146]]()};var _0x346bx10=_0x346bx5[_0x807f[148]];var _0x346bx11=_0x346bx5[_0x807f[149]];var _0x346bx12=_0x346bx5[_0x807f[8]][_0x807f[150]]- 20;var _0x346bx13=_0x346bx5[_0x807f[8]][_0x807f[151]]- 20;var _0x346bx14=Math[_0x807f[153]](100* Math[_0x807f[152]](_0x346bx12/ _0x346bx10[_0x807f[125]]/ _0x346bx11,_0x346bx13/ _0x346bx10[_0x807f[126]]/ _0x346bx11))/ 100;_0x346bx5[_0x807f[137]](_0x346bx14);_0x346bx5[_0x807f[8]][_0x807f[154]]= Math[_0x807f[157]](_0x346bx5[_0x807f[129]][_0x807f[155]][_0x807f[124]]* _0x346bx14- Math[_0x807f[156]](10,(_0x346bx5[_0x807f[8]][_0x807f[150]]- _0x346bx10[_0x807f[125]]* _0x346bx11* _0x346bx14)/ 2));_0x346bx5[_0x807f[8]][_0x807f[158]]= Math[_0x807f[157]](_0x346bx5[_0x807f[129]][_0x807f[155]][_0x807f[127]]* _0x346bx14- Math[_0x807f[156]](10,(_0x346bx5[_0x807f[8]][_0x807f[151]]- _0x346bx10[_0x807f[126]]* _0x346bx11* _0x346bx14)/ 2))}));this[_0x807f[10]](_0x807f[159],mxUtils[_0x807f[28]](this,function(){if(!_0x346bx5[_0x807f[145]]){this[_0x807f[27]](_0x807f[147])[_0x807f[146]]()};var _0x346bx10=_0x346bx5[_0x807f[148]];var _0x346bx11=_0x346bx5[_0x807f[149]];var _0x346bx12=_0x346bx5[_0x807f[8]][_0x807f[150]]- 20;var _0x346bx14=Math[_0x807f[153]](100* _0x346bx12/ _0x346bx10[_0x807f[125]]/ _0x346bx11)/ 100;_0x346bx5[_0x807f[137]](_0x346bx14);_0x346bx5[_0x807f[8]][_0x807f[154]]= Math[_0x807f[157]](_0x346bx5[_0x807f[129]][_0x807f[155]][_0x807f[124]]* _0x346bx14- Math[_0x807f[156]](10,(_0x346bx5[_0x807f[8]][_0x807f[150]]- _0x346bx10[_0x807f[125]]* _0x346bx11* _0x346bx14)/ 2));_0x346bx5[_0x807f[8]][_0x807f[158]]= Math[_0x807f[157]](_0x346bx5[_0x807f[129]][_0x807f[155]][_0x807f[127]]* _0x346bx14- Math[_0x807f[156]](10,(_0x346bx5[_0x807f[8]][_0x807f[151]]- _0x346bx10[_0x807f[126]]* _0x346bx11* _0x346bx14)/ 2))}));this[_0x807f[29]](_0x807f[160], new Action(mxResources[_0x807f[27]](_0x807f[161]),function(){var _0x346bxc=mxUtils[_0x807f[97]](mxResources[_0x807f[27]](_0x807f[96])+ _0x807f[162],parseInt(_0x346bx5[_0x807f[110]]()[_0x807f[163]]()* 100));if(_0x346bxc!= null&& _0x346bxc[_0x807f[103]]> 0&& !isNaN(parseInt(_0x346bxc))){_0x346bx5[_0x807f[137]](parseInt(_0x346bxc)/ 100)}}));var _0x346bx15=null;_0x346bx15= this[_0x807f[10]](_0x807f[164],function(){_0x346bx5[_0x807f[166]](!_0x346bx5[_0x807f[165]]());_0x346bx4[_0x807f[167]]()},null,null,_0x807f[168]);_0x346bx15[_0x807f[169]](true);_0x346bx15[_0x807f[170]](function(){return _0x346bx5[_0x807f[165]]()});_0x346bx15= this[_0x807f[10]](_0x807f[171],function(){_0x346bx5[_0x807f[173]][_0x807f[172]]= !_0x346bx5[_0x807f[173]][_0x807f[172]]});_0x346bx15[_0x807f[169]](true);_0x346bx15[_0x807f[170]](function(){return _0x346bx5[_0x807f[173]][_0x807f[172]]});_0x346bx15= this[_0x807f[10]](_0x807f[174],function(){_0x346bx5[_0x807f[176]][_0x807f[177]](!_0x346bx5[_0x807f[176]][_0x807f[175]]())});_0x346bx15[_0x807f[169]](true);_0x346bx15[_0x807f[170]](function(){return _0x346bx5[_0x807f[176]][_0x807f[175]]()});_0x346bx15= this[_0x807f[10]](_0x807f[178],function(){_0x346bx5[_0x807f[179]]= !_0x346bx5[_0x807f[179]];_0x346bx5[_0x807f[129]][_0x807f[180]]()});_0x346bx15[_0x807f[169]](true);_0x346bx15[_0x807f[170]](function(){return _0x346bx5[_0x807f[179]]});_0x346bx15= this[_0x807f[10]](_0x807f[181],function(){_0x346bx5[_0x807f[181]]= !_0x346bx5[_0x807f[181]];_0x346bx4[_0x807f[167]]();if(!_0x346bx5[_0x807f[181]]){var _0x346bx16=_0x346bx5[_0x807f[129]][_0x807f[155]];_0x346bx5[_0x807f[129]][_0x807f[183]](_0x346bx16[_0x807f[124]]- _0x346bx5[_0x807f[8]][_0x807f[154]]/ _0x346bx5[_0x807f[129]][_0x807f[182]],_0x346bx16[_0x807f[127]]- _0x346bx5[_0x807f[8]][_0x807f[158]]/ _0x346bx5[_0x807f[129]][_0x807f[182]]);_0x346bx5[_0x807f[8]][_0x807f[154]]= 0;_0x346bx5[_0x807f[8]][_0x807f[158]]= 0;_0x346bx5[_0x807f[184]]()}else {var _0x346bx17=_0x346bx5[_0x807f[129]][_0x807f[155]][_0x807f[124]];var _0x346bx18=_0x346bx5[_0x807f[129]][_0x807f[155]][_0x807f[127]];_0x346bx5[_0x807f[129]][_0x807f[155]][_0x807f[124]]= 0;_0x346bx5[_0x807f[129]][_0x807f[155]][_0x807f[127]]= 0;_0x346bx5[_0x807f[184]]();_0x346bx5[_0x807f[8]][_0x807f[154]]-= Math[_0x807f[157]](_0x346bx17* _0x346bx5[_0x807f[129]][_0x807f[182]]);_0x346bx5[_0x807f[8]][_0x807f[158]]-= Math[_0x807f[157]](_0x346bx18* _0x346bx5[_0x807f[129]][_0x807f[182]])}},!mxClient[_0x807f[185]]);_0x346bx15[_0x807f[169]](true);_0x346bx15[_0x807f[170]](function(){return _0x346bx5[_0x807f[8]][_0x807f[113]][_0x807f[186]]== _0x807f[187]});_0x346bx15= this[_0x807f[10]](_0x807f[147],mxUtils[_0x807f[28]](this,function(){_0x346bx5[_0x807f[145]]= !_0x346bx5[_0x807f[145]];_0x346bx5[_0x807f[188]]= _0x346bx5[_0x807f[145]];_0x346bx5[_0x807f[189]]= _0x346bx5[_0x807f[188]];_0x346bx5[_0x807f[129]][_0x807f[190]]();_0x346bx5[_0x807f[184]]();_0x346bx4[_0x807f[167]]();_0x346bx4[_0x807f[192]][_0x807f[191]]();if(mxUtils[_0x807f[193]](_0x346bx5[_0x807f[8]])){if(_0x346bx5[_0x807f[145]]){_0x346bx5[_0x807f[8]][_0x807f[154]]-= 20;_0x346bx5[_0x807f[8]][_0x807f[158]]-= 20}else {_0x346bx5[_0x807f[8]][_0x807f[154]]+= 20;_0x346bx5[_0x807f[8]][_0x807f[158]]+= 20}}}));_0x346bx15[_0x807f[169]](true);_0x346bx15[_0x807f[170]](function(){return _0x346bx5[_0x807f[145]]});_0x346bx15= this[_0x807f[10]](_0x807f[194],function(){_0x346bx5[_0x807f[196]](!_0x346bx5[_0x807f[195]][_0x807f[175]]())},null,null,_0x807f[197]);_0x346bx15[_0x807f[169]](true);_0x346bx15[_0x807f[170]](function(){return _0x346bx5[_0x807f[195]][_0x807f[175]]()});_0x346bx15= this[_0x807f[10]](_0x807f[198],function(){_0x346bx5[_0x807f[195]][_0x807f[200]](!_0x346bx5[_0x807f[195]][_0x807f[199]]())});_0x346bx15[_0x807f[169]](true);_0x346bx15[_0x807f[170]](function(){return _0x346bx5[_0x807f[195]][_0x807f[199]]()});this[_0x807f[10]](_0x807f[201],function(){var _0x346bx19=_0x807f[95];if(mxResources[_0x807f[203]](mxClient[_0x807f[202]])){_0x346bx19= _0x807f[204]+ mxClient[_0x807f[202]]};window[_0x807f[11]](_0x807f[205])});this[_0x807f[29]](_0x807f[206], new Action(mxResources[_0x807f[27]](_0x807f[206])+ _0x807f[207],function(){_0x346bx3[_0x807f[9]]( new AboutDialog(_0x346bx3)[_0x807f[8]],320,280,true,true)},null,null,_0x807f[208]));var _0x346bx1a=mxUtils[_0x807f[28]](this,function(_0x346bx1b,_0x346bx1c){this[_0x807f[10]](_0x346bx1b,function(){_0x346bx5[_0x807f[209]](mxConstants.STYLE_FONTSTYLE,_0x346bx1c)})});_0x346bx1a(_0x807f[210],mxConstants.FONT_BOLD);_0x346bx1a(_0x807f[211],mxConstants.FONT_ITALIC);_0x346bx1a(_0x807f[212],mxConstants.FONT_UNDERLINE);this[_0x807f[10]](_0x807f[213],function(){_0x346bx5[_0x807f[214]](mxConstants.STYLE_SHADOW)});this[_0x807f[10]](_0x807f[215],function(){_0x346bx5[_0x807f[214]](mxConstants.STYLE_DASHED)});this[_0x807f[10]](_0x807f[216],function(){_0x346bx5[_0x807f[214]](mxConstants.STYLE_ROUNDED)});this[_0x807f[10]](_0x807f[217],function(){_0x346bx5[_0x807f[214]](mxConstants.STYLE_CURVED)});this[_0x807f[10]](_0x807f[113],function(){var _0x346bx9=_0x346bx5[_0x807f[57]]();if(_0x346bx9!= null&& _0x346bx9[_0x807f[103]]> 0){var _0x346bx1d=_0x346bx5[_0x807f[102]]();var _0x346bx1c=mxUtils[_0x807f[97]](mxResources[_0x807f[27]](_0x807f[96])+ _0x807f[118]+ mxResources[_0x807f[27]](_0x807f[113])+ _0x807f[218],_0x346bx1d[_0x807f[219]](_0x346bx9[0])|| _0x807f[95]);if(_0x346bx1c!= null){_0x346bx5[_0x807f[220]](_0x346bx1c,_0x346bx9)}}});this[_0x807f[10]](_0x807f[221],function(){_0x346bx5[_0x807f[222]](_0x346bx5[_0x807f[93]]())});this[_0x807f[10]](_0x807f[223],function(){var _0x346bx7=_0x346bx5[_0x807f[93]]();if(_0x346bx7!= null&& _0x346bx5[_0x807f[102]]()[_0x807f[224]](_0x346bx7)){var _0x346bx1e=_0x346bx4[_0x807f[6]][_0x807f[226]][_0x807f[225]](_0x346bx7);if(_0x346bx1e instanceof mxEdgeHandler){var _0x346bx16=_0x346bx5[_0x807f[129]][_0x807f[155]];var _0x346bx6=_0x346bx5[_0x807f[129]][_0x807f[182]];var _0x346bx17=_0x346bx16[_0x807f[124]];var _0x346bx18=_0x346bx16[_0x807f[127]];var _0x346bx1f=_0x346bx5[_0x807f[102]]()[_0x807f[227]](_0x346bx7);var _0x346bx20=_0x346bx5[_0x807f[122]](_0x346bx1f);if(_0x346bx5[_0x807f[102]]()[_0x807f[121]](_0x346bx1f)&& _0x346bx20!= null){_0x346bx17+= _0x346bx20[_0x807f[124]];_0x346bx18+= _0x346bx20[_0x807f[127]]};_0x346bx1e[_0x807f[232]](_0x346bx1e[_0x807f[228]],_0x346bx5[_0x807f[230]][_0x807f[229]]/ _0x346bx6- _0x346bx17,_0x346bx5[_0x807f[230]][_0x807f[231]]/ _0x346bx6- _0x346bx18)}}});this[_0x807f[10]](_0x807f[233],function(){var _0x346bx21=_0x346bx3[_0x807f[2]][_0x807f[27]](_0x807f[233]);if(_0x346bx21[_0x807f[234]]!= null){_0x346bx21[_0x807f[234]][_0x807f[236]](_0x346bx21[_0x807f[234]][_0x807f[228]],_0x346bx21[_0x807f[235]])}});this[_0x807f[10]](_0x807f[237],function(){function _0x346bx22(_0x346bxc,_0x346bx23,_0x346bx24){var _0x346bx25=null;var _0x346bx9=_0x346bx5[_0x807f[57]]();_0x346bx5[_0x807f[102]]()[_0x807f[101]]();try{if(_0x346bx9[_0x807f[103]]== 0){var _0x346bx26=_0x346bx5[_0x807f[238]]();_0x346bx9= [_0x346bx5[_0x807f[240]](_0x346bx5[_0x807f[239]](),null,_0x807f[95],_0x346bx26,_0x346bx26,_0x346bx23,_0x346bx24)];_0x346bx25= _0x346bx9};_0x346bx5[_0x807f[114]](mxConstants.STYLE_IMAGE,_0x346bxc,_0x346bx9);_0x346bx5[_0x807f[114]](mxConstants.STYLE_SHAPE,_0x807f[237],_0x346bx9);if(_0x346bx5[_0x807f[241]]()== 1){if(_0x346bx23!= null&& _0x346bx24!= null){var _0x346bx7=_0x346bx9[0];var _0x346bxd=_0x346bx5[_0x807f[102]]()[_0x807f[242]](_0x346bx7);if(_0x346bxd!= null){_0x346bxd= _0x346bxd[_0x807f[123]]();_0x346bxd[_0x807f[125]]= _0x346bx23;_0x346bxd[_0x807f[126]]= _0x346bx24;_0x346bx5[_0x807f[102]]()[_0x807f[128]](_0x346bx7,_0x346bxd)}}}}finally{_0x346bx5[_0x807f[102]]()[_0x807f[107]]()};if(_0x346bx25!= null){_0x346bx5[_0x807f[59]](_0x346bx25);_0x346bx5[_0x807f[243]](_0x346bx25[0])}}var _0x346bxc=_0x807f[95];var _0x346bxb=_0x346bx5[_0x807f[110]]()[_0x807f[109]](_0x346bx5[_0x807f[93]]());if(_0x346bxb!= null){_0x346bxc= _0x346bxb[_0x807f[113]][mxConstants[_0x807f[244]]]|| _0x346bxc};_0x346bxc= mxUtils[_0x807f[97]](mxResources[_0x807f[27]](_0x807f[96])+ _0x807f[118]+ mxResources[_0x807f[27]](_0x807f[245])+ _0x807f[218],_0x346bxc);if(_0x346bxc!= null){if(_0x346bxc[_0x807f[103]]> 0){var _0x346bx27= new Image();_0x346bx27[_0x807f[246]]= function(){_0x346bx22(_0x346bxc,_0x346bx27[_0x807f[125]],_0x346bx27[_0x807f[126]])};_0x346bx27[_0x807f[247]]= function(){mxUtils[_0x807f[249]](mxResources[_0x807f[27]](_0x807f[248]))};_0x346bx27[_0x807f[250]]= _0x346bxc}}})};Actions[_0x807f[4]][_0x807f[10]]= function(_0x346bx1b,_0x346bx28,_0x346bx29,_0x346bx2a,_0x346bx2b){return this[_0x807f[29]](_0x346bx1b, new Action(mxResources[_0x807f[27]](_0x346bx1b),_0x346bx28,_0x346bx29,_0x346bx2a,_0x346bx2b))};Actions[_0x807f[4]][_0x807f[29]]= function(_0x346bx2c,_0x346bx15){this[_0x807f[2]][_0x346bx2c]= _0x346bx15;return _0x346bx15};Actions[_0x807f[4]][_0x807f[27]]= function(_0x346bx2c){return this[_0x807f[2]][_0x346bx2c]};function Action(_0x346bx2e,_0x346bx28,_0x346bx29,_0x346bx2a,_0x346bx2b){mxEventSource[_0x807f[251]](this);this[_0x807f[252]]= _0x346bx2e;this[_0x807f[146]]= _0x346bx28;this[_0x807f[253]]= (_0x346bx29!= null)?_0x346bx29:true;this[_0x807f[254]]= _0x346bx2a;this[_0x807f[255]]= _0x346bx2b}mxUtils[_0x807f[256]](Action,mxEventSource);Action[_0x807f[4]][_0x807f[177]]= function(_0x346bxc){if(this[_0x807f[253]]!= _0x346bxc){this[_0x807f[253]]= _0x346bxc;this[_0x807f[258]]( new mxEventObject(_0x807f[257]))}};Action[_0x807f[4]][_0x807f[169]]= function(_0x346bxc){this[_0x807f[259]]= _0x346bxc};Action[_0x807f[4]][_0x807f[170]]= function(_0x346bx28){this[_0x807f[260]]= _0x346bx28};Action[_0x807f[4]][_0x807f[261]]= function(){return this[_0x807f[260]]()} \ No newline at end of file +undefined \ No newline at end of file diff --git a/public/assets/plugins/square/js/Dialogs.js b/public/assets/plugins/square/js/Dialogs.js index 91a89c9..66dc905 100644 --- a/public/assets/plugins/square/js/Dialogs.js +++ b/public/assets/plugins/square/js/Dialogs.js @@ -1 +1 @@ -var _0x61f3=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x69\x6E\x70\x75\x74","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x74\x79\x70\x65","\x63\x68\x65\x63\x6B\x62\x6F\x78","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x63\x68\x65\x63\x6B\x65\x64","\x7C","\x2F","\x6C\x61\x73\x74\x49\x6E\x64\x65\x78\x4F\x66","\x66\x69\x6C\x65\x73","\x73\x6C\x69\x63\x65","\x69\x6E\x64\x65\x78\x4F\x66","\x7C\x70\x64\x66\x7C\x74\x69\x66\x66\x7C\x74\x69\x66","\x66\x69\x6C\x65","\x6E\x61\x6D\x65","\x61\x70\x70\x65\x6E\x64","\x50\x4F\x53\x54","\x2F\x61\x70\x69\x2F\x66\x61\x78\x2F\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x73","\x6F\x70\x65\x6E","\x41\x75\x74\x68\x6F\x72\x69\x7A\x61\x74\x69\x6F\x6E","\x42\x65\x61\x72\x65\x72\x20","\x74\x6F\x6B\x65\x6E","\x64\x61\x74\x61","\x65\x64\x69\x74\x6F\x72","\x73\x65\x74\x52\x65\x71\x75\x65\x73\x74\x48\x65\x61\x64\x65\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x72\x65\x73\x70\x6F\x6E\x73\x65","\x70\x61\x72\x73\x65","\x76\x61\x6C\x75\x65","\x5F\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x5F\x6E\x61\x6D\x65","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64","\x5F\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x5F\x70\x61\x74\x68","\x70\x61\x74\x68","\x5F\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x5F\x74\x79\x70\x65","\x57\x72\x6F\x6E\x67\x20\x66\x69\x6C\x65\x20\x66\x6F\x72\x6D\x61\x74\x21","\x65\x72\x72\x6F\x72","\x47\x45\x54","\x73\x65\x6C\x65\x63\x74","\x6F\x70\x74\x69\x6F\x6E","\x74\x65\x78\x74","\x2D\x2D\x20\x4E\x6F\x6E\x65\x20\x2D\x2D","\x2D\x31","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x25","\x72\x65\x70\x6C\x61\x63\x65","\x66\x6F\x72\x45\x61\x63\x68","\x73\x65\x6C\x65\x63\x74\x65\x64","\x72\x6F\x77\x73","\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x66\x6F\x72\x6D\x2D\x63\x6F\x6E\x74\x72\x6F\x6C\x20\x73\x65\x6C\x65\x63\x74\x32","\x67\x72\x6F\x75\x70\x42\x79","\x68\x61\x73\x4F\x77\x6E\x50\x72\x6F\x70\x65\x72\x74\x79","\x6F\x70\x74\x67\x72\x6F\x75\x70","\x6C\x61\x62\x65\x6C","\x63\x61\x70\x69\x74\x61\x6C\x69\x7A\x65","\x30","\x73\x65\x6C\x65\x63\x74\x2D\x67\x72\x6F\x75\x70\x2D\x66\x61\x74\x68\x65\x72","\x74\x6F\x55\x70\x70\x65\x72\x43\x61\x73\x65","\x73\x65\x6C\x65\x63\x74\x2D\x67\x72\x6F\x75\x70\x2D\x73\x6F\x6E","\x2D","","\x2F\x61\x70\x69\x2F\x72\x65\x73\x74\x2F\x6C\x69\x73\x74\x2F\x6C\x69\x73\x74","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x52\x4D\x49","\x69\x64","\x6C\x6F\x67","\x49\x53\x5F\x49\x45","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x4D\x6F\x64\x65","\x73\x63\x72\x6F\x6C\x6C\x57\x69\x64\x74\x68","\x62\x6F\x64\x79","\x72\x6F\x75\x6E\x64","\x6D\x61\x78","\x73\x63\x72\x6F\x6C\x6C\x48\x65\x69\x67\x68\x74","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x67\x65\x44\x69\x61\x6C\x6F\x67","\x63\x72\x65\x61\x74\x65\x44\x69\x76","\x6D\x6F\x64\x61\x6C\x20\x66\x61\x64\x65\x20\x69\x6E\x20\x63\x65\x6E\x74\x65\x72","\x64\x69\x73\x70\x6C\x61\x79","\x73\x74\x79\x6C\x65","\x62\x6C\x6F\x63\x6B","\x70\x61\x64\x64\x69\x6E\x67\x52\x69\x67\x68\x74","\x31\x32\x70\x78","\x67\x65\x4D\x6F\x64\x61\x6C\x44\x69\x61\x6C\x6F\x67","\x6D\x6F\x64\x61\x6C\x2D\x64\x69\x61\x6C\x6F\x67","\x62\x67","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x6D\x6F\x64\x61\x6C\x2D\x62\x61\x63\x6B\x64\x72\x6F\x70\x20\x66\x61\x64\x65\x20\x69\x6E","\x49\x53\x5F\x51\x55\x49\x52\x4B\x53","\x6F\x6E\x44\x69\x61\x6C\x6F\x67\x43\x6C\x6F\x73\x65","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x63\x6C\x6F\x73\x65","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x72\x65\x6D\x6F\x76\x65\x43\x68\x69\x6C\x64","\x70\x61\x72\x65\x6E\x74\x4E\x6F\x64\x65","\x6D\x6F\x64\x61\x6C\x2D\x63\x6F\x6E\x74\x65\x6E\x74","\x6D\x6F\x64\x61\x6C\x2D\x68\x65\x61\x64\x65\x72","\x6D\x6F\x64\x61\x6C\x2D\x62\x6F\x64\x79","\x6D\x6F\x64\x61\x6C\x2D\x66\x6F\x6F\x74\x65\x72","\x68\x34","\x63\x72\x65\x61\x74\x65\x48\x65\x61\x64\x65\x72","\x69\x6D\x70\x6F\x72\x74","\x67\x65\x74","\x20\x58\x4D\x4C","\x77\x72\x69\x74\x65","\x68\x69\x64\x65\x44\x69\x61\x6C\x6F\x67","\x62\x75\x74\x74\x6F\x6E","\x72\x6F\x77","\x63\x6F\x6C\x2D\x6D\x64\x2D\x31\x32","\x74\x65\x78\x74\x61\x72\x65\x61","\x77\x69\x64\x74\x68","\x31\x30\x30\x25","\x68\x65\x69\x67\x68\x74","\x33\x37\x34\x70\x78","\x61\x63\x63\x65\x70\x74","\x74\x65\x78\x74\x2F\x78\x6D\x6C","\x63\x68\x61\x6E\x67\x65","\x74\x61\x72\x67\x65\x74","\x6F\x6E\x6C\x6F\x61\x64","\x72\x65\x73\x75\x6C\x74","\x72\x65\x61\x64\x41\x73\x54\x65\x78\x74","\x46\x61\x69\x6C\x65\x64\x20\x74\x6F\x20\x6C\x6F\x61\x64\x20\x66\x6F\x72\x6D\x61\x74\x20\x66\x69\x6C\x65","\x46\x61\x69\x6C\x65\x64\x20\x74\x6F\x20\x6C\x6F\x61\x64\x20\x66\x69\x6C\x65","\x61\x64\x64\x45\x76\x65\x6E\x74\x4C\x69\x73\x74\x65\x6E\x65\x72","\x70\x61\x72\x73\x65\x58\x6D\x6C","\x73\x65\x74\x47\x72\x61\x70\x68\x58\x6D\x6C","\x62\x69\x6E\x64","\x62\x74\x6E\x20\x62\x6C\x75\x65","\x63\x61\x6E\x63\x65\x6C","\x62\x74\x6E\x20\x64\x65\x66\x61\x75\x6C\x74","\x61\x62\x6F\x75\x74","\x20\x43\x61\x6C\x6C\x79\x20\x53\x71\x75\x61\x72\x65","\x69\x6D\x67","\x62\x6F\x72\x64\x65\x72","\x30\x70\x78","\x31\x37\x36","\x31\x35\x31","\x73\x72\x63","\x2F\x6C\x6F\x67\x6F\x2E\x70\x6E\x67","\x62\x72","\x50\x6F\x77\x65\x72\x65\x64\x20\x62\x79\x20\x58\x65\x6E\x69\x61\x6C\x61\x62\x20","\x56\x45\x52\x53\x49\x4F\x4E","\x61","\x68\x72\x65\x66","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x63\x61\x6C\x6C\x79\x73\x71\x75\x61\x72\x65\x2E\x63\x6F\x6D\x2F","\x5F\x62\x6C\x61\x6E\x6B","\x77\x77\x77\x2E\x63\x61\x6C\x6C\x79\x73\x71\x75\x61\x72\x65\x2E\x63\x6F\x6D","\x73\x61\x76\x65\x41\x73","\x5F","\x67\x65\x74\x4F\x72\x43\x72\x65\x61\x74\x65\x46\x69\x6C\x65\x6E\x61\x6D\x65","\x63\x6F\x6C\x2D\x6D\x64\x2D\x34","\x63\x6F\x6C\x2D\x6D\x64\x2D\x38","\x63\x6F\x6E\x74\x72\x6F\x6C\x2D\x6C\x61\x62\x65\x6C\x20\x70\x75\x6C\x6C\x2D\x72\x69\x67\x68\x74","\x70\x72\x6F\x6A\x65\x63\x74\x6E\x61\x6D\x65","\x5F\x63\x6F\x70\x79","\x66\x6F\x72\x6D\x2D\x63\x6F\x6E\x74\x72\x6F\x6C","\x73\x61\x76\x65","\x6E\x65\x77","\x5F\x6E\x65\x77","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x66\x6F\x72\x6D\x2D\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C\x20\x66\x6F\x72\x6D\x2D\x72\x6F\x77\x2D\x73\x65\x70\x65\x72\x61\x74\x65\x64","\x66\x6F\x72\x6D\x2D\x67\x72\x6F\x75\x70","\x63\x6F\x6C\x2D\x73\x6D\x2D\x34\x20\x63\x6F\x6E\x74\x72\x6F\x6C\x2D\x6C\x61\x62\x65\x6C","\x63\x6F\x6C\x2D\x73\x6D\x2D\x38","\x75\x70\x64\x61\x74\x65","\x76\x61\x72\x69\x61\x62\x6C\x65","\x76\x61\x72\x69\x61\x62\x6C\x65\x20\x6E\x61\x6D\x65","\x76\x61\x72\x69\x61\x62\x6C\x65\x5F\x6E\x61\x6D\x65","\x76\x61\x72\x69\x61\x62\x6C\x65\x20\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x66\x6F\x72\x6D\x2D\x67\x72\x6F\x75\x70\x20\x6C\x61\x73\x74","\x2F\x61\x70\x69\x2F\x73\x71\x75\x61\x72\x65\x2F\x70\x72\x6F\x6A\x65\x63\x74\x73","\x63\x6F\x75\x6E\x74","\x73\x71\x75\x61\x72\x65\x2F\x70\x72\x6F\x6A\x65\x63\x74\x73\x2F\x76\x69\x65\x77\x2F","\x72\x65\x6E\x61\x6D\x65","\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x50\x55\x54","\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x78\x2D\x77\x77\x77\x2D\x66\x6F\x72\x6D\x2D\x75\x72\x6C\x65\x6E\x63\x6F\x64\x65\x64","\x6E\x61\x6D\x65\x3D","\x50\x72\x6F\x6A\x65\x63\x74\x20\x73\x75\x63\x63\x65\x73\x73\x66\x75\x6C\x6C\x79\x20\x72\x65\x6E\x61\x6D\x65\x64","\x73\x65\x74\x53\x74\x61\x74\x75\x73","\x6D\x65\x73\x73\x61\x67\x65","\x65\x72\x72\x6F\x72\x73","\x6F\x6E\x65\x72\x72\x6F\x72","\x73\x74\x61\x74\x75\x73\x54\x65\x78\x74","\x61\x6C\x65\x72\x74","\x65\x64\x69\x74","\x67\x65\x74\x47\x72\x61\x70\x68\x58\x6D\x6C","\x67\x65\x74\x50\x72\x65\x74\x74\x79\x58\x6D\x6C","\x73\x74\x6F\x70\x50\x72\x6F\x70\x61\x67\x61\x74\x69\x6F\x6E","\x70\x72\x65\x76\x65\x6E\x74\x44\x65\x66\x61\x75\x6C\x74","\x6C\x65\x6E\x67\x74\x68","\x64\x61\x74\x61\x54\x72\x61\x6E\x73\x66\x65\x72","\x64\x72\x61\x67\x6F\x76\x65\x72","\x64\x72\x6F\x70","\x6D\x6F\x64\x61\x6C\x2D\x62\x6F\x64\x79\x20\x66\x6F\x72\x6D","\x65\x78\x70\x6F\x72\x74","\x67\x65\x74\x58\x6D\x6C","\x73\x69\x6D\x75\x6C\x61\x74\x65","\x2F\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x66\x69\x6C\x65\x6E\x61\x6D\x65\x3D","\x67\x72\x61\x70\x68","\x6D\x6F\x64\x61\x6C\x2D\x62\x6F\x64\x79\x20\x66\x6F\x72\x6D\x20\x6D\x6F\x64\x61\x6C\x2D\x62\x6F\x64\x79\x2D\x73\x63\x72\x6F\x6C\x6C","\x20","\x6E\x6F\x64\x65\x4E\x61\x6D\x65","\x61\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x71\x75\x65\x75\x65","\x6F\x70\x74\x73","\x78","\x58","\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x5F\x74\x79\x70\x65","\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x5F\x70\x61\x74\x68","\x2F\x61\x70\x69\x2F\x75\x73\x65\x72\x73\x2F\x61\x6C\x6C","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x72\x6F\x6C\x65","\x73\x69\x70\x5F\x69\x64","\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x2F\x71\x75\x65\x75\x65\x73","\x71\x75\x65\x75\x65\x5F\x69\x64","\x2F\x61\x70\x69\x2F\x74\x72\x75\x6E\x6B\x73","\x74\x72\x75\x6E\x6B\x5F\x6E\x61\x6D\x65","\x2F\x61\x70\x69\x2F\x76\x61\x72\x69\x61\x62\x6C\x65\x73","\x76\x61\x72\x69\x61\x62\x6C\x65\x5F\x69\x64","\x73\x65\x6E\x64\x4D\x61\x69\x6C","\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x2F\x73\x65\x72\x76\x65\x72\x73\x2F\x6F\x75\x74","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x73\x65\x6E\x64\x46\x61\x78","\x2F\x61\x70\x69\x2F\x66\x61\x78\x2F\x61\x63\x63\x6F\x75\x6E\x74\x73","\x73\x65\x6E\x64\x53\x4D\x53","\x2F\x61\x70\x69\x2F\x73\x6D\x73\x2F\x61\x63\x63\x6F\x75\x6E\x74\x73","\x73\x65\x6E\x64\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x2F\x61\x70\x69\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x2F\x61\x63\x63\x6F\x75\x6E\x74\x73","\x61\x63\x63\x6F\x75\x6E\x74\x5F\x69\x64","\x2F\x61\x70\x69\x2F\x74\x65\x6D\x70\x6C\x61\x74\x65\x73","\x74\x65\x6D\x70\x6C\x61\x74\x65\x5F\x69\x64","\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x2F\x63\x6F\x6E\x74\x65\x78\x74\x73","\x63\x6F\x6E\x74\x65\x78\x74","\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x2F\x76\x6F\x69\x63\x65\x6D\x61\x69\x6C\x73","\x6D\x61\x69\x6C\x62\x6F\x78","\x25\x6D\x61\x69\x6C\x62\x6F\x78\x25\x40\x25\x63\x6F\x6E\x74\x65\x78\x74\x25","\x6D\x6F\x64\x65\x6C","\x69\x73\x70\x65\x65\x63\x68\x5F\x61\x73\x72\x5F\x6C\x61\x6E\x67\x75\x61\x67\x65","\x62\x65\x65\x70","\x68\x69\x64\x64\x65\x6E\x64\x69\x67\x69\x74\x73\x70\x6F\x73","\x69\x73\x70\x65\x65\x63\x68\x5F\x74\x74\x73\x5F\x6C\x61\x6E\x67\x75\x61\x67\x65","\x61\x77\x73\x5F\x70\x6F\x6C\x6C\x79\x5F\x72\x65\x67\x69\x6F\x6E","\x61\x77\x73\x5F\x70\x6F\x6C\x6C\x79\x5F\x76\x6F\x69\x63\x65","\x67\x6F\x6F\x67\x6C\x65\x5F\x74\x74\x73\x5F\x6C\x61\x6E\x67\x75\x61\x67\x65","\x69\x6E\x74\x4B\x65\x79","\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x46\x6F\x72\x6D\x61\x74","\x61\x6E\x73\x77\x65\x72","\x2F\x61\x70\x69\x2F\x63\x6F\x6E\x74\x61\x63\x74\x6D\x61\x6E\x61\x67\x65\x72\x2F\x6C\x69\x73\x74\x73","\x6C\x69\x73\x74\x5F\x69\x64","\x2F\x61\x70\x69\x2F\x69\x6E\x74\x65\x72\x76\x61\x6C\x73","\x53\x75\x62\x49\x6E\x74\x65\x72\x76\x61\x6C\x73","\x69\x6E\x74\x65\x72\x76\x61\x6C\x5F\x69\x64","\x70\x72\x6F\x6A\x65\x63\x74\x5F\x69\x64","\x2F\x61\x70\x69\x2F\x73\x71\x75\x61\x72\x65\x2F\x6F\x64\x62\x63","\x6F\x64\x62\x63\x5F\x69\x64","\x2F\x61\x70\x69\x2F\x73\x6F\x75\x6E\x64\x73","\x64\x69\x73\x70\x6C\x61\x79\x5F\x6E\x61\x6D\x65","\x66\x69\x6C\x65\x5F\x69\x64","\x74\x69\x6D\x65\x6F\x75\x74","\x64\x69\x67\x69\x74","\x6D\x69\x6E\x64\x69\x67\x69\x74","\x6D\x61\x78\x64\x69\x67\x69\x74","\x72\x65\x74\x72\x79","\x6E\x75\x6D\x62\x65\x72","\x6D\x69\x6E","\x73\x70\x65\x65\x64","\x64\x65\x6C\x61\x79","\x70\x72\x69\x6F\x72\x69\x74\x79","\x6B\x65\x79","\x71\x75\x65\x72\x79","\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E","\x63\x6F\x6D\x6D\x61\x6E\x64","\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C","\x73\x6D\x73\x5F\x74\x65\x78\x74","\x6D\x61\x78\x6C\x65\x6E\x67\x74\x68","\x31\x36\x30","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x74\x65\x78\x74","\x68\x69\x64\x64\x65\x6E","\x72\x65\x61\x64\x6F\x6E\x6C\x79","\x74\x72\x75\x65","\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x5F\x6E\x61\x6D\x65","\x2E\x70\x64\x66\x2C\x2E\x74\x69\x66\x2C\x2E\x74\x69\x66\x66","\x6F\x6E\x63\x68\x61\x6E\x67\x65","\x75\x70\x6C\x6F\x61\x64\x46\x61\x78\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x28\x74\x68\x69\x73\x29\x3B","\x63\x68\x6F\x6F\x73\x65\x5F\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x68\x65\x6C\x70\x5F","\x70","\x68\x65\x6C\x70\x2D\x62\x6C\x6F\x63\x6B","\x72\x65\x66\x72\x65\x73\x68"];_0x61f3[0];var editorUi_global;function createCheckbox(_0xe5bfx3){var _0xe5bfx4=document[_0x61f3[2]](_0x61f3[1]);_0xe5bfx4[_0x61f3[5]](_0x61f3[3],_0x61f3[4]);if(_0xe5bfx3){_0xe5bfx4[_0x61f3[5]](_0x61f3[6],true)};return _0xe5bfx4}function uploadFaxAttachment(_0xe5bfx6){var _0xe5bfx7=_0x61f3[7]+ _0xe5bfx6[_0x61f3[10]][0][_0x61f3[3]][_0x61f3[11]](_0xe5bfx6[_0x61f3[10]][0][_0x61f3[3]][_0x61f3[9]](_0x61f3[8])+ 1)+ _0x61f3[7];if(_0x61f3[13][_0x61f3[12]](_0xe5bfx7)!== -1){var _0xe5bfx8= new FormData();var _0xe5bfx9= new XMLHttpRequest();_0xe5bfx8[_0x61f3[16]](_0x61f3[14],_0xe5bfx6[_0x61f3[10]][0],_0xe5bfx6[_0x61f3[10]][0][_0x61f3[15]]);_0xe5bfx9[_0x61f3[19]](_0x61f3[17],_0x61f3[18],false);_0xe5bfx9[_0x61f3[25]](_0x61f3[20],_0x61f3[21]+ editorUi_global[_0x61f3[24]][_0x61f3[23]][_0x61f3[22]]);_0xe5bfx9[_0x61f3[26]](_0xe5bfx8);var _0xe5bfxa;if(_0xe5bfx9[_0x61f3[27]]=== 201){_0xe5bfxa= JSON[_0x61f3[29]](_0xe5bfx9[_0x61f3[28]]);document[_0x61f3[32]](_0x61f3[31])[_0x61f3[30]]= _0xe5bfxa[_0x61f3[15]];document[_0x61f3[32]](_0x61f3[33])[_0x61f3[30]]= _0xe5bfxa[_0x61f3[34]];document[_0x61f3[32]](_0x61f3[35])[_0x61f3[30]]= _0xe5bfxa[_0x61f3[3]]}}else {console[_0x61f3[37]](_0x61f3[36])}}function createDropdownFromApi(_0xe5bfxc,_0xe5bfx3,_0xe5bfxd,_0xe5bfxe,_0xe5bfxf,_0xe5bfx10,_0xe5bfx11,_0xe5bfx12){var _0xe5bfx9= new XMLHttpRequest();_0xe5bfx9[_0x61f3[19]](_0x61f3[38],_0xe5bfxc,false);_0xe5bfx9[_0x61f3[25]](_0x61f3[20],_0x61f3[21]+ _0xe5bfxf[_0x61f3[24]][_0x61f3[23]][_0x61f3[22]]);_0xe5bfx9[_0x61f3[26]](null);var _0xe5bfxa=[];if(_0xe5bfx9[_0x61f3[27]]=== 200){_0xe5bfxa= JSON[_0x61f3[29]](_0xe5bfx9[_0x61f3[28]])};var _0xe5bfx4=document[_0x61f3[2]](_0x61f3[39]);var _0xe5bfx13=document[_0x61f3[2]](_0x61f3[40]);_0xe5bfx13[_0x61f3[41]]= _0x61f3[42];_0xe5bfx13[_0x61f3[30]]= _0x61f3[43];_0xe5bfx4[_0x61f3[44]](_0xe5bfx13);_0xe5bfxa[_0x61f3[49]][_0x61f3[47]](function(_0xe5bfx14){if(!_0xe5bfx12|| _0xe5bfx14[_0xe5bfxd]!= _0xe5bfx12){_0xe5bfx13= document[_0x61f3[2]](_0x61f3[40]);_0xe5bfx13[_0x61f3[41]]= _0xe5bfx14[_0xe5bfxd];if(_0xe5bfx10&& _0xe5bfx11){_0xe5bfx13[_0x61f3[30]]= _0xe5bfx11;_0xe5bfx10[_0x61f3[47]](function(_0xe5bfx15){_0xe5bfx13[_0x61f3[30]]= _0xe5bfx13[_0x61f3[30]][_0x61f3[46]](_0x61f3[45]+ _0xe5bfx15+ _0x61f3[45],_0xe5bfx14[_0xe5bfx15])});_0xe5bfx13[_0x61f3[48]]= (_0xe5bfx13[_0x61f3[30]]== _0xe5bfx3)}else {_0xe5bfx13[_0x61f3[30]]= _0xe5bfx14[_0xe5bfxe];_0xe5bfx13[_0x61f3[48]]= (_0xe5bfx14[_0xe5bfxe]== _0xe5bfx3)};_0xe5bfx4[_0x61f3[44]](_0xe5bfx13)}});_0xe5bfx4[_0x61f3[50]]= _0x61f3[51];return _0xe5bfx4}function createDropdownWithOptgroupFromApi(_0xe5bfxc,_0xe5bfx3,_0xe5bfxd,_0xe5bfxe,_0xe5bfxf,_0xe5bfx17){var _0xe5bfx9= new XMLHttpRequest();_0xe5bfx9[_0x61f3[19]](_0x61f3[38],_0xe5bfxc,false);_0xe5bfx9[_0x61f3[25]](_0x61f3[20],_0x61f3[21]+ _0xe5bfxf[_0x61f3[24]][_0x61f3[23]][_0x61f3[22]]);_0xe5bfx9[_0x61f3[26]](null);var _0xe5bfxa=[];if(_0xe5bfx9[_0x61f3[27]]=== 200){_0xe5bfxa= JSON[_0x61f3[29]](_0xe5bfx9[_0x61f3[28]])};var _0xe5bfx4=document[_0x61f3[2]](_0x61f3[39]);var _0xe5bfx13=document[_0x61f3[2]](_0x61f3[40]);_0xe5bfx13[_0x61f3[41]]= _0x61f3[42];_0xe5bfx13[_0x61f3[30]]= _0x61f3[43];_0xe5bfx4[_0x61f3[44]](_0xe5bfx13);var _0xe5bfx18=_[_0x61f3[52]](_0xe5bfxa[_0x61f3[49]],_0xe5bfx17);for(var _0xe5bfx19 in _0xe5bfx18){if(_0xe5bfx18[_0x61f3[53]](_0xe5bfx19)){var _0xe5bfx1a=document[_0x61f3[2]](_0x61f3[54]);_0xe5bfx1a[_0x61f3[55]]= _[_0x61f3[56]](_0xe5bfx19);var _0xe5bfx1b=_0xe5bfx18[_0xe5bfx19];_0xe5bfx1b[_0x61f3[47]](function(_0xe5bfx14){_0xe5bfx13= document[_0x61f3[2]](_0x61f3[40]);_0xe5bfx13[_0x61f3[41]]= _0xe5bfx14[_0xe5bfxd];_0xe5bfx13[_0x61f3[30]]= _0xe5bfx14[_0xe5bfxe];_0xe5bfx13[_0x61f3[48]]= (_0xe5bfx14[_0xe5bfxe]== _0xe5bfx3);_0xe5bfx1a[_0x61f3[44]](_0xe5bfx13)});_0xe5bfx4[_0x61f3[44]](_0xe5bfx1a)}};_0xe5bfx4[_0x61f3[50]]= _0x61f3[51];return _0xe5bfx4}function createGroupedDropdownFromApi(_0xe5bfxc,_0xe5bfx3,_0xe5bfxd,_0xe5bfxe,_0xe5bfxf,_0xe5bfx1d){var _0xe5bfx9= new XMLHttpRequest();_0xe5bfx9[_0x61f3[19]](_0x61f3[38],_0xe5bfxc,false);_0xe5bfx9[_0x61f3[25]](_0x61f3[20],_0x61f3[21]+ _0xe5bfxf[_0x61f3[24]][_0x61f3[23]][_0x61f3[22]]);_0xe5bfx9[_0x61f3[26]](null);var _0xe5bfxa=[];if(_0xe5bfx9[_0x61f3[27]]=== 200){_0xe5bfxa= JSON[_0x61f3[29]](_0xe5bfx9[_0x61f3[28]])};var _0xe5bfx4=document[_0x61f3[2]](_0x61f3[39]);var _0xe5bfx13=document[_0x61f3[2]](_0x61f3[40]);_0xe5bfx13[_0x61f3[41]]= _0x61f3[42];_0xe5bfx13[_0x61f3[30]]= _0x61f3[57];_0xe5bfx4[_0x61f3[44]](_0xe5bfx13);_0xe5bfxa[_0x61f3[49]][_0x61f3[47]](function(_0xe5bfx14){_0xe5bfx13= document[_0x61f3[2]](_0x61f3[40]);_0xe5bfx13[_0x61f3[50]]= _0x61f3[58];_0xe5bfx13[_0x61f3[41]]= _0xe5bfx14[_0xe5bfxd][_0x61f3[59]]();_0xe5bfx13[_0x61f3[30]]= _0xe5bfx14[_0xe5bfxe];_0xe5bfx13[_0x61f3[48]]= (_0xe5bfx14[_0xe5bfxe]== _0xe5bfx3);_0xe5bfx4[_0x61f3[44]](_0xe5bfx13);_0xe5bfx14[_0xe5bfx1d][_0x61f3[47]](function(_0xe5bfx14){_0xe5bfx13= document[_0x61f3[2]](_0x61f3[40]);_0xe5bfx13[_0x61f3[50]]= _0x61f3[60];_0xe5bfx13[_0x61f3[41]]= _0x61f3[61]+ _[_0x61f3[56]](_0xe5bfx14[_0xe5bfxd]);_0xe5bfx13[_0x61f3[30]]= _0xe5bfx14[_0xe5bfxe];_0xe5bfx13[_0x61f3[48]]= (_0xe5bfx14[_0xe5bfxe]== _0xe5bfx3);_0xe5bfx4[_0x61f3[44]](_0xe5bfx13)})});_0xe5bfx4[_0x61f3[50]]= _0x61f3[51];return _0xe5bfx4}function createDropdownFromArray(_0xe5bfx1f,_0xe5bfx3){var _0xe5bfx4=document[_0x61f3[2]](_0x61f3[39]);for(var _0xe5bfx20 in _0xe5bfx1f){var _0xe5bfx13=document[_0x61f3[2]](_0x61f3[40]);_0xe5bfx13[_0x61f3[41]]= _0xe5bfx1f[_0xe5bfx20];_0xe5bfx13[_0x61f3[30]]= _0xe5bfx20;if(_0xe5bfx3> 0|| _0xe5bfx3!= _0x61f3[62]){_0xe5bfx13[_0x61f3[48]]= (_0xe5bfx3=== _0xe5bfx20)?true:false};_0xe5bfx4[_0x61f3[44]](_0xe5bfx13)};_0xe5bfx4[_0x61f3[50]]= _0x61f3[51];return _0xe5bfx4}function createDropdownFromTigerDialList(_0xe5bfx3){var _0xe5bfx4=document[_0x61f3[2]](_0x61f3[39]);var _0xe5bfx1f=[];var _0xe5bfx22= new XMLHttpRequest();try{_0xe5bfx22[_0x61f3[19]](_0x61f3[17],_0x61f3[63],false);_0xe5bfx22[_0x61f3[26]](JSON[_0x61f3[64]]({page:1,size:600000}));if(_0xe5bfx22[_0x61f3[27]]=== 200){var _0xe5bfxa=JSON[_0x61f3[29]](_0xe5bfx22[_0x61f3[28]]);if(_0xe5bfxa[_0x61f3[27]]> 0){var _0xe5bfx23=_0xe5bfxa[_0x61f3[28]][_0x61f3[65]][_0x61f3[49]];for(var _0xe5bfx24 in _0xe5bfx23){_0xe5bfx1f[_0xe5bfx23[_0xe5bfx24][_0x61f3[66]]]= _0xe5bfx23[_0xe5bfx24][_0x61f3[15]]}}}}catch(e){console[_0x61f3[67]](e)};for(var _0xe5bfx20 in _0xe5bfx1f){var _0xe5bfx13=document[_0x61f3[2]](_0x61f3[40]);_0xe5bfx13[_0x61f3[41]]= _0xe5bfx1f[_0xe5bfx20];_0xe5bfx13[_0x61f3[30]]= _0xe5bfx20;if(_0xe5bfx3> 0|| _0xe5bfx3!= _0x61f3[62]){_0xe5bfx13[_0x61f3[48]]= (_0xe5bfx3=== _0xe5bfx20)?true:false};_0xe5bfx4[_0x61f3[44]](_0xe5bfx13)};_0xe5bfx4[_0x61f3[50]]= _0x61f3[51];return _0xe5bfx4}function Dialog(_0xe5bfxf,_0xe5bfx26,_0xe5bfx27,_0xe5bfx28,_0xe5bfx29,_0xe5bfx2a,_0xe5bfx2b){var _0xe5bfx2c=0;if(mxClient[_0x61f3[68]]&& document[_0x61f3[69]]!= 9){_0xe5bfx2c= 60};_0xe5bfx27+= _0xe5bfx2c;_0xe5bfx28+= _0xe5bfx2c;var _0xe5bfx2d=Math[_0x61f3[73]](0,Math[_0x61f3[72]]((document[_0x61f3[71]][_0x61f3[70]]- _0xe5bfx27)/ 2));var _0xe5bfx2e=Math[_0x61f3[73]](0,Math[_0x61f3[72]]((Math[_0x61f3[73]](document[_0x61f3[71]][_0x61f3[74]],document[_0x61f3[75]][_0x61f3[74]])- _0xe5bfx28)/ 3));var _0xe5bfx2f=_0xe5bfxf[_0x61f3[77]](_0x61f3[76]);_0xe5bfx2f[_0x61f3[50]]= _0x61f3[78];_0xe5bfx2f[_0x61f3[80]][_0x61f3[79]]= _0x61f3[81];_0xe5bfx2f[_0x61f3[80]][_0x61f3[82]]= _0x61f3[83];var _0xe5bfx30=_0xe5bfxf[_0x61f3[77]](_0x61f3[84]);_0xe5bfx30[_0x61f3[50]]= _0x61f3[85];_0xe5bfx30[_0x61f3[44]](_0xe5bfx26);_0xe5bfx2f[_0x61f3[44]](_0xe5bfx30);if(this[_0x61f3[86]]== null){this[_0x61f3[86]]= _0xe5bfxf[_0x61f3[77]](_0x61f3[87]);this[_0x61f3[86]][_0x61f3[50]]= _0x61f3[88];if(mxClient[_0x61f3[89]]){ new mxDivResizer(this[_0x61f3[86]])}};if(_0xe5bfx29){document[_0x61f3[71]][_0x61f3[44]](this[_0x61f3[86]])};document[_0x61f3[71]][_0x61f3[44]](_0xe5bfx2f);this[_0x61f3[90]]= _0xe5bfx2b;this[_0x61f3[91]]= _0xe5bfx2f}Dialog[_0x61f3[93]][_0x61f3[92]]= function(){if(this[_0x61f3[90]]!= null){this[_0x61f3[90]]();this[_0x61f3[90]]= null};this[_0x61f3[91]][_0x61f3[95]][_0x61f3[94]](this[_0x61f3[91]]);this[_0x61f3[86]][_0x61f3[95]][_0x61f3[94]](this[_0x61f3[86]])};function ImportDialog(_0xe5bfxf){var _0xe5bfx32=_0xe5bfxf[_0x61f3[77]](_0x61f3[96]);var _0xe5bfx33=_0xe5bfxf[_0x61f3[77]](_0x61f3[97]);var _0xe5bfx34=_0xe5bfxf[_0x61f3[77]](_0x61f3[98]);var _0xe5bfx35=_0xe5bfxf[_0x61f3[77]](_0x61f3[99]);var _0xe5bfx36=_0xe5bfxf[_0x61f3[101]](_0x61f3[100]);mxUtils[_0x61f3[105]](_0xe5bfx36,mxResources[_0x61f3[103]](_0x61f3[102])+ _0x61f3[104]);var _0xe5bfx37=mxUtils[_0x61f3[107]](_0x61f3[62],function(){_0xe5bfxf[_0x61f3[106]]()});_0xe5bfx37[_0x61f3[50]]= _0x61f3[92];_0xe5bfx33[_0x61f3[44]](_0xe5bfx37);_0xe5bfx33[_0x61f3[44]](_0xe5bfx36);var _0xe5bfx38=_0xe5bfxf[_0x61f3[77]](_0x61f3[108]);var _0xe5bfx39=_0xe5bfxf[_0x61f3[77]](_0x61f3[109]);var _0xe5bfx3a=document[_0x61f3[2]](_0x61f3[110]);_0xe5bfx3a[_0x61f3[80]][_0x61f3[111]]= _0x61f3[112];_0xe5bfx3a[_0x61f3[80]][_0x61f3[113]]= _0x61f3[114];var _0xe5bfx4=document[_0x61f3[2]](_0x61f3[1]);_0xe5bfx4[_0x61f3[3]]= _0x61f3[14];_0xe5bfx4[_0x61f3[5]](_0x61f3[115],_0x61f3[116]);_0xe5bfx4[_0x61f3[124]](_0x61f3[117],function _0xe5bfx3b(_0xe5bfx3c){var _0xe5bfx3d=_0xe5bfx3c[_0x61f3[118]][_0x61f3[10]][0];console[_0x61f3[67]](_0xe5bfx3d);if(_0xe5bfx3d){if(_0xe5bfx3d[_0x61f3[3]]=== _0x61f3[116]){var _0xe5bfx3e= new FileReader();_0xe5bfx3e[_0x61f3[119]]= function(_0xe5bfx3f){var _0xe5bfx40=_0xe5bfx3f[_0x61f3[118]][_0x61f3[120]];mxUtils[_0x61f3[105]](_0xe5bfx3a,_0xe5bfx40)};_0xe5bfx3e[_0x61f3[121]](_0xe5bfx3d)}else {alert(_0x61f3[122])}}else {alert(_0x61f3[123])}},false);_0xe5bfx39[_0x61f3[44]](_0xe5bfx4);_0xe5bfx39[_0x61f3[44]](_0xe5bfx3a);_0xe5bfx38[_0x61f3[44]](_0xe5bfx39);_0xe5bfx34[_0x61f3[44]](_0xe5bfx38);var _0xe5bfx41=mxUtils[_0x61f3[107]](mxResources[_0x61f3[103]](_0x61f3[102]),mxUtils[_0x61f3[127]](this,function(_0xe5bfx42){var _0xe5bfx43=mxUtils[_0x61f3[125]](_0xe5bfx3a[_0x61f3[30]]);_0xe5bfxf[_0x61f3[24]][_0x61f3[126]](_0xe5bfx43[_0x61f3[75]]);_0xe5bfxf[_0x61f3[106]]()}));_0xe5bfx41[_0x61f3[50]]= _0x61f3[128];var _0xe5bfx44=mxUtils[_0x61f3[107]](mxResources[_0x61f3[103]](_0x61f3[129]),function(){_0xe5bfxf[_0x61f3[106]]()});_0xe5bfx44[_0x61f3[50]]= _0x61f3[130];_0xe5bfx35[_0x61f3[44]](_0xe5bfx41);_0xe5bfx35[_0x61f3[44]](_0xe5bfx44);_0xe5bfx32[_0x61f3[44]](_0xe5bfx33);_0xe5bfx32[_0x61f3[44]](_0xe5bfx34);_0xe5bfx32[_0x61f3[44]](_0xe5bfx35);this[_0x61f3[91]]= _0xe5bfx32}function AboutDialog(_0xe5bfxf){var _0xe5bfx32=_0xe5bfxf[_0x61f3[77]](_0x61f3[96]);var _0xe5bfx33=_0xe5bfxf[_0x61f3[77]](_0x61f3[97]);var _0xe5bfx34=_0xe5bfxf[_0x61f3[77]](_0x61f3[98]);var _0xe5bfx35=_0xe5bfxf[_0x61f3[77]](_0x61f3[99]);var _0xe5bfx36=_0xe5bfxf[_0x61f3[101]](_0x61f3[100]);mxUtils[_0x61f3[105]](_0xe5bfx36,mxResources[_0x61f3[103]](_0x61f3[131])+ _0x61f3[132]);var _0xe5bfx37=mxUtils[_0x61f3[107]](_0x61f3[62],function(){_0xe5bfxf[_0x61f3[106]]()});_0xe5bfx37[_0x61f3[50]]= _0x61f3[92];_0xe5bfx33[_0x61f3[44]](_0xe5bfx37);_0xe5bfx33[_0x61f3[44]](_0xe5bfx36);var _0xe5bfx46=document[_0x61f3[2]](_0x61f3[133]);_0xe5bfx46[_0x61f3[80]][_0x61f3[134]]= _0x61f3[135];_0xe5bfx46[_0x61f3[5]](_0x61f3[111],_0x61f3[136]);_0xe5bfx46[_0x61f3[5]](_0x61f3[111],_0x61f3[137]);_0xe5bfx46[_0x61f3[5]](_0x61f3[138],IMAGE_PATH+ _0x61f3[139]);_0xe5bfx34[_0x61f3[44]](_0xe5bfx46);mxUtils[_0x61f3[140]](_0xe5bfx34);mxUtils[_0x61f3[105]](_0xe5bfx34,_0x61f3[141]+ mxClient[_0x61f3[142]]);mxUtils[_0x61f3[140]](_0xe5bfx34);var _0xe5bfx47=document[_0x61f3[2]](_0x61f3[143]);_0xe5bfx47[_0x61f3[5]](_0x61f3[144],_0x61f3[145]);_0xe5bfx47[_0x61f3[5]](_0x61f3[118],_0x61f3[146]);mxUtils[_0x61f3[105]](_0xe5bfx47,_0x61f3[147]);_0xe5bfx34[_0x61f3[44]](_0xe5bfx47);mxUtils[_0x61f3[140]](_0xe5bfx34);mxUtils[_0x61f3[140]](_0xe5bfx34);var _0xe5bfx44=mxUtils[_0x61f3[107]](mxResources[_0x61f3[103]](_0x61f3[92]),function(){_0xe5bfxf[_0x61f3[106]]()});_0xe5bfx44[_0x61f3[50]]= _0x61f3[130];_0xe5bfx35[_0x61f3[44]](_0xe5bfx44);_0xe5bfx32[_0x61f3[44]](_0xe5bfx33);_0xe5bfx32[_0x61f3[44]](_0xe5bfx34);_0xe5bfx32[_0x61f3[44]](_0xe5bfx35);this[_0x61f3[91]]= _0xe5bfx32}function SaveDialog(_0xe5bfxf){var _0xe5bfx32=_0xe5bfxf[_0x61f3[77]](_0x61f3[96]);var _0xe5bfx33=_0xe5bfxf[_0x61f3[77]](_0x61f3[97]);var _0xe5bfx34=_0xe5bfxf[_0x61f3[77]](_0x61f3[98]);var _0xe5bfx35=_0xe5bfxf[_0x61f3[77]](_0x61f3[99]);var _0xe5bfx36=_0xe5bfxf[_0x61f3[101]](_0x61f3[100]);mxUtils[_0x61f3[105]](_0xe5bfx36,mxResources[_0x61f3[103]](_0x61f3[148]));var _0xe5bfx37=mxUtils[_0x61f3[107]](_0x61f3[62],function(){_0xe5bfxf[_0x61f3[106]]()});_0xe5bfx37[_0x61f3[50]]= _0x61f3[92];_0xe5bfx33[_0x61f3[44]](_0xe5bfx37);_0xe5bfx33[_0x61f3[44]](_0xe5bfx36);var _0xe5bfx49=_0x61f3[15];var _0xe5bfx4a=_0x61f3[149]+ _0xe5bfx49;var _0xe5bfx3=_0xe5bfxf[_0x61f3[24]][_0x61f3[150]]();var _0xe5bfx38=_0xe5bfxf[_0x61f3[77]](_0x61f3[108]);var _0xe5bfx39=_0xe5bfxf[_0x61f3[77]](_0x61f3[151]);var _0xe5bfx4b=_0xe5bfxf[_0x61f3[77]](_0x61f3[152]);var _0xe5bfx4c=document[_0x61f3[2]](_0x61f3[55]);_0xe5bfx4c[_0x61f3[50]]= _0x61f3[153];mxUtils[_0x61f3[105]](_0xe5bfx4c,mxResources[_0x61f3[103]](_0x61f3[154]));_0xe5bfx39[_0x61f3[44]](_0xe5bfx4c);var _0xe5bfx4d=document[_0x61f3[2]](_0x61f3[1]);_0xe5bfx4d[_0x61f3[5]](_0x61f3[30],_0xe5bfx3+ _0x61f3[155]);_0xe5bfx4d[_0x61f3[5]](_0x61f3[66],_0xe5bfx4a);_0xe5bfx4d[_0x61f3[50]]= _0x61f3[156];_0xe5bfx4b[_0x61f3[44]](_0xe5bfx4d);_0xe5bfx38[_0x61f3[44]](_0xe5bfx39);_0xe5bfx38[_0x61f3[44]](_0xe5bfx4b);_0xe5bfx34[_0x61f3[44]](_0xe5bfx38);var _0xe5bfx41=mxUtils[_0x61f3[107]](mxResources[_0x61f3[103]](_0x61f3[157]),function(){_0xe5bfxf[_0x61f3[148]](_0xe5bfx4d[_0x61f3[30]]);_0xe5bfxf[_0x61f3[106]]()});_0xe5bfx41[_0x61f3[50]]= _0x61f3[128];var _0xe5bfx44=mxUtils[_0x61f3[107]](mxResources[_0x61f3[103]](_0x61f3[129]),function(){_0xe5bfxf[_0x61f3[106]]()});_0xe5bfx44[_0x61f3[50]]= _0x61f3[130];_0xe5bfx35[_0x61f3[44]](_0xe5bfx41);_0xe5bfx35[_0x61f3[44]](_0xe5bfx44);_0xe5bfx32[_0x61f3[44]](_0xe5bfx33);_0xe5bfx32[_0x61f3[44]](_0xe5bfx34);_0xe5bfx32[_0x61f3[44]](_0xe5bfx35);this[_0x61f3[91]]= _0xe5bfx32}function NewDialog(_0xe5bfxf){var _0xe5bfx32=_0xe5bfxf[_0x61f3[77]](_0x61f3[96]);var _0xe5bfx33=_0xe5bfxf[_0x61f3[77]](_0x61f3[97]);var _0xe5bfx34=_0xe5bfxf[_0x61f3[77]](_0x61f3[98]);var _0xe5bfx35=_0xe5bfxf[_0x61f3[77]](_0x61f3[99]);var _0xe5bfx36=_0xe5bfxf[_0x61f3[101]](_0x61f3[100]);mxUtils[_0x61f3[105]](_0xe5bfx36,mxResources[_0x61f3[103]](_0x61f3[158]));var _0xe5bfx37=mxUtils[_0x61f3[107]](_0x61f3[62],function(){_0xe5bfxf[_0x61f3[106]]()});_0xe5bfx37[_0x61f3[50]]= _0x61f3[92];_0xe5bfx33[_0x61f3[44]](_0xe5bfx37);_0xe5bfx33[_0x61f3[44]](_0xe5bfx36);var _0xe5bfx49=_0x61f3[15];var _0xe5bfx4a=_0x61f3[149]+ _0xe5bfx49;var _0xe5bfx3=_0xe5bfxf[_0x61f3[24]][_0x61f3[150]]();var _0xe5bfx38=_0xe5bfxf[_0x61f3[77]](_0x61f3[108]);var _0xe5bfx39=_0xe5bfxf[_0x61f3[77]](_0x61f3[151]);var _0xe5bfx4b=_0xe5bfxf[_0x61f3[77]](_0x61f3[152]);var _0xe5bfx4c=document[_0x61f3[2]](_0x61f3[55]);_0xe5bfx4c[_0x61f3[50]]= _0x61f3[153];mxUtils[_0x61f3[105]](_0xe5bfx4c,mxResources[_0x61f3[103]](_0x61f3[154]));_0xe5bfx39[_0x61f3[44]](_0xe5bfx4c);var _0xe5bfx4d=document[_0x61f3[2]](_0x61f3[1]);_0xe5bfx4d[_0x61f3[5]](_0x61f3[30],_0xe5bfx3+ _0x61f3[159]);_0xe5bfx4d[_0x61f3[5]](_0x61f3[66],_0xe5bfx4a);_0xe5bfx4d[_0x61f3[50]]= _0x61f3[156];_0xe5bfx4b[_0x61f3[44]](_0xe5bfx4d);_0xe5bfx38[_0x61f3[44]](_0xe5bfx39);_0xe5bfx38[_0x61f3[44]](_0xe5bfx4b);_0xe5bfx34[_0x61f3[44]](_0xe5bfx38);var _0xe5bfx41=mxUtils[_0x61f3[107]](mxResources[_0x61f3[103]](_0x61f3[158]),function(){_0xe5bfxf[_0x61f3[158]](_0xe5bfx4d[_0x61f3[30]]);_0xe5bfxf[_0x61f3[106]]()});_0xe5bfx41[_0x61f3[50]]= _0x61f3[128];var _0xe5bfx44=mxUtils[_0x61f3[107]](mxResources[_0x61f3[103]](_0x61f3[129]),function(){_0xe5bfxf[_0x61f3[106]]()});_0xe5bfx44[_0x61f3[50]]= _0x61f3[130];_0xe5bfx35[_0x61f3[44]](_0xe5bfx41);_0xe5bfx35[_0x61f3[44]](_0xe5bfx44);_0xe5bfx32[_0x61f3[44]](_0xe5bfx33);_0xe5bfx32[_0x61f3[44]](_0xe5bfx34);_0xe5bfx32[_0x61f3[44]](_0xe5bfx35);this[_0x61f3[91]]= _0xe5bfx32}function DescriptionDialog(_0xe5bfxf){var _0xe5bfx32=_0xe5bfxf[_0x61f3[77]](_0x61f3[96]);var _0xe5bfx33=_0xe5bfxf[_0x61f3[77]](_0x61f3[97]);var _0xe5bfx34=_0xe5bfxf[_0x61f3[77]](_0x61f3[98]);var _0xe5bfx35=_0xe5bfxf[_0x61f3[77]](_0x61f3[99]);var _0xe5bfx36=_0xe5bfxf[_0x61f3[101]](_0x61f3[100]);mxUtils[_0x61f3[105]](_0xe5bfx36,mxResources[_0x61f3[103]](_0x61f3[160]));var _0xe5bfx37=mxUtils[_0x61f3[107]](_0x61f3[62],function(){_0xe5bfxf[_0x61f3[106]]()});_0xe5bfx37[_0x61f3[50]]= _0x61f3[92];_0xe5bfx33[_0x61f3[44]](_0xe5bfx37);_0xe5bfx33[_0x61f3[44]](_0xe5bfx36);var _0xe5bfx50=_0xe5bfxf[_0x61f3[77]](_0x61f3[161]);var _0xe5bfx49=_0x61f3[160];var _0xe5bfx4a=_0x61f3[149]+ _0xe5bfx49;var _0xe5bfx3=_0xe5bfxf[_0x61f3[24]][_0x61f3[23]][_0x61f3[160]]|| _0x61f3[62];var _0xe5bfx19=_0xe5bfxf[_0x61f3[77]](_0x61f3[162]);var _0xe5bfx4c=document[_0x61f3[2]](_0x61f3[55]);_0xe5bfx4c[_0x61f3[50]]= _0x61f3[163];mxUtils[_0x61f3[105]](_0xe5bfx4c,mxResources[_0x61f3[103]](_0xe5bfx49));_0xe5bfx19[_0x61f3[44]](_0xe5bfx4c);var _0xe5bfx4=document[_0x61f3[2]](_0x61f3[1]);_0xe5bfx4[_0x61f3[5]](_0x61f3[30],_0xe5bfx3);_0xe5bfx4[_0x61f3[50]]= _0x61f3[156];_0xe5bfx4[_0x61f3[5]](_0x61f3[66],_0xe5bfx4a);var _0xe5bfx2f=_0xe5bfxf[_0x61f3[77]](_0x61f3[164]);_0xe5bfx2f[_0x61f3[44]](_0xe5bfx4);_0xe5bfx19[_0x61f3[44]](_0xe5bfx2f);_0xe5bfx50[_0x61f3[44]](_0xe5bfx19);_0xe5bfx34[_0x61f3[44]](_0xe5bfx50);var _0xe5bfx41=mxUtils[_0x61f3[107]](mxResources[_0x61f3[103]](_0x61f3[165]),function(){_0xe5bfxf[_0x61f3[160]](_0xe5bfx4[_0x61f3[30]]);_0xe5bfxf[_0x61f3[106]]()});_0xe5bfx41[_0x61f3[50]]= _0x61f3[128];var _0xe5bfx44=mxUtils[_0x61f3[107]](mxResources[_0x61f3[103]](_0x61f3[129]),function(){_0xe5bfxf[_0x61f3[106]]()});_0xe5bfx44[_0x61f3[50]]= _0x61f3[130];_0xe5bfx35[_0x61f3[44]](_0xe5bfx41);_0xe5bfx35[_0x61f3[44]](_0xe5bfx44);_0xe5bfx32[_0x61f3[44]](_0xe5bfx33);_0xe5bfx32[_0x61f3[44]](_0xe5bfx34);_0xe5bfx32[_0x61f3[44]](_0xe5bfx35);this[_0x61f3[91]]= _0xe5bfx32}function VariableDialog(_0xe5bfxf){var _0xe5bfx32=_0xe5bfxf[_0x61f3[77]](_0x61f3[96]);var _0xe5bfx33=_0xe5bfxf[_0x61f3[77]](_0x61f3[97]);var _0xe5bfx34=_0xe5bfxf[_0x61f3[77]](_0x61f3[98]);var _0xe5bfx35=_0xe5bfxf[_0x61f3[77]](_0x61f3[99]);var _0xe5bfx36=_0xe5bfxf[_0x61f3[101]](_0x61f3[100]);mxUtils[_0x61f3[105]](_0xe5bfx36,mxResources[_0x61f3[103]](_0x61f3[166]));var _0xe5bfx37=mxUtils[_0x61f3[107]](_0x61f3[62],function(){_0xe5bfxf[_0x61f3[106]]()});_0xe5bfx37[_0x61f3[50]]= _0x61f3[92];_0xe5bfx33[_0x61f3[44]](_0xe5bfx37);_0xe5bfx33[_0x61f3[44]](_0xe5bfx36);var _0xe5bfx50=_0xe5bfxf[_0x61f3[77]](_0x61f3[161]);var _0xe5bfx49=_0x61f3[15];var _0xe5bfx4a=_0x61f3[149]+ _0xe5bfx49;var _0xe5bfx3=_0x61f3[167];var _0xe5bfx19=_0xe5bfxf[_0x61f3[77]](_0x61f3[162]);var _0xe5bfx4c=document[_0x61f3[2]](_0x61f3[55]);var _0xe5bfx52=_0x61f3[168];_0xe5bfx4c[_0x61f3[50]]= _0x61f3[163];mxUtils[_0x61f3[105]](_0xe5bfx4c,mxResources[_0x61f3[103]](_0xe5bfx52));_0xe5bfx19[_0x61f3[44]](_0xe5bfx4c);var _0xe5bfx4=document[_0x61f3[2]](_0x61f3[1]);_0xe5bfx4[_0x61f3[5]](_0x61f3[30],_0xe5bfx3);_0xe5bfx4[_0x61f3[50]]= _0x61f3[156];_0xe5bfx4[_0x61f3[5]](_0x61f3[66],_0xe5bfx4a);var _0xe5bfx2f=_0xe5bfxf[_0x61f3[77]](_0x61f3[164]);_0xe5bfx2f[_0x61f3[44]](_0xe5bfx4);_0xe5bfx19[_0x61f3[44]](_0xe5bfx2f);_0xe5bfx50[_0x61f3[44]](_0xe5bfx19);_0xe5bfx49= _0x61f3[160];_0xe5bfx4a= _0x61f3[149]+ _0xe5bfx49;_0xe5bfx3= _0x61f3[169];_0xe5bfx19= _0xe5bfxf[_0x61f3[77]](_0x61f3[170]);_0xe5bfx4c= document[_0x61f3[2]](_0x61f3[55]);_0xe5bfx4c[_0x61f3[50]]= _0x61f3[163];mxUtils[_0x61f3[105]](_0xe5bfx4c,mxResources[_0x61f3[103]](_0xe5bfx49));_0xe5bfx19[_0x61f3[44]](_0xe5bfx4c);var _0xe5bfx53=document[_0x61f3[2]](_0x61f3[1]);_0xe5bfx53[_0x61f3[5]](_0x61f3[30],_0xe5bfx3);_0xe5bfx53[_0x61f3[50]]= _0x61f3[156];_0xe5bfx53[_0x61f3[5]](_0x61f3[66],_0xe5bfx4a);_0xe5bfx2f= _0xe5bfxf[_0x61f3[77]](_0x61f3[164]);_0xe5bfx2f[_0x61f3[44]](_0xe5bfx53);_0xe5bfx19[_0x61f3[44]](_0xe5bfx2f);_0xe5bfx50[_0x61f3[44]](_0xe5bfx19);_0xe5bfx34[_0x61f3[44]](_0xe5bfx50);var _0xe5bfx41=mxUtils[_0x61f3[107]](mxResources[_0x61f3[103]](_0x61f3[158]),function(){_0xe5bfxf[_0x61f3[166]](_0xe5bfx4[_0x61f3[30]],_0xe5bfx53[_0x61f3[30]]);_0xe5bfxf[_0x61f3[106]]()});_0xe5bfx41[_0x61f3[50]]= _0x61f3[128];var _0xe5bfx44=mxUtils[_0x61f3[107]](mxResources[_0x61f3[103]](_0x61f3[129]),function(){_0xe5bfxf[_0x61f3[106]]()});_0xe5bfx44[_0x61f3[50]]= _0x61f3[130];_0xe5bfx35[_0x61f3[44]](_0xe5bfx41);_0xe5bfx35[_0x61f3[44]](_0xe5bfx44);_0xe5bfx32[_0x61f3[44]](_0xe5bfx33);_0xe5bfx32[_0x61f3[44]](_0xe5bfx34);_0xe5bfx32[_0x61f3[44]](_0xe5bfx35);this[_0x61f3[91]]= _0xe5bfx32}function OpenDialog(_0xe5bfxf){var _0xe5bfx32=_0xe5bfxf[_0x61f3[77]](_0x61f3[96]);var _0xe5bfx33=_0xe5bfxf[_0x61f3[77]](_0x61f3[97]);var _0xe5bfx34=_0xe5bfxf[_0x61f3[77]](_0x61f3[98]);var _0xe5bfx35=_0xe5bfxf[_0x61f3[77]](_0x61f3[99]);var _0xe5bfx36=_0xe5bfxf[_0x61f3[101]](_0x61f3[100]);mxUtils[_0x61f3[105]](_0xe5bfx36,mxResources[_0x61f3[103]](_0x61f3[19]));var _0xe5bfx37=mxUtils[_0x61f3[107]](_0x61f3[62],function(){_0xe5bfxf[_0x61f3[106]]()});_0xe5bfx37[_0x61f3[50]]= _0x61f3[92];_0xe5bfx33[_0x61f3[44]](_0xe5bfx37);_0xe5bfx33[_0x61f3[44]](_0xe5bfx36);var _0xe5bfx38=_0xe5bfxf[_0x61f3[77]](_0x61f3[108]);var _0xe5bfx39=_0xe5bfxf[_0x61f3[77]](_0x61f3[151]);var _0xe5bfx4b=_0xe5bfxf[_0x61f3[77]](_0x61f3[152]);var _0xe5bfx4c=document[_0x61f3[2]](_0x61f3[55]);_0xe5bfx4c[_0x61f3[50]]= _0x61f3[153];mxUtils[_0x61f3[105]](_0xe5bfx4c,mxResources[_0x61f3[103]](_0x61f3[154]));_0xe5bfx39[_0x61f3[44]](_0xe5bfx4c);var _0xe5bfx9= new XMLHttpRequest();_0xe5bfx9[_0x61f3[19]](_0x61f3[38],_0x61f3[171],false);_0xe5bfx9[_0x61f3[25]](_0x61f3[20],_0x61f3[21]+ _0xe5bfxf[_0x61f3[24]][_0x61f3[23]][_0x61f3[22]]);_0xe5bfx9[_0x61f3[26]](null);var _0xe5bfxa=[];if(_0xe5bfx9[_0x61f3[27]]=== 200){_0xe5bfxa= JSON[_0x61f3[29]](_0xe5bfx9[_0x61f3[28]])};var _0xe5bfx4d=document[_0x61f3[2]](_0x61f3[39]);for(var _0xe5bfx55=0;_0xe5bfx55< _0xe5bfxa[_0x61f3[172]];_0xe5bfx55++){var _0xe5bfx13=document[_0x61f3[2]](_0x61f3[40]);_0xe5bfx13[_0x61f3[41]]= _0xe5bfxa[_0x61f3[49]][_0xe5bfx55][_0x61f3[15]];_0xe5bfx13[_0x61f3[30]]= _0xe5bfxa[_0x61f3[49]][_0xe5bfx55][_0x61f3[66]];_0xe5bfx4d[_0x61f3[44]](_0xe5bfx13)};_0xe5bfx4d[_0x61f3[50]]= _0x61f3[156];_0xe5bfx4b[_0x61f3[44]](_0xe5bfx4d);_0xe5bfx38[_0x61f3[44]](_0xe5bfx39);_0xe5bfx38[_0x61f3[44]](_0xe5bfx4b);_0xe5bfx34[_0x61f3[44]](_0xe5bfx38);var _0xe5bfx41=mxUtils[_0x61f3[107]](mxResources[_0x61f3[103]](_0x61f3[19]),function(){window[_0x61f3[19]](_0x61f3[173]+ _0xe5bfx4d[_0x61f3[30]],_0x61f3[146]);_0xe5bfxf[_0x61f3[106]]()});_0xe5bfx41[_0x61f3[50]]= _0x61f3[128];var _0xe5bfx44=mxUtils[_0x61f3[107]](mxResources[_0x61f3[103]](_0x61f3[129]),function(){_0xe5bfxf[_0x61f3[106]]()});_0xe5bfx44[_0x61f3[50]]= _0x61f3[130];_0xe5bfx35[_0x61f3[44]](_0xe5bfx41);_0xe5bfx35[_0x61f3[44]](_0xe5bfx44);_0xe5bfx32[_0x61f3[44]](_0xe5bfx33);_0xe5bfx32[_0x61f3[44]](_0xe5bfx34);_0xe5bfx32[_0x61f3[44]](_0xe5bfx35);this[_0x61f3[91]]= _0xe5bfx32}function RenameDialog(_0xe5bfxf){var _0xe5bfx32=_0xe5bfxf[_0x61f3[77]](_0x61f3[96]);var _0xe5bfx33=_0xe5bfxf[_0x61f3[77]](_0x61f3[97]);var _0xe5bfx34=_0xe5bfxf[_0x61f3[77]](_0x61f3[98]);var _0xe5bfx35=_0xe5bfxf[_0x61f3[77]](_0x61f3[99]);var _0xe5bfx36=_0xe5bfxf[_0x61f3[101]](_0x61f3[100]);mxUtils[_0x61f3[105]](_0xe5bfx36,mxResources[_0x61f3[103]](_0x61f3[174]));var _0xe5bfx37=mxUtils[_0x61f3[107]](_0x61f3[62],function(){_0xe5bfxf[_0x61f3[106]]()});_0xe5bfx37[_0x61f3[50]]= _0x61f3[92];_0xe5bfx33[_0x61f3[44]](_0xe5bfx37);_0xe5bfx33[_0x61f3[44]](_0xe5bfx36);var _0xe5bfx38=_0xe5bfxf[_0x61f3[77]](_0x61f3[108]);var _0xe5bfx39=_0xe5bfxf[_0x61f3[77]](_0x61f3[151]);var _0xe5bfx4b=_0xe5bfxf[_0x61f3[77]](_0x61f3[152]);var _0xe5bfx4c=document[_0x61f3[2]](_0x61f3[55]);_0xe5bfx4c[_0x61f3[50]]= _0x61f3[153];mxUtils[_0x61f3[105]](_0xe5bfx4c,mxResources[_0x61f3[103]](_0x61f3[15]));_0xe5bfx39[_0x61f3[44]](_0xe5bfx4c);var _0xe5bfx49=_0xe5bfxf[_0x61f3[24]][_0x61f3[175]];var _0xe5bfx4=document[_0x61f3[2]](_0x61f3[1]);_0xe5bfx4[_0x61f3[5]](_0x61f3[30],_0xe5bfx49);_0xe5bfx4[_0x61f3[50]]= _0x61f3[156];_0xe5bfx4b[_0x61f3[44]](_0xe5bfx4);_0xe5bfx38[_0x61f3[44]](_0xe5bfx39);_0xe5bfx38[_0x61f3[44]](_0xe5bfx4b);_0xe5bfx34[_0x61f3[44]](_0xe5bfx38);var _0xe5bfx41=mxUtils[_0x61f3[107]](mxResources[_0x61f3[103]](_0x61f3[157]),function(){var _0xe5bfx9= new XMLHttpRequest();_0xe5bfx9[_0x61f3[19]](_0x61f3[176],SAVE_URL+ _0xe5bfxf[_0x61f3[24]][_0x61f3[23]][_0x61f3[66]],true);_0xe5bfx9[_0x61f3[25]](_0x61f3[177],_0x61f3[178]);_0xe5bfx9[_0x61f3[25]](_0x61f3[20],_0x61f3[21]+ _0xe5bfxf[_0x61f3[24]][_0x61f3[23]][_0x61f3[22]]);_0xe5bfx9[_0x61f3[26]](_0x61f3[179]+ _0xe5bfx4[_0x61f3[30]]);_0xe5bfx9[_0x61f3[119]]= function(_0xe5bfx3f){if(_0xe5bfx9[_0x61f3[27]]=== 200){_0xe5bfxf[_0x61f3[24]][_0x61f3[181]](_0x61f3[180]);_0xe5bfxf[_0x61f3[24]][_0x61f3[175]]= _0xe5bfx4[_0x61f3[30]]}else {console[_0x61f3[67]](_0xe5bfx9[_0x61f3[28]]);_0xe5bfxf[_0x61f3[24]][_0x61f3[181]](JSON[_0x61f3[29]](_0xe5bfx9[_0x61f3[28]])[_0x61f3[183]][0][_0x61f3[182]])}};_0xe5bfx9[_0x61f3[184]]= function(_0xe5bfx3f){mxUtils[_0x61f3[186]](_0xe5bfx9[_0x61f3[185]])};_0xe5bfxf[_0x61f3[106]]()});_0xe5bfx41[_0x61f3[50]]= _0x61f3[128];var _0xe5bfx44=mxUtils[_0x61f3[107]](mxResources[_0x61f3[103]](_0x61f3[129]),function(){_0xe5bfxf[_0x61f3[106]]()});_0xe5bfx44[_0x61f3[50]]= _0x61f3[130];_0xe5bfx35[_0x61f3[44]](_0xe5bfx41);_0xe5bfx35[_0x61f3[44]](_0xe5bfx44);_0xe5bfx32[_0x61f3[44]](_0xe5bfx33);_0xe5bfx32[_0x61f3[44]](_0xe5bfx34);_0xe5bfx32[_0x61f3[44]](_0xe5bfx35);this[_0x61f3[91]]= _0xe5bfx32}function EditFileDialog(_0xe5bfxf){var _0xe5bfx32=_0xe5bfxf[_0x61f3[77]](_0x61f3[96]);var _0xe5bfx33=_0xe5bfxf[_0x61f3[77]](_0x61f3[97]);var _0xe5bfx34=_0xe5bfxf[_0x61f3[77]](_0x61f3[98]);var _0xe5bfx35=_0xe5bfxf[_0x61f3[77]](_0x61f3[99]);var _0xe5bfx36=_0xe5bfxf[_0x61f3[101]](_0x61f3[100]);mxUtils[_0x61f3[105]](_0xe5bfx36,mxResources[_0x61f3[103]](_0x61f3[187]));var _0xe5bfx37=mxUtils[_0x61f3[107]](_0x61f3[62],function(){_0xe5bfxf[_0x61f3[106]]()});_0xe5bfx37[_0x61f3[50]]= _0x61f3[92];_0xe5bfx33[_0x61f3[44]](_0xe5bfx37);_0xe5bfx33[_0x61f3[44]](_0xe5bfx36);var _0xe5bfx38=_0xe5bfxf[_0x61f3[77]](_0x61f3[108]);var _0xe5bfx39=_0xe5bfxf[_0x61f3[77]](_0x61f3[109]);var _0xe5bfx3a=document[_0x61f3[2]](_0x61f3[110]);_0xe5bfx3a[_0x61f3[80]][_0x61f3[111]]= _0x61f3[112];_0xe5bfx3a[_0x61f3[80]][_0x61f3[113]]= _0x61f3[114];_0xe5bfx3a[_0x61f3[30]]= mxUtils[_0x61f3[189]](_0xe5bfxf[_0x61f3[24]][_0x61f3[188]]());if(fileSupport){function _0xe5bfx58(_0xe5bfx3c){_0xe5bfx3c[_0x61f3[190]]();_0xe5bfx3c[_0x61f3[191]]();if(_0xe5bfx3c[_0x61f3[193]][_0x61f3[10]][_0x61f3[192]]> 0){var _0xe5bfx59=_0xe5bfx3c[_0x61f3[193]][_0x61f3[10]][0];var _0xe5bfx5a= new FileReader();_0xe5bfx5a[_0x61f3[119]]= function(_0xe5bfx3f){_0xe5bfx3a[_0x61f3[30]]= _0xe5bfx3f[_0x61f3[118]][_0x61f3[120]]};_0xe5bfx5a[_0x61f3[121]](_0xe5bfx59)}}function _0xe5bfx5b(_0xe5bfx3c){_0xe5bfx3c[_0x61f3[190]]();_0xe5bfx3c[_0x61f3[191]]()}_0xe5bfx3a[_0x61f3[124]](_0x61f3[194],_0xe5bfx5b,false);_0xe5bfx3a[_0x61f3[124]](_0x61f3[195],_0xe5bfx58,false)};_0xe5bfx39[_0x61f3[44]](_0xe5bfx3a);_0xe5bfx38[_0x61f3[44]](_0xe5bfx39);_0xe5bfx34[_0x61f3[44]](_0xe5bfx38);var _0xe5bfx41=mxUtils[_0x61f3[107]](mxResources[_0x61f3[103]](_0x61f3[157]),function(){var _0xe5bfx43=mxUtils[_0x61f3[125]](_0xe5bfx3a[_0x61f3[30]]);_0xe5bfxf[_0x61f3[24]][_0x61f3[126]](_0xe5bfx43[_0x61f3[75]]);_0xe5bfxf[_0x61f3[106]]()});_0xe5bfx41[_0x61f3[50]]= _0x61f3[128];var _0xe5bfx44=mxUtils[_0x61f3[107]](mxResources[_0x61f3[103]](_0x61f3[129]),function(){_0xe5bfxf[_0x61f3[106]]()});_0xe5bfx44[_0x61f3[50]]= _0x61f3[130];_0xe5bfx35[_0x61f3[44]](_0xe5bfx41);_0xe5bfx35[_0x61f3[44]](_0xe5bfx44);_0xe5bfx32[_0x61f3[44]](_0xe5bfx33);_0xe5bfx32[_0x61f3[44]](_0xe5bfx34);_0xe5bfx32[_0x61f3[44]](_0xe5bfx35);this[_0x61f3[91]]= _0xe5bfx32}function ExportDialog(_0xe5bfxf){var _0xe5bfx32=_0xe5bfxf[_0x61f3[77]](_0x61f3[96]);var _0xe5bfx33=_0xe5bfxf[_0x61f3[77]](_0x61f3[97]);var _0xe5bfx34=_0xe5bfxf[_0x61f3[77]](_0x61f3[196]);var _0xe5bfx35=_0xe5bfxf[_0x61f3[77]](_0x61f3[99]);var _0xe5bfx36=_0xe5bfxf[_0x61f3[101]](_0x61f3[100]);mxUtils[_0x61f3[105]](_0xe5bfx36,mxResources[_0x61f3[103]](_0x61f3[197])+ _0x61f3[104]);var _0xe5bfx37=mxUtils[_0x61f3[107]](_0x61f3[62],function(){_0xe5bfxf[_0x61f3[106]]()});_0xe5bfx37[_0x61f3[50]]= _0x61f3[92];_0xe5bfx33[_0x61f3[44]](_0xe5bfx37);_0xe5bfx33[_0x61f3[44]](_0xe5bfx36);var _0xe5bfx50=_0xe5bfxf[_0x61f3[77]](_0x61f3[161]);var _0xe5bfx19=_0xe5bfxf[_0x61f3[77]](_0x61f3[170]);var _0xe5bfx4c=document[_0x61f3[2]](_0x61f3[55]);_0xe5bfx4c[_0x61f3[50]]= _0x61f3[163];mxUtils[_0x61f3[105]](_0xe5bfx4c,mxResources[_0x61f3[103]](_0x61f3[175]));var _0xe5bfx4=document[_0x61f3[2]](_0x61f3[1]);_0xe5bfx4[_0x61f3[5]](_0x61f3[30],_0xe5bfxf[_0x61f3[24]][_0x61f3[150]]());_0xe5bfx4[_0x61f3[50]]= _0x61f3[156];var _0xe5bfx2f=_0xe5bfxf[_0x61f3[77]](_0x61f3[164]);_0xe5bfx2f[_0x61f3[44]](_0xe5bfx4);_0xe5bfx19[_0x61f3[44]](_0xe5bfx4c);_0xe5bfx19[_0x61f3[44]](_0xe5bfx2f);_0xe5bfx50[_0x61f3[44]](_0xe5bfx19);_0xe5bfx34[_0x61f3[44]](_0xe5bfx50);var _0xe5bfx41=mxUtils[_0x61f3[107]](mxResources[_0x61f3[103]](_0x61f3[197]),mxUtils[_0x61f3[127]](this,function(_0xe5bfx42){_0xe5bfxf[_0x61f3[157]](false);var _0xe5bfx5d=encodeURIComponent(mxUtils[_0x61f3[198]](_0xe5bfxf[_0x61f3[24]][_0x61f3[188]]())); new mxXmlRequest(SAVE_URL+ _0xe5bfxf[_0x61f3[24]][_0x61f3[23]][_0x61f3[66]]+ _0x61f3[200],_0x61f3[201]+ _0xe5bfx4[_0x61f3[30]],_0x61f3[38])[_0x61f3[199]](document,_0x61f3[146]);_0xe5bfxf[_0x61f3[106]]()}));_0xe5bfx41[_0x61f3[50]]= _0x61f3[128];var _0xe5bfx44=mxUtils[_0x61f3[107]](mxResources[_0x61f3[103]](_0x61f3[129]),function(){_0xe5bfxf[_0x61f3[106]]()});_0xe5bfx44[_0x61f3[50]]= _0x61f3[130];_0xe5bfx35[_0x61f3[44]](_0xe5bfx41);_0xe5bfx35[_0x61f3[44]](_0xe5bfx44);_0xe5bfx32[_0x61f3[44]](_0xe5bfx33);_0xe5bfx32[_0x61f3[44]](_0xe5bfx34);_0xe5bfx32[_0x61f3[44]](_0xe5bfx35);this[_0x61f3[91]]= _0xe5bfx32}function GeneralDialog(_0xe5bfxf,_0xe5bfx5f){editorUi_global= _0xe5bfxf;var _0xe5bfx60=_0xe5bfxf[_0x61f3[24]][_0x61f3[202]];var _0xe5bfx32=_0xe5bfxf[_0x61f3[77]](_0x61f3[96]);var _0xe5bfx33=_0xe5bfxf[_0x61f3[77]](_0x61f3[97]);var _0xe5bfx34=_0xe5bfxf[_0x61f3[77]](_0x61f3[203]);var _0xe5bfx35=_0xe5bfxf[_0x61f3[77]](_0x61f3[99]);var _0xe5bfx36=_0xe5bfxf[_0x61f3[101]](_0x61f3[100]);mxUtils[_0x61f3[105]](_0xe5bfx36,mxResources[_0x61f3[103]](_0x61f3[187])+ _0x61f3[204]+ mxResources[_0x61f3[103]](_0xe5bfx5f[_0x61f3[30]][_0x61f3[205]]));var _0xe5bfx37=mxUtils[_0x61f3[107]](_0x61f3[62],function(){_0xe5bfxf[_0x61f3[106]]()});_0xe5bfx37[_0x61f3[50]]= _0x61f3[92];_0xe5bfx33[_0x61f3[44]](_0xe5bfx37);_0xe5bfx33[_0x61f3[44]](_0xe5bfx36);var _0xe5bfx61=_0xe5bfx5f[_0x61f3[30]][_0x61f3[206]][_0x61f3[192]];var _0xe5bfx50=_0xe5bfxf[_0x61f3[77]](_0x61f3[161]);for(var _0xe5bfx62=0;_0xe5bfx62< _0xe5bfx61;_0xe5bfx62++){var _0xe5bfx49=_0xe5bfx5f[_0x61f3[30]][_0x61f3[206]][_0xe5bfx62][_0x61f3[15]];var _0xe5bfx4a=_0x61f3[149]+ _0xe5bfx49;var _0xe5bfx3=_0xe5bfx5f[_0x61f3[30]][_0x61f3[206]][_0xe5bfx62][_0x61f3[30]];if(_0xe5bfx5f[_0x61f3[30]][_0x61f3[205]]=== _0x61f3[207]&& _0xe5bfx49=== _0x61f3[208]){if(_0xe5bfx3[_0x61f3[12]](_0x61f3[209])< 0){_0xe5bfx3+= _0x61f3[209]};if(_0xe5bfx3[_0x61f3[12]](_0x61f3[210])< 0){_0xe5bfx3+= _0x61f3[210]}};var _0xe5bfx19;switch(_0xe5bfx49){case _0x61f3[211]:;case _0x61f3[212]:_0xe5bfx19= _0xe5bfxf[_0x61f3[77]]();break;default:_0xe5bfx19= _0xe5bfxf[_0x61f3[77]]((_0xe5bfx62== _0xe5bfx61- 1)?_0x61f3[170]:_0x61f3[162]);var _0xe5bfx4c=document[_0x61f3[2]](_0x61f3[55]);_0xe5bfx4c[_0x61f3[50]]= _0x61f3[163];mxUtils[_0x61f3[105]](_0xe5bfx4c,mxResources[_0x61f3[103]](_0xe5bfx49));_0xe5bfx19[_0x61f3[44]](_0xe5bfx4c)};var _0xe5bfx4;switch(_0xe5bfx49){case _0x61f3[216]:_0xe5bfx4= createDropdownWithOptgroupFromApi(_0x61f3[213],_0xe5bfx3,_0x61f3[214],_0x61f3[66],_0xe5bfxf,_0x61f3[215]);break;case _0x61f3[218]:_0xe5bfx4= createDropdownFromApi(_0x61f3[217],_0xe5bfx3,_0x61f3[15],_0x61f3[15],_0xe5bfxf);break;case _0x61f3[220]:_0xe5bfx4= createDropdownFromApi(_0x61f3[219],_0xe5bfx3,_0x61f3[15],_0x61f3[15],_0xe5bfxf);break;case _0x61f3[222]:_0xe5bfx4= createDropdownFromApi(_0x61f3[221],_0xe5bfx3,_0x61f3[15],_0x61f3[66],_0xe5bfxf);break;case _0x61f3[232]:if(_0xe5bfx5f[_0x61f3[30]][_0x61f3[205]]== _0x61f3[223]){_0xe5bfx4= createDropdownFromApi(_0x61f3[224],_0xe5bfx3,_0x61f3[225],_0x61f3[66],_0xe5bfxf)}else {if(_0xe5bfx5f[_0x61f3[30]][_0x61f3[205]]== _0x61f3[226]){_0xe5bfx4= createDropdownFromApi(_0x61f3[227],_0xe5bfx3,_0x61f3[15],_0x61f3[66],_0xe5bfxf)}else {if(_0xe5bfx5f[_0x61f3[30]][_0x61f3[205]]== _0x61f3[228]){_0xe5bfx4= createDropdownFromApi(_0x61f3[229],_0xe5bfx3,_0x61f3[15],_0x61f3[66],_0xe5bfxf)}else {if(_0xe5bfx5f[_0x61f3[30]][_0x61f3[205]]== _0x61f3[230]){_0xe5bfx4= createDropdownFromApi(_0x61f3[231],_0xe5bfx3,_0x61f3[15],_0x61f3[66],_0xe5bfxf)}}}};break;case _0x61f3[234]:_0xe5bfx4= createDropdownFromApi(_0x61f3[233],_0xe5bfx3,_0x61f3[15],_0x61f3[66],_0xe5bfxf);break;case _0x61f3[236]:_0xe5bfx4= createDropdownFromApi(_0x61f3[235],_0xe5bfx3,_0x61f3[15],_0x61f3[15],_0xe5bfxf);break;case _0x61f3[238]:_0xe5bfx4= createDropdownFromApi(_0x61f3[237],_0xe5bfx3,_0x61f3[238],_0x61f3[66],_0xe5bfxf,[_0x61f3[238],_0x61f3[236]],_0x61f3[239]);break;case _0x61f3[240]:_0xe5bfx4= createDropdownFromArray(ISPEECHASRMODEL,_0xe5bfx3);break;case _0x61f3[241]:_0xe5bfx4= createDropdownFromArray(ISPEECHASRLANG,_0xe5bfx3);break;case _0x61f3[242]:_0xe5bfx4= createDropdownFromArray(ISPEECHBEEP,_0xe5bfx3);break;case _0x61f3[243]:_0xe5bfx4= createDropdownFromArray(SECRETDIGITSPOS,_0xe5bfx3);break;case _0x61f3[244]:_0xe5bfx4= createDropdownFromArray(ISPEECHLANG,_0xe5bfx3);break;case _0x61f3[245]:_0xe5bfx4= createDropdownFromArray(AWS_POLLY_REGION,_0xe5bfx3);break;case _0x61f3[246]:_0xe5bfx4= createDropdownFromArray(AWS_POLLY_VOICE,_0xe5bfx3);break;case _0x61f3[247]:_0xe5bfx4= createDropdownFromArray(GOOGLETTSLANG,_0xe5bfx3);break;case _0x61f3[248]:_0xe5bfx4= createDropdownFromArray(ASRINTKEYS,_0xe5bfx3);break;case _0x61f3[249]:_0xe5bfx4= createDropdownFromArray(RECORDINGFORMAT,_0xe5bfx3);break;case _0x61f3[250]:_0xe5bfx4= createDropdownFromArray(BOOLSELECT,_0xe5bfx3);break;case _0x61f3[252]:_0xe5bfx4= createDropdownFromApi(_0x61f3[251],_0xe5bfx3,_0x61f3[15],_0x61f3[66],_0xe5bfxf);break;case _0x61f3[255]:_0xe5bfx4= createGroupedDropdownFromApi(_0x61f3[253],_0xe5bfx3,_0x61f3[15],_0x61f3[66],_0xe5bfxf,_0x61f3[254]);break;case _0x61f3[256]:_0xe5bfx4= createDropdownFromApi(_0x61f3[171],_0xe5bfx3,_0x61f3[15],_0x61f3[66],_0xe5bfxf,null,null,_0xe5bfxf[_0x61f3[24]][_0x61f3[150]]());break;case _0x61f3[258]:_0xe5bfx4= createDropdownFromApi(_0x61f3[257],_0xe5bfx3,_0x61f3[15],_0x61f3[66],_0xe5bfxf);break;case _0x61f3[261]:_0xe5bfx4= createDropdownFromApi(_0x61f3[259],_0xe5bfx3,_0x61f3[260],_0x61f3[66],_0xe5bfxf);break;case _0x61f3[262]:;case _0x61f3[263]:;case _0x61f3[264]:;case _0x61f3[265]:;case _0x61f3[28]:;case _0x61f3[266]:;case _0x61f3[269]:_0xe5bfx4= document[_0x61f3[2]](_0x61f3[1]);_0xe5bfx4[_0x61f3[5]](_0x61f3[3],_0x61f3[267]);_0xe5bfx4[_0x61f3[5]](_0x61f3[268],0);_0xe5bfx4[_0x61f3[5]](_0x61f3[73],1000);_0xe5bfx4[_0x61f3[5]](_0x61f3[30],_0xe5bfx3);_0xe5bfx4[_0x61f3[50]]= _0x61f3[156];break;case _0x61f3[270]:;case _0x61f3[271]:_0xe5bfx4= document[_0x61f3[2]](_0x61f3[1]);_0xe5bfx4[_0x61f3[5]](_0x61f3[3],_0x61f3[267]);_0xe5bfx4[_0x61f3[5]](_0x61f3[268],0);_0xe5bfx4[_0x61f3[5]](_0x61f3[30],_0xe5bfx3);_0xe5bfx4[_0x61f3[50]]= _0x61f3[156];break;case _0x61f3[41]:;case _0x61f3[272]:;case _0x61f3[273]:;case _0x61f3[274]:;case _0x61f3[275]:;case _0x61f3[71]:_0xe5bfx4= document[_0x61f3[2]](_0x61f3[110]);_0xe5bfx4[_0x61f3[276]]= _0xe5bfx3;_0xe5bfx4[_0x61f3[50]]= _0x61f3[156];break;case _0x61f3[277]:;case _0x61f3[280]:_0xe5bfx4= document[_0x61f3[2]](_0x61f3[110]);_0xe5bfx4[_0x61f3[276]]= _0xe5bfx3;_0xe5bfx4[_0x61f3[50]]= _0x61f3[156];_0xe5bfx4[_0x61f3[5]](_0x61f3[278],_0x61f3[279]);break;case _0x61f3[212]:;case _0x61f3[211]:_0xe5bfx4= document[_0x61f3[2]](_0x61f3[1]);_0xe5bfx4[_0x61f3[5]](_0x61f3[3],_0x61f3[281]);_0xe5bfx4[_0x61f3[5]](_0x61f3[30],_0xe5bfx3);_0xe5bfx4[_0x61f3[50]]= _0x61f3[156];break;case _0x61f3[284]:_0xe5bfx4= document[_0x61f3[2]](_0x61f3[1]);_0xe5bfx4[_0x61f3[5]](_0x61f3[282],_0x61f3[283]);_0xe5bfx4[_0x61f3[5]](_0x61f3[30],_0xe5bfx3);_0xe5bfx4[_0x61f3[50]]= _0x61f3[156];break;case _0x61f3[288]:_0xe5bfx4= document[_0x61f3[2]](_0x61f3[1]);_0xe5bfx4[_0x61f3[5]](_0x61f3[3],_0x61f3[14]);_0xe5bfx4[_0x61f3[5]](_0x61f3[115],_0x61f3[285]);_0xe5bfx4[_0x61f3[5]](_0x61f3[286],_0x61f3[287]);_0xe5bfx4[_0x61f3[50]]= _0x61f3[156];break;default:_0xe5bfx4= document[_0x61f3[2]](_0x61f3[1]);_0xe5bfx4[_0x61f3[5]](_0x61f3[30],_0xe5bfx3);_0xe5bfx4[_0x61f3[50]]= _0x61f3[156];break};_0xe5bfx4[_0x61f3[5]](_0x61f3[66],_0xe5bfx4a);var _0xe5bfx2f=_0xe5bfxf[_0x61f3[77]](_0x61f3[164]);_0xe5bfx2f[_0x61f3[44]](_0xe5bfx4);if(mxResources[_0x61f3[103]](_0x61f3[289]+ _0xe5bfx49)){var _0xe5bfx63=_0xe5bfxf[_0x61f3[77]](_0x61f3[290]);_0xe5bfx63[_0x61f3[50]]= _0x61f3[291];mxUtils[_0x61f3[105]](_0xe5bfx63,mxResources[_0x61f3[103]](_0x61f3[289]+ _0xe5bfx49));_0xe5bfx2f[_0x61f3[44]](_0xe5bfx63)};_0xe5bfx19[_0x61f3[44]](_0xe5bfx2f);_0xe5bfx50[_0x61f3[44]](_0xe5bfx19)};_0xe5bfx34[_0x61f3[44]](_0xe5bfx50);var _0xe5bfx41=mxUtils[_0x61f3[107]](mxResources[_0x61f3[103]](_0x61f3[157]),mxUtils[_0x61f3[127]](this,function(_0xe5bfx42){for(var _0xe5bfx62=0;_0xe5bfx62< _0xe5bfx5f[_0x61f3[30]][_0x61f3[206]][_0x61f3[192]];_0xe5bfx62++){var _0xe5bfx4a=_0x61f3[149]+ _0xe5bfx5f[_0x61f3[30]][_0x61f3[206]][_0xe5bfx62][_0x61f3[15]];var _0xe5bfx49=_0xe5bfx5f[_0x61f3[30]][_0x61f3[206]][_0xe5bfx62][_0x61f3[15]];if(_0xe5bfx5f[_0x61f3[30]][_0x61f3[205]]=== _0x61f3[207]&& _0xe5bfx49=== _0x61f3[208]){var _0xe5bfx3=document[_0x61f3[32]](_0xe5bfx4a)[_0x61f3[30]];if(_0xe5bfx3[_0x61f3[12]](_0x61f3[209])< 0){_0xe5bfx3+= _0x61f3[209]};if(_0xe5bfx3[_0x61f3[12]](_0x61f3[210])< 0){_0xe5bfx3+= _0x61f3[210]};document[_0x61f3[32]](_0xe5bfx4a)[_0x61f3[30]]= _0xe5bfx3};_0xe5bfx5f[_0x61f3[5]](_0xe5bfx49,document[_0x61f3[32]](_0xe5bfx4a)[_0x61f3[30]])};_0xe5bfx60[_0x61f3[292]](_0xe5bfx5f);_0xe5bfxf[_0x61f3[106]]()}));_0xe5bfx41[_0x61f3[50]]= _0x61f3[128];var _0xe5bfx44=mxUtils[_0x61f3[107]](mxResources[_0x61f3[103]](_0x61f3[129]),mxUtils[_0x61f3[127]](this,function(_0xe5bfx42){if(_0xe5bfx5f[_0x61f3[30]][_0x61f3[205]]=== _0x61f3[207]){for(var _0xe5bfx62=0;_0xe5bfx62< _0xe5bfx5f[_0x61f3[30]][_0x61f3[206]][_0x61f3[192]];_0xe5bfx62++){var _0xe5bfx4a=_0x61f3[149]+ _0xe5bfx5f[_0x61f3[30]][_0x61f3[206]][_0xe5bfx62][_0x61f3[15]];var _0xe5bfx49=_0xe5bfx5f[_0x61f3[30]][_0x61f3[206]][_0xe5bfx62][_0x61f3[15]];if(_0xe5bfx49=== _0x61f3[208]){var _0xe5bfx3=_0xe5bfx5f[_0x61f3[30]][_0x61f3[206]][_0xe5bfx62][_0x61f3[30]];_0xe5bfx62= _0xe5bfx5f[_0x61f3[30]][_0x61f3[206]][_0x61f3[192]];if(_0xe5bfx3[_0x61f3[12]](_0x61f3[209])< 0){_0xe5bfx3+= _0x61f3[209]};if(_0xe5bfx3[_0x61f3[12]](_0x61f3[210])< 0){_0xe5bfx3+= _0x61f3[210]};document[_0x61f3[32]](_0xe5bfx4a)[_0x61f3[30]]= _0xe5bfx3;_0xe5bfx5f[_0x61f3[5]](_0xe5bfx49,_0xe5bfx3);_0xe5bfx60[_0x61f3[292]](_0xe5bfx5f)}}};_0xe5bfxf[_0x61f3[106]]()}));_0xe5bfx44[_0x61f3[50]]= _0x61f3[130];_0xe5bfx35[_0x61f3[44]](_0xe5bfx41);_0xe5bfx35[_0x61f3[44]](_0xe5bfx44);_0xe5bfx32[_0x61f3[44]](_0xe5bfx33);_0xe5bfx32[_0x61f3[44]](_0xe5bfx34);_0xe5bfx32[_0x61f3[44]](_0xe5bfx35);this[_0x61f3[91]]= _0xe5bfx32} \ No newline at end of file +undefined \ No newline at end of file diff --git a/public/assets/plugins/square/js/Editor.js b/public/assets/plugins/square/js/Editor.js index ba01beb..66dc905 100644 --- a/public/assets/plugins/square/js/Editor.js +++ b/public/assets/plugins/square/js/Editor.js @@ -1 +1 @@ -var _0x4de8=["\x49\x53\x5F\x54\x4F\x55\x43\x48","\x73\x74\x6F\x72\x61\x67\x65","\x6C\x6F\x63\x61\x6C","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x46\x69\x6C\x65","\x46\x69\x6C\x65\x52\x65\x61\x64\x65\x72","\x46\x69\x6C\x65\x4C\x69\x73\x74","\x74\x6F\x75\x63\x68","\x31","\x6F\x70\x65\x6E\x65\x72","\x63\x6F\x75\x6E\x74\x65\x72","\x63\x61\x6C\x6C","\x69\x6E\x69\x74","\x69\x6E\x69\x74\x53\x74\x65\x6E\x63\x69\x6C\x52\x65\x67\x69\x73\x74\x72\x79","\x67\x72\x61\x70\x68","\x6F\x75\x74\x6C\x69\x6E\x65","\x75\x70\x64\x61\x74\x65\x4F\x6E\x50\x61\x6E","\x75\x6E\x64\x6F\x4D\x61\x6E\x61\x67\x65\x72","\x63\x72\x65\x61\x74\x65\x55\x6E\x64\x6F\x4D\x61\x6E\x61\x67\x65\x72","\x73\x74\x61\x74\x75\x73","","\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x67\x65\x74\x4F\x72\x43\x72\x65\x61\x74\x65\x46\x69\x6C\x65\x6E\x61\x6D\x65","\x64\x72\x61\x77\x69\x6E\x67","\x67\x65\x74","\x2E\x78\x6D\x6C","\x67\x65\x74\x46\x69\x6C\x65\x6E\x61\x6D\x65","\x73\x65\x74\x53\x74\x61\x74\x75\x73","\x73\x74\x61\x74\x75\x73\x43\x68\x61\x6E\x67\x65\x64","\x66\x69\x72\x65\x45\x76\x65\x6E\x74","\x67\x65\x74\x53\x74\x61\x74\x75\x73","\x6D\x6F\x64\x69\x66\x69\x65\x64","\x67\x72\x61\x70\x68\x43\x68\x61\x6E\x67\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x61\x70\x70\x6C\x79","\x62\x69\x6E\x64","\x61\x64\x64\x4C\x69\x73\x74\x65\x6E\x65\x72","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x6F\x6E\x62\x65\x66\x6F\x72\x65\x75\x6E\x6C\x6F\x61\x64","\x61\x6C\x6C\x43\x68\x61\x6E\x67\x65\x73\x4C\x6F\x73\x74","\x72\x65\x73\x65\x74\x56\x69\x65\x77\x4F\x6E\x52\x6F\x6F\x74\x43\x68\x61\x6E\x67\x65","\x73\x63\x72\x6F\x6C\x6C\x62\x61\x72\x73","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x65\x78\x74\x65\x6E\x64","\x67\x72\x69\x64\x49\x6D\x61\x67\x65","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x2F\x67\x72\x69\x64\x2E\x67\x69\x66","\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x49\x6D\x61\x67\x65","\x2F\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x2E\x67\x69\x66","\x73\x65\x74\x47\x72\x61\x70\x68\x58\x6D\x6C","\x6F\x77\x6E\x65\x72\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x6E\x6F\x64\x65\x4E\x61\x6D\x65","\x6D\x78\x47\x72\x61\x70\x68\x4D\x6F\x64\x65\x6C","\x73\x63\x61\x6C\x65","\x76\x69\x65\x77","\x67\x72\x69\x64\x45\x6E\x61\x62\x6C\x65\x64","\x67\x72\x69\x64","\x67\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x30","\x67\x75\x69\x64\x65\x73\x45\x6E\x61\x62\x6C\x65\x64","\x67\x72\x61\x70\x68\x48\x61\x6E\x64\x6C\x65\x72","\x67\x75\x69\x64\x65\x73","\x74\x6F\x6F\x6C\x74\x69\x70\x73","\x73\x65\x74\x54\x6F\x6F\x6C\x74\x69\x70\x73","\x63\x6F\x6E\x6E\x65\x63\x74","\x73\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x66\x6F\x6C\x64\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x66\x6F\x6C\x64","\x73\x63\x72\x6F\x6C\x6C\x4C\x65\x66\x74","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x73\x63\x72\x6F\x6C\x6C\x54\x6F\x70","\x78","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65","\x64\x78","\x79","\x64\x79","\x70\x61\x67\x65\x56\x69\x73\x69\x62\x6C\x65","\x70\x61\x67\x65","\x70\x61\x67\x65\x42\x72\x65\x61\x6B\x73\x56\x69\x73\x69\x62\x6C\x65","\x70\x72\x65\x66\x65\x72\x50\x61\x67\x65\x53\x69\x7A\x65","\x70\x61\x67\x65\x53\x63\x61\x6C\x65","\x70\x61\x67\x65\x57\x69\x64\x74\x68","\x70\x61\x67\x65\x48\x65\x69\x67\x68\x74","\x70\x61\x67\x65\x46\x6F\x72\x6D\x61\x74","\x6C\x65\x6E\x67\x74\x68","\x64\x65\x63\x6F\x64\x65","\x75\x70\x64\x61\x74\x65\x47\x72\x61\x70\x68\x43\x6F\x6D\x70\x6F\x6E\x65\x6E\x74\x73","\x67\x65\x74\x47\x72\x61\x70\x68\x58\x6D\x6C","\x63\x72\x65\x61\x74\x65\x58\x6D\x6C\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x65\x6E\x63\x6F\x64\x65","\x72\x6F\x75\x6E\x64","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x69\x73\x47\x72\x69\x64\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64","\x74\x6F\x6F\x6C\x74\x69\x70\x48\x61\x6E\x64\x6C\x65\x72","\x63\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x48\x61\x6E\x64\x6C\x65\x72","\x77\x69\x64\x74\x68","\x68\x65\x69\x67\x68\x74","\x6E\x6F\x6E\x65","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x43\x6F\x6C\x6F\x72","\x73\x74\x79\x6C\x65","\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x67\x65\x53\x68\x61\x70\x65","\x66\x69\x6C\x6C","\x72\x65\x63\x6F\x6E\x66\x69\x67\x75\x72\x65","\x23\x65\x62\x65\x62\x65\x62","\x62\x6F\x72\x64\x65\x72\x53\x74\x79\x6C\x65","\x73\x6F\x6C\x69\x64","\x62\x6F\x72\x64\x65\x72\x43\x6F\x6C\x6F\x72","\x23\x65\x35\x65\x35\x65\x35","\x62\x6F\x72\x64\x65\x72\x54\x6F\x70\x57\x69\x64\x74\x68","\x31\x70\x78","\x62\x6F\x72\x64\x65\x72\x4C\x65\x66\x74\x57\x69\x64\x74\x68","\x62\x6F\x72\x64\x65\x72\x52\x69\x67\x68\x74\x57\x69\x64\x74\x68","\x30\x70\x78","\x62\x6F\x72\x64\x65\x72\x42\x6F\x74\x74\x6F\x6D\x57\x69\x64\x74\x68","\x62\x6F\x72\x64\x65\x72","\x76\x61\x6C\x69\x64\x61\x74\x65","\x6F\x76\x65\x72\x66\x6C\x6F\x77","\x68\x69\x64\x64\x65\x6E","\x61\x75\x74\x6F","\x49\x53\x5F\x49\x45","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x4D\x6F\x64\x65","\x75\x72\x6C\x28","\x29","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x6E\x6F\x64\x65","\x49\x53\x5F\x49\x45\x36","\x73\x74\x79\x6C\x65\x73\x68\x65\x65\x74","\x2F\x67\x72\x61\x70\x68\x65\x64\x69\x74\x6F\x72\x2D\x69\x65\x36\x2E\x63\x73\x73","\x6C\x69\x6E\x6B","\x6C\x6F\x61\x64\x44\x65\x66\x61\x75\x6C\x74\x42\x75\x6E\x64\x6C\x65","\x61\x64\x64","\x44\x45\x46\x41\x55\x4C\x54\x5F\x48\x4F\x54\x53\x50\x4F\x54","\x63\x72\x65\x61\x74\x65\x4D\x61\x72\x6B\x65\x72","\x69\x6E\x74\x65\x72\x73\x65\x63\x74\x73","\x69\x73\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6E\x67","\x53\x48\x41\x44\x4F\x57\x43\x4F\x4C\x4F\x52","\x23\x64\x30\x64\x30\x64\x30","\x48\x41\x4E\x44\x4C\x45\x5F\x46\x49\x4C\x4C\x43\x4F\x4C\x4F\x52","\x23\x39\x39\x63\x63\x66\x66","\x48\x41\x4E\x44\x4C\x45\x5F\x53\x54\x52\x4F\x4B\x45\x43\x4F\x4C\x4F\x52","\x23\x30\x30\x38\x38\x63\x66","\x56\x45\x52\x54\x45\x58\x5F\x53\x45\x4C\x45\x43\x54\x49\x4F\x4E\x5F\x43\x4F\x4C\x4F\x52","\x23\x30\x30\x61\x38\x66\x66","\x4F\x55\x54\x4C\x49\x4E\x45\x5F\x43\x4F\x4C\x4F\x52","\x4F\x55\x54\x4C\x49\x4E\x45\x5F\x48\x41\x4E\x44\x4C\x45\x5F\x46\x49\x4C\x4C\x43\x4F\x4C\x4F\x52","\x4F\x55\x54\x4C\x49\x4E\x45\x5F\x48\x41\x4E\x44\x4C\x45\x5F\x53\x54\x52\x4F\x4B\x45\x43\x4F\x4C\x4F\x52","\x43\x4F\x4E\x4E\x45\x43\x54\x5F\x48\x41\x4E\x44\x4C\x45\x5F\x46\x49\x4C\x4C\x43\x4F\x4C\x4F\x52","\x23\x63\x65\x65\x37\x66\x66","\x45\x44\x47\x45\x5F\x53\x45\x4C\x45\x43\x54\x49\x4F\x4E\x5F\x43\x4F\x4C\x4F\x52","\x44\x45\x46\x41\x55\x4C\x54\x5F\x56\x41\x4C\x49\x44\x5F\x43\x4F\x4C\x4F\x52","\x4C\x41\x42\x45\x4C\x5F\x48\x41\x4E\x44\x4C\x45\x5F\x46\x49\x4C\x4C\x43\x4F\x4C\x4F\x52","\x47\x55\x49\x44\x45\x5F\x43\x4F\x4C\x4F\x52","\x70\x61\x67\x65\x42\x72\x65\x61\x6B\x43\x6F\x6C\x6F\x72","\x23\x63\x30\x63\x30\x63\x30","\x64\x65\x66\x61\x75\x6C\x74\x4F\x70\x61\x63\x69\x74\x79","\x63\x72\x65\x61\x74\x65\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x67\x65\x53\x68\x61\x70\x65","\x77\x68\x69\x74\x65","\x23\x63\x61\x63\x61\x63\x61","\x67\x65\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x67\x65\x42\x6F\x75\x6E\x64\x73","\x67\x65\x74\x47\x72\x61\x70\x68\x42\x6F\x75\x6E\x64\x73","\x6D\x69\x6E","\x66\x6C\x6F\x6F\x72","\x6D\x61\x78","\x63\x65\x69\x6C","\x70\x61\x6E\x47\x72\x61\x70\x68","\x64\x69\x61\x6C\x65\x63\x74","\x44\x49\x41\x4C\x45\x43\x54\x5F\x53\x56\x47","\x75\x73\x65\x53\x63\x72\x6F\x6C\x6C\x62\x61\x72\x73\x46\x6F\x72\x50\x61\x6E\x6E\x69\x6E\x67","\x68\x61\x73\x53\x63\x72\x6F\x6C\x6C\x62\x61\x72\x73","\x6D\x61\x72\x67\x69\x6E\x4C\x65\x66\x74","\x70\x78","\x6D\x61\x72\x67\x69\x6E\x54\x6F\x70","\x76\x61\x6C\x69\x64\x61\x74\x65\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x67\x65\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x69\x6D\x61\x67\x65","\x73\x72\x63","\x64\x65\x73\x74\x72\x6F\x79","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x6E\x65","\x72\x65\x64\x72\x61\x77","\x72\x65\x64\x72\x61\x77\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x69\x73\x53\x68\x61\x64\x6F\x77","\x44\x49\x41\x4C\x45\x43\x54\x5F\x53\x54\x52\x49\x43\x54\x48\x54\x4D\x4C","\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x66\x69\x72\x73\x74\x43\x68\x69\x6C\x64","\x61\x62\x73\x6F\x6C\x75\x74\x65","\x69\x6E\x73\x65\x72\x74\x42\x65\x66\x6F\x72\x65","\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x67\x65\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x67\x65","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x2D\x31\x70\x78\x20\x2D\x31\x70\x78","\x64\x62\x6C\x63\x6C\x69\x63\x6B","\x64\x62\x6C\x43\x6C\x69\x63\x6B","\x66\x69\x72\x65\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74","\x69\x73\x48\x69\x64\x65\x4F\x6E\x48\x6F\x76\x65\x72","\x68\x69\x64\x65","\x69\x73\x4D\x6F\x75\x73\x65\x44\x6F\x77\x6E","\x69\x73\x43\x6F\x6E\x73\x75\x6D\x65\x64","\x61\x64\x64\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x62\x6F\x75\x6E\x64\x73","\x75\x70\x64\x61\x74\x65\x50\x61\x67\x65\x42\x72\x65\x61\x6B\x73","\x6D\x69\x6E\x50\x61\x67\x65\x42\x72\x65\x61\x6B\x44\x69\x73\x74","\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C\x50\x61\x67\x65\x42\x72\x65\x61\x6B\x73","\x70\x6F\x69\x6E\x74\x73","\x69\x73\x44\x61\x73\x68\x65\x64","\x70\x61\x67\x65\x42\x72\x65\x61\x6B\x44\x61\x73\x68\x65\x64","\x61\x64\x64\x50\x69\x70\x65","\x73\x70\x6C\x69\x63\x65","\x76\x65\x72\x74\x69\x63\x61\x6C\x50\x61\x67\x65\x42\x72\x65\x61\x6B\x73","\x73\x6E\x61\x70\x54\x6F\x54\x65\x72\x6D\x69\x6E\x61\x6C\x73","\x73\x68\x6F\x75\x6C\x64\x52\x65\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73\x46\x72\x6F\x6D\x50\x61\x72\x65\x6E\x74","\x69\x73\x56\x65\x72\x74\x65\x78","\x67\x65\x74\x43\x65\x6C\x6C\x47\x65\x6F\x6D\x65\x74\x72\x79","\x72\x65\x6C\x61\x74\x69\x76\x65","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64\x46\x6F\x72\x45\x76\x65\x6E\x74","\x69\x73\x41\x6C\x74\x44\x6F\x77\x6E","\x61\x64\x64\x49\x74\x65\x6D","\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E","\x63\x6F\x6E\x73\x75\x6D\x65","\x67\x65\x74\x49\x6E\x69\x74\x69\x61\x6C\x43\x65\x6C\x6C\x46\x6F\x72\x45\x76\x65\x6E\x74","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x67\x65\x74\x50\x61\x72\x65\x6E\x74","\x69\x73\x43\x65\x6C\x6C\x53\x65\x6C\x65\x63\x74\x65\x64","\x69\x73\x56\x61\x6C\x69\x64\x52\x6F\x6F\x74","\x69\x73\x44\x65\x6C\x61\x79\x65\x64\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x73\x65\x6C\x65\x63\x74\x44\x65\x6C\x61\x79\x65\x64","\x67\x65\x74\x43\x65\x6C\x6C","\x63\x65\x6C\x6C","\x67\x65\x74\x45\x76\x65\x6E\x74","\x73\x65\x6C\x65\x63\x74\x43\x65\x6C\x6C\x46\x6F\x72\x45\x76\x65\x6E\x74","\x67\x65\x74\x43\x65\x6C\x6C\x46\x6F\x72\x50\x6F\x70\x75\x70\x45\x76\x65\x6E\x74","\x65\x64\x69\x74","\x67\x65\x74\x50\x72\x6F\x70\x65\x72\x74\x79","\x75\x6E\x64\x6F\x61\x62\x6C\x65\x45\x64\x69\x74\x48\x61\x70\x70\x65\x6E\x65\x64","\x67\x65\x74\x56\x69\x65\x77","\x63\x68\x61\x6E\x67\x65\x73","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73\x46\x6F\x72\x43\x68\x61\x6E\x67\x65\x73","\x67\x65\x74\x53\x74\x61\x74\x65","\x70\x75\x73\x68","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x2F\x67\x65\x6E\x65\x72\x61\x6C\x2E\x78\x6D\x6C","\x6C\x6F\x61\x64\x53\x74\x65\x6E\x63\x69\x6C\x53\x65\x74","\x6C\x69\x62\x72\x61\x72\x69\x65\x73","\x70\x61\x63\x6B\x61\x67\x65\x73","\x67\x65\x74\x53\x74\x65\x6E\x63\x69\x6C","\x73\x74\x65\x6E\x63\x69\x6C\x73","\x67\x65\x74\x42\x61\x73\x65\x6E\x61\x6D\x65\x46\x6F\x72\x53\x74\x65\x6E\x63\x69\x6C","\x73\x75\x62\x73\x74\x72\x69\x6E\x67","\x74\x6F\x4C\x6F\x77\x65\x72\x43\x61\x73\x65","\x2E\x6A\x73","\x6C\x6F\x61\x64","\x67\x65\x74\x54\x65\x78\x74","\x2F","\x2E","\x73\x70\x6C\x69\x74","\x6D\x78\x67\x72\x61\x70\x68","\x67\x65\x74\x58\x6D\x6C","\x70\x61\x72\x73\x65\x53\x74\x65\x6E\x63\x69\x6C\x53\x65\x74","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x6E\x61\x6D\x65","\x6E\x6F\x64\x65\x54\x79\x70\x65","\x4E\x4F\x44\x45\x54\x59\x50\x45\x5F\x45\x4C\x45\x4D\x45\x4E\x54","\x5F","\x72\x65\x70\x6C\x61\x63\x65","\x61\x64\x64\x53\x74\x65\x6E\x63\x69\x6C","\x77","\x68","\x6E\x65\x78\x74\x53\x69\x62\x6C\x69\x6E\x67","\x70\x72\x6F\x64\x75\x63\x65\x72","\x63\x6F\x6E\x73\x75\x6D\x65\x72","\x64\x6F\x6E\x65","\x73\x65\x74\x43\x6F\x6E\x73\x75\x6D\x65\x72","\x65\x78\x65\x63\x75\x74\x65","\x73\x65\x74\x44\x61\x74\x61","\x64\x61\x74\x61","\x65\x72\x72\x6F\x72","\x63\x61\x6E\x63\x65\x6C","\x61\x6C\x65\x72\x74"];var useLocalStorage=(mxClient[_0x4de8[0]]|| urlParams[_0x4de8[1]]== _0x4de8[2])&& typeof (localStorage)!= _0x4de8[3];var fileSupport=window[_0x4de8[4]]!= null&& window[_0x4de8[5]]!= null&& window[_0x4de8[6]]!= null;var touchStyle=mxClient[_0x4de8[0]]|| urlParams[_0x4de8[7]]== _0x4de8[8];var counter=0;try{var op=window;while(op[_0x4de8[9]]!= null&& !isNaN(op[_0x4de8[9]][_0x4de8[10]])){op= op[_0x4de8[9]]};if(op!= null){op[_0x4de8[10]]++;counter= op[_0x4de8[10]]}}catch(e){};Editor= function(){mxEventSource[_0x4de8[11]](this);this[_0x4de8[12]]();this[_0x4de8[13]]();this[_0x4de8[14]]= new Graph();this[_0x4de8[15]]= new mxOutline(this[_0x4de8[14]]);this[_0x4de8[15]][_0x4de8[16]]= true;this[_0x4de8[17]]= this[_0x4de8[18]]();this[_0x4de8[19]]= _0x4de8[20];this[_0x4de8[21]]= null;this[_0x4de8[22]]= function(){return this[_0x4de8[21]]|| mxResources[_0x4de8[24]](_0x4de8[23],[counter])+ _0x4de8[25]};this[_0x4de8[26]]= function(){return this[_0x4de8[21]]};this[_0x4de8[27]]= function(_0x5828x6){this[_0x4de8[19]]= _0x5828x6;this[_0x4de8[29]]( new mxEventObject(_0x4de8[28]))};this[_0x4de8[30]]= function(){return this[_0x4de8[19]]};this[_0x4de8[31]]= false;this[_0x4de8[32]]= function(){this[_0x4de8[31]]= true};this[_0x4de8[14]][_0x4de8[36]]()[_0x4de8[35]](mxEvent.CHANGE,mxUtils[_0x4de8[34]](this,function(){this[_0x4de8[32]][_0x4de8[33]](this,arguments)}));window[_0x4de8[37]]= mxUtils[_0x4de8[34]](this,function(){if(this[_0x4de8[31]]){return mxResources[_0x4de8[24]](_0x4de8[38])}});this[_0x4de8[14]][_0x4de8[39]]= false;this[_0x4de8[14]][_0x4de8[40]]= true;this[_0x4de8[14]][_0x4de8[41]]= null};mxUtils[_0x4de8[42]](Editor,mxEventSource);Editor[_0x4de8[44]][_0x4de8[43]]= IMAGE_PATH+ _0x4de8[45];Editor[_0x4de8[44]][_0x4de8[46]]= IMAGE_PATH+ _0x4de8[47];Editor[_0x4de8[44]][_0x4de8[48]]= function(_0x5828x7){var _0x5828x8= new mxCodec(_0x5828x7[_0x4de8[49]]);if(_0x5828x7[_0x4de8[50]]== _0x4de8[51]){this[_0x4de8[14]][_0x4de8[53]][_0x4de8[52]]= 1;this[_0x4de8[14]][_0x4de8[54]]= _0x5828x7[_0x4de8[56]](_0x4de8[55])!= _0x4de8[57];this[_0x4de8[14]][_0x4de8[59]][_0x4de8[58]]= _0x5828x7[_0x4de8[56]](_0x4de8[60])!= _0x4de8[57];this[_0x4de8[14]][_0x4de8[62]](_0x5828x7[_0x4de8[56]](_0x4de8[61])!= _0x4de8[57]);this[_0x4de8[14]][_0x4de8[64]](_0x5828x7[_0x4de8[56]](_0x4de8[63])!= _0x4de8[57]);this[_0x4de8[14]][_0x4de8[65]]= _0x5828x7[_0x4de8[56]](_0x4de8[66])!= _0x4de8[57];this[_0x4de8[14]][_0x4de8[40]]= _0x5828x7[_0x4de8[56]](_0x4de8[40])!= _0x4de8[57];if(!this[_0x4de8[14]][_0x4de8[40]]){this[_0x4de8[14]][_0x4de8[68]][_0x4de8[67]]= 0;this[_0x4de8[14]][_0x4de8[68]][_0x4de8[69]]= 0;this[_0x4de8[14]][_0x4de8[53]][_0x4de8[71]][_0x4de8[70]]= Number(_0x5828x7[_0x4de8[56]](_0x4de8[72])|| 0);this[_0x4de8[14]][_0x4de8[53]][_0x4de8[71]][_0x4de8[73]]= Number(_0x5828x7[_0x4de8[56]](_0x4de8[74])|| 0)};this[_0x4de8[14]][_0x4de8[75]]= _0x5828x7[_0x4de8[56]](_0x4de8[76])== _0x4de8[8];this[_0x4de8[14]][_0x4de8[77]]= this[_0x4de8[14]][_0x4de8[75]];this[_0x4de8[14]][_0x4de8[78]]= this[_0x4de8[14]][_0x4de8[77]];var _0x5828x9=_0x5828x7[_0x4de8[56]](_0x4de8[79]);if(_0x5828x9!= null){this[_0x4de8[14]][_0x4de8[79]]= _0x5828x9}else {this[_0x4de8[14]][_0x4de8[79]]= 1.5};var _0x5828xa=_0x5828x7[_0x4de8[56]](_0x4de8[80]);var _0x5828xb=_0x5828x7[_0x4de8[56]](_0x4de8[81]);if(_0x5828xa!= null&& _0x5828xb!= null){this[_0x4de8[14]][_0x4de8[82]]= new mxRectangle(0,0,parseFloat(_0x5828xa),parseFloat(_0x5828xb));this[_0x4de8[15]][_0x4de8[15]][_0x4de8[82]]= this[_0x4de8[14]][_0x4de8[82]]};var _0x5828xc=_0x5828x7[_0x4de8[56]](_0x4de8[41]);if(_0x5828xc!= null&& _0x5828xc[_0x4de8[83]]> 0){this[_0x4de8[14]][_0x4de8[41]]= _0x5828xc};_0x5828x8[_0x4de8[84]](_0x5828x7,this[_0x4de8[14]][_0x4de8[36]]());this[_0x4de8[85]]()}};Editor[_0x4de8[44]][_0x4de8[86]]= function(){var _0x5828xd= new mxCodec(mxUtils[_0x4de8[87]]());var _0x5828x7=_0x5828xd[_0x4de8[88]](this[_0x4de8[14]][_0x4de8[36]]());if(this[_0x4de8[14]][_0x4de8[53]][_0x4de8[71]][_0x4de8[70]]!= 0|| this[_0x4de8[14]][_0x4de8[53]][_0x4de8[71]][_0x4de8[73]]!= 0){_0x5828x7[_0x4de8[90]](_0x4de8[72],Math[_0x4de8[89]](this[_0x4de8[14]][_0x4de8[53]][_0x4de8[71]][_0x4de8[70]]* 100)/ 100);_0x5828x7[_0x4de8[90]](_0x4de8[74],Math[_0x4de8[89]](this[_0x4de8[14]][_0x4de8[53]][_0x4de8[71]][_0x4de8[73]]* 100)/ 100)};_0x5828x7[_0x4de8[90]](_0x4de8[55],(this[_0x4de8[14]][_0x4de8[91]]())?_0x4de8[8]:_0x4de8[57]);_0x5828x7[_0x4de8[90]](_0x4de8[60],(this[_0x4de8[14]][_0x4de8[59]][_0x4de8[58]])?_0x4de8[8]:_0x4de8[57]);_0x5828x7[_0x4de8[90]](_0x4de8[60],(this[_0x4de8[14]][_0x4de8[59]][_0x4de8[58]])?_0x4de8[8]:_0x4de8[57]);_0x5828x7[_0x4de8[90]](_0x4de8[61],(this[_0x4de8[14]][_0x4de8[93]][_0x4de8[92]]())?_0x4de8[8]:_0x4de8[57]);_0x5828x7[_0x4de8[90]](_0x4de8[63],(this[_0x4de8[14]][_0x4de8[94]][_0x4de8[92]]())?_0x4de8[8]:_0x4de8[57]);_0x5828x7[_0x4de8[90]](_0x4de8[66],(this[_0x4de8[14]][_0x4de8[65]])?_0x4de8[8]:_0x4de8[57]);_0x5828x7[_0x4de8[90]](_0x4de8[76],(this[_0x4de8[14]][_0x4de8[75]])?_0x4de8[8]:_0x4de8[57]);_0x5828x7[_0x4de8[90]](_0x4de8[79],this[_0x4de8[14]][_0x4de8[79]]);_0x5828x7[_0x4de8[90]](_0x4de8[80],this[_0x4de8[14]][_0x4de8[82]][_0x4de8[95]]);_0x5828x7[_0x4de8[90]](_0x4de8[81],this[_0x4de8[14]][_0x4de8[82]][_0x4de8[96]]);if(!this[_0x4de8[14]][_0x4de8[40]]){_0x5828x7[_0x4de8[90]](_0x4de8[40],_0x4de8[57])};if(this[_0x4de8[14]][_0x4de8[41]]!= null){_0x5828x7[_0x4de8[90]](_0x4de8[41],this[_0x4de8[14]][_0x4de8[41]])};return _0x5828x7};Editor[_0x4de8[44]][_0x4de8[85]]= function(){var _0x5828xe=this[_0x4de8[14]];var _0x5828xf=this[_0x4de8[15]];if(_0x5828xe[_0x4de8[68]]!= null&& _0x5828xf[_0x4de8[15]][_0x4de8[68]]!= null){if(_0x5828xe[_0x4de8[41]]!= null){if(_0x5828xe[_0x4de8[41]]== _0x4de8[97]){_0x5828xe[_0x4de8[68]][_0x4de8[99]][_0x4de8[98]]= _0x4de8[100]}else {if(_0x5828xe[_0x4de8[53]][_0x4de8[101]]!= null){_0x5828xe[_0x4de8[53]][_0x4de8[101]][_0x4de8[102]]= _0x5828xe[_0x4de8[41]];_0x5828xe[_0x4de8[53]][_0x4de8[101]][_0x4de8[103]]()};_0x5828xe[_0x4de8[68]][_0x4de8[99]][_0x4de8[98]]= _0x5828xe[_0x4de8[41]]}}else {_0x5828xe[_0x4de8[68]][_0x4de8[99]][_0x4de8[98]]= _0x4de8[20]};if(_0x5828xe[_0x4de8[75]]){_0x5828xe[_0x4de8[68]][_0x4de8[99]][_0x4de8[98]]= _0x4de8[104];_0x5828xe[_0x4de8[68]][_0x4de8[99]][_0x4de8[105]]= _0x4de8[106];_0x5828xe[_0x4de8[68]][_0x4de8[99]][_0x4de8[107]]= _0x4de8[108];_0x5828xe[_0x4de8[68]][_0x4de8[99]][_0x4de8[109]]= _0x4de8[110];_0x5828xe[_0x4de8[68]][_0x4de8[99]][_0x4de8[111]]= _0x4de8[110];_0x5828xe[_0x4de8[68]][_0x4de8[99]][_0x4de8[112]]= _0x4de8[113];_0x5828xe[_0x4de8[68]][_0x4de8[99]][_0x4de8[114]]= _0x4de8[113]}else {_0x5828xe[_0x4de8[68]][_0x4de8[99]][_0x4de8[115]]= _0x4de8[20]};_0x5828xf[_0x4de8[15]][_0x4de8[68]][_0x4de8[99]][_0x4de8[98]]= _0x5828xe[_0x4de8[68]][_0x4de8[99]][_0x4de8[98]];if(_0x5828xf[_0x4de8[15]][_0x4de8[75]]!= _0x5828xe[_0x4de8[75]]|| _0x5828xf[_0x4de8[15]][_0x4de8[79]]!= _0x5828xe[_0x4de8[79]]){_0x5828xf[_0x4de8[15]][_0x4de8[79]]= _0x5828xe[_0x4de8[79]];_0x5828xf[_0x4de8[15]][_0x4de8[75]]= _0x5828xe[_0x4de8[75]];_0x5828xf[_0x4de8[15]][_0x4de8[53]][_0x4de8[116]]()};if(_0x5828xe[_0x4de8[40]]&& _0x5828xe[_0x4de8[68]][_0x4de8[99]][_0x4de8[117]]== _0x4de8[118]&& !touchStyle){_0x5828xe[_0x4de8[68]][_0x4de8[99]][_0x4de8[117]]= _0x4de8[119]}else {if(!_0x5828xe[_0x4de8[40]]|| touchStyle){_0x5828xe[_0x4de8[68]][_0x4de8[99]][_0x4de8[117]]= _0x4de8[118]}};var _0x5828x10=(mxClient[_0x4de8[120]]&& document[_0x4de8[121]]>= 9)?_0x4de8[122]+ this[_0x4de8[46]]+ _0x4de8[123]:_0x4de8[97];_0x5828xe[_0x4de8[68]][_0x4de8[99]][_0x4de8[124]]= (!_0x5828xe[_0x4de8[75]]&& _0x5828xe[_0x4de8[91]]())?_0x4de8[122]+ this[_0x4de8[43]]+ _0x4de8[123]:_0x5828x10;if(_0x5828xe[_0x4de8[53]][_0x4de8[101]]!= null){_0x5828xe[_0x4de8[53]][_0x4de8[101]][_0x4de8[125]][_0x4de8[99]][_0x4de8[124]]= (this[_0x4de8[14]][_0x4de8[91]]())?_0x4de8[122]+ this[_0x4de8[43]]+ _0x4de8[123]:_0x4de8[97]}}};Editor[_0x4de8[44]][_0x4de8[12]]= function(){if(mxClient[_0x4de8[126]]){mxClient[_0x4de8[129]](_0x4de8[127],CSS_PATH+ _0x4de8[128])};mxResources[_0x4de8[130]]= false;mxResources[_0x4de8[131]](RESOURCE_BASE);mxConstants[_0x4de8[132]]= 0.3;var _0x5828x11=mxConnectionHandler[_0x4de8[44]][_0x4de8[133]];mxConnectionHandler[_0x4de8[44]][_0x4de8[133]]= function(){var _0x5828x12=_0x5828x11[_0x4de8[33]](this,arguments);_0x5828x12[_0x4de8[134]]= mxUtils[_0x4de8[34]](this,function(_0x5828x13,_0x5828x14){if(this[_0x4de8[135]]()){return true};return mxCellMarker[_0x4de8[44]][_0x4de8[134]][_0x4de8[33]](_0x5828x12,arguments)});return _0x5828x12};mxConstants[_0x4de8[136]]= _0x4de8[137];mxConstants[_0x4de8[138]]= _0x4de8[139];mxConstants[_0x4de8[140]]= _0x4de8[141];mxConstants[_0x4de8[142]]= _0x4de8[143];mxConstants[_0x4de8[144]]= _0x4de8[143];mxConstants[_0x4de8[145]]= _0x4de8[139];mxConstants[_0x4de8[146]]= _0x4de8[143];mxConstants[_0x4de8[147]]= _0x4de8[148];mxConstants[_0x4de8[149]]= _0x4de8[143];mxConstants[_0x4de8[150]]= _0x4de8[143];mxConstants[_0x4de8[151]]= _0x4de8[148];mxConstants[_0x4de8[152]]= _0x4de8[141];mxGraph[_0x4de8[44]][_0x4de8[153]]= _0x4de8[154];mxGraph[_0x4de8[44]][_0x4de8[79]]= 1;mxRubberband[_0x4de8[44]][_0x4de8[155]]= 30;mxGraphView[_0x4de8[44]][_0x4de8[156]]= function(_0x5828x15){return new mxRectangleShape(_0x5828x15,this[_0x4de8[14]][_0x4de8[41]]|| _0x4de8[157],_0x4de8[158])};mxGraphView[_0x4de8[44]][_0x4de8[159]]= function(){var _0x5828x16=this[_0x4de8[160]]();var _0x5828x17=(_0x5828x16[_0x4de8[95]]> 0)?_0x5828x16[_0x4de8[70]]/ this[_0x4de8[52]]- this[_0x4de8[71]][_0x4de8[70]]:0;var _0x5828x18=(_0x5828x16[_0x4de8[96]]> 0)?_0x5828x16[_0x4de8[73]]/ this[_0x4de8[52]]- this[_0x4de8[71]][_0x4de8[73]]:0;var _0x5828x19=_0x5828x16[_0x4de8[95]]/ this[_0x4de8[52]];var _0x5828x1a=_0x5828x16[_0x4de8[96]]/ this[_0x4de8[52]];var _0x5828x1b=this[_0x4de8[14]][_0x4de8[82]];var _0x5828x9=this[_0x4de8[14]][_0x4de8[79]];var _0x5828xa=_0x5828x1b[_0x4de8[95]]* _0x5828x9;var _0x5828xb=_0x5828x1b[_0x4de8[96]]* _0x5828x9;var _0x5828x1c=Math[_0x4de8[162]](Math[_0x4de8[161]](0,_0x5828x17)/ _0x5828xa);var _0x5828x1d=Math[_0x4de8[162]](Math[_0x4de8[161]](0,_0x5828x18)/ _0x5828xb);var _0x5828x1e=Math[_0x4de8[164]](Math[_0x4de8[163]](1,_0x5828x17+ _0x5828x19)/ _0x5828xa);var _0x5828x1f=Math[_0x4de8[164]](Math[_0x4de8[163]](1,_0x5828x18+ _0x5828x1a)/ _0x5828xb);var _0x5828x20=_0x5828x1e- _0x5828x1c;var _0x5828x21=_0x5828x1f- _0x5828x1d;var _0x5828x15= new mxRectangle(this[_0x4de8[52]]* (this[_0x4de8[71]][_0x4de8[70]]+ _0x5828x1c* _0x5828xa),this[_0x4de8[52]]* (this[_0x4de8[71]][_0x4de8[73]]+ _0x5828x1d* _0x5828xb),this[_0x4de8[52]]* _0x5828x20* _0x5828xa,this[_0x4de8[52]]* _0x5828x21* _0x5828xb);return _0x5828x15};var _0x5828x22=mxGraph[_0x4de8[44]][_0x4de8[165]];mxGraph[_0x4de8[44]][_0x4de8[165]]= function(_0x5828x23,_0x5828x24){_0x5828x22[_0x4de8[33]](this,arguments);if((this[_0x4de8[166]]!= mxConstants[_0x4de8[167]]&& this[_0x4de8[53]][_0x4de8[101]]!= null)&& (!this[_0x4de8[168]]|| !mxUtils[_0x4de8[169]](this[_0x4de8[68]]))){this[_0x4de8[53]][_0x4de8[101]][_0x4de8[125]][_0x4de8[99]][_0x4de8[170]]= _0x5828x23+ _0x4de8[171];this[_0x4de8[53]][_0x4de8[101]][_0x4de8[125]][_0x4de8[99]][_0x4de8[172]]= _0x5828x24+ _0x4de8[171]}};var _0x5828x25=this;mxGraphView[_0x4de8[44]][_0x4de8[173]]= function(){var _0x5828xc=this[_0x4de8[14]][_0x4de8[174]]();if(_0x5828xc!= null){if(this[_0x4de8[124]]== null|| this[_0x4de8[124]][_0x4de8[175]]!= _0x5828xc[_0x4de8[176]]){if(this[_0x4de8[124]]!= null){this[_0x4de8[124]][_0x4de8[177]]()};var _0x5828x15= new mxRectangle(0,0,1,1);this[_0x4de8[124]]= new mxImageShape(_0x5828x15,_0x5828xc[_0x4de8[176]]);this[_0x4de8[124]][_0x4de8[166]]= this[_0x4de8[14]][_0x4de8[166]];this[_0x4de8[124]][_0x4de8[12]](this[_0x4de8[178]]);this[_0x4de8[124]][_0x4de8[179]]()};this[_0x4de8[180]](this[_0x4de8[124]],_0x5828xc)}else {if(this[_0x4de8[124]]!= null){this[_0x4de8[124]][_0x4de8[177]]();this[_0x4de8[124]]= null}};if(this[_0x4de8[14]][_0x4de8[75]]){var _0x5828x15=this[_0x4de8[159]]();if(this[_0x4de8[101]]== null){this[_0x4de8[101]]= this[_0x4de8[156]](_0x5828x15);this[_0x4de8[101]][_0x4de8[52]]= 1;this[_0x4de8[101]][_0x4de8[181]]= true;this[_0x4de8[101]][_0x4de8[166]]= mxConstants[_0x4de8[182]];this[_0x4de8[101]][_0x4de8[12]](this[_0x4de8[14]][_0x4de8[68]]);this[_0x4de8[14]][_0x4de8[68]][_0x4de8[184]][_0x4de8[99]][_0x4de8[183]]= _0x4de8[185];this[_0x4de8[14]][_0x4de8[68]][_0x4de8[186]](this[_0x4de8[101]][_0x4de8[125]],this[_0x4de8[14]][_0x4de8[68]][_0x4de8[184]]);this[_0x4de8[101]][_0x4de8[179]]();this[_0x4de8[101]][_0x4de8[125]][_0x4de8[187]]= _0x4de8[188];this[_0x4de8[101]][_0x4de8[125]][_0x4de8[99]][_0x4de8[189]]= _0x4de8[190];mxEvent[_0x4de8[35]](this[_0x4de8[101]][_0x4de8[125]],_0x4de8[191],mxUtils[_0x4de8[34]](this,function(_0x5828x14){this[_0x4de8[14]][_0x4de8[192]](_0x5828x14)}));mxEvent[_0x4de8[198]](this[_0x4de8[101]][_0x4de8[125]],mxUtils[_0x4de8[34]](this,function(_0x5828x14){this[_0x4de8[14]][_0x4de8[193]](mxEvent.MOUSE_DOWN, new mxMouseEvent(_0x5828x14))}),mxUtils[_0x4de8[34]](this,function(_0x5828x14){if(this[_0x4de8[14]][_0x4de8[93]]!= null&& this[_0x4de8[14]][_0x4de8[93]][_0x4de8[194]]()){this[_0x4de8[14]][_0x4de8[93]][_0x4de8[195]]()};if(this[_0x4de8[14]][_0x4de8[196]]&& !mxEvent[_0x4de8[197]](_0x5828x14)){this[_0x4de8[14]][_0x4de8[193]](mxEvent.MOUSE_MOVE, new mxMouseEvent(_0x5828x14))}}),mxUtils[_0x4de8[34]](this,function(_0x5828x14){this[_0x4de8[14]][_0x4de8[193]](mxEvent.MOUSE_UP, new mxMouseEvent(_0x5828x14))}))}else {this[_0x4de8[101]][_0x4de8[52]]= 1;this[_0x4de8[101]][_0x4de8[199]]= _0x5828x15;this[_0x4de8[101]][_0x4de8[179]]()};this[_0x4de8[101]][_0x4de8[125]][_0x4de8[99]][_0x4de8[124]]= (this[_0x4de8[14]][_0x4de8[91]]())?_0x4de8[122]+ _0x5828x25[_0x4de8[43]]+ _0x4de8[123]:_0x4de8[97]}else {if(this[_0x4de8[101]]!= null){this[_0x4de8[101]][_0x4de8[177]]();this[_0x4de8[101]]= null}}};mxGraph[_0x4de8[44]][_0x4de8[200]]= function(_0x5828x26,_0x5828x27,_0x5828x28){var _0x5828x29=this[_0x4de8[53]][_0x4de8[52]];var _0x5828x2a=this[_0x4de8[53]][_0x4de8[71]];var _0x5828x1b=this[_0x4de8[82]];var _0x5828x9=_0x5828x29* this[_0x4de8[79]];var _0x5828x2b=this[_0x4de8[53]][_0x4de8[159]]();_0x5828x27= _0x5828x2b[_0x4de8[95]];_0x5828x28= _0x5828x2b[_0x4de8[96]];var _0x5828x15= new mxRectangle(_0x5828x29* _0x5828x2a[_0x4de8[70]],_0x5828x29* _0x5828x2a[_0x4de8[73]],_0x5828x1b[_0x4de8[95]]* _0x5828x9,_0x5828x1b[_0x4de8[96]]* _0x5828x9);_0x5828x26= _0x5828x26&& Math[_0x4de8[161]](_0x5828x15[_0x4de8[95]],_0x5828x15[_0x4de8[96]])> this[_0x4de8[201]];var _0x5828x2c=(_0x5828x26)?Math[_0x4de8[164]](_0x5828x27/ _0x5828x15[_0x4de8[95]])- 1:0;var _0x5828x2d=(_0x5828x26)?Math[_0x4de8[164]](_0x5828x28/ _0x5828x15[_0x4de8[96]])- 1:0;var _0x5828x2e=_0x5828x2b[_0x4de8[70]]+ _0x5828x27;var _0x5828x2f=_0x5828x2b[_0x4de8[73]]+ _0x5828x28;if(this[_0x4de8[202]]== null&& _0x5828x2c> 0){this[_0x4de8[202]]= []};if(this[_0x4de8[202]]!= null){for(var _0x5828x30=0;_0x5828x30<= _0x5828x2c;_0x5828x30++){var _0x5828x31=[ new mxPoint(_0x5828x2b[_0x4de8[70]]+ (_0x5828x30+ 1)* _0x5828x15[_0x4de8[95]],_0x5828x2b[_0x4de8[73]]), new mxPoint(_0x5828x2b[_0x4de8[70]]+ (_0x5828x30+ 1)* _0x5828x15[_0x4de8[95]],_0x5828x2f)];if(this[_0x4de8[202]][_0x5828x30]!= null){this[_0x4de8[202]][_0x5828x30][_0x4de8[52]]= 1;this[_0x4de8[202]][_0x5828x30][_0x4de8[203]]= _0x5828x31;this[_0x4de8[202]][_0x5828x30][_0x4de8[179]]()}else {var _0x5828x32= new mxPolyline(_0x5828x31,this[_0x4de8[153]],this[_0x4de8[52]]);_0x5828x32[_0x4de8[166]]= this[_0x4de8[166]];_0x5828x32[_0x4de8[204]]= this[_0x4de8[205]];_0x5828x32[_0x4de8[206]]= false;_0x5828x32[_0x4de8[52]]= _0x5828x29;_0x5828x32[_0x4de8[12]](this[_0x4de8[53]][_0x4de8[178]]);_0x5828x32[_0x4de8[179]]();this[_0x4de8[202]][_0x5828x30]= _0x5828x32}};for(var _0x5828x30=_0x5828x2c;_0x5828x30< this[_0x4de8[202]][_0x4de8[83]];_0x5828x30++){this[_0x4de8[202]][_0x5828x30][_0x4de8[177]]()};this[_0x4de8[202]][_0x4de8[207]](_0x5828x2c,this[_0x4de8[202]][_0x4de8[83]]- _0x5828x2c)};if(this[_0x4de8[208]]== null&& _0x5828x2d> 0){this[_0x4de8[208]]= []};if(this[_0x4de8[208]]!= null){for(var _0x5828x30=0;_0x5828x30<= _0x5828x2d;_0x5828x30++){var _0x5828x31=[ new mxPoint(_0x5828x2b[_0x4de8[70]],_0x5828x2b[_0x4de8[73]]+ (_0x5828x30+ 1)* _0x5828x15[_0x4de8[96]]), new mxPoint(_0x5828x2e,_0x5828x2b[_0x4de8[73]]+ (_0x5828x30+ 1)* _0x5828x15[_0x4de8[96]])];if(this[_0x4de8[208]][_0x5828x30]!= null){this[_0x4de8[208]][_0x5828x30][_0x4de8[52]]= 1;this[_0x4de8[208]][_0x5828x30][_0x4de8[203]]= _0x5828x31;this[_0x4de8[208]][_0x5828x30][_0x4de8[179]]()}else {var _0x5828x32= new mxPolyline(_0x5828x31,this[_0x4de8[153]],_0x5828x29);_0x5828x32[_0x4de8[166]]= this[_0x4de8[166]];_0x5828x32[_0x4de8[204]]= this[_0x4de8[205]];_0x5828x32[_0x4de8[206]]= false;_0x5828x32[_0x4de8[52]]= _0x5828x29;_0x5828x32[_0x4de8[12]](this[_0x4de8[53]][_0x4de8[178]]);_0x5828x32[_0x4de8[179]]();this[_0x4de8[208]][_0x5828x30]= _0x5828x32}};for(var _0x5828x30=_0x5828x2d;_0x5828x30< this[_0x4de8[208]][_0x4de8[83]];_0x5828x30++){this[_0x4de8[208]][_0x5828x30][_0x4de8[177]]()};this[_0x4de8[208]][_0x4de8[207]](_0x5828x2d,this[_0x4de8[208]][_0x4de8[83]]- _0x5828x2d)}};mxEdgeHandler[_0x4de8[44]][_0x4de8[209]]= true;mxGraphHandler[_0x4de8[44]][_0x4de8[58]]= true;var _0x5828x33=mxGraphHandler[_0x4de8[44]][_0x4de8[210]];mxGraphHandler[_0x4de8[44]][_0x4de8[210]]= function(_0x5828x34,_0x5828x35,_0x5828x14){for(var _0x5828x30=0;_0x5828x30< _0x5828x35[_0x4de8[83]];_0x5828x30++){if(this[_0x4de8[14]][_0x4de8[36]]()[_0x4de8[211]](_0x5828x35[_0x5828x30])){var _0x5828x36=this[_0x4de8[14]][_0x4de8[212]](_0x5828x35[_0x5828x30]);if(_0x5828x36!= null&& _0x5828x36[_0x4de8[213]]){return false}}};return _0x5828x33[_0x4de8[33]](this,arguments)};mxGuide[_0x4de8[44]][_0x4de8[214]]= function(_0x5828x14){return !mxEvent[_0x4de8[215]](_0x5828x14)};mxPopupMenuAddItem= mxPopupMenu[_0x4de8[44]][_0x4de8[216]];mxPopupMenu[_0x4de8[44]][_0x4de8[216]]= function(_0x5828x37,_0x5828x38,_0x5828x39,_0x5828x34,_0x5828x3a,_0x5828x3b){var _0x5828x3c=mxPopupMenuAddItem[_0x4de8[33]](this,arguments);if(_0x5828x3b!= null&& !_0x5828x3b){mxEvent[_0x4de8[35]](_0x5828x3c,_0x4de8[217],function(_0x5828x14){mxEvent[_0x4de8[218]](_0x5828x14)})};return _0x5828x3c};var _0x5828x3d=mxGraphHandler[_0x4de8[44]][_0x4de8[219]];mxGraphHandler[_0x4de8[44]][_0x4de8[219]]= function(_0x5828x3e){var _0x5828x3f=this[_0x4de8[14]][_0x4de8[36]]();var _0x5828x40=_0x5828x3f[_0x4de8[221]](this[_0x4de8[14]][_0x4de8[220]]());var _0x5828x41=_0x5828x3d[_0x4de8[33]](this,arguments);var _0x5828x34=_0x5828x3f[_0x4de8[221]](_0x5828x41);if(_0x5828x40== null|| (_0x5828x40!= _0x5828x41&& _0x5828x40!= _0x5828x34)){while(!this[_0x4de8[14]][_0x4de8[222]](_0x5828x41)&& !this[_0x4de8[14]][_0x4de8[222]](_0x5828x34) && _0x5828x3f[_0x4de8[211]](_0x5828x34) && !this[_0x4de8[14]][_0x4de8[223]](_0x5828x34)){_0x5828x41= _0x5828x34;_0x5828x34= this[_0x4de8[14]][_0x4de8[36]]()[_0x4de8[221]](_0x5828x41)}};return _0x5828x41};var _0x5828x42=mxGraphHandler[_0x4de8[44]][_0x4de8[224]];mxGraphHandler[_0x4de8[44]][_0x4de8[224]]= function(_0x5828x41){var _0x5828x3c=_0x5828x42[_0x4de8[33]](this,arguments);var _0x5828x3f=this[_0x4de8[14]][_0x4de8[36]]();var _0x5828x40=_0x5828x3f[_0x4de8[221]](this[_0x4de8[14]][_0x4de8[220]]());var _0x5828x34=_0x5828x3f[_0x4de8[221]](_0x5828x41);if(_0x5828x40== null|| (_0x5828x40!= _0x5828x41&& _0x5828x40!= _0x5828x34)){if(!this[_0x4de8[14]][_0x4de8[222]](_0x5828x41)&& _0x5828x3f[_0x4de8[211]](_0x5828x34) && !this[_0x4de8[14]][_0x4de8[223]](_0x5828x34)){_0x5828x3c= true}};return _0x5828x3c};mxGraphHandler[_0x4de8[44]][_0x4de8[225]]= function(_0x5828x3e){var _0x5828x41=_0x5828x3e[_0x4de8[226]]();if(_0x5828x41== null){_0x5828x41= this[_0x4de8[227]]};var _0x5828x3f=this[_0x4de8[14]][_0x4de8[36]]();var _0x5828x34=_0x5828x3f[_0x4de8[221]](_0x5828x41);while(this[_0x4de8[14]][_0x4de8[222]](_0x5828x41)&& _0x5828x3f[_0x4de8[211]](_0x5828x34)&& !this[_0x4de8[14]][_0x4de8[223]](_0x5828x34)){_0x5828x41= _0x5828x34;_0x5828x34= _0x5828x3f[_0x4de8[221]](_0x5828x41)};this[_0x4de8[14]][_0x4de8[229]](_0x5828x41,_0x5828x3e[_0x4de8[228]]())};mxPanningHandler[_0x4de8[44]][_0x4de8[230]]= function(_0x5828x3e){var _0x5828x41=_0x5828x3e[_0x4de8[226]]();var _0x5828x3f=this[_0x4de8[14]][_0x4de8[36]]();var _0x5828x34=_0x5828x3f[_0x4de8[221]](_0x5828x41);while(_0x5828x3f[_0x4de8[211]](_0x5828x34)&& !this[_0x4de8[14]][_0x4de8[223]](_0x5828x34)){if(this[_0x4de8[14]][_0x4de8[222]](_0x5828x34)){_0x5828x41= _0x5828x34};_0x5828x34= _0x5828x3f[_0x4de8[221]](_0x5828x34)};return _0x5828x41}};Editor[_0x4de8[44]][_0x4de8[18]]= function(){var _0x5828xe=this[_0x4de8[14]];var _0x5828x43= new mxUndoManager();var _0x5828x44=function(_0x5828x45,_0x5828x14){_0x5828x43[_0x4de8[233]](_0x5828x14[_0x4de8[232]](_0x4de8[231]))};_0x5828xe[_0x4de8[36]]()[_0x4de8[35]](mxEvent.UNDO,_0x5828x44);_0x5828xe[_0x4de8[234]]()[_0x4de8[35]](mxEvent.UNDO,_0x5828x44);var _0x5828x46=function(_0x5828x45,_0x5828x14){var _0x5828x47=_0x5828xe[_0x4de8[236]](_0x5828x14[_0x4de8[232]](_0x4de8[231])[_0x4de8[235]]);var _0x5828x35=[];for(var _0x5828x30=1;_0x5828x30< _0x5828x47[_0x4de8[83]];_0x5828x30++){if(_0x5828xe[_0x4de8[53]][_0x4de8[237]](_0x5828x47[_0x5828x30])!= null){_0x5828x35[_0x4de8[238]](_0x5828x47[_0x5828x30])}};_0x5828xe[_0x4de8[239]](_0x5828x35)};_0x5828x43[_0x4de8[35]](mxEvent.UNDO,_0x5828x46);_0x5828x43[_0x4de8[35]](mxEvent.REDO,_0x5828x46);return _0x5828x43};Editor[_0x4de8[44]][_0x4de8[13]]= function(){mxStencilRegistry[_0x4de8[241]](STENCIL_PATH+ _0x4de8[240])};(function(){mxStencilRegistry[_0x4de8[242]]= {};mxStencilRegistry[_0x4de8[243]]= [];mxStencilRegistry[_0x4de8[244]]= function(_0x5828x48){var _0x5828x3c=mxStencilRegistry[_0x4de8[245]][_0x5828x48];if(_0x5828x3c== null){var _0x5828x49=mxStencilRegistry[_0x4de8[246]](_0x5828x48);if(_0x5828x49!= null){var _0x5828x4a=mxStencilRegistry[_0x4de8[242]][_0x5828x49];if(_0x5828x4a!= null){if(mxStencilRegistry[_0x4de8[243]][_0x5828x49]== null){mxStencilRegistry[_0x4de8[243]][_0x5828x49]= 1;for(var _0x5828x30=0;_0x5828x30< _0x5828x4a[_0x4de8[83]];_0x5828x30++){var _0x5828x4b=_0x5828x4a[_0x5828x30];if(_0x5828x4b[_0x4de8[248]]()[_0x4de8[247]](_0x5828x4b[_0x4de8[83]]- 4,_0x5828x4b[_0x4de8[83]])== _0x4de8[25]){mxStencilRegistry[_0x4de8[241]](_0x5828x4b,null)}else {if(_0x5828x4b[_0x4de8[248]]()[_0x4de8[247]](_0x5828x4b[_0x4de8[83]]- 3,_0x5828x4b[_0x4de8[83]])== _0x4de8[249]){var _0x5828x4c=mxUtils[_0x4de8[250]](_0x5828x4b);if(_0x5828x4c!= null){eval[_0x4de8[11]](window,_0x5828x4c[_0x4de8[251]]())}}else {}}}}}else {mxStencilRegistry[_0x4de8[241]](STENCIL_PATH+ _0x4de8[252]+ _0x5828x49+ _0x4de8[25],null)};_0x5828x3c= mxStencilRegistry[_0x4de8[245]][_0x5828x48]}};return _0x5828x3c};mxStencilRegistry[_0x4de8[246]]= function(_0x5828x48){var _0x5828x4d=_0x5828x48[_0x4de8[254]](_0x4de8[253]);var _0x5828x4e=null;if(_0x5828x4d[_0x4de8[83]]> 0&& _0x5828x4d[0]== _0x4de8[255]){_0x5828x4e= _0x5828x4d[1];for(var _0x5828x30=2;_0x5828x30< _0x5828x4d[_0x4de8[83]]- 1;_0x5828x30++){_0x5828x4e+= _0x4de8[252]+ _0x5828x4d[_0x5828x30]}};return _0x5828x4e};mxStencilRegistry[_0x4de8[241]]= function(_0x5828x4f,_0x5828x50,_0x5828x51){_0x5828x51= (_0x5828x51!= null)?_0x5828x51:false;var _0x5828x52=mxStencilRegistry[_0x4de8[243]][_0x5828x4f];if(_0x5828x51|| _0x5828x52== null){var _0x5828x53=false;if(_0x5828x52== null){var _0x5828x4c=mxUtils[_0x4de8[250]](_0x5828x4f);_0x5828x52= _0x5828x4c[_0x4de8[256]]();mxStencilRegistry[_0x4de8[243]][_0x5828x4f]= _0x5828x52;_0x5828x53= true};mxStencilRegistry[_0x4de8[257]](_0x5828x52,_0x5828x50,_0x5828x53)}};mxStencilRegistry[_0x4de8[257]]= function(_0x5828x54,_0x5828x50,_0x5828x53){_0x5828x53= (_0x5828x53!= null)?_0x5828x53:true;var _0x5828x55=_0x5828x54[_0x4de8[258]];var _0x5828x56=_0x5828x55[_0x4de8[184]];var _0x5828x57=_0x4de8[20];var _0x5828x48=_0x5828x55[_0x4de8[56]](_0x4de8[259]);if(_0x5828x48!= null){_0x5828x57= _0x5828x48+ _0x4de8[253]};while(_0x5828x56!= null){if(_0x5828x56[_0x4de8[260]]== mxConstants[_0x4de8[261]]){_0x5828x48= _0x5828x56[_0x4de8[56]](_0x4de8[259]);if(_0x5828x48!= null){_0x5828x57= _0x5828x57[_0x4de8[248]]();var _0x5828x58=_0x5828x48[_0x4de8[263]](/ /g,_0x4de8[262]);if(_0x5828x53){mxStencilRegistry[_0x4de8[264]](_0x5828x57+ _0x5828x58[_0x4de8[248]](), new mxStencil(_0x5828x56))};if(_0x5828x50!= null){var _0x5828x19=_0x5828x56[_0x4de8[56]](_0x4de8[265]);var _0x5828x1a=_0x5828x56[_0x4de8[56]](_0x4de8[266]);_0x5828x19= (_0x5828x19== null)?80:parseInt(_0x5828x19,10);_0x5828x1a= (_0x5828x1a== null)?80:parseInt(_0x5828x1a,10);_0x5828x50(_0x5828x57,_0x5828x58,_0x5828x48,_0x5828x19,_0x5828x1a)}}};_0x5828x56= _0x5828x56[_0x4de8[267]]}}})();OpenFile= function(_0x5828x59){this[_0x4de8[268]]= null;this[_0x4de8[269]]= null;this[_0x4de8[270]]= _0x5828x59};OpenFile[_0x4de8[44]][_0x4de8[271]]= function(_0x5828x6){this[_0x4de8[269]]= _0x5828x6;this[_0x4de8[272]]()};OpenFile[_0x4de8[44]][_0x4de8[273]]= function(_0x5828x6,_0x5828x5a){this[_0x4de8[274]]= _0x5828x6;this[_0x4de8[21]]= _0x5828x5a;this[_0x4de8[272]]()};OpenFile[_0x4de8[44]][_0x4de8[275]]= function(_0x5828x5b){this[_0x4de8[276]]();mxUtils[_0x4de8[277]](_0x5828x5b)};OpenFile[_0x4de8[44]][_0x4de8[272]]= function(){if(this[_0x4de8[269]]!= null&& this[_0x4de8[274]]!= null){this[_0x4de8[269]](this[_0x4de8[274]],this[_0x4de8[21]]);this[_0x4de8[276]]()}};OpenFile[_0x4de8[44]][_0x4de8[276]]= function(){if(this[_0x4de8[270]]!= null){this[_0x4de8[270]]()}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/public/assets/plugins/square/js/EditorUi.js b/public/assets/plugins/square/js/EditorUi.js index ad09d09..66dc905 100644 --- a/public/assets/plugins/square/js/EditorUi.js +++ b/public/assets/plugins/square/js/EditorUi.js @@ -1 +1 @@ -var _0xd07e=["\x65\x64\x69\x74\x6F\x72","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x45\x64\x69\x74\x6F\x72","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64","\x67\x72\x61\x70\x68","\x6F\x76\x65\x72\x66\x6C\x6F\x77","\x73\x74\x79\x6C\x65","\x68\x69\x64\x64\x65\x6E","\x73\x72\x63","\x73\x75\x62\x6D\x65\x6E\x75\x49\x6D\x61\x67\x65","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x63\x6F\x6E\x6E\x65\x63\x74\x49\x6D\x61\x67\x65","\x61\x63\x74\x69\x6F\x6E\x73","\x6D\x65\x6E\x75\x73","\x63\x72\x65\x61\x74\x65\x44\x69\x76\x73","\x72\x65\x66\x72\x65\x73\x68","\x63\x72\x65\x61\x74\x65\x55\x69","\x65\x76\x65\x6E\x74","\x69\x73\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x41\x6C\x6C\x6F\x77\x65\x64","\x69\x73\x45\x64\x69\x74\x69\x6E\x67","\x62\x69\x6E\x64","\x62\x6F\x64\x79","\x6F\x6E\x73\x65\x6C\x65\x63\x74\x73\x74\x61\x72\x74","\x6D\x65\x6E\x75\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x6F\x6E\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E","\x74\x6F\x6F\x6C\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x64\x69\x61\x67\x72\x61\x6D\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x73\x69\x64\x65\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x66\x6F\x6F\x74\x65\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x49\x53\x5F\x49\x45","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x4D\x6F\x64\x65","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x63\x6F\x6E\x74\x65\x78\x74\x6D\x65\x6E\x75","\x61\x64\x64\x4C\x69\x73\x74\x65\x6E\x65\x72","\x6F\x6E\x63\x6F\x6E\x74\x65\x78\x74\x6D\x65\x6E\x75","\x69\x6E\x69\x74","\x74\x61\x62\x69\x6E\x64\x65\x78","\x30","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x63\x75\x72\x73\x6F\x72","\x64\x65\x66\x61\x75\x6C\x74","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x75\x72\x6C\x28","\x67\x72\x69\x64\x49\x6D\x61\x67\x65","\x29","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x2D\x31\x70\x78\x20\x2D\x31\x70\x78","\x66\x6F\x63\x75\x73","\x66\x69\x72\x65\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74","\x4D\x4F\x55\x53\x45\x5F\x44\x4F\x57\x4E","\x61\x70\x70\x6C\x79","\x6D\x75\x6C\x74\x69\x70\x6C\x69\x63\x69\x74\x69\x65\x73","\x73\x74\x61\x72\x74","\x66\x69\x6E\x61\x6C\x6C\x79","\x65\x6E\x64","\x6E","\x63\x72\x65\x61\x74\x65\x4D\x75\x6C\x74\x69\x70\x6C\x69\x63\x69\x74\x69\x65\x73","\x61\x6E\x73\x77\x65\x72","\x68\x61\x6E\x67\x75\x70","\x64\x69\x61\x6C","\x65\x78\x74\x5F\x64\x69\x61\x6C","\x71\x75\x65\x75\x65","\x76\x6F\x69\x63\x65\x6D\x61\x69\x6C","\x63\x61\x6C\x6C\x62\x61\x63\x6B","\x73\x65\x74","\x6D\x61\x74\x68","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x70\x6C\x61\x79\x62\x61\x63\x6B","\x6D\x65\x6E\x75","\x73\x61\x79\x64\x69\x67\x69\x74\x73","\x73\x61\x79\x6E\x75\x6D\x62\x65\x72","\x73\x61\x79\x70\x68\x6F\x6E\x65\x74\x69\x63","\x74\x74\x73","\x69\x73\x70\x65\x65\x63\x68\x74\x74\x73","\x61\x77\x73\x70\x6F\x6C\x6C\x79","\x67\x65\x74\x64\x69\x67\x69\x74\x73","\x67\x65\x74\x73\x65\x63\x72\x65\x74\x64\x69\x67\x69\x74\x73","\x72\x65\x63\x6F\x72\x64","\x64\x61\x74\x61\x62\x61\x73\x65","\x69\x73\x70\x65\x65\x63\x68\x61\x73\x72","\x73\x65\x6E\x64\x53\x4D\x53","\x73\x65\x6E\x64\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x73\x65\x6E\x64\x4D\x61\x69\x6C","\x73\x65\x6E\x64\x46\x61\x78","\x67\x6F\x74\x6F\x63","\x67\x6F\x74\x6F\x69\x66","\x67\x6F\x74\x6F\x69\x66\x74\x69\x6D\x65","\x67\x6F\x74\x6F\x69\x66\x6D\x75\x6C\x74\x69\x74\x69\x6D\x65","\x76\x73\x77\x69\x74\x63\x68","\x71\x75\x65\x75\x65\x6C\x6F\x67","\x67\x6F\x61\x6C","\x6E\x6F\x6F\x70","\x73\x79\x73\x74\x65\x6D","\x61\x67\x69","\x73\x75\x62\x70\x72\x6F\x6A\x65\x63\x74","\x63\x75\x73\x74\x6F\x6D\x5F\x61\x70\x70","\x64\x62\x6C\x43\x6C\x69\x63\x6B","\x63\x65\x6C\x6C","\x66\x69\x72\x65\x45\x76\x65\x6E\x74","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x43\x6F\x6E\x73\x75\x6D\x65\x64","\x69\x73\x45\x64\x67\x65","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x74\x61\x67\x4E\x61\x6D\x65","\x76\x61\x6C\x75\x65","\x73\x6F\x75\x72\x63\x65","\x69\x6E\x64\x65\x78\x4F\x66","\x73\x74\x61\x72\x74\x45\x64\x69\x74\x69\x6E\x67\x41\x74\x43\x65\x6C\x6C","\x69\x73\x56\x65\x72\x74\x65\x78","\x73\x68\x6F\x77\x44\x69\x61\x6C\x6F\x67","\x63\x6F\x6E\x73\x75\x6D\x65","\x61\x75\x74\x6F\x45\x78\x70\x61\x6E\x64","\x70\x61\x6E\x6E\x69\x6E\x67\x48\x61\x6E\x64\x6C\x65\x72","\x66\x61\x63\x74\x6F\x72\x79\x4D\x65\x74\x68\x6F\x64","\x63\x72\x65\x61\x74\x65\x50\x6F\x70\x75\x70\x4D\x65\x6E\x75","\x6F\x75\x74\x6C\x69\x6E\x65\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x6F\x75\x74\x6C\x69\x6E\x65","\x68\x69\x64\x65\x4D\x65\x6E\x75","\x61\x64\x64\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x49\x53\x5F\x54\x4F\x55\x43\x48","\x67\x65\x73\x74\x75\x72\x65\x63\x68\x61\x6E\x67\x65","\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D","\x73\x63\x61\x6C\x65\x28","\x73\x63\x61\x6C\x65","\x67\x65\x74\x44\x72\x61\x77\x50\x61\x6E\x65","\x76\x69\x65\x77","\x76\x69\x73\x69\x62\x69\x6C\x69\x74\x79","\x67\x65\x74\x4F\x76\x65\x72\x6C\x61\x79\x50\x61\x6E\x65","\x67\x65\x73\x74\x75\x72\x65\x65\x6E\x64","\x72\x65\x6D\x6F\x76\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x7A\x6F\x6F\x6D\x54\x6F\x43\x65\x6E\x74\x65\x72","\x7A\x6F\x6F\x6D","\x76\x69\x73\x69\x62\x6C\x65","\x63\x72\x65\x61\x74\x65\x4B\x65\x79\x48\x61\x6E\x64\x6C\x65\x72","\x67\x65\x74\x4B\x65\x79\x48\x61\x6E\x64\x6C\x65\x72","\x72\x65\x73\x69\x7A\x65","\x73\x69\x7A\x65\x44\x69\x64\x43\x68\x61\x6E\x67\x65","\x75\x70\x64\x61\x74\x65","\x6F\x70\x65\x6E","\x73\x70\x6C\x69\x74\x53\x69\x7A\x65","\x6D\x65\x6E\x75\x62\x61\x72\x48\x65\x69\x67\x68\x74","\x74\x6F\x6F\x6C\x62\x61\x72\x48\x65\x69\x67\x68\x74","\x66\x6F\x6F\x74\x65\x72\x48\x65\x69\x67\x68\x74","\x68\x73\x70\x6C\x69\x74\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x76\x73\x70\x6C\x69\x74\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x61\x64\x64\x55\x6E\x64\x6F\x4C\x69\x73\x74\x65\x6E\x65\x72","\x61\x64\x64\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x4C\x69\x73\x74\x65\x6E\x65\x72","\x70\x61\x73\x74\x65","\x67\x65\x74","\x69\x73\x45\x6D\x70\x74\x79","\x73\x65\x74\x45\x6E\x61\x62\x6C\x65\x64","\x63\x75\x74","\x63\x6F\x70\x79","\x6F\x70\x65\x6E\x65\x72","\x6F\x70\x65\x6E\x46\x69\x6C\x65","\x70\x61\x72\x73\x65\x58\x6D\x6C","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x73\x65\x74\x47\x72\x61\x70\x68\x58\x6D\x6C","\x6D\x6F\x64\x69\x66\x69\x65\x64","\x63\x6C\x65\x61\x72","\x75\x6E\x64\x6F\x4D\x61\x6E\x61\x67\x65\x72","\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x69\x6E\x76\x61\x6C\x69\x64\x4F\x72\x4D\x69\x73\x73\x69\x6E\x67\x46\x69\x6C\x65","\x3A\x20","\x6D\x65\x73\x73\x61\x67\x65","\x61\x6C\x65\x72\x74","\x73\x65\x74\x43\x6F\x6E\x73\x75\x6D\x65\x72","\x6F\x70\x65\x6E\x53\x74\x72\x69\x6E\x67","\x64\x61\x74\x61","\x6E\x65\x77","\x67\x65\x74\x47\x72\x61\x70\x68\x58\x6D\x6C","\x67\x65\x74\x50\x72\x65\x74\x74\x79\x58\x6D\x6C","\x67\x65\x74\x49\x74\x65\x6D","\x72\x65\x70\x6C\x61\x63\x65","\x63\x6F\x6E\x66\x69\x72\x6D","\x73\x65\x74\x49\x74\x65\x6D","\x73\x61\x76\x65\x64","\x20","\x73\x65\x74\x53\x74\x61\x74\x75\x73","\x6C\x65\x6E\x67\x74\x68","\x6C\x6F\x67","\x50\x4F\x53\x54","\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x78\x2D\x77\x77\x77\x2D\x66\x6F\x72\x6D\x2D\x75\x72\x6C\x65\x6E\x63\x6F\x64\x65\x64","\x73\x65\x74\x52\x65\x71\x75\x65\x73\x74\x48\x65\x61\x64\x65\x72","\x41\x75\x74\x68\x6F\x72\x69\x7A\x61\x74\x69\x6F\x6E","\x42\x65\x61\x72\x65\x72\x20","\x74\x6F\x6B\x65\x6E","\x6F\x6E\x6C\x6F\x61\x64","\x72\x65\x61\x64\x79\x53\x74\x61\x74\x65","\x73\x74\x61\x74\x75\x73","\x50\x72\x6F\x6A\x65\x63\x74\x20","\x6E\x61\x6D\x65","\x72\x65\x73\x70\x6F\x6E\x73\x65","\x70\x61\x72\x73\x65","\x20\x69\x73\x20\x6F\x70\x65\x6E\x69\x6E\x67\x20\x69\x6E\x20\x6E\x65\x77\x20\x77\x69\x6E\x64\x6F\x77\x21","\x73\x71\x75\x61\x72\x65\x2F\x70\x72\x6F\x6A\x65\x63\x74\x73\x2F\x76\x69\x65\x77\x2F","\x69\x64","\x5F\x62\x6C\x61\x6E\x6B","\x45\x72\x72\x6F\x72\x20\x63\x72\x65\x61\x74\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74\x3A\x20","\x65\x72\x72\x6F\x72\x73","\x45\x72\x72\x6F\x72\x20\x63\x72\x65\x61\x74\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74","\x20\x28","\x73\x74\x61\x74\x75\x73\x54\x65\x78\x74","\x6F\x6E\x65\x72\x72\x6F\x72","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x3D\x70\x72\x6F\x6A\x65\x63\x74\x5F\x6E\x65\x77\x26\x6E\x61\x6D\x65\x3D","\x73\x65\x6E\x64","\x64\x72\x61\x77\x69\x6E\x67\x54\x6F\x6F\x4C\x61\x72\x67\x65","\x70\x6F\x70\x75\x70","\x73\x61\x76\x65","\x43\x75\x72\x72\x65\x6E\x74\x20\x70\x72\x6F\x6A\x65\x63\x74\x20\x73\x69\x7A\x65\x3A","\x4D\x61\x78\x20\x61\x6C\x6C\x6F\x77\x65\x64\x20\x70\x72\x6F\x6A\x65\x63\x74\x20\x73\x69\x7A\x65\x3A","\x50\x55\x54","\x55\x70\x64\x61\x74\x65\x64\x20\x61\x74\x20","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74","\x75\x70\x64\x61\x74\x65\x64\x41\x74","\x45\x72\x72\x6F\x72\x20\x73\x61\x76\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74\x3A\x20","\x45\x72\x72\x6F\x72\x20\x73\x61\x76\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74","\x70\x72\x65\x70\x72\x6F\x64\x75\x63\x74\x69\x6F\x6E\x3D","\x45\x72\x72\x6F\x72\x20\x73\x61\x76\x69\x6E\x67\x20\x66\x69\x6C\x65","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x45\x72\x72\x6F\x72\x20\x75\x70\x64\x61\x74\x69\x6E\x67\x20\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x3A\x20","\x45\x72\x72\x6F\x72\x20\x75\x70\x64\x61\x74\x69\x6E\x67\x20\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x3D","\x73\x61\x76\x65\x41\x73","\x45\x72\x72\x6F\x72\x20\x63\x6C\x6F\x6E\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74\x3A\x20","\x45\x72\x72\x6F\x72\x20\x63\x6C\x6F\x6E\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x3D\x70\x72\x6F\x6A\x65\x63\x74\x5F\x63\x6C\x6F\x6E\x65\x64\x26\x6E\x61\x6D\x65\x3D","\x26\x70\x72\x65\x70\x72\x6F\x64\x75\x63\x74\x69\x6F\x6E\x3D","\x26\x70\x72\x6F\x64\x75\x63\x74\x69\x6F\x6E\x3D","\x76\x61\x6C\x69\x64\x61\x74\x65","\x67\x65\x74\x52\x6F\x6F\x74","\x6D\x6F\x64\x65\x6C","\x67\x65\x74\x43\x68\x69\x6C\x64\x43\x6F\x75\x6E\x74","\x67\x65\x74\x43\x68\x69\x6C\x64\x41\x74","\x69\x73\x56\x61\x6C\x69\x64\x52\x6F\x6F\x74","\x3C\x62\x72\x3E","\x73\x65\x74\x43\x65\x6C\x6C\x57\x61\x72\x6E\x69\x6E\x67","","\x76\x61\x6C\x69\x64\x61\x74\x65\x42\x6C\x6F\x63\x6B","\x4F\x6E\x6C\x79\x20\x6F\x6E\x65\x20\x53\x74\x61\x72\x74\x20\x62\x6C\x6F\x63\x6B\x20\x69\x73\x20\x61\x6C\x6C\x6F\x77\x65\x64","\x0A","\x4F\x6E\x6C\x79\x20\x6F\x6E\x65\x20\x46\x69\x6E\x61\x6C\x6C\x79\x20\x62\x6C\x6F\x63\x6B\x20\x69\x73\x20\x61\x6C\x6C\x6F\x77\x65\x64","\x66\x69\x6C\x65\x5F\x69\x64","\x67\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x6E\x6F\x41\x75\x64\x69\x6F\x53\x65\x6C\x65\x63\x74\x65\x64","\x74\x69\x6D\x65\x6F\x75\x74","\x69\x6E\x76\x61\x6C\x69\x64\x54\x69\x6D\x65\x6F\x75\x74","\x64\x69\x67\x69\x74","\x77\x72\x6F\x6E\x67\x4D\x61\x78\x44\x69\x67\x69\x74","\x72\x65\x74\x72\x79","\x69\x6E\x76\x61\x6C\x69\x64\x52\x65\x74\x72\x79","\x76\x61\x72\x69\x61\x62\x6C\x65\x5F\x69\x64","\x6E\x6F\x56\x61\x72\x69\x61\x62\x6C\x65\x53\x65\x6C\x65\x63\x74\x65\x64","\x6D\x69\x6E\x64\x69\x67\x69\x74","\x77\x72\x6F\x6E\x67\x4D\x69\x6E\x44\x69\x67\x69\x74","\x6D\x61\x78\x64\x69\x67\x69\x74","\x68\x69\x64\x64\x65\x6E\x64\x69\x67\x69\x74\x73\x6E\x75\x6D","\x77\x72\x6F\x6E\x67\x48\x69\x64\x64\x65\x6E\x44\x69\x67\x69\x74\x73\x6E\x75\x6D","\x6F\x64\x62\x63\x5F\x69\x64","\x6E\x6F\x44\x61\x74\x61\x62\x61\x73\x65\x53\x65\x6C\x65\x63\x74\x65\x64","\x71\x75\x65\x72\x79","\x6D\x69\x73\x73\x69\x6E\x67\x51\x75\x65\x72\x79","\x74\x72\x75\x6E\x6B\x5F\x6E\x61\x6D\x65","\x2D\x31","\x6E\x6F\x54\x72\x75\x6E\x6B\x53\x65\x6C\x65\x63\x74\x65\x64","\x63\x6F\x6E\x74\x65\x78\x74","\x6E\x6F\x43\x6F\x6E\x74\x65\x78\x74\x53\x65\x6C\x65\x63\x74\x65\x64","\x65\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x6E\x6F\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E\x53\x65\x6C\x65\x63\x74\x65\x64","\x70\x72\x69\x6F\x72\x69\x74\x79","\x69\x6E\x76\x61\x6C\x69\x64\x50\x72\x69\x6F\x72\x69\x74\x79","\x63\x6F\x6D\x6D\x61\x6E\x64","\x6E\x6F\x43\x6F\x6D\x6D\x61\x6E\x64\x53\x65\x6C\x65\x63\x74\x65\x64","\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E","\x6E\x6F\x43\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x53\x65\x6C\x65\x63\x74\x65\x64","\x64\x69\x67\x69\x74\x73","\x6E\x6F\x44\x69\x67\x69\x74\x73\x53\x65\x6C\x65\x63\x74\x65\x64","\x6E\x75\x6D\x62\x65\x72","\x6E\x6F\x4E\x75\x6D\x62\x65\x72\x53\x65\x6C\x65\x63\x74\x65\x64","\x74\x65\x78\x74","\x6E\x6F\x54\x65\x78\x74\x53\x65\x6C\x65\x63\x74\x65\x64","\x66\x69\x6C\x65","\x6E\x6F\x46\x69\x6C\x65\x53\x65\x6C\x65\x63\x74\x65\x64","\x67\x6F\x61\x6C\x6E\x61\x6D\x65","\x6E\x6F\x47\x6F\x61\x6C\x53\x65\x6C\x65\x63\x74\x65\x64","\x70\x68\x6F\x6E\x65","\x6E\x6F\x49\x64\x65\x6E\x74\x69\x66\x69\x65\x72\x53\x65\x6C\x65\x63\x74\x65\x64","\x73\x69\x70\x5F\x69\x64","\x71\x75\x65\x75\x65\x5F\x69\x64","\x6E\x6F\x51\x75\x65\x75\x65\x53\x65\x6C\x65\x63\x74\x65\x64","\x6C\x69\x73\x74\x5F\x69\x64","\x6E\x6F\x4C\x69\x73\x74\x53\x65\x6C\x65\x63\x74\x65\x64","\x6E\x6F\x46\x69\x72\x73\x74\x4E\x61\x6D\x65\x53\x65\x6C\x65\x63\x74\x65\x64","\x6E\x6F\x50\x68\x6F\x6E\x65\x53\x65\x6C\x65\x63\x74\x65\x64","\x64\x65\x6C\x61\x79","\x69\x6E\x76\x61\x6C\x69\x64\x44\x65\x6C\x61\x79","\x69\x6E\x74\x65\x72\x76\x61\x6C\x5F\x69\x64","\x6E\x6F\x49\x6E\x74\x65\x72\x76\x61\x6C\x53\x65\x6C\x65\x63\x74\x65\x64","\x6D\x61\x69\x6C\x62\x6F\x78","\x6E\x6F\x42\x6F\x78\x4E\x75\x6D\x62\x65\x72\x53\x65\x6C\x65\x63\x74\x65\x64","\x70\x72\x6F\x6A\x65\x63\x74\x5F\x69\x64","\x6E\x6F\x50\x72\x6F\x6A\x65\x63\x74\x53\x65\x6C\x65\x63\x74\x65\x64","\x61\x63\x63\x6F\x75\x6E\x74\x5F\x69\x64","\x6E\x6F\x41\x63\x63\x6F\x75\x6E\x74\x53\x65\x6C\x65\x63\x74\x65\x64","\x74\x6F","\x6E\x6F\x52\x65\x63\x69\x70\x69\x65\x6E\x74\x53\x65\x6C\x65\x63\x74\x65\x64","\x73\x6D\x73\x5F\x74\x65\x78\x74","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x74\x65\x78\x74","\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x5F\x70\x61\x74\x68","\x6E\x6F\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x53\x65\x6C\x65\x63\x74\x65\x64","\x61\x77\x73\x5F\x61\x63\x63\x65\x73\x73\x5F\x6B\x65\x79\x5F\x69\x64","\x6E\x6F\x41\x63\x63\x65\x73\x73\x4B\x65\x79\x53\x65\x6C\x65\x63\x74\x65\x64","\x61\x77\x73\x5F\x73\x65\x63\x72\x65\x74\x5F\x61\x63\x63\x65\x73\x73\x5F\x6B\x65\x79","\x6E\x6F\x53\x65\x63\x72\x65\x74\x41\x63\x63\x65\x73\x73\x4B\x65\x79\x53\x65\x6C\x65\x63\x74\x65\x64","\x6B\x65\x79","\x6E\x6F\x4B\x65\x79\x53\x65\x6C\x65\x63\x74\x65\x64","\x73\x70\x65\x65\x64","\x69\x6E\x76\x61\x6C\x69\x64\x53\x70\x65\x65\x64","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x6E\x6F\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x53\x65\x6C\x65\x63\x74\x65\x64","\x6E\x6F\x64\x65\x4E\x61\x6D\x65","\x67\x65\x74\x49\x64","\x67\x65\x74\x43\x65\x6C\x6C","\x67\x65\x74\x56\x61\x6C\x75\x65","\x74\x65\x73\x74","\x6E\x75\x6D\x62\x65\x72\x4F\x72\x49\x6E\x76\x61\x6C\x69\x64\x4F\x72\x54\x69\x6D\x65\x6F\x75\x74","\x2C","\x73\x70\x6C\x69\x74","\x6E\x75\x6D\x62\x65\x72\x4F\x72\x41\x6C\x6C","\x66\x6F\x72\x45\x61\x63\x68","\x6E\x75\x6D\x62\x65\x72\x4F\x72\x49\x6E\x76\x61\x6C\x69\x64\x4F\x72\x44\x65\x66\x61\x75\x6C\x74","\x74\x72\x75\x65\x4F\x72\x46\x61\x6C\x73\x65","\x69\x73\x43\x65\x6C\x6C\x43\x6F\x6C\x6C\x61\x70\x73\x65\x64","\x63\x6F\x6E\x74\x61\x69\x6E\x73\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x45\x72\x72\x6F\x72\x73\x52\x65\x73\x6F\x75\x72\x63\x65","\x67\x65\x74\x54\x65\x72\x6D\x69\x6E\x61\x6C","\x67\x65\x74\x45\x64\x67\x65\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x45\x72\x72\x6F\x72","\x67\x65\x74\x43\x65\x6C\x6C\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x45\x72\x72\x6F\x72","\x76\x61\x6C\x69\x64\x61\x74\x65\x43\x65\x6C\x6C","\x67\x65\x74\x50\x61\x72\x65\x6E\x74","\x67\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x50\x61\x72\x65\x6E\x74","\x63\x68\x69\x6C\x64\x72\x65\x6E","\x70\x75\x62\x6C\x69\x73\x68","\x50\x75\x62\x6C\x69\x73\x68\x65\x64\x20\x61\x74\x20","\x45\x72\x72\x6F\x72\x20\x70\x75\x62\x6C\x69\x73\x68\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74\x3A\x20","\x45\x72\x72\x6F\x72\x20\x70\x75\x62\x6C\x69\x73\x68\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74","\x45\x72\x72\x6F\x72\x20\x70\x75\x62\x6C\x69\x73\x68\x69\x6E\x67\x20\x66\x69\x6C\x65","\x76\x61\x72\x69\x61\x62\x6C\x65","\x56\x61\x72\x69\x61\x62\x6C\x65\x20\x63\x72\x65\x61\x74\x65\x64\x20\x61\x74\x20","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x45\x72\x72\x6F\x72\x20\x63\x72\x65\x61\x74\x69\x6E\x67\x20\x76\x61\x72\x69\x61\x62\x6C\x65\x3A\x20","\x45\x72\x72\x6F\x72\x20\x63\x72\x65\x61\x74\x69\x6E\x67\x20\x76\x61\x72\x69\x61\x62\x6C\x65","\x6E\x61\x6D\x65\x3D","\x26\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x3D","\x67\x65\x74\x55\x72\x6C","\x70\x61\x74\x68\x6E\x61\x6D\x65","\x6C\x6F\x63\x61\x74\x69\x6F\x6E","\x3F","\x26","\x3D","\x75\x6E\x64\x6F","\x72\x65\x64\x6F","\x63\x61\x6E\x55\x6E\x64\x6F","\x63\x61\x6E\x52\x65\x64\x6F","\x69\x73\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x45\x6D\x70\x74\x79","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x64\x65\x6C\x65\x74\x65","\x64\x75\x70\x6C\x69\x63\x61\x74\x65","\x62\x6F\x6C\x64","\x69\x74\x61\x6C\x69\x63","\x75\x6E\x64\x65\x72\x6C\x69\x6E\x65","\x74\x6F\x46\x72\x6F\x6E\x74","\x74\x6F\x42\x61\x63\x6B","\x64\x61\x73\x68\x65\x64","\x72\x6F\x75\x6E\x64\x65\x64","\x73\x68\x61\x64\x6F\x77","\x74\x69\x6C\x74","\x61\x75\x74\x6F\x73\x69\x7A\x65","\x63\x75\x72\x76\x65\x64","\x72\x6F\x74\x61\x74\x69\x6F\x6E","\x77\x6F\x72\x64\x57\x72\x61\x70","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x6F\x75\x6E\x74","\x67\x72\x6F\x75\x70","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x75\x6E\x67\x72\x6F\x75\x70","\x72\x65\x6D\x6F\x76\x65\x46\x72\x6F\x6D\x47\x72\x6F\x75\x70","\x66\x6F\x6E\x74\x46\x61\x6D\x69\x6C\x79","\x66\x6F\x6E\x74\x53\x69\x7A\x65","\x61\x6C\x69\x67\x6E\x6D\x65\x6E\x74","\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x61\x72\x72\x61\x6E\x67\x65","\x6C\x69\x6E\x65\x77\x69\x64\x74\x68","\x73\x70\x61\x63\x69\x6E\x67","\x6C\x69\x6E\x65","\x6C\x69\x6E\x65\x65\x6E\x64","\x6C\x69\x6E\x65\x73\x74\x61\x72\x74","\x73\x65\x74\x41\x73\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65","\x61\x6C\x69\x67\x6E","\x67\x65\x74\x53\x74\x61\x74\x65","\x69\x73\x4C\x6F\x6F\x70","\x64\x69\x72\x65\x63\x74\x69\x6F\x6E","\x66\x6F\x6C\x64\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x63\x75\x72\x72\x65\x6E\x74\x52\x6F\x6F\x74","\x6E\x61\x76\x69\x67\x61\x74\x69\x6F\x6E","\x68\x6F\x6D\x65","\x65\x78\x69\x74\x47\x72\x6F\x75\x70","\x65\x6E\x74\x65\x72\x47\x72\x6F\x75\x70","\x65\x78\x70\x61\x6E\x64","\x63\x6F\x6C\x6C\x61\x70\x73\x65","\x65\x64\x69\x74\x4C\x69\x6E\x6B","\x67\x65\x74\x4C\x69\x6E\x6B\x46\x6F\x72\x43\x65\x6C\x6C","\x6F\x70\x65\x6E\x4C\x69\x6E\x6B","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x4D\x6F\x64\x65\x6C","\x63\x6C\x69\x65\x6E\x74\x57\x69\x64\x74\x68","\x63\x6C\x69\x65\x6E\x74\x48\x65\x69\x67\x68\x74","\x6D\x69\x6E","\x6D\x61\x78","\x68\x65\x69\x67\x68\x74","\x70\x78","\x74\x6F\x70","\x49\x53\x5F\x51\x55\x49\x52\x4B\x53","\x77\x69\x64\x74\x68","\x62\x6F\x74\x74\x6F\x6D","\x6C\x65\x66\x74","\x64\x69\x73\x70\x6C\x61\x79","\x6E\x6F\x6E\x65","\x68\x73\x70\x6C\x69\x74","\x76\x73\x70\x6C\x69\x74","\x67\x65\x4D\x65\x6E\x75\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x63\x72\x65\x61\x74\x65\x44\x69\x76","\x67\x65\x54\x6F\x6F\x6C\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x53\x69\x64\x65\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x4F\x75\x74\x6C\x69\x6E\x65\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x44\x69\x61\x67\x72\x61\x6D\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x46\x6F\x6F\x74\x65\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x48\x73\x70\x6C\x69\x74","\x67\x65\x56\x73\x70\x6C\x69\x74","\x30\x70\x78","\x72\x69\x67\x68\x74","\x6D\x65\x6E\x75\x62\x61\x72","\x67\x65\x4D\x65\x6E\x75\x62\x61\x72","\x63\x72\x65\x61\x74\x65\x4D\x65\x6E\x75\x62\x61\x72","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x74\x6F\x6F\x6C\x62\x61\x72","\x67\x65\x54\x6F\x6F\x6C\x62\x61\x72","\x63\x72\x65\x61\x74\x65\x54\x6F\x6F\x6C\x62\x61\x72","\x73\x69\x64\x65\x62\x61\x72","\x63\x72\x65\x61\x74\x65\x53\x69\x64\x65\x62\x61\x72","\x63\x72\x65\x61\x74\x65\x46\x6F\x6F\x74\x65\x72","\x73\x74\x61\x74\x75\x73\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x63\x72\x65\x61\x74\x65\x53\x74\x61\x74\x75\x73\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x73\x74\x61\x74\x75\x73\x43\x68\x61\x6E\x67\x65\x64","\x67\x65\x74\x53\x74\x61\x74\x75\x73","\x73\x65\x74\x53\x74\x61\x74\x75\x73\x54\x65\x78\x74","\x61\x64\x64\x53\x70\x6C\x69\x74\x48\x61\x6E\x64\x6C\x65\x72","\x61","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x67\x65\x49\x74\x65\x6D\x20\x67\x65\x53\x74\x61\x74\x75\x73","\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C","\x67\x65\x46\x6F\x6F\x74\x65\x72","\x64\x69\x76","\x63\x72\x65\x61\x74\x65\x48\x65\x61\x64\x65\x72","\x63\x72\x65\x61\x74\x65\x46\x6F\x72\x6D","\x66\x6F\x72\x6D","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x58","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x59","\x78","\x79","\x6D\x6F\x75\x73\x65\x6D\x6F\x76\x65","\x74\x6F\x75\x63\x68\x6D\x6F\x76\x65","\x6D\x6F\x75\x73\x65\x75\x70","\x74\x6F\x75\x63\x68\x65\x6E\x64","\x68\x69\x64\x65\x44\x69\x61\x6C\x6F\x67","\x64\x69\x61\x6C\x6F\x67","\x49\x53\x5F\x56\x4D\x4C","\x63\x6C\x6F\x73\x65","\x73\x61\x76\x65\x46\x69\x6C\x65","\x67\x65\x74\x4F\x72\x43\x72\x65\x61\x74\x65\x46\x69\x6C\x65\x6E\x61\x6D\x65","\x70\x75\x62\x6C\x69\x73\x68\x46\x69\x6C\x65","\x65\x78\x65\x63\x75\x74\x65\x4C\x61\x79\x6F\x75\x74","\x61\x6E\x69\x6D\x61\x74\x65","\x62\x65\x67\x69\x6E\x55\x70\x64\x61\x74\x65","\x65\x78\x65\x63\x75\x74\x65","\x43\x61\x6D\x69\x6E\x6F","\x75\x73\x65\x72\x41\x67\x65\x6E\x74","\x65\x6E\x64\x55\x70\x64\x61\x74\x65","\x73\x74\x61\x72\x74\x41\x6E\x69\x6D\x61\x74\x69\x6F\x6E","\x69\x73\x43\x6F\x6E\x74\x72\x6F\x6C\x44\x6F\x77\x6E","\x49\x53\x5F\x4D\x41\x43","\x6D\x65\x74\x61\x4B\x65\x79","\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73","\x73\x63\x72\x6F\x6C\x6C\x43\x65\x6C\x6C\x54\x6F\x56\x69\x73\x69\x62\x6C\x65","\x65\x6E\x61\x62\x6C\x65\x64","\x66\x75\x6E\x63\x74","\x62\x69\x6E\x64\x43\x6F\x6E\x74\x72\x6F\x6C\x53\x68\x69\x66\x74\x4B\x65\x79","\x62\x69\x6E\x64\x43\x6F\x6E\x74\x72\x6F\x6C\x4B\x65\x79","\x62\x69\x6E\x64\x53\x68\x69\x66\x74\x4B\x65\x79","\x62\x69\x6E\x64\x4B\x65\x79","\x65\x73\x63\x61\x70\x65","\x65\x6E\x74\x65\x72","\x66\x6F\x6C\x64\x43\x65\x6C\x6C\x73","\x7A\x6F\x6F\x6D\x49\x6E","\x7A\x6F\x6F\x6D\x4F\x75\x74","\x73\x65\x6C\x65\x63\x74\x41\x6C\x6C","\x73\x65\x6C\x65\x63\x74\x56\x65\x72\x74\x69\x63\x65\x73","\x73\x65\x6C\x65\x63\x74\x45\x64\x67\x65\x73","\x65\x78\x70\x6F\x72\x74","\x63\x6F\x6E\x6E\x65\x63\x74","\x67\x72\x69\x64","\x61\x62\x6F\x75\x74","\x6D\x75\x73\x74\x68\x61\x76\x65","\x6F\x75\x74\x67\x6F\x69\x6E\x67\x65\x64\x67\x65","\x70\x75\x73\x68","\x69\x6E\x63\x6F\x6D\x69\x6E\x67\x65\x64\x67\x65"];EditorUi= function(_0x6abcx1,_0x6abcx2){this[_0xd07e[0]]= _0x6abcx1|| new Editor();this[_0xd07e[1]]= _0x6abcx2|| document[_0xd07e[3]](_0xd07e[2]);var _0x6abcx3=_0x6abcx1[_0xd07e[4]];var _0x6abcx4=this;this[_0xd07e[1]][_0xd07e[6]][_0xd07e[5]]= _0xd07e[7]; new Image()[_0xd07e[8]]= mxPopupMenu[_0xd07e[10]][_0xd07e[9]];if(mxConnectionHandler[_0xd07e[10]][_0xd07e[11]]!= null){ new Image()[_0xd07e[8]]= mxConnectionHandler[_0xd07e[10]][_0xd07e[11]][_0xd07e[8]]};this[_0xd07e[12]]= new Actions(this);this[_0xd07e[13]]= new Menus(this);this[_0xd07e[14]]();this[_0xd07e[15]]();this[_0xd07e[16]]();var _0x6abcx5=mxUtils[_0xd07e[20]](this,function(_0x6abcx6){if(_0x6abcx6== null){_0x6abcx6= window[_0xd07e[17]]};if(this[_0xd07e[18]](_0x6abcx6)){return true};return _0x6abcx3[_0xd07e[19]]()});if(this[_0xd07e[1]]== document[_0xd07e[21]]){this[_0xd07e[23]][_0xd07e[22]]= _0x6abcx5;this[_0xd07e[23]][_0xd07e[24]]= _0x6abcx5;this[_0xd07e[25]][_0xd07e[22]]= _0x6abcx5;this[_0xd07e[25]][_0xd07e[24]]= _0x6abcx5;this[_0xd07e[26]][_0xd07e[22]]= _0x6abcx5;this[_0xd07e[26]][_0xd07e[24]]= _0x6abcx5;this[_0xd07e[27]][_0xd07e[22]]= _0x6abcx5;this[_0xd07e[27]][_0xd07e[24]]= _0x6abcx5;this[_0xd07e[28]][_0xd07e[22]]= _0x6abcx5;this[_0xd07e[28]][_0xd07e[24]]= _0x6abcx5};if(mxClient[_0xd07e[29]]&& ( typeof (document[_0xd07e[30]])=== _0xd07e[31]|| document[_0xd07e[30]]< 9)){mxEvent[_0xd07e[33]](this[_0xd07e[26]],_0xd07e[32],_0x6abcx5);mxEvent[_0xd07e[33]](this[_0xd07e[27]],_0xd07e[32],_0x6abcx5)}else {this[_0xd07e[26]][_0xd07e[34]]= _0x6abcx5;this[_0xd07e[27]][_0xd07e[34]]= _0x6abcx5};_0x6abcx3[_0xd07e[35]](this[_0xd07e[26]]);_0x6abcx3[_0xd07e[15]]();_0x6abcx3[_0xd07e[1]][_0xd07e[38]](_0xd07e[36],_0xd07e[37]);_0x6abcx3[_0xd07e[1]][_0xd07e[6]][_0xd07e[39]]= _0xd07e[40];_0x6abcx3[_0xd07e[1]][_0xd07e[6]][_0xd07e[41]]= _0xd07e[42]+ _0x6abcx1[_0xd07e[43]]+ _0xd07e[44];_0x6abcx3[_0xd07e[1]][_0xd07e[6]][_0xd07e[45]]= _0xd07e[46];_0x6abcx3[_0xd07e[1]][_0xd07e[47]]();var _0x6abcx7=_0x6abcx3[_0xd07e[48]];_0x6abcx3[_0xd07e[48]]= function(_0x6abcx8,_0x6abcx9,_0x6abcxa){if(_0x6abcx8== mxEvent[_0xd07e[49]]){this[_0xd07e[1]][_0xd07e[47]]()};_0x6abcx7[_0xd07e[50]](this,arguments)};this[_0xd07e[56]](_0x6abcx3[_0xd07e[51]],[_0xd07e[52],_0xd07e[53],_0xd07e[54]],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,_0xd07e[55]]]);this[_0xd07e[56]](_0x6abcx3[_0xd07e[51]],[_0xd07e[57],_0xd07e[58],_0xd07e[59],_0xd07e[60],_0xd07e[61],_0xd07e[62],_0xd07e[63]],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,_0xd07e[55]],[1,_0xd07e[55]],[1,_0xd07e[55]],[1,_0xd07e[55]],[1,_0xd07e[55]],[1,_0xd07e[55]],[1,_0xd07e[55]]]);this[_0xd07e[56]](_0x6abcx3[_0xd07e[51]],[_0xd07e[64],_0xd07e[65]],[[1,1],[1,1]],[[1,_0xd07e[55]],[1,_0xd07e[55]]]);this[_0xd07e[56]](_0x6abcx3[_0xd07e[51]],[_0xd07e[66],_0xd07e[67],_0xd07e[68],_0xd07e[69],_0xd07e[70],_0xd07e[71],_0xd07e[72],_0xd07e[73],_0xd07e[74],_0xd07e[75],_0xd07e[76]],[[1,_0xd07e[55]],[1,1],[1,_0xd07e[55]],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,_0xd07e[55]],[1,_0xd07e[55]]],[[1,_0xd07e[55]],[1,_0xd07e[55]],[1,_0xd07e[55]],[1,_0xd07e[55]],[1,_0xd07e[55]],[1,_0xd07e[55]],[1,_0xd07e[55]],[1,_0xd07e[55]],[1,_0xd07e[55]],[1,_0xd07e[55]],[1,_0xd07e[55]]]);this[_0xd07e[56]](_0x6abcx3[_0xd07e[51]],[_0xd07e[77]],[[1,1]],[[1,_0xd07e[55]]]);this[_0xd07e[56]](_0x6abcx3[_0xd07e[51]],[_0xd07e[78],_0xd07e[79],_0xd07e[80],_0xd07e[81],_0xd07e[82],_0xd07e[83]],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,_0xd07e[55]],[1,_0xd07e[55]],[1,_0xd07e[55]],[1,_0xd07e[55]],[1,_0xd07e[55]],[1,_0xd07e[55]]]);this[_0xd07e[56]](_0x6abcx3[_0xd07e[51]],[_0xd07e[84],_0xd07e[85],_0xd07e[86],_0xd07e[87],_0xd07e[88]],[[0,0],[1,2],[1,2],[1,2],[1,_0xd07e[55]]],[[1,_0xd07e[55]],[1,_0xd07e[55]],[1,_0xd07e[55]],[1,_0xd07e[55]],[1,_0xd07e[55]]]);this[_0xd07e[56]](_0x6abcx3[_0xd07e[51]],[_0xd07e[89],_0xd07e[90]],[[1,1],[1,1]],[[1,_0xd07e[55]],[1,_0xd07e[55]]]);this[_0xd07e[56]](_0x6abcx3[_0xd07e[51]],[_0xd07e[91],_0xd07e[92],_0xd07e[93],_0xd07e[94],_0xd07e[95]],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,_0xd07e[55]],[1,_0xd07e[55]],[1,_0xd07e[55]],[1,_0xd07e[55]],[1,_0xd07e[55]]]);_0x6abcx3[_0xd07e[96]]= function(_0x6abcx6,_0x6abcxb){var _0x6abcxc=[_0xd07e[66],_0xd07e[85],_0xd07e[86],_0xd07e[68],_0xd07e[75],_0xd07e[76],_0xd07e[88]];var _0x6abcxd= new mxEventObject(mxEvent.DOUBLE_CLICK,_0xd07e[17],_0x6abcx6,_0xd07e[97],_0x6abcxb);this[_0xd07e[98]](_0x6abcxd);if(this[_0xd07e[99]]()&& !mxEvent[_0xd07e[100]](_0x6abcx6)&& !_0x6abcxd[_0xd07e[100]]()){if(this[_0xd07e[102]]()[_0xd07e[101]](_0x6abcxb)){if(_0x6abcxc[_0xd07e[106]](_0x6abcxb[_0xd07e[105]][_0xd07e[104]][_0xd07e[103]])>= 0){this[_0xd07e[107]](_0x6abcxb)}}else {if(this[_0xd07e[102]]()[_0xd07e[108]](_0x6abcxb)){_0x6abcx4[_0xd07e[109]]( new GeneralDialog(_0x6abcx4,_0x6abcxb)[_0xd07e[1]],320,280,true,true)}};_0x6abcxd[_0xd07e[110]]()}};_0x6abcx3[_0xd07e[112]][_0xd07e[111]]= true;_0x6abcx3[_0xd07e[112]][_0xd07e[113]]= mxUtils[_0xd07e[20]](this,function(_0x6abcxe,_0x6abcxb,_0x6abcx6){this[_0xd07e[13]][_0xd07e[114]](_0x6abcxe,_0x6abcxb,_0x6abcx6)});_0x6abcx1[_0xd07e[116]][_0xd07e[35]](this[_0xd07e[115]]);mxEvent[_0xd07e[118]](document,mxUtils[_0xd07e[20]](this,function(_0x6abcx6){_0x6abcx3[_0xd07e[112]][_0xd07e[117]]()}));if(mxClient[_0xd07e[119]]){mxEvent[_0xd07e[33]](_0x6abcx3[_0xd07e[1]],_0xd07e[120],mxUtils[_0xd07e[20]](this,function(_0x6abcx6){_0x6abcx3[_0xd07e[125]][_0xd07e[124]]()[_0xd07e[38]](_0xd07e[121],_0xd07e[122]+ _0x6abcx6[_0xd07e[123]]+ _0xd07e[44]);_0x6abcx3[_0xd07e[125]][_0xd07e[127]]()[_0xd07e[6]][_0xd07e[126]]= _0xd07e[7]}));mxEvent[_0xd07e[33]](_0x6abcx3[_0xd07e[1]],_0xd07e[128],mxUtils[_0xd07e[20]](this,function(_0x6abcx6){_0x6abcx3[_0xd07e[125]][_0xd07e[124]]()[_0xd07e[129]](_0xd07e[121]);_0x6abcx3[_0xd07e[130]]= true;_0x6abcx3[_0xd07e[131]](_0x6abcx6[_0xd07e[123]]);_0x6abcx3[_0xd07e[125]][_0xd07e[127]]()[_0xd07e[6]][_0xd07e[126]]= _0xd07e[132]}))};var _0x6abcxf=this[_0xd07e[133]](_0x6abcx1);this[_0xd07e[134]]= function(){return _0x6abcxf};mxEvent[_0xd07e[33]](window,_0xd07e[135],mxUtils[_0xd07e[20]](this,function(){this[_0xd07e[15]]();_0x6abcx3[_0xd07e[136]]();this[_0xd07e[0]][_0xd07e[116]][_0xd07e[137]](false);this[_0xd07e[0]][_0xd07e[116]][_0xd07e[116]][_0xd07e[136]]()}));this[_0xd07e[35]]();this[_0xd07e[138]]()};EditorUi[_0xd07e[10]][_0xd07e[139]]= (mxClient[_0xd07e[119]])?16:8;EditorUi[_0xd07e[10]][_0xd07e[140]]= 33;EditorUi[_0xd07e[10]][_0xd07e[141]]= 36;EditorUi[_0xd07e[10]][_0xd07e[142]]= 28;EditorUi[_0xd07e[10]][_0xd07e[143]]= 204;EditorUi[_0xd07e[10]][_0xd07e[144]]= 190;EditorUi[_0xd07e[10]][_0xd07e[35]]= function(){this[_0xd07e[145]]();this[_0xd07e[146]]();var _0x6abcx10=this[_0xd07e[12]][_0xd07e[148]](_0xd07e[147]);var _0x6abcx11=function(){_0x6abcx10[_0xd07e[150]](!mxClipboard[_0xd07e[149]]())};var _0x6abcx12=mxClipboard[_0xd07e[151]];mxClipboard[_0xd07e[151]]= function(){_0x6abcx12[_0xd07e[50]](this,arguments);_0x6abcx11()};var _0x6abcx13=mxClipboard[_0xd07e[152]];mxClipboard[_0xd07e[152]]= function(){_0x6abcx13[_0xd07e[50]](this,arguments);_0x6abcx11()}};EditorUi[_0xd07e[10]][_0xd07e[18]]= function(_0x6abcx6){return false};EditorUi[_0xd07e[10]][_0xd07e[138]]= function(){try{if(window[_0xd07e[153]]!= null&& window[_0xd07e[153]][_0xd07e[154]]!= null){window[_0xd07e[153]][_0xd07e[154]][_0xd07e[166]](mxUtils[_0xd07e[20]](this,function(_0x6abcx14,_0x6abcx15){try{var _0x6abcx16=mxUtils[_0xd07e[155]](_0x6abcx14);this[_0xd07e[0]][_0xd07e[157]](_0x6abcx16[_0xd07e[156]]);this[_0xd07e[0]][_0xd07e[158]]= false;this[_0xd07e[0]][_0xd07e[160]][_0xd07e[159]]();if(_0x6abcx15!= null){this[_0xd07e[0]][_0xd07e[161]]= _0x6abcx15}}catch(e){mxUtils[_0xd07e[165]](mxResources[_0xd07e[148]](_0xd07e[162])+ _0xd07e[163]+ e[_0xd07e[164]])}}))}}catch(e){}};EditorUi[_0xd07e[10]][_0xd07e[167]]= function(_0x6abcx14,_0x6abcx15,_0x6abcx17){try{var _0x6abcx16=mxUtils[_0xd07e[155]](_0x6abcx14);this[_0xd07e[0]][_0xd07e[157]](_0x6abcx16[_0xd07e[156]]);this[_0xd07e[0]][_0xd07e[158]]= false;this[_0xd07e[0]][_0xd07e[160]][_0xd07e[159]]();if(_0x6abcx15!= null){this[_0xd07e[0]][_0xd07e[161]]= _0x6abcx15};if(_0x6abcx17!= null){this[_0xd07e[0]][_0xd07e[168]]= _0x6abcx17}}catch(e){mxUtils[_0xd07e[165]](mxResources[_0xd07e[148]](_0xd07e[162])+ _0xd07e[163]+ e[_0xd07e[164]])}};EditorUi[_0xd07e[10]][_0xd07e[169]]= function(_0x6abcx18){var _0x6abcx1=this[_0xd07e[0]];if(_0x6abcx18!= null){var _0x6abcx14=mxUtils[_0xd07e[171]](this[_0xd07e[0]][_0xd07e[170]]());try{if(useLocalStorage){if(localStorage[_0xd07e[172]](_0x6abcx18)!= null&& !mxUtils[_0xd07e[174]](mxResources[_0xd07e[148]](_0xd07e[173],[_0x6abcx18]))){return};localStorage[_0xd07e[175]](_0x6abcx18,_0x6abcx14);this[_0xd07e[0]][_0xd07e[178]](mxResources[_0xd07e[148]](_0xd07e[176])+ _0xd07e[177]+ new Date())}else {console[_0xd07e[180]](_0x6abcx14[_0xd07e[179]]);console[_0xd07e[180]](MAX_REQUEST_SIZE);if(_0x6abcx14[_0xd07e[179]]< MAX_REQUEST_SIZE){_0x6abcx14= encodeURIComponent(_0x6abcx14);_0x6abcx18= encodeURIComponent(_0x6abcx18);var _0x6abcx19= new XMLHttpRequest();_0x6abcx19[_0xd07e[138]](_0xd07e[181],SAVE_URL,true);_0x6abcx19[_0xd07e[184]](_0xd07e[182],_0xd07e[183]);_0x6abcx19[_0xd07e[184]](_0xd07e[185],_0xd07e[186]+ _0x6abcx1[_0xd07e[168]][_0xd07e[187]]);_0x6abcx19[_0xd07e[188]]= function(_0x6abcx1a){if(_0x6abcx19[_0xd07e[189]]=== 4){if(_0x6abcx19[_0xd07e[190]]=== 201){_0x6abcx1[_0xd07e[178]](_0xd07e[191]+ JSON[_0xd07e[194]](_0x6abcx19[_0xd07e[193]])[_0xd07e[192]]+ _0xd07e[195]);setTimeout(function(){window[_0xd07e[138]](_0xd07e[196]+ JSON[_0xd07e[194]](_0x6abcx19[_0xd07e[193]])[_0xd07e[197]],_0xd07e[198])},1500)}else {try{var _0x6abcx1b=JSON[_0xd07e[194]](_0x6abcx19[_0xd07e[193]]);_0x6abcx1[_0xd07e[178]](_0xd07e[199]+ _0x6abcx1b[_0xd07e[200]][0][_0xd07e[164]])}catch(_0x6abcx1a){_0x6abcx1[_0xd07e[178]](_0xd07e[201]+ _0xd07e[202]+ _0x6abcx19[_0xd07e[190]]+ _0xd07e[177]+ _0x6abcx19[_0xd07e[203]]+ _0xd07e[44])}}}};_0x6abcx19[_0xd07e[204]]= function(_0x6abcx1a){mxUtils[_0xd07e[165]](_0x6abcx19[_0xd07e[203]])};_0x6abcx19[_0xd07e[206]](_0xd07e[205]+ _0x6abcx18)}else {mxUtils[_0xd07e[165]](mxResources[_0xd07e[148]](_0xd07e[207]));mxUtils[_0xd07e[208]](_0x6abcx14);return}};this[_0xd07e[0]][_0xd07e[161]]= _0x6abcx18;this[_0xd07e[0]][_0xd07e[158]]= false}catch(e){this[_0xd07e[0]][_0xd07e[178]](_0xd07e[201])}}else {this[_0xd07e[0]][_0xd07e[178]](_0xd07e[201])}};EditorUi[_0xd07e[10]][_0xd07e[209]]= function(_0x6abcx18){var _0x6abcx1=this[_0xd07e[0]];if(_0x6abcx18!= null){var _0x6abcx14=mxUtils[_0xd07e[171]](this[_0xd07e[0]][_0xd07e[170]]());try{if(useLocalStorage){if(localStorage[_0xd07e[172]](_0x6abcx18)!= null&& !mxUtils[_0xd07e[174]](mxResources[_0xd07e[148]](_0xd07e[173],[_0x6abcx18]))){return};localStorage[_0xd07e[175]](_0x6abcx18,_0x6abcx14);this[_0xd07e[0]][_0xd07e[178]](mxResources[_0xd07e[148]](_0xd07e[176])+ _0xd07e[177]+ new Date())}else {console[_0xd07e[180]](_0xd07e[210],_0x6abcx14[_0xd07e[179]]);console[_0xd07e[180]](_0xd07e[211],MAX_REQUEST_SIZE);if(_0x6abcx14[_0xd07e[179]]< MAX_REQUEST_SIZE){_0x6abcx14= encodeURIComponent(_0x6abcx14);var _0x6abcx19= new XMLHttpRequest();_0x6abcx19[_0xd07e[138]](_0xd07e[212],SAVE_URL+ this[_0xd07e[0]][_0xd07e[168]][_0xd07e[197]],true);_0x6abcx19[_0xd07e[184]](_0xd07e[182],_0xd07e[183]);_0x6abcx19[_0xd07e[184]](_0xd07e[185],_0xd07e[186]+ _0x6abcx1[_0xd07e[168]][_0xd07e[187]]);_0x6abcx19[_0xd07e[188]]= function(_0x6abcx1a){if(_0x6abcx19[_0xd07e[189]]=== 4){if(_0x6abcx19[_0xd07e[190]]=== 200){_0x6abcx1[_0xd07e[178]](_0xd07e[213]+ moment(JSON[_0xd07e[194]](_0x6abcx19[_0xd07e[193]])[_0xd07e[216]])[_0xd07e[215]](_0xd07e[214])+ _0xd07e[202]+ _0x6abcx19[_0xd07e[190]]+ _0xd07e[177]+ _0x6abcx19[_0xd07e[203]]+ _0xd07e[44])}else {try{var _0x6abcx1b=JSON[_0xd07e[194]](_0x6abcx19[_0xd07e[193]]);_0x6abcx1[_0xd07e[178]](_0xd07e[217]+ _0x6abcx1b[_0xd07e[200]][0][_0xd07e[164]])}catch(_0x6abcx1a){_0x6abcx1[_0xd07e[178]](_0xd07e[218]+ _0xd07e[202]+ _0x6abcx19[_0xd07e[190]]+ _0xd07e[177]+ _0x6abcx19[_0xd07e[203]]+ _0xd07e[44])}}}};_0x6abcx19[_0xd07e[204]]= function(_0x6abcx1a){mxUtils[_0xd07e[165]](_0x6abcx19[_0xd07e[203]])};_0x6abcx19[_0xd07e[206]](_0xd07e[219]+ _0x6abcx14)}else {mxUtils[_0xd07e[165]](mxResources[_0xd07e[148]](_0xd07e[207]));mxUtils[_0xd07e[208]](_0x6abcx14);return}};this[_0xd07e[0]][_0xd07e[161]]= _0x6abcx18;this[_0xd07e[0]][_0xd07e[158]]= false}catch(e){this[_0xd07e[0]][_0xd07e[178]](_0xd07e[220])}}else {this[_0xd07e[0]][_0xd07e[178]](_0xd07e[220])}};EditorUi[_0xd07e[10]][_0xd07e[221]]= function(_0x6abcx1c){var _0x6abcx1=this[_0xd07e[0]];if(_0x6abcx1c!== null){var _0x6abcx19= new XMLHttpRequest();_0x6abcx19[_0xd07e[138]](_0xd07e[212],SAVE_URL+ this[_0xd07e[0]][_0xd07e[168]][_0xd07e[197]],true);_0x6abcx19[_0xd07e[184]](_0xd07e[182],_0xd07e[183]);_0x6abcx19[_0xd07e[184]](_0xd07e[185],_0xd07e[186]+ _0x6abcx1[_0xd07e[168]][_0xd07e[187]]);_0x6abcx19[_0xd07e[188]]= function(_0x6abcx1a){if(_0x6abcx19[_0xd07e[189]]=== 4){if(_0x6abcx19[_0xd07e[190]]=== 200){_0x6abcx1[_0xd07e[178]](_0xd07e[213]+ JSON[_0xd07e[194]](_0x6abcx19[_0xd07e[193]])[_0xd07e[216]]+ _0xd07e[202]+ _0x6abcx19[_0xd07e[190]]+ _0xd07e[177]+ _0x6abcx19[_0xd07e[203]]+ _0xd07e[44]);_0x6abcx1[_0xd07e[168]][_0xd07e[221]]= _0x6abcx1c}else {try{var _0x6abcx1b=JSON[_0xd07e[194]](_0x6abcx19[_0xd07e[193]]);_0x6abcx1[_0xd07e[178]](_0xd07e[222]+ _0x6abcx1b[_0xd07e[200]][0][_0xd07e[164]])}catch(_0x6abcx1a){_0x6abcx1[_0xd07e[178]](_0xd07e[223]+ _0xd07e[202]+ _0x6abcx19[_0xd07e[190]]+ _0xd07e[177]+ _0x6abcx19[_0xd07e[203]]+ _0xd07e[44])}}}};_0x6abcx19[_0xd07e[204]]= function(_0x6abcx1a){mxUtils[_0xd07e[165]](_0x6abcx19[_0xd07e[203]])};_0x6abcx19[_0xd07e[206]](_0xd07e[224]+ _0x6abcx1c)}else {this[_0xd07e[0]][_0xd07e[178]](_0xd07e[223])}};EditorUi[_0xd07e[10]][_0xd07e[225]]= function(_0x6abcx18){var _0x6abcx1=this[_0xd07e[0]];if(_0x6abcx18!= null){var _0x6abcx14=mxUtils[_0xd07e[171]](this[_0xd07e[0]][_0xd07e[170]]());try{if(useLocalStorage){if(localStorage[_0xd07e[172]](_0x6abcx18)!= null&& !mxUtils[_0xd07e[174]](mxResources[_0xd07e[148]](_0xd07e[173],[_0x6abcx18]))){return};localStorage[_0xd07e[175]](_0x6abcx18,_0x6abcx14);this[_0xd07e[0]][_0xd07e[178]](mxResources[_0xd07e[148]](_0xd07e[176])+ _0xd07e[177]+ new Date())}else {console[_0xd07e[180]](_0x6abcx14[_0xd07e[179]]);console[_0xd07e[180]](MAX_REQUEST_SIZE);if(_0x6abcx14[_0xd07e[179]]< MAX_REQUEST_SIZE){_0x6abcx14= encodeURIComponent(_0x6abcx14);_0x6abcx18= encodeURIComponent(_0x6abcx18);var _0x6abcx19= new XMLHttpRequest();_0x6abcx19[_0xd07e[138]](_0xd07e[181],SAVE_URL,true);_0x6abcx19[_0xd07e[184]](_0xd07e[182],_0xd07e[183]);_0x6abcx19[_0xd07e[184]](_0xd07e[185],_0xd07e[186]+ _0x6abcx1[_0xd07e[168]][_0xd07e[187]]);_0x6abcx19[_0xd07e[188]]= function(_0x6abcx1a){if(_0x6abcx19[_0xd07e[189]]=== 4){if(_0x6abcx19[_0xd07e[190]]=== 201){_0x6abcx1[_0xd07e[178]](_0xd07e[191]+ JSON[_0xd07e[194]](_0x6abcx19[_0xd07e[193]])[_0xd07e[192]]+ _0xd07e[195]);setTimeout(function(){window[_0xd07e[138]](_0xd07e[196]+ JSON[_0xd07e[194]](_0x6abcx19[_0xd07e[193]])[_0xd07e[197]],_0xd07e[198])},1500)}else {try{var _0x6abcx1b=JSON[_0xd07e[194]](_0x6abcx19[_0xd07e[193]]);_0x6abcx1[_0xd07e[178]](_0xd07e[226]+ _0x6abcx1b[_0xd07e[200]][0][_0xd07e[164]])}catch(_0x6abcx1a){_0x6abcx1[_0xd07e[178]](_0xd07e[227]+ _0xd07e[202]+ _0x6abcx19[_0xd07e[190]]+ _0xd07e[177]+ _0x6abcx19[_0xd07e[203]]+ _0xd07e[44])}}}};_0x6abcx19[_0xd07e[204]]= function(_0x6abcx1a){mxUtils[_0xd07e[165]](_0x6abcx19[_0xd07e[203]])};_0x6abcx19[_0xd07e[206]](_0xd07e[228]+ _0x6abcx18+ _0xd07e[229]+ _0x6abcx14+ _0xd07e[230]+ _0x6abcx14)}else {mxUtils[_0xd07e[165]](mxResources[_0xd07e[148]](_0xd07e[207]));mxUtils[_0xd07e[208]](_0x6abcx14);return}};this[_0xd07e[0]][_0xd07e[158]]= false}catch(e){this[_0xd07e[0]][_0xd07e[178]](_0xd07e[220])}}else {this[_0xd07e[0]][_0xd07e[178]](_0xd07e[220])}};EditorUi[_0xd07e[10]][_0xd07e[231]]= function(_0x6abcx1d,_0x6abcx1e){var _0x6abcx3=this[_0xd07e[0]][_0xd07e[4]];for(var _0x6abcx1d=_0x6abcx1d!= null?_0x6abcx1d:_0x6abcx3[_0xd07e[233]][_0xd07e[232]](),_0x6abcx1e=_0x6abcx1e!= null?_0x6abcx1e:{},_0x6abcx1f=true,_0x6abcx20=_0x6abcx3[_0xd07e[233]][_0xd07e[234]](_0x6abcx1d),_0x6abcx1a=0;_0x6abcx1a< _0x6abcx20;_0x6abcx1a++){var _0x6abcx21=_0x6abcx3[_0xd07e[233]][_0xd07e[235]](_0x6abcx1d,_0x6abcx1a),_0x6abcx22=_0x6abcx1e;_0x6abcx3[_0xd07e[236]](_0x6abcx21)&& (_0x6abcx22= {});_0x6abcx22= this[_0xd07e[231]](_0x6abcx21,_0x6abcx22);_0x6abcx22!= null?_0x6abcx3[_0xd07e[238]](_0x6abcx21,_0x6abcx22[_0xd07e[173]](/\n/g,_0xd07e[237])):_0x6abcx3[_0xd07e[238]](_0x6abcx21,null);_0x6abcx1f= _0x6abcx1f&& _0x6abcx22== null};_0x6abcx20= _0xd07e[239];if(_0x6abcx3[_0xd07e[233]][_0xd07e[108]](_0x6abcx1d)){switch(_0x6abcx1d[_0xd07e[104]][_0xd07e[322]]){case _0xd07e[52]:_0x6abcx20= this[_0xd07e[240]](_0xd07e[52])?_0xd07e[239]:_0xd07e[241]+ _0xd07e[242];break;case _0xd07e[53]:_0x6abcx20= this[_0xd07e[240]](_0xd07e[53])?_0xd07e[239]:_0xd07e[243]+ _0xd07e[242];break;case _0xd07e[67]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[244])> 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[246])+ _0xd07e[242];break;case _0xd07e[57]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[247])>= 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[248])+ _0xd07e[242];break;case _0xd07e[66]:;case _0xd07e[68]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[244])> 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[246])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[249])> 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[250])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[193])>= 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[248])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[251])>= 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[252])+ _0xd07e[242];break;case _0xd07e[75]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[244])> 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[246])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[253])> 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[254])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[255])> 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[256])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[257])> 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[250])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[251])>= 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[252])+ _0xd07e[242];break;case _0xd07e[76]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[244])> 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[246])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[253])> 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[254])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[255])> 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[256])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[257])> 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[250])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[258])>= 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[259])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[251])>= 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[252])+ _0xd07e[242];break;case _0xd07e[88]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[253])> 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[254])+ _0xd07e[242];break;case _0xd07e[78]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[260])> 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[261])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[262])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[263])+ _0xd07e[242];break;case _0xd07e[60]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[264])!== _0xd07e[265])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[266])+ _0xd07e[242];break;case _0xd07e[64]:;case _0xd07e[65]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[253])> 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[254])+ _0xd07e[242];break;case _0xd07e[84]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[267])!== _0xd07e[265])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[268])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[269])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[270])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[271])>= 1)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[272])+ _0xd07e[242];break;case _0xd07e[92]:;case _0xd07e[93]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[273])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[274])+ _0xd07e[242];break;case _0xd07e[85]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[275])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[276])+ _0xd07e[242];break;case _0xd07e[69]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[277])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[278])+ _0xd07e[242];break;case _0xd07e[70]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[279])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[280])+ _0xd07e[242];break;case _0xd07e[71]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[281])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[282])+ _0xd07e[242];break;case _0xd07e[77]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[283])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[284])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[247])>= -1)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[248])+ _0xd07e[242];break;case _0xd07e[90]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[285])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[286])+ _0xd07e[242];break;case _0xd07e[60]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[287])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[288])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[247])>= 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[248])+ _0xd07e[242];break;case _0xd07e[59]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[289])> 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[288])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[247])>= 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[248])+ _0xd07e[242];break;case _0xd07e[61]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[290])!== _0xd07e[265])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[291])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[247])>= 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[248])+ _0xd07e[242];break;case _0xd07e[63]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[292])!== _0xd07e[265])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[293])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[192])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[294])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[287])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[295])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[296])>= 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[297])+ _0xd07e[242];break;case _0xd07e[86]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[298])> 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[299])+ _0xd07e[242];break;case _0xd07e[87]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[298])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[299])+ _0xd07e[242];break;case _0xd07e[62]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[300])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[301])+ _0xd07e[242];break;case _0xd07e[94]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[302])> 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[303])+ _0xd07e[242];break;case _0xd07e[80]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[304])> 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[305])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[306])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[307])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[308])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[282])+ _0xd07e[242];break;case _0xd07e[81]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[304])> 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[305])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[306])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[307])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[309])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[282])+ _0xd07e[242];break;case _0xd07e[82]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[304])> 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[305])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[306])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[307])+ _0xd07e[242];break;case _0xd07e[83]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[304])> 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[305])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[306])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[307])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[310])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[311])+ _0xd07e[242];break;case _0xd07e[72]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[281])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[282])+ _0xd07e[242];break;case _0xd07e[74]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[281])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[282])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[312])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[313])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[314])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[315])+ _0xd07e[242];break;case _0xd07e[73]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[281])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[282])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[316])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[317])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[318])>= 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[319])+ _0xd07e[242];break;case _0xd07e[79]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[316])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[317])+ _0xd07e[242];_0x6abcx20+= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[247])>= 0)?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[248])+ _0xd07e[242];break;case _0xd07e[95]:_0x6abcx20= (_0x6abcx1d[_0xd07e[104]][_0xd07e[245]](_0xd07e[320])!== _0xd07e[239])?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[321])+ _0xd07e[242];break}};if(_0x6abcx3[_0xd07e[233]][_0xd07e[101]](_0x6abcx1d)){var _0x6abcx23=_0x6abcx3[_0xd07e[233]][_0xd07e[324]](_0x6abcx1d[_0xd07e[105]][_0xd07e[323]]());switch(_0x6abcx23[_0xd07e[104]][_0xd07e[322]]){case _0xd07e[66]:var _0x6abcx24=/^[0-9]{1,45}$|^[i]{1}$|^[t]{1}|^[#]{1}|^[*]{1}$/;_0x6abcx20= _0x6abcx20+ ((_0x6abcx24[_0xd07e[326]](String(_0x6abcx1d[_0xd07e[325]]())))?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[327])+ _0xd07e[242]);break;case _0xd07e[68]:var _0x6abcx24=/^[0-9]{1,45}$|^[-]{1}$|^[i]{1}$|^[t]{1}|^[#]{1}|^[*]{1}$/;var _0x6abcx25=String(_0x6abcx1d[_0xd07e[325]]());var _0x6abcx26=_0x6abcx25[_0xd07e[329]](_0xd07e[328]);_0x6abcx26[_0xd07e[331]](function(_0x6abcx27){_0x6abcx20= _0x6abcx20+ ((_0x6abcx24[_0xd07e[326]](_0x6abcx27))?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[330])+ _0xd07e[242])});break;case _0xd07e[76]:;case _0xd07e[75]:var _0x6abcx24=/^(x|i|-)$/;var _0x6abcx25=String(_0x6abcx1d[_0xd07e[325]]());_0x6abcx20= _0x6abcx20+ ((_0x6abcx24[_0xd07e[326]](_0x6abcx25))?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[332])+ _0xd07e[242]);break;case _0xd07e[85]:;case _0xd07e[86]:;case _0xd07e[87]:var _0x6abcx24=/^(true){1}$|^(false){1}$/;_0x6abcx20= _0x6abcx20+ ((_0x6abcx24[_0xd07e[326]](String(_0x6abcx1d[_0xd07e[325]]())))?_0xd07e[239]:mxResources[_0xd07e[148]](_0xd07e[333])+ _0xd07e[242]);break}};_0x6abcx3[_0xd07e[334]](_0x6abcx1d)&& !_0x6abcx1f&& (_0x6abcx20= _0x6abcx20+ ((mxResources[_0xd07e[148]](_0x6abcx3[_0xd07e[335]])|| _0x6abcx3[_0xd07e[335]])+ _0xd07e[242]));_0x6abcx20= _0x6abcx3[_0xd07e[233]][_0xd07e[101]](_0x6abcx1d)?_0x6abcx20+ (_0x6abcx3[_0xd07e[337]](_0x6abcx1d,_0x6abcx3[_0xd07e[233]][_0xd07e[336]](_0x6abcx1d,true),_0x6abcx3[_0xd07e[233]][_0xd07e[336]](_0x6abcx1d,false))|| _0xd07e[239]):_0x6abcx20+ (_0x6abcx3[_0xd07e[338]](_0x6abcx1d)|| _0xd07e[239]);_0x6abcx1a= _0x6abcx3[_0xd07e[339]](_0x6abcx1d,_0x6abcx1e);_0x6abcx1a!= null&& (_0x6abcx20= _0x6abcx20+ _0x6abcx1a);_0x6abcx3[_0xd07e[233]][_0xd07e[340]](_0x6abcx1d)== null&& _0x6abcx3[_0xd07e[125]][_0xd07e[231]]();return _0x6abcx20[_0xd07e[179]]> 0|| !_0x6abcx1f?_0x6abcx20:null};EditorUi[_0xd07e[10]][_0xd07e[240]]= function(_0x6abcx28){var _0x6abcx3=this[_0xd07e[0]][_0xd07e[4]];var _0x6abcx29=_0x6abcx3[_0xd07e[341]]();var _0x6abcx2a=0;_0x6abcx29[_0xd07e[342]][_0xd07e[331]](function(_0x6abcx2b){if(_0x6abcx3[_0xd07e[233]][_0xd07e[108]](_0x6abcx2b)&& _0x6abcx2b[_0xd07e[104]][_0xd07e[322]]== _0x6abcx28){_0x6abcx2a++}});return _0x6abcx2a> 1?false:true};EditorUi[_0xd07e[10]][_0xd07e[343]]= function(_0x6abcx18){var _0x6abcx1=this[_0xd07e[0]];if(_0x6abcx18!= null){var _0x6abcx1b=this[_0xd07e[231]]();if(_0x6abcx1b=== null){var _0x6abcx14=mxUtils[_0xd07e[171]](this[_0xd07e[0]][_0xd07e[170]]());try{if(useLocalStorage){if(localStorage[_0xd07e[172]](_0x6abcx18)!= null&& !mxUtils[_0xd07e[174]](mxResources[_0xd07e[148]](_0xd07e[173],[_0x6abcx18]))){return};localStorage[_0xd07e[175]](_0x6abcx18,_0x6abcx14);this[_0xd07e[0]][_0xd07e[178]](mxResources[_0xd07e[148]](_0xd07e[176])+ _0xd07e[177]+ new Date())}else {console[_0xd07e[180]](_0x6abcx14[_0xd07e[179]]);console[_0xd07e[180]](MAX_REQUEST_SIZE);if(_0x6abcx14[_0xd07e[179]]< MAX_REQUEST_SIZE){_0x6abcx14= encodeURIComponent(_0x6abcx14);var _0x6abcx19= new XMLHttpRequest();_0x6abcx19[_0xd07e[138]](_0xd07e[212],SAVE_URL+ this[_0xd07e[0]][_0xd07e[168]][_0xd07e[197]],true);_0x6abcx19[_0xd07e[184]](_0xd07e[182],_0xd07e[183]);_0x6abcx19[_0xd07e[184]](_0xd07e[185],_0xd07e[186]+ _0x6abcx1[_0xd07e[168]][_0xd07e[187]]);_0x6abcx19[_0xd07e[188]]= function(_0x6abcx1a){if(_0x6abcx19[_0xd07e[189]]=== 4){if(_0x6abcx19[_0xd07e[190]]=== 200){_0x6abcx1[_0xd07e[178]](_0xd07e[344]+ moment(JSON[_0xd07e[194]](_0x6abcx19[_0xd07e[193]])[_0xd07e[216]])[_0xd07e[215]](_0xd07e[214])+ _0xd07e[202]+ _0x6abcx19[_0xd07e[190]]+ _0xd07e[177]+ _0x6abcx19[_0xd07e[203]]+ _0xd07e[44])}else {try{var _0x6abcx1b=JSON[_0xd07e[194]](_0x6abcx19[_0xd07e[193]]);_0x6abcx1[_0xd07e[178]](_0xd07e[345]+ _0x6abcx1b[_0xd07e[200]][0][_0xd07e[164]])}catch(_0x6abcx1a){_0x6abcx1[_0xd07e[178]](_0xd07e[346]+ _0xd07e[202]+ _0x6abcx19[_0xd07e[190]]+ _0xd07e[177]+ _0x6abcx19[_0xd07e[203]]+ _0xd07e[44])}}}};_0x6abcx19[_0xd07e[204]]= function(_0x6abcx1a){mxUtils[_0xd07e[165]](_0x6abcx19[_0xd07e[203]])};_0x6abcx19[_0xd07e[206]](_0xd07e[219]+ _0x6abcx14+ _0xd07e[230]+ _0x6abcx14)}else {mxUtils[_0xd07e[165]](mxResources[_0xd07e[148]](_0xd07e[207]));mxUtils[_0xd07e[208]](_0x6abcx14);return}};this[_0xd07e[0]][_0xd07e[161]]= _0x6abcx18;this[_0xd07e[0]][_0xd07e[158]]= false}catch(e){this[_0xd07e[0]][_0xd07e[178]](_0xd07e[347])}}else {_0x6abcx1[_0xd07e[178]](_0xd07e[345])}}else {this[_0xd07e[0]][_0xd07e[178]](_0xd07e[347])}};EditorUi[_0xd07e[10]][_0xd07e[348]]= function(_0x6abcx18,_0x6abcx1c){var _0x6abcx1=this[_0xd07e[0]];if(_0x6abcx18!= null){try{var _0x6abcx19= new XMLHttpRequest();_0x6abcx19[_0xd07e[138]](_0xd07e[181],VARIABLE_URL,true);_0x6abcx19[_0xd07e[184]](_0xd07e[182],_0xd07e[183]);_0x6abcx19[_0xd07e[184]](_0xd07e[185],_0xd07e[186]+ _0x6abcx1[_0xd07e[168]][_0xd07e[187]]);_0x6abcx19[_0xd07e[188]]= function(_0x6abcx1a){if(_0x6abcx19[_0xd07e[189]]=== 4){if(_0x6abcx19[_0xd07e[190]]=== 201){_0x6abcx1[_0xd07e[178]](_0xd07e[349]+ JSON[_0xd07e[194]](_0x6abcx19[_0xd07e[193]])[_0xd07e[350]]+ _0xd07e[202]+ _0x6abcx19[_0xd07e[190]]+ _0xd07e[177]+ _0x6abcx19[_0xd07e[203]]+ _0xd07e[44])}else {try{var _0x6abcx1b=JSON[_0xd07e[194]](_0x6abcx19[_0xd07e[193]]);_0x6abcx1[_0xd07e[178]](_0xd07e[351]+ _0x6abcx1b[_0xd07e[200]][0][_0xd07e[164]])}catch(_0x6abcx1a){_0x6abcx1[_0xd07e[178]](_0xd07e[352]+ _0xd07e[202]+ _0x6abcx19[_0xd07e[190]]+ _0xd07e[177]+ _0x6abcx19[_0xd07e[203]]+ _0xd07e[44])}}}};_0x6abcx19[_0xd07e[204]]= function(_0x6abcx1a){mxUtils[_0xd07e[165]](_0x6abcx19[_0xd07e[203]])};_0x6abcx19[_0xd07e[206]](_0xd07e[353]+ _0x6abcx18+ _0xd07e[354]+ _0x6abcx1c)}catch(e){this[_0xd07e[0]][_0xd07e[178]](_0xd07e[352])}}else {this[_0xd07e[0]][_0xd07e[178]](_0xd07e[352])}};EditorUi[_0xd07e[10]][_0xd07e[355]]= function(_0x6abcx2c){var _0x6abcx2d=(_0x6abcx2c!= null)?_0x6abcx2c:window[_0xd07e[357]][_0xd07e[356]];var _0x6abcx2e=(_0x6abcx2d[_0xd07e[106]](_0xd07e[358])> 0)?1:0;for(var _0x6abcx2f in urlParams){if(_0x6abcx2e== 0){_0x6abcx2d+= _0xd07e[358]}else {_0x6abcx2d+= _0xd07e[359]};_0x6abcx2d+= _0x6abcx2f+ _0xd07e[360]+ urlParams[_0x6abcx2f];_0x6abcx2e++};return _0x6abcx2d};EditorUi[_0xd07e[10]][_0xd07e[145]]= function(){var _0x6abcx30=this[_0xd07e[12]][_0xd07e[148]](_0xd07e[361]);var _0x6abcx31=this[_0xd07e[12]][_0xd07e[148]](_0xd07e[362]);var _0x6abcx32=this[_0xd07e[0]][_0xd07e[160]];var _0x6abcx33=function(){_0x6abcx30[_0xd07e[150]](_0x6abcx32[_0xd07e[363]]());_0x6abcx31[_0xd07e[150]](_0x6abcx32[_0xd07e[364]]())};_0x6abcx32[_0xd07e[33]](mxEvent.ADD,_0x6abcx33);_0x6abcx32[_0xd07e[33]](mxEvent.UNDO,_0x6abcx33);_0x6abcx32[_0xd07e[33]](mxEvent.REDO,_0x6abcx33);_0x6abcx32[_0xd07e[33]](mxEvent.CLEAR,_0x6abcx33);_0x6abcx33()};EditorUi[_0xd07e[10]][_0xd07e[146]]= function(){var _0x6abcx34=mxUtils[_0xd07e[20]](this,function(){var _0x6abcx3=this[_0xd07e[0]][_0xd07e[4]];var _0x6abcx35=!_0x6abcx3[_0xd07e[365]]();var _0x6abcx36=false;var _0x6abcx37=false;var _0x6abcx38=_0x6abcx3[_0xd07e[366]]();if(_0x6abcx38!= null){for(var _0x6abcx39=0;_0x6abcx39< _0x6abcx38[_0xd07e[179]];_0x6abcx39++){var _0x6abcxb=_0x6abcx38[_0x6abcx39];if(_0x6abcx3[_0xd07e[102]]()[_0xd07e[101]](_0x6abcxb)){_0x6abcx37= true};if(_0x6abcx3[_0xd07e[102]]()[_0xd07e[108]](_0x6abcxb)){_0x6abcx36= true};if(_0x6abcx37&& _0x6abcx36){break}}};var _0x6abcx3a=[_0xd07e[151],_0xd07e[152],_0xd07e[367],_0xd07e[368],_0xd07e[369],_0xd07e[370],_0xd07e[6],_0xd07e[371],_0xd07e[372],_0xd07e[373],_0xd07e[374],_0xd07e[375],_0xd07e[376],_0xd07e[377],_0xd07e[378]];for(var _0x6abcx39=0;_0x6abcx39< _0x6abcx3a[_0xd07e[179]];_0x6abcx39++){this[_0xd07e[12]][_0xd07e[148]](_0x6abcx3a[_0x6abcx39])[_0xd07e[150]](_0x6abcx35)};this[_0xd07e[12]][_0xd07e[148]](_0xd07e[379])[_0xd07e[150]](_0x6abcx37);this[_0xd07e[12]][_0xd07e[148]](_0xd07e[380])[_0xd07e[150]](_0x6abcx36);this[_0xd07e[12]][_0xd07e[148]](_0xd07e[381])[_0xd07e[150]](_0x6abcx36);this[_0xd07e[12]][_0xd07e[148]](_0xd07e[383])[_0xd07e[150]](_0x6abcx3[_0xd07e[382]]()> 1);this[_0xd07e[12]][_0xd07e[148]](_0xd07e[385])[_0xd07e[150]](_0x6abcx3[_0xd07e[382]]()== 1&& _0x6abcx3[_0xd07e[102]]()[_0xd07e[234]](_0x6abcx3[_0xd07e[384]]())> 0);var _0x6abcx3b=_0x6abcx36&& _0x6abcx3[_0xd07e[382]]()== 1;this[_0xd07e[12]][_0xd07e[148]](_0xd07e[386])[_0xd07e[150]](_0x6abcx3b&& _0x6abcx3[_0xd07e[102]]()[_0xd07e[108]](_0x6abcx3[_0xd07e[102]]()[_0xd07e[340]](_0x6abcx3[_0xd07e[384]]())));var _0x6abcx3c=[_0xd07e[387],_0xd07e[388],_0xd07e[389],_0xd07e[390],_0xd07e[281],_0xd07e[215],_0xd07e[391],_0xd07e[392],_0xd07e[393]];for(var _0x6abcx39=0;_0x6abcx39< _0x6abcx3c[_0xd07e[179]];_0x6abcx39++){this[_0xd07e[13]][_0xd07e[148]](_0x6abcx3c[_0x6abcx39])[_0xd07e[150]](_0x6abcx35)};_0x6abcx3c= [_0xd07e[394],_0xd07e[395],_0xd07e[396]];for(var _0x6abcx39=0;_0x6abcx39< _0x6abcx3c[_0xd07e[179]];_0x6abcx39++){this[_0xd07e[13]][_0xd07e[148]](_0x6abcx3c[_0x6abcx39])[_0xd07e[150]](_0x6abcx37)};this[_0xd07e[12]][_0xd07e[148]](_0xd07e[397])[_0xd07e[150]](_0x6abcx37);this[_0xd07e[13]][_0xd07e[148]](_0xd07e[398])[_0xd07e[150]](_0x6abcx3[_0xd07e[382]]()> 1);this[_0xd07e[13]][_0xd07e[148]](_0xd07e[401])[_0xd07e[150]](_0x6abcx36|| (_0x6abcx37&& _0x6abcx3[_0xd07e[400]](_0x6abcx3[_0xd07e[125]][_0xd07e[399]](_0x6abcx3[_0xd07e[384]]()))));this[_0xd07e[13]][_0xd07e[148]](_0xd07e[404])[_0xd07e[150]](_0x6abcx3[_0xd07e[402]]&& ((_0x6abcx3[_0xd07e[125]][_0xd07e[403]]!= null)|| (_0x6abcx3[_0xd07e[382]]()== 1&& _0x6abcx3[_0xd07e[236]](_0x6abcx3[_0xd07e[384]]()))));this[_0xd07e[12]][_0xd07e[148]](_0xd07e[405])[_0xd07e[150]](_0x6abcx3[_0xd07e[125]][_0xd07e[403]]!= null);this[_0xd07e[12]][_0xd07e[148]](_0xd07e[406])[_0xd07e[150]](_0x6abcx3[_0xd07e[125]][_0xd07e[403]]!= null);var _0x6abcx3d=_0x6abcx3[_0xd07e[382]]()== 1&& _0x6abcx3[_0xd07e[236]](_0x6abcx3[_0xd07e[384]]());this[_0xd07e[12]][_0xd07e[148]](_0xd07e[407])[_0xd07e[150]](_0x6abcx3d);this[_0xd07e[12]][_0xd07e[148]](_0xd07e[408])[_0xd07e[150]](_0x6abcx3d);this[_0xd07e[12]][_0xd07e[148]](_0xd07e[409])[_0xd07e[150]](_0x6abcx3d);this[_0xd07e[12]][_0xd07e[148]](_0xd07e[410])[_0xd07e[150]](_0x6abcx3[_0xd07e[382]]()== 1);this[_0xd07e[12]][_0xd07e[148]](_0xd07e[412])[_0xd07e[150]](_0x6abcx3[_0xd07e[382]]()== 1&& _0x6abcx3[_0xd07e[411]](_0x6abcx3[_0xd07e[384]]())!= null)});this[_0xd07e[0]][_0xd07e[4]][_0xd07e[413]]()[_0xd07e[33]](mxEvent.CHANGE,_0x6abcx34);_0x6abcx34()};EditorUi[_0xd07e[10]][_0xd07e[15]]= function(){var _0x6abcx3e=mxClient[_0xd07e[29]]&& (document[_0xd07e[30]]== null|| document[_0xd07e[30]]== 5);var _0x6abcx3f=this[_0xd07e[1]][_0xd07e[414]];var _0x6abcx40=this[_0xd07e[1]][_0xd07e[415]];if(this[_0xd07e[1]]== document[_0xd07e[21]]){_0x6abcx3f= document[_0xd07e[21]][_0xd07e[414]]|| document[_0xd07e[156]][_0xd07e[414]];_0x6abcx40= (_0x6abcx3e)?document[_0xd07e[21]][_0xd07e[415]]|| document[_0xd07e[156]][_0xd07e[415]]:document[_0xd07e[156]][_0xd07e[415]]};var _0x6abcx41=Math[_0xd07e[417]](0,Math[_0xd07e[416]](this[_0xd07e[143]],_0x6abcx3f- this[_0xd07e[139]]- 20));var _0x6abcx42=Math[_0xd07e[417]](0,Math[_0xd07e[416]](this[_0xd07e[144]],_0x6abcx40- this[_0xd07e[140]]- this[_0xd07e[141]]- this[_0xd07e[142]]- this[_0xd07e[139]]- 1));this[_0xd07e[23]][_0xd07e[6]][_0xd07e[418]]= this[_0xd07e[140]]+ _0xd07e[419];this[_0xd07e[25]][_0xd07e[6]][_0xd07e[420]]= this[_0xd07e[140]]+ _0xd07e[419];this[_0xd07e[25]][_0xd07e[6]][_0xd07e[418]]= this[_0xd07e[141]]+ _0xd07e[419];var _0x6abcx43=this[_0xd07e[140]]+ this[_0xd07e[141]];if(!mxClient[_0xd07e[421]]){_0x6abcx43+= 1};this[_0xd07e[27]][_0xd07e[6]][_0xd07e[420]]= _0x6abcx43+ _0xd07e[419];this[_0xd07e[27]][_0xd07e[6]][_0xd07e[422]]= _0x6abcx41+ _0xd07e[419];this[_0xd07e[115]][_0xd07e[6]][_0xd07e[422]]= _0x6abcx41+ _0xd07e[419];this[_0xd07e[115]][_0xd07e[6]][_0xd07e[418]]= _0x6abcx42+ _0xd07e[419];this[_0xd07e[115]][_0xd07e[6]][_0xd07e[423]]= this[_0xd07e[142]]+ _0xd07e[419];this[_0xd07e[26]][_0xd07e[6]][_0xd07e[424]]= (_0x6abcx41+ this[_0xd07e[139]])+ _0xd07e[419];this[_0xd07e[26]][_0xd07e[6]][_0xd07e[420]]= this[_0xd07e[27]][_0xd07e[6]][_0xd07e[420]];this[_0xd07e[28]][_0xd07e[6]][_0xd07e[418]]= this[_0xd07e[142]]+ _0xd07e[419];this[_0xd07e[28]][_0xd07e[6]][_0xd07e[425]]= _0xd07e[426];this[_0xd07e[427]][_0xd07e[6]][_0xd07e[420]]= this[_0xd07e[27]][_0xd07e[6]][_0xd07e[420]];this[_0xd07e[427]][_0xd07e[6]][_0xd07e[423]]= this[_0xd07e[115]][_0xd07e[6]][_0xd07e[423]];this[_0xd07e[427]][_0xd07e[6]][_0xd07e[424]]= _0x6abcx41+ _0xd07e[419];this[_0xd07e[428]][_0xd07e[6]][_0xd07e[422]]= this[_0xd07e[27]][_0xd07e[6]][_0xd07e[422]];this[_0xd07e[428]][_0xd07e[6]][_0xd07e[423]]= (_0x6abcx42+ this[_0xd07e[142]])+ _0xd07e[419];if(_0x6abcx3e){this[_0xd07e[23]][_0xd07e[6]][_0xd07e[422]]= _0x6abcx3f+ _0xd07e[419];this[_0xd07e[25]][_0xd07e[6]][_0xd07e[422]]= this[_0xd07e[23]][_0xd07e[6]][_0xd07e[422]];var _0x6abcx44=(_0x6abcx40- _0x6abcx42- this[_0xd07e[139]]- this[_0xd07e[142]]- this[_0xd07e[140]]- this[_0xd07e[141]]);this[_0xd07e[27]][_0xd07e[6]][_0xd07e[418]]= _0x6abcx44+ _0xd07e[419];this[_0xd07e[26]][_0xd07e[6]][_0xd07e[422]]= (_0x6abcx3f- _0x6abcx41- this[_0xd07e[139]])+ _0xd07e[419];var _0x6abcx45=(_0x6abcx40- this[_0xd07e[142]]- this[_0xd07e[140]]- this[_0xd07e[141]]);this[_0xd07e[26]][_0xd07e[6]][_0xd07e[418]]= _0x6abcx45+ _0xd07e[419];this[_0xd07e[28]][_0xd07e[6]][_0xd07e[422]]= this[_0xd07e[23]][_0xd07e[6]][_0xd07e[422]];this[_0xd07e[427]][_0xd07e[6]][_0xd07e[418]]= _0x6abcx45+ _0xd07e[419]}else {this[_0xd07e[27]][_0xd07e[6]][_0xd07e[423]]= (_0x6abcx42+ this[_0xd07e[139]]+ this[_0xd07e[142]])+ _0xd07e[419];this[_0xd07e[26]][_0xd07e[6]][_0xd07e[423]]= this[_0xd07e[115]][_0xd07e[6]][_0xd07e[423]]}};EditorUi[_0xd07e[10]][_0xd07e[14]]= function(){this[_0xd07e[23]]= this[_0xd07e[430]](_0xd07e[429]);this[_0xd07e[25]]= this[_0xd07e[430]](_0xd07e[431]);this[_0xd07e[27]]= this[_0xd07e[430]](_0xd07e[432]);this[_0xd07e[115]]= this[_0xd07e[430]](_0xd07e[433]);this[_0xd07e[26]]= this[_0xd07e[430]](_0xd07e[434]);this[_0xd07e[28]]= this[_0xd07e[430]](_0xd07e[435]);this[_0xd07e[427]]= this[_0xd07e[430]](_0xd07e[436]);this[_0xd07e[428]]= this[_0xd07e[430]](_0xd07e[437]);this[_0xd07e[23]][_0xd07e[6]][_0xd07e[420]]= _0xd07e[438];this[_0xd07e[23]][_0xd07e[6]][_0xd07e[424]]= _0xd07e[438];this[_0xd07e[23]][_0xd07e[6]][_0xd07e[439]]= _0xd07e[438];this[_0xd07e[25]][_0xd07e[6]][_0xd07e[424]]= _0xd07e[438];this[_0xd07e[25]][_0xd07e[6]][_0xd07e[439]]= _0xd07e[438];this[_0xd07e[27]][_0xd07e[6]][_0xd07e[424]]= _0xd07e[438];this[_0xd07e[115]][_0xd07e[6]][_0xd07e[424]]= _0xd07e[438];this[_0xd07e[26]][_0xd07e[6]][_0xd07e[439]]= _0xd07e[438];this[_0xd07e[28]][_0xd07e[6]][_0xd07e[424]]= _0xd07e[438];this[_0xd07e[28]][_0xd07e[6]][_0xd07e[439]]= _0xd07e[438];this[_0xd07e[28]][_0xd07e[6]][_0xd07e[423]]= _0xd07e[438];this[_0xd07e[428]][_0xd07e[6]][_0xd07e[424]]= _0xd07e[438];this[_0xd07e[428]][_0xd07e[6]][_0xd07e[418]]= this[_0xd07e[139]]+ _0xd07e[419];this[_0xd07e[427]][_0xd07e[6]][_0xd07e[422]]= this[_0xd07e[139]]+ _0xd07e[419]};EditorUi[_0xd07e[10]][_0xd07e[16]]= function(){this[_0xd07e[440]]= this[_0xd07e[13]][_0xd07e[442]](this[_0xd07e[430]](_0xd07e[441]));this[_0xd07e[23]][_0xd07e[443]](this[_0xd07e[440]][_0xd07e[1]]);this[_0xd07e[444]]= this[_0xd07e[446]](this[_0xd07e[430]](_0xd07e[445]));this[_0xd07e[25]][_0xd07e[443]](this[_0xd07e[444]][_0xd07e[1]]);this[_0xd07e[447]]= this[_0xd07e[448]](this[_0xd07e[27]]);this[_0xd07e[28]][_0xd07e[443]](this[_0xd07e[449]]());this[_0xd07e[450]]= this[_0xd07e[451]]();this[_0xd07e[0]][_0xd07e[33]](_0xd07e[452],mxUtils[_0xd07e[20]](this,function(){this[_0xd07e[454]](this[_0xd07e[0]][_0xd07e[453]]())}));this[_0xd07e[454]](this[_0xd07e[0]][_0xd07e[453]]());this[_0xd07e[440]][_0xd07e[1]][_0xd07e[443]](this[_0xd07e[450]]);this[_0xd07e[1]][_0xd07e[443]](this[_0xd07e[23]]);this[_0xd07e[1]][_0xd07e[443]](this[_0xd07e[25]]);this[_0xd07e[1]][_0xd07e[443]](this[_0xd07e[27]]);this[_0xd07e[1]][_0xd07e[443]](this[_0xd07e[115]]);this[_0xd07e[1]][_0xd07e[443]](this[_0xd07e[26]]);this[_0xd07e[1]][_0xd07e[443]](this[_0xd07e[28]]);this[_0xd07e[1]][_0xd07e[443]](this[_0xd07e[427]]);this[_0xd07e[1]][_0xd07e[443]](this[_0xd07e[428]]);this[_0xd07e[455]](this[_0xd07e[427]],true,0,mxUtils[_0xd07e[20]](this,function(_0x6abcx46){this[_0xd07e[143]]= _0x6abcx46;this[_0xd07e[15]]();this[_0xd07e[0]][_0xd07e[4]][_0xd07e[136]]();this[_0xd07e[0]][_0xd07e[116]][_0xd07e[137]](false);this[_0xd07e[0]][_0xd07e[116]][_0xd07e[116]][_0xd07e[136]]()}));this[_0xd07e[455]](this[_0xd07e[428]],false,this[_0xd07e[142]],mxUtils[_0xd07e[20]](this,function(_0x6abcx46){this[_0xd07e[144]]= _0x6abcx46;this[_0xd07e[15]]();this[_0xd07e[0]][_0xd07e[116]][_0xd07e[137]](false);this[_0xd07e[0]][_0xd07e[116]][_0xd07e[116]][_0xd07e[136]]()}))};EditorUi[_0xd07e[10]][_0xd07e[451]]= function(){var _0x6abcx2=document[_0xd07e[457]](_0xd07e[456]);_0x6abcx2[_0xd07e[458]]= _0xd07e[459];return _0x6abcx2};EditorUi[_0xd07e[10]][_0xd07e[451]]= function(){var _0x6abcx2=document[_0xd07e[457]](_0xd07e[456]);_0x6abcx2[_0xd07e[458]]= _0xd07e[459];return _0x6abcx2};EditorUi[_0xd07e[10]][_0xd07e[454]]= function(_0x6abcx46){this[_0xd07e[450]][_0xd07e[460]]= _0x6abcx46};EditorUi[_0xd07e[10]][_0xd07e[446]]= function(_0x6abcx2){return new Toolbar(this,_0x6abcx2)};EditorUi[_0xd07e[10]][_0xd07e[448]]= function(_0x6abcx2){return new Sidebar(this,_0x6abcx2)};EditorUi[_0xd07e[10]][_0xd07e[449]]= function(){return this[_0xd07e[430]](_0xd07e[461])};EditorUi[_0xd07e[10]][_0xd07e[430]]= function(_0x6abcx47){var _0x6abcx48=document[_0xd07e[457]](_0xd07e[462]);_0x6abcx48[_0xd07e[458]]= _0x6abcx47;return _0x6abcx48};EditorUi[_0xd07e[10]][_0xd07e[463]]= function(_0x6abcx47){var _0x6abcx48=document[_0xd07e[457]](_0x6abcx47);return _0x6abcx48};EditorUi[_0xd07e[10]][_0xd07e[464]]= function(_0x6abcx47){var _0x6abcx48=document[_0xd07e[457]](_0xd07e[465]);_0x6abcx48[_0xd07e[458]]= _0x6abcx47;return _0x6abcx48};EditorUi[_0xd07e[10]][_0xd07e[455]]= function(_0x6abcx48,_0x6abcx49,_0x6abcx4a,_0x6abcx4b){var _0x6abcx4c=null;var _0x6abcx4d=null;function _0x6abcx4e(){return parseInt(((_0x6abcx49)?_0x6abcx48[_0xd07e[6]][_0xd07e[424]]:_0x6abcx48[_0xd07e[6]][_0xd07e[423]]))}function _0x6abcx4f(_0x6abcx6){if(_0x6abcx4c!= null){var _0x6abcx50= new mxPoint(mxEvent[_0xd07e[466]](_0x6abcx6),mxEvent[_0xd07e[467]](_0x6abcx6));_0x6abcx4b(Math[_0xd07e[417]](0,_0x6abcx4d+ ((_0x6abcx49)?(_0x6abcx50[_0xd07e[468]]- _0x6abcx4c[_0xd07e[468]]):(_0x6abcx4c[_0xd07e[469]]- _0x6abcx50[_0xd07e[469]]))- _0x6abcx4a));mxEvent[_0xd07e[110]](_0x6abcx6)}}function _0x6abcx51(_0x6abcx6){_0x6abcx4f(_0x6abcx6);_0x6abcx4c= null;_0x6abcx4d= null}mxEvent[_0xd07e[118]](_0x6abcx48,function(_0x6abcx6){_0x6abcx4c= new mxPoint(mxEvent[_0xd07e[466]](_0x6abcx6),mxEvent[_0xd07e[467]](_0x6abcx6));_0x6abcx4d= _0x6abcx4e();mxEvent[_0xd07e[110]](_0x6abcx6)});mxEvent[_0xd07e[33]](document,_0xd07e[470],_0x6abcx4f);mxEvent[_0xd07e[33]](document,_0xd07e[471],_0x6abcx4f);mxEvent[_0xd07e[33]](document,_0xd07e[472],_0x6abcx51);mxEvent[_0xd07e[33]](document,_0xd07e[473],_0x6abcx51)};EditorUi[_0xd07e[10]][_0xd07e[109]]= function(_0x6abcx48,_0x6abcx3f,_0x6abcx40,_0x6abcx52,_0x6abcx53,_0x6abcx54){this[_0xd07e[474]]();this[_0xd07e[475]]= new Dialog(this,_0x6abcx48,_0x6abcx3f,(mxClient[_0xd07e[476]])?_0x6abcx40- 12:_0x6abcx40,_0x6abcx52,_0x6abcx53,_0x6abcx54)};EditorUi[_0xd07e[10]][_0xd07e[474]]= function(){if(this[_0xd07e[475]]!= null){this[_0xd07e[475]][_0xd07e[477]]();this[_0xd07e[475]]= null;this[_0xd07e[0]][_0xd07e[4]][_0xd07e[1]][_0xd07e[47]]()}};EditorUi[_0xd07e[10]][_0xd07e[478]]= function(_0x6abcx55){if(!_0x6abcx55&& this[_0xd07e[0]][_0xd07e[161]]!= null){this[_0xd07e[209]](this[_0xd07e[0]][_0xd07e[479]]())}else {this[_0xd07e[109]]( new SaveDialog(this)[_0xd07e[1]],300,100,true,true)}};EditorUi[_0xd07e[10]][_0xd07e[480]]= function(_0x6abcx55){if(!_0x6abcx55&& this[_0xd07e[0]][_0xd07e[161]]!= null){this[_0xd07e[343]](this[_0xd07e[0]][_0xd07e[479]]())}else {}};EditorUi[_0xd07e[10]][_0xd07e[481]]= function(_0x6abcx56,_0x6abcx57,_0x6abcx58){var _0x6abcx3=this[_0xd07e[0]][_0xd07e[4]];var _0x6abcxb=_0x6abcx3[_0xd07e[384]]();_0x6abcx57= this[_0xd07e[482]]!= null?this[_0xd07e[482]]:_0x6abcx57;_0x6abcx3[_0xd07e[102]]()[_0xd07e[483]]();try{_0x6abcx56[_0xd07e[484]](_0x6abcx3[_0xd07e[341]](),_0x6abcxb)}catch(e){throw e}finally{if(_0x6abcx57&& navigator[_0xd07e[486]][_0xd07e[106]](_0xd07e[485])< 0){var _0x6abcx59= new mxMorphing(_0x6abcx3);_0x6abcx59[_0xd07e[33]](mxEvent.DONE,mxUtils[_0xd07e[20]](this,function(){_0x6abcx3[_0xd07e[102]]()[_0xd07e[487]]()}));_0x6abcx59[_0xd07e[488]]()}else {_0x6abcx3[_0xd07e[102]]()[_0xd07e[487]]()}}};EditorUi[_0xd07e[10]][_0xd07e[133]]= function(_0x6abcx1){var _0x6abcx3=this[_0xd07e[0]][_0xd07e[4]];var _0x6abcxf= new mxKeyHandler(_0x6abcx3);_0x6abcxf[_0xd07e[489]]= function(_0x6abcx6){return mxEvent[_0xd07e[489]](_0x6abcx6)|| (mxClient[_0xd07e[490]]&& _0x6abcx6[_0xd07e[491]])};function _0x6abcx5a(_0x6abcx5b){if(!_0x6abcx3[_0xd07e[365]]()){var _0x6abcx4a=0;var _0x6abcx5c=0;if(_0x6abcx5b== 37){_0x6abcx4a= -1}else {if(_0x6abcx5b== 38){_0x6abcx5c= -1}else {if(_0x6abcx5b== 39){_0x6abcx4a= 1}else {if(_0x6abcx5b== 40){_0x6abcx5c= 1}}}};_0x6abcx3[_0xd07e[492]](_0x6abcx3[_0xd07e[366]](),_0x6abcx4a,_0x6abcx5c);_0x6abcx3[_0xd07e[493]](_0x6abcx3[_0xd07e[384]]())}}var _0x6abcx5d=mxUtils[_0xd07e[20]](this,function(_0x6abcx5e,_0x6abcx5f,_0x6abcx2f,_0x6abcx60){var _0x6abcx61=this[_0xd07e[12]][_0xd07e[148]](_0x6abcx2f);if(_0x6abcx61!= null){var _0x6abcx21=function(){if(_0x6abcx61[_0xd07e[494]]){_0x6abcx61[_0xd07e[495]]()}};if(_0x6abcx5f){if(_0x6abcx60){_0x6abcxf[_0xd07e[496]](_0x6abcx5e,_0x6abcx21)}else {_0x6abcxf[_0xd07e[497]](_0x6abcx5e,_0x6abcx21)}}else {if(_0x6abcx60){_0x6abcxf[_0xd07e[498]](_0x6abcx5e,_0x6abcx21)}else {_0x6abcxf[_0xd07e[499]](_0x6abcx5e,_0x6abcx21)}}}});var _0x6abcx62=this;var _0x6abcx63=_0x6abcxf[_0xd07e[500]];_0x6abcxf[_0xd07e[500]]= function(_0x6abcx6){_0x6abcx62[_0xd07e[474]]();_0x6abcx63[_0xd07e[50]](this,arguments)};_0x6abcxf[_0xd07e[501]]= function(){};_0x6abcxf[_0xd07e[499]](8,function(){_0x6abcx3[_0xd07e[502]](true)});_0x6abcxf[_0xd07e[499]](13,function(){_0x6abcx3[_0xd07e[502]](false)});_0x6abcxf[_0xd07e[499]](33,function(){_0x6abcx3[_0xd07e[406]]()});_0x6abcxf[_0xd07e[499]](34,function(){_0x6abcx3[_0xd07e[407]]()});_0x6abcxf[_0xd07e[499]](36,function(){_0x6abcx3[_0xd07e[405]]()});_0x6abcxf[_0xd07e[499]](35,function(){_0x6abcx3[_0xd07e[15]]()});_0x6abcxf[_0xd07e[499]](37,function(){_0x6abcx5a(37)});_0x6abcxf[_0xd07e[499]](38,function(){_0x6abcx5a(38)});_0x6abcxf[_0xd07e[499]](39,function(){_0x6abcx5a(39)});_0x6abcxf[_0xd07e[499]](40,function(){_0x6abcx5a(40)});_0x6abcxf[_0xd07e[499]](113,function(){_0x6abcx3[_0xd07e[107]]()});_0x6abcx5d(46,false,_0xd07e[367]);_0x6abcx5d(82,true,_0xd07e[377]);_0x6abcx5d(83,true,_0xd07e[209]);_0x6abcx5d(83,true,_0xd07e[225],true);_0x6abcx5d(107,false,_0xd07e[503]);_0x6abcx5d(109,false,_0xd07e[504]);_0x6abcx5d(65,true,_0xd07e[505]);_0x6abcx5d(86,true,_0xd07e[506],true);_0x6abcx5d(69,true,_0xd07e[507],true);_0x6abcx5d(69,true,_0xd07e[508]);_0x6abcx5d(66,true,_0xd07e[373]);_0x6abcx5d(70,true,_0xd07e[372]);_0x6abcx5d(68,true,_0xd07e[368]);_0x6abcx5d(90,true,_0xd07e[361]);_0x6abcx5d(89,true,_0xd07e[362]);_0x6abcx5d(88,true,_0xd07e[151]);_0x6abcx5d(67,true,_0xd07e[152]);_0x6abcx5d(81,true,_0xd07e[509]);_0x6abcx5d(86,true,_0xd07e[147]);_0x6abcx5d(71,true,_0xd07e[383]);_0x6abcx5d(71,true,_0xd07e[510],true);_0x6abcx5d(85,true,_0xd07e[385]);_0x6abcx5d(112,false,_0xd07e[511]);_0x6abcx5d(80,true,_0xd07e[343],true);return _0x6abcxf};EditorUi[_0xd07e[10]][_0xd07e[56]]= function(_0x6abcx3,_0x6abcx38,_0x6abcx64,_0x6abcx65){for(var _0x6abcx39=0;_0x6abcx39< _0x6abcx38[_0xd07e[179]];_0x6abcx39++){_0x6abcx3[_0xd07e[514]]( new mxMultiplicity(true,_0x6abcx38[_0x6abcx39],null,null,_0x6abcx64[_0x6abcx39][0],_0x6abcx64[_0x6abcx39][1],null,mxResources[_0xd07e[148]](_0x6abcx38[_0x6abcx39])+ mxResources[_0xd07e[148]](_0xd07e[512])+ _0x6abcx64[_0x6abcx39][0]+ mxResources[_0xd07e[148]](_0xd07e[513]),null));_0x6abcx3[_0xd07e[514]]( new mxMultiplicity(false,_0x6abcx38[_0x6abcx39],null,null,_0x6abcx65[_0x6abcx39][0],_0x6abcx65[_0x6abcx39][1],null,mxResources[_0xd07e[148]](_0x6abcx38[_0x6abcx39])+ mxResources[_0xd07e[148]](_0xd07e[512])+ _0x6abcx65[_0x6abcx39][0]+ mxResources[_0xd07e[148]](_0xd07e[515]),null))}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/public/assets/plugins/square/js/Graph.js b/public/assets/plugins/square/js/Graph.js index 21912e0..66dc905 100644 --- a/public/assets/plugins/square/js/Graph.js +++ b/public/assets/plugins/square/js/Graph.js @@ -1 +1 @@ -var _0x544f=["\x63\x61\x6C\x6C","\x73\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x73\x65\x74\x44\x72\x6F\x70\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x50\x61\x6E\x6E\x69\x6E\x67","\x49\x53\x5F\x54\x4F\x55\x43\x48","\x73\x65\x74\x54\x6F\x6F\x6C\x74\x69\x70\x73","\x73\x65\x74\x41\x6C\x6C\x6F\x77\x4C\x6F\x6F\x70\x73","\x73\x65\x74\x4D\x75\x6C\x74\x69\x67\x72\x61\x70\x68","\x61\x6C\x6C\x6F\x77\x41\x75\x74\x6F\x50\x61\x6E\x6E\x69\x6E\x67","\x72\x65\x73\x65\x74\x45\x64\x67\x65\x73\x4F\x6E\x43\x6F\x6E\x6E\x65\x63\x74","\x63\x6F\x6E\x73\x74\x72\x61\x69\x6E\x43\x68\x69\x6C\x64\x72\x65\x6E","\x74\x61\x72\x67\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x49\x6D\x61\x67\x65","\x63\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x74\x41\x6C\x6C\x6F\x77\x44\x61\x6E\x67\x6C\x69\x6E\x67\x45\x64\x67\x65\x73","\x73\x65\x74\x43\x72\x65\x61\x74\x65\x54\x61\x72\x67\x65\x74","\x69\x73\x56\x61\x6C\x69\x64\x53\x6F\x75\x72\x63\x65","\x61\x70\x70\x6C\x79","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x63\x6F\x6E\x6E\x65\x63\x74","\x32","\x61\x6C\x74\x65\x72\x6E\x61\x74\x65\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x76\x65\x72\x74\x69\x63\x61\x6C","\x6C\x6F\x61\x64\x53\x74\x79\x6C\x65\x73\x68\x65\x65\x74","\x67\x65\x74\x52\x75\x62\x62\x65\x72\x62\x61\x6E\x64","\x63\x75\x72\x73\x6F\x72","\x73\x74\x79\x6C\x65","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x70\x6F\x69\x6E\x74\x65\x72","\x62\x69\x6E\x64","\x61\x64\x64\x4C\x69\x73\x74\x65\x6E\x65\x72","\x70\x61\x6E\x6E\x69\x6E\x67\x48\x61\x6E\x64\x6C\x65\x72","\x64\x65\x66\x61\x75\x6C\x74","\x69\x73\x48\x74\x6D\x6C\x4C\x61\x62\x65\x6C","\x67\x65\x74\x53\x74\x61\x74\x65","\x76\x69\x65\x77","\x67\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65","\x68\x74\x6D\x6C","\x31","\x77\x68\x69\x74\x65\x53\x70\x61\x63\x65","\x77\x72\x61\x70","\x67\x65\x74\x4C\x61\x62\x65\x6C\x56\x61\x6C\x75\x65","\x63\x65\x6C\x6C\x52\x65\x6E\x64\x65\x72\x65\x72","\x68\x74\x6D\x6C\x45\x6E\x74\x69\x74\x69\x65\x73","\x69\x73\x43\x65\x6C\x6C\x4C\x6F\x63\x6B\x65\x64","\x74\x61\x70\x41\x6E\x64\x48\x6F\x6C\x64\x54\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x74\x61\x70\x41\x6E\x64\x48\x6F\x6C\x64","\x61\x63\x74\x69\x76\x65","\x67\x72\x61\x70\x68","\x67\x65\x74\x47\x72\x61\x70\x68\x58","\x67\x65\x74\x47\x72\x61\x70\x68\x59","\x73\x74\x61\x72\x74","\x70\x61\x6E\x6E\x69\x6E\x67\x54\x72\x69\x67\x67\x65\x72","\x63\x65\x6C\x6C","\x69\x73\x43\x65\x6C\x6C\x53\x65\x6C\x65\x63\x74\x65\x64","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x6F\x75\x6E\x74","\x72\x65\x6D\x6F\x76\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x69\x6E\x69\x74\x54\x6F\x75\x63\x68","\x65\x78\x74\x65\x6E\x64","\x6D\x69\x6E\x46\x69\x74\x53\x63\x61\x6C\x65","\x6D\x61\x78\x46\x69\x74\x53\x63\x61\x6C\x65","\x67\x65\x74\x44\x6F\x63\x75\x6D\x65\x6E\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x2F\x64\x65\x66\x61\x75\x6C\x74\x2E\x78\x6D\x6C","\x6C\x6F\x61\x64","\x6F\x77\x6E\x65\x72\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x67\x65\x74\x53\x74\x79\x6C\x65\x73\x68\x65\x65\x74","\x64\x65\x63\x6F\x64\x65","\x66\x6C\x69\x70\x45\x64\x67\x65","\x67\x65\x74\x56\x61\x6C\x75\x65","\x45\x4C\x42\x4F\x57\x5F\x48\x4F\x52\x49\x5A\x4F\x4E\x54\x41\x4C","\x45\x4C\x42\x4F\x57\x5F\x56\x45\x52\x54\x49\x43\x41\x4C","\x73\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x73","\x73\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65","\x69\x73\x45\x64\x67\x65","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x63\x6C\x6F\x6E\x65\x43\x65\x6C\x6C\x73","\x67\x65\x6F\x6D\x65\x74\x72\x79","\x70\x6F\x69\x6E\x74\x73","\x67\x65\x74\x53\x74\x79\x6C\x65","\x73\x65\x74\x53\x74\x79\x6C\x65","\x63\x72\x65\x61\x74\x65\x45\x64\x67\x65\x53\x74\x61\x74\x65","\x63\x72\x65\x61\x74\x65\x53\x74\x61\x74\x65","\x66\x61\x63\x74\x6F\x72\x79\x4D\x65\x74\x68\x6F\x64","\x69\x73\x43\x65\x6C\x6C\x46\x6F\x6C\x64\x61\x62\x6C\x65","\x66\x6F\x6C\x64\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x53\x77\x69\x6D\x6C\x61\x6E\x65","\x69\x73\x56\x61\x6C\x69\x64\x52\x6F\x6F\x74","\x63\x72\x65\x61\x74\x65\x47\x72\x6F\x75\x70\x43\x65\x6C\x6C","\x67\x72\x6F\x75\x70","\x67\x65\x74\x54\x6F\x6F\x6C\x74\x69\x70\x46\x6F\x72\x43\x65\x6C\x6C","","\x69\x73\x56\x65\x72\x74\x65\x78","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x5F","\x6E\x6F\x64\x65\x4E\x61\x6D\x65","\x76\x61\x6C\x75\x65","\x67\x65\x74","\x63\x6F\x6E\x76\x65\x72\x74\x56\x61\x6C\x75\x65\x54\x6F\x53\x74\x72\x69\x6E\x67","\x6F\x62\x6A\x65\x63\x74","\x6C\x61\x62\x65\x6C","\x67\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x63\x65\x6C\x6C\x4C\x61\x62\x65\x6C\x43\x68\x61\x6E\x67\x65\x64","\x63\x6C\x6F\x6E\x65\x4E\x6F\x64\x65","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x73\x65\x74\x4C\x69\x6E\x6B\x46\x6F\x72\x43\x65\x6C\x6C","\x63\x72\x65\x61\x74\x65\x58\x6D\x6C\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x55\x73\x65\x72\x4F\x62\x6A\x65\x63\x74","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x6C\x65\x6E\x67\x74\x68","\x6C\x69\x6E\x6B","\x72\x65\x6D\x6F\x76\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x73\x65\x74\x56\x61\x6C\x75\x65","\x6D\x6F\x64\x65\x6C","\x67\x65\x74\x4C\x69\x6E\x6B\x46\x6F\x72\x43\x65\x6C\x6C","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64","\x6D\x61\x72\x6B\x65\x72","\x66\x69\x72\x73\x74","\x68\x69\x64\x65\x4D\x65\x6E\x75","\x75\x70\x64\x61\x74\x65\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74","\x67\x72\x61\x70\x68\x58","\x67\x72\x61\x70\x68\x59","\x67\x65\x74\x43\x65\x6C\x6C\x41\x74","\x73\x74\x61\x74\x65","\x73\x68\x61\x70\x65","\x6E\x6F\x64\x65","\x66\x69\x72\x65\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74","\x4D\x4F\x55\x53\x45\x5F\x44\x4F\x57\x4E","\x69\x73\x4D\x65\x6E\x75\x53\x68\x6F\x77\x69\x6E\x67","\x67\x65\x74\x43\x65\x6C\x6C","\x69\x73\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x45\x6D\x70\x74\x79","\x4D\x4F\x55\x53\x45\x5F\x55\x50","\x69\x73\x45\x64\x69\x74\x69\x6E\x67","\x67\x65\x74\x45\x76\x65\x6E\x74","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x58","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x59","\x70\x6F\x70\x75\x70","\x63\x6F\x6E\x73\x75\x6D\x65","\x4D\x4F\x55\x53\x45\x5F\x4D\x4F\x56\x45","\x69\x73\x43\x6F\x6E\x73\x75\x6D\x65\x64","\x72\x6F\x74\x61\x74\x69\x6F\x6E\x45\x6E\x61\x62\x6C\x65\x64","\x62\x61\x73\x65\x53\x70\x61\x63\x69\x6E\x67\x54\x6F\x70","\x62\x61\x73\x65\x53\x70\x61\x63\x69\x6E\x67\x42\x6F\x74\x74\x6F\x6D","\x48\x41\x4E\x44\x4C\x45\x5F\x53\x49\x5A\x45","\x4C\x41\x42\x45\x4C\x5F\x48\x41\x4E\x44\x4C\x45\x5F\x53\x49\x5A\x45","\x74\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x67\x72\x69\x64\x53\x69\x7A\x65","\x73\x65\x6C\x65\x63\x74\x4F\x6E\x50\x6F\x70\x75\x70","\x75\x73\x65\x4C\x65\x66\x74\x42\x75\x74\x74\x6F\x6E\x46\x6F\x72\x50\x61\x6E\x6E\x69\x6E\x67","\x69\x73\x50\x61\x6E\x6E\x69\x6E\x67\x54\x72\x69\x67\x67\x65\x72","\x69\x67\x6E\x6F\x72\x65\x43\x65\x6C\x6C","\x69\x73\x43\x6F\x6E\x74\x72\x6F\x6C\x44\x6F\x77\x6E","\x69\x73\x53\x68\x69\x66\x74\x44\x6F\x77\x6E","\x75\x73\x65\x50\x6F\x70\x75\x70\x54\x72\x69\x67\x67\x65\x72","\x69\x73\x50\x6F\x70\x75\x70\x54\x72\x69\x67\x67\x65\x72","\x6D\x6F\x75\x73\x65\x44\x6F\x77\x6E","\x64\x65\x6C\x61\x79\x65\x64\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x48\x61\x6E\x64\x6C\x65\x72\x73","\x74\x6F\x6F\x6C\x74\x69\x70\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x74\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73\x48\x61\x6E\x64\x6C\x65\x72","\x70\x61\x6E\x6E\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x67\x72\x61\x70\x68\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x6C\x65\x63\x74\x43\x65\x6C\x6C\x73","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x64\x62\x6C\x43\x6C\x69\x63\x6B","\x63\x6F\x6E\x76\x65\x72\x74\x50\x6F\x69\x6E\x74","\x78","\x79","\x2F\x74\x6F\x75\x63\x68\x2D\x68\x61\x6E\x64\x6C\x65\x2E\x70\x6E\x67","\x68\x61\x6E\x64\x6C\x65\x49\x6D\x61\x67\x65","\x73\x69\x7A\x65\x72\x49\x6D\x61\x67\x65","\x73\x72\x63","\x2F\x74\x6F\x75\x63\x68\x2D\x63\x6F\x6E\x6E\x65\x63\x74\x6F\x72\x2E\x70\x6E\x67","\x69\x6E\x69\x74","\x69\x73\x43\x65\x6C\x6C\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x63\x6F\x6E\x6E\x65\x63\x74\x6F\x72\x49\x6D\x67","\x63\x72\x65\x61\x74\x65\x49\x6D\x61\x67\x65","\x77\x69\x64\x74\x68","\x32\x39\x70\x78","\x68\x65\x69\x67\x68\x74","\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x61\x62\x73\x6F\x6C\x75\x74\x65","\x74\x69\x74\x6C\x65","\x72\x65\x64\x69\x72\x65\x63\x74\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74\x73","\x70\x61\x64\x64\x69\x6E\x67","\x32\x70\x78","\x69\x73\x4D\x6F\x75\x73\x65\x44\x6F\x77\x6E","\x61\x64\x64\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x72\x65\x64\x72\x61\x77\x54\x6F\x6F\x6C\x73","\x72\x65\x64\x72\x61\x77","\x73\x69\x6E\x67\x6C\x65\x53\x69\x7A\x65\x72","\x6C\x65\x66\x74","\x6F\x66\x66\x73\x65\x74\x57\x69\x64\x74\x68","\x70\x78","\x74\x6F\x70","\x6F\x66\x66\x73\x65\x74\x48\x65\x69\x67\x68\x74","\x64\x65\x73\x74\x72\x6F\x79","\x72\x65\x6D\x6F\x76\x65\x43\x68\x69\x6C\x64","\x70\x61\x72\x65\x6E\x74\x4E\x6F\x64\x65","\x2F\x63\x6F\x6E\x6E\x65\x63\x74\x6F\x72\x2E\x70\x6E\x67","\x63\x6F\x6E\x6E\x65\x63\x74\x49\x6D\x61\x67\x65","\x49\x53\x5F\x49\x45","\x49\x53\x5F\x53\x56\x47","\x64\x69\x76","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x75\x72\x6C\x28","\x29","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x63\x65\x6E\x74\x65\x72","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x52\x65\x70\x65\x61\x74","\x6E\x6F\x2D\x72\x65\x70\x65\x61\x74","\x64\x69\x73\x70\x6C\x61\x79","\x49\x53\x5F\x51\x55\x49\x52\x4B\x53","\x69\x6E\x6C\x69\x6E\x65","\x69\x6E\x6C\x69\x6E\x65\x2D\x62\x6C\x6F\x63\x6B","\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E"];Graph= function(_0x90acx1,_0x90acx2,_0x90acx3,_0x90acx4){mxGraph[_0x544f[0]](this,_0x90acx1,_0x90acx2,_0x90acx3,_0x90acx4);this[_0x544f[1]](true);this[_0x544f[2]](false);this[_0x544f[3]](true);this[_0x544f[5]](!mxClient[_0x544f[4]]);this[_0x544f[6]](false);this[_0x544f[7]](false);this[_0x544f[8]]= true;this[_0x544f[9]]= false;this[_0x544f[10]]= false;this[_0x544f[12]][_0x544f[11]]= true;this[_0x544f[13]](false);this[_0x544f[12]][_0x544f[14]](false);this[_0x544f[12]][_0x544f[15]]= function(){return mxConnectionHandler[_0x544f[17]][_0x544f[15]][_0x544f[16]](this,arguments)&& urlParams[_0x544f[18]]!= _0x544f[19]};this[_0x544f[20]]= _0x544f[21];if(_0x90acx4== null){this[_0x544f[22]]()};var _0x90acx5= new mxRubberband(this);this[_0x544f[23]]= function(){return _0x90acx5};this[_0x544f[30]][_0x544f[29]](mxEvent.PAN_START,mxUtils[_0x544f[28]](this,function(){this[_0x544f[26]][_0x544f[25]][_0x544f[24]]= _0x544f[27]}));this[_0x544f[30]][_0x544f[29]](mxEvent.PAN_END,mxUtils[_0x544f[28]](this,function(){this[_0x544f[26]][_0x544f[25]][_0x544f[24]]= _0x544f[31]}));this[_0x544f[32]]= function(_0x90acx6){var _0x90acx7=this[_0x544f[34]][_0x544f[33]](_0x90acx6);var _0x90acx8=(_0x90acx7!= null)?_0x90acx7[_0x544f[25]]:this[_0x544f[35]](_0x90acx6);return _0x90acx8[_0x544f[36]]== _0x544f[37]|| _0x90acx8[_0x544f[38]]== _0x544f[39]};this[_0x544f[41]][_0x544f[40]]= function(_0x90acx7){var _0x90acx9=mxCellRenderer[_0x544f[17]][_0x544f[40]][_0x544f[16]](this,arguments);if(_0x90acx7[_0x544f[25]][_0x544f[38]]== _0x544f[39]&& _0x90acx7[_0x544f[25]][_0x544f[36]]!= 1){_0x90acx9= mxUtils[_0x544f[42]](_0x90acx9,false)};return _0x90acx9};this[_0x544f[43]]= function(_0x90acx6){return false};this[_0x544f[12]][_0x544f[44]]= 16;var _0x90acxa=this[_0x544f[12]][_0x544f[45]];this[_0x544f[12]][_0x544f[45]]= function(_0x90acxb,_0x90acx7){if(_0x90acx7== null){if(!this[_0x544f[47]][_0x544f[30]][_0x544f[46]]){_0x90acx5[_0x544f[50]](_0x90acxb[_0x544f[48]](),_0x90acxb[_0x544f[49]]());this[_0x544f[47]][_0x544f[30]][_0x544f[51]]= false}}else {if(tapAndHoldStartsConnection){_0x90acxa[_0x544f[16]](this,arguments)}else {if(this[_0x544f[47]][_0x544f[53]](_0x90acx7[_0x544f[52]])&& this[_0x544f[47]][_0x544f[54]]()> 1){this[_0x544f[47]][_0x544f[55]](_0x90acx7[_0x544f[52]])}}}};if(touchStyle){this[_0x544f[56]]()}};mxUtils[_0x544f[57]](Graph,mxGraph);Graph[_0x544f[17]][_0x544f[58]]= null;Graph[_0x544f[17]][_0x544f[59]]= null;Graph[_0x544f[17]][_0x544f[22]]= function(){var _0x90acxc=mxUtils[_0x544f[62]](STYLE_PATH+ _0x544f[61])[_0x544f[60]]();var _0x90acxd= new mxCodec(_0x90acxc[_0x544f[63]]);_0x90acxd[_0x544f[65]](_0x90acxc,this[_0x544f[64]]())};Graph[_0x544f[17]][_0x544f[66]]= function(_0x90acxe){if(_0x90acxe!= null){var _0x90acx7=this[_0x544f[34]][_0x544f[33]](_0x90acxe);var _0x90acx8=(_0x90acx7!= null)?_0x90acx7[_0x544f[25]]:this[_0x544f[35]](_0x90acxe);if(_0x90acx8!= null){var _0x90acxf=mxUtils[_0x544f[67]](_0x90acx8,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL);var _0x90acx10=(_0x90acxf== mxConstants[_0x544f[68]])?mxConstants[_0x544f[69]]:mxConstants[_0x544f[68]];this[_0x544f[70]](mxConstants.STYLE_ELBOW,_0x90acx10,[_0x90acxe])}}};Graph[_0x544f[17]][_0x544f[71]]= function(_0x90acx6){if(_0x90acx6!= null&& this[_0x544f[73]]()[_0x544f[72]](_0x90acx6)){var _0x90acx11=this[_0x544f[73]]()[_0x544f[74]]([_0x90acx6])[0];if(_0x90acx11[_0x544f[75]]!= null){_0x90acx11[_0x544f[75]][_0x544f[76]]= null};var _0x90acx8=_0x90acx11[_0x544f[77]]();_0x90acx8= mxUtils[_0x544f[78]](_0x90acx8,mxConstants.STYLE_ENTRY_X,null);_0x90acx8= mxUtils[_0x544f[78]](_0x90acx8,mxConstants.STYLE_ENTRY_Y,null);_0x90acx8= mxUtils[_0x544f[78]](_0x90acx8,mxConstants.STYLE_EXIT_X,null);_0x90acx8= mxUtils[_0x544f[78]](_0x90acx8,mxConstants.STYLE_EXIT_Y,null);_0x90acx11[_0x544f[78]](_0x90acx8);this[_0x544f[12]][_0x544f[79]]= function(_0x90acxb){return this[_0x544f[47]][_0x544f[34]][_0x544f[80]](_0x90acx11)};this[_0x544f[12]][_0x544f[81]]= function(){return this[_0x544f[47]][_0x544f[74]]([_0x90acx11])[0]}}};Graph[_0x544f[17]][_0x544f[82]]= function(_0x90acx6){return this[_0x544f[83]]&& this[_0x544f[84]](_0x90acx6)};Graph[_0x544f[17]][_0x544f[85]]= function(_0x90acx6){return this[_0x544f[84]](_0x90acx6)};Graph[_0x544f[17]][_0x544f[86]]= function(){var _0x90acx12=mxGraph[_0x544f[17]][_0x544f[86]][_0x544f[16]](this,arguments);_0x90acx12[_0x544f[78]](_0x544f[87]);return _0x90acx12};Graph[_0x544f[17]][_0x544f[88]]= function(_0x90acx6){var _0x90acx13=_0x544f[89];if(this[_0x544f[73]]()[_0x544f[90]](_0x90acx6)){_0x90acx13+= mxResources[_0x544f[94]](_0x544f[91]+ _0x90acx6[_0x544f[93]][_0x544f[92]])|| _0x544f[89]}else {if(this[_0x544f[73]]()[_0x544f[72]](_0x90acx6)){_0x90acx13= mxGraph[_0x544f[17]][_0x544f[88]][_0x544f[16]](this,arguments)}};return _0x90acx13};Graph[_0x544f[17]][_0x544f[95]]= function(_0x90acx6){if(_0x90acx6[_0x544f[93]]!= null&& typeof (_0x90acx6[_0x544f[93]])== _0x544f[96]){return _0x90acx6[_0x544f[93]][_0x544f[98]](_0x544f[97])};return mxGraph[_0x544f[17]][_0x544f[95]][_0x544f[16]](this,arguments)};Graph[_0x544f[17]][_0x544f[99]]= function(_0x90acx6,_0x90acx10,_0x90acx14){if(_0x90acx6[_0x544f[93]]!= null&& typeof (_0x90acx6[_0x544f[93]])== _0x544f[96]){var _0x90acx15=_0x90acx6[_0x544f[93]][_0x544f[100]](true);_0x90acx15[_0x544f[101]](_0x544f[97],_0x90acx10);_0x90acx10= _0x90acx15};mxGraph[_0x544f[17]][_0x544f[99]][_0x544f[16]](this,arguments)};Graph[_0x544f[17]][_0x544f[102]]= function(_0x90acx6,_0x90acx16){var _0x90acx10=null;if(_0x90acx6[_0x544f[93]]!= null&& typeof (_0x90acx6[_0x544f[93]])== _0x544f[96]){_0x90acx10= _0x90acx6[_0x544f[93]][_0x544f[100]](true)}else {var _0x90acx17=mxUtils[_0x544f[103]]();_0x90acx10= _0x90acx17[_0x544f[105]](_0x544f[104]);_0x90acx10[_0x544f[101]](_0x544f[97],_0x90acx6[_0x544f[93]])};if(_0x90acx16!= null&& _0x90acx16[_0x544f[106]]> 0){_0x90acx10[_0x544f[101]](_0x544f[107],_0x90acx16)}else {_0x90acx10[_0x544f[108]](_0x544f[107])};this[_0x544f[110]][_0x544f[109]](_0x90acx6,_0x90acx10)};Graph[_0x544f[17]][_0x544f[111]]= function(_0x90acx6){if(_0x90acx6[_0x544f[93]]!= null&& typeof (_0x90acx6[_0x544f[93]])== _0x544f[96]){return _0x90acx6[_0x544f[93]][_0x544f[98]](_0x544f[107])};return null};Graph[_0x544f[17]][_0x544f[56]]= function(){this[_0x544f[12]][_0x544f[113]][_0x544f[112]]= function(){return this[_0x544f[47]][_0x544f[12]][_0x544f[114]]!= null};this[_0x544f[29]](mxEvent.START_EDITING,function(_0x90acx18,_0x90acx19){this[_0x544f[30]][_0x544f[115]]()});var _0x90acx1a=false;var _0x90acx1b=null;this[_0x544f[116]]= function(_0x90acxb){mxGraph[_0x544f[17]][_0x544f[116]][_0x544f[16]](this,arguments);if(_0x90acxb[_0x544f[33]]()== null){var _0x90acx6=this[_0x544f[119]](_0x90acxb[_0x544f[117]],_0x90acxb[_0x544f[118]]);if(this[_0x544f[73]]()[_0x544f[72]](_0x90acx6)){_0x90acxb[_0x544f[120]]= this[_0x544f[34]][_0x544f[33]](_0x90acx6);if(_0x90acxb[_0x544f[120]]!= null&& _0x90acxb[_0x544f[120]][_0x544f[121]]!= null){this[_0x544f[26]][_0x544f[25]][_0x544f[24]]= _0x90acxb[_0x544f[120]][_0x544f[121]][_0x544f[122]][_0x544f[25]][_0x544f[24]]}}};if(_0x90acxb[_0x544f[33]]()== null){this[_0x544f[26]][_0x544f[25]][_0x544f[24]]= _0x544f[31]}};this[_0x544f[123]]= function(_0x90acx1c,_0x90acxb,_0x90acx18){if(_0x90acx1c== mxEvent[_0x544f[124]]){if(!this[_0x544f[30]][_0x544f[125]]()){_0x90acx1b= _0x90acxb[_0x544f[126]]();_0x90acx1a= (_0x90acx1b!= null)?this[_0x544f[53]](_0x90acx1b):this[_0x544f[127]]()}else {_0x90acx1a= false;_0x90acx1b= null}}else {if(_0x90acx1c== mxEvent[_0x544f[128]]){if(_0x90acx1a&& !this[_0x544f[129]]()){if(!this[_0x544f[30]][_0x544f[125]]()){var _0x90acx1d=mxEvent[_0x544f[131]](_0x90acxb[_0x544f[130]]());var _0x90acx1e=mxEvent[_0x544f[132]](_0x90acxb[_0x544f[130]]());this[_0x544f[30]][_0x544f[133]](_0x90acx1d+ 16,_0x90acx1e,_0x90acx1b,_0x90acxb[_0x544f[130]]())};_0x90acx1a= false;_0x90acx1b= null;_0x90acxb[_0x544f[134]]();return};_0x90acx1a= false;_0x90acx1b= null}};mxGraph[_0x544f[17]][_0x544f[123]][_0x544f[16]](this,arguments);if(_0x90acx1c== mxEvent[_0x544f[135]]&& _0x90acxb[_0x544f[136]]()){_0x90acx1a= false;_0x90acx1b= null}}};(function(){mxVertexHandler[_0x544f[17]][_0x544f[137]]= true;mxText[_0x544f[17]][_0x544f[138]]= 5;mxText[_0x544f[17]][_0x544f[139]]= 1;if(touchStyle){mxConstants[_0x544f[140]]= 16;mxConstants[_0x544f[141]]= 7;if(mxClient[_0x544f[4]]){mxVertexHandler[_0x544f[17]][_0x544f[142]]= 4;mxEdgeHandler[_0x544f[17]][_0x544f[142]]= 6;Graph[_0x544f[17]][_0x544f[142]]= 14;Graph[_0x544f[17]][_0x544f[143]]= 20;mxPanningHandler[_0x544f[17]][_0x544f[144]]= false;mxPanningHandler[_0x544f[17]][_0x544f[145]]= true;mxPanningHandler[_0x544f[17]][_0x544f[146]]= function(_0x90acxb){var _0x90acx19=_0x90acxb[_0x544f[130]]();return (this[_0x544f[145]]&& (this[_0x544f[147]]|| _0x90acxb[_0x544f[33]]()== null))|| (mxEvent[_0x544f[148]](_0x90acx19)&& mxEvent[_0x544f[149]](_0x90acx19))|| (this[_0x544f[150]]&& mxEvent[_0x544f[151]](_0x90acx19))}};var _0x90acx1f=mxGraphHandler[_0x544f[17]][_0x544f[152]];mxGraphHandler[_0x544f[17]][_0x544f[152]]= function(_0x90acx18,_0x90acxb){_0x90acx1f[_0x544f[16]](this,arguments);if(this[_0x544f[47]][_0x544f[53]](_0x90acxb[_0x544f[126]]())&& this[_0x544f[47]][_0x544f[54]]()> 1){this[_0x544f[153]]= false}};Graph[_0x544f[17]][_0x544f[154]]= function(_0x90acx1){this[_0x544f[155]]= new mxTooltipHandler(this);this[_0x544f[155]][_0x544f[156]](false);this[_0x544f[157]]= new mxSelectionCellsHandler(this);this[_0x544f[30]]= new mxPanningHandler(this);this[_0x544f[30]][_0x544f[158]]= false;this[_0x544f[12]]= new mxConnectionHandler(this);this[_0x544f[12]][_0x544f[156]](false);this[_0x544f[159]]= new mxGraphHandler(this)};mxConnectionHandler[_0x544f[17]][_0x544f[160]]= function(_0x90acxe,_0x90acx20){if(touchStyle&& _0x90acx20!= null){this[_0x544f[47]][_0x544f[161]](_0x90acx20)}else {this[_0x544f[47]][_0x544f[161]](_0x90acxe)}};var _0x90acx21=mxGraph[_0x544f[17]][_0x544f[162]];Graph[_0x544f[17]][_0x544f[162]]= function(_0x90acx19,_0x90acx6){if(_0x90acx6== null){var _0x90acx22=mxUtils[_0x544f[163]](this[_0x544f[26]],mxEvent[_0x544f[131]](_0x90acx19),mxEvent[_0x544f[132]](_0x90acx19));_0x90acx6= this[_0x544f[119]](_0x90acx22[_0x544f[164]],_0x90acx22[_0x544f[165]])};_0x90acx21[_0x544f[0]](this,_0x90acx19,_0x90acx6)};var _0x90acx23= new mxImage(IMAGE_PATH+ _0x544f[166],16,16);mxVertexHandler[_0x544f[17]][_0x544f[167]]= _0x90acx23;mxEdgeHandler[_0x544f[17]][_0x544f[167]]= _0x90acx23;mxOutline[_0x544f[17]][_0x544f[168]]= _0x90acx23; new Image()[_0x544f[169]]= _0x90acx23[_0x544f[169]];var _0x90acx24=IMAGE_PATH+ _0x544f[170];var _0x90acx25=mxVertexHandler[_0x544f[17]][_0x544f[171]];mxVertexHandler[_0x544f[17]][_0x544f[171]]= function(){_0x90acx25[_0x544f[16]](this,arguments);if(showConnectorImg&& this[_0x544f[47]][_0x544f[12]][_0x544f[112]]()&& this[_0x544f[47]][_0x544f[172]](this[_0x544f[120]][_0x544f[52]])&& !this[_0x544f[47]][_0x544f[85]](this[_0x544f[120]][_0x544f[52]])&& this[_0x544f[47]][_0x544f[54]]()== 1){this[_0x544f[173]]= mxUtils[_0x544f[174]](_0x90acx24);this[_0x544f[173]][_0x544f[25]][_0x544f[24]]= _0x544f[27];this[_0x544f[173]][_0x544f[25]][_0x544f[175]]= _0x544f[176];this[_0x544f[173]][_0x544f[25]][_0x544f[177]]= _0x544f[176];this[_0x544f[173]][_0x544f[25]][_0x544f[178]]= _0x544f[179];if(!mxClient[_0x544f[4]]){this[_0x544f[173]][_0x544f[101]](_0x544f[180],mxResources[_0x544f[94]](_0x544f[18]));mxEvent[_0x544f[181]](this[_0x544f[173]],this[_0x544f[47]],this[_0x544f[120]])};this[_0x544f[173]][_0x544f[25]][_0x544f[182]]= _0x544f[183];mxEvent[_0x544f[185]](this[_0x544f[173]],mxUtils[_0x544f[28]](this,function(_0x90acx19){this[_0x544f[47]][_0x544f[30]][_0x544f[115]]();var _0x90acx22=mxUtils[_0x544f[163]](this[_0x544f[47]][_0x544f[26]],mxEvent[_0x544f[131]](_0x90acx19),mxEvent[_0x544f[132]](_0x90acx19));this[_0x544f[47]][_0x544f[12]][_0x544f[50]](this[_0x544f[120]],_0x90acx22[_0x544f[164]],_0x90acx22[_0x544f[165]]);this[_0x544f[47]][_0x544f[184]]= true;mxEvent[_0x544f[134]](_0x90acx19)}));this[_0x544f[47]][_0x544f[26]][_0x544f[186]](this[_0x544f[173]])};this[_0x544f[187]]()};var _0x90acx26=mxVertexHandler[_0x544f[17]][_0x544f[188]];mxVertexHandler[_0x544f[17]][_0x544f[188]]= function(){_0x90acx26[_0x544f[16]](this);this[_0x544f[187]]()};mxVertexHandler[_0x544f[17]][_0x544f[187]]= function(){if(this[_0x544f[120]]!= null&& this[_0x544f[173]]!= null){if(mxVertexHandler[_0x544f[17]][_0x544f[189]]){this[_0x544f[173]][_0x544f[25]][_0x544f[190]]= (this[_0x544f[120]][_0x544f[164]]+ this[_0x544f[120]][_0x544f[175]]- this[_0x544f[173]][_0x544f[191]]/ 2)+ _0x544f[192];this[_0x544f[173]][_0x544f[25]][_0x544f[193]]= (this[_0x544f[120]][_0x544f[165]]- this[_0x544f[173]][_0x544f[194]]/ 2)+ _0x544f[192]}else {this[_0x544f[173]][_0x544f[25]][_0x544f[190]]= (this[_0x544f[120]][_0x544f[164]]+ this[_0x544f[120]][_0x544f[175]]+ mxConstants[_0x544f[140]]/ 2+ 4)+ _0x544f[192];this[_0x544f[173]][_0x544f[25]][_0x544f[193]]= (this[_0x544f[120]][_0x544f[165]]+ (this[_0x544f[120]][_0x544f[177]]- this[_0x544f[173]][_0x544f[194]])/ 2)+ _0x544f[192]}}};var _0x90acx27=mxVertexHandler[_0x544f[17]][_0x544f[195]];mxVertexHandler[_0x544f[17]][_0x544f[195]]= function(_0x90acx18,_0x90acxb){_0x90acx27[_0x544f[16]](this,arguments);if(this[_0x544f[173]]!= null){this[_0x544f[173]][_0x544f[197]][_0x544f[196]](this[_0x544f[173]]);this[_0x544f[173]]= null}}; new Image()[_0x544f[169]]= _0x90acx24}else {var _0x90acx28= new mxImage(IMAGE_PATH+ _0x544f[198],15,15);mxConnectionHandler[_0x544f[17]][_0x544f[199]]= _0x90acx28; new Image()[_0x544f[169]]= _0x90acx28[_0x544f[169]];if(urlParams[_0x544f[18]]== _0x544f[19]){var _0x90acx28= new mxImage(IMAGE_PATH+ _0x544f[198],15,15);var _0x90acx25=mxVertexHandler[_0x544f[17]][_0x544f[171]];mxVertexHandler[_0x544f[17]][_0x544f[171]]= function(){_0x90acx25[_0x544f[16]](this,arguments);if(showConnectorImg&& this[_0x544f[47]][_0x544f[12]][_0x544f[112]]()&& this[_0x544f[47]][_0x544f[172]](this[_0x544f[120]][_0x544f[52]])&& !this[_0x544f[47]][_0x544f[85]](this[_0x544f[120]][_0x544f[52]])&& this[_0x544f[47]][_0x544f[54]]()== 1){if(mxClient[_0x544f[200]]&& !mxClient[_0x544f[201]]){this[_0x544f[173]]= document[_0x544f[105]](_0x544f[202]);this[_0x544f[173]][_0x544f[25]][_0x544f[203]]= _0x544f[204]+ _0x90acx28[_0x544f[169]]+ _0x544f[205];this[_0x544f[173]][_0x544f[25]][_0x544f[206]]= _0x544f[207];this[_0x544f[173]][_0x544f[25]][_0x544f[208]]= _0x544f[209];this[_0x544f[173]][_0x544f[25]][_0x544f[175]]= (_0x90acx28[_0x544f[175]]+ 4)+ _0x544f[192];this[_0x544f[173]][_0x544f[25]][_0x544f[177]]= (_0x90acx28[_0x544f[177]]+ 4)+ _0x544f[192];this[_0x544f[173]][_0x544f[25]][_0x544f[210]]= (mxClient[_0x544f[211]])?_0x544f[212]:_0x544f[213]}else {this[_0x544f[173]]= mxUtils[_0x544f[174]](_0x90acx28[_0x544f[169]]);this[_0x544f[173]][_0x544f[25]][_0x544f[175]]= _0x90acx28[_0x544f[175]]+ _0x544f[192];this[_0x544f[173]][_0x544f[25]][_0x544f[177]]= _0x90acx28[_0x544f[177]]+ _0x544f[192]};this[_0x544f[173]][_0x544f[25]][_0x544f[24]]= _0x544f[27];this[_0x544f[173]][_0x544f[25]][_0x544f[178]]= _0x544f[179];this[_0x544f[173]][_0x544f[101]](_0x544f[180],mxResources[_0x544f[94]](_0x544f[18]));mxEvent[_0x544f[181]](this[_0x544f[173]],this[_0x544f[47]],this[_0x544f[120]]);this[_0x544f[173]][_0x544f[25]][_0x544f[182]]= _0x544f[183];mxEvent[_0x544f[29]](this[_0x544f[173]],_0x544f[214],mxUtils[_0x544f[28]](this,function(_0x90acx19){this[_0x544f[47]][_0x544f[30]][_0x544f[115]]();var _0x90acx22=mxUtils[_0x544f[163]](this[_0x544f[47]][_0x544f[26]],mxEvent[_0x544f[131]](_0x90acx19),mxEvent[_0x544f[132]](_0x90acx19));this[_0x544f[47]][_0x544f[12]][_0x544f[50]](this[_0x544f[120]],_0x90acx22[_0x544f[164]],_0x90acx22[_0x544f[165]]);this[_0x544f[47]][_0x544f[184]]= true;mxEvent[_0x544f[134]](_0x90acx19)}));this[_0x544f[47]][_0x544f[26]][_0x544f[186]](this[_0x544f[173]])};this[_0x544f[187]]()};var _0x90acx26=mxVertexHandler[_0x544f[17]][_0x544f[188]];mxVertexHandler[_0x544f[17]][_0x544f[188]]= function(){_0x90acx26[_0x544f[16]](this);this[_0x544f[187]]()};mxVertexHandler[_0x544f[17]][_0x544f[187]]= function(){if(this[_0x544f[120]]!= null&& this[_0x544f[173]]!= null){if(mxVertexHandler[_0x544f[17]][_0x544f[189]]){this[_0x544f[173]][_0x544f[25]][_0x544f[190]]= (this[_0x544f[120]][_0x544f[164]]+ this[_0x544f[120]][_0x544f[175]]- this[_0x544f[173]][_0x544f[191]]/ 2)+ _0x544f[192];this[_0x544f[173]][_0x544f[25]][_0x544f[193]]= (this[_0x544f[120]][_0x544f[165]]- this[_0x544f[173]][_0x544f[194]]/ 2)+ _0x544f[192]}else {this[_0x544f[173]][_0x544f[25]][_0x544f[190]]= (this[_0x544f[120]][_0x544f[164]]+ this[_0x544f[120]][_0x544f[175]]+ mxConstants[_0x544f[140]]/ 2+ 2)+ _0x544f[192];this[_0x544f[173]][_0x544f[25]][_0x544f[193]]= (this[_0x544f[120]][_0x544f[165]]+ (this[_0x544f[120]][_0x544f[177]]- this[_0x544f[173]][_0x544f[194]])/ 2)+ _0x544f[192]}}};var _0x90acx27=mxVertexHandler[_0x544f[17]][_0x544f[195]];mxVertexHandler[_0x544f[17]][_0x544f[195]]= function(_0x90acx18,_0x90acxb){_0x90acx27[_0x544f[16]](this,arguments);if(this[_0x544f[173]]!= null){this[_0x544f[173]][_0x544f[197]][_0x544f[196]](this[_0x544f[173]]);this[_0x544f[173]]= null}}}}})() \ No newline at end of file +undefined \ No newline at end of file diff --git a/public/assets/plugins/square/js/Menus.js b/public/assets/plugins/square/js/Menus.js index 5b8208f..66dc905 100644 --- a/public/assets/plugins/square/js/Menus.js +++ b/public/assets/plugins/square/js/Menus.js @@ -1 +1 @@ -var _0xfdce=["\x65\x64\x69\x74\x6F\x72\x55\x69","\x6D\x65\x6E\x75\x73","\x69\x6E\x69\x74","\x73\x72\x63","\x2F\x63\x68\x65\x63\x6B\x6D\x61\x72\x6B\x2E\x67\x69\x66","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x67\x72\x61\x70\x68","\x65\x64\x69\x74\x6F\x72","\x66\x6F\x6E\x74\x46\x61\x6D\x69\x6C\x79","\x48\x65\x6C\x76\x65\x74\x69\x63\x61","\x56\x65\x72\x64\x61\x6E\x61","\x54\x69\x6D\x65\x73\x20\x4E\x65\x77\x20\x52\x6F\x6D\x61\x6E","\x47\x61\x72\x61\x6D\x6F\x6E\x64","\x43\x6F\x6D\x69\x63\x20\x53\x61\x6E\x73\x20\x4D\x53","\x43\x6F\x75\x72\x69\x65\x72\x20\x4E\x65\x77","\x47\x65\x6F\x72\x67\x69\x61","\x4C\x75\x63\x69\x64\x61\x20\x43\x6F\x6E\x73\x6F\x6C\x65","\x54\x61\x68\x6F\x6D\x61","\x6C\x65\x6E\x67\x74\x68","\x53\x54\x59\x4C\x45\x5F\x46\x4F\x4E\x54\x46\x41\x4D\x49\x4C\x59","\x73\x74\x79\x6C\x65\x43\x68\x61\x6E\x67\x65","\x73\x74\x79\x6C\x65","\x6E\x65\x78\x74\x53\x69\x62\x6C\x69\x6E\x67","\x66\x69\x72\x73\x74\x43\x68\x69\x6C\x64","\x61\x64\x64\x53\x65\x70\x61\x72\x61\x74\x6F\x72","\x63\x75\x73\x74\x6F\x6D","\x67\x65\x74","","\x70\x72\x6F\x6D\x70\x74\x43\x68\x61\x6E\x67\x65","\x62\x69\x6E\x64","\x70\x75\x74","\x66\x6F\x6E\x74\x53\x69\x7A\x65","\x53\x54\x59\x4C\x45\x5F\x46\x4F\x4E\x54\x53\x49\x5A\x45","\x28\x70\x74\x29","\x31\x32","\x6C\x69\x6E\x65\x77\x69\x64\x74\x68","\x70\x78","\x53\x54\x59\x4C\x45\x5F\x53\x54\x52\x4F\x4B\x45\x57\x49\x44\x54\x48","\x28\x70\x78\x29","\x31","\x6C\x69\x6E\x65","\x73\x74\x72\x61\x69\x67\x68\x74","\x53\x54\x59\x4C\x45\x5F\x45\x44\x47\x45","\x65\x6E\x74\x69\x74\x79\x52\x65\x6C\x61\x74\x69\x6F\x6E","\x65\x6E\x74\x69\x74\x79\x52\x65\x6C\x61\x74\x69\x6F\x6E\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C","\x53\x54\x59\x4C\x45\x5F\x45\x4C\x42\x4F\x57","\x65\x6C\x62\x6F\x77\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x76\x65\x72\x74\x69\x63\x61\x6C","\x6D\x61\x6E\x75\x61\x6C","\x73\x65\x67\x6D\x65\x6E\x74\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x61\x75\x74\x6F\x6D\x61\x74\x69\x63","\x6F\x72\x74\x68\x6F\x67\x6F\x6E\x61\x6C\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x6C\x69\x6E\x65\x65\x6E\x64","\x63\x6C\x61\x73\x73\x69\x63","\x53\x54\x59\x4C\x45\x5F\x45\x4E\x44\x41\x52\x52\x4F\x57","\x41\x52\x52\x4F\x57\x5F\x43\x4C\x41\x53\x53\x49\x43","\x6F\x70\x65\x6E\x41\x72\x72\x6F\x77","\x41\x52\x52\x4F\x57\x5F\x4F\x50\x45\x4E","\x62\x6C\x6F\x63\x6B","\x41\x52\x52\x4F\x57\x5F\x42\x4C\x4F\x43\x4B","\x6F\x76\x61\x6C","\x41\x52\x52\x4F\x57\x5F\x4F\x56\x41\x4C","\x64\x69\x61\x6D\x6F\x6E\x64","\x41\x52\x52\x4F\x57\x5F\x44\x49\x41\x4D\x4F\x4E\x44","\x64\x69\x61\x6D\x6F\x6E\x64\x54\x68\x69\x6E","\x41\x52\x52\x4F\x57\x5F\x44\x49\x41\x4D\x4F\x4E\x44\x5F\x54\x48\x49\x4E","\x6E\x6F\x6E\x65","\x4E\x4F\x4E\x45","\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74","\x65\x6E\x64\x46\x69\x6C\x6C","\x74\x6F\x67\x67\x6C\x65\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x73","\x61\x64\x64\x49\x74\x65\x6D","\x73\x69\x7A\x65","\x6C\x69\x6E\x65\x73\x74\x61\x72\x74","\x53\x54\x59\x4C\x45\x5F\x53\x54\x41\x52\x54\x41\x52\x52\x4F\x57","\x73\x74\x61\x72\x74\x46\x69\x6C\x6C","\x73\x70\x61\x63\x69\x6E\x67","\x65\x6E\x61\x62\x6C\x65\x64","\x73\x68\x61\x64\x6F\x77","\x61\x63\x74\x69\x6F\x6E\x73","\x73\x68\x6F\x77\x44\x69\x73\x61\x62\x6C\x65\x64","\x74\x6F\x70","\x30","\x72\x69\x67\x68\x74","\x62\x6F\x74\x74\x6F\x6D","\x6C\x65\x66\x74","\x67\x6C\x6F\x62\x61\x6C","\x70\x65\x72\x69\x6D\x65\x74\x65\x72","\x73\x6F\x75\x72\x63\x65\x53\x70\x61\x63\x69\x6E\x67","\x74\x61\x72\x67\x65\x74\x53\x70\x61\x63\x69\x6E\x67","\x66\x6F\x72\x6D\x61\x74","\x61\x64\x64\x4D\x65\x6E\x75\x49\x74\x65\x6D","\x74\x65\x78\x74","\x61\x64\x64\x53\x75\x62\x6D\x65\x6E\x75","\x2D","\x62\x6F\x6C\x64","\x69\x74\x61\x6C\x69\x63","\x75\x6E\x64\x65\x72\x6C\x69\x6E\x65","\x61\x64\x64\x4D\x65\x6E\x75\x49\x74\x65\x6D\x73","\x61\x6C\x69\x67\x6E\x6D\x65\x6E\x74","\x77\x6F\x72\x64\x57\x72\x61\x70","\x74\x65\x78\x74\x4F\x70\x61\x63\x69\x74\x79","\x28\x25\x29","\x31\x30\x30","\x68\x69\x64\x65","\x6C\x65\x66\x74\x41\x6C\x69\x67\x6E","\x53\x54\x59\x4C\x45\x5F\x41\x4C\x49\x47\x4E","\x41\x4C\x49\x47\x4E\x5F\x4C\x45\x46\x54","\x63\x65\x6E\x74\x65\x72","\x41\x4C\x49\x47\x4E\x5F\x43\x45\x4E\x54\x45\x52","\x72\x69\x67\x68\x74\x41\x6C\x69\x67\x6E","\x41\x4C\x49\x47\x4E\x5F\x52\x49\x47\x48\x54","\x74\x6F\x70\x41\x6C\x69\x67\x6E","\x53\x54\x59\x4C\x45\x5F\x56\x45\x52\x54\x49\x43\x41\x4C\x5F\x41\x4C\x49\x47\x4E","\x41\x4C\x49\x47\x4E\x5F\x54\x4F\x50","\x6D\x69\x64\x64\x6C\x65","\x41\x4C\x49\x47\x4E\x5F\x4D\x49\x44\x44\x4C\x45","\x62\x6F\x74\x74\x6F\x6D\x41\x6C\x69\x67\x6E","\x41\x4C\x49\x47\x4E\x5F\x42\x4F\x54\x54\x4F\x4D","\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x53\x54\x59\x4C\x45\x5F\x4C\x41\x42\x45\x4C\x5F\x50\x4F\x53\x49\x54\x49\x4F\x4E","\x53\x54\x59\x4C\x45\x5F\x56\x45\x52\x54\x49\x43\x41\x4C\x5F\x4C\x41\x42\x45\x4C\x5F\x50\x4F\x53\x49\x54\x49\x4F\x4E","\x64\x69\x72\x65\x63\x74\x69\x6F\x6E","\x66\x6C\x69\x70\x48","\x66\x6C\x69\x70\x56","\x74\x69\x6C\x74","\x72\x6F\x74\x61\x74\x69\x6F\x6E","\x61\x6C\x69\x67\x6E","\x61\x6C\x69\x67\x6E\x43\x65\x6C\x6C\x73","\x6C\x61\x79\x6F\x75\x74","\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C\x46\x6C\x6F\x77","\x65\x78\x65\x63\x75\x74\x65\x4C\x61\x79\x6F\x75\x74","\x76\x65\x72\x74\x69\x63\x61\x6C\x46\x6C\x6F\x77","\x6E\x61\x76\x69\x67\x61\x74\x69\x6F\x6E","\x68\x6F\x6D\x65","\x65\x78\x69\x74\x47\x72\x6F\x75\x70","\x65\x6E\x74\x65\x72\x47\x72\x6F\x75\x70","\x65\x78\x70\x61\x6E\x64","\x63\x6F\x6C\x6C\x61\x70\x73\x65","\x61\x72\x72\x61\x6E\x67\x65","\x74\x6F\x46\x72\x6F\x6E\x74","\x74\x6F\x42\x61\x63\x6B","\x67\x72\x6F\x75\x70","\x75\x6E\x67\x72\x6F\x75\x70","\x72\x65\x6D\x6F\x76\x65\x46\x72\x6F\x6D\x47\x72\x6F\x75\x70","\x76\x69\x65\x77","\x61\x63\x74\x75\x61\x6C\x53\x69\x7A\x65","\x25","\x7A\x6F\x6F\x6D\x54\x6F","\x7A\x6F\x6F\x6D\x49\x6E","\x7A\x6F\x6F\x6D\x4F\x75\x74","\x66\x69\x74\x57\x69\x6E\x64\x6F\x77","\x63\x75\x73\x74\x6F\x6D\x5A\x6F\x6F\x6D","\x66\x69\x74\x50\x61\x67\x65","\x66\x69\x74\x50\x61\x67\x65\x57\x69\x64\x74\x68","\x66\x69\x6C\x65","\x6E\x65\x77","\x6F\x70\x65\x6E","\x73\x61\x76\x65","\x73\x61\x76\x65\x41\x73","\x70\x75\x62\x6C\x69\x73\x68","\x76\x61\x72\x69\x61\x62\x6C\x65","\x69\x6D\x70\x6F\x72\x74","\x65\x78\x70\x6F\x72\x74","\x65\x64\x69\x74\x46\x69\x6C\x65","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x70\x72\x69\x6E\x74","\x65\x64\x69\x74","\x75\x6E\x64\x6F","\x72\x65\x64\x6F","\x63\x75\x74","\x63\x6F\x70\x79","\x70\x61\x73\x74\x65","\x64\x65\x6C\x65\x74\x65","\x64\x75\x70\x6C\x69\x63\x61\x74\x65","\x73\x65\x6C\x65\x63\x74\x56\x65\x72\x74\x69\x63\x65\x73","\x73\x65\x6C\x65\x63\x74\x45\x64\x67\x65\x73","\x73\x65\x6C\x65\x63\x74\x41\x6C\x6C","\x68\x65\x6C\x70","\x61\x62\x6F\x75\x74","\x61\x64\x64\x4D\x65\x6E\x75","\x65\x78\x65\x63\x75\x74\x65","\x62\x65\x67\x69\x6E\x55\x70\x64\x61\x74\x65","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x73\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x73","\x65\x6E\x64\x55\x70\x64\x61\x74\x65","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x67\x65\x74\x53\x74\x61\x74\x65","\x67\x65\x74\x56\x69\x65\x77","\x65\x6E\x74\x65\x72\x56\x61\x6C\x75\x65","\x20","\x70\x72\x6F\x6D\x70\x74","\x6C\x61\x62\x65\x6C","\x66\x75\x6E\x63\x74","\x74\x6F\x67\x67\x6C\x65\x41\x63\x74\x69\x6F\x6E","\x69\x73\x53\x65\x6C\x65\x63\x74\x65\x64","\x61\x64\x64\x43\x68\x65\x63\x6B\x6D\x61\x72\x6B","\x61\x64\x64\x53\x68\x6F\x72\x74\x63\x75\x74","\x73\x68\x6F\x72\x74\x63\x75\x74","\x73\x70\x61\x6E","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x63\x6F\x6C\x6F\x72","\x67\x72\x61\x79","\x77\x72\x69\x74\x65","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x75\x72\x6C\x28","\x2F\x63\x68\x65\x63\x6B\x6D\x61\x72\x6B\x2E\x67\x69\x66\x29","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x52\x65\x70\x65\x61\x74","\x6E\x6F\x2D\x72\x65\x70\x65\x61\x74","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x32\x70\x78\x20\x35\x30\x25","\x63\x72\x65\x61\x74\x65\x50\x6F\x70\x75\x70\x4D\x65\x6E\x75","\x73\x6D\x61\x72\x74\x53\x65\x70\x61\x72\x61\x74\x6F\x72\x73","\x69\x73\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x45\x6D\x70\x74\x79","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x6F\x75\x6E\x74","\x69\x73\x45\x64\x67\x65","\x73\x65\x74\x41\x73\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65","\x67\x65\x74\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73\x48\x61\x6E\x64\x6C\x65\x72","\x62\x65\x6E\x64\x73","\x67\x65\x74\x48\x61\x6E\x64\x6C\x65\x46\x6F\x72\x45\x76\x65\x6E\x74","\x72\x65\x6D\x6F\x76\x65\x57\x61\x79\x70\x6F\x69\x6E\x74","\x68\x61\x6E\x64\x6C\x65\x72","\x69\x6E\x64\x65\x78","\x61\x64\x64\x57\x61\x79\x70\x6F\x69\x6E\x74","\x67\x65\x74\x4C\x69\x6E\x6B\x46\x6F\x72\x43\x65\x6C\x6C","\x6F\x70\x65\x6E\x4C\x69\x6E\x6B","\x63\x72\x65\x61\x74\x65\x4D\x65\x6E\x75\x62\x61\x72","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x68\x69\x64\x65\x4D\x65\x6E\x75","\x61\x64\x64\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x63\x75\x72\x72\x65\x6E\x74\x4D\x65\x6E\x75","\x61","\x68\x72\x65\x66","\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x3A\x76\x6F\x69\x64\x28\x30\x29\x3B","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x67\x65\x49\x74\x65\x6D","\x61\x64\x64\x4D\x65\x6E\x75\x48\x61\x6E\x64\x6C\x65\x72","\x70\x61\x6E\x6E\x69\x6E\x67\x48\x61\x6E\x64\x6C\x65\x72","\x64\x69\x76","\x20\x67\x65\x4D\x65\x6E\x75\x62\x61\x72\x4D\x65\x6E\x75","\x61\x75\x74\x6F\x45\x78\x70\x61\x6E\x64","\x61\x70\x70\x6C\x79","\x64\x65\x73\x74\x72\x6F\x79","\x63\x75\x72\x72\x65\x6E\x74\x45\x6C\x74","\x6F\x66\x66\x73\x65\x74\x4C\x65\x66\x74","\x6F\x66\x66\x73\x65\x74\x57\x69\x64\x74\x68","\x70\x61\x67\x65\x2D\x73\x69\x64\x65\x62\x61\x72","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64","\x6F\x66\x66\x73\x65\x74\x54\x6F\x70","\x6F\x66\x66\x73\x65\x74\x48\x65\x69\x67\x68\x74","\x70\x6F\x70\x75\x70","\x63\x6F\x6E\x73\x75\x6D\x65","\x6D\x6F\x75\x73\x65\x6D\x6F\x76\x65","\x61\x64\x64\x4C\x69\x73\x74\x65\x6E\x65\x72","\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E","\x63\x6C\x69\x63\x6B","\x63\x61\x6C\x6C","\x65\x78\x74\x65\x6E\x64","\x73\x65\x74\x45\x6E\x61\x62\x6C\x65\x64","\x73\x74\x61\x74\x65\x43\x68\x61\x6E\x67\x65\x64","\x66\x69\x72\x65\x45\x76\x65\x6E\x74"];Menus= function(_0xbdcfx1){this[_0xfdce[0]]= _0xbdcfx1;this[_0xfdce[1]]= new Object();this[_0xfdce[2]](); new Image()[_0xfdce[3]]= IMAGE_PATH+ _0xfdce[4]};Menus[_0xfdce[5]][_0xfdce[2]]= function(){var _0xbdcfx2=this[_0xfdce[0]][_0xfdce[7]][_0xfdce[6]];this[_0xfdce[30]](_0xfdce[8], new Menu(mxUtils[_0xfdce[29]](this,function(_0xbdcfx3,_0xbdcfx4){var _0xbdcfx5=[_0xfdce[9],_0xfdce[10],_0xfdce[11],_0xfdce[12],_0xfdce[13],_0xfdce[14],_0xfdce[15],_0xfdce[16],_0xfdce[17]];for(var _0xbdcfx6=0;_0xbdcfx6< _0xbdcfx5[_0xfdce[18]];_0xbdcfx6++){var _0xbdcfx7=this[_0xfdce[20]](_0xbdcfx3,_0xbdcfx5[_0xbdcfx6],[mxConstants[_0xfdce[19]]],[_0xbdcfx5[_0xbdcfx6]],null,_0xbdcfx4);_0xbdcfx7[_0xfdce[23]][_0xfdce[22]][_0xfdce[21]][_0xfdce[8]]= _0xbdcfx5[_0xbdcfx6]};_0xbdcfx3[_0xfdce[24]](_0xbdcfx4);this[_0xfdce[28]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[25]),_0xfdce[27],mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,_0xbdcfx4)})));this[_0xfdce[30]](_0xfdce[31], new Menu(mxUtils[_0xfdce[29]](this,function(_0xbdcfx3,_0xbdcfx4){var _0xbdcfx8=[6,8,9,10,11,12,14,18,24,36,48,72];for(var _0xbdcfx6=0;_0xbdcfx6< _0xbdcfx8[_0xfdce[18]];_0xbdcfx6++){this[_0xfdce[20]](_0xbdcfx3,_0xbdcfx8[_0xbdcfx6],[mxConstants[_0xfdce[32]]],[_0xbdcfx8[_0xbdcfx6]],null,_0xbdcfx4)};_0xbdcfx3[_0xfdce[24]](_0xbdcfx4);this[_0xfdce[28]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[25]),_0xfdce[33],_0xfdce[34],mxConstants.STYLE_FONTSIZE,_0xbdcfx4)})));this[_0xfdce[30]](_0xfdce[35], new Menu(mxUtils[_0xfdce[29]](this,function(_0xbdcfx3,_0xbdcfx4){var _0xbdcfx8=[1,2,3,4,8,12,16,24];for(var _0xbdcfx6=0;_0xbdcfx6< _0xbdcfx8[_0xfdce[18]];_0xbdcfx6++){this[_0xfdce[20]](_0xbdcfx3,_0xbdcfx8[_0xbdcfx6]+ _0xfdce[36],[mxConstants[_0xfdce[37]]],[_0xbdcfx8[_0xbdcfx6]],null,_0xbdcfx4)};_0xbdcfx3[_0xfdce[24]](_0xbdcfx4);this[_0xfdce[28]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[25]),_0xfdce[38],_0xfdce[39],mxConstants.STYLE_STROKEWIDTH,_0xbdcfx4)})));this[_0xfdce[30]](_0xfdce[40], new Menu(mxUtils[_0xfdce[29]](this,function(_0xbdcfx3,_0xbdcfx4){this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[41]),[mxConstants[_0xfdce[42]]],[null],null,_0xbdcfx4);this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[43]),[mxConstants[_0xfdce[42]]],[_0xfdce[44]],null,_0xbdcfx4);_0xbdcfx3[_0xfdce[24]](_0xbdcfx4);this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[45]),[mxConstants[_0xfdce[42]],mxConstants[_0xfdce[46]]],[_0xfdce[47],_0xfdce[45]],null,_0xbdcfx4);this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[48]),[mxConstants[_0xfdce[42]],mxConstants[_0xfdce[46]]],[_0xfdce[47],_0xfdce[48]],null,_0xbdcfx4);_0xbdcfx3[_0xfdce[24]](_0xbdcfx4);this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[49]),[mxConstants[_0xfdce[42]]],[_0xfdce[50]],null,_0xbdcfx4);this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[51]),[mxConstants[_0xfdce[42]]],[_0xfdce[52]],null,_0xbdcfx4)})));this[_0xfdce[30]](_0xfdce[53], new Menu(mxUtils[_0xfdce[29]](this,function(_0xbdcfx3,_0xbdcfx4){this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[54]),[mxConstants[_0xfdce[55]]],[mxConstants[_0xfdce[56]]],null,_0xbdcfx4);this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[57]),[mxConstants[_0xfdce[55]]],[mxConstants[_0xfdce[58]]],null,_0xbdcfx4);this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[59]),[mxConstants[_0xfdce[55]]],[mxConstants[_0xfdce[60]]],null,_0xbdcfx4);_0xbdcfx3[_0xfdce[24]](_0xbdcfx4);this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[61]),[mxConstants[_0xfdce[55]]],[mxConstants[_0xfdce[62]]],null,_0xbdcfx4);this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[63]),[mxConstants[_0xfdce[55]]],[mxConstants[_0xfdce[64]]],null,_0xbdcfx4);this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[65]),[mxConstants[_0xfdce[55]]],[mxConstants[_0xfdce[66]]],null,_0xbdcfx4);_0xbdcfx3[_0xfdce[24]](_0xbdcfx4);this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[67]),[mxConstants[_0xfdce[55]]],[mxConstants[_0xfdce[68]]],null,_0xbdcfx4);_0xbdcfx3[_0xfdce[24]](_0xbdcfx4);_0xbdcfx3[_0xfdce[72]](mxResources[_0xfdce[26]](_0xfdce[69]),null,function(){_0xbdcfx2[_0xfdce[71]](_0xfdce[70],true)},_0xbdcfx4,null,true);_0xbdcfx3[_0xfdce[24]](_0xbdcfx4);this[_0xfdce[28]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[73]),_0xfdce[38],mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,_0xbdcfx4)})));this[_0xfdce[30]](_0xfdce[74], new Menu(mxUtils[_0xfdce[29]](this,function(_0xbdcfx3,_0xbdcfx4){this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[54]),[mxConstants[_0xfdce[75]]],[mxConstants[_0xfdce[56]]],null,_0xbdcfx4);this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[57]),[mxConstants[_0xfdce[75]]],[mxConstants[_0xfdce[58]]],null,_0xbdcfx4);this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[59]),[mxConstants[_0xfdce[75]]],[mxConstants[_0xfdce[60]]],null,_0xbdcfx4);_0xbdcfx3[_0xfdce[24]](_0xbdcfx4);this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[61]),[mxConstants[_0xfdce[75]]],[mxConstants[_0xfdce[62]]],null,_0xbdcfx4);this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[63]),[mxConstants[_0xfdce[75]]],[mxConstants[_0xfdce[64]]],null,_0xbdcfx4);this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[65]),[mxConstants[_0xfdce[75]]],[mxConstants[_0xfdce[66]]],null,_0xbdcfx4);_0xbdcfx3[_0xfdce[24]](_0xbdcfx4);this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[67]),[mxConstants[_0xfdce[75]]],[mxConstants[_0xfdce[68]]],null,_0xbdcfx4);_0xbdcfx3[_0xfdce[24]](_0xbdcfx4);_0xbdcfx3[_0xfdce[72]](mxResources[_0xfdce[26]](_0xfdce[69]),null,function(){_0xbdcfx2[_0xfdce[71]](_0xfdce[76],true)},_0xbdcfx4,null,true);_0xbdcfx3[_0xfdce[24]](_0xbdcfx4);this[_0xfdce[28]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[73]),_0xfdce[38],mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,_0xbdcfx4)})));this[_0xfdce[30]](_0xfdce[77], new Menu(mxUtils[_0xfdce[29]](this,function(_0xbdcfx3,_0xbdcfx4){var _0xbdcfx9=this[_0xfdce[0]][_0xfdce[80]][_0xfdce[26]](_0xfdce[79])[_0xfdce[78]];var _0xbdcfxa=this[_0xfdce[26]](_0xfdce[40])[_0xfdce[78]];if(_0xbdcfx9|| _0xbdcfx3[_0xfdce[81]]){this[_0xfdce[28]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[82]),_0xfdce[38],_0xfdce[83],mxConstants.STYLE_SPACING_TOP,_0xbdcfx4,_0xbdcfx9);this[_0xfdce[28]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[84]),_0xfdce[38],_0xfdce[83],mxConstants.STYLE_SPACING_RIGHT,_0xbdcfx4,_0xbdcfx9);this[_0xfdce[28]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[85]),_0xfdce[38],_0xfdce[83],mxConstants.STYLE_SPACING_BOTTOM,_0xbdcfx4,_0xbdcfx9);this[_0xfdce[28]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[86]),_0xfdce[38],_0xfdce[83],mxConstants.STYLE_SPACING_LEFT,_0xbdcfx4,_0xbdcfx9);_0xbdcfx3[_0xfdce[24]](_0xbdcfx4);this[_0xfdce[28]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[87]),_0xfdce[38],_0xfdce[83],mxConstants.STYLE_SPACING,_0xbdcfx4,_0xbdcfx9);this[_0xfdce[28]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[88]),_0xfdce[38],_0xfdce[83],mxConstants.STYLE_PERIMETER_SPACING,_0xbdcfx4,_0xbdcfx9)};if(_0xbdcfxa|| _0xbdcfx3[_0xfdce[81]]){_0xbdcfx3[_0xfdce[24]](_0xbdcfx4);this[_0xfdce[28]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[89]),_0xfdce[38],_0xfdce[83],mxConstants.STYLE_SOURCE_PERIMETER_SPACING,_0xbdcfx4,_0xbdcfxa);this[_0xfdce[28]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[90]),_0xfdce[38],_0xfdce[83],mxConstants.STYLE_TARGET_PERIMETER_SPACING,_0xbdcfx4,_0xbdcfxa)}})));this[_0xfdce[30]](_0xfdce[91], new Menu(mxUtils[_0xfdce[29]](this,function(_0xbdcfx3,_0xbdcfx4){this[_0xfdce[92]](_0xbdcfx3,_0xfdce[21],_0xbdcfx4)})));this[_0xfdce[30]](_0xfdce[93], new Menu(mxUtils[_0xfdce[29]](this,function(_0xbdcfx3,_0xbdcfx4){var _0xbdcfxb=this[_0xfdce[26]](_0xfdce[93])[_0xfdce[78]];_0xbdcfx3[_0xfdce[24]](_0xbdcfx4);this[_0xfdce[94]](_0xfdce[8],_0xbdcfx3,_0xbdcfx4);this[_0xfdce[94]](_0xfdce[31],_0xbdcfx3,_0xbdcfx4);this[_0xfdce[99]](_0xbdcfx3,[_0xfdce[95],_0xfdce[96],_0xfdce[97],_0xfdce[98],_0xfdce[95]],_0xbdcfx4);this[_0xfdce[94]](_0xfdce[100],_0xbdcfx3,_0xbdcfx4);this[_0xfdce[92]](_0xbdcfx3,_0xfdce[101],_0xbdcfx4);_0xbdcfx3[_0xfdce[24]](_0xbdcfx4);this[_0xfdce[28]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[102]),_0xfdce[103],_0xfdce[104],mxConstants.STYLE_TEXT_OPACITY,_0xbdcfx4,_0xbdcfxb);_0xbdcfx3[_0xfdce[72]](mxResources[_0xfdce[26]](_0xfdce[105]),null,function(){_0xbdcfx2[_0xfdce[71]](mxConstants.STYLE_NOLABEL,false)},_0xbdcfx4,null,_0xbdcfxb)})));this[_0xfdce[30]](_0xfdce[100], new Menu(mxUtils[_0xfdce[29]](this,function(_0xbdcfx3,_0xbdcfx4){this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[106]),[mxConstants[_0xfdce[107]]],[mxConstants[_0xfdce[108]]],null,_0xbdcfx4);this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[109]),[mxConstants[_0xfdce[107]]],[mxConstants[_0xfdce[110]]],null,_0xbdcfx4);this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[111]),[mxConstants[_0xfdce[107]]],[mxConstants[_0xfdce[112]]],null,_0xbdcfx4);_0xbdcfx3[_0xfdce[24]](_0xbdcfx4);this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[113]),[mxConstants[_0xfdce[114]]],[mxConstants[_0xfdce[115]]],null,_0xbdcfx4);this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[116]),[mxConstants[_0xfdce[114]]],[mxConstants[_0xfdce[117]]],null,_0xbdcfx4);this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[118]),[mxConstants[_0xfdce[114]]],[mxConstants[_0xfdce[119]]],null,_0xbdcfx4);_0xbdcfx3[_0xfdce[24]](_0xbdcfx4);this[_0xfdce[94]](_0xfdce[120],_0xbdcfx3,_0xbdcfx4);this[_0xfdce[94]](_0xfdce[77],_0xbdcfx3,_0xbdcfx4);_0xbdcfx3[_0xfdce[24]](_0xbdcfx4);var _0xbdcfxb=this[_0xfdce[26]](_0xfdce[93])[_0xfdce[78]];_0xbdcfx3[_0xfdce[72]](mxResources[_0xfdce[26]](_0xfdce[48]),null,function(){_0xbdcfx2[_0xfdce[71]](mxConstants.STYLE_HORIZONTAL,true)},_0xbdcfx4,null,_0xbdcfxb)})));this[_0xfdce[30]](_0xfdce[120], new Menu(mxUtils[_0xfdce[29]](this,function(_0xbdcfx3,_0xbdcfx4){this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[86]),[mxConstants[_0xfdce[121]],mxConstants[_0xfdce[107]]],[mxConstants[_0xfdce[108]],mxConstants[_0xfdce[112]]],null,_0xbdcfx4);this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[109]),[mxConstants[_0xfdce[121]],mxConstants[_0xfdce[107]]],[mxConstants[_0xfdce[110]],mxConstants[_0xfdce[110]]],null,_0xbdcfx4);this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[84]),[mxConstants[_0xfdce[121]],mxConstants[_0xfdce[107]]],[mxConstants[_0xfdce[112]],mxConstants[_0xfdce[108]]],null,_0xbdcfx4);_0xbdcfx3[_0xfdce[24]](_0xbdcfx4);this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[82]),[mxConstants[_0xfdce[122]],mxConstants[_0xfdce[114]]],[mxConstants[_0xfdce[115]],mxConstants[_0xfdce[119]]],null,_0xbdcfx4);this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[116]),[mxConstants[_0xfdce[122]],mxConstants[_0xfdce[114]]],[mxConstants[_0xfdce[117]],mxConstants[_0xfdce[117]]],null,_0xbdcfx4);this[_0xfdce[20]](_0xbdcfx3,mxResources[_0xfdce[26]](_0xfdce[85]),[mxConstants[_0xfdce[122]],mxConstants[_0xfdce[114]]],[mxConstants[_0xfdce[119]],mxConstants[_0xfdce[115]]],null,_0xbdcfx4)})));this[_0xfdce[30]](_0xfdce[123], new Menu(mxUtils[_0xfdce[29]](this,function(_0xbdcfx3,_0xbdcfx4){_0xbdcfx3[_0xfdce[72]](mxResources[_0xfdce[26]](_0xfdce[124]),null,function(){_0xbdcfx2[_0xfdce[71]](mxConstants.STYLE_FLIPH,false)},_0xbdcfx4);_0xbdcfx3[_0xfdce[72]](mxResources[_0xfdce[26]](_0xfdce[125]),null,function(){_0xbdcfx2[_0xfdce[71]](mxConstants.STYLE_FLIPV,false)},_0xbdcfx4);this[_0xfdce[99]](_0xbdcfx3,[_0xfdce[95],_0xfdce[126],_0xfdce[127]],_0xbdcfx4)})));this[_0xfdce[30]](_0xfdce[128], new Menu(mxUtils[_0xfdce[29]](this,function(_0xbdcfx3,_0xbdcfx4){_0xbdcfx3[_0xfdce[72]](mxResources[_0xfdce[26]](_0xfdce[106]),null,function(){_0xbdcfx2[_0xfdce[129]](mxConstants.ALIGN_LEFT)},_0xbdcfx4);_0xbdcfx3[_0xfdce[72]](mxResources[_0xfdce[26]](_0xfdce[109]),null,function(){_0xbdcfx2[_0xfdce[129]](mxConstants.ALIGN_CENTER)},_0xbdcfx4);_0xbdcfx3[_0xfdce[72]](mxResources[_0xfdce[26]](_0xfdce[111]),null,function(){_0xbdcfx2[_0xfdce[129]](mxConstants.ALIGN_RIGHT)},_0xbdcfx4);_0xbdcfx3[_0xfdce[24]](_0xbdcfx4);_0xbdcfx3[_0xfdce[72]](mxResources[_0xfdce[26]](_0xfdce[113]),null,function(){_0xbdcfx2[_0xfdce[129]](mxConstants.ALIGN_TOP)},_0xbdcfx4);_0xbdcfx3[_0xfdce[72]](mxResources[_0xfdce[26]](_0xfdce[116]),null,function(){_0xbdcfx2[_0xfdce[129]](mxConstants.ALIGN_MIDDLE)},_0xbdcfx4);_0xbdcfx3[_0xfdce[72]](mxResources[_0xfdce[26]](_0xfdce[118]),null,function(){_0xbdcfx2[_0xfdce[129]](mxConstants.ALIGN_BOTTOM)},_0xbdcfx4)})));this[_0xfdce[30]](_0xfdce[130], new Menu(mxUtils[_0xfdce[29]](this,function(_0xbdcfx3,_0xbdcfx4){_0xbdcfx3[_0xfdce[72]](mxResources[_0xfdce[26]](_0xfdce[131]),null,mxUtils[_0xfdce[29]](this,function(){var _0xbdcfxc= new mxHierarchicalLayout(_0xbdcfx2,mxConstants.DIRECTION_WEST);this[_0xfdce[0]][_0xfdce[132]](_0xbdcfxc,true,true)}),_0xbdcfx4);_0xbdcfx3[_0xfdce[72]](mxResources[_0xfdce[26]](_0xfdce[133]),null,mxUtils[_0xfdce[29]](this,function(){var _0xbdcfxc= new mxHierarchicalLayout(_0xbdcfx2,mxConstants.DIRECTION_NORTH);this[_0xfdce[0]][_0xfdce[132]](_0xbdcfxc,true,true)}),_0xbdcfx4)})));this[_0xfdce[30]](_0xfdce[134], new Menu(mxUtils[_0xfdce[29]](this,function(_0xbdcfx3,_0xbdcfx4){this[_0xfdce[99]](_0xbdcfx3,[_0xfdce[135],_0xfdce[95],_0xfdce[136],_0xfdce[137],_0xfdce[95],_0xfdce[138],_0xfdce[139]],_0xbdcfx4)})));this[_0xfdce[30]](_0xfdce[140], new Menu(mxUtils[_0xfdce[29]](this,function(_0xbdcfx3,_0xbdcfx4){this[_0xfdce[99]](_0xbdcfx3,[_0xfdce[141],_0xfdce[142],_0xfdce[95]],_0xbdcfx4);this[_0xfdce[94]](_0xfdce[130],_0xbdcfx3,_0xbdcfx4);_0xbdcfx3[_0xfdce[24]](_0xbdcfx4);this[_0xfdce[99]](_0xbdcfx3,[_0xfdce[95],_0xfdce[143],_0xfdce[144],_0xfdce[145]],_0xbdcfx4)})));this[_0xfdce[30]](_0xfdce[146], new Menu(mxUtils[_0xfdce[29]](this,function(_0xbdcfx3,_0xbdcfx4){this[_0xfdce[99]](_0xbdcfx3,[_0xfdce[147]],_0xbdcfx4);_0xbdcfx3[_0xfdce[24]]();var _0xbdcfxd=[0.25,0.5,0.75,1,2,4];for(var _0xbdcfx6=0;_0xbdcfx6< _0xbdcfxd[_0xfdce[18]];_0xbdcfx6++){(function(_0xbdcfxe){_0xbdcfx3[_0xfdce[72]]((_0xbdcfxe* 100)+ _0xfdce[148],null,function(){_0xbdcfx2[_0xfdce[149]](_0xbdcfxe)},_0xbdcfx4)})(_0xbdcfxd[_0xbdcfx6])};this[_0xfdce[99]](_0xbdcfx3,[_0xfdce[95],_0xfdce[150],_0xfdce[151],_0xfdce[95],_0xfdce[152],_0xfdce[153],_0xfdce[95],_0xfdce[154],_0xfdce[155]],_0xbdcfx4)})));this[_0xfdce[30]](_0xfdce[156], new Menu(mxUtils[_0xfdce[29]](this,function(_0xbdcfx3,_0xbdcfx4){this[_0xfdce[99]](_0xbdcfx3,[_0xfdce[157],_0xfdce[158],_0xfdce[95],_0xfdce[159],_0xfdce[160],_0xfdce[161],_0xfdce[95],_0xfdce[162],_0xfdce[95],_0xfdce[163],_0xfdce[164],_0xfdce[95],_0xfdce[165],_0xfdce[166],_0xfdce[95],_0xfdce[167]],_0xbdcfx4)})));this[_0xfdce[30]](_0xfdce[168], new Menu(mxUtils[_0xfdce[29]](this,function(_0xbdcfx3,_0xbdcfx4){this[_0xfdce[99]](_0xbdcfx3,[_0xfdce[169],_0xfdce[170],_0xfdce[95],_0xfdce[171],_0xfdce[172],_0xfdce[173],_0xfdce[174],_0xfdce[95],_0xfdce[175],_0xfdce[95],_0xfdce[176],_0xfdce[177],_0xfdce[178]])})));this[_0xfdce[30]](_0xfdce[179], new Menu(mxUtils[_0xfdce[29]](this,function(_0xbdcfx3,_0xbdcfx4){this[_0xfdce[99]](_0xbdcfx3,[_0xfdce[179],_0xfdce[95],_0xfdce[180]])})))};Menus[_0xfdce[5]][_0xfdce[30]]= function(_0xbdcfxf,_0xbdcfx3){this[_0xfdce[1]][_0xbdcfxf]= _0xbdcfx3};Menus[_0xfdce[5]][_0xfdce[26]]= function(_0xbdcfxf){return this[_0xfdce[1]][_0xbdcfxf]};Menus[_0xfdce[5]][_0xfdce[94]]= function(_0xbdcfxf,_0xbdcfx3,_0xbdcfx4){var _0xbdcfxb=this[_0xfdce[26]](_0xbdcfxf)[_0xfdce[78]];if(_0xbdcfx3[_0xfdce[81]]|| _0xbdcfxb){var _0xbdcfx10=_0xbdcfx3[_0xfdce[72]](mxResources[_0xfdce[26]](_0xbdcfxf),null,null,_0xbdcfx4,null,_0xbdcfxb);this[_0xfdce[181]](_0xbdcfxf,_0xbdcfx3,_0xbdcfx10)}};Menus[_0xfdce[5]][_0xfdce[181]]= function(_0xbdcfxf,_0xbdcfx11,_0xbdcfx4){var _0xbdcfx3=this[_0xfdce[26]](_0xbdcfxf);if(_0xbdcfx3!= null&& (_0xbdcfx11[_0xfdce[81]]|| _0xbdcfx3[_0xfdce[78]])){this[_0xfdce[26]](_0xbdcfxf)[_0xfdce[182]](_0xbdcfx11,_0xbdcfx4)}};Menus[_0xfdce[5]][_0xfdce[20]]= function(_0xbdcfx3,_0xbdcfx12,_0xbdcfx13,_0xbdcfx14,_0xbdcfx15,_0xbdcfx4){return _0xbdcfx3[_0xfdce[72]](_0xbdcfx12,null,mxUtils[_0xfdce[29]](this,function(){var _0xbdcfx2=this[_0xfdce[0]][_0xfdce[7]][_0xfdce[6]];_0xbdcfx2[_0xfdce[184]]()[_0xfdce[183]]();try{for(var _0xbdcfx6=0;_0xbdcfx6< _0xbdcfx13[_0xfdce[18]];_0xbdcfx6++){_0xbdcfx2[_0xfdce[185]](_0xbdcfx13[_0xbdcfx6],_0xbdcfx14[_0xbdcfx6])}}finally{_0xbdcfx2[_0xfdce[184]]()[_0xfdce[186]]()}}),_0xbdcfx4,_0xbdcfx15)};Menus[_0xfdce[5]][_0xfdce[28]]= function(_0xbdcfx3,_0xbdcfx12,_0xbdcfx16,_0xbdcfx17,_0xbdcfx18,_0xbdcfx4,_0xbdcfxb){return _0xbdcfx3[_0xfdce[72]](_0xbdcfx12,null,mxUtils[_0xfdce[29]](this,function(){var _0xbdcfx2=this[_0xfdce[0]][_0xfdce[7]][_0xfdce[6]];var _0xbdcfx19=_0xbdcfx17;var _0xbdcfx1a=_0xbdcfx2[_0xfdce[189]]()[_0xfdce[188]](_0xbdcfx2[_0xfdce[187]]());if(_0xbdcfx1a!= null){_0xbdcfx19= _0xbdcfx1a[_0xfdce[21]][_0xbdcfx18]|| _0xbdcfx19};_0xbdcfx19= mxUtils[_0xfdce[192]](mxResources[_0xfdce[26]](_0xfdce[190])+ ((_0xbdcfx16[_0xfdce[18]]> 0)?(_0xfdce[191]+ _0xbdcfx16):_0xfdce[27]),_0xbdcfx19);if(_0xbdcfx19!= null&& _0xbdcfx19[_0xfdce[18]]> 0){_0xbdcfx2[_0xfdce[185]](_0xbdcfx18,_0xbdcfx19)}}),_0xbdcfx4,null,_0xbdcfxb)};Menus[_0xfdce[5]][_0xfdce[92]]= function(_0xbdcfx3,_0xbdcfx18,_0xbdcfx4){var _0xbdcfx1b=this[_0xfdce[0]][_0xfdce[80]][_0xfdce[26]](_0xbdcfx18);if(_0xbdcfx1b!= null&& (_0xbdcfx3[_0xfdce[81]]|| _0xbdcfx1b[_0xfdce[78]])){var _0xbdcfx1c=_0xbdcfx3[_0xfdce[72]](_0xbdcfx1b[_0xfdce[193]],null,_0xbdcfx1b[_0xfdce[194]],_0xbdcfx4,null,_0xbdcfx1b[_0xfdce[78]]);if(_0xbdcfx1b[_0xfdce[195]]&& _0xbdcfx1b[_0xfdce[196]]()){this[_0xfdce[197]](_0xbdcfx1c)};this[_0xfdce[198]](_0xbdcfx1c,_0xbdcfx1b);return _0xbdcfx1c};return null};Menus[_0xfdce[5]][_0xfdce[198]]= function(_0xbdcfx1c,_0xbdcfx1b){if(_0xbdcfx1b[_0xfdce[199]]!= null){var _0xbdcfx1d=_0xbdcfx1c[_0xfdce[23]][_0xfdce[22]][_0xfdce[22]];var _0xbdcfx1e=document[_0xfdce[201]](_0xfdce[200]);_0xbdcfx1e[_0xfdce[21]][_0xfdce[202]]= _0xfdce[203];mxUtils[_0xfdce[204]](_0xbdcfx1e,_0xbdcfx1b[_0xfdce[199]]);_0xbdcfx1d[_0xfdce[205]](_0xbdcfx1e)}};Menus[_0xfdce[5]][_0xfdce[197]]= function(_0xbdcfx1c){var _0xbdcfx1d=_0xbdcfx1c[_0xfdce[23]][_0xfdce[22]];_0xbdcfx1d[_0xfdce[21]][_0xfdce[206]]= _0xfdce[207]+ IMAGE_PATH+ _0xfdce[208];_0xbdcfx1d[_0xfdce[21]][_0xfdce[209]]= _0xfdce[210];_0xbdcfx1d[_0xfdce[21]][_0xfdce[211]]= _0xfdce[212]};Menus[_0xfdce[5]][_0xfdce[99]]= function(_0xbdcfx3,_0xbdcfx13,_0xbdcfx4){for(var _0xbdcfx6=0;_0xbdcfx6< _0xbdcfx13[_0xfdce[18]];_0xbdcfx6++){if(_0xbdcfx13[_0xbdcfx6]== _0xfdce[95]){_0xbdcfx3[_0xfdce[24]](_0xbdcfx4)}else {this[_0xfdce[92]](_0xbdcfx3,_0xbdcfx13[_0xbdcfx6],_0xbdcfx4)}}};Menus[_0xfdce[5]][_0xfdce[213]]= function(_0xbdcfx3,_0xbdcfx1f,_0xbdcfx20){var _0xbdcfx2=this[_0xfdce[0]][_0xfdce[7]][_0xfdce[6]];_0xbdcfx3[_0xfdce[214]]= true;if(_0xbdcfx2[_0xfdce[215]]()){this[_0xfdce[99]](_0xbdcfx3,[_0xfdce[169],_0xfdce[170],_0xfdce[95],_0xfdce[173],_0xfdce[95]])}else {this[_0xfdce[99]](_0xbdcfx3,[_0xfdce[174],_0xfdce[95],_0xfdce[171],_0xfdce[172],_0xfdce[95],_0xfdce[175]]);if(_0xbdcfx2[_0xfdce[216]]()== 1&& _0xbdcfx2[_0xfdce[184]]()[_0xfdce[217]](_0xbdcfx2[_0xfdce[187]]())){this[_0xfdce[99]](_0xbdcfx3,[_0xfdce[218]])};_0xbdcfx3[_0xfdce[24]]()};if(_0xbdcfx2[_0xfdce[216]]()> 0){this[_0xfdce[99]](_0xbdcfx3,[_0xfdce[141],_0xfdce[142],_0xfdce[95]]);if(_0xbdcfx2[_0xfdce[184]]()[_0xfdce[217]](_0xbdcfx2[_0xfdce[187]]())){var _0xbdcfx21=false;var _0xbdcfx1f=_0xbdcfx2[_0xfdce[187]]();if(_0xbdcfx1f!= null&& _0xbdcfx2[_0xfdce[184]]()[_0xfdce[217]](_0xbdcfx1f)){var _0xbdcfx22=_0xbdcfx2[_0xfdce[220]][_0xfdce[219]](_0xbdcfx1f);if(_0xbdcfx22 instanceof mxEdgeHandler&& _0xbdcfx22[_0xfdce[221]]!= null&& _0xbdcfx22[_0xfdce[221]][_0xfdce[18]]> 2){var _0xbdcfx23=_0xbdcfx22[_0xfdce[222]]( new mxMouseEvent(_0xbdcfx20));var _0xbdcfx24=this[_0xfdce[0]][_0xfdce[80]][_0xfdce[26]](_0xfdce[223]);_0xbdcfx24[_0xfdce[224]]= _0xbdcfx22;_0xbdcfx24[_0xfdce[225]]= _0xbdcfx23;_0xbdcfx21= _0xbdcfx23> 0&& _0xbdcfx23< _0xbdcfx22[_0xfdce[221]][_0xfdce[18]]}};this[_0xfdce[99]](_0xbdcfx3,[_0xfdce[95],(_0xbdcfx21)?_0xfdce[223]:_0xfdce[226]])}else {if(_0xbdcfx2[_0xfdce[216]]()> 1){_0xbdcfx3[_0xfdce[24]]();this[_0xfdce[99]](_0xbdcfx3,[_0xfdce[143]])}};_0xbdcfx3[_0xfdce[24]]();if(_0xbdcfx2[_0xfdce[216]]()== 1){var _0xbdcfx25=_0xbdcfx2[_0xfdce[227]](_0xbdcfx2[_0xfdce[187]]());if(_0xbdcfx25!= null){this[_0xfdce[99]](_0xbdcfx3,[_0xfdce[228]])}}}else {this[_0xfdce[99]](_0xbdcfx3,[_0xfdce[95],_0xfdce[176],_0xfdce[177],_0xfdce[95],_0xfdce[178]])}};Menus[_0xfdce[5]][_0xfdce[229]]= function(_0xbdcfx26){var _0xbdcfx27= new Menubar(this[_0xfdce[0]],_0xbdcfx26);var _0xbdcfx28=[_0xfdce[156],_0xfdce[168],_0xfdce[146],_0xfdce[91],_0xfdce[93],_0xfdce[140],_0xfdce[179]];for(var _0xbdcfx6=0;_0xbdcfx6< _0xbdcfx28[_0xfdce[18]];_0xbdcfx6++){_0xbdcfx27[_0xfdce[181]](mxResources[_0xfdce[26]](_0xbdcfx28[_0xbdcfx6]),this[_0xfdce[26]](_0xbdcfx28[_0xbdcfx6])[_0xfdce[194]])};return _0xbdcfx27};function Menubar(_0xbdcfx1,_0xbdcfx26){this[_0xfdce[0]]= _0xbdcfx1;this[_0xfdce[230]]= _0xbdcfx26;mxEvent[_0xfdce[232]](document,mxUtils[_0xfdce[29]](this,function(_0xbdcfx20){this[_0xfdce[231]]()}))}Menubar[_0xfdce[5]][_0xfdce[231]]= function(){if(this[_0xfdce[233]]!= null){this[_0xfdce[233]][_0xfdce[231]]()}};Menubar[_0xfdce[5]][_0xfdce[181]]= function(_0xbdcfx12,_0xbdcfx2a){var _0xbdcfx2b=document[_0xfdce[201]](_0xfdce[234]);_0xbdcfx2b[_0xfdce[237]](_0xfdce[235],_0xfdce[236]);_0xbdcfx2b[_0xfdce[238]]= _0xfdce[239];mxUtils[_0xfdce[204]](_0xbdcfx2b,_0xbdcfx12);this[_0xfdce[240]](_0xbdcfx2b,_0xbdcfx2a);this[_0xfdce[230]][_0xfdce[205]](_0xbdcfx2b);return _0xbdcfx2b};Menubar[_0xfdce[5]][_0xfdce[240]]= function(_0xbdcfx2b,_0xbdcfx2a){if(_0xbdcfx2a!= null){var _0xbdcfx2c=true;var _0xbdcfx2d=mxUtils[_0xfdce[29]](this,function(_0xbdcfx20){if(_0xbdcfx2c&& _0xbdcfx2b[_0xfdce[78]]== null|| _0xbdcfx2b[_0xfdce[78]]){this[_0xfdce[0]][_0xfdce[7]][_0xfdce[6]][_0xfdce[241]][_0xfdce[231]]();var _0xbdcfx3= new mxPopupMenu(_0xbdcfx2a);_0xbdcfx3[_0xfdce[242]][_0xfdce[238]]+= _0xfdce[243];_0xbdcfx3[_0xfdce[214]]= true;_0xbdcfx3[_0xfdce[81]]= true;_0xbdcfx3[_0xfdce[244]]= true;_0xbdcfx3[_0xfdce[231]]= mxUtils[_0xfdce[29]](this,function(){mxPopupMenu[_0xfdce[5]][_0xfdce[231]][_0xfdce[245]](_0xbdcfx3,arguments);_0xbdcfx3[_0xfdce[246]]();this[_0xfdce[233]]= null;this[_0xfdce[247]]= null});var _0xbdcfx2e=_0xbdcfx2b[_0xfdce[248]]+ document[_0xfdce[251]](_0xfdce[250])[_0xfdce[249]]+ 22;var _0xbdcfx2f=_0xbdcfx2b[_0xfdce[252]]+ _0xbdcfx2b[_0xfdce[253]]+ 140;_0xbdcfx3[_0xfdce[254]](_0xbdcfx2e,_0xbdcfx2f,null,_0xbdcfx20);this[_0xfdce[233]]= _0xbdcfx3;this[_0xfdce[247]]= _0xbdcfx2b};_0xbdcfx2c= true;mxEvent[_0xfdce[255]](_0xbdcfx20)});mxEvent[_0xfdce[257]](_0xbdcfx2b,_0xfdce[256],mxUtils[_0xfdce[29]](this,function(_0xbdcfx20){if(this[_0xfdce[233]]!= null&& this[_0xfdce[247]]!= _0xbdcfx2b){this[_0xfdce[231]]();_0xbdcfx2d(_0xbdcfx20)}}));mxEvent[_0xfdce[257]](_0xbdcfx2b,_0xfdce[258],mxUtils[_0xfdce[29]](this,function(){_0xbdcfx2c= this[_0xfdce[247]]!= _0xbdcfx2b}));mxEvent[_0xfdce[257]](_0xbdcfx2b,_0xfdce[259],_0xbdcfx2d)}};function Menu(_0xbdcfx2a,_0xbdcfxb){mxEventSource[_0xfdce[260]](this);this[_0xfdce[194]]= _0xbdcfx2a;this[_0xfdce[78]]= (_0xbdcfxb!= null)?_0xbdcfxb:true}mxUtils[_0xfdce[261]](Menu,mxEventSource);Menu[_0xfdce[5]][_0xfdce[262]]= function(_0xbdcfx19){if(this[_0xfdce[78]]!= _0xbdcfx19){this[_0xfdce[78]]= _0xbdcfx19;this[_0xfdce[264]]( new mxEventObject(_0xfdce[263]))}};Menu[_0xfdce[5]][_0xfdce[182]]= function(_0xbdcfx3,_0xbdcfx4){this[_0xfdce[194]](_0xbdcfx3,_0xbdcfx4)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/public/assets/plugins/square/js/Shapes.js b/public/assets/plugins/square/js/Shapes.js index 2da876c..66dc905 100644 --- a/public/assets/plugins/square/js/Shapes.js +++ b/public/assets/plugins/square/js/Shapes.js @@ -1 +1 @@ -var _0x567b=["\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x63\x6F\x6E\x73\x74\x72\x75\x63\x74\x6F\x72","\x73\x69\x7A\x65","\x72\x65\x64\x72\x61\x77\x50\x61\x74\x68","\x73\x74\x79\x6C\x65","\x67\x65\x74\x56\x61\x6C\x75\x65","\x6D\x69\x6E","\x6D\x6F\x76\x65\x54\x6F","\x6C\x69\x6E\x65\x54\x6F","\x65\x6E\x64","\x63\x6C\x6F\x73\x65","\x63\x75\x62\x65","\x64\x65\x66\x61\x75\x6C\x74\x53\x68\x61\x70\x65\x73","\x6E\x6F\x74\x65","\x74\x61\x62\x57\x69\x64\x74\x68","\x74\x61\x62\x48\x65\x69\x67\x68\x74","\x74\x61\x62\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x72\x69\x67\x68\x74","\x6C\x65\x66\x74","\x66\x6F\x6C\x64\x65\x72","\x63\x61\x72\x64","\x71\x75\x61\x64\x54\x6F","\x74\x61\x70\x65","\x73\x74\x65\x70","\x63\x61\x6C\x6C","\x65\x78\x74\x65\x6E\x64","\x69\x73\x48\x74\x6D\x6C\x41\x6C\x6C\x6F\x77\x65\x64","\x70\x61\x69\x6E\x74\x46\x6F\x72\x65\x67\x72\x6F\x75\x6E\x64","\x62\x65\x67\x69\x6E","\x73\x74\x72\x6F\x6B\x65","\x61\x70\x70\x6C\x79","\x70\x6C\x75\x73","\x64\x6F\x75\x62\x6C\x65","\x73\x74\x72\x6F\x6B\x65\x77\x69\x64\x74\x68","\x6D\x61\x78","\x70\x61\x69\x6E\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x73\x65\x74\x44\x61\x73\x68\x65\x64","\x73\x79\x6D\x62\x6F\x6C","\x41\x6C\x69\x67\x6E","\x56\x65\x72\x74\x69\x63\x61\x6C\x41\x6C\x69\x67\x6E","\x57\x69\x64\x74\x68","\x48\x65\x69\x67\x68\x74","\x53\x70\x61\x63\x69\x6E\x67","\x41\x72\x63\x53\x70\x61\x63\x69\x6E\x67","\x67\x65\x74\x41\x72\x63\x53\x69\x7A\x65","\x41\x4C\x49\x47\x4E\x5F\x43\x45\x4E\x54\x45\x52","\x41\x4C\x49\x47\x4E\x5F\x52\x49\x47\x48\x54","\x41\x4C\x49\x47\x4E\x5F\x4D\x49\x44\x44\x4C\x45","\x41\x4C\x49\x47\x4E\x5F\x42\x4F\x54\x54\x4F\x4D","\x73\x61\x76\x65","\x70\x61\x69\x6E\x74\x56\x65\x72\x74\x65\x78\x53\x68\x61\x70\x65","\x72\x65\x73\x74\x6F\x72\x65","\x65\x78\x74","\x6D\x65\x73\x73\x61\x67\x65","\x61\x64\x64\x50\x69\x70\x65","\x63\x75\x72\x76\x65\x54\x6F","\x75\x6D\x6C\x41\x63\x74\x6F\x72","\x6C\x6F\x6C\x6C\x69\x70\x6F\x70","\x6A\x65\x74\x74\x79\x57\x69\x64\x74\x68","\x6A\x65\x74\x74\x79\x48\x65\x69\x67\x68\x74","\x63\x6F\x6D\x70\x6F\x6E\x65\x6E\x74","\x6F\x75\x74\x65\x72\x53\x74\x72\x6F\x6B\x65","\x65\x6C\x6C\x69\x70\x73\x65","\x66\x69\x6C\x6C\x41\x6E\x64\x53\x74\x72\x6F\x6B\x65","\x73\x65\x74\x53\x68\x61\x64\x6F\x77","\x65\x6E\x64\x53\x74\x61\x74\x65","\x73\x74\x61\x72\x74\x53\x74\x61\x74\x65","\x69\x6E\x69\x74\x53\x68\x61\x70\x65\x73","\x78","\x79","\x77\x69\x64\x74\x68","\x68\x65\x69\x67\x68\x74","\x73\x68\x61\x70\x65\x73","\x70\x61\x69\x6E\x74\x45\x64\x67\x65\x53\x68\x61\x70\x65","\x6C\x65\x6E\x67\x74\x68","\x73\x71\x72\x74","\x6C\x69\x6E\x6B","\x64\x61\x73\x68","\x61\x64\x64\x4D\x61\x72\x6B\x65\x72","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x75\x73\x65\x47\x72\x69\x64\x46\x6F\x72\x53\x70\x65\x63\x69\x61\x6C\x48\x61\x6E\x64\x6C\x65","\x69\x6E\x69\x74","\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C","\x73\x74\x61\x74\x65","\x67\x72\x61\x70\x68","\x76\x69\x65\x77","\x68\x61\x6E\x64\x6C\x65\x49\x6D\x61\x67\x65","\x73\x70\x65\x63\x69\x61\x6C\x48\x61\x6E\x64\x6C\x65","\x73\x72\x63","\x64\x69\x61\x6C\x65\x63\x74","\x44\x49\x41\x4C\x45\x43\x54\x5F\x53\x56\x47","\x44\x49\x41\x4C\x45\x43\x54\x5F\x56\x4D\x4C","\x67\x65\x74\x4F\x76\x65\x72\x6C\x61\x79\x50\x61\x6E\x65","\x67\x65\x74\x56\x69\x65\x77","\x63\x75\x72\x73\x6F\x72","\x6E\x6F\x64\x65","\x67\x65\x74\x53\x70\x65\x63\x69\x61\x6C\x48\x61\x6E\x64\x6C\x65\x43\x75\x72\x73\x6F\x72","\x72\x65\x64\x69\x72\x65\x63\x74\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74\x73","\x64\x65\x66\x61\x75\x6C\x74","\x72\x65\x64\x72\x61\x77","\x62\x6F\x75\x6E\x64\x73","\x67\x65\x74\x53\x70\x65\x63\x69\x61\x6C\x48\x61\x6E\x64\x6C\x65\x42\x6F\x75\x6E\x64\x73","\x64\x65\x73\x74\x72\x6F\x79","\x67\x65\x74\x48\x61\x6E\x64\x6C\x65\x46\x6F\x72\x45\x76\x65\x6E\x74","\x69\x73\x53\x6F\x75\x72\x63\x65","\x6D\x6F\x75\x73\x65\x4D\x6F\x76\x65","\x69\x73\x43\x6F\x6E\x73\x75\x6D\x65\x64","\x69\x6E\x64\x65\x78","\x67\x65\x74\x47\x72\x61\x70\x68\x58","\x67\x65\x74\x47\x72\x61\x70\x68\x59","\x63\x6F\x6E\x73\x74\x72\x61\x69\x6E\x50\x6F\x69\x6E\x74","\x67\x65\x74\x45\x76\x65\x6E\x74","\x69\x73\x47\x72\x69\x64\x45\x6E\x61\x62\x6C\x65\x64\x45\x76\x65\x6E\x74","\x73\x63\x61\x6C\x65","\x73\x6E\x61\x70","\x75\x70\x64\x61\x74\x65\x53\x74\x79\x6C\x65","\x6D\x6F\x76\x65\x53\x69\x7A\x65\x72\x54\x6F","\x63\x65\x6C\x6C\x52\x65\x6E\x64\x65\x72\x65\x72","\x63\x6F\x6E\x73\x75\x6D\x65","\x6D\x6F\x75\x73\x65\x55\x70","\x61\x70\x70\x6C\x79\x53\x74\x79\x6C\x65","\x72\x65\x73\x65\x74","\x67\x65\x74\x53\x68\x61\x70\x65\x52\x6F\x74\x61\x74\x69\x6F\x6E","\x73\x68\x61\x70\x65","\x74\x6F\x52\x61\x64\x69\x61\x6E\x73","\x63\x6F\x73","\x73\x69\x6E","\x69\x73\x50\x61\x69\x6E\x74\x42\x6F\x75\x6E\x64\x73\x49\x6E\x76\x65\x72\x74\x65\x64","\x67\x65\x74\x53\x70\x65\x63\x69\x61\x6C\x48\x61\x6E\x64\x6C\x65\x50\x6F\x69\x6E\x74","\x66\x6C\x69\x70\x48","\x66\x6C\x69\x70\x56","\x67\x65\x74\x43\x65\x6E\x74\x65\x72\x58","\x67\x65\x74\x43\x65\x6E\x74\x65\x72\x59","\x67\x65\x74\x52\x6F\x74\x61\x74\x65\x64\x50\x6F\x69\x6E\x74","\x75\x70\x64\x61\x74\x65\x53\x74\x79\x6C\x65\x55\x6E\x72\x6F\x74\x61\x74\x65\x64","\x72\x6F\x75\x6E\x64","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x62\x65\x67\x69\x6E\x55\x70\x64\x61\x74\x65","\x63\x65\x6C\x6C","\x73\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x73","\x65\x6E\x64\x55\x70\x64\x61\x74\x65","\x73\x74\x61\x72\x74\x53\x69\x7A\x65","\x64\x65\x66\x61\x75\x6C\x74\x56\x61\x6C\x75\x65","\x73\x63\x61\x6C\x65\x46\x61\x63\x74\x6F\x72","\x63\x72\x65\x61\x74\x65\x48\x61\x6E\x64\x6C\x65\x72","\x67\x65\x74\x41\x6C\x6C\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x73","\x73\x74\x65\x6E\x63\x69\x6C","\x63\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x73"];(function(){function _0x6a10x1(){}_0x6a10x1[_0x567b[0]]= new mxCylinder();_0x6a10x1[_0x567b[0]][_0x567b[1]]= _0x6a10x1;_0x6a10x1[_0x567b[0]][_0x567b[2]]= 20;_0x6a10x1[_0x567b[0]][_0x567b[3]]= function(_0x6a10x2,_0x6a10x3,_0x6a10x4,_0x6a10x5,_0x6a10x6,_0x6a10x7){var _0x6a10x8=Math[_0x567b[6]](_0x6a10x5,Math[_0x567b[6]](_0x6a10x6,mxUtils[_0x567b[5]](this[_0x567b[4]],_0x567b[2],this[_0x567b[2]])));if(_0x6a10x7){_0x6a10x2[_0x567b[7]](_0x6a10x8,_0x6a10x6);_0x6a10x2[_0x567b[8]](_0x6a10x8,_0x6a10x8);_0x6a10x2[_0x567b[8]](0,0);_0x6a10x2[_0x567b[7]](_0x6a10x8,_0x6a10x8);_0x6a10x2[_0x567b[8]](_0x6a10x5,_0x6a10x8);_0x6a10x2[_0x567b[9]]()}else {_0x6a10x2[_0x567b[7]](0,0);_0x6a10x2[_0x567b[8]](_0x6a10x5- _0x6a10x8,0);_0x6a10x2[_0x567b[8]](_0x6a10x5,_0x6a10x8);_0x6a10x2[_0x567b[8]](_0x6a10x5,_0x6a10x6);_0x6a10x2[_0x567b[8]](_0x6a10x8,_0x6a10x6);_0x6a10x2[_0x567b[8]](0,_0x6a10x6- _0x6a10x8);_0x6a10x2[_0x567b[8]](0,0);_0x6a10x2[_0x567b[10]]();_0x6a10x2[_0x567b[9]]()}};mxCellRenderer[_0x567b[0]][_0x567b[12]][_0x567b[11]]= _0x6a10x1;function _0x6a10x9(){}_0x6a10x9[_0x567b[0]]= new mxCylinder();_0x6a10x9[_0x567b[0]][_0x567b[1]]= _0x6a10x9;_0x6a10x9[_0x567b[0]][_0x567b[2]]= 30;_0x6a10x9[_0x567b[0]][_0x567b[3]]= function(_0x6a10x2,_0x6a10x3,_0x6a10x4,_0x6a10x5,_0x6a10x6,_0x6a10x7){var _0x6a10x8=Math[_0x567b[6]](_0x6a10x5,Math[_0x567b[6]](_0x6a10x6,mxUtils[_0x567b[5]](this[_0x567b[4]],_0x567b[2],this[_0x567b[2]])));if(_0x6a10x7){_0x6a10x2[_0x567b[7]](_0x6a10x5- _0x6a10x8,0);_0x6a10x2[_0x567b[8]](_0x6a10x5- _0x6a10x8,_0x6a10x8);_0x6a10x2[_0x567b[8]](_0x6a10x5,_0x6a10x8);_0x6a10x2[_0x567b[9]]()}else {_0x6a10x2[_0x567b[7]](0,0);_0x6a10x2[_0x567b[8]](_0x6a10x5- _0x6a10x8,0);_0x6a10x2[_0x567b[8]](_0x6a10x5,_0x6a10x8);_0x6a10x2[_0x567b[8]](_0x6a10x5,_0x6a10x6);_0x6a10x2[_0x567b[8]](0,_0x6a10x6);_0x6a10x2[_0x567b[8]](0,0);_0x6a10x2[_0x567b[10]]();_0x6a10x2[_0x567b[9]]()}};mxCellRenderer[_0x567b[0]][_0x567b[12]][_0x567b[13]]= _0x6a10x9;function _0x6a10xa(){}_0x6a10xa[_0x567b[0]]= new mxCylinder();_0x6a10xa[_0x567b[0]][_0x567b[1]]= _0x6a10xa;_0x6a10xa[_0x567b[0]][_0x567b[14]]= 60;_0x6a10xa[_0x567b[0]][_0x567b[15]]= 20;_0x6a10xa[_0x567b[0]][_0x567b[16]]= _0x567b[17];_0x6a10xa[_0x567b[0]][_0x567b[3]]= function(_0x6a10x2,_0x6a10x3,_0x6a10x4,_0x6a10x5,_0x6a10x6,_0x6a10x7){var _0x6a10xb=mxUtils[_0x567b[5]](this[_0x567b[4]],_0x567b[14],this[_0x567b[14]]);var _0x6a10xc=mxUtils[_0x567b[5]](this[_0x567b[4]],_0x567b[15],this[_0x567b[15]]);var _0x6a10xd=mxUtils[_0x567b[5]](this[_0x567b[4]],_0x567b[16],this[_0x567b[16]]);var _0x6a10xe=Math[_0x567b[6]](_0x6a10x5,_0x6a10xb);var _0x6a10xf=Math[_0x567b[6]](_0x6a10x6,_0x6a10xc);if(_0x6a10x7){if(_0x6a10xd== _0x567b[18]){_0x6a10x2[_0x567b[7]](0,_0x6a10xf);_0x6a10x2[_0x567b[8]](_0x6a10xe,_0x6a10xf)}else {_0x6a10x2[_0x567b[7]](_0x6a10x5- _0x6a10xe,_0x6a10xf);_0x6a10x2[_0x567b[8]](_0x6a10x5,_0x6a10xf)};_0x6a10x2[_0x567b[9]]()}else {if(_0x6a10xd== _0x567b[18]){_0x6a10x2[_0x567b[7]](0,0);_0x6a10x2[_0x567b[8]](_0x6a10xe,0);_0x6a10x2[_0x567b[8]](_0x6a10xe,_0x6a10xf);_0x6a10x2[_0x567b[8]](_0x6a10x5,_0x6a10xf)}else {_0x6a10x2[_0x567b[7]](0,_0x6a10xf);_0x6a10x2[_0x567b[8]](_0x6a10x5- _0x6a10xe,_0x6a10xf);_0x6a10x2[_0x567b[8]](_0x6a10x5- _0x6a10xe,0);_0x6a10x2[_0x567b[8]](_0x6a10x5,0)};_0x6a10x2[_0x567b[8]](_0x6a10x5,_0x6a10x6);_0x6a10x2[_0x567b[8]](0,_0x6a10x6);_0x6a10x2[_0x567b[8]](0,_0x6a10xf);_0x6a10x2[_0x567b[10]]();_0x6a10x2[_0x567b[9]]()}};mxCellRenderer[_0x567b[0]][_0x567b[12]][_0x567b[19]]= _0x6a10xa;function _0x6a10x10(){}_0x6a10x10[_0x567b[0]]= new mxCylinder();_0x6a10x10[_0x567b[0]][_0x567b[1]]= _0x6a10x10;_0x6a10x10[_0x567b[0]][_0x567b[2]]= 30;_0x6a10x10[_0x567b[0]][_0x567b[3]]= function(_0x6a10x2,_0x6a10x3,_0x6a10x4,_0x6a10x5,_0x6a10x6,_0x6a10x7){var _0x6a10x8=Math[_0x567b[6]](_0x6a10x5,Math[_0x567b[6]](_0x6a10x6,mxUtils[_0x567b[5]](this[_0x567b[4]],_0x567b[2],this[_0x567b[2]])));if(!_0x6a10x7){_0x6a10x2[_0x567b[7]](_0x6a10x8,0);_0x6a10x2[_0x567b[8]](_0x6a10x5,0);_0x6a10x2[_0x567b[8]](_0x6a10x5,_0x6a10x6);_0x6a10x2[_0x567b[8]](0,_0x6a10x6);_0x6a10x2[_0x567b[8]](0,_0x6a10x8);_0x6a10x2[_0x567b[8]](_0x6a10x8,0);_0x6a10x2[_0x567b[10]]();_0x6a10x2[_0x567b[9]]()}};mxCellRenderer[_0x567b[0]][_0x567b[12]][_0x567b[20]]= _0x6a10x10;function _0x6a10x11(){}_0x6a10x11[_0x567b[0]]= new mxCylinder();_0x6a10x11[_0x567b[0]][_0x567b[1]]= _0x6a10x11;_0x6a10x11[_0x567b[0]][_0x567b[2]]= 0.4;_0x6a10x11[_0x567b[0]][_0x567b[3]]= function(_0x6a10x2,_0x6a10x3,_0x6a10x4,_0x6a10x5,_0x6a10x6,_0x6a10x7){var _0x6a10x8=mxUtils[_0x567b[5]](this[_0x567b[4]],_0x567b[2],this[_0x567b[2]]);var _0x6a10xf=_0x6a10x6* _0x6a10x8;var _0x6a10x12=1.4;if(!_0x6a10x7){_0x6a10x2[_0x567b[7]](0,_0x6a10xf/ 2);_0x6a10x2[_0x567b[21]](_0x6a10x5/ 4,_0x6a10xf* _0x6a10x12,_0x6a10x5/ 2,_0x6a10xf/ 2);_0x6a10x2[_0x567b[21]](_0x6a10x5* 3/ 4,_0x6a10xf* (1- _0x6a10x12),_0x6a10x5,_0x6a10xf/ 2);_0x6a10x2[_0x567b[8]](_0x6a10x5,_0x6a10x6- _0x6a10xf/ 2);_0x6a10x2[_0x567b[21]](_0x6a10x5* 3/ 4,_0x6a10x6- _0x6a10xf* _0x6a10x12,_0x6a10x5/ 2,_0x6a10x6- _0x6a10xf/ 2);_0x6a10x2[_0x567b[21]](_0x6a10x5/ 4,_0x6a10x6- _0x6a10xf* (1- _0x6a10x12),0,_0x6a10x6- _0x6a10xf/ 2);_0x6a10x2[_0x567b[8]](0,_0x6a10xf/ 2);_0x6a10x2[_0x567b[10]]();_0x6a10x2[_0x567b[9]]()}};mxCellRenderer[_0x567b[0]][_0x567b[12]][_0x567b[22]]= _0x6a10x11;function _0x6a10x13(){}_0x6a10x13[_0x567b[0]]= new mxCylinder();_0x6a10x13[_0x567b[0]][_0x567b[1]]= _0x6a10x13;_0x6a10x13[_0x567b[0]][_0x567b[2]]= 0.2;_0x6a10x13[_0x567b[0]][_0x567b[3]]= function(_0x6a10x2,_0x6a10x3,_0x6a10x4,_0x6a10x5,_0x6a10x6,_0x6a10x7){var _0x6a10x8=_0x6a10x5* mxUtils[_0x567b[5]](this[_0x567b[4]],_0x567b[2],this[_0x567b[2]]);if(!_0x6a10x7){_0x6a10x2[_0x567b[7]](0,0);_0x6a10x2[_0x567b[8]](_0x6a10x5- _0x6a10x8,0);_0x6a10x2[_0x567b[8]](_0x6a10x5,_0x6a10x6/ 2);_0x6a10x2[_0x567b[8]](_0x6a10x5- _0x6a10x8,_0x6a10x6);_0x6a10x2[_0x567b[8]](0,_0x6a10x6);_0x6a10x2[_0x567b[8]](_0x6a10x8,_0x6a10x6/ 2);_0x6a10x2[_0x567b[10]]();_0x6a10x2[_0x567b[9]]()}};mxCellRenderer[_0x567b[0]][_0x567b[12]][_0x567b[23]]= _0x6a10x13;function _0x6a10x14(){mxRectangleShape[_0x567b[24]](this)}mxUtils[_0x567b[25]](_0x6a10x14,mxRectangleShape);_0x6a10x14[_0x567b[0]][_0x567b[26]]= function(){return false};_0x6a10x14[_0x567b[0]][_0x567b[27]]= function(_0x6a10x15,_0x6a10x3,_0x6a10x4,_0x6a10x5,_0x6a10x6){var _0x6a10x16=Math[_0x567b[6]](_0x6a10x5/ 5,_0x6a10x6/ 5)+ 1;_0x6a10x15[_0x567b[28]]();_0x6a10x15[_0x567b[7]](_0x6a10x3+ _0x6a10x5/ 2,_0x6a10x4+ _0x6a10x16);_0x6a10x15[_0x567b[8]](_0x6a10x3+ _0x6a10x5/ 2,_0x6a10x4+ _0x6a10x6- _0x6a10x16);_0x6a10x15[_0x567b[7]](_0x6a10x3+ _0x6a10x16,_0x6a10x4+ _0x6a10x6/ 2);_0x6a10x15[_0x567b[8]](_0x6a10x3+ _0x6a10x5- _0x6a10x16,_0x6a10x4+ _0x6a10x6/ 2);_0x6a10x15[_0x567b[9]]();_0x6a10x15[_0x567b[29]]();mxRectangleShape[_0x567b[0]][_0x567b[27]][_0x567b[30]](this,arguments)};mxCellRenderer[_0x567b[0]][_0x567b[12]][_0x567b[31]]= _0x6a10x14;function _0x6a10x17(){mxRectangleShape[_0x567b[24]](this)}mxUtils[_0x567b[25]](_0x6a10x17,mxRectangleShape);_0x6a10x17[_0x567b[0]][_0x567b[26]]= function(){return false};_0x6a10x17[_0x567b[0]][_0x567b[27]]= function(_0x6a10x15,_0x6a10x3,_0x6a10x4,_0x6a10x5,_0x6a10x6){if(this[_0x567b[4]]!= null){if(this[_0x567b[4]][_0x567b[32]]== 1){var _0x6a10x18=Math[_0x567b[34]](2,this[_0x567b[33]]+ 1);mxRectangleShape[_0x567b[0]][_0x567b[35]][_0x567b[24]](this,_0x6a10x15,_0x6a10x3+ _0x6a10x18,_0x6a10x4+ _0x6a10x18,_0x6a10x5- 2* _0x6a10x18,_0x6a10x6- 2* _0x6a10x18);mxRectangleShape[_0x567b[0]][_0x567b[27]][_0x567b[30]](this,arguments);_0x6a10x3+= _0x6a10x18;_0x6a10x4+= _0x6a10x18;_0x6a10x5-= 2* _0x6a10x18;_0x6a10x6-= 2* _0x6a10x18};_0x6a10x15[_0x567b[36]](false);var _0x6a10x19=0;var _0x6a10x1a=null;do{_0x6a10x1a= mxCellRenderer[_0x567b[0]][_0x567b[12]][this[_0x567b[4]][_0x567b[37]+ _0x6a10x19]];if(_0x6a10x1a!= null){var _0x6a10x1b=this[_0x567b[4]][_0x567b[37]+ _0x6a10x19+ _0x567b[38]];var _0x6a10x1c=this[_0x567b[4]][_0x567b[37]+ _0x6a10x19+ _0x567b[39]];var _0x6a10x1d=this[_0x567b[4]][_0x567b[37]+ _0x6a10x19+ _0x567b[40]];var _0x6a10x1e=this[_0x567b[4]][_0x567b[37]+ _0x6a10x19+ _0x567b[41]];var _0x6a10x1f=this[_0x567b[4]][_0x567b[37]+ _0x6a10x19+ _0x567b[42]]|| 0;var _0x6a10x20=this[_0x567b[4]][_0x567b[37]+ _0x6a10x19+ _0x567b[43]];if(_0x6a10x20!= null){_0x6a10x1f+= this[_0x567b[44]](_0x6a10x5+ this[_0x567b[33]],_0x6a10x6+ this[_0x567b[33]])* _0x6a10x20};var _0x6a10x21=_0x6a10x3;var _0x6a10x22=_0x6a10x4;if(_0x6a10x1b== mxConstants[_0x567b[45]]){_0x6a10x21+= (_0x6a10x5- _0x6a10x1d)/ 2}else {if(_0x6a10x1b== mxConstants[_0x567b[46]]){_0x6a10x21+= _0x6a10x5- _0x6a10x1d- _0x6a10x1f}else {_0x6a10x21+= _0x6a10x1f}};if(_0x6a10x1c== mxConstants[_0x567b[47]]){_0x6a10x22+= (_0x6a10x6- _0x6a10x1e)/ 2}else {if(_0x6a10x1c== mxConstants[_0x567b[48]]){_0x6a10x22+= _0x6a10x6- _0x6a10x1e- _0x6a10x1f}else {_0x6a10x22+= _0x6a10x1f}};_0x6a10x15[_0x567b[49]]();var _0x6a10x23= new _0x6a10x1a();_0x6a10x23[_0x567b[4]]= this[_0x567b[4]];_0x6a10x1a[_0x567b[0]][_0x567b[50]][_0x567b[24]](_0x6a10x23,_0x6a10x15,_0x6a10x21,_0x6a10x22,_0x6a10x1d,_0x6a10x1e);_0x6a10x15[_0x567b[51]]()};_0x6a10x19++}while(_0x6a10x1a!= null);}};mxCellRenderer[_0x567b[0]][_0x567b[12]][_0x567b[52]]= _0x6a10x17;function _0x6a10x24(){}_0x6a10x24[_0x567b[0]]= new mxCylinder();_0x6a10x24[_0x567b[0]][_0x567b[1]]= _0x6a10x24;_0x6a10x24[_0x567b[0]][_0x567b[3]]= function(_0x6a10x2,_0x6a10x3,_0x6a10x4,_0x6a10x5,_0x6a10x6,_0x6a10x7){if(_0x6a10x7){_0x6a10x2[_0x567b[7]](0,0);_0x6a10x2[_0x567b[8]](_0x6a10x5/ 2,_0x6a10x6/ 2);_0x6a10x2[_0x567b[8]](_0x6a10x5,0);_0x6a10x2[_0x567b[9]]()}else {_0x6a10x2[_0x567b[7]](0,0);_0x6a10x2[_0x567b[8]](_0x6a10x5,0);_0x6a10x2[_0x567b[8]](_0x6a10x5,_0x6a10x6);_0x6a10x2[_0x567b[8]](0,_0x6a10x6);_0x6a10x2[_0x567b[10]]()}};mxCellRenderer[_0x567b[0]][_0x567b[12]][_0x567b[53]]= _0x6a10x24;function _0x6a10x25(){}_0x6a10x25[_0x567b[0]]= new mxCylinder();_0x6a10x25[_0x567b[0]][_0x567b[1]]= _0x6a10x25;_0x6a10x25[_0x567b[0]][_0x567b[54]]= true;_0x6a10x25[_0x567b[0]][_0x567b[3]]= function(_0x6a10x2,_0x6a10x3,_0x6a10x4,_0x6a10x5,_0x6a10x6,_0x6a10x7){var _0x6a10x1d=_0x6a10x5/ 3;var _0x6a10x1e=_0x6a10x6/ 4;if(!_0x6a10x7){_0x6a10x2[_0x567b[7]](_0x6a10x5/ 2,_0x6a10x1e);_0x6a10x2[_0x567b[55]](_0x6a10x5/ 2- _0x6a10x1d,_0x6a10x1e,_0x6a10x5/ 2- _0x6a10x1d,0,_0x6a10x5/ 2,0);_0x6a10x2[_0x567b[55]](_0x6a10x5/ 2+ _0x6a10x1d,0,_0x6a10x5/ 2+ _0x6a10x1d,_0x6a10x1e,_0x6a10x5/ 2,_0x6a10x1e);_0x6a10x2[_0x567b[10]]();_0x6a10x2[_0x567b[7]](_0x6a10x5/ 2,_0x6a10x1e);_0x6a10x2[_0x567b[8]](_0x6a10x5/ 2,2* _0x6a10x6/ 3);_0x6a10x2[_0x567b[7]](_0x6a10x5/ 2,_0x6a10x6/ 3);_0x6a10x2[_0x567b[8]](0,_0x6a10x6/ 3);_0x6a10x2[_0x567b[7]](_0x6a10x5/ 2,_0x6a10x6/ 3);_0x6a10x2[_0x567b[8]](_0x6a10x5,_0x6a10x6/ 3);_0x6a10x2[_0x567b[7]](_0x6a10x5/ 2,2* _0x6a10x6/ 3);_0x6a10x2[_0x567b[8]](0,_0x6a10x6);_0x6a10x2[_0x567b[7]](_0x6a10x5/ 2,2* _0x6a10x6/ 3);_0x6a10x2[_0x567b[8]](_0x6a10x5,_0x6a10x6);_0x6a10x2[_0x567b[9]]()}};mxCellRenderer[_0x567b[0]][_0x567b[12]][_0x567b[56]]= _0x6a10x25;function _0x6a10x26(){}_0x6a10x26[_0x567b[0]]= new mxCylinder();_0x6a10x26[_0x567b[0]][_0x567b[1]]= _0x6a10x26;_0x6a10x26[_0x567b[0]][_0x567b[2]]= 10;_0x6a10x26[_0x567b[0]][_0x567b[54]]= true;_0x6a10x26[_0x567b[0]][_0x567b[3]]= function(_0x6a10x2,_0x6a10x3,_0x6a10x4,_0x6a10x5,_0x6a10x6,_0x6a10x7){var _0x6a10x27=mxUtils[_0x567b[5]](this[_0x567b[4]],_0x567b[2],this[_0x567b[2]]);var _0x6a10x1d=_0x6a10x27* 2/ 3;var _0x6a10x1e=_0x6a10x27;if(!_0x6a10x7){_0x6a10x2[_0x567b[7]](_0x6a10x5/ 2,_0x6a10x1e);_0x6a10x2[_0x567b[55]](_0x6a10x5/ 2- _0x6a10x1d,_0x6a10x1e,_0x6a10x5/ 2- _0x6a10x1d,0,_0x6a10x5/ 2,0);_0x6a10x2[_0x567b[55]](_0x6a10x5/ 2+ _0x6a10x1d,0,_0x6a10x5/ 2+ _0x6a10x1d,_0x6a10x1e,_0x6a10x5/ 2,_0x6a10x1e);_0x6a10x2[_0x567b[10]]();_0x6a10x2[_0x567b[7]](_0x6a10x5/ 2,_0x6a10x1e);_0x6a10x2[_0x567b[8]](_0x6a10x5/ 2,_0x6a10x6);_0x6a10x2[_0x567b[9]]()}};mxCellRenderer[_0x567b[0]][_0x567b[12]][_0x567b[57]]= _0x6a10x26;function _0x6a10x28(){}_0x6a10x28[_0x567b[0]]= new mxCylinder();_0x6a10x28[_0x567b[0]][_0x567b[1]]= _0x6a10x28;_0x6a10x28[_0x567b[0]][_0x567b[58]]= 32;_0x6a10x28[_0x567b[0]][_0x567b[59]]= 12;_0x6a10x28[_0x567b[0]][_0x567b[3]]= function(_0x6a10x2,_0x6a10x3,_0x6a10x4,_0x6a10x5,_0x6a10x6,_0x6a10x7){var _0x6a10xe=mxUtils[_0x567b[5]](this[_0x567b[4]],_0x567b[58],this[_0x567b[58]]);var _0x6a10xf=mxUtils[_0x567b[5]](this[_0x567b[4]],_0x567b[59],this[_0x567b[59]]);var _0x6a10x29=_0x6a10xe/ 2;var _0x6a10x2a=_0x6a10x29+ _0x6a10xe/ 2;var _0x6a10x2b=0.3* _0x6a10x6- _0x6a10xf/ 2;var _0x6a10x2c=0.7* _0x6a10x6- _0x6a10xf/ 2;if(_0x6a10x7){_0x6a10x2[_0x567b[7]](_0x6a10x29,_0x6a10x2b);_0x6a10x2[_0x567b[8]](_0x6a10x2a,_0x6a10x2b);_0x6a10x2[_0x567b[8]](_0x6a10x2a,_0x6a10x2b+ _0x6a10xf);_0x6a10x2[_0x567b[8]](_0x6a10x29,_0x6a10x2b+ _0x6a10xf);_0x6a10x2[_0x567b[7]](_0x6a10x29,_0x6a10x2c);_0x6a10x2[_0x567b[8]](_0x6a10x2a,_0x6a10x2c);_0x6a10x2[_0x567b[8]](_0x6a10x2a,_0x6a10x2c+ _0x6a10xf);_0x6a10x2[_0x567b[8]](_0x6a10x29,_0x6a10x2c+ _0x6a10xf);_0x6a10x2[_0x567b[9]]()}else {_0x6a10x2[_0x567b[7]](_0x6a10x29,0);_0x6a10x2[_0x567b[8]](_0x6a10x5,0);_0x6a10x2[_0x567b[8]](_0x6a10x5,_0x6a10x6);_0x6a10x2[_0x567b[8]](_0x6a10x29,_0x6a10x6);_0x6a10x2[_0x567b[8]](_0x6a10x29,_0x6a10x2c+ _0x6a10xf);_0x6a10x2[_0x567b[8]](0,_0x6a10x2c+ _0x6a10xf);_0x6a10x2[_0x567b[8]](0,_0x6a10x2c);_0x6a10x2[_0x567b[8]](_0x6a10x29,_0x6a10x2c);_0x6a10x2[_0x567b[8]](_0x6a10x29,_0x6a10x2b+ _0x6a10xf);_0x6a10x2[_0x567b[8]](0,_0x6a10x2b+ _0x6a10xf);_0x6a10x2[_0x567b[8]](0,_0x6a10x2b);_0x6a10x2[_0x567b[8]](_0x6a10x29,_0x6a10x2b);_0x6a10x2[_0x567b[10]]();_0x6a10x2[_0x567b[9]]()}};mxCellRenderer[_0x567b[0]][_0x567b[12]][_0x567b[60]]= _0x6a10x28;function _0x6a10x2d(){}_0x6a10x2d[_0x567b[0]]= new mxDoubleEllipse();_0x6a10x2d[_0x567b[0]][_0x567b[1]]= _0x6a10x2d;_0x6a10x2d[_0x567b[0]][_0x567b[61]]= true;_0x6a10x2d[_0x567b[0]][_0x567b[50]]= function(_0x6a10x15,_0x6a10x3,_0x6a10x4,_0x6a10x5,_0x6a10x6){var _0x6a10x18=Math[_0x567b[6]](4,Math[_0x567b[6]](_0x6a10x5/ 5,_0x6a10x6/ 5));if(_0x6a10x5> 0&& _0x6a10x6> 0){_0x6a10x15[_0x567b[62]](_0x6a10x3+ _0x6a10x18,_0x6a10x4+ _0x6a10x18,_0x6a10x5- 2* _0x6a10x18,_0x6a10x6- 2* _0x6a10x18);_0x6a10x15[_0x567b[63]]()};_0x6a10x15[_0x567b[64]](false);if(this[_0x567b[61]]){_0x6a10x15[_0x567b[62]](_0x6a10x3,_0x6a10x4,_0x6a10x5,_0x6a10x6);_0x6a10x15[_0x567b[29]]()}};mxCellRenderer[_0x567b[0]][_0x567b[12]][_0x567b[65]]= _0x6a10x2d;function _0x6a10x2e(){}_0x6a10x2e[_0x567b[0]]= new _0x6a10x2d();_0x6a10x2e[_0x567b[0]][_0x567b[1]]= _0x6a10x2e;_0x6a10x2e[_0x567b[0]][_0x567b[61]]= false;mxCellRenderer[_0x567b[0]][_0x567b[12]][_0x567b[66]]= _0x6a10x2e;var _0x6a10x2f=mxImageExport[_0x567b[0]][_0x567b[67]];mxImageExport[_0x567b[0]][_0x567b[67]]= function(){_0x6a10x2f[_0x567b[30]](this,arguments);function _0x6a10x30(_0x6a10x31){return {drawShape:function(_0x6a10x32,_0x6a10x33,_0x6a10x34,_0x6a10x35){var _0x6a10x3=_0x6a10x34[_0x567b[68]];var _0x6a10x4=_0x6a10x34[_0x567b[69]];var _0x6a10x5=_0x6a10x34[_0x567b[70]];var _0x6a10x6=_0x6a10x34[_0x567b[71]];if(_0x6a10x35){var _0x6a10x18=Math[_0x567b[6]](4,Math[_0x567b[6]](_0x6a10x5/ 5,_0x6a10x6/ 5));_0x6a10x3+= _0x6a10x18;_0x6a10x4+= _0x6a10x18;_0x6a10x5-= 2* _0x6a10x18;_0x6a10x6-= 2* _0x6a10x18;if(_0x6a10x5> 0&& _0x6a10x6> 0){_0x6a10x32[_0x567b[62]](_0x6a10x3,_0x6a10x4,_0x6a10x5,_0x6a10x6)};return true}else {_0x6a10x32[_0x567b[63]]();if(_0x6a10x31){_0x6a10x32[_0x567b[62]](_0x6a10x3,_0x6a10x4,_0x6a10x5,_0x6a10x6);_0x6a10x32[_0x567b[29]]()}}}}}this[_0x567b[72]][_0x567b[65]]= _0x6a10x30(true);this[_0x567b[72]][_0x567b[66]]= _0x6a10x30(false)};function _0x6a10x36(){mxArrow[_0x567b[24]](this)}mxUtils[_0x567b[25]](_0x6a10x36,mxArrow);_0x6a10x36[_0x567b[0]][_0x567b[73]]= function(_0x6a10x15,_0x6a10x37){var _0x6a10x1d=10;var _0x6a10x38=_0x6a10x37[0];var _0x6a10x39=_0x6a10x37[_0x6a10x37[_0x567b[74]]- 1];var _0x6a10xe=_0x6a10x39[_0x567b[68]]- _0x6a10x38[_0x567b[68]];var _0x6a10xf=_0x6a10x39[_0x567b[69]]- _0x6a10x38[_0x567b[69]];var _0x6a10x3a=Math[_0x567b[75]](_0x6a10xe* _0x6a10xe+ _0x6a10xf* _0x6a10xf);var _0x6a10x3b=_0x6a10x3a;var _0x6a10x3c=_0x6a10xe/ _0x6a10x3a;var _0x6a10x3d=_0x6a10xf/ _0x6a10x3a;var _0x6a10x3e=_0x6a10x3b* _0x6a10x3c;var _0x6a10x3f=_0x6a10x3b* _0x6a10x3d;var _0x6a10x40=_0x6a10x1d* _0x6a10x3d/ 3;var _0x6a10x41=-_0x6a10x1d* _0x6a10x3c / 3;var _0x6a10x42=_0x6a10x38[_0x567b[68]]- _0x6a10x40/ 2;var _0x6a10x43=_0x6a10x38[_0x567b[69]]- _0x6a10x41/ 2;var _0x6a10x44=_0x6a10x42+ _0x6a10x40;var _0x6a10x45=_0x6a10x43+ _0x6a10x41;var _0x6a10x46=_0x6a10x44+ _0x6a10x3e;var _0x6a10x47=_0x6a10x45+ _0x6a10x3f;var _0x6a10x48=_0x6a10x46+ _0x6a10x40;var _0x6a10x49=_0x6a10x47+ _0x6a10x41;var _0x6a10x4a=_0x6a10x48- 3* _0x6a10x40;var _0x6a10x4b=_0x6a10x49- 3* _0x6a10x41;_0x6a10x15[_0x567b[28]]();_0x6a10x15[_0x567b[7]](_0x6a10x44,_0x6a10x45);_0x6a10x15[_0x567b[8]](_0x6a10x46,_0x6a10x47);_0x6a10x15[_0x567b[7]](_0x6a10x4a+ _0x6a10x40,_0x6a10x4b+ _0x6a10x41);_0x6a10x15[_0x567b[8]](_0x6a10x42,_0x6a10x43);_0x6a10x15[_0x567b[29]]()};mxCellRenderer[_0x567b[0]][_0x567b[12]][_0x567b[76]]= _0x6a10x36;mxMarker[_0x567b[78]](_0x567b[77],function(_0x6a10x32,_0x6a10x1a,_0x6a10x4c,_0x6a10x39,_0x6a10x4d,_0x6a10x4e,_0x6a10x4f,_0x6a10x50,_0x6a10x51,_0x6a10x52){var _0x6a10x3c=_0x6a10x4d* (_0x6a10x4f+ _0x6a10x51+ 1);var _0x6a10x3d=_0x6a10x4e* (_0x6a10x4f+ _0x6a10x51+ 1);return function(){_0x6a10x32[_0x567b[28]]();_0x6a10x32[_0x567b[7]](_0x6a10x39[_0x567b[68]]- _0x6a10x3c/ 2- _0x6a10x3d/ 2,_0x6a10x39[_0x567b[69]]- _0x6a10x3d/ 2+ _0x6a10x3c/ 2);_0x6a10x32[_0x567b[8]](_0x6a10x39[_0x567b[68]]+ _0x6a10x3d/ 2- 3* _0x6a10x3c/ 2,_0x6a10x39[_0x567b[69]]- 3* _0x6a10x3d/ 2- _0x6a10x3c/ 2);_0x6a10x32[_0x567b[29]]()}});var _0x6a10x53=-99;if( typeof (mxVertexHandler)!= _0x567b[79]){function _0x6a10x54(_0x6a10x33){mxVertexHandler[_0x567b[24]](this,_0x6a10x33)}mxUtils[_0x567b[25]](_0x6a10x54,mxVertexHandler);_0x6a10x54[_0x567b[0]][_0x567b[80]]= false;_0x6a10x54[_0x567b[0]][_0x567b[81]]= function(){this[_0x567b[82]]= mxUtils[_0x567b[5]](this[_0x567b[83]][_0x567b[4]],mxConstants.STYLE_HORIZONTAL,true);var _0x6a10x55=this[_0x567b[83]][_0x567b[85]][_0x567b[84]];if(this[_0x567b[86]]!= null){var _0x6a10x34= new mxRectangle(0,0,this[_0x567b[86]][_0x567b[70]],this[_0x567b[86]][_0x567b[71]]);this[_0x567b[87]]= new mxImageShape(_0x6a10x34,this[_0x567b[86]][_0x567b[88]])}else {var _0x6a10x4f=10;var _0x6a10x34= new mxRectangle(0,0,_0x6a10x4f,_0x6a10x4f);this[_0x567b[87]]= new mxRhombus(_0x6a10x34,mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};this[_0x567b[87]][_0x567b[89]]= (_0x6a10x55[_0x567b[89]]!= mxConstants[_0x567b[90]])?mxConstants[_0x567b[91]]:mxConstants[_0x567b[90]];this[_0x567b[87]][_0x567b[81]](_0x6a10x55[_0x567b[93]]()[_0x567b[92]]());this[_0x567b[87]][_0x567b[95]][_0x567b[4]][_0x567b[94]]= this[_0x567b[96]]();mxEvent[_0x567b[97]](this[_0x567b[87]][_0x567b[95]],_0x6a10x55,this[_0x567b[83]]);mxVertexHandler[_0x567b[0]][_0x567b[81]][_0x567b[30]](this,arguments)};_0x6a10x54[_0x567b[0]][_0x567b[96]]= function(){return _0x567b[98]};_0x6a10x54[_0x567b[0]][_0x567b[99]]= function(){mxVertexHandler[_0x567b[0]][_0x567b[99]][_0x567b[30]](this,arguments);var _0x6a10x4f=this[_0x567b[87]][_0x567b[100]][_0x567b[70]];this[_0x567b[87]][_0x567b[100]]= this[_0x567b[101]](_0x6a10x4f);this[_0x567b[87]][_0x567b[99]]()};_0x6a10x54[_0x567b[0]][_0x567b[102]]= function(){mxVertexHandler[_0x567b[0]][_0x567b[102]][_0x567b[30]](this,arguments);if(this[_0x567b[87]]!= null){this[_0x567b[87]][_0x567b[102]]();this[_0x567b[87]]= null}};_0x6a10x54[_0x567b[0]][_0x567b[103]]= function(_0x6a10x56){if(_0x6a10x56[_0x567b[104]](this[_0x567b[87]])){return _0x6a10x53};return mxVertexHandler[_0x567b[0]][_0x567b[103]][_0x567b[30]](this,arguments)};_0x6a10x54[_0x567b[0]][_0x567b[105]]= function(_0x6a10x57,_0x6a10x56){if(!_0x6a10x56[_0x567b[106]]()&& this[_0x567b[107]]== _0x6a10x53){var _0x6a10x58= new mxPoint(_0x6a10x56[_0x567b[108]](),_0x6a10x56[_0x567b[109]]());this[_0x567b[110]](_0x6a10x58);var _0x6a10x59=this[_0x567b[84]][_0x567b[112]](_0x6a10x56[_0x567b[111]]());var _0x6a10x5a=this[_0x567b[84]][_0x567b[93]]()[_0x567b[113]];if(_0x6a10x59&& this[_0x567b[80]]){_0x6a10x58[_0x567b[68]]= this[_0x567b[84]][_0x567b[114]](_0x6a10x58[_0x567b[68]]/ _0x6a10x5a)* _0x6a10x5a;_0x6a10x58[_0x567b[69]]= this[_0x567b[84]][_0x567b[114]](_0x6a10x58[_0x567b[69]]/ _0x6a10x5a)* _0x6a10x5a};this[_0x567b[115]](_0x6a10x58);this[_0x567b[116]](this[_0x567b[87]],_0x6a10x58[_0x567b[68]],_0x6a10x58[_0x567b[69]]);this[_0x567b[83]][_0x567b[85]][_0x567b[84]][_0x567b[117]][_0x567b[99]](this[_0x567b[83]],true);_0x6a10x56[_0x567b[118]]()}else {mxVertexHandler[_0x567b[0]][_0x567b[105]][_0x567b[30]](this,arguments)}};_0x6a10x54[_0x567b[0]][_0x567b[119]]= function(_0x6a10x57,_0x6a10x56){if(!_0x6a10x56[_0x567b[106]]()&& this[_0x567b[107]]== _0x6a10x53){this[_0x567b[120]]();this[_0x567b[121]]();_0x6a10x56[_0x567b[118]]()}else {mxVertexHandler[_0x567b[0]][_0x567b[119]][_0x567b[30]](this,arguments)}};_0x6a10x54[_0x567b[0]][_0x567b[101]]= function(_0x6a10x4f){var _0x6a10x5b=this[_0x567b[83]][_0x567b[123]][_0x567b[122]]();var _0x6a10x5c=mxUtils[_0x567b[124]](_0x6a10x5b);var _0x6a10x5d=Math[_0x567b[125]](_0x6a10x5c);var _0x6a10x5e=Math[_0x567b[126]](_0x6a10x5c);var _0x6a10x34= new mxRectangle(this[_0x567b[83]][_0x567b[68]],this[_0x567b[83]][_0x567b[69]],this[_0x567b[83]][_0x567b[70]],this[_0x567b[83]][_0x567b[71]]);if(this[_0x567b[83]][_0x567b[123]][_0x567b[127]]()){var _0x6a10x5f=(_0x6a10x34[_0x567b[70]]- _0x6a10x34[_0x567b[71]])/ 2;_0x6a10x34[_0x567b[68]]+= _0x6a10x5f;_0x6a10x34[_0x567b[69]]-= _0x6a10x5f;var _0x6a10x23=_0x6a10x34[_0x567b[70]];_0x6a10x34[_0x567b[70]]= _0x6a10x34[_0x567b[71]];_0x6a10x34[_0x567b[71]]= _0x6a10x23};var _0x6a10x60=this[_0x567b[128]](_0x6a10x34);if(this[_0x567b[83]][_0x567b[123]][_0x567b[129]]){_0x6a10x60[_0x567b[68]]= 2* _0x6a10x34[_0x567b[68]]+ _0x6a10x34[_0x567b[70]]- _0x6a10x60[_0x567b[68]]};if(this[_0x567b[83]][_0x567b[123]][_0x567b[130]]){_0x6a10x60[_0x567b[69]]= 2* _0x6a10x34[_0x567b[69]]+ _0x6a10x34[_0x567b[71]]- _0x6a10x60[_0x567b[69]]};_0x6a10x60= mxUtils[_0x567b[133]](_0x6a10x60,_0x6a10x5d,_0x6a10x5e, new mxPoint(this[_0x567b[83]][_0x567b[131]](),this[_0x567b[83]][_0x567b[132]]()));return new mxRectangle(_0x6a10x60[_0x567b[68]]- _0x6a10x4f/ 2,_0x6a10x60[_0x567b[69]]- _0x6a10x4f/ 2,_0x6a10x4f,_0x6a10x4f)};_0x6a10x54[_0x567b[0]][_0x567b[128]]= function(_0x6a10x34){return null};_0x6a10x54[_0x567b[0]][_0x567b[115]]= function(_0x6a10x58){};_0x6a10x54[_0x567b[0]][_0x567b[110]]= function(_0x6a10x58){_0x6a10x58[_0x567b[68]]= Math[_0x567b[34]](this[_0x567b[83]][_0x567b[68]],Math[_0x567b[6]](this[_0x567b[83]][_0x567b[68]]+ this[_0x567b[83]][_0x567b[70]],_0x6a10x58[_0x567b[68]]));_0x6a10x58[_0x567b[69]]= Math[_0x567b[34]](this[_0x567b[83]][_0x567b[69]],Math[_0x567b[6]](this[_0x567b[83]][_0x567b[69]]+ this[_0x567b[83]][_0x567b[71]],_0x6a10x58[_0x567b[69]]))};_0x6a10x54[_0x567b[0]][_0x567b[120]]= function(){};function _0x6a10x61(_0x6a10x33){_0x6a10x54[_0x567b[24]](this,_0x6a10x33)}mxUtils[_0x567b[25]](_0x6a10x61,_0x6a10x54);_0x6a10x61[_0x567b[0]][_0x567b[128]]= function(_0x6a10x34){var _0x6a10x5a=this[_0x567b[84]][_0x567b[93]]()[_0x567b[113]];var _0x6a10xb=Math[_0x567b[6]](_0x6a10x34[_0x567b[70]],mxUtils[_0x567b[5]](this[_0x567b[83]][_0x567b[4]],_0x567b[14],60)* _0x6a10x5a);var _0x6a10xc=Math[_0x567b[6]](_0x6a10x34[_0x567b[71]],mxUtils[_0x567b[5]](this[_0x567b[83]][_0x567b[4]],_0x567b[15],20)* _0x6a10x5a);var _0x6a10xd=mxUtils[_0x567b[5]](this[_0x567b[83]][_0x567b[4]],_0x567b[16],_0x567b[17]);var _0x6a10x3=(_0x6a10xd== _0x567b[18])?_0x6a10x34[_0x567b[68]]+ _0x6a10xb:_0x6a10x34[_0x567b[68]]+ _0x6a10x34[_0x567b[70]]- _0x6a10xb;return new mxPoint(_0x6a10x3,_0x6a10x34[_0x567b[69]]+ _0x6a10xc)};_0x6a10x61[_0x567b[0]][_0x567b[115]]= function(_0x6a10x58){var _0x6a10x5b=this[_0x567b[83]][_0x567b[123]][_0x567b[122]]();var _0x6a10x5c=mxUtils[_0x567b[124]](_0x6a10x5b);var _0x6a10x5d=Math[_0x567b[125]](-_0x6a10x5c);var _0x6a10x5e=Math[_0x567b[126]](-_0x6a10x5c);var _0x6a10x34= new mxRectangle(this[_0x567b[83]][_0x567b[68]],this[_0x567b[83]][_0x567b[69]],this[_0x567b[83]][_0x567b[70]],this[_0x567b[83]][_0x567b[71]]);if(this[_0x567b[83]][_0x567b[123]][_0x567b[127]]()){var _0x6a10x5f=(_0x6a10x34[_0x567b[70]]- _0x6a10x34[_0x567b[71]])/ 2;_0x6a10x34[_0x567b[68]]+= _0x6a10x5f;_0x6a10x34[_0x567b[69]]-= _0x6a10x5f;var _0x6a10x23=_0x6a10x34[_0x567b[70]];_0x6a10x34[_0x567b[70]]= _0x6a10x34[_0x567b[71]];_0x6a10x34[_0x567b[71]]= _0x6a10x23};var _0x6a10x60= new mxPoint(_0x6a10x58[_0x567b[68]],_0x6a10x58[_0x567b[69]]);_0x6a10x60= mxUtils[_0x567b[133]](_0x6a10x60,_0x6a10x5d,_0x6a10x5e, new mxPoint(this[_0x567b[83]][_0x567b[131]](),this[_0x567b[83]][_0x567b[132]]()));if(this[_0x567b[83]][_0x567b[123]][_0x567b[129]]){_0x6a10x60[_0x567b[68]]= 2* _0x6a10x34[_0x567b[68]]+ _0x6a10x34[_0x567b[70]]- _0x6a10x60[_0x567b[68]]};if(this[_0x567b[83]][_0x567b[123]][_0x567b[130]]){_0x6a10x60[_0x567b[69]]= 2* _0x6a10x34[_0x567b[69]]+ _0x6a10x34[_0x567b[71]]- _0x6a10x60[_0x567b[69]]};var _0x6a10x62=this[_0x567b[134]](_0x6a10x60,_0x6a10x34);if(_0x6a10x62!= null){if(this[_0x567b[83]][_0x567b[123]][_0x567b[129]]){_0x6a10x62[_0x567b[68]]= 2* _0x6a10x34[_0x567b[68]]+ _0x6a10x34[_0x567b[70]]- _0x6a10x62[_0x567b[68]]};if(this[_0x567b[83]][_0x567b[123]][_0x567b[130]]){_0x6a10x62[_0x567b[69]]= 2* _0x6a10x34[_0x567b[69]]+ _0x6a10x34[_0x567b[71]]- _0x6a10x62[_0x567b[69]]};_0x6a10x5d= Math[_0x567b[125]](_0x6a10x5c);_0x6a10x5e= Math[_0x567b[126]](_0x6a10x5c);_0x6a10x62= mxUtils[_0x567b[133]](_0x6a10x62,_0x6a10x5d,_0x6a10x5e, new mxPoint(this[_0x567b[83]][_0x567b[131]](),this[_0x567b[83]][_0x567b[132]]()));_0x6a10x58[_0x567b[68]]= _0x6a10x62[_0x567b[68]];_0x6a10x58[_0x567b[69]]= _0x6a10x62[_0x567b[69]]}};_0x6a10x61[_0x567b[0]][_0x567b[134]]= function(_0x6a10x60,_0x6a10x34){var _0x6a10xd=mxUtils[_0x567b[5]](this[_0x567b[83]][_0x567b[4]],_0x567b[16],_0x567b[17]);var _0x6a10xb=(_0x6a10xd== _0x567b[18])?_0x6a10x60[_0x567b[68]]- _0x6a10x34[_0x567b[68]]:_0x6a10x34[_0x567b[68]]+ _0x6a10x34[_0x567b[70]]- _0x6a10x60[_0x567b[68]];var _0x6a10xc=_0x6a10x60[_0x567b[69]]- _0x6a10x34[_0x567b[69]];var _0x6a10x5a=this[_0x567b[84]][_0x567b[93]]()[_0x567b[113]];this[_0x567b[83]][_0x567b[4]][_0x567b[14]]= Math[_0x567b[135]](Math[_0x567b[34]](1,_0x6a10xb)/ _0x6a10x5a);this[_0x567b[83]][_0x567b[4]][_0x567b[15]]= Math[_0x567b[135]](Math[_0x567b[34]](1,_0x6a10xc)/ _0x6a10x5a)};_0x6a10x61[_0x567b[0]][_0x567b[120]]= function(){var _0x6a10x63=this[_0x567b[84]][_0x567b[136]]();_0x6a10x63[_0x567b[137]]();try{this[_0x567b[83]][_0x567b[85]][_0x567b[84]][_0x567b[139]](_0x567b[14],this[_0x567b[83]][_0x567b[4]][_0x567b[14]],[this[_0x567b[83]][_0x567b[138]]]);this[_0x567b[83]][_0x567b[85]][_0x567b[84]][_0x567b[139]](_0x567b[15],this[_0x567b[83]][_0x567b[4]][_0x567b[15]],[this[_0x567b[83]][_0x567b[138]]])}finally{_0x6a10x63[_0x567b[140]]()}};function _0x6a10x64(_0x6a10x33){_0x6a10x61[_0x567b[24]](this,_0x6a10x33)}mxUtils[_0x567b[25]](_0x6a10x64,_0x6a10x61);_0x6a10x64[_0x567b[0]][_0x567b[128]]= function(_0x6a10x34){var _0x6a10x5a=this[_0x567b[84]][_0x567b[93]]()[_0x567b[113]];var _0x6a10x65=mxUtils[_0x567b[5]](this[_0x567b[83]][_0x567b[4]],mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);return new mxPoint(_0x6a10x34[_0x567b[68]]+ _0x6a10x34[_0x567b[70]]/ 2,_0x6a10x34[_0x567b[69]]+ Math[_0x567b[6]](_0x6a10x34[_0x567b[71]],_0x6a10x65* _0x6a10x5a))};_0x6a10x64[_0x567b[0]][_0x567b[134]]= function(_0x6a10x58,_0x6a10x34){_0x6a10x58[_0x567b[68]]= _0x6a10x34[_0x567b[68]]+ _0x6a10x34[_0x567b[70]]/ 2;startSize= _0x6a10x58[_0x567b[69]]- _0x6a10x34[_0x567b[69]];var _0x6a10x5a=this[_0x567b[84]][_0x567b[93]]()[_0x567b[113]];this[_0x567b[83]][_0x567b[4]][_0x567b[141]]= Math[_0x567b[135]](Math[_0x567b[34]](1,startSize)/ _0x6a10x5a);return _0x6a10x58};_0x6a10x64[_0x567b[0]][_0x567b[120]]= function(){this[_0x567b[83]][_0x567b[85]][_0x567b[84]][_0x567b[139]](_0x567b[141],this[_0x567b[83]][_0x567b[4]][_0x567b[141]],[this[_0x567b[83]][_0x567b[138]]])};function _0x6a10x66(_0x6a10x33){_0x6a10x61[_0x567b[24]](this,_0x6a10x33)}mxUtils[_0x567b[25]](_0x6a10x66,_0x6a10x61);_0x6a10x66[_0x567b[0]][_0x567b[142]]= 20;_0x6a10x66[_0x567b[0]][_0x567b[143]]= 1;_0x6a10x66[_0x567b[0]][_0x567b[128]]= function(_0x6a10x34){var _0x6a10x5a=this[_0x567b[84]][_0x567b[93]]()[_0x567b[113]];var _0x6a10x67=Math[_0x567b[6]](_0x6a10x34[_0x567b[70]],Math[_0x567b[6]](_0x6a10x34[_0x567b[71]],mxUtils[_0x567b[5]](this[_0x567b[83]][_0x567b[4]],_0x567b[2],this[_0x567b[142]])* _0x6a10x5a/ this[_0x567b[143]]));return new mxPoint(_0x6a10x34[_0x567b[68]]+ _0x6a10x67,_0x6a10x34[_0x567b[69]]+ _0x6a10x67)};_0x6a10x66[_0x567b[0]][_0x567b[134]]= function(_0x6a10x60,_0x6a10x34){var _0x6a10x4f=Math[_0x567b[34]](0,Math[_0x567b[6]](Math[_0x567b[6]](_0x6a10x34[_0x567b[70]]/ this[_0x567b[143]],_0x6a10x60[_0x567b[68]]- _0x6a10x34[_0x567b[68]]),Math[_0x567b[6]](_0x6a10x34[_0x567b[71]]/ this[_0x567b[143]],_0x6a10x60[_0x567b[69]]- _0x6a10x34[_0x567b[69]])));var _0x6a10x5a=this[_0x567b[84]][_0x567b[93]]()[_0x567b[113]];this[_0x567b[83]][_0x567b[4]][_0x567b[2]]= Math[_0x567b[135]](Math[_0x567b[34]](1,_0x6a10x4f)/ _0x6a10x5a)* this[_0x567b[143]];return new mxPoint(_0x6a10x34[_0x567b[68]]+ _0x6a10x4f,_0x6a10x34[_0x567b[69]]+ _0x6a10x4f)};_0x6a10x66[_0x567b[0]][_0x567b[120]]= function(){this[_0x567b[83]][_0x567b[85]][_0x567b[84]][_0x567b[139]](_0x567b[2],this[_0x567b[83]][_0x567b[4]][_0x567b[2]],[this[_0x567b[83]][_0x567b[138]]])};function _0x6a10x68(_0x6a10x33){_0x6a10x66[_0x567b[24]](this,_0x6a10x33)}mxUtils[_0x567b[25]](_0x6a10x68,_0x6a10x66);_0x6a10x68[_0x567b[0]][_0x567b[142]]= 30;_0x6a10x68[_0x567b[0]][_0x567b[143]]= 2;function _0x6a10x69(_0x6a10x33){_0x6a10x66[_0x567b[24]](this,_0x6a10x33)}mxUtils[_0x567b[25]](_0x6a10x69,_0x6a10x66);_0x6a10x69[_0x567b[0]][_0x567b[142]]= 30;_0x6a10x69[_0x567b[0]][_0x567b[143]]= 1;_0x6a10x69[_0x567b[0]][_0x567b[128]]= function(_0x6a10x34){var _0x6a10x5a=this[_0x567b[84]][_0x567b[93]]()[_0x567b[113]];var _0x6a10x67=Math[_0x567b[6]](_0x6a10x34[_0x567b[70]],Math[_0x567b[6]](_0x6a10x34[_0x567b[71]],mxUtils[_0x567b[5]](this[_0x567b[83]][_0x567b[4]],_0x567b[2],this[_0x567b[142]])* _0x6a10x5a/ this[_0x567b[143]]));return new mxPoint(_0x6a10x34[_0x567b[68]]+ _0x6a10x34[_0x567b[70]]- _0x6a10x67,_0x6a10x34[_0x567b[69]]+ _0x6a10x67)};_0x6a10x69[_0x567b[0]][_0x567b[134]]= function(_0x6a10x60,_0x6a10x34){var _0x6a10x4f=Math[_0x567b[34]](0,Math[_0x567b[6]](Math[_0x567b[6]](_0x6a10x34[_0x567b[70]]/ this[_0x567b[143]],_0x6a10x60[_0x567b[68]]- _0x6a10x34[_0x567b[68]]+ _0x6a10x34[_0x567b[70]]),Math[_0x567b[6]](_0x6a10x34[_0x567b[71]]/ this[_0x567b[143]],_0x6a10x60[_0x567b[69]]- _0x6a10x34[_0x567b[69]])));var _0x6a10x5a=this[_0x567b[84]][_0x567b[93]]()[_0x567b[113]];this[_0x567b[83]][_0x567b[4]][_0x567b[2]]= Math[_0x567b[135]](Math[_0x567b[34]](1,_0x6a10x4f)/ _0x6a10x5a)* this[_0x567b[143]];return new mxPoint(_0x6a10x34[_0x567b[68]]+ _0x6a10x34[_0x567b[70]]- _0x6a10x4f,_0x6a10x34[_0x567b[69]]+ _0x6a10x4f)};function _0x6a10x6a(_0x6a10x33){_0x6a10x66[_0x567b[24]](this,_0x6a10x33)}mxUtils[_0x567b[25]](_0x6a10x6a,_0x6a10x66);_0x6a10x6a[_0x567b[0]][_0x567b[142]]= 0.2;_0x6a10x6a[_0x567b[0]][_0x567b[143]]= 1;_0x6a10x6a[_0x567b[0]][_0x567b[128]]= function(_0x6a10x34){var _0x6a10x67=mxUtils[_0x567b[5]](this[_0x567b[83]][_0x567b[4]],_0x567b[2],this[_0x567b[142]]);return new mxPoint(_0x6a10x34[_0x567b[68]]+ _0x6a10x34[_0x567b[70]]* _0x6a10x67,_0x6a10x34[_0x567b[69]]+ _0x6a10x34[_0x567b[71]]/ 2)};_0x6a10x6a[_0x567b[0]][_0x567b[134]]= function(_0x6a10x60,_0x6a10x34){var _0x6a10x4f=Math[_0x567b[6]](1,(_0x6a10x60[_0x567b[68]]- _0x6a10x34[_0x567b[68]])/ _0x6a10x34[_0x567b[70]]);this[_0x567b[83]][_0x567b[4]][_0x567b[2]]= _0x6a10x4f;return new mxPoint(_0x6a10x34[_0x567b[68]]+ _0x6a10x4f* _0x6a10x34[_0x567b[70]],_0x6a10x34[_0x567b[69]]+ _0x6a10x34[_0x567b[71]]/ 2)};function _0x6a10x6b(_0x6a10x33){_0x6a10x66[_0x567b[24]](this,_0x6a10x33)}mxUtils[_0x567b[25]](_0x6a10x6b,_0x6a10x66);_0x6a10x6b[_0x567b[0]][_0x567b[142]]= 0.4;_0x6a10x6b[_0x567b[0]][_0x567b[143]]= 1;_0x6a10x6b[_0x567b[0]][_0x567b[128]]= function(_0x6a10x34){var _0x6a10x67=mxUtils[_0x567b[5]](this[_0x567b[83]][_0x567b[4]],_0x567b[2],this[_0x567b[142]]);return new mxPoint(_0x6a10x34[_0x567b[68]]+ _0x6a10x34[_0x567b[70]]/ 2,_0x6a10x34[_0x567b[69]]+ _0x6a10x67* _0x6a10x34[_0x567b[71]]/ 2)};_0x6a10x6b[_0x567b[0]][_0x567b[134]]= function(_0x6a10x60,_0x6a10x34){var _0x6a10x4f=Math[_0x567b[34]](0,Math[_0x567b[6]](1,((_0x6a10x60[_0x567b[69]]- _0x6a10x34[_0x567b[69]])/ _0x6a10x34[_0x567b[71]])* 2));this[_0x567b[83]][_0x567b[4]][_0x567b[2]]= _0x6a10x4f;return new mxPoint(_0x6a10x34[_0x567b[68]]+ _0x6a10x34[_0x567b[70]]/ 2,_0x6a10x34[_0x567b[69]]+ _0x6a10x4f* _0x6a10x34[_0x567b[71]]/ 2)};var _0x6a10x6c={"\x73\x77\x69\x6D\x6C\x61\x6E\x65":_0x6a10x64,"\x66\x6F\x6C\x64\x65\x72":_0x6a10x61,"\x63\x75\x62\x65":_0x6a10x66,"\x63\x61\x72\x64":_0x6a10x68,"\x6E\x6F\x74\x65":_0x6a10x69,"\x73\x74\x65\x70":_0x6a10x6a,"\x74\x61\x70\x65":_0x6a10x6b};var _0x6a10x6d=mxGraph[_0x567b[0]][_0x567b[144]];mxGraph[_0x567b[0]][_0x567b[144]]= function(_0x6a10x33){if(_0x6a10x33!= null){var _0x6a10x6e=_0x6a10x6c[_0x6a10x33[_0x567b[4]][_0x567b[123]]];if(_0x6a10x6e!= null){return new _0x6a10x6e(_0x6a10x33)}};return _0x6a10x6d[_0x567b[30]](this,arguments)}};mxGraph[_0x567b[0]][_0x567b[145]]= function(_0x6a10x6f,_0x6a10x50){if(_0x6a10x6f!= null&& _0x6a10x6f[_0x567b[123]]!= null){if(_0x6a10x6f[_0x567b[123]][_0x567b[146]]!= null){if(_0x6a10x6f[_0x567b[123]][_0x567b[146]]!= null){return _0x6a10x6f[_0x567b[123]][_0x567b[146]][_0x567b[147]]}}else {if(_0x6a10x6f[_0x567b[123]][_0x567b[147]]!= null){return _0x6a10x6f[_0x567b[123]][_0x567b[147]]}}};return null};mxRectangleShape[_0x567b[0]][_0x567b[147]]= [ new mxConnectionConstraint( new mxPoint(0.25,0),true), new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.75,0),true), new mxConnectionConstraint( new mxPoint(0,0.25),true), new mxConnectionConstraint( new mxPoint(0,0.5),true), new mxConnectionConstraint( new mxPoint(0,0.75),true), new mxConnectionConstraint( new mxPoint(1,0.25),true), new mxConnectionConstraint( new mxPoint(1,0.5),true), new mxConnectionConstraint( new mxPoint(1,0.75),true), new mxConnectionConstraint( new mxPoint(0.25,1),true), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(0.75,1),true)];mxLabel[_0x567b[0]][_0x567b[147]]= mxRectangleShape[_0x567b[0]][_0x567b[147]];mxImageShape[_0x567b[0]][_0x567b[147]]= mxRectangleShape[_0x567b[0]][_0x567b[147]];mxSwimlane[_0x567b[0]][_0x567b[147]]= mxRectangleShape[_0x567b[0]][_0x567b[147]];_0x6a10x14[_0x567b[0]][_0x567b[147]]= mxRectangleShape[_0x567b[0]][_0x567b[147]];_0x6a10x9[_0x567b[0]][_0x567b[147]]= mxRectangleShape[_0x567b[0]][_0x567b[147]];_0x6a10x10[_0x567b[0]][_0x567b[147]]= mxRectangleShape[_0x567b[0]][_0x567b[147]];_0x6a10x1[_0x567b[0]][_0x567b[147]]= mxRectangleShape[_0x567b[0]][_0x567b[147]];_0x6a10xa[_0x567b[0]][_0x567b[147]]= mxRectangleShape[_0x567b[0]][_0x567b[147]];mxCylinder[_0x567b[0]][_0x567b[147]]= [ new mxConnectionConstraint( new mxPoint(0.15,0.05),false), new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.85,0.05),false), new mxConnectionConstraint( new mxPoint(0,0.3),true), new mxConnectionConstraint( new mxPoint(0,0.5),true), new mxConnectionConstraint( new mxPoint(0,0.7),true), new mxConnectionConstraint( new mxPoint(1,0.3),true), new mxConnectionConstraint( new mxPoint(1,0.5),true), new mxConnectionConstraint( new mxPoint(1,0.7),true), new mxConnectionConstraint( new mxPoint(0.15,0.95),false), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(0.85,0.95),false)];_0x6a10x25[_0x567b[0]][_0x567b[147]]= [ new mxConnectionConstraint( new mxPoint(0.25,0.1),false), new mxConnectionConstraint( new mxPoint(0.5,0),false), new mxConnectionConstraint( new mxPoint(0.75,0.1),false), new mxConnectionConstraint( new mxPoint(0,1/ 3),false), new mxConnectionConstraint( new mxPoint(0,1),false), new mxConnectionConstraint( new mxPoint(1,1/ 3),false), new mxConnectionConstraint( new mxPoint(1,1),false), new mxConnectionConstraint( new mxPoint(0.5,0.5),false)];_0x6a10x28[_0x567b[0]][_0x567b[147]]= [ new mxConnectionConstraint( new mxPoint(0.25,0),true), new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.75,0),true), new mxConnectionConstraint( new mxPoint(0,0.3),true), new mxConnectionConstraint( new mxPoint(0,0.7),true), new mxConnectionConstraint( new mxPoint(1,0.25),true), new mxConnectionConstraint( new mxPoint(1,0.5),true), new mxConnectionConstraint( new mxPoint(1,0.75),true), new mxConnectionConstraint( new mxPoint(0.25,1),true), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(0.75,1),true)];mxActor[_0x567b[0]][_0x567b[147]]= [ new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.25,0.2),false), new mxConnectionConstraint( new mxPoint(0.1,0.5),false), new mxConnectionConstraint( new mxPoint(0,0.75),true), new mxConnectionConstraint( new mxPoint(0.75,0.25),false), new mxConnectionConstraint( new mxPoint(0.9,0.5),false), new mxConnectionConstraint( new mxPoint(1,0.75),true), new mxConnectionConstraint( new mxPoint(0.25,1),true), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(0.75,1),true)];_0x6a10x11[_0x567b[0]][_0x567b[147]]= [ new mxConnectionConstraint( new mxPoint(0,0.35),false), new mxConnectionConstraint( new mxPoint(0,0.5),false), new mxConnectionConstraint( new mxPoint(0,0.65),false), new mxConnectionConstraint( new mxPoint(1,0.35),false), new mxConnectionConstraint( new mxPoint(1,0.5),false), new mxConnectionConstraint( new mxPoint(1,0.65),false), new mxConnectionConstraint( new mxPoint(0.25,1),false), new mxConnectionConstraint( new mxPoint(0.75,0),false)];_0x6a10x13[_0x567b[0]][_0x567b[147]]= [ new mxConnectionConstraint( new mxPoint(0.25,0),true), new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.75,0),true), new mxConnectionConstraint( new mxPoint(0.25,1),true), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(0.75,1),true), new mxConnectionConstraint( new mxPoint(0.1,0.25),false), new mxConnectionConstraint( new mxPoint(0.2,0.5),false), new mxConnectionConstraint( new mxPoint(0.1,0.75),false), new mxConnectionConstraint( new mxPoint(0.9,0.25),false), new mxConnectionConstraint( new mxPoint(1,0.5),false), new mxConnectionConstraint( new mxPoint(0.9,0.75),false)];mxLine[_0x567b[0]][_0x567b[147]]= [ new mxConnectionConstraint( new mxPoint(0,0.5),false), new mxConnectionConstraint( new mxPoint(0.25,0.5),false), new mxConnectionConstraint( new mxPoint(0.75,0.5),false), new mxConnectionConstraint( new mxPoint(1,0.5),false)];_0x6a10x26[_0x567b[0]][_0x567b[147]]= [ new mxConnectionConstraint( new mxPoint(0.5,0),false), new mxConnectionConstraint( new mxPoint(0.5,1),false)];mxEllipse[_0x567b[0]][_0x567b[147]]= [ new mxConnectionConstraint( new mxPoint(0,0),true), new mxConnectionConstraint( new mxPoint(1,0),true), new mxConnectionConstraint( new mxPoint(0,1),true), new mxConnectionConstraint( new mxPoint(1,1),true), new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(0,0.5),true), new mxConnectionConstraint( new mxPoint(1,0.5))];mxDoubleEllipse[_0x567b[0]][_0x567b[147]]= mxEllipse[_0x567b[0]][_0x567b[147]];mxRhombus[_0x567b[0]][_0x567b[147]]= mxEllipse[_0x567b[0]][_0x567b[147]];mxTriangle[_0x567b[0]][_0x567b[147]]= [ new mxConnectionConstraint( new mxPoint(0,0.25),true), new mxConnectionConstraint( new mxPoint(0,0.5),true), new mxConnectionConstraint( new mxPoint(0,0.75),true), new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(1,0.5),true)];mxHexagon[_0x567b[0]][_0x567b[147]]= [ new mxConnectionConstraint( new mxPoint(0.375,0),true), new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.625,0),true), new mxConnectionConstraint( new mxPoint(0.125,0.25),false), new mxConnectionConstraint( new mxPoint(0,0.5),true), new mxConnectionConstraint( new mxPoint(0.125,0.75),false), new mxConnectionConstraint( new mxPoint(0.875,0.25),false), new mxConnectionConstraint( new mxPoint(0,0.5),true), new mxConnectionConstraint( new mxPoint(1,0.5),true), new mxConnectionConstraint( new mxPoint(0.875,0.75),false), new mxConnectionConstraint( new mxPoint(0.375,1),true), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(0.625,1),true)];mxCloud[_0x567b[0]][_0x567b[147]]= [ new mxConnectionConstraint( new mxPoint(0.25,0.25),false), new mxConnectionConstraint( new mxPoint(0.4,0.1),false), new mxConnectionConstraint( new mxPoint(0.16,0.55),false), new mxConnectionConstraint( new mxPoint(0.07,0.4),false), new mxConnectionConstraint( new mxPoint(0.31,0.8),false), new mxConnectionConstraint( new mxPoint(0.13,0.77),false), new mxConnectionConstraint( new mxPoint(0.8,0.8),false), new mxConnectionConstraint( new mxPoint(0.55,0.95),false), new mxConnectionConstraint( new mxPoint(0.875,0.5),false), new mxConnectionConstraint( new mxPoint(0.96,0.7),false), new mxConnectionConstraint( new mxPoint(0.625,0.2),false), new mxConnectionConstraint( new mxPoint(0.88,0.25),false)];mxArrow[_0x567b[0]][_0x567b[147]]= null})() \ No newline at end of file +undefined \ No newline at end of file diff --git a/public/assets/plugins/square/js/Sidebar.js b/public/assets/plugins/square/js/Sidebar.js index de4eb7e..66dc905 100644 --- a/public/assets/plugins/square/js/Sidebar.js +++ b/public/assets/plugins/square/js/Sidebar.js @@ -1 +1 @@ -var _0x4e37=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x64\x69\x74\x6F\x72\x55\x69","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x70\x61\x6C\x65\x74\x74\x65\x73","\x73\x68\x6F\x77\x54\x6F\x6F\x6C\x74\x69\x70\x73","\x67\x72\x61\x70\x68","\x64\x69\x76","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x67\x65\x74\x53\x74\x79\x6C\x65\x73\x68\x65\x65\x74","\x65\x64\x69\x74\x6F\x72","\x72\x65\x73\x65\x74\x56\x69\x65\x77\x4F\x6E\x52\x6F\x6F\x74\x43\x68\x61\x6E\x67\x65","\x66\x6F\x6C\x64\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x61\x75\x74\x6F\x53\x63\x72\x6F\x6C\x6C","\x73\x65\x74\x54\x6F\x6F\x6C\x74\x69\x70\x73","\x73\x65\x74\x45\x6E\x61\x62\x6C\x65\x64","\x76\x69\x73\x69\x62\x69\x6C\x69\x74\x79","\x73\x74\x79\x6C\x65","\x68\x69\x64\x64\x65\x6E","\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x61\x62\x73\x6F\x6C\x75\x74\x65","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x62\x6F\x64\x79","\x49\x53\x5F\x54\x4F\x55\x43\x48","\x6D\x6F\x75\x73\x65\x75\x70","\x62\x69\x6E\x64","\x61\x64\x64\x4C\x69\x73\x74\x65\x6E\x65\x72","\x73\x63\x72\x6F\x6C\x6C","\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E","\x68\x69\x64\x65\x54\x6F\x6F\x6C\x74\x69\x70","\x6D\x6F\x75\x73\x65\x6D\x6F\x76\x65","\x67\x65\x74\x53\x6F\x75\x72\x63\x65","\x63\x75\x72\x72\x65\x6E\x74\x45\x6C\x74","\x70\x61\x72\x65\x6E\x74\x4E\x6F\x64\x65","\x6D\x6F\x75\x73\x65\x6F\x75\x74","\x74\x6F\x45\x6C\x65\x6D\x65\x6E\x74","\x72\x65\x6C\x61\x74\x65\x64\x54\x61\x72\x67\x65\x74","\x69\x6E\x69\x74","\x73\x72\x63","\x2F\x74\x6F\x6F\x6C\x74\x69\x70\x2E\x70\x6E\x67","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x6C\x6F\x67","\x65\x6E\x74\x72\x79","\x67\x65\x74","\x2F\x65\x6E\x74\x72\x79\x2F","\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67","\x73\x74\x61\x72\x74","\x66\x69\x6E\x61\x6C\x6C\x79","\x65\x6E\x64","\x61\x64\x64\x49\x6D\x61\x67\x65\x50\x61\x6C\x65\x74\x74\x65","\x63\x61\x6C\x6C\x5F\x6D\x61\x6E\x61\x67\x65\x6D\x65\x6E\x74","\x2F\x63\x61\x6C\x6C\x5F\x6D\x61\x6E\x61\x67\x65\x6D\x65\x6E\x74\x2F","\x61\x6E\x73\x77\x65\x72","\x68\x61\x6E\x67\x75\x70","\x64\x69\x61\x6C","\x65\x78\x74\x5F\x64\x69\x61\x6C","\x71\x75\x65\x75\x65","\x76\x6F\x69\x63\x65\x6D\x61\x69\x6C","\x63\x61\x6C\x6C\x62\x61\x63\x6B","\x76\x61\x72\x69\x61\x62\x6C\x65","\x2F\x76\x61\x72\x69\x61\x62\x6C\x65\x2F","\x73\x65\x74","\x6D\x61\x74\x68","\x70\x6C\x61\x79\x62\x61\x63\x6B","\x2F\x70\x6C\x61\x79\x62\x61\x63\x6B\x2F","\x6D\x65\x6E\x75","\x73\x61\x79\x64\x69\x67\x69\x74\x73","\x73\x61\x79\x6E\x75\x6D\x62\x65\x72","\x73\x61\x79\x70\x68\x6F\x6E\x65\x74\x69\x63","\x74\x74\x73","\x69\x73\x70\x65\x65\x63\x68\x74\x74\x73","\x61\x77\x73\x70\x6F\x6C\x6C\x79","\x67\x65\x74\x64\x69\x67\x69\x74\x73","\x67\x65\x74\x73\x65\x63\x72\x65\x74\x64\x69\x67\x69\x74\x73","\x72\x65\x63\x6F\x72\x64\x69\x6E\x67","\x2F\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x2F","\x72\x65\x63\x6F\x72\x64","\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x53\x65\x72\x76\x65\x72","\x2F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x5F\x73\x65\x72\x76\x65\x72\x2F","\x64\x61\x74\x61\x62\x61\x73\x65","\x69\x73\x70\x65\x65\x63\x68\x61\x73\x72","\x73\x65\x6E\x64\x53\x4D\x53","\x73\x65\x6E\x64\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x73\x65\x6E\x64\x4D\x61\x69\x6C","\x73\x65\x6E\x64\x46\x61\x78","\x63\x61\x6C\x6C\x66\x6C\x6F\x77","\x2F\x63\x61\x6C\x6C\x66\x6C\x6F\x77\x2F","\x67\x6F\x74\x6F\x63","\x67\x6F\x74\x6F\x69\x66","\x67\x6F\x74\x6F\x69\x66\x74\x69\x6D\x65","\x76\x73\x77\x69\x74\x63\x68","\x73\x74\x61\x74\x73","\x2F\x73\x74\x61\x74\x73\x2F","\x67\x6F\x61\x6C","\x67\x65\x6E\x65\x72\x61\x6C","\x2F\x67\x65\x6E\x65\x72\x61\x6C\x2F","\x6E\x6F\x6F\x70","\x73\x79\x73\x74\x65\x6D","\x61\x67\x69","\x73\x75\x62\x70\x72\x6F\x6A\x65\x63\x74","\x63\x75\x73\x74\x6F\x6D\x5F\x61\x70\x70","\x65\x6E\x61\x62\x6C\x65\x54\x6F\x6F\x6C\x74\x69\x70\x73","\x74\x6F\x6F\x6C\x74\x69\x70\x42\x6F\x72\x64\x65\x72","\x74\x68\x75\x6D\x62\x42\x6F\x72\x64\x65\x72","\x74\x6F\x6F\x6C\x74\x69\x70\x44\x65\x6C\x61\x79","\x69\x6E\x73\x74\x61\x6C\x6C\x45\x64\x67\x65\x73","\x67\x65\x61\x72\x49\x6D\x61\x67\x65","\x2F\x63\x6C\x69\x70\x61\x72\x74\x2F\x47\x65\x61\x72\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67","\x74\x68\x75\x6D\x62\x57\x69\x64\x74\x68","\x74\x68\x75\x6D\x62\x48\x65\x69\x67\x68\x74","\x74\x68\x75\x6D\x62\x50\x61\x64\x64\x69\x6E\x67","\x73\x69\x64\x65\x62\x61\x72\x54\x69\x74\x6C\x65\x53\x69\x7A\x65","\x73\x69\x64\x65\x62\x61\x72\x54\x69\x74\x6C\x65\x73","\x74\x6F\x6F\x6C\x74\x69\x70\x54\x69\x74\x6C\x65\x73","\x73\x68\x6F\x77\x54\x6F\x6F\x6C\x74\x69\x70","\x74\x68\x72\x65\x61\x64","\x63\x6C\x65\x61\x72\x54\x69\x6D\x65\x6F\x75\x74","\x74\x6F\x6F\x6C\x74\x69\x70","\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x67\x65\x53\x69\x64\x65\x62\x61\x72\x54\x6F\x6F\x6C\x74\x69\x70","\x67\x72\x61\x70\x68\x32","\x73\x65\x74\x54\x72\x61\x6E\x73\x6C\x61\x74\x65","\x76\x69\x65\x77","\x49\x53\x5F\x53\x56\x47","\x63\x61\x6E\x76\x61\x73","\x72\x65\x6C\x61\x74\x69\x76\x65","\x74\x6F\x6F\x6C\x74\x69\x70\x49\x6D\x61\x67\x65","\x63\x72\x65\x61\x74\x65\x49\x6D\x61\x67\x65","\x77\x69\x64\x74\x68","\x31\x34\x70\x78","\x68\x65\x69\x67\x68\x74","\x32\x37\x70\x78","\x64\x69\x73\x70\x6C\x61\x79","\x62\x6C\x6F\x63\x6B","\x6C\x61\x62\x65\x6C\x73\x56\x69\x73\x69\x62\x6C\x65","\x63\x6C\x65\x61\x72","\x6D\x6F\x64\x65\x6C","\x61\x64\x64\x43\x65\x6C\x6C\x73","\x67\x65\x74\x47\x72\x61\x70\x68\x42\x6F\x75\x6E\x64\x73","\x49\x53\x5F\x51\x55\x49\x52\x4B\x53","\x6F\x76\x65\x72\x66\x6C\x6F\x77","\x76\x69\x73\x69\x62\x6C\x65","\x70\x78","\x6C\x65\x6E\x67\x74\x68","\x74\x6F\x6F\x6C\x74\x69\x70\x54\x69\x74\x6C\x65","\x62\x6F\x72\x64\x65\x72\x54\x6F\x70","\x31\x70\x78\x20\x73\x6F\x6C\x69\x64\x20\x67\x72\x61\x79","\x74\x65\x78\x74\x41\x6C\x69\x67\x6E","\x63\x65\x6E\x74\x65\x72","\x31\x30\x30\x25","\x70\x61\x64\x64\x69\x6E\x67\x54\x6F\x70","\x32\x70\x78","\x36\x70\x78","\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C","","\x77\x72\x69\x74\x65","\x6F\x66\x66\x73\x65\x74\x48\x65\x69\x67\x68\x74","\x6D\x61\x72\x67\x69\x6E\x54\x6F\x70","\x74\x6F\x70","\x6E\x6F\x6E\x65","\x78","\x6D\x69\x6E","\x79","\x63\x6C\x69\x65\x6E\x74\x57\x69\x64\x74\x68","\x73\x70\x6C\x69\x74\x53\x69\x7A\x65","\x6F\x66\x66\x73\x65\x74\x54\x6F\x70","\x73\x63\x72\x6F\x6C\x6C\x54\x6F\x70","\x6D\x61\x78","\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x28","\x2C","\x29","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x6C\x65\x66\x74","\x64\x72\x61\x77\x50\x61\x6E\x65","\x6F\x66\x66\x73\x65\x74\x57\x69\x64\x74\x68","\x70\x61\x67\x65\x2D\x73\x69\x64\x65\x62\x61\x72","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64","\x73\x65\x74\x54\x69\x6D\x65\x6F\x75\x74","\x63\x72\x65\x61\x74\x65\x54\x69\x74\x6C\x65","\x61","\x68\x72\x65\x66","\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x3A\x76\x6F\x69\x64\x28\x30\x29\x3B","\x67\x65\x54\x69\x74\x6C\x65","\x63\x72\x65\x61\x74\x65\x54\x68\x75\x6D\x62","\x73\x63\x61\x6C\x65\x41\x6E\x64\x54\x72\x61\x6E\x73\x6C\x61\x74\x65","\x66\x6C\x6F\x6F\x72","\x64\x69\x61\x6C\x65\x63\x74","\x44\x49\x41\x4C\x45\x43\x54\x5F\x53\x56\x47","\x4E\x4F\x5F\x46\x4F","\x63\x6C\x6F\x6E\x65\x4E\x6F\x64\x65","\x6F\x77\x6E\x65\x72\x53\x56\x47\x45\x6C\x65\x6D\x65\x6E\x74","\x67\x65\x74\x43\x61\x6E\x76\x61\x73","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x49\x53\x5F\x49\x45\x36","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x75\x72\x6C\x28","\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x49\x6D\x61\x67\x65","\x63\x75\x72\x73\x6F\x72","\x70\x6F\x69\x6E\x74\x65\x72","\x6D\x69\x6E\x57\x69\x64\x74\x68","\x6D\x69\x6E\x48\x65\x69\x67\x68\x74","\x66\x6F\x6E\x74\x53\x69\x7A\x65","\x77\x68\x69\x74\x65\x53\x70\x61\x63\x65","\x6E\x6F\x77\x72\x61\x70","\x49\x53\x5F\x49\x45","\x34\x70\x78","\x63\x72\x65\x61\x74\x65\x49\x74\x65\x6D","\x67\x65\x49\x74\x65\x6D","\x70\x61\x64\x64\x69\x6E\x67","\x63\x6C\x69\x63\x6B","\x63\x6F\x6E\x73\x75\x6D\x65","\x63\x72\x65\x61\x74\x65\x44\x72\x6F\x70\x48\x61\x6E\x64\x6C\x65\x72","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64","\x67\x65\x74\x49\x6D\x70\x6F\x72\x74\x61\x62\x6C\x65\x43\x65\x6C\x6C\x73","\x69\x73\x56\x61\x6C\x69\x64\x44\x72\x6F\x70\x54\x61\x72\x67\x65\x74","\x69\x73\x53\x70\x6C\x69\x74\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x53\x70\x6C\x69\x74\x54\x61\x72\x67\x65\x74","\x73\x70\x6C\x69\x74\x45\x64\x67\x65","\x69\x6D\x70\x6F\x72\x74\x43\x65\x6C\x6C\x73","\x73\x63\x72\x6F\x6C\x6C\x43\x65\x6C\x6C\x54\x6F\x56\x69\x73\x69\x62\x6C\x65","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x63\x72\x65\x61\x74\x65\x44\x72\x61\x67\x50\x72\x65\x76\x69\x65\x77","\x62\x6F\x72\x64\x65\x72","\x31\x70\x78\x20\x64\x61\x73\x68\x65\x64\x20\x62\x6C\x61\x63\x6B","\x63\x72\x65\x61\x74\x65\x44\x72\x61\x67\x53\x6F\x75\x72\x63\x65","\x61\x75\x74\x6F\x73\x63\x72\x6F\x6C\x6C","\x6D\x61\x6B\x65\x44\x72\x61\x67\x67\x61\x62\x6C\x65","\x67\x65\x74\x44\x72\x6F\x70\x54\x61\x72\x67\x65\x74","\x61\x70\x70\x6C\x79","\x69\x73\x56\x61\x6C\x69\x64\x52\x6F\x6F\x74","\x61\x64\x64\x43\x6C\x69\x63\x6B\x48\x61\x6E\x64\x6C\x65\x72","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x58","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x59","\x61\x64\x64\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x6D\x6F\x75\x73\x65\x55\x70","\x69\x73\x50\x6F\x70\x75\x70\x54\x72\x69\x67\x67\x65\x72","\x63\x75\x72\x72\x65\x6E\x74\x47\x72\x61\x70\x68","\x74\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x61\x62\x73","\x67\x65\x74\x47\x72\x69\x64\x53\x69\x7A\x65","\x64\x72\x6F\x70","\x63\x72\x65\x61\x74\x65\x58\x6D\x6C\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x6C\x61\x62\x65\x6C","\x66\x6F\x72\x45\x61\x63\x68","\x63\x72\x65\x61\x74\x65\x56\x65\x72\x74\x65\x78\x54\x65\x6D\x70\x6C\x61\x74\x65","\x74\x69\x6D\x65\x6F\x75\x74","\x30","\x79\x65\x73","\x6B\x65\x79","\x69\x73\x70\x65\x65\x63\x68\x5F\x61\x73\x72\x5F\x6C\x61\x6E\x67\x75\x61\x67\x65","\x69\x6E\x74\x4B\x65\x79","\x62\x65\x65\x70","\x69\x74\x2D\x49\x54","\x31","\x23","\x42\x45\x45\x50","\x66\x69\x6C\x65\x5F\x69\x64","\x6F\x70\x74\x73","\x72\x65\x73\x70\x6F\x6E\x73\x65","\x64\x69\x67\x69\x74","\x35","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x72\x65\x74\x72\x79","\x76\x61\x72\x69\x61\x62\x6C\x65\x5F\x69\x64","\x6D\x69\x6E\x64\x69\x67\x69\x74","\x6D\x61\x78\x64\x69\x67\x69\x74","\x31\x30","\x68\x69\x64\x64\x65\x6E\x64\x69\x67\x69\x74\x73\x6E\x75\x6D","\x68\x69\x64\x64\x65\x6E\x64\x69\x67\x69\x74\x73\x70\x6F\x73","\x66\x69\x72\x73\x74","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x6F\x70\x74\x69\x6F\x6E\x73","\x76\x61\x72\x69\x61\x62\x6C\x65\x5F\x76\x61\x6C\x75\x65","\x6F\x64\x62\x63\x5F\x69\x64","\x71\x75\x65\x72\x79","\x6F\x75\x74\x70\x75\x74","\x63\x6F\x6E\x74\x65\x78\x74","\x65\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x70\x72\x69\x6F\x72\x69\x74\x79","\x63\x6F\x6D\x6D\x61\x6E\x64","\x61\x72\x67\x73","\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E","\x69\x6E\x74\x65\x72\x76\x61\x6C\x5F\x69\x64","\x64\x69\x67\x69\x74\x73","\x65\x73\x63\x61\x70\x65\x5F\x64\x69\x67\x69\x74\x73","\x6E\x75\x6D\x62\x65\x72","\x74\x65\x78\x74","\x66\x69\x6C\x65","\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x46\x6F\x72\x6D\x61\x74","\x77\x61\x76","\x2D\x31","\x73\x69\x70\x5F\x69\x64","\x75\x72\x6C","\x36\x30","\x70\x68\x6F\x6E\x65","\x74\x72\x75\x6E\x6B\x5F\x6E\x61\x6D\x65","\x67\x6F\x6F\x67\x6C\x65\x5F\x74\x74\x73\x5F\x6C\x61\x6E\x67\x75\x61\x67\x65","\x69\x74","\x69\x73\x70\x65\x65\x63\x68\x5F\x74\x74\x73\x5F\x6C\x61\x6E\x67\x75\x61\x67\x65","\x73\x70\x65\x65\x64","\x65\x75\x72\x69\x74\x61\x6C\x69\x61\x6E\x66\x65\x6D\x61\x6C\x65","\x61\x77\x73\x5F\x61\x63\x63\x65\x73\x73\x5F\x6B\x65\x79\x5F\x69\x64","\x61\x77\x73\x5F\x73\x65\x63\x72\x65\x74\x5F\x61\x63\x63\x65\x73\x73\x5F\x6B\x65\x79","\x61\x77\x73\x5F\x70\x6F\x6C\x6C\x79\x5F\x72\x65\x67\x69\x6F\x6E","\x61\x77\x73\x5F\x70\x6F\x6C\x6C\x79\x5F\x76\x6F\x69\x63\x65","\x65\x75\x2D\x77\x65\x73\x74\x2D\x31","\x41\x6D\x79","\x71\x75\x65\x75\x65\x5F\x69\x64","\x6D\x61\x63\x72\x6F","\x67\x6F\x73\x75\x62","\x78\x58","\x33\x30\x30","\x6D\x61\x69\x6C\x62\x6F\x78","\x70\x72\x6F\x6A\x65\x63\x74\x5F\x69\x64","\x6F\x70\x65\x72\x61\x74\x69\x6F\x6E","\x71\x75\x65\x75\x65\x6E\x61\x6D\x65","\x61\x67\x65\x6E\x74","\x71\x75\x65\x75\x65\x5F\x65\x76\x65\x6E\x74","\x64\x61\x74\x61\x31","\x64\x61\x74\x61\x32","\x64\x61\x74\x61\x33","\x64\x61\x74\x61\x34","\x64\x61\x74\x61\x35","\x71\x75\x65\x75\x65\x6C\x6F\x67","\x67\x6F\x61\x6C\x6E\x61\x6D\x65","\x6E\x61\x6D\x65","\x6C\x61\x73\x74\x4E\x61\x6D\x65","\x6C\x69\x73\x74\x5F\x69\x64","\x64\x65\x6C\x61\x79","\x7B\x43\x41\x4C\x4C\x45\x52\x49\x44\x28\x6E\x61\x6D\x65\x29\x7D","\x7B\x43\x41\x4C\x4C\x45\x52\x49\x44\x28\x6E\x75\x6D\x29\x7D","\x61\x63\x63\x6F\x75\x6E\x74\x5F\x69\x64","\x74\x6F","\x73\x6D\x73\x5F\x74\x65\x78\x74","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x74\x65\x78\x74","\x74\x65\x6D\x70\x6C\x61\x74\x65\x5F\x69\x64","\x63\x63","\x62\x63\x63","\x73\x75\x62\x6A\x65\x63\x74","\x63\x68\x6F\x6F\x73\x65\x5F\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x5F\x6E\x61\x6D\x65","\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x5F\x74\x79\x70\x65","\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x5F\x70\x61\x74\x68","\x76\x65\x72\x74\x65\x78","\x63\x72\x65\x61\x74\x65\x56\x65\x72\x74\x65\x78\x54\x65\x6D\x70\x6C\x61\x74\x65\x46\x72\x6F\x6D\x43\x65\x6C\x6C\x73","\x69\x73\x47\x75\x69\x64\x65\x73\x45\x6E\x61\x62\x6C\x65\x64","\x67\x75\x69\x64\x65\x73\x45\x6E\x61\x62\x6C\x65\x64","\x67\x72\x61\x70\x68\x48\x61\x6E\x64\x6C\x65\x72","\x63\x72\x65\x61\x74\x65\x45\x64\x67\x65\x54\x65\x6D\x70\x6C\x61\x74\x65","\x73\x65\x74\x54\x65\x72\x6D\x69\x6E\x61\x6C\x50\x6F\x69\x6E\x74","\x67\x65\x6F\x6D\x65\x74\x72\x79","\x65\x64\x67\x65","\x63\x72\x65\x61\x74\x65\x45\x64\x67\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x46\x72\x6F\x6D\x43\x65\x6C\x6C\x73","\x73\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x43\x6F\x6C\x6F\x72","\x23\x66\x66\x66\x66\x66\x66","\x61\x64\x64\x50\x61\x6C\x65\x74\x74\x65","\x67\x65\x53\x69\x64\x65\x62\x61\x72","\x61\x64\x64\x46\x6F\x6C\x64\x69\x6E\x67\x48\x61\x6E\x64\x6C\x65\x72","\x2F\x63\x6F\x6C\x6C\x61\x70\x73\x65\x64\x2E\x67\x69\x66\x29","\x2F\x65\x78\x70\x61\x6E\x64\x65\x64\x2E\x67\x69\x66\x29","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x52\x65\x70\x65\x61\x74","\x6E\x6F\x2D\x72\x65\x70\x65\x61\x74","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x31\x30\x30\x25\x20\x35\x30\x25","\x77\x61\x69\x74","\x72\x65\x6D\x6F\x76\x65\x50\x61\x6C\x65\x74\x74\x65","\x72\x65\x6D\x6F\x76\x65\x43\x68\x69\x6C\x64","\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D"];_0x4e37[0];function Sidebar(_0xc707x2,_0xc707x3){this[_0x4e37[1]]= _0xc707x2;this[_0x4e37[2]]= _0xc707x3;this[_0x4e37[3]]= new Object();this[_0x4e37[4]]= true;this[_0x4e37[5]]= new Graph(document[_0x4e37[7]](_0x4e37[6]),null,null,this[_0x4e37[1]][_0x4e37[9]][_0x4e37[5]][_0x4e37[8]]());this[_0x4e37[5]][_0x4e37[10]]= false;this[_0x4e37[5]][_0x4e37[11]]= false;this[_0x4e37[5]][_0x4e37[12]](false);this[_0x4e37[5]][_0x4e37[13]]= false;this[_0x4e37[5]][_0x4e37[14]](false);this[_0x4e37[5]][_0x4e37[15]](false);this[_0x4e37[5]][_0x4e37[2]][_0x4e37[17]][_0x4e37[16]]= _0x4e37[18];this[_0x4e37[5]][_0x4e37[2]][_0x4e37[17]][_0x4e37[19]]= _0x4e37[20];document[_0x4e37[22]][_0x4e37[21]](this[_0x4e37[5]][_0x4e37[2]]);if(!mxClient[_0x4e37[23]]){mxEvent[_0x4e37[26]](document,_0x4e37[24],mxUtils[_0x4e37[25]](this,function(){this[_0x4e37[4]]= true}));mxEvent[_0x4e37[26]](_0xc707x3,_0x4e37[27],mxUtils[_0x4e37[25]](this,function(){this[_0x4e37[4]]= true}));mxEvent[_0x4e37[26]](document,_0x4e37[28],mxUtils[_0x4e37[25]](this,function(){this[_0x4e37[4]]= false;this[_0x4e37[29]]()}));mxEvent[_0x4e37[26]](document,_0x4e37[30],mxUtils[_0x4e37[25]](this,function(_0xc707x4){var _0xc707x5=mxEvent[_0x4e37[31]](_0xc707x4);while(_0xc707x5!= null){if(_0xc707x5== this[_0x4e37[32]]){return};_0xc707x5= _0xc707x5[_0x4e37[33]]};this[_0x4e37[29]]()}));mxEvent[_0x4e37[26]](document,_0x4e37[34],mxUtils[_0x4e37[25]](this,function(_0xc707x4){if(_0xc707x4[_0x4e37[35]]== null&& _0xc707x4[_0x4e37[36]]== null){this[_0x4e37[29]]()}}))};this[_0x4e37[37]](); new Image()[_0x4e37[38]]= IMAGE_PATH+ _0x4e37[39]}Sidebar[_0x4e37[40]][_0x4e37[37]]= function(){var _0xc707x6=STENCIL_PATH;console[_0x4e37[41]](_0xc707x6);this[_0x4e37[49]](_0x4e37[42],mxResources[_0x4e37[43]](_0x4e37[42]),_0xc707x6+ _0x4e37[44],_0x4e37[45],[_0x4e37[46],_0x4e37[47],_0x4e37[48]],[mxResources[_0x4e37[43]](_0x4e37[46]),mxResources[_0x4e37[43]](_0x4e37[47]),mxResources[_0x4e37[43]](_0x4e37[48])]);this[_0x4e37[49]](_0x4e37[50],mxResources[_0x4e37[43]](_0x4e37[50]),_0xc707x6+ _0x4e37[51],_0x4e37[45],[_0x4e37[52],_0x4e37[53],_0x4e37[54],_0x4e37[55],_0x4e37[56],_0x4e37[57],_0x4e37[58]],[mxResources[_0x4e37[43]](_0x4e37[52]),mxResources[_0x4e37[43]](_0x4e37[53]),mxResources[_0x4e37[43]](_0x4e37[54]),mxResources[_0x4e37[43]](_0x4e37[55]),mxResources[_0x4e37[43]](_0x4e37[56]),mxResources[_0x4e37[43]](_0x4e37[57]),mxResources[_0x4e37[43]](_0x4e37[58])]);this[_0x4e37[49]](_0x4e37[59],mxResources[_0x4e37[43]](_0x4e37[59]),_0xc707x6+ _0x4e37[60],_0x4e37[45],[_0x4e37[61],_0x4e37[62]],[mxResources[_0x4e37[43]](_0x4e37[61]),mxResources[_0x4e37[43]](_0x4e37[62])]);this[_0x4e37[49]](_0x4e37[63],mxResources[_0x4e37[43]](_0x4e37[63]),_0xc707x6+ _0x4e37[64],_0x4e37[45],[_0x4e37[63],_0x4e37[65],_0x4e37[66],_0x4e37[67],_0x4e37[68],_0x4e37[69],_0x4e37[70],_0x4e37[71],_0x4e37[72],_0x4e37[73]],[mxResources[_0x4e37[43]](_0x4e37[63]),mxResources[_0x4e37[43]](_0x4e37[65]),mxResources[_0x4e37[43]](_0x4e37[66]),mxResources[_0x4e37[43]](_0x4e37[67]),mxResources[_0x4e37[43]](_0x4e37[68]),mxResources[_0x4e37[43]](_0x4e37[69]),mxResources[_0x4e37[43]](_0x4e37[70]),mxResources[_0x4e37[43]](_0x4e37[71]),mxResources[_0x4e37[43]](_0x4e37[72]),mxResources[_0x4e37[43]](_0x4e37[73])]);this[_0x4e37[49]](_0x4e37[74],mxResources[_0x4e37[43]](_0x4e37[74]),_0xc707x6+ _0x4e37[75],_0x4e37[45],[_0x4e37[76]],[mxResources[_0x4e37[43]](_0x4e37[76])]);this[_0x4e37[49]](_0x4e37[77],mxResources[_0x4e37[43]](_0x4e37[77]),_0xc707x6+ _0x4e37[78],_0x4e37[45],[_0x4e37[79],_0x4e37[80],_0x4e37[81],_0x4e37[82],_0x4e37[83],_0x4e37[84]],[mxResources[_0x4e37[43]](_0x4e37[79]),mxResources[_0x4e37[43]](_0x4e37[80]),mxResources[_0x4e37[43]](_0x4e37[81]),mxResources[_0x4e37[43]](_0x4e37[82]),mxResources[_0x4e37[43]](_0x4e37[83]),mxResources[_0x4e37[43]](_0x4e37[84])]);this[_0x4e37[49]](_0x4e37[85],mxResources[_0x4e37[43]](_0x4e37[85]),_0xc707x6+ _0x4e37[86],_0x4e37[45],[_0x4e37[87],_0x4e37[88],_0x4e37[89],_0x4e37[90]],[mxResources[_0x4e37[43]](_0x4e37[87]),mxResources[_0x4e37[43]](_0x4e37[88]),mxResources[_0x4e37[43]](_0x4e37[89]),mxResources[_0x4e37[43]](_0x4e37[90])]);this[_0x4e37[49]](_0x4e37[91],mxResources[_0x4e37[43]](_0x4e37[91]),_0xc707x6+ _0x4e37[92],_0x4e37[45],[_0x4e37[93]],[mxResources[_0x4e37[43]](_0x4e37[93])]);this[_0x4e37[49]](_0x4e37[94],mxResources[_0x4e37[43]](_0x4e37[94]),_0xc707x6+ _0x4e37[95],_0x4e37[45],[_0x4e37[96],_0x4e37[97],_0x4e37[98],_0x4e37[99],_0x4e37[100]],[mxResources[_0x4e37[43]](_0x4e37[96]),mxResources[_0x4e37[43]](_0x4e37[97]),mxResources[_0x4e37[43]](_0x4e37[98]),mxResources[_0x4e37[43]](_0x4e37[99]),mxResources[_0x4e37[43]](_0x4e37[100])])};Sidebar[_0x4e37[40]][_0x4e37[101]]= !mxClient[_0x4e37[23]];Sidebar[_0x4e37[40]][_0x4e37[102]]= 16;Sidebar[_0x4e37[40]][_0x4e37[103]]= 3;Sidebar[_0x4e37[40]][_0x4e37[104]]= 300;Sidebar[_0x4e37[40]][_0x4e37[105]]= true;Sidebar[_0x4e37[40]][_0x4e37[106]]= STENCIL_PATH+ _0x4e37[107];Sidebar[_0x4e37[40]][_0x4e37[108]]= 34;Sidebar[_0x4e37[40]][_0x4e37[109]]= 34;Sidebar[_0x4e37[40]][_0x4e37[110]]= 2;Sidebar[_0x4e37[40]][_0x4e37[111]]= 9;Sidebar[_0x4e37[40]][_0x4e37[112]]= false;Sidebar[_0x4e37[40]][_0x4e37[113]]= false;Sidebar[_0x4e37[40]][_0x4e37[114]]= function(_0xc707x7,_0xc707x8,_0xc707x9,_0xc707xa){if(this[_0x4e37[101]]&& this[_0x4e37[4]]){if(this[_0x4e37[32]]!= _0xc707x7){if(this[_0x4e37[115]]!= null){window[_0x4e37[116]](this[_0x4e37[115]]);this[_0x4e37[115]]= null};var _0xc707xb=mxUtils[_0x4e37[25]](this,function(){if(this[_0x4e37[117]]== null){this[_0x4e37[117]]= document[_0x4e37[7]](_0x4e37[6]);this[_0x4e37[117]][_0x4e37[118]]= _0x4e37[119];document[_0x4e37[22]][_0x4e37[21]](this[_0x4e37[117]]);this[_0x4e37[120]]= new Graph(this[_0x4e37[117]],null,null,this[_0x4e37[1]][_0x4e37[9]][_0x4e37[5]][_0x4e37[8]]());this[_0x4e37[120]][_0x4e37[122]][_0x4e37[121]](this[_0x4e37[102]],this[_0x4e37[102]]);this[_0x4e37[120]][_0x4e37[10]]= false;this[_0x4e37[120]][_0x4e37[11]]= false;this[_0x4e37[120]][_0x4e37[13]]= false;this[_0x4e37[120]][_0x4e37[14]](false);this[_0x4e37[120]][_0x4e37[12]](false);this[_0x4e37[120]][_0x4e37[15]](false);if(!mxClient[_0x4e37[123]]){this[_0x4e37[120]][_0x4e37[122]][_0x4e37[124]][_0x4e37[17]][_0x4e37[19]]= _0x4e37[125]};this[_0x4e37[126]]= mxUtils[_0x4e37[127]](IMAGE_PATH+ _0x4e37[39]);this[_0x4e37[126]][_0x4e37[17]][_0x4e37[19]]= _0x4e37[20];this[_0x4e37[126]][_0x4e37[17]][_0x4e37[128]]= _0x4e37[129];this[_0x4e37[126]][_0x4e37[17]][_0x4e37[130]]= _0x4e37[131];document[_0x4e37[22]][_0x4e37[21]](this[_0x4e37[126]])};this[_0x4e37[117]][_0x4e37[17]][_0x4e37[132]]= _0x4e37[133];this[_0x4e37[120]][_0x4e37[134]]= (_0xc707xa== null|| _0xc707xa);this[_0x4e37[120]][_0x4e37[136]][_0x4e37[135]]();this[_0x4e37[120]][_0x4e37[137]](_0xc707x8);var _0xc707xc=this[_0x4e37[120]][_0x4e37[138]]();var _0xc707xd=_0xc707xc[_0x4e37[128]]+ 2* this[_0x4e37[102]];var _0xc707xe=_0xc707xc[_0x4e37[130]]+ 2* this[_0x4e37[102]];if(mxClient[_0x4e37[139]]){_0xc707xd+= 4;_0xc707xe+= 4;this[_0x4e37[117]][_0x4e37[17]][_0x4e37[140]]= _0x4e37[18]}else {this[_0x4e37[117]][_0x4e37[17]][_0x4e37[140]]= _0x4e37[141]};this[_0x4e37[126]][_0x4e37[17]][_0x4e37[16]]= _0x4e37[141];this[_0x4e37[117]][_0x4e37[17]][_0x4e37[128]]= _0xc707xd+ _0x4e37[142];if(this[_0x4e37[113]]&& _0xc707x9!= null&& _0xc707x9[_0x4e37[143]]> 0){if(this[_0x4e37[144]]== null){this[_0x4e37[144]]= document[_0x4e37[7]](_0x4e37[6]);this[_0x4e37[144]][_0x4e37[17]][_0x4e37[145]]= _0x4e37[146];this[_0x4e37[144]][_0x4e37[17]][_0x4e37[147]]= _0x4e37[148];this[_0x4e37[144]][_0x4e37[17]][_0x4e37[128]]= _0x4e37[149];this[_0x4e37[144]][_0x4e37[17]][_0x4e37[140]]= _0x4e37[18];if(mxClient[_0x4e37[123]]){this[_0x4e37[144]][_0x4e37[17]][_0x4e37[150]]= _0x4e37[151]}else {this[_0x4e37[144]][_0x4e37[17]][_0x4e37[19]]= _0x4e37[20];this[_0x4e37[144]][_0x4e37[17]][_0x4e37[150]]= _0x4e37[152]};this[_0x4e37[117]][_0x4e37[21]](this[_0x4e37[144]])}else {this[_0x4e37[144]][_0x4e37[153]]= _0x4e37[154]};this[_0x4e37[144]][_0x4e37[17]][_0x4e37[132]]= _0x4e37[154];mxUtils[_0x4e37[155]](this[_0x4e37[144]],_0xc707x9);var _0xc707xf=this[_0x4e37[144]][_0x4e37[156]]+ 10;_0xc707xe+= _0xc707xf;if(mxClient[_0x4e37[123]]){this[_0x4e37[144]][_0x4e37[17]][_0x4e37[157]]= (-_0xc707xf) + _0x4e37[142]}else {_0xc707xe-= 6;this[_0x4e37[144]][_0x4e37[17]][_0x4e37[158]]= (_0xc707xe- _0xc707xf)+ _0x4e37[142]}}else {if(this[_0x4e37[144]]!= null&& this[_0x4e37[144]][_0x4e37[33]]!= null){this[_0x4e37[144]][_0x4e37[17]][_0x4e37[132]]= _0x4e37[159]}};this[_0x4e37[117]][_0x4e37[17]][_0x4e37[130]]= _0xc707xe+ _0x4e37[142];var _0xc707x10=-Math[_0x4e37[161]](0,_0xc707xc[_0x4e37[160]]- this[_0x4e37[102]]);var _0xc707x11=-Math[_0x4e37[161]](0,_0xc707xc[_0x4e37[162]]- this[_0x4e37[102]]);var _0xc707x12=this[_0x4e37[2]][_0x4e37[163]]+ this[_0x4e37[1]][_0x4e37[164]]+ 3;var _0xc707x13=Math[_0x4e37[167]](0,(this[_0x4e37[2]][_0x4e37[165]]+ _0xc707x7[_0x4e37[165]]- this[_0x4e37[2]][_0x4e37[166]]- _0xc707xe/ 2+ 16));if(mxClient[_0x4e37[123]]){this[_0x4e37[120]][_0x4e37[122]][_0x4e37[124]][_0x4e37[172]](_0x4e37[168],_0x4e37[169]+ _0xc707x10+ _0x4e37[170]+ _0xc707x11+ _0x4e37[171])}else {this[_0x4e37[120]][_0x4e37[122]][_0x4e37[174]][_0x4e37[17]][_0x4e37[173]]= _0xc707x10+ _0x4e37[142];this[_0x4e37[120]][_0x4e37[122]][_0x4e37[174]][_0x4e37[17]][_0x4e37[158]]= _0xc707x11+ _0x4e37[142]};_0xc707x12+= document[_0x4e37[177]](_0x4e37[176])[_0x4e37[175]];_0xc707x13+= 90;this[_0x4e37[117]][_0x4e37[17]][_0x4e37[19]]= _0x4e37[20];this[_0x4e37[117]][_0x4e37[17]][_0x4e37[173]]= _0xc707x12+ _0x4e37[142];this[_0x4e37[117]][_0x4e37[17]][_0x4e37[158]]= _0xc707x13+ _0x4e37[142];this[_0x4e37[126]][_0x4e37[17]][_0x4e37[173]]= (_0xc707x12- 13)+ _0x4e37[142];this[_0x4e37[126]][_0x4e37[17]][_0x4e37[158]]= (_0xc707x13+ _0xc707xe/ 2- 13)+ _0x4e37[142]});if(this[_0x4e37[117]]!= null&& this[_0x4e37[117]][_0x4e37[17]][_0x4e37[132]]!= _0x4e37[159]){_0xc707xb()}else {this[_0x4e37[115]]= window[_0x4e37[178]](_0xc707xb,this[_0x4e37[104]])};this[_0x4e37[32]]= _0xc707x7}}};Sidebar[_0x4e37[40]][_0x4e37[29]]= function(){if(this[_0x4e37[115]]!= null){window[_0x4e37[116]](this[_0x4e37[115]]);this[_0x4e37[115]]= null};if(this[_0x4e37[117]]!= null){this[_0x4e37[117]][_0x4e37[17]][_0x4e37[132]]= _0x4e37[159];this[_0x4e37[126]][_0x4e37[17]][_0x4e37[16]]= _0x4e37[18];this[_0x4e37[32]]= null}};Sidebar[_0x4e37[40]][_0x4e37[179]]= function(_0xc707x14){var _0xc707x7=document[_0x4e37[7]](_0x4e37[180]);_0xc707x7[_0x4e37[172]](_0x4e37[181],_0x4e37[182]);_0xc707x7[_0x4e37[118]]= _0x4e37[183];mxUtils[_0x4e37[155]](_0xc707x7,_0xc707x14);return _0xc707x7};Sidebar[_0x4e37[40]][_0x4e37[184]]= function(_0xc707x8,_0xc707xd,_0xc707xe,_0xc707x15,_0xc707x9,_0xc707xa){this[_0x4e37[5]][_0x4e37[134]]= (_0xc707xa== null|| _0xc707xa);this[_0x4e37[5]][_0x4e37[122]][_0x4e37[185]](1,0,0);this[_0x4e37[5]][_0x4e37[137]](_0xc707x8);var _0xc707xc=this[_0x4e37[5]][_0x4e37[138]]();var _0xc707x16=this[_0x4e37[103]];var _0xc707x17=Math[_0x4e37[161]]((_0xc707xd- 2)/ (_0xc707xc[_0x4e37[128]]- _0xc707xc[_0x4e37[160]]+ _0xc707x16),(_0xc707xe- 2)/ (_0xc707xc[_0x4e37[130]]- _0xc707xc[_0x4e37[162]]+ _0xc707x16));var _0xc707x10=-Math[_0x4e37[161]](_0xc707xc[_0x4e37[160]],0);var _0xc707x11=-Math[_0x4e37[161]](_0xc707xc[_0x4e37[162]],0);this[_0x4e37[5]][_0x4e37[122]][_0x4e37[185]](_0xc707x17,_0xc707x10,_0xc707x11);_0xc707xc= this[_0x4e37[5]][_0x4e37[138]]();var _0xc707x18=Math[_0x4e37[167]](0,Math[_0x4e37[186]]((_0xc707xd- _0xc707xc[_0x4e37[128]]- _0xc707xc[_0x4e37[160]])/ 2));var _0xc707xf=Math[_0x4e37[167]](0,Math[_0x4e37[186]]((_0xc707xe- _0xc707xc[_0x4e37[130]]- _0xc707xc[_0x4e37[162]])/ 2));var _0xc707x19=null;if(this[_0x4e37[5]][_0x4e37[187]]== mxConstants[_0x4e37[188]]&& !mxClient[_0x4e37[189]]){_0xc707x19= this[_0x4e37[5]][_0x4e37[122]][_0x4e37[192]]()[_0x4e37[191]][_0x4e37[190]](true)}else {_0xc707x19= this[_0x4e37[5]][_0x4e37[2]][_0x4e37[190]](false);_0xc707x19[_0x4e37[153]]= this[_0x4e37[5]][_0x4e37[2]][_0x4e37[153]]};this[_0x4e37[5]][_0x4e37[193]]()[_0x4e37[135]]();if(mxClient[_0x4e37[194]]){_0xc707x15[_0x4e37[17]][_0x4e37[195]]= _0x4e37[196]+ this[_0x4e37[1]][_0x4e37[9]][_0x4e37[197]]+ _0x4e37[171]};var _0xc707x1a=3;_0xc707x19[_0x4e37[17]][_0x4e37[19]]= _0x4e37[125];_0xc707x19[_0x4e37[17]][_0x4e37[140]]= _0x4e37[18];_0xc707x19[_0x4e37[17]][_0x4e37[198]]= _0x4e37[199];_0xc707x19[_0x4e37[17]][_0x4e37[173]]= (_0xc707x18+ _0xc707x1a)+ _0x4e37[142];_0xc707x19[_0x4e37[17]][_0x4e37[158]]= (_0xc707xf+ _0xc707x1a)+ _0x4e37[142];_0xc707x19[_0x4e37[17]][_0x4e37[128]]= _0xc707xd+ _0x4e37[142];_0xc707x19[_0x4e37[17]][_0x4e37[130]]= _0xc707xe+ _0x4e37[142];_0xc707x19[_0x4e37[17]][_0x4e37[16]]= _0x4e37[154];_0xc707x19[_0x4e37[17]][_0x4e37[200]]= _0x4e37[154];_0xc707x19[_0x4e37[17]][_0x4e37[201]]= _0x4e37[154];_0xc707x15[_0x4e37[21]](_0xc707x19);if(this[_0x4e37[112]]&& _0xc707x9!= null){var _0xc707x1b=(mxClient[_0x4e37[139]])?2* this[_0x4e37[110]]+ 2:0;_0xc707x15[_0x4e37[17]][_0x4e37[130]]= (this[_0x4e37[109]]+ _0xc707x1b+ this[_0x4e37[111]]+ 8)+ _0x4e37[142];var _0xc707x1c=document[_0x4e37[7]](_0x4e37[6]);_0xc707x1c[_0x4e37[17]][_0x4e37[202]]= this[_0x4e37[111]]+ _0x4e37[142];_0xc707x1c[_0x4e37[17]][_0x4e37[147]]= _0x4e37[148];_0xc707x1c[_0x4e37[17]][_0x4e37[203]]= _0x4e37[204];if(mxClient[_0x4e37[205]]){_0xc707x1c[_0x4e37[17]][_0x4e37[130]]= (this[_0x4e37[111]]+ 12)+ _0x4e37[142]};_0xc707x1c[_0x4e37[17]][_0x4e37[150]]= _0x4e37[206];mxUtils[_0x4e37[155]](_0xc707x1c,_0xc707x9);_0xc707x15[_0x4e37[21]](_0xc707x1c)}};Sidebar[_0x4e37[40]][_0x4e37[207]]= function(_0xc707x8,_0xc707x9,_0xc707xa){var _0xc707x7=document[_0x4e37[7]](_0x4e37[180]);_0xc707x7[_0x4e37[172]](_0x4e37[181],_0x4e37[182]);_0xc707x7[_0x4e37[118]]= _0x4e37[208];_0xc707x7[_0x4e37[17]][_0x4e37[140]]= _0x4e37[18];var _0xc707x1b=(mxClient[_0x4e37[139]])?8+ 2* this[_0x4e37[110]]:6;_0xc707x7[_0x4e37[17]][_0x4e37[128]]= (this[_0x4e37[108]]+ _0xc707x1b)+ _0x4e37[142];_0xc707x7[_0x4e37[17]][_0x4e37[130]]= (this[_0x4e37[109]]+ _0xc707x1b)+ _0x4e37[142];_0xc707x7[_0x4e37[17]][_0x4e37[209]]= this[_0x4e37[110]]+ _0x4e37[142];mxEvent[_0x4e37[26]](_0xc707x7,_0x4e37[210],function(_0xc707x4){mxEvent[_0x4e37[211]](_0xc707x4)});this[_0x4e37[184]](_0xc707x8,this[_0x4e37[108]],this[_0x4e37[109]],_0xc707x7,_0xc707x9,_0xc707xa);return _0xc707x7};Sidebar[_0x4e37[40]][_0x4e37[212]]= function(_0xc707x8,_0xc707x1d){return function(_0xc707x1e,_0xc707x4,_0xc707x1f,_0xc707x20,_0xc707x21){if(_0xc707x1e[_0x4e37[213]]()){_0xc707x8= _0xc707x1e[_0x4e37[214]](_0xc707x8);if(_0xc707x8[_0x4e37[143]]> 0){var _0xc707x22=(_0xc707x1f!= null)?_0xc707x1e[_0x4e37[215]](_0xc707x1f,_0xc707x8,_0xc707x4):false;var _0xc707x23=null;if(_0xc707x1f!= null&& !_0xc707x22){_0xc707x1f= null};if(_0xc707x1d&& _0xc707x1e[_0x4e37[216]]()&& _0xc707x1e[_0x4e37[217]](_0xc707x1f,_0xc707x8,_0xc707x4)){_0xc707x1e[_0x4e37[218]](_0xc707x1f,_0xc707x8,null,_0xc707x20,_0xc707x21);_0xc707x23= _0xc707x8}else {if(_0xc707x8[_0x4e37[143]]> 0){_0xc707x23= _0xc707x1e[_0x4e37[219]](_0xc707x8,_0xc707x20,_0xc707x21,_0xc707x1f)}};if(_0xc707x23!= null&& _0xc707x23[_0x4e37[143]]> 0){_0xc707x1e[_0x4e37[220]](_0xc707x23[0]);_0xc707x1e[_0x4e37[221]](_0xc707x23)}}}}};Sidebar[_0x4e37[40]][_0x4e37[222]]= function(_0xc707xd,_0xc707xe){var _0xc707x7=document[_0x4e37[7]](_0x4e37[6]);_0xc707x7[_0x4e37[17]][_0x4e37[223]]= _0x4e37[224];_0xc707x7[_0x4e37[17]][_0x4e37[128]]= _0xc707xd+ _0x4e37[142];_0xc707x7[_0x4e37[17]][_0x4e37[130]]= _0xc707xe+ _0x4e37[142];return _0xc707x7};Sidebar[_0x4e37[40]][_0x4e37[225]]= function(_0xc707x7,_0xc707x24,_0xc707x25){var _0xc707x26=mxUtils[_0x4e37[227]](_0xc707x7,this[_0x4e37[1]][_0x4e37[9]][_0x4e37[5]],_0xc707x24,_0xc707x25,0,0,this[_0x4e37[1]][_0x4e37[9]][_0x4e37[5]][_0x4e37[226]],true,true);_0xc707x26[_0x4e37[228]]= function(_0xc707x1e,_0xc707x20,_0xc707x21){var _0xc707x1f=mxDragSource[_0x4e37[40]][_0x4e37[228]][_0x4e37[229]](this,arguments);if(!_0xc707x1e[_0x4e37[230]](_0xc707x1f)){_0xc707x1f= null};return _0xc707x1f};return _0xc707x26};Sidebar[_0x4e37[40]][_0x4e37[231]]= function(_0xc707x7,_0xc707x27){var _0xc707x1e=this[_0x4e37[1]][_0x4e37[9]][_0x4e37[5]];var _0xc707x28=null;mxEvent[_0x4e37[234]](_0xc707x7,function(_0xc707x4){_0xc707x28= new mxPoint(mxEvent[_0x4e37[232]](_0xc707x4),mxEvent[_0x4e37[233]](_0xc707x4))});var _0xc707x29=_0xc707x27[_0x4e37[235]];_0xc707x27[_0x4e37[235]]= function(_0xc707x4){if(!mxEvent[_0x4e37[236]](_0xc707x4)&& this[_0x4e37[237]]== null && _0xc707x28!= null){var _0xc707x2a=_0xc707x1e[_0x4e37[238]];if(Math[_0x4e37[239]](_0xc707x28[_0x4e37[160]]- mxEvent[_0x4e37[232]](_0xc707x4))<= _0xc707x2a&& Math[_0x4e37[239]](_0xc707x28[_0x4e37[162]]- mxEvent[_0x4e37[233]](_0xc707x4))<= _0xc707x2a){var _0xc707x2b=_0xc707x1e[_0x4e37[240]]();_0xc707x27[_0x4e37[241]](_0xc707x1e,_0xc707x4,null,_0xc707x2b,_0xc707x2b)}};_0xc707x29[_0x4e37[229]](this,arguments);_0xc707x28= null}};Sidebar[_0x4e37[40]][_0x4e37[242]]= function(_0xc707x2c,_0xc707x14,_0xc707x2d,_0xc707x2e){var _0xc707x2f=mxUtils[_0x4e37[242]]();var _0xc707x19=_0xc707x2f[_0x4e37[7]](_0xc707x2c);_0xc707x19[_0x4e37[172]](_0x4e37[243],_0xc707x14);_0xc707x2d[_0x4e37[244]](function(_0xc707x30,_0xc707x31){_0xc707x19[_0x4e37[172]](_0xc707x30,_0xc707x2e[_0xc707x31]?_0xc707x2e[_0xc707x31]:_0x4e37[154])});return _0xc707x19};Sidebar[_0x4e37[40]][_0x4e37[245]]= function(_0xc707x32,_0xc707xd,_0xc707xe,_0xc707x33,_0xc707x9,_0xc707xa){var _0xc707x2d=[];var _0xc707x2e=[];switch(_0xc707x33){case _0x4e37[52]:_0xc707x2d= [_0x4e37[246]];_0xc707x2e= [_0x4e37[247]];break;case _0x4e37[46]:_0xc707x2d= [_0x4e37[52]];_0xc707x2e= [_0x4e37[248]];break;case _0x4e37[80]:_0xc707x2d= [_0x4e37[249],_0x4e37[136],_0x4e37[250],_0x4e37[246],_0x4e37[251],_0x4e37[252]];_0xc707x2e= [_0x4e37[154],_0x4e37[154],_0x4e37[253],_0x4e37[254],_0x4e37[255],_0x4e37[256]];break;case _0x4e37[63]:_0xc707x2d= [_0x4e37[257],_0x4e37[258]];_0xc707x2e= [_0x4e37[247]];break;case _0x4e37[262]:_0xc707x2d= [_0x4e37[257],_0x4e37[259],_0x4e37[260]];_0xc707x2e= [_0x4e37[247],_0x4e37[261],_0x4e37[254]];break;case _0x4e37[65]:_0xc707x2d= [_0x4e37[257],_0x4e37[259],_0x4e37[260],_0x4e37[263],_0x4e37[264]];_0xc707x2e= [_0x4e37[247],_0x4e37[261],_0x4e37[254],_0x4e37[254],_0x4e37[247]];break;case _0x4e37[72]:_0xc707x2d= [_0x4e37[257],_0x4e37[259],_0x4e37[265],_0x4e37[266],_0x4e37[263],_0x4e37[264]];_0xc707x2e= [_0x4e37[247],_0x4e37[261],_0x4e37[254],_0x4e37[267],_0x4e37[254],_0x4e37[247]];break;case _0x4e37[73]:_0xc707x2d= [_0x4e37[257],_0x4e37[259],_0x4e37[265],_0x4e37[266],_0x4e37[263],_0x4e37[268],_0x4e37[269],_0x4e37[264]];_0xc707x2e= [_0x4e37[247],_0x4e37[261],_0x4e37[254],_0x4e37[267],_0x4e37[254],_0x4e37[247],_0x4e37[270],_0x4e37[247]];break;case _0x4e37[100]:_0xc707x2d= [_0x4e37[271],_0x4e37[272]];_0xc707x2e= [_0x4e37[154],_0x4e37[154]];break;case _0x4e37[61]:_0xc707x2d= [_0x4e37[264],_0x4e37[273]];_0xc707x2e= [_0x4e37[247],_0x4e37[154]];break;case _0x4e37[79]:_0xc707x2d= [_0x4e37[274],_0x4e37[275],_0x4e37[264]];_0xc707x2e= [_0x4e37[247],_0x4e37[154],_0x4e37[247]];break;case _0x4e37[96]:_0xc707x2d= [_0x4e37[276]];_0xc707x2e= [];break;case _0x4e37[87]:_0xc707x2d= [_0x4e37[277],_0x4e37[278],_0x4e37[279]];_0xc707x2e= [_0x4e37[154],_0x4e37[154],_0x4e37[254]];break;case _0x4e37[97]:_0xc707x2d= [_0x4e37[264],_0x4e37[280]];_0xc707x2e= [];break;case _0x4e37[98]:_0xc707x2d= [_0x4e37[280],_0x4e37[281]];_0xc707x2e= [];break;case _0x4e37[88]:_0xc707x2d= [_0x4e37[282]];_0xc707x2e= [];break;case _0x4e37[89]:_0xc707x2d= [_0x4e37[283]];_0xc707x2e= [_0x4e37[247]];break;case _0x4e37[90]:_0xc707x2d= [_0x4e37[264]];_0xc707x2e= [_0x4e37[247]];break;case _0x4e37[66]:_0xc707x2d= [_0x4e37[284],_0x4e37[285]];_0xc707x2e= [_0x4e37[154],_0x4e37[255]];break;case _0x4e37[67]:_0xc707x2d= [_0x4e37[286],_0x4e37[285]];_0xc707x2e= [_0x4e37[154],_0x4e37[255]];break;case _0x4e37[68]:_0xc707x2d= [_0x4e37[287],_0x4e37[285]];_0xc707x2e= [_0x4e37[154],_0x4e37[255]];break;case _0x4e37[76]:_0xc707x2d= [_0x4e37[288],_0x4e37[289],_0x4e37[246],_0x4e37[285]];_0xc707x2e= [_0x4e37[154],_0x4e37[290],_0x4e37[291],_0x4e37[255]];break;case _0x4e37[54]:_0xc707x2d= [_0x4e37[292],_0x4e37[246],_0x4e37[258],_0x4e37[293]];_0xc707x2e= [_0x4e37[247],_0x4e37[294]];break;case _0x4e37[55]:_0xc707x2d= [_0x4e37[295],_0x4e37[296],_0x4e37[246],_0x4e37[258],_0x4e37[293]];_0xc707x2e= [_0x4e37[154],_0x4e37[291],_0x4e37[294]];break;case _0x4e37[69]:_0xc707x2d= [_0x4e37[287],_0x4e37[297]];_0xc707x2e= [_0x4e37[154],_0x4e37[298]];break;case _0x4e37[70]:_0xc707x2d= [_0x4e37[287],_0x4e37[249],_0x4e37[299],_0x4e37[300],_0x4e37[251]];_0xc707x2e= [_0x4e37[154],_0x4e37[154],_0x4e37[301],_0x4e37[247],_0x4e37[255]];break;case _0x4e37[71]:_0xc707x2d= [_0x4e37[302],_0x4e37[303],_0x4e37[304],_0x4e37[305],_0x4e37[287]];_0xc707x2e= [_0x4e37[154],_0x4e37[154],_0x4e37[306],_0x4e37[307],_0x4e37[154]];break;case _0x4e37[56]:_0xc707x2d= [_0x4e37[308],_0x4e37[258],_0x4e37[293],_0x4e37[257],_0x4e37[246],_0x4e37[98],_0x4e37[309],_0x4e37[310],_0x4e37[19]];_0xc707x2e= [_0x4e37[291],_0x4e37[311],_0x4e37[154],_0x4e37[247],_0x4e37[312]];break;case _0x4e37[57]:_0xc707x2d= [_0x4e37[313],_0x4e37[272]];_0xc707x2e= [_0x4e37[154],_0x4e37[154]];break;case _0x4e37[99]:_0xc707x2d= [_0x4e37[314]];_0xc707x2e= [_0x4e37[247]];break;case _0x4e37[62]:_0xc707x2d= [_0x4e37[315],_0x4e37[264]];_0xc707x2e= [_0x4e37[154],_0x4e37[247]];break;case _0x4e37[324]:_0xc707x2d= [_0x4e37[316],_0x4e37[317],_0x4e37[318],_0x4e37[319],_0x4e37[320],_0x4e37[321],_0x4e37[322],_0x4e37[323]];_0xc707x2e= [];break;case _0x4e37[93]:_0xc707x2d= [_0x4e37[325]];_0xc707x2e= [];break;case _0x4e37[58]:_0xc707x2d= [_0x4e37[326],_0x4e37[327],_0x4e37[295],_0x4e37[328],_0x4e37[329]];_0xc707x2e= [_0x4e37[330],_0x4e37[154],_0x4e37[331],_0x4e37[291],_0x4e37[261]];break;case _0x4e37[81]:_0xc707x2d= [_0x4e37[332],_0x4e37[333],_0x4e37[334]];_0xc707x2e= [_0x4e37[247]];break;case _0x4e37[82]:_0xc707x2d= [_0x4e37[332],_0x4e37[333],_0x4e37[335]];_0xc707x2e= [_0x4e37[247]];break;case _0x4e37[83]:_0xc707x2d= [_0x4e37[332],_0x4e37[336],_0x4e37[333],_0x4e37[337],_0x4e37[338],_0x4e37[339],_0x4e37[287]];_0xc707x2e= [_0x4e37[247]];break;case _0x4e37[84]:_0xc707x2d= [_0x4e37[332],_0x4e37[333],_0x4e37[340],_0x4e37[341],_0x4e37[342],_0x4e37[343]];_0xc707x2e= [_0x4e37[247]];break;default:_0xc707x2d= [];_0xc707x2e= [];break};var _0xc707x19=this[_0x4e37[242]](_0xc707x33,_0xc707x9,_0xc707x2d,_0xc707x2e);var _0xc707x8=[ new mxCell(_0xc707x19, new mxGeometry(0,0,_0xc707xd,_0xc707xe),_0xc707x32)];_0xc707x8[0][_0x4e37[344]]= true;return this[_0x4e37[345]](_0xc707x8,_0xc707xd,_0xc707xe,_0xc707x9,_0xc707xa)};Sidebar[_0x4e37[40]][_0x4e37[345]]= function(_0xc707x8,_0xc707xd,_0xc707xe,_0xc707x9,_0xc707xa){var _0xc707x7=this[_0x4e37[207]](_0xc707x8,_0xc707x9,_0xc707xa);var _0xc707x27=this[_0x4e37[225]](_0xc707x7,this[_0x4e37[212]](_0xc707x8,true),this[_0x4e37[222]](_0xc707xd,_0xc707xe));this[_0x4e37[231]](_0xc707x7,_0xc707x27);_0xc707x27[_0x4e37[346]]= mxUtils[_0x4e37[25]](this,function(){return this[_0x4e37[1]][_0x4e37[9]][_0x4e37[5]][_0x4e37[348]][_0x4e37[347]]});if(!touchStyle){mxEvent[_0x4e37[26]](_0xc707x7,_0x4e37[30],mxUtils[_0x4e37[25]](this,function(_0xc707x4){this[_0x4e37[114]](_0xc707x7,_0xc707x8,_0xc707x9,_0xc707xa)}))};return _0xc707x7};Sidebar[_0x4e37[40]][_0x4e37[349]]= function(_0xc707x32,_0xc707xd,_0xc707xe,_0xc707x33,_0xc707x9,_0xc707xa){var _0xc707x8=[ new mxCell((_0xc707x33!= null)?_0xc707x33:_0x4e37[154], new mxGeometry(0,0,_0xc707xd,_0xc707xe),_0xc707x32)];_0xc707x8[0][_0x4e37[351]][_0x4e37[350]]( new mxPoint(0,_0xc707xe),true);_0xc707x8[0][_0x4e37[351]][_0x4e37[350]]( new mxPoint(_0xc707xd,0),false);_0xc707x8[0][_0x4e37[351]][_0x4e37[125]]= true;_0xc707x8[0][_0x4e37[352]]= true;return this[_0x4e37[353]](_0xc707x8,_0xc707xd,_0xc707xe,_0xc707x9,_0xc707xa)};Sidebar[_0x4e37[40]][_0x4e37[353]]= function(_0xc707x8,_0xc707xd,_0xc707xe,_0xc707x9,_0xc707xa){var _0xc707x7=this[_0x4e37[207]](_0xc707x8,_0xc707x9,_0xc707xa);this[_0x4e37[225]](_0xc707x7,this[_0x4e37[212]](_0xc707x8,false),this[_0x4e37[222]](_0xc707xd,_0xc707xe));var _0xc707x1e=this[_0x4e37[1]][_0x4e37[9]][_0x4e37[5]];mxEvent[_0x4e37[26]](_0xc707x7,_0x4e37[210],mxUtils[_0x4e37[25]](this,function(_0xc707x4){if(this[_0x4e37[105]]){_0xc707x1e[_0x4e37[354]](_0xc707x8[0])};_0xc707x7[_0x4e37[17]][_0x4e37[355]]= _0x4e37[356];window[_0x4e37[178]](function(){_0xc707x7[_0x4e37[17]][_0x4e37[355]]= _0x4e37[154]},300);mxEvent[_0x4e37[211]](_0xc707x4)}));if(!touchStyle){mxEvent[_0x4e37[26]](_0xc707x7,_0x4e37[30],mxUtils[_0x4e37[25]](this,function(_0xc707x4){this[_0x4e37[114]](_0xc707x7,_0xc707x8,_0xc707x9,_0xc707xa)}))};return _0xc707x7};Sidebar[_0x4e37[40]][_0x4e37[357]]= function(_0xc707x34,_0xc707x9,_0xc707x35,_0xc707x36){var _0xc707x7=this[_0x4e37[179]](_0xc707x9);this[_0x4e37[2]][_0x4e37[21]](_0xc707x7);var _0xc707x1c=document[_0x4e37[7]](_0x4e37[6]);_0xc707x1c[_0x4e37[118]]= _0x4e37[358];if(_0xc707x35){_0xc707x36(_0xc707x1c);_0xc707x36= null}else {_0xc707x1c[_0x4e37[17]][_0x4e37[132]]= _0x4e37[159]};this[_0x4e37[359]](_0xc707x7,_0xc707x1c,_0xc707x36);var _0xc707x37=document[_0x4e37[7]](_0x4e37[6]);_0xc707x37[_0x4e37[21]](_0xc707x1c);this[_0x4e37[2]][_0x4e37[21]](_0xc707x37);if(_0xc707x34!= null){this[_0x4e37[3]][_0xc707x34]= [_0xc707x7,_0xc707x37]}};Sidebar[_0x4e37[40]][_0x4e37[359]]= function(_0xc707x9,_0xc707x38,_0xc707x39){var _0xc707x3a=false;_0xc707x9[_0x4e37[17]][_0x4e37[195]]= (_0xc707x38[_0x4e37[17]][_0x4e37[132]]== _0x4e37[159])?_0x4e37[196]+ IMAGE_PATH+ _0x4e37[360]:_0x4e37[196]+ IMAGE_PATH+ _0x4e37[361];_0xc707x9[_0x4e37[17]][_0x4e37[362]]= _0x4e37[363];_0xc707x9[_0x4e37[17]][_0x4e37[364]]= _0x4e37[365];mxEvent[_0x4e37[26]](_0xc707x9,_0x4e37[210],function(_0xc707x4){if(_0xc707x38[_0x4e37[17]][_0x4e37[132]]== _0x4e37[159]){if(!_0xc707x3a){_0xc707x3a= true;if(_0xc707x39!= null){_0xc707x9[_0x4e37[17]][_0x4e37[198]]= _0x4e37[366];window[_0x4e37[178]](function(){_0xc707x39(_0xc707x38);_0xc707x9[_0x4e37[17]][_0x4e37[198]]= _0x4e37[154]},0)}};_0xc707x9[_0x4e37[17]][_0x4e37[195]]= _0x4e37[196]+ IMAGE_PATH+ _0x4e37[361];_0xc707x38[_0x4e37[17]][_0x4e37[132]]= _0x4e37[133]}else {_0xc707x9[_0x4e37[17]][_0x4e37[195]]= _0x4e37[196]+ IMAGE_PATH+ _0x4e37[360];_0xc707x38[_0x4e37[17]][_0x4e37[132]]= _0x4e37[159]};mxEvent[_0x4e37[211]](_0xc707x4)})};Sidebar[_0x4e37[40]][_0x4e37[367]]= function(_0xc707x34){var _0xc707x3b=this[_0x4e37[3]][_0xc707x34];if(_0xc707x3b!= null){this[_0x4e37[3]][_0xc707x34]= null;for(var _0xc707x3c=0;_0xc707x3c< _0xc707x3b[_0x4e37[143]];_0xc707x3c++){this[_0x4e37[2]][_0x4e37[368]](_0xc707x3b[_0xc707x3c])};return true};return false};Sidebar[_0x4e37[40]][_0x4e37[49]]= function(_0xc707x34,_0xc707x9,_0xc707x3d,_0xc707x3e,_0xc707x3f,_0xc707x40){this[_0x4e37[357]](_0xc707x34,_0xc707x9,(_0xc707x34=== _0x4e37[42]),mxUtils[_0x4e37[25]](this,function(_0xc707x38){var _0xc707x41=_0xc707x40!= null;for(var _0xc707x3c=0;_0xc707x3c< _0xc707x3f[_0x4e37[143]];_0xc707x3c++){var _0xc707x42=_0xc707x3d+ _0xc707x3f[_0xc707x3c]+ _0xc707x3e;_0xc707x38[_0x4e37[21]](this[_0x4e37[245]](_0x4e37[369]+ _0xc707x42,80,80,_0xc707x3f[_0xc707x3c],(_0xc707x41)?_0xc707x40[_0xc707x3c]:null,_0xc707x41))}}))} \ No newline at end of file +undefined \ No newline at end of file diff --git a/public/assets/plugins/square/js/Toolbar.js b/public/assets/plugins/square/js/Toolbar.js index 5bb609f..66dc905 100644 --- a/public/assets/plugins/square/js/Toolbar.js +++ b/public/assets/plugins/square/js/Toolbar.js @@ -1 +1 @@ -var _0xc4be=["\x65\x64\x69\x74\x6F\x72\x55\x69","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x69\x6E\x69\x74","\x68\x69\x64\x65\x4D\x65\x6E\x75","\x62\x69\x6E\x64","\x61\x64\x64\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x73\x61\x76\x65","\x70\x75\x62\x6C\x69\x73\x68","\x2D","\x70\x72\x69\x6E\x74","\x75\x6E\x64\x6F","\x72\x65\x64\x6F","\x63\x6F\x70\x79","\x63\x75\x74","\x70\x61\x73\x74\x65","\x64\x65\x6C\x65\x74\x65","\x64\x75\x70\x6C\x69\x63\x61\x74\x65","\x61\x63\x74\x75\x61\x6C\x53\x69\x7A\x65","\x7A\x6F\x6F\x6D\x49\x6E","\x7A\x6F\x6F\x6D\x4F\x75\x74","\x61\x64\x64\x49\x74\x65\x6D\x73","\x48\x65\x6C\x76\x65\x74\x69\x63\x61","\x66\x6F\x6E\x74\x46\x61\x6D\x69\x6C\x79","\x67\x65\x74","\x61\x64\x64\x4D\x65\x6E\x75","\x77\x68\x69\x74\x65\x53\x70\x61\x63\x65","\x73\x74\x79\x6C\x65","\x6E\x6F\x77\x72\x61\x70","\x6F\x76\x65\x72\x66\x6C\x6F\x77","\x68\x69\x64\x64\x65\x6E","\x77\x69\x64\x74\x68","\x37\x30\x70\x78","\x61\x64\x64\x53\x65\x70\x61\x72\x61\x74\x6F\x72","\x31\x32","\x66\x6F\x6E\x74\x53\x69\x7A\x65","\x33\x30\x70\x78","\x62\x6F\x6C\x64","\x69\x74\x61\x6C\x69\x63","\x75\x6E\x64\x65\x72\x6C\x69\x6E\x65","\x67\x72\x61\x70\x68","\x65\x64\x69\x74\x6F\x72","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x67\x65\x74\x53\x74\x61\x74\x65","\x67\x65\x74\x56\x69\x65\x77","\x53\x54\x59\x4C\x45\x5F\x46\x4F\x4E\x54\x46\x41\x4D\x49\x4C\x59","\x53\x54\x59\x4C\x45\x5F\x46\x4F\x4E\x54\x53\x49\x5A\x45","\x6C\x65\x6E\x67\x74\x68","\x73\x75\x62\x73\x74\x72\x69\x6E\x67","\x2E\x2E\x2E","\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C","\x61\x64\x64\x4C\x69\x73\x74\x65\x6E\x65\x72","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x4D\x6F\x64\x65\x6C","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x63\x75\x72\x72\x65\x6E\x74\x4D\x65\x6E\x75","\x64\x65\x73\x74\x72\x6F\x79","\x6D\x65\x6E\x75\x73","\x66\x75\x6E\x63\x74","\x61\x64\x64\x4D\x65\x6E\x75\x46\x75\x6E\x63\x74\x69\x6F\x6E","\x73\x74\x61\x74\x65\x43\x68\x61\x6E\x67\x65\x64","\x65\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x45\x6E\x61\x62\x6C\x65\x64","\x63\x72\x65\x61\x74\x65\x4C\x61\x62\x65\x6C","\x63\x72\x65\x61\x74\x65\x42\x75\x74\x74\x6F\x6E","\x69\x6E\x69\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x61\x64\x64\x4D\x65\x6E\x75\x48\x61\x6E\x64\x6C\x65\x72","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x64\x69\x76","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x67\x65\x53\x65\x70\x61\x72\x61\x74\x6F\x72","\x67\x65\x53\x70\x72\x69\x74\x65\x2D","\x74\x6F\x4C\x6F\x77\x65\x72\x43\x61\x73\x65","\x61\x64\x64\x49\x74\x65\x6D","\x61\x63\x74\x69\x6F\x6E\x73","\x6C\x61\x62\x65\x6C","\x61\x64\x64\x42\x75\x74\x74\x6F\x6E","\x61\x64\x64\x43\x6C\x69\x63\x6B\x48\x61\x6E\x64\x6C\x65\x72","\x61\x64\x64\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x48\x61\x6E\x64\x6C\x65\x72","\x69\x73\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x45\x6D\x70\x74\x79","\x61\x64\x64\x45\x64\x67\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x48\x61\x6E\x64\x6C\x65\x72","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x69\x73\x45\x64\x67\x65","\x74\x61\x62\x69\x6E\x64\x65\x78","\x30","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x74\x69\x74\x6C\x65","\x61\x64\x64\x45\x6E\x61\x62\x6C\x65\x64\x53\x74\x61\x74\x65","\x20\x67\x65\x44\x69\x73\x61\x62\x6C\x65\x64","\x63\x6C\x69\x63\x6B","\x63\x6F\x6E\x73\x75\x6D\x65","\x61","\x68\x72\x65\x66","\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x3A\x76\x6F\x69\x64\x28\x30\x29\x3B","\x67\x65\x42\x75\x74\x74\x6F\x6E","\x67\x65\x53\x70\x72\x69\x74\x65\x20","\x67\x65\x4C\x61\x62\x65\x6C","\x77\x72\x69\x74\x65","\x70\x61\x6E\x6E\x69\x6E\x67\x48\x61\x6E\x64\x6C\x65\x72","\x20\x67\x65\x54\x6F\x6F\x6C\x62\x61\x72\x4D\x65\x6E\x75","\x73\x68\x6F\x77\x44\x69\x73\x61\x62\x6C\x65\x64","\x6C\x61\x62\x65\x6C\x73","\x61\x75\x74\x6F\x45\x78\x70\x61\x6E\x64","\x6F\x66\x66\x73\x65\x74\x4C\x65\x66\x74","\x6F\x66\x66\x73\x65\x74\x54\x6F\x70","\x6F\x66\x66\x73\x65\x74\x48\x65\x69\x67\x68\x74","\x70\x6F\x70\x75\x70"];function Toolbar(_0x7ff1x2,_0x7ff1x3){this[_0xc4be[0]]= _0x7ff1x2;this[_0xc4be[1]]= _0x7ff1x3;this[_0xc4be[2]]();mxEvent[_0xc4be[5]](document,mxUtils[_0xc4be[4]](this,function(_0x7ff1x4){this[_0xc4be[3]]()}))}Toolbar[_0xc4be[6]][_0xc4be[2]]= function(){this[_0xc4be[21]]([_0xc4be[7],_0xc4be[8],_0xc4be[9],_0xc4be[10],_0xc4be[11],_0xc4be[12],_0xc4be[9],_0xc4be[13],_0xc4be[14],_0xc4be[15],_0xc4be[16],_0xc4be[9],_0xc4be[17],_0xc4be[9],_0xc4be[18],_0xc4be[19],_0xc4be[20],_0xc4be[9]]);var _0x7ff1x5=this[_0xc4be[25]](_0xc4be[22],mxResources[_0xc4be[24]](_0xc4be[23]),true,_0xc4be[23]);_0x7ff1x5[_0xc4be[27]][_0xc4be[26]]= _0xc4be[28];_0x7ff1x5[_0xc4be[27]][_0xc4be[29]]= _0xc4be[30];_0x7ff1x5[_0xc4be[27]][_0xc4be[31]]= _0xc4be[32];this[_0xc4be[33]]();var _0x7ff1x6=this[_0xc4be[25]](_0xc4be[34],mxResources[_0xc4be[24]](_0xc4be[35]),true,_0xc4be[35]);_0x7ff1x6[_0xc4be[27]][_0xc4be[26]]= _0xc4be[28];_0x7ff1x6[_0xc4be[27]][_0xc4be[29]]= _0xc4be[30];_0x7ff1x6[_0xc4be[27]][_0xc4be[31]]= _0xc4be[36];this[_0xc4be[21]]([_0xc4be[9],_0xc4be[37],_0xc4be[38],_0xc4be[39]]);var _0x7ff1x7=this[_0xc4be[0]][_0xc4be[41]][_0xc4be[40]];var _0x7ff1x8=mxUtils[_0xc4be[4]](this,function(){var _0x7ff1x9=_0xc4be[22];var _0x7ff1xa=_0xc4be[34];var _0x7ff1xb=_0x7ff1x7[_0xc4be[44]]()[_0xc4be[43]](_0x7ff1x7[_0xc4be[42]]());if(_0x7ff1xb!= null){_0x7ff1x9= _0x7ff1xb[_0xc4be[27]][mxConstants[_0xc4be[45]]]|| _0x7ff1x9;_0x7ff1xa= _0x7ff1xb[_0xc4be[27]][mxConstants[_0xc4be[46]]]|| _0x7ff1xa;if(_0x7ff1x9[_0xc4be[47]]> 10){_0x7ff1x9= _0x7ff1x9[_0xc4be[48]](0,8)+ _0xc4be[49]};_0x7ff1x5[_0xc4be[50]]= _0x7ff1x9;_0x7ff1x6[_0xc4be[50]]= _0x7ff1xa}});_0x7ff1x7[_0xc4be[52]]()[_0xc4be[51]](mxEvent.CHANGE,_0x7ff1x8);_0x7ff1x7[_0xc4be[53]]()[_0xc4be[51]](mxEvent.CHANGE,_0x7ff1x8)};Toolbar[_0xc4be[6]][_0xc4be[3]]= function(){if(this[_0xc4be[54]]!= null){this[_0xc4be[54]][_0xc4be[3]]();this[_0xc4be[54]][_0xc4be[55]]();this[_0xc4be[54]]= null}};Toolbar[_0xc4be[6]][_0xc4be[25]]= function(_0x7ff1xc,_0x7ff1xd,_0x7ff1xe,_0x7ff1xf){var _0x7ff1x10=this[_0xc4be[0]][_0xc4be[56]][_0xc4be[24]](_0x7ff1xf);var _0x7ff1x11=this[_0xc4be[58]](_0x7ff1xc,_0x7ff1xd,_0x7ff1xe,_0x7ff1x10[_0xc4be[57]]);_0x7ff1x10[_0xc4be[51]](_0xc4be[59],function(){_0x7ff1x11[_0xc4be[61]](_0x7ff1x10[_0xc4be[60]])});return _0x7ff1x11};Toolbar[_0xc4be[6]][_0xc4be[58]]= function(_0x7ff1xc,_0x7ff1xd,_0x7ff1xe,_0x7ff1x12){var _0x7ff1x11=(_0x7ff1xe)?this[_0xc4be[62]](_0x7ff1xc):this[_0xc4be[63]](_0x7ff1xc);this[_0xc4be[64]](_0x7ff1x11,_0x7ff1xd);this[_0xc4be[65]](_0x7ff1x11,_0x7ff1xe,_0x7ff1x12);this[_0xc4be[1]][_0xc4be[66]](_0x7ff1x11);return _0x7ff1x11};Toolbar[_0xc4be[6]][_0xc4be[33]]= function(){var _0x7ff1x11=document[_0xc4be[68]](_0xc4be[67]);_0x7ff1x11[_0xc4be[69]]= _0xc4be[70];this[_0xc4be[1]][_0xc4be[66]](_0x7ff1x11);return _0x7ff1x11};Toolbar[_0xc4be[6]][_0xc4be[21]]= function(_0x7ff1x13){for(var _0x7ff1x14=0;_0x7ff1x14< _0x7ff1x13[_0xc4be[47]];_0x7ff1x14++){var _0x7ff1x15=_0x7ff1x13[_0x7ff1x14];if(_0x7ff1x15== _0xc4be[9]){this[_0xc4be[33]]()}else {this[_0xc4be[73]](_0xc4be[71]+ _0x7ff1x15[_0xc4be[72]](),_0x7ff1x15)}}};Toolbar[_0xc4be[6]][_0xc4be[73]]= function(_0x7ff1x16,_0x7ff1x15){var _0x7ff1x17=this[_0xc4be[0]][_0xc4be[74]][_0xc4be[24]](_0x7ff1x15);var _0x7ff1x11=null;if(_0x7ff1x17!= null){_0x7ff1x11= this[_0xc4be[76]](_0x7ff1x16,_0x7ff1x17[_0xc4be[75]],_0x7ff1x17[_0xc4be[57]]);_0x7ff1x11[_0xc4be[61]](_0x7ff1x17[_0xc4be[60]]);_0x7ff1x17[_0xc4be[51]](_0xc4be[59],function(){_0x7ff1x11[_0xc4be[61]](_0x7ff1x17[_0xc4be[60]])})};return _0x7ff1x11};Toolbar[_0xc4be[6]][_0xc4be[76]]= function(_0x7ff1x18,_0x7ff1xd,_0x7ff1x12){var _0x7ff1x11=this[_0xc4be[63]](_0x7ff1x18);this[_0xc4be[64]](_0x7ff1x11,_0x7ff1xd);this[_0xc4be[77]](_0x7ff1x11,_0x7ff1x12);this[_0xc4be[1]][_0xc4be[66]](_0x7ff1x11);return _0x7ff1x11};Toolbar[_0xc4be[6]][_0xc4be[78]]= function(_0x7ff1x19){var _0x7ff1x7=this[_0xc4be[0]][_0xc4be[41]][_0xc4be[40]];var _0x7ff1x1a=function(){var _0x7ff1x1b=!_0x7ff1x7[_0xc4be[79]]();for(var _0x7ff1x14=0;_0x7ff1x14< _0x7ff1x19[_0xc4be[47]];_0x7ff1x14++){_0x7ff1x19[_0x7ff1x14][_0xc4be[61]](_0x7ff1x1b)}};_0x7ff1x7[_0xc4be[52]]()[_0xc4be[51]](mxEvent.CHANGE,_0x7ff1x1a);_0x7ff1x1a()};Toolbar[_0xc4be[6]][_0xc4be[80]]= function(_0x7ff1x19){var _0x7ff1x7=this[_0xc4be[0]][_0xc4be[41]][_0xc4be[40]];var _0x7ff1x1a=function(){var _0x7ff1x1c=false;if(!_0x7ff1x7[_0xc4be[79]]()){var _0x7ff1x1d=_0x7ff1x7[_0xc4be[81]]();for(var _0x7ff1x14=0;_0x7ff1x14< _0x7ff1x1d[_0xc4be[47]];_0x7ff1x14++){if(_0x7ff1x7[_0xc4be[53]]()[_0xc4be[82]](_0x7ff1x1d[_0x7ff1x14])){_0x7ff1x1c= true;break}}};for(var _0x7ff1x14=0;_0x7ff1x14< _0x7ff1x19[_0xc4be[47]];_0x7ff1x14++){_0x7ff1x19[_0x7ff1x14][_0xc4be[61]](_0x7ff1x1c)}};_0x7ff1x7[_0xc4be[52]]()[_0xc4be[51]](mxEvent.CHANGE,_0x7ff1x1a);_0x7ff1x1a()};Toolbar[_0xc4be[6]][_0xc4be[64]]= function(_0x7ff1x11,_0x7ff1xd){_0x7ff1x11[_0xc4be[85]](_0xc4be[83],_0xc4be[84]);if(_0x7ff1xd!= null){_0x7ff1x11[_0xc4be[85]](_0xc4be[86],_0x7ff1xd)};this[_0xc4be[87]](_0x7ff1x11)};Toolbar[_0xc4be[6]][_0xc4be[87]]= function(_0x7ff1x11){var _0x7ff1x18=_0x7ff1x11[_0xc4be[69]];_0x7ff1x11[_0xc4be[61]]= function(_0x7ff1x1e){_0x7ff1x11[_0xc4be[60]]= _0x7ff1x1e;if(_0x7ff1x1e){_0x7ff1x11[_0xc4be[69]]= _0x7ff1x18}else {_0x7ff1x11[_0xc4be[69]]= _0x7ff1x18+ _0xc4be[88]}};_0x7ff1x11[_0xc4be[61]](true)};Toolbar[_0xc4be[6]][_0xc4be[77]]= function(_0x7ff1x11,_0x7ff1x12){if(_0x7ff1x12!= null){mxEvent[_0xc4be[51]](_0x7ff1x11,_0xc4be[89],function(_0x7ff1x4){if(_0x7ff1x11[_0xc4be[60]]){_0x7ff1x12(_0x7ff1x4)};mxEvent[_0xc4be[90]](_0x7ff1x4)})}};Toolbar[_0xc4be[6]][_0xc4be[63]]= function(_0x7ff1x18){var _0x7ff1x11=document[_0xc4be[68]](_0xc4be[91]);_0x7ff1x11[_0xc4be[85]](_0xc4be[92],_0xc4be[93]);_0x7ff1x11[_0xc4be[69]]= _0xc4be[94];var _0x7ff1x1f=document[_0xc4be[68]](_0xc4be[67]);_0x7ff1x1f[_0xc4be[69]]= _0xc4be[95]+ _0x7ff1x18;_0x7ff1x11[_0xc4be[66]](_0x7ff1x1f);return _0x7ff1x11};Toolbar[_0xc4be[6]][_0xc4be[62]]= function(_0x7ff1xc,_0x7ff1xd){var _0x7ff1x11=document[_0xc4be[68]](_0xc4be[91]);_0x7ff1x11[_0xc4be[85]](_0xc4be[92],_0xc4be[93]);_0x7ff1x11[_0xc4be[69]]= _0xc4be[96];mxUtils[_0xc4be[97]](_0x7ff1x11,_0x7ff1xc);return _0x7ff1x11};Toolbar[_0xc4be[6]][_0xc4be[65]]= function(_0x7ff1x11,_0x7ff1xe,_0x7ff1x12,_0x7ff1x20){if(_0x7ff1x12!= null){var _0x7ff1x7=this[_0xc4be[0]][_0xc4be[41]][_0xc4be[40]];var _0x7ff1x10=null;mxEvent[_0xc4be[51]](_0x7ff1x11,_0xc4be[89],mxUtils[_0xc4be[4]](this,function(_0x7ff1x4){if(_0x7ff1x11[_0xc4be[60]]== null|| _0x7ff1x11[_0xc4be[60]]){_0x7ff1x7[_0xc4be[98]][_0xc4be[3]]();_0x7ff1x10= new mxPopupMenu(_0x7ff1x12);_0x7ff1x10[_0xc4be[67]][_0xc4be[69]]+= _0xc4be[99];_0x7ff1x10[_0xc4be[100]]= _0x7ff1x20;_0x7ff1x10[_0xc4be[101]]= _0x7ff1xe;_0x7ff1x10[_0xc4be[102]]= true;_0x7ff1x10[_0xc4be[106]](_0x7ff1x11[_0xc4be[103]],_0x7ff1x11[_0xc4be[104]]+ _0x7ff1x11[_0xc4be[105]]+ 34,null,_0x7ff1x4);this[_0xc4be[54]]= _0x7ff1x10};mxEvent[_0xc4be[90]](_0x7ff1x4)}))}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/public/assets/plugins/square/js/custom.js b/public/assets/plugins/square/js/custom.js index 7e8ba62..66dc905 100644 --- a/public/assets/plugins/square/js/custom.js +++ b/public/assets/plugins/square/js/custom.js @@ -1 +1 @@ -var _0x770b=["\x68\x72\x65\x66","\x6C\x6F\x63\x61\x74\x69\x6F\x6E","\x3F","\x6C\x61\x73\x74\x49\x6E\x64\x65\x78\x4F\x66","\x26","\x73\x70\x6C\x69\x74","\x73\x75\x62\x73\x74\x72\x69\x6E\x67","\x6C\x65\x6E\x67\x74\x68","\x3D","\x69\x6E\x64\x65\x78\x4F\x66","\x68\x74\x74\x70\x3A\x2F\x2F\x65\x78\x70\x2E\x64\x72\x61\x77\x2E\x69\x6F\x2F\x49\x6D\x61\x67\x65\x45\x78\x70\x6F\x72\x74\x32\x2F\x65\x78\x70\x6F\x72\x74","\x68\x74\x74\x70\x3A\x2F\x2F\x6C\x6F\x63\x61\x6C\x68\x6F\x73\x74\x3A\x33\x30\x30\x30","\x61\x70\x69\x2F\x73\x71\x75\x61\x72\x65\x2F\x70\x72\x6F\x6A\x65\x63\x74\x73\x2F","\x2F\x61\x70\x69\x2F\x76\x61\x72\x69\x61\x62\x6C\x65\x73","\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73","\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x68\x61\x70\x65\x73","\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x6D\x78\x67\x72\x61\x70\x68\x2F\x69\x6D\x61\x67\x65\x73","\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x6D\x78\x67\x72\x61\x70\x68\x2F\x73\x74\x79\x6C\x65\x73","\x61\x70\x69\x2F\x73\x71\x75\x61\x72\x65\x2F\x70\x72\x6F\x6A\x65\x63\x74\x73\x2F\x6F\x70\x65\x6E","\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x74\x65\x6D\x70\x6C\x61\x74\x65\x73","\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x72\x65\x73\x6F\x75\x72\x63\x65\x73","\x2F\x64\x69\x61","\x65\x6E","\x65\x6E\x5F\x45\x4E","\x69\x74","\x4E\x47\x5F\x54\x52\x41\x4E\x53\x4C\x41\x54\x45\x5F\x4C\x41\x4E\x47\x5F\x4B\x45\x59","\x67\x65\x74\x49\x74\x65\x6D","\x61\x72","\x62\x73","\x63\x73","\x64\x61","\x64\x65","\x65\x6C","\x65\x73","\x65\x73\x2D\x61\x72","\x66\x72","\x68\x75","\x69\x64","\x6A\x61","\x6B\x6F","\x6E\x6C","\x6E\x6F","\x70\x6C","\x70\x74\x2D\x62\x72","\x70\x74","\x72\x6F","\x72\x75","\x73\x72","\x73\x76","\x74\x68","\x74\x72","\x75\x6B","\x7A\x68","\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x6D\x78\x67\x72\x61\x70\x68","\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x6D\x78\x67\x72\x61\x70\x68\x2F\x6A\x73","\x55\x53\x20\x45\x6E\x67\x6C\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x55\x53\x20\x45\x6E\x67\x6C\x69\x73\x68\x20\x4D\x61\x6C\x65","\x55\x4B\x20\x45\x6E\x67\x6C\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x55\x4B\x20\x45\x6E\x67\x6C\x69\x73\x68\x20\x4D\x61\x6C\x65","\x41\x75\x73\x74\x72\x61\x6C\x69\x61\x6E\x20\x45\x6E\x67\x6C\x69\x73\x68","\x55\x53\x20\x53\x70\x61\x6E\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x55\x53\x20\x53\x70\x61\x6E\x69\x73\x68\x20\x4D\x61\x6C\x65","\x43\x68\x69\x6E\x65\x73\x65\x20\x46\x65\x6D\x61\x6C\x65","\x43\x68\x69\x6E\x65\x73\x65\x20\x4D\x61\x6C\x65","\x48\x6F\x6E\x67\x20\x4B\x6F\x6E\x67\x20\x43\x61\x6E\x74\x6F\x6E\x65\x73\x65\x20\x46\x65\x6D\x61\x6C\x65","\x54\x61\x69\x77\x61\x6E\x20\x43\x68\x69\x6E\x65\x73\x65\x20\x46\x65\x6D\x61\x6C\x65","\x4A\x61\x70\x61\x6E\x65\x73\x65\x20\x46\x65\x6D\x61\x6C\x65","\x4A\x61\x70\x61\x6E\x65\x73\x65\x20\x4D\x61\x6C\x65","\x4B\x6F\x72\x65\x61\x6E\x20\x46\x65\x6D\x61\x6C\x65","\x4B\x6F\x72\x65\x61\x6E\x20\x4D\x61\x6C\x65","\x43\x61\x6E\x61\x64\x69\x61\x6E\x20\x45\x6E\x67\x6C\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x48\x75\x6E\x67\x61\x72\x69\x61\x6E\x20\x46\x65\x6D\x61\x6C\x65","\x42\x72\x61\x7A\x69\x6C\x69\x61\x6E\x20\x50\x6F\x72\x74\x75\x67\x75\x65\x73\x65\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x50\x6F\x72\x74\x75\x67\x75\x65\x73\x65\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x50\x6F\x72\x74\x75\x67\x75\x65\x73\x65\x20\x4D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x53\x70\x61\x6E\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x53\x70\x61\x6E\x69\x73\x68\x20\x4D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x43\x61\x74\x61\x6C\x61\x6E\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x43\x7A\x65\x63\x68\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x44\x61\x6E\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x46\x69\x6E\x6E\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x46\x72\x65\x6E\x63\x68\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x46\x72\x65\x6E\x63\x68\x20\x4D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x4E\x6F\x72\x77\x65\x67\x69\x61\x6E\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x44\x75\x74\x63\x68\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x50\x6F\x6C\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x49\x74\x61\x6C\x69\x61\x6E\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x49\x74\x61\x6C\x69\x61\x6E\x20\x4D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x54\x75\x72\x6B\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65\x09","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x54\x75\x72\x6B\x69\x73\x68\x20\x4D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x47\x65\x72\x6D\x61\x6E\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x47\x65\x72\x6D\x61\x6E\x20\x4D\x61\x6C\x65","\x52\x75\x73\x73\x69\x61\x6E\x20\x46\x65\x6D\x61\x6C\x65","\x52\x75\x73\x73\x69\x61\x6E\x20\x4D\x61\x6C\x65","\x53\x77\x65\x64\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x43\x61\x6E\x61\x64\x69\x61\x6E\x20\x46\x72\x65\x6E\x63\x68\x20\x46\x65\x6D\x61\x6C\x65","\x43\x61\x6E\x61\x64\x69\x61\x6E\x20\x46\x72\x65\x6E\x63\x68\x20\x4D\x61\x6C\x65","\x59\x65\x73","\x4E\x6F","\x45\x55\x20\x28\x49\x72\x65\x6C\x61\x6E\x64\x29\x20\x28\x65\x75\x2D\x77\x65\x73\x74\x2D\x31\x29","\x55\x53\x20\x45\x61\x73\x74\x20\x28\x4E\x2E\x20\x56\x69\x72\x67\x69\x6E\x69\x61\x29\x20\x28\x75\x73\x2D\x65\x61\x73\x74\x2D\x31\x29","\x55\x53\x20\x45\x61\x73\x74\x20\x28\x4F\x68\x69\x6F\x29\x20\x28\x75\x73\x2D\x65\x61\x73\x74\x2D\x32\x29","\x55\x53\x20\x57\x65\x73\x74\x20\x28\x4F\x72\x65\x67\x6F\x6E\x29\x20\x28\x75\x73\x2D\x77\x65\x73\x74\x2D\x32\x29","\x41\x6D\x79\x20\x28\x45\x6E\x67\x6C\x69\x73\x68\x2C\x20\x42\x72\x69\x74\x69\x73\x68\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x41\x73\x74\x72\x69\x64\x20\x28\x53\x77\x65\x64\x69\x73\x68\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x42\x72\x69\x61\x6E\x20\x28\x45\x6E\x67\x6C\x69\x73\x68\x2C\x20\x42\x72\x69\x74\x69\x73\x68\x2C\x20\x4D\x61\x6C\x65\x29","\x43\x61\x72\x6C\x61\x20\x28\x49\x74\x61\x6C\x69\x61\x6E\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x43\x61\x72\x6D\x65\x6E\x20\x28\x52\x6F\x6D\x61\x6E\x69\x61\x6E\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x43\x65\x6C\x69\x6E\x65\x20\x28\x46\x72\x65\x6E\x63\x68\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x43\x68\x61\x6E\x74\x61\x6C\x20\x28\x46\x72\x65\x6E\x63\x68\x2C\x20\x43\x61\x6E\x61\x64\x69\x61\x6E\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x43\x6F\x6E\x63\x68\x69\x74\x61\x20\x28\x53\x70\x61\x6E\x69\x73\x68\x2C\x20\x43\x61\x73\x74\x69\x6C\x69\x61\x6E\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x43\x72\x69\x73\x74\x69\x61\x6E\x6F\x20\x28\x50\x6F\x72\x74\x75\x67\x75\x65\x73\x65\x2C\x20\x4D\x61\x6C\x65\x29","\x44\x6F\x72\x61\x20\x28\x49\x63\x65\x6C\x61\x6E\x64\x69\x63\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x45\x6D\x6D\x61\x20\x28\x45\x6E\x67\x6C\x69\x73\x68\x2C\x20\x42\x72\x69\x74\x69\x73\x68\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x45\x6E\x72\x69\x71\x75\x65\x20\x28\x53\x70\x61\x6E\x69\x73\x68\x2C\x20\x43\x61\x73\x74\x69\x6C\x69\x61\x6E\x2C\x20\x4D\x61\x6C\x65\x29","\x45\x77\x61\x20\x28\x50\x6F\x6C\x69\x73\x68\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x46\x69\x6C\x69\x7A\x20\x28\x54\x75\x72\x6B\x69\x73\x68\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x47\x65\x72\x61\x69\x6E\x74\x20\x28\x45\x6E\x67\x6C\x69\x73\x68\x2C\x20\x57\x65\x6C\x73\x68\x2C\x20\x4D\x61\x6C\x65\x29","\x47\x69\x6F\x72\x67\x69\x6F\x20\x28\x49\x74\x61\x6C\x69\x61\x6E\x2C\x20\x4D\x61\x6C\x65\x29","\x47\x77\x69\x6E\x65\x74\x68\x20\x28\x57\x65\x6C\x73\x68\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x48\x61\x6E\x73\x20\x28\x47\x65\x72\x6D\x61\x6E\x2C\x20\x4D\x61\x6C\x65\x29","\x49\x6E\x65\x73\x20\x28\x50\x6F\x72\x74\x75\x67\x75\x65\x73\x65\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x49\x76\x79\x20\x28\x45\x6E\x67\x6C\x69\x73\x68\x2C\x20\x55\x53\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x4A\x61\x63\x65\x6B\x20\x28\x50\x6F\x6C\x69\x73\x68\x2C\x20\x4D\x61\x6C\x65\x29","\x4A\x61\x6E\x20\x28\x50\x6F\x6C\x69\x73\x68\x2C\x20\x4D\x61\x6C\x65\x29","\x4A\x6F\x61\x6E\x6E\x61\x20\x28\x45\x6E\x67\x6C\x69\x73\x68\x2C\x20\x55\x53\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x4A\x6F\x65\x79\x20\x28\x45\x6E\x67\x6C\x69\x73\x68\x2C\x20\x55\x53\x2C\x20\x4D\x61\x6C\x65\x29","\x4A\x75\x73\x74\x69\x6E\x20\x28\x45\x6E\x67\x6C\x69\x73\x68\x2C\x20\x55\x53\x2C\x20\x4D\x61\x6C\x65\x29","\x4B\x61\x72\x6C\x20\x28\x49\x63\x65\x6C\x61\x6E\x64\x69\x63\x2C\x20\x4D\x61\x6C\x65\x29","\x4B\x65\x6E\x64\x72\x61\x20\x28\x45\x6E\x67\x6C\x69\x73\x68\x2C\x20\x55\x53\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x4B\x69\x6D\x62\x65\x72\x6C\x79\x20\x28\x45\x6E\x67\x6C\x69\x73\x68\x2C\x20\x55\x53\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x4C\x69\x76\x20\x28\x4E\x6F\x72\x77\x65\x67\x69\x61\x6E\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x4C\x6F\x74\x74\x65\x20\x28\x44\x75\x74\x63\x68\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x4D\x61\x64\x73\x20\x28\x44\x61\x6E\x69\x73\x68\x2C\x20\x4D\x61\x6C\x65\x29","\x4D\x61\x6A\x61\x20\x28\x50\x6F\x6C\x69\x73\x68\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x4D\x61\x72\x6C\x65\x6E\x65\x20\x28\x47\x65\x72\x6D\x61\x6E\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x4D\x61\x74\x68\x69\x65\x75\x20\x28\x46\x72\x65\x6E\x63\x68\x2C\x20\x4D\x61\x6C\x65\x29","\x4D\x61\x78\x69\x6D\x20\x28\x52\x75\x73\x73\x69\x61\x6E\x2C\x20\x4D\x61\x6C\x65\x29","\x4D\x69\x67\x75\x65\x6C\x20\x28\x53\x70\x61\x6E\x69\x73\x68\x2C\x20\x55\x53\x2C\x20\x4D\x61\x6C\x65\x29","\x4D\x69\x7A\x75\x6B\x69\x20\x28\x4A\x61\x70\x61\x6E\x65\x73\x65\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x4E\x61\x6A\x61\x20\x28\x44\x61\x6E\x69\x73\x68\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x4E\x69\x63\x6F\x6C\x65\x20\x28\x45\x6E\x67\x6C\x69\x73\x68\x2C\x20\x41\x75\x73\x74\x72\x69\x61\x6C\x69\x61\x6E\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x50\x65\x6E\x65\x6C\x6F\x70\x65\x20\x28\x53\x70\x61\x6E\x69\x73\x68\x2C\x20\x55\x53\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x52\x61\x76\x65\x65\x6E\x61\x20\x28\x45\x6E\x67\x6C\x69\x73\x68\x2C\x20\x49\x6E\x64\x69\x61\x6E\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x52\x69\x63\x61\x72\x64\x6F\x20\x28\x50\x6F\x72\x74\x75\x67\x75\x65\x73\x65\x2C\x20\x42\x72\x61\x7A\x69\x6C\x69\x61\x6E\x2C\x20\x4D\x61\x6C\x65\x29","\x52\x75\x62\x65\x6E\x20\x28\x44\x75\x74\x63\x68\x2C\x20\x4D\x61\x6C\x65\x29","\x52\x75\x73\x73\x65\x6C\x6C\x20\x28\x45\x6E\x67\x6C\x69\x73\x68\x2C\x20\x41\x75\x73\x74\x72\x69\x61\x6C\x69\x61\x6E\x2C\x20\x4D\x61\x6C\x65\x29","\x53\x61\x6C\x6C\x69\x20\x28\x45\x6E\x67\x6C\x69\x73\x68\x2C\x20\x55\x53\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x54\x61\x74\x79\x61\x6E\x61\x20\x28\x52\x75\x73\x73\x69\x61\x6E\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x56\x69\x74\x6F\x72\x69\x61\x20\x28\x50\x6F\x72\x74\x75\x67\x75\x65\x73\x65\x2C\x20\x42\x72\x61\x7A\x69\x6C\x69\x61\x6E\x2C\x20\x46\x65\x6D\x61\x6C\x65\x29","\x45\x6E\x67\x6C\x69\x73\x68\x20\x28\x55\x53\x29","\x45\x6E\x67\x6C\x69\x73\x68\x20\x28\x43\x61\x6E\x61\x64\x61\x29","\x45\x6E\x67\x6C\x69\x73\x68\x20\x28\x55\x4B\x29","\x45\x6E\x67\x6C\x69\x73\x68\x20\x28\x41\x75\x73\x74\x72\x61\x6C\x69\x61\x29","\x53\x70\x61\x6E\x69\x73\x68\x20\x28\x53\x70\x61\x69\x6E\x29","\x53\x70\x61\x6E\x69\x73\x68\x20\x28\x4D\x65\x78\x69\x63\x6F\x29","\x49\x74\x61\x6C\x69\x61\x6E\x20\x28\x49\x74\x61\x6C\x79\x29\x20\x2F\x20\x46\x69\x6E\x6E\x69\x73\x68\x20\x28\x46\x69\x6E\x6C\x61\x6E\x64\x29","\x46\x72\x65\x6E\x63\x68\x20\x28\x46\x72\x61\x6E\x63\x65\x29","\x46\x72\x65\x6E\x63\x68\x20\x28\x43\x61\x6E\x61\x64\x61\x29","\x50\x6F\x6C\x69\x73\x68\x20\x28\x50\x6F\x6C\x61\x6E\x64\x29","\x50\x6F\x72\x74\x75\x67\x75\x65\x73\x65\x20\x28\x50\x6F\x72\x74\x75\x67\x61\x6C\x29","\x43\x61\x74\x61\x6C\x61\x6E\x20\x28\x43\x61\x74\x61\x6C\x61\x6E\x29","\x43\x68\x69\x6E\x65\x73\x65\x20\x28\x54\x61\x69\x77\x61\x6E\x29","\x44\x61\x6E\x69\x73\x68\x20\x28\x44\x65\x6E\x6D\x61\x72\x6B\x29","\x47\x65\x72\x6D\x61\x6E\x20\x28\x47\x65\x72\x6D\x61\x6E\x79\x29","\x4A\x61\x70\x61\x6E\x65\x73\x65\x20\x28\x4A\x61\x70\x61\x6E\x29","\x4B\x6F\x72\x65\x61\x6E\x20\x28\x4B\x6F\x72\x65\x61\x29","\x44\x75\x74\x63\x68\x20\x28\x4E\x65\x74\x68\x65\x72\x6C\x61\x6E\x64\x73\x29","\x4E\x6F\x72\x77\x65\x67\x69\x61\x6E\x20\x28\x4E\x6F\x72\x77\x61\x79\x29","\x50\x6F\x72\x74\x75\x67\x75\x65\x73\x65\x20\x28\x42\x72\x61\x7A\x69\x6C\x29","\x52\x75\x73\x73\x69\x61\x6E\x20\x28\x52\x75\x73\x73\x69\x61\x29","\x53\x77\x65\x64\x69\x73\x68\x20\x28\x53\x77\x65\x64\x65\x6E\x29","\x43\x68\x69\x6E\x65\x73\x65\x20\x28\x43\x68\x69\x6E\x61\x29","\x43\x68\x69\x6E\x65\x73\x65\x20\x28\x48\x6F\x6E\x67\x20\x4B\x6F\x6E\x67\x29","\x44\x65\x66\x61\x75\x6C\x74","\x44\x61\x74\x65","\x55\x53\x20\x4D\x6F\x6E\x65\x79","\x4E\x75\x6D\x62\x65\x72\x73\x20\x74\x6F\x20\x39","\x4E\x75\x6D\x62\x65\x72\x73\x20\x74\x6F\x20\x39\x39","\x4E\x75\x6D\x62\x65\x72\x73\x20\x74\x6F\x20\x39\x39\x39","\x54\x69\x6D\x65","\x50\x68\x6F\x6E\x65\x20\x6E\x75\x6D\x62\x65\x72","\x53\x74\x72\x65\x65\x74\x73","\x55\x53\x20\x43\x69\x74\x79\x2F\x53\x74\x61\x74\x65\x73","\x77\x61\x76","\x67\x73\x6D","\x46\x69\x72\x73\x74","\x4C\x61\x73\x74","\x23","\x2A","\x41\x66\x72\x69\x6B\x61\x61\x6E\x73","\x41\x6C\x62\x61\x6E\x69\x61\x6E","\x41\x6D\x68\x61\x72\x69\x63","\x41\x72\x61\x62\x69\x63","\x41\x72\x6D\x65\x6E\x69\x61\x6E","\x41\x7A\x65\x72\x62\x61\x69\x6A\x61\x6E\x69","\x42\x61\x73\x71\x75\x65","\x42\x65\x6C\x61\x72\x75\x73\x69\x61\x6E","\x42\x65\x6E\x67\x61\x6C\x69","\x42\x69\x68\x61\x72\x69","\x42\x6F\x73\x6E\x69\x61\x6E","\x42\x72\x65\x74\x6F\x6E","\x42\x75\x6C\x67\x61\x72\x69\x61\x6E","\x43\x61\x6D\x62\x6F\x64\x69\x61\x6E","\x43\x61\x74\x61\x6C\x61\x6E","\x43\x68\x69\x6E\x65\x73\x65\x20\x28\x53\x69\x6D\x70\x6C\x69\x66\x69\x65\x64\x29","\x43\x68\x69\x6E\x65\x73\x65\x20\x28\x54\x72\x61\x64\x69\x74\x69\x6F\x6E\x61\x6C\x29","\x43\x6F\x72\x73\x69\x63\x61\x6E","\x43\x72\x6F\x61\x74\x69\x61\x6E","\x43\x7A\x65\x63\x68","\x44\x61\x6E\x69\x73\x68","\x44\x75\x74\x63\x68","\x45\x6E\x67\x6C\x69\x73\x68","\x45\x73\x70\x65\x72\x61\x6E\x74\x6F","\x45\x73\x74\x6F\x6E\x69\x61\x6E","\x46\x61\x72\x6F\x65\x73\x65","\x46\x69\x6C\x69\x70\x69\x6E\x6F","\x46\x69\x6E\x6E\x69\x73\x68","\x46\x72\x65\x6E\x63\x68","\x46\x72\x69\x73\x69\x61\x6E","\x47\x61\x6C\x69\x63\x69\x61\x6E","\x47\x65\x6F\x72\x67\x69\x61\x6E","\x47\x65\x72\x6D\x61\x6E","\x47\x72\x65\x65\x6B","\x47\x75\x61\x72\x61\x6E\x69","\x47\x75\x6A\x61\x72\x61\x74\x69","\x48\x61\x63\x6B\x65\x72","\x48\x61\x75\x73\x61","\x48\x69\x6E\x64\x69","\x48\x75\x6E\x67\x61\x72\x69\x61\x6E","\x49\x63\x65\x6C\x61\x6E\x64\x69\x63","\x49\x6E\x64\x6F\x6E\x65\x73\x69\x61\x6E","\x49\x6E\x74\x65\x72\x6C\x69\x6E\x67\x75\x61","\x49\x72\x69\x73\x68","\x49\x74\x61\x6C\x69\x61\x6E","\x4A\x61\x76\x61\x6E\x65\x73\x65","\x4A\x61\x70\x61\x6E\x65\x73\x65","\x4B\x61\x6E\x6E\x61\x64\x61","\x4B\x61\x7A\x61\x6B\x68","\x4B\x69\x6E\x79\x61\x72\x77\x61\x6E\x64\x61","\x4B\x69\x72\x75\x6E\x64\x69","\x4B\x6C\x69\x6E\x67\x6F\x6E","\x4B\x75\x72\x64\x69\x73\x68","\x4B\x6F\x72\x65\x61\x6E","\x4B\x79\x72\x67\x79\x7A","\x4C\x61\x6F\x74\x68\x69\x61\x6E","\x4C\x61\x74\x69\x6E","\x4C\x61\x74\x76\x69\x61\x6E","\x4C\x69\x6E\x67\x61\x6C\x61","\x4C\x69\x74\x68\x75\x61\x6E\x69\x61\x6E","\x4D\x61\x63\x65\x64\x6F\x6E\x69\x61\x6E","\x4D\x61\x6C\x61\x67\x61\x73\x79","\x4D\x61\x6C\x61\x79\x61\x6C\x61\x6D","\x4D\x61\x6C\x74\x65\x73\x65","\x4D\x61\x6F\x72\x69","\x4D\x61\x72\x61\x74\x68\x69","\x4D\x6F\x6C\x64\x61\x76\x69\x61\x6E","\x4D\x6F\x6E\x67\x6F\x6C\x69\x61\x6E","\x4D\x6F\x6E\x74\x65\x6E\x65\x67\x72\x69\x6E","\x4E\x65\x70\x61\x6C\x69","\x4E\x6F\x72\x77\x65\x67\x69\x61\x6E","\x4E\x6F\x72\x77\x65\x67\x69\x61\x6E\x20\x28\x4E\x79\x6E\x6F\x72\x73\x6B\x29","\x4F\x63\x63\x69\x74\x61\x6E","\x4F\x72\x69\x79\x61","\x4F\x72\x6F\x6D\x6F","\x50\x61\x73\x68\x74\x6F","\x50\x65\x72\x73\x69\x61\x6E","\x50\x69\x72\x61\x74\x65","\x50\x6F\x6C\x69\x73\x68","\x50\x75\x6E\x6A\x61\x62\x69","\x51\x75\x65\x63\x68\x75\x61","\x52\x6F\x6D\x61\x6E\x69\x61\x6E","\x52\x6F\x6D\x61\x6E\x73\x68","\x52\x75\x73\x73\x69\x61\x6E","\x53\x63\x6F\x74\x73\x20\x47\x61\x65\x6C\x69\x63","\x53\x65\x72\x62\x69\x61\x6E","\x53\x65\x72\x62\x6F\x2D\x43\x72\x6F\x61\x74\x69\x61\x6E","\x53\x65\x73\x6F\x74\x68\x6F","\x53\x68\x6F\x6E\x61","\x53\x69\x6E\x64\x68\x69","\x53\x69\x6E\x68\x61\x6C\x65\x73\x65","\x53\x6C\x6F\x76\x61\x6B","\x53\x6C\x6F\x76\x65\x6E\x69\x61\x6E","\x53\x6F\x6D\x61\x6C\x69","\x53\x70\x61\x6E\x69\x73\x68","\x53\x75\x6E\x64\x61\x6E\x65\x73\x65","\x53\x77\x61\x68\x69\x6C\x69","\x53\x77\x65\x64\x69\x73\x68","\x54\x61\x6A\x69\x6B","\x54\x61\x6D\x69\x6C","\x54\x61\x74\x61\x72","\x54\x65\x6C\x75\x67\x75","\x54\x68\x61\x69","\x54\x69\x67\x72\x69\x6E\x79\x61","\x54\x6F\x6E\x67\x61","\x54\x75\x72\x6B\x69\x73\x68","\x54\x75\x72\x6B\x6D\x65\x6E","\x54\x77\x69","\x55\x69\x67\x68\x75\x72","\x55\x6B\x72\x61\x69\x6E\x69\x61\x6E","\x55\x72\x64\x75","\x55\x7A\x62\x65\x6B","\x56\x69\x65\x74\x6E\x61\x6D\x65\x73\x65","\x57\x65\x6C\x73\x68","\x58\x68\x6F\x73\x61","\x59\x69\x64\x64\x69\x73\x68","\x59\x6F\x72\x75\x62\x61","\x5A\x75\x6C\x75"];var urlParams=(function(_0x6f2cx2){var _0x6f2cx3= new Object();var _0x6f2cx4=_0x6f2cx2[_0x770b[3]](_0x770b[2]);if(_0x6f2cx4> 0){var _0x6f2cx5=_0x6f2cx2[_0x770b[6]](_0x6f2cx4+ 1)[_0x770b[5]](_0x770b[4]);for(var _0x6f2cx6=0;_0x6f2cx6< _0x6f2cx5[_0x770b[7]];_0x6f2cx6++){_0x6f2cx4= _0x6f2cx5[_0x6f2cx6][_0x770b[9]](_0x770b[8]);if(_0x6f2cx4> 0){_0x6f2cx3[_0x6f2cx5[_0x6f2cx6][_0x770b[6]](0,_0x6f2cx4)]= _0x6f2cx5[_0x6f2cx6][_0x770b[6]](_0x6f2cx4+ 1)}}};return _0x6f2cx3})(window[_0x770b[1]][_0x770b[0]]);var t0= new Date();var MAX_REQUEST_SIZE=10485760;var MAX_WIDTH=12000;var MAX_HEIGHT=12000;var EXPORT_URL=_0x770b[10];var SHARE_HOST=_0x770b[11];var SAVE_URL=_0x770b[12];var VARIABLE_URL=_0x770b[13];var STENCIL_PATH=_0x770b[14];var SHAPES_PATH=_0x770b[15];var IMAGE_PATH=_0x770b[16];var STYLE_PATH=_0x770b[17];var CSS_PATH=_0x770b[17];var OPEN_FORM=_0x770b[18];var TEMPLATE_PATH=_0x770b[19];var RESOURCES_PATH=_0x770b[20];var RESOURCE_BASE=RESOURCES_PATH+ _0x770b[21];var tapAndHoldStartsConnection=true;var showConnectorImg=true;var mxLoadResources=false;var mxLanguage=_0x770b[22];switch(localStorage[_0x770b[26]](_0x770b[25])){case _0x770b[23]:mxLanguage= _0x770b[22];break;case _0x770b[24]:mxLanguage= _0x770b[24];break;default:mxLanguage= _0x770b[22]};var mxLanguages=[_0x770b[27],_0x770b[28],_0x770b[29],_0x770b[30],_0x770b[31],_0x770b[32],_0x770b[33],_0x770b[34],_0x770b[35],_0x770b[36],_0x770b[37],_0x770b[24],_0x770b[38],_0x770b[39],_0x770b[40],_0x770b[41],_0x770b[42],_0x770b[43],_0x770b[44],_0x770b[45],_0x770b[46],_0x770b[47],_0x770b[48],_0x770b[49],_0x770b[50],_0x770b[51],_0x770b[52]];var mxBasePath=_0x770b[53];var geBasePath=_0x770b[54];var ISPEECHLANG={usenglishfemale:_0x770b[55],usenglishmale:_0x770b[56],ukenglishfemale:_0x770b[57],ukenglishmale:_0x770b[58],auenglishfemale:_0x770b[59],usspanishfemale:_0x770b[60],usspanishmale:_0x770b[61],chchinesefemale:_0x770b[62],chchinesemale:_0x770b[63],hkchinesefemale:_0x770b[64],twchinesefemale:_0x770b[65],jpjapanesefemale:_0x770b[66],jpjapanesemale:_0x770b[67],krkoreanfemale:_0x770b[68],krkoreanmale:_0x770b[69],caenglishfemale:_0x770b[70],huhungarianfemale:_0x770b[71],brportuguesefemale:_0x770b[72],eurportuguesefemale:_0x770b[73],eurportuguesemale:_0x770b[74],eurspanishfemale:_0x770b[75],eurspanishmale:_0x770b[76],eurcatalanfemale:_0x770b[77],eurczechfemale:_0x770b[78],eurdanishfemale:_0x770b[79],eurfinnishfemale:_0x770b[80],eurfrenchfemale:_0x770b[81],eurfrenchmale:_0x770b[82],eurnorwegianfemale:_0x770b[83],eurdutchfemale:_0x770b[84],eurpolishfemale:_0x770b[85],euritalianfemale:_0x770b[86],euritalianmale:_0x770b[87],eurturkishfemale:_0x770b[88],eurturkishmale:_0x770b[89],eurgermanfemale:_0x770b[90],eurgermanmale:_0x770b[91],rurussianfemale:_0x770b[92],rurussianmale:_0x770b[93],swswedishfemale:_0x770b[94],cafrenchfemale:_0x770b[95],cafrenchmale:_0x770b[96]};var BOOLSELECT={"\x79\x65\x73":_0x770b[97],"\x6E\x6F":_0x770b[98]};var AWS_POLLY_REGION={"\x65\x75\x2D\x77\x65\x73\x74\x2D\x31":_0x770b[99],"\x75\x73\x2D\x65\x61\x73\x74\x2D\x31":_0x770b[100],"\x75\x73\x2D\x65\x61\x73\x74\x2D\x32":_0x770b[101],"\x75\x73\x2D\x77\x65\x73\x74\x2D\x32":_0x770b[102]};var AWS_POLLY_VOICE={Amy:_0x770b[103],Astrid:_0x770b[104],Brian:_0x770b[105],Carla:_0x770b[106],Carmen:_0x770b[107],Celine:_0x770b[108],Chantal:_0x770b[109],Conchita:_0x770b[110],Cristiano:_0x770b[111],Dora:_0x770b[112],Emma:_0x770b[113],Enrique:_0x770b[114],Ewa:_0x770b[115],Filiz:_0x770b[116],Geraint:_0x770b[117],Giorgio:_0x770b[118],Gwineth:_0x770b[119],Hans:_0x770b[120],Ines:_0x770b[121],Ivy:_0x770b[122],Jacek:_0x770b[123],Jan:_0x770b[124],Joanna:_0x770b[125],Joey:_0x770b[126],Justin:_0x770b[127],Karl:_0x770b[128],Kendra:_0x770b[129],Kimberly:_0x770b[130],Liv:_0x770b[131],Lotte:_0x770b[132],Mads:_0x770b[133],Maja:_0x770b[134],Marlene:_0x770b[135],Mathieu:_0x770b[136],Maxim:_0x770b[137],Miguel:_0x770b[138],Mizuki:_0x770b[139],Naja:_0x770b[140],Nicole:_0x770b[141],Penelope:_0x770b[142],Raveena:_0x770b[143],Ricardo:_0x770b[144],Ruben:_0x770b[145],Russell:_0x770b[146],Salli:_0x770b[147],Tatyana:_0x770b[148],Vitoria:_0x770b[149]};var ISPEECHASRLANG={"\x65\x6E\x2D\x55\x53":_0x770b[150],"\x65\x6E\x2D\x43\x41":_0x770b[151],"\x65\x6E\x2D\x47\x42":_0x770b[152],"\x65\x6E\x2D\x41\x55":_0x770b[153],"\x65\x73\x2D\x45\x53":_0x770b[154],"\x65\x73\x2D\x4D\x58":_0x770b[155],"\x69\x74\x2D\x49\x54":_0x770b[156],"\x66\x72\x2D\x46\x52":_0x770b[157],"\x66\x72\x2D\x43\x41":_0x770b[158],"\x70\x6C\x2D\x50\x4C":_0x770b[159],"\x70\x74\x2D\x50\x54":_0x770b[160],"\x63\x61\x2D\x45\x53":_0x770b[161],"\x7A\x68\x2D\x54\x57":_0x770b[162],"\x64\x61\x2D\x44\x4B":_0x770b[163],"\x66\x72\x2D\x46\x52":_0x770b[164],"\x6A\x61\x2D\x4A\x50":_0x770b[165],"\x6B\x6F\x2D\x4B\x52":_0x770b[166],"\x6E\x6C\x2D\x4E\x4C":_0x770b[167],"\x6E\x62\x2D\x4E\x4F":_0x770b[168],"\x70\x74\x2D\x42\x52":_0x770b[169],"\x72\x75\x2D\x52\x55":_0x770b[170],"\x73\x76\x2D\x53\x45":_0x770b[171],"\x7A\x68\x2D\x43\x4E":_0x770b[172],"\x7A\x68\x2D\x48\x4B":_0x770b[173]};var ISPEECHASRMODEL={0:_0x770b[174],date:_0x770b[175],usmoney:_0x770b[176],numbersto9:_0x770b[177],numbersto99:_0x770b[178],numbersto999:_0x770b[179],time:_0x770b[180],phonenumber:_0x770b[181],streets:_0x770b[182],citystate:_0x770b[183]};var ISPEECHBEEP={"\x42\x45\x45\x50":_0x770b[97],"\x4E\x4F\x42\x45\x45\x50":_0x770b[98]};var RECORDINGFORMAT={"\x77\x61\x76":_0x770b[184],"\x67\x73\x6D":_0x770b[185]};var SECRETDIGITSPOS={"\x66\x69\x72\x73\x74":_0x770b[186],"\x6C\x61\x73\x74":_0x770b[187]};var ASRINTKEYS={"\x23":_0x770b[188],"\x2A":_0x770b[189]};var GOOGLETTSLANG={"\x61\x66":_0x770b[190],"\x73\x71":_0x770b[191],"\x61\x6D":_0x770b[192],"\x61\x72":_0x770b[193],"\x68\x79":_0x770b[194],"\x61\x7A":_0x770b[195],"\x65\x75":_0x770b[196],"\x62\x65":_0x770b[197],"\x62\x6E":_0x770b[198],"\x62\x68":_0x770b[199],"\x62\x73":_0x770b[200],"\x62\x72":_0x770b[201],"\x62\x67":_0x770b[202],"\x6B\x6D":_0x770b[203],"\x63\x61":_0x770b[204],"\x7A\x68\x2D\x43\x4E":_0x770b[205],"\x7A\x68\x2D\x54\x57":_0x770b[206],"\x63\x6F":_0x770b[207],"\x68\x72":_0x770b[208],"\x63\x73":_0x770b[209],"\x64\x61":_0x770b[210],"\x6E\x6C":_0x770b[211],"\x65\x6E":_0x770b[212],"\x65\x6F":_0x770b[213],"\x65\x74":_0x770b[214],"\x66\x6F":_0x770b[215],"\x74\x6C":_0x770b[216],"\x66\x69":_0x770b[217],"\x66\x72":_0x770b[218],"\x66\x79":_0x770b[219],"\x67\x6C":_0x770b[220],"\x6B\x61":_0x770b[221],"\x64\x65":_0x770b[222],"\x65\x6C":_0x770b[223],"\x67\x6E":_0x770b[224],"\x67\x75":_0x770b[225],"\x78\x78\x2D\x68\x61\x63\x6B\x65\x72":_0x770b[226],"\x68\x61":_0x770b[227],"\x68\x69":_0x770b[228],"\x68\x75":_0x770b[229],"\x69\x73":_0x770b[230],"\x69\x64":_0x770b[231],"\x69\x61":_0x770b[232],"\x67\x61":_0x770b[233],"\x69\x74":_0x770b[234],"\x6A\x77":_0x770b[235],"\x6A\x61":_0x770b[236],"\x6B\x6E":_0x770b[237],"\x6B\x6B":_0x770b[238],"\x72\x77":_0x770b[239],"\x72\x6E":_0x770b[240],"\x78\x78\x2D\x6B\x6C\x69\x6E\x67\x6F\x6E":_0x770b[241],"\x6B\x75":_0x770b[242],"\x6B\x6F":_0x770b[243],"\x6B\x79":_0x770b[244],"\x6C\x6F":_0x770b[245],"\x6C\x61":_0x770b[246],"\x6C\x76":_0x770b[247],"\x6C\x6E":_0x770b[248],"\x6C\x74":_0x770b[249],"\x6D\x6B":_0x770b[250],"\x6D\x67":_0x770b[251],"\x6D\x6C":_0x770b[252],"\x6D\x74":_0x770b[253],"\x6D\x69":_0x770b[254],"\x6D\x72":_0x770b[255],"\x6D\x6F":_0x770b[256],"\x6D\x6E":_0x770b[257],"\x73\x72\x2D\x4D\x45":_0x770b[258],"\x6E\x65":_0x770b[259],"\x6E\x6F":_0x770b[260],"\x6E\x6E":_0x770b[261],"\x6F\x63":_0x770b[262],"\x6F\x72":_0x770b[263],"\x6F\x6D":_0x770b[264],"\x70\x73":_0x770b[265],"\x66\x61":_0x770b[266],"\x78\x78\x2D\x70\x69\x72\x61\x74\x65":_0x770b[267],"\x70\x6C":_0x770b[268],"\x70\x74\x2D\x42\x52":_0x770b[169],"\x70\x74\x2D\x50\x54":_0x770b[160],"\x70\x61":_0x770b[269],"\x71\x75":_0x770b[270],"\x72\x6F":_0x770b[271],"\x72\x6D":_0x770b[272],"\x72\x75":_0x770b[273],"\x67\x64":_0x770b[274],"\x73\x72":_0x770b[275],"\x73\x68":_0x770b[276],"\x73\x74":_0x770b[277],"\x73\x6E":_0x770b[278],"\x73\x64":_0x770b[279],"\x73\x69":_0x770b[280],"\x73\x6B":_0x770b[281],"\x73\x6C":_0x770b[282],"\x73\x6F":_0x770b[283],"\x65\x73":_0x770b[284],"\x73\x75":_0x770b[285],"\x73\x77":_0x770b[286],"\x73\x76":_0x770b[287],"\x74\x67":_0x770b[288],"\x74\x61":_0x770b[289],"\x74\x74":_0x770b[290],"\x74\x65":_0x770b[291],"\x74\x68":_0x770b[292],"\x74\x69":_0x770b[293],"\x74\x6F":_0x770b[294],"\x74\x72":_0x770b[295],"\x74\x6B":_0x770b[296],"\x74\x77":_0x770b[297],"\x75\x67":_0x770b[298],"\x75\x6B":_0x770b[299],"\x75\x72":_0x770b[300],"\x75\x7A":_0x770b[301],"\x76\x69":_0x770b[302],"\x63\x79":_0x770b[303],"\x78\x68":_0x770b[304],"\x79\x69":_0x770b[305],"\x79\x6F":_0x770b[306],"\x7A\x75":_0x770b[307]} \ No newline at end of file +undefined \ No newline at end of file diff --git a/public/index.html b/public/index.html index 13fa9d6..79c84f5 100644 --- a/public/index.html +++ b/public/index.html @@ -50,7 +50,7 @@ <![endif]--> <script src="app/9a5f3b8a.vendor.js"></script> - <script src="app/b7d73a56.app.js"></script> + <script src="app/60ca30a4.app.js"></script> <!-- BEGIN JAVASCRIPTS(Load javascripts at bottom, this will reduce page load time) --> <!-- BEGIN CORE PLUGINS --> diff --git a/server/api/_apidoc.js b/server/api/_apidoc.js index db79a81..66dc905 100644 --- a/server/api/_apidoc.js +++ b/server/api/_apidoc.js @@ -1 +1 @@ -var _0x85ed=[] \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/action/action.controller.js b/server/api/action/action.controller.js index b9e6454..66dc905 100644 --- a/server/api/action/action.controller.js +++ b/server/api/action/action.controller.js @@ -1 +1 @@ -var _0x6137=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x41\x63\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x62\x6C\x75\x65\x62\x69\x72\x64","\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x66\x69\x6E\x64\x41\x6C\x6C","\x63\x72\x65\x61\x74\x65","\x55\x73\x65\x72\x49\x64","\x62\x6F\x64\x79","\x69\x64","\x75\x73\x65\x72","\x70\x61\x72\x61\x6D\x73","\x6D\x65\x72\x67\x65","\x63\x68\x61\x6E\x6E\x65\x6C","\x61\x6C\x6C","\x76\x6F\x69\x63\x65","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x70\x61\x75\x73\x65","\x75\x6E\x70\x61\x75\x73\x65","\x6E\x61\x6D\x65","\x72\x65\x73\x6F\x6C\x76\x65","\x64\x61\x74\x61\x32","\x51\x75\x65\x75\x65\x50\x61\x75\x73\x65","\x71\x75\x65\x75\x65\x53\x74\x61\x74\x75\x73","\x25\x73\x2F\x25\x73","\x53\x49\x50","\x66\x6F\x72\x6D\x61\x74","\x74\x79\x70\x65","\x64\x61\x74\x61\x34","\x44\x45\x46\x41\x55\x4C\x54\x20\x50\x41\x55\x53\x45","\x61\x6D\x69","\x6C\x6F\x63\x61\x6C\x73","\x61\x70\x70","\x61\x67\x65\x6E\x74","\x66\x69\x6E\x64\x42\x79\x49\x64"];_0x6137[0];var _=require(_0x6137[1]);var Action=require(_0x6137[3])[_0x6137[2]];var User=require(_0x6137[3])[_0x6137[4]];var sequelize=require(_0x6137[3])[_0x6137[5]];var BPromise=require(_0x6137[6]);var util=require(_0x6137[7]);var logger=require(_0x6137[9])(_0x6137[8]);function handleError(_0x46d7x9,_0x46d7xa){logger[_0x6137[11]](_0x46d7xa[_0x6137[10]]);return _0x46d7x9[_0x6137[13]](500)[_0x6137[12]](_0x46d7xa)}function responseWithResult(_0x46d7x9,_0x46d7xc){_0x46d7xc= _0x46d7xc|| 200;return function(_0x46d7xd){if(_0x46d7xd){_0x46d7x9[_0x6137[13]](_0x46d7xc)[_0x6137[14]](_0x46d7xd)}}}function handleEntityNotFound(_0x46d7x9){return function(_0x46d7xd){if(!_0x46d7xd){_0x46d7x9[_0x6137[13]](404)[_0x6137[15]]();return null};return _0x46d7xd}}function saveUpdates(_0x46d7x10){return function(_0x46d7xd){return _0x46d7xd[_0x6137[17]](_0x46d7x10)[_0x6137[16]](function(_0x46d7x11){return _0x46d7x11})}}function removeEntity(_0x46d7x9){return function(_0x46d7xd){if(_0x46d7xd){return _0x46d7xd[_0x6137[18]]()[_0x6137[16]](function(){_0x46d7x9[_0x6137[13]](204)[_0x6137[15]]()})}}}exports[_0x6137[19]]= function(_0x46d7x13,_0x46d7x9){return Action[_0x6137[21]]()[_0x6137[16]](responseWithResult(_0x46d7x9))[_0x6137[20]](function(_0x46d7xa){handleError(_0x46d7x9,_0x46d7xa)})};exports[_0x6137[22]]= function(_0x46d7x13,_0x46d7x9,_0x46d7x14){_0x46d7x13[_0x6137[24]][_0x6137[23]]= _0x46d7x13[_0x6137[26]][_0x6137[25]];_[_0x6137[28]](_0x46d7x13[_0x6137[24]],_0x46d7x13[_0x6137[27]]);return BPromise[_0x6137[36]]()[_0x6137[16]](function(){if(!_0x46d7x13[_0x6137[24]][_0x6137[29]]|| _[_0x6137[32]]([_0x6137[30],_0x6137[31]],_0x46d7x13[_0x6137[24]][_0x6137[29]])){switch(_0x46d7x13[_0x6137[24]][_0x6137[35]]){case _0x6137[33]:;case _0x6137[34]:return sendAction(_0x46d7x13,_0x46d7x9);default:return null}};return null})[_0x6137[16]](function(){return Action[_0x6137[22]](_0x46d7x13[_0x6137[24]],{body:_0x46d7x13[_0x6137[24]]})})[_0x6137[16]](function(_0x46d7x15){return _0x46d7x9[_0x6137[13]](201)[_0x6137[12]](_0x46d7x15)})[_0x6137[20]](function(_0x46d7xa){return handleError(_0x46d7x9,_0x46d7xa)})};function sendAction(_0x46d7x13,_0x46d7x9){return BPromise[_0x6137[36]]()[_0x6137[16]](function(){return User[_0x6137[50]](_0x46d7x13[_0x6137[24]][_0x6137[49]])})[_0x6137[16]](function(_0x46d7x17){if(!_0x46d7x17){_0x46d7x9[_0x6137[13]](404)[_0x6137[15]]();return null};_0x46d7x13[_0x6137[24]][_0x6137[37]]= _0x46d7x17[_0x6137[35]];var _0x46d7x15;switch(_0x46d7x13[_0x6137[24]][_0x6137[35]]){case _0x6137[33]:_0x46d7x15= {message:_0x6137[38],agent:_0x46d7x13[_0x6137[24]][_0x6137[37]],queueStatus:_0x46d7x17[_0x6137[39]],action:{action:_0x6137[38],interface:util[_0x6137[42]](_0x6137[40],_0x6137[41],_0x46d7x13[_0x6137[24]][_0x6137[37]]),paused:true,reason:_0x46d7x13[_0x6137[24]][_0x6137[43]]|| _0x46d7x13[_0x6137[24]][_0x6137[44]]|| _0x6137[45]}};break;case _0x6137[34]:_0x46d7x15= {message:_0x6137[38],agent:_0x46d7x13[_0x6137[24]][_0x6137[37]],queueStatus:_0x46d7x17[_0x6137[39]],action:{action:_0x6137[38],interface:util[_0x6137[42]](_0x6137[40],_0x6137[41],_0x46d7x13[_0x6137[24]][_0x6137[37]]),paused:false}};break;default:};if(_0x46d7x15){return _0x46d7x13[_0x6137[48]][_0x6137[47]][_0x6137[46]][_0x6137[12]](_0x46d7x15)};return null})} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/action/action.events.js b/server/api/action/action.events.js index a6c20ae..66dc905 100644 --- a/server/api/action/action.events.js +++ b/server/api/action/action.events.js @@ -1 +1 @@ -var _0x2791=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x41\x63\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x2791[0];const EventEmitter=require(_0x2791[1]);const Action=require(_0x2791[3])[_0x2791[2]];var ActionEvents= new EventEmitter();ActionEvents[_0x2791[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x2791[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x2791[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x2791[6]};for(var e in events){var event=events[e];Action[_0x2791[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x5cc5x8,_0x5cc5x9,_0x5cc5xa){ActionEvents[_0x2791[10]](event+ _0x2791[8]+ _0x5cc5x8[_0x2791[9]],_0x5cc5x8);ActionEvents[_0x2791[10]](event,_0x5cc5x8);_0x5cc5xa(null)}}module[_0x2791[11]]= ActionEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/action/action.socket.js b/server/api/action/action.socket.js index 3587f22..66dc905 100644 --- a/server/api/action/action.socket.js +++ b/server/api/action/action.socket.js @@ -1 +1 @@ -var _0xac49=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x61\x63\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x61\x63\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xac49[0];const ActionEvents=require(_0xac49[1]);var events=[_0xac49[2],_0xac49[3]];exports[_0xac49[4]]= function(_0x1a42x3){for(var _0x1a42x4=0,_0x1a42x5=events[_0xac49[5]];_0x1a42x4< _0x1a42x5;_0x1a42x4++){var _0x1a42x6=events[_0x1a42x4];var _0x1a42x7=createListener(_0xac49[6]+ _0x1a42x6,_0x1a42x3);ActionEvents[_0xac49[7]](_0x1a42x6,_0x1a42x7);_0x1a42x3[_0xac49[7]](_0xac49[8],removeListener(_0x1a42x6,_0x1a42x7))}};function createListener(_0x1a42x6,_0x1a42x3){return function(_0x1a42x9){_0x1a42x3[_0xac49[9]](_0x1a42x6,_0x1a42x9)}}function removeListener(_0x1a42x6,_0x1a42x7){return function(){ActionEvents[_0xac49[10]](_0x1a42x6,_0x1a42x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/action/index.js b/server/api/action/index.js index 2a2e0b6..66dc905 100644 --- a/server/api/action/index.js +++ b/server/api/action/index.js @@ -1 +1 @@ -var _0x7892=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x61\x63\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x6E\x61\x6D\x65","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x7892[0];var express=require(_0x7892[1]);var auth=require(_0x7892[2]);var controller=require(_0x7892[3]);var router=express.Router();router[_0x7892[7]](_0x7892[4],auth[_0x7892[5]](),controller[_0x7892[6]]);router[_0x7892[10]](_0x7892[8],auth[_0x7892[5]](),controller[_0x7892[9]]);module[_0x7892[11]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/agent/agent.controller.js b/server/api/agent/agent.controller.js index 8cd64f0..66dc905 100644 --- a/server/api/agent/agent.controller.js +++ b/server/api/agent/agent.controller.js @@ -1 +1 @@ -var _0x9023=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x62\x6C\x75\x65\x62\x69\x72\x64","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x74\x6F\x6F\x6C\x73\x2F\x75\x73\x65\x72","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65","\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x43\x68\x61\x74\x51\x75\x65\x75\x65","\x4D\x61\x69\x6C\x51\x75\x65\x75\x65","\x46\x61\x78\x51\x75\x65\x75\x65","\x53\x6D\x73\x51\x75\x65\x75\x65","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x53\x65\x74\x74\x69\x6E\x67","\x55\x73\x65\x72","\x54\x65\x61\x6D","\x4C\x69\x73\x74","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x41\x67\x65\x6E\x74\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x69\x64","\x75\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x61\x67\x65\x6E\x74","\x73\x63\x6F\x70\x65","\x72\x6F\x6C\x65","\x61\x64\x64\x51\x75\x65\x75\x65\x73","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x76\x61\x6C\x75\x65\x73","\x62\x6F\x64\x79","\x53\x49\x50\x2F\x25\x73","\x6E\x61\x6D\x65","\x66\x6F\x72\x6D\x61\x74","\x70\x65\x6E\x61\x6C\x74\x79","\x61\x64\x64\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73","\x76\x6F\x69\x63\x65","\x61\x64\x64\x43\x68\x61\x74\x51\x75\x65\x75\x65","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x61\x6C\x6C","\x66\x69\x6E\x64\x41\x6C\x6C","\x63\x68\x61\x74","\x61\x64\x64\x4D\x61\x69\x6C\x51\x75\x65\x75\x65","\x6D\x61\x69\x6C","\x61\x64\x64\x46\x61\x78\x51\x75\x65\x75\x65","\x66\x61\x78","\x61\x64\x64\x53\x6D\x73\x51\x75\x65\x75\x65","\x73\x6D\x73","\x61\x64\x64\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x63\x68\x61\x6E\x6E\x65\x6C","\x70\x61\x72\x61\x6D\x73","\x72\x65\x6D\x6F\x76\x65\x51\x75\x65\x75\x65\x73","\x69\x64\x73","\x72\x65\x6D\x6F\x76\x65\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73","\x72\x65\x6D\x6F\x76\x65\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73","\x72\x65\x6D\x6F\x76\x65\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73","\x72\x65\x6D\x6F\x76\x65\x53\x6D\x73\x51\x75\x65\x75\x65\x73","\x72\x65\x6D\x6F\x76\x65\x46\x61\x78\x51\x75\x65\x75\x65\x73","\x72\x65\x6D\x6F\x76\x65\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73","\x72\x65\x61\x6C\x74\x69\x6D\x65\x49\x6E\x64\x65\x78","\x63\x68\x65\x63\x6B\x50\x61\x75\x73\x65\x53\x74\x61\x74\x75\x73","\x63\x68\x65\x63\x6B\x51\x75\x65\x75\x65\x53\x74\x61\x74\x75\x73","\x63\x68\x65\x63\x6B\x4F\x6E\x6C\x69\x6E\x65\x53\x74\x61\x74\x75\x73","\x63\x68\x65\x63\x6B\x53\x69\x70\x53\x74\x61\x74\x75\x73","\x72\x65\x61\x6C\x74\x69\x6D\x65\x56\x6F\x69\x63\x65\x49\x6E\x64\x65\x78","\x72\x6F\x77\x73","\x6D\x61\x70","\x75\x6E\x69\x6F\x6E","\x6D\x65\x72\x67\x65","\x67\x65\x74\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x72\x65\x61\x6C\x74\x69\x6D\x65\x43\x68\x61\x74\x49\x6E\x64\x65\x78","\x67\x65\x74\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x71\x75\x65\x75\x65\x73","\x72\x65\x61\x6C\x74\x69\x6D\x65\x4D\x61\x69\x6C\x49\x6E\x64\x65\x78","\x67\x65\x74\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x72\x65\x61\x6C\x74\x69\x6D\x65\x46\x61\x78\x49\x6E\x64\x65\x78","\x67\x65\x74\x46\x61\x78\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x72\x65\x61\x6C\x74\x69\x6D\x65\x53\x6D\x73\x49\x6E\x64\x65\x78","\x67\x65\x74\x53\x6D\x73\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x72\x65\x61\x6C\x74\x69\x6D\x65\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x49\x6E\x64\x65\x78","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x73\x68\x6F\x77","\x73\x68\x6F\x77\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73","\x6C\x65\x6E\x67\x74\x68","\x67\x65\x74\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73","\x73\x68\x6F\x77\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73","\x67\x65\x74\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73","\x73\x68\x6F\x77\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73","\x67\x65\x74\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73","\x73\x68\x6F\x77\x46\x61\x78\x51\x75\x65\x75\x65\x73","\x67\x65\x74\x46\x61\x78\x51\x75\x65\x75\x65\x73","\x73\x68\x6F\x77\x53\x6D\x73\x51\x75\x65\x75\x65\x73","\x67\x65\x74\x53\x6D\x73\x51\x75\x65\x75\x65\x73","\x73\x68\x6F\x77\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73","\x63\x72\x65\x61\x74\x65","\x68\x61\x6E\x64\x6C\x65\x55\x6E\x69\x71\x75\x65\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x65\x72\x72\x6F\x72\x4D\x61\x6E\x61\x67\x65\x72","\x61\x64\x64\x55\x73\x65\x72","\x66\x69\x6E\x64\x4F\x6E\x65","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x70\x61\x73\x73\x77\x6F\x72\x64","\x73\x65\x63\x75\x72\x65\x50\x61\x73\x73\x77\x6F\x72\x64","\x74\x65\x73\x74","\x57\x72\x6F\x6E\x67\x20\x70\x61\x73\x73\x77\x6F\x72\x64\x20\x66\x6F\x72\x6D\x61\x74\x21","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x61\x64\x64\x55\x73\x65\x72\x73","\x49\x6E\x76\x61\x6C\x69\x64\x20\x70\x61\x73\x73\x77\x6F\x72\x64\x20\x70\x61\x74\x74\x65\x72\x6E","\x73\x74\x61\x72\x74\x49\x6E\x64\x65\x78","\x68\x61\x73\x4F\x77\x6E\x50\x72\x6F\x70\x65\x72\x74\x79","\x69\x73\x4E\x75\x6D\x62\x65\x72","\x6D\x69\x6E\x49\x6E\x74\x65\x72\x6E\x61\x6C","\x61\x6D\x6F\x75\x6E\x74","\x63\x6C\x6F\x6E\x65","\x69\x6E\x74\x65\x72\x6E\x61\x6C","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x40","\x73\x70\x6C\x69\x74","\x4E\x6F\x20\x61\x67\x65\x6E\x74\x73\x20\x61\x6D\x6F\x75\x6E\x74\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x21","\x75\x70\x64\x61\x74\x65","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x68\x61\x6E\x64\x6C\x65\x46\x6F\x72\x65\x69\x67\x6E\x4B\x65\x79\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0x9023[0];var _=require(_0x9023[1]);var sequelize=require(_0x9023[3])[_0x9023[2]];var BPromise=require(_0x9023[4]);var util=require(_0x9023[5]);var Util=require(_0x9023[6]);var userTools=require(_0x9023[7]);var logger=require(_0x9023[9])(_0x9023[8]);var OpenchannelQueue=require(_0x9023[3])[_0x9023[10]];var VoiceQueue=require(_0x9023[3])[_0x9023[11]];var ChatQueue=require(_0x9023[3])[_0x9023[12]];var MailQueue=require(_0x9023[3])[_0x9023[13]];var FaxQueue=require(_0x9023[3])[_0x9023[14]];var SmsQueue=require(_0x9023[3])[_0x9023[15]];var MailRoom=require(_0x9023[3])[_0x9023[16]];var Setting=require(_0x9023[3])[_0x9023[17]];var Agent=require(_0x9023[3])[_0x9023[18]];var User=require(_0x9023[3])[_0x9023[18]];var Team=require(_0x9023[3])[_0x9023[19]];var List=require(_0x9023[3])[_0x9023[20]];exports[_0x9023[21]]= function(_0x1011x14,_0x1011x15,_0x1011x16){switch(_0x1011x14[_0x9023[29]][_0x9023[35]]){case _0x9023[29]:return User[_0x9023[30]](_0x1011x14[_0x9023[29]][_0x9023[28]],{attributes:[_0x9023[28]]})[_0x9023[25]](Util[_0x9023[27]](_0x1011x14[_0x9023[26]]))[_0x9023[25]](function(_0x1011x18){return _0x1011x15[_0x9023[24]](200)[_0x9023[23]](_0x1011x18)})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)});default:return Agent[_0x9023[34]](_0x9023[33])[_0x9023[32]](Util[_0x9023[31]](_0x1011x14[_0x9023[26]]))[_0x9023[25]](function(_0x1011x18){return _0x1011x15[_0x9023[24]](200)[_0x9023[23]](_0x1011x18)})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)})}};exports[_0x9023[36]]= function(_0x1011x14,_0x1011x15,_0x1011x16){return Agent[_0x9023[30]](_0x1011x14[_0x9023[61]][_0x9023[28]],{attributes:[_0x9023[28],_0x9023[41]]})[_0x9023[25]](function(_0x1011x1a){if(!_0x1011x1a){return _0x1011x15[_0x9023[37]](401)};switch(_0x1011x14[_0x9023[61]][_0x9023[60]]){case _0x9023[45]:return _0x1011x1a[_0x9023[44]](_0x1011x14[_0x9023[39]][_0x9023[38]],{interface:util[_0x9023[42]](_0x9023[40],_0x1011x1a[_0x9023[41]]),stateinterface:util[_0x9023[42]](_0x9023[40],_0x1011x1a[_0x9023[41]]),membername:_0x1011x1a[_0x9023[41]],UserId:_0x1011x1a[_0x9023[28]],penalty:_0x1011x14[_0x9023[39]][_0x9023[43]]});case _0x9023[51]:return ChatQueue[_0x9023[50]]({where:{id:_0x1011x14[_0x9023[39]][_0x9023[38]]},attributes:[_0x9023[28],_0x9023[41]],raw:true})[_0x9023[25]](function(_0x1011x19){if(_0x1011x19){var _0x1011x1b=[];_[_0x9023[48]](_0x1011x19,function(_0x1011x1c){_0x1011x1b[_0x9023[47]](_0x1011x1a[_0x9023[46]](_0x1011x1c[_0x9023[28]],{queue:_0x1011x1c[_0x9023[41]],penalty:_0x1011x14[_0x9023[39]][_0x9023[43]]}))});return BPromise[_0x9023[49]](_0x1011x1b)}});case _0x9023[53]:return MailQueue[_0x9023[50]]({where:{id:_0x1011x14[_0x9023[39]][_0x9023[38]]},attributes:[_0x9023[28],_0x9023[41]],raw:true})[_0x9023[25]](function(_0x1011x19){if(_0x1011x19){var _0x1011x1b=[];_[_0x9023[48]](_0x1011x19,function(_0x1011x1c){_0x1011x1b[_0x9023[47]](_0x1011x1a[_0x9023[52]](_0x1011x1c[_0x9023[28]],{queue:_0x1011x1c[_0x9023[41]],penalty:_0x1011x14[_0x9023[39]][_0x9023[43]]}))});return BPromise[_0x9023[49]](_0x1011x1b)}});case _0x9023[55]:return FaxQueue[_0x9023[50]]({where:{id:_0x1011x14[_0x9023[39]][_0x9023[38]]},attributes:[_0x9023[28],_0x9023[41]],raw:true})[_0x9023[25]](function(_0x1011x19){if(_0x1011x19){var _0x1011x1b=[];_[_0x9023[48]](_0x1011x19,function(_0x1011x1c){_0x1011x1b[_0x9023[47]](_0x1011x1a[_0x9023[54]](_0x1011x1c[_0x9023[28]],{queue:_0x1011x1c[_0x9023[41]],penalty:_0x1011x14[_0x9023[39]][_0x9023[43]]}))});return BPromise[_0x9023[49]](_0x1011x1b)}});case _0x9023[57]:return SmsQueue[_0x9023[50]]({where:{id:_0x1011x14[_0x9023[39]][_0x9023[38]]},attributes:[_0x9023[28],_0x9023[41]],raw:true})[_0x9023[25]](function(_0x1011x19){if(_0x1011x19){var _0x1011x1b=[];_[_0x9023[48]](_0x1011x19,function(_0x1011x1c){_0x1011x1b[_0x9023[47]](_0x1011x1a[_0x9023[56]](_0x1011x1c[_0x9023[28]],{queue:_0x1011x1c[_0x9023[41]],penalty:_0x1011x14[_0x9023[39]][_0x9023[43]]}))});return BPromise[_0x9023[49]](_0x1011x1b)}});case _0x9023[59]:return OpenchannelQueue[_0x9023[50]]({where:{id:_0x1011x14[_0x9023[39]][_0x9023[38]]},attributes:[_0x9023[28],_0x9023[41]],raw:true})[_0x9023[25]](function(_0x1011x19){if(_0x1011x19){var _0x1011x1b=[];_[_0x9023[48]](_0x1011x19,function(_0x1011x1c){_0x1011x1b[_0x9023[47]](_0x1011x1a[_0x9023[58]](_0x1011x1c[_0x9023[28]],{queue:_0x1011x1c[_0x9023[41]],penalty:_0x1011x14[_0x9023[39]][_0x9023[43]]}))});return BPromise[_0x9023[49]](_0x1011x1b)}});default:return null}})[_0x9023[25]](function(_0x1011x19){return _0x1011x15[_0x9023[37]](_0x1011x19?200:401)})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)})};exports[_0x9023[62]]= function(_0x1011x14,_0x1011x15,_0x1011x16){return Agent[_0x9023[30]](_0x1011x14[_0x9023[61]][_0x9023[28]],{attributes:[_0x9023[28]]})[_0x9023[25]](function(_0x1011x1a){if(!_0x1011x1a){return _0x1011x15[_0x9023[37]](401)};switch(_0x1011x14[_0x9023[61]][_0x9023[60]]){case _0x9023[45]:return _0x1011x1a[_0x9023[64]](_0x1011x14[_0x9023[26]][_0x9023[63]]);case _0x9023[51]:return _0x1011x1a[_0x9023[65]](_0x1011x14[_0x9023[26]][_0x9023[63]]);case _0x9023[53]:return _0x1011x1a[_0x9023[66]](_0x1011x14[_0x9023[26]][_0x9023[63]]);case _0x9023[57]:return _0x1011x1a[_0x9023[67]](_0x1011x14[_0x9023[26]][_0x9023[63]]);case _0x9023[55]:return _0x1011x1a[_0x9023[68]](_0x1011x14[_0x9023[26]][_0x9023[63]]);case _0x9023[59]:return _0x1011x1a[_0x9023[69]](_0x1011x14[_0x9023[26]][_0x9023[63]]);default:return null}})[_0x9023[25]](function(_0x1011x19){return _0x1011x15[_0x9023[37]](_0x1011x19?200:401)})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)})};exports[_0x9023[70]]= function(_0x1011x14,_0x1011x15,_0x1011x16){switch(_0x1011x14[_0x9023[29]][_0x9023[35]]){case _0x9023[29]:return User[_0x9023[30]](_0x1011x14[_0x9023[29]][_0x9023[28]],{attributes:[_0x9023[28]]})[_0x9023[25]](Util[_0x9023[27]](_0x1011x14[_0x9023[26]]))[_0x9023[25]](function(_0x1011x18){return _0x1011x15[_0x9023[24]](200)[_0x9023[23]](_0x1011x18)})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)});default:return Agent[_0x9023[34]](_0x9023[33],{method:[_0x9023[71],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[72],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[73],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[74],_0x1011x14[_0x9023[26]]]})[_0x9023[32]](Util[_0x9023[31]](_0x1011x14[_0x9023[26]]))[_0x9023[25]](function(_0x1011x18){return _0x1011x15[_0x9023[24]](200)[_0x9023[23]](_0x1011x18)})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)})}};exports[_0x9023[75]]= function(_0x1011x14,_0x1011x15,_0x1011x16){switch(_0x1011x14[_0x9023[29]][_0x9023[35]]){case _0x9023[29]:var _0x1011x1d=[];return User[_0x9023[30]](_0x1011x14[_0x9023[29]][_0x9023[28]],{attributes:[_0x9023[28]]})[_0x9023[25]](Util[_0x9023[80]]({},{attributes:[_0x9023[41]],include:[{raw:true,model:User,attributes:[_0x9023[28]]}]}))[_0x9023[25]](function(_0x1011x19){var _0x1011x1e=_[_0x9023[77]](_0x1011x19[_0x9023[76]],_0x9023[41]);_0x1011x19[_0x9023[76]][_0x9023[48]](function(_0x1011x1c){_0x1011x1d= _[_0x9023[78]](_0x1011x1d,_[_0x9023[77]](_0x1011x1c.Users,_0x9023[28]))});return User[_0x9023[34]](_0x9023[33],{method:[_0x9023[72],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[73],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[74],_0x1011x14[_0x9023[26]]]})[_0x9023[32]](_[_0x9023[79]](Util[_0x9023[31]](_0x1011x14[_0x9023[26]],{id:{$in:_0x1011x1d}}),{include:[{model:VoiceQueue,where:{name:{$in:_0x1011x1e}},required:false}]}))})[_0x9023[25]](function(_0x1011x18){return _0x1011x15[_0x9023[24]](200)[_0x9023[23]](_0x1011x18)})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)});default:return Agent[_0x9023[34]](_0x9023[33],{method:[_0x9023[71],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[72],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[73],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[74],_0x1011x14[_0x9023[26]]]})[_0x9023[32]](Util[_0x9023[31]](_0x1011x14[_0x9023[26]]))[_0x9023[25]](function(_0x1011x18){return _0x1011x15[_0x9023[24]](200)[_0x9023[23]](_0x1011x18)})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)})}};exports[_0x9023[81]]= function(_0x1011x14,_0x1011x15,_0x1011x16){switch(_0x1011x14[_0x9023[29]][_0x9023[35]]){case _0x9023[29]:var _0x1011x1d=[];return User[_0x9023[30]](_0x1011x14[_0x9023[29]][_0x9023[28]],{attributes:[_0x9023[28]]})[_0x9023[25]](Util[_0x9023[82]]({},{attributes:[_0x9023[28]],include:[{raw:true,model:User,attributes:[_0x9023[28]]}]}))[_0x9023[25]](function(_0x1011x19){var _0x1011x1f=_[_0x9023[77]](_0x1011x19[_0x9023[76]],_0x9023[28]);_0x1011x19[_0x9023[76]][_0x9023[48]](function(_0x1011x1c){_0x1011x1d= _[_0x9023[78]](_0x1011x1d,_[_0x9023[77]](_0x1011x1c.Users,_0x9023[28]))});return User[_0x9023[34]](_0x9023[33],{method:[_0x9023[71],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[72],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[73],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[74],_0x1011x14[_0x9023[26]]]})[_0x9023[32]](_[_0x9023[79]](Util[_0x9023[31]](_0x1011x14[_0x9023[26]],{id:{$in:_0x1011x1d}}),{include:[{model:ChatQueue,where:{id:{$in:_0x1011x1f}},required:false}]}))})[_0x9023[25]](function(_0x1011x18){return _0x1011x15[_0x9023[24]](200)[_0x9023[23]](_0x1011x18)})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)});default:return Agent[_0x9023[34]](_0x9023[33],{method:[_0x9023[71],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[72],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[73],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[74],_0x1011x14[_0x9023[26]]]},_0x9023[83])[_0x9023[32]](Util[_0x9023[31]](_0x1011x14[_0x9023[26]]))[_0x9023[25]](function(_0x1011x18){return _0x1011x15[_0x9023[24]](200)[_0x9023[23]](_0x1011x18)})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)})}};exports[_0x9023[84]]= function(_0x1011x14,_0x1011x15,_0x1011x16){switch(_0x1011x14[_0x9023[29]][_0x9023[35]]){case _0x9023[29]:var _0x1011x1d=[];return User[_0x9023[30]](_0x1011x14[_0x9023[29]][_0x9023[28]],{attributes:[_0x9023[28]]})[_0x9023[25]](Util[_0x9023[85]]({},{attributes:[_0x9023[28]],include:[{raw:true,model:User,attributes:[_0x9023[28]]}]}))[_0x9023[25]](function(_0x1011x19){var _0x1011x20=_[_0x9023[77]](_0x1011x19[_0x9023[76]],_0x9023[28]);_0x1011x19[_0x9023[76]][_0x9023[48]](function(_0x1011x1c){_0x1011x1d= _[_0x9023[78]](_0x1011x1d,_[_0x9023[77]](_0x1011x1c.Users,_0x9023[28]))});return User[_0x9023[34]](_0x9023[33],{method:[_0x9023[71],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[72],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[73],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[74],_0x1011x14[_0x9023[26]]]})[_0x9023[32]](_[_0x9023[79]](Util[_0x9023[31]](_0x1011x14[_0x9023[26]],{id:{$in:_0x1011x1d}}),{include:[{model:MailQueue,where:{id:{$in:_0x1011x20}},required:false}]}))})[_0x9023[25]](function(_0x1011x18){return _0x1011x15[_0x9023[24]](200)[_0x9023[23]](_0x1011x18)})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)});default:return Agent[_0x9023[34]](_0x9023[33],{method:[_0x9023[71],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[72],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[73],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[74],_0x1011x14[_0x9023[26]]]},_0x9023[83])[_0x9023[32]](Util[_0x9023[31]](_0x1011x14[_0x9023[26]]))[_0x9023[25]](function(_0x1011x18){return _0x1011x15[_0x9023[24]](200)[_0x9023[23]](_0x1011x18)})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)})}};exports[_0x9023[86]]= function(_0x1011x14,_0x1011x15,_0x1011x16){switch(_0x1011x14[_0x9023[29]][_0x9023[35]]){case _0x9023[29]:var _0x1011x1d=[];return User[_0x9023[30]](_0x1011x14[_0x9023[29]][_0x9023[28]],{attributes:[_0x9023[28]]})[_0x9023[25]](Util[_0x9023[87]]({},{attributes:[_0x9023[28]],include:[{raw:true,model:User,attributes:[_0x9023[28]]}]}))[_0x9023[25]](function(_0x1011x19){var _0x1011x21=_[_0x9023[77]](_0x1011x19[_0x9023[76]],_0x9023[28]);_0x1011x19[_0x9023[76]][_0x9023[48]](function(_0x1011x1c){_0x1011x1d= _[_0x9023[78]](_0x1011x1d,_[_0x9023[77]](_0x1011x1c.Users,_0x9023[28]))});return User[_0x9023[34]](_0x9023[33],{method:[_0x9023[71],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[72],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[73],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[74],_0x1011x14[_0x9023[26]]]})[_0x9023[32]](_[_0x9023[79]](Util[_0x9023[31]](_0x1011x14[_0x9023[26]],{id:{$in:_0x1011x1d}}),{include:[{model:FaxQueue,where:{id:{$in:_0x1011x21}},required:false}]}))})[_0x9023[25]](function(_0x1011x18){return _0x1011x15[_0x9023[24]](200)[_0x9023[23]](_0x1011x18)})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)});default:return Agent[_0x9023[34]](_0x9023[33],{method:[_0x9023[71],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[72],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[73],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[74],_0x1011x14[_0x9023[26]]]},_0x9023[83])[_0x9023[32]](Util[_0x9023[31]](_0x1011x14[_0x9023[26]]))[_0x9023[25]](function(_0x1011x18){return _0x1011x15[_0x9023[24]](200)[_0x9023[23]](_0x1011x18)})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)})}};exports[_0x9023[88]]= function(_0x1011x14,_0x1011x15,_0x1011x16){switch(_0x1011x14[_0x9023[29]][_0x9023[35]]){case _0x9023[29]:var _0x1011x1d=[];return User[_0x9023[30]](_0x1011x14[_0x9023[29]][_0x9023[28]],{attributes:[_0x9023[28]]})[_0x9023[25]](Util[_0x9023[89]]({},{attributes:[_0x9023[28]],include:[{raw:true,model:User,attributes:[_0x9023[28]]}]}))[_0x9023[25]](function(_0x1011x19){var _0x1011x22=_[_0x9023[77]](_0x1011x19[_0x9023[76]],_0x9023[28]);_0x1011x19[_0x9023[76]][_0x9023[48]](function(_0x1011x1c){_0x1011x1d= _[_0x9023[78]](_0x1011x1d,_[_0x9023[77]](_0x1011x1c.Users,_0x9023[28]))});return User[_0x9023[34]](_0x9023[33],{method:[_0x9023[71],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[72],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[73],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[74],_0x1011x14[_0x9023[26]]]})[_0x9023[32]](_[_0x9023[79]](Util[_0x9023[31]](_0x1011x14[_0x9023[26]],{id:{$in:_0x1011x1d}}),{include:[{model:SmsQueue,where:{id:{$in:_0x1011x22}},required:false}]}))})[_0x9023[25]](function(_0x1011x18){return _0x1011x15[_0x9023[24]](200)[_0x9023[23]](_0x1011x18)})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)});default:return Agent[_0x9023[34]](_0x9023[33],{method:[_0x9023[71],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[72],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[73],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[74],_0x1011x14[_0x9023[26]]]},_0x9023[83])[_0x9023[32]](Util[_0x9023[31]](_0x1011x14[_0x9023[26]]))[_0x9023[25]](function(_0x1011x18){return _0x1011x15[_0x9023[24]](200)[_0x9023[23]](_0x1011x18)})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)})}};exports[_0x9023[90]]= function(_0x1011x14,_0x1011x15,_0x1011x16){switch(_0x1011x14[_0x9023[29]][_0x9023[35]]){case _0x9023[29]:var _0x1011x1d=[];return User[_0x9023[30]](_0x1011x14[_0x9023[29]][_0x9023[28]],{attributes:[_0x9023[28]]})[_0x9023[25]](Util[_0x9023[91]]({},{attributes:[_0x9023[28]],include:[{raw:true,model:User,attributes:[_0x9023[28]]}]}))[_0x9023[25]](function(_0x1011x19){var _0x1011x23=_[_0x9023[77]](_0x1011x19[_0x9023[76]],_0x9023[28]);_0x1011x19[_0x9023[76]][_0x9023[48]](function(_0x1011x1c){_0x1011x1d= _[_0x9023[78]](_0x1011x1d,_[_0x9023[77]](_0x1011x1c.Users,_0x9023[28]))});return User[_0x9023[34]](_0x9023[33],{method:[_0x9023[71],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[72],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[73],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[74],_0x1011x14[_0x9023[26]]]})[_0x9023[32]](_[_0x9023[79]](Util[_0x9023[31]](_0x1011x14[_0x9023[26]],{id:{$in:_0x1011x1d}}),{include:[{model:OpenchannelQueue,where:{id:{$in:_0x1011x23}},required:false}]}))})[_0x9023[25]](function(_0x1011x18){return _0x1011x15[_0x9023[24]](200)[_0x9023[23]](_0x1011x18)})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)});default:return Agent[_0x9023[34]](_0x9023[33],{method:[_0x9023[71],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[72],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[73],_0x1011x14[_0x9023[26]]]},{method:[_0x9023[74],_0x1011x14[_0x9023[26]]]},_0x9023[83])[_0x9023[32]](Util[_0x9023[31]](_0x1011x14[_0x9023[26]]))[_0x9023[25]](function(_0x1011x18){return _0x1011x15[_0x9023[24]](200)[_0x9023[23]](_0x1011x18)})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)})}};exports[_0x9023[92]]= function(_0x1011x14,_0x1011x15){return Agent[_0x9023[34]](_0x9023[33])[_0x9023[30]](_0x1011x14[_0x9023[61]][_0x9023[28]])[_0x9023[25]](function(_0x1011x1a){if(!_0x1011x1a){return _0x1011x15[_0x9023[37]](404)};return _0x1011x15[_0x9023[23]](_0x1011x1a)})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)})};exports[_0x9023[93]]= function(_0x1011x14,_0x1011x15){return Agent[_0x9023[34]](_0x9023[33])[_0x9023[30]](_0x1011x14[_0x9023[61]][_0x9023[28]])[_0x9023[25]](function(_0x1011x1a){if(!_0x1011x1a){return _0x1011x15[_0x9023[37]](404)};return _0x1011x1a[_0x9023[95]]({attributes:[_0x9023[41]]})})[_0x9023[25]](function(_0x1011x1e){return _0x1011x15[_0x9023[23]]({count:_0x1011x1e[_0x9023[94]],rows:_0x1011x1e})})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)})};exports[_0x9023[96]]= function(_0x1011x14,_0x1011x15){return Agent[_0x9023[34]](_0x9023[33])[_0x9023[30]](_0x1011x14[_0x9023[61]][_0x9023[28]])[_0x9023[25]](function(_0x1011x1a){if(!_0x1011x1a){return _0x1011x15[_0x9023[37]](404)};return _0x1011x1a[_0x9023[97]]({attributes:[_0x9023[28]]})})[_0x9023[25]](function(_0x1011x1f){return _0x1011x15[_0x9023[23]]({count:_0x1011x1f[_0x9023[94]],rows:_0x1011x1f})})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)})};exports[_0x9023[98]]= function(_0x1011x14,_0x1011x15){return Agent[_0x9023[34]](_0x9023[33])[_0x9023[30]](_0x1011x14[_0x9023[61]][_0x9023[28]])[_0x9023[25]](function(_0x1011x1a){if(!_0x1011x1a){return _0x1011x15[_0x9023[37]](404)};return _0x1011x1a[_0x9023[99]]({attributes:[_0x9023[28]]})})[_0x9023[25]](function(_0x1011x20){return _0x1011x15[_0x9023[23]]({count:_0x1011x20[_0x9023[94]],rows:_0x1011x20})})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)})};exports[_0x9023[100]]= function(_0x1011x14,_0x1011x15){return Agent[_0x9023[34]](_0x9023[33])[_0x9023[30]](_0x1011x14[_0x9023[61]][_0x9023[28]])[_0x9023[25]](function(_0x1011x1a){if(!_0x1011x1a){return _0x1011x15[_0x9023[37]](404)};return _0x1011x1a[_0x9023[101]]({attributes:[_0x9023[28]]})})[_0x9023[25]](function(_0x1011x21){return _0x1011x15[_0x9023[23]]({count:_0x1011x21[_0x9023[94]],rows:_0x1011x21})})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)})};exports[_0x9023[102]]= function(_0x1011x14,_0x1011x15){return Agent[_0x9023[34]](_0x9023[33])[_0x9023[30]](_0x1011x14[_0x9023[61]][_0x9023[28]])[_0x9023[25]](function(_0x1011x1a){if(!_0x1011x1a){return _0x1011x15[_0x9023[37]](404)};return _0x1011x1a[_0x9023[103]]({attributes:[_0x9023[28]]})})[_0x9023[25]](function(_0x1011x22){return _0x1011x15[_0x9023[23]]({count:_0x1011x22[_0x9023[94]],rows:_0x1011x22})})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)})};exports[_0x9023[104]]= function(_0x1011x14,_0x1011x15){return Agent[_0x9023[34]](_0x9023[33])[_0x9023[30]](_0x1011x14[_0x9023[61]][_0x9023[28]])[_0x9023[25]](function(_0x1011x1a){if(!_0x1011x1a){return _0x1011x15[_0x9023[37]](404)};return _0x1011x1a[_0x9023[105]]({attributes:[_0x9023[28]]})})[_0x9023[25]](function(_0x1011x24){return _0x1011x15[_0x9023[23]]({count:_0x1011x24[_0x9023[94]],rows:_0x1011x24})})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)})};exports[_0x9023[106]]= function(_0x1011x14,_0x1011x15){var _0x1011x25;_0x1011x14[_0x9023[39]][_0x9023[35]]= _0x9023[33];return sequelize[_0x9023[116]](function(_0x1011x26){return Setting[_0x9023[30]](1)[_0x9023[25]](function(_0x1011x28){var _0x1011x29=String(_0x1011x14[_0x9023[39]][_0x9023[112]]);var _0x1011x2a=_0x1011x28[_0x9023[113]]?/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@#$%^&\-_=+\[\{\]\}.])[0-9a-zA-Z~!@#$%^&\-_=+\[\{\]\}.]{8,}$/:/^.{6,}$/;if(!_0x1011x2a[_0x9023[114]](_0x1011x29)){throw new Error(_0x9023[115])};return Agent[_0x9023[34]](_0x9023[33])[_0x9023[106]](_0x1011x14[_0x9023[39]],{transaction:_0x1011x26})})[_0x9023[25]](userTools[_0x9023[111]]({transaction:_0x1011x26}))[_0x9023[25]](function(_0x1011x1a){_0x1011x25= _0x1011x1a;return Team[_0x9023[110]]({where:{defaultEntry:true}})})[_0x9023[25]](function(_0x1011x27){return _0x1011x27[_0x9023[109]](_0x1011x25[_0x9023[28]],{transaction:_0x1011x26})})})[_0x9023[25]](function(){return _0x1011x15[_0x9023[24]](201)[_0x9023[23]](_0x1011x25)})[_0x9023[22]](sequelize.UniqueConstraintError,function(_0x1011x17){return Util[_0x9023[108]][_0x9023[107]](_0x1011x15,_0x1011x17)})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)})};exports[_0x9023[117]]= function(_0x1011x14,_0x1011x15){var _0x1011x2b;var _0x1011x2c;var _0x1011x2d=[];var _0x1011x29=String(_0x1011x14[_0x9023[39]][_0x9023[112]]);return sequelize[_0x9023[116]](function(_0x1011x26){return Setting[_0x9023[30]](1)[_0x9023[25]](function(_0x1011x28){_0x1011x2c= _0x1011x28;var _0x1011x2a=_0x1011x2c[_0x9023[113]]?/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@#$%^&\-_=+\[\{\]\}.])[0-9a-zA-Z~!@#$%^&\-_=+\[\{\]\}.]{8,}$/:/^[a-zA-Z0-9]{6,}$/;if(!_0x1011x2a[_0x9023[114]](_0x1011x29)){throw new Error(_0x9023[119])};var _0x1011x2e=0;if(_0x1011x14[_0x9023[39]][_0x9023[121]](_0x9023[120])&& _[_0x9023[122]](_0x1011x14[_0x9023[39]][_0x9023[120]])&& _0x1011x14[_0x9023[39]][_0x9023[120]]>= 0){_0x1011x2e= _0x1011x14[_0x9023[39]][_0x9023[120]];delete _0x1011x14[_0x9023[39]][_0x9023[120]]};var _0x1011x2f=_0x1011x14[_0x9023[39]][_0x9023[123]];delete _0x1011x14[_0x9023[39]][_0x9023[123]];if(_0x1011x14[_0x9023[39]][_0x9023[124]]){_0x1011x14[_0x9023[39]][_0x9023[35]]= _0x9023[33];for(var _0x1011x30=_0x1011x2e;_0x1011x30< _0x1011x14[_0x9023[39]][_0x9023[124]]+ _0x1011x2e;_0x1011x30++,_0x1011x2f++){var _0x1011x31=_[_0x9023[125]](_0x1011x14[_0x9023[39]]);_0x1011x31[_0x9023[126]]= _0x1011x2f;_0x1011x31[_0x9023[41]]= _0x1011x31[_0x9023[41]]+ _0x1011x30;_0x1011x31[_0x9023[127]]= _0x1011x31[_0x9023[127]]+ _0x1011x30;_0x1011x31[_0x9023[128]]= _0x1011x31[_0x9023[128]][_0x9023[130]](_0x9023[129])[0]+ _0x1011x30+ _0x9023[129]+ _0x1011x31[_0x9023[128]][_0x9023[130]](_0x9023[129])[1];_0x1011x2d[_0x9023[47]](_0x1011x31)}}else {throw new Error(_0x9023[131])};return Agent[_0x9023[117]](_0x1011x2d,{transaction:_0x1011x26,individualHooks:true})})[_0x9023[25]](function(_0x1011x1d){_0x1011x2b= _0x1011x1d;return Team[_0x9023[110]]({where:{defaultEntry:true}})})[_0x9023[25]](function(_0x1011x27){return _0x1011x27[_0x9023[118]](_[_0x9023[77]](_0x1011x2b,_0x9023[28]),{transaction:_0x1011x26})})})[_0x9023[25]](function(){return _0x1011x15[_0x9023[37]](201)})[_0x9023[22]](sequelize.UniqueConstraintError,function(_0x1011x17){return Util[_0x9023[108]][_0x9023[107]](_0x1011x15,_0x1011x17)})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)})};exports[_0x9023[132]]= function(_0x1011x14,_0x1011x15){if(_0x1011x14[_0x9023[39]][_0x9023[28]]){delete _0x1011x14[_0x9023[39]][_0x9023[28]]};delete _0x1011x14[_0x9023[39]][_0x9023[126]];delete _0x1011x14[_0x9023[39]][_0x9023[35]];delete _0x1011x14[_0x9023[39]][_0x9023[41]];delete _0x1011x14[_0x9023[39]][_0x9023[112]];var _0x1011x25;return sequelize[_0x9023[116]](function(_0x1011x26){return Agent[_0x9023[30]](_0x1011x14[_0x9023[61]][_0x9023[28]])[_0x9023[25]](function(_0x1011x1a){if(!_0x1011x1a){return _0x1011x15[_0x9023[37]](404)};var _0x1011x32=_[_0x9023[79]](_0x1011x1a,_0x1011x14[_0x9023[39]]);return _0x1011x32[_0x9023[134]]({transaction:_0x1011x26})})[_0x9023[25]](function(_0x1011x1a){_0x1011x25= _0x1011x1a;return _0x1011x1a})[_0x9023[25]](userTools[_0x9023[133]]({transaction:_0x1011x26}))[_0x9023[25]](function(){return _0x1011x15[_0x9023[24]](200)[_0x9023[23]](_0x1011x25)})})[_0x9023[22]](sequelize.UniqueConstraintError,function(_0x1011x17){return Util[_0x9023[108]][_0x9023[107]](_0x1011x15,_0x1011x17)})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)})};exports[_0x9023[135]]= function(_0x1011x14,_0x1011x15){var _0x1011x25;return Agent[_0x9023[30]](_0x1011x14[_0x9023[61]][_0x9023[28]])[_0x9023[25]](function(_0x1011x1a){_0x1011x25= _0x1011x1a;if(!_0x1011x1a){return _0x1011x15[_0x9023[37]](404)};return _0x1011x1a[_0x9023[135]]()})[_0x9023[25]](function(){return _0x1011x15[_0x9023[37]](204)})[_0x9023[22]](sequelize.ForeignKeyConstraintError,function(_0x1011x17){return Util[_0x9023[108]][_0x9023[136]](_0x1011x15,_0x9023[33],_0x1011x25[_0x9023[41]],_0x1011x17)})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)})};exports[_0x9023[137]]= function(_0x1011x14,_0x1011x15){return Agent[_0x9023[135]]({where:{id:_0x1011x14[_0x9023[26]][_0x9023[63]]},individualHooks:true})[_0x9023[25]](function(){return _0x1011x15[_0x9023[37]](204)})[_0x9023[22]](function(_0x1011x17){return handleError(_0x1011x15,_0x1011x17)})};function handleError(_0x1011x15,_0x1011x17){logger[_0x9023[139]](_0x1011x17[_0x9023[138]]);return _0x1011x15[_0x9023[24]](500)[_0x9023[23]](_0x1011x17)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/agent/agent.events.js b/server/api/agent/agent.events.js index c5bd3fb..66dc905 100644 --- a/server/api/agent/agent.events.js +++ b/server/api/agent/agent.events.js @@ -1 +1 @@ -var _0x77cd=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x77cd[0];const EventEmitter=require(_0x77cd[1]);const Agent=require(_0x77cd[3])[_0x77cd[2]];var AgentEvents= new EventEmitter();AgentEvents[_0x77cd[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x77cd[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x77cd[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x77cd[6]};for(var e in events){var event=events[e];Agent[_0x77cd[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x965bx8,_0x965bx9,_0x965bxa){AgentEvents[_0x77cd[10]](event+ _0x77cd[8]+ _0x965bx8[_0x77cd[9]],_0x965bx8);AgentEvents[_0x77cd[10]](event,_0x965bx8);_0x965bxa(null)}}module[_0x77cd[11]]= AgentEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/agent/agent.socket.js b/server/api/agent/agent.socket.js index 52fb156..66dc905 100644 --- a/server/api/agent/agent.socket.js +++ b/server/api/agent/agent.socket.js @@ -1 +1 @@ -var _0xe6f1=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x61\x67\x65\x6E\x74\x2E\x65\x76\x65\x6E\x74\x73","\x6C\x6F\x64\x61\x73\x68","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x61\x67\x65\x6E\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x72\x6F\x6C\x65","\x61\x67\x65\x6E\x74","\x75\x73\x65\x72\x49\x64","\x69\x64","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x63\x6C\x6F\x6E\x65","\x73\x74\x61\x74\x75\x73","\x68\x61\x73\x4F\x77\x6E\x50\x72\x6F\x70\x65\x72\x74\x79","\x5F\x63\x68\x61\x6E\x67\x65\x64","\x71\x75\x65\x75\x65\x53\x74\x61\x74\x75\x73","\x65\x6D\x69\x74","\x61\x67\x65\x6E\x74\x3A\x73\x61\x76\x65","\x61\x67\x65\x6E\x74\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xe6f1[0];const AgentEvents=require(_0xe6f1[1]);const _=require(_0xe6f1[2]);var events=[_0xe6f1[3],_0xe6f1[4]];exports[_0xe6f1[5]]= function(_0xd797x4){for(var _0xd797x5=0,_0xd797x6=events[_0xe6f1[6]];_0xd797x5< _0xd797x6;_0xd797x5++){var _0xd797x7=events[_0xd797x5];var _0xd797x8=createListener(_0xe6f1[7]+ _0xd797x7,_0xd797x4);AgentEvents[_0xe6f1[8]](_0xd797x7,_0xd797x8);_0xd797x4[_0xe6f1[8]](_0xe6f1[9],removeListener(_0xd797x7,_0xd797x8))}};function createListener(_0xd797x7,_0xd797x4){return function(_0xd797xa){switch(_0xd797x7){case _0xe6f1[21]:if(_0xd797xa[_0xe6f1[10]]=== _0xe6f1[11]&& (_0xd797x4[_0xe6f1[10]]!== _0xe6f1[11]|| _0xd797x4[_0xe6f1[12]]== _0xd797xa[_0xe6f1[13]])){var _0xd797xb=_[_0xe6f1[15]](_0xd797xa[_0xe6f1[14]]);if(_0xd797xa[_0xe6f1[18]][_0xe6f1[17]](_0xe6f1[16])){_0xd797xb[_0xe6f1[19]]= undefined}else {if(_0xd797xa[_0xe6f1[18]][_0xe6f1[17]](_0xe6f1[19])){_0xd797xb[_0xe6f1[16]]= undefined}};_0xd797x4[_0xe6f1[20]](_0xd797x7,_0xd797xb)};break;case _0xe6f1[22]:_0xd797x4[_0xe6f1[20]](_0xd797x7,_0xd797xa);break;default:}}}function removeListener(_0xd797x7,_0xd797x8){return function(){AgentEvents[_0xe6f1[23]](_0xd797x7,_0xd797x8)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/agent/index.js b/server/api/agent/index.js index 6fe56dd..66dc905 100644 --- a/server/api/agent/index.js +++ b/server/api/agent/index.js @@ -1 +1 @@ -var _0x32a9=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x61\x67\x65\x6E\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x72\x65\x61\x6C\x74\x69\x6D\x65","\x72\x65\x61\x6C\x74\x69\x6D\x65\x49\x6E\x64\x65\x78","\x2F\x72\x65\x61\x6C\x74\x69\x6D\x65\x2F\x76\x6F\x69\x63\x65","\x72\x65\x61\x6C\x74\x69\x6D\x65\x56\x6F\x69\x63\x65\x49\x6E\x64\x65\x78","\x2F\x72\x65\x61\x6C\x74\x69\x6D\x65\x2F\x6D\x61\x69\x6C","\x72\x65\x61\x6C\x74\x69\x6D\x65\x4D\x61\x69\x6C\x49\x6E\x64\x65\x78","\x2F\x72\x65\x61\x6C\x74\x69\x6D\x65\x2F\x63\x68\x61\x74","\x72\x65\x61\x6C\x74\x69\x6D\x65\x43\x68\x61\x74\x49\x6E\x64\x65\x78","\x2F\x72\x65\x61\x6C\x74\x69\x6D\x65\x2F\x66\x61\x78","\x72\x65\x61\x6C\x74\x69\x6D\x65\x46\x61\x78\x49\x6E\x64\x65\x78","\x2F\x72\x65\x61\x6C\x74\x69\x6D\x65\x2F\x73\x6D\x73","\x72\x65\x61\x6C\x74\x69\x6D\x65\x53\x6D\x73\x49\x6E\x64\x65\x78","\x2F\x72\x65\x61\x6C\x74\x69\x6D\x65\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x72\x65\x61\x6C\x74\x69\x6D\x65\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x49\x6E\x64\x65\x78","\x2F\x3A\x69\x64","\x75\x73\x65\x72","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x2F\x62\x75\x6C\x6B","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x2F\x3A\x69\x64\x2F\x76\x6F\x69\x63\x65\x2F\x71\x75\x65\x75\x65\x73","\x73\x68\x6F\x77\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73","\x2F\x3A\x69\x64\x2F\x63\x68\x61\x74\x2F\x71\x75\x65\x75\x65\x73","\x73\x68\x6F\x77\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73","\x2F\x3A\x69\x64\x2F\x6D\x61\x69\x6C\x2F\x71\x75\x65\x75\x65\x73","\x73\x68\x6F\x77\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73","\x2F\x3A\x69\x64\x2F\x66\x61\x78\x2F\x71\x75\x65\x75\x65\x73","\x73\x68\x6F\x77\x46\x61\x78\x51\x75\x65\x75\x65\x73","\x2F\x3A\x69\x64\x2F\x73\x6D\x73\x2F\x71\x75\x65\x75\x65\x73","\x73\x68\x6F\x77\x53\x6D\x73\x51\x75\x65\x75\x65\x73","\x2F\x3A\x69\x64\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x2F\x71\x75\x65\x75\x65\x73","\x73\x68\x6F\x77\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73","\x2F\x3A\x69\x64\x2F\x3A\x63\x68\x61\x6E\x6E\x65\x6C\x2F\x71\x75\x65\x75\x65\x73","\x61\x64\x64\x51\x75\x65\x75\x65\x73","\x72\x65\x6D\x6F\x76\x65\x51\x75\x65\x75\x65\x73","\x65\x78\x70\x6F\x72\x74\x73"];_0x32a9[0];var express=require(_0x32a9[1]);var controller=require(_0x32a9[2]);var auth=require(_0x32a9[3]);var license=require(_0x32a9[4]);var router=express.Router();router[_0x32a9[11]](_0x32a9[5],auth[_0x32a9[6]](),auth[_0x32a9[9]]([4,16],[_0x32a9[7],_0x32a9[8]]),controller[_0x32a9[10]]);router[_0x32a9[11]](_0x32a9[12],auth[_0x32a9[6]](),auth[_0x32a9[9]]([12],[_0x32a9[7]]),controller[_0x32a9[13]]);router[_0x32a9[11]](_0x32a9[14],auth[_0x32a9[6]](),auth[_0x32a9[9]]([7],[_0x32a9[7]]),controller[_0x32a9[15]]);router[_0x32a9[11]](_0x32a9[16],auth[_0x32a9[6]](),auth[_0x32a9[9]]([9],[_0x32a9[7]]),controller[_0x32a9[17]]);router[_0x32a9[11]](_0x32a9[18],auth[_0x32a9[6]](),auth[_0x32a9[9]]([8],[_0x32a9[7]]),controller[_0x32a9[19]]);router[_0x32a9[11]](_0x32a9[20],auth[_0x32a9[6]](),auth[_0x32a9[9]]([10],[_0x32a9[7]]),controller[_0x32a9[21]]);router[_0x32a9[11]](_0x32a9[22],auth[_0x32a9[6]](),auth[_0x32a9[9]]([11],[_0x32a9[7]]),controller[_0x32a9[23]]);router[_0x32a9[11]](_0x32a9[24],auth[_0x32a9[6]](),auth[_0x32a9[9]]([20],[_0x32a9[7]]),controller[_0x32a9[25]]);router[_0x32a9[11]](_0x32a9[26],auth[_0x32a9[6]](),auth[_0x32a9[9]]([4],[_0x32a9[7],_0x32a9[27],_0x32a9[8]]),controller[_0x32a9[28]]);router[_0x32a9[30]](_0x32a9[5],auth[_0x32a9[6]](),auth[_0x32a9[9]]([4],[_0x32a9[7]]),controller[_0x32a9[29]]);router[_0x32a9[30]](_0x32a9[31],auth[_0x32a9[6]](),auth[_0x32a9[9]]([4],[_0x32a9[7]]),controller[_0x32a9[32]]);router[_0x32a9[34]](_0x32a9[26],auth[_0x32a9[6]](),auth[_0x32a9[9]]([4],[_0x32a9[7],_0x32a9[8]]),controller[_0x32a9[33]]);router[_0x32a9[36]](_0x32a9[5],auth[_0x32a9[6]](),auth[_0x32a9[9]]([4],[_0x32a9[7]]),controller[_0x32a9[35]]);router[_0x32a9[36]](_0x32a9[26],auth[_0x32a9[6]](),auth[_0x32a9[9]]([4],[_0x32a9[7]]),controller[_0x32a9[37]]);router[_0x32a9[11]](_0x32a9[38],auth[_0x32a9[6]](),auth[_0x32a9[9]]([4],[_0x32a9[7],_0x32a9[8]]),controller[_0x32a9[39]]);router[_0x32a9[11]](_0x32a9[40],auth[_0x32a9[6]](),auth[_0x32a9[9]]([4],[_0x32a9[7],_0x32a9[8]]),controller[_0x32a9[41]]);router[_0x32a9[11]](_0x32a9[42],auth[_0x32a9[6]](),auth[_0x32a9[9]]([4],[_0x32a9[7],_0x32a9[8]]),controller[_0x32a9[43]]);router[_0x32a9[11]](_0x32a9[44],auth[_0x32a9[6]](),auth[_0x32a9[9]]([4],[_0x32a9[7],_0x32a9[8]]),controller[_0x32a9[45]]);router[_0x32a9[11]](_0x32a9[46],auth[_0x32a9[6]](),auth[_0x32a9[9]]([4],[_0x32a9[7],_0x32a9[8]]),controller[_0x32a9[47]]);router[_0x32a9[11]](_0x32a9[48],auth[_0x32a9[6]](),auth[_0x32a9[9]]([4],[_0x32a9[7],_0x32a9[8]]),controller[_0x32a9[49]]);router[_0x32a9[30]](_0x32a9[50],auth[_0x32a9[6]](),auth[_0x32a9[9]]([4],[_0x32a9[7],_0x32a9[8]]),controller[_0x32a9[51]]);router[_0x32a9[36]](_0x32a9[50],auth[_0x32a9[6]](),auth[_0x32a9[9]]([4],[_0x32a9[7],_0x32a9[8]]),controller[_0x32a9[52]]);module[_0x32a9[53]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/automation/automation.controller.js b/server/api/automation/automation.controller.js index 6cf9153..66dc905 100644 --- a/server/api/automation/automation.controller.js +++ b/server/api/automation/automation.controller.js @@ -1 +1 @@ -var _0xf793=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E","\x54\x6F\x6F\x6C\x73\x43\x6F\x6E\x64\x69\x74\x69\x6F\x6E","\x54\x6F\x6F\x6C\x73\x41\x63\x74\x69\x6F\x6E","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x61\x6C\x6C","\x73\x63\x6F\x70\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x41\x6C\x6C","\x41\x6E\x79","\x41\x63\x74\x69\x6F\x6E\x73","\x75\x70\x64\x61\x74\x65","\x73\x61\x76\x65","\x69\x73\x41\x72\x72\x61\x79","\x6C\x65\x6E\x67\x74\x68","\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x49\x64","\x66\x6F\x72\x45\x61\x63\x68","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x41\x6C\x6C\x49\x64","\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x41\x6E\x79\x49\x64","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0xf793[0];var _=require(_0xf793[1]);var util=require(_0xf793[2]);var Util=require(_0xf793[3]);var sequelize=require(_0xf793[5])[_0xf793[4]];var Automation=require(_0xf793[5])[_0xf793[6]];var ToolsCondition=require(_0xf793[5])[_0xf793[7]];var ToolsAction=require(_0xf793[5])[_0xf793[8]];var logger=require(_0xf793[10])(_0xf793[9]);exports[_0xf793[11]]= function(_0x1341x9,_0x1341xa,_0x1341xb){return Automation[_0xf793[21]](_0xf793[20])[_0xf793[19]](_[_0xf793[18]](Util[_0xf793[17]](_0x1341x9[_0xf793[16]]),{distinct:true}))[_0xf793[15]](function(_0x1341xd){_0x1341xa[_0xf793[14]](200)[_0xf793[13]](_0x1341xd)})[_0xf793[12]](function(_0x1341xc){return handleError(_0x1341xa,_0x1341xc)})};exports[_0xf793[22]]= function(_0x1341x9,_0x1341xa){return Automation[_0xf793[21]](_0xf793[20])[_0xf793[26]](_0x1341x9[_0xf793[25]][_0xf793[24]])[_0xf793[15]](function(Automation){if(!Automation){return _0x1341xa[_0xf793[23]](404)};return _0x1341xa[_0xf793[13]](Automation)})[_0xf793[12]](function(_0x1341xc){return handleError(_0x1341xa,_0x1341xc)})};exports[_0xf793[27]]= function(_0x1341x9,_0x1341xa,_0x1341xb){return Automation[_0xf793[27]](_0x1341x9[_0xf793[28]],{include:[{model:ToolsCondition,as:_0xf793[29]},{model:ToolsCondition,as:_0xf793[30]},{model:ToolsAction,as:_0xf793[31]}]})[_0xf793[15]](function(){return _0x1341xa[_0xf793[23]](201)})[_0xf793[12]](function(_0x1341xc){return handleError(_0x1341xa,_0x1341xc)})};exports[_0xf793[32]]= function(_0x1341x9,_0x1341xa,_0x1341xb){var _0x1341xe;if(_0x1341x9[_0xf793[28]][_0xf793[24]]){delete _0x1341x9[_0xf793[28]][_0xf793[24]]};return sequelize[_0xf793[42]](function(_0x1341xf){return Automation[_0xf793[26]](_0x1341x9[_0xf793[25]][_0xf793[24]])[_0xf793[15]](function(_0x1341x12){if(!_0x1341x12){return _0x1341xa[_0xf793[23]](404)};_0x1341xe= _0x1341x12;if(_0x1341x9[_0xf793[28]][_0xf793[30]]){return ToolsCondition[_0xf793[39]]({where:{AutomationAnyId:_0x1341x9[_0xf793[25]][_0xf793[24]]},transaction:_0x1341xf})}})[_0xf793[15]](function(){if(_0x1341x9[_0xf793[28]][_0xf793[30]]&& Array[_0xf793[34]](_0x1341x9[_0xf793[28]].Any)&& _0x1341x9[_0xf793[28]][_0xf793[30]][_0xf793[35]]){_[_0xf793[37]](_0x1341x9[_0xf793[28]].Any,function(_0x1341x11){_0x1341x11[_0xf793[41]]= _0x1341x9[_0xf793[25]][_0xf793[24]]});return ToolsCondition[_0xf793[38]](_0x1341x9[_0xf793[28]].Any,{transaction:_0x1341xf})};return})[_0xf793[15]](function(){if(_0x1341x9[_0xf793[28]][_0xf793[29]]){return ToolsCondition[_0xf793[39]]({where:{AutomationAllId:_0x1341x9[_0xf793[25]][_0xf793[24]]},transaction:_0x1341xf})}})[_0xf793[15]](function(){if(_0x1341x9[_0xf793[28]][_0xf793[29]]&& Array[_0xf793[34]](_0x1341x9[_0xf793[28]].All)&& _0x1341x9[_0xf793[28]][_0xf793[29]][_0xf793[35]]){_[_0xf793[37]](_0x1341x9[_0xf793[28]].All,function(_0x1341x11){_0x1341x11[_0xf793[40]]= _0x1341x9[_0xf793[25]][_0xf793[24]]});return ToolsCondition[_0xf793[38]](_0x1341x9[_0xf793[28]].All,{transaction:_0x1341xf})};return})[_0xf793[15]](function(){if(_0x1341x9[_0xf793[28]][_0xf793[31]]){return ToolsAction[_0xf793[39]]({where:{AutomationId:_0x1341x9[_0xf793[25]][_0xf793[24]]},transaction:_0x1341xf})}})[_0xf793[15]](function(){if(_0x1341x9[_0xf793[28]][_0xf793[31]]&& Array[_0xf793[34]](_0x1341x9[_0xf793[28]].Actions)&& _0x1341x9[_0xf793[28]][_0xf793[31]][_0xf793[35]]){_[_0xf793[37]](_0x1341x9[_0xf793[28]].Actions,function(_0x1341x11){_0x1341x11[_0xf793[36]]= _0x1341x9[_0xf793[25]][_0xf793[24]]});return ToolsAction[_0xf793[38]](_0x1341x9[_0xf793[28]].Actions,{transaction:_0x1341xf})};return})[_0xf793[15]](function(){var _0x1341x10=_[_0xf793[18]](_0x1341xe,_0x1341x9[_0xf793[28]]);return _0x1341x10[_0xf793[33]]({transaction:_0x1341xf})})})[_0xf793[15]](function(){return _0x1341xa[_0xf793[23]](200)})[_0xf793[12]](function(_0x1341xc){return handleError(_0x1341xa,_0x1341xc)})};exports[_0xf793[39]]= function(_0x1341x9,_0x1341xa){return Automation[_0xf793[26]](_0x1341x9[_0xf793[25]][_0xf793[24]])[_0xf793[15]](function(Automation){if(!Automation){return _0x1341xa[_0xf793[23]](404)};Automation[_0xf793[39]]()[_0xf793[15]](function(){return _0x1341xa[_0xf793[23]](204)})[_0xf793[12]](function(_0x1341xc){return handleError(_0x1341xa,_0x1341xc)})})[_0xf793[12]](function(_0x1341xc){return handleError(_0x1341xa,_0x1341xc)})};exports[_0xf793[43]]= function(_0x1341x9,_0x1341xa){return Automation[_0xf793[39]]({where:{id:_0x1341x9[_0xf793[16]][_0xf793[44]]},individualHooks:true})[_0xf793[15]](function(){return _0x1341xa[_0xf793[23]](204)})[_0xf793[12]](function(_0x1341xc){return handleError(_0x1341xa,_0x1341xc)})};function handleError(_0x1341xa,_0x1341xc){logger[_0xf793[46]](_0x1341xc[_0xf793[45]]);return _0x1341xa[_0xf793[14]](500)[_0xf793[13]](_0x1341xc)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/automation/automation.events.js b/server/api/automation/automation.events.js index fba53ca..66dc905 100644 --- a/server/api/automation/automation.events.js +++ b/server/api/automation/automation.events.js @@ -1 +1 @@ -var _0x85f8=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x85f8[0];const EventEmitter=require(_0x85f8[1]);const Automation=require(_0x85f8[3])[_0x85f8[2]];var AutomationEvents= new EventEmitter();AutomationEvents[_0x85f8[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x85f8[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x85f8[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x85f8[6]};for(var e in events){var event=events[e];Automation[_0x85f8[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x1fb8x8,_0x1fb8x9,_0x1fb8xa){AutomationEvents[_0x85f8[10]](event+ _0x85f8[8]+ _0x1fb8x8[_0x85f8[9]],_0x1fb8x8);AutomationEvents[_0x85f8[10]](event,_0x1fb8x8);_0x1fb8xa(null)}}module[_0x85f8[11]]= AutomationEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/automation/automation.socket.js b/server/api/automation/automation.socket.js index 8a8f41a..66dc905 100644 --- a/server/api/automation/automation.socket.js +++ b/server/api/automation/automation.socket.js @@ -1 +1 @@ -var _0xc707=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x61\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x61\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xc707[0];const AutomationEvents=require(_0xc707[1]);var events=[_0xc707[2],_0xc707[3]];exports[_0xc707[4]]= function(_0x4c72x3){for(var _0x4c72x4=0,_0x4c72x5=events[_0xc707[5]];_0x4c72x4< _0x4c72x5;_0x4c72x4++){var _0x4c72x6=events[_0x4c72x4];var _0x4c72x7=createListener(_0xc707[6]+ _0x4c72x6,_0x4c72x3);AutomationEvents[_0xc707[7]](_0x4c72x6,_0x4c72x7);_0x4c72x3[_0xc707[7]](_0xc707[8],removeListener(_0x4c72x6,_0x4c72x7))}};function createListener(_0x4c72x6,_0x4c72x3){return function(_0x4c72x9){_0x4c72x3[_0xc707[9]](_0x4c72x6,_0x4c72x9)}}function removeListener(_0x4c72x6,_0x4c72x7){return function(){AutomationEvents[_0xc707[10]](_0x4c72x6,_0x4c72x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/automation/index.js b/server/api/automation/index.js index e200c5b..66dc905 100644 --- a/server/api/automation/index.js +++ b/server/api/automation/index.js @@ -1 +1 @@ -var _0x59a4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x61\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x59a4[0];var express=require(_0x59a4[1]);var controller=require(_0x59a4[2]);var auth=require(_0x59a4[3]);var router=express.Router();router[_0x59a4[9]](_0x59a4[4],auth[_0x59a4[5]](),auth[_0x59a4[7]]([13],[_0x59a4[6]]),controller[_0x59a4[8]]);router[_0x59a4[9]](_0x59a4[10],auth[_0x59a4[5]](),auth[_0x59a4[7]]([13],[_0x59a4[6]]),controller[_0x59a4[11]]);router[_0x59a4[13]](_0x59a4[4],auth[_0x59a4[5]](),auth[_0x59a4[7]]([13],[_0x59a4[6]]),controller[_0x59a4[12]]);router[_0x59a4[15]](_0x59a4[10],auth[_0x59a4[5]](),auth[_0x59a4[7]]([13],[_0x59a4[6]]),controller[_0x59a4[14]]);router[_0x59a4[17]](_0x59a4[10],auth[_0x59a4[5]](),auth[_0x59a4[7]]([13],[_0x59a4[6]]),controller[_0x59a4[16]]);router[_0x59a4[17]](_0x59a4[4],auth[_0x59a4[5]](),auth[_0x59a4[7]]([13],[_0x59a4[6]]),controller[_0x59a4[18]]);module[_0x59a4[19]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/canned_answer/canned_answer.controller.js b/server/api/canned_answer/canned_answer.controller.js index 30c4392..66dc905 100644 --- a/server/api/canned_answer/canned_answer.controller.js +++ b/server/api/canned_answer/canned_answer.controller.js @@ -1 +1 @@ -var _0xa461=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x43\x61\x6E\x6E\x65\x64\x41\x6E\x73\x77\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64\x73"];_0xa461[0];var _=require(_0xa461[1]);var Util=require(_0xa461[2]);var logger=require(_0xa461[4])(_0xa461[3]);var CannedAnswer=require(_0xa461[6])[_0xa461[5]];function handleError(_0x779cx6,_0x779cx7){_0x779cx7= _0x779cx7|| 500;return function(_0x779cx8){logger[_0xa461[8]](_0x779cx8[_0xa461[7]]);_0x779cx6[_0xa461[10]](_0x779cx7)[_0xa461[9]](_0x779cx8)}}function responseWithResult(_0x779cx6,_0x779cx7){_0x779cx7= _0x779cx7|| 200;return function(_0x779cxa){if(_0x779cxa){_0x779cx6[_0xa461[10]](_0x779cx7)[_0xa461[11]](_0x779cxa)}}}function handleEntityNotFound(_0x779cx6){return function(_0x779cxa){if(!_0x779cxa){_0x779cx6[_0xa461[10]](404)[_0xa461[12]]();return null};return _0x779cxa}}function saveUpdates(_0x779cxd){return function(_0x779cxa){return _0x779cxa[_0xa461[14]](_0x779cxd)[_0xa461[13]](function(_0x779cxe){return _0x779cxe})}}function removeEntity(_0x779cx6){return function(_0x779cxa){if(_0x779cxa){return _0x779cxa[_0xa461[15]]()[_0xa461[13]](function(){_0x779cx6[_0xa461[10]](204)[_0xa461[12]]()})}}}exports[_0xa461[16]]= function(_0x779cx10,_0x779cx6,_0x779cx11){return CannedAnswer[_0xa461[20]](Util[_0xa461[19]](_0x779cx10[_0xa461[18]]))[_0xa461[13]](function(_0x779cx12){_0x779cx6[_0xa461[10]](200)[_0xa461[9]](_0x779cx12)})[_0xa461[17]](handleError(_0x779cx6))};exports[_0xa461[21]]= function(_0x779cx10,_0x779cx6){return CannedAnswer[_0xa461[24]](_0x779cx10[_0xa461[23]][_0xa461[22]])[_0xa461[13]](handleEntityNotFound(_0x779cx6))[_0xa461[13]](responseWithResult(_0x779cx6))[_0xa461[17]](handleError(_0x779cx6))};exports[_0xa461[25]]= function(_0x779cx10,_0x779cx6){CannedAnswer[_0xa461[25]](_0x779cx10[_0xa461[26]])[_0xa461[13]](responseWithResult(_0x779cx6,201))[_0xa461[17]](handleError(_0x779cx6))};exports[_0xa461[27]]= function(_0x779cx10,_0x779cx6){if(_0x779cx10[_0xa461[26]][_0xa461[22]]){delete _0x779cx10[_0xa461[26]][_0xa461[22]]};return CannedAnswer[_0xa461[24]](_0x779cx10[_0xa461[23]][_0xa461[22]])[_0xa461[13]](handleEntityNotFound(_0x779cx6))[_0xa461[13]](saveUpdates(_0x779cx10[_0xa461[26]]))[_0xa461[13]](responseWithResult(_0x779cx6))[_0xa461[17]](handleError(_0x779cx6))};exports[_0xa461[15]]= function(_0x779cx10,_0x779cx6){return CannedAnswer[_0xa461[24]](_0x779cx10[_0xa461[23]][_0xa461[22]])[_0xa461[13]](handleEntityNotFound(_0x779cx6))[_0xa461[13]](removeEntity(_0x779cx6))[_0xa461[17]](handleError(_0x779cx6))};exports[_0xa461[28]]= function(_0x779cx10,_0x779cx6){return CannedAnswer[_0xa461[15]]({where:{id:_0x779cx10[_0xa461[18]][_0xa461[30]]},individualHooks:true})[_0xa461[13]](function(){return _0x779cx6[_0xa461[29]](204)})[_0xa461[17]](handleError(_0x779cx6))} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/canned_answer/canned_answer.events.js b/server/api/canned_answer/canned_answer.events.js index ae17b93..66dc905 100644 --- a/server/api/canned_answer/canned_answer.events.js +++ b/server/api/canned_answer/canned_answer.events.js @@ -1 +1 @@ -var _0xf35d=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x61\x6E\x6E\x65\x64\x41\x6E\x73\x77\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xf35d[0];const EventEmitter=require(_0xf35d[1]);const CannedAnswer=require(_0xf35d[3])[_0xf35d[2]];var CannedAnswerEvents= new EventEmitter();CannedAnswerEvents[_0xf35d[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xf35d[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xf35d[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xf35d[6]};for(var e in events){var event=events[e];CannedAnswer[_0xf35d[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x8758x8,_0x8758x9,_0x8758xa){CannedAnswerEvents[_0xf35d[10]](event+ _0xf35d[8]+ _0x8758x8[_0xf35d[9]],_0x8758x8);CannedAnswerEvents[_0xf35d[10]](event,_0x8758x8);_0x8758xa(null)}}module[_0xf35d[11]]= CannedAnswerEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/canned_answer/canned_answer.socket.js b/server/api/canned_answer/canned_answer.socket.js index ac30c46..66dc905 100644 --- a/server/api/canned_answer/canned_answer.socket.js +++ b/server/api/canned_answer/canned_answer.socket.js @@ -1 +1 @@ -var _0x695d=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x63\x61\x6E\x6E\x65\x64\x5F\x61\x6E\x73\x77\x65\x72\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x61\x6E\x6E\x65\x64\x5F\x61\x6E\x73\x77\x65\x72\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x695d[0];const CannedAnswerEvents=require(_0x695d[1]);var events=[_0x695d[2],_0x695d[3]];exports[_0x695d[4]]= function(_0xbb12x3){for(var _0xbb12x4=0,_0xbb12x5=events[_0x695d[5]];_0xbb12x4< _0xbb12x5;_0xbb12x4++){var _0xbb12x6=events[_0xbb12x4];var _0xbb12x7=createListener(_0x695d[6]+ _0xbb12x6,_0xbb12x3);CannedAnswerEvents[_0x695d[7]](_0xbb12x6,_0xbb12x7);_0xbb12x3[_0x695d[7]](_0x695d[8],removeListener(_0xbb12x6,_0xbb12x7))}};function createListener(_0xbb12x6,_0xbb12x3){return function(_0xbb12x9){_0xbb12x3[_0x695d[9]](_0xbb12x6,_0xbb12x9)}}function removeListener(_0xbb12x6,_0xbb12x7){return function(){CannedAnswerEvents[_0x695d[10]](_0xbb12x6,_0xbb12x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/canned_answer/index.js b/server/api/canned_answer/index.js index 4cfcccf..66dc905 100644 --- a/server/api/canned_answer/index.js +++ b/server/api/canned_answer/index.js @@ -1 +1 @@ -var _0x33f5=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x63\x61\x6E\x6E\x65\x64\x5F\x61\x6E\x73\x77\x65\x72\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x33f5[0];var express=require(_0x33f5[1]);var auth=require(_0x33f5[2]);var controller=require(_0x33f5[3]);var router=express.Router();router[_0x33f5[10]](_0x33f5[4],auth[_0x33f5[5]](),auth[_0x33f5[8]]([13],[_0x33f5[6],_0x33f5[7]]),controller[_0x33f5[9]]);router[_0x33f5[10]](_0x33f5[11],auth[_0x33f5[5]](),auth[_0x33f5[8]]([13],[_0x33f5[6]]),controller[_0x33f5[12]]);router[_0x33f5[14]](_0x33f5[4],auth[_0x33f5[5]](),auth[_0x33f5[8]]([13],[_0x33f5[6]]),controller[_0x33f5[13]]);router[_0x33f5[16]](_0x33f5[11],auth[_0x33f5[5]](),auth[_0x33f5[8]]([13],[_0x33f5[6]]),controller[_0x33f5[15]]);router[_0x33f5[18]](_0x33f5[4],auth[_0x33f5[5]](),auth[_0x33f5[8]]([13],[_0x33f5[6]]),controller[_0x33f5[17]]);router[_0x33f5[18]](_0x33f5[11],auth[_0x33f5[5]](),auth[_0x33f5[8]]([13],[_0x33f5[6]]),controller[_0x33f5[19]]);module[_0x33f5[20]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chanspy/chanspy.controller.js b/server/api/chanspy/chanspy.controller.js index 6252710..66dc905 100644 --- a/server/api/chanspy/chanspy.controller.js +++ b/server/api/chanspy/chanspy.controller.js @@ -1 +1 @@ -var _0x24af=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x43\x68\x61\x6E\x53\x70\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0x24af[0];var _=require(_0x24af[1]);var ChanSpy=require(_0x24af[3])[_0x24af[2]];var Util=require(_0x24af[4]);var logger=require(_0x24af[6])(_0x24af[5]);exports[_0x24af[7]]= function(_0x734dx5,_0x734dx6,_0x734dx7){return ChanSpy[_0x24af[14]](Util[_0x24af[13]](_0x734dx5[_0x24af[12]]))[_0x24af[11]](function(_0x734dx9){_0x734dx6[_0x24af[10]](200)[_0x24af[9]](_0x734dx9)})[_0x24af[8]](function(_0x734dx8){return handleError(_0x734dx6,_0x734dx8)})};exports[_0x24af[15]]= function(_0x734dx5,_0x734dx6){return ChanSpy[_0x24af[19]](_0x734dx5[_0x24af[18]][_0x24af[17]])[_0x24af[11]](function(_0x734dxa){if(!_0x734dxa){return _0x734dx6[_0x24af[16]](404)};return _0x734dx6[_0x24af[9]](_0x734dxa)})[_0x24af[8]](function(_0x734dx8){return handleError(_0x734dx6,_0x734dx8)})};exports[_0x24af[20]]= function(_0x734dx5,_0x734dx6){return ChanSpy[_0x24af[20]](_0x734dx5[_0x24af[21]])[_0x24af[11]](function(_0x734dxa){return _0x734dx6[_0x24af[10]](201)[_0x24af[9]](_0x734dxa)})[_0x24af[8]](function(_0x734dx8){return handleError(_0x734dx6,_0x734dx8)})};exports[_0x24af[22]]= function(_0x734dx5,_0x734dx6){if(_0x734dx5[_0x24af[21]][_0x24af[17]]){delete _0x734dx5[_0x24af[21]][_0x24af[17]]};return ChanSpy[_0x24af[19]](_0x734dx5[_0x24af[18]][_0x24af[17]])[_0x24af[11]](function(_0x734dxa){if(!_0x734dxa){return _0x734dx6[_0x24af[16]](404)};var _0x734dxb=_[_0x24af[23]](_0x734dxa,_0x734dx5[_0x24af[21]]);return _0x734dxb[_0x24af[24]]()})[_0x24af[11]](function(_0x734dxa){return _0x734dx6[_0x24af[10]](200)[_0x24af[9]](_0x734dxa)})[_0x24af[8]](function(_0x734dx8){return handleError(_0x734dx6,_0x734dx8)})};exports[_0x24af[25]]= function(_0x734dx5,_0x734dx6){return ChanSpy[_0x24af[19]](_0x734dx5[_0x24af[18]][_0x24af[17]])[_0x24af[11]](function(_0x734dxa){if(!_0x734dxa){return _0x734dx6[_0x24af[16]](404)};return _0x734dxa[_0x24af[25]]()})[_0x24af[11]](function(){return _0x734dx6[_0x24af[16]](204)})[_0x24af[8]](function(_0x734dx8){return handleError(_0x734dx6,_0x734dx8)})};exports[_0x24af[26]]= function(_0x734dx5,_0x734dx6){return ChanSpy[_0x24af[25]]({where:{id:_0x734dx5[_0x24af[12]][_0x24af[27]]},individualHooks:true})[_0x24af[11]](function(){return _0x734dx6[_0x24af[16]](204)})[_0x24af[8]](function(_0x734dx8){return handleError(_0x734dx6,_0x734dx8)})};function handleError(_0x734dx6,_0x734dx8){logger[_0x24af[29]](_0x734dx8[_0x24af[28]]);return _0x734dx6[_0x24af[10]](500)[_0x24af[9]](_0x734dx8)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chanspy/chanspy.events.js b/server/api/chanspy/chanspy.events.js index 1802354..66dc905 100644 --- a/server/api/chanspy/chanspy.events.js +++ b/server/api/chanspy/chanspy.events.js @@ -1 +1 @@ -var _0xc0ca=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x68\x61\x6E\x53\x70\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xc0ca[0];const EventEmitter=require(_0xc0ca[1]);const ChanSpy=require(_0xc0ca[3])[_0xc0ca[2]];var ChanSpyEvents= new EventEmitter();ChanSpyEvents[_0xc0ca[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xc0ca[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xc0ca[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xc0ca[6]};for(var e in events){var event=events[e];ChanSpy[_0xc0ca[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x3f2bx8,_0x3f2bx9,_0x3f2bxa){ChanSpyEvents[_0xc0ca[10]](event+ _0xc0ca[8]+ _0x3f2bx8[_0xc0ca[9]],_0x3f2bx8);ChanSpyEvents[_0xc0ca[10]](event,_0x3f2bx8);_0x3f2bxa(null)}}module[_0xc0ca[11]]= ChanSpyEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chanspy/chanspy.socket.js b/server/api/chanspy/chanspy.socket.js index 8e84163..66dc905 100644 --- a/server/api/chanspy/chanspy.socket.js +++ b/server/api/chanspy/chanspy.socket.js @@ -1 +1 @@ -var _0x38f6=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x63\x68\x61\x6E\x73\x70\x79\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x68\x61\x6E\x73\x70\x79\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x38f6[0];const ChanSpyEvents=require(_0x38f6[1]);var events=[_0x38f6[2],_0x38f6[3]];exports[_0x38f6[4]]= function(_0x9c1dx3){for(var _0x9c1dx4=0,_0x9c1dx5=events[_0x38f6[5]];_0x9c1dx4< _0x9c1dx5;_0x9c1dx4++){var _0x9c1dx6=events[_0x9c1dx4];var _0x9c1dx7=createListener(_0x38f6[6]+ _0x9c1dx6,_0x9c1dx3);ChanSpyEvents[_0x38f6[7]](_0x9c1dx6,_0x9c1dx7);_0x9c1dx3[_0x38f6[7]](_0x38f6[8],removeListener(_0x9c1dx6,_0x9c1dx7))}};function createListener(_0x9c1dx6,_0x9c1dx3){return function(_0x9c1dx9){_0x9c1dx3[_0x38f6[9]](_0x9c1dx6,_0x9c1dx9)}}function removeListener(_0x9c1dx6,_0x9c1dx7){return function(){ChanSpyEvents[_0x38f6[10]](_0x9c1dx6,_0x9c1dx7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chanspy/index.js b/server/api/chanspy/index.js index 9e04570..66dc905 100644 --- a/server/api/chanspy/index.js +++ b/server/api/chanspy/index.js @@ -1 +1 @@ -var _0x5e58=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x63\x68\x61\x6E\x73\x70\x79\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x5e58[0];var express=require(_0x5e58[1]);var controller=require(_0x5e58[2]);var auth=require(_0x5e58[3]);var router=express.Router();router[_0x5e58[9]](_0x5e58[4],auth[_0x5e58[5]](),auth[_0x5e58[7]]([7],[_0x5e58[6]]),controller[_0x5e58[8]]);router[_0x5e58[9]](_0x5e58[10],auth[_0x5e58[5]](),auth[_0x5e58[7]]([7],[_0x5e58[6]]),controller[_0x5e58[11]]);router[_0x5e58[13]](_0x5e58[4],auth[_0x5e58[5]](),auth[_0x5e58[7]]([7],[_0x5e58[6]]),controller[_0x5e58[12]]);router[_0x5e58[15]](_0x5e58[10],auth[_0x5e58[5]](),auth[_0x5e58[7]]([7],[_0x5e58[6]]),controller[_0x5e58[14]]);router[_0x5e58[17]](_0x5e58[4],auth[_0x5e58[5]](),auth[_0x5e58[7]]([7],[_0x5e58[6]]),controller[_0x5e58[16]]);router[_0x5e58[17]](_0x5e58[10],auth[_0x5e58[5]](),auth[_0x5e58[7]]([7],[_0x5e58[6]]),controller[_0x5e58[18]]);module[_0x5e58[19]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_application/chat_application.controller.js b/server/api/chat_application/chat_application.controller.js index 8403263..66dc905 100644 --- a/server/api/chat_application/chat_application.controller.js +++ b/server/api/chat_application/chat_application.controller.js @@ -1 +1 @@ -var _0xc37f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x43\x68\x61\x74\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x70\x72\x69\x6F\x72\x69\x74\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65\x49\x64","\x6D\x61\x78","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0xc37f[0];var _=require(_0xc37f[1]);var ChatApplication=require(_0xc37f[3])[_0xc37f[2]];var logger=require(_0xc37f[5])(_0xc37f[4]);exports[_0xc37f[6]]= function(_0x70c3x4,_0x70c3x5){return ChatApplication[_0xc37f[13]]({where:_0x70c3x4[_0xc37f[11]],order:_0xc37f[12],include:[{all:true}]})[_0xc37f[10]](function(_0x70c3x7){return _0x70c3x5[_0xc37f[9]](200)[_0xc37f[8]](_0x70c3x7)})[_0xc37f[7]](function(_0x70c3x6){return handleError(_0x70c3x5,_0x70c3x6)})};exports[_0xc37f[14]]= function(_0x70c3x4,_0x70c3x5){return ChatApplication[_0xc37f[18]](_0x70c3x4[_0xc37f[17]][_0xc37f[16]])[_0xc37f[10]](function(_0x70c3x8){if(!_0x70c3x8){return _0x70c3x5[_0xc37f[15]](404)};return _0x70c3x5[_0xc37f[8]](_0x70c3x8)})[_0xc37f[7]](function(_0x70c3x6){return handleError(_0x70c3x5,_0x70c3x6)})};exports[_0xc37f[19]]= function(_0x70c3x4,_0x70c3x5,_0x70c3x9){return ChatApplication[_0xc37f[22]](_0xc37f[12],{where:{ChatWebsiteId:_0x70c3x4[_0xc37f[20]][_0xc37f[21]]}})[_0xc37f[10]](function(_0x70c3xb){_0x70c3x4[_0xc37f[20]][_0xc37f[12]]= _0x70c3xb?++_0x70c3xb:1;return ChatApplication[_0xc37f[19]](_0x70c3x4[_0xc37f[20]])})[_0xc37f[10]](function(_0x70c3xa){return _0x70c3x5[_0xc37f[9]](201)[_0xc37f[8]](_0x70c3xa)})[_0xc37f[7]](function(_0x70c3x6){return handleError(_0x70c3x5,_0x70c3x6)})};exports[_0xc37f[23]]= function(_0x70c3x4,_0x70c3x5){if(_0x70c3x4[_0xc37f[20]][_0xc37f[16]]){delete _0x70c3x4[_0xc37f[20]][_0xc37f[16]]};return ChatApplication[_0xc37f[18]](_0x70c3x4[_0xc37f[17]][_0xc37f[16]])[_0xc37f[10]](function(_0x70c3x8){if(!_0x70c3x8){return _0x70c3x5[_0xc37f[15]](404)};var _0x70c3xc=_[_0xc37f[24]](_0x70c3x8,_0x70c3x4[_0xc37f[20]]);return _0x70c3xc[_0xc37f[25]]()})[_0xc37f[10]](function(_0x70c3x8){return _0x70c3x5[_0xc37f[9]](200)[_0xc37f[8]](_0x70c3x8)})[_0xc37f[7]](function(_0x70c3x6){return handleError(_0x70c3x5,_0x70c3x6)})};exports[_0xc37f[26]]= function(_0x70c3x4,_0x70c3x5){return ChatApplication[_0xc37f[18]](_0x70c3x4[_0xc37f[17]][_0xc37f[16]])[_0xc37f[10]](function(_0x70c3x8){if(!_0x70c3x8){return _0x70c3x5[_0xc37f[15]](404)};return _0x70c3x8[_0xc37f[26]]()})[_0xc37f[10]](function(){return _0x70c3x5[_0xc37f[15]](204)})[_0xc37f[7]](function(_0x70c3x6){return handleError(_0x70c3x5,_0x70c3x6)})};function handleError(_0x70c3x5,_0x70c3x6){logger[_0xc37f[28]](_0x70c3x6[_0xc37f[27]]);return _0x70c3x5[_0xc37f[9]](500)[_0xc37f[8]](_0x70c3x6)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_application/chat_application.events.js b/server/api/chat_application/chat_application.events.js index 9c1c257..66dc905 100644 --- a/server/api/chat_application/chat_application.events.js +++ b/server/api/chat_application/chat_application.events.js @@ -1 +1 @@ -var _0x6630=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x68\x61\x74\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x6630[0];const EventEmitter=require(_0x6630[1]);const ChatApplication=require(_0x6630[3])[_0x6630[2]];var ChatApplicationEvents= new EventEmitter();ChatApplicationEvents[_0x6630[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x6630[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x6630[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x6630[6]};for(var e in events){var event=events[e];ChatApplication[_0x6630[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x7a78x8,_0x7a78x9,_0x7a78xa){ChatApplicationEvents[_0x6630[10]](event+ _0x6630[8]+ _0x7a78x8[_0x6630[9]],_0x7a78x8);ChatApplicationEvents[_0x6630[10]](event,_0x7a78x8);_0x7a78xa(null)}}module[_0x6630[11]]= ChatApplicationEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_application/chat_application.socket.js b/server/api/chat_application/chat_application.socket.js index d598923..66dc905 100644 --- a/server/api/chat_application/chat_application.socket.js +++ b/server/api/chat_application/chat_application.socket.js @@ -1 +1 @@ -var _0x2706=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x63\x68\x61\x74\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x68\x61\x74\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x2706[0];const ChatApplicationEvents=require(_0x2706[1]);var events=[_0x2706[2],_0x2706[3]];exports[_0x2706[4]]= function(_0xc27dx3){for(var _0xc27dx4=0,_0xc27dx5=events[_0x2706[5]];_0xc27dx4< _0xc27dx5;_0xc27dx4++){var _0xc27dx6=events[_0xc27dx4];var _0xc27dx7=createListener(_0x2706[6]+ _0xc27dx6,_0xc27dx3);ChatApplicationEvents[_0x2706[7]](_0xc27dx6,_0xc27dx7);_0xc27dx3[_0x2706[7]](_0x2706[8],removeListener(_0xc27dx6,_0xc27dx7))}};function createListener(_0xc27dx6,_0xc27dx3){return function(_0xc27dx9){_0xc27dx3[_0x2706[9]](_0xc27dx6,_0xc27dx9)}}function removeListener(_0xc27dx6,_0xc27dx7){return function(){ChatApplicationEvents[_0x2706[10]](_0xc27dx6,_0xc27dx7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_application/index.js b/server/api/chat_application/index.js index f69dfb2..66dc905 100644 --- a/server/api/chat_application/index.js +++ b/server/api/chat_application/index.js @@ -1 +1 @@ -var _0x8fc1=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x63\x68\x61\x74\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x43\x68\x61\x74","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x8fc1[0];var express=require(_0x8fc1[1]);var controller=require(_0x8fc1[2]);var license=require(_0x8fc1[3]);var auth=require(_0x8fc1[4]);var router=express.Router();router[_0x8fc1[12]](_0x8fc1[5],license[_0x8fc1[6]](),license[_0x8fc1[7]](),auth[_0x8fc1[8]](),auth[_0x8fc1[10]]([8],[_0x8fc1[9]]),controller[_0x8fc1[11]]);router[_0x8fc1[12]](_0x8fc1[13],license[_0x8fc1[6]](),license[_0x8fc1[7]](),auth[_0x8fc1[8]](),auth[_0x8fc1[10]]([8],[_0x8fc1[9]]),controller[_0x8fc1[14]]);router[_0x8fc1[16]](_0x8fc1[5],license[_0x8fc1[6]](),license[_0x8fc1[7]](),auth[_0x8fc1[8]](),auth[_0x8fc1[10]]([8],[_0x8fc1[9]]),controller[_0x8fc1[15]]);router[_0x8fc1[18]](_0x8fc1[13],license[_0x8fc1[6]](),license[_0x8fc1[7]](),auth[_0x8fc1[8]](),auth[_0x8fc1[10]]([8],[_0x8fc1[9]]),controller[_0x8fc1[17]]);router[_0x8fc1[19]](_0x8fc1[13],license[_0x8fc1[6]](),license[_0x8fc1[7]](),auth[_0x8fc1[8]](),auth[_0x8fc1[10]]([8],[_0x8fc1[9]]),controller[_0x8fc1[17]]);router[_0x8fc1[21]](_0x8fc1[13],license[_0x8fc1[6]](),license[_0x8fc1[7]](),auth[_0x8fc1[8]](),auth[_0x8fc1[10]]([8],[_0x8fc1[9]]),controller[_0x8fc1[20]]);module[_0x8fc1[22]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_disposition/chat_disposition.controller.js b/server/api/chat_disposition/chat_disposition.controller.js index 507d8b5..66dc905 100644 --- a/server/api/chat_disposition/chat_disposition.controller.js +++ b/server/api/chat_disposition/chat_disposition.controller.js @@ -1 +1 @@ -var _0x8b48=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x43\x68\x61\x74\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65"];_0x8b48[0];var _=require(_0x8b48[1]);var logger=require(_0x8b48[3])(_0x8b48[2]);var ChatDisposition=require(_0x8b48[5])[_0x8b48[4]];function handleError(_0xe692x5,_0xe692x6){_0xe692x6= _0xe692x6|| 500;return function(_0xe692x7){logger[_0x8b48[7]](_0xe692x7[_0x8b48[6]]);_0xe692x5[_0x8b48[9]](_0xe692x6)[_0x8b48[8]](_0xe692x7)}}function responseWithResult(_0xe692x5,_0xe692x6){_0xe692x6= _0xe692x6|| 200;return function(_0xe692x9){if(_0xe692x9){_0xe692x5[_0x8b48[9]](_0xe692x6)[_0x8b48[10]](_0xe692x9)}}}function responseWithoutResult(_0xe692x5,_0xe692x6){_0xe692x6= _0xe692x6|| 200;return function(){_0xe692x5[_0x8b48[11]](_0xe692x6)}}function handleEntityNotFound(_0xe692x5){return function(_0xe692x9){if(!_0xe692x9){_0xe692x5[_0x8b48[9]](404)[_0x8b48[12]]();return null};return _0xe692x9}}function saveUpdates(_0xe692xd){return function(_0xe692x9){return _0xe692x9[_0x8b48[14]](_0xe692xd)[_0x8b48[13]](function(_0xe692xe){return _0xe692xe})}}function removeEntity(_0xe692x5){return function(_0xe692x9){if(_0xe692x9){return _0xe692x9[_0x8b48[15]]()[_0x8b48[13]](function(){_0xe692x5[_0x8b48[9]](204)[_0x8b48[12]]()})}}}exports[_0x8b48[16]]= function(_0xe692x10,_0xe692x5){ChatDisposition[_0x8b48[18]]()[_0x8b48[13]](responseWithResult(_0xe692x5))[_0x8b48[17]](handleError(_0xe692x5))};exports[_0x8b48[19]]= function(_0xe692x10,_0xe692x5){ChatDisposition[_0x8b48[22]](_0xe692x10[_0x8b48[21]][_0x8b48[20]])[_0x8b48[13]](handleEntityNotFound(_0xe692x5))[_0x8b48[13]](responseWithResult(_0xe692x5))[_0x8b48[17]](handleError(_0xe692x5))};exports[_0x8b48[23]]= function(_0xe692x10,_0xe692x5){ChatDisposition[_0x8b48[23]](_0xe692x10[_0x8b48[24]])[_0x8b48[13]](responseWithResult(_0xe692x5,201))[_0x8b48[17]](handleError(_0xe692x5))};exports[_0x8b48[25]]= function(_0xe692x10,_0xe692x5){if(_0xe692x10[_0x8b48[24]][_0x8b48[20]]){delete _0xe692x10[_0x8b48[24]][_0x8b48[20]]};ChatDisposition[_0x8b48[22]](_0xe692x10[_0x8b48[21]][_0x8b48[20]])[_0x8b48[13]](handleEntityNotFound(_0xe692x5))[_0x8b48[13]](saveUpdates(_0xe692x10[_0x8b48[24]]))[_0x8b48[13]](responseWithResult(_0xe692x5))[_0x8b48[17]](handleError(_0xe692x5))};exports[_0x8b48[15]]= function(_0xe692x10,_0xe692x5){ChatDisposition[_0x8b48[22]](_0xe692x10[_0x8b48[21]][_0x8b48[20]])[_0x8b48[13]](handleEntityNotFound(_0xe692x5))[_0x8b48[13]](removeEntity(_0xe692x5))[_0x8b48[17]](handleError(_0xe692x5))} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_disposition/chat_disposition.events.js b/server/api/chat_disposition/chat_disposition.events.js index 5971a9c..66dc905 100644 --- a/server/api/chat_disposition/chat_disposition.events.js +++ b/server/api/chat_disposition/chat_disposition.events.js @@ -1 +1 @@ -var _0x822e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x68\x61\x74\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x822e[0];const EventEmitter=require(_0x822e[1]);const ChatDisposition=require(_0x822e[3])[_0x822e[2]];var ChatDispositionEvents= new EventEmitter();ChatDispositionEvents[_0x822e[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x822e[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x822e[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x822e[6]};for(var e in events){var event=events[e];ChatDisposition[_0x822e[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x4c57x8,_0x4c57x9,_0x4c57xa){ChatDispositionEvents[_0x822e[10]](event+ _0x822e[8]+ _0x4c57x8[_0x822e[9]],_0x4c57x8);ChatDispositionEvents[_0x822e[10]](event,_0x4c57x8);_0x4c57xa(null)}}module[_0x822e[11]]= ChatDispositionEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_disposition/chat_disposition.socket.js b/server/api/chat_disposition/chat_disposition.socket.js index 179afeb..66dc905 100644 --- a/server/api/chat_disposition/chat_disposition.socket.js +++ b/server/api/chat_disposition/chat_disposition.socket.js @@ -1 +1 @@ -var _0x4afa=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x63\x68\x61\x74\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x68\x61\x74\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x4afa[0];const ChatDispositionEvents=require(_0x4afa[1]);var events=[_0x4afa[2],_0x4afa[3]];exports[_0x4afa[4]]= function(_0xf1c1x3){for(var _0xf1c1x4=0,_0xf1c1x5=events[_0x4afa[5]];_0xf1c1x4< _0xf1c1x5;_0xf1c1x4++){var _0xf1c1x6=events[_0xf1c1x4];var _0xf1c1x7=createListener(_0x4afa[6]+ _0xf1c1x6,_0xf1c1x3);ChatDispositionEvents[_0x4afa[7]](_0xf1c1x6,_0xf1c1x7);_0xf1c1x3[_0x4afa[7]](_0x4afa[8],removeListener(_0xf1c1x6,_0xf1c1x7))}};function createListener(_0xf1c1x6,_0xf1c1x3){return function(_0xf1c1x9){_0xf1c1x3[_0x4afa[9]](_0xf1c1x6,_0xf1c1x9)}}function removeListener(_0xf1c1x6,_0xf1c1x7){return function(){ChatDispositionEvents[_0x4afa[10]](_0xf1c1x6,_0xf1c1x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_disposition/index.js b/server/api/chat_disposition/index.js index 23bf7b5..66dc905 100644 --- a/server/api/chat_disposition/index.js +++ b/server/api/chat_disposition/index.js @@ -1 +1 @@ -var _0xfe74=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x63\x68\x61\x74\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x43\x68\x61\x74","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xfe74[0];var express=require(_0xfe74[1]);var auth=require(_0xfe74[2]);var controller=require(_0xfe74[3]);var license=require(_0xfe74[4]);var router=express.Router();router[_0xfe74[10]](_0xfe74[5],license[_0xfe74[6]](),license[_0xfe74[7]](),auth[_0xfe74[8]](),controller[_0xfe74[9]]);router[_0xfe74[10]](_0xfe74[11],license[_0xfe74[6]](),license[_0xfe74[7]](),auth[_0xfe74[8]](),controller[_0xfe74[12]]);router[_0xfe74[14]](_0xfe74[5],license[_0xfe74[6]](),license[_0xfe74[7]](),auth[_0xfe74[8]](),controller[_0xfe74[13]]);router[_0xfe74[16]](_0xfe74[11],license[_0xfe74[6]](),license[_0xfe74[7]](),auth[_0xfe74[8]](),controller[_0xfe74[15]]);router[_0xfe74[17]](_0xfe74[11],license[_0xfe74[6]](),license[_0xfe74[7]](),auth[_0xfe74[8]](),controller[_0xfe74[15]]);router[_0xfe74[19]](_0xfe74[11],license[_0xfe74[6]](),license[_0xfe74[7]](),auth[_0xfe74[8]](),controller[_0xfe74[18]]);module[_0xfe74[20]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_enquiry/enquiry.controller.js b/server/api/chat_enquiry/enquiry.controller.js index 97055f7..66dc905 100644 --- a/server/api/chat_enquiry/enquiry.controller.js +++ b/server/api/chat_enquiry/enquiry.controller.js @@ -1 +1 @@ -var _0x6c92=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x43\x68\x61\x74\x45\x6E\x71\x75\x69\x72\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x43\x68\x61\x74\x56\x69\x73\x69\x74\x6F\x72","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65","\x4C\x69\x73\x74","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x69\x64","\x6E\x61\x6D\x65","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x70\x61\x72\x61\x6D\x73","\x4C\x69\x73\x74\x49\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0x6c92[0];var _=require(_0x6c92[1]);var Util=require(_0x6c92[2]);var logger=require(_0x6c92[4])(_0x6c92[3]);var ChatEnquiry=require(_0x6c92[6])[_0x6c92[5]];var ChatVisitor=require(_0x6c92[6])[_0x6c92[7]];var ChatWebsite=require(_0x6c92[6])[_0x6c92[8]];var List=require(_0x6c92[6])[_0x6c92[9]];exports[_0x6c92[10]]= function(_0xa13ax8,_0xa13ax9,_0xa13axa){return ChatEnquiry[_0x6c92[20]](_[_0x6c92[19]](Util[_0x6c92[16]](_0xa13ax8[_0x6c92[15]]),{include:[{model:ChatWebsite,attributes:[_0x6c92[17],_0x6c92[18]]}]}))[_0x6c92[14]](function(_0xa13axc){return _0xa13ax9[_0x6c92[13]](200)[_0x6c92[12]](_0xa13axc)})[_0x6c92[11]](function(_0xa13axb){return handleError(_0xa13ax9,_0xa13axb)})};exports[_0x6c92[21]]= function(_0xa13ax8,_0xa13ax9){return ChatEnquiry[_0x6c92[25]](_0xa13ax8[_0x6c92[23]][_0x6c92[17]],{include:[{model:ChatWebsite,attributes:[_0x6c92[17],_0x6c92[18],_0x6c92[24]]},{model:ChatVisitor}]})[_0x6c92[14]](function(_0xa13axd){if(!_0xa13axd){return _0xa13ax9[_0x6c92[22]](404)};return _0xa13ax9[_0x6c92[12]](_0xa13axd)})[_0x6c92[11]](function(_0xa13axb){return handleError(_0xa13ax9,_0xa13axb)})};exports[_0x6c92[26]]= function(_0xa13ax8,_0xa13ax9){return ChatEnquiry[_0x6c92[26]](_0xa13ax8[_0x6c92[27]])[_0x6c92[14]](function(_0xa13axd){return _0xa13ax9[_0x6c92[13]](201)[_0x6c92[12]](_0xa13axd)})[_0x6c92[11]](function(_0xa13axb){return handleError(_0xa13ax9,_0xa13axb)})};exports[_0x6c92[28]]= function(_0xa13ax8,_0xa13ax9){if(_0xa13ax8[_0x6c92[27]][_0x6c92[17]]){delete _0xa13ax8[_0x6c92[27]][_0x6c92[17]]};return ChatEnquiry[_0x6c92[25]](_0xa13ax8[_0x6c92[23]][_0x6c92[17]])[_0x6c92[14]](function(_0xa13axd){if(!_0xa13axd){return _0xa13ax9[_0x6c92[22]](404)};var _0xa13axe=_[_0x6c92[19]](_0xa13axd,_0xa13ax8[_0x6c92[27]]);return _0xa13axe[_0x6c92[29]]()})[_0x6c92[14]](function(_0xa13axd){return _0xa13ax9[_0x6c92[13]](200)[_0x6c92[12]](_0xa13axd)})[_0x6c92[11]](function(_0xa13axb){return handleError(_0xa13ax9,_0xa13axb)})};exports[_0x6c92[30]]= function(_0xa13ax8,_0xa13ax9){return ChatEnquiry[_0x6c92[25]](_0xa13ax8[_0x6c92[23]][_0x6c92[17]])[_0x6c92[14]](function(_0xa13axd){if(!_0xa13axd){return _0xa13ax9[_0x6c92[22]](404)};return _0xa13axd[_0x6c92[30]]()})[_0x6c92[14]](function(){return _0xa13ax9[_0x6c92[22]](204)})[_0x6c92[11]](function(_0xa13axb){return handleError(_0xa13ax9,_0xa13axb)})};exports[_0x6c92[31]]= function(_0xa13ax8,_0xa13ax9){return ChatEnquiry[_0x6c92[30]]({where:{id:_0xa13ax8[_0x6c92[15]][_0x6c92[32]]},individualHooks:true})[_0x6c92[14]](function(){return _0xa13ax9[_0x6c92[22]](204)})[_0x6c92[11]](function(_0xa13axb){return handleError(_0xa13ax9,_0xa13axb)})};function handleError(_0xa13ax9,_0xa13axb){logger[_0x6c92[34]](_0xa13axb[_0x6c92[33]]);return _0xa13ax9[_0x6c92[13]](500)[_0x6c92[12]](_0xa13axb)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_enquiry/enquiry.events.js b/server/api/chat_enquiry/enquiry.events.js index 9ffac6c..66dc905 100644 --- a/server/api/chat_enquiry/enquiry.events.js +++ b/server/api/chat_enquiry/enquiry.events.js @@ -1 +1 @@ -var _0xc223=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x68\x61\x74\x45\x6E\x71\x75\x69\x72\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xc223[0];const EventEmitter=require(_0xc223[1]);const Enquiry=require(_0xc223[3])[_0xc223[2]];var EnquiryEvents= new EventEmitter();EnquiryEvents[_0xc223[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xc223[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xc223[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xc223[6]};for(var e in events){var event=events[e];Enquiry[_0xc223[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xe9bex8,_0xe9bex9,_0xe9bexa){EnquiryEvents[_0xc223[10]](event+ _0xc223[8]+ _0xe9bex8[_0xc223[9]],_0xe9bex8);EnquiryEvents[_0xc223[10]](event,_0xe9bex8);_0xe9bexa(null)}}module[_0xc223[11]]= EnquiryEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_enquiry/enquiry.socket.js b/server/api/chat_enquiry/enquiry.socket.js index 7f82bf5..66dc905 100644 --- a/server/api/chat_enquiry/enquiry.socket.js +++ b/server/api/chat_enquiry/enquiry.socket.js @@ -1 +1 @@ -var _0x7cf6=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x65\x6E\x71\x75\x69\x72\x79\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x65\x6E\x71\x75\x69\x72\x79\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x7cf6[0];const ChatEnquiryEvents=require(_0x7cf6[1]);var events=[_0x7cf6[2],_0x7cf6[3]];exports[_0x7cf6[4]]= function(_0xb9ebx3){for(var _0xb9ebx4=0,_0xb9ebx5=events[_0x7cf6[5]];_0xb9ebx4< _0xb9ebx5;_0xb9ebx4++){var _0xb9ebx6=events[_0xb9ebx4];var _0xb9ebx7=createListener(_0x7cf6[6]+ _0xb9ebx6,_0xb9ebx3);ChatEnquiryEvents[_0x7cf6[7]](_0xb9ebx6,_0xb9ebx7);_0xb9ebx3[_0x7cf6[7]](_0x7cf6[8],removeListener(_0xb9ebx6,_0xb9ebx7))}};function createListener(_0xb9ebx6,_0xb9ebx3){return function(_0xb9ebx9){_0xb9ebx3[_0x7cf6[9]](_0xb9ebx6,_0xb9ebx9)}}function removeListener(_0xb9ebx6,_0xb9ebx7){return function(){ChatEnquiryEvents[_0x7cf6[10]](_0xb9ebx6,_0xb9ebx7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_enquiry/index.js b/server/api/chat_enquiry/index.js index 024dc06..66dc905 100644 --- a/server/api/chat_enquiry/index.js +++ b/server/api/chat_enquiry/index.js @@ -1 +1 @@ -var _0x5608=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x65\x6E\x71\x75\x69\x72\x79\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x43\x68\x61\x74","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x5608[0];var express=require(_0x5608[1]);var controller=require(_0x5608[2]);var license=require(_0x5608[3]);var auth=require(_0x5608[4]);var router=express.Router();router[_0x5608[12]](_0x5608[5],license[_0x5608[6]](),license[_0x5608[7]](),auth[_0x5608[8]](),auth[_0x5608[10]]([8],[_0x5608[9]]),controller[_0x5608[11]]);router[_0x5608[12]](_0x5608[13],license[_0x5608[6]](),license[_0x5608[7]](),auth[_0x5608[8]](),auth[_0x5608[10]]([8],[_0x5608[9]]),controller[_0x5608[14]]);router[_0x5608[16]](_0x5608[5],license[_0x5608[6]](),license[_0x5608[7]](),auth[_0x5608[8]](),auth[_0x5608[10]]([8],[_0x5608[9]]),controller[_0x5608[15]]);router[_0x5608[18]](_0x5608[13],license[_0x5608[6]](),license[_0x5608[7]](),auth[_0x5608[8]](),auth[_0x5608[10]]([8],[_0x5608[9]]),controller[_0x5608[17]]);router[_0x5608[19]](_0x5608[13],license[_0x5608[6]](),license[_0x5608[7]](),auth[_0x5608[8]](),auth[_0x5608[10]]([8],[_0x5608[9]]),controller[_0x5608[17]]);router[_0x5608[21]](_0x5608[5],license[_0x5608[6]](),license[_0x5608[7]](),auth[_0x5608[8]](),auth[_0x5608[10]]([8],[_0x5608[9]]),controller[_0x5608[20]]);router[_0x5608[21]](_0x5608[13],license[_0x5608[6]](),license[_0x5608[7]](),auth[_0x5608[8]](),auth[_0x5608[10]]([8],[_0x5608[9]]),controller[_0x5608[22]]);module[_0x5608[23]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_message/chat_message.controller.js b/server/api/chat_message/chat_message.controller.js index ca24c95..66dc905 100644 --- a/server/api/chat_message/chat_message.controller.js +++ b/server/api/chat_message/chat_message.controller.js @@ -1 +1 @@ -var _0xe8cf=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x64\x35","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x43\x68\x61\x74\x4D\x65\x73\x73\x61\x67\x65","\x43\x68\x61\x74\x56\x69\x73\x69\x74\x6F\x72","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x73\x65\x72","\x6D\x65\x72\x67\x65","\x75\x70\x64\x61\x74\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0xe8cf[0];var _=require(_0xe8cf[1]);var md5=require(_0xe8cf[2]);var logger=require(_0xe8cf[4])(_0xe8cf[3]);var User=require(_0xe8cf[6])[_0xe8cf[5]];var ChatRoom=require(_0xe8cf[6])[_0xe8cf[7]];var ChatMessage=require(_0xe8cf[6])[_0xe8cf[8]];var ChatVisitor=require(_0xe8cf[6])[_0xe8cf[9]];exports[_0xe8cf[10]]= function(_0x77ecx8,_0x77ecx9){return ChatMessage[_0xe8cf[15]]()[_0xe8cf[14]](function(_0x77ecxb){return _0x77ecx9[_0xe8cf[13]](200)[_0xe8cf[12]](_0x77ecxb)})[_0xe8cf[11]](function(_0x77ecxa){return handleError(_0x77ecx9,_0x77ecxa)})};exports[_0xe8cf[16]]= function(_0x77ecx8,_0x77ecx9){return ChatMessage[_0xe8cf[16]]()[_0xe8cf[14]](function(_0x77ecxc){return _0x77ecx9[_0xe8cf[13]](200)[_0xe8cf[12]](_0x77ecxc)})[_0xe8cf[11]](function(_0x77ecxa){return handleError(_0x77ecx9,_0x77ecxa)})};exports[_0xe8cf[17]]= function(_0x77ecx8,_0x77ecx9){return ChatMessage[_0xe8cf[21]](_0x77ecx8[_0xe8cf[20]][_0xe8cf[19]])[_0xe8cf[14]](function(_0x77ecxd){if(!_0x77ecxd){return _0x77ecx9[_0xe8cf[18]](404)};return _0x77ecx9[_0xe8cf[12]](_0x77ecxd)})[_0xe8cf[11]](function(_0x77ecxa){return handleError(_0x77ecx9,_0x77ecxa)})};exports[_0xe8cf[22]]= function(_0x77ecx8,_0x77ecx9,_0x77ecxe){return ChatMessage[_0xe8cf[22]](_[_0xe8cf[25]](_0x77ecx8[_0xe8cf[23]],{UserId:_0x77ecx8[_0xe8cf[24]][_0xe8cf[19]]}))[_0xe8cf[14]](function(_0x77ecxd){return _0x77ecx9[_0xe8cf[13]](201)[_0xe8cf[12]](_0x77ecxd)})[_0xe8cf[11]](function(_0x77ecxa){return handleError(_0x77ecx9,_0x77ecxa)})};exports[_0xe8cf[26]]= function(_0x77ecx8,_0x77ecx9){if(_0x77ecx8[_0xe8cf[23]][_0xe8cf[19]]){delete _0x77ecx8[_0xe8cf[23]][_0xe8cf[19]]};return ChatMessage[_0xe8cf[21]](_0x77ecx8[_0xe8cf[20]][_0xe8cf[19]])[_0xe8cf[14]](function(_0x77ecxd){if(!_0x77ecxd){return _0x77ecx9[_0xe8cf[18]](404)};var _0x77ecxf=_[_0xe8cf[25]](_0x77ecxd,_0x77ecx8[_0xe8cf[23]]);return _0x77ecxf[_0xe8cf[27]]()})[_0xe8cf[14]](function(_0x77ecxd){return _0x77ecx9[_0xe8cf[13]](200)[_0xe8cf[12]](_0x77ecxd)})[_0xe8cf[11]](function(_0x77ecxa){return handleError(_0x77ecx9,_0x77ecxa)})};exports[_0xe8cf[28]]= function(_0x77ecx8,_0x77ecx9){return ChatMessage[_0xe8cf[21]](_0x77ecx8[_0xe8cf[20]][_0xe8cf[19]])[_0xe8cf[14]](function(_0x77ecxd){if(!_0x77ecxd){return _0x77ecx9[_0xe8cf[18]](404)};return _0x77ecxd[_0xe8cf[28]]()})[_0xe8cf[14]](function(){return _0x77ecx9[_0xe8cf[18]](204)})[_0xe8cf[11]](function(_0x77ecxa){return handleError(_0x77ecx9,_0x77ecxa)})};function handleError(_0x77ecx9,_0x77ecxa){logger[_0xe8cf[30]](_0x77ecxa[_0xe8cf[29]]);return _0x77ecx9[_0xe8cf[13]](500)[_0xe8cf[12]](_0x77ecxa)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_message/chat_message.events.js b/server/api/chat_message/chat_message.events.js index e2badd6..66dc905 100644 --- a/server/api/chat_message/chat_message.events.js +++ b/server/api/chat_message/chat_message.events.js @@ -1 +1 @@ -var _0xbea4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x68\x61\x74\x4D\x65\x73\x73\x61\x67\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xbea4[0];const EventEmitter=require(_0xbea4[1]);const ChatMessage=require(_0xbea4[3])[_0xbea4[2]];var ChatMessageEvents= new EventEmitter();ChatMessageEvents[_0xbea4[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xbea4[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xbea4[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xbea4[6]};for(var e in events){var event=events[e];ChatMessage[_0xbea4[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xace0x8,_0xace0x9,_0xace0xa){ChatMessageEvents[_0xbea4[10]](event+ _0xbea4[8]+ _0xace0x8[_0xbea4[9]],_0xace0x8);ChatMessageEvents[_0xbea4[10]](event,_0xace0x8);_0xace0xa(null)}}module[_0xbea4[11]]= ChatMessageEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_message/chat_message.socket.js b/server/api/chat_message/chat_message.socket.js index e54f11d..66dc905 100644 --- a/server/api/chat_message/chat_message.socket.js +++ b/server/api/chat_message/chat_message.socket.js @@ -1 +1 @@ -var _0xc98c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x43\x68\x61\x74\x4D\x65\x73\x73\x61\x67\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x43\x68\x61\x74\x56\x69\x73\x69\x74\x6F\x72","\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x2E\x2F\x63\x68\x61\x74\x5F\x6D\x65\x73\x73\x61\x67\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x68\x61\x74\x5F\x6D\x65\x73\x73\x61\x67\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x55\x73\x65\x72\x73","\x55\x73\x65\x72\x49\x64","\x66\x69\x6E\x64","\x69\x64","\x6D\x61\x70","\x75\x73\x65\x72\x49\x64","\x74\x6F\x49\x6E\x74\x65\x67\x65\x72","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x6D\x65\x72\x67\x65","\x65\x6D\x69\x74","\x69\x6E\x74\x65\x72\x6E\x61\x6C","\x65\x78\x74\x65\x72\x6E\x61\x6C","\x61\x64\x6D\x69\x6E","\x75\x73\x65\x72","\x72\x6F\x6C\x65","\x67\x72\x6F\x75\x70","\x43\x68\x61\x74\x20\x52\x6F\x6F\x6D\x20\x74\x79\x70\x65\x20\x6E\x6F\x74\x20\x72\x65\x63\x6F\x67\x6E\x69\x7A\x65\x64","\x74\x79\x70\x65","\x74\x68\x65\x6E","\x43\x68\x61\x74\x52\x6F\x6F\x6D\x49\x64","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x75\x73\x65\x72\x70\x69\x63","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xc98c[0];const _=require(_0xc98c[1]);const ChatMessage=require(_0xc98c[3])[_0xc98c[2]];const User=require(_0xc98c[3])[_0xc98c[4]];const ChatVisitor=require(_0xc98c[3])[_0xc98c[5]];const ChatRoom=require(_0xc98c[3])[_0xc98c[6]];const ChatMessageEvents=require(_0xc98c[7]);var events=[_0xc98c[8],_0xc98c[9]];exports[_0xc98c[10]]= function(_0xf279x8){for(var _0xf279x9=0,_0xf279xa=events[_0xc98c[11]];_0xf279x9< _0xf279xa;_0xf279x9++){var _0xf279xb=events[_0xf279x9];var _0xf279xc=createListener(_0xc98c[12]+ _0xf279xb,_0xf279x8);ChatMessageEvents[_0xc98c[13]](_0xf279xb,_0xf279xc);_0xf279x8[_0xc98c[13]](_0xc98c[14],removeListener(_0xf279xb,_0xf279xc))}};function createListener(_0xf279xb,_0xf279x8){return function(_0xf279xe){return ChatRoom[_0xc98c[19]]({where:{id:_0xf279xe[_0xc98c[37]]},include:[{model:User,attributes:[_0xc98c[20],_0xc98c[38],_0xc98c[39],_0xc98c[40],_0xc98c[32],_0xc98c[28],_0xc98c[41]]},{model:ChatVisitor,attributes:[_0xc98c[20],_0xc98c[39],_0xc98c[40]]}]})[_0xc98c[36]](function(_0xf279x10){if(_0xf279x10){var _0xf279x11=_0xf279x10[_0xc98c[17]];var _0xf279x12=_0xf279x10[_0xc98c[5]];var _0xf279x13=_[_0xc98c[19]](_0xf279x11,{id:_0xf279xe[_0xc98c[18]]});var _0xf279x14=_[_0xc98c[21]](_0xf279x11,_0xc98c[20]);switch(_0xf279x10[_0xc98c[35]]){case _0xc98c[28]:if(_[_0xc98c[24]](_0xf279x14,_[_0xc98c[23]](_0xf279x8[_0xc98c[22]]))&& (_0xf279x13|| _0xf279x12)){_0xf279x8[_0xc98c[27]](_0xf279xb,_[_0xc98c[26]](_0xf279xe[_0xc98c[25]],{User:_0xf279x13,ChatVisitor:_0xf279x13?null:_0xf279x12,userids:_0xf279x14}))};break;case _0xc98c[29]:;case _0xc98c[33]:if((_[_0xc98c[24]](_0xf279x14,_[_0xc98c[23]](_0xf279x8[_0xc98c[22]]))|| _[_0xc98c[24]]([_0xc98c[30],_0xc98c[31]],_0xf279x8[_0xc98c[32]]))&& (_0xf279x13|| _0xf279x12)){_0xf279x8[_0xc98c[27]](_0xf279xb,_[_0xc98c[26]](_0xf279xe[_0xc98c[25]],{User:_0xf279x13,ChatVisitor:_0xf279x13?null:_0xf279x12,userids:_0xf279x14}))};break;default:console[_0xc98c[15]](_0xc98c[34],_0xf279x10[_0xc98c[35]])}}})[_0xc98c[16]](function(_0xf279xf){console[_0xc98c[15]](_0xf279xf)})}}function removeListener(_0xf279xb,_0xf279xc){return function(){ChatMessageEvents[_0xc98c[42]](_0xf279xb,_0xf279xc)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_message/index.js b/server/api/chat_message/index.js index 89f00ff..66dc905 100644 --- a/server/api/chat_message/index.js +++ b/server/api/chat_message/index.js @@ -1 +1 @@ -var _0xafb9=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x63\x68\x61\x74\x5F\x6D\x65\x73\x73\x61\x67\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x43\x68\x61\x74","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xafb9[0];var express=require(_0xafb9[1]);var controller=require(_0xafb9[2]);var license=require(_0xafb9[3]);var auth=require(_0xafb9[4]);var router=express.Router();router[_0xafb9[13]](_0xafb9[5],license[_0xafb9[6]](),license[_0xafb9[7]](),auth[_0xafb9[8]](),auth[_0xafb9[11]]([8],[_0xafb9[9],_0xafb9[10]]),controller[_0xafb9[12]]);router[_0xafb9[13]](_0xafb9[14],license[_0xafb9[6]](),license[_0xafb9[7]](),auth[_0xafb9[8]](),auth[_0xafb9[11]]([8],[_0xafb9[9]]),controller[_0xafb9[15]]);router[_0xafb9[13]](_0xafb9[16],license[_0xafb9[6]](),license[_0xafb9[7]](),auth[_0xafb9[8]](),auth[_0xafb9[11]]([8],[_0xafb9[9],_0xafb9[10]]),controller[_0xafb9[17]]);router[_0xafb9[19]](_0xafb9[5],license[_0xafb9[6]](),license[_0xafb9[7]](),auth[_0xafb9[8]](),auth[_0xafb9[11]]([8],[_0xafb9[9],_0xafb9[10]]),controller[_0xafb9[18]]);router[_0xafb9[21]](_0xafb9[16],license[_0xafb9[6]](),license[_0xafb9[7]](),auth[_0xafb9[8]](),auth[_0xafb9[11]]([8],[_0xafb9[9]]),controller[_0xafb9[20]]);router[_0xafb9[23]](_0xafb9[16],license[_0xafb9[6]](),license[_0xafb9[7]](),auth[_0xafb9[8]](),auth[_0xafb9[11]]([8],[_0xafb9[9]]),controller[_0xafb9[22]]);module[_0xafb9[24]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_proactive_action/chat_proactive_action.controller.js b/server/api/chat_proactive_action/chat_proactive_action.controller.js index 7a56828..66dc905 100644 --- a/server/api/chat_proactive_action/chat_proactive_action.controller.js +++ b/server/api/chat_proactive_action/chat_proactive_action.controller.js @@ -1 +1 @@ -var _0xd3a7=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x43\x68\x61\x74\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65"];_0xd3a7[0];var _=require(_0xd3a7[1]);var Util=require(_0xd3a7[2]);var logger=require(_0xd3a7[4])(_0xd3a7[3]);var ChatProactiveAction=require(_0xd3a7[6])[_0xd3a7[5]];function handleError(_0x81d4x6,_0x81d4x7){_0x81d4x7= _0x81d4x7|| 500;return function(_0x81d4x8){logger[_0xd3a7[8]](_0x81d4x8[_0xd3a7[7]]);_0x81d4x6[_0xd3a7[10]](_0x81d4x7)[_0xd3a7[9]](_0x81d4x8)}}function responseWithResult(_0x81d4x6,_0x81d4x7){_0x81d4x7= _0x81d4x7|| 200;return function(_0x81d4xa){if(_0x81d4xa){_0x81d4x6[_0xd3a7[10]](_0x81d4x7)[_0xd3a7[11]](_0x81d4xa)}}}function responseWithoutResult(_0x81d4x6,_0x81d4x7){_0x81d4x7= _0x81d4x7|| 204;return function(){_0x81d4x6[_0xd3a7[12]](_0x81d4x7)}}function handleEntityNotFound(_0x81d4x6){return function(_0x81d4xa){if(!_0x81d4xa){_0x81d4x6[_0xd3a7[10]](404)[_0xd3a7[13]]();return null};return _0x81d4xa}}function saveUpdates(_0x81d4xe){return function(_0x81d4xa){return _0x81d4xa[_0xd3a7[15]](_0x81d4xe)[_0xd3a7[14]](function(_0x81d4xf){return _0x81d4xf})}}function removeEntity(_0x81d4x6){return function(_0x81d4xa){if(_0x81d4xa){return _0x81d4xa[_0xd3a7[16]]()[_0xd3a7[14]](function(){_0x81d4x6[_0xd3a7[10]](204)[_0xd3a7[13]]()})}}}exports[_0xd3a7[17]]= function(_0x81d4x11,_0x81d4x6){return ChatProactiveAction[_0xd3a7[21]](Util[_0xd3a7[20]](_0x81d4x11[_0xd3a7[19]]))[_0xd3a7[14]](responseWithResult(_0x81d4x6))[_0xd3a7[18]](handleError(_0x81d4x6))};exports[_0xd3a7[22]]= function(_0x81d4x11,_0x81d4x6){return ChatProactiveAction[_0xd3a7[25]](_0x81d4x11[_0xd3a7[24]][_0xd3a7[23]])[_0xd3a7[14]](handleEntityNotFound(_0x81d4x6))[_0xd3a7[14]](responseWithResult(_0x81d4x6))[_0xd3a7[18]](handleError(_0x81d4x6))};exports[_0xd3a7[26]]= function(_0x81d4x11,_0x81d4x6){return ChatProactiveAction[_0xd3a7[26]](_0x81d4x11[_0xd3a7[27]])[_0xd3a7[14]](responseWithResult(_0x81d4x6,201))[_0xd3a7[18]](handleError(_0x81d4x6))};exports[_0xd3a7[28]]= function(_0x81d4x11,_0x81d4x6){if(_0x81d4x11[_0xd3a7[27]][_0xd3a7[23]]){delete _0x81d4x11[_0xd3a7[27]][_0xd3a7[23]]};return ChatProactiveAction[_0xd3a7[25]](_0x81d4x11[_0xd3a7[24]][_0xd3a7[23]])[_0xd3a7[14]](handleEntityNotFound(_0x81d4x6))[_0xd3a7[14]](saveUpdates(_0x81d4x11[_0xd3a7[27]]))[_0xd3a7[14]](responseWithResult(_0x81d4x6))[_0xd3a7[18]](handleError(_0x81d4x6))};exports[_0xd3a7[16]]= function(_0x81d4x11,_0x81d4x6){return ChatProactiveAction[_0xd3a7[25]](_0x81d4x11[_0xd3a7[24]][_0xd3a7[23]])[_0xd3a7[14]](handleEntityNotFound(_0x81d4x6))[_0xd3a7[14]](removeEntity(_0x81d4x6))[_0xd3a7[18]](handleError(_0x81d4x6))} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_proactive_action/chat_proactive_action.events.js b/server/api/chat_proactive_action/chat_proactive_action.events.js index 7ff4b53..66dc905 100644 --- a/server/api/chat_proactive_action/chat_proactive_action.events.js +++ b/server/api/chat_proactive_action/chat_proactive_action.events.js @@ -1 +1 @@ -var _0x504e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x68\x61\x74\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x504e[0];const EventEmitter=require(_0x504e[1]);const ChatProactiveAction=require(_0x504e[3])[_0x504e[2]];var ChatProactiveActionEvents= new EventEmitter();ChatProactiveActionEvents[_0x504e[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x504e[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x504e[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x504e[6]};for(var e in events){var event=events[e];ChatProactiveAction[_0x504e[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x55b8x8,_0x55b8x9,_0x55b8xa){ChatProactiveActionEvents[_0x504e[10]](event+ _0x504e[8]+ _0x55b8x8[_0x504e[9]],_0x55b8x8);ChatProactiveActionEvents[_0x504e[10]](event,_0x55b8x8);_0x55b8xa(null)}}module[_0x504e[11]]= ChatProactiveActionEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_proactive_action/chat_proactive_action.socket.js b/server/api/chat_proactive_action/chat_proactive_action.socket.js index b2aff20..66dc905 100644 --- a/server/api/chat_proactive_action/chat_proactive_action.socket.js +++ b/server/api/chat_proactive_action/chat_proactive_action.socket.js @@ -1 +1 @@ -var _0xd8db=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x63\x68\x61\x74\x5F\x70\x72\x6F\x61\x63\x74\x69\x76\x65\x5F\x61\x63\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x68\x61\x74\x5F\x70\x72\x6F\x61\x63\x74\x69\x76\x65\x5F\x61\x63\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xd8db[0];const ChatProactiveActionEvents=require(_0xd8db[1]);var events=[_0xd8db[2],_0xd8db[3]];exports[_0xd8db[4]]= function(_0x3990x3){for(var _0x3990x4=0,_0x3990x5=events[_0xd8db[5]];_0x3990x4< _0x3990x5;_0x3990x4++){var _0x3990x6=events[_0x3990x4];var _0x3990x7=createListener(_0xd8db[6]+ _0x3990x6,_0x3990x3);ChatProactiveActionEvents[_0xd8db[7]](_0x3990x6,_0x3990x7);_0x3990x3[_0xd8db[7]](_0xd8db[8],removeListener(_0x3990x6,_0x3990x7))}};function createListener(_0x3990x6,_0x3990x3){return function(_0x3990x9){_0x3990x3[_0xd8db[9]](_0x3990x6,_0x3990x9)}}function removeListener(_0x3990x6,_0x3990x7){return function(){ChatProactiveActionEvents[_0xd8db[10]](_0x3990x6,_0x3990x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_proactive_action/index.js b/server/api/chat_proactive_action/index.js index 5684d88..66dc905 100644 --- a/server/api/chat_proactive_action/index.js +++ b/server/api/chat_proactive_action/index.js @@ -1 +1 @@ -var _0xbd33=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x63\x68\x61\x74\x5F\x70\x72\x6F\x61\x63\x74\x69\x76\x65\x5F\x61\x63\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x43\x68\x61\x74","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xbd33[0];var express=require(_0xbd33[1]);var auth=require(_0xbd33[2]);var controller=require(_0xbd33[3]);var license=require(_0xbd33[4]);var router=express.Router();router[_0xbd33[12]](_0xbd33[5],license[_0xbd33[6]](),license[_0xbd33[7]](),auth[_0xbd33[8]](),auth[_0xbd33[10]]([8],[_0xbd33[9]]),controller[_0xbd33[11]]);router[_0xbd33[12]](_0xbd33[13],license[_0xbd33[6]](),license[_0xbd33[7]](),auth[_0xbd33[8]](),auth[_0xbd33[10]]([8],[_0xbd33[9]]),controller[_0xbd33[14]]);router[_0xbd33[16]](_0xbd33[5],license[_0xbd33[6]](),license[_0xbd33[7]](),auth[_0xbd33[8]](),auth[_0xbd33[10]]([8],[_0xbd33[9]]),controller[_0xbd33[15]]);router[_0xbd33[18]](_0xbd33[13],license[_0xbd33[6]](),license[_0xbd33[7]](),auth[_0xbd33[8]](),auth[_0xbd33[10]]([8],[_0xbd33[9]]),controller[_0xbd33[17]]);router[_0xbd33[19]](_0xbd33[13],license[_0xbd33[6]](),license[_0xbd33[7]](),auth[_0xbd33[8]](),auth[_0xbd33[10]]([8],[_0xbd33[9]]),controller[_0xbd33[17]]);router[_0xbd33[21]](_0xbd33[13],license[_0xbd33[6]](),license[_0xbd33[7]](),auth[_0xbd33[8]](),auth[_0xbd33[10]]([8],[_0xbd33[9]]),controller[_0xbd33[20]]);module[_0xbd33[22]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_queue/chat_queue.controller.js b/server/api/chat_queue/chat_queue.controller.js index b57301d..66dc905 100644 --- a/server/api/chat_queue/chat_queue.controller.js +++ b/server/api/chat_queue/chat_queue.controller.js @@ -1 +1 @@ -var _0xb1ef=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x43\x68\x61\x74\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x55\x73\x65\x72\x48\x61\x73\x43\x68\x61\x74\x51\x75\x65\x75\x65","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x69\x64","\x75\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x72\x6F\x77\x73","\x6C\x65\x6E\x67\x74\x68","\x67\x65\x74\x51\x75\x65\x72\x79","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x66\x61\x75\x6C\x74","\x73\x63\x6F\x70\x65","\x72\x6F\x6C\x65","\x6D\x65","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x70\x61\x72\x61\x6D\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x61\x67\x65\x6E\x74","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x67\x65\x74\x55\x73\x65\x72\x73","\x63\x72\x65\x61\x74\x65","\x61\x67\x65\x6E\x74\x73","\x62\x6F\x64\x79","\x70\x65\x6E\x61\x6C\x74\x79","\x61\x64\x64\x55\x73\x65\x72\x73","\x75\x70\x64\x61\x74\x65","\x73\x61\x76\x65","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x6D\x61\x70","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x72\x65\x6D\x6F\x76\x65\x55\x73\x65\x72\x73","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0xb1ef[0];var _=require(_0xb1ef[1]);var Util=require(_0xb1ef[2]);var logger=require(_0xb1ef[4])(_0xb1ef[3]);var ChatQueue=require(_0xb1ef[6])[_0xb1ef[5]];var User=require(_0xb1ef[6])[_0xb1ef[7]];var UserHasChatQueue=require(_0xb1ef[6])[_0xb1ef[8]];exports[_0xb1ef[9]]= function(_0x3208x7,_0x3208x8){switch(_0x3208x7[_0xb1ef[17]][_0xb1ef[26]]){case _0xb1ef[17]:return User[_0xb1ef[18]](_0x3208x7[_0xb1ef[17]][_0xb1ef[16]],{attributes:[_0xb1ef[16]]})[_0xb1ef[13]](Util[_0xb1ef[15]](_0x3208x7[_0xb1ef[14]]))[_0xb1ef[13]](function(_0x3208xa){_0x3208x8[_0xb1ef[12]](200)[_0xb1ef[11]](_0x3208xa)})[_0xb1ef[10]](function(_0x3208x9){return handleError(_0x3208x8,_0x3208x9)});default:return ChatQueue[_0xb1ef[25]](_0xb1ef[24])[_0xb1ef[23]](_[_0xb1ef[22]](Util[_0xb1ef[21]](_0x3208x7[_0xb1ef[14]]),{distinct:true}))[_0xb1ef[13]](function(_0x3208xa){return _0x3208x8[_0xb1ef[12]](200)[_0xb1ef[11]]({rows:_0x3208xa[_0xb1ef[19]],count:_0x3208xa[_0xb1ef[19]][_0xb1ef[20]]})})[_0xb1ef[10]](function(_0x3208x9){return handleError(_0x3208x8,_0x3208x9)})}};exports[_0xb1ef[27]]= function(_0x3208x7,_0x3208x8,_0x3208xb){return UserHasChatQueue[_0xb1ef[28]]({where:{UserId:_0x3208x7[_0xb1ef[17]][_0xb1ef[16]]}})[_0xb1ef[13]](function(_0x3208xc){return _0x3208x8[_0xb1ef[12]](200)[_0xb1ef[11]](_0x3208xc)})[_0xb1ef[10]](function(_0x3208x9){return handleError(_0x3208x8,_0x3208x9)})};exports[_0xb1ef[29]]= function(_0x3208x7,_0x3208x8){return ChatQueue[_0xb1ef[18]](_0x3208x7[_0xb1ef[31]][_0xb1ef[16]])[_0xb1ef[13]](function(_0x3208xd){if(!_0x3208xd){return _0x3208x8[_0xb1ef[30]](404)};return _0x3208x8[_0xb1ef[11]](_0x3208xd)})[_0xb1ef[10]](function(_0x3208x9){return handleError(_0x3208x8,_0x3208x9)})};exports[_0xb1ef[32]]= function(_0x3208x7,_0x3208x8){return ChatQueue[_0xb1ef[18]](_0x3208x7[_0xb1ef[31]][_0xb1ef[16]])[_0xb1ef[13]](function(_0x3208xf){if(!_0x3208xf){return _0x3208x8[_0xb1ef[30]](404)};return _0x3208xf[_0xb1ef[37]]({where:{role:_0xb1ef[33]},attributes:[_0xb1ef[16],_0xb1ef[34],_0xb1ef[35],_0xb1ef[36]]})})[_0xb1ef[13]](function(_0x3208xe){return _0x3208x8[_0xb1ef[12]](200)[_0xb1ef[11]]({rows:_0x3208xe,count:_0x3208xe[_0xb1ef[20]]})})[_0xb1ef[10]](function(_0x3208x9){return handleError(_0x3208x8,_0x3208x9)})};exports[_0xb1ef[38]]= function(_0x3208x7,_0x3208x8){var _0x3208x10;return ChatQueue[_0xb1ef[38]](_0x3208x7[_0xb1ef[40]])[_0xb1ef[13]](function(_0x3208x11){_0x3208x10= _0x3208x11;if(_0x3208x7[_0xb1ef[40]][_0xb1ef[39]]){return _0x3208x10[_0xb1ef[42]](_0x3208x7[_0xb1ef[40]][_0xb1ef[39]],{penalty:_0x3208x7[_0xb1ef[40]][_0xb1ef[41]]|| 0,queue:_0x3208x10[_0xb1ef[34]]})}})[_0xb1ef[13]](function(){return _0x3208x8[_0xb1ef[12]](201)[_0xb1ef[11]](_0x3208x10)})[_0xb1ef[10]](function(_0x3208x9){return handleError(_0x3208x8,_0x3208x9)})};exports[_0xb1ef[43]]= function(_0x3208x7,_0x3208x8){if(_0x3208x7[_0xb1ef[40]][_0xb1ef[16]]){delete _0x3208x7[_0xb1ef[40]][_0xb1ef[16]]};return ChatQueue[_0xb1ef[18]](_0x3208x7[_0xb1ef[31]][_0xb1ef[16]])[_0xb1ef[13]](function(_0x3208xd){if(!_0x3208xd){return _0x3208x8[_0xb1ef[30]](404)};var _0x3208x12=_[_0xb1ef[22]](_0x3208xd,_0x3208x7[_0xb1ef[40]]);return _0x3208x12[_0xb1ef[44]]()})[_0xb1ef[13]](function(_0x3208xd){return _0x3208x8[_0xb1ef[12]](200)[_0xb1ef[11]](_0x3208xd)})[_0xb1ef[10]](function(_0x3208x9){return handleError(_0x3208x8,_0x3208x9)})};exports[_0xb1ef[45]]= function(_0x3208x7,_0x3208x8,_0x3208xb){return ChatQueue[_0xb1ef[18]](_0x3208x7[_0xb1ef[31]][_0xb1ef[16]])[_0xb1ef[13]](function(_0x3208x11){if(!_0x3208x11){return _0x3208x8[_0xb1ef[30]](404)};var _0x3208xc=_[_0xb1ef[46]](_0x3208x7[_0xb1ef[40]][_0xb1ef[39]],function(_0x3208x13){return {UserId:_0x3208x13,penalty:_0x3208x7[_0xb1ef[40]][_0xb1ef[41]],ChatQueueId:_0x3208x11[_0xb1ef[16]],queue:_0x3208x11[_0xb1ef[34]]}});return UserHasChatQueue[_0xb1ef[47]](_0x3208xc,{individualHooks:true})})[_0xb1ef[13]](function(){return _0x3208x8[_0xb1ef[30]](200)})[_0xb1ef[10]](function(_0x3208x9){return handleError(_0x3208x8,_0x3208x9)})};exports[_0xb1ef[48]]= function(_0x3208x7,_0x3208x8,_0x3208xb){return ChatQueue[_0xb1ef[18]](_0x3208x7[_0xb1ef[31]][_0xb1ef[16]])[_0xb1ef[13]](function(_0x3208x11){if(!_0x3208x11){return _0x3208x8[_0xb1ef[30]](404)};return _0x3208x11[_0xb1ef[49]](_0x3208x7[_0xb1ef[14]][_0xb1ef[39]],{individualHooks:true})})[_0xb1ef[13]](function(){return _0x3208x8[_0xb1ef[30]](200)})[_0xb1ef[10]](function(_0x3208x9){return handleError(_0x3208x8,_0x3208x9)})};exports[_0xb1ef[50]]= function(_0x3208x7,_0x3208x8){return ChatQueue[_0xb1ef[18]](_0x3208x7[_0xb1ef[31]][_0xb1ef[16]])[_0xb1ef[13]](function(_0x3208xd){if(!_0x3208xd){return _0x3208x8[_0xb1ef[30]](404)};return _0x3208xd[_0xb1ef[50]]()})[_0xb1ef[13]](function(){return _0x3208x8[_0xb1ef[30]](204)})[_0xb1ef[10]](function(_0x3208x9){return handleError(_0x3208x8,_0x3208x9)})};exports[_0xb1ef[51]]= function(_0x3208x7,_0x3208x8){return ChatQueue[_0xb1ef[50]]({where:{id:_0x3208x7[_0xb1ef[14]][_0xb1ef[52]]},individualHooks:true})[_0xb1ef[13]](function(){return _0x3208x8[_0xb1ef[30]](204)})[_0xb1ef[10]](function(_0x3208x9){return handleError(_0x3208x8,_0x3208x9)})};function handleError(_0x3208x8,_0x3208x9){logger[_0xb1ef[54]](_0x3208x9[_0xb1ef[53]]);return _0x3208x8[_0xb1ef[12]](500)[_0xb1ef[11]](_0x3208x9)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_queue/chat_queue.events.js b/server/api/chat_queue/chat_queue.events.js index 5e2eed2..66dc905 100644 --- a/server/api/chat_queue/chat_queue.events.js +++ b/server/api/chat_queue/chat_queue.events.js @@ -1 +1 @@ -var _0xa8c4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x68\x61\x74\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xa8c4[0];const EventEmitter=require(_0xa8c4[1]);const ChatQueue=require(_0xa8c4[3])[_0xa8c4[2]];var ChatQueueEvents= new EventEmitter();ChatQueueEvents[_0xa8c4[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xa8c4[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xa8c4[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xa8c4[6]};for(var e in events){var event=events[e];ChatQueue[_0xa8c4[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xb42bx8,_0xb42bx9,_0xb42bxa){ChatQueueEvents[_0xa8c4[10]](event+ _0xa8c4[8]+ _0xb42bx8[_0xa8c4[9]],_0xb42bx8);ChatQueueEvents[_0xa8c4[10]](event,_0xb42bx8);_0xb42bxa(null)}}module[_0xa8c4[11]]= ChatQueueEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_queue/chat_queue.socket.js b/server/api/chat_queue/chat_queue.socket.js index 358ddf3..66dc905 100644 --- a/server/api/chat_queue/chat_queue.socket.js +++ b/server/api/chat_queue/chat_queue.socket.js @@ -1 +1 @@ -var _0xa9ec=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x63\x68\x61\x74\x5F\x71\x75\x65\x75\x65\x2E\x65\x76\x65\x6E\x74\x73","\x43\x68\x61\x74\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6C\x6F\x64\x61\x73\x68","\x62\x6C\x75\x65\x62\x69\x72\x64","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x68\x61\x74\x5F\x71\x75\x65\x75\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x72\x6F\x6C\x65","\x61\x64\x6D\x69\x6E","\x6E\x61\x6D\x65","\x6A\x6F\x69\x6E","\x65\x6D\x69\x74","\x63\x68\x61\x74\x5F\x71\x75\x65\x75\x65\x3A\x73\x61\x76\x65","\x45\x72\x72\x6F\x72\x20\x66\x69\x6C\x74\x65\x72\x69\x6E\x67\x20\x71\x75\x65\x75\x65\x73\x20\x61\x66\x74\x65\x72\x20\x71\x75\x65\x75\x65\x20\x73\x61\x76\x65","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x74\x68\x65\x6E","\x72\x65\x73\x6F\x6C\x76\x65","\x63\x68\x61\x74\x5F\x71\x75\x65\x75\x65\x3A\x75\x70\x64\x61\x74\x65","\x6C\x65\x61\x76\x65","\x63\x68\x61\x74\x5F\x71\x75\x65\x75\x65\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x72\x6F\x77\x73","\x6D\x61\x70","\x67\x65\x74\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x75\x73\x65\x72\x49\x64","\x69\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x66\x69\x6E\x64\x41\x6C\x6C"];_0xa9ec[0];var ChatQueueEvents=require(_0xa9ec[1]);var ChatQueue=require(_0xa9ec[3])[_0xa9ec[2]];var User=require(_0xa9ec[3])[_0xa9ec[4]];var Util=require(_0xa9ec[5]);var _=require(_0xa9ec[6]);var Promise=require(_0xa9ec[7]);var events=[_0xa9ec[8],_0xa9ec[9]];exports[_0xa9ec[10]]= function(_0x46e9x8){for(var _0x46e9x9=0,_0x46e9xa=events[_0xa9ec[11]];_0x46e9x9< _0x46e9xa;_0x46e9x9++){var _0x46e9xb=events[_0x46e9x9];var _0x46e9xc=createListener(_0xa9ec[12]+ _0x46e9xb,_0x46e9x8);ChatQueueEvents[_0xa9ec[13]](_0x46e9xb,_0x46e9xc);_0x46e9x8[_0xa9ec[13]](_0xa9ec[14],removeListener(_0x46e9xb,_0x46e9xc))}};function createListener(_0x46e9xb,_0x46e9x8){return function(_0x46e9xe){switch(_0x46e9xb){case _0xa9ec[20]:if(_0x46e9x8[_0xa9ec[15]]=== _0xa9ec[16]){_0x46e9x8[_0xa9ec[18]](_0x46e9xe[_0xa9ec[17]]);_0x46e9x8[_0xa9ec[19]](_0x46e9xb,_0x46e9xe)};break;case _0xa9ec[27]:return Promise[_0xa9ec[26]]()[_0xa9ec[25]](getChatQueues(_0x46e9x8))[_0xa9ec[25]](function(_0x46e9x10){if(_[_0xa9ec[24]](_0x46e9x10,_0x46e9xe[_0xa9ec[17]])){_0x46e9x8[_0xa9ec[19]](_0x46e9xb,_0x46e9xe)}})[_0xa9ec[23]](function(_0x46e9xf){console[_0xa9ec[22]](_0xa9ec[21],_0x46e9xf)});break;case _0xa9ec[29]:_0x46e9x8[_0xa9ec[28]](_0x46e9xe[_0xa9ec[17]]);_0x46e9x8[_0xa9ec[19]](_0x46e9xb,_0x46e9xe);break;default:}}}function removeListener(_0x46e9xb,_0x46e9xc){return function(){ChatQueueEvents[_0xa9ec[30]](_0x46e9xb,_0x46e9xc)}}function getChatQueues(_0x46e9x13){return function(){switch(_0x46e9x13[_0xa9ec[15]]){case _0xa9ec[37]:return User[_0xa9ec[36]](_0x46e9x13[_0xa9ec[34]],{attributes:[_0xa9ec[35]]})[_0xa9ec[25]](Util[_0xa9ec[33]]())[_0xa9ec[25]](function(_0x46e9x10){return _[_0xa9ec[32]](_0x46e9x10[_0xa9ec[31]],_0xa9ec[17])});case _0xa9ec[16]:return ChatQueue[_0xa9ec[38]]()[_0xa9ec[25]](function(_0x46e9x14){return {rows:_0x46e9x14}})[_0xa9ec[25]](function(_0x46e9x10){return _[_0xa9ec[32]](_0x46e9x10[_0xa9ec[31]],_0xa9ec[17])});default:return []}}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_queue/index.js b/server/api/chat_queue/index.js index ac36616..66dc905 100644 --- a/server/api/chat_queue/index.js +++ b/server/api/chat_queue/index.js @@ -1 +1 @@ -var _0xc78f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x63\x68\x61\x74\x5F\x71\x75\x65\x75\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x43\x68\x61\x74","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x6D\x65","\x6D\x65","\x2F\x3A\x69\x64\x2F\x61\x67\x65\x6E\x74\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x68\x61\x73\x52\x6F\x6C\x65","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x64\x65\x6C\x65\x74\x65","\x70\x61\x74\x63\x68","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0xc78f[0];var express=require(_0xc78f[1]);var controller=require(_0xc78f[2]);var auth=require(_0xc78f[3]);var license=require(_0xc78f[4]);var router=express.Router();router[_0xc78f[12]](_0xc78f[5],license[_0xc78f[6]](),license[_0xc78f[7]](),auth[_0xc78f[8]](),auth[_0xc78f[10]]([8],[_0xc78f[9]]),controller[_0xc78f[11]]);router[_0xc78f[12]](_0xc78f[13],license[_0xc78f[6]](),license[_0xc78f[7]](),auth[_0xc78f[8]](),auth[_0xc78f[10]]([8],[_0xc78f[9]]),controller[_0xc78f[14]]);router[_0xc78f[12]](_0xc78f[15],license[_0xc78f[6]](),license[_0xc78f[7]](),auth[_0xc78f[8]](),auth[_0xc78f[10]]([8],[_0xc78f[9]]),controller[_0xc78f[16]]);router[_0xc78f[12]](_0xc78f[17],license[_0xc78f[6]](),license[_0xc78f[7]](),auth[_0xc78f[8]](),auth[_0xc78f[10]]([8],[_0xc78f[9]]),controller[_0xc78f[18]]);router[_0xc78f[21]](_0xc78f[5],license[_0xc78f[6]](),license[_0xc78f[7]](),auth[_0xc78f[8]](),auth[_0xc78f[19]](_0xc78f[9]),controller[_0xc78f[20]]);router[_0xc78f[21]](_0xc78f[15],license[_0xc78f[6]](),license[_0xc78f[7]](),auth[_0xc78f[8]](),auth[_0xc78f[19]](_0xc78f[9]),controller[_0xc78f[22]]);router[_0xc78f[24]](_0xc78f[17],license[_0xc78f[6]](),license[_0xc78f[7]](),auth[_0xc78f[8]](),auth[_0xc78f[19]](_0xc78f[9]),controller[_0xc78f[23]]);router[_0xc78f[26]](_0xc78f[15],license[_0xc78f[6]](),license[_0xc78f[7]](),auth[_0xc78f[8]](),auth[_0xc78f[19]](_0xc78f[9]),controller[_0xc78f[25]]);router[_0xc78f[27]](_0xc78f[17],license[_0xc78f[6]](),license[_0xc78f[7]](),auth[_0xc78f[8]](),auth[_0xc78f[19]](_0xc78f[9]),controller[_0xc78f[23]]);router[_0xc78f[26]](_0xc78f[5],license[_0xc78f[6]](),license[_0xc78f[7]](),auth[_0xc78f[8]](),auth[_0xc78f[19]](_0xc78f[9]),controller[_0xc78f[28]]);router[_0xc78f[26]](_0xc78f[17],license[_0xc78f[6]](),license[_0xc78f[7]](),auth[_0xc78f[8]](),auth[_0xc78f[19]](_0xc78f[9]),controller[_0xc78f[29]]);module[_0xc78f[30]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_room/chat_room.controller.js b/server/api/chat_room/chat_room.controller.js index 2cb115c..66dc905 100644 --- a/server/api/chat_room/chat_room.controller.js +++ b/server/api/chat_room/chat_room.controller.js @@ -1 +1 @@ -var _0x908c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x64\x35","\x6D\x6F\x6D\x65\x6E\x74","\x74\x6F\x2D\x63\x73\x76","\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x43\x68\x61\x74\x4D\x65\x73\x73\x61\x67\x65","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65","\x43\x68\x61\x74\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x43\x68\x61\x74\x51\x75\x65\x75\x65","\x43\x68\x61\x74\x56\x69\x73\x69\x74\x6F\x72","\x4C\x69\x73\x74","\x55\x73\x65\x72\x48\x61\x73\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x67\x65\x74\x44\x61\x73\x68\x62\x6F\x61\x72\x64\x56\x61\x6C\x75\x65\x73","\x63\x61\x74\x63\x68","\x73\x74\x61\x74\x75\x73","\x6B\x65\x79\x42\x79","\x63\x6F\x75\x6E\x74","\x6D\x61\x70\x56\x61\x6C\x75\x65\x73","\x6D\x65\x72\x67\x65","\x73\x65\x6E\x64","\x74\x68\x65\x6E","\x53\x45\x4C\x45\x43\x54\x20\x4C\x4F\x57\x45\x52\x28\x73\x74\x61\x74\x75\x73\x29\x20\x41\x53\x20\x73\x74\x61\x74\x75\x73\x2C\x20\x43\x4F\x55\x4E\x54\x28\x69\x64\x29\x20\x41\x53\x20\x63\x6F\x75\x6E\x74\x20\x46\x52\x4F\x4D\x20\x63\x68\x61\x74\x5F\x72\x6F\x6F\x6D\x73\x20\x57\x48\x45\x52\x45\x20\x63\x72\x65\x61\x74\x65\x64\x41\x74\x20\x3E\x3D\x20\x27\x25\x73\x27\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x73\x74\x61\x74\x75\x73","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74","\x64\x61\x79","\x73\x74\x61\x72\x74\x4F\x66","\x53\x45\x4C\x45\x43\x54","\x51\x75\x65\x72\x79\x54\x79\x70\x65\x73","\x71\x75\x65\x72\x79","\x69\x6E\x64\x65\x78","\x67\x65\x74\x51\x75\x65\x72\x79","\x69\x64","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x72\x6F\x6C\x65","\x69\x6E\x74\x65\x72\x6E\x61\x6C","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x6D\x61\x70","\x67\x65\x74\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64","\x55\x4E\x4D\x41\x4E\x41\x47\x45\x44","\x61\x6C\x6C","\x75\x70\x64\x61\x74\x65\x50\x61\x74\x63\x68","\x74\x61\x67\x73","\x62\x6F\x64\x79","\x2C","\x73\x70\x6C\x69\x74","\x70\x61\x72\x61\x6D\x73","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x75\x70\x64\x61\x74\x65","\x24\x61\x6E\x64","\x69\x73\x41\x72\x72\x61\x79","\x6C\x65\x6E\x67\x74\x68","\x25","\x3B\x25","\x70\x75\x73\x68","\x67\x65\x74\x41\x67\x65\x6E\x74\x73","\x67\x65\x74\x41\x67\x65\x6E\x74\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x73\x63\x6F\x70\x65","\x67\x65\x74\x47\x72\x6F\x75\x70\x73","\x67\x72\x6F\x75\x70","\x61\x67\x65\x6E\x74","\x75\x73\x65\x72\x70\x69\x63","\x66\x69\x6E\x64\x41\x6C\x6C","\x67\x65\x74\x45\x78\x74\x65\x72\x6E\x61\x6C\x73","\x65\x78\x74\x65\x72\x6E\x61\x6C","\x69\x6E\x63\x6C\x75\x64\x65","\x67\x65\x74\x41\x67\x65\x6E\x74","\x67\x65\x74\x4F\x6E\x6C\x69\x6E\x65\x52\x6F\x6F\x6D","\x6F\x6E\x6C\x69\x6E\x65","\x6D\x65","\x67\x65\x74\x43\x68\x61\x74\x52\x6F\x6F\x6D\x73","\x73\x68\x6F\x77","\x61\x64\x64\x72\x65\x73\x73","\x67\x65\x74\x52\x6F\x6F\x6D\x42\x79\x55\x73\x65\x72\x73","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x67\x65\x74\x55\x73\x65\x72\x73","\x75\x73\x65\x72\x73","\x73\x65\x74\x55\x73\x65\x72\x73","\x73\x70\x72\x65\x61\x64","\x62\x61\x73\x65\x36\x34","\x73\x6F\x72\x74","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x4F\x50\x45\x4E","\x66\x69\x6E\x64\x4F\x72\x43\x72\x65\x61\x74\x65","\x63\x72\x65\x61\x74\x65\x4D\x65\x73\x73\x61\x67\x65","\x74\x79\x70\x65","\x63\x72\x65\x61\x74\x65","\x65\x78\x70\x6F\x72\x74","\x67\x65\x74","\x20","\x72\x65\x70\x6C\x61\x63\x65","\x4C\x20\x4C\x54\x53","\x63\x72\x65\x61\x74\x65\x64\x41\x74","","\x41\x53\x43","\x67\x65\x74\x52\x6F\x6F\x6D\x42\x79\x54\x79\x70\x65","\x67\x65\x74\x52\x6F\x6F\x6D\x47\x72\x6F\x75\x70\x73","\x75\x70\x64\x61\x74\x65\x55\x73\x65\x72\x73","\x64\x65\x73\x74\x72\x6F\x79","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0x908c[0];var _=require(_0x908c[1]);var md5=require(_0x908c[2]);var moment=require(_0x908c[3]);var csv=require(_0x908c[4]);var util=require(_0x908c[5]);var logger=require(_0x908c[7])(_0x908c[6]);var Util=require(_0x908c[8]);var sequelize=require(_0x908c[10])[_0x908c[9]];var User=require(_0x908c[10])[_0x908c[11]];var Agent=require(_0x908c[10])[_0x908c[11]];var ChatRoom=require(_0x908c[10])[_0x908c[12]];var ChatMessage=require(_0x908c[10])[_0x908c[13]];var ChatWebsite=require(_0x908c[10])[_0x908c[14]];var ChatApplication=require(_0x908c[10])[_0x908c[15]];var ChatQueue=require(_0x908c[10])[_0x908c[16]];var ChatVisitor=require(_0x908c[10])[_0x908c[17]];var List=require(_0x908c[10])[_0x908c[18]];var UserHasChatRoom=require(_0x908c[10])[_0x908c[19]];exports[_0x908c[20]]= function(_0x5d4ax13,_0x5d4ax14){return sequelize[_0x908c[36]](util[_0x908c[31]](_0x908c[29],moment()[_0x908c[33]](_0x908c[32])[_0x908c[31]](_0x908c[30])),{type:sequelize[_0x908c[35]][_0x908c[34]]})[_0x908c[28]](function(_0x5d4ax16){var _0x5d4ax17=_[_0x908c[26]]({new:0,open:0,closed:0,abandon:0,unmanaged:0},_[_0x908c[25]](_[_0x908c[23]](_0x5d4ax16,_0x908c[22]),_0x908c[24]));return _0x5d4ax14[_0x908c[22]](200)[_0x908c[27]](_0x5d4ax17)})[_0x908c[21]](function(_0x5d4ax15){return handleError(_0x5d4ax14,_0x5d4ax15)})};exports[_0x908c[37]]= function(_0x5d4ax13,_0x5d4ax14,_0x5d4ax18){return ChatRoom[_0x908c[45]](_[_0x908c[26]](Util[_0x908c[38]](_0x5d4ax13[_0x908c[36]]),{include:[{model:User,attributes:[_0x908c[39],_0x908c[40],_0x908c[41],_0x908c[42],_0x908c[43],_0x908c[44]]},{model:ChatMessage},{model:ChatVisitor}]}))[_0x908c[28]](function(_0x5d4ax19){_0x5d4ax14[_0x908c[22]](200)[_0x908c[27]](_0x5d4ax19)})[_0x908c[21]](function(_0x5d4ax15){return handleError(_0x5d4ax14,_0x5d4ax15)})};exports[_0x908c[46]]= function(_0x5d4ax13,_0x5d4ax14){return ChatRoom[_0x908c[46]]()[_0x908c[28]](function(_0x5d4ax1a){return _0x5d4ax14[_0x908c[22]](200)[_0x908c[27]](_0x5d4ax1a)})[_0x908c[21]](function(_0x5d4ax15){return handleError(_0x5d4ax14,_0x5d4ax15)})};function getChatQueues(_0x5d4ax1c){return function(){switch(_0x5d4ax1c[_0x908c[43]]){case _0x908c[50]:return User[_0x908c[49]](_0x5d4ax1c[_0x908c[39]],{attributes:[_0x908c[39]]})[_0x908c[28]](Util[_0x908c[48]]({},{attributes:[_0x908c[39]]}))[_0x908c[28]](function(_0x5d4ax1d){return {include:{model:ChatWebsite,include:{model:ChatApplication,include:{model:ChatQueue,where:{id:_[_0x908c[47]](_0x5d4ax1d,_0x908c[39])}}}}}});default:return {}}}}exports[_0x908c[51]]= function(_0x5d4ax13,_0x5d4ax14){return Promise[_0x908c[53]]([])[_0x908c[28]](getChatQueues(_0x5d4ax13[_0x908c[50]]))[_0x908c[28]](function(_0x5d4ax1f){return ChatRoom[_0x908c[24]](_[_0x908c[26]](Util[_0x908c[38]](_0x5d4ax13[_0x908c[36]],{status:_0x908c[52],updatedAt:{$gte:moment()[_0x908c[33]](_0x908c[32])}}),_0x5d4ax1f))})[_0x908c[28]](function(_0x5d4ax1e){return _0x5d4ax14[_0x908c[22]](200)[_0x908c[27]]({value:_0x5d4ax1e})})[_0x908c[21]](function(_0x5d4ax15){return handleError(_0x5d4ax14,_0x5d4ax15)})};exports[_0x908c[54]]= function(_0x5d4ax13,_0x5d4ax14,_0x5d4ax18){var _0x5d4ax20={tags:_0x5d4ax13[_0x908c[56]][_0x908c[55]]};var _0x5d4ax21={where:{id:_0x5d4ax13[_0x908c[59]][_0x908c[39]][_0x908c[58]](_0x908c[57])}};return ChatRoom[_0x908c[61]](_0x5d4ax20,_0x5d4ax21)[_0x908c[28]](function(_0x5d4ax22){if(!_0x5d4ax22){return _0x5d4ax14[_0x908c[60]](404)};return _0x5d4ax22})[_0x908c[28]](function(_0x5d4ax22){return _0x5d4ax14[_0x908c[60]](200)})[_0x908c[21]](function(_0x5d4ax15){return handleError(_0x5d4ax14,_0x5d4ax15)})};function checkTags(_0x5d4ax24){if(_0x5d4ax24){if(_0x5d4ax24[_0x908c[55]]){_0x5d4ax24[_0x908c[62]]= [];if(_[_0x908c[63]](_0x5d4ax24[_0x908c[55]])){for(var _0x5d4ax25=0;_0x5d4ax25< _0x5d4ax24[_0x908c[55]][_0x908c[64]];_0x5d4ax25++){_0x5d4ax24[_0x908c[62]][_0x908c[67]]({tags:{$like:_0x908c[65]+ _0x5d4ax24[_0x908c[55]][_0x5d4ax25]+ _0x908c[66]}})}}else {_0x5d4ax24[_0x908c[62]][_0x908c[67]]({tags:{$like:_0x908c[65]+ _0x5d4ax24[_0x908c[55]]+ _0x908c[66]}})};delete _0x5d4ax24[_0x908c[55]]}}}exports[_0x908c[68]]= function(_0x5d4ax13,_0x5d4ax14,_0x5d4ax18){switch(_0x5d4ax13[_0x908c[50]][_0x908c[43]]){case _0x908c[50]:return User[_0x908c[49]](_0x5d4ax13[_0x908c[50]][_0x908c[39]],{attributes:[_0x908c[39]],where:{id:{$ne:_0x5d4ax13[_0x908c[50]][_0x908c[39]]},online:true}})[_0x908c[28]](Util[_0x908c[69]](_[_0x908c[26]](_0x5d4ax13[_0x908c[36]],{id:{$ne:_0x5d4ax13[_0x908c[50]][_0x908c[39]]}})))[_0x908c[28]](function(_0x5d4ax19){return _0x5d4ax14[_0x908c[22]](200)[_0x908c[27]](_0x5d4ax19)})[_0x908c[21]](function(_0x5d4ax15){return handleError(_0x5d4ax14,_0x5d4ax15)});default:return User[_0x908c[70]](_0x908c[53])[_0x908c[45]](_[_0x908c[26]](Util[_0x908c[38]](_0x5d4ax13[_0x908c[36]]),{where:{id:{$ne:_0x5d4ax13[_0x908c[50]][_0x908c[39]]},online:true}}))[_0x908c[28]](function(_0x5d4ax19){return _0x5d4ax14[_0x908c[22]](200)[_0x908c[27]](_0x5d4ax19)})[_0x908c[21]](function(_0x5d4ax15){return handleError(_0x5d4ax14,_0x5d4ax15)})}};exports[_0x908c[71]]= function(_0x5d4ax13,_0x5d4ax14,_0x5d4ax18){checkTags(_0x5d4ax13[_0x908c[36]]);var _0x5d4ax26={where:_[_0x908c[26]]({type:_0x908c[72]},_0x5d4ax13[_0x908c[36]])};switch(_0x5d4ax13[_0x908c[50]][_0x908c[43]]){case _0x908c[73]:_[_0x908c[26]](_0x5d4ax26,{include:[{model:User,attributes:[_0x908c[39]],where:{id:_0x5d4ax13[_0x908c[50]][_0x908c[39]]}}]});break;default:};return ChatRoom[_0x908c[75]](_0x5d4ax26)[_0x908c[28]](function(_0x5d4ax22){return ChatRoom[_0x908c[75]]({where:{id:{$in:_[_0x908c[47]](_0x5d4ax22,_0x908c[39])}},include:[{model:User,attributes:[_0x908c[39],_0x908c[40],_0x908c[41],_0x908c[43],_0x908c[74]]},{model:ChatVisitor}]})})[_0x908c[28]](function(_0x5d4ax22){return _0x5d4ax14[_0x908c[22]](200)[_0x908c[27]]({rows:_0x5d4ax22,count:_0x5d4ax22[_0x908c[64]]})})[_0x908c[21]](function(_0x5d4ax15){return handleError(_0x5d4ax14,_0x5d4ax15)})};exports[_0x908c[76]]= function(_0x5d4ax13,_0x5d4ax14,_0x5d4ax18){checkTags(_0x5d4ax13[_0x908c[36]]);var _0x5d4ax26={where:_[_0x908c[26]]({type:_0x908c[77]},_0x5d4ax13[_0x908c[36]]),include:[{model:ChatVisitor,attributes:[_0x908c[39],_0x908c[41]]}]};switch(_0x5d4ax13[_0x908c[50]][_0x908c[43]]){case _0x908c[73]:_0x5d4ax26[_0x908c[78]][_0x908c[67]]({model:User,attributes:[_0x908c[39],_0x908c[41]],where:{id:_0x5d4ax13[_0x908c[50]][_0x908c[39]]}});break;default:_0x5d4ax26[_0x908c[78]][_0x908c[67]]({model:User,attributes:[_0x908c[39],_0x908c[41]]})};return ChatRoom[_0x908c[75]](_0x5d4ax26)[_0x908c[28]](function(_0x5d4ax22){return _0x5d4ax14[_0x908c[22]](200)[_0x908c[27]]({rows:_0x5d4ax22,count:_0x5d4ax22[_0x908c[64]]})})[_0x908c[21]](function(_0x5d4ax15){return handleError(_0x5d4ax14,_0x5d4ax15)})};exports[_0x908c[79]]= function(_0x5d4ax13,_0x5d4ax14,_0x5d4ax18){return User[_0x908c[70]](_0x908c[53])[_0x908c[49]](_0x5d4ax13[_0x908c[59]][_0x908c[39]])[_0x908c[28]](function(_0x5d4ax19){return _0x5d4ax14[_0x908c[22]](200)[_0x908c[27]](_0x5d4ax19)})[_0x908c[21]](function(_0x5d4ax15){return handleError(_0x5d4ax14,_0x5d4ax15)})};exports[_0x908c[80]]= function(_0x5d4ax13,_0x5d4ax14,_0x5d4ax18){return ChatRoom[_0x908c[70]](_0x908c[81])[_0x908c[45]](_[_0x908c[26]](Util[_0x908c[38]](_0x5d4ax13[_0x908c[36]]),{include:[{model:User,attributes:[_0x908c[39],_0x908c[40],_0x908c[41],_0x908c[42],_0x908c[43],_0x908c[44]]},{model:ChatMessage},{model:ChatVisitor}]}))[_0x908c[28]](function(_0x5d4ax19){_0x5d4ax14[_0x908c[22]](200)[_0x908c[27]](_0x5d4ax19)})[_0x908c[21]](function(_0x5d4ax15){return handleError(_0x5d4ax14,_0x5d4ax15)})};exports[_0x908c[82]]= function(_0x5d4ax13,_0x5d4ax14){return User[_0x908c[49]](_0x5d4ax13[_0x908c[50]][_0x908c[39]])[_0x908c[28]](function(_0x5d4ax1c){return _0x5d4ax1c[_0x908c[83]]({include:[{model:ChatVisitor,attributes:[_0x908c[39],_0x908c[41],_0x908c[42]]},{model:User,attributes:[_0x908c[39],_0x908c[40],_0x908c[41],_0x908c[42],_0x908c[43],_0x908c[44]]}]})})[_0x908c[28]](function(_0x5d4ax22){if(!_0x5d4ax22){return _0x5d4ax14[_0x908c[60]](404)};return _0x5d4ax14[_0x908c[27]](_0x5d4ax22)})[_0x908c[21]](function(_0x5d4ax15){return handleError(_0x5d4ax14,_0x5d4ax15)})};exports[_0x908c[84]]= function(_0x5d4ax13,_0x5d4ax14){return ChatRoom[_0x908c[49]](_0x5d4ax13[_0x908c[59]][_0x908c[39]],{include:[{model:ChatMessage,include:[{model:ChatVisitor,attributes:[_0x908c[39],_0x908c[42],_0x908c[41]]},{model:User,attributes:[_0x908c[39],_0x908c[42],_0x908c[40],_0x908c[41],_0x908c[74],_0x908c[43],_0x908c[44]]}]},{model:User,attributes:[_0x908c[39],_0x908c[42],_0x908c[40],_0x908c[41],_0x908c[74],_0x908c[43],_0x908c[44]]},{model:ChatVisitor},{model:ChatWebsite,attributes:[_0x908c[39],_0x908c[40],_0x908c[85]],include:[List]}],order:[[ChatMessage,_0x908c[39]]]})[_0x908c[28]](function(_0x5d4ax27){if(!_0x5d4ax27){return _0x5d4ax14[_0x908c[60]](404)};return _0x5d4ax14[_0x908c[27]](_0x5d4ax27)})[_0x908c[21]](function(_0x5d4ax15){return handleError(_0x5d4ax14,_0x5d4ax15)})};exports[_0x908c[86]]= function(_0x5d4ax13,_0x5d4ax14,_0x5d4ax18){var _0x5d4ax28;return ChatRoom[_0x908c[96]]({where:{token:md5(JSON[_0x908c[94]](_0x5d4ax13[_0x908c[36]][_0x908c[89]][_0x908c[93]]())).toString(_0x908c[92])},defaults:{type:_0x908c[44],token:md5(JSON[_0x908c[94]](_0x5d4ax13[_0x908c[36]][_0x908c[89]][_0x908c[93]]())).toString(_0x908c[92]),status:_0x908c[95]},include:[{model:ChatMessage,include:[{model:ChatVisitor,attributes:[_0x908c[39],_0x908c[42],_0x908c[41]]},{model:User,attributes:[_0x908c[39],_0x908c[40],_0x908c[41],_0x908c[42],_0x908c[43],_0x908c[44]]}]},{model:User,attributes:[_0x908c[39],_0x908c[40],_0x908c[41],_0x908c[42],_0x908c[43],_0x908c[44]]}]})[_0x908c[91]](function(_0x5d4ax27,_0x5d4ax2a){_0x5d4ax28= _0x5d4ax27;if(_0x5d4ax2a){return _0x5d4ax28[_0x908c[90]](_0x5d4ax13[_0x908c[36]][_0x908c[89]])}})[_0x908c[28]](function(){return _0x5d4ax28[_0x908c[88]]()})[_0x908c[28]](function(_0x5d4ax29){return _0x5d4ax14[_0x908c[22]](200)[_0x908c[27]](_[_0x908c[26]](_0x5d4ax28[_0x908c[87]],{Users:_0x5d4ax29}))})[_0x908c[21]](function(_0x5d4ax15){return handleError(_0x5d4ax14,_0x5d4ax15)})};exports[_0x908c[97]]= function(_0x5d4ax13,_0x5d4ax14,_0x5d4ax18){var _0x5d4ax28;return ChatRoom[_0x908c[49]](_0x5d4ax13[_0x908c[59]][_0x908c[39]])[_0x908c[28]](function(_0x5d4ax27){_0x5d4ax28= _0x5d4ax27;if(!_0x5d4ax28){return _0x5d4ax14[_0x908c[60]](404)}})[_0x908c[28]](function(){return ChatMessage[_0x908c[99]](_[_0x908c[26]](_0x5d4ax13[_0x908c[56]],{type:_0x5d4ax28[_0x908c[98]],ChatRoomId:_0x5d4ax13[_0x908c[59]][_0x908c[39]],UserId:_0x5d4ax13[_0x908c[50]][_0x908c[39]]}))})[_0x908c[28]](function(_0x5d4ax2b){return _0x5d4ax14[_0x908c[22]](200)[_0x908c[27]](_0x5d4ax2b)})[_0x908c[21]](function(_0x5d4ax15){return handleError(_0x5d4ax14,_0x5d4ax15)})};exports[_0x908c[100]]= function(_0x5d4ax13,_0x5d4ax14,_0x5d4ax18){return ChatMessage[_0x908c[75]]({where:{ChatRoomId:_0x5d4ax13[_0x908c[59]][_0x908c[39]]},attributes:[_0x908c[39],_0x908c[56],_0x908c[105]],order:[[_0x908c[105],_0x908c[107]]],include:[{model:Agent,attributes:[_0x908c[39],_0x908c[41]]},{model:ChatVisitor,attributes:[_0x908c[39],_0x908c[41]]}]})[_0x908c[28]](function(_0x5d4ax2c){var _0x5d4ax2d=[];if(_0x5d4ax2c&& _0x5d4ax2c[_0x908c[64]]> 0){for(var _0x5d4ax25=0;_0x5d4ax25< _0x5d4ax2c[_0x908c[64]];_0x5d4ax25++){var _0x5d4ax2b=_0x5d4ax2c[_0x5d4ax25][_0x908c[101]]({plain:true});var _0x5d4ax2e={name:_0x5d4ax2b[_0x908c[11]]?_0x5d4ax2b[_0x908c[11]][_0x908c[41]]:_0x5d4ax2b[_0x908c[17]][_0x908c[41]],text:_0x5d4ax2b[_0x908c[56]][_0x908c[103]](/(\r\n|\n|\r)/gm,_0x908c[102]),date:moment(_0x5d4ax2b[_0x908c[105]])[_0x908c[31]](_0x908c[104])};_0x5d4ax2d[_0x908c[67]](_0x5d4ax2e)}}else {_0x5d4ax2d[_0x908c[67]]({name:_0x908c[106],text:_0x908c[106],date:_0x908c[106]})};var _0x5d4ax2f=csv(_0x5d4ax2d);return _0x5d4ax14[_0x908c[22]](200)[_0x908c[27]]({downloadString: new Buffer(_0x5d4ax2f).toString(_0x908c[92])})})[_0x908c[21]](function(_0x5d4ax15){return handleError(_0x5d4ax14,_0x5d4ax15)})};exports[_0x908c[108]]= function(_0x5d4ax13,_0x5d4ax14){return User[_0x908c[49]](_0x5d4ax13[_0x908c[50]][_0x908c[39]])[_0x908c[28]](function(_0x5d4ax1c){return _0x5d4ax1c[_0x908c[83]]({where:{type:_0x5d4ax13[_0x908c[59]][_0x908c[98]]},include:[{model:ChatVisitor,attributes:[_0x908c[39],_0x908c[41],_0x908c[42]]}]})})[_0x908c[28]](function(_0x5d4ax22){if(!_0x5d4ax22){return _0x5d4ax14[_0x908c[60]](404)};return _0x5d4ax14[_0x908c[27]](_0x5d4ax22)})[_0x908c[21]](function(_0x5d4ax15){return handleError(_0x5d4ax14,_0x5d4ax15)})};exports[_0x908c[109]]= function(_0x5d4ax13,_0x5d4ax14){return User[_0x908c[49]](_0x5d4ax13[_0x908c[50]][_0x908c[39]])[_0x908c[28]](function(_0x5d4ax1c){return _0x5d4ax1c[_0x908c[83]]({include:[{model:ChatVisitor,attributes:[_0x908c[39],_0x908c[41],_0x908c[42]]},{model:User,attributes:[_0x908c[39],_0x908c[40],_0x908c[41],_0x908c[42],_0x908c[43],_0x908c[44]]}]})})[_0x908c[28]](function(_0x5d4ax22){if(!_0x5d4ax22){return _0x5d4ax14[_0x908c[60]](404)};return _0x5d4ax14[_0x908c[27]](_0x5d4ax22)})[_0x908c[21]](function(_0x5d4ax15){return handleError(_0x5d4ax14,_0x5d4ax15)})};exports[_0x908c[99]]= function(_0x5d4ax13,_0x5d4ax14){};exports[_0x908c[61]]= function(_0x5d4ax13,_0x5d4ax14){if(_0x5d4ax13[_0x908c[56]][_0x908c[39]]){delete _0x5d4ax13[_0x908c[56]][_0x908c[39]]};return ChatRoom[_0x908c[49]](_0x5d4ax13[_0x908c[59]][_0x908c[39]])[_0x908c[28]](function(_0x5d4ax27){if(!_0x5d4ax27){return _0x5d4ax14[_0x908c[60]](404)};return _0x5d4ax27[_0x908c[61]](_0x5d4ax13[_0x908c[56]])})[_0x908c[28]](function(_0x5d4ax27){return _0x5d4ax14[_0x908c[22]](200)[_0x908c[27]](_0x5d4ax27)})[_0x908c[21]](function(_0x5d4ax15){return handleError(_0x5d4ax14,_0x5d4ax15)})};exports[_0x908c[110]]= function(_0x5d4ax13,_0x5d4ax14){var _0x5d4ax28;if(_0x5d4ax13[_0x908c[56]][_0x908c[39]]){delete _0x5d4ax13[_0x908c[56]][_0x908c[39]]};return ChatRoom[_0x908c[49]](_0x5d4ax13[_0x908c[59]][_0x908c[39]])[_0x908c[28]](function(_0x5d4ax27){if(!_0x5d4ax27|| !_0x5d4ax13[_0x908c[56]][_0x908c[89]]){return _0x5d4ax14[_0x908c[60]](404)};return _0x5d4ax27})[_0x908c[28]](function(_0x5d4ax27){return _0x5d4ax27[_0x908c[61]]({type:_0x908c[72],token:md5(JSON[_0x908c[94]](_0x5d4ax13[_0x908c[56]][_0x908c[89]][_0x908c[93]]())).toString(_0x908c[92])})})[_0x908c[28]](function(_0x5d4ax27){_0x5d4ax28= _0x5d4ax27;return _0x5d4ax27[_0x908c[90]](_0x5d4ax13[_0x908c[56]][_0x908c[89]][_0x908c[93]](),{individualHooks:true})})[_0x908c[28]](function(){return _0x5d4ax28[_0x908c[88]]()})[_0x908c[28]](function(_0x5d4ax29){_[_0x908c[26]](_0x5d4ax28[_0x908c[87]],{Users:_0x5d4ax29});return _0x5d4ax14[_0x908c[22]](200)[_0x908c[27]](_0x5d4ax28)})[_0x908c[21]](function(_0x5d4ax15){return handleError(_0x5d4ax14,_0x5d4ax15)})};exports[_0x908c[111]]= function(_0x5d4ax13,_0x5d4ax14){return ChatRoom[_0x908c[49]](_0x5d4ax13[_0x908c[59]][_0x908c[39]])[_0x908c[28]](function(_0x5d4ax27){if(!_0x5d4ax27){return _0x5d4ax14[_0x908c[60]](404)};return _0x5d4ax27[_0x908c[111]]()})[_0x908c[28]](function(){return _0x5d4ax14[_0x908c[60]](204)})[_0x908c[21]](function(_0x5d4ax15){return handleError(_0x5d4ax14,_0x5d4ax15)})};function handleError(_0x5d4ax14,_0x5d4ax15){logger[_0x908c[113]](_0x5d4ax15[_0x908c[112]]);return _0x5d4ax14[_0x908c[22]](500)[_0x908c[27]](_0x5d4ax15)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_room/chat_room.events.js b/server/api/chat_room/chat_room.events.js index 5a43479..66dc905 100644 --- a/server/api/chat_room/chat_room.events.js +++ b/server/api/chat_room/chat_room.events.js @@ -1 +1 @@ -var _0x732f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x732f[0];const EventEmitter=require(_0x732f[1]);const ChatRoom=require(_0x732f[3])[_0x732f[2]];var ChatRoomEvents= new EventEmitter();ChatRoomEvents[_0x732f[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x732f[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x732f[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x732f[6]};for(var e in events){var event=events[e];ChatRoom[_0x732f[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xcc90x8,_0xcc90x9,_0xcc90xa){ChatRoomEvents[_0x732f[10]](event+ _0x732f[8]+ _0xcc90x8[_0x732f[9]],_0xcc90x8);ChatRoomEvents[_0x732f[10]](event,_0xcc90x8);_0xcc90xa(null)}}module[_0x732f[11]]= ChatRoomEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_room/chat_room.socket.js b/server/api/chat_room/chat_room.socket.js index d179af4..66dc905 100644 --- a/server/api/chat_room/chat_room.socket.js +++ b/server/api/chat_room/chat_room.socket.js @@ -1 +1 @@ -var _0xd326=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x63\x68\x61\x74\x5F\x72\x6F\x6F\x6D\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x68\x61\x74\x5F\x72\x6F\x6F\x6D\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xd326[0];const ChatRoomEvents=require(_0xd326[1]);var events=[_0xd326[2],_0xd326[3]];exports[_0xd326[4]]= function(_0xc52bx3){for(var _0xc52bx4=0,_0xc52bx5=events[_0xd326[5]];_0xc52bx4< _0xc52bx5;_0xc52bx4++){var _0xc52bx6=events[_0xc52bx4];var _0xc52bx7=createListener(_0xd326[6]+ _0xc52bx6,_0xc52bx3);ChatRoomEvents[_0xd326[7]](_0xc52bx6,_0xc52bx7);_0xc52bx3[_0xd326[7]](_0xd326[8],removeListener(_0xc52bx6,_0xc52bx7))}};function createListener(_0xc52bx6,_0xc52bx3){return function(_0xc52bx9){_0xc52bx3[_0xd326[9]](_0xc52bx6,_0xc52bx9)}}function removeListener(_0xc52bx6,_0xc52bx7){return function(){ChatRoomEvents[_0xd326[10]](_0xc52bx6,_0xc52bx7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_room/index.js b/server/api/chat_room/index.js index eafc5b3..66dc905 100644 --- a/server/api/chat_room/index.js +++ b/server/api/chat_room/index.js @@ -1 +1 @@ -var _0x1d51=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x63\x68\x61\x74\x5F\x72\x6F\x6F\x6D\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x43\x68\x61\x74","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x6F\x6E\x6C\x69\x6E\x65","\x67\x65\x74\x4F\x6E\x6C\x69\x6E\x65\x52\x6F\x6F\x6D","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64","\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64","\x2F\x6D\x65","\x75\x73\x65\x72","\x6D\x65","\x2F\x67\x72\x6F\x75\x70\x73","\x67\x65\x74\x47\x72\x6F\x75\x70\x73","\x2F\x65\x78\x74\x65\x72\x6E\x61\x6C\x73","\x67\x65\x74\x45\x78\x74\x65\x72\x6E\x61\x6C\x73","\x2F\x61\x67\x65\x6E\x74\x73","\x67\x65\x74\x41\x67\x65\x6E\x74\x73","\x2F\x61\x67\x65\x6E\x74\x73\x2F\x3A\x69\x64","\x67\x65\x74\x41\x67\x65\x6E\x74","\x2F\x75\x73\x65\x72\x73","\x67\x65\x74\x52\x6F\x6F\x6D\x42\x79\x55\x73\x65\x72\x73","\x2F\x64\x61\x73\x68\x62\x6F\x61\x72\x64","\x68\x61\x73\x4D\x61\x69\x6C","\x67\x65\x74\x44\x61\x73\x68\x62\x6F\x61\x72\x64\x56\x61\x6C\x75\x65\x73","\x2F\x74\x79\x70\x65\x2F\x3A\x74\x79\x70\x65","\x67\x65\x74\x52\x6F\x6F\x6D\x42\x79\x54\x79\x70\x65","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x65\x78\x70\x6F\x72\x74","\x65\x78\x70\x6F\x72\x74","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x2F\x3A\x69\x64\x2F\x6D\x65\x73\x73\x61\x67\x65\x73","\x63\x72\x65\x61\x74\x65\x4D\x65\x73\x73\x61\x67\x65","\x75\x70\x64\x61\x74\x65\x50\x61\x74\x63\x68","\x70\x61\x74\x63\x68","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x2F\x3A\x69\x64\x2F\x75\x73\x65\x72\x73","\x75\x70\x64\x61\x74\x65\x55\x73\x65\x72\x73","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x1d51[0];var express=require(_0x1d51[1]);var controller=require(_0x1d51[2]);var auth=require(_0x1d51[3]);var license=require(_0x1d51[4]);var router=express.Router();router[_0x1d51[13]](_0x1d51[5],license[_0x1d51[6]](),license[_0x1d51[7]](),auth[_0x1d51[8]](),auth[_0x1d51[11]]([8],[_0x1d51[9],_0x1d51[10]]),controller[_0x1d51[12]]);router[_0x1d51[13]](_0x1d51[14],license[_0x1d51[6]](),license[_0x1d51[7]](),auth[_0x1d51[8]](),auth[_0x1d51[11]]([8],[_0x1d51[9],_0x1d51[10]]),controller[_0x1d51[15]]);router[_0x1d51[13]](_0x1d51[16],license[_0x1d51[6]](),license[_0x1d51[7]](),auth[_0x1d51[8]](),auth[_0x1d51[11]]([8],[_0x1d51[9]]),controller[_0x1d51[17]]);router[_0x1d51[13]](_0x1d51[18],license[_0x1d51[6]](),license[_0x1d51[7]](),auth[_0x1d51[8]](),auth[_0x1d51[11]]([8],[_0x1d51[9]]),controller[_0x1d51[19]]);router[_0x1d51[13]](_0x1d51[20],license[_0x1d51[6]](),license[_0x1d51[7]](),auth[_0x1d51[8]](),auth[_0x1d51[11]]([8],[_0x1d51[9],_0x1d51[21],_0x1d51[10]]),controller[_0x1d51[22]]);router[_0x1d51[13]](_0x1d51[23],license[_0x1d51[6]](),license[_0x1d51[7]](),auth[_0x1d51[8]](),auth[_0x1d51[11]]([8],[_0x1d51[9],_0x1d51[10]]),controller[_0x1d51[24]]);router[_0x1d51[13]](_0x1d51[25],license[_0x1d51[6]](),license[_0x1d51[7]](),auth[_0x1d51[8]](),auth[_0x1d51[11]]([8],[_0x1d51[9],_0x1d51[10]]),controller[_0x1d51[26]]);router[_0x1d51[13]](_0x1d51[27],license[_0x1d51[6]](),license[_0x1d51[7]](),auth[_0x1d51[8]](),auth[_0x1d51[11]]([8],[_0x1d51[9],_0x1d51[10]]),controller[_0x1d51[28]]);router[_0x1d51[13]](_0x1d51[29],license[_0x1d51[6]](),license[_0x1d51[7]](),auth[_0x1d51[8]](),auth[_0x1d51[11]]([8],[_0x1d51[9],_0x1d51[10]]),controller[_0x1d51[30]]);router[_0x1d51[13]](_0x1d51[31],license[_0x1d51[6]](),license[_0x1d51[7]](),auth[_0x1d51[8]](),auth[_0x1d51[11]]([8],[_0x1d51[9],_0x1d51[10]]),controller[_0x1d51[32]]);router[_0x1d51[13]](_0x1d51[33],license[_0x1d51[6]](),license[_0x1d51[34]](),auth[_0x1d51[8]](),controller[_0x1d51[35]]);router[_0x1d51[13]](_0x1d51[36],license[_0x1d51[6]](),license[_0x1d51[7]](),auth[_0x1d51[8]](),auth[_0x1d51[11]]([8],[_0x1d51[9],_0x1d51[10]]),controller[_0x1d51[37]]);router[_0x1d51[13]](_0x1d51[38],license[_0x1d51[6]](),license[_0x1d51[7]](),auth[_0x1d51[8]](),auth[_0x1d51[11]]([8],[_0x1d51[9],_0x1d51[10]]),controller[_0x1d51[39]]);router[_0x1d51[13]](_0x1d51[40],license[_0x1d51[6]](),license[_0x1d51[7]](),auth[_0x1d51[8]](),auth[_0x1d51[11]]([8],[_0x1d51[9],_0x1d51[21],_0x1d51[10]]),controller[_0x1d51[41]]);router[_0x1d51[43]](_0x1d51[5],license[_0x1d51[6]](),license[_0x1d51[7]](),auth[_0x1d51[8]](),auth[_0x1d51[11]]([8],[_0x1d51[9],_0x1d51[10]]),controller[_0x1d51[42]]);router[_0x1d51[43]](_0x1d51[44],license[_0x1d51[6]](),license[_0x1d51[7]](),auth[_0x1d51[8]](),auth[_0x1d51[11]]([8],[_0x1d51[9],_0x1d51[10]]),controller[_0x1d51[45]]);router[_0x1d51[47]](_0x1d51[38],license[_0x1d51[6]](),license[_0x1d51[7]](),auth[_0x1d51[8]](),auth[_0x1d51[11]]([8],[_0x1d51[9],_0x1d51[10]]),controller[_0x1d51[46]]);router[_0x1d51[49]](_0x1d51[38],license[_0x1d51[6]](),license[_0x1d51[7]](),auth[_0x1d51[8]](),auth[_0x1d51[11]]([8],[_0x1d51[9],_0x1d51[10]]),controller[_0x1d51[48]]);router[_0x1d51[49]](_0x1d51[50],license[_0x1d51[6]](),license[_0x1d51[7]](),auth[_0x1d51[8]](),auth[_0x1d51[11]]([8],[_0x1d51[9],_0x1d51[10]]),controller[_0x1d51[51]]);router[_0x1d51[53]](_0x1d51[38],license[_0x1d51[6]](),license[_0x1d51[7]](),auth[_0x1d51[8]](),auth[_0x1d51[11]]([8],[_0x1d51[9],_0x1d51[10]]),controller[_0x1d51[52]]);module[_0x1d51[54]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_visitor/chat_visitor.controller.js b/server/api/chat_visitor/chat_visitor.controller.js index 7a3568c..66dc905 100644 --- a/server/api/chat_visitor/chat_visitor.controller.js +++ b/server/api/chat_visitor/chat_visitor.controller.js @@ -1 +1 @@ -var _0xa234=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x43\x68\x61\x74\x56\x69\x73\x69\x74\x6F\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x43\x68\x61\x74\x45\x6E\x71\x75\x69\x72\x79","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0xa234[0];var _=require(_0xa234[1]);var Util=require(_0xa234[2]);var logger=require(_0xa234[4])(_0xa234[3]);var ChatVisitor=require(_0xa234[6])[_0xa234[5]];var ChatEnquiry=require(_0xa234[6])[_0xa234[7]];var ChatWebsite=require(_0xa234[6])[_0xa234[8]];exports[_0xa234[9]]= function(_0xae43x7,_0xae43x8,_0xae43x9){return ChatVisitor[_0xa234[17]](_[_0xa234[16]](Util[_0xa234[15]](_0xae43x7[_0xa234[14]]),{include:[{model:ChatWebsite}]}))[_0xa234[13]](function(_0xae43xb){_0xae43x8[_0xa234[12]](200)[_0xa234[11]](_0xae43xb)})[_0xa234[10]](function(_0xae43xa){return handleError(_0xae43x8,_0xae43xa)})};exports[_0xa234[18]]= function(_0xae43x7,_0xae43x8){return ChatVisitor[_0xa234[22]](_0xae43x7[_0xa234[21]][_0xa234[20]],{include:[{model:ChatEnquiry},{model:ChatWebsite}]})[_0xa234[13]](function(_0xae43xc){if(!_0xae43xc){return _0xae43x8[_0xa234[19]](404)};return _0xae43x8[_0xa234[11]](_0xae43xc)})[_0xa234[10]](function(_0xae43xa){return handleError(_0xae43x8,_0xae43xa)})};exports[_0xa234[23]]= function(_0xae43x7,_0xae43x8){return ChatVisitor[_0xa234[23]](_0xae43x7[_0xa234[24]])[_0xa234[13]](function(_0xae43xc){return _0xae43x8[_0xa234[12]](201)[_0xa234[11]](_0xae43xc)})[_0xa234[10]](function(_0xae43xa){return handleError(_0xae43x8,_0xae43xa)})};exports[_0xa234[25]]= function(_0xae43x7,_0xae43x8){if(_0xae43x7[_0xa234[24]][_0xa234[20]]){delete _0xae43x7[_0xa234[24]][_0xa234[20]]};return ChatVisitor[_0xa234[22]](_0xae43x7[_0xa234[21]][_0xa234[20]])[_0xa234[13]](function(_0xae43xc){if(!_0xae43xc){return _0xae43x8[_0xa234[19]](404)};var _0xae43xd=_[_0xa234[16]](_0xae43xc,_0xae43x7[_0xa234[24]]);return _0xae43xd[_0xa234[26]]()})[_0xa234[13]](function(_0xae43xc){return _0xae43x8[_0xa234[12]](200)[_0xa234[11]](_0xae43xc)})[_0xa234[10]](function(_0xae43xa){return handleError(_0xae43x8,_0xae43xa)})};exports[_0xa234[27]]= function(_0xae43x7,_0xae43x8){return ChatVisitor[_0xa234[22]](_0xae43x7[_0xa234[21]][_0xa234[20]])[_0xa234[13]](function(_0xae43xc){if(!_0xae43xc){return _0xae43x8[_0xa234[19]](404)};return _0xae43xc[_0xa234[27]]()})[_0xa234[13]](function(){return _0xae43x8[_0xa234[19]](204)})[_0xa234[10]](function(_0xae43xa){return handleError(_0xae43x8,_0xae43xa)})};function handleError(_0xae43x8,_0xae43xa){logger[_0xa234[29]](_0xae43xa[_0xa234[28]]);return _0xae43x8[_0xa234[12]](500)[_0xa234[11]](_0xae43xa)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_visitor/chat_visitor.events.js b/server/api/chat_visitor/chat_visitor.events.js index c53449e..66dc905 100644 --- a/server/api/chat_visitor/chat_visitor.events.js +++ b/server/api/chat_visitor/chat_visitor.events.js @@ -1 +1 @@ -var _0xd062=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x68\x61\x74\x56\x69\x73\x69\x74\x6F\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xd062[0];const EventEmitter=require(_0xd062[1]);const ChatVisitor=require(_0xd062[3])[_0xd062[2]];var ChatVisitorEvents= new EventEmitter();ChatVisitorEvents[_0xd062[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xd062[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xd062[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xd062[6]};for(var e in events){var event=events[e];ChatVisitor[_0xd062[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xf505x8,_0xf505x9,_0xf505xa){ChatVisitorEvents[_0xd062[10]](event+ _0xd062[8]+ _0xf505x8[_0xd062[9]],_0xf505x8);ChatVisitorEvents[_0xd062[10]](event,_0xf505x8);_0xf505xa(null)}}module[_0xd062[11]]= ChatVisitorEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_visitor/chat_visitor.socket.js b/server/api/chat_visitor/chat_visitor.socket.js index b1462f1..66dc905 100644 --- a/server/api/chat_visitor/chat_visitor.socket.js +++ b/server/api/chat_visitor/chat_visitor.socket.js @@ -1 +1 @@ -var _0xa0aa=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x63\x68\x61\x74\x5F\x76\x69\x73\x69\x74\x6F\x72\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x68\x61\x74\x5F\x76\x69\x73\x69\x74\x6F\x72\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xa0aa[0];const ChatVisitorEvents=require(_0xa0aa[1]);var events=[_0xa0aa[2],_0xa0aa[3]];exports[_0xa0aa[4]]= function(_0xe92dx3){for(var _0xe92dx4=0,_0xe92dx5=events[_0xa0aa[5]];_0xe92dx4< _0xe92dx5;_0xe92dx4++){var _0xe92dx6=events[_0xe92dx4];var _0xe92dx7=createListener(_0xa0aa[6]+ _0xe92dx6,_0xe92dx3);ChatVisitorEvents[_0xa0aa[7]](_0xe92dx6,_0xe92dx7);_0xe92dx3[_0xa0aa[7]](_0xa0aa[8],removeListener(_0xe92dx6,_0xe92dx7))}};function createListener(_0xe92dx6,_0xe92dx3){return function(_0xe92dx9){_0xe92dx3[_0xa0aa[9]](_0xe92dx6,_0xe92dx9)}}function removeListener(_0xe92dx6,_0xe92dx7){return function(){ChatVisitorEvents[_0xa0aa[10]](_0xe92dx6,_0xe92dx7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_visitor/index.js b/server/api/chat_visitor/index.js index c377863..66dc905 100644 --- a/server/api/chat_visitor/index.js +++ b/server/api/chat_visitor/index.js @@ -1 +1 @@ -var _0x4170=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x63\x68\x61\x74\x5F\x76\x69\x73\x69\x74\x6F\x72\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x43\x68\x61\x74","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x4170[0];var express=require(_0x4170[1]);var controller=require(_0x4170[2]);var auth=require(_0x4170[3]);var license=require(_0x4170[4]);var router=express.Router();router[_0x4170[12]](_0x4170[5],license[_0x4170[6]](),license[_0x4170[7]](),auth[_0x4170[8]](),auth[_0x4170[10]]([8],[_0x4170[9]]),controller[_0x4170[11]]);router[_0x4170[12]](_0x4170[13],license[_0x4170[6]](),license[_0x4170[7]](),auth[_0x4170[8]](),auth[_0x4170[10]]([8],[_0x4170[9]]),controller[_0x4170[14]]);router[_0x4170[16]](_0x4170[5],license[_0x4170[6]](),license[_0x4170[7]](),auth[_0x4170[8]](),auth[_0x4170[10]]([8],[_0x4170[9]]),controller[_0x4170[15]]);router[_0x4170[18]](_0x4170[13],license[_0x4170[6]](),license[_0x4170[7]](),auth[_0x4170[8]](),auth[_0x4170[10]]([8],[_0x4170[9]]),controller[_0x4170[17]]);router[_0x4170[20]](_0x4170[13],license[_0x4170[6]](),license[_0x4170[7]](),auth[_0x4170[8]](),auth[_0x4170[10]]([8],[_0x4170[9]]),controller[_0x4170[19]]);module[_0x4170[21]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_website/chat_website.controller.js b/server/api/chat_website/chat_website.controller.js index 4bc8b1c..66dc905 100644 --- a/server/api/chat_website/chat_website.controller.js +++ b/server/api/chat_website/chat_website.controller.js @@ -1 +1 @@ -var _0x4af6=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x6D\x75\x73\x74\x61\x63\x68\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65","\x43\x68\x61\x74\x51\x75\x65\x75\x65","\x55\x73\x65\x72","\x49\x6E\x74\x65\x72\x76\x61\x6C","\x43\x68\x61\x74\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65\x73\x46\x69\x65\x6C\x64","\x43\x68\x61\x74\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E","\x43\x68\x61\x74\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x73\x6E\x69\x70\x70\x65\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6D\x70\x6F\x6E\x65\x6E\x74\x73\x2F\x78\x63\x68\x61\x74\x74\x79","\x75\x70\x6C\x6F\x61\x64\x2D\x66\x69\x6C\x65","\x70\x61\x74\x68","\x73\x69\x6D\x70\x6C\x65\x2D\x72\x61\x6E\x64\x6F\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x68\x61\x6E\x67\x65\x4C\x6F\x67\x6F","\x72\x6F\x6F\x74","\x73\x65\x72\x76\x65\x72","\x66\x69\x6C\x65\x73","\x69\x6D\x61\x67\x65\x73","\x6A\x6F\x69\x6E","\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x65\x78\x74\x6E\x61\x6D\x65","\x4D\x61\x78\x20\x6E\x75\x6D\x62\x65\x72\x20\x6F\x66\x20\x66\x69\x6C\x65\x73\x20\x75\x70\x6C\x6F\x61\x64\x20\x65\x78\x63\x65\x65\x64\x65\x64","\x4F\x6E\x6C\x79\x20\x6A\x70\x65\x67\x20\x61\x6E\x64\x20\x70\x6E\x67\x20\x66\x6F\x72\x6D\x61\x74\x20\x61\x63\x63\x65\x70\x74\x65\x64","\x49\x6E\x76\x61\x6C\x69\x64\x20\x72\x65\x71\x75\x65\x73\x74","\x65\x6E\x64","\x66\x69\x6C\x65","\x6C\x6F\x67\x6F","\x75\x70\x64\x61\x74\x65","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x6F\x6E","\x65\x72\x72\x6F\x72","\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x20\x55\x70\x6C\x6F\x61\x64\x20\x65\x72\x72\x6F\x72\x20\x3A","\x70\x61\x72\x73\x65","\x67\x65\x74\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x6C\x65\x6E\x67\x74\x68","\x67\x65\x74\x43\x68\x61\x74\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x63\x72\x65\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65\x49\x64","\x62\x6F\x64\x79","\x63\x72\x65\x61\x74\x65","\x75\x70\x64\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x69\x73\x70\x49\x64","\x64\x65\x73\x74\x72\x6F\x79\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x64\x65\x73\x74\x72\x6F\x79","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x6E\x61\x6D\x65","\x70\x72\x69\x6F\x72\x69\x74\x79\x20\x41\x53\x43","\x67\x65\x74\x43\x68\x61\x74\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x73\x68\x6F\x77\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E\x73","\x67\x65\x74\x43\x68\x61\x74\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E\x73","\x67\x65\x74\x53\x6E\x69\x70\x70\x65\x74\x43\x6F\x64\x65","\x72\x65\x6D\x6F\x74\x65","\x72\x65\x6E\x64\x65\x72","\x6C\x6F\x67","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x75\x70\x64\x61\x74\x65\x64\x41\x74","\x70\x72\x69\x6F\x72\x69\x74\x79","\x66\x6F\x72\x45\x61\x63\x68","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x77\x65\x62\x73\x69\x74\x65\x73","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x69\x64\x73","\x64\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x61\x70\x70\x49\x64","\x67\x65\x74\x46\x6F\x72\x6D\x73","\x6A\x73\x6F\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x74\x79\x70\x65","\x73\x63\x6F\x70\x65","\x75\x70\x64\x61\x74\x65\x46\x6F\x72\x6D\x73","\x6F\x6E\x6C\x69\x6E\x65","\x4F\x6E\x6C\x69\x6E\x65\x49\x64","\x6F\x66\x66\x6C\x69\x6E\x65","\x4F\x66\x66\x6C\x69\x6E\x65\x49\x64","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E\x73","\x64\x65\x73\x74\x72\x6F\x79\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E","\x70\x61\x63\x74\x69\x6F\x6E\x49\x64","\x63\x72\x65\x61\x74\x65\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E","\x73\x74\x61\x63\x6B","\x63\x72\x65\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x6D\x61\x78","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E"];_0x4af6[0];var _=require(_0x4af6[1]);var util=require(_0x4af6[2]);var Mustache=require(_0x4af6[3]);var Util=require(_0x4af6[4]);var logger=require(_0x4af6[6])(_0x4af6[5]);var sequelize=require(_0x4af6[8])[_0x4af6[7]];var ChatWebsite=require(_0x4af6[8])[_0x4af6[9]];var ChatQueue=require(_0x4af6[8])[_0x4af6[10]];var User=require(_0x4af6[8])[_0x4af6[11]];var Interval=require(_0x4af6[8])[_0x4af6[12]];var ChatApplication=require(_0x4af6[8])[_0x4af6[13]];var ChatWebsitesField=require(_0x4af6[8])[_0x4af6[14]];var ChatProactiveAction=require(_0x4af6[8])[_0x4af6[15]];var ChatDisposition=require(_0x4af6[8])[_0x4af6[16]];var snippet=require(_0x4af6[18])[_0x4af6[17]];var UploadFile=require(_0x4af6[19]);var path=require(_0x4af6[20]);var sr=require(_0x4af6[21]);var config=require(_0x4af6[22]);exports[_0x4af6[23]]= function(_0xf764x14,_0xf764x15,_0xf764x16){return ChatWebsite[_0x4af6[30]](Util[_0x4af6[29]](_0xf764x14[_0x4af6[28]]))[_0x4af6[27]](function(_0xf764x18){_0xf764x15[_0x4af6[26]](200)[_0x4af6[25]](_0xf764x18)})[_0x4af6[24]](function(_0xf764x17){return handleError(_0xf764x15,_0xf764x17)})};exports[_0x4af6[31]]= function(_0xf764x14,_0xf764x15){return ChatWebsite[_0x4af6[35]](_0xf764x14[_0x4af6[34]][_0x4af6[33]])[_0x4af6[27]](function(_0xf764x19){if(!_0xf764x19){return _0xf764x15[_0x4af6[32]](404)};return _0xf764x15[_0x4af6[25]](_0xf764x19)})[_0x4af6[24]](function(_0xf764x17){return handleError(_0xf764x15,_0xf764x17)})};exports[_0x4af6[36]]= function(_0xf764x14,_0xf764x15){var _0xf764x1a= new UploadFile({dest:path[_0x4af6[41]](config[_0x4af6[37]],_0x4af6[38],_0x4af6[39],_0x4af6[40]),maxNumberOfFiles:1,minNumberOfFiles:0,acceptFileTypes:/(\.|\/)(jpeg|png)$/i,rename:function(_0xf764x1b,_0xf764x1c){return sr()+ path[_0x4af6[43]](_0xf764x1c[_0x4af6[42]])},messages:{maxNumberOfFiles:_0x4af6[44],acceptFileTypes:_0x4af6[45],invalidRequest:_0x4af6[46]}});_0xf764x1a[_0x4af6[52]](_0x4af6[47],function(_0xf764x1d,_0xf764x1e){if(!_0xf764x1e[_0x4af6[48]][_0x4af6[42]]){return _0xf764x15[_0x4af6[26]](500)[_0x4af6[25]](_0xf764x1a)};return sequelize[_0x4af6[51]](function(_0xf764x1f){return ChatWebsite[_0x4af6[35]](_0xf764x14[_0x4af6[34]][_0x4af6[33]])[_0x4af6[27]](function(_0xf764x21){if(!_0xf764x21){return _0xf764x15[_0x4af6[32]](404)};var _0xf764x22={};_0xf764x22[_0x4af6[49]]= _0xf764x1e[_0x4af6[48]][_0x4af6[42]];return _0xf764x21[_0x4af6[50]](_0xf764x22,{transaction:_0xf764x1f})})[_0x4af6[27]](function(_0xf764x20){return _0xf764x15[_0x4af6[26]](200)[_0x4af6[25]](_0xf764x20)})})[_0x4af6[24]](function(_0xf764x17){return handleError(_0xf764x15,_0xf764x17)})});_0xf764x1a[_0x4af6[52]](_0x4af6[53],function(_0xf764x17){logger[_0x4af6[53]](_0x4af6[54],_0xf764x17);return handleError(_0xf764x15,_0xf764x17)});_0xf764x1a[_0x4af6[55]](_0xf764x14)};exports[_0x4af6[56]]= function(_0xf764x14,_0xf764x15,_0xf764x16){return ChatWebsite[_0x4af6[35]](_0xf764x14[_0x4af6[34]][_0x4af6[33]])[_0x4af6[27]](function(_0xf764x19){if(!_0xf764x19){return _0xf764x15[_0x4af6[32]](404)};return _0xf764x19[_0x4af6[58]]()})[_0x4af6[27]](function(_0xf764x23){return _0xf764x15[_0x4af6[26]](200)[_0x4af6[25]]({rows:_0xf764x23,count:_0xf764x23[_0x4af6[57]]})})[_0x4af6[24]](function(_0xf764x17){return handleError(_0xf764x15,_0xf764x17)})};exports[_0x4af6[59]]= function(_0xf764x14,_0xf764x15,_0xf764x16){_0xf764x14[_0x4af6[61]][_0x4af6[60]]= _0xf764x14[_0x4af6[34]][_0x4af6[33]];return ChatDisposition[_0x4af6[62]](_0xf764x14[_0x4af6[61]])[_0x4af6[27]](function(_0xf764x24){return _0xf764x15[_0x4af6[26]](201)[_0x4af6[25]](_0xf764x24)})[_0x4af6[24]](function(_0xf764x17){return handleError(_0xf764x15,_0xf764x17)})};exports[_0x4af6[63]]= function(_0xf764x14,_0xf764x15){if(_0xf764x14[_0x4af6[61]][_0x4af6[33]]){delete _0xf764x14[_0x4af6[61]][_0x4af6[33]]};return ChatDisposition[_0x4af6[35]](_0xf764x14[_0x4af6[34]][_0x4af6[66]])[_0x4af6[27]](function(_0xf764x24){if(!_0xf764x24){return _0xf764x15[_0x4af6[32]](404)};var _0xf764x25=_[_0x4af6[64]](_0xf764x24,_0xf764x14[_0x4af6[61]]);return _0xf764x25[_0x4af6[65]]()})[_0x4af6[27]](function(_0xf764x19){return _0xf764x15[_0x4af6[26]](200)[_0x4af6[25]](_0xf764x19)})[_0x4af6[24]](function(_0xf764x17){return handleError(_0xf764x15,_0xf764x17)})};exports[_0x4af6[67]]= function(_0xf764x14,_0xf764x15,_0xf764x16){return ChatDisposition[_0x4af6[35]](_0xf764x14[_0x4af6[34]][_0x4af6[66]])[_0x4af6[27]](function(_0xf764x26){if(!_0xf764x26){return _0xf764x15[_0x4af6[32]](404)};return _0xf764x26[_0x4af6[68]]()})[_0x4af6[27]](function(){return _0xf764x15[_0x4af6[32]](204)})[_0x4af6[24]](function(_0xf764x17){return handleError(_0xf764x15,_0xf764x17)})};exports[_0x4af6[69]]= function(_0xf764x14,_0xf764x15,_0xf764x16){return ChatWebsite[_0x4af6[35]](_0xf764x14[_0x4af6[34]][_0x4af6[33]])[_0x4af6[27]](function(_0xf764x28){if(!_0xf764x28){return _0xf764x15[_0x4af6[32]](404)};return _0xf764x28[_0x4af6[72]](_[_0x4af6[64]](Util[_0x4af6[29]](_0xf764x14[_0x4af6[28]]),{include:[{model:ChatQueue,attributes:[_0x4af6[33],_0x4af6[70]]},{model:User,attributes:[_0x4af6[33],_0x4af6[70]]},{model:Interval,attributes:[_0x4af6[33],_0x4af6[70]]}],order:_0x4af6[71]}))})[_0x4af6[27]](function(_0xf764x27){return _0xf764x15[_0x4af6[25]]({count:_0xf764x27[_0x4af6[57]],rows:_0xf764x27})})[_0x4af6[24]](function(_0xf764x17){return handleError(_0xf764x15,_0xf764x17)})};exports[_0x4af6[73]]= function(_0xf764x14,_0xf764x15,_0xf764x16){return ChatWebsite[_0x4af6[35]](_0xf764x14[_0x4af6[34]][_0x4af6[33]])[_0x4af6[27]](function(_0xf764x28){if(!_0xf764x28){return _0xf764x15[_0x4af6[32]](404)};return _0xf764x28[_0x4af6[74]](Util[_0x4af6[29]](_0xf764x14[_0x4af6[28]]))})[_0x4af6[27]](function(_0xf764x29){return _0xf764x15[_0x4af6[25]]({count:_0xf764x29[_0x4af6[57]],rows:_0xf764x29})})[_0x4af6[24]](function(_0xf764x17){return handleError(_0xf764x15,_0xf764x17)})};exports[_0x4af6[75]]= function(_0xf764x14,_0xf764x15){return ChatWebsite[_0x4af6[35]](_0xf764x14[_0x4af6[34]][_0x4af6[33]])[_0x4af6[27]](function(_0xf764x19){var _0xf764x2a={remote:_0xf764x19[_0x4af6[76]],websiteId:_0xf764x14[_0x4af6[34]][_0x4af6[33]]};var _0xf764x2b=Mustache[_0x4af6[77]](snippet,_0xf764x2a);return _0xf764x15[_0x4af6[26]](200)[_0x4af6[25]]({html:_0xf764x2b})})[_0x4af6[24]](function(_0xf764x17){return handleError(_0xf764x15,_0xf764x17)})};exports[_0x4af6[62]]= function(_0xf764x14,_0xf764x15){return ChatWebsite[_0x4af6[62]](_0xf764x14[_0x4af6[61]])[_0x4af6[27]](function(_0xf764x19){return _0xf764x15[_0x4af6[26]](201)[_0x4af6[25]](_0xf764x19)})[_0x4af6[24]](function(_0xf764x17){console[_0x4af6[78]](_0xf764x17);return handleError(_0xf764x15,_0xf764x17)})};exports[_0x4af6[50]]= function(_0xf764x14,_0xf764x15){if(_0xf764x14[_0x4af6[61]][_0x4af6[33]]){delete _0xf764x14[_0x4af6[61]][_0x4af6[33]]};return ChatWebsite[_0x4af6[35]](_0xf764x14[_0x4af6[34]][_0x4af6[33]])[_0x4af6[27]](function(_0xf764x19){if(!_0xf764x19){return _0xf764x15[_0x4af6[32]](404)};return _0xf764x19[_0x4af6[50]](_0xf764x14[_0x4af6[61]])})[_0x4af6[27]](function(_0xf764x19){return _0xf764x15[_0x4af6[26]](200)[_0x4af6[25]](_0xf764x19)})[_0x4af6[24]](function(_0xf764x17){return handleError(_0xf764x15,_0xf764x17)})};exports[_0x4af6[79]]= function(_0xf764x14,_0xf764x15){var _0xf764x2c=0;var _0xf764x2d=_0xf764x14[_0x4af6[61]];_0xf764x2d[_0x4af6[83]](function(_0xf764x2e){delete _0xf764x2e[_0x4af6[33]];delete _0xf764x2e[_0x4af6[80]];delete _0xf764x2e[_0x4af6[81]];_0xf764x2e[_0x4af6[82]]= ++_0xf764x2c});return sequelize[_0x4af6[51]](function(_0xf764x1f){return ChatApplication[_0x4af6[68]]({where:{ChatWebsiteId:_0xf764x14[_0x4af6[34]][_0x4af6[33]]},individualHooks:true,transaction:_0xf764x1f})[_0x4af6[27]](function(){return ChatApplication[_0x4af6[84]](_0xf764x2d,{individualHooks:true,transaction:_0xf764x1f})})})[_0x4af6[27]](function(_0xf764x27){return _0xf764x15[_0x4af6[26]](200)[_0x4af6[25]]({count:_0xf764x27[_0x4af6[57]],rows:_0xf764x27})})[_0x4af6[24]](function(_0xf764x17){return handleError(_0xf764x15,_0xf764x17)})};exports[_0x4af6[68]]= function(_0xf764x14,_0xf764x15){return ChatWebsite[_0x4af6[35]](_0xf764x14[_0x4af6[34]][_0x4af6[33]])[_0x4af6[27]](function(_0xf764x19){if(!_0xf764x19){return _0xf764x15[_0x4af6[32]](404)};return _0xf764x19[_0x4af6[68]]()})[_0x4af6[27]](function(){return _0xf764x15[_0x4af6[32]](204)})[_0x4af6[24]](function(_0xf764x17){return handleError(_0xf764x15,_0xf764x17)})};exports[_0x4af6[85]]= function(_0xf764x14,_0xf764x15){return ChatWebsite[_0x4af6[68]]({where:{id:_0xf764x14[_0x4af6[28]][_0x4af6[86]]},individualHooks:true})[_0x4af6[27]](function(){return _0xf764x15[_0x4af6[32]](204)})[_0x4af6[24]](function(_0xf764x17){return handleError(_0xf764x15,_0xf764x17)})};exports[_0x4af6[87]]= function(_0xf764x14,_0xf764x15){return ChatApplication[_0x4af6[68]]({where:{id:_0xf764x14[_0x4af6[28]][_0x4af6[88]]},individualHooks:true})[_0x4af6[27]](function(){return _0xf764x15[_0x4af6[32]](204)})[_0x4af6[24]](function(_0xf764x17){return handleError(_0xf764x15,_0xf764x17)})};exports[_0x4af6[89]]= function(_0xf764x14,_0xf764x15,_0xf764x16){return ChatApplication[_0x4af6[35]](_0xf764x14[_0x4af6[34]][_0x4af6[90]])[_0x4af6[27]](function(_0xf764x2f){if(!_0xf764x2f){return _0xf764x15[_0x4af6[32]](404)};return _0xf764x2f[_0x4af6[68]]()})[_0x4af6[27]](function(){return _0xf764x15[_0x4af6[32]](204)})[_0x4af6[24]](function(_0xf764x17){return handleError(_0xf764x15,_0xf764x17)})};exports[_0x4af6[91]]= function(_0xf764x14,_0xf764x15){return ChatWebsitesField[_0x4af6[95]]({method:[_0xf764x14[_0x4af6[34]][_0x4af6[94]],_0xf764x14[_0x4af6[34]][_0x4af6[33]]]})[_0x4af6[93]]()[_0x4af6[27]](function(_0xf764x30){return _0xf764x15[_0x4af6[26]](200)[_0x4af6[92]](_0xf764x30)})[_0x4af6[24]](function(_0xf764x17){return handleError(_0xf764x15,_0xf764x17)})};exports[_0x4af6[96]]= function(_0xf764x14,_0xf764x15,_0xf764x16){return ChatWebsitesField[_0x4af6[68]]({where:_0xf764x14[_0x4af6[34]][_0x4af6[94]]=== _0x4af6[97]?{OnlineId:_0xf764x14[_0x4af6[34]][_0x4af6[33]]}:{OfflineId:_0xf764x14[_0x4af6[34]][_0x4af6[33]]}})[_0x4af6[27]](function(){_[_0x4af6[83]](_0xf764x14[_0x4af6[61]],function(_0xf764x31){if(_0xf764x14[_0x4af6[34]][_0x4af6[94]]=== _0x4af6[97]){_0xf764x31[_0x4af6[98]]= _0xf764x14[_0x4af6[34]][_0x4af6[33]]}else {if(_0xf764x14[_0x4af6[34]][_0x4af6[94]]=== _0x4af6[99]){_0xf764x31[_0x4af6[100]]= _0xf764x14[_0x4af6[34]][_0x4af6[33]]}}});return ChatWebsitesField[_0x4af6[84]](_0xf764x14[_0x4af6[61]])})[_0x4af6[27]](function(_0xf764x1d){_0xf764x15[_0x4af6[26]](201)[_0x4af6[92]](_0xf764x1d)})[_0x4af6[24]](function(_0xf764x17){return handleError(_0xf764x15,_0xf764x17)})};exports[_0x4af6[101]]= function(_0xf764x14,_0xf764x15){return ChatProactiveAction[_0x4af6[68]]({where:{id:_0xf764x14[_0x4af6[28]][_0x4af6[88]]},individualHooks:true})[_0x4af6[27]](function(){return _0xf764x15[_0x4af6[32]](204)})[_0x4af6[24]](function(_0xf764x17){return handleError(_0xf764x15,_0xf764x17)})};exports[_0x4af6[102]]= function(_0xf764x14,_0xf764x15,_0xf764x16){return ChatProactiveAction[_0x4af6[35]](_0xf764x14[_0x4af6[34]][_0x4af6[103]])[_0x4af6[27]](function(_0xf764x32){if(!_0xf764x32){return _0xf764x15[_0x4af6[32]](404)};return _0xf764x32[_0x4af6[68]]()})[_0x4af6[27]](function(){return _0xf764x15[_0x4af6[32]](204)})[_0x4af6[24]](function(_0xf764x17){return handleError(_0xf764x15,_0xf764x17)})};exports[_0x4af6[104]]= function(_0xf764x14,_0xf764x15,_0xf764x16){return ChatWebsite[_0x4af6[35]](_0xf764x14[_0x4af6[34]][_0x4af6[33]])[_0x4af6[27]](function(_0xf764x28){if(!_0xf764x28){return _0xf764x15[_0x4af6[32]](404)};_0xf764x14[_0x4af6[61]][_0x4af6[60]]= _0xf764x28[_0x4af6[33]];return ChatProactiveAction[_0x4af6[62]](_0xf764x14[_0x4af6[61]])})[_0x4af6[27]](function(_0xf764x32){return _0xf764x15[_0x4af6[26]](201)[_0x4af6[25]](_0xf764x32)})[_0x4af6[24]](function(_0xf764x17){return handleError(_0xf764x15,_0xf764x17)})};exports[_0x4af6[105]]= function(_0xf764x14,_0xf764x15){if(_0xf764x14[_0x4af6[61]][_0x4af6[33]]){delete _0xf764x14[_0x4af6[61]][_0x4af6[33]]};return ChatProactiveAction[_0x4af6[35]](_0xf764x14[_0x4af6[34]][_0x4af6[103]])[_0x4af6[27]](function(_0xf764x32){if(!_0xf764x32){return _0xf764x15[_0x4af6[32]](404)};return _0xf764x32[_0x4af6[50]](_0xf764x14[_0x4af6[61]])})[_0x4af6[27]](function(_0xf764x32){return _0xf764x15[_0x4af6[26]](200)[_0x4af6[25]](_0xf764x32)})[_0x4af6[24]](function(_0xf764x17){return handleError(_0xf764x15,_0xf764x17)})};function handleError(_0xf764x15,_0xf764x17){logger[_0x4af6[53]](_0xf764x17[_0x4af6[106]]);return _0xf764x15[_0x4af6[26]](500)[_0x4af6[25]](_0xf764x17)}exports[_0x4af6[107]]= function(_0xf764x14,_0xf764x15,_0xf764x16){return ChatApplication[_0x4af6[108]](_0x4af6[82],{where:{ChatWebsiteId:_0xf764x14[_0x4af6[34]][_0x4af6[33]]}})[_0x4af6[27]](function(_0xf764x34){_0xf764x14[_0x4af6[61]][_0x4af6[82]]= _0xf764x34?++_0xf764x34:1;_0xf764x14[_0x4af6[61]][_0x4af6[60]]= _0xf764x14[_0x4af6[34]][_0x4af6[33]];return ChatApplication[_0x4af6[62]](_0xf764x14[_0x4af6[61]])})[_0x4af6[27]](function(_0xf764x2f){return _0xf764x15[_0x4af6[26]](201)[_0x4af6[25]](_0xf764x2f)})[_0x4af6[24]](function(_0xf764x17){return handleError(_0xf764x15,_0xf764x17)})};exports[_0x4af6[109]]= function(_0xf764x14,_0xf764x15){if(_0xf764x14[_0x4af6[61]][_0x4af6[33]]){delete _0xf764x14[_0x4af6[61]][_0x4af6[33]]};return ChatApplication[_0x4af6[35]](_0xf764x14[_0x4af6[34]][_0x4af6[90]])[_0x4af6[27]](function(_0xf764x2f){if(!_0xf764x2f){return _0xf764x15[_0x4af6[32]](404)};return _0xf764x2f[_0x4af6[50]](_0xf764x14[_0x4af6[61]])})[_0x4af6[27]](function(_0xf764x2f){return _0xf764x15[_0x4af6[26]](200)[_0x4af6[25]](_0xf764x2f)})[_0x4af6[24]](function(_0xf764x17){return handleError(_0xf764x15,_0xf764x17)})};exports[_0x4af6[110]]= function(_0xf764x14,_0xf764x15){return ChatApplication[_0x4af6[35]](_0xf764x14[_0x4af6[34]][_0x4af6[90]],{include:[{all:true}]})[_0x4af6[27]](function(_0xf764x2f){if(!_0xf764x2f){return _0xf764x15[_0x4af6[32]](404)};return _0xf764x15[_0x4af6[25]](_0xf764x2f)})[_0x4af6[24]](function(_0xf764x17){return handleError(_0xf764x15,_0xf764x17)})} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_website/chat_website.events.js b/server/api/chat_website/chat_website.events.js index 2203fd1..66dc905 100644 --- a/server/api/chat_website/chat_website.events.js +++ b/server/api/chat_website/chat_website.events.js @@ -1 +1 @@ -var _0xae67=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xae67[0];const EventEmitter=require(_0xae67[1]);const ChatWebsite=require(_0xae67[3])[_0xae67[2]];var ChatWebsiteEvents= new EventEmitter();ChatWebsiteEvents[_0xae67[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xae67[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xae67[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xae67[6]};for(var e in events){var event=events[e];ChatWebsite[_0xae67[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x59dbx8,_0x59dbx9,_0x59dbxa){ChatWebsiteEvents[_0xae67[10]](event+ _0xae67[8]+ _0x59dbx8[_0xae67[9]],_0x59dbx8);ChatWebsiteEvents[_0xae67[10]](event,_0x59dbx8);_0x59dbxa(null)}}module[_0xae67[11]]= ChatWebsiteEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_website/chat_website.socket.js b/server/api/chat_website/chat_website.socket.js index da333c7..66dc905 100644 --- a/server/api/chat_website/chat_website.socket.js +++ b/server/api/chat_website/chat_website.socket.js @@ -1 +1 @@ -var _0x8116=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x63\x68\x61\x74\x5F\x77\x65\x62\x73\x69\x74\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x68\x61\x74\x5F\x77\x65\x62\x73\x69\x74\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x8116[0];const ChatWebsiteEvents=require(_0x8116[1]);var events=[_0x8116[2],_0x8116[3]];exports[_0x8116[4]]= function(_0xf155x3){for(var _0xf155x4=0,_0xf155x5=events[_0x8116[5]];_0xf155x4< _0xf155x5;_0xf155x4++){var _0xf155x6=events[_0xf155x4];var _0xf155x7=createListener(_0x8116[6]+ _0xf155x6,_0xf155x3);ChatWebsiteEvents[_0x8116[7]](_0xf155x6,_0xf155x7);_0xf155x3[_0x8116[7]](_0x8116[8],removeListener(_0xf155x6,_0xf155x7))}};function createListener(_0xf155x6,_0xf155x3){return function(_0xf155x9){_0xf155x3[_0x8116[9]](_0xf155x6,_0xf155x9)}}function removeListener(_0xf155x6,_0xf155x7){return function(){ChatWebsiteEvents[_0x8116[10]](_0xf155x6,_0xf155x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_website/index.js b/server/api/chat_website/index.js index 4ce6943..66dc905 100644 --- a/server/api/chat_website/index.js +++ b/server/api/chat_website/index.js @@ -1 +1 @@ -var _0xc14e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x63\x68\x61\x74\x5F\x77\x65\x62\x73\x69\x74\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x43\x68\x61\x74","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x61\x67\x65\x6E\x74","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x2F\x3A\x69\x64\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73\x2F\x3A\x61\x70\x70\x49\x64","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x67\x65\x74\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x2F\x3A\x69\x64\x2F\x70\x72\x6F\x61\x63\x74\x69\x76\x65","\x73\x68\x6F\x77\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E\x73","\x2F\x3A\x69\x64\x2F\x66\x69\x65\x6C\x64\x73\x2F\x3A\x74\x79\x70\x65","\x67\x65\x74\x46\x6F\x72\x6D\x73","\x2F\x3A\x69\x64\x2F\x73\x6E\x69\x70\x70\x65\x74","\x67\x65\x74\x53\x6E\x69\x70\x70\x65\x74\x43\x6F\x64\x65","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x63\x72\x65\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x6C\x6F\x67\x6F","\x63\x68\x61\x6E\x67\x65\x4C\x6F\x67\x6F","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73\x2F\x3A\x64\x69\x73\x70\x49\x64","\x75\x70\x64\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x70\x72\x6F\x61\x63\x74\x69\x76\x65\x2F\x3A\x70\x61\x63\x74\x69\x6F\x6E\x49\x64","\x75\x70\x64\x61\x74\x65\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65\x46\x6F\x72\x6D\x73","\x70\x61\x74\x63\x68","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E\x73","\x64\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x64\x65\x73\x74\x72\x6F\x79\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E","\x64\x65\x73\x74\x72\x6F\x79\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x65\x78\x70\x6F\x72\x74\x73"];_0xc14e[0];var express=require(_0xc14e[1]);var controller=require(_0xc14e[2]);var auth=require(_0xc14e[3]);var license=require(_0xc14e[4]);var router=express.Router();router[_0xc14e[12]](_0xc14e[5],license[_0xc14e[6]](),license[_0xc14e[7]](),auth[_0xc14e[8]](),auth[_0xc14e[10]]([8],[_0xc14e[9]]),controller[_0xc14e[11]]);router[_0xc14e[12]](_0xc14e[13],license[_0xc14e[6]](),license[_0xc14e[7]](),auth[_0xc14e[8]](),auth[_0xc14e[10]]([8],[_0xc14e[9],_0xc14e[14]]),controller[_0xc14e[15]]);router[_0xc14e[12]](_0xc14e[16],license[_0xc14e[6]](),license[_0xc14e[7]](),auth[_0xc14e[8]](),auth[_0xc14e[10]]([8],[_0xc14e[9]]),controller[_0xc14e[17]]);router[_0xc14e[12]](_0xc14e[18],license[_0xc14e[6]](),license[_0xc14e[7]](),auth[_0xc14e[8]](),auth[_0xc14e[10]]([8],[_0xc14e[9]]),controller[_0xc14e[19]]);router[_0xc14e[12]](_0xc14e[20],license[_0xc14e[6]](),license[_0xc14e[7]](),auth[_0xc14e[8]](),auth[_0xc14e[10]]([8],[_0xc14e[9],_0xc14e[14]]),controller[_0xc14e[21]]);router[_0xc14e[12]](_0xc14e[22],license[_0xc14e[6]](),license[_0xc14e[7]](),auth[_0xc14e[8]](),auth[_0xc14e[10]]([8],[_0xc14e[9]]),controller[_0xc14e[23]]);router[_0xc14e[12]](_0xc14e[24],license[_0xc14e[6]](),license[_0xc14e[7]](),auth[_0xc14e[8]](),auth[_0xc14e[10]]([8],[_0xc14e[9]]),controller[_0xc14e[25]]);router[_0xc14e[12]](_0xc14e[26],license[_0xc14e[6]](),license[_0xc14e[7]](),auth[_0xc14e[8]](),auth[_0xc14e[10]]([8],[_0xc14e[9]]),controller[_0xc14e[27]]);router[_0xc14e[29]](_0xc14e[5],license[_0xc14e[6]](),license[_0xc14e[7]](),auth[_0xc14e[8]](),auth[_0xc14e[10]]([8],[_0xc14e[9]]),controller[_0xc14e[28]]);router[_0xc14e[29]](_0xc14e[16],license[_0xc14e[6]](),license[_0xc14e[7]](),auth[_0xc14e[8]](),auth[_0xc14e[10]]([8],[_0xc14e[9]]),controller[_0xc14e[30]]);router[_0xc14e[29]](_0xc14e[20],license[_0xc14e[6]](),license[_0xc14e[7]](),auth[_0xc14e[8]](),auth[_0xc14e[10]]([8],[_0xc14e[9]]),controller[_0xc14e[31]]);router[_0xc14e[29]](_0xc14e[22],license[_0xc14e[6]](),license[_0xc14e[7]](),auth[_0xc14e[8]](),auth[_0xc14e[10]]([8],[_0xc14e[9]]),controller[_0xc14e[32]]);router[_0xc14e[29]](_0xc14e[33],license[_0xc14e[6]](),license[_0xc14e[7]](),auth[_0xc14e[8]](),auth[_0xc14e[10]]([8],[_0xc14e[9]]),controller[_0xc14e[34]]);router[_0xc14e[36]](_0xc14e[13],license[_0xc14e[6]](),license[_0xc14e[7]](),auth[_0xc14e[8]](),auth[_0xc14e[10]]([8],[_0xc14e[9]]),controller[_0xc14e[35]]);router[_0xc14e[36]](_0xc14e[16],license[_0xc14e[6]](),license[_0xc14e[7]](),auth[_0xc14e[8]](),auth[_0xc14e[10]]([8],[_0xc14e[9]]),controller[_0xc14e[37]]);router[_0xc14e[36]](_0xc14e[18],license[_0xc14e[6]](),license[_0xc14e[7]](),auth[_0xc14e[8]](),auth[_0xc14e[10]]([8],[_0xc14e[9]]),controller[_0xc14e[38]]);router[_0xc14e[36]](_0xc14e[39],license[_0xc14e[6]](),license[_0xc14e[7]](),auth[_0xc14e[8]](),auth[_0xc14e[10]]([8],[_0xc14e[9]]),controller[_0xc14e[40]]);router[_0xc14e[36]](_0xc14e[41],license[_0xc14e[6]](),license[_0xc14e[7]](),auth[_0xc14e[8]](),auth[_0xc14e[10]]([8],[_0xc14e[9]]),controller[_0xc14e[42]]);router[_0xc14e[36]](_0xc14e[24],license[_0xc14e[6]](),license[_0xc14e[7]](),auth[_0xc14e[8]](),auth[_0xc14e[10]]([8],[_0xc14e[9]]),controller[_0xc14e[43]]);router[_0xc14e[44]](_0xc14e[13],license[_0xc14e[6]](),license[_0xc14e[7]](),auth[_0xc14e[8]](),auth[_0xc14e[10]]([8],[_0xc14e[9]]),controller[_0xc14e[35]]);router[_0xc14e[46]](_0xc14e[5],license[_0xc14e[6]](),license[_0xc14e[7]](),auth[_0xc14e[8]](),auth[_0xc14e[10]]([8],[_0xc14e[9]]),controller[_0xc14e[45]]);router[_0xc14e[46]](_0xc14e[13],license[_0xc14e[6]](),license[_0xc14e[7]](),auth[_0xc14e[8]](),auth[_0xc14e[10]]([8],[_0xc14e[9]]),controller[_0xc14e[47]]);router[_0xc14e[46]](_0xc14e[16],license[_0xc14e[6]](),license[_0xc14e[7]](),auth[_0xc14e[8]](),auth[_0xc14e[10]]([8],[_0xc14e[9]]),controller[_0xc14e[48]]);router[_0xc14e[46]](_0xc14e[22],license[_0xc14e[6]](),license[_0xc14e[7]](),auth[_0xc14e[8]](),auth[_0xc14e[10]]([8],[_0xc14e[9]]),controller[_0xc14e[49]]);router[_0xc14e[46]](_0xc14e[18],license[_0xc14e[6]](),license[_0xc14e[7]](),auth[_0xc14e[8]](),auth[_0xc14e[10]]([8],[_0xc14e[9]]),controller[_0xc14e[50]]);router[_0xc14e[46]](_0xc14e[41],license[_0xc14e[6]](),license[_0xc14e[7]](),auth[_0xc14e[8]](),auth[_0xc14e[10]]([8],[_0xc14e[9]]),controller[_0xc14e[51]]);router[_0xc14e[46]](_0xc14e[39],license[_0xc14e[6]](),license[_0xc14e[7]](),auth[_0xc14e[8]](),auth[_0xc14e[10]]([8],[_0xc14e[9]]),controller[_0xc14e[52]]);module[_0xc14e[53]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_websites_field/chat_websites_field.controller.js b/server/api/chat_websites_field/chat_websites_field.controller.js index 463e769..66dc905 100644 --- a/server/api/chat_websites_field/chat_websites_field.controller.js +++ b/server/api/chat_websites_field/chat_websites_field.controller.js @@ -1 +1 @@ -var _0xfa48=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65\x73\x46\x69\x65\x6C\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65"];_0xfa48[0];var _=require(_0xfa48[1]);var Util=require(_0xfa48[2]);var logger=require(_0xfa48[4])(_0xfa48[3]);var ChatWebsitesField=require(_0xfa48[6])[_0xfa48[5]];function handleError(_0x7d83x6,_0x7d83x7){_0x7d83x7= _0x7d83x7|| 500;return function(_0x7d83x8){logger[_0xfa48[8]](_0x7d83x8[_0xfa48[7]]);_0x7d83x6[_0xfa48[10]](_0x7d83x7)[_0xfa48[9]](_0x7d83x8)}}function responseWithResult(_0x7d83x6,_0x7d83x7){_0x7d83x7= _0x7d83x7|| 200;return function(_0x7d83xa){if(_0x7d83xa){_0x7d83x6[_0xfa48[10]](_0x7d83x7)[_0xfa48[11]](_0x7d83xa)}}}function responseWithoutResult(_0x7d83x6,_0x7d83x7){_0x7d83x7= _0x7d83x7|| 204;return function(){_0x7d83x6[_0xfa48[12]](_0x7d83x7)}}function handleEntityNotFound(_0x7d83x6){return function(_0x7d83xa){if(!_0x7d83xa){_0x7d83x6[_0xfa48[10]](404)[_0xfa48[13]]();return null};return _0x7d83xa}}function saveUpdates(_0x7d83xe){return function(_0x7d83xa){return _0x7d83xa[_0xfa48[15]](_0x7d83xe)[_0xfa48[14]](function(_0x7d83xf){return _0x7d83xf})}}function removeEntity(_0x7d83x6){return function(_0x7d83xa){if(_0x7d83xa){return _0x7d83xa[_0xfa48[16]]()[_0xfa48[14]](function(){_0x7d83x6[_0xfa48[10]](204)[_0xfa48[13]]()})}}}exports[_0xfa48[17]]= function(_0x7d83x11,_0x7d83x6){return ChatWebsitesField[_0xfa48[21]](Util[_0xfa48[20]](_0x7d83x11[_0xfa48[19]]))[_0xfa48[14]](responseWithResult(_0x7d83x6))[_0xfa48[18]](handleError(_0x7d83x6))};exports[_0xfa48[22]]= function(_0x7d83x11,_0x7d83x6){return ChatWebsitesField[_0xfa48[25]](_0x7d83x11[_0xfa48[24]][_0xfa48[23]])[_0xfa48[14]](handleEntityNotFound(_0x7d83x6))[_0xfa48[14]](responseWithResult(_0x7d83x6))[_0xfa48[18]](handleError(_0x7d83x6))};exports[_0xfa48[26]]= function(_0x7d83x11,_0x7d83x6){return ChatWebsitesField[_0xfa48[26]](_0x7d83x11[_0xfa48[27]])[_0xfa48[14]](responseWithResult(_0x7d83x6,201))[_0xfa48[18]](handleError(_0x7d83x6))};exports[_0xfa48[28]]= function(_0x7d83x11,_0x7d83x6){if(_0x7d83x11[_0xfa48[27]][_0xfa48[23]]){delete _0x7d83x11[_0xfa48[27]][_0xfa48[23]]};return ChatWebsitesField[_0xfa48[25]](_0x7d83x11[_0xfa48[24]][_0xfa48[23]])[_0xfa48[14]](handleEntityNotFound(_0x7d83x6))[_0xfa48[14]](saveUpdates(_0x7d83x11[_0xfa48[27]]))[_0xfa48[14]](responseWithResult(_0x7d83x6))[_0xfa48[18]](handleError(_0x7d83x6))};exports[_0xfa48[16]]= function(_0x7d83x11,_0x7d83x6){return ChatWebsitesField[_0xfa48[25]](_0x7d83x11[_0xfa48[24]][_0xfa48[23]])[_0xfa48[14]](handleEntityNotFound(_0x7d83x6))[_0xfa48[14]](removeEntity(_0x7d83x6))[_0xfa48[18]](handleError(_0x7d83x6))} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_websites_field/chat_websites_field.events.js b/server/api/chat_websites_field/chat_websites_field.events.js index 42ce205..66dc905 100644 --- a/server/api/chat_websites_field/chat_websites_field.events.js +++ b/server/api/chat_websites_field/chat_websites_field.events.js @@ -1 +1 @@ -var _0x9bc3=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65\x73\x46\x69\x65\x6C\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x9bc3[0];const EventEmitter=require(_0x9bc3[1]);const ChatWebsitesField=require(_0x9bc3[3])[_0x9bc3[2]];var ChatWebsitesFieldEvents= new EventEmitter();ChatWebsitesFieldEvents[_0x9bc3[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x9bc3[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x9bc3[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x9bc3[6]};for(var e in events){var event=events[e];ChatWebsitesField[_0x9bc3[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xbe09x8,_0xbe09x9,_0xbe09xa){ChatWebsitesFieldEvents[_0x9bc3[10]](event+ _0x9bc3[8]+ _0xbe09x8[_0x9bc3[9]],_0xbe09x8);ChatWebsitesFieldEvents[_0x9bc3[10]](event,_0xbe09x8);_0xbe09xa(null)}}module[_0x9bc3[11]]= ChatWebsitesFieldEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_websites_field/chat_websites_field.socket.js b/server/api/chat_websites_field/chat_websites_field.socket.js index 5c027d1..66dc905 100644 --- a/server/api/chat_websites_field/chat_websites_field.socket.js +++ b/server/api/chat_websites_field/chat_websites_field.socket.js @@ -1 +1 @@ -var _0xf06f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x63\x68\x61\x74\x5F\x77\x65\x62\x73\x69\x74\x65\x73\x5F\x66\x69\x65\x6C\x64\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x68\x61\x74\x5F\x77\x65\x62\x73\x69\x74\x65\x73\x5F\x66\x69\x65\x6C\x64\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xf06f[0];const ChatWebsitesFieldEvents=require(_0xf06f[1]);var events=[_0xf06f[2],_0xf06f[3]];exports[_0xf06f[4]]= function(_0x1e45x3){for(var _0x1e45x4=0,_0x1e45x5=events[_0xf06f[5]];_0x1e45x4< _0x1e45x5;_0x1e45x4++){var _0x1e45x6=events[_0x1e45x4];var _0x1e45x7=createListener(_0xf06f[6]+ _0x1e45x6,_0x1e45x3);ChatWebsitesFieldEvents[_0xf06f[7]](_0x1e45x6,_0x1e45x7);_0x1e45x3[_0xf06f[7]](_0xf06f[8],removeListener(_0x1e45x6,_0x1e45x7))}};function createListener(_0x1e45x6,_0x1e45x3){return function(_0x1e45x9){_0x1e45x3[_0xf06f[9]](_0x1e45x6,_0x1e45x9)}}function removeListener(_0x1e45x6,_0x1e45x7){return function(){ChatWebsitesFieldEvents[_0xf06f[10]](_0x1e45x6,_0x1e45x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/chat_websites_field/index.js b/server/api/chat_websites_field/index.js index 82dd929..66dc905 100644 --- a/server/api/chat_websites_field/index.js +++ b/server/api/chat_websites_field/index.js @@ -1 +1 @@ -var _0x3539=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x63\x68\x61\x74\x5F\x77\x65\x62\x73\x69\x74\x65\x73\x5F\x66\x69\x65\x6C\x64\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x43\x68\x61\x74","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x3539[0];var express=require(_0x3539[1]);var auth=require(_0x3539[2]);var controller=require(_0x3539[3]);var license=require(_0x3539[4]);var router=express.Router();router[_0x3539[12]](_0x3539[5],license[_0x3539[6]](),license[_0x3539[7]](),auth[_0x3539[8]](),auth[_0x3539[10]]([8],[_0x3539[9]]),controller[_0x3539[11]]);router[_0x3539[12]](_0x3539[13],license[_0x3539[6]](),license[_0x3539[7]](),auth[_0x3539[8]](),auth[_0x3539[10]]([8],[_0x3539[9]]),controller[_0x3539[14]]);router[_0x3539[16]](_0x3539[5],license[_0x3539[6]](),license[_0x3539[7]](),auth[_0x3539[8]](),auth[_0x3539[10]]([8],[_0x3539[9]]),controller[_0x3539[15]]);router[_0x3539[18]](_0x3539[13],license[_0x3539[6]](),license[_0x3539[7]](),auth[_0x3539[8]](),auth[_0x3539[10]]([8],[_0x3539[9]]),controller[_0x3539[17]]);router[_0x3539[19]](_0x3539[13],license[_0x3539[6]](),license[_0x3539[7]](),auth[_0x3539[8]](),auth[_0x3539[10]]([8],[_0x3539[9]]),controller[_0x3539[17]]);router[_0x3539[21]](_0x3539[13],license[_0x3539[6]](),license[_0x3539[7]](),auth[_0x3539[8]](),auth[_0x3539[10]]([8],[_0x3539[9]]),controller[_0x3539[20]]);module[_0x3539[22]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/company/company.controller.js b/server/api/company/company.controller.js index f05c04d..66dc905 100644 --- a/server/api/company/company.controller.js +++ b/server/api/company/company.controller.js @@ -1 +1 @@ -var _0x8fd0=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x43\x6F\x6D\x70\x61\x6E\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x63\x6F\x6D\x70\x61\x6E\x79\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x6E\x61\x6D\x65","\x62\x6F\x64\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x6C\x65\x6E\x67\x74\x68","\x4D\x45\x53\x53\x41\x47\x45\x5F\x45\x58\x49\x53\x54\x5F\x43\x4F\x4D\x50\x41\x4E\x59","\x66\x69\x6E\x64","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0x8fd0[0];var _=require(_0x8fd0[1]);var Company=require(_0x8fd0[3])[_0x8fd0[2]];var util=require(_0x8fd0[4]);var Util=require(_0x8fd0[5]);var logger=require(_0x8fd0[7])(_0x8fd0[6]);exports[_0x8fd0[8]]= function(_0x5ea0x6,_0x5ea0x7,_0x5ea0x8){return Company[_0x8fd0[15]](Util[_0x8fd0[14]](_0x5ea0x6[_0x8fd0[13]]))[_0x8fd0[12]](function(_0x5ea0xa){_0x5ea0x7[_0x8fd0[11]](200)[_0x8fd0[10]](_0x5ea0xa)})[_0x8fd0[9]](function(_0x5ea0x9){return handleError(_0x5ea0x7,_0x5ea0x9)})};exports[_0x8fd0[16]]= function(_0x5ea0x6,_0x5ea0x7){return Company[_0x8fd0[20]]({where:{name:_0x5ea0x6[_0x8fd0[19]][_0x8fd0[18]]}})[_0x8fd0[12]](function(_0x5ea0xb){if(!_0x5ea0xb){return _0x5ea0x7[_0x8fd0[17]](404)};return _0x5ea0x7[_0x8fd0[10]](_0x5ea0xb)})[_0x8fd0[9]](function(_0x5ea0x9){return handleError(_0x5ea0x7,_0x5ea0x9)})};exports[_0x8fd0[21]]= function(_0x5ea0x6,_0x5ea0x7){return Company[_0x8fd0[24]](_0x5ea0x6[_0x8fd0[23]][_0x8fd0[22]])[_0x8fd0[12]](function(_0x5ea0xc){if(!_0x5ea0xc){return _0x5ea0x7[_0x8fd0[17]](404)};return _0x5ea0x7[_0x8fd0[10]](_0x5ea0xc)})[_0x8fd0[9]](function(_0x5ea0x9){return handleError(_0x5ea0x7,_0x5ea0x9)})};exports[_0x8fd0[25]]= function(_0x5ea0x6,_0x5ea0x7){return Company[_0x8fd0[25]](_0x5ea0x6[_0x8fd0[19]])[_0x8fd0[12]](function(_0x5ea0xc){return _0x5ea0x7[_0x8fd0[11]](201)[_0x8fd0[10]](_0x5ea0xc)})[_0x8fd0[9]](function(_0x5ea0x9){return handleError(_0x5ea0x7,_0x5ea0x9)})};exports[_0x8fd0[26]]= function(_0x5ea0x6,_0x5ea0x7){return Company[_0x8fd0[20]]({where:{name:_0x5ea0x6[_0x8fd0[19]][_0x8fd0[18]],id:{$ne:_0x5ea0x6[_0x8fd0[19]][_0x8fd0[22]]}}})[_0x8fd0[12]](function(_0x5ea0xb){if(!_0x5ea0xb){return _0x5ea0x7[_0x8fd0[17]](404)};if(_0x5ea0xb[_0x8fd0[29]]> 0){return _0x5ea0x7[_0x8fd0[11]](500)[_0x8fd0[10]]({message:_0x8fd0[30]})};if(_0x5ea0x6[_0x8fd0[19]][_0x8fd0[22]]){delete _0x5ea0x6[_0x8fd0[19]][_0x8fd0[22]]};return Company[_0x8fd0[31]]({where:{id:_0x5ea0x6[_0x8fd0[23]][_0x8fd0[22]]}})})[_0x8fd0[12]](function(_0x5ea0xc){if(!_0x5ea0xc){return _0x5ea0x7[_0x8fd0[17]](404)};var _0x5ea0xd=_[_0x8fd0[27]](_0x5ea0xc,_0x5ea0x6[_0x8fd0[19]]);return _0x5ea0xd[_0x8fd0[28]]()})[_0x8fd0[12]](function(_0x5ea0xc){return _0x5ea0x7[_0x8fd0[11]](200)[_0x8fd0[10]](_0x5ea0xc)})[_0x8fd0[9]](function(_0x5ea0x9){return handleError(_0x5ea0x7,_0x5ea0x9)})};exports[_0x8fd0[32]]= function(_0x5ea0x6,_0x5ea0x7){return Company[_0x8fd0[24]](_0x5ea0x6[_0x8fd0[23]][_0x8fd0[22]])[_0x8fd0[12]](function(_0x5ea0xc){if(!_0x5ea0xc){return _0x5ea0x7[_0x8fd0[17]](404)};return _0x5ea0xc[_0x8fd0[32]]()})[_0x8fd0[12]](function(){return _0x5ea0x7[_0x8fd0[17]](204)})[_0x8fd0[9]](function(_0x5ea0x9){return handleError(_0x5ea0x7,_0x5ea0x9)})};exports[_0x8fd0[33]]= function(_0x5ea0x6,_0x5ea0x7){return Company[_0x8fd0[32]]({where:{id:_0x5ea0x6[_0x8fd0[13]][_0x8fd0[34]]},individualHooks:true})[_0x8fd0[12]](function(){return _0x5ea0x7[_0x8fd0[17]](204)})[_0x8fd0[9]](function(_0x5ea0x9){return handleError(_0x5ea0x7,_0x5ea0x9)})};function handleError(_0x5ea0x7,_0x5ea0x9){logger[_0x8fd0[36]](_0x5ea0x9[_0x8fd0[35]]);return _0x5ea0x7[_0x8fd0[11]](500)[_0x8fd0[10]](_0x5ea0x9)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/company/company.events.js b/server/api/company/company.events.js index fa47fc4..66dc905 100644 --- a/server/api/company/company.events.js +++ b/server/api/company/company.events.js @@ -1 +1 @@ -var _0xc8a6=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x6F\x6D\x70\x61\x6E\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xc8a6[0];const EventEmitter=require(_0xc8a6[1]);const Company=require(_0xc8a6[3])[_0xc8a6[2]];var CompanyEvents= new EventEmitter();CompanyEvents[_0xc8a6[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xc8a6[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xc8a6[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xc8a6[6]};for(var e in events){var event=events[e];Company[_0xc8a6[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x2756x8,_0x2756x9,_0x2756xa){CompanyEvents[_0xc8a6[10]](event+ _0xc8a6[8]+ _0x2756x8[_0xc8a6[9]],_0x2756x8);CompanyEvents[_0xc8a6[10]](event,_0x2756x8);_0x2756xa(null)}}module[_0xc8a6[11]]= CompanyEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/company/company.socket.js b/server/api/company/company.socket.js index c7122b7..66dc905 100644 --- a/server/api/company/company.socket.js +++ b/server/api/company/company.socket.js @@ -1 +1 @@ -var _0xd4bf=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x63\x6F\x6D\x70\x61\x6E\x79\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x6F\x6D\x70\x61\x6E\x79\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xd4bf[0];const CompanyEvents=require(_0xd4bf[1]);var events=[_0xd4bf[2],_0xd4bf[3]];exports[_0xd4bf[4]]= function(_0x2347x3){for(var _0x2347x4=0,_0x2347x5=events[_0xd4bf[5]];_0x2347x4< _0x2347x5;_0x2347x4++){var _0x2347x6=events[_0x2347x4];var _0x2347x7=createListener(_0xd4bf[6]+ _0x2347x6,_0x2347x3);CompanyEvents[_0xd4bf[7]](_0x2347x6,_0x2347x7);_0x2347x3[_0xd4bf[7]](_0xd4bf[8],removeListener(_0x2347x6,_0x2347x7))}};function createListener(_0x2347x6,_0x2347x3){return function(_0x2347x9){_0x2347x3[_0xd4bf[9]](_0x2347x6,_0x2347x9)}}function removeListener(_0x2347x6,_0x2347x7){return function(){CompanyEvents[_0xd4bf[10]](_0x2347x6,_0x2347x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/company/index.js b/server/api/company/index.js index e2f19e5..66dc905 100644 --- a/server/api/company/index.js +++ b/server/api/company/index.js @@ -1 +1 @@ -var _0xfde3=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x63\x6F\x6D\x70\x61\x6E\x79\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x43\x6D","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x2F\x76\x61\x6C\x69\x64\x61\x74\x65","\x63\x6F\x6D\x70\x61\x6E\x79\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0xfde3[0];var express=require(_0xfde3[1]);var controller=require(_0xfde3[2]);var auth=require(_0xfde3[3]);var license=require(_0xfde3[4]);var router=express.Router();router[_0xfde3[12]](_0xfde3[5],auth[_0xfde3[6]](),license[_0xfde3[7]](),auth[_0xfde3[10]]([5],[_0xfde3[8],_0xfde3[9]]),controller[_0xfde3[11]]);router[_0xfde3[12]](_0xfde3[13],auth[_0xfde3[6]](),license[_0xfde3[7]](),auth[_0xfde3[10]]([5],[_0xfde3[8],_0xfde3[9]]),controller[_0xfde3[14]]);router[_0xfde3[16]](_0xfde3[5],auth[_0xfde3[6]](),license[_0xfde3[7]](),auth[_0xfde3[10]]([5],[_0xfde3[8]]),controller[_0xfde3[15]]);router[_0xfde3[16]](_0xfde3[17],auth[_0xfde3[6]](),license[_0xfde3[7]](),auth[_0xfde3[10]]([5],[_0xfde3[8]]),controller[_0xfde3[18]]);router[_0xfde3[20]](_0xfde3[13],auth[_0xfde3[6]](),license[_0xfde3[7]](),auth[_0xfde3[10]]([5],[_0xfde3[8]]),controller[_0xfde3[19]]);router[_0xfde3[22]](_0xfde3[5],auth[_0xfde3[6]](),license[_0xfde3[7]](),auth[_0xfde3[10]]([5],[_0xfde3[8]]),controller[_0xfde3[21]]);router[_0xfde3[22]](_0xfde3[13],auth[_0xfde3[6]](),license[_0xfde3[7]](),auth[_0xfde3[10]]([5],[_0xfde3[8]]),controller[_0xfde3[23]]);module[_0xfde3[24]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/contact_manager/contact_manager.controller.js b/server/api/contact_manager/contact_manager.controller.js index 3018af0..66dc905 100644 --- a/server/api/contact_manager/contact_manager.controller.js +++ b/server/api/contact_manager/contact_manager.controller.js @@ -1 +1 @@ -var _0x3964=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x43\x6F\x6E\x74\x61\x63\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x43\x6F\x6E\x74\x61\x63\x74\x50\x68\x6F\x6E\x65","\x43\x6F\x6E\x74\x61\x63\x74\x45\x6D\x61\x69\x6C","\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64","\x52\x65\x70\x6F\x72\x74\x43\x61\x6C\x6C","\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x75\x65","\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x75\x65\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x52\x65\x70\x6F\x72\x74\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x52\x65\x70\x6F\x72\x74\x43\x68\x61\x74\x52\x6F\x6F\x6D\x48\x69\x73\x74\x6F\x72\x79","\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x46\x61\x78\x52\x6F\x6F\x6D","\x53\x6D\x73\x52\x6F\x6F\x6D","\x52\x65\x70\x6F\x72\x74\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x4C\x69\x73\x74","\x43\x6F\x6D\x70\x61\x6E\x79","\x52\x65\x70\x6F\x72\x74\x43\x61\x6C\x6C\x48\x69\x73\x74\x6F\x72\x79","\x52\x65\x70\x6F\x72\x74\x4D\x61\x69\x6C\x53\x65\x73\x73\x69\x6F\x6E","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x52\x65\x70\x6F\x72\x74\x4D\x61\x69\x6C\x53\x65\x73\x73\x69\x6F\x6E\x48\x69\x73\x74\x6F\x72\x79","\x54\x61\x67","\x54\x64\x55\x70\x64\x61\x74\x65","\x73\x74\x72\x65\x61\x6D","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x73\x79\x6E\x63","\x62\x6C\x75\x65\x62\x69\x72\x64","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x72\x65\x73\x6F\x6C\x76\x65","\x65\x78\x74\x72\x61\x63\x74\x41\x6C\x6C","\x69\x64","\x66\x69\x72\x73\x74\x4E\x61\x6D\x65","\x46\x69\x72\x73\x74\x20\x4E\x61\x6D\x65","\x6C\x61\x73\x74\x4E\x61\x6D\x65","\x4C\x61\x73\x74\x20\x4E\x61\x6D\x65","\x74\x61\x67\x73","\x54\x61\x67\x73","\x73\x74\x72\x65\x65\x74","\x53\x74\x72\x65\x65\x74","\x70\x6F\x73\x74\x61\x6C\x43\x6F\x64\x65","\x50\x6F\x73\x74\x61\x6C\x20\x43\x6F\x64\x65","\x63\x69\x74\x79","\x43\x69\x74\x79","\x63\x6F\x75\x6E\x74\x72\x79","\x43\x6F\x75\x6E\x74\x72\x79","\x64\x61\x74\x65\x4F\x66\x42\x69\x72\x74\x68","\x44\x61\x74\x65\x20\x6F\x66\x20\x62\x69\x72\x74\x68","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x70\x68\x6F\x6E\x65","\x50\x68\x6F\x6E\x65","\x6D\x6F\x62\x69\x6C\x65","\x4D\x6F\x62\x69\x6C\x65","\x66\x61\x78","\x46\x61\x78","\x65\x6D\x61\x69\x6C","\x45\x6D\x61\x69\x6C","\x75\x72\x6C","\x55\x52\x4C","\x43\x6F\x6D\x70\x61\x6E\x79\x49\x64","\x4C\x69\x73\x74\x49\x64","\x72\x6F\x77\x73","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64","\x6E\x61\x6D\x65","","\x66\x6F\x72\x45\x61\x63\x68","\x6C\x65\x6E\x67\x74\x68","\x2C","\x6A\x6F\x69\x6E","\x20\x61\x73\x20\x27","\x61\x6C\x69\x61\x73","\x27","\x6D\x61\x70","\x53\x45\x4C\x45\x43\x54\x20\x69\x64\x2C\x25\x73\x20\x46\x52\x4F\x4D\x20\x63\x6D\x5F\x63\x6F\x6E\x74\x61\x63\x74\x73\x20\x57\x48\x45\x52\x45\x20\x69\x64\x20\x49\x4E\x20\x28\x27\x25\x73\x27\x29\x20\x4F\x52\x44\x45\x52\x20\x42\x59\x20\x25\x73","\x27\x2C\x27","\x6F\x72\x64\x65\x72","\x71\x75\x65\x72\x79","\x69\x64\x20\x41\x53\x43","\x66\x6F\x72\x6D\x61\x74","\x53\x45\x4C\x45\x43\x54","\x51\x75\x65\x72\x79\x54\x79\x70\x65\x73","\x6B\x65\x79\x73","\x63\x66\x5F","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x66\x69\x6C\x74\x65\x72","\x24\x6F\x72","\x77\x68\x65\x72\x65","\x66\x69\x6E\x64\x41\x6C\x6C","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x63\x6F\x75\x6E\x74","\x64\x65\x73\x63\x72\x69\x62\x65","\x63\x6F\x6E\x63\x61\x74","\x6D\x65\x72\x67\x65\x63\x6F\x6E\x74\x61\x63\x74","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x6C\x69\x73\x74","\x63\x6F\x6D\x70\x61\x6E\x79","\x63\x6F\x6D\x70\x61\x6E\x79\x5F\x6C\x69\x73\x74\x5F\x66\x69\x6C\x74\x65\x72","\x73\x63\x6F\x70\x65","\x67\x65\x74\x4C\x69\x73\x74\x73","\x75\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65","\x67\x65\x74\x4C\x6F\x67","\x64\x65\x74\x61\x69\x6C","\x67\x65\x6E\x65\x72\x61\x6C","\x73\x68\x6F\x77","\x6C\x6F\x67\x54\x79\x70\x65","\x6A\x6F\x75\x72\x6E\x61\x6C","\x74\x79\x70\x65","\x69\x6E\x62\x6F\x75\x6E\x64","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x6F\x75\x74\x62\x6F\x75\x6E\x64","\x64\x65\x73\x74\x69\x6E\x61\x74\x69\x6F\x6E","\x73\x6F\x75\x72\x63\x65","\x66\x72\x6F\x6D","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x64\x61\x79","\x73\x74\x61\x72\x74\x4F\x66","\x63\x6F\x6E\x74\x61\x63\x74","\x63\x68\x61\x74","\x73\x6D\x73","\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x75\x6D","\x71\x75\x65\x75\x65","\x70\x61\x72\x61\x6D\x73","\x6E\x75\x6C\x6C","\x53\x45\x4C\x45\x43\x54\x20\x25\x73\x20\x46\x52\x4F\x4D\x20\x63\x6D\x5F\x63\x6F\x6E\x74\x61\x63\x74\x73\x20\x57\x48\x45\x52\x45\x20\x69\x64\x3D\x25\x73","\x67\x65\x74\x43\x6F\x6E\x74\x61\x63\x74\x73","\x73\x75\x62\x74\x79\x70\x65\x43\x68\x61\x6E\x6E\x65\x6C","\x62\x6F\x64\x79","\x64\x65\x73\x74\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x75\x6D","\x76\x6F\x69\x63\x65","\x6D\x61\x69\x6C","\x65\x76\x65\x6E\x74\x43\x68\x61\x6E\x6E\x65\x6C","\x63\x72\x65\x61\x74\x65\x43\x6F\x6E\x74\x61\x63\x74","\x45\x72\x72\x6F\x72\x20\x69\x6E\x20\x63\x6F\x6E\x74\x61\x63\x74\x20\x61\x75\x74\x6F\x20\x63\x72\x65\x61\x74\x69\x6F\x6E","\x65\x72\x72\x6F\x72","\x70\x75\x73\x68","\x67\x65\x74","\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x61\x6D\x65","\x63\x72\x65\x61\x74\x65","\x66\x69\x6E\x64\x4F\x6E\x65","\x4E\x61\x6D\x65\x20\x6F\x72\x20\x4C\x69\x73\x74\x49\x64\x20\x6D\x69\x73\x73\x69\x6E\x67\x20\x6F\x72\x20\x69\x6E\x76\x61\x6C\x69\x64\x21","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x55\x73\x65\x72\x49\x64","\x75\x70\x64\x61\x74\x65\x64\x41\x74","\x3B","\x3B\x27","\x69\x73\x53\x74\x72\x69\x6E\x67","\x66\x6F\x72\x4F\x77\x6E","\x69\x6E\x73\x65\x72\x74\x49\x64","\x49\x4E\x53\x45\x52\x54\x20\x49\x4E\x54\x4F\x20\x63\x6D\x5F\x63\x6F\x6E\x74\x61\x63\x74\x73\x20\x28\x25\x73\x29\x20\x56\x41\x4C\x55\x45\x53\x20\x28\x25\x73\x29","\x63\x6F\x70\x79","\x25\x73\x3D\x27\x25\x73\x27","\x55\x50\x44\x41\x54\x45\x20\x63\x6D\x5F\x63\x6F\x6E\x74\x61\x63\x74\x73\x20\x53\x45\x54\x20\x25\x73\x20\x57\x48\x45\x52\x45\x20\x69\x64\x3D\x25\x73","\x63\x6C\x6F\x6E\x65","\x73\x70\x6C\x69\x74","\x70\x6F\x70","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x61\x6C\x6C","\x63\x6F\x6E\x74\x61\x63\x74\x73","\x75\x6E\x69\x6F\x6E","\x73\x74\x61\x63\x6B","\x64\x65\x62\x75\x67","\x6B\x6F","\x66\x61\x69\x6C\x65\x64","\x6F\x6B","\x66\x6F\x72\x45\x61\x63\x68\x4F\x66","\x75\x70\x64\x61\x74\x65","\x6F\x6C\x64\x43\x6F\x6E\x74\x61\x63\x74","\x64\x65\x73\x74\x72\x6F\x79","\x63\x6F\x6E\x74\x61\x63\x74\x2F\x75\x70\x64\x61\x74\x65","\x68\x61\x73\x4F\x77\x6E\x50\x72\x6F\x70\x65\x72\x74\x79","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x63\x6F\x6E\x74\x61\x63\x74\x2F\x64\x65\x6C\x65\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0x3964[0];var _=require(_0x3964[1]);var moment=require(_0x3964[2]);var Contact=require(_0x3964[4])[_0x3964[3]];var User=require(_0x3964[4])[_0x3964[5]];var ContactPhone=require(_0x3964[4])[_0x3964[6]];var ContactEmail=require(_0x3964[4])[_0x3964[7]];var CustomField=require(_0x3964[4])[_0x3964[8]];var ReportCall=require(_0x3964[4])[_0x3964[9]];var ReportQueue=require(_0x3964[4])[_0x3964[10]];var ReportQueueHistory=require(_0x3964[4])[_0x3964[12]][_0x3964[11]];var ReportChatRoom=require(_0x3964[4])[_0x3964[13]];var ReportChatRoomHistory=require(_0x3964[4])[_0x3964[12]][_0x3964[14]];var ChatRoom=require(_0x3964[4])[_0x3964[15]];var FaxRoom=require(_0x3964[4])[_0x3964[16]];var SmsRoom=require(_0x3964[4])[_0x3964[17]];var ReportIntegration=require(_0x3964[4])[_0x3964[18]];var List=require(_0x3964[4])[_0x3964[19]];var Company=require(_0x3964[4])[_0x3964[20]];var ReportCallHistory=require(_0x3964[4])[_0x3964[12]][_0x3964[21]];var ReportMailSession=require(_0x3964[4])[_0x3964[22]];var MailRoom=require(_0x3964[4])[_0x3964[23]];var ReportMailSessionHistory=require(_0x3964[4])[_0x3964[12]][_0x3964[24]];var Tag=require(_0x3964[4])[_0x3964[25]];var TdUpdate=require(_0x3964[4])[_0x3964[26]];var stream=require(_0x3964[27]);var sequelize=require(_0x3964[4])[_0x3964[28]];var util=require(_0x3964[29]);var Util=require(_0x3964[30]);var Async=require(_0x3964[31]);var Promise=require(_0x3964[32]);var logger=require(_0x3964[34])(_0x3964[33]);exports[_0x3964[35]]= function(_0xd7b8x20,_0xd7b8x21,_0xd7b8x22){return Promise[_0x3964[40]]()[_0x3964[39]](getContacts(_0xd7b8x20))[_0x3964[39]](function(_0xd7b8x24){_0xd7b8x21[_0x3964[38]](200)[_0x3964[37]](_0xd7b8x24)})[_0x3964[36]](function(_0xd7b8x23){return handleError(_0xd7b8x21,_0xd7b8x23)})};exports[_0x3964[41]]= function(_0xd7b8x20,_0xd7b8x21,_0xd7b8x22){var _0xd7b8x25=[_0x3964[42],[_0x3964[43],_0x3964[44]],[_0x3964[45],_0x3964[46]],[_0x3964[47],_0x3964[48]],[_0x3964[49],_0x3964[50]],[_0x3964[51],_0x3964[52]],[_0x3964[53],_0x3964[54]],[_0x3964[55],_0x3964[56]],[_0x3964[57],_0x3964[58]],[_0x3964[59],_0x3964[60]],[_0x3964[61],_0x3964[62]],[_0x3964[63],_0x3964[64]],[_0x3964[65],_0x3964[66]],[_0x3964[67],_0x3964[68]],[_0x3964[69],_0x3964[70]],_0x3964[71],_0x3964[72]];return Promise[_0x3964[40]]()[_0x3964[39]](getContacts(_0xd7b8x20,_0xd7b8x25))[_0x3964[39]](function(_0xd7b8x24){_0xd7b8x21[_0x3964[38]](200)[_0x3964[37]](_0xd7b8x24)})[_0x3964[36]](function(_0xd7b8x23){return handleError(_0xd7b8x21,_0xd7b8x23)})};function getContacts(_0xd7b8x20,_0xd7b8x25){return function(){var _0xd7b8x27,_0xd7b8x28,_0xd7b8x29,_0xd7b8x2a=[],_0xd7b8x2b=[];switch(_0xd7b8x20[_0x3964[113]][_0x3964[116]]){case _0x3964[115]:return User[_0x3964[114]](_0xd7b8x20[_0x3964[113]][_0x3964[42]])[_0x3964[39]](function(_0xd7b8x3b){return _0xd7b8x3b[_0x3964[112]]()})[_0x3964[39]](function(_0xd7b8x2b){_0xd7b8x28= _[_0x3964[85]](_0xd7b8x2b,_0x3964[42]);return Company[_0x3964[100]]({attributes:[_0x3964[42],_0x3964[76]],raw:true})})[_0x3964[39]](function(_0xd7b8x3a){_0xd7b8x2a= _0xd7b8x3a;return List[_0x3964[100]]({attributes:[_0x3964[42],_0x3964[76]],raw:true})})[_0x3964[39]](function(_0xd7b8x38){_0xd7b8x2b= _0xd7b8x38;_0xd7b8x29= {CompanyId:_0xd7b8x20[_0x3964[89]][_0x3964[71]]|| null,ListId:_0xd7b8x20[_0x3964[89]][_0x3964[72]]|| null};delete _0xd7b8x20[_0x3964[89]][_0x3964[71]];delete _0xd7b8x20[_0x3964[89]][_0x3964[72]];var _0xd7b8x39=_0xd7b8x29[_0x3964[72]]?{}:{ListId:{$in:_0xd7b8x28[_0x3964[104]](_[_0x3964[85]](_[_0x3964[97]](_0xd7b8x2b,{defaultEntry:true}),_0x3964[42]))}};if(_0xd7b8x20[_0x3964[89]][_0x3964[105]]){_0xd7b8x39[_0x3964[42]]= {$ne:_0xd7b8x20[_0x3964[89]][_0x3964[105]]};delete _0xd7b8x20[_0x3964[89]][_0x3964[105]]};return Contact[_0x3964[111]](_0x3964[108],_0x3964[109],{method:[_0x3964[110],_0xd7b8x29]})[_0x3964[107]](Util[_0x3964[106]](_0xd7b8x20[_0x3964[89]],_0xd7b8x39,{attributes:_0xd7b8x25,order:_0xd7b8x20[_0x3964[89]][_0x3964[88]]|| _0x3964[90]}))})[_0x3964[39]](function(_0xd7b8x37){_0xd7b8x27= {rows:_[_0x3964[85]](_0xd7b8x37[_0x3964[73]],_0x3964[101]),count:_0xd7b8x37[_0x3964[102]]};return Contact[_0x3964[103]]()})[_0x3964[39]](function(_0xd7b8x34){_0xd7b8x34= _[_0x3964[97]](_[_0x3964[94]](_0xd7b8x34),function(_0xd7b8x35){return _[_0x3964[96]](_0xd7b8x35,_0x3964[95])});var _0xd7b8x36={where:{name:_0xd7b8x34}};_0xd7b8x29[_0x3964[72]]&& (_0xd7b8x36[_0x3964[99]][_0x3964[98]]= [{ListId:_0xd7b8x29[_0x3964[72]]},{ListId:null}]);return CustomField[_0x3964[100]](_0xd7b8x36)})[_0x3964[39]](function(_0xd7b8x31){if(_0xd7b8x27[_0x3964[73]][_0x3964[79]]&& _0xd7b8x31[_0x3964[79]]){var _0xd7b8x32;if(_0xd7b8x25){_0xd7b8x32= _[_0x3964[85]](_0xd7b8x31,function(_0xd7b8x33){return _0xd7b8x33[_0x3964[76]]+ _0x3964[82]+ _0xd7b8x33[_0x3964[83]]+ _0x3964[84]})[_0x3964[81]](_0x3964[80])}else {_0xd7b8x32= _[_0x3964[85]](_0xd7b8x31,_0x3964[76])[_0x3964[81]](_0x3964[80])};return sequelize[_0x3964[89]](util[_0x3964[91]](_0x3964[86],_0xd7b8x32,_[_0x3964[85]](_0xd7b8x27[_0x3964[73]],_0x3964[42])[_0x3964[81]](_0x3964[87]),_0xd7b8x20[_0x3964[89]][_0x3964[88]]|| _0x3964[90]),{type:sequelize[_0x3964[93]][_0x3964[92]]})}})[_0x3964[39]](function(_0xd7b8x2c){var _0xd7b8x2d,_0xd7b8x2e;_[_0x3964[78]](_0xd7b8x27[_0x3964[73]],function(_0xd7b8x2f,_0xd7b8x30){_0xd7b8x2c&& _[_0x3964[74]](_0xd7b8x2f,_0xd7b8x2c[_0xd7b8x30]);_0xd7b8x2d= _[_0x3964[75]](_0xd7b8x2a,{id:_0xd7b8x2f[_0x3964[71]]});_0xd7b8x2f[_0x3964[20]]= _0xd7b8x2d?_0xd7b8x2d[_0x3964[76]]:_0x3964[77];_0xd7b8x2e= _[_0x3964[75]](_0xd7b8x2b,{id:_0xd7b8x2f[_0x3964[72]]});_0xd7b8x2f[_0x3964[19]]= _0xd7b8x2e?_0xd7b8x2e[_0x3964[76]]:_0x3964[77];if(_0xd7b8x25){delete _0xd7b8x2f[_0x3964[42]];delete _0xd7b8x2f[_0x3964[71]];delete _0xd7b8x2f[_0x3964[72]]}});return _0xd7b8x27});default:_0xd7b8x29= {CompanyId:_0xd7b8x20[_0x3964[89]][_0x3964[71]]|| null,ListId:_0xd7b8x20[_0x3964[89]][_0x3964[72]]|| null};delete _0xd7b8x20[_0x3964[89]][_0x3964[71]];delete _0xd7b8x20[_0x3964[89]][_0x3964[72]];var _0xd7b8x39={};if(_0xd7b8x20[_0x3964[89]][_0x3964[105]]){_0xd7b8x39[_0x3964[42]]= {$ne:_0xd7b8x20[_0x3964[89]][_0x3964[105]]};delete _0xd7b8x20[_0x3964[89]][_0x3964[105]]};return Company[_0x3964[100]]({attributes:[_0x3964[42],_0x3964[76]],raw:true})[_0x3964[39]](function(_0xd7b8x3a){_0xd7b8x2a= _0xd7b8x3a;return List[_0x3964[100]]({attributes:[_0x3964[42],_0x3964[76]],raw:true})})[_0x3964[39]](function(_0xd7b8x38){_0xd7b8x2b= _0xd7b8x38;return Contact[_0x3964[111]]({method:[_0x3964[110],_0xd7b8x29]})[_0x3964[107]](Util[_0x3964[106]](_0xd7b8x20[_0x3964[89]],_0xd7b8x39,{attributes:_0xd7b8x25,order:_0xd7b8x20[_0x3964[89]][_0x3964[88]]|| _0x3964[90]}))})[_0x3964[39]](function(_0xd7b8x37){_0xd7b8x27= {rows:_[_0x3964[85]](_0xd7b8x37[_0x3964[73]],_0x3964[101]),count:_0xd7b8x37[_0x3964[102]]};return Contact[_0x3964[103]]()})[_0x3964[39]](function(_0xd7b8x34){_0xd7b8x34= _[_0x3964[97]](_[_0x3964[94]](_0xd7b8x34),function(_0xd7b8x35){return _[_0x3964[96]](_0xd7b8x35,_0x3964[95])});var _0xd7b8x36={where:{name:_0xd7b8x34}};_0xd7b8x29[_0x3964[72]]&& (_0xd7b8x36[_0x3964[99]][_0x3964[98]]= [{ListId:_0xd7b8x29[_0x3964[72]]},{ListId:null}]);return CustomField[_0x3964[100]](_0xd7b8x36)})[_0x3964[39]](function(_0xd7b8x31){if(_0xd7b8x27[_0x3964[73]][_0x3964[79]]&& _0xd7b8x31[_0x3964[79]]){var _0xd7b8x32;if(_0xd7b8x25){_0xd7b8x32= _[_0x3964[85]](_0xd7b8x31,function(_0xd7b8x33){return _0xd7b8x33[_0x3964[76]]+ _0x3964[82]+ _0xd7b8x33[_0x3964[83]]+ _0x3964[84]})[_0x3964[81]](_0x3964[80])}else {_0xd7b8x32= _[_0x3964[85]](_0xd7b8x31,_0x3964[76])[_0x3964[81]](_0x3964[80])};return sequelize[_0x3964[89]](util[_0x3964[91]](_0x3964[86],_0xd7b8x32,_[_0x3964[85]](_0xd7b8x27[_0x3964[73]],_0x3964[42])[_0x3964[81]](_0x3964[87]),_0xd7b8x20[_0x3964[89]][_0x3964[88]]|| _0x3964[90]),{type:sequelize[_0x3964[93]][_0x3964[92]]})}})[_0x3964[39]](function(_0xd7b8x2c){var _0xd7b8x2d,_0xd7b8x2e;_[_0x3964[78]](_0xd7b8x27[_0x3964[73]],function(_0xd7b8x2f,_0xd7b8x30){_0xd7b8x2c&& _[_0x3964[74]](_0xd7b8x2f,_0xd7b8x2c[_0xd7b8x30]);_0xd7b8x2d= _[_0x3964[75]](_0xd7b8x2a,{id:_0xd7b8x2f[_0x3964[71]]});_0xd7b8x2f[_0x3964[20]]= _0xd7b8x2d?_0xd7b8x2d[_0x3964[76]]:_0x3964[77];_0xd7b8x2e= _[_0x3964[75]](_0xd7b8x2b,{id:_0xd7b8x2f[_0x3964[72]]});_0xd7b8x2f[_0x3964[19]]= _0xd7b8x2e?_0xd7b8x2e[_0x3964[76]]:_0x3964[77];if(_0xd7b8x25){delete _0xd7b8x2f[_0x3964[42]];delete _0xd7b8x2f[_0x3964[71]];delete _0xd7b8x2f[_0x3964[72]]}});return _0xd7b8x27})}}}exports[_0x3964[103]]= function(_0xd7b8x20,_0xd7b8x21){return Contact[_0x3964[103]]()[_0x3964[39]](function(_0xd7b8x34){return _0xd7b8x21[_0x3964[38]](200)[_0x3964[37]](_0xd7b8x34)})[_0x3964[36]](function(_0xd7b8x23){return handleError(_0xd7b8x21,_0xd7b8x23)})};exports[_0x3964[117]]= function(_0xd7b8x20,_0xd7b8x21,_0xd7b8x22){_0xd7b8x20[_0x3964[89]][_0x3964[118]]= _0xd7b8x20[_0x3964[89]][_0x3964[118]]|| _0x3964[119];_0xd7b8x20[_0x3964[89]][_0x3964[120]]= _0xd7b8x20[_0x3964[89]][_0x3964[120]]|| _0x3964[61];_0xd7b8x20[_0x3964[89]][_0x3964[121]]= _0xd7b8x20[_0x3964[89]][_0x3964[121]]|| _0x3964[122];_0xd7b8x20[_0x3964[89]][_0x3964[123]]= _0xd7b8x20[_0x3964[89]][_0x3964[123]]|| _0x3964[124];var _0xd7b8x3c,_0xd7b8x3d={};return Contact[_0x3964[114]](_0xd7b8x20[_0x3964[138]][_0x3964[42]])[_0x3964[39]](function(_0xd7b8x3e){if(!_0xd7b8x3e){return _0xd7b8x21[_0x3964[125]](404)};switch(_0xd7b8x20[_0x3964[89]][_0x3964[118]]){case _0x3964[119]:switch(_0xd7b8x20[_0x3964[89]][_0x3964[120]]){case _0x3964[61]:_0xd7b8x3c= (_0xd7b8x20[_0x3964[89]][_0x3964[121]]=== _0x3964[12])?ReportCallHistory:ReportCall;if(_0xd7b8x20[_0x3964[89]][_0x3964[123]]=== _0x3964[126]){_0xd7b8x3d[_0x3964[127]]= [_0xd7b8x3e[_0x3964[61]],_0xd7b8x3e[_0x3964[63]]]}else {_0xd7b8x3d[_0x3964[128]]= [_0xd7b8x3e[_0x3964[61]],_0xd7b8x3e[_0x3964[63]]]};break;case _0x3964[67]:_0xd7b8x3c= MailRoom;_0xd7b8x3d[_0x3964[129]]= _0xd7b8x3e[_0x3964[67]];if(_0xd7b8x20[_0x3964[89]][_0x3964[121]]=== _0x3964[12]){_0xd7b8x3d[_0x3964[130]]= {$lt:moment()[_0x3964[132]](_0x3964[131])}}else {_0xd7b8x3d[_0x3964[130]]= {$gte:moment()[_0x3964[132]](_0x3964[131])}};break;case _0x3964[134]:_0xd7b8x3c= ChatRoom;_0xd7b8x3d[_0x3964[133]]= _0xd7b8x3e[_0x3964[67]];if(_0xd7b8x20[_0x3964[89]][_0x3964[121]]=== _0x3964[12]){_0xd7b8x3d[_0x3964[130]]= {$lt:moment()[_0x3964[132]](_0x3964[131])}}else {_0xd7b8x3d[_0x3964[130]]= {$gte:moment()[_0x3964[132]](_0x3964[131])}};break;case _0x3964[65]:_0xd7b8x3c= FaxRoom;_0xd7b8x3d[_0x3964[133]]= _0xd7b8x3e[_0x3964[65]];if(_0xd7b8x20[_0x3964[89]][_0x3964[121]]=== _0x3964[12]){_0xd7b8x3d[_0x3964[130]]= {$lt:moment()[_0x3964[132]](_0x3964[131])}}else {_0xd7b8x3d[_0x3964[130]]= {$gte:moment()[_0x3964[132]](_0x3964[131])}};break;case _0x3964[135]:_0xd7b8x3c= SmsRoom;_0xd7b8x3d[_0x3964[133]]= [_0xd7b8x3e[_0x3964[61]],_0xd7b8x3e[_0x3964[63]]];if(_0xd7b8x20[_0x3964[89]][_0x3964[121]]=== _0x3964[12]){_0xd7b8x3d[_0x3964[130]]= {$lt:moment()[_0x3964[132]](_0x3964[131])}}else {_0xd7b8x3d[_0x3964[130]]= {$gte:moment()[_0x3964[132]](_0x3964[131])}};break;default:_0xd7b8x3c= (_0xd7b8x20[_0x3964[89]][_0x3964[121]]=== _0x3964[12])?ReportCallHistory:ReportCall};break;case _0x3964[137]:switch(_0xd7b8x20[_0x3964[89]][_0x3964[120]]){case _0x3964[61]:_0xd7b8x3c= (_0xd7b8x20[_0x3964[89]][_0x3964[121]]=== _0x3964[12])?ReportQueueHistory:ReportQueue;_0xd7b8x3d[_0x3964[136]]= [_0xd7b8x3e[_0x3964[61]],_0xd7b8x3e[_0x3964[63]]];break;case _0x3964[67]:return _0xd7b8x21[_0x3964[125]](404);default:_0xd7b8x3c= (_0xd7b8x20[_0x3964[89]][_0x3964[121]]=== _0x3964[12])?ReportQueueHistory:ReportQueue};break;default:_0xd7b8x3c= ReportCall};delete _0xd7b8x20[_0x3964[89]][_0x3964[118]];delete _0xd7b8x20[_0x3964[89]][_0x3964[120]];delete _0xd7b8x20[_0x3964[89]][_0x3964[121]];delete _0xd7b8x20[_0x3964[89]][_0x3964[123]];return _0xd7b8x3c[_0x3964[107]](Util[_0x3964[106]](_0xd7b8x20[_0x3964[89]],_0xd7b8x3d))})[_0x3964[39]](function(_0xd7b8x24){_0xd7b8x21[_0x3964[38]](200)[_0x3964[37]](_0xd7b8x24)})[_0x3964[36]](function(_0xd7b8x23){return handleError(_0xd7b8x21,_0xd7b8x23)})};exports[_0x3964[120]]= function(_0xd7b8x20,_0xd7b8x21){var _0xd7b8x3f;return Contact[_0x3964[111]](_0x3964[108],_0x3964[113],_0x3964[109])[_0x3964[114]](_0xd7b8x20[_0x3964[138]][_0x3964[42]])[_0x3964[39]](function(_0xd7b8x44){if(!_0xd7b8x44){return _0xd7b8x21[_0x3964[125]](404)};_0xd7b8x3f= _0xd7b8x44;return CustomField[_0x3964[100]]({where:{$or:[{ListId:_0xd7b8x3f[_0x3964[72]]},{ListId:null}]}})})[_0x3964[39]](function(_0xd7b8x31){if(_0xd7b8x31[_0x3964[79]]){var _0xd7b8x32=_[_0x3964[85]](_0xd7b8x31,_0x3964[76])[_0x3964[81]](_0x3964[80]);return sequelize[_0x3964[89]](util[_0x3964[91]](_0x3964[140],_0xd7b8x32,_0xd7b8x20[_0x3964[138]][_0x3964[42]]),{type:sequelize[_0x3964[93]][_0x3964[92]]})}})[_0x3964[39]](function(_0xd7b8x40){if(_0xd7b8x40){_[_0x3964[78]](_0xd7b8x40[0],function(_0xd7b8x41,_0xd7b8x42,_0xd7b8x43){if(_0xd7b8x41=== _0x3964[139]){_0xd7b8x43[_0xd7b8x42]= null}});_[_0x3964[74]](_0xd7b8x3f[_0x3964[101]],_0xd7b8x40[0])}})[_0x3964[39]](function(){return _0xd7b8x21[_0x3964[38]](200)[_0x3964[37]](_0xd7b8x3f)})[_0x3964[36]](function(_0xd7b8x23){return handleError(_0xd7b8x21,_0xd7b8x23)})};exports[_0x3964[141]]= function(_0xd7b8x20,_0xd7b8x21){var _0xd7b8x3d={},_0xd7b8x45;switch(_0xd7b8x20[_0x3964[143]][_0x3964[147]]){case _0x3964[145]:if(_0xd7b8x20[_0x3964[143]][_0x3964[142]]=== _0x3964[137]){_0xd7b8x3d= {$or:{phone:_0xd7b8x20[_0x3964[143]][_0x3964[136]],mobile:_0xd7b8x20[_0x3964[143]][_0x3964[136]]}}}else {_0xd7b8x3d= {$or:{phone:_0xd7b8x20[_0x3964[143]][_0x3964[144]],mobile:_0xd7b8x20[_0x3964[143]][_0x3964[144]]}}};break;case _0x3964[146]:_0xd7b8x3d= {email:_0xd7b8x20[_0x3964[143]][_0x3964[129]]};break;default:_0xd7b8x3d= {}};var _0xd7b8x46=_[_0x3964[85]](_[_0x3964[85]](_0xd7b8x20[_0x3964[113]].Lists,_0x3964[101]),_0x3964[42]);var _0xd7b8x47;return List[_0x3964[155]]({where:{defaultEntry:true}})[_0x3964[39]](function(_0xd7b8x2e){if(_0xd7b8x2e){_0xd7b8x46[_0x3964[151]](_0xd7b8x2e[_0x3964[42]])};if(_0xd7b8x20[_0x3964[143]][_0x3964[72]]){_0xd7b8x47= _[_0x3964[96]](_0xd7b8x46,_0xd7b8x20[_0x3964[143]].ListId)?{id:_0xd7b8x20[_0x3964[143]][_0x3964[72]]}:null}else {_0xd7b8x47= {id:_0xd7b8x46}};if(_0xd7b8x47){return Contact[_0x3964[107]]({where:_0xd7b8x3d,include:[{model:List,where:_0xd7b8x47}]})};return null})[_0x3964[39]](function(_0xd7b8x37){if(_0xd7b8x37&& _0xd7b8x37[_0x3964[73]][_0x3964[79]]){_0xd7b8x45= _0xd7b8x37;return null}else {_0xd7b8x45= {count:0,rows:[]};if(_0xd7b8x20[_0x3964[143]][_0x3964[148]]&& _0xd7b8x20[_0x3964[143]][_0x3964[72]]&& _[_0x3964[96]](_0xd7b8x46,_0xd7b8x20[_0x3964[143]].ListId)){var _0xd7b8x3f={};return Contact[_0x3964[154]]({firstName:_0xd7b8x20[_0x3964[143]][_0x3964[153]],phone:_0xd7b8x20[_0x3964[143]][_0x3964[136]],ListId:_0xd7b8x20[_0x3964[143]][_0x3964[72]]})[_0x3964[39]](function(_0xd7b8x3e){_0xd7b8x3f= _0xd7b8x3e[_0x3964[152]]({plain:true});return List[_0x3964[114]](_0xd7b8x20[_0x3964[143]].ListId,{raw:true})})[_0x3964[39]](function(_0xd7b8x2e){_0xd7b8x3f[_0x3964[19]]= _0xd7b8x2e;_0xd7b8x45[_0x3964[73]][_0x3964[151]](_0xd7b8x3f)})[_0x3964[36]](function(_0xd7b8x23){logger[_0x3964[150]](_0x3964[149],_0xd7b8x23)})}}})[_0x3964[39]](function(){return _0xd7b8x21[_0x3964[38]](200)[_0x3964[37]](_0xd7b8x45)})[_0x3964[36]](function(_0xd7b8x23){return handleError(_0xd7b8x21,_0xd7b8x23)})};exports[_0x3964[154]]= function(_0xd7b8x20,_0xd7b8x21,_0xd7b8x22){if(!_0xd7b8x20[_0x3964[143]][_0x3964[43]]|| !_0xd7b8x20[_0x3964[143]][_0x3964[72]]){return handleError(_0xd7b8x21,{message:_0x3964[156]})};var _0xd7b8x3f,_0xd7b8x48=moment()[_0x3964[91]](_0x3964[157]),_0xd7b8x49=[],_0xd7b8x4a=[];_0xd7b8x20[_0x3964[143]][_0x3964[158]]= _0xd7b8x20[_0x3964[113]][_0x3964[42]];_0xd7b8x20[_0x3964[143]][_0x3964[130]]= _0xd7b8x48;_0xd7b8x20[_0x3964[143]][_0x3964[159]]= _0xd7b8x48;_[_0x3964[163]](_0xd7b8x20[_0x3964[143]],function(_0xd7b8x41,_0xd7b8x42){if(_0xd7b8x41){switch(_0xd7b8x42){case _0x3964[47]:if(_0xd7b8x41[_0x3964[79]]){_0xd7b8x4a[_0x3964[151]](_0x3964[84]+ _0xd7b8x41[_0x3964[81]](_0x3964[160])+ _0x3964[161]);_0xd7b8x49[_0x3964[151]](_0xd7b8x42)};break;default:_0xd7b8x49[_0x3964[151]](_0xd7b8x42);_0xd7b8x4a[_0x3964[151]](_[_0x3964[162]](_0xd7b8x41)?_0x3964[84]+ _0xd7b8x41+ _0x3964[84]:_0xd7b8x41)}}});return sequelize[_0x3964[89]](util[_0x3964[91]](_0x3964[165],_0xd7b8x49[_0x3964[81]](_0x3964[80]),_0xd7b8x4a[_0x3964[81]](_0x3964[80])))[_0x3964[39]](function(_0xd7b8x3e){_0xd7b8x20[_0x3964[143]][_0x3964[42]]= _0xd7b8x3e[0][_0x3964[164]];return _0xd7b8x21[_0x3964[38]](201)[_0x3964[37]](_0xd7b8x20[_0x3964[143]])})[_0x3964[36]](function(_0xd7b8x23){return _0xd7b8x22(_0xd7b8x23)})};exports[_0x3964[166]]= function(_0xd7b8x20,_0xd7b8x21,_0xd7b8x22){var _0xd7b8x3f,_0xd7b8x4b;return Contact[_0x3964[114]](_0xd7b8x20[_0x3964[138]][_0x3964[42]])[_0x3964[39]](function(_0xd7b8x3e){_0xd7b8x3f= _0xd7b8x3e[_0x3964[101]];_0xd7b8x4b= _[_0x3964[169]](_0xd7b8x3e[_0x3964[101]]);delete _0xd7b8x4b[_0x3964[42]];_0xd7b8x4b[_0x3964[158]]= _0xd7b8x20[_0x3964[113]][_0x3964[42]];_0xd7b8x4b[_0x3964[72]]= _0xd7b8x20[_0x3964[143]][_0x3964[72]];_0xd7b8x4b[_0x3964[47]]= _0xd7b8x4b[_0x3964[47]]?_0xd7b8x4b[_0x3964[47]][_0x3964[170]](_0x3964[160]):[];if(_0xd7b8x4b[_0x3964[47]][_0x3964[79]]> 1){_0xd7b8x4b[_0x3964[47]][_0x3964[171]]()};return Contact[_0x3964[154]](_0xd7b8x4b)})[_0x3964[39]](function(_0xd7b8x4c){_0xd7b8x4b= _0xd7b8x4c;if(_0xd7b8x3f[_0x3964[72]]=== _0xd7b8x20[_0x3964[143]][_0x3964[72]]){return CustomField[_0x3964[100]]({where:{$or:[{ListId:_0xd7b8x3f[_0x3964[72]]},{ListId:null}]}})}})[_0x3964[39]](function(_0xd7b8x31){if(_0xd7b8x31&& _0xd7b8x31[_0x3964[79]]){var _0xd7b8x32=_[_0x3964[85]](_0xd7b8x31,_0x3964[76])[_0x3964[81]](_0x3964[80]);return sequelize[_0x3964[89]](util[_0x3964[91]](_0x3964[140],_0xd7b8x32,_0xd7b8x3f[_0x3964[42]]),{type:sequelize[_0x3964[93]][_0x3964[92]]})}})[_0x3964[39]](function(_0xd7b8x40){if(_0xd7b8x40){var _0xd7b8x32=[];_[_0x3964[163]](_0xd7b8x40[0],function(_0xd7b8x41,_0xd7b8x42){_0xd7b8x32[_0x3964[151]](util[_0x3964[91]](_0x3964[167],_0xd7b8x42,_0xd7b8x41))});if(_0xd7b8x32[_0x3964[79]]){_0xd7b8x32= _0xd7b8x32[_0x3964[81]](_0x3964[80]);return sequelize[_0x3964[89]](util[_0x3964[91]](_0x3964[168],_0xd7b8x32,_0xd7b8x4b[_0x3964[42]]))}}})[_0x3964[39]](function(){return _0xd7b8x21[_0x3964[38]](201)[_0x3964[37]](_0xd7b8x4b)})[_0x3964[36]](function(_0xd7b8x23){return _0xd7b8x22(_0xd7b8x23)})};exports[_0x3964[172]]= function(_0xd7b8x20,_0xd7b8x21,_0xd7b8x22){var _0xd7b8x45=[],_0xd7b8x48=moment()[_0x3964[91]](_0x3964[157]),_0xd7b8x4d=[],_0xd7b8x49,_0xd7b8x4a,_0xd7b8x4e={ok:0,ko:0,failed:[]};return Tag[_0x3964[100]]()[_0x3964[39]](function(_0xd7b8x4f){var _0xd7b8x50=[],_0xd7b8x51=[];var _0xd7b8x52=_[_0x3964[85]](_[_0x3964[85]](_0xd7b8x4f,_0x3964[101]),_0x3964[76]);Async[_0x3964[181]](_0xd7b8x20[_0x3964[143]][_0x3964[174]],function(_0xd7b8x3e,_0xd7b8x30){if(_0xd7b8x3e[_0x3964[43]]&& _0xd7b8x3e[_0x3964[72]]){_0xd7b8x3e[_0x3964[158]]= _0xd7b8x20[_0x3964[113]][_0x3964[42]];_0xd7b8x3e[_0x3964[130]]= _0xd7b8x48;_0xd7b8x3e[_0x3964[159]]= _0xd7b8x48;_0xd7b8x3e[_0x3964[47]]&& (_0xd7b8x51= _[_0x3964[175]](_0xd7b8x51,_0xd7b8x3e[_0x3964[47]]));_0xd7b8x49= [];_0xd7b8x4a= [];_[_0x3964[163]](_0xd7b8x3e,function(_0xd7b8x41,_0xd7b8x42){if(_0xd7b8x41){switch(_0xd7b8x42){case _0x3964[47]:if(_0xd7b8x41[_0x3964[79]]){_0xd7b8x4a[_0x3964[151]](_0x3964[84]+ _0xd7b8x41[_0x3964[81]](_0x3964[160])+ _0x3964[161]);_0xd7b8x49[_0x3964[151]](_0xd7b8x42)};break;default:_0xd7b8x49[_0x3964[151]](_0xd7b8x42);_0xd7b8x4a[_0x3964[151]](_[_0x3964[162]](_0xd7b8x41)?_0x3964[84]+ _0xd7b8x41+ _0x3964[84]:_0xd7b8x41)}}});_0xd7b8x4d[_0x3964[151]](sequelize[_0x3964[89]](util[_0x3964[91]](_0x3964[165],_0xd7b8x49[_0x3964[81]](_0x3964[80]),_0xd7b8x4a[_0x3964[81]](_0x3964[80])))[_0x3964[39]](function(_0xd7b8x4c){_0xd7b8x3e[_0x3964[42]]= _0xd7b8x4c[_0x3964[42]];_0xd7b8x45[_0x3964[151]](_0xd7b8x3e);_0xd7b8x4e[_0x3964[180]]++})[_0x3964[36]](function(_0xd7b8x23){logger[_0x3964[177]](_0xd7b8x23[_0x3964[176]]);_0xd7b8x4e[_0x3964[178]]++;_0xd7b8x4e[_0x3964[179]][_0x3964[151]](_0xd7b8x30)}))}else {_0xd7b8x4e[_0x3964[178]]++;_0xd7b8x4e[_0x3964[179]][_0x3964[151]](_0xd7b8x30)}});_0xd7b8x51[_0x3964[79]]&& _[_0x3964[78]](_0xd7b8x51,function(_0xd7b8x35){if(!_0xd7b8x52[_0x3964[79]]|| !_[_0x3964[96]](_0xd7b8x52,_0xd7b8x35)){_0xd7b8x50[_0x3964[151]](Tag[_0x3964[154]]({name:_0xd7b8x35}))}});return _0xd7b8x50})[_0x3964[173]]()[_0x3964[39]](function(){return _0xd7b8x4d})[_0x3964[173]]()[_0x3964[39]](function(){return _0xd7b8x21[_0x3964[38]](201)[_0x3964[37]](_0xd7b8x4e)})[_0x3964[36]](function(_0xd7b8x23){return _0xd7b8x22(_0xd7b8x23)})};exports[_0x3964[182]]= function(_0xd7b8x20,_0xd7b8x21,_0xd7b8x22){return Promise[_0x3964[173]]([])[_0x3964[39]](updateContact(_0xd7b8x20,_0xd7b8x21))[_0x3964[39]](function(_0xd7b8x3e){return _0xd7b8x21[_0x3964[38]](200)[_0x3964[37]](_0xd7b8x3e)})[_0x3964[36]](function(_0xd7b8x23){return handleError(_0xd7b8x21,_0xd7b8x23)})};exports[_0x3964[74]]= function(_0xd7b8x20,_0xd7b8x21,_0xd7b8x22){var _0xd7b8x3f;return Promise[_0x3964[173]]([])[_0x3964[39]](updateContact(_0xd7b8x20,_0xd7b8x21))[_0x3964[39]](function(_0xd7b8x3e){_0xd7b8x3f= _0xd7b8x3e;if(_0xd7b8x20[_0x3964[143]][_0x3964[183]]){return Contact[_0x3964[184]]({where:{id:_0xd7b8x20[_0x3964[143]][_0x3964[183]]},individualHooks:true})}})[_0x3964[39]](function(){return _0xd7b8x21[_0x3964[38]](200)[_0x3964[37]](_0xd7b8x3f)})[_0x3964[36]](function(_0xd7b8x23){return handleError(_0xd7b8x21,_0xd7b8x23)})};function updateContact(_0xd7b8x20,_0xd7b8x21){return function(){var _0xd7b8x3f;return Tag[_0x3964[100]]()[_0x3964[39]](function(_0xd7b8x4f){var _0xd7b8x50=[];var _0xd7b8x52=_[_0x3964[85]](_[_0x3964[85]](_0xd7b8x4f,_0x3964[101]),_0x3964[76]);if(_0xd7b8x20[_0x3964[143]][_0x3964[47]]){_0xd7b8x20[_0x3964[143]][_0x3964[47]][_0x3964[78]](function(_0xd7b8x35){if(!_[_0x3964[96]](_0xd7b8x52,_0xd7b8x35)){_0xd7b8x50[_0x3964[151]](Tag[_0x3964[154]]({name:_0xd7b8x35}))}})};return _0xd7b8x50})[_0x3964[39]](function(){return Contact[_0x3964[114]](_0xd7b8x20[_0x3964[138]][_0x3964[42]])})[_0x3964[39]](function(_0xd7b8x3e){if(!_0xd7b8x3e){return _0xd7b8x21[_0x3964[125]](404)};delete _0xd7b8x20[_0x3964[143]][_0x3964[42]];return _0xd7b8x3e[_0x3964[187]](_0xd7b8x20[_0x3964[143]])})[_0x3964[39]](function(_0xd7b8x3e){_0xd7b8x3f= _0xd7b8x3e;return CustomField[_0x3964[100]]({where:{$or:[{ListId:_0xd7b8x3f[_0x3964[72]]},{ListId:null}]}})})[_0x3964[39]](function(_0xd7b8x31){if(_0xd7b8x31[_0x3964[79]]){var _0xd7b8x32=[];_0xd7b8x31[_0x3964[78]](function(_0xd7b8x35){if(_0xd7b8x20[_0x3964[143]][_0x3964[186]](_0xd7b8x35[_0x3964[76]])){_0xd7b8x32[_0x3964[151]](util[_0x3964[91]](_0x3964[167],_0xd7b8x35[_0x3964[76]],_0xd7b8x20[_0x3964[143]][_0xd7b8x35[_0x3964[76]]]))}});if(_0xd7b8x32[_0x3964[79]]){_0xd7b8x32= _0xd7b8x32[_0x3964[81]](_0x3964[80]);return sequelize[_0x3964[89]](util[_0x3964[91]](_0x3964[168],_0xd7b8x32,_0xd7b8x3f[_0x3964[42]]))}}})[_0x3964[39]](function(){return TdUpdate[_0x3964[154]]({action:_0x3964[185],listId:_0xd7b8x3f[_0x3964[72]],contactId:_0xd7b8x3f[_0x3964[42]]})})[_0x3964[39]](function(){return _0xd7b8x3f})}}exports[_0x3964[184]]= function(_0xd7b8x20,_0xd7b8x21){return Contact[_0x3964[114]](_0xd7b8x20[_0x3964[138]][_0x3964[42]])[_0x3964[39]](function(_0xd7b8x44){if(!_0xd7b8x44){return _0xd7b8x21[_0x3964[125]](404)};return _0xd7b8x44[_0x3964[184]]()})[_0x3964[39]](function(_0xd7b8x3e){return TdUpdate[_0x3964[154]]({action:_0x3964[188],listId:_0xd7b8x3e[_0x3964[72]],contactId:_0xd7b8x3e[_0x3964[42]]})})[_0x3964[39]](function(){return _0xd7b8x21[_0x3964[125]](204)})[_0x3964[36]](function(_0xd7b8x23){return handleError(_0xd7b8x21,_0xd7b8x23)})};exports[_0x3964[189]]= function(_0xd7b8x20,_0xd7b8x21){return Contact[_0x3964[100]]({where:{id:_0xd7b8x20[_0x3964[89]][_0x3964[190]]}})[_0x3964[39]](function(_0xd7b8x37){var _0xd7b8x54=[];if(_0xd7b8x37&& _0xd7b8x37[_0x3964[79]]){_[_0x3964[78]](_0xd7b8x37,function(_0xd7b8x3e){_0xd7b8x54[_0x3964[151]](_0xd7b8x3e[_0x3964[184]]());_0xd7b8x54[_0x3964[151]](TdUpdate[_0x3964[154]]({action:_0x3964[188],listId:_0xd7b8x3e[_0x3964[72]],contactId:_0xd7b8x3e[_0x3964[42]]}))})};return _0xd7b8x54})[_0x3964[173]]()[_0x3964[39]](function(){return _0xd7b8x21[_0x3964[125]](204)})[_0x3964[36]](function(_0xd7b8x23){return handleError(_0xd7b8x21,_0xd7b8x23)})};function handleError(_0xd7b8x21,_0xd7b8x23){logger[_0x3964[150]](_0xd7b8x23[_0x3964[176]]);return _0xd7b8x21[_0x3964[38]](500)[_0x3964[37]](_0xd7b8x23)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/contact_manager/contact_manager.events.js b/server/api/contact_manager/contact_manager.events.js index 7818fc6..66dc905 100644 --- a/server/api/contact_manager/contact_manager.events.js +++ b/server/api/contact_manager/contact_manager.events.js @@ -1 +1 @@ -var _0x57b2=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x6F\x6E\x74\x61\x63\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x57b2[0];const EventEmitter=require(_0x57b2[1]);const Contact=require(_0x57b2[3])[_0x57b2[2]];var ContactEvents= new EventEmitter();ContactEvents[_0x57b2[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x57b2[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x57b2[6],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x57b2[7]};for(var e in events){var event=events[e];Contact[_0x57b2[8]](e,emitEvent(event))};function emitEvent(event){return function(_0xff74x8,_0xff74x9,_0xff74xa){ContactEvents[_0x57b2[11]](event+ _0x57b2[9]+ _0xff74x8[_0x57b2[10]],_0xff74x8);ContactEvents[_0x57b2[11]](event,_0xff74x8);_0xff74xa(null)}}module[_0x57b2[12]]= ContactEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/contact_manager/contact_manager.socket.js b/server/api/contact_manager/contact_manager.socket.js index 957d584..66dc905 100644 --- a/server/api/contact_manager/contact_manager.socket.js +++ b/server/api/contact_manager/contact_manager.socket.js @@ -1 +1 @@ -var _0x642e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x63\x6F\x6E\x74\x61\x63\x74\x5F\x6D\x61\x6E\x61\x67\x65\x72\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x6F\x6E\x74\x61\x63\x74\x5F\x6D\x61\x6E\x61\x67\x65\x72\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x642e[0];const ContactManagerEvents=require(_0x642e[1]);var events=[_0x642e[2],_0x642e[3],_0x642e[4]];exports[_0x642e[5]]= function(_0xb619x3){for(var _0xb619x4=0,_0xb619x5=events[_0x642e[6]];_0xb619x4< _0xb619x5;_0xb619x4++){var _0xb619x6=events[_0xb619x4];var _0xb619x7=createListener(_0x642e[7]+ _0xb619x6,_0xb619x3);ContactManagerEvents[_0x642e[8]](_0xb619x6,_0xb619x7);_0xb619x3[_0x642e[8]](_0x642e[9],removeListener(_0xb619x6,_0xb619x7))}};function createListener(_0xb619x6,_0xb619x3){return function(_0xb619x9){_0xb619x3[_0x642e[10]](_0xb619x6,_0xb619x9)}}function removeListener(_0xb619x6,_0xb619x7){return function(){ContactManagerEvents[_0x642e[11]](_0xb619x6,_0xb619x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/contact_manager/index.js b/server/api/contact_manager/index.js index 0e8f663..66dc905 100644 --- a/server/api/contact_manager/index.js +++ b/server/api/contact_manager/index.js @@ -1 +1 @@ -var _0x7cc2=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x63\x6F\x6E\x74\x61\x63\x74\x5F\x6D\x61\x6E\x61\x67\x65\x72\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x43\x6D","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x65\x78\x74\x72\x61\x63\x74\x2F\x61\x6C\x6C","\x65\x78\x74\x72\x61\x63\x74\x41\x6C\x6C","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x6C\x69\x73\x74\x63\x6F\x6E\x74\x61\x63\x74","\x67\x65\x74\x43\x6F\x6E\x74\x61\x63\x74\x73","\x70\x6F\x73\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x6C\x6F\x67","\x67\x65\x74\x4C\x6F\x67","\x63\x72\x65\x61\x74\x65","\x2F\x3A\x69\x64\x2F\x63\x6F\x70\x79","\x63\x6F\x70\x79","\x2F\x3A\x69\x64\x2F\x6D\x65\x72\x67\x65","\x6D\x65\x72\x67\x65","\x2F\x62\x75\x6C\x6B","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x7cc2[0];var express=require(_0x7cc2[1]);var controller=require(_0x7cc2[2]);var auth=require(_0x7cc2[3]);var license=require(_0x7cc2[4]);var router=express.Router();router[_0x7cc2[12]](_0x7cc2[5],auth[_0x7cc2[6]](),license[_0x7cc2[7]](),auth[_0x7cc2[10]]([5],[_0x7cc2[8],_0x7cc2[9]]),controller[_0x7cc2[11]]);router[_0x7cc2[12]](_0x7cc2[13],auth[_0x7cc2[6]](),license[_0x7cc2[7]](),auth[_0x7cc2[10]]([5],[_0x7cc2[8],_0x7cc2[9]]),controller[_0x7cc2[14]]);router[_0x7cc2[12]](_0x7cc2[15],auth[_0x7cc2[6]](),license[_0x7cc2[7]](),auth[_0x7cc2[10]]([5],[_0x7cc2[8]]),controller[_0x7cc2[16]]);router[_0x7cc2[19]](_0x7cc2[17],auth[_0x7cc2[6]](),license[_0x7cc2[7]](),auth[_0x7cc2[10]]([5],[_0x7cc2[8],_0x7cc2[9]]),controller[_0x7cc2[18]]);router[_0x7cc2[12]](_0x7cc2[20],auth[_0x7cc2[6]](),license[_0x7cc2[7]](),auth[_0x7cc2[10]]([5],[_0x7cc2[8],_0x7cc2[9]]),controller[_0x7cc2[21]]);router[_0x7cc2[12]](_0x7cc2[22],auth[_0x7cc2[6]](),license[_0x7cc2[7]](),auth[_0x7cc2[10]]([5],[_0x7cc2[8],_0x7cc2[9]]),controller[_0x7cc2[23]]);router[_0x7cc2[19]](_0x7cc2[5],auth[_0x7cc2[6]](),license[_0x7cc2[7]](),auth[_0x7cc2[10]]([5],[_0x7cc2[8],_0x7cc2[9]]),controller[_0x7cc2[24]]);router[_0x7cc2[19]](_0x7cc2[25],auth[_0x7cc2[6]](),license[_0x7cc2[7]](),auth[_0x7cc2[10]]([5],[_0x7cc2[8],_0x7cc2[9]]),controller[_0x7cc2[26]]);router[_0x7cc2[19]](_0x7cc2[27],auth[_0x7cc2[6]](),license[_0x7cc2[7]](),auth[_0x7cc2[10]]([5],[_0x7cc2[8],_0x7cc2[9]]),controller[_0x7cc2[28]]);router[_0x7cc2[19]](_0x7cc2[29],auth[_0x7cc2[6]](),license[_0x7cc2[7]](),auth[_0x7cc2[10]]([5],[_0x7cc2[8]]),controller[_0x7cc2[30]]);router[_0x7cc2[32]](_0x7cc2[20],auth[_0x7cc2[6]](),license[_0x7cc2[7]](),auth[_0x7cc2[10]]([5],[_0x7cc2[8],_0x7cc2[9]]),controller[_0x7cc2[31]]);router[_0x7cc2[34]](_0x7cc2[5],auth[_0x7cc2[6]](),license[_0x7cc2[7]](),auth[_0x7cc2[10]]([5],[_0x7cc2[8]]),controller[_0x7cc2[33]]);router[_0x7cc2[34]](_0x7cc2[20],auth[_0x7cc2[6]](),license[_0x7cc2[7]](),auth[_0x7cc2[10]]([5],[_0x7cc2[8]]),controller[_0x7cc2[35]]);module[_0x7cc2[36]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/custom_field/custom_field.controller.js b/server/api/custom_field/custom_field.controller.js index 87bd4d9..66dc905 100644 --- a/server/api/custom_field/custom_field.controller.js +++ b/server/api/custom_field/custom_field.controller.js @@ -1 +1 @@ -var _0x2fe3=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x43\x6F\x6E\x74\x61\x63\x74","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x67\x65\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x4C\x69\x73\x74\x49\x64","\x55\x73\x65\x20\x74\x68\x65\x20\x6C\x69\x73\x74\x20\x41\x50\x49\x20\x74\x6F\x20\x67\x65\x74\x20\x63\x75\x73\x74\x6F\x6D\x20\x66\x69\x65\x6C\x64\x73\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x6F\x66\x20\x61\x20\x6C\x69\x73\x74\x21","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x4E\x6F\x20\x4C\x69\x73\x74\x20\x49\x44\x20\x61\x6C\x6C\x6F\x77\x65\x64\x2C\x20\x75\x73\x65\x20\x74\x68\x65\x20\x6C\x69\x73\x74\x20\x41\x50\x49\x20\x74\x6F\x20\x63\x72\x65\x61\x74\x65\x20\x72\x65\x6C\x65\x61\x74\x65\x64\x20\x63\x75\x73\x74\x6F\x6D\x20\x66\x69\x65\x6C\x64\x73\x21","\x41\x4C\x54\x45\x52\x20\x54\x41\x42\x4C\x45\x20\x63\x6D\x5F\x63\x6F\x6E\x74\x61\x63\x74\x73\x20\x41\x44\x44\x20\x43\x4F\x4C\x55\x4D\x4E\x20\x25\x73\x20\x56\x41\x52\x43\x48\x41\x52\x28\x32\x35\x35\x29","\x6E\x61\x6D\x65","\x66\x6F\x72\x6D\x61\x74","\x63\x66\x5F","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x55\x73\x65\x20\x74\x68\x65\x20\x6C\x69\x73\x74\x20\x41\x50\x49\x20\x74\x6F\x20\x75\x70\x64\x61\x74\x65\x20\x63\x75\x73\x74\x6F\x6D\x20\x66\x69\x65\x6C\x64\x73\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x6F\x66\x20\x61\x20\x6C\x69\x73\x74\x21","\x6D\x65\x72\x67\x65","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x41\x4C\x54\x45\x52\x20\x54\x41\x42\x4C\x45\x20\x63\x6D\x5F\x63\x6F\x6E\x74\x61\x63\x74\x73\x20\x44\x52\x4F\x50\x20\x43\x4F\x4C\x55\x4D\x4E\x20\x25\x73","\x6B\x65\x79\x73","\x64\x65\x73\x63\x72\x69\x62\x65","\x55\x73\x65\x20\x74\x68\x65\x20\x6C\x69\x73\x74\x20\x41\x50\x49\x20\x74\x6F\x20\x64\x65\x6C\x65\x74\x65\x20\x63\x75\x73\x74\x6F\x6D\x20\x66\x69\x65\x6C\x64\x73\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x6F\x66\x20\x61\x20\x6C\x69\x73\x74\x21","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x61\x6C\x6C","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x69\x64\x73","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0x2fe3[0];var _=require(_0x2fe3[1]);var CustomField=require(_0x2fe3[3])[_0x2fe3[2]];var Contact=require(_0x2fe3[3])[_0x2fe3[4]];var util=require(_0x2fe3[5]);var Util=require(_0x2fe3[6]);var sequelize=require(_0x2fe3[3])[_0x2fe3[7]];var logger=require(_0x2fe3[9])(_0x2fe3[8]);exports[_0x2fe3[10]]= function(_0x4d8bx8,_0x4d8bx9,_0x4d8bxa){return CustomField[_0x2fe3[17]](Util[_0x2fe3[16]](_0x4d8bx8[_0x2fe3[15]],{ListId:null}))[_0x2fe3[14]](function(_0x4d8bxc){_0x4d8bx9[_0x2fe3[13]](200)[_0x2fe3[12]](_0x4d8bxc)})[_0x2fe3[11]](function(_0x4d8bxb){return handleError(_0x4d8bx9,_0x4d8bxb)})};exports[_0x2fe3[18]]= function(_0x4d8bx8,_0x4d8bx9,_0x4d8bxa){return CustomField[_0x2fe3[17]](Util[_0x2fe3[16]](_0x4d8bx8[_0x2fe3[15]]))[_0x2fe3[14]](function(_0x4d8bxc){_0x4d8bx9[_0x2fe3[13]](200)[_0x2fe3[12]](_0x4d8bxc)})[_0x2fe3[11]](function(_0x4d8bxb){return handleError(_0x4d8bx9,_0x4d8bxb)})};exports[_0x2fe3[19]]= function(_0x4d8bx8,_0x4d8bx9){return CustomField[_0x2fe3[25]](_0x4d8bx8[_0x2fe3[24]][_0x2fe3[23]])[_0x2fe3[14]](function(_0x4d8bxd){if(!_0x4d8bxd){return _0x4d8bx9[_0x2fe3[20]](404)};if(_0x4d8bxd[_0x2fe3[21]]){return handleError(_0x4d8bx9,{message:_0x2fe3[22]})};return _0x4d8bx9[_0x2fe3[12]](_0x4d8bxd)})[_0x2fe3[11]](function(_0x4d8bxb){return handleError(_0x4d8bx9,_0x4d8bxb)})};exports[_0x2fe3[26]]= function(_0x4d8bx8,_0x4d8bx9){if(_0x4d8bx8[_0x2fe3[27]][_0x2fe3[21]]){return handleError(_0x4d8bx9,{message:_0x2fe3[28]})};var _0x4d8bxe;return CustomField[_0x2fe3[26]](_0x4d8bx8[_0x2fe3[27]])[_0x2fe3[14]](function(_0x4d8bxd){_0x4d8bxe= _0x4d8bxd;_0x4d8bxd[_0x2fe3[30]]= _0x2fe3[32]+ _0x4d8bxd[_0x2fe3[23]];return _0x4d8bxd[_0x2fe3[33]]()})[_0x2fe3[14]](function(){return sequelize[_0x2fe3[15]](util[_0x2fe3[31]](_0x2fe3[29],_0x4d8bxe[_0x2fe3[30]]))})[_0x2fe3[14]](function(){return _0x4d8bx9[_0x2fe3[20]](201)})[_0x2fe3[11]](function(_0x4d8bxb){return handleError(_0x4d8bx9,_0x4d8bxb)})};exports[_0x2fe3[34]]= function(_0x4d8bx8,_0x4d8bx9){return CustomField[_0x2fe3[25]](_0x4d8bx8[_0x2fe3[24]][_0x2fe3[23]])[_0x2fe3[14]](function(_0x4d8bxd){if(!_0x4d8bxd){return _0x4d8bx9[_0x2fe3[20]](404)};if(_0x4d8bxd[_0x2fe3[21]]){return handleError(_0x4d8bx9,{message:_0x2fe3[35]})};var _0x4d8bxf=_[_0x2fe3[36]](_0x4d8bxd,_0x4d8bx8[_0x2fe3[27]]);return _0x4d8bxf[_0x2fe3[33]]()})[_0x2fe3[14]](function(_0x4d8bxd){if(_0x4d8bxd){return _0x4d8bx9[_0x2fe3[13]](200)[_0x2fe3[12]](_0x4d8bxd)}})[_0x2fe3[11]](function(_0x4d8bxb){return handleError(_0x4d8bx9,_0x4d8bxb)})};exports[_0x2fe3[37]]= function(_0x4d8bx8,_0x4d8bx9){var _0x4d8bx10;return CustomField[_0x2fe3[25]](_0x4d8bx8[_0x2fe3[24]][_0x2fe3[23]])[_0x2fe3[14]](function(_0x4d8bx13){if(!_0x4d8bx13){return _0x4d8bx9[_0x2fe3[20]](404)};if(_0x4d8bx13[_0x2fe3[21]]){return handleError(_0x4d8bx9,{message:_0x2fe3[42]})};_0x4d8bx10= _0x4d8bx13;return CustomField[_0x2fe3[37]]({where:{id:_0x4d8bx8[_0x2fe3[24]][_0x2fe3[23]]}})})[_0x2fe3[14]](function(){return Contact[_0x2fe3[41]]()})[_0x2fe3[14]](function(_0x4d8bx12){return _[_0x2fe3[40]](_0x4d8bx12)})[_0x2fe3[14]](function(_0x4d8bx11){if(_[_0x2fe3[38]](_0x4d8bx11,_0x4d8bx10[_0x2fe3[30]])){return sequelize[_0x2fe3[15]](util[_0x2fe3[31]](_0x2fe3[39],_0x4d8bx10[_0x2fe3[30]]))}})[_0x2fe3[14]](function(){return _0x4d8bx9[_0x2fe3[20]](204)})[_0x2fe3[11]](function(_0x4d8bxb){return handleError(_0x4d8bx9,_0x4d8bxb)})};exports[_0x2fe3[43]]= function(_0x4d8bx8,_0x4d8bx9){var _0x4d8bx14;return CustomField[_0x2fe3[48]]({where:{id:_0x4d8bx8[_0x2fe3[15]][_0x2fe3[47]]}})[_0x2fe3[14]](function(_0x4d8bx17){if(!_0x4d8bx17){return _0x4d8bx9[_0x2fe3[20]](404)};var _0x4d8bxb=false;_[_0x2fe3[46]](_0x4d8bx17,function(_0x4d8bx18){if(_0x4d8bx18[_0x2fe3[21]]){_0x4d8bxb= true}});if(_0x4d8bxb){return handleError(_0x4d8bx9,{message:_0x2fe3[42]})};_0x4d8bx14= _0x4d8bx17;return CustomField[_0x2fe3[37]]({where:{id:_0x4d8bx8[_0x2fe3[15]][_0x2fe3[47]]}})})[_0x2fe3[14]](function(){return Contact[_0x2fe3[41]]()})[_0x2fe3[14]](function(_0x4d8bx12){return _[_0x2fe3[40]](_0x4d8bx12)})[_0x2fe3[14]](function(_0x4d8bx11){var _0x4d8bx15=[];_0x4d8bx14[_0x2fe3[46]](function(_0x4d8bx16){if(_[_0x2fe3[38]](_0x4d8bx11,_0x4d8bx16[_0x2fe3[30]])){_0x4d8bx15[_0x2fe3[45]](sequelize[_0x2fe3[15]](util[_0x2fe3[31]](_0x2fe3[39],_0x4d8bx16[_0x2fe3[30]])))}});return _0x4d8bx15})[_0x2fe3[44]]()[_0x2fe3[14]](function(){return _0x4d8bx9[_0x2fe3[20]](204)})[_0x2fe3[11]](function(_0x4d8bxb){return handleError(_0x4d8bx9,_0x4d8bxb)})};function handleError(_0x4d8bx9,_0x4d8bxb){logger[_0x2fe3[50]](_0x4d8bxb[_0x2fe3[49]]);return _0x4d8bx9[_0x2fe3[13]](500)[_0x2fe3[12]](_0x4d8bxb)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/custom_field/custom_field.events.js b/server/api/custom_field/custom_field.events.js index cc40b02..66dc905 100644 --- a/server/api/custom_field/custom_field.events.js +++ b/server/api/custom_field/custom_field.events.js @@ -1 +1 @@ -var _0x5eba=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x5eba[0];const EventEmitter=require(_0x5eba[1]);const CustomField=require(_0x5eba[3])[_0x5eba[2]];var CustomFieldEvents= new EventEmitter();CustomFieldEvents[_0x5eba[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x5eba[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x5eba[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x5eba[6]};for(var e in events){var event=events[e];CustomField[_0x5eba[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xbbc6x8,_0xbbc6x9,_0xbbc6xa){CustomFieldEvents[_0x5eba[10]](event+ _0x5eba[8]+ _0xbbc6x8[_0x5eba[9]],_0xbbc6x8);CustomFieldEvents[_0x5eba[10]](event,_0xbbc6x8);_0xbbc6xa(null)}}module[_0x5eba[11]]= CustomFieldEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/custom_field/custom_field.socket.js b/server/api/custom_field/custom_field.socket.js index 665293d..66dc905 100644 --- a/server/api/custom_field/custom_field.socket.js +++ b/server/api/custom_field/custom_field.socket.js @@ -1 +1 @@ -var _0x5511=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x63\x75\x73\x74\x6F\x6D\x5F\x66\x69\x65\x6C\x64\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x75\x73\x74\x6F\x6D\x5F\x66\x69\x65\x6C\x64\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x5511[0];const CustomFieldEvents=require(_0x5511[1]);var events=[_0x5511[2],_0x5511[3]];exports[_0x5511[4]]= function(_0x7d7fx3){for(var _0x7d7fx4=0,_0x7d7fx5=events[_0x5511[5]];_0x7d7fx4< _0x7d7fx5;_0x7d7fx4++){var _0x7d7fx6=events[_0x7d7fx4];var _0x7d7fx7=createListener(_0x5511[6]+ _0x7d7fx6,_0x7d7fx3);CustomFieldEvents[_0x5511[7]](_0x7d7fx6,_0x7d7fx7);_0x7d7fx3[_0x5511[7]](_0x5511[8],removeListener(_0x7d7fx6,_0x7d7fx7))}};function createListener(_0x7d7fx6,_0x7d7fx3){return function(_0x7d7fx9){_0x7d7fx3[_0x5511[9]](_0x7d7fx6,_0x7d7fx9)}}function removeListener(_0x7d7fx6,_0x7d7fx7){return function(){CustomFieldEvents[_0x5511[10]](_0x7d7fx6,_0x7d7fx7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/custom_field/index.js b/server/api/custom_field/index.js index d8827e9..66dc905 100644 --- a/server/api/custom_field/index.js +++ b/server/api/custom_field/index.js @@ -1 +1 @@ -var _0xd630=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x63\x75\x73\x74\x6F\x6D\x5F\x66\x69\x65\x6C\x64\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x43\x6D","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x61\x6C\x6C","\x67\x65\x74\x41\x6C\x6C","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0xd630[0];var express=require(_0xd630[1]);var controller=require(_0xd630[2]);var auth=require(_0xd630[3]);var license=require(_0xd630[4]);var router=express.Router();router[_0xd630[12]](_0xd630[5],auth[_0xd630[6]](),license[_0xd630[7]](),auth[_0xd630[10]]([5],[_0xd630[8],_0xd630[9]]),controller[_0xd630[11]]);router[_0xd630[12]](_0xd630[13],auth[_0xd630[6]](),license[_0xd630[7]](),auth[_0xd630[10]]([5],[_0xd630[8],_0xd630[9]]),controller[_0xd630[14]]);router[_0xd630[12]](_0xd630[15],auth[_0xd630[6]](),license[_0xd630[7]](),auth[_0xd630[10]]([5],[_0xd630[8],_0xd630[9]]),controller[_0xd630[16]]);router[_0xd630[18]](_0xd630[5],auth[_0xd630[6]](),license[_0xd630[7]](),auth[_0xd630[10]]([5],[_0xd630[8]]),controller[_0xd630[17]]);router[_0xd630[20]](_0xd630[15],auth[_0xd630[6]](),license[_0xd630[7]](),auth[_0xd630[10]]([5],[_0xd630[8]]),controller[_0xd630[19]]);router[_0xd630[22]](_0xd630[5],auth[_0xd630[6]](),license[_0xd630[7]](),auth[_0xd630[10]]([5],[_0xd630[8]]),controller[_0xd630[21]]);router[_0xd630[22]](_0xd630[15],auth[_0xd630[6]](),license[_0xd630[7]](),auth[_0xd630[10]]([5],[_0xd630[8]]),controller[_0xd630[23]]);module[_0xd630[24]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/custom_report/custom_report.controller.js b/server/api/custom_report/custom_report.controller.js index 4205667..66dc905 100644 --- a/server/api/custom_report/custom_report.controller.js +++ b/server/api/custom_report/custom_report.controller.js @@ -1 +1 @@ -var _0x11c0=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74","\x52\x65\x70\x6F\x72\x74\x46\x69\x65\x6C\x64","\x4D\x65\x74\x72\x69\x63","\x45\x78\x74\x72\x61\x63\x74\x65\x64\x52\x65\x70\x6F\x72\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x75\x74\x69\x6C\x73\x2F\x72\x65\x70\x6F\x72\x74\x5F\x65\x78\x74\x72\x61\x63\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x75\x74\x69\x6C\x73\x2F\x72\x65\x70\x6F\x72\x74\x5F\x62\x75\x69\x6C\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x69\x6D\x70\x6C\x65\x2D\x72\x61\x6E\x64\x6F\x6D","\x6D\x6F\x6D\x65\x6E\x74","\x63\x68\x69\x6C\x64\x5F\x70\x72\x6F\x63\x65\x73\x73","\x52\x65\x70\x6F\x72\x74\x54\x72\x65\x65","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x67\x65\x74\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x72\x79","\x45\x72\x72\x6F\x72\x20\x67\x65\x74\x74\x69\x6E\x67\x20\x71\x75\x65\x72\x79\x20\x66\x72\x6F\x6D\x20\x61\x70\x69\x3A","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x6E\x6F\x20\x73\x75\x66\x66\x69\x63\x69\x65\x6E\x74\x20\x71\x75\x65\x75\x65\x20\x70\x65\x72\x6D\x69\x73\x73\x69\x6F\x6E\x73\x20\x66\x6F\x72\x20\x74\x68\x65\x20\x75\x73\x65\x72","\x70\x65\x72\x6D\x69\x73\x73\x69\x6F\x6E","\x61\x6C\x6C","\x62\x75\x69\x6C\x64\x51\x75\x65\x72\x79","\x73\x70\x72\x65\x61\x64","\x75\x73\x65\x72","\x62\x75\x69\x6C\x64\x46\x69\x6C\x74\x65\x72","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x64\x61\x69\x6C\x79","\x74\x72\x75\x65","\x73\x74\x61\x72\x74\x44\x61\x74\x65","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44","\x66\x6F\x72\x6D\x61\x74","\x65\x6E\x64\x44\x61\x74\x65","\x74\x61\x62\x6C\x65","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x5F\x68\x69\x73\x74\x6F\x72\x79","","\x72\x65\x70\x6C\x61\x63\x65","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x66\x69\x65\x6C\x64\x73","\x73\x63\x6F\x70\x65","\x70\x72\x65\x76\x69\x65\x77","\x69\x73\x41\x72\x72\x61\x79","\x6C\x65\x6E\x67\x74\x68","\x6C\x69\x6D\x69\x74","\x76\x61\x6C\x75\x65","\x74\x61\x6B\x65","\x6F\x66\x66\x73\x65\x74","\x73\x6C\x69\x63\x65","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x4F\x77\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x71\x75\x65\x72\x79\x20\x65\x72\x72\x6F\x72","\x63\x68\x65\x63\x6B\x51\x75\x65\x72\x79","\x65\x78\x74\x72\x61\x63\x74\x50\x64\x66","\x65\x78\x74\x72\x61\x63\x74\x50\x64\x66\x20\x61\x70\x69\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E","\x64\x65\x62\x75\x67","\x50\x44\x46","\x65\x78\x74\x72\x61\x63\x74\x43\x73\x76","\x65\x78\x74\x72\x61\x63\x74\x43\x73\x76\x20\x61\x70\x69\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E","\x43\x53\x56","\x64\x65\x73\x74\x72\x6F\x79\x4E\x6F\x64\x65\x52\x65\x70\x6F\x72\x74\x73","\x74\x72\x65\x65","\x70\x61\x72\x73\x65","\x66\x69\x6E\x64","\x4E\x6F\x64\x65\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64","\x64\x65\x73\x74\x72\x6F\x79","\x70\x75\x73\x68","\x66\x69\x6C\x74\x65\x72","\x63\x6F\x6D\x6D\x6F\x6E\x20\x64\x6F\x63\x45\x78\x74\x72\x61\x63\x74\x20\x61\x70\x69\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E","\x43\x72\x65\x61\x74\x65\x64\x20\x6E\x65\x77\x20\x65\x78\x74\x72\x61\x63\x74\x65\x64\x20\x72\x65\x70\x6F\x72\x74\x73\x20\x64\x62\x20\x65\x6E\x74\x72\x79\x2C\x20\x63\x61\x6C\x6C\x69\x6E\x67\x20\x65\x78\x74\x65\x72\x6E\x61\x6C\x20\x65\x78\x74\x72\x61\x63\x74\x69\x6F\x6E\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E\x3A\x20","\x2F\x2E\x2E\x2F\x2E\x2E\x2F\x75\x74\x69\x6C\x73\x2F\x72\x65\x70\x6F\x72\x74\x5F\x65\x78\x74\x72\x61\x63\x74\x69\x6F\x6E\x2E\x6A\x73","\x66\x6F\x72\x6B","\x52\x65\x70\x6F\x72\x74\x20\x65\x78\x74\x72\x61\x63\x74\x69\x6F\x6E\x20\x70\x72\x6F\x63\x65\x73\x73\x20\x65\x72\x72\x6F\x72","\x6F\x6E","\x63\x6C\x6F\x73\x65","\x52\x65\x70\x6F\x72\x74\x20\x65\x78\x74\x72\x61\x63\x74\x69\x6F\x6E\x20\x70\x72\x6F\x63\x65\x73\x73\x20\x63\x6C\x6F\x73\x65","\x6D\x65\x73\x73\x61\x67\x65","\x52\x65\x70\x6F\x72\x74\x20\x65\x78\x74\x72\x61\x63\x74\x69\x6F\x6E\x20\x70\x72\x6F\x63\x65\x73\x73\x20\x6D\x65\x73\x73\x61\x67\x65","\x6B\x69\x6C\x6C","\x70\x61\x72\x65\x6E\x74","\x6E\x61\x6D\x65","\x46\x6F\x75\x6E\x64\x20\x74\x68\x65\x20\x72\x65\x70\x6F\x72\x74\x2C\x20\x63\x72\x65\x61\x74\x69\x6E\x67\x20\x74\x68\x65\x20\x6E\x65\x77\x20\x44\x42\x20\x72\x6F\x77\x20\x66\x6F\x72\x20\x65\x78\x74\x72\x61\x63\x74\x65\x64\x20\x72\x65\x70\x6F\x72\x74\x73\x2E\x2E","\x73\x74\x61\x72\x74\x54\x69\x6D\x65","\x20","\x30\x30\x3A\x30\x30","\x65\x6E\x64\x54\x69\x6D\x65","\x32\x33\x3A\x35\x39","\x63\x72\x65\x61\x74\x65","\x74\x65\x78\x74","\x2F\x20","\x23","\x73\x68\x6F\x77","\x65\x78\x70\x6F\x72\x74","\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x65\x78\x70\x6F\x72\x74\x46\x69\x65\x6C\x64\x73","\x63\x6F\x70\x79","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x75\x70\x64\x61\x74\x65\x64\x41\x74","\x62\x6F\x64\x79","\x6D\x61\x70","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x46\x69\x65\x6C\x64\x73","\x69\x6D\x70\x6F\x72\x74","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x67\x65\x74\x54\x61\x62\x6C\x65","\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64","\x4D\x65\x74\x72\x69\x63\x49\x64","\x66\x69\x65\x6C\x64","\x6D\x65\x74\x72\x69\x63","\x54\x68\x65\x20\x6D\x65\x74\x72\x69\x63\x20\x77\x69\x74\x68\x20\x69\x64\x20","\x20\x79\x6F\x75\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x64\x6F\x65\x73\x20\x6E\x6F\x74\x20\x65\x78\x69\x73\x74","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x63\x75\x73\x74\x6F\x6D","\x54\x68\x65\x20\x66\x69\x65\x6C\x64\x20","\x20\x79\x6F\x75\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x64\x6F\x65\x73\x20\x6E\x6F\x74\x20\x65\x78\x69\x73\x74\x20\x69\x6E\x20\x74\x68\x65\x20\x74\x61\x62\x6C\x65","\x6B\x65\x79\x73","\x66\x69\x6E\x64\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x59\x6F\x75\x20\x68\x61\x76\x65\x20\x6E\x6F\x74\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x74\x68\x65\x20\x74\x61\x62\x6C\x65\x20\x6F\x72\x20\x74\x68\x65\x20\x74\x61\x62\x6C\x65\x20\x64\x6F\x65\x73\x20\x6E\x6F\x74\x20\x65\x78\x69\x73\x74","\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64","\x68\x61\x73","\x65\x76\x65\x72\x79","\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63","\x55\x6E\x73\x75\x70\x70\x6F\x72\x74\x65\x64\x20\x49\x6D\x70\x6F\x72\x74\x20\x66\x6F\x72\x6D\x61\x74\x20\x28\x4D\x65\x74\x72\x69\x63\x20\x74\x79\x70\x65\x20\x69\x6E\x20\x72\x65\x70\x6F\x72\x74\x20\x66\x69\x65\x6C\x64\x73\x20\x69\x73\x20\x6D\x69\x73\x73\x69\x6E\x67\x29","\x49\x64","\x67\x72\x6F\x75\x70\x42\x79","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x6E\x75\x6C\x6C","\x52\x65\x70\x6F\x72\x74\x46\x69\x65\x6C\x64\x73","\x5F","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0x11c0[0];var _=require(_0x11c0[1]);var util=require(_0x11c0[2]);var sequelize=require(_0x11c0[4])[_0x11c0[3]];var CustomReport=require(_0x11c0[4])[_0x11c0[5]];var ReportField=require(_0x11c0[4])[_0x11c0[6]];var Metric=require(_0x11c0[4])[_0x11c0[7]];var ExtractedReport=require(_0x11c0[4])[_0x11c0[8]];var extractUtils=require(_0x11c0[9]);var reportBuildUtils=require(_0x11c0[10]);var Util=require(_0x11c0[11]);var sr=require(_0x11c0[12]);var moment=require(_0x11c0[13]);var cp=require(_0x11c0[14]);var ReportTree=require(_0x11c0[4])[_0x11c0[15]];var logger=require(_0x11c0[17])(_0x11c0[16]);exports[_0x11c0[18]]= function(_0xd3bax10,_0xd3bax11,_0xd3bax12){return CustomReport[_0x11c0[25]](Util[_0x11c0[24]](_0xd3bax10[_0x11c0[23]],{deletedAt:null}))[_0x11c0[22]](function(_0xd3bax14){_0xd3bax11[_0x11c0[21]](200)[_0x11c0[20]](_0xd3bax14)})[_0x11c0[19]](function(_0xd3bax13){return handleError(_0xd3bax11,_0xd3bax13)})};exports[_0x11c0[26]]= function(_0xd3bax10,_0xd3bax11){return Promise[_0x11c0[32]]([])[_0x11c0[22]](getQuery(_0xd3bax10,_0xd3bax11))[_0x11c0[22]](function(_0xd3bax15){if(_0xd3bax15){switch(_0xd3bax15){case _0x11c0[31]:_0xd3bax15= _0x11c0[30];break;default:}};_0xd3bax11[_0x11c0[21]](200)[_0x11c0[20]]({query:_0xd3bax15})})[_0x11c0[19]](function(_0xd3bax13){logger[_0x11c0[29]](_0x11c0[27],_0xd3bax13[_0x11c0[28]])})};function getQuery(_0xd3bax10,_0xd3bax11){var _0xd3bax17;return function(){return CustomReport[_0x11c0[53]](_0x11c0[52])[_0x11c0[51]](_0xd3bax10[_0x11c0[50]][_0x11c0[49]])[_0x11c0[22]](function(_0xd3bax19){if(!_0xd3bax19){return _0xd3bax11[_0x11c0[37]](404)};if(_0xd3bax10[_0x11c0[23]][_0x11c0[38]]&& _0xd3bax10[_0x11c0[23]][_0x11c0[38]]=== _0x11c0[39]){_0xd3bax10[_0x11c0[23]][_0x11c0[40]]= moment()[_0x11c0[42]](_0x11c0[41]);_0xd3bax10[_0x11c0[23]][_0x11c0[43]]= moment()[_0x11c0[42]](_0x11c0[41]);_0xd3bax19[_0x11c0[45]][_0x11c0[44]]= _0xd3bax19[_0x11c0[45]][_0x11c0[44]][_0x11c0[48]](_0x11c0[46],_0x11c0[47])};delete _0xd3bax10[_0x11c0[23]][_0x11c0[38]];_0xd3bax17= _0xd3bax19[_0x11c0[45]];return _0xd3bax17[_0x11c0[44]]})[_0x11c0[22]](reportBuildUtils[_0x11c0[36]](_0xd3bax10[_0x11c0[35]]))[_0x11c0[22]](function(_0xd3bax18){return [_0xd3bax18,_0xd3bax17]})[_0x11c0[34]](reportBuildUtils[_0x11c0[33]](_0xd3bax10[_0x11c0[23]]))}}exports[_0x11c0[54]]= function(_0xd3bax10,_0xd3bax11){var _0xd3bax1a;return Promise[_0x11c0[32]]([])[_0x11c0[22]](getQuery(_0xd3bax10,_0xd3bax11))[_0x11c0[22]](reportBuildUtils[_0x11c0[66]]())[_0x11c0[22]](function(_0xd3bax1b){if(_0xd3bax1b&& _[_0x11c0[55]](_0xd3bax1b)){_0xd3bax1a= _0xd3bax1b[_0x11c0[56]];if(_0xd3bax10[_0x11c0[23]][_0x11c0[57]]){_0xd3bax1b= _(_0xd3bax1b)[_0x11c0[61]](_0xd3bax10[_0x11c0[23]][_0x11c0[60]]|| 0)[_0x11c0[59]](_0xd3bax10[_0x11c0[23]][_0x11c0[57]])[_0x11c0[58]]()};_[_0x11c0[64]](_0xd3bax1b,function(_0xd3bax1c){_[_0x11c0[63]](_0xd3bax1c,function(_0xd3bax1d,_0xd3bax1e){if(_0xd3bax1d instanceof Date){_0xd3bax1c[_0xd3bax1e]= moment(_0xd3bax1d)[_0x11c0[42]](_0x11c0[62]).toString()}})});_0xd3bax11[_0x11c0[21]](200)[_0x11c0[20]]({rows:_0xd3bax1b,count:_0xd3bax1a})}else {return handleError(_0xd3bax11,{message:_0xd3bax1b|| _0x11c0[65]})}})[_0x11c0[19]](function(_0xd3bax13){return handleError(_0xd3bax11,_0xd3bax13)})};exports[_0x11c0[67]]= function(_0xd3bax10,_0xd3bax11){logger[_0x11c0[69]](_0x11c0[68]);docExtract(_0xd3bax10,_0xd3bax11,_0x11c0[70])};exports[_0x11c0[71]]= function(_0xd3bax10,_0xd3bax11){logger[_0x11c0[69]](_0x11c0[72]);docExtract(_0xd3bax10,_0xd3bax11,_0x11c0[73])};exports[_0x11c0[74]]= function(_0xd3bax10,_0xd3bax11){return ReportTree[_0x11c0[51]](2)[_0x11c0[22]](function(_0xd3bax1f){_0xd3bax1f= JSON[_0x11c0[76]](_0xd3bax1f[_0x11c0[75]]);var _0xd3bax20=_[_0x11c0[77]](_0xd3bax1f,{id:_0xd3bax10[_0x11c0[50]][_0x11c0[49]]});if(!_0xd3bax20){throw new Error(_0x11c0[78])};var _0xd3bax21=[];findSubNodes(_0xd3bax20,_0xd3bax1f,_0xd3bax21);return CustomReport[_0x11c0[79]]({where:{parent:_0xd3bax21},individualHooks:true})})[_0x11c0[22]](function(){return _0xd3bax11[_0x11c0[37]](200)})[_0x11c0[19]](function(_0xd3bax13){return handleError(_0xd3bax11,_0xd3bax13)})};function findSubNodes(_0xd3bax20,_0xd3bax1f,_0xd3bax23){_0xd3bax23[_0x11c0[80]](_0xd3bax20[_0x11c0[49]]);var _0xd3bax24=_[_0x11c0[81]](_0xd3bax1f,{parent:_0xd3bax20[_0x11c0[49]]});if(!_0xd3bax24|| !_0xd3bax24[_0x11c0[56]]){return};_[_0x11c0[64]](_0xd3bax24,function(_0xd3bax25){findSubNodes(_0xd3bax25,_0xd3bax1f,_0xd3bax23)})}function docExtract(_0xd3bax10,_0xd3bax11,_0xd3bax27){var _0xd3bax19;logger[_0x11c0[69]](_0x11c0[82]);CustomReport[_0x11c0[53]](_0x11c0[52])[_0x11c0[51]](_0xd3bax10[_0x11c0[50]][_0x11c0[49]])[_0x11c0[22]](function(_0xd3bax17){if(!_0xd3bax17){return _0xd3bax11[_0x11c0[37]](404)};_0xd3bax19= _0xd3bax17;return ReportTree[_0x11c0[51]](2)})[_0x11c0[22]](function(_0xd3bax1f){_0xd3bax1f= JSON[_0x11c0[76]](_0xd3bax1f[_0x11c0[75]]);var _0xd3bax2b=_[_0x11c0[77]](_0xd3bax1f,{id:_0xd3bax19[_0x11c0[93]]});var _0xd3bax2c=getReportPath(_0xd3bax2b,_0xd3bax1f,_0xd3bax19[_0x11c0[94]]);logger[_0x11c0[69]](_0x11c0[95]);if(_0xd3bax10[_0x11c0[23]][_0x11c0[38]]&& _0xd3bax10[_0x11c0[23]][_0x11c0[38]]=== _0x11c0[39]){_0xd3bax10[_0x11c0[23]][_0x11c0[40]]= moment()[_0x11c0[42]](_0x11c0[41]);_0xd3bax10[_0x11c0[23]][_0x11c0[43]]= moment()[_0x11c0[42]](_0x11c0[41]);_0xd3bax19[_0x11c0[45]][_0x11c0[44]]= _0xd3bax19[_0x11c0[45]][_0x11c0[44]][_0x11c0[48]](_0x11c0[46],_0x11c0[47])};delete _0xd3bax10[_0x11c0[23]][_0x11c0[38]];return [_0xd3bax19,ExtractedReport[_0x11c0[101]]({name:_0xd3bax2c,startDate:_0xd3bax10[_0x11c0[23]][_0x11c0[40]]?_0xd3bax10[_0x11c0[23]][_0x11c0[40]]+ (_0xd3bax10[_0x11c0[23]][_0x11c0[96]]?_0x11c0[97]+ _0xd3bax10[_0x11c0[23]][_0x11c0[96]]:_0x11c0[98]):null,endDate:_0xd3bax10[_0x11c0[23]][_0x11c0[43]]?_0xd3bax10[_0x11c0[23]][_0x11c0[43]]+ (_0xd3bax10[_0x11c0[23]][_0x11c0[99]]?_0x11c0[97]+ _0xd3bax10[_0x11c0[23]][_0x11c0[99]]:_0x11c0[100]):null,output:_0xd3bax27,UserId:_0xd3bax10[_0x11c0[35]][_0x11c0[49]]})]})[_0x11c0[34]](function(_0xd3bax19,_0xd3bax28){logger[_0x11c0[69]](_0x11c0[83]+ _0xd3bax27);var _0xd3bax29=cp[_0x11c0[85]](__dirname+ _0x11c0[84]);_0xd3bax29[_0x11c0[87]](_0x11c0[90],function(_0xd3bax2a){logger[_0x11c0[69]](_0x11c0[91],_0xd3bax2a);_0xd3bax29[_0x11c0[92]]()})[_0x11c0[87]](_0x11c0[88],function(){logger[_0x11c0[69]](_0x11c0[89])})[_0x11c0[87]](_0x11c0[29],function(_0xd3bax13){logger[_0x11c0[69]](_0x11c0[86],_0xd3bax13)});_0xd3bax29[_0x11c0[20]]({report:_0xd3bax19,query:_0xd3bax10[_0x11c0[23]],extractedId:_0xd3bax28[_0x11c0[49]],user:_0xd3bax10[_0x11c0[35]],type:_0xd3bax27})})[_0x11c0[19]](function(_0xd3bax13){return handleError(_0xd3bax11,_0xd3bax13)});return _0xd3bax11[_0x11c0[37]](200)}function getReportPath(_0xd3bax2b,_0xd3bax1f,_0xd3bax2c){_0xd3bax2c= _0xd3bax2b[_0x11c0[102]]+ _0x11c0[103]+ _0xd3bax2c;if(_0xd3bax2b[_0x11c0[93]]=== _0x11c0[104]){return _0xd3bax2c}else {return getReportPath(_[_0x11c0[77]](_0xd3bax1f,{id:_0xd3bax2b[_0x11c0[93]]}),_0xd3bax1f,_0xd3bax2c)}}exports[_0x11c0[105]]= function(_0xd3bax10,_0xd3bax11){return CustomReport[_0x11c0[53]](_0x11c0[52])[_0x11c0[51]](_0xd3bax10[_0x11c0[50]][_0x11c0[49]])[_0x11c0[22]](function(_0xd3bax19){if(!_0xd3bax19){return _0xd3bax11[_0x11c0[37]](404)};return _0xd3bax11[_0x11c0[20]](_0xd3bax19)})[_0x11c0[19]](function(_0xd3bax13){return handleError(_0xd3bax11,_0xd3bax13)})};exports[_0x11c0[106]]= function(_0xd3bax10,_0xd3bax11){return CustomReport[_0x11c0[53]]({method:[_0x11c0[109],{CustomReportId:_0xd3bax10[_0x11c0[50]][_0x11c0[49]]}]})[_0x11c0[51]](_0xd3bax10[_0x11c0[50]][_0x11c0[49]],{attributes:[_0x11c0[107],_0x11c0[108],_0x11c0[94],_0x11c0[93],_0x11c0[44]]})[_0x11c0[22]](function(_0xd3bax19){if(!_0xd3bax19){return _0xd3bax11[_0x11c0[37]](404)};return _0xd3bax11[_0x11c0[20]](_0xd3bax19)})[_0x11c0[19]](function(_0xd3bax13){return handleError(_0xd3bax11,_0xd3bax13)})};exports[_0x11c0[110]]= function(_0xd3bax10,_0xd3bax11){var _0xd3bax2e;return sequelize[_0x11c0[115]](function(_0xd3bax2f){return CustomReport[_0x11c0[53]](_0x11c0[52])[_0x11c0[51]](_0xd3bax10[_0x11c0[50]][_0x11c0[49]])[_0x11c0[22]](function(_0xd3bax19){if(!_0xd3bax19){return _0xd3bax11[_0x11c0[37]](404)};var _0xd3bax30=_0xd3bax19[_0x11c0[45]];delete _0xd3bax30[_0x11c0[49]];delete _0xd3bax30[_0x11c0[111]];delete _0xd3bax30[_0x11c0[112]];_0xd3bax30[_0x11c0[93]]= _0xd3bax10[_0x11c0[113]][_0x11c0[93]];_0xd3bax2e= _[_0x11c0[114]](_0xd3bax30.Fields,_0x11c0[45]);return CustomReport[_0x11c0[101]](_0xd3bax30,{transaction:_0xd3bax2f})})[_0x11c0[22]](function(_0xd3bax19){return [_0xd3bax19,_0xd3bax2e]})[_0x11c0[34]](createFields(_0xd3bax2f))})[_0x11c0[22]](function(){return _0xd3bax11[_0x11c0[37]](201)})[_0x11c0[19]](function(_0xd3bax13){return handleError(_0xd3bax11,_0xd3bax13)})};exports[_0x11c0[101]]= function(_0xd3bax10,_0xd3bax11){var _0xd3bax17;return sequelize[_0x11c0[115]](function(_0xd3bax2f){return CustomReport[_0x11c0[101]](_0xd3bax10[_0x11c0[113]],{transaction:_0xd3bax2f})[_0x11c0[22]](function(_0xd3bax19){_0xd3bax17= _0xd3bax19;return [_0xd3bax17,_0xd3bax10[_0x11c0[113]][_0x11c0[116]]]})[_0x11c0[34]](createFields(_0xd3bax2f))})[_0x11c0[22]](function(){return _0xd3bax11[_0x11c0[21]](201)[_0x11c0[20]](_0xd3bax17)})[_0x11c0[19]](function(_0xd3bax13){return handleError(_0xd3bax11,_0xd3bax13)})};exports[_0x11c0[117]]= function(_0xd3bax10,_0xd3bax11){var _0xd3bax17;return sequelize[_0x11c0[115]](function(_0xd3bax2f){return CustomReport[_0x11c0[101]](_0xd3bax10[_0x11c0[113]],{transaction:_0xd3bax2f})[_0x11c0[22]](function(_0xd3bax19){_0xd3bax17= _0xd3bax19;return [_0xd3bax17,_0xd3bax10[_0x11c0[113]][_0x11c0[116]]]})[_0x11c0[34]](createImportFields(_0xd3bax2f))})[_0x11c0[22]](function(){return _0xd3bax11[_0x11c0[21]](201)[_0x11c0[20]](_0xd3bax17)})[_0x11c0[19]](function(_0xd3bax13){return handleError(_0xd3bax11,_0xd3bax13)})};exports[_0x11c0[118]]= function(_0xd3bax10,_0xd3bax11,_0xd3bax12){if(_0xd3bax10[_0x11c0[113]][_0x11c0[49]]){delete _0xd3bax10[_0x11c0[113]][_0x11c0[49]]};var _0xd3bax17;return sequelize[_0x11c0[115]](function(_0xd3bax2f){return CustomReport[_0x11c0[51]](_0xd3bax10[_0x11c0[50]][_0x11c0[49]])[_0x11c0[22]](function(_0xd3bax19){if(!_0xd3bax19){return _0xd3bax11[_0x11c0[37]](404)};var _0xd3bax31=_[_0x11c0[119]](_0xd3bax19,_0xd3bax10[_0x11c0[113]]);return _0xd3bax19[_0x11c0[120]]({transaction:_0xd3bax2f})})[_0x11c0[22]](function(_0xd3bax19){_0xd3bax17= _0xd3bax19;if(_0xd3bax10[_0x11c0[113]][_0x11c0[116]]){return ReportField[_0x11c0[79]]({where:{CustomReportId:_0xd3bax10[_0x11c0[50]][_0x11c0[49]]},transaction:_0xd3bax2f})}})[_0x11c0[22]](function(){return [_0xd3bax17,_0xd3bax10[_0x11c0[113]][_0x11c0[116]]]})[_0x11c0[34]](createFields(_0xd3bax2f))})[_0x11c0[22]](function(){return _0xd3bax11[_0x11c0[37]](200)})[_0x11c0[19]](function(_0xd3bax13){return handleError(_0xd3bax11,_0xd3bax13)})};function createFields(_0xd3bax2f){return function(_0xd3bax19,_0xd3bax33){if(_0xd3bax33&& Array[_0x11c0[55]](_0xd3bax33)&& _0xd3bax33[_0x11c0[56]]){var _0xd3bax34=reportBuildUtils[_0x11c0[121]](_0xd3bax19[_0x11c0[44]]);if(_0xd3bax34){var _0xd3bax35;return _0xd3bax34[_0x11c0[134]]()[_0x11c0[22]](function(_0xd3bax3a){_0xd3bax35= _[_0x11c0[132]](_0xd3bax3a);return Metric[_0x11c0[133]]()})[_0x11c0[22]](function(_0xd3bax36){var _0xd3bax37=[];_0xd3bax36= _[_0x11c0[114]](_0xd3bax36,_0x11c0[45]);_0xd3bax33[_0x11c0[64]](function(_0xd3bax38){_0xd3bax38[_0x11c0[122]]= _0xd3bax19[_0x11c0[49]];if(_0xd3bax38[_0x11c0[123]]){var _0xd3bax39=_[_0x11c0[77]](_0xd3bax36,{id:_0xd3bax38[_0x11c0[123]]});if(_0xd3bax39){_0xd3bax38[_0x11c0[124]]= _0xd3bax39[_0x11c0[125]];_0xd3bax37[_0x11c0[80]](ReportField[_0x11c0[101]](_0xd3bax38,{transaction:_0xd3bax2f}))}else {throw new sequelize.Error(_0x11c0[126]+ _0xd3bax38[_0x11c0[123]]+ _0x11c0[127])}}else {if(_[_0x11c0[128]](_0xd3bax35,_0xd3bax38[_0x11c0[124]])|| _0xd3bax38[_0x11c0[129]]){_0xd3bax37[_0x11c0[80]](ReportField[_0x11c0[101]](_0xd3bax38,{transaction:_0xd3bax2f}))}else {throw new sequelize.Error(_0x11c0[130]+ _0xd3bax38[_0x11c0[124]]+ _0x11c0[131])}}});return _0xd3bax37})[_0x11c0[32]]()}else {throw new sequelize.Error(_0x11c0[135])}}}}function createImportFields(_0xd3bax2f){return function(_0xd3bax19,_0xd3bax33){if(_0xd3bax33&& Array[_0x11c0[55]](_0xd3bax33)&& _0xd3bax33[_0x11c0[56]]){var _0xd3bax34=reportBuildUtils[_0x11c0[121]](_0xd3bax19[_0x11c0[44]]);if(_0xd3bax34){var _0xd3bax35;return _0xd3bax34[_0x11c0[134]]()[_0x11c0[22]](function(_0xd3bax3a){_0xd3bax35= _[_0x11c0[132]](_0xd3bax3a);var _0xd3bax37=[];var _0xd3bax3c;if(_[_0x11c0[138]](_0xd3bax33,function(_0xd3bax38){return _[_0x11c0[137]](_0xd3bax38,_0x11c0[136])})){_0xd3bax3c= _0x11c0[139]}else {if(_[_0x11c0[138]](_0xd3bax33,function(_0xd3bax38){return _[_0x11c0[137]](_0xd3bax38,_0x11c0[123])})){_0xd3bax3c= _0x11c0[7]}else {throw new sequelize.Error(_0x11c0[140])}};var _0xd3bax3d=_[_0x11c0[142]](_0xd3bax33,_0xd3bax3c+ _0x11c0[141]);_[_0x11c0[63]](_0xd3bax3d,function(_0xd3bax3e,_0xd3bax1e){if(_0xd3bax1e!== _0x11c0[143]&& _0xd3bax1e!== _0x11c0[144]){_0xd3bax3e[0][_0xd3bax3c][_0x11c0[145]][_0x11c0[64]](function(_0xd3bax38){_0xd3bax38[_0x11c0[122]]= _0xd3bax19[_0x11c0[49]]});_0xd3bax3e[0][_0xd3bax3c][_0x11c0[94]]+= _0x11c0[146]+ sr({length:5});_0xd3bax37[_0x11c0[80]](Metric[_0x11c0[101]](_0xd3bax3e[0][_0xd3bax3c],{include:[{model:ReportField,as:_0x11c0[145]}],transaction:_0xd3bax2f}))}else {_0xd3bax3e[_0x11c0[64]](function(_0xd3bax38){if(_[_0x11c0[128]](_0xd3bax35,_0xd3bax38[_0x11c0[124]])|| _0xd3bax38[_0x11c0[129]]){_0xd3bax38[_0x11c0[122]]= _0xd3bax19[_0x11c0[49]];_0xd3bax37[_0x11c0[80]](ReportField[_0x11c0[101]](_0xd3bax38,{transaction:_0xd3bax2f}))}else {throw new sequelize.Error(_0x11c0[130]+ _0xd3bax38[_0x11c0[124]]+ _0x11c0[131])}})}});return _0xd3bax37})[_0x11c0[32]]()}else {throw new sequelize.Error(_0x11c0[135])}}}}exports[_0x11c0[79]]= function(_0xd3bax10,_0xd3bax11){return CustomReport[_0x11c0[51]](_0xd3bax10[_0x11c0[50]][_0x11c0[49]])[_0x11c0[22]](function(_0xd3bax19){if(!_0xd3bax19){return _0xd3bax11[_0x11c0[37]](404)};return _0xd3bax19[_0x11c0[79]]()})[_0x11c0[22]](function(){return _0xd3bax11[_0x11c0[37]](204)})[_0x11c0[19]](function(_0xd3bax13){return handleError(_0xd3bax11,_0xd3bax13)})};exports[_0x11c0[147]]= function(_0xd3bax10,_0xd3bax11){return CustomReport[_0x11c0[79]]({where:{id:_0xd3bax10[_0x11c0[23]][_0x11c0[148]]},individualHooks:true})[_0x11c0[22]](function(){return _0xd3bax11[_0x11c0[37]](204)})[_0x11c0[19]](function(_0xd3bax13){return handleError(_0xd3bax11,_0xd3bax13)})};function handleError(_0xd3bax11,_0xd3bax13){logger[_0x11c0[29]](_0xd3bax13[_0x11c0[28]]);return _0xd3bax11[_0x11c0[21]](500)[_0x11c0[20]](_0xd3bax13)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/custom_report/custom_report.events.js b/server/api/custom_report/custom_report.events.js index 85132de..66dc905 100644 --- a/server/api/custom_report/custom_report.events.js +++ b/server/api/custom_report/custom_report.events.js @@ -1 +1 @@ -var _0xeb91=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xeb91[0];const EventEmitter=require(_0xeb91[1]);const CustomReport=require(_0xeb91[3])[_0xeb91[2]];var CustomReportEvents= new EventEmitter();CustomReportEvents[_0xeb91[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xeb91[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xeb91[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xeb91[6]};for(var e in events){var event=events[e];CustomReport[_0xeb91[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xf53fx8,_0xf53fx9,_0xf53fxa){CustomReportEvents[_0xeb91[10]](event+ _0xeb91[8]+ _0xf53fx8[_0xeb91[9]],_0xf53fx8);CustomReportEvents[_0xeb91[10]](event,_0xf53fx8);_0xf53fxa(null)}}module[_0xeb91[11]]= CustomReportEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/custom_report/custom_report.socket.js b/server/api/custom_report/custom_report.socket.js index 1b13fa2..66dc905 100644 --- a/server/api/custom_report/custom_report.socket.js +++ b/server/api/custom_report/custom_report.socket.js @@ -1 +1 @@ -var _0x710e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x63\x75\x73\x74\x6F\x6D\x5F\x72\x65\x70\x6F\x72\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x75\x73\x74\x6F\x6D\x5F\x72\x65\x70\x6F\x72\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x710e[0];const CustomReportEvents=require(_0x710e[1]);var events=[_0x710e[2],_0x710e[3]];exports[_0x710e[4]]= function(_0xd7b1x3){for(var _0xd7b1x4=0,_0xd7b1x5=events[_0x710e[5]];_0xd7b1x4< _0xd7b1x5;_0xd7b1x4++){var _0xd7b1x6=events[_0xd7b1x4];var _0xd7b1x7=createListener(_0x710e[6]+ _0xd7b1x6,_0xd7b1x3);CustomReportEvents[_0x710e[7]](_0xd7b1x6,_0xd7b1x7);_0xd7b1x3[_0x710e[7]](_0x710e[8],removeListener(_0xd7b1x6,_0xd7b1x7))}};function createListener(_0xd7b1x6,_0xd7b1x3){return function(_0xd7b1x9){_0xd7b1x3[_0x710e[9]](_0xd7b1x6,_0xd7b1x9)}}function removeListener(_0xd7b1x6,_0xd7b1x7){return function(){CustomReportEvents[_0x710e[10]](_0xd7b1x6,_0xd7b1x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/custom_report/index.js b/server/api/custom_report/index.js index a888ae5..66dc905 100644 --- a/server/api/custom_report/index.js +++ b/server/api/custom_report/index.js @@ -1 +1 @@ -var _0xcf4a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x63\x75\x73\x74\x6F\x6D\x5F\x72\x65\x70\x6F\x72\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64\x2F\x70\x72\x65\x76\x69\x65\x77","\x70\x72\x65\x76\x69\x65\x77","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x71\x75\x65\x72\x79","\x67\x65\x74\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x72\x79","\x2F\x3A\x69\x64\x2F\x65\x78\x70\x6F\x72\x74","\x65\x78\x70\x6F\x72\x74","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x2F\x3A\x69\x64\x2F\x65\x78\x74\x72\x61\x63\x74\x2F\x70\x64\x66","\x65\x78\x74\x72\x61\x63\x74\x50\x64\x66","\x2F\x3A\x69\x64\x2F\x65\x78\x74\x72\x61\x63\x74\x2F\x63\x73\x76","\x65\x78\x74\x72\x61\x63\x74\x43\x73\x76","\x2F\x69\x6D\x70\x6F\x72\x74","\x69\x6D\x70\x6F\x72\x74","\x2F\x3A\x69\x64\x2F\x63\x6F\x70\x79","\x63\x6F\x70\x79","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x2F\x6E\x6F\x64\x65\x2F\x3A\x69\x64","\x64\x65\x73\x74\x72\x6F\x79\x4E\x6F\x64\x65\x52\x65\x70\x6F\x72\x74\x73","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0xcf4a[0];var express=require(_0xcf4a[1]);var controller=require(_0xcf4a[2]);var auth=require(_0xcf4a[3]);var router=express.Router();router[_0xcf4a[9]](_0xcf4a[4],auth[_0xcf4a[5]](),auth[_0xcf4a[7]]([17],[_0xcf4a[6]]),controller[_0xcf4a[8]]);router[_0xcf4a[9]](_0xcf4a[10],auth[_0xcf4a[5]](),auth[_0xcf4a[7]]([17],[_0xcf4a[6]]),controller[_0xcf4a[11]]);router[_0xcf4a[9]](_0xcf4a[12],auth[_0xcf4a[5]](),auth[_0xcf4a[7]]([17],[_0xcf4a[6]]),controller[_0xcf4a[13]]);router[_0xcf4a[9]](_0xcf4a[14],auth[_0xcf4a[5]](),auth[_0xcf4a[7]]([17],[_0xcf4a[6]]),controller[_0xcf4a[15]]);router[_0xcf4a[9]](_0xcf4a[16],auth[_0xcf4a[5]](),auth[_0xcf4a[7]]([17],[_0xcf4a[6]]),controller[_0xcf4a[17]]);router[_0xcf4a[19]](_0xcf4a[4],auth[_0xcf4a[5]](),auth[_0xcf4a[7]]([17],[_0xcf4a[6]]),controller[_0xcf4a[18]]);router[_0xcf4a[9]](_0xcf4a[20],auth[_0xcf4a[5]](),auth[_0xcf4a[7]]([17],[_0xcf4a[6]]),controller[_0xcf4a[21]]);router[_0xcf4a[9]](_0xcf4a[22],auth[_0xcf4a[5]](),auth[_0xcf4a[7]]([17],[_0xcf4a[6]]),controller[_0xcf4a[23]]);router[_0xcf4a[19]](_0xcf4a[24],auth[_0xcf4a[5]](),auth[_0xcf4a[7]]([17],[_0xcf4a[6]]),controller[_0xcf4a[25]]);router[_0xcf4a[19]](_0xcf4a[26],auth[_0xcf4a[5]](),auth[_0xcf4a[7]]([17],[_0xcf4a[6]]),controller[_0xcf4a[27]]);router[_0xcf4a[29]](_0xcf4a[12],auth[_0xcf4a[5]](),auth[_0xcf4a[7]]([17],[_0xcf4a[6]]),controller[_0xcf4a[28]]);router[_0xcf4a[31]](_0xcf4a[4],auth[_0xcf4a[5]](),auth[_0xcf4a[7]]([17],[_0xcf4a[6]]),controller[_0xcf4a[30]]);router[_0xcf4a[31]](_0xcf4a[32],auth[_0xcf4a[5]](),auth[_0xcf4a[7]]([17],[_0xcf4a[6]]),controller[_0xcf4a[33]]);router[_0xcf4a[31]](_0xcf4a[12],auth[_0xcf4a[5]](),auth[_0xcf4a[7]]([17],[_0xcf4a[6]]),controller[_0xcf4a[34]]);module[_0xcf4a[35]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/dashboard/dashboard.controller.js b/server/api/dashboard/dashboard.controller.js index 145c0b9..66dc905 100644 --- a/server/api/dashboard/dashboard.controller.js +++ b/server/api/dashboard/dashboard.controller.js @@ -1 +1 @@ -var _0x6159=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x44\x61\x73\x68\x62\x6F\x61\x72\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x67\x65\x74\x43\x75\x73\x74\x6F\x6D\x44\x61\x73\x68\x62\x6F\x61\x72\x64\x56\x61\x6C\x75\x65\x73","\x63\x75\x73\x74\x6F\x6D\x44\x61\x73\x68\x62\x6F\x61\x72\x64\x56\x61\x6C\x75\x65\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x75\x73\x65\x72","\x61\x6D\x69","\x6C\x6F\x63\x61\x6C\x73","\x61\x70\x70","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x6E\x69\x74","\x61\x76\x67\x44\x75\x72\x61\x74\x69\x6F\x6E","\x6F\x75\x74\x62\x6F\x75\x6E\x64","\x61\x6E\x73\x77\x65\x72\x52\x61\x74\x65","\x61\x6E\x73\x77\x65\x72\x65\x64","\x67\x6C\x6F\x62\x61\x6C\x44\x75\x72\x61\x74\x69\x6F\x6E","\x53\x45\x4C\x45\x43\x54\x20\x41\x56\x47\x28\x64\x75\x72\x61\x74\x69\x6F\x6E\x29\x20\x61\x73\x20\x61\x76\x67\x44\x75\x72\x61\x74\x69\x6F\x6E\x20\x0A\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x20\x0A\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x74\x79\x70\x65\x3D\x22\x6F\x75\x74\x62\x6F\x75\x6E\x64\x22","\x53\x45\x4C\x45\x43\x54","\x51\x75\x65\x72\x79\x54\x79\x70\x65\x73","\x6D\x61\x6E\x75\x61\x6C\x4F\x75\x74\x62\x6F\x75\x6E\x64","\x53\x45\x4C\x45\x43\x54\x20\x53\x55\x4D\x28\x64\x75\x72\x61\x74\x69\x6F\x6E\x29\x20\x61\x73\x20\x67\x6C\x6F\x62\x61\x6C\x44\x75\x72\x61\x74\x69\x6F\x6E\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x74\x79\x70\x65\x20\x3D\x20\x27\x6F\x75\x74\x62\x6F\x75\x6E\x64\x27\x3B","\x53\x45\x4C\x45\x43\x54\x20\x63\x6F\x75\x6E\x74\x28\x2A\x29\x20\x61\x73\x20\x6D\x61\x6E\x75\x61\x6C\x4F\x75\x74\x62\x6F\x75\x6E\x64\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x74\x79\x70\x65\x20\x3D\x20\x27\x6F\x75\x74\x62\x6F\x75\x6E\x64\x27\x3B","\x71\x75\x65\x75\x65","\x71\x75\x65\x75\x65\x73","\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64","\x66\x6F\x72\x45\x61\x63\x68","\x53\x45\x4C\x45\x43\x54\x20\x63\x6F\x75\x6E\x74\x28\x2A\x29\x20\x61\x73\x20\x61\x6E\x73\x77\x65\x72\x65\x64\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x20\x3D\x20\x27\x41\x4E\x53\x57\x45\x52\x27\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x41\x4E\x44\x20\x74\x79\x70\x65\x20\x3D\x20\x27\x6F\x75\x74\x62\x6F\x75\x6E\x64\x27\x3B","\x74\x61\x6C\x6B\x74\x69\x6D\x65","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x2C\x20\x63\x6F\x75\x6E\x74\x28\x2A\x29\x20\x61\x73\x20\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x65\x78\x69\x74\x20\x3D\x20\x31\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x71\x75\x65\x75\x65\x3B","\x68\x6F\x6C\x64\x74\x69\x6D\x65","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x2C\x20\x63\x6F\x75\x6E\x74\x28\x2A\x29\x20\x61\x73\x20\x63\x61\x6C\x6C\x73\x2C\x20\x53\x55\x4D\x28\x74\x61\x6C\x6B\x74\x69\x6D\x65\x29\x20\x61\x73\x20\x74\x61\x6C\x6B\x74\x69\x6D\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x20\x3D\x20\x31\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x71\x75\x65\x75\x65\x3B","\x63\x6F\x6D\x70\x6C\x65\x74\x65","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x2C\x20\x63\x6F\x75\x6E\x74\x28\x2A\x29\x20\x61\x73\x20\x63\x61\x6C\x6C\x73\x2C\x20\x53\x55\x4D\x28\x68\x6F\x6C\x64\x74\x69\x6D\x65\x29\x20\x61\x73\x20\x68\x6F\x6C\x64\x74\x69\x6D\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x20\x3D\x20\x31\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x71\x75\x65\x75\x65\x3B","\x61\x62\x61\x6E\x64\x6F\x6E","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x2C\x20\x63\x6F\x75\x6E\x74\x28\x2A\x29\x20\x61\x73\x20\x63\x6F\x6D\x70\x6C\x65\x74\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x20\x3D\x20\x31\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x71\x75\x65\x75\x65\x3B","\x61\x63\x74\x69\x76\x65","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x2C\x20\x63\x6F\x75\x6E\x74\x28\x2A\x29\x20\x61\x73\x20\x61\x62\x61\x6E\x64\x6F\x6E\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x20\x3D\x20\x31\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x71\x75\x65\x75\x65\x3B","\x77\x61\x69\x74\x69\x6E\x67","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x2C\x20\x63\x6F\x75\x6E\x74\x28\x2A\x29\x20\x61\x73\x20\x61\x63\x74\x69\x76\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x65\x78\x69\x74\x20\x3D\x20\x30\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x41\x4E\x44\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x20\x3D\x20\x30\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x41\x4E\x44\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x20\x3D\x20\x30\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x41\x4E\x44\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6C\x65\x61\x76\x65\x41\x74\x20\x49\x53\x20\x4E\x4F\x54\x20\x4E\x55\x4C\x4C\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x71\x75\x65\x75\x65\x3B","\x6E\x61\x6D\x65","\x6B\x65\x79\x42\x79","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x2C\x20\x63\x6F\x75\x6E\x74\x28\x2A\x29\x20\x61\x73\x20\x77\x61\x69\x74\x69\x6E\x67\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6C\x65\x61\x76\x65\x41\x74\x20\x49\x53\x20\x4E\x55\x4C\x4C\x20\x61\x6E\x64\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x65\x78\x69\x74\x20\x3D\x20\x66\x61\x6C\x73\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x71\x75\x65\x75\x65\x3B","\x66\x69\x6E\x64\x41\x6C\x6C","\x61\x6C\x6C","\x73\x68\x6F\x77","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x63\x6C\x6F\x6E\x65","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x65\x64\x69\x74\x61\x62\x6C\x65","\x64\x65\x66\x61\x75\x6C\x74\x45\x6E\x74\x72\x79","\x6D\x6F\x64\x65\x6C","\x70\x61\x72\x73\x65","\x74\x69\x74\x6C\x65","\x5F\x63\x6F\x70\x79\x5F","\x67\x65\x74\x55\x54\x43\x4D\x69\x6C\x6C\x69\x73\x65\x63\x6F\x6E\x64\x73","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0x6159[0];var _=require(_0x6159[1]);var util=require(_0x6159[2]);var Util=require(_0x6159[3]);var logger=require(_0x6159[5])(_0x6159[4]);var Dashboard=require(_0x6159[7])[_0x6159[6]];var VoiceQueue=require(_0x6159[7])[_0x6159[8]];var sequelize=require(_0x6159[7])[_0x6159[9]];exports[_0x6159[10]]= function(_0x3e30x8,_0x3e30x9,_0x3e30xa){return Dashboard[_0x6159[17]](Util[_0x6159[16]](_0x3e30x8[_0x6159[15]]))[_0x6159[14]](function(_0x3e30xc){_0x3e30x9[_0x6159[13]](200)[_0x6159[12]](_0x3e30xc)})[_0x6159[11]](function(_0x3e30xb){return handleError(_0x3e30x9,_0x3e30xb)})};exports[_0x6159[18]]= function(_0x3e30x8,_0x3e30x9,_0x3e30xa){_0x3e30x8[_0x6159[25]][_0x6159[24]][_0x6159[23]][_0x6159[12]]({message:_0x6159[19],id:_0x3e30x8[_0x6159[21]][_0x6159[20]],user:_0x3e30x8[_0x6159[22]]});return _0x3e30x9[_0x6159[26]](201)};exports[_0x6159[27]]= function(_0x3e30x8,_0x3e30x9,_0x3e30xa){var _0x3e30xd={queues:{},outbound:{}};return VoiceQueue[_0x6159[59]]({attributes:[_0x6159[56]],raw:true})[_0x6159[14]](function(_0x3e30xe){_0x3e30xd[_0x6159[40]]= _[_0x6159[57]](_0x3e30xe,_0x6159[56]);return sequelize[_0x6159[15]](_0x6159[58],{type:sequelize[_0x6159[35]][_0x6159[34]]})})[_0x6159[14]](function(_0x3e30xe){_0x3e30xe[_0x6159[42]](function(_0x3e30xf){if(_0x3e30xd[_0x6159[40]][_0x3e30xf[_0x6159[39]]]){_0x3e30xd[_0x6159[40]][_0x3e30xf[_0x6159[39]]][_0x6159[54]]= _0x3e30xf[_0x6159[54]]}});return sequelize[_0x6159[15]](_0x6159[55],{type:sequelize[_0x6159[35]][_0x6159[34]]})})[_0x6159[14]](function(_0x3e30xe){_0x3e30xe[_0x6159[42]](function(_0x3e30xf){if(_0x3e30xd[_0x6159[40]][_0x3e30xf[_0x6159[39]]]){_0x3e30xd[_0x6159[40]][_0x3e30xf[_0x6159[39]]][_0x6159[52]]= _0x3e30xf[_0x6159[52]]}});return sequelize[_0x6159[15]](_0x6159[53],{type:sequelize[_0x6159[35]][_0x6159[34]]})})[_0x6159[14]](function(_0x3e30xe){_0x3e30xe[_0x6159[42]](function(_0x3e30xf){if(_0x3e30xd[_0x6159[40]][_0x3e30xf[_0x6159[39]]]){_0x3e30xd[_0x6159[40]][_0x3e30xf[_0x6159[39]]][_0x6159[50]]= _0x3e30xf[_0x6159[50]]}});return sequelize[_0x6159[15]](_0x6159[51],{type:sequelize[_0x6159[35]][_0x6159[34]]})})[_0x6159[14]](function(_0x3e30xe){_0x3e30xe[_0x6159[42]](function(_0x3e30xf){if(_0x3e30xd[_0x6159[40]][_0x3e30xf[_0x6159[39]]]){_0x3e30xd[_0x6159[40]][_0x3e30xf[_0x6159[39]]][_0x6159[48]]= _0x3e30xf[_0x6159[48]]}});return sequelize[_0x6159[15]](_0x6159[49],{type:sequelize[_0x6159[35]][_0x6159[34]]})})[_0x6159[14]](function(_0x3e30xe){_0x3e30xe[_0x6159[42]](function(_0x3e30xf){if(_0x3e30xd[_0x6159[40]][_0x3e30xf[_0x6159[39]]]){_0x3e30xd[_0x6159[40]][_0x3e30xf[_0x6159[39]]][_0x6159[46]]= _0x3e30xf[_0x6159[46]]}});return sequelize[_0x6159[15]](_0x6159[47],{type:sequelize[_0x6159[35]][_0x6159[34]]})})[_0x6159[14]](function(_0x3e30xe){_0x3e30xe[_0x6159[42]](function(_0x3e30xf){if(_0x3e30xd[_0x6159[40]][_0x3e30xf[_0x6159[39]]]){_0x3e30xd[_0x6159[40]][_0x3e30xf[_0x6159[39]]][_0x6159[44]]= _0x3e30xf[_0x6159[44]]}});return sequelize[_0x6159[15]](_0x6159[45],{type:sequelize[_0x6159[35]][_0x6159[34]]})})[_0x6159[14]](function(_0x3e30xe){_0x3e30xe[_0x6159[42]](function(_0x3e30xf){if(_0x3e30xd[_0x6159[40]][_0x3e30xf[_0x6159[39]]]){_0x3e30xd[_0x6159[40]][_0x3e30xf[_0x6159[39]]][_0x6159[41]]= _0x3e30xf[_0x6159[41]]}});return sequelize[_0x6159[15]](_0x6159[43],{type:sequelize[_0x6159[35]][_0x6159[34]]})})[_0x6159[14]](function(_0x3e30xe){_0x3e30xd[_0x6159[29]][_0x6159[31]]= _0x3e30xe[0][_0x6159[31]];return sequelize[_0x6159[15]](_0x6159[38],{type:sequelize[_0x6159[35]][_0x6159[34]]})})[_0x6159[14]](function(_0x3e30xe){_0x3e30xd[_0x6159[29]][_0x6159[36]]= _0x3e30xe[0][_0x6159[36]];return sequelize[_0x6159[15]](_0x6159[37],{type:sequelize[_0x6159[35]][_0x6159[34]]})})[_0x6159[14]](function(_0x3e30xe){_0x3e30xd[_0x6159[29]][_0x6159[32]]= _0x3e30xe[0][_0x6159[32]]|| 0;return sequelize[_0x6159[15]](_0x6159[33],{type:sequelize[_0x6159[35]][_0x6159[34]]})})[_0x6159[14]](function(_0x3e30xe){_0x3e30xd[_0x6159[29]][_0x6159[28]]= _0x3e30xe[0][_0x6159[28]]|| 0;_0x3e30xd[_0x6159[29]][_0x6159[30]]= _0x3e30xd[_0x6159[29]][_0x6159[28]]?((_0x3e30xd[_0x6159[29]][_0x6159[31]]/ _0x3e30xd[_0x6159[29]][_0x6159[32]])* 100):0;return _0x3e30x9[_0x6159[13]](200)[_0x6159[12]](_0x3e30xd)})[_0x6159[11]](function(_0x3e30xb){return handleError(_0x3e30x9,_0x3e30xb)})};exports[_0x6159[60]]= function(_0x3e30x8,_0x3e30x9){return Dashboard[_0x6159[59]]()[_0x6159[14]](function(_0x3e30x10){if(!_0x3e30x10){return _0x3e30x9[_0x6159[26]](404)};return _0x3e30x9[_0x6159[13]](200)[_0x6159[12]](_0x3e30x10)})[_0x6159[11]](function(_0x3e30xb){return handleError(_0x3e30x9,_0x3e30xb)})};exports[_0x6159[61]]= function(_0x3e30x8,_0x3e30x9){return Dashboard[_0x6159[62]](_0x3e30x8[_0x6159[21]][_0x6159[20]])[_0x6159[14]](function(_0x3e30x11){if(!_0x3e30x11){return _0x3e30x9[_0x6159[26]](404)};return _0x3e30x9[_0x6159[12]](_0x3e30x11)})[_0x6159[11]](function(_0x3e30xb){return handleError(_0x3e30x9,_0x3e30xb)})};exports[_0x6159[63]]= function(_0x3e30x8,_0x3e30x9){return Dashboard[_0x6159[63]](_0x3e30x8[_0x6159[64]])[_0x6159[14]](function(_0x3e30x11){return _0x3e30x9[_0x6159[13]](201)[_0x6159[12]](_0x3e30x11)})[_0x6159[11]](function(_0x3e30xb){return handleError(_0x3e30x9,_0x3e30xb)})};exports[_0x6159[65]]= function(_0x3e30x8,_0x3e30x9){return Dashboard[_0x6159[62]](_0x3e30x8[_0x6159[21]][_0x6159[20]])[_0x6159[14]](function(_0x3e30x11){var _0x3e30x12=_0x3e30x11[_0x6159[66]];delete _0x3e30x12[_0x6159[20]];_0x3e30x12[_0x6159[67]]= true;_0x3e30x12[_0x6159[68]]= false;var _0x3e30x13=JSON[_0x6159[70]](_0x3e30x12[_0x6159[69]]);if(_0x3e30x8[_0x6159[64]][_0x6159[56]]){_0x3e30x12[_0x6159[56]]= _0x3e30x8[_0x6159[64]][_0x6159[56]];_0x3e30x13[_0x6159[71]]= _0x3e30x8[_0x6159[64]][_0x6159[56]]}else {_0x3e30x12[_0x6159[56]]= _0x3e30x13[_0x6159[71]]= _0x3e30x12[_0x6159[56]]+ _0x6159[72]+ new Date()[_0x6159[73]]()};_0x3e30x12[_0x6159[69]]= JSON[_0x6159[74]](_0x3e30x13);return Dashboard[_0x6159[63]](_0x3e30x12)})[_0x6159[14]](function(_0x3e30x11){return _0x3e30x9[_0x6159[13]](201)[_0x6159[12]](_0x3e30x11)})[_0x6159[11]](function(_0x3e30xb){return handleError(_0x3e30x9,_0x3e30xb)})};exports[_0x6159[75]]= function(_0x3e30x8,_0x3e30x9){if(_0x3e30x8[_0x6159[64]][_0x6159[20]]){delete _0x3e30x8[_0x6159[64]][_0x6159[20]]};return Dashboard[_0x6159[62]](_0x3e30x8[_0x6159[21]][_0x6159[20]])[_0x6159[14]](function(_0x3e30x11){if(!_0x3e30x11){return _0x3e30x9[_0x6159[26]](404)};if(_0x3e30x8[_0x6159[64]][_0x6159[56]]){var _0x3e30x13=JSON[_0x6159[70]](_0x3e30x11[_0x6159[69]]);_0x3e30x13[_0x6159[71]]= _0x3e30x8[_0x6159[64]][_0x6159[56]];_0x3e30x11[_0x6159[69]]= JSON[_0x6159[74]](_0x3e30x13)};var _0x3e30x14=_[_0x6159[76]](_0x3e30x11,_0x3e30x8[_0x6159[64]]);return _0x3e30x14[_0x6159[77]]()})[_0x6159[14]](function(_0x3e30x11){return _0x3e30x9[_0x6159[13]](200)[_0x6159[12]](_0x3e30x11)})[_0x6159[11]](function(_0x3e30xb){return handleError(_0x3e30x9,_0x3e30xb)})};exports[_0x6159[78]]= function(_0x3e30x8,_0x3e30x9){return Dashboard[_0x6159[62]](_0x3e30x8[_0x6159[21]][_0x6159[20]])[_0x6159[14]](function(_0x3e30x11){if(!_0x3e30x11){return _0x3e30x9[_0x6159[26]](404)};return _0x3e30x11[_0x6159[78]]()})[_0x6159[14]](function(){return _0x3e30x9[_0x6159[26]](204)})[_0x6159[11]](function(_0x3e30xb){return handleError(_0x3e30x9,_0x3e30xb)})};exports[_0x6159[79]]= function(_0x3e30x8,_0x3e30x9){return Dashboard[_0x6159[78]]({where:{id:_0x3e30x8[_0x6159[15]][_0x6159[80]]},individualHooks:true})[_0x6159[14]](function(){return _0x3e30x9[_0x6159[26]](204)})[_0x6159[11]](function(_0x3e30xb){return handleError(_0x3e30x9,_0x3e30xb)})};function handleError(_0x3e30x9,_0x3e30xb){logger[_0x6159[82]](_0x3e30xb[_0x6159[81]]);return _0x3e30x9[_0x6159[13]](500)[_0x6159[12]](_0x3e30xb)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/dashboard/dashboard.events.js b/server/api/dashboard/dashboard.events.js index 889601e..66dc905 100644 --- a/server/api/dashboard/dashboard.events.js +++ b/server/api/dashboard/dashboard.events.js @@ -1 +1 @@ -var _0xb891=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x44\x61\x73\x68\x62\x6F\x61\x72\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xb891[0];const EventEmitter=require(_0xb891[1]);const Dashboard=require(_0xb891[3])[_0xb891[2]];var DashboardEvents= new EventEmitter();DashboardEvents[_0xb891[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xb891[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xb891[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xb891[6]};for(var e in events){var event=events[e];Dashboard[_0xb891[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x9014x8,_0x9014x9,_0x9014xa){DashboardEvents[_0xb891[10]](event+ _0xb891[8]+ _0x9014x8[_0xb891[9]],_0x9014x8);DashboardEvents[_0xb891[10]](event,_0x9014x8);_0x9014xa(null)}}module[_0xb891[11]]= DashboardEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/dashboard/dashboard.socket.js b/server/api/dashboard/dashboard.socket.js index 96f2f21..66dc905 100644 --- a/server/api/dashboard/dashboard.socket.js +++ b/server/api/dashboard/dashboard.socket.js @@ -1 +1 @@ -var _0x93fd=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x93fd[0];const DashboardEvents=require(_0x93fd[1]);var events=[_0x93fd[2],_0x93fd[3]];exports[_0x93fd[4]]= function(_0x74cbx3){for(var _0x74cbx4=0,_0x74cbx5=events[_0x93fd[5]];_0x74cbx4< _0x74cbx5;_0x74cbx4++){var _0x74cbx6=events[_0x74cbx4];var _0x74cbx7=createListener(_0x93fd[6]+ _0x74cbx6,_0x74cbx3);DashboardEvents[_0x93fd[7]](_0x74cbx6,_0x74cbx7);_0x74cbx3[_0x93fd[7]](_0x93fd[8],removeListener(_0x74cbx6,_0x74cbx7))}};function createListener(_0x74cbx6,_0x74cbx3){return function(_0x74cbx9){_0x74cbx3[_0x93fd[9]](_0x74cbx6,_0x74cbx9)}}function removeListener(_0x74cbx6,_0x74cbx7){return function(){DashboardEvents[_0x93fd[10]](_0x74cbx6,_0x74cbx7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/dashboard/index.js b/server/api/dashboard/index.js index 9f59d57..66dc905 100644 --- a/server/api/dashboard/index.js +++ b/server/api/dashboard/index.js @@ -1 +1 @@ -var _0x5ca6=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x61\x6C\x6C","\x61\x6C\x6C","\x2F\x76\x6F\x69\x63\x65\x2F\x69\x6E\x69\x74","\x69\x6E\x69\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x76\x61\x6C\x75\x65\x73","\x67\x65\x74\x43\x75\x73\x74\x6F\x6D\x44\x61\x73\x68\x62\x6F\x61\x72\x64\x56\x61\x6C\x75\x65\x73","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x2F\x3A\x69\x64\x2F\x63\x6C\x6F\x6E\x65","\x63\x6C\x6F\x6E\x65","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x5ca6[0];var express=require(_0x5ca6[1]);var controller=require(_0x5ca6[2]);var auth=require(_0x5ca6[3]);var router=express.Router();router[_0x5ca6[10]](_0x5ca6[4],auth[_0x5ca6[5]](),auth[_0x5ca6[8]]([2],[_0x5ca6[6],_0x5ca6[7]]),controller[_0x5ca6[9]]);router[_0x5ca6[10]](_0x5ca6[11],auth[_0x5ca6[5]](),auth[_0x5ca6[8]]([2],[_0x5ca6[6]]),controller[_0x5ca6[12]]);router[_0x5ca6[10]](_0x5ca6[13],auth[_0x5ca6[5]](),auth[_0x5ca6[8]]([2],[_0x5ca6[6],_0x5ca6[7]]),controller[_0x5ca6[14]]);router[_0x5ca6[10]](_0x5ca6[15],auth[_0x5ca6[5]](),auth[_0x5ca6[8]]([2],[_0x5ca6[6],_0x5ca6[7]]),controller[_0x5ca6[16]]);router[_0x5ca6[10]](_0x5ca6[17],auth[_0x5ca6[5]](),auth[_0x5ca6[8]]([2],[_0x5ca6[6],_0x5ca6[7]]),controller[_0x5ca6[18]]);router[_0x5ca6[20]](_0x5ca6[4],auth[_0x5ca6[5]](),auth[_0x5ca6[8]]([2],[_0x5ca6[6]]),controller[_0x5ca6[19]]);router[_0x5ca6[20]](_0x5ca6[21],auth[_0x5ca6[5]](),auth[_0x5ca6[8]]([2],[_0x5ca6[6]]),controller[_0x5ca6[22]]);router[_0x5ca6[24]](_0x5ca6[15],auth[_0x5ca6[5]](),auth[_0x5ca6[8]]([2],[_0x5ca6[6]]),controller[_0x5ca6[23]]);router[_0x5ca6[26]](_0x5ca6[4],auth[_0x5ca6[5]](),auth[_0x5ca6[8]]([2],[_0x5ca6[6]]),controller[_0x5ca6[25]]);router[_0x5ca6[26]](_0x5ca6[15],auth[_0x5ca6[5]](),auth[_0x5ca6[8]]([2],[_0x5ca6[6]]),controller[_0x5ca6[27]]);module[_0x5ca6[28]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/default_metric/default_metric.controller.js b/server/api/default_metric/default_metric.controller.js index 25f5ad3..66dc905 100644 --- a/server/api/default_metric/default_metric.controller.js +++ b/server/api/default_metric/default_metric.controller.js @@ -1 +1 @@ -var _0x44a7=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x65\x74\x72\x69\x63","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x73\x69\x6D\x70\x6C\x65\x2D\x72\x61\x6E\x64\x6F\x6D","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x67\x65\x74\x4D\x65\x74\x72\x69\x63\x73\x42\x79\x54\x61\x62\x6C\x65","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x6C\x65\x6E\x67\x74\x68","\x74\x61\x62\x6C\x65","\x66\x69\x6E\x64\x41\x6C\x6C","\x63\x6C\x6F\x6E\x65\x4D\x65\x74\x72\x69\x63","\x69\x64","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x6E\x61\x6D\x65","\x5F","\x63\x72\x65\x61\x74\x65","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0x44a7[0];var _=require(_0x44a7[1]);var DefaultMetric=require(_0x44a7[3])[_0x44a7[2]];var Metric=require(_0x44a7[3])[_0x44a7[4]];var util=require(_0x44a7[5]);var Util=require(_0x44a7[6]);var sequelize=require(_0x44a7[3])[_0x44a7[7]];var sr=require(_0x44a7[8]);var logger=require(_0x44a7[10])(_0x44a7[9]);exports[_0x44a7[11]]= function(_0xc1fax9,_0xc1faxa,_0xc1faxb){return DefaultMetric[_0x44a7[18]](Util[_0x44a7[17]](_0xc1fax9[_0x44a7[16]]))[_0x44a7[15]](function(_0xc1faxd){return _0xc1faxa[_0x44a7[14]](200)[_0x44a7[13]](_0xc1faxd)})[_0x44a7[12]](function(_0xc1faxc){return handleError(_0xc1faxa,_0xc1faxc)})};exports[_0x44a7[19]]= function(_0xc1fax9,_0xc1faxa){return DefaultMetric[_0x44a7[23]]({where:{table:_0xc1fax9[_0x44a7[16]][_0x44a7[22]]}})[_0x44a7[15]](function(_0xc1faxe){if(!_0xc1faxe){return _0xc1faxa[_0x44a7[20]](404)};return _0xc1faxa[_0x44a7[14]](200)[_0x44a7[13]]({count:_0xc1faxe[_0x44a7[21]],rows:_0xc1faxe})})[_0x44a7[12]](function(_0xc1faxc){return handleError(_0xc1faxa,_0xc1faxc)})};exports[_0x44a7[24]]= function(_0xc1fax9,_0xc1faxa){return DefaultMetric[_0x44a7[31]](_0xc1fax9[_0x44a7[30]][_0x44a7[25]])[_0x44a7[15]](function(_0xc1faxf){if(!_0xc1faxf){return _0xc1faxa[_0x44a7[20]](404)};delete _0xc1faxf[_0x44a7[26]][_0x44a7[25]];_0xc1faxf[_0x44a7[26]][_0x44a7[27]]+= _0x44a7[28]+ sr({length:5});return Metric[_0x44a7[29]](_0xc1faxf[_0x44a7[26]])})[_0x44a7[15]](function(){return _0xc1faxa[_0x44a7[20]](201)})[_0x44a7[12]](function(_0xc1faxc){return handleError(_0xc1faxa,_0xc1faxc)})};function handleError(_0xc1faxa,_0xc1faxc){logger[_0x44a7[33]](_0xc1faxc[_0x44a7[32]]);return _0xc1faxa[_0x44a7[14]](500)[_0x44a7[13]](_0xc1faxc)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/default_metric/index.js b/server/api/default_metric/index.js index e4d3060..66dc905 100644 --- a/server/api/default_metric/index.js +++ b/server/api/default_metric/index.js @@ -1 +1 @@ -var _0xc261=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x64\x65\x66\x61\x75\x6C\x74\x5F\x6D\x65\x74\x72\x69\x63\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x74\x61\x62\x6C\x65","\x67\x65\x74\x4D\x65\x74\x72\x69\x63\x73\x42\x79\x54\x61\x62\x6C\x65","\x2F\x3A\x69\x64\x2F\x63\x6C\x6F\x6E\x65","\x63\x6C\x6F\x6E\x65\x4D\x65\x74\x72\x69\x63","\x65\x78\x70\x6F\x72\x74\x73"];_0xc261[0];var express=require(_0xc261[1]);var controller=require(_0xc261[2]);var auth=require(_0xc261[3]);var router=express.Router();router[_0xc261[9]](_0xc261[4],auth[_0xc261[5]](),auth[_0xc261[7]]([17],[_0xc261[6]]),controller[_0xc261[8]]);router[_0xc261[9]](_0xc261[10],auth[_0xc261[5]](),auth[_0xc261[7]]([17],[_0xc261[6]]),controller[_0xc261[11]]);router[_0xc261[9]](_0xc261[12],auth[_0xc261[5]](),auth[_0xc261[7]]([17],[_0xc261[6]]),controller[_0xc261[13]]);module[_0xc261[14]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/default_report/default_report.controller.js b/server/api/default_report/default_report.controller.js index 63f4137..66dc905 100644 --- a/server/api/default_report/default_report.controller.js +++ b/server/api/default_report/default_report.controller.js @@ -1 +1 @@ -var _0xdd36=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x52\x65\x70\x6F\x72\x74\x46\x69\x65\x6C\x64","\x4D\x65\x74\x72\x69\x63","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74","\x45\x78\x74\x72\x61\x63\x74\x65\x64\x52\x65\x70\x6F\x72\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x75\x74\x69\x6C\x73\x2F\x72\x65\x70\x6F\x72\x74\x5F\x65\x78\x74\x72\x61\x63\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x75\x74\x69\x6C\x73\x2F\x72\x65\x70\x6F\x72\x74\x5F\x62\x75\x69\x6C\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6D\x6F\x6D\x65\x6E\x74","\x63\x68\x69\x6C\x64\x5F\x70\x72\x6F\x63\x65\x73\x73","\x73\x69\x6D\x70\x6C\x65\x2D\x72\x61\x6E\x64\x6F\x6D","\x52\x65\x70\x6F\x72\x74\x54\x72\x65\x65","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x65\x78\x70\x6F\x72\x74","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x6E\x61\x6D\x65","\x70\x61\x72\x65\x6E\x74","\x74\x61\x62\x6C\x65","\x66\x69\x6E\x64\x42\x79\x49\x64","\x65\x78\x70\x6F\x72\x74\x46\x69\x65\x6C\x64\x73","\x73\x63\x6F\x70\x65","\x67\x65\x74\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x72\x79","\x45\x72\x72\x6F\x72\x20\x67\x65\x74\x74\x69\x6E\x67\x20\x71\x75\x65\x72\x79\x20\x66\x72\x6F\x6D\x20\x61\x70\x69\x3A","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x6E\x6F\x20\x73\x75\x66\x66\x69\x63\x69\x65\x6E\x74\x20\x71\x75\x65\x75\x65\x20\x70\x65\x72\x6D\x69\x73\x73\x69\x6F\x6E\x73\x20\x66\x6F\x72\x20\x74\x68\x65\x20\x75\x73\x65\x72","\x70\x65\x72\x6D\x69\x73\x73\x69\x6F\x6E","\x61\x6C\x6C","\x62\x75\x69\x6C\x64\x51\x75\x65\x72\x79","\x73\x70\x72\x65\x61\x64","\x75\x73\x65\x72","\x62\x75\x69\x6C\x64\x46\x69\x6C\x74\x65\x72","\x64\x61\x69\x6C\x79","\x74\x72\x75\x65","\x73\x74\x61\x72\x74\x44\x61\x74\x65","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44","\x66\x6F\x72\x6D\x61\x74","\x65\x6E\x64\x44\x61\x74\x65","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x5F\x68\x69\x73\x74\x6F\x72\x79","","\x72\x65\x70\x6C\x61\x63\x65","\x66\x69\x65\x6C\x64\x73","\x70\x72\x65\x76\x69\x65\x77","\x69\x73\x41\x72\x72\x61\x79","\x6C\x65\x6E\x67\x74\x68","\x6C\x69\x6D\x69\x74","\x76\x61\x6C\x75\x65","\x74\x61\x6B\x65","\x6F\x66\x66\x73\x65\x74","\x73\x6C\x69\x63\x65","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x4F\x77\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x71\x75\x65\x72\x79\x20\x65\x72\x72\x6F\x72","\x63\x68\x65\x63\x6B\x51\x75\x65\x72\x79","\x65\x78\x74\x72\x61\x63\x74\x50\x64\x66","\x65\x78\x74\x72\x61\x63\x74\x50\x64\x66\x20\x61\x70\x69\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E","\x64\x65\x62\x75\x67","\x50\x44\x46","\x65\x78\x74\x72\x61\x63\x74\x43\x73\x76","\x65\x78\x74\x72\x61\x63\x74\x43\x73\x76\x20\x61\x70\x69\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E","\x43\x53\x56","\x63\x6F\x6D\x6D\x6F\x6E\x20\x64\x6F\x63\x45\x78\x74\x72\x61\x63\x74\x20\x61\x70\x69\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E","\x43\x72\x65\x61\x74\x65\x64\x20\x6E\x65\x77\x20\x65\x78\x74\x72\x61\x63\x74\x65\x64\x20\x72\x65\x70\x6F\x72\x74\x73\x20\x64\x62\x20\x65\x6E\x74\x72\x79\x2C\x20\x63\x61\x6C\x6C\x69\x6E\x67\x20\x65\x78\x74\x65\x72\x6E\x61\x6C\x20\x65\x78\x74\x72\x61\x63\x74\x69\x6F\x6E\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E\x3A\x20","\x2F\x2E\x2E\x2F\x2E\x2E\x2F\x75\x74\x69\x6C\x73\x2F\x72\x65\x70\x6F\x72\x74\x5F\x65\x78\x74\x72\x61\x63\x74\x69\x6F\x6E\x2E\x6A\x73","\x66\x6F\x72\x6B","\x52\x65\x70\x6F\x72\x74\x20\x65\x78\x74\x72\x61\x63\x74\x69\x6F\x6E\x20\x70\x72\x6F\x63\x65\x73\x73\x20\x65\x72\x72\x6F\x72","\x6F\x6E","\x63\x6C\x6F\x73\x65","\x52\x65\x70\x6F\x72\x74\x20\x65\x78\x74\x72\x61\x63\x74\x69\x6F\x6E\x20\x70\x72\x6F\x63\x65\x73\x73\x20\x63\x6C\x6F\x73\x65","\x6D\x65\x73\x73\x61\x67\x65","\x52\x65\x70\x6F\x72\x74\x20\x65\x78\x74\x72\x61\x63\x74\x69\x6F\x6E\x20\x70\x72\x6F\x63\x65\x73\x73\x20\x6D\x65\x73\x73\x61\x67\x65","\x6B\x69\x6C\x6C","\x74\x72\x65\x65","\x70\x61\x72\x73\x65","\x66\x69\x6E\x64","\x46\x6F\x75\x6E\x64\x20\x74\x68\x65\x20\x72\x65\x70\x6F\x72\x74\x2C\x20\x63\x72\x65\x61\x74\x69\x6E\x67\x20\x74\x68\x65\x20\x6E\x65\x77\x20\x44\x42\x20\x72\x6F\x77\x20\x66\x6F\x72\x20\x65\x78\x74\x72\x61\x63\x74\x65\x64\x20\x72\x65\x70\x6F\x72\x74\x73\x2E\x2E","\x73\x74\x61\x72\x74\x54\x69\x6D\x65","\x20","\x30\x30\x3A\x30\x30","\x65\x6E\x64\x54\x69\x6D\x65","\x32\x33\x3A\x35\x39","\x63\x72\x65\x61\x74\x65","\x74\x65\x78\x74","\x2F\x20","\x23","\x73\x68\x6F\x77","\x63\x6F\x70\x79","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x75\x70\x64\x61\x74\x65\x64\x41\x74","\x62\x6F\x64\x79","\x6D\x61\x70","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x67\x65\x74\x54\x61\x62\x6C\x65","\x6B\x65\x79\x73","\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64","\x67\x72\x6F\x75\x70\x42\x79","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x6E\x75\x6C\x6C","\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64","\x52\x65\x70\x6F\x72\x74\x46\x69\x65\x6C\x64\x73","\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63","\x5F","\x70\x75\x73\x68","\x66\x69\x65\x6C\x64","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x63\x75\x73\x74\x6F\x6D","\x54\x68\x65\x20\x66\x69\x65\x6C\x64\x20","\x20\x79\x6F\x75\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x64\x6F\x65\x73\x20\x6E\x6F\x74\x20\x65\x78\x69\x73\x74\x20\x69\x6E\x20\x74\x68\x65\x20\x74\x61\x62\x6C\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x59\x6F\x75\x20\x68\x61\x76\x65\x20\x6E\x6F\x74\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x74\x68\x65\x20\x74\x61\x62\x6C\x65\x20\x6F\x72\x20\x74\x68\x65\x20\x74\x61\x62\x6C\x65\x20\x64\x6F\x65\x73\x20\x6E\x6F\x74\x20\x65\x78\x69\x73\x74","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79"];_0xdd36[0];var _=require(_0xdd36[1]);var util=require(_0xdd36[2]);var DefaultReport=require(_0xdd36[4])[_0xdd36[3]];var ReportField=require(_0xdd36[4])[_0xdd36[5]];var Metric=require(_0xdd36[4])[_0xdd36[6]];var sequelize=require(_0xdd36[4])[_0xdd36[7]];var CustomReport=require(_0xdd36[4])[_0xdd36[8]];var ExtractedReport=require(_0xdd36[4])[_0xdd36[9]];var extractUtils=require(_0xdd36[10]);var reportBuildUtils=require(_0xdd36[11]);var Util=require(_0xdd36[12]);var moment=require(_0xdd36[13]);var cp=require(_0xdd36[14]);var sr=require(_0xdd36[15]);var ReportTree=require(_0xdd36[4])[_0xdd36[16]];var logger=require(_0xdd36[18])(_0xdd36[17]);exports[_0xdd36[19]]= function(_0xf214x11,_0xf214x12,_0xf214x13){return DefaultReport[_0xdd36[26]](Util[_0xdd36[25]](_0xf214x11[_0xdd36[24]]))[_0xdd36[23]](function(_0xf214x15){_0xf214x12[_0xdd36[22]](200)[_0xdd36[21]](_0xf214x15)})[_0xdd36[20]](function(_0xf214x14){return handleError(_0xf214x12,_0xf214x14)})};exports[_0xdd36[27]]= function(_0xf214x11,_0xf214x12){return DefaultReport[_0xdd36[38]]({method:[_0xdd36[37],{DefaultReportId:_0xf214x11[_0xdd36[30]][_0xdd36[29]]}]})[_0xdd36[36]](_0xf214x11[_0xdd36[30]][_0xdd36[29]],{attributes:[_0xdd36[31],_0xdd36[32],_0xdd36[33],_0xdd36[34],_0xdd36[35]]})[_0xdd36[23]](function(_0xf214x16){if(!_0xf214x16){return _0xf214x12[_0xdd36[28]](404)};return _0xf214x12[_0xdd36[21]](_0xf214x16)})[_0xdd36[20]](function(_0xf214x14){return handleError(_0xf214x12,_0xf214x14)})};exports[_0xdd36[39]]= function(_0xf214x11,_0xf214x12){return Promise[_0xdd36[45]]([])[_0xdd36[23]](getQuery(_0xf214x11,_0xf214x12))[_0xdd36[23]](function(_0xf214x17){if(_0xf214x17){switch(_0xf214x17){case _0xdd36[44]:_0xf214x17= _0xdd36[43];break;default:}};_0xf214x12[_0xdd36[22]](200)[_0xdd36[21]]({query:_0xf214x17})})[_0xdd36[20]](function(_0xf214x14){logger[_0xdd36[42]](_0xdd36[40],_0xf214x14[_0xdd36[41]])})};function getQuery(_0xf214x11,_0xf214x12){var _0xf214x19;return function(){return DefaultReport[_0xdd36[38]](_0xdd36[60])[_0xdd36[36]](_0xf214x11[_0xdd36[30]][_0xdd36[29]])[_0xdd36[23]](function(_0xf214x16){if(!_0xf214x16){return _0xf214x12[_0xdd36[28]](404)};if(_0xf214x11[_0xdd36[24]][_0xdd36[50]]&& _0xf214x11[_0xdd36[24]][_0xdd36[50]]=== _0xdd36[51]){_0xf214x11[_0xdd36[24]][_0xdd36[52]]= moment()[_0xdd36[54]](_0xdd36[53]);_0xf214x11[_0xdd36[24]][_0xdd36[55]]= moment()[_0xdd36[54]](_0xdd36[53]);_0xf214x16[_0xdd36[56]][_0xdd36[35]]= _0xf214x16[_0xdd36[56]][_0xdd36[35]][_0xdd36[59]](_0xdd36[57],_0xdd36[58])};delete _0xf214x11[_0xdd36[24]][_0xdd36[50]];_0xf214x19= _0xf214x16[_0xdd36[56]];return _0xf214x19[_0xdd36[35]]})[_0xdd36[23]](reportBuildUtils[_0xdd36[49]](_0xf214x11[_0xdd36[48]]))[_0xdd36[23]](function(_0xf214x1a){return [_0xf214x1a,_0xf214x19]})[_0xdd36[47]](reportBuildUtils[_0xdd36[46]](_0xf214x11[_0xdd36[24]]))}}exports[_0xdd36[61]]= function(_0xf214x11,_0xf214x12){var _0xf214x1b;return Promise[_0xdd36[45]]([])[_0xdd36[23]](getQuery(_0xf214x11,_0xf214x12))[_0xdd36[23]](reportBuildUtils[_0xdd36[73]]())[_0xdd36[23]](function(_0xf214x1c){if(_0xf214x1c&& _[_0xdd36[62]](_0xf214x1c)){_0xf214x1b= _0xf214x1c[_0xdd36[63]];if(_0xf214x11[_0xdd36[24]][_0xdd36[64]]){_0xf214x1c= _(_0xf214x1c)[_0xdd36[68]](_0xf214x11[_0xdd36[24]][_0xdd36[67]]|| 0)[_0xdd36[66]](_0xf214x11[_0xdd36[24]][_0xdd36[64]])[_0xdd36[65]]()};_[_0xdd36[71]](_0xf214x1c,function(_0xf214x1d){_[_0xdd36[70]](_0xf214x1d,function(_0xf214x1e,_0xf214x1f){if(_0xf214x1e instanceof Date){_0xf214x1d[_0xf214x1f]= moment(_0xf214x1e)[_0xdd36[54]](_0xdd36[69]).toString()}})});_0xf214x12[_0xdd36[22]](200)[_0xdd36[21]]({rows:_0xf214x1c,count:_0xf214x1b})}else {return handleError(_0xf214x12,{message:_0xf214x1c|| _0xdd36[72]})}})[_0xdd36[20]](function(_0xf214x14){return handleError(_0xf214x12,_0xf214x14)})};exports[_0xdd36[74]]= function(_0xf214x11,_0xf214x12){logger[_0xdd36[76]](_0xdd36[75]);docExtract(_0xf214x11,_0xf214x12,_0xdd36[77])};exports[_0xdd36[78]]= function(_0xf214x11,_0xf214x12){logger[_0xdd36[76]](_0xdd36[79]);docExtract(_0xf214x11,_0xf214x12,_0xdd36[80])};function docExtract(_0xf214x11,_0xf214x12,_0xf214x21){var _0xf214x16;logger[_0xdd36[76]](_0xdd36[81]);DefaultReport[_0xdd36[38]](_0xdd36[60])[_0xdd36[36]](_0xf214x11[_0xdd36[30]][_0xdd36[29]])[_0xdd36[23]](function(_0xf214x19){if(!_0xf214x19){return _0xf214x12[_0xdd36[28]](404)};_0xf214x16= _0xf214x19;return ReportTree[_0xdd36[36]](1)})[_0xdd36[23]](function(_0xf214x25){_0xf214x25= JSON[_0xdd36[93]](_0xf214x25[_0xdd36[92]]);var _0xf214x26=_[_0xdd36[94]](_0xf214x25,{id:_0xf214x16[_0xdd36[34]]});var _0xf214x27=getReportPath(_0xf214x26,_0xf214x25,_0xf214x16[_0xdd36[33]]);logger[_0xdd36[76]](_0xdd36[95]);if(_0xf214x11[_0xdd36[24]][_0xdd36[50]]&& _0xf214x11[_0xdd36[24]][_0xdd36[50]]=== _0xdd36[51]){_0xf214x11[_0xdd36[24]][_0xdd36[52]]= moment()[_0xdd36[54]](_0xdd36[53]);_0xf214x11[_0xdd36[24]][_0xdd36[55]]= moment()[_0xdd36[54]](_0xdd36[53]);_0xf214x16[_0xdd36[56]][_0xdd36[35]]= _0xf214x16[_0xdd36[56]][_0xdd36[35]][_0xdd36[59]](_0xdd36[57],_0xdd36[58])};delete _0xf214x11[_0xdd36[24]][_0xdd36[50]];return [_0xf214x16,ExtractedReport[_0xdd36[101]]({name:_0xf214x27,startDate:_0xf214x11[_0xdd36[24]][_0xdd36[52]]?_0xf214x11[_0xdd36[24]][_0xdd36[52]]+ (_0xf214x11[_0xdd36[24]][_0xdd36[96]]?_0xdd36[97]+ _0xf214x11[_0xdd36[24]][_0xdd36[96]]:_0xdd36[98]):null,endDate:_0xf214x11[_0xdd36[24]][_0xdd36[55]]?_0xf214x11[_0xdd36[24]][_0xdd36[55]]+ (_0xf214x11[_0xdd36[24]][_0xdd36[99]]?_0xdd36[97]+ _0xf214x11[_0xdd36[24]][_0xdd36[99]]:_0xdd36[100]):null,output:_0xf214x21,UserId:_0xf214x11[_0xdd36[48]][_0xdd36[29]]})]})[_0xdd36[47]](function(_0xf214x16,_0xf214x22){logger[_0xdd36[76]](_0xdd36[82]+ _0xf214x21);var _0xf214x23=cp[_0xdd36[84]](__dirname+ _0xdd36[83]);_0xf214x23[_0xdd36[86]](_0xdd36[89],function(_0xf214x24){logger[_0xdd36[76]](_0xdd36[90],_0xf214x24);_0xf214x23[_0xdd36[91]]()})[_0xdd36[86]](_0xdd36[87],function(){logger[_0xdd36[76]](_0xdd36[88])})[_0xdd36[86]](_0xdd36[42],function(_0xf214x14){logger[_0xdd36[76]](_0xdd36[85],_0xf214x14)});_0xf214x23[_0xdd36[21]]({report:_0xf214x16,query:_0xf214x11[_0xdd36[24]],extractedId:_0xf214x22[_0xdd36[29]],user:_0xf214x11[_0xdd36[48]],type:_0xf214x21})})[_0xdd36[20]](function(_0xf214x14){return handleError(_0xf214x12,_0xf214x14)});return _0xf214x12[_0xdd36[28]](200)}function getReportPath(_0xf214x26,_0xf214x25,_0xf214x27){_0xf214x27= _0xf214x26[_0xdd36[102]]+ _0xdd36[103]+ _0xf214x27;if(_0xf214x26[_0xdd36[34]]=== _0xdd36[104]){return _0xf214x27}else {return getReportPath(_[_0xdd36[94]](_0xf214x25,{id:_0xf214x26[_0xdd36[34]]}),_0xf214x25,_0xf214x27)}}exports[_0xdd36[105]]= function(_0xf214x11,_0xf214x12){return DefaultReport[_0xdd36[36]](_0xf214x11[_0xdd36[30]][_0xdd36[29]],{include:[{all:true}]})[_0xdd36[23]](function(_0xf214x16){if(!_0xf214x16){return _0xf214x12[_0xdd36[28]](404)};return _0xf214x12[_0xdd36[21]](_0xf214x16)})[_0xdd36[20]](function(_0xf214x14){return handleError(_0xf214x12,_0xf214x14)})};exports[_0xdd36[106]]= function(_0xf214x11,_0xf214x12){var _0xf214x29;return sequelize[_0xdd36[111]](function(_0xf214x2a){return DefaultReport[_0xdd36[38]]({method:[_0xdd36[37],{DefaultReportId:_0xf214x11[_0xdd36[30]][_0xdd36[29]]}]})[_0xdd36[36]](_0xf214x11[_0xdd36[30]][_0xdd36[29]])[_0xdd36[23]](function(_0xf214x16){if(!_0xf214x16){return _0xf214x12[_0xdd36[28]](404)};var _0xf214x2b=_0xf214x16[_0xdd36[56]];delete _0xf214x2b[_0xdd36[29]];delete _0xf214x2b[_0xdd36[107]];delete _0xf214x2b[_0xdd36[108]];_0xf214x2b[_0xdd36[34]]= _0xf214x11[_0xdd36[109]][_0xdd36[34]];_0xf214x29= _[_0xdd36[110]](_0xf214x2b.Fields,_0xdd36[56]);return CustomReport[_0xdd36[101]](_0xf214x2b,{transaction:_0xf214x2a})})[_0xdd36[23]](function(_0xf214x16){return [_0xf214x16,_0xf214x29]})[_0xdd36[47]](createCopyFields(_0xf214x2a))})[_0xdd36[23]](function(){return _0xf214x12[_0xdd36[28]](201)})[_0xdd36[20]](function(_0xf214x14){return handleError(_0xf214x12,_0xf214x14)})};function createCopyFields(_0xf214x2a){return function(_0xf214x16,_0xf214x2d){if(_0xf214x2d&& Array[_0xdd36[62]](_0xf214x2d)&& _0xf214x2d[_0xdd36[63]]){var _0xf214x2e=reportBuildUtils[_0xdd36[112]](_0xf214x16[_0xdd36[35]]);if(_0xf214x2e){var _0xf214x2f;return _0xf214x2e[_0xdd36[128]]()[_0xdd36[23]](function(_0xf214x30){_0xf214x2f= _[_0xdd36[113]](_0xf214x30);var _0xf214x31=[];var _0xf214x32=_[_0xdd36[115]](_0xf214x2d,_0xdd36[114]);_[_0xdd36[70]](_0xf214x32,function(_0xf214x33,_0xf214x1f){if(_0xf214x1f!== _0xdd36[116]&& _0xf214x1f!== _0xdd36[117]){_0xf214x33[0][_0xdd36[120]][_0xdd36[119]][_0xdd36[71]](function(_0xf214x34){_0xf214x34[_0xdd36[118]]= _0xf214x16[_0xdd36[29]]});_0xf214x33[0][_0xdd36[120]][_0xdd36[33]]+= _0xdd36[121]+ sr({length:5});_0xf214x31[_0xdd36[122]](Metric[_0xdd36[101]](_0xf214x33[0][_0xdd36[120]][_0xdd36[56]],{include:[{model:ReportField,as:_0xdd36[119]}],transaction:_0xf214x2a}))}else {_0xf214x33[_0xdd36[71]](function(_0xf214x34){if(_[_0xdd36[124]](_0xf214x2f,_0xf214x34[_0xdd36[123]])|| _0xf214x34[_0xdd36[125]]){_0xf214x34[_0xdd36[118]]= _0xf214x16[_0xdd36[29]];_0xf214x31[_0xdd36[122]](ReportField[_0xdd36[101]](_0xf214x34,{transaction:_0xf214x2a}))}else {throw new sequelize.Error(_0xdd36[126]+ _0xf214x34[_0xdd36[123]]+ _0xdd36[127])}})}});return _0xf214x31})[_0xdd36[45]]()}else {throw new sequelize.Error(_0xdd36[129])}}}}exports[_0xdd36[101]]= function(_0xf214x11,_0xf214x12){return DefaultReport[_0xdd36[101]](_0xf214x11[_0xdd36[109]])[_0xdd36[23]](function(_0xf214x16){return _0xf214x12[_0xdd36[22]](201)[_0xdd36[21]](_0xf214x16)})[_0xdd36[20]](function(_0xf214x14){return handleError(_0xf214x12,_0xf214x14)})};exports[_0xdd36[130]]= function(_0xf214x11,_0xf214x12){if(_0xf214x11[_0xdd36[109]][_0xdd36[29]]){delete _0xf214x11[_0xdd36[109]][_0xdd36[29]]};return DefaultReport[_0xdd36[36]](_0xf214x11[_0xdd36[30]][_0xdd36[29]])[_0xdd36[23]](function(_0xf214x16){if(!_0xf214x16){return _0xf214x12[_0xdd36[28]](404)};var _0xf214x35=_[_0xdd36[131]](_0xf214x16,_0xf214x11[_0xdd36[109]]);return _0xf214x35[_0xdd36[132]]()})[_0xdd36[23]](function(_0xf214x16){return _0xf214x12[_0xdd36[22]](200)[_0xdd36[21]](_0xf214x16)})[_0xdd36[20]](function(_0xf214x14){return handleError(_0xf214x12,_0xf214x14)})};exports[_0xdd36[133]]= function(_0xf214x11,_0xf214x12){return DefaultReport[_0xdd36[36]](_0xf214x11[_0xdd36[30]][_0xdd36[29]])[_0xdd36[23]](function(_0xf214x16){if(!_0xf214x16){return _0xf214x12[_0xdd36[28]](404)};return _0xf214x16[_0xdd36[133]]()})[_0xdd36[23]](function(){return _0xf214x12[_0xdd36[28]](204)})[_0xdd36[20]](function(_0xf214x14){return handleError(_0xf214x12,_0xf214x14)})};function handleError(_0xf214x12,_0xf214x14){logger[_0xdd36[42]](_0xf214x14[_0xdd36[41]]);return _0xf214x12[_0xdd36[22]](500)[_0xdd36[21]](_0xf214x14)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/default_report/default_report.events.js b/server/api/default_report/default_report.events.js index 120dcd5..66dc905 100644 --- a/server/api/default_report/default_report.events.js +++ b/server/api/default_report/default_report.events.js @@ -1 +1 @@ -var _0x4306=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x4306[0];const EventEmitter=require(_0x4306[1]);const DefaultReport=require(_0x4306[3])[_0x4306[2]];var DefaultReportEvents= new EventEmitter();DefaultReportEvents[_0x4306[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x4306[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x4306[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x4306[6]};for(var e in events){var event=events[e];DefaultReport[_0x4306[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x80d6x8,_0x80d6x9,_0x80d6xa){DefaultReportEvents[_0x4306[10]](event+ _0x4306[8]+ _0x80d6x8[_0x4306[9]],_0x80d6x8);DefaultReportEvents[_0x4306[10]](event,_0x80d6x8);_0x80d6xa(null)}}module[_0x4306[11]]= DefaultReportEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/default_report/default_report.socket.js b/server/api/default_report/default_report.socket.js index 6515ee1..66dc905 100644 --- a/server/api/default_report/default_report.socket.js +++ b/server/api/default_report/default_report.socket.js @@ -1 +1 @@ -var _0x3506=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x64\x65\x66\x61\x75\x6C\x74\x5F\x72\x65\x70\x6F\x72\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x64\x65\x66\x61\x75\x6C\x74\x5F\x72\x65\x70\x6F\x72\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x3506[0];const DefaultReportEvents=require(_0x3506[1]);var events=[_0x3506[2],_0x3506[3]];exports[_0x3506[4]]= function(_0xa351x3){for(var _0xa351x4=0,_0xa351x5=events[_0x3506[5]];_0xa351x4< _0xa351x5;_0xa351x4++){var _0xa351x6=events[_0xa351x4];var _0xa351x7=createListener(_0x3506[6]+ _0xa351x6,_0xa351x3);DefaultReportEvents[_0x3506[7]](_0xa351x6,_0xa351x7);_0xa351x3[_0x3506[7]](_0x3506[8],removeListener(_0xa351x6,_0xa351x7))}};function createListener(_0xa351x6,_0xa351x3){return function(_0xa351x9){_0xa351x3[_0x3506[9]](_0xa351x6,_0xa351x9)}}function removeListener(_0xa351x6,_0xa351x7){return function(){DefaultReportEvents[_0x3506[10]](_0xa351x6,_0xa351x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/default_report/index.js b/server/api/default_report/index.js index a2f94b1..66dc905 100644 --- a/server/api/default_report/index.js +++ b/server/api/default_report/index.js @@ -1 +1 @@ -var _0xa503=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x64\x65\x66\x61\x75\x6C\x74\x5F\x72\x65\x70\x6F\x72\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64\x2F\x70\x72\x65\x76\x69\x65\x77","\x70\x72\x65\x76\x69\x65\x77","\x2F\x3A\x69\x64\x2F\x71\x75\x65\x72\x79","\x67\x65\x74\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x72\x79","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x65\x78\x70\x6F\x72\x74","\x65\x78\x70\x6F\x72\x74","\x2F\x3A\x69\x64\x2F\x65\x78\x74\x72\x61\x63\x74\x2F\x70\x64\x66","\x65\x78\x74\x72\x61\x63\x74\x50\x64\x66","\x2F\x3A\x69\x64\x2F\x65\x78\x74\x72\x61\x63\x74\x2F\x63\x73\x76","\x65\x78\x74\x72\x61\x63\x74\x43\x73\x76","\x2F\x3A\x69\x64\x2F\x63\x6F\x70\x79","\x63\x6F\x70\x79","\x70\x6F\x73\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xa503[0];var express=require(_0xa503[1]);var controller=require(_0xa503[2]);var auth=require(_0xa503[3]);var router=express.Router();router[_0xa503[9]](_0xa503[4],auth[_0xa503[5]](),auth[_0xa503[7]]([17],[_0xa503[6]]),controller[_0xa503[8]]);router[_0xa503[9]](_0xa503[10],auth[_0xa503[5]](),auth[_0xa503[7]]([17],[_0xa503[6]]),controller[_0xa503[11]]);router[_0xa503[9]](_0xa503[12],auth[_0xa503[5]](),auth[_0xa503[7]]([17],[_0xa503[6]]),controller[_0xa503[13]]);router[_0xa503[9]](_0xa503[14],auth[_0xa503[5]](),auth[_0xa503[7]]([17],[_0xa503[6]]),controller[_0xa503[15]]);router[_0xa503[9]](_0xa503[16],auth[_0xa503[5]](),auth[_0xa503[7]]([17],[_0xa503[6]]),controller[_0xa503[17]]);router[_0xa503[9]](_0xa503[18],auth[_0xa503[5]](),auth[_0xa503[7]]([17],[_0xa503[6]]),controller[_0xa503[19]]);router[_0xa503[9]](_0xa503[20],auth[_0xa503[5]](),auth[_0xa503[7]]([17],[_0xa503[6]]),controller[_0xa503[21]]);router[_0xa503[24]](_0xa503[22],auth[_0xa503[5]](),auth[_0xa503[7]]([17],[_0xa503[6]]),controller[_0xa503[23]]);module[_0xa503[25]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/desk_account/desk_account.controller.js b/server/api/desk_account/desk_account.controller.js index d128582..66dc905 100644 --- a/server/api/desk_account/desk_account.controller.js +++ b/server/api/desk_account/desk_account.controller.js @@ -1 +1 @@ -var _0x316f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x64\x65\x73\x6B\x2E\x6A\x73","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x44\x65\x73\x6B\x41\x63\x63\x6F\x75\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x69\x6E\x64\x65\x78","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x6E\x61\x6D\x65","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x72\x65\x6D\x6F\x74\x65\x55\x72\x69","\x70\x65\x72\x5F\x70\x61\x67\x65","\x71\x75\x65\x72\x79","\x70\x61\x67\x65","\x6F\x72\x64\x65\x72","\x25\x73\x20\x25\x73","\x73\x6F\x72\x74\x5F\x62\x79","\x73\x6F\x72\x74\x5F\x6F\x72\x64\x65\x72","\x41\x53\x43","\x66\x6F\x72\x6D\x61\x74","\x24\x6F\x72","\x77\x68\x65\x72\x65","\x25","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x24","\x24\x6C\x69\x6B\x65","\x66\x6F\x72\x49\x6E","\x53\x6F\x6D\x65\x74\x68\x69\x6E\x67\x20\x62\x6C\x65\x77\x20\x75\x70\x21","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x63\x61\x74\x63\x68","\x63\x6F\x75\x6E\x74","\x63\x65\x69\x6C","\x6F\x66\x66\x73\x65\x74","\x25\x73\x3A\x2F\x2F\x25\x73\x25\x73\x3F\x70\x61\x67\x65\x3D\x25\x64","\x70\x72\x6F\x74\x6F\x63\x6F\x6C","\x68\x6F\x73\x74","\x68\x65\x61\x64\x65\x72\x73","\x62\x61\x73\x65\x55\x72\x6C","\x72\x6F\x77\x73","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x63\x68\x65\x63\x6B\x41\x63\x63\x6F\x75\x6E\x74","\x61\x75\x74\x68\x54\x79\x70\x65","\x62\x61\x73\x69\x63","\x70\x61\x73\x73\x77\x6F\x72\x64","\x6F\x61\x75\x74\x68","\x63\x6F\x6E\x73\x75\x6D\x65\x72\x4B\x65\x79","\x63\x6F\x6E\x73\x75\x6D\x65\x72\x53\x65\x63\x72\x65\x74","\x74\x6F\x6B\x65\x6E","\x74\x6F\x6B\x65\x6E\x53\x65\x63\x72\x65\x74","\x63\x72\x65\x61\x74\x65\x43\x6C\x69\x65\x6E\x74","\x2F\x61\x70\x69\x2F\x76\x32\x2F\x75\x73\x65\x72\x73\x2F\x6D\x65","\x67\x65\x74","\x64\x65\x73\x6B\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x66\x69\x65\x6C\x64","\x76\x61\x6C\x75\x65","\x67\x65\x74\x46\x69\x65\x6C\x64\x73","\x2F\x61\x70\x69\x2F\x76\x32\x2F\x63\x75\x73\x74\x6F\x6D\x5F\x66\x69\x65\x6C\x64\x73","\x65\x6E\x74\x72\x69\x65\x73","\x5F\x65\x6D\x62\x65\x64\x64\x65\x64","\x6A\x73\x6F\x6E","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x73\x75\x62\x73\x74\x72","\x2F","\x6C\x65\x6E\x67\x74\x68","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0x316f[0];var _=require(_0x316f[1]);var util=require(_0x316f[2]);var desk=require(_0x316f[3]);var logger=require(_0x316f[5])(_0x316f[4]);var DeskAccount=require(_0x316f[7])[_0x316f[6]];exports[_0x316f[8]]= function(_0x9cacx6,_0x9cacx7){var _0x9cacx8=[_0x316f[9],_0x316f[10],_0x316f[11],_0x316f[12]];var _0x9cacx9=_0x9cacx6[_0x316f[14]][_0x316f[13]]?parseInt(_0x9cacx6[_0x316f[14]][_0x316f[13]],10):100;var _0x9cacxa=_0x9cacx6[_0x316f[14]][_0x316f[15]]?parseInt(_0x9cacx6[_0x316f[14]][_0x316f[15]],10):0;var _0x9cacxb={where:{},limit:_0x9cacx9,offset:_0x9cacxa* _0x9cacx9};_[_0x316f[29]](_0x9cacx6[_0x316f[14]],function(_0x9cacxc,_0x9cacxd){switch(_0x9cacxd){case _0x316f[13]:;case _0x316f[15]:break;case _0x316f[18]:_0x9cacxb[_0x316f[16]]= util[_0x316f[21]](_0x316f[17],_0x9cacx6[_0x316f[14]][_0x316f[18]],_0x9cacx6[_0x316f[14]][_0x316f[19]]|| _0x316f[20])|| null;break;case _0x316f[19]:break;case _0x316f[27]:_0x9cacxb[_0x316f[23]][_0x316f[22]]= [];_0x9cacx8[_0x316f[26]](function(_0x9cacxe){var _0x9cacxf={};_0x9cacxf[_0x9cacxe]= {$like:_0x316f[24]+ _0x9cacxc+ _0x316f[24]};_0x9cacxb[_0x316f[23]][_0x316f[22]][_0x316f[25]](_0x9cacxf)});break;default:_0x9cacxb[_0x316f[23]][_0x9cacxd]= {$like:{}};_0x9cacxb[_0x316f[23]][_0x9cacxd][_0x316f[28]]= _0x316f[24]+ _0x9cacxc+ _0x316f[24]}});return DeskAccount[_0x316f[44]](_0x9cacxb)[_0x316f[43]](function(_0x9cacx11){var _0x9cacx12=Math[_0x316f[35]](_0x9cacx11[_0x316f[34]]/ _0x9cacx9);var _0x9cacx13=_0x9cacx12> (_0x9cacxb[_0x316f[36]]+ 1)?util[_0x316f[21]](_0x316f[37],_0x9cacx6[_0x316f[38]],_0x9cacx6[_0x316f[40]][_0x316f[39]],_0x9cacx6[_0x316f[41]],_0x9cacxa+ 1):null;var _0x9cacx14=_0x9cacxa> 0?util[_0x316f[21]](_0x316f[37],_0x9cacx6[_0x316f[38]],_0x9cacx6[_0x316f[40]][_0x316f[39]],_0x9cacx6[_0x316f[41]],_0x9cacxa- 1):null;return _0x9cacx7[_0x316f[32]](200)[_0x316f[31]]({count:_0x9cacx11[_0x316f[34]],rows:_0x9cacx11[_0x316f[42]],next_page:_0x9cacx13,previous_page:_0x9cacx14,total_pages:_0x9cacx12})})[_0x316f[33]](function(_0x9cacx10){return _0x9cacx7[_0x316f[32]](500)[_0x316f[31]]({error:_0x316f[30]})})};exports[_0x316f[45]]= function(_0x9cacx6,_0x9cacx7){DeskAccount[_0x316f[49]](_0x9cacx6[_0x316f[48]][_0x316f[47]])[_0x316f[43]](function(_0x9cacx15){if(!_0x9cacx15){return _0x9cacx7[_0x316f[46]](404)};return _0x9cacx7[_0x316f[31]](_0x9cacx15)})[_0x316f[33]](function(_0x9cacx10){return handleError(_0x9cacx7,_0x9cacx10)})};exports[_0x316f[50]]= function(_0x9cacx6,_0x9cacx7,_0x9cacx16){DeskAccount[_0x316f[50]](_0x9cacx6[_0x316f[51]])[_0x316f[43]](function(_0x9cacx15){return _0x9cacx7[_0x316f[32]](201)[_0x316f[31]](_0x9cacx15)})[_0x316f[33]](function(_0x9cacx10){return handleError(_0x9cacx7,_0x9cacx10)})};exports[_0x316f[52]]= function(_0x9cacx6,_0x9cacx7){if(_0x9cacx6[_0x316f[51]][_0x316f[47]]){delete _0x9cacx6[_0x316f[51]][_0x316f[47]]};DeskAccount[_0x316f[49]](_0x9cacx6[_0x316f[48]][_0x316f[47]])[_0x316f[43]](function(_0x9cacx15){if(!_0x9cacx15){return _0x9cacx7[_0x316f[46]](404)};var _0x9cacx17=_[_0x316f[53]](_0x9cacx15,_0x9cacx6[_0x316f[51]]);_0x9cacx17[_0x316f[54]]()[_0x316f[43]](function(){return _0x9cacx7[_0x316f[32]](200)[_0x316f[31]](_0x9cacx15)})[_0x316f[33]](function(_0x9cacx10){return handleError(_0x9cacx7,_0x9cacx10)})})[_0x316f[33]](function(_0x9cacx10){return handleError(_0x9cacx7,_0x9cacx10)})};exports[_0x316f[55]]= function(_0x9cacx6,_0x9cacx7){DeskAccount[_0x316f[49]](_0x9cacx6[_0x316f[48]][_0x316f[47]])[_0x316f[43]](function(_0x9cacx15){if(!_0x9cacx15){return _0x9cacx7[_0x316f[46]](404)};_0x9cacx15[_0x316f[55]]()[_0x316f[43]](function(){return _0x9cacx7[_0x316f[46]](204)})[_0x316f[33]](function(_0x9cacx10){return handleError(_0x9cacx7,_0x9cacx10)})})[_0x316f[33]](function(_0x9cacx10){return handleError(_0x9cacx7,_0x9cacx10)})};exports[_0x316f[56]]= function(_0x9cacx6,_0x9cacx7){DeskAccount[_0x316f[49]](_0x9cacx6[_0x316f[48]][_0x316f[47]])[_0x316f[43]](function(_0x9cacx18){var _0x9cacx15={endpoint:stripTrailingSlash(_0x9cacx18[_0x316f[12]]),retry:false};if(_0x9cacx18[_0x316f[57]]=== _0x316f[58]){_0x9cacx15[_0x316f[11]]= _0x9cacx18[_0x316f[11]];_0x9cacx15[_0x316f[59]]= _0x9cacx18[_0x316f[59]]}else {if(_0x9cacx18[_0x316f[57]]=== _0x316f[60]){_0x9cacx15[_0x316f[61]]= _0x9cacx18[_0x316f[61]];_0x9cacx15[_0x316f[62]]= _0x9cacx18[_0x316f[62]];_0x9cacx15[_0x316f[63]]= _0x9cacx18[_0x316f[63]];_0x9cacx15[_0x316f[64]]= _0x9cacx18[_0x316f[64]]}};var _0x9cacx19=desk[_0x316f[65]](_0x9cacx15);_0x9cacx19[_0x316f[67]](_0x316f[66],function(_0x9cacx10,_0x9cacx1a,_0x9cacx1b){if(_0x9cacx10){return handleError(_0x9cacx7,_0x9cacx10)};return _0x9cacx7[_0x316f[46]](200)})})[_0x316f[33]](function(_0x9cacx10){return handleError(_0x9cacx7,_0x9cacx10)})};exports[_0x316f[68]]= function(_0x9cacx6,_0x9cacx7){var _0x9cacx1c={};_0x9cacx1c[_0x9cacx6[_0x316f[48]][_0x316f[69]]]= _0x9cacx6[_0x316f[51]][_0x316f[70]];DeskAccount[_0x316f[44]]({where:_0x9cacx1c})[_0x316f[43]](function(_0x9cacx11){if(_0x9cacx11[_0x316f[34]]){return _0x9cacx7[_0x316f[32]](200)[_0x316f[31]]({isValid:false,value:_0x9cacx6[_0x316f[51]][_0x316f[70]]})};return _0x9cacx7[_0x316f[32]](200)[_0x316f[31]]({isValid:true,value:_0x9cacx6[_0x316f[51]][_0x316f[70]]})})[_0x316f[33]](function(_0x9cacx10){return handleError(_0x9cacx7,_0x9cacx10)})};exports[_0x316f[71]]= function(_0x9cacx6,_0x9cacx7){DeskAccount[_0x316f[49]](_0x9cacx6[_0x316f[48]][_0x316f[47]])[_0x316f[43]](function(_0x9cacx18){var _0x9cacx15={endpoint:stripTrailingSlash(_0x9cacx18[_0x316f[12]]),retry:false};if(_0x9cacx18[_0x316f[57]]=== _0x316f[58]){_0x9cacx15[_0x316f[11]]= _0x9cacx18[_0x316f[11]];_0x9cacx15[_0x316f[59]]= _0x9cacx18[_0x316f[59]]}else {if(_0x9cacx18[_0x316f[57]]=== _0x316f[60]){_0x9cacx15[_0x316f[61]]= _0x9cacx18[_0x316f[61]];_0x9cacx15[_0x316f[62]]= _0x9cacx18[_0x316f[62]];_0x9cacx15[_0x316f[63]]= _0x9cacx18[_0x316f[63]];_0x9cacx15[_0x316f[64]]= _0x9cacx18[_0x316f[64]]}};var _0x9cacx19=desk[_0x316f[65]](_0x9cacx15);_0x9cacx19[_0x316f[67]](_0x316f[72],function(_0x9cacx10,_0x9cacx1a,_0x9cacx1b){if(_0x9cacx10){return handleError(_0x9cacx7,_0x9cacx10)};return _0x9cacx7[_0x316f[32]](200)[_0x316f[75]](_0x9cacx1a[_0x316f[74]][_0x316f[73]])})})[_0x316f[33]](function(_0x9cacx10){return handleError(_0x9cacx7,_0x9cacx10)})};exports[_0x316f[76]]= function(_0x9cacx6,_0x9cacx7){DeskAccount[_0x316f[55]]({where:{id:_0x9cacx6[_0x316f[14]][_0x316f[47]]},individualHooks:true})[_0x316f[43]](function(){return _0x9cacx7[_0x316f[46]](204)})[_0x316f[33]](function(_0x9cacx10){return handleError(_0x9cacx7,_0x9cacx10)})};function stripTrailingSlash(_0x9cacx1e){if(_0x9cacx1e[_0x316f[77]](-1) === _0x316f[78]){return _0x9cacx1e[_0x316f[77]](0,_0x9cacx1e[_0x316f[79]]- 1)};return _0x9cacx1e}function handleError(_0x9cacx7,_0x9cacx10){logger[_0x316f[81]](_0x9cacx10[_0x316f[80]]);return _0x9cacx7[_0x316f[32]](500)[_0x316f[31]](_0x9cacx10)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/desk_account/desk_account.events.js b/server/api/desk_account/desk_account.events.js index 16dd710..66dc905 100644 --- a/server/api/desk_account/desk_account.events.js +++ b/server/api/desk_account/desk_account.events.js @@ -1 +1 @@ -var _0x9650=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x44\x65\x73\x6B\x41\x63\x63\x6F\x75\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x9650[0];const EventEmitter=require(_0x9650[1]);const DeskAccount=require(_0x9650[3])[_0x9650[2]];var DeskAccountEvents= new EventEmitter();DeskAccountEvents[_0x9650[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x9650[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x9650[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x9650[6]};for(var e in events){var event=events[e];DeskAccount[_0x9650[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xb382x8,_0xb382x9,_0xb382xa){DeskAccountEvents[_0x9650[10]](event+ _0x9650[8]+ _0xb382x8[_0x9650[9]],_0xb382x8);DeskAccountEvents[_0x9650[10]](event,_0xb382x8);_0xb382xa(null)}}module[_0x9650[11]]= DeskAccountEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/desk_account/desk_account.socket.js b/server/api/desk_account/desk_account.socket.js index 02ae7c9..66dc905 100644 --- a/server/api/desk_account/desk_account.socket.js +++ b/server/api/desk_account/desk_account.socket.js @@ -1 +1 @@ -var _0x53e4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x64\x65\x73\x6B\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x64\x65\x73\x6B\x5F\x61\x63\x63\x6F\x75\x6E\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x53e4[0];const DeskAccountEvents=require(_0x53e4[1]);var events=[_0x53e4[2],_0x53e4[3]];exports[_0x53e4[4]]= function(_0x90f5x3){for(var _0x90f5x4=0,_0x90f5x5=events[_0x53e4[5]];_0x90f5x4< _0x90f5x5;_0x90f5x4++){var _0x90f5x6=events[_0x90f5x4];var _0x90f5x7=createListener(_0x53e4[6]+ _0x90f5x6,_0x90f5x3);DeskAccountEvents[_0x53e4[7]](_0x90f5x6,_0x90f5x7);_0x90f5x3[_0x53e4[7]](_0x53e4[8],removeListener(_0x90f5x6,_0x90f5x7))}};function createListener(_0x90f5x6,_0x90f5x3){return function(_0x90f5x9){_0x90f5x3[_0x53e4[9]](_0x90f5x6,_0x90f5x9)}}function removeListener(_0x90f5x6,_0x90f5x7){return function(){DeskAccountEvents[_0x53e4[10]](_0x90f5x6,_0x90f5x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/desk_account/index.js b/server/api/desk_account/index.js index 4f59977..66dc905 100644 --- a/server/api/desk_account/index.js +++ b/server/api/desk_account/index.js @@ -1 +1 @@ -var _0xf15e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x64\x65\x73\x6B\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x63\x68\x65\x63\x6B","\x63\x68\x65\x63\x6B\x41\x63\x63\x6F\x75\x6E\x74","\x2F\x3A\x69\x64\x2F\x66\x69\x65\x6C\x64\x73","\x67\x65\x74\x46\x69\x65\x6C\x64\x73","\x2F\x76\x61\x6C\x69\x64\x61\x74\x65\x2F\x3A\x66\x69\x65\x6C\x64","\x64\x65\x73\x6B\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x70\x6F\x73\x74","\x63\x72\x65\x61\x74\x65","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0xf15e[0];var express=require(_0xf15e[1]);var controller=require(_0xf15e[2]);var auth=require(_0xf15e[3]);var router=express.Router();router[_0xf15e[9]](_0xf15e[4],auth[_0xf15e[5]](),auth[_0xf15e[7]]([19,13],[_0xf15e[6]]),controller[_0xf15e[8]]);router[_0xf15e[9]](_0xf15e[10],auth[_0xf15e[5]](),auth[_0xf15e[7]]([19],[_0xf15e[6]]),controller[_0xf15e[11]]);router[_0xf15e[9]](_0xf15e[12],auth[_0xf15e[5]](),auth[_0xf15e[7]]([19],[_0xf15e[6]]),controller[_0xf15e[13]]);router[_0xf15e[9]](_0xf15e[14],auth[_0xf15e[5]](),auth[_0xf15e[7]]([19],[_0xf15e[6]]),controller[_0xf15e[15]]);router[_0xf15e[18]](_0xf15e[16],auth[_0xf15e[5]](),auth[_0xf15e[7]]([19],[_0xf15e[6]]),controller[_0xf15e[17]]);router[_0xf15e[18]](_0xf15e[4],auth[_0xf15e[5]](),auth[_0xf15e[7]]([19],[_0xf15e[6]]),controller[_0xf15e[19]]);router[_0xf15e[21]](_0xf15e[10],auth[_0xf15e[5]](),auth[_0xf15e[7]]([19],[_0xf15e[6]]),controller[_0xf15e[20]]);router[_0xf15e[23]](_0xf15e[4],auth[_0xf15e[5]](),auth[_0xf15e[7]]([19],[_0xf15e[6]]),controller[_0xf15e[22]]);router[_0xf15e[23]](_0xf15e[10],auth[_0xf15e[5]](),auth[_0xf15e[7]]([19],[_0xf15e[6]]),controller[_0xf15e[24]]);module[_0xf15e[25]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/desk_configuration/desk_configuration.controller.js b/server/api/desk_configuration/desk_configuration.controller.js index ea32267..66dc905 100644 --- a/server/api/desk_configuration/desk_configuration.controller.js +++ b/server/api/desk_configuration/desk_configuration.controller.js @@ -1 +1 @@ -var _0x7412=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x44\x65\x73\x6B\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x44\x65\x73\x6B\x46\x69\x65\x6C\x64","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x53\x75\x62\x6A\x65\x63\x74","\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x46\x69\x65\x6C\x64","\x66\x69\x6E\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x66\x69\x6E\x64\x42\x79\x49\x64","\x61\x64\x64\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x46\x69\x65\x6C\x64","\x73\x70\x72\x65\x61\x64","\x61\x64\x64\x53\x75\x62\x6A\x65\x63\x74","\x73\x75\x62\x6A\x65\x63\x74","\x61\x64\x64\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x61\x64\x64\x46\x69\x65\x6C\x64","\x66\x69\x65\x6C\x64","\x74\x79\x70\x65"];_0x7412[0];var _=require(_0x7412[1]);var logger=require(_0x7412[3])(_0x7412[2]);var DeskConfiguration=require(_0x7412[5])[_0x7412[4]];var DeskField=require(_0x7412[5])[_0x7412[6]];function handleError(_0x543ex6,_0x543ex7){_0x543ex7= _0x543ex7|| 500;return function(_0x543ex8){logger[_0x7412[8]](_0x543ex8[_0x7412[7]]);_0x543ex6[_0x7412[10]](_0x543ex7)[_0x7412[9]](_0x543ex8)}}function responseWithResult(_0x543ex6,_0x543ex7){_0x543ex7= _0x543ex7|| 200;return function(_0x543exa){if(_0x543exa){_0x543ex6[_0x7412[10]](_0x543ex7)[_0x7412[11]](_0x543exa)}}}function handleEntityNotFound(_0x543ex6){return function(_0x543exa){if(!_0x543exa){_0x543ex6[_0x7412[10]](404)[_0x7412[12]]();return null};return _0x543exa}}function saveUpdates(_0x543exd){return function(_0x543exa){return _0x543exa[_0x7412[14]](_0x543exd)[_0x7412[13]](function(_0x543exe){return _0x543exe})}}function removeEntity(_0x543ex6){return function(_0x543exa){if(_0x543exa){return _0x543exa[_0x7412[15]]()[_0x7412[13]](function(){_0x543ex6[_0x7412[10]](204)[_0x7412[12]]()})}}}exports[_0x7412[16]]= function(_0x543ex10,_0x543ex6){DeskConfiguration[_0x7412[19]]({where:_0x543ex10[_0x7412[18]]})[_0x7412[13]](responseWithResult(_0x543ex6))[_0x7412[17]](handleError(_0x543ex6))};exports[_0x7412[20]]= function(_0x543ex10,_0x543ex6){DeskConfiguration[_0x7412[26]]({where:{id:_0x543ex10[_0x7412[22]][_0x7412[21]]},include:[{model:DeskField,as:_0x7412[23]},{model:DeskField,as:_0x7412[24]},{model:DeskField,as:_0x7412[25]}]})[_0x7412[13]](handleEntityNotFound(_0x543ex6))[_0x7412[13]](responseWithResult(_0x543ex6))[_0x7412[17]](handleError(_0x543ex6))};exports[_0x7412[27]]= function(_0x543ex10,_0x543ex6){DeskConfiguration[_0x7412[27]](_0x543ex10[_0x7412[28]])[_0x7412[13]](responseWithResult(_0x543ex6,201))[_0x7412[17]](handleError(_0x543ex6))};exports[_0x7412[29]]= function(_0x543ex10,_0x543ex6){if(_0x543ex10[_0x7412[28]][_0x7412[21]]){delete _0x543ex10[_0x7412[28]][_0x7412[21]]};DeskConfiguration[_0x7412[30]](_0x543ex10[_0x7412[22]][_0x7412[21]])[_0x7412[13]](handleEntityNotFound(_0x543ex6))[_0x7412[13]](saveUpdates(_0x543ex10[_0x7412[28]]))[_0x7412[13]](responseWithResult(_0x543ex6))[_0x7412[17]](handleError(_0x543ex6))};exports[_0x7412[15]]= function(_0x543ex10,_0x543ex6){DeskConfiguration[_0x7412[30]](_0x543ex10[_0x7412[22]][_0x7412[21]])[_0x7412[13]](handleEntityNotFound(_0x543ex6))[_0x7412[13]](removeEntity(_0x543ex6))[_0x7412[17]](handleError(_0x543ex6))};exports[_0x7412[31]]= function(_0x543ex10,_0x543ex6,_0x543ex11){var _0x543ex12;DeskConfiguration[_0x7412[30]](_0x543ex10[_0x7412[22]][_0x7412[21]])[_0x7412[13]](handleEntityNotFound(_0x543ex6))[_0x7412[13]](function(_0x543ex15){_0x543ex12= _0x543ex15;return DeskField[_0x7412[27]](_0x543ex10[_0x7412[28]])})[_0x7412[13]](function(_0x543ex14){switch(_0x543ex10[_0x7412[22]][_0x7412[39]]){case _0x7412[34]:return [_0x543ex12[_0x7412[33]](_0x543ex14),_0x543ex14];case _0x7412[36]:return [_0x543ex12[_0x7412[35]](_0x543ex14),_0x543ex14];case _0x7412[38]:return [_0x543ex12[_0x7412[37]](_0x543ex14),_0x543ex14]}})[_0x7412[32]](function(_0x543ex13,_0x543ex14){return _0x543ex6[_0x7412[10]](201)[_0x7412[11]](_0x543ex14)})[_0x7412[17]](handleError(_0x543ex6))} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/desk_configuration/desk_configuration.events.js b/server/api/desk_configuration/desk_configuration.events.js index 216755d..66dc905 100644 --- a/server/api/desk_configuration/desk_configuration.events.js +++ b/server/api/desk_configuration/desk_configuration.events.js @@ -1 +1 @@ -var _0x102b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x44\x65\x73\x6B\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x102b[0];const EventEmitter=require(_0x102b[1]);const DeskConfiguration=require(_0x102b[3])[_0x102b[2]];var DeskConfigurationEvents= new EventEmitter();DeskConfigurationEvents[_0x102b[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x102b[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x102b[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x102b[6]};for(var e in events){var event=events[e];DeskConfiguration[_0x102b[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xe9f9x8,_0xe9f9x9,_0xe9f9xa){DeskConfigurationEvents[_0x102b[10]](event+ _0x102b[8]+ _0xe9f9x8[_0x102b[9]],_0xe9f9x8);DeskConfigurationEvents[_0x102b[10]](event,_0xe9f9x8);_0xe9f9xa(null)}}module[_0x102b[11]]= DeskConfigurationEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/desk_configuration/desk_configuration.socket.js b/server/api/desk_configuration/desk_configuration.socket.js index 2fdfb9a..66dc905 100644 --- a/server/api/desk_configuration/desk_configuration.socket.js +++ b/server/api/desk_configuration/desk_configuration.socket.js @@ -1 +1 @@ -var _0xb055=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x64\x65\x73\x6B\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x64\x65\x73\x6B\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xb055[0];const DeskConfigurationEvents=require(_0xb055[1]);var events=[_0xb055[2],_0xb055[3]];exports[_0xb055[4]]= function(_0xb4a9x3){for(var _0xb4a9x4=0,_0xb4a9x5=events[_0xb055[5]];_0xb4a9x4< _0xb4a9x5;_0xb4a9x4++){var _0xb4a9x6=events[_0xb4a9x4];var _0xb4a9x7=createListener(_0xb055[6]+ _0xb4a9x6,_0xb4a9x3);DeskConfigurationEvents[_0xb055[7]](_0xb4a9x6,_0xb4a9x7);_0xb4a9x3[_0xb055[7]](_0xb055[8],removeListener(_0xb4a9x6,_0xb4a9x7))}};function createListener(_0xb4a9x6,_0xb4a9x3){return function(_0xb4a9x9){_0xb4a9x3[_0xb055[9]](_0xb4a9x6,_0xb4a9x9)}}function removeListener(_0xb4a9x6,_0xb4a9x7){return function(){DeskConfigurationEvents[_0xb055[10]](_0xb4a9x6,_0xb4a9x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/desk_configuration/index.js b/server/api/desk_configuration/index.js index 44d9848..66dc905 100644 --- a/server/api/desk_configuration/index.js +++ b/server/api/desk_configuration/index.js @@ -1 +1 @@ -var _0xc208=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x64\x65\x73\x6B\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x2F\x3A\x69\x64\x2F\x3A\x74\x79\x70\x65","\x61\x64\x64\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x46\x69\x65\x6C\x64","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xc208[0];var express=require(_0xc208[1]);var auth=require(_0xc208[2]);var controller=require(_0xc208[3]);var router=express.Router();router[_0xc208[7]](_0xc208[4],auth[_0xc208[5]](),controller[_0xc208[6]]);router[_0xc208[7]](_0xc208[8],auth[_0xc208[5]](),auth[_0xc208[10]]([19],[_0xc208[9]]),controller[_0xc208[11]]);router[_0xc208[13]](_0xc208[4],auth[_0xc208[5]](),auth[_0xc208[10]]([19],[_0xc208[9]]),controller[_0xc208[12]]);router[_0xc208[15]](_0xc208[8],auth[_0xc208[5]](),auth[_0xc208[10]]([19],[_0xc208[9]]),controller[_0xc208[14]]);router[_0xc208[13]](_0xc208[16],auth[_0xc208[5]](),auth[_0xc208[10]]([19],[_0xc208[9]]),controller[_0xc208[17]]);router[_0xc208[19]](_0xc208[8],auth[_0xc208[5]](),auth[_0xc208[10]]([19],[_0xc208[9]]),controller[_0xc208[18]]);module[_0xc208[20]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/desk_field/desk_field.controller.js b/server/api/desk_field/desk_field.controller.js index c996646..66dc905 100644 --- a/server/api/desk_field/desk_field.controller.js +++ b/server/api/desk_field/desk_field.controller.js @@ -1 +1 @@ -var _0xf2f9=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x44\x65\x73\x6B\x46\x69\x65\x6C\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65"];_0xf2f9[0];var _=require(_0xf2f9[1]);var logger=require(_0xf2f9[3])(_0xf2f9[2]);var DeskField=require(_0xf2f9[5])[_0xf2f9[4]];function handleError(_0xd034x5,_0xd034x6){_0xd034x6= _0xd034x6|| 500;return function(_0xd034x7){logger[_0xf2f9[7]](_0xd034x7[_0xf2f9[6]]);_0xd034x5[_0xf2f9[9]](_0xd034x6)[_0xf2f9[8]](_0xd034x7)}}function responseWithResult(_0xd034x5,_0xd034x6){_0xd034x6= _0xd034x6|| 200;return function(_0xd034x9){if(_0xd034x9){_0xd034x5[_0xf2f9[9]](_0xd034x6)[_0xf2f9[10]](_0xd034x9)}}}function handleEntityNotFound(_0xd034x5){return function(_0xd034x9){if(!_0xd034x9){_0xd034x5[_0xf2f9[9]](404)[_0xf2f9[11]]();return null};return _0xd034x9}}function saveUpdates(_0xd034xc){return function(_0xd034x9){return _0xd034x9[_0xf2f9[13]](_0xd034xc)[_0xf2f9[12]](function(_0xd034xd){return _0xd034xd})}}function removeEntity(_0xd034x5){return function(_0xd034x9){if(_0xd034x9){return _0xd034x9[_0xf2f9[14]]()[_0xf2f9[12]](function(){_0xd034x5[_0xf2f9[9]](204)[_0xf2f9[11]]()})}}}exports[_0xf2f9[15]]= function(_0xd034xf,_0xd034x5){DeskField[_0xf2f9[17]]()[_0xf2f9[12]](responseWithResult(_0xd034x5))[_0xf2f9[16]](handleError(_0xd034x5))};exports[_0xf2f9[18]]= function(_0xd034xf,_0xd034x5){DeskField[_0xf2f9[21]](_0xd034xf[_0xf2f9[20]][_0xf2f9[19]])[_0xf2f9[12]](handleEntityNotFound(_0xd034x5))[_0xf2f9[12]](responseWithResult(_0xd034x5))[_0xf2f9[16]](handleError(_0xd034x5))};exports[_0xf2f9[22]]= function(_0xd034xf,_0xd034x5){DeskField[_0xf2f9[22]](_0xd034xf[_0xf2f9[23]])[_0xf2f9[12]](responseWithResult(_0xd034x5,201))[_0xf2f9[16]](handleError(_0xd034x5))};exports[_0xf2f9[24]]= function(_0xd034xf,_0xd034x5){if(_0xd034xf[_0xf2f9[23]][_0xf2f9[19]]){delete _0xd034xf[_0xf2f9[23]][_0xf2f9[19]]};DeskField[_0xf2f9[21]](_0xd034xf[_0xf2f9[20]][_0xf2f9[19]])[_0xf2f9[12]](handleEntityNotFound(_0xd034x5))[_0xf2f9[12]](saveUpdates(_0xd034xf[_0xf2f9[23]]))[_0xf2f9[12]](responseWithResult(_0xd034x5))[_0xf2f9[16]](handleError(_0xd034x5))};exports[_0xf2f9[14]]= function(_0xd034xf,_0xd034x5){DeskField[_0xf2f9[21]](_0xd034xf[_0xf2f9[20]][_0xf2f9[19]])[_0xf2f9[12]](handleEntityNotFound(_0xd034x5))[_0xf2f9[12]](removeEntity(_0xd034x5))[_0xf2f9[16]](handleError(_0xd034x5))} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/desk_field/desk_field.events.js b/server/api/desk_field/desk_field.events.js index 5d91fed..66dc905 100644 --- a/server/api/desk_field/desk_field.events.js +++ b/server/api/desk_field/desk_field.events.js @@ -1 +1 @@ -var _0x27f4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x44\x65\x73\x6B\x46\x69\x65\x6C\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x27f4[0];const EventEmitter=require(_0x27f4[1]);const DeskField=require(_0x27f4[3])[_0x27f4[2]];var DeskFieldEvents= new EventEmitter();DeskFieldEvents[_0x27f4[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x27f4[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x27f4[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x27f4[6]};for(var e in events){var event=events[e];DeskField[_0x27f4[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x3442x8,_0x3442x9,_0x3442xa){DeskFieldEvents[_0x27f4[10]](event+ _0x27f4[8]+ _0x3442x8[_0x27f4[9]],_0x3442x8);DeskFieldEvents[_0x27f4[10]](event,_0x3442x8);_0x3442xa(null)}}module[_0x27f4[11]]= DeskFieldEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/desk_field/desk_field.socket.js b/server/api/desk_field/desk_field.socket.js index 4caca86..66dc905 100644 --- a/server/api/desk_field/desk_field.socket.js +++ b/server/api/desk_field/desk_field.socket.js @@ -1 +1 @@ -var _0x9d75=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x64\x65\x73\x6B\x5F\x66\x69\x65\x6C\x64\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x64\x65\x73\x6B\x5F\x66\x69\x65\x6C\x64\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x9d75[0];const DeskFieldEvents=require(_0x9d75[1]);var events=[_0x9d75[2],_0x9d75[3]];exports[_0x9d75[4]]= function(_0xddecx3){for(var _0xddecx4=0,_0xddecx5=events[_0x9d75[5]];_0xddecx4< _0xddecx5;_0xddecx4++){var _0xddecx6=events[_0xddecx4];var _0xddecx7=createListener(_0x9d75[6]+ _0xddecx6,_0xddecx3);DeskFieldEvents[_0x9d75[7]](_0xddecx6,_0xddecx7);_0xddecx3[_0x9d75[7]](_0x9d75[8],removeListener(_0xddecx6,_0xddecx7))}};function createListener(_0xddecx6,_0xddecx3){return function(_0xddecx9){_0xddecx3[_0x9d75[9]](_0xddecx6,_0xddecx9)}}function removeListener(_0xddecx6,_0xddecx7){return function(){DeskFieldEvents[_0x9d75[10]](_0xddecx6,_0xddecx7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/desk_field/index.js b/server/api/desk_field/index.js index e88e8cd..66dc905 100644 --- a/server/api/desk_field/index.js +++ b/server/api/desk_field/index.js @@ -1 +1 @@ -var _0x7744=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x64\x65\x73\x6B\x5F\x66\x69\x65\x6C\x64\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x7744[0];var express=require(_0x7744[1]);var auth=require(_0x7744[2]);var controller=require(_0x7744[3]);var router=express.Router();router[_0x7744[9]](_0x7744[4],auth[_0x7744[5]](),auth[_0x7744[7]]([19],[_0x7744[6]]),controller[_0x7744[8]]);router[_0x7744[9]](_0x7744[10],auth[_0x7744[5]](),auth[_0x7744[7]]([19],[_0x7744[6]]),controller[_0x7744[11]]);router[_0x7744[13]](_0x7744[4],auth[_0x7744[5]](),auth[_0x7744[7]]([19],[_0x7744[6]]),controller[_0x7744[12]]);router[_0x7744[15]](_0x7744[10],auth[_0x7744[5]](),auth[_0x7744[7]]([19],[_0x7744[6]]),controller[_0x7744[14]]);router[_0x7744[17]](_0x7744[10],auth[_0x7744[5]](),auth[_0x7744[7]]([19],[_0x7744[6]]),controller[_0x7744[16]]);module[_0x7744[18]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/extracted_report/extracted_report.controller.js b/server/api/extracted_report/extracted_report.controller.js index 06a68ed..66dc905 100644 --- a/server/api/extracted_report/extracted_report.controller.js +++ b/server/api/extracted_report/extracted_report.controller.js @@ -1 +1 @@ -var _0x260c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x45\x78\x74\x72\x61\x63\x74\x65\x64\x52\x65\x70\x6F\x72\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x75\x74\x69\x6C","\x70\x61\x74\x68","\x6D\x6F\x6D\x65\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x66\x69\x6C\x65\x2D\x62\x61\x73\x65\x36\x34","\x66\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x69\x64","\x75\x73\x65\x72","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x72\x6F\x6C\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x72\x6F\x6F\x74","\x73\x65\x72\x76\x65\x72","\x66\x69\x6C\x65\x73","\x72\x65\x70\x6F\x72\x74\x73","\x73\x61\x76\x65\x6E\x61\x6D\x65","\x6A\x6F\x69\x6E","\x65\x6E\x63\x6F\x64\x65","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x6E\x61\x6D\x65","\x66\x69\x6E\x64\x41\x6C\x6C","\x64\x65\x73\x74\x72\x6F\x79","\x52\x5F\x4F\x4B","\x57\x5F\x4F\x4B","\x46\x69\x6C\x65\x20\x64\x6F\x65\x73\x20\x6E\x6F\x74\x20\x65\x78\x69\x73\x74\x20\x6F\x72\x20\x6F\x70\x65\x72\x61\x74\x69\x6F\x6E\x20\x6E\x6F\x74\x20\x70\x65\x72\x6D\x69\x74\x74\x65\x64","\x65\x72\x72\x6F\x72","\x65\x72\x72\x6F\x72\x20\x64\x65\x6C\x65\x74\x69\x6E\x67\x20\x66\x69\x6C\x65\x20\x3A","\x66\x69\x6C\x65\x20\x64\x65\x6C\x65\x74\x65\x64","\x64\x65\x62\x75\x67","\x75\x6E\x6C\x69\x6E\x6B","\x61\x63\x63\x65\x73\x73","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x66\x6F\x72\x45\x61\x63\x68","\x61\x6C\x6C","\x70\x75\x73\x68","\x69\x64\x73","\x73\x74\x61\x63\x6B"];_0x260c[0];var _=require(_0x260c[1]);var ExtractedReport=require(_0x260c[3])[_0x260c[2]];var util=require(_0x260c[4]);var path=require(_0x260c[5]);var moment=require(_0x260c[6]);var config=require(_0x260c[7]);var base64=require(_0x260c[8]);var fs=require(_0x260c[9]);var Util=require(_0x260c[10]);var logger=require(_0x260c[12])(_0x260c[11]);exports[_0x260c[13]]= function(_0xf4d5xb,_0xf4d5xc,_0xf4d5xd){switch(_0xf4d5xb[_0x260c[20]][_0x260c[23]]){case _0x260c[20]:return ExtractedReport[_0x260c[22]](Util[_0x260c[21]](_0xf4d5xb[_0x260c[18]],{UserId:_0xf4d5xb[_0x260c[20]][_0x260c[19]]}))[_0x260c[17]](function(_0xf4d5xf){_0xf4d5xc[_0x260c[16]](200)[_0x260c[15]](_0xf4d5xf)})[_0x260c[14]](function(_0xf4d5xe){return handleError(_0xf4d5xc,_0xf4d5xe)});default:return ExtractedReport[_0x260c[22]](Util[_0x260c[21]](_0xf4d5xb[_0x260c[18]]))[_0x260c[17]](function(_0xf4d5xf){_0xf4d5xc[_0x260c[16]](200)[_0x260c[15]](_0xf4d5xf)})[_0x260c[14]](function(_0xf4d5xe){return handleError(_0xf4d5xc,_0xf4d5xe)})}};exports[_0x260c[24]]= function(_0xf4d5xb,_0xf4d5xc){return ExtractedReport[_0x260c[27]](_0xf4d5xb[_0x260c[26]][_0x260c[19]])[_0x260c[17]](function(_0xf4d5x10){if(!_0xf4d5x10){return _0xf4d5xc[_0x260c[25]](404)};return _0xf4d5xc[_0x260c[15]](_0xf4d5x10)})[_0x260c[14]](function(_0xf4d5xe){return handleError(_0xf4d5xc,_0xf4d5xe)})};exports[_0x260c[28]]= function(_0xf4d5xb,_0xf4d5xc){return ExtractedReport[_0x260c[27]](_0xf4d5xb[_0x260c[26]][_0x260c[19]])[_0x260c[17]](function(_0xf4d5x11){if(!_0xf4d5x11){return _0xf4d5xc[_0x260c[16]](404)[_0x260c[15]](_0xf4d5x11)};var _0xf4d5x12=path[_0x260c[34]](config[_0x260c[29]],_0x260c[30],_0x260c[31],_0x260c[32],_0xf4d5x11[_0x260c[33]]);base64[_0x260c[35]](_0xf4d5x12,function(_0xf4d5xe,_0xf4d5x13){if(_0xf4d5xe){return handleError(_0xf4d5xc,_0xf4d5xe)}else {return _0xf4d5xc[_0x260c[16]](200)[_0x260c[15]]({downloadString:_0xf4d5x13})}})})[_0x260c[14]](function(_0xf4d5xe){return handleError(_0xf4d5xc,_0xf4d5xe)})};exports[_0x260c[36]]= function(_0xf4d5xb,_0xf4d5xc){return ExtractedReport[_0x260c[36]](_0xf4d5xb[_0x260c[37]])[_0x260c[17]](function(_0xf4d5x10){return _0xf4d5xc[_0x260c[16]](201)[_0x260c[15]](_0xf4d5x10)})[_0x260c[14]](function(_0xf4d5xe){return handleError(_0xf4d5xc,_0xf4d5xe)})};exports[_0x260c[38]]= function(_0xf4d5xb,_0xf4d5xc){return ExtractedReport[_0x260c[42]]({where:{name:_0xf4d5xb[_0x260c[37]][_0x260c[41]],id:{$ne:_0xf4d5xb[_0x260c[37]][_0x260c[19]]}}})[_0x260c[17]](function(_0xf4d5x15){if(!_0xf4d5x15){return _0xf4d5xc[_0x260c[25]](404)};if(_0xf4d5xb[_0x260c[37]][_0x260c[19]]){delete _0xf4d5xb[_0x260c[37]][_0x260c[19]]};return ExtractedReport[_0x260c[27]](_0xf4d5xb[_0x260c[26]][_0x260c[19]])})[_0x260c[17]](function(_0xf4d5x10){if(!_0xf4d5x10){return _0xf4d5xc[_0x260c[25]](404)};var _0xf4d5x14=_[_0x260c[39]](_0xf4d5x10,_0xf4d5xb[_0x260c[37]]);return _0xf4d5x14[_0x260c[40]]()})[_0x260c[17]](function(_0xf4d5x10){return _0xf4d5xc[_0x260c[16]](200)[_0x260c[15]](_0xf4d5x10)})[_0x260c[14]](function(_0xf4d5xe){return handleError(_0xf4d5xc,_0xf4d5xe)})};exports[_0x260c[43]]= function(_0xf4d5xb,_0xf4d5xc){var _0xf4d5x16;return ExtractedReport[_0x260c[27]](_0xf4d5xb[_0x260c[26]][_0x260c[19]])[_0x260c[17]](function(_0xf4d5x10){_0xf4d5x16= _0xf4d5x10;if(!_0xf4d5x10){return _0xf4d5xc[_0x260c[25]](404)};return _0xf4d5x10[_0x260c[43]]()})[_0x260c[17]](function(){if(_0xf4d5x16[_0x260c[33]]){var _0xf4d5x12=path[_0x260c[34]](config[_0x260c[29]],_0x260c[30],_0x260c[31],_0x260c[32],_0xf4d5x16[_0x260c[33]]);fs[_0x260c[52]](_0xf4d5x12,fs[_0x260c[44]]| fs[_0x260c[45]],function(_0xf4d5xe){if(_0xf4d5xe){logger[_0x260c[47]](_0x260c[46])}else {fs[_0x260c[51]](_0xf4d5x12,function(_0xf4d5xe){if(_0xf4d5xe){logger[_0x260c[47]](_0x260c[48],_0xf4d5xe)}else {logger[_0x260c[50]](_0x260c[49])}})}})};return _0xf4d5xc[_0x260c[25]](204)})[_0x260c[14]](function(_0xf4d5xe){return handleError(_0xf4d5xc,_0xf4d5xe)})};exports[_0x260c[53]]= function(_0xf4d5xb,_0xf4d5xc){var _0xf4d5x17;return ExtractedReport[_0x260c[42]]({where:{id:_0xf4d5xb[_0x260c[18]][_0x260c[57]]}})[_0x260c[17]](function(_0xf4d5x18){_0xf4d5x17= _0xf4d5x18;var _0xf4d5x19=[];_0xf4d5x18[_0x260c[54]](function(_0xf4d5x10){_0xf4d5x19[_0x260c[56]](_0xf4d5x10[_0x260c[43]]())});return _0xf4d5x19})[_0x260c[55]]()[_0x260c[17]](function(){_0xf4d5x17[_0x260c[54]](function(_0xf4d5x10){if(_0xf4d5x10[_0x260c[33]]){var _0xf4d5x12=path[_0x260c[34]](config[_0x260c[29]],_0x260c[30],_0x260c[31],_0x260c[32],_0xf4d5x10[_0x260c[33]]);fs[_0x260c[52]](_0xf4d5x12,fs[_0x260c[44]]| fs[_0x260c[45]],function(_0xf4d5xe){if(_0xf4d5xe){logger[_0x260c[47]](_0x260c[46])}else {fs[_0x260c[51]](_0xf4d5x12,function(_0xf4d5xe){if(_0xf4d5xe){logger[_0x260c[47]](_0x260c[48],_0xf4d5xe)}else {logger[_0x260c[50]](_0x260c[49])}})}})}});return _0xf4d5xc[_0x260c[25]](204)})[_0x260c[14]](function(_0xf4d5xe){return handleError(_0xf4d5xc,_0xf4d5xe)})};function handleError(_0xf4d5xc,_0xf4d5xe){logger[_0x260c[47]](_0xf4d5xe[_0x260c[58]]);return _0xf4d5xc[_0x260c[16]](500)[_0x260c[15]](_0xf4d5xe)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/extracted_report/extracted_report.events.js b/server/api/extracted_report/extracted_report.events.js index 9f1fd03..66dc905 100644 --- a/server/api/extracted_report/extracted_report.events.js +++ b/server/api/extracted_report/extracted_report.events.js @@ -1 +1 @@ -var _0x4f34=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x45\x78\x74\x72\x61\x63\x74\x65\x64\x52\x65\x70\x6F\x72\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x4f34[0];const EventEmitter=require(_0x4f34[1]);const ExtractedReport=require(_0x4f34[3])[_0x4f34[2]];var ExtractedReportEvents= new EventEmitter();ExtractedReportEvents[_0x4f34[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x4f34[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x4f34[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x4f34[6]};for(var e in events){var event=events[e];ExtractedReport[_0x4f34[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xf2f0x8,_0xf2f0x9,_0xf2f0xa){ExtractedReportEvents[_0x4f34[10]](event+ _0x4f34[8]+ _0xf2f0x8[_0x4f34[9]],_0xf2f0x8);ExtractedReportEvents[_0x4f34[10]](event,_0xf2f0x8);_0xf2f0xa(null)}}module[_0x4f34[11]]= ExtractedReportEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/extracted_report/extracted_report.socket.js b/server/api/extracted_report/extracted_report.socket.js index 989a42a..66dc905 100644 --- a/server/api/extracted_report/extracted_report.socket.js +++ b/server/api/extracted_report/extracted_report.socket.js @@ -1 +1 @@ -var _0x3491=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x65\x78\x74\x72\x61\x63\x74\x65\x64\x5F\x72\x65\x70\x6F\x72\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x65\x78\x74\x72\x61\x63\x74\x65\x64\x5F\x72\x65\x70\x6F\x72\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x3491[0];const ExtractedReportEvents=require(_0x3491[1]);var events=[_0x3491[2],_0x3491[3]];exports[_0x3491[4]]= function(_0x85d0x3){for(var _0x85d0x4=0,_0x85d0x5=events[_0x3491[5]];_0x85d0x4< _0x85d0x5;_0x85d0x4++){var _0x85d0x6=events[_0x85d0x4];var _0x85d0x7=createListener(_0x3491[6]+ _0x85d0x6,_0x85d0x3);ExtractedReportEvents[_0x3491[7]](_0x85d0x6,_0x85d0x7);_0x85d0x3[_0x3491[7]](_0x3491[8],removeListener(_0x85d0x6,_0x85d0x7))}};function createListener(_0x85d0x6,_0x85d0x3){return function(_0x85d0x9){_0x85d0x3[_0x3491[9]](_0x85d0x6,_0x85d0x9)}}function removeListener(_0x85d0x6,_0x85d0x7){return function(){ExtractedReportEvents[_0x3491[10]](_0x85d0x6,_0x85d0x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/extracted_report/index.js b/server/api/extracted_report/index.js index 53a9774..66dc905 100644 --- a/server/api/extracted_report/index.js +++ b/server/api/extracted_report/index.js @@ -1 +1 @@ -var _0x1244=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x65\x78\x74\x72\x61\x63\x74\x65\x64\x5F\x72\x65\x70\x6F\x72\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64\x2F\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x1244[0];var express=require(_0x1244[1]);var controller=require(_0x1244[2]);var auth=require(_0x1244[3]);var router=express.Router();router[_0x1244[9]](_0x1244[4],auth[_0x1244[5]](),auth[_0x1244[7]]([17],[_0x1244[6]]),controller[_0x1244[8]]);router[_0x1244[9]](_0x1244[10],auth[_0x1244[5]](),auth[_0x1244[7]]([17],[_0x1244[6]]),controller[_0x1244[11]]);router[_0x1244[9]](_0x1244[12],auth[_0x1244[5]](),auth[_0x1244[7]]([17],[_0x1244[6]]),controller[_0x1244[13]]);router[_0x1244[15]](_0x1244[4],auth[_0x1244[5]](),auth[_0x1244[7]]([17],[_0x1244[6]]),controller[_0x1244[14]]);router[_0x1244[17]](_0x1244[12],auth[_0x1244[5]](),auth[_0x1244[7]]([17],[_0x1244[6]]),controller[_0x1244[16]]);router[_0x1244[19]](_0x1244[4],auth[_0x1244[5]](),auth[_0x1244[7]]([17],[_0x1244[6]]),controller[_0x1244[18]]);router[_0x1244[19]](_0x1244[12],auth[_0x1244[5]](),auth[_0x1244[7]]([17],[_0x1244[6]]),controller[_0x1244[20]]);module[_0x1244[21]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_account/fax_account.controller.js b/server/api/fax_account/fax_account.controller.js index 6c74b16..66dc905 100644 --- a/server/api/fax_account/fax_account.controller.js +++ b/server/api/fax_account/fax_account.controller.js @@ -1 +1 @@ -var _0x232e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x46\x61\x78\x41\x63\x63\x6F\x75\x6E\x74","\x46\x61\x78\x52\x6F\x6F\x6D","\x46\x61\x78\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x46\x61\x78\x51\x75\x65\x75\x65","\x46\x61\x78\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x46\x61\x78\x4D\x65\x73\x73\x61\x67\x65","\x46\x61\x78\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x55\x73\x65\x72","\x49\x6E\x74\x65\x72\x76\x61\x6C","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x68\x61\x6E\x64\x6C\x65\x55\x6E\x69\x71\x75\x65\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x65\x72\x72\x6F\x72\x4D\x61\x6E\x61\x67\x65\x72","\x6D\x65\x73\x73\x61\x67\x65","\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E\x2F\x63\x6F\x6E\x74\x65\x78\x74\x20\x63\x6F\x6D\x62\x69\x6E\x61\x74\x69\x6F\x6E\x20\x61\x6C\x72\x65\x61\x64\x79\x20\x65\x78\x69\x73\x74","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x64\x4D\x65\x73\x73\x61\x67\x65","\x4D\x45\x53\x53\x41\x47\x45\x5F\x45\x58\x49\x53\x54\x5F\x52\x4F\x55\x54\x45","\x62\x6F\x64\x79","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x6C\x65\x6E\x67\x74\x68","\x6E\x61\x6D\x65","\x6F\x6E\x6C\x69\x6E\x65","\x70\x72\x69\x6F\x72\x69\x74\x79\x20\x41\x53\x43","\x6D\x65\x72\x67\x65","\x67\x65\x74\x46\x61\x78\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x64\x65\x66\x61\x75\x6C\x74","\x73\x63\x6F\x70\x65","\x63\x72\x65\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x70\x72\x69\x6F\x72\x69\x74\x79","\x46\x61\x78\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x6D\x61\x78","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x64\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x61\x70\x70\x49\x64","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x75\x70\x64\x61\x74\x65\x64\x41\x74","\x66\x6F\x72\x45\x61\x63\x68","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x67\x65\x74\x46\x61\x78\x52\x6F\x6F\x6D\x73","\x63\x6F\x6E\x74\x61\x63\x74","\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x74\x61\x67\x73","\x6C\x61\x73\x74\x45\x76\x65\x6E\x74","\x69\x73\x41\x72\x72\x61\x79","\x25","\x70\x75\x73\x68","\x24\x61\x6E\x64","\x77\x68\x65\x72\x65","\x69\x6E\x63\x6C\x75\x64\x65","\x61\x67\x65\x6E\x74","\x66\x69\x6E\x64","\x55\x73\x65\x72\x49\x64","\x6D\x61\x70","\x71\x75\x65\x75\x65","\x46\x61\x78\x51\x75\x65\x75\x65\x49\x64","\x69\x6E\x74\x65\x72\x73\x65\x63\x74\x69\x6F\x6E","\x75\x73\x65\x72","\x66\x69\x6E\x64\x41\x6C\x6C","\x67\x65\x74\x46\x61\x78\x51\x75\x65\x75\x65\x73","\x72\x6F\x6C\x65","\x67\x65\x74\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x67\x65\x74\x46\x61\x78\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x63\x72\x65\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x73\x61\x76\x65","\x64\x69\x73\x70\x49\x64","\x64\x65\x73\x74\x72\x6F\x79\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x73\x65\x6E\x64\x4D\x65\x73\x73\x61\x67\x65","\x66\x61\x78\x4D\x65\x73\x73\x61\x67\x65\x41\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x61\x6D\x69","\x6C\x6F\x63\x61\x6C\x73","\x61\x70\x70"];_0x232e[0];var _=require(_0x232e[1]);var Util=require(_0x232e[2]);var logger=require(_0x232e[4])(_0x232e[3]);var sequelize=require(_0x232e[6])[_0x232e[5]];var FaxAccount=require(_0x232e[6])[_0x232e[7]];var FaxRoom=require(_0x232e[6])[_0x232e[8]];var FaxApplication=require(_0x232e[6])[_0x232e[9]];var FaxQueue=require(_0x232e[6])[_0x232e[10]];var FaxDisposition=require(_0x232e[6])[_0x232e[11]];var FaxMessage=require(_0x232e[6])[_0x232e[12]];var FaxAttachment=require(_0x232e[6])[_0x232e[13]];var User=require(_0x232e[6])[_0x232e[14]];var Interval=require(_0x232e[6])[_0x232e[15]];function handleError(_0x656bxf,_0x656bx10){_0x656bx10= _0x656bx10|| 500;return function(_0x656bx11){logger[_0x232e[17]](_0x656bx11[_0x232e[16]]);_0x656bxf[_0x232e[19]](_0x656bx10)[_0x232e[18]](_0x656bx11)}}function responseWithResult(_0x656bxf,_0x656bx10){_0x656bx10= _0x656bx10|| 200;return function(_0x656bx13){if(_0x656bx13){_0x656bxf[_0x232e[19]](_0x656bx10)[_0x232e[20]](_0x656bx13)}}}function responseWithoutResult(_0x656bxf,_0x656bx10){_0x656bx10= _0x656bx10|| 204;return function(){_0x656bxf[_0x232e[21]](_0x656bx10)}}function handleEntityNotFound(_0x656bxf){return function(_0x656bx13){if(!_0x656bx13){_0x656bxf[_0x232e[19]](404)[_0x232e[22]]();return null};return _0x656bx13}}function saveUpdates(_0x656bx17){return function(_0x656bx13){return _0x656bx13[_0x232e[24]](_0x656bx17)[_0x232e[23]](function(_0x656bx18){return _0x656bx18})}}function removeEntity(_0x656bxf){return function(_0x656bx13){if(_0x656bx13){return _0x656bx13[_0x232e[25]]()[_0x232e[23]](function(){_0x656bxf[_0x232e[19]](204)[_0x232e[22]]()})}}}exports[_0x232e[26]]= function(_0x656bx1a,_0x656bxf){return FaxAccount[_0x232e[30]](Util[_0x232e[29]](_0x656bx1a[_0x232e[28]]))[_0x232e[23]](responseWithResult(_0x656bxf))[_0x232e[27]](handleError(_0x656bxf))};exports[_0x232e[31]]= function(_0x656bx1a,_0x656bxf){return FaxAccount[_0x232e[34]](_0x656bx1a[_0x232e[33]][_0x232e[32]])[_0x232e[23]](handleEntityNotFound(_0x656bxf))[_0x232e[23]](responseWithResult(_0x656bxf))[_0x232e[27]](handleError(_0x656bxf))};exports[_0x232e[35]]= function(_0x656bx1a,_0x656bxf){return sequelize[_0x232e[43]](function(_0x656bx1b){return FaxAccount[_0x232e[35]](_0x656bx1a[_0x232e[42]],{transaction:_0x656bx1b})})[_0x232e[23]](responseWithoutResult(_0x656bxf,201))[_0x232e[27]](sequelize.ValidationError,function(_0x656bx11){_0x656bx11[_0x232e[38]]= _0x232e[39];_0x656bx11[_0x232e[40]]= _0x232e[41];return _0x656bxf[_0x232e[19]](500)[_0x232e[18]](_0x656bx11)})[_0x232e[27]](sequelize.UniqueConstraintError,function(_0x656bx11){return Util[_0x232e[37]][_0x232e[36]](_0x656bxf,_0x656bx11)})[_0x232e[27]](handleError(_0x656bxf))};exports[_0x232e[44]]= function(_0x656bx1a,_0x656bxf){if(_0x656bx1a[_0x232e[42]][_0x232e[32]]){delete _0x656bx1a[_0x232e[42]][_0x232e[32]]};return sequelize[_0x232e[43]](function(_0x656bx1b){return FaxAccount[_0x232e[34]](_0x656bx1a[_0x232e[33]][_0x232e[32]])[_0x232e[23]](handleEntityNotFound(_0x656bxf))[_0x232e[23]](function(_0x656bx1c){return _0x656bx1c[_0x232e[24]](_0x656bx1a[_0x232e[42]],{transaction:_0x656bx1b})})})[_0x232e[23]](responseWithoutResult(_0x656bxf))[_0x232e[27]](sequelize.ValidationError,function(_0x656bx11){_0x656bx11[_0x232e[38]]= _0x232e[39];_0x656bx11[_0x232e[40]]= _0x232e[41];return _0x656bxf[_0x232e[19]](500)[_0x232e[18]](_0x656bx11)})[_0x232e[27]](sequelize.UniqueConstraintError,function(_0x656bx11){return Util[_0x232e[37]][_0x232e[36]](_0x656bxf,_0x656bx11)})[_0x232e[27]](handleError(_0x656bxf))};exports[_0x232e[25]]= function(_0x656bx1a,_0x656bxf){return sequelize[_0x232e[43]](function(_0x656bx1b){return FaxAccount[_0x232e[34]](_0x656bx1a[_0x232e[33]][_0x232e[32]])[_0x232e[23]](handleEntityNotFound(_0x656bxf))[_0x232e[23]](function(_0x656bx1c){return _0x656bx1c[_0x232e[25]]()})})[_0x232e[23]](function(){_0x656bxf[_0x232e[19]](204)[_0x232e[22]]()})[_0x232e[27]](handleError(_0x656bxf))};exports[_0x232e[45]]= function(_0x656bx1a,_0x656bxf){return FaxAccount[_0x232e[25]]({where:{id:_0x656bx1a[_0x232e[28]][_0x232e[46]]},individualHooks:true})[_0x232e[23]](responseWithoutResult(_0x656bxf))[_0x232e[27]](handleError(_0x656bxf))};exports[_0x232e[47]]= function(_0x656bx1a,_0x656bxf,_0x656bx1d){return FaxAccount[_0x232e[55]](_0x232e[54])[_0x232e[34]](_0x656bx1a[_0x232e[33]][_0x232e[32]])[_0x232e[23]](handleEntityNotFound(_0x656bxf))[_0x232e[23]](function(_0x656bx1c){return _0x656bx1c[_0x232e[53]](_[_0x232e[52]](Util[_0x232e[29]](_0x656bx1a[_0x232e[28]]),{include:[{model:FaxQueue,attributes:[_0x232e[32],_0x232e[49]]},{model:User,attributes:[_0x232e[32],_0x232e[49],_0x232e[50]]},{model:Interval,attributes:[_0x232e[32],_0x232e[49]]}],order:_0x232e[51]}))})[_0x232e[23]](function(_0x656bx1e){return _0x656bxf[_0x232e[18]]({count:_0x656bx1e[_0x232e[48]],rows:_0x656bx1e})})[_0x232e[27]](handleError(_0x656bxf))};exports[_0x232e[56]]= function(_0x656bx1a,_0x656bxf,_0x656bx1d){return FaxApplication[_0x232e[59]](_0x232e[57],{where:{FaxAccountId:_0x656bx1a[_0x232e[33]][_0x232e[32]]}})[_0x232e[23]](function(_0x656bx1f){_0x656bx1a[_0x232e[42]][_0x232e[57]]= _0x656bx1f?++_0x656bx1f:1;_0x656bx1a[_0x232e[42]][_0x232e[58]]= _0x656bx1a[_0x232e[33]][_0x232e[32]];return FaxApplication[_0x232e[35]](_0x656bx1a[_0x232e[42]])})[_0x232e[23]](responseWithResult(_0x656bxf,201))[_0x232e[27]](handleError(_0x656bxf))};exports[_0x232e[60]]= function(_0x656bx1a,_0x656bxf){return FaxApplication[_0x232e[25]]({where:{id:_0x656bx1a[_0x232e[28]][_0x232e[46]]},individualHooks:true})[_0x232e[23]](responseWithoutResult(_0x656bxf))[_0x232e[27]](handleError(_0x656bxf))};exports[_0x232e[61]]= function(_0x656bx1a,_0x656bxf,_0x656bx1d){return FaxApplication[_0x232e[34]](_0x656bx1a[_0x232e[33]][_0x232e[62]])[_0x232e[23]](handleEntityNotFound(_0x656bxf))[_0x232e[23]](removeEntity(_0x656bxf))[_0x232e[27]](handleError(_0x656bxf))};exports[_0x232e[63]]= function(_0x656bx1a,_0x656bxf){var _0x656bx20=0;var _0x656bx21=_0x656bx1a[_0x232e[42]];_0x656bx21[_0x232e[66]](function(_0x656bx22){delete _0x656bx22[_0x232e[32]];delete _0x656bx22[_0x232e[64]];delete _0x656bx22[_0x232e[65]];_0x656bx22[_0x232e[57]]= ++_0x656bx20});return sequelize[_0x232e[43]](function(_0x656bx1b){return FaxApplication[_0x232e[25]]({where:{FaxAccountId:_0x656bx1a[_0x232e[33]][_0x232e[32]]},individualHooks:true,transaction:_0x656bx1b})[_0x232e[23]](function(_0x656bx23){return FaxApplication[_0x232e[67]](_0x656bx21,{individualHooks:true,transaction:_0x656bx1b})})})[_0x232e[23]](function(_0x656bx1e){return _0x656bxf[_0x232e[19]](200)[_0x232e[18]]({count:_0x656bx1e[_0x232e[48]],rows:_0x656bx1e})})[_0x232e[27]](handleError(_0x656bxf))};exports[_0x232e[68]]= function(_0x656bx1a,_0x656bxf){if(_0x656bx1a[_0x232e[42]][_0x232e[32]]){delete _0x656bx1a[_0x232e[42]][_0x232e[32]]};return FaxApplication[_0x232e[34]](_0x656bx1a[_0x232e[33]][_0x232e[62]])[_0x232e[23]](handleEntityNotFound(_0x656bxf))[_0x232e[23]](saveUpdates(_0x656bx1a[_0x232e[42]]))[_0x232e[23]](responseWithResult(_0x656bxf))[_0x232e[27]](handleError(_0x656bxf))};exports[_0x232e[69]]= function(_0x656bx1a,_0x656bxf){return FaxApplication[_0x232e[34]](_0x656bx1a[_0x232e[33]][_0x232e[62]],{include:[{all:true}]})[_0x232e[23]](handleEntityNotFound(_0x656bxf))[_0x232e[23]](responseWithResult(_0x656bxf))[_0x232e[27]](handleError(_0x656bxf))};exports[_0x232e[70]]= function(_0x656bx1a,_0x656bxf,_0x656bx1d){var _0x656bx24={where:{FaxAccountId:_0x656bx1a[_0x232e[33]][_0x232e[32]],$and:[]},include:[],attributes:[_0x232e[32],_0x232e[71],_0x232e[72],_0x232e[73],_0x232e[74],_0x232e[64],_0x232e[65]]};if(_0x656bx1a[_0x232e[28]]){if(_0x656bx1a[_0x232e[28]][_0x232e[73]]){if(_[_0x232e[75]](_0x656bx1a[_0x232e[28]][_0x232e[73]])){for(var _0x656bx25=0;_0x656bx25< _0x656bx1a[_0x232e[28]][_0x232e[73]][_0x232e[48]];_0x656bx25++){_0x656bx24[_0x232e[79]][_0x232e[78]][_0x232e[77]]({tags:{$like:_0x232e[76]+ _0x656bx1a[_0x232e[28]][_0x232e[73]][_0x656bx25]+ _0x232e[76]}})}}else {_0x656bx24[_0x232e[79]][_0x232e[78]][_0x232e[77]]({tags:{$like:_0x232e[76]+ _0x656bx1a[_0x232e[28]][_0x232e[73]]+ _0x232e[76]}})};delete _0x656bx1a[_0x232e[28]][_0x232e[73]]};_[_0x232e[52]](_0x656bx24[_0x232e[79]],_0x656bx1a[_0x232e[28]])};switch(_0x656bx1a[_0x232e[88]][_0x232e[91]]){case _0x232e[81]:_0x656bx24[_0x232e[80]][_0x232e[77]]({model:User,attributes:[_0x232e[32]]});var _0x656bx26;var _0x656bx27;var _0x656bx28;return User[_0x232e[34]](_0x656bx1a[_0x232e[88]][_0x232e[32]])[_0x232e[23]](function(_0x656bx2c){if(_0x656bx2c){return _0x656bx2c[_0x232e[90]]()}else {return []}})[_0x232e[23]](function(_0x656bx2b){_0x656bx27= _[_0x232e[84]](_0x656bx2b,_0x232e[32]);return FaxAccount[_0x232e[34]](_0x656bx1a[_0x232e[33]][_0x232e[32]])})[_0x232e[23]](function(_0x656bx29){if(!_0x656bx29){return _0x656bxf[_0x232e[21]](404)};return _0x656bx29[_0x232e[53]]({where:{$or:[{app:_0x232e[85]},{app:_0x232e[81]}]}})[_0x232e[23]](function(_0x656bx21){_0x656bx26= _[_0x232e[84]](_[_0x232e[82]](_0x656bx21,{"\x61\x70\x70":_0x232e[81]}),_0x232e[83]);_0x656bx28= _[_0x232e[84]](_[_0x232e[82]](_0x656bx21,{"\x61\x70\x70":_0x232e[85]}),_0x232e[86]);if(_[_0x232e[87]](_0x656bx27,_0x656bx28)[_0x232e[48]]|| _[_0x232e[87]](_0x656bx26,[_0x656bx1a[_0x232e[88]][_0x232e[32]]])[_0x232e[48]]){return FaxRoom[_0x232e[89]](_0x656bx24)[_0x232e[23]](function(_0x656bx2a){return _0x656bxf[_0x232e[19]](200)[_0x232e[18]](_0x656bx2a)})[_0x232e[27]](function(_0x656bx11){return handleError(_0x656bxf,_0x656bx11)})}else {return _0x656bxf[_0x232e[19]](200)[_0x232e[18]]([])}})})[_0x232e[27]](handleError(_0x656bxf));default:return FaxRoom[_0x232e[89]](_0x656bx24)[_0x232e[23]](function(_0x656bx2a){return _0x656bxf[_0x232e[19]](200)[_0x232e[18]](_0x656bx2a)})[_0x232e[27]](handleError(_0x656bxf))}};exports[_0x232e[92]]= function(_0x656bx1a,_0x656bxf,_0x656bx1d){return FaxAccount[_0x232e[34]](_0x656bx1a[_0x232e[33]][_0x232e[32]])[_0x232e[23]](handleEntityNotFound(_0x656bxf))[_0x232e[23]](function(_0x656bx1c){return _0x656bx1c[_0x232e[93]]()})[_0x232e[23]](function(_0x656bx2d){return _0x656bxf[_0x232e[19]](200)[_0x232e[18]]({rows:_0x656bx2d,count:_0x656bx2d[_0x232e[48]]})})[_0x232e[27]](handleError(_0x656bxf))};exports[_0x232e[94]]= function(_0x656bx1a,_0x656bxf,_0x656bx1d){_0x656bx1a[_0x232e[42]][_0x232e[58]]= _0x656bx1a[_0x232e[33]][_0x232e[32]];return FaxDisposition[_0x232e[35]](_0x656bx1a[_0x232e[42]])[_0x232e[23]](responseWithResult(_0x656bxf,201))[_0x232e[27]](handleError(_0x656bxf))};exports[_0x232e[95]]= function(_0x656bx1a,_0x656bxf){if(_0x656bx1a[_0x232e[42]][_0x232e[32]]){delete _0x656bx1a[_0x232e[42]][_0x232e[32]]};return FaxDisposition[_0x232e[34]](_0x656bx1a[_0x232e[33]][_0x232e[97]])[_0x232e[23]](handleEntityNotFound(_0x656bxf))[_0x232e[23]](function(_0x656bx2e){var _0x656bx18=_[_0x232e[52]](_0x656bx2e,_0x656bx1a[_0x232e[42]]);return _0x656bx18[_0x232e[96]]()})[_0x232e[23]](responseWithResult(_0x656bxf,200))[_0x232e[27]](handleError(_0x656bxf))};exports[_0x232e[98]]= function(_0x656bx1a,_0x656bxf,_0x656bx1d){return FaxDisposition[_0x232e[34]](_0x656bx1a[_0x232e[33]][_0x232e[97]])[_0x232e[23]](handleEntityNotFound(_0x656bxf))[_0x232e[23]](function(_0x656bx2f){return _0x656bx2f[_0x232e[25]]()})[_0x232e[23]](responseWithoutResult(_0x656bxf,204))[_0x232e[27]](handleError(_0x656bxf))};exports[_0x232e[99]]= function(_0x656bx1a,_0x656bxf,_0x656bx1d){_0x656bx1a[_0x232e[42]][_0x232e[83]]= _0x656bx1a[_0x232e[88]][_0x232e[32]];return FaxMessage[_0x232e[35]](_0x656bx1a[_0x232e[42]],{include:[{model:FaxAttachment}],user:_0x656bx1a[_0x232e[88]]})[_0x232e[23]](function(_0x656bx30){if(_0x656bx30){_0x656bx1a[_0x232e[103]][_0x232e[102]][_0x232e[101]][_0x232e[18]]({message:_0x232e[100],doc:_0x656bx30,options:{user:_0x656bx1a[_0x232e[88]]}});return _0x656bx30}})[_0x232e[23]](responseWithResult(_0x656bxf,201))[_0x232e[27]](handleError(_0x656bxf))} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_account/fax_account.events.js b/server/api/fax_account/fax_account.events.js index 2c166c2..66dc905 100644 --- a/server/api/fax_account/fax_account.events.js +++ b/server/api/fax_account/fax_account.events.js @@ -1 +1 @@ -var _0xce24=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x46\x61\x78\x41\x63\x63\x6F\x75\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xce24[0];const EventEmitter=require(_0xce24[1]);const FaxAccount=require(_0xce24[3])[_0xce24[2]];var FaxAccountEvents= new EventEmitter();FaxAccountEvents[_0xce24[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xce24[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xce24[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xce24[6]};for(var e in events){var event=events[e];FaxAccount[_0xce24[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x6786x8,_0x6786x9,_0x6786xa){FaxAccountEvents[_0xce24[10]](event+ _0xce24[8]+ _0x6786x8[_0xce24[9]],_0x6786x8);FaxAccountEvents[_0xce24[10]](event,_0x6786x8);_0x6786xa(null)}}module[_0xce24[11]]= FaxAccountEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_account/fax_account.socket.js b/server/api/fax_account/fax_account.socket.js index 436501f..66dc905 100644 --- a/server/api/fax_account/fax_account.socket.js +++ b/server/api/fax_account/fax_account.socket.js @@ -1 +1 @@ -var _0x8e9e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x66\x61\x78\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x66\x61\x78\x5F\x61\x63\x63\x6F\x75\x6E\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x8e9e[0];const FaxAccountEvents=require(_0x8e9e[1]);var events=[_0x8e9e[2],_0x8e9e[3]];exports[_0x8e9e[4]]= function(_0xf5d9x3){for(var _0xf5d9x4=0,_0xf5d9x5=events[_0x8e9e[5]];_0xf5d9x4< _0xf5d9x5;_0xf5d9x4++){var _0xf5d9x6=events[_0xf5d9x4];var _0xf5d9x7=createListener(_0x8e9e[6]+ _0xf5d9x6,_0xf5d9x3);FaxAccountEvents[_0x8e9e[7]](_0xf5d9x6,_0xf5d9x7);_0xf5d9x3[_0x8e9e[7]](_0x8e9e[8],removeListener(_0xf5d9x6,_0xf5d9x7))}};function createListener(_0xf5d9x6,_0xf5d9x3){return function(_0xf5d9x9){_0xf5d9x3[_0x8e9e[9]](_0xf5d9x6,_0xf5d9x9)}}function removeListener(_0xf5d9x6,_0xf5d9x7){return function(){FaxAccountEvents[_0x8e9e[10]](_0xf5d9x6,_0xf5d9x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_account/index.js b/server/api/fax_account/index.js index 0f957cf..66dc905 100644 --- a/server/api/fax_account/index.js +++ b/server/api/fax_account/index.js @@ -1 +1 @@ -var _0x6d18=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x66\x61\x78\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x46\x61\x78","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x2F\x3A\x69\x64\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73\x2F\x3A\x61\x70\x70\x49\x64","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x72\x6F\x6F\x6D\x73","\x67\x65\x74\x46\x61\x78\x52\x6F\x6F\x6D\x73","\x2F\x3A\x69\x64\x2F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x67\x65\x74\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x63\x72\x65\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x73\x65\x6E\x64","\x73\x65\x6E\x64\x4D\x65\x73\x73\x61\x67\x65","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73\x2F\x3A\x64\x69\x73\x70\x49\x64","\x75\x70\x64\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x64\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x64\x65\x73\x74\x72\x6F\x79\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x65\x78\x70\x6F\x72\x74\x73"];_0x6d18[0];var express=require(_0x6d18[1]);var auth=require(_0x6d18[2]);var controller=require(_0x6d18[3]);var license=require(_0x6d18[4]);var router=express.Router();router[_0x6d18[13]](_0x6d18[5],license[_0x6d18[6]](),license[_0x6d18[7]](),auth[_0x6d18[8]](),auth[_0x6d18[11]]([10],[_0x6d18[9],_0x6d18[10]]),controller[_0x6d18[12]]);router[_0x6d18[13]](_0x6d18[14],license[_0x6d18[6]](),license[_0x6d18[7]](),auth[_0x6d18[8]](),auth[_0x6d18[11]]([10],[_0x6d18[9],_0x6d18[10]]),controller[_0x6d18[15]]);router[_0x6d18[13]](_0x6d18[16],license[_0x6d18[6]](),license[_0x6d18[7]](),auth[_0x6d18[8]](),auth[_0x6d18[11]]([10],[_0x6d18[9]]),controller[_0x6d18[17]]);router[_0x6d18[13]](_0x6d18[18],license[_0x6d18[6]](),license[_0x6d18[7]](),auth[_0x6d18[8]](),auth[_0x6d18[11]]([10],[_0x6d18[9]]),controller[_0x6d18[19]]);router[_0x6d18[13]](_0x6d18[20],license[_0x6d18[6]](),license[_0x6d18[7]](),auth[_0x6d18[8]](),auth[_0x6d18[11]]([10],[_0x6d18[9],_0x6d18[10]]),controller[_0x6d18[21]]);router[_0x6d18[13]](_0x6d18[22],license[_0x6d18[6]](),license[_0x6d18[7]](),auth[_0x6d18[8]](),auth[_0x6d18[11]]([10],[_0x6d18[9],_0x6d18[10]]),controller[_0x6d18[23]]);router[_0x6d18[25]](_0x6d18[5],license[_0x6d18[6]](),license[_0x6d18[7]](),auth[_0x6d18[8]](),auth[_0x6d18[11]]([10],[_0x6d18[9]]),controller[_0x6d18[24]]);router[_0x6d18[25]](_0x6d18[16],license[_0x6d18[6]](),license[_0x6d18[7]](),auth[_0x6d18[8]](),auth[_0x6d18[11]]([10],[_0x6d18[9]]),controller[_0x6d18[26]]);router[_0x6d18[25]](_0x6d18[22],license[_0x6d18[6]](),license[_0x6d18[7]](),auth[_0x6d18[8]](),auth[_0x6d18[11]]([10],[_0x6d18[9]]),controller[_0x6d18[27]]);router[_0x6d18[25]](_0x6d18[28],license[_0x6d18[6]](),license[_0x6d18[7]](),auth[_0x6d18[8]](),auth[_0x6d18[11]]([10],[_0x6d18[9],_0x6d18[10]]),controller[_0x6d18[29]]);router[_0x6d18[31]](_0x6d18[14],license[_0x6d18[6]](),license[_0x6d18[7]](),auth[_0x6d18[8]](),auth[_0x6d18[11]]([10],[_0x6d18[9]]),controller[_0x6d18[30]]);router[_0x6d18[31]](_0x6d18[16],license[_0x6d18[6]](),license[_0x6d18[7]](),auth[_0x6d18[8]](),auth[_0x6d18[11]]([10],[_0x6d18[9]]),controller[_0x6d18[32]]);router[_0x6d18[31]](_0x6d18[18],license[_0x6d18[6]](),license[_0x6d18[7]](),auth[_0x6d18[8]](),auth[_0x6d18[11]]([10],[_0x6d18[9]]),controller[_0x6d18[33]]);router[_0x6d18[31]](_0x6d18[34],license[_0x6d18[6]](),license[_0x6d18[7]](),auth[_0x6d18[8]](),auth[_0x6d18[11]]([10],[_0x6d18[9]]),controller[_0x6d18[35]]);router[_0x6d18[37]](_0x6d18[5],license[_0x6d18[6]](),license[_0x6d18[7]](),auth[_0x6d18[8]](),auth[_0x6d18[11]]([10],[_0x6d18[9]]),controller[_0x6d18[36]]);router[_0x6d18[37]](_0x6d18[14],license[_0x6d18[6]](),license[_0x6d18[7]](),auth[_0x6d18[8]](),auth[_0x6d18[11]]([10],[_0x6d18[9]]),controller[_0x6d18[38]]);router[_0x6d18[37]](_0x6d18[16],license[_0x6d18[6]](),license[_0x6d18[7]](),auth[_0x6d18[8]](),auth[_0x6d18[11]]([10],[_0x6d18[9]]),controller[_0x6d18[39]]);router[_0x6d18[37]](_0x6d18[18],license[_0x6d18[6]](),license[_0x6d18[7]](),auth[_0x6d18[8]](),auth[_0x6d18[11]]([10],[_0x6d18[9]]),controller[_0x6d18[40]]);router[_0x6d18[37]](_0x6d18[34],license[_0x6d18[6]](),license[_0x6d18[7]](),auth[_0x6d18[8]](),auth[_0x6d18[11]]([10],[_0x6d18[9]]),controller[_0x6d18[41]]);module[_0x6d18[42]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_application/fax_application.controller.js b/server/api/fax_application/fax_application.controller.js index f7e3b11..66dc905 100644 --- a/server/api/fax_application/fax_application.controller.js +++ b/server/api/fax_application/fax_application.controller.js @@ -1 +1 @@ -var _0x10c1=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x46\x61\x78\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x70\x72\x69\x6F\x72\x69\x74\x79","\x62\x6F\x64\x79","\x46\x61\x78\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x6D\x61\x78","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x66\x69\x6E\x64","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0x10c1[0];var _=require(_0x10c1[1]);var logger=require(_0x10c1[3])(_0x10c1[2]);var FaxApplication=require(_0x10c1[5])[_0x10c1[4]];exports[_0x10c1[6]]= function(_0x34e3x4,_0x34e3x5){FaxApplication[_0x10c1[12]]({where:_0x34e3x4[_0x10c1[11]]})[_0x10c1[10]](function(_0x34e3x7){return _0x34e3x5[_0x10c1[9]](200)[_0x10c1[8]](_0x34e3x7)})[_0x10c1[7]](function(_0x34e3x6){return handleError(_0x34e3x5,_0x34e3x6)})};exports[_0x10c1[13]]= function(_0x34e3x4,_0x34e3x5){FaxApplication[_0x10c1[17]](_0x34e3x4[_0x10c1[16]][_0x10c1[15]])[_0x10c1[10]](function(_0x34e3x8){if(!_0x34e3x8){return _0x34e3x5[_0x10c1[14]](404)};return _0x34e3x5[_0x10c1[8]](_0x34e3x8)})[_0x10c1[7]](function(_0x34e3x6){return handleError(_0x34e3x5,_0x34e3x6)})};exports[_0x10c1[18]]= function(_0x34e3x4,_0x34e3x5,_0x34e3x9){FaxApplication[_0x10c1[22]](_0x10c1[19],{where:{FaxAccountId:_0x34e3x4[_0x10c1[20]][_0x10c1[21]]}})[_0x10c1[10]](function(_0x34e3xa){_0x34e3x4[_0x10c1[20]][_0x10c1[19]]= _0x34e3xa?++_0x34e3xa:1;FaxApplication[_0x10c1[18]](_0x34e3x4[_0x10c1[20]])[_0x10c1[10]](function(_0x34e3xb){return _0x34e3x5[_0x10c1[9]](201)[_0x10c1[8]](_0x34e3xb)})[_0x10c1[7]](function(_0x34e3x6){return _0x34e3x9(_0x34e3x6)})})[_0x10c1[7]](function(_0x34e3x6){_0x34e3x9(_0x34e3x6)})};exports[_0x10c1[23]]= function(_0x34e3x4,_0x34e3x5){if(_0x34e3x4[_0x10c1[20]][_0x10c1[15]]){delete _0x34e3x4[_0x10c1[20]][_0x10c1[15]]};FaxApplication[_0x10c1[17]](_0x34e3x4[_0x10c1[16]][_0x10c1[15]])[_0x10c1[10]](function(_0x34e3x8){if(!_0x34e3x8){return _0x34e3x5[_0x10c1[14]](404)};var _0x34e3xc=_[_0x10c1[24]](_0x34e3x8,_0x34e3x4[_0x10c1[20]]);_0x34e3xc[_0x10c1[25]]()[_0x10c1[10]](function(){return _0x34e3x5[_0x10c1[9]](200)[_0x10c1[8]](_0x34e3x8)})[_0x10c1[7]](function(_0x34e3x6){return handleError(_0x34e3x5,_0x34e3x6)})})[_0x10c1[7]](function(_0x34e3x6){return handleError(_0x34e3x5,_0x34e3x6)})};exports[_0x10c1[26]]= function(_0x34e3x4,_0x34e3x5){FaxApplication[_0x10c1[27]]({where:{id:_0x34e3x4[_0x10c1[16]][_0x10c1[15]]}})[_0x10c1[10]](function(_0x34e3x8){if(!_0x34e3x8){return _0x34e3x5[_0x10c1[14]](404)};_0x34e3x8[_0x10c1[26]]()[_0x10c1[10]](function(){return _0x34e3x5[_0x10c1[14]](204)})[_0x10c1[7]](function(_0x34e3x6){return handleError(_0x34e3x5,_0x34e3x6)})})[_0x10c1[7]](function(_0x34e3x6){return handleError(_0x34e3x5,_0x34e3x6)})};function handleError(_0x34e3x5,_0x34e3x6){logger[_0x10c1[29]](_0x34e3x6[_0x10c1[28]]);return _0x34e3x5[_0x10c1[9]](500)[_0x10c1[8]](_0x34e3x6)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_application/fax_application.events.js b/server/api/fax_application/fax_application.events.js index e3998ce..66dc905 100644 --- a/server/api/fax_application/fax_application.events.js +++ b/server/api/fax_application/fax_application.events.js @@ -1 +1 @@ -var _0xa733=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x46\x61\x78\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xa733[0];const EventEmitter=require(_0xa733[1]);const FaxApplication=require(_0xa733[3])[_0xa733[2]];var FaxApplicationEvents= new EventEmitter();FaxApplicationEvents[_0xa733[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xa733[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xa733[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xa733[6]};for(var e in events){var event=events[e];FaxApplication[_0xa733[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x57fex8,_0x57fex9,_0x57fexa){FaxApplicationEvents[_0xa733[10]](event+ _0xa733[8]+ _0x57fex8[_0xa733[9]],_0x57fex8);FaxApplicationEvents[_0xa733[10]](event,_0x57fex8);_0x57fexa(null)}}module[_0xa733[11]]= FaxApplicationEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_application/fax_application.socket.js b/server/api/fax_application/fax_application.socket.js index fb193ec..66dc905 100644 --- a/server/api/fax_application/fax_application.socket.js +++ b/server/api/fax_application/fax_application.socket.js @@ -1 +1 @@ -var _0x2f7a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x66\x61\x78\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x66\x61\x78\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x2f7a[0];const FaxApplicationEvents=require(_0x2f7a[1]);var events=[_0x2f7a[2],_0x2f7a[3]];exports[_0x2f7a[4]]= function(_0x4ce5x3){for(var _0x4ce5x4=0,_0x4ce5x5=events[_0x2f7a[5]];_0x4ce5x4< _0x4ce5x5;_0x4ce5x4++){var _0x4ce5x6=events[_0x4ce5x4];var _0x4ce5x7=createListener(_0x2f7a[6]+ _0x4ce5x6,_0x4ce5x3);FaxApplicationEvents[_0x2f7a[7]](_0x4ce5x6,_0x4ce5x7);_0x4ce5x3[_0x2f7a[7]](_0x2f7a[8],removeListener(_0x4ce5x6,_0x4ce5x7))}};function createListener(_0x4ce5x6,_0x4ce5x3){return function(_0x4ce5x9){_0x4ce5x3[_0x2f7a[9]](_0x4ce5x6,_0x4ce5x9)}}function removeListener(_0x4ce5x6,_0x4ce5x7){return function(){FaxApplicationEvents[_0x2f7a[10]](_0x4ce5x6,_0x4ce5x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_application/index.js b/server/api/fax_application/index.js index e815cde..66dc905 100644 --- a/server/api/fax_application/index.js +++ b/server/api/fax_application/index.js @@ -1 +1 @@ -var _0xb6f5=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x66\x61\x78\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x46\x61\x78","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xb6f5[0];var express=require(_0xb6f5[1]);var controller=require(_0xb6f5[2]);var auth=require(_0xb6f5[3]);var license=require(_0xb6f5[4]);var router=express.Router();router[_0xb6f5[12]](_0xb6f5[5],license[_0xb6f5[6]](),license[_0xb6f5[7]](),auth[_0xb6f5[8]](),auth[_0xb6f5[10]]([10],[_0xb6f5[9]]),controller[_0xb6f5[11]]);router[_0xb6f5[12]](_0xb6f5[13],license[_0xb6f5[6]](),license[_0xb6f5[7]](),auth[_0xb6f5[8]](),auth[_0xb6f5[10]]([10],[_0xb6f5[9]]),controller[_0xb6f5[14]]);router[_0xb6f5[16]](_0xb6f5[5],license[_0xb6f5[6]](),license[_0xb6f5[7]](),auth[_0xb6f5[8]](),auth[_0xb6f5[10]]([10],[_0xb6f5[9]]),controller[_0xb6f5[15]]);router[_0xb6f5[18]](_0xb6f5[13],license[_0xb6f5[6]](),license[_0xb6f5[7]](),auth[_0xb6f5[8]](),auth[_0xb6f5[10]]([10],[_0xb6f5[9]]),controller[_0xb6f5[17]]);router[_0xb6f5[20]](_0xb6f5[13],license[_0xb6f5[6]](),license[_0xb6f5[7]](),auth[_0xb6f5[8]](),auth[_0xb6f5[10]]([10],[_0xb6f5[9]]),controller[_0xb6f5[19]]);module[_0xb6f5[21]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_attachment/fax_attachment.controller.js b/server/api/fax_attachment/fax_attachment.controller.js index e260a59..66dc905 100644 --- a/server/api/fax_attachment/fax_attachment.controller.js +++ b/server/api/fax_attachment/fax_attachment.controller.js @@ -1 +1 @@ -var _0x81c9=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x70\x61\x74\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x66\x6F\x72\x6D\x69\x64\x61\x62\x6C\x65","\x62\x6C\x75\x65\x62\x69\x72\x64","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x46\x61\x78\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x46\x69\x6C\x65","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x75\x70\x6C\x6F\x61\x64\x44\x69\x72","\x72\x6F\x6F\x74","\x73\x65\x72\x76\x65\x72","\x66\x69\x6C\x65\x73","\x66\x61\x78","\x6F\x75\x74\x62\x6F\x75\x6E\x64","\x6F\x72\x69\x67\x69\x6E\x61\x6C","\x6A\x6F\x69\x6E","\x6B\x65\x65\x70\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E\x73","\x6D\x75\x6C\x74\x69\x70\x6C\x65\x73","\x68\x61\x73\x68","\x66\x69\x6C\x65","\x6E\x61\x6D\x65","\x62\x61\x73\x65\x6E\x61\x6D\x65","\x74\x79\x70\x65","\x70\x61\x72\x73\x65","\x75\x70\x64\x61\x74\x65","\x62\x6F\x64\x79","\x75\x6E\x6C\x69\x6E\x6B","\x66\x73","\x70\x72\x6F\x6D\x69\x73\x69\x66\x79"];_0x81c9[0];var _=require(_0x81c9[1]);var path=require(_0x81c9[2]);var Util=require(_0x81c9[3]);var formidable=require(_0x81c9[4]);var Promise=require(_0x81c9[5]);var logger=require(_0x81c9[7])(_0x81c9[6]);var config=require(_0x81c9[8]);var FaxAttachment=require(_0x81c9[10])[_0x81c9[9]];function handleError(_0xb49axa,_0xb49axb){_0xb49axb= _0xb49axb|| 500;return function(_0xb49axc){logger[_0x81c9[12]](_0xb49axc[_0x81c9[11]]);_0xb49axa[_0x81c9[14]](_0xb49axb)[_0x81c9[13]](_0xb49axc)}}function responseWithResult(_0xb49axa,_0xb49axb){_0xb49axb= _0xb49axb|| 200;return function(_0xb49axe){if(_0xb49axe){_0xb49axa[_0x81c9[14]](_0xb49axb)[_0x81c9[15]](_0xb49axe)}}}function responseWithoutResult(_0xb49axa,_0xb49axb){_0xb49axb= _0xb49axb|| 204;return function(){_0xb49axa[_0x81c9[16]](_0xb49axb)}}function handleEntityNotFound(_0xb49axa){return function(_0xb49axe){if(!_0xb49axe){_0xb49axa[_0x81c9[14]](404)[_0x81c9[17]]();return null};return _0xb49axe}}function saveUpdates(_0xb49ax12){return function(_0xb49axe){return _0xb49axe[_0x81c9[19]](_0xb49ax12)[_0x81c9[18]](function(_0xb49ax13){return _0xb49ax13})}}function removeEntity(_0xb49axa){return function(_0xb49axe){if(_0xb49axe){return _0xb49axe[_0x81c9[20]]()[_0x81c9[18]](function(){_0xb49axa[_0x81c9[14]](204)[_0x81c9[17]]()})}}}exports[_0x81c9[21]]= function(_0xb49ax15,_0xb49axa){return FaxAttachment[_0x81c9[25]](Util[_0x81c9[24]](_0xb49ax15[_0x81c9[23]]))[_0x81c9[18]](responseWithResult(_0xb49axa))[_0x81c9[22]](handleError(_0xb49axa))};exports[_0x81c9[26]]= function(_0xb49ax15,_0xb49axa){return FaxAttachment[_0x81c9[30]](_0xb49ax15[_0x81c9[29]][_0x81c9[28]])[_0x81c9[18]](handleEntityNotFound(_0xb49axa))[_0x81c9[18]](function(_0xb49ax16){return _0xb49axa[_0x81c9[27]](_0xb49ax16[_0x81c9[2]])})[_0x81c9[22]](handleError(_0xb49axa))};exports[_0x81c9[31]]= function(_0xb49ax15,_0xb49axa){var _0xb49ax17= new formidable.IncomingForm();_0xb49ax17[_0x81c9[32]]= path[_0x81c9[39]](config[_0x81c9[33]],_0x81c9[34],_0x81c9[35],_0x81c9[36],_0x81c9[37],_0x81c9[38]);_0xb49ax17[_0x81c9[40]]= true;_0xb49ax17[_0x81c9[41]]= true;_0xb49ax17[_0x81c9[42]]= true;_0xb49ax17[_0x81c9[47]](_0xb49ax15,function(_0xb49axc,_0xb49ax17,_0xb49ax18){if(_0xb49axc){return _0xb49axa[_0x81c9[14]](500)[_0x81c9[13]](_0xb49axc)};return _0xb49axa[_0x81c9[14]](201)[_0x81c9[13]]({path:_0xb49ax18[_0x81c9[43]][_0x81c9[2]],name:_0xb49ax18[_0x81c9[43]][_0x81c9[44]],basename:path[_0x81c9[45]](_0xb49ax18[_0x81c9[43]][_0x81c9[2]]),type:_0xb49ax18[_0x81c9[43]][_0x81c9[46]]})})};exports[_0x81c9[48]]= function(_0xb49ax15,_0xb49axa){if(_0xb49ax15[_0x81c9[49]][_0x81c9[28]]){delete _0xb49ax15[_0x81c9[49]][_0x81c9[28]]};return FaxAttachment[_0x81c9[30]](_0xb49ax15[_0x81c9[29]][_0x81c9[28]])[_0x81c9[18]](handleEntityNotFound(_0xb49axa))[_0x81c9[18]](saveUpdates(_0xb49ax15[_0x81c9[49]]))[_0x81c9[18]](responseWithResult(_0xb49axa))[_0x81c9[22]](handleError(_0xb49axa))};exports[_0x81c9[20]]= function(_0xb49ax15,_0xb49axa){var _0xb49ax19=Promise[_0x81c9[52]](require(_0x81c9[51])[_0x81c9[50]]);var _0xb49ax1a=path[_0x81c9[39]](config[_0x81c9[33]],_0x81c9[34],_0x81c9[35],_0x81c9[36],_0x81c9[37],_0x81c9[38],_0xb49ax15[_0x81c9[29]][_0x81c9[28]]);return _0xb49ax19(_0xb49ax1a)[_0x81c9[18]](function(){return _0xb49axa[_0x81c9[16]](204)})[_0x81c9[22]](handleError(_0xb49axa))} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_attachment/fax_attachment.events.js b/server/api/fax_attachment/fax_attachment.events.js index 609a2bf..66dc905 100644 --- a/server/api/fax_attachment/fax_attachment.events.js +++ b/server/api/fax_attachment/fax_attachment.events.js @@ -1 +1 @@ -var _0x2d31=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x46\x61\x78\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x2d31[0];const EventEmitter=require(_0x2d31[1]);const FaxAttachment=require(_0x2d31[3])[_0x2d31[2]];var FaxAttachmentEvents= new EventEmitter();FaxAttachmentEvents[_0x2d31[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x2d31[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x2d31[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x2d31[6]};for(var e in events){var event=events[e];FaxAttachment[_0x2d31[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xc5e5x8,_0xc5e5x9,_0xc5e5xa){FaxAttachmentEvents[_0x2d31[10]](event+ _0x2d31[8]+ _0xc5e5x8[_0x2d31[9]],_0xc5e5x8);FaxAttachmentEvents[_0x2d31[10]](event,_0xc5e5x8);_0xc5e5xa(null)}}module[_0x2d31[11]]= FaxAttachmentEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_attachment/fax_attachment.socket.js b/server/api/fax_attachment/fax_attachment.socket.js index 5fd9bb1..66dc905 100644 --- a/server/api/fax_attachment/fax_attachment.socket.js +++ b/server/api/fax_attachment/fax_attachment.socket.js @@ -1 +1 @@ -var _0xd261=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x66\x61\x78\x5F\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x66\x61\x78\x5F\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xd261[0];const FaxAttachmentEvents=require(_0xd261[1]);var events=[_0xd261[2],_0xd261[3]];exports[_0xd261[4]]= function(_0xce6ax3){for(var _0xce6ax4=0,_0xce6ax5=events[_0xd261[5]];_0xce6ax4< _0xce6ax5;_0xce6ax4++){var _0xce6ax6=events[_0xce6ax4];var _0xce6ax7=createListener(_0xd261[6]+ _0xce6ax6,_0xce6ax3);FaxAttachmentEvents[_0xd261[7]](_0xce6ax6,_0xce6ax7);_0xce6ax3[_0xd261[7]](_0xd261[8],removeListener(_0xce6ax6,_0xce6ax7))}};function createListener(_0xce6ax6,_0xce6ax3){return function(_0xce6ax9){_0xce6ax3[_0xd261[9]](_0xce6ax6,_0xce6ax9)}}function removeListener(_0xce6ax6,_0xce6ax7){return function(){FaxAttachmentEvents[_0xd261[10]](_0xce6ax6,_0xce6ax7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_attachment/index.js b/server/api/fax_attachment/index.js index 9d6e09a..66dc905 100644 --- a/server/api/fax_attachment/index.js +++ b/server/api/fax_attachment/index.js @@ -1 +1 @@ -var _0xf12f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x66\x61\x78\x5F\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x46\x61\x78","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xf12f[0];var express=require(_0xf12f[1]);var auth=require(_0xf12f[2]);var controller=require(_0xf12f[3]);var license=require(_0xf12f[4]);var router=express.Router();router[_0xf12f[13]](_0xf12f[5],license[_0xf12f[6]](),license[_0xf12f[7]](),auth[_0xf12f[8]](),auth[_0xf12f[11]]([10],[_0xf12f[9],_0xf12f[10]]),controller[_0xf12f[12]]);router[_0xf12f[13]](_0xf12f[14],license[_0xf12f[6]](),license[_0xf12f[7]](),controller[_0xf12f[15]]);router[_0xf12f[17]](_0xf12f[5],license[_0xf12f[6]](),license[_0xf12f[7]](),auth[_0xf12f[8]](),auth[_0xf12f[11]]([10],[_0xf12f[9],_0xf12f[10]]),controller[_0xf12f[16]]);router[_0xf12f[19]](_0xf12f[14],license[_0xf12f[6]](),license[_0xf12f[7]](),auth[_0xf12f[8]](),auth[_0xf12f[11]]([10],[_0xf12f[9],_0xf12f[10]]),controller[_0xf12f[18]]);router[_0xf12f[21]](_0xf12f[14],license[_0xf12f[6]](),license[_0xf12f[7]](),auth[_0xf12f[8]](),auth[_0xf12f[11]]([10],[_0xf12f[9],_0xf12f[10]]),controller[_0xf12f[20]]);module[_0xf12f[22]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_disposition/fax_disposition.controller.js b/server/api/fax_disposition/fax_disposition.controller.js index a048276..66dc905 100644 --- a/server/api/fax_disposition/fax_disposition.controller.js +++ b/server/api/fax_disposition/fax_disposition.controller.js @@ -1 +1 @@ -var _0x74af=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x46\x61\x78\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65"];_0x74af[0];var _=require(_0x74af[1]);var Util=require(_0x74af[2]);var logger=require(_0x74af[4])(_0x74af[3]);var FaxDisposition=require(_0x74af[6])[_0x74af[5]];function handleError(_0x8287x6,_0x8287x7){_0x8287x7= _0x8287x7|| 500;return function(_0x8287x8){logger[_0x74af[8]](_0x8287x8[_0x74af[7]]);_0x8287x6[_0x74af[10]](_0x8287x7)[_0x74af[9]](_0x8287x8)}}function responseWithResult(_0x8287x6,_0x8287x7){_0x8287x7= _0x8287x7|| 200;return function(_0x8287xa){if(_0x8287xa){_0x8287x6[_0x74af[10]](_0x8287x7)[_0x74af[11]](_0x8287xa)}}}function responseWithoutResult(_0x8287x6,_0x8287x7){_0x8287x7= _0x8287x7|| 204;return function(){_0x8287x6[_0x74af[12]](_0x8287x7)}}function handleEntityNotFound(_0x8287x6){return function(_0x8287xa){if(!_0x8287xa){_0x8287x6[_0x74af[10]](404)[_0x74af[13]]();return null};return _0x8287xa}}function saveUpdates(_0x8287xe){return function(_0x8287xa){return _0x8287xa[_0x74af[15]](_0x8287xe)[_0x74af[14]](function(_0x8287xf){return _0x8287xf})}}function removeEntity(_0x8287x6){return function(_0x8287xa){if(_0x8287xa){return _0x8287xa[_0x74af[16]]()[_0x74af[14]](function(){_0x8287x6[_0x74af[10]](204)[_0x74af[13]]()})}}}exports[_0x74af[17]]= function(_0x8287x11,_0x8287x6){return FaxDisposition[_0x74af[21]](Util[_0x74af[20]](_0x8287x11[_0x74af[19]]))[_0x74af[14]](responseWithResult(_0x8287x6))[_0x74af[18]](handleError(_0x8287x6))};exports[_0x74af[22]]= function(_0x8287x11,_0x8287x6){return FaxDisposition[_0x74af[25]](_0x8287x11[_0x74af[24]][_0x74af[23]])[_0x74af[14]](handleEntityNotFound(_0x8287x6))[_0x74af[14]](responseWithResult(_0x8287x6))[_0x74af[18]](handleError(_0x8287x6))};exports[_0x74af[26]]= function(_0x8287x11,_0x8287x6){return FaxDisposition[_0x74af[26]](_0x8287x11[_0x74af[27]])[_0x74af[14]](responseWithResult(_0x8287x6,201))[_0x74af[18]](handleError(_0x8287x6))};exports[_0x74af[28]]= function(_0x8287x11,_0x8287x6){if(_0x8287x11[_0x74af[27]][_0x74af[23]]){delete _0x8287x11[_0x74af[27]][_0x74af[23]]};return FaxDisposition[_0x74af[25]](_0x8287x11[_0x74af[24]][_0x74af[23]])[_0x74af[14]](handleEntityNotFound(_0x8287x6))[_0x74af[14]](saveUpdates(_0x8287x11[_0x74af[27]]))[_0x74af[14]](responseWithResult(_0x8287x6))[_0x74af[18]](handleError(_0x8287x6))};exports[_0x74af[16]]= function(_0x8287x11,_0x8287x6){return FaxDisposition[_0x74af[25]](_0x8287x11[_0x74af[24]][_0x74af[23]])[_0x74af[14]](handleEntityNotFound(_0x8287x6))[_0x74af[14]](removeEntity(_0x8287x6))[_0x74af[18]](handleError(_0x8287x6))} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_disposition/fax_disposition.events.js b/server/api/fax_disposition/fax_disposition.events.js index 219ed9a..66dc905 100644 --- a/server/api/fax_disposition/fax_disposition.events.js +++ b/server/api/fax_disposition/fax_disposition.events.js @@ -1 +1 @@ -var _0x5f7a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x46\x61\x78\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x5f7a[0];const EventEmitter=require(_0x5f7a[1]);const FaxDisposition=require(_0x5f7a[3])[_0x5f7a[2]];var FaxDispositionEvents= new EventEmitter();FaxDispositionEvents[_0x5f7a[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x5f7a[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x5f7a[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x5f7a[6]};for(var e in events){var event=events[e];FaxDisposition[_0x5f7a[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x511bx8,_0x511bx9,_0x511bxa){FaxDispositionEvents[_0x5f7a[10]](event+ _0x5f7a[8]+ _0x511bx8[_0x5f7a[9]],_0x511bx8);FaxDispositionEvents[_0x5f7a[10]](event,_0x511bx8);_0x511bxa(null)}}module[_0x5f7a[11]]= FaxDispositionEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_disposition/fax_disposition.socket.js b/server/api/fax_disposition/fax_disposition.socket.js index bbc1770..66dc905 100644 --- a/server/api/fax_disposition/fax_disposition.socket.js +++ b/server/api/fax_disposition/fax_disposition.socket.js @@ -1 +1 @@ -var _0x136c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x66\x61\x78\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x66\x61\x78\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x136c[0];const FaxDispositionEvents=require(_0x136c[1]);var events=[_0x136c[2],_0x136c[3]];exports[_0x136c[4]]= function(_0x4839x3){for(var _0x4839x4=0,_0x4839x5=events[_0x136c[5]];_0x4839x4< _0x4839x5;_0x4839x4++){var _0x4839x6=events[_0x4839x4];var _0x4839x7=createListener(_0x136c[6]+ _0x4839x6,_0x4839x3);FaxDispositionEvents[_0x136c[7]](_0x4839x6,_0x4839x7);_0x4839x3[_0x136c[7]](_0x136c[8],removeListener(_0x4839x6,_0x4839x7))}};function createListener(_0x4839x6,_0x4839x3){return function(_0x4839x9){_0x4839x3[_0x136c[9]](_0x4839x6,_0x4839x9)}}function removeListener(_0x4839x6,_0x4839x7){return function(){FaxDispositionEvents[_0x136c[10]](_0x4839x6,_0x4839x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_disposition/index.js b/server/api/fax_disposition/index.js index 929abe4..66dc905 100644 --- a/server/api/fax_disposition/index.js +++ b/server/api/fax_disposition/index.js @@ -1 +1 @@ -var _0x4667=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x66\x61\x78\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x4667[0];var express=require(_0x4667[1]);var auth=require(_0x4667[2]);var controller=require(_0x4667[3]);var router=express.Router();router[_0x4667[7]](_0x4667[4],auth[_0x4667[5]](),controller[_0x4667[6]]);router[_0x4667[7]](_0x4667[8],auth[_0x4667[5]](),controller[_0x4667[9]]);router[_0x4667[11]](_0x4667[4],auth[_0x4667[5]](),controller[_0x4667[10]]);router[_0x4667[13]](_0x4667[8],auth[_0x4667[5]](),controller[_0x4667[12]]);router[_0x4667[14]](_0x4667[8],auth[_0x4667[5]](),controller[_0x4667[12]]);router[_0x4667[16]](_0x4667[8],auth[_0x4667[5]](),controller[_0x4667[15]]);module[_0x4667[17]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_message/fax_message.ami.js b/server/api/fax_message/fax_message.ami.js index 30591a3..66dc905 100644 --- a/server/api/fax_message/fax_message.ami.js +++ b/server/api/fax_message/fax_message.ami.js @@ -1 +1 @@ -var _0x7483=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x46\x61\x78\x4D\x65\x73\x73\x61\x67\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x72\x65\x67\x69\x73\x74\x65\x72","\x46\x61\x78\x4D\x65\x73\x73\x61\x67\x65\x20\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x6C\x6F\x67","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x73\x74\x61\x74\x75\x73","\x4E\x4F\x54\x20\x53\x45\x4E\x54","\x61\x63\x74\x69\x6F\x6E\x69\x64","\x62\x6F\x64\x79","\x70\x61\x72\x73\x65","\x66\x61\x78\x42\x6F\x64\x79","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x6F\x72\x69\x67\x69\x6E\x61\x74\x65","\x66\x72\x6F\x6D","\x25\x73\x2F\x25\x73\x40\x25\x73","\x74\x65\x63\x68\x6E\x6F\x6C\x6F\x67\x79","\x74\x6F","\x6E\x61\x6D\x65","\x66\x6F\x72\x6D\x61\x74","\x6F\x75\x74\x62\x6F\x75\x6E\x64\x2D\x66\x61\x78","\x73","\x74\x72\x75\x65","\x6D\x61\x78\x72\x61\x74\x65","\x6D\x69\x6E\x72\x61\x74\x65","\x65\x63\x6D","\x79\x65\x73","\x6E\x6F","\x66\x61\x78\x5F\x6C\x6F\x63\x61\x6C\x69\x64","\x66\x61\x78\x5F\x66\x69\x6C\x65","\x66\x61\x78\x5F\x68\x65\x61\x64\x65\x72","\x75\x75\x69\x64","\x46\x41\x49\x4C\x45\x44","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x72\x65\x73\x70\x6F\x6E\x73\x65","\x61\x63\x74\x69\x6F\x6E","\x74\x68\x65\x6E","\x69\x64","\x74\x72\x75\x6E\x6B","\x66\x69\x6E\x64\x42\x79\x49\x64"];_0x7483[0];var _=require(_0x7483[1]);var util=require(_0x7483[2]);var FaxMessage=require(_0x7483[4])[_0x7483[3]];var Trunk=require(_0x7483[4])[_0x7483[5]];exports[_0x7483[6]]= function(_0x3431x5){FaxMessage[_0x7483[9]](function(_0x3431x6){console[_0x7483[8]](_0x7483[7])})};function onSave(_0x3431x5,_0x3431x6,_0x3431x8){if(_0x3431x6[_0x7483[10]]=== _0x7483[11]&& !_0x3431x6[_0x7483[12]]){var _0x3431x9=JSON[_0x7483[14]](_0x3431x6[_0x7483[13]]);console[_0x7483[8]](_0x7483[15],_0x3431x9);Trunk[_0x7483[44]](_0x3431x9[_0x7483[43]][_0x7483[42]])[_0x7483[41]](function(_0x3431xb){var _0x3431xc={Action:_0x7483[18],CallerID:_0x3431x9[_0x7483[19]],Channel:util[_0x7483[24]](_0x7483[20],_0x3431x9[_0x7483[21]],_0x3431x9[_0x7483[22]],_0x3431xb[_0x7483[23]]),Context:_0x7483[25],Exten:_0x7483[26],Priority:1,Async:_0x7483[27],Variable:{MAXRATE:_0x3431x9[_0x7483[28]],MINRATE:_0x3431x9[_0x7483[29]],ECM:_0x3431x9[_0x7483[30]]?_0x7483[31]:_0x7483[32],LOCALID:_0x3431x9[_0x7483[33]],FAXFILE:_0x3431x9[_0x7483[34]],FAXHEADER:_0x3431x9[_0x7483[35]],FAXUUID:_0x3431x9[_0x7483[36]]}};_0x3431x5[_0x7483[40]](_0x3431xc,function(_0x3431xa,_0x3431xd){if(_0x3431xa){_0x3431x6[_0x7483[38]]({status:_0x7483[37]})}else {if(_0x3431xd[_0x7483[39]]&& _0x3431xd[_0x7483[12]]){_0x3431x6[_0x7483[38]]({actionid:_0x3431xd[_0x7483[12]]})}}})})[_0x7483[17]](function(_0x3431xa){console[_0x7483[16]](_0x3431xa)})}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_message/fax_message.controller.js b/server/api/fax_message/fax_message.controller.js index 16da2ad..66dc905 100644 --- a/server/api/fax_message/fax_message.controller.js +++ b/server/api/fax_message/fax_message.controller.js @@ -1 +1 @@ -var _0x85d2=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x66\x73","\x70\x61\x74\x68","\x75\x70\x6C\x6F\x61\x64\x2D\x66\x69\x6C\x65","\x6E\x6F\x64\x65\x2D\x75\x75\x69\x64","\x68\x74\x6D\x6C\x2D\x70\x64\x66","\x66\x6F\x72\x6D\x69\x64\x61\x62\x6C\x65","\x65\x78\x65\x63","\x63\x68\x69\x6C\x64\x5F\x70\x72\x6F\x63\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x46\x61\x78\x4D\x65\x73\x73\x61\x67\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x46\x61\x78\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x46\x61\x78\x52\x6F\x6F\x6D","\x46\x61\x78\x41\x63\x63\x6F\x75\x6E\x74","\x55\x73\x65\x72","\x69\x6E\x64\x65\x78","\x63\x72\x65\x61\x74\x65\x64\x41\x74\x20\x44\x45\x53\x43","\x77\x68\x65\x72\x65","\x71\x75\x65\x72\x79","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65","\x75\x73\x65\x72","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x55\x73\x65\x72\x49\x64","\x62\x6F\x64\x79","\x74\x65\x78\x74","\x66\x61\x78\x4D\x65\x73\x73\x61\x67\x65\x41\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x61\x6D\x69","\x6C\x6F\x63\x61\x6C\x73","\x61\x70\x70","\x75\x70\x64\x61\x74\x65","\x63\x68\x61\x6E\x67\x65\x64","\x53\x45\x4E\x44\x49\x4E\x47","\x66\x61\x78\x4D\x65\x73\x73\x61\x67\x65\x41\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x6C\x65\x74\x65","\x54\x52\x41\x53\x48","\x62\x75\x6C\x6B\x55\x70\x64\x61\x74\x65","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0x85d2[0];var _=require(_0x85d2[1]);var fs=require(_0x85d2[2]);var path=require(_0x85d2[3]);var uploadFile=require(_0x85d2[4]);var uuidLib=require(_0x85d2[5]);var pdf=require(_0x85d2[6]);var formidable=require(_0x85d2[7]);var exec=require(_0x85d2[9])[_0x85d2[8]];var config=require(_0x85d2[10]);var logger=require(_0x85d2[12])(_0x85d2[11]);var FaxMessage=require(_0x85d2[14])[_0x85d2[13]];var FaxAttachment=require(_0x85d2[14])[_0x85d2[15]];var FaxRoom=require(_0x85d2[14])[_0x85d2[16]];var FaxAccount=require(_0x85d2[14])[_0x85d2[17]];var FaxAttachment=require(_0x85d2[14])[_0x85d2[15]];var User=require(_0x85d2[14])[_0x85d2[18]];exports[_0x85d2[19]]= function(_0x8452x10,_0x8452x11,_0x8452x12){var _0x8452x13={order:_0x85d2[20],include:[{all:true,include:[{all:true}]}]};switch(_0x8452x10[_0x85d2[26]][_0x85d2[25]]){case _0x85d2[23]:_0x8452x13[_0x85d2[21]]= _0x8452x10[_0x85d2[22]];break;case _0x85d2[24]:break;default:};return FaxMessage[_0x85d2[31]](_0x8452x13)[_0x85d2[30]](function(_0x8452x15){return _0x8452x11[_0x85d2[29]](200)[_0x85d2[28]](_0x8452x15)})[_0x85d2[27]](function(_0x8452x14){return handleError(_0x8452x11,_0x8452x14,_0x8452x12)})};exports[_0x85d2[32]]= function(_0x8452x10,_0x8452x11){return FaxMessage[_0x85d2[32]]()[_0x85d2[30]](function(_0x8452x16){return _0x8452x11[_0x85d2[29]](200)[_0x85d2[28]](_0x8452x16)})[_0x85d2[27]](function(_0x8452x14){return handleError(_0x8452x11,_0x8452x14)})};exports[_0x85d2[33]]= function(_0x8452x10,_0x8452x11,_0x8452x12){return FaxMessage[_0x85d2[40]](_0x8452x10[_0x85d2[36]][_0x85d2[35]],{include:[{model:FaxAttachment},{model:User,attributes:[_0x85d2[35],_0x85d2[37],_0x85d2[38],_0x85d2[39]]}]})[_0x85d2[30]](function(_0x8452x17){if(!_0x8452x17){return _0x8452x11[_0x85d2[34]](404)};return _0x8452x11[_0x85d2[28]](_0x8452x17)})[_0x85d2[27]](function(_0x8452x14){return handleError(_0x8452x11,_0x8452x14,_0x8452x12)})};exports[_0x85d2[41]]= function(_0x8452x10,_0x8452x11,_0x8452x12){_0x8452x10[_0x85d2[43]][_0x85d2[42]]= _0x8452x10[_0x85d2[26]][_0x85d2[35]];_0x8452x10[_0x85d2[43]][_0x85d2[44]]= _0x8452x10[_0x85d2[43]][_0x85d2[44]];return FaxMessage[_0x85d2[41]](_0x8452x10[_0x85d2[43]],{include:[{model:FaxAttachment}]})[_0x85d2[30]](function(_0x8452x17){if(_0x8452x17){_0x8452x10[_0x85d2[48]][_0x85d2[47]][_0x85d2[46]][_0x85d2[28]]({message:_0x85d2[45],doc:_0x8452x17,options:{user:_0x8452x10[_0x85d2[26]]}})};return _0x8452x11[_0x85d2[29]](201)[_0x85d2[28]](_0x8452x17)})[_0x85d2[27]](function(_0x8452x14){return handleError(_0x8452x11,_0x8452x14)})};exports[_0x85d2[49]]= function(_0x8452x10,_0x8452x11,_0x8452x12){return FaxMessage[_0x85d2[40]](_0x8452x10[_0x85d2[36]][_0x85d2[35]],{include:[{all:true}]})[_0x85d2[30]](function(_0x8452x17){if(!_0x8452x17){return _0x8452x11[_0x85d2[34]](404)};return _0x8452x17[_0x85d2[53]](_0x8452x10[_0x85d2[43]],{user:_0x8452x10[_0x85d2[26]]})})[_0x85d2[30]](function(_0x8452x18){if(_0x8452x18[_0x85d2[50]](_0x85d2[29])&& _0x8452x18[_0x85d2[29]]=== _0x85d2[51]){_0x8452x10[_0x85d2[48]][_0x85d2[47]][_0x85d2[46]][_0x85d2[28]]({message:_0x85d2[52],doc:_0x8452x18,options:{user:_0x8452x10[_0x85d2[26]]}})};return _0x8452x11[_0x85d2[29]](200)[_0x85d2[28]](_0x8452x18)})[_0x85d2[27]](function(_0x8452x14){return handleError(_0x8452x11,_0x8452x14,_0x8452x12)})};exports[_0x85d2[54]]= function(_0x8452x10,_0x8452x11,_0x8452x12){return FaxMessage[_0x85d2[40]](_0x8452x10[_0x85d2[36]][_0x85d2[35]])[_0x85d2[30]](function(_0x8452x17){if(!_0x8452x17){return _0x8452x11[_0x85d2[34]](404)};return _0x8452x17[_0x85d2[54]]()})[_0x85d2[30]](function(){return _0x8452x11[_0x85d2[34]](204)})[_0x85d2[27]](function(_0x8452x14){return handleError(_0x8452x11,_0x8452x14,_0x8452x12)})};exports[_0x85d2[55]]= function(_0x8452x10,_0x8452x11,_0x8452x12){return FaxMessage[_0x85d2[57]]({where:{id:{$in:_0x8452x10[_0x85d2[43]][_0x85d2[35]]}},attributes:{directory:_0x85d2[56]}})[_0x85d2[30]](function(_0x8452x17){if(!_0x8452x17){return _0x8452x11[_0x85d2[34]](404)};return _0x8452x17[_0x85d2[54]]()})[_0x85d2[30]](function(){return _0x8452x11[_0x85d2[34]](204)})[_0x85d2[27]](function(_0x8452x14){return handleError(_0x8452x11,_0x8452x14,_0x8452x12)})};function handleError(_0x8452x11,_0x8452x14,_0x8452x12){logger[_0x85d2[59]](_0x8452x14[_0x85d2[58]]);return _0x8452x11[_0x85d2[29]](500)[_0x85d2[28]](_0x8452x14)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_message/fax_message.events.js b/server/api/fax_message/fax_message.events.js index 50ec39c..66dc905 100644 --- a/server/api/fax_message/fax_message.events.js +++ b/server/api/fax_message/fax_message.events.js @@ -1 +1 @@ -var _0x3162=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x46\x61\x78\x4D\x65\x73\x73\x61\x67\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x3162[0];const EventEmitter=require(_0x3162[1]);const FaxMessage=require(_0x3162[3])[_0x3162[2]];var FaxMessageEvents= new EventEmitter();FaxMessageEvents[_0x3162[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x3162[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x3162[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x3162[6]};for(var e in events){var event=events[e];FaxMessage[_0x3162[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xd167x8,_0xd167x9,_0xd167xa){FaxMessageEvents[_0x3162[10]](event+ _0x3162[8]+ _0xd167x8[_0x3162[9]],_0xd167x8);FaxMessageEvents[_0x3162[10]](event,_0xd167x8);_0xd167xa(null)}}module[_0x3162[11]]= FaxMessageEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_message/fax_message.socket.js b/server/api/fax_message/fax_message.socket.js index 0eb0f6f..66dc905 100644 --- a/server/api/fax_message/fax_message.socket.js +++ b/server/api/fax_message/fax_message.socket.js @@ -1 +1 @@ -var _0x4204=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x66\x61\x78\x5F\x6D\x65\x73\x73\x61\x67\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x66\x61\x78\x5F\x6D\x65\x73\x73\x61\x67\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x4204[0];const FaxMessageEvents=require(_0x4204[1]);var events=[_0x4204[2],_0x4204[3]];exports[_0x4204[4]]= function(_0x641dx3){for(var _0x641dx4=0,_0x641dx5=events[_0x4204[5]];_0x641dx4< _0x641dx5;_0x641dx4++){var _0x641dx6=events[_0x641dx4];var _0x641dx7=createListener(_0x4204[6]+ _0x641dx6,_0x641dx3);FaxMessageEvents[_0x4204[7]](_0x641dx6,_0x641dx7);_0x641dx3[_0x4204[7]](_0x4204[8],removeListener(_0x641dx6,_0x641dx7))}};function createListener(_0x641dx6,_0x641dx3){return function(_0x641dx9){_0x641dx3[_0x4204[9]](_0x641dx6,_0x641dx9)}}function removeListener(_0x641dx6,_0x641dx7){return function(){FaxMessageEvents[_0x4204[10]](_0x641dx6,_0x641dx7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_message/index.js b/server/api/fax_message/index.js index 24b2cf4..66dc905 100644 --- a/server/api/fax_message/index.js +++ b/server/api/fax_message/index.js @@ -1 +1 @@ -var _0x7104=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x66\x61\x78\x5F\x6D\x65\x73\x73\x61\x67\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x46\x61\x78","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x2F\x64\x65\x6C\x65\x74\x65\x2F\x62\x75\x6C\x6B","\x62\x75\x6C\x6B\x44\x65\x6C\x65\x74\x65","\x2F\x64\x65\x6C\x65\x74\x65\x2F\x3A\x69\x64","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x7104[0];var express=require(_0x7104[1]);var controller=require(_0x7104[2]);var auth=require(_0x7104[3]);var license=require(_0x7104[4]);var router=express.Router();router[_0x7104[13]](_0x7104[5],license[_0x7104[6]](),license[_0x7104[7]](),auth[_0x7104[8]](),auth[_0x7104[11]]([10],[_0x7104[9],_0x7104[10]]),controller[_0x7104[12]]);router[_0x7104[13]](_0x7104[14],license[_0x7104[6]](),license[_0x7104[7]](),auth[_0x7104[8]](),auth[_0x7104[11]]([10],[_0x7104[9]]),controller[_0x7104[15]]);router[_0x7104[13]](_0x7104[16],license[_0x7104[6]](),license[_0x7104[7]](),auth[_0x7104[8]](),auth[_0x7104[11]]([10],[_0x7104[9],_0x7104[10]]),controller[_0x7104[17]]);router[_0x7104[19]](_0x7104[5],license[_0x7104[6]](),license[_0x7104[7]](),auth[_0x7104[8]](),auth[_0x7104[11]]([10],[_0x7104[9],_0x7104[10]]),controller[_0x7104[18]]);router[_0x7104[21]](_0x7104[5],license[_0x7104[6]](),license[_0x7104[7]](),auth[_0x7104[8]](),auth[_0x7104[11]]([10],[_0x7104[9],_0x7104[10]]),controller[_0x7104[20]]);router[_0x7104[21]](_0x7104[22],license[_0x7104[6]](),license[_0x7104[7]](),auth[_0x7104[8]](),auth[_0x7104[11]]([10],[_0x7104[9]]),controller[_0x7104[23]]);router[_0x7104[21]](_0x7104[24],license[_0x7104[6]](),license[_0x7104[7]](),auth[_0x7104[8]](),auth[_0x7104[11]]([10],[_0x7104[9]]),controller[_0x7104[20]]);router[_0x7104[21]](_0x7104[16],license[_0x7104[6]](),license[_0x7104[7]](),auth[_0x7104[8]](),auth[_0x7104[11]]([10],[_0x7104[9],_0x7104[10]]),controller[_0x7104[20]]);router[_0x7104[26]](_0x7104[16],license[_0x7104[6]](),license[_0x7104[7]](),auth[_0x7104[8]](),auth[_0x7104[11]]([10],[_0x7104[9]]),controller[_0x7104[25]]);module[_0x7104[27]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_queue/fax_queue.controller.js b/server/api/fax_queue/fax_queue.controller.js index 0b4928f..66dc905 100644 --- a/server/api/fax_queue/fax_queue.controller.js +++ b/server/api/fax_queue/fax_queue.controller.js @@ -1 +1 @@ -var _0xb07a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x46\x61\x78\x51\x75\x65\x75\x65","\x55\x73\x65\x72\x48\x61\x73\x46\x61\x78\x51\x75\x65\x75\x65","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x46\x61\x78\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x69\x64","\x75\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x72\x6F\x6C\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x70\x61\x72\x61\x6D\x73","\x63\x72\x65\x61\x74\x65","\x61\x67\x65\x6E\x74\x73","\x62\x6F\x64\x79","\x70\x65\x6E\x61\x6C\x74\x79","\x6E\x61\x6D\x65","\x61\x64\x64\x55\x73\x65\x72\x73","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x6D\x61\x70","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x6C\x65\x6E\x67\x74\x68","\x61\x67\x65\x6E\x74","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x67\x65\x74\x55\x73\x65\x72\x73","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x72\x65\x6D\x6F\x76\x65\x55\x73\x65\x72\x73","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0xb07a[0];var _=require(_0xb07a[1]);var Util=require(_0xb07a[2]);var logger=require(_0xb07a[4])(_0xb07a[3]);var User=require(_0xb07a[6])[_0xb07a[5]];var FaxQueue=require(_0xb07a[6])[_0xb07a[7]];var UserHasFaxQueue=require(_0xb07a[6])[_0xb07a[8]];exports[_0xb07a[9]]= function(_0xaa6ax7,_0xaa6ax8){switch(_0xaa6ax7[_0xb07a[17]][_0xb07a[21]]){case _0xb07a[17]:return User[_0xb07a[18]](_0xaa6ax7[_0xb07a[17]][_0xb07a[16]],{attributes:[_0xb07a[16]]})[_0xb07a[13]](Util[_0xb07a[15]](_0xaa6ax7[_0xb07a[14]]))[_0xb07a[13]](function(_0xaa6axa){_0xaa6ax8[_0xb07a[12]](200)[_0xb07a[11]](_0xaa6axa)})[_0xb07a[10]](function(_0xaa6ax9){return handleError(_0xaa6ax8,_0xaa6ax9)});default:return FaxQueue[_0xb07a[20]](Util[_0xb07a[19]](_0xaa6ax7[_0xb07a[14]]))[_0xb07a[13]](function(_0xaa6axa){_0xaa6ax8[_0xb07a[12]](200)[_0xb07a[11]](_0xaa6axa)})[_0xb07a[10]](function(_0xaa6ax9){return handleError(_0xaa6ax8,_0xaa6ax9)})}};exports[_0xb07a[22]]= function(_0xaa6ax7,_0xaa6ax8){return FaxQueue[_0xb07a[18]](_0xaa6ax7[_0xb07a[24]][_0xb07a[16]])[_0xb07a[13]](function(_0xaa6axb){if(!_0xaa6axb){return _0xaa6ax8[_0xb07a[23]](404)};return _0xaa6ax8[_0xb07a[11]](_0xaa6axb)})[_0xb07a[10]](function(_0xaa6ax9){return handleError(_0xaa6ax8,_0xaa6ax9)})};exports[_0xb07a[25]]= function(_0xaa6ax7,_0xaa6ax8){var _0xaa6axc;return FaxQueue[_0xb07a[25]](_0xaa6ax7[_0xb07a[27]])[_0xb07a[13]](function(_0xaa6axd){_0xaa6axc= _0xaa6axd;if(_0xaa6ax7[_0xb07a[27]][_0xb07a[26]]){return _0xaa6axc[_0xb07a[30]](_0xaa6ax7[_0xb07a[27]][_0xb07a[26]],{penalty:_0xaa6ax7[_0xb07a[27]][_0xb07a[28]]|| 0,queue:_0xaa6axc[_0xb07a[29]]})}})[_0xb07a[13]](function(){return _0xaa6ax8[_0xb07a[12]](201)[_0xb07a[11]](_0xaa6axc)})[_0xb07a[10]](function(_0xaa6ax9){return handleError(_0xaa6ax8,_0xaa6ax9)})};exports[_0xb07a[31]]= function(_0xaa6ax7,_0xaa6ax8){if(_0xaa6ax7[_0xb07a[27]][_0xb07a[16]]){delete _0xaa6ax7[_0xb07a[27]][_0xb07a[16]]};return FaxQueue[_0xb07a[18]](_0xaa6ax7[_0xb07a[24]][_0xb07a[16]])[_0xb07a[13]](function(_0xaa6axb){if(!_0xaa6axb){return _0xaa6ax8[_0xb07a[23]](404)};var _0xaa6axe=_[_0xb07a[32]](_0xaa6axb,_0xaa6ax7[_0xb07a[27]]);return _0xaa6axe[_0xb07a[33]]()})[_0xb07a[13]](function(_0xaa6axb){return _0xaa6ax8[_0xb07a[12]](200)[_0xb07a[11]](_0xaa6axb)})[_0xb07a[10]](function(_0xaa6ax9){return handleError(_0xaa6ax8,_0xaa6ax9)})};exports[_0xb07a[34]]= function(_0xaa6ax7,_0xaa6ax8){return FaxQueue[_0xb07a[18]](_0xaa6ax7[_0xb07a[24]][_0xb07a[16]])[_0xb07a[13]](function(_0xaa6axb){if(!_0xaa6axb){return _0xaa6ax8[_0xb07a[23]](404)};return _0xaa6axb[_0xb07a[34]]()})[_0xb07a[13]](function(){return _0xaa6ax8[_0xb07a[23]](204)})[_0xb07a[10]](function(_0xaa6ax9){return handleError(_0xaa6ax8,_0xaa6ax9)})};exports[_0xb07a[35]]= function(_0xaa6ax7,_0xaa6ax8,_0xaa6axf){return FaxQueue[_0xb07a[18]](_0xaa6ax7[_0xb07a[24]][_0xb07a[16]])[_0xb07a[13]](function(_0xaa6axd){if(!_0xaa6axd){return _0xaa6ax8[_0xb07a[23]](404)};var _0xaa6ax10=_[_0xb07a[36]](_0xaa6ax7[_0xb07a[27]][_0xb07a[26]],function(_0xaa6ax11){return {UserId:_0xaa6ax11,penalty:_0xaa6ax7[_0xb07a[27]][_0xb07a[28]],FaxQueueId:_0xaa6axd[_0xb07a[16]],queue:_0xaa6axd[_0xb07a[29]]}});return UserHasFaxQueue[_0xb07a[37]](_0xaa6ax10,{individualHooks:true})})[_0xb07a[13]](function(){return _0xaa6ax8[_0xb07a[23]](200)})[_0xb07a[10]](function(_0xaa6ax9){return handleError(_0xaa6ax8,_0xaa6ax9)})};exports[_0xb07a[38]]= function(_0xaa6ax7,_0xaa6ax8){return FaxQueue[_0xb07a[18]](_0xaa6ax7[_0xb07a[24]][_0xb07a[16]])[_0xb07a[13]](function(_0xaa6ax13){if(!_0xaa6ax13){return _0xaa6ax8[_0xb07a[23]](404)};return _0xaa6ax13[_0xb07a[43]]({where:{role:_0xb07a[40]},attributes:[_0xb07a[16],_0xb07a[29],_0xb07a[41],_0xb07a[42]]})})[_0xb07a[13]](function(_0xaa6ax12){return _0xaa6ax8[_0xb07a[12]](200)[_0xb07a[11]]({rows:_0xaa6ax12,count:_0xaa6ax12[_0xb07a[39]]})})[_0xb07a[10]](function(_0xaa6ax9){return handleError(_0xaa6ax8,_0xaa6ax9)})};exports[_0xb07a[44]]= function(_0xaa6ax7,_0xaa6ax8,_0xaa6axf){return FaxQueue[_0xb07a[18]](_0xaa6ax7[_0xb07a[24]][_0xb07a[16]])[_0xb07a[13]](function(_0xaa6ax13){if(!_0xaa6ax13){return _0xaa6ax8[_0xb07a[23]](404)};return _0xaa6ax13[_0xb07a[45]](_0xaa6ax7[_0xb07a[14]][_0xb07a[26]],{individualHooks:true})})[_0xb07a[13]](function(){return _0xaa6ax8[_0xb07a[23]](202)})[_0xb07a[10]](function(_0xaa6ax9){return _0xaa6axf(_0xaa6ax9)})};exports[_0xb07a[46]]= function(_0xaa6ax7,_0xaa6ax8){return FaxQueue[_0xb07a[34]]({where:{id:_0xaa6ax7[_0xb07a[14]][_0xb07a[47]]},individualHooks:true})[_0xb07a[13]](function(){return _0xaa6ax8[_0xb07a[23]](204)})[_0xb07a[10]](function(_0xaa6ax9){return handleError(_0xaa6ax8,_0xaa6ax9)})};function handleError(_0xaa6ax8,_0xaa6ax9){logger[_0xb07a[49]](_0xaa6ax9[_0xb07a[48]]);return _0xaa6ax8[_0xb07a[12]](500)[_0xb07a[11]](_0xaa6ax9)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_queue/fax_queue.events.js b/server/api/fax_queue/fax_queue.events.js index 56730c0..66dc905 100644 --- a/server/api/fax_queue/fax_queue.events.js +++ b/server/api/fax_queue/fax_queue.events.js @@ -1 +1 @@ -var _0xe16c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x46\x61\x78\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xe16c[0];const EventEmitter=require(_0xe16c[1]);const FaxQueue=require(_0xe16c[3])[_0xe16c[2]];var FaxQueueEvents= new EventEmitter();FaxQueueEvents[_0xe16c[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xe16c[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xe16c[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xe16c[6]};for(var e in events){var event=events[e];FaxQueue[_0xe16c[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xaa2bx8,_0xaa2bx9,_0xaa2bxa){FaxQueueEvents[_0xe16c[10]](event+ _0xe16c[8]+ _0xaa2bx8[_0xe16c[9]],_0xaa2bx8);FaxQueueEvents[_0xe16c[10]](event,_0xaa2bx8);_0xaa2bxa(null)}}module[_0xe16c[11]]= FaxQueueEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_queue/fax_queue.socket.js b/server/api/fax_queue/fax_queue.socket.js index 0f9b151..66dc905 100644 --- a/server/api/fax_queue/fax_queue.socket.js +++ b/server/api/fax_queue/fax_queue.socket.js @@ -1 +1 @@ -var _0x1f86=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x66\x61\x78\x5F\x71\x75\x65\x75\x65\x2E\x65\x76\x65\x6E\x74\x73","\x46\x61\x78\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6C\x6F\x64\x61\x73\x68","\x62\x6C\x75\x65\x62\x69\x72\x64","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x66\x61\x78\x5F\x71\x75\x65\x75\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x72\x6F\x6C\x65","\x61\x64\x6D\x69\x6E","\x6E\x61\x6D\x65","\x6A\x6F\x69\x6E","\x65\x6D\x69\x74","\x66\x61\x78\x5F\x71\x75\x65\x75\x65\x3A\x73\x61\x76\x65","\x45\x72\x72\x6F\x72\x20\x66\x69\x6C\x74\x65\x72\x69\x6E\x67\x20\x71\x75\x65\x75\x65\x73\x20\x61\x66\x74\x65\x72\x20\x71\x75\x65\x75\x65\x20\x73\x61\x76\x65","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x74\x68\x65\x6E","\x72\x65\x73\x6F\x6C\x76\x65","\x66\x61\x78\x5F\x71\x75\x65\x75\x65\x3A\x75\x70\x64\x61\x74\x65","\x6C\x65\x61\x76\x65","\x66\x61\x78\x5F\x71\x75\x65\x75\x65\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x72\x6F\x77\x73","\x6D\x61\x70","\x67\x65\x74\x46\x61\x78\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x75\x73\x65\x72\x49\x64","\x69\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x66\x69\x6E\x64\x41\x6C\x6C"];_0x1f86[0];var FaxQueueEvents=require(_0x1f86[1]);var FaxQueue=require(_0x1f86[3])[_0x1f86[2]];var User=require(_0x1f86[3])[_0x1f86[4]];var Util=require(_0x1f86[5]);var _=require(_0x1f86[6]);var Promise=require(_0x1f86[7]);var events=[_0x1f86[8],_0x1f86[9]];exports[_0x1f86[10]]= function(_0x665fx8){for(var _0x665fx9=0,_0x665fxa=events[_0x1f86[11]];_0x665fx9< _0x665fxa;_0x665fx9++){var _0x665fxb=events[_0x665fx9];var _0x665fxc=createListener(_0x1f86[12]+ _0x665fxb,_0x665fx8);FaxQueueEvents[_0x1f86[13]](_0x665fxb,_0x665fxc);_0x665fx8[_0x1f86[13]](_0x1f86[14],removeListener(_0x665fxb,_0x665fxc))}};function createListener(_0x665fxb,_0x665fx8){return function(_0x665fxe){switch(_0x665fxb){case _0x1f86[20]:if(_0x665fx8[_0x1f86[15]]=== _0x1f86[16]){_0x665fx8[_0x1f86[18]](_0x665fxe[_0x1f86[17]]);_0x665fx8[_0x1f86[19]](_0x665fxb,_0x665fxe)};break;case _0x1f86[27]:return Promise[_0x1f86[26]]()[_0x1f86[25]](getFaxQueues(_0x665fx8))[_0x1f86[25]](function(_0x665fx10){if(_[_0x1f86[24]](_0x665fx10,_0x665fxe[_0x1f86[17]])){_0x665fx8[_0x1f86[19]](_0x665fxb,_0x665fxe)}})[_0x1f86[23]](function(_0x665fxf){console[_0x1f86[22]](_0x1f86[21],_0x665fxf)});break;case _0x1f86[29]:_0x665fx8[_0x1f86[28]](_0x665fxe[_0x1f86[17]]);_0x665fx8[_0x1f86[19]](_0x665fxb,_0x665fxe);break;default:}}}function removeListener(_0x665fxb,_0x665fxc){return function(){FaxQueueEvents[_0x1f86[30]](_0x665fxb,_0x665fxc)}}function getFaxQueues(_0x665fx13){return function(){switch(_0x665fx13[_0x1f86[15]]){case _0x1f86[37]:return User[_0x1f86[36]](_0x665fx13[_0x1f86[34]],{attributes:[_0x1f86[35]]})[_0x1f86[25]](Util[_0x1f86[33]]())[_0x1f86[25]](function(_0x665fx10){return _[_0x1f86[32]](_0x665fx10[_0x1f86[31]],_0x1f86[17])});case _0x1f86[16]:return FaxQueue[_0x1f86[38]]()[_0x1f86[25]](function(_0x665fx14){return {rows:_0x665fx14}})[_0x1f86[25]](function(_0x665fx10){return _[_0x1f86[32]](_0x665fx10[_0x1f86[31]],_0x1f86[17])});default:return []}}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_queue/index.js b/server/api/fax_queue/index.js index 7df942f..66dc905 100644 --- a/server/api/fax_queue/index.js +++ b/server/api/fax_queue/index.js @@ -1 +1 @@ -var _0xbb93=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x66\x61\x78\x5F\x71\x75\x65\x75\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x46\x61\x78","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x61\x67\x65\x6E\x74\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x68\x61\x73\x52\x6F\x6C\x65","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x65\x78\x70\x6F\x72\x74\x73"];_0xbb93[0];var express=require(_0xbb93[1]);var controller=require(_0xbb93[2]);var auth=require(_0xbb93[3]);var license=require(_0xbb93[4]);var router=express.Router();router[_0xbb93[12]](_0xbb93[5],license[_0xbb93[6]](),license[_0xbb93[7]](),auth[_0xbb93[8]](),auth[_0xbb93[10]]([10],[_0xbb93[9]]),controller[_0xbb93[11]]);router[_0xbb93[12]](_0xbb93[13],license[_0xbb93[6]](),license[_0xbb93[7]](),auth[_0xbb93[8]](),auth[_0xbb93[10]]([10],[_0xbb93[9]]),controller[_0xbb93[14]]);router[_0xbb93[12]](_0xbb93[15],license[_0xbb93[6]](),license[_0xbb93[7]](),auth[_0xbb93[8]](),auth[_0xbb93[10]]([10],[_0xbb93[9]]),controller[_0xbb93[16]]);router[_0xbb93[19]](_0xbb93[5],license[_0xbb93[6]](),license[_0xbb93[7]](),auth[_0xbb93[8]](),auth[_0xbb93[17]](_0xbb93[9]),controller[_0xbb93[18]]);router[_0xbb93[19]](_0xbb93[15],license[_0xbb93[6]](),license[_0xbb93[7]](),auth[_0xbb93[8]](),auth[_0xbb93[17]](_0xbb93[9]),controller[_0xbb93[20]]);router[_0xbb93[22]](_0xbb93[13],license[_0xbb93[6]](),license[_0xbb93[7]](),auth[_0xbb93[8]](),auth[_0xbb93[17]](_0xbb93[9]),controller[_0xbb93[21]]);router[_0xbb93[23]](_0xbb93[13],license[_0xbb93[6]](),license[_0xbb93[7]](),auth[_0xbb93[8]](),auth[_0xbb93[17]](_0xbb93[9]),controller[_0xbb93[21]]);router[_0xbb93[25]](_0xbb93[5],license[_0xbb93[6]](),license[_0xbb93[7]](),auth[_0xbb93[8]](),auth[_0xbb93[17]](_0xbb93[9]),controller[_0xbb93[24]]);router[_0xbb93[25]](_0xbb93[13],license[_0xbb93[6]](),license[_0xbb93[7]](),auth[_0xbb93[8]](),auth[_0xbb93[17]](_0xbb93[9]),controller[_0xbb93[26]]);router[_0xbb93[25]](_0xbb93[15],license[_0xbb93[6]](),license[_0xbb93[7]](),auth[_0xbb93[8]](),auth[_0xbb93[17]](_0xbb93[9]),controller[_0xbb93[27]]);module[_0xbb93[28]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_room/fax_room.controller.js b/server/api/fax_room/fax_room.controller.js index 5bb3195..66dc905 100644 --- a/server/api/fax_room/fax_room.controller.js +++ b/server/api/fax_room/fax_room.controller.js @@ -1 +1 @@ -var _0xb030=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6D\x6F\x6D\x65\x6E\x74","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x43\x6F\x6E\x74\x61\x63\x74","\x46\x61\x78\x52\x6F\x6F\x6D","\x46\x61\x78\x4D\x65\x73\x73\x61\x67\x65","\x46\x61\x78\x41\x63\x63\x6F\x75\x6E\x74","\x46\x61\x78\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x46\x61\x78\x51\x75\x65\x75\x65","\x46\x61\x78\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x66\x61\x75\x6C\x74","\x73\x63\x6F\x70\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x69\x64","\x6D\x61\x70","\x67\x65\x74\x46\x61\x78\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x72\x6F\x6C\x65","\x70\x65\x6E\x64\x69\x6E\x67","\x50\x45\x4E\x44\x49\x4E\x47","\x64\x61\x79","\x73\x74\x61\x72\x74\x4F\x66","\x6D\x65\x72\x67\x65","\x63\x6F\x75\x6E\x74","\x61\x6C\x6C","\x6E\x65\x77","\x4E\x45\x57","\x6F\x70\x65\x6E","\x4F\x50\x45\x4E","\x63\x6C\x6F\x73\x65\x64","\x43\x4C\x4F\x53\x45\x44","\x69\x6E\x62\x6F\x78","\x53\x45\x4C\x45\x43\x54\x20\x60\x46\x61\x78\x52\x6F\x6F\x6D\x60\x2E\x60\x69\x64\x60\x2C\x20\x60\x46\x61\x78\x52\x6F\x6F\x6D\x60\x2E\x60\x66\x72\x6F\x6D\x60\x2C\x20\x60\x46\x61\x78\x52\x6F\x6F\x6D\x60\x2E\x60\x61\x63\x63\x6F\x75\x6E\x74\x60\x2C\x20\x60\x46\x61\x78\x52\x6F\x6F\x6D\x60\x2E\x60\x73\x74\x61\x74\x75\x73\x60\x2C\x20\x60\x46\x61\x78\x52\x6F\x6F\x6D\x60\x2E\x60\x6C\x61\x73\x74\x45\x76\x65\x6E\x74\x60\x2C\x20\x60\x46\x61\x78\x52\x6F\x6F\x6D\x60\x2E\x60\x75\x70\x64\x61\x74\x65\x64\x41\x74\x60\x20\x46\x52\x4F\x4D\x20\x60\x66\x61\x78\x5F\x72\x6F\x6F\x6D\x73\x60\x20\x41\x53\x20\x60\x46\x61\x78\x52\x6F\x6F\x6D\x60\x20\x4C\x45\x46\x54\x20\x4F\x55\x54\x45\x52\x20\x4A\x4F\x49\x4E\x20\x28\x60\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x66\x61\x78\x5F\x72\x6F\x6F\x6D\x73\x60\x20\x41\x53\x20\x60\x55\x73\x65\x72\x73\x2E\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x66\x61\x78\x5F\x72\x6F\x6F\x6D\x73\x60\x20\x49\x4E\x4E\x45\x52\x20\x4A\x4F\x49\x4E\x20\x60\x75\x73\x65\x72\x73\x60\x20\x41\x53\x20\x60\x55\x73\x65\x72\x73\x60\x20\x4F\x4E\x20\x60\x55\x73\x65\x72\x73\x60\x2E\x60\x69\x64\x60\x20\x3D\x20\x60\x55\x73\x65\x72\x73\x2E\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x66\x61\x78\x5F\x72\x6F\x6F\x6D\x73\x60\x2E\x60\x55\x73\x65\x72\x49\x64\x60\x29\x20\x4F\x4E\x20\x60\x46\x61\x78\x52\x6F\x6F\x6D\x60\x2E\x60\x69\x64\x60\x20\x3D\x20\x60\x55\x73\x65\x72\x73\x2E\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x66\x61\x78\x5F\x72\x6F\x6F\x6D\x73\x60\x2E\x60\x46\x61\x78\x52\x6F\x6F\x6D\x49\x64\x60\x20\x57\x48\x45\x52\x45\x20\x28\x60\x46\x61\x78\x52\x6F\x6F\x6D\x60\x2E\x60\x64\x65\x6C\x65\x74\x65\x64\x41\x74\x60\x20\x49\x53\x20\x4E\x55\x4C\x4C\x20\x41\x4E\x44\x20\x28\x60\x46\x61\x78\x52\x6F\x6F\x6D\x60\x2E\x60\x73\x74\x61\x74\x75\x73\x60\x20\x3D\x20\x3A\x73\x74\x61\x74\x75\x73\x20\x4F\x52\x20\x60\x55\x73\x65\x72\x73\x60\x2E\x60\x69\x64\x60\x20\x3D\x20\x3A\x69\x64\x29\x29","\x55\x4E\x4D\x41\x4E\x41\x47\x45\x44","\x53\x45\x4C\x45\x43\x54","\x51\x75\x65\x72\x79\x54\x79\x70\x65\x73","\x61\x67\x65\x6E\x74","\x53\x45\x4C\x45\x43\x54\x20\x60\x69\x64\x60\x2C\x20\x60\x66\x72\x6F\x6D\x60\x2C\x20\x60\x61\x63\x63\x6F\x75\x6E\x74\x60\x2C\x20\x60\x73\x74\x61\x74\x75\x73\x60\x2C\x20\x60\x6C\x61\x73\x74\x45\x76\x65\x6E\x74\x60\x20\x2C\x60\x75\x70\x64\x61\x74\x65\x64\x41\x74\x60\x20\x46\x52\x4F\x4D\x20\x60\x66\x61\x78\x5F\x72\x6F\x6F\x6D\x73\x60\x20\x57\x48\x45\x52\x45\x20\x60\x66\x61\x78\x5F\x72\x6F\x6F\x6D\x73\x60\x2E\x60\x64\x65\x6C\x65\x74\x65\x64\x41\x74\x60\x20\x49\x53\x20\x4E\x55\x4C\x4C","\x61\x67\x65\x6E\x74\x49\x6E\x64\x65\x78","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x41\x6C\x6C","\x6F\x70\x65\x6E\x52\x6F\x6F\x6D","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x61\x64\x64\x55\x73\x65\x72","\x75\x70\x64\x61\x74\x65","\x73\x68\x6F\x77","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x69\x6E\x74\x65\x72\x6E\x61\x6C","\x67\x65\x74\x55\x73\x65\x72\x73","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x63\x72\x65\x61\x74\x65\x4D\x65\x73\x73\x61\x67\x65","\x55\x73\x65\x72\x49\x64","\x46\x61\x78\x52\x6F\x6F\x6D\x49\x64","\x74\x65\x78\x74","\x66\x61\x78\x4D\x65\x73\x73\x61\x67\x65\x41\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x61\x6D\x69","\x6C\x6F\x63\x61\x6C\x73","\x61\x70\x70","\x63\x68\x61\x6E\x67\x65\x64","\x66\x61\x78\x52\x6F\x6F\x6D\x41\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x6A\x6F\x62\x49\x64","\x46\x61\x78\x20\x61\x6C\x72\x65\x61\x64\x79\x20\x61\x73\x73\x69\x67\x6E\x65\x64","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65\x41\x67\x65\x6E\x74\x73","\x61\x67\x65\x6E\x74\x73","\x73\x65\x74\x55\x73\x65\x72\x73","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x75\x70\x64\x61\x74\x65\x50\x61\x74\x63\x68","\x2C","\x73\x70\x6C\x69\x74","\x67\x65\x74\x44\x61\x73\x68\x62\x6F\x61\x72\x64\x56\x61\x6C\x75\x65\x73","\x6B\x65\x79\x42\x79","\x6D\x61\x70\x56\x61\x6C\x75\x65\x73","\x53\x45\x4C\x45\x43\x54\x20\x4C\x4F\x57\x45\x52\x28\x73\x74\x61\x74\x75\x73\x29\x20\x41\x53\x20\x73\x74\x61\x74\x75\x73\x2C\x20\x43\x4F\x55\x4E\x54\x28\x69\x64\x29\x20\x41\x53\x20\x63\x6F\x75\x6E\x74\x20\x46\x52\x4F\x4D\x20\x66\x61\x78\x5F\x72\x6F\x6F\x6D\x73\x20\x57\x48\x45\x52\x45\x20\x64\x65\x6C\x65\x74\x65\x64\x41\x74\x20\x49\x53\x20\x4E\x55\x4C\x4C\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x73\x74\x61\x74\x75\x73","\x67\x65\x74\x52\x6F\x6F\x6D\x42\x79\x4D\x65\x73\x73\x61\x67\x65","\x67\x65\x74\x46\x61\x78\x52\x6F\x6F\x6D"];_0xb030[0];var _=require(_0xb030[1]);var util=require(_0xb030[2]);var Util=require(_0xb030[3]);var moment=require(_0xb030[4]);var logger=require(_0xb030[6])(_0xb030[5]);var sequelize=require(_0xb030[8])[_0xb030[7]];var User=require(_0xb030[8])[_0xb030[9]];var Agent=require(_0xb030[8])[_0xb030[9]];var Contact=require(_0xb030[8])[_0xb030[10]];var FaxRoom=require(_0xb030[8])[_0xb030[11]];var FaxMessage=require(_0xb030[8])[_0xb030[12]];var FaxAccount=require(_0xb030[8])[_0xb030[13]];var FaxApplication=require(_0xb030[8])[_0xb030[14]];var FaxQueue=require(_0xb030[8])[_0xb030[15]];var FaxAttachment=require(_0xb030[8])[_0xb030[16]];exports[_0xb030[17]]= function(_0x966cx10,_0x966cx11,_0x966cx12){return FaxRoom[_0xb030[26]](_0xb030[25])[_0xb030[24]](Util[_0xb030[23]](_0x966cx10[_0xb030[22]]))[_0xb030[21]](function(_0x966cx14){return _0x966cx11[_0xb030[20]](200)[_0xb030[19]](_0x966cx14)})[_0xb030[18]](function(_0x966cx13){return handleError(_0x966cx11,_0x966cx13)})};exports[_0xb030[27]]= function(_0x966cx10,_0x966cx11){return FaxRoom[_0xb030[27]]()[_0xb030[21]](function(_0x966cx15){return _0x966cx11[_0xb030[20]](200)[_0xb030[19]](_0x966cx15)})[_0xb030[18]](function(_0x966cx13){return handleError(_0x966cx11,_0x966cx13)})};function getFaxQueues(_0x966cx17){return function(){switch(_0x966cx17[_0xb030[33]]){case _0xb030[32]:return User[_0xb030[31]](_0x966cx17[_0xb030[28]],{attributes:[_0xb030[28]]})[_0xb030[21]](Util[_0xb030[30]]({},{attributes:[_0xb030[28]]}))[_0xb030[21]](function(_0x966cx18){return {include:{model:FaxAccount,include:{model:FaxApplication,include:{model:FaxQueue,where:{id:_[_0xb030[29]](_0x966cx18,_0xb030[28])}}}}}});default:return {}}}}exports[_0xb030[34]]= function(_0x966cx10,_0x966cx11){return Promise[_0xb030[40]]([])[_0xb030[21]](getFaxQueues(_0x966cx10[_0xb030[32]]))[_0xb030[21]](function(_0x966cx1a){return FaxRoom[_0xb030[39]](_[_0xb030[38]](Util[_0xb030[23]](_0x966cx10[_0xb030[22]],{status:_0xb030[35],updatedAt:{$gte:moment()[_0xb030[37]](_0xb030[36])}}),_0x966cx1a))})[_0xb030[21]](function(_0x966cx19){return _0x966cx11[_0xb030[20]](200)[_0xb030[19]]({value:_0x966cx19})})[_0xb030[18]](function(_0x966cx13){return handleError(_0x966cx11,_0x966cx13)})};exports[_0xb030[41]]= function(_0x966cx10,_0x966cx11){return Promise[_0xb030[40]]([])[_0xb030[21]](getFaxQueues(_0x966cx10[_0xb030[32]]))[_0xb030[21]](function(_0x966cx1a){return FaxRoom[_0xb030[39]](_[_0xb030[38]](Util[_0xb030[23]](_0x966cx10[_0xb030[22]],{status:_0xb030[42],updatedAt:{$gte:moment()[_0xb030[37]](_0xb030[36])}}),_0x966cx1a))})[_0xb030[21]](function(_0x966cx19){return _0x966cx11[_0xb030[20]](200)[_0xb030[19]]({value:_0x966cx19})})[_0xb030[18]](function(_0x966cx13){return handleError(_0x966cx11,_0x966cx13)})};exports[_0xb030[43]]= function(_0x966cx10,_0x966cx11){return Promise[_0xb030[40]]([])[_0xb030[21]](getFaxQueues(_0x966cx10[_0xb030[32]]))[_0xb030[21]](function(_0x966cx1a){return FaxRoom[_0xb030[39]](_[_0xb030[38]](Util[_0xb030[23]](_0x966cx10[_0xb030[22]],{status:_0xb030[44],updatedAt:{$gte:moment()[_0xb030[37]](_0xb030[36])}}),_0x966cx1a))})[_0xb030[21]](function(_0x966cx19){return _0x966cx11[_0xb030[20]](200)[_0xb030[19]]({value:_0x966cx19})})[_0xb030[18]](function(_0x966cx13){return handleError(_0x966cx11,_0x966cx13)})};exports[_0xb030[45]]= function(_0x966cx10,_0x966cx11){return Promise[_0xb030[40]]([])[_0xb030[21]](getFaxQueues(_0x966cx10[_0xb030[32]]))[_0xb030[21]](function(_0x966cx1a){return FaxRoom[_0xb030[39]](_[_0xb030[38]](Util[_0xb030[23]](_0x966cx10[_0xb030[22]],{status:_0xb030[46],updatedAt:{$gte:moment()[_0xb030[37]](_0xb030[36])}}),_0x966cx1a))})[_0xb030[21]](function(_0x966cx19){return _0x966cx11[_0xb030[20]](200)[_0xb030[19]]({value:_0x966cx19})})[_0xb030[18]](function(_0x966cx13){return handleError(_0x966cx11,_0x966cx13)})};exports[_0xb030[47]]= function(_0x966cx10,_0x966cx11,_0x966cx12){switch(_0x966cx10[_0xb030[32]][_0xb030[33]]){case _0xb030[52]:return sequelize[_0xb030[22]](_0xb030[48],{replacements:{status:_0xb030[49],id:_0x966cx10[_0xb030[32]][_0xb030[28]]},type:sequelize[_0xb030[51]][_0xb030[50]]})[_0xb030[21]](function(_0x966cx14){return _0x966cx11[_0xb030[20]](200)[_0xb030[19]](_0x966cx14)})[_0xb030[18]](function(_0x966cx13){return handleError(_0x966cx11,_0x966cx13)});default:return sequelize[_0xb030[22]](_0xb030[53],{replacements:{status:_0xb030[49],id:_0x966cx10[_0xb030[32]][_0xb030[28]]},type:sequelize[_0xb030[51]][_0xb030[50]]})[_0xb030[21]](function(_0x966cx14){return _0x966cx11[_0xb030[20]](200)[_0xb030[19]](_0x966cx14)})[_0xb030[18]](function(_0x966cx13){return handleError(_0x966cx11,_0x966cx13)})}};exports[_0xb030[54]]= function(_0x966cx10,_0x966cx11,_0x966cx12){return FaxRoom[_0xb030[56]]({where:{UserId:_0x966cx10[_0xb030[55]][_0xb030[28]]},include:[{all:true}]})[_0xb030[21]](function(_0x966cx1b){return _0x966cx11[_0xb030[20]](200)[_0xb030[19]](_0x966cx1b)})[_0xb030[18]](function(_0x966cx13){return handleError(_0x966cx11,_0x966cx13)})};exports[_0xb030[57]]= function(_0x966cx10,_0x966cx11,_0x966cx12){var _0x966cx1c;if(_0x966cx10[_0xb030[32]][_0xb030[33]]=== _0xb030[52]){return FaxRoom[_0xb030[31]](_0x966cx10[_0xb030[55]][_0xb030[28]])[_0xb030[21]](function(_0x966cx1d){_0x966cx1c= _0x966cx1d;if(!_0x966cx1c){return _0x966cx11[_0xb030[58]](404)};return _0x966cx1c[_0xb030[60]]({status:_0xb030[44]},{userId:_0x966cx10[_0xb030[32]][_0xb030[28]]})})[_0xb030[21]](function(){return _0x966cx1c[_0xb030[59]](_0x966cx10[_0xb030[32]][_0xb030[28]])})[_0xb030[21]](function(){return _0x966cx11[_0xb030[58]](200)})[_0xb030[18]](function(_0x966cx13){return handleError(_0x966cx11,_0x966cx13)})}};exports[_0xb030[61]]= function(_0x966cx10,_0x966cx11,_0x966cx12){return FaxRoom[_0xb030[26]](_0xb030[25])[_0xb030[31]](_0x966cx10[_0xb030[55]][_0xb030[28]])[_0xb030[21]](function(_0x966cx1d){if(!_0x966cx1d){return _0x966cx11[_0xb030[58]](404)};return _0x966cx11[_0xb030[19]](_0x966cx1d)})[_0xb030[18]](function(_0x966cx13){return handleError(_0x966cx11,_0x966cx13)})};exports[_0xb030[62]]= function(_0x966cx10,_0x966cx11,_0x966cx12){return FaxRoom[_0xb030[31]](_0x966cx10[_0xb030[55]][_0xb030[28]])[_0xb030[21]](function(_0x966cx1d){if(!_0x966cx1d){return _0x966cx11[_0xb030[58]](404)};return _0x966cx1d[_0xb030[67]]({attributes:[_0xb030[28],_0xb030[63],_0xb030[64],_0xb030[65],_0xb030[33],_0xb030[66]]})})[_0xb030[21]](function(_0x966cx1e){return _0x966cx11[_0xb030[19]](_0x966cx1e)})[_0xb030[18]](function(_0x966cx13){return handleError(_0x966cx11,_0x966cx13)})};exports[_0xb030[68]]= function(_0x966cx10,_0x966cx11,_0x966cx12){return FaxRoom[_0xb030[68]](_0x966cx10[_0xb030[69]])[_0xb030[21]](function(_0x966cx1d){return _0x966cx11[_0xb030[20]](201)[_0xb030[19]](_0x966cx1d)})[_0xb030[18]](function(_0x966cx13){return handleError(_0x966cx11,_0x966cx13)})};exports[_0xb030[70]]= function(_0x966cx10,_0x966cx11,_0x966cx12){_0x966cx10[_0xb030[69]][_0xb030[71]]= _0x966cx10[_0xb030[32]][_0xb030[28]];_0x966cx10[_0xb030[69]][_0xb030[72]]= _0x966cx10[_0xb030[55]][_0xb030[28]];_0x966cx10[_0xb030[69]][_0xb030[73]]= _0x966cx10[_0xb030[69]][_0xb030[73]];return FaxMessage[_0xb030[68]](_0x966cx10[_0xb030[69]],{include:[{model:FaxAttachment}],user:_0x966cx10[_0xb030[32]]})[_0xb030[21]](function(_0x966cx1f){if(_0x966cx1f){_0x966cx10[_0xb030[77]][_0xb030[76]][_0xb030[75]][_0xb030[19]]({message:_0xb030[74],doc:_0x966cx1f,options:{user:_0x966cx10[_0xb030[32]]}})};return _0x966cx11[_0xb030[20]](201)[_0xb030[19]](_0x966cx1f)})[_0xb030[18]](function(_0x966cx13){return handleError(_0x966cx11,_0x966cx13)})};exports[_0xb030[60]]= function(_0x966cx10,_0x966cx11,_0x966cx12){return FaxRoom[_0xb030[31]](_0x966cx10[_0xb030[55]][_0xb030[28]])[_0xb030[21]](function(_0x966cx1d){if(!_0x966cx1d){return _0x966cx11[_0xb030[58]](404)};if(_0x966cx1d[_0xb030[80]]){throw new Error(_0xb030[81])};var _0x966cx20=_[_0xb030[38]](_0x966cx1d,_0x966cx10[_0xb030[69]]);return _0x966cx20[_0xb030[82]]()})[_0xb030[21]](function(_0x966cx1d){if(_0x966cx1d[_0xb030[78]](_0xb030[20])&& _0x966cx1d[_0xb030[20]]=== _0xb030[46]){_0x966cx10[_0xb030[77]][_0xb030[76]][_0xb030[75]][_0xb030[19]]({message:_0xb030[79],doc:_0x966cx1d})};return _0x966cx11[_0xb030[20]](200)[_0xb030[19]](_0x966cx1d)})[_0xb030[18]](function(_0x966cx13){return handleError(_0x966cx11,_0x966cx13)})};exports[_0xb030[83]]= function(_0x966cx10,_0x966cx11,_0x966cx12){return FaxRoom[_0xb030[31]](_0x966cx10[_0xb030[55]][_0xb030[28]])[_0xb030[21]](function(_0x966cx1d){if(!_0x966cx1d){return _0x966cx11[_0xb030[58]](404)};return _0x966cx1d[_0xb030[85]](_0x966cx10[_0xb030[69]][_0xb030[84]],{individualHooks:true})})[_0xb030[21]](function(){return _0x966cx11[_0xb030[58]](200)})[_0xb030[18]](function(_0x966cx13){return handleError(_0x966cx11,_0x966cx13)})};exports[_0xb030[86]]= function(_0x966cx10,_0x966cx11,_0x966cx12){return FaxRoom[_0xb030[31]](_0x966cx10[_0xb030[55]][_0xb030[28]])[_0xb030[21]](function(_0x966cx1d){if(!_0x966cx1d){return _0x966cx11[_0xb030[58]](404)};return _0x966cx1d[_0xb030[86]]()})[_0xb030[21]](function(){return _0x966cx11[_0xb030[58]](204)})[_0xb030[18]](function(_0x966cx13){return handleError(_0x966cx11,_0x966cx13)})};exports[_0xb030[87]]= function(_0x966cx10,_0x966cx11){return FaxRoom[_0xb030[86]]({where:{id:_0x966cx10[_0xb030[22]][_0xb030[88]]},individualHooks:true})[_0xb030[21]](function(){return _0x966cx11[_0xb030[58]](200)})[_0xb030[18]](function(_0x966cx13){return handleError(_0x966cx11,_0x966cx13)})};function handleError(_0x966cx11,_0x966cx13){logger[_0xb030[90]](_0x966cx13[_0xb030[89]]);return _0x966cx11[_0xb030[20]](500)[_0xb030[19]](_0x966cx13)}exports[_0xb030[91]]= function(_0x966cx10,_0x966cx11,_0x966cx12){var _0x966cx22={where:{id:_0x966cx10[_0xb030[55]][_0xb030[28]][_0xb030[93]](_0xb030[92])},user:_0x966cx10[_0xb030[32]],individualHooks:true};return FaxRoom[_0xb030[60]](_0x966cx10[_0xb030[69]],_0x966cx22)[_0xb030[21]](function(_0x966cx23){if(!_0x966cx23){return _0x966cx11[_0xb030[58]](404)};return _0x966cx23})[_0xb030[21]](function(_0x966cx23){return _0x966cx11[_0xb030[58]](200)})[_0xb030[18]](function(_0x966cx13){return handleError(_0x966cx11,_0x966cx13)})};exports[_0xb030[94]]= function(_0x966cx10,_0x966cx11){return sequelize[_0xb030[22]](_0xb030[97],{type:sequelize[_0xb030[51]][_0xb030[50]]})[_0xb030[21]](function(_0x966cx24){var _0x966cx25=_[_0xb030[38]]({new:0,open:0,pending:0,closed:0},_[_0xb030[96]](_[_0xb030[95]](_0x966cx24,_0xb030[20]),_0xb030[39]));return _0x966cx11[_0xb030[20]](200)[_0xb030[19]](_0x966cx25)})[_0xb030[18]](function(_0x966cx13){return handleError(_0x966cx11,_0x966cx13)})};exports[_0xb030[98]]= function(_0x966cx10,_0x966cx11,_0x966cx12){return FaxMessage[_0xb030[31]](_0x966cx10[_0xb030[55]][_0xb030[28]])[_0xb030[21]](function(_0x966cx1f){return _0x966cx1f[_0xb030[99]]({include:[{model:FaxAccount},{model:FaxMessage,include:[{model:FaxAttachment},{model:User,attributes:[_0xb030[28],_0xb030[63],_0xb030[64],_0xb030[65]]}]},{model:User,attributes:[_0xb030[28],_0xb030[63],_0xb030[64],_0xb030[65]]}]})})[_0xb030[21]](function(_0x966cx1d){return _0x966cx11[_0xb030[19]](_0x966cx1d)})[_0xb030[18]](function(_0x966cx13){return handleError(_0x966cx11,_0x966cx13)})} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_room/fax_room.events.js b/server/api/fax_room/fax_room.events.js index 7575b3c..66dc905 100644 --- a/server/api/fax_room/fax_room.events.js +++ b/server/api/fax_room/fax_room.events.js @@ -1 +1 @@ -var _0xafbf=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x46\x61\x78\x52\x6F\x6F\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xafbf[0];const EventEmitter=require(_0xafbf[1]);const FaxRoom=require(_0xafbf[3])[_0xafbf[2]];var FaxRoomEvents= new EventEmitter();FaxRoomEvents[_0xafbf[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xafbf[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xafbf[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xafbf[6]};for(var e in events){var event=events[e];FaxRoom[_0xafbf[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x37fex8,_0x37fex9,_0x37fexa){FaxRoomEvents[_0xafbf[10]](event+ _0xafbf[8]+ _0x37fex8[_0xafbf[9]],_0x37fex8);FaxRoomEvents[_0xafbf[10]](event,_0x37fex8);_0x37fexa(null)}}module[_0xafbf[11]]= FaxRoomEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_room/fax_room.socket.js b/server/api/fax_room/fax_room.socket.js index ae5c48b..66dc905 100644 --- a/server/api/fax_room/fax_room.socket.js +++ b/server/api/fax_room/fax_room.socket.js @@ -1 +1 @@ -var _0x295e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x66\x61\x78\x5F\x72\x6F\x6F\x6D\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x66\x61\x78\x5F\x72\x6F\x6F\x6D\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x295e[0];const FaxRoomEvents=require(_0x295e[1]);var events=[_0x295e[2],_0x295e[3]];exports[_0x295e[4]]= function(_0x71f1x3){for(var _0x71f1x4=0,_0x71f1x5=events[_0x295e[5]];_0x71f1x4< _0x71f1x5;_0x71f1x4++){var _0x71f1x6=events[_0x71f1x4];var _0x71f1x7=createListener(_0x295e[6]+ _0x71f1x6,_0x71f1x3);FaxRoomEvents[_0x295e[7]](_0x71f1x6,_0x71f1x7);_0x71f1x3[_0x295e[7]](_0x295e[8],removeListener(_0x71f1x6,_0x71f1x7))}};function createListener(_0x71f1x6,_0x71f1x3){return function(_0x71f1x9,_0x71f1xa){_0x71f1x3[_0x295e[9]](_0x71f1x6,_0x71f1x9)}}function removeListener(_0x71f1x6,_0x71f1x7){return function(){FaxRoomEvents[_0x295e[10]](_0x71f1x6,_0x71f1x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/fax_room/index.js b/server/api/fax_room/index.js index 0c99946..66dc905 100644 --- a/server/api/fax_room/index.js +++ b/server/api/fax_room/index.js @@ -1 +1 @@ -var _0xe168=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x66\x61\x78\x5F\x72\x6F\x6F\x6D\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x46\x61\x78","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x69\x6E\x62\x6F\x78","\x61\x67\x65\x6E\x74","\x69\x6E\x62\x6F\x78","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x64\x61\x73\x68\x62\x6F\x61\x72\x64","\x67\x65\x74\x44\x61\x73\x68\x62\x6F\x61\x72\x64\x56\x61\x6C\x75\x65\x73","\x2F\x61\x67\x65\x6E\x74\x2F\x3A\x69\x64","\x61\x67\x65\x6E\x74\x49\x6E\x64\x65\x78","\x2F\x6D\x65\x73\x73\x61\x67\x65\x73\x2F\x3A\x69\x64","\x67\x65\x74\x52\x6F\x6F\x6D\x42\x79\x4D\x65\x73\x73\x61\x67\x65","\x2F\x3A\x69\x64","\x75\x73\x65\x72","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x61\x67\x65\x6E\x74\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x2F\x3A\x69\x64\x2F\x6D\x65\x73\x73\x61\x67\x65\x73","\x63\x72\x65\x61\x74\x65\x4D\x65\x73\x73\x61\x67\x65","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x75\x70\x64\x61\x74\x65\x50\x61\x74\x63\x68","\x70\x61\x74\x63\x68","\x75\x70\x64\x61\x74\x65\x41\x67\x65\x6E\x74\x73","\x2F\x3A\x69\x64\x2F\x6F\x70\x65\x6E","\x6F\x70\x65\x6E\x52\x6F\x6F\x6D","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0xe168[0];var express=require(_0xe168[1]);var controller=require(_0xe168[2]);var auth=require(_0xe168[3]);var license=require(_0xe168[4]);var router=express.Router();router[_0xe168[12]](_0xe168[5],license[_0xe168[6]](),license[_0xe168[7]](),auth[_0xe168[8]](),auth[_0xe168[10]]([10],[_0xe168[9]]),controller[_0xe168[11]]);router[_0xe168[12]](_0xe168[13],license[_0xe168[6]](),license[_0xe168[7]](),auth[_0xe168[8]](),auth[_0xe168[10]]([10],[_0xe168[9],_0xe168[14]]),controller[_0xe168[15]]);router[_0xe168[12]](_0xe168[16],license[_0xe168[6]](),license[_0xe168[7]](),auth[_0xe168[8]](),auth[_0xe168[10]]([10],[_0xe168[9]]),controller[_0xe168[17]]);router[_0xe168[12]](_0xe168[18],license[_0xe168[6]](),license[_0xe168[7]](),auth[_0xe168[8]](),auth[_0xe168[10]]([10,17],[_0xe168[9]]),controller[_0xe168[19]]);router[_0xe168[12]](_0xe168[20],license[_0xe168[6]](),license[_0xe168[7]](),auth[_0xe168[8]](),auth[_0xe168[10]]([10],[_0xe168[9]]),controller[_0xe168[21]]);router[_0xe168[12]](_0xe168[22],license[_0xe168[6]](),license[_0xe168[7]](),auth[_0xe168[8]](),auth[_0xe168[10]]([10],[_0xe168[9],_0xe168[14]]),controller[_0xe168[23]]);router[_0xe168[12]](_0xe168[24],license[_0xe168[6]](),license[_0xe168[7]](),auth[_0xe168[8]](),auth[_0xe168[10]]([10],[_0xe168[9],_0xe168[25],_0xe168[14]]),controller[_0xe168[26]]);router[_0xe168[12]](_0xe168[27],license[_0xe168[6]](),license[_0xe168[7]](),auth[_0xe168[8]](),auth[_0xe168[10]]([10],[_0xe168[9],_0xe168[14]]),controller[_0xe168[28]]);router[_0xe168[30]](_0xe168[5],license[_0xe168[6]](),license[_0xe168[7]](),auth[_0xe168[8]](),auth[_0xe168[10]]([10],[_0xe168[9]]),controller[_0xe168[29]]);router[_0xe168[30]](_0xe168[31],license[_0xe168[6]](),license[_0xe168[7]](),auth[_0xe168[8]](),auth[_0xe168[10]]([10],[_0xe168[9],_0xe168[25],_0xe168[14]]),controller[_0xe168[32]]);router[_0xe168[34]](_0xe168[24],license[_0xe168[6]](),license[_0xe168[7]](),auth[_0xe168[8]](),auth[_0xe168[10]]([10],[_0xe168[9],_0xe168[14]]),controller[_0xe168[33]]);router[_0xe168[36]](_0xe168[24],license[_0xe168[6]](),license[_0xe168[7]](),auth[_0xe168[8]](),auth[_0xe168[10]]([10],[_0xe168[9],_0xe168[14]]),controller[_0xe168[35]]);router[_0xe168[34]](_0xe168[27],license[_0xe168[6]](),license[_0xe168[7]](),auth[_0xe168[8]](),auth[_0xe168[10]]([10],[_0xe168[9],_0xe168[14]]),controller[_0xe168[37]]);router[_0xe168[34]](_0xe168[38],license[_0xe168[6]](),license[_0xe168[7]](),auth[_0xe168[8]](),auth[_0xe168[10]]([10],[_0xe168[14]]),controller[_0xe168[39]]);router[_0xe168[41]](_0xe168[5],license[_0xe168[6]](),license[_0xe168[7]](),auth[_0xe168[8]](),auth[_0xe168[10]]([10],[_0xe168[9]]),controller[_0xe168[40]]);router[_0xe168[41]](_0xe168[24],license[_0xe168[6]](),license[_0xe168[7]](),auth[_0xe168[8]](),auth[_0xe168[10]]([10],[_0xe168[9]]),controller[_0xe168[42]]);module[_0xe168[43]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/freshdesk_account/freshdesk_account.controller.js b/server/api/freshdesk_account/freshdesk_account.controller.js index dda9998..66dc905 100644 --- a/server/api/freshdesk_account/freshdesk_account.controller.js +++ b/server/api/freshdesk_account/freshdesk_account.controller.js @@ -1 +1 @@ -var _0x78e4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x66\x72\x65\x73\x68\x64\x65\x73\x6B","\x72\x65\x71\x75\x65\x73\x74\x2D\x70\x72\x6F\x6D\x69\x73\x65","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x46\x72\x65\x73\x68\x64\x65\x73\x6B\x41\x63\x63\x6F\x75\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x46\x72\x65\x73\x68\x64\x65\x73\x6B\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x46\x72\x65\x73\x68\x64\x65\x73\x6B\x46\x69\x65\x6C\x64","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73","\x73\x63\x6F\x70\x65","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x63\x68\x65\x63\x6B\x41\x63\x63\x6F\x75\x6E\x74","\x72\x65\x6D\x6F\x74\x65\x55\x72\x69","\x2F\x61\x70\x69\x2F\x76\x32\x2F\x61\x67\x65\x6E\x74\x73\x2F\x6D\x65","\x6A\x6F\x69\x6E\x5F\x75\x72\x6C","\x42\x61\x73\x69\x63\x20","\x62\x61\x73\x65\x36\x34","\x61\x70\x69\x4B\x65\x79","\x3A\x58","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x6A\x73\x6F\x6E","\x61\x63\x63\x6F\x75\x6E\x74\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x66\x69\x65\x6C\x64","\x76\x61\x6C\x75\x65","\x63\x6F\x75\x6E\x74","\x67\x65\x74\x46\x69\x65\x6C\x64\x73","\x2F\x61\x70\x69\x2F\x76\x32\x2F\x74\x69\x63\x6B\x65\x74\x5F\x66\x69\x65\x6C\x64\x73","\x67\x65\x74\x41\x63\x63\x6F\x75\x6E\x74\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73","\x61\x63\x63\x6F\x75\x6E\x74","\x67\x65\x74\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x63\x69\x64","\x63\x72\x65\x61\x74\x65\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x74\x79\x70\x65","\x51\x75\x65\x75\x65","\x53\x75\x62\x6A\x65\x63\x74","\x73\x74\x72\x69\x6E\x67","\x5B\x78\x43\x41\x4C\x4C\x59\x20\x54\x69\x63\x6B\x65\x74\x5D","\x76\x61\x72\x69\x61\x62\x6C\x65","","\x71\x75\x65\x75\x65","\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x75\x6D","\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x2A\x2A\x2A\x20\x43\x61\x6C\x6C\x20\x49\x6E\x66\x6F\x20\x2A\x2A\x2A","\x6B\x65\x79\x56\x61\x6C\x75\x65","\x43\x61\x6C\x6C\x65\x72\x20\x4E\x75\x6D\x62\x65\x72","\x43\x61\x6C\x6C\x65\x72\x20\x4E\x61\x6D\x65","\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x61\x6D\x65","\x43\x61\x6C\x6C\x20\x54\x6F","\x64\x65\x73\x74\x65\x78\x74\x65\x6E","\x55\x6E\x69\x71\x75\x65\x49\x64","\x75\x6E\x69\x71\x75\x65\x69\x64","\x44\x61\x74\x65","\x61\x67\x65\x6E\x74\x63\x61\x6C\x6C\x65\x64\x41\x74","\x2A\x2A\x2A\x20\x41\x67\x65\x6E\x74\x20\x49\x6E\x66\x6F\x20\x2A\x2A\x2A","\x41\x67\x65\x6E\x74\x20\x4E\x61\x6D\x65","\x64\x65\x73\x74\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x61\x6D\x65","\x41\x67\x65\x6E\x74\x20\x4E\x75\x6D\x62\x65\x72","\x64\x65\x73\x74\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x75\x6D","\x2A\x2A\x2A\x20\x54\x69\x6D\x65\x20\x49\x6E\x66\x6F\x20\x2A\x2A\x2A","\x41\x67\x65\x6E\x74\x20\x52\x69\x6E\x67","\x41\x67\x65\x6E\x74\x20\x43\x6F\x6E\x6E\x65\x63\x74","\x61\x67\x65\x6E\x74\x63\x6F\x6E\x6E\x65\x63\x74\x41\x74","\x41\x67\x65\x6E\x74\x20\x43\x6F\x6D\x70\x6C\x65\x74\x65","\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x41\x74","\x48\x6F\x6C\x64\x20\x54\x69\x6D\x65","\x68\x6F\x6C\x64\x74\x69\x6D\x65","\x54\x61\x6C\x6B\x20\x54\x69\x6D\x65","\x74\x61\x6C\x6B\x74\x69\x6D\x65","\x4F\x75\x74\x62\x6F\x75\x6E\x64","\x4F\x75\x74\x62\x6F\x75\x6E\x64\x20\x43\x61\x6C\x6C","\x43\x61\x6C\x6C\x65\x64\x20\x4E\x75\x6D\x62\x65\x72","\x4D\x65\x6D\x62\x65\x72\x20\x4E\x61\x6D\x65","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x73\x74\x61\x72\x74\x74\x69\x6D\x65","\x41\x6E\x73\x77\x65\x72\x20\x54\x69\x6D\x65","\x61\x6E\x73\x77\x65\x72\x74\x69\x6D\x65","\x43\x6F\x6D\x70\x6C\x65\x74\x65\x20\x54\x69\x6D\x65","\x65\x6E\x64\x74\x69\x6D\x65","\x76\x6F\x69\x63\x65","\x43\x68\x61\x6E\x6E\x65\x6C\x20\x6E\x6F\x74\x20\x61\x76\x61\x69\x6C\x61\x62\x6C\x65\x3A","\x63\x68\x61\x6E\x6E\x65\x6C","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73","\x64\x65\x73\x74\x72\x6F\x79\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x64\x65\x73\x74\x72\x6F\x79\x46\x69\x65\x6C\x64","\x66\x69\x64","\x63\x72\x65\x61\x74\x65\x46\x69\x65\x6C\x64","\x53\x75\x62\x6A\x65\x63\x74\x49\x64","\x73\x75\x62\x6A\x65\x63\x74","\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x49\x64","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x46\x69\x65\x6C\x64\x49\x64","\x75\x70\x64\x61\x74\x65\x46\x69\x65\x6C\x64","\x61\x64\x64\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x54\x61\x67\x73","\x73\x65\x74\x54\x61\x67\x73"];_0x78e4[0];var _=require(_0x78e4[1]);var Util=require(_0x78e4[2]);var _fd=require(_0x78e4[3]);var rp=require(_0x78e4[4]);var logger=require(_0x78e4[6])(_0x78e4[5]);var FreshdeskAccount=require(_0x78e4[8])[_0x78e4[7]];var FreshdeskConfiguration=require(_0x78e4[8])[_0x78e4[9]];var FreshdeskField=require(_0x78e4[8])[_0x78e4[10]];function handleError(_0x88c1xa,_0x88c1xb){_0x88c1xb= _0x88c1xb|| 500;return function(_0x88c1xc){logger[_0x78e4[12]](_0x88c1xc[_0x78e4[11]]);_0x88c1xa[_0x78e4[14]](_0x88c1xb)[_0x78e4[13]](_0x88c1xc)}}function responseWithResult(_0x88c1xa,_0x88c1xb){_0x88c1xb= _0x88c1xb|| 200;return function(_0x88c1xe){if(_0x88c1xe){_0x88c1xa[_0x78e4[14]](_0x88c1xb)[_0x78e4[15]](_0x88c1xe)}}}function responseWithoutResult(_0x88c1xa,_0x88c1xb){_0x88c1xb= _0x88c1xb|| 200;return function(){_0x88c1xa[_0x78e4[16]](_0x88c1xb)}}function handleEntityNotFound(_0x88c1xa){return function(_0x88c1xe){if(!_0x88c1xe){_0x88c1xa[_0x78e4[14]](404)[_0x78e4[17]]();return null};return _0x88c1xe}}function saveUpdates(_0x88c1x12){return function(_0x88c1xe){return _0x88c1xe[_0x78e4[19]](_0x88c1x12)[_0x78e4[18]](function(_0x88c1x13){return _0x88c1x13})}}function removeEntity(_0x88c1xa){return function(_0x88c1xe){if(_0x88c1xe){return _0x88c1xe[_0x78e4[20]]()[_0x78e4[18]](function(){_0x88c1xa[_0x78e4[14]](204)[_0x78e4[17]]()})}}}exports[_0x78e4[21]]= function(_0x88c1x15,_0x88c1xa){return FreshdeskAccount[_0x78e4[28]](_0x78e4[27])[_0x78e4[26]](_[_0x78e4[25]](Util[_0x78e4[24]](_0x88c1x15[_0x78e4[23]]),{distinct:true}))[_0x78e4[18]](responseWithResult(_0x88c1xa))[_0x78e4[22]](handleError(_0x88c1xa))};exports[_0x78e4[29]]= function(_0x88c1x15,_0x88c1xa){return FreshdeskAccount[_0x78e4[32]](_0x88c1x15[_0x78e4[31]][_0x78e4[30]])[_0x78e4[18]](handleEntityNotFound(_0x88c1xa))[_0x78e4[18]](responseWithResult(_0x88c1xa))[_0x78e4[22]](handleError(_0x88c1xa))};exports[_0x78e4[33]]= function(_0x88c1x15,_0x88c1xa){return FreshdeskAccount[_0x78e4[33]](_0x88c1x15[_0x78e4[34]])[_0x78e4[18]](responseWithResult(_0x88c1xa,201))[_0x78e4[22]](handleError(_0x88c1xa))};exports[_0x78e4[35]]= function(_0x88c1x15,_0x88c1xa){if(_0x88c1x15[_0x78e4[34]][_0x78e4[30]]){delete _0x88c1x15[_0x78e4[34]][_0x78e4[30]]};return FreshdeskAccount[_0x78e4[32]](_0x88c1x15[_0x78e4[31]][_0x78e4[30]])[_0x78e4[18]](handleEntityNotFound(_0x88c1xa))[_0x78e4[18]](saveUpdates(_0x88c1x15[_0x78e4[34]]))[_0x78e4[18]](responseWithResult(_0x88c1xa))[_0x78e4[22]](handleError(_0x88c1xa))};exports[_0x78e4[20]]= function(_0x88c1x15,_0x88c1xa){return FreshdeskAccount[_0x78e4[32]](_0x88c1x15[_0x78e4[31]][_0x78e4[30]])[_0x78e4[18]](handleEntityNotFound(_0x88c1xa))[_0x78e4[18]](removeEntity(_0x88c1xa))[_0x78e4[22]](handleError(_0x88c1xa))};exports[_0x78e4[36]]= function(_0x88c1x15,_0x88c1xa){return FreshdeskAccount[_0x78e4[20]]({where:{id:_0x88c1x15[_0x78e4[23]][_0x78e4[37]]},individualHooks:true})[_0x78e4[18]](function(){return _0x88c1xa[_0x78e4[16]](204)})[_0x78e4[22]](function(_0x88c1xc){return handleError(_0x88c1xa,_0x88c1xc)})};exports[_0x78e4[38]]= function(_0x88c1x15,_0x88c1xa){return FreshdeskAccount[_0x78e4[32]](_0x88c1x15[_0x78e4[31]][_0x78e4[30]])[_0x78e4[18]](handleEntityNotFound(_0x88c1xa))[_0x78e4[18]](function(_0x88c1x16){return rp({uri:Util[_0x78e4[41]](_0x88c1x16[_0x78e4[39]],_0x78e4[40]),headers:{"\x41\x75\x74\x68\x6F\x72\x69\x7A\x61\x74\x69\x6F\x6E":_0x78e4[42]+ new Buffer(_0x88c1x16[_0x78e4[44]]+ _0x78e4[45]).toString(_0x78e4[43]),"\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65":_0x78e4[46],"\x41\x63\x63\x65\x70\x74":_0x78e4[46]},json:true})})[_0x78e4[18]](responseWithoutResult(_0x88c1xa,200))[_0x78e4[22]](handleError(_0x88c1xa))};exports[_0x78e4[47]]= function(_0x88c1x15,_0x88c1xa){var _0x88c1x17={};_0x88c1x17[_0x88c1x15[_0x78e4[31]][_0x78e4[48]]]= _0x88c1x15[_0x78e4[34]][_0x78e4[49]];FreshdeskAccount[_0x78e4[26]]({where:_0x88c1x17})[_0x78e4[18]](function(_0x88c1x18){if(_0x88c1x18[_0x78e4[50]]){return _0x88c1xa[_0x78e4[14]](200)[_0x78e4[13]]({isValid:false,value:_0x88c1x15[_0x78e4[34]][_0x78e4[49]]})};return _0x88c1xa[_0x78e4[14]](200)[_0x78e4[13]]({isValid:true,value:_0x88c1x15[_0x78e4[34]][_0x78e4[49]]})})[_0x78e4[22]](function(_0x88c1xc){return handleError(_0x88c1xa,_0x88c1xc)})};exports[_0x78e4[51]]= function(_0x88c1x15,_0x88c1xa,_0x88c1x19){return FreshdeskAccount[_0x78e4[32]](_0x88c1x15[_0x78e4[31]][_0x78e4[30]])[_0x78e4[18]](handleEntityNotFound(_0x88c1xa))[_0x78e4[18]](function(_0x88c1x16){return rp({uri:Util[_0x78e4[41]](_0x88c1x16[_0x78e4[39]],_0x78e4[52]),headers:{"\x41\x75\x74\x68\x6F\x72\x69\x7A\x61\x74\x69\x6F\x6E":_0x78e4[42]+ new Buffer(_0x88c1x16[_0x78e4[44]]+ _0x78e4[45]).toString(_0x78e4[43]),"\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65":_0x78e4[46],"\x41\x63\x63\x65\x70\x74":_0x78e4[46]},json:true})})[_0x78e4[18]](responseWithResult(_0x88c1xa))[_0x78e4[22]](handleError(_0x88c1xa))};exports[_0x78e4[53]]= function(_0x88c1x15,_0x88c1xa){return FreshdeskConfiguration[_0x78e4[28]]({method:[_0x78e4[54],_0x88c1x15[_0x78e4[31]][_0x78e4[30]]]})[_0x78e4[26]](_[_0x78e4[25]](Util[_0x78e4[24]](_0x88c1x15[_0x78e4[23]]),{distinct:true}))[_0x78e4[18]](responseWithResult(_0x88c1xa))[_0x78e4[22]](handleError(_0x88c1xa))};exports[_0x78e4[55]]= function(_0x88c1x15,_0x88c1xa){return FreshdeskConfiguration[_0x78e4[28]]({method:[_0x78e4[54],_0x88c1x15[_0x78e4[31]][_0x78e4[30]]]})[_0x78e4[32]](_0x88c1x15[_0x78e4[31]][_0x78e4[56]])[_0x78e4[18]](handleEntityNotFound(_0x88c1xa))[_0x78e4[18]](responseWithResult(_0x88c1xa))[_0x78e4[22]](handleError(_0x88c1xa))};exports[_0x78e4[57]]= function(_0x88c1x15,_0x88c1xa){_0x88c1x15[_0x78e4[34]][_0x78e4[58]]= _0x88c1x15[_0x78e4[31]][_0x78e4[30]];switch(_0x88c1x15[_0x78e4[34]][_0x78e4[107]]){case _0x78e4[105]:if(_0x88c1x15[_0x78e4[34]][_0x78e4[59]]=== _0x78e4[60]){_0x88c1x15[_0x78e4[34]][_0x78e4[61]]= [{"\x74\x79\x70\x65":_0x78e4[62],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[63],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":null},{"\x74\x79\x70\x65":_0x78e4[64],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x78e4[66]},{"\x74\x79\x70\x65":_0x78e4[64],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x78e4[67]}];_0x88c1x15[_0x78e4[34]][_0x78e4[68]]= [{"\x74\x79\x70\x65":_0x78e4[62],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[69],"\x6B\x65\x79":null,"\x6B\x65\x79\x54\x79\x70\x65":null,"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":null},{"\x74\x79\x70\x65":_0x78e4[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[65],"\x6B\x65\x79":_0x78e4[71],"\x6B\x65\x79\x54\x79\x70\x65":_0x78e4[64],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x78e4[67]},{"\x74\x79\x70\x65":_0x78e4[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[65],"\x6B\x65\x79":_0x78e4[72],"\x6B\x65\x79\x54\x79\x70\x65":_0x78e4[64],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x78e4[73]},{"\x74\x79\x70\x65":_0x78e4[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[65],"\x6B\x65\x79":_0x78e4[74],"\x6B\x65\x79\x54\x79\x70\x65":_0x78e4[64],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x78e4[75]},{"\x74\x79\x70\x65":_0x78e4[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[65],"\x6B\x65\x79":_0x78e4[60],"\x6B\x65\x79\x54\x79\x70\x65":_0x78e4[64],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x78e4[66]},{"\x74\x79\x70\x65":_0x78e4[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[65],"\x6B\x65\x79":_0x78e4[76],"\x6B\x65\x79\x54\x79\x70\x65":_0x78e4[64],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x78e4[77]},{"\x74\x79\x70\x65":_0x78e4[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[65],"\x6B\x65\x79":_0x78e4[78],"\x6B\x65\x79\x54\x79\x70\x65":_0x78e4[64],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x78e4[79]},{"\x74\x79\x70\x65":_0x78e4[62],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[80],"\x6B\x65\x79":null,"\x6B\x65\x79\x54\x79\x70\x65":null,"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":null},{"\x74\x79\x70\x65":_0x78e4[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[65],"\x6B\x65\x79":_0x78e4[81],"\x6B\x65\x79\x54\x79\x70\x65":_0x78e4[64],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x78e4[82]},{"\x74\x79\x70\x65":_0x78e4[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[65],"\x6B\x65\x79":_0x78e4[83],"\x6B\x65\x79\x54\x79\x70\x65":_0x78e4[64],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x78e4[84]},{"\x74\x79\x70\x65":_0x78e4[62],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[85],"\x6B\x65\x79":null,"\x6B\x65\x79\x54\x79\x70\x65":null,"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":null},{"\x74\x79\x70\x65":_0x78e4[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[65],"\x6B\x65\x79":_0x78e4[86],"\x6B\x65\x79\x54\x79\x70\x65":_0x78e4[64],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x78e4[79]},{"\x74\x79\x70\x65":_0x78e4[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[65],"\x6B\x65\x79":_0x78e4[87],"\x6B\x65\x79\x54\x79\x70\x65":_0x78e4[64],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x78e4[88]},{"\x74\x79\x70\x65":_0x78e4[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[65],"\x6B\x65\x79":_0x78e4[89],"\x6B\x65\x79\x54\x79\x70\x65":_0x78e4[64],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x78e4[90]},{"\x74\x79\x70\x65":_0x78e4[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[65],"\x6B\x65\x79":_0x78e4[91],"\x6B\x65\x79\x54\x79\x70\x65":_0x78e4[64],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x78e4[92]},{"\x74\x79\x70\x65":_0x78e4[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[65],"\x6B\x65\x79":_0x78e4[93],"\x6B\x65\x79\x54\x79\x70\x65":_0x78e4[64],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x78e4[94]}]}else {if(_0x88c1x15[_0x78e4[34]][_0x78e4[59]]=== _0x78e4[95]){_0x88c1x15[_0x78e4[34]][_0x78e4[61]]= [{"\x74\x79\x70\x65":_0x78e4[62],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[63],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":null},{"\x74\x79\x70\x65":_0x78e4[62],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[96],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":null},{"\x74\x79\x70\x65":_0x78e4[64],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x78e4[84]}];_0x88c1x15[_0x78e4[34]][_0x78e4[68]]= [{"\x74\x79\x70\x65":_0x78e4[62],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[69],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":null},{"\x74\x79\x70\x65":_0x78e4[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[65],"\x6B\x65\x79":_0x78e4[97],"\x6B\x65\x79\x54\x79\x70\x65":_0x78e4[64],"\x6B\x65\x79\x43\x6F\x6E\x74\x65\x6E\x74":_0x78e4[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x78e4[84]},{"\x74\x79\x70\x65":_0x78e4[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[65],"\x6B\x65\x79":_0x78e4[98],"\x6B\x65\x79\x54\x79\x70\x65":_0x78e4[64],"\x6B\x65\x79\x43\x6F\x6E\x74\x65\x6E\x74":_0x78e4[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x78e4[99]},{"\x74\x79\x70\x65":_0x78e4[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[65],"\x6B\x65\x79":_0x78e4[76],"\x6B\x65\x79\x54\x79\x70\x65":_0x78e4[64],"\x6B\x65\x79\x43\x6F\x6E\x74\x65\x6E\x74":_0x78e4[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x78e4[77]},{"\x74\x79\x70\x65":_0x78e4[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[65],"\x6B\x65\x79":_0x78e4[78],"\x6B\x65\x79\x54\x79\x70\x65":_0x78e4[64],"\x6B\x65\x79\x43\x6F\x6E\x74\x65\x6E\x74":_0x78e4[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x78e4[100]},{"\x74\x79\x70\x65":_0x78e4[62],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[85]},{"\x74\x79\x70\x65":_0x78e4[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[65],"\x6B\x65\x79":_0x78e4[101],"\x6B\x65\x79\x54\x79\x70\x65":_0x78e4[64],"\x6B\x65\x79\x43\x6F\x6E\x74\x65\x6E\x74":_0x78e4[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x78e4[102]},{"\x74\x79\x70\x65":_0x78e4[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x78e4[65],"\x6B\x65\x79":_0x78e4[103],"\x6B\x65\x79\x54\x79\x70\x65":_0x78e4[64],"\x6B\x65\x79\x43\x6F\x6E\x74\x65\x6E\x74":_0x78e4[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x78e4[104]}]}};break;default:logger[_0x78e4[12]](_0x78e4[106],_0x88c1x15[_0x78e4[34]][_0x78e4[107]])};delete _0x88c1x15[_0x78e4[34]][_0x78e4[107]];delete _0x88c1x15[_0x78e4[34]][_0x78e4[59]];return FreshdeskConfiguration[_0x78e4[33]](_0x88c1x15[_0x78e4[34]],{include:[{model:FreshdeskField,as:_0x78e4[61]},{model:FreshdeskField,as:_0x78e4[68]}]})[_0x78e4[18]](responseWithResult(_0x88c1xa,201))[_0x78e4[22]](handleError(_0x88c1xa))};exports[_0x78e4[108]]= function(_0x88c1x15,_0x88c1xa){return FreshdeskConfiguration[_0x78e4[20]]({where:{id:_0x88c1x15[_0x78e4[23]][_0x78e4[37]]},individualHooks:true})[_0x78e4[18]](responseWithResult(_0x88c1xa,204))[_0x78e4[22]](handleError(_0x88c1xa))};exports[_0x78e4[109]]= function(_0x88c1x15,_0x88c1xa){return FreshdeskConfiguration[_0x78e4[28]]({method:[_0x78e4[54],_0x88c1x15[_0x78e4[31]][_0x78e4[30]]]})[_0x78e4[32]](_0x88c1x15[_0x78e4[31]][_0x78e4[56]])[_0x78e4[18]](handleEntityNotFound(_0x88c1xa))[_0x78e4[18]](removeEntity(_0x88c1xa))[_0x78e4[22]](handleError(_0x88c1xa))};exports[_0x78e4[110]]= function(_0x88c1x15,_0x88c1xa){return FreshdeskField[_0x78e4[32]](_0x88c1x15[_0x78e4[31]][_0x78e4[111]])[_0x78e4[18]](handleEntityNotFound(_0x88c1xa))[_0x78e4[18]](removeEntity(_0x88c1xa))[_0x78e4[22]](handleError(_0x88c1xa))};exports[_0x78e4[112]]= function(_0x88c1x15,_0x88c1xa){return FreshdeskConfiguration[_0x78e4[28]]({method:[_0x78e4[54],_0x88c1x15[_0x78e4[31]][_0x78e4[30]]]})[_0x78e4[32]](_0x88c1x15[_0x78e4[31]][_0x78e4[56]])[_0x78e4[18]](handleEntityNotFound(_0x88c1xa))[_0x78e4[18]](function(_0x88c1x1a){switch(_0x88c1x15[_0x78e4[31]][_0x78e4[59]]){case _0x78e4[114]:_0x88c1x15[_0x78e4[34]][_0x78e4[113]]= _0x88c1x15[_0x78e4[31]][_0x78e4[56]];break;case _0x78e4[116]:_0x88c1x15[_0x78e4[34]][_0x78e4[115]]= _0x88c1x15[_0x78e4[31]][_0x78e4[56]];break;case _0x78e4[48]:_0x88c1x15[_0x78e4[34]][_0x78e4[117]]= _0x88c1x15[_0x78e4[31]][_0x78e4[56]];break};return FreshdeskField[_0x78e4[33]](_0x88c1x15[_0x78e4[34]])})[_0x78e4[18]](responseWithResult(_0x88c1xa,201))[_0x78e4[22]](handleError(_0x88c1xa))};exports[_0x78e4[118]]= function(_0x88c1x15,_0x88c1xa){if(_0x88c1x15[_0x78e4[34]][_0x78e4[30]]){delete _0x88c1x15[_0x78e4[34]][_0x78e4[30]]};return FreshdeskField[_0x78e4[32]](_0x88c1x15[_0x78e4[31]][_0x78e4[111]])[_0x78e4[18]](handleEntityNotFound(_0x88c1xa))[_0x78e4[18]](saveUpdates(_0x88c1x15[_0x78e4[34]]))[_0x78e4[18]](responseWithResult(_0x88c1xa))[_0x78e4[22]](handleError(_0x88c1xa))};exports[_0x78e4[119]]= function(_0x88c1x15,_0x88c1xa,_0x88c1x19){return FreshdeskConfiguration[_0x78e4[32]](_0x88c1x15[_0x78e4[31]][_0x78e4[56]])[_0x78e4[18]](handleEntityNotFound(_0x88c1xa))[_0x78e4[18]](function(_0x88c1x1a){return _0x88c1x1a[_0x78e4[120]](_0x88c1x15[_0x78e4[34]])})[_0x78e4[18]](responseWithoutResult(_0x88c1xa,200))[_0x78e4[22]](handleError(_0x88c1xa))} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/freshdesk_account/freshdesk_account.events.js b/server/api/freshdesk_account/freshdesk_account.events.js index 1dab931..66dc905 100644 --- a/server/api/freshdesk_account/freshdesk_account.events.js +++ b/server/api/freshdesk_account/freshdesk_account.events.js @@ -1 +1 @@ -var _0xea0e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x46\x72\x65\x73\x68\x64\x65\x73\x6B\x41\x63\x63\x6F\x75\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xea0e[0];const EventEmitter=require(_0xea0e[1]);const FreshdeskAccount=require(_0xea0e[3])[_0xea0e[2]];var FreshdeskAccountEvents= new EventEmitter();FreshdeskAccountEvents[_0xea0e[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xea0e[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xea0e[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xea0e[6]};for(var e in events){var event=events[e];FreshdeskAccount[_0xea0e[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xac53x8,_0xac53x9,_0xac53xa){FreshdeskAccountEvents[_0xea0e[10]](event+ _0xea0e[8]+ _0xac53x8[_0xea0e[9]],_0xac53x8);FreshdeskAccountEvents[_0xea0e[10]](event,_0xac53x8);_0xac53xa(null)}}module[_0xea0e[11]]= FreshdeskAccountEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/freshdesk_account/freshdesk_account.socket.js b/server/api/freshdesk_account/freshdesk_account.socket.js index 88f73dd..66dc905 100644 --- a/server/api/freshdesk_account/freshdesk_account.socket.js +++ b/server/api/freshdesk_account/freshdesk_account.socket.js @@ -1 +1 @@ -var _0x18ae=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x5F\x61\x63\x63\x6F\x75\x6E\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x18ae[0];const FreshdeskAccountEvents=require(_0x18ae[1]);var events=[_0x18ae[2],_0x18ae[3]];exports[_0x18ae[4]]= function(_0x9065x3){for(var _0x9065x4=0,_0x9065x5=events[_0x18ae[5]];_0x9065x4< _0x9065x5;_0x9065x4++){var _0x9065x6=events[_0x9065x4];var _0x9065x7=createListener(_0x18ae[6]+ _0x9065x6,_0x9065x3);FreshdeskAccountEvents[_0x18ae[7]](_0x9065x6,_0x9065x7);_0x9065x3[_0x18ae[7]](_0x18ae[8],removeListener(_0x9065x6,_0x9065x7))}};function createListener(_0x9065x6,_0x9065x3){return function(_0x9065x9){_0x9065x3[_0x18ae[9]](_0x9065x6,_0x9065x9)}}function removeListener(_0x9065x6,_0x9065x7){return function(){FreshdeskAccountEvents[_0x18ae[10]](_0x9065x6,_0x9065x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/freshdesk_account/index.js b/server/api/freshdesk_account/index.js index d1f4747..66dc905 100644 --- a/server/api/freshdesk_account/index.js +++ b/server/api/freshdesk_account/index.js @@ -1 +1 @@ -var _0x6756=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x63\x68\x65\x63\x6B","\x63\x68\x65\x63\x6B\x41\x63\x63\x6F\x75\x6E\x74","\x2F\x3A\x69\x64\x2F\x66\x69\x65\x6C\x64\x73","\x67\x65\x74\x46\x69\x65\x6C\x64\x73","\x2F\x3A\x69\x64\x2F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73","\x67\x65\x74\x41\x63\x63\x6F\x75\x6E\x74\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73","\x2F\x3A\x69\x64\x2F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73\x2F\x3A\x63\x69\x64","\x67\x65\x74\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x2F\x76\x61\x6C\x69\x64\x61\x74\x65\x2F\x3A\x66\x69\x65\x6C\x64","\x61\x63\x63\x6F\x75\x6E\x74\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x70\x6F\x73\x74","\x63\x72\x65\x61\x74\x65","\x63\x72\x65\x61\x74\x65\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73\x2F\x3A\x63\x69\x64\x2F\x3A\x74\x79\x70\x65","\x63\x72\x65\x61\x74\x65\x46\x69\x65\x6C\x64","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x2F\x3A\x69\x64\x2F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73\x2F\x3A\x63\x69\x64\x2F\x74\x61\x67\x73","\x61\x64\x64\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x54\x61\x67\x73","\x2F\x3A\x69\x64\x2F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73\x2F\x3A\x63\x69\x64\x2F\x66\x69\x65\x6C\x64\x73\x2F\x3A\x66\x69\x64","\x75\x70\x64\x61\x74\x65\x46\x69\x65\x6C\x64","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73","\x64\x65\x73\x74\x72\x6F\x79\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x64\x65\x73\x74\x72\x6F\x79\x46\x69\x65\x6C\x64","\x65\x78\x70\x6F\x72\x74\x73"];_0x6756[0];var express=require(_0x6756[1]);var auth=require(_0x6756[2]);var controller=require(_0x6756[3]);var router=express.Router();router[_0x6756[9]](_0x6756[4],auth[_0x6756[5]](),auth[_0x6756[7]]([19,13],[_0x6756[6]]),controller[_0x6756[8]]);router[_0x6756[9]](_0x6756[10],auth[_0x6756[5]](),auth[_0x6756[7]]([19],[_0x6756[6]]),controller[_0x6756[11]]);router[_0x6756[9]](_0x6756[12],auth[_0x6756[5]](),auth[_0x6756[7]]([19],[_0x6756[6]]),controller[_0x6756[13]]);router[_0x6756[9]](_0x6756[14],auth[_0x6756[5]](),auth[_0x6756[7]]([19],[_0x6756[6]]),controller[_0x6756[15]]);router[_0x6756[9]](_0x6756[16],auth[_0x6756[5]](),auth[_0x6756[7]]([19],[_0x6756[6]]),controller[_0x6756[17]]);router[_0x6756[9]](_0x6756[18],auth[_0x6756[5]](),auth[_0x6756[7]]([19],[_0x6756[6]]),controller[_0x6756[19]]);router[_0x6756[22]](_0x6756[20],auth[_0x6756[5]](),auth[_0x6756[7]]([19],[_0x6756[6]]),controller[_0x6756[21]]);router[_0x6756[22]](_0x6756[4],auth[_0x6756[5]](),auth[_0x6756[7]]([19],[_0x6756[6]]),controller[_0x6756[23]]);router[_0x6756[22]](_0x6756[16],auth[_0x6756[5]](),auth[_0x6756[7]]([19],[_0x6756[6]]),controller[_0x6756[24]]);router[_0x6756[22]](_0x6756[25],auth[_0x6756[5]](),auth[_0x6756[7]]([19],[_0x6756[6]]),controller[_0x6756[26]]);router[_0x6756[28]](_0x6756[10],auth[_0x6756[5]](),auth[_0x6756[7]]([19],[_0x6756[6]]),controller[_0x6756[27]]);router[_0x6756[28]](_0x6756[29],auth[_0x6756[5]](),auth[_0x6756[7]]([19],[_0x6756[6]]),controller[_0x6756[30]]);router[_0x6756[28]](_0x6756[31],auth[_0x6756[5]](),auth[_0x6756[7]]([19],[_0x6756[6]]),controller[_0x6756[32]]);router[_0x6756[34]](_0x6756[4],auth[_0x6756[5]](),auth[_0x6756[7]]([19],[_0x6756[6]]),controller[_0x6756[33]]);router[_0x6756[34]](_0x6756[10],auth[_0x6756[5]](),auth[_0x6756[7]]([19],[_0x6756[6]]),controller[_0x6756[35]]);router[_0x6756[34]](_0x6756[16],auth[_0x6756[5]](),auth[_0x6756[7]]([19],[_0x6756[6]]),controller[_0x6756[36]]);router[_0x6756[34]](_0x6756[18],auth[_0x6756[5]](),auth[_0x6756[7]]([19],[_0x6756[6]]),controller[_0x6756[37]]);router[_0x6756[34]](_0x6756[31],auth[_0x6756[5]](),auth[_0x6756[7]]([19],[_0x6756[6]]),controller[_0x6756[38]]);module[_0x6756[39]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/freshdesk_configuration/freshdesk_configuration.controller.js b/server/api/freshdesk_configuration/freshdesk_configuration.controller.js index f248577..66dc905 100644 --- a/server/api/freshdesk_configuration/freshdesk_configuration.controller.js +++ b/server/api/freshdesk_configuration/freshdesk_configuration.controller.js @@ -1 +1 @@ -var _0x8c55=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x46\x72\x65\x73\x68\x64\x65\x73\x6B\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x46\x72\x65\x73\x68\x64\x65\x73\x6B\x46\x69\x65\x6C\x64","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x53\x75\x62\x6A\x65\x63\x74","\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x46\x69\x65\x6C\x64","\x66\x69\x6E\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x66\x69\x6E\x64\x42\x79\x49\x64","\x61\x64\x64\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x46\x69\x65\x6C\x64","\x73\x70\x72\x65\x61\x64","\x61\x64\x64\x53\x75\x62\x6A\x65\x63\x74","\x73\x75\x62\x6A\x65\x63\x74","\x61\x64\x64\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x61\x64\x64\x46\x69\x65\x6C\x64","\x66\x69\x65\x6C\x64","\x74\x79\x70\x65"];_0x8c55[0];var _=require(_0x8c55[1]);var logger=require(_0x8c55[3])(_0x8c55[2]);var FreshdeskConfiguration=require(_0x8c55[5])[_0x8c55[4]];var FreshdeskField=require(_0x8c55[5])[_0x8c55[6]];function handleError(_0x6373x6,_0x6373x7){_0x6373x7= _0x6373x7|| 500;return function(_0x6373x8){logger[_0x8c55[8]](_0x6373x8[_0x8c55[7]]);_0x6373x6[_0x8c55[10]](_0x6373x7)[_0x8c55[9]](_0x6373x8)}}function responseWithResult(_0x6373x6,_0x6373x7){_0x6373x7= _0x6373x7|| 200;return function(_0x6373xa){if(_0x6373xa){_0x6373x6[_0x8c55[10]](_0x6373x7)[_0x8c55[11]](_0x6373xa)}}}function handleEntityNotFound(_0x6373x6){return function(_0x6373xa){if(!_0x6373xa){_0x6373x6[_0x8c55[10]](404)[_0x8c55[12]]();return null};return _0x6373xa}}function saveUpdates(_0x6373xd){return function(_0x6373xa){return _0x6373xa[_0x8c55[14]](_0x6373xd)[_0x8c55[13]](function(_0x6373xe){return _0x6373xe})}}function removeEntity(_0x6373x6){return function(_0x6373xa){if(_0x6373xa){return _0x6373xa[_0x8c55[15]]()[_0x8c55[13]](function(){_0x6373x6[_0x8c55[10]](204)[_0x8c55[12]]()})}}}exports[_0x8c55[16]]= function(_0x6373x10,_0x6373x6){FreshdeskConfiguration[_0x8c55[19]]({where:_0x6373x10[_0x8c55[18]]})[_0x8c55[13]](responseWithResult(_0x6373x6))[_0x8c55[17]](handleError(_0x6373x6))};exports[_0x8c55[20]]= function(_0x6373x10,_0x6373x6){FreshdeskConfiguration[_0x8c55[26]]({where:{id:_0x6373x10[_0x8c55[22]][_0x8c55[21]]},include:[{model:FreshdeskField,as:_0x8c55[23]},{model:FreshdeskField,as:_0x8c55[24]},{model:FreshdeskField,as:_0x8c55[25]}]})[_0x8c55[13]](handleEntityNotFound(_0x6373x6))[_0x8c55[13]](responseWithResult(_0x6373x6))[_0x8c55[17]](handleError(_0x6373x6))};exports[_0x8c55[27]]= function(_0x6373x10,_0x6373x6){FreshdeskConfiguration[_0x8c55[27]](_0x6373x10[_0x8c55[28]])[_0x8c55[13]](responseWithResult(_0x6373x6,201))[_0x8c55[17]](handleError(_0x6373x6))};exports[_0x8c55[29]]= function(_0x6373x10,_0x6373x6){if(_0x6373x10[_0x8c55[28]][_0x8c55[21]]){delete _0x6373x10[_0x8c55[28]][_0x8c55[21]]};FreshdeskConfiguration[_0x8c55[30]](_0x6373x10[_0x8c55[22]][_0x8c55[21]])[_0x8c55[13]](handleEntityNotFound(_0x6373x6))[_0x8c55[13]](saveUpdates(_0x6373x10[_0x8c55[28]]))[_0x8c55[13]](responseWithResult(_0x6373x6))[_0x8c55[17]](handleError(_0x6373x6))};exports[_0x8c55[15]]= function(_0x6373x10,_0x6373x6){FreshdeskConfiguration[_0x8c55[30]](_0x6373x10[_0x8c55[22]][_0x8c55[21]])[_0x8c55[13]](handleEntityNotFound(_0x6373x6))[_0x8c55[13]](removeEntity(_0x6373x6))[_0x8c55[17]](handleError(_0x6373x6))};exports[_0x8c55[31]]= function(_0x6373x10,_0x6373x6,_0x6373x11){var _0x6373x12;FreshdeskConfiguration[_0x8c55[30]](_0x6373x10[_0x8c55[22]][_0x8c55[21]])[_0x8c55[13]](handleEntityNotFound(_0x6373x6))[_0x8c55[13]](function(_0x6373x15){_0x6373x12= _0x6373x15;return FreshdeskField[_0x8c55[27]](_0x6373x10[_0x8c55[28]])})[_0x8c55[13]](function(_0x6373x14){switch(_0x6373x10[_0x8c55[22]][_0x8c55[39]]){case _0x8c55[34]:return [_0x6373x12[_0x8c55[33]](_0x6373x14),_0x6373x14];case _0x8c55[36]:return [_0x6373x12[_0x8c55[35]](_0x6373x14),_0x6373x14];case _0x8c55[38]:return [_0x6373x12[_0x8c55[37]](_0x6373x14),_0x6373x14]}})[_0x8c55[32]](function(_0x6373x13,_0x6373x14){return _0x6373x6[_0x8c55[10]](201)[_0x8c55[11]](_0x6373x14)})[_0x8c55[17]](handleError(_0x6373x6))} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/freshdesk_configuration/freshdesk_configuration.events.js b/server/api/freshdesk_configuration/freshdesk_configuration.events.js index 746512f..66dc905 100644 --- a/server/api/freshdesk_configuration/freshdesk_configuration.events.js +++ b/server/api/freshdesk_configuration/freshdesk_configuration.events.js @@ -1 +1 @@ -var _0xc79d=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x46\x72\x65\x73\x68\x64\x65\x73\x6B\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xc79d[0];const EventEmitter=require(_0xc79d[1]);const FreshdeskConfiguration=require(_0xc79d[3])[_0xc79d[2]];var FreshdeskConfigurationEvents= new EventEmitter();FreshdeskConfigurationEvents[_0xc79d[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xc79d[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xc79d[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xc79d[6]};for(var e in events){var event=events[e];FreshdeskConfiguration[_0xc79d[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xdbdcx8,_0xdbdcx9,_0xdbdcxa){FreshdeskConfigurationEvents[_0xc79d[10]](event+ _0xc79d[8]+ _0xdbdcx8[_0xc79d[9]],_0xdbdcx8);FreshdeskConfigurationEvents[_0xc79d[10]](event,_0xdbdcx8);_0xdbdcxa(null)}}module[_0xc79d[11]]= FreshdeskConfigurationEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/freshdesk_configuration/freshdesk_configuration.socket.js b/server/api/freshdesk_configuration/freshdesk_configuration.socket.js index 024a47e..66dc905 100644 --- a/server/api/freshdesk_configuration/freshdesk_configuration.socket.js +++ b/server/api/freshdesk_configuration/freshdesk_configuration.socket.js @@ -1 +1 @@ -var _0x2e60=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x2e60[0];const FreshdeskConfigurationEvents=require(_0x2e60[1]);var events=[_0x2e60[2],_0x2e60[3]];exports[_0x2e60[4]]= function(_0xb8bfx3){for(var _0xb8bfx4=0,_0xb8bfx5=events[_0x2e60[5]];_0xb8bfx4< _0xb8bfx5;_0xb8bfx4++){var _0xb8bfx6=events[_0xb8bfx4];var _0xb8bfx7=createListener(_0x2e60[6]+ _0xb8bfx6,_0xb8bfx3);FreshdeskConfigurationEvents[_0x2e60[7]](_0xb8bfx6,_0xb8bfx7);_0xb8bfx3[_0x2e60[7]](_0x2e60[8],removeListener(_0xb8bfx6,_0xb8bfx7))}};function createListener(_0xb8bfx6,_0xb8bfx3){return function(_0xb8bfx9){_0xb8bfx3[_0x2e60[9]](_0xb8bfx6,_0xb8bfx9)}}function removeListener(_0xb8bfx6,_0xb8bfx7){return function(){FreshdeskConfigurationEvents[_0x2e60[10]](_0xb8bfx6,_0xb8bfx7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/freshdesk_configuration/index.js b/server/api/freshdesk_configuration/index.js index 436970a..66dc905 100644 --- a/server/api/freshdesk_configuration/index.js +++ b/server/api/freshdesk_configuration/index.js @@ -1 +1 @@ -var _0x2d89=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x2F\x3A\x69\x64\x2F\x3A\x74\x79\x70\x65","\x61\x64\x64\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x46\x69\x65\x6C\x64","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x2d89[0];var express=require(_0x2d89[1]);var auth=require(_0x2d89[2]);var controller=require(_0x2d89[3]);var router=express.Router();router[_0x2d89[7]](_0x2d89[4],auth[_0x2d89[5]](),controller[_0x2d89[6]]);router[_0x2d89[7]](_0x2d89[8],auth[_0x2d89[5]](),controller[_0x2d89[9]]);router[_0x2d89[11]](_0x2d89[4],auth[_0x2d89[5]](),controller[_0x2d89[10]]);router[_0x2d89[13]](_0x2d89[8],auth[_0x2d89[5]](),controller[_0x2d89[12]]);router[_0x2d89[11]](_0x2d89[14],auth[_0x2d89[5]](),controller[_0x2d89[15]]);router[_0x2d89[16]](_0x2d89[8],auth[_0x2d89[5]](),controller[_0x2d89[12]]);router[_0x2d89[18]](_0x2d89[8],auth[_0x2d89[5]](),controller[_0x2d89[17]]);module[_0x2d89[19]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/freshdesk_field/freshdesk_field.controller.js b/server/api/freshdesk_field/freshdesk_field.controller.js index 2542436..66dc905 100644 --- a/server/api/freshdesk_field/freshdesk_field.controller.js +++ b/server/api/freshdesk_field/freshdesk_field.controller.js @@ -1 +1 @@ -var _0xd982=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x46\x72\x65\x73\x68\x64\x65\x73\x6B\x46\x69\x65\x6C\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65"];_0xd982[0];var _=require(_0xd982[1]);var logger=require(_0xd982[3])(_0xd982[2]);var FreshdeskField=require(_0xd982[5])[_0xd982[4]];function handleError(_0xce06x5,_0xce06x6){_0xce06x6= _0xce06x6|| 500;return function(_0xce06x7){logger[_0xd982[7]](_0xce06x7[_0xd982[6]]);_0xce06x5[_0xd982[9]](_0xce06x6)[_0xd982[8]](_0xce06x7)}}function responseWithResult(_0xce06x5,_0xce06x6){_0xce06x6= _0xce06x6|| 200;return function(_0xce06x9){if(_0xce06x9){_0xce06x5[_0xd982[9]](_0xce06x6)[_0xd982[10]](_0xce06x9)}}}function handleEntityNotFound(_0xce06x5){return function(_0xce06x9){if(!_0xce06x9){_0xce06x5[_0xd982[9]](404)[_0xd982[11]]();return null};return _0xce06x9}}function saveUpdates(_0xce06xc){return function(_0xce06x9){return _0xce06x9[_0xd982[13]](_0xce06xc)[_0xd982[12]](function(_0xce06xd){return _0xce06xd})}}function removeEntity(_0xce06x5){return function(_0xce06x9){if(_0xce06x9){return _0xce06x9[_0xd982[14]]()[_0xd982[12]](function(){_0xce06x5[_0xd982[9]](204)[_0xd982[11]]()})}}}exports[_0xd982[15]]= function(_0xce06xf,_0xce06x5){FreshdeskField[_0xd982[17]]()[_0xd982[12]](responseWithResult(_0xce06x5))[_0xd982[16]](handleError(_0xce06x5))};exports[_0xd982[18]]= function(_0xce06xf,_0xce06x5){FreshdeskField[_0xd982[21]](_0xce06xf[_0xd982[20]][_0xd982[19]])[_0xd982[12]](handleEntityNotFound(_0xce06x5))[_0xd982[12]](responseWithResult(_0xce06x5))[_0xd982[16]](handleError(_0xce06x5))};exports[_0xd982[22]]= function(_0xce06xf,_0xce06x5){FreshdeskField[_0xd982[22]](_0xce06xf[_0xd982[23]])[_0xd982[12]](responseWithResult(_0xce06x5,201))[_0xd982[16]](handleError(_0xce06x5))};exports[_0xd982[24]]= function(_0xce06xf,_0xce06x5){if(_0xce06xf[_0xd982[23]][_0xd982[19]]){delete _0xce06xf[_0xd982[23]][_0xd982[19]]};FreshdeskField[_0xd982[21]](_0xce06xf[_0xd982[20]][_0xd982[19]])[_0xd982[12]](handleEntityNotFound(_0xce06x5))[_0xd982[12]](saveUpdates(_0xce06xf[_0xd982[23]]))[_0xd982[12]](responseWithResult(_0xce06x5))[_0xd982[16]](handleError(_0xce06x5))};exports[_0xd982[14]]= function(_0xce06xf,_0xce06x5){FreshdeskField[_0xd982[21]](_0xce06xf[_0xd982[20]][_0xd982[19]])[_0xd982[12]](handleEntityNotFound(_0xce06x5))[_0xd982[12]](removeEntity(_0xce06x5))[_0xd982[16]](handleError(_0xce06x5))} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/freshdesk_field/freshdesk_field.events.js b/server/api/freshdesk_field/freshdesk_field.events.js index d56e6ce..66dc905 100644 --- a/server/api/freshdesk_field/freshdesk_field.events.js +++ b/server/api/freshdesk_field/freshdesk_field.events.js @@ -1 +1 @@ -var _0x7117=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x46\x72\x65\x73\x68\x64\x65\x73\x6B\x46\x69\x65\x6C\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x7117[0];const EventEmitter=require(_0x7117[1]);const FreshdeskField=require(_0x7117[3])[_0x7117[2]];var FreshdeskFieldEvents= new EventEmitter();FreshdeskFieldEvents[_0x7117[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x7117[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x7117[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x7117[6]};for(var e in events){var event=events[e];FreshdeskField[_0x7117[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xbb09x8,_0xbb09x9,_0xbb09xa){FreshdeskFieldEvents[_0x7117[10]](event+ _0x7117[8]+ _0xbb09x8[_0x7117[9]],_0xbb09x8);FreshdeskFieldEvents[_0x7117[10]](event,_0xbb09x8);_0xbb09xa(null)}}module[_0x7117[11]]= FreshdeskFieldEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/freshdesk_field/freshdesk_field.socket.js b/server/api/freshdesk_field/freshdesk_field.socket.js index 6f0beb2..66dc905 100644 --- a/server/api/freshdesk_field/freshdesk_field.socket.js +++ b/server/api/freshdesk_field/freshdesk_field.socket.js @@ -1 +1 @@ -var _0x8403=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x5F\x66\x69\x65\x6C\x64\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x5F\x66\x69\x65\x6C\x64\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x8403[0];const FreshdeskFieldEvents=require(_0x8403[1]);var events=[_0x8403[2],_0x8403[3]];exports[_0x8403[4]]= function(_0xd0c9x3){for(var _0xd0c9x4=0,_0xd0c9x5=events[_0x8403[5]];_0xd0c9x4< _0xd0c9x5;_0xd0c9x4++){var _0xd0c9x6=events[_0xd0c9x4];var _0xd0c9x7=createListener(_0x8403[6]+ _0xd0c9x6,_0xd0c9x3);FreshdeskFieldEvents[_0x8403[7]](_0xd0c9x6,_0xd0c9x7);_0xd0c9x3[_0x8403[7]](_0x8403[8],removeListener(_0xd0c9x6,_0xd0c9x7))}};function createListener(_0xd0c9x6,_0xd0c9x3){return function(_0xd0c9x9){_0xd0c9x3[_0x8403[9]](_0xd0c9x6,_0xd0c9x9)}}function removeListener(_0xd0c9x6,_0xd0c9x7){return function(){FreshdeskFieldEvents[_0x8403[10]](_0xd0c9x6,_0xd0c9x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/freshdesk_field/index.js b/server/api/freshdesk_field/index.js index 88f57e6..66dc905 100644 --- a/server/api/freshdesk_field/index.js +++ b/server/api/freshdesk_field/index.js @@ -1 +1 @@ -var _0xfc31=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x5F\x66\x69\x65\x6C\x64\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xfc31[0];var express=require(_0xfc31[1]);var auth=require(_0xfc31[2]);var controller=require(_0xfc31[3]);var router=express.Router();router[_0xfc31[7]](_0xfc31[4],auth[_0xfc31[5]](),controller[_0xfc31[6]]);router[_0xfc31[7]](_0xfc31[8],auth[_0xfc31[5]](),controller[_0xfc31[9]]);router[_0xfc31[11]](_0xfc31[4],auth[_0xfc31[5]](),controller[_0xfc31[10]]);router[_0xfc31[13]](_0xfc31[8],auth[_0xfc31[5]](),controller[_0xfc31[12]]);router[_0xfc31[14]](_0xfc31[8],auth[_0xfc31[5]](),controller[_0xfc31[12]]);router[_0xfc31[16]](_0xfc31[8],auth[_0xfc31[5]](),controller[_0xfc31[15]]);module[_0xfc31[17]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/integration/index.js b/server/api/integration/index.js index 4b18a18..66dc905 100644 --- a/server/api/integration/index.js +++ b/server/api/integration/index.js @@ -1 +1 @@ -var _0x9dd7=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x68\x61\x73\x52\x6F\x6C\x65","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x9dd7[0];var express=require(_0x9dd7[1]);var controller=require(_0x9dd7[2]);var auth=require(_0x9dd7[3]);var router=express.Router();router[_0x9dd7[10]](_0x9dd7[4],auth[_0x9dd7[5]](),auth[_0x9dd7[8]]([19],[_0x9dd7[6],_0x9dd7[7]]),controller[_0x9dd7[9]]);router[_0x9dd7[10]](_0x9dd7[11],auth[_0x9dd7[5]](),auth[_0x9dd7[12]](_0x9dd7[6]),controller[_0x9dd7[13]]);router[_0x9dd7[15]](_0x9dd7[4],auth[_0x9dd7[5]](),auth[_0x9dd7[12]](_0x9dd7[6]),controller[_0x9dd7[14]]);router[_0x9dd7[17]](_0x9dd7[11],auth[_0x9dd7[5]](),auth[_0x9dd7[12]](_0x9dd7[6]),controller[_0x9dd7[16]]);router[_0x9dd7[19]](_0x9dd7[11],auth[_0x9dd7[5]](),auth[_0x9dd7[12]](_0x9dd7[6]),controller[_0x9dd7[18]]);module[_0x9dd7[20]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/integration/integration.controller.js b/server/api/integration/integration.controller.js index c5d1ca2..66dc905 100644 --- a/server/api/integration/integration.controller.js +++ b/server/api/integration/integration.controller.js @@ -1 +1 @@ -var _0xc77b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x70\x6C\x6F\x61\x64\x2D\x66\x69\x6C\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x70\x61\x74\x68","\x73\x69\x6D\x70\x6C\x65\x2D\x72\x61\x6E\x64\x6F\x6D","\x61\x64\x6D\x2D\x7A\x69\x70","\x73\x74\x72\x69\x6E\x67\x2D\x74\x6F\x2D\x6A\x73\x6F\x6E","\x66\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x72\x6F\x6F\x74","\x73\x65\x72\x76\x65\x72\x2F\x66\x69\x6C\x65\x73\x2F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x73","\x6A\x6F\x69\x6E","\x4D\x61\x78\x20\x6E\x75\x6D\x62\x65\x72\x20\x6F\x66\x20\x66\x69\x6C\x65\x73\x20\x75\x70\x6C\x6F\x61\x64\x20\x65\x78\x63\x65\x65\x64\x65\x64","\x4F\x6E\x6C\x79\x20\x7A\x69\x70\x20\x66\x6F\x72\x6D\x61\x74\x20\x61\x63\x63\x65\x70\x74\x65\x64","\x54\x68\x65\x20\x6D\x61\x78\x69\x6D\x75\x6D\x20\x66\x69\x6C\x65\x20\x73\x69\x7A\x65\x20\x69\x73\x20\x35\x20\x4D\x62","\x49\x6E\x76\x61\x6C\x69\x64\x20\x72\x65\x71\x75\x65\x73\x74","\x65\x6E\x64","\x66\x69\x6C\x65","\x67\x65\x74\x45\x6E\x74\x72\x69\x65\x73","\x6E\x61\x6D\x65","\x6D\x61\x6E\x69\x66\x65\x73\x74\x2E\x6A\x73\x6F\x6E","\x75\x74\x66\x38","\x67\x65\x74\x44\x61\x74\x61","\x75\x70\x6C\x6F\x61\x64\x5A\x69\x70","\x64\x65\x62\x75\x67","\x70\x61\x72\x73\x65","\x65\x78\x74\x72\x61\x63\x74\x41\x6C\x6C\x54\x6F","\x6D\x65\x72\x67\x65","\x65\x72\x72\x6F\x72","\x6A\x73\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x75\x6E\x6C\x69\x6E\x6B\x53\x79\x6E\x63","\x6D\x61\x6E\x69\x66\x65\x73\x74","\x6D\x61\x6E\x69\x66\x65\x73\x74\x2E\x6A\x73\x6F\x6E\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64","\x6F\x6E","\x75\x70\x6C\x6F\x61\x64","\x75\x70\x64\x61\x74\x65","\x62\x6F\x64\x79","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x66\x69\x6E\x64","\x73\x74\x61\x63\x6B"];_0xc77b[0];var _=require(_0xc77b[1]);var uploadFile=require(_0xc77b[2]);var config=require(_0xc77b[3]);var path=require(_0xc77b[4]);var sr=require(_0xc77b[5]);var admZip=require(_0xc77b[6]);var str2json=require(_0xc77b[7]);var fs=require(_0xc77b[8]);var Util=require(_0xc77b[9]);var logger=require(_0xc77b[11])(_0xc77b[10]);var Integration=require(_0xc77b[13])[_0xc77b[12]];exports[_0xc77b[14]]= function(_0x18fbxc,_0x18fbxd,_0x18fbxe){return Integration[_0xc77b[21]](Util[_0xc77b[20]](_0x18fbxc[_0xc77b[19]]))[_0xc77b[18]](function(_0x18fbx10){_0x18fbxd[_0xc77b[17]](200)[_0xc77b[16]](_0x18fbx10)})[_0xc77b[15]](function(_0x18fbxf){return handleError(_0x18fbxd,_0x18fbxf)})};exports[_0xc77b[22]]= function(_0x18fbxc,_0x18fbxd){return Integration[_0xc77b[26]](_0x18fbxc[_0xc77b[25]][_0xc77b[24]])[_0xc77b[18]](function(_0x18fbx11){if(!_0x18fbx11){return _0x18fbxd[_0xc77b[23]](404)};return _0x18fbxd[_0xc77b[16]](_0x18fbx11)})[_0xc77b[15]](function(_0x18fbxf){return handleError(_0x18fbxd,_0x18fbxf)})};exports[_0xc77b[27]]= function(_0x18fbxc,_0x18fbxd){var _0x18fbx12= new uploadFile({dest:path[_0xc77b[30]](config[_0xc77b[28]],_0xc77b[29]),maxFileSize:5* 1000000,maxNumberOfFiles:1,minNumberOfFiles:1,acceptFileTypes:/(\.|\/)(zip)$/i,messages:{maxNumberOfFiles:_0xc77b[31],acceptFileTypes:_0xc77b[32],maxFileSize:_0xc77b[33],invalidRequest:_0xc77b[34]}});_0x18fbx12[_0xc77b[53]](_0xc77b[35],function(_0x18fbx13,_0x18fbx14){var _0x18fbx15= new admZip(_0x18fbx14[_0xc77b[36]][_0xc77b[4]]);var _0x18fbx16=false;var _0x18fbx17=_0x18fbx15[_0xc77b[37]]();_0x18fbx17[_0xc77b[49]](function(_0x18fbx18){if(_0x18fbx18[_0xc77b[38]]=== _0xc77b[39]){var _0x18fbx19=_0x18fbx18[_0xc77b[41]]().toString(_0xc77b[40]);logger[_0xc77b[43]](_0xc77b[42],_0x18fbx19);try{_0x18fbx16= JSON[_0xc77b[44]](_0x18fbx19);logger[_0xc77b[43]](_0xc77b[42],_0x18fbx16);Integration[_0xc77b[27]](_[_0xc77b[46]](_0x18fbx14[_0xc77b[36]],_0x18fbx16))[_0xc77b[18]](function(_0x18fbx11){_0x18fbx15[_0xc77b[45]](path[_0xc77b[30]](config[_0xc77b[28]],_0xc77b[29]),true);return _0x18fbxd[_0xc77b[17]](201)[_0xc77b[16]](_0x18fbx11)})[_0xc77b[15]](function(_0x18fbxf){return handleError(_0x18fbxd,_0x18fbxf)})}catch(e){logger[_0xc77b[47]](e);var _0x18fbxf={errors:[{type:_0xc77b[48],message:e}]};return handleError(_0x18fbxd,_0x18fbxf)}}});fs[_0xc77b[50]](_0x18fbx14[_0xc77b[36]][_0xc77b[4]]);if(!_0x18fbx16){var _0x18fbxf={errors:[{type:_0xc77b[51],message:_0xc77b[52]}]};return handleError(_0x18fbxd,_0x18fbxf)}});_0x18fbx12[_0xc77b[53]](_0xc77b[47],function(_0x18fbx1a){var _0x18fbxf={errors:[{type:_0xc77b[54],message:_0x18fbx1a}]};return handleError(_0x18fbxd,_0x18fbxf)});_0x18fbx12[_0xc77b[44]](_0x18fbxc)};exports[_0xc77b[55]]= function(_0x18fbxc,_0x18fbxd){if(_0x18fbxc[_0xc77b[56]][_0xc77b[24]]){delete _0x18fbxc[_0xc77b[56]][_0xc77b[24]]};return Integration[_0xc77b[26]](_0x18fbxc[_0xc77b[25]][_0xc77b[24]])[_0xc77b[18]](function(_0x18fbx11){if(!_0x18fbx11){return _0x18fbxd[_0xc77b[23]](404)};var _0x18fbx1b=_[_0xc77b[46]](_0x18fbx11,_0x18fbxc[_0xc77b[56]]);return _0x18fbx1b[_0xc77b[57]]()})[_0xc77b[18]](function(_0x18fbx11){return _0x18fbxd[_0xc77b[17]](200)[_0xc77b[16]](_0x18fbx11)})[_0xc77b[15]](function(_0x18fbxf){return handleError(_0x18fbxd,_0x18fbxf)})};exports[_0xc77b[58]]= function(_0x18fbxc,_0x18fbxd){return Integration[_0xc77b[59]]({where:{id:_0x18fbxc[_0xc77b[25]][_0xc77b[24]]}})[_0xc77b[18]](function(_0x18fbx11){if(!_0x18fbx11){return _0x18fbxd[_0xc77b[23]](404)};return _0x18fbx11[_0xc77b[58]]()})[_0xc77b[18]](function(){return _0x18fbxd[_0xc77b[23]](204)})[_0xc77b[15]](function(_0x18fbxf){return handleError(_0x18fbxd,_0x18fbxf)})};function handleError(_0x18fbxd,_0x18fbxf){logger[_0xc77b[47]](_0x18fbxf[_0xc77b[60]]);return _0x18fbxd[_0xc77b[17]](500)[_0xc77b[16]](_0x18fbxf)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/integration/integration.events.js b/server/api/integration/integration.events.js index 56e381c..66dc905 100644 --- a/server/api/integration/integration.events.js +++ b/server/api/integration/integration.events.js @@ -1 +1 @@ -var _0x4bd5=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x4bd5[0];const EventEmitter=require(_0x4bd5[1]);const Integration=require(_0x4bd5[3])[_0x4bd5[2]];var IntegrationEvents= new EventEmitter();IntegrationEvents[_0x4bd5[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x4bd5[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x4bd5[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x4bd5[6]};for(var e in events){var event=events[e];Integration[_0x4bd5[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xd1c1x8,_0xd1c1x9,_0xd1c1xa){IntegrationEvents[_0x4bd5[10]](event+ _0x4bd5[8]+ _0xd1c1x8[_0x4bd5[9]],_0xd1c1x8);IntegrationEvents[_0x4bd5[10]](event,_0xd1c1x8);_0xd1c1xa(null)}}module[_0x4bd5[11]]= IntegrationEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/integration/integration.socket.js b/server/api/integration/integration.socket.js index 702ac6d..66dc905 100644 --- a/server/api/integration/integration.socket.js +++ b/server/api/integration/integration.socket.js @@ -1 +1 @@ -var _0x6c12=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x6c12[0];const IntegrationEvents=require(_0x6c12[1]);var events=[_0x6c12[2],_0x6c12[3]];exports[_0x6c12[4]]= function(_0xe4b9x3){for(var _0xe4b9x4=0,_0xe4b9x5=events[_0x6c12[5]];_0xe4b9x4< _0xe4b9x5;_0xe4b9x4++){var _0xe4b9x6=events[_0xe4b9x4];var _0xe4b9x7=createListener(_0x6c12[6]+ _0xe4b9x6,_0xe4b9x3);IntegrationEvents[_0x6c12[7]](_0xe4b9x6,_0xe4b9x7);_0xe4b9x3[_0x6c12[7]](_0x6c12[8],removeListener(_0xe4b9x6,_0xe4b9x7))}};function createListener(_0xe4b9x6,_0xe4b9x3){return function(_0xe4b9x9){_0xe4b9x3[_0x6c12[9]](_0xe4b9x6,_0xe4b9x9)}}function removeListener(_0xe4b9x6,_0xe4b9x7){return function(){IntegrationEvents[_0x6c12[10]](_0xe4b9x6,_0xe4b9x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/interval/index.js b/server/api/interval/index.js index 4e74d54..66dc905 100644 --- a/server/api/interval/index.js +++ b/server/api/interval/index.js @@ -1 +1 @@ -var _0x99a3=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x69\x6E\x74\x65\x72\x76\x61\x6C\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x73\x75\x62\x69\x6E\x74\x65\x72\x76\x61\x6C\x73\x2F\x3A\x73\x69\x64","\x73\x68\x6F\x77\x53\x75\x62\x49\x6E\x74\x65\x72\x76\x61\x6C","\x2F\x3A\x69\x64\x2F\x73\x75\x62\x69\x6E\x74\x65\x72\x76\x61\x6C\x73","\x67\x65\x74\x53\x75\x62\x69\x6E\x74\x65\x72\x76\x61\x6C\x73\x42\x79\x49\x6E\x74\x65\x72\x76\x61\x6C","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x63\x72\x65\x61\x74\x65\x53\x75\x62\x49\x6E\x74\x65\x72\x76\x61\x6C","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x53\x75\x62\x69\x6E\x74\x65\x72\x76\x61\x6C","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x73\x74\x72\x6F\x79\x53\x75\x62\x69\x6E\x74\x65\x72\x76\x61\x6C","\x65\x78\x70\x6F\x72\x74\x73"];_0x99a3[0];var express=require(_0x99a3[1]);var controller=require(_0x99a3[2]);var auth=require(_0x99a3[3]);var router=express.Router();router[_0x99a3[9]](_0x99a3[4],auth[_0x99a3[5]](),auth[_0x99a3[7]]([13,7,8,9,10,11],[_0x99a3[6]]),controller[_0x99a3[8]]);router[_0x99a3[9]](_0x99a3[10],auth[_0x99a3[5]](),auth[_0x99a3[7]]([13],[_0x99a3[6]]),controller[_0x99a3[11]]);router[_0x99a3[9]](_0x99a3[12],auth[_0x99a3[5]](),auth[_0x99a3[7]]([13],[_0x99a3[6]]),controller[_0x99a3[13]]);router[_0x99a3[9]](_0x99a3[14],auth[_0x99a3[5]](),auth[_0x99a3[7]]([13],[_0x99a3[6]]),controller[_0x99a3[15]]);router[_0x99a3[17]](_0x99a3[4],auth[_0x99a3[5]](),auth[_0x99a3[7]]([13],[_0x99a3[6]]),controller[_0x99a3[16]]);router[_0x99a3[17]](_0x99a3[14],auth[_0x99a3[5]](),auth[_0x99a3[7]]([13],[_0x99a3[6]]),controller[_0x99a3[18]]);router[_0x99a3[20]](_0x99a3[10],auth[_0x99a3[5]](),auth[_0x99a3[7]]([13],[_0x99a3[6]]),controller[_0x99a3[19]]);router[_0x99a3[22]](_0x99a3[4],auth[_0x99a3[5]](),auth[_0x99a3[7]]([13],[_0x99a3[6]]),controller[_0x99a3[21]]);router[_0x99a3[22]](_0x99a3[14],auth[_0x99a3[5]](),auth[_0x99a3[7]]([13],[_0x99a3[6]]),controller[_0x99a3[23]]);router[_0x99a3[22]](_0x99a3[10],auth[_0x99a3[5]](),auth[_0x99a3[7]]([13],[_0x99a3[6]]),controller[_0x99a3[24]]);router[_0x99a3[22]](_0x99a3[12],auth[_0x99a3[5]](),auth[_0x99a3[7]]([13],[_0x99a3[6]]),controller[_0x99a3[25]]);module[_0x99a3[26]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/interval/interval.controller.js b/server/api/interval/interval.controller.js index 9214d19..66dc905 100644 --- a/server/api/interval/interval.controller.js +++ b/server/api/interval/interval.controller.js @@ -1 +1 @@ -var _0xda6f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x49\x6E\x74\x65\x72\x76\x61\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x56\x6F\x69\x63\x65\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x62\x6C\x75\x65\x62\x69\x72\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x69\x6E\x74\x65\x72\x76\x61\x6C\x73","\x73\x75\x62\x69\x6E\x74\x65\x72\x76\x61\x6C\x73","\x73\x63\x6F\x70\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x61\x6C\x6C","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x6D\x61\x70","\x66\x69\x6E\x64","\x49\x6E\x74\x65\x72\x76\x61\x6C\x49\x64","\x63\x6C\x6F\x6E\x65","\x70\x75\x73\x68","\x72\x65\x6D\x6F\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x66\x6F\x72\x45\x61\x63\x68","\x6D\x65\x73\x73\x61\x67\x65","\x54\x68\x65\x20\x49\x6E\x74\x65\x72\x76\x61\x6C\x20\x69\x73\x20\x61\x73\x73\x6F\x63\x69\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x6F\x6E\x65\x20\x6F\x72\x20\x6D\x6F\x72\x65\x20\x72\x6F\x75\x74\x65\x73\x2C\x20\x64\x65\x6C\x65\x74\x65\x20\x74\x68\x65\x6D\x20\x66\x69\x72\x73\x74","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x64\x4D\x65\x73\x73\x61\x67\x65","\x4D\x45\x53\x53\x41\x47\x45\x5F\x49\x4E\x54\x45\x52\x56\x41\x4C\x5F\x52\x4F\x55\x54\x45\x5F\x41\x53\x53\x4F\x43\x49\x41\x54\x45\x44","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x67\x65\x74\x53\x75\x62\x69\x6E\x74\x65\x72\x76\x61\x6C\x73\x42\x79\x49\x6E\x74\x65\x72\x76\x61\x6C","\x69\x6E\x74\x65\x72\x76\x61\x6C","\x64\x65\x73\x74\x72\x6F\x79\x53\x75\x62\x69\x6E\x74\x65\x72\x76\x61\x6C","\x73\x69\x64","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x53\x75\x62\x69\x6E\x74\x65\x72\x76\x61\x6C","\x72\x65\x71\x2E\x71\x75\x65\x72\x79\x2E\x69\x64\x73","\x6C\x6F\x67","\x73\x68\x6F\x77\x53\x75\x62\x49\x6E\x74\x65\x72\x76\x61\x6C","\x63\x72\x65\x61\x74\x65\x53\x75\x62\x49\x6E\x74\x65\x72\x76\x61\x6C","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0xda6f[0];var _=require(_0xda6f[1]);var Interval=require(_0xda6f[3])[_0xda6f[2]];var VoiceExtension=require(_0xda6f[3])[_0xda6f[4]];var sequelize=require(_0xda6f[3])[_0xda6f[5]];var Promise=require(_0xda6f[6]);var Util=require(_0xda6f[7]);var logger=require(_0xda6f[9])(_0xda6f[8]);exports[_0xda6f[10]]= function(_0x1795x8,_0x1795x9,_0x1795xa){return Interval[_0xda6f[21]](_0xda6f[19],_0xda6f[20])[_0xda6f[18]](_[_0xda6f[17]](Util[_0xda6f[16]](_0x1795x8[_0xda6f[15]]),{distinct:true}))[_0xda6f[14]](function(_0x1795xc){_0x1795x9[_0xda6f[13]](200)[_0xda6f[12]](_0x1795xc)})[_0xda6f[11]](function(_0x1795xb){return handleError(_0x1795x9,_0x1795xb)})};exports[_0xda6f[22]]= function(_0x1795x8,_0x1795x9){return Interval[_0xda6f[21]](_0xda6f[20])[_0xda6f[26]](_0x1795x8[_0xda6f[25]][_0xda6f[24]])[_0xda6f[14]](function(_0x1795xd){if(!_0x1795xd){return _0x1795x9[_0xda6f[23]](404)};return _0x1795x9[_0xda6f[12]](_0x1795xd)})[_0xda6f[11]](function(_0x1795xb){return handleError(_0x1795x9,_0x1795xb)})};exports[_0xda6f[27]]= function(_0x1795x8,_0x1795x9){return Interval[_0xda6f[27]](_0x1795x8[_0xda6f[28]])[_0xda6f[14]](function(_0x1795xd){return _0x1795x9[_0xda6f[13]](201)[_0xda6f[12]](_0x1795xd)})[_0xda6f[11]](function(_0x1795xb){return handleError(_0x1795x9,_0x1795xb)})};exports[_0xda6f[29]]= function(_0x1795x8,_0x1795x9){return Interval[_0xda6f[26]](_0x1795x8[_0xda6f[25]][_0xda6f[24]])[_0xda6f[14]](function(_0x1795xd){if(!_0x1795xd){return _0x1795x9[_0xda6f[23]](404)};return _0x1795xd[_0xda6f[30]](_0x1795x8[_0xda6f[28]])})[_0xda6f[14]](function(){return _0x1795x9[_0xda6f[23]](200)})[_0xda6f[11]](function(_0x1795xb){return handleError(_0x1795x9,_0x1795xb)})};function bulkCreateSubIntervals(_0x1795xf,_0x1795x10,_0x1795x11){return Promise[_0xda6f[31]]([])[_0xda6f[14]](function(){var _0x1795x12=[];var _0x1795x13=_[_0xda6f[33]](_0x1795x10.SubIntervals,_0xda6f[32]);var _0x1795x14;_[_0xda6f[40]](_0x1795x13,function(_0x1795x15,_0x1795x16){_0x1795x14= _[_0xda6f[34]](_0x1795xf,{id:_0x1795x15[_0xda6f[24]]});if(_0x1795x14){_0x1795x14[_0xda6f[35]]= _0x1795x10[_0xda6f[24]];_0x1795x12[_0xda6f[37]](Interval[_0xda6f[29]](_[_0xda6f[36]](_0x1795x14),{where:{id:_0x1795x15[_0xda6f[24]]},transaction:_0x1795x11,individualHooks:true}));_[_0xda6f[38]](_0x1795xf,{id:_0x1795x15[_0xda6f[24]]})}else {_0x1795x12[_0xda6f[37]](Interval[_0xda6f[39]]({where:{id:_0x1795x15[_0xda6f[24]]},individualHooks:true,transaction:_0x1795x11}))}});_[_0xda6f[40]](_0x1795xf,function(_0x1795x15){_0x1795x15[_0xda6f[35]]= _0x1795x10[_0xda6f[24]];_0x1795x12[_0xda6f[37]](Interval[_0xda6f[27]](_0x1795x15,{transaction:_0x1795x11}))});return _0x1795x12})[_0xda6f[31]]()}exports[_0xda6f[39]]= function(_0x1795x8,_0x1795x9){return sequelize[_0xda6f[45]](function(_0x1795x11){return Interval[_0xda6f[39]]({where:{id:_0x1795x8[_0xda6f[25]][_0xda6f[24]]},individualHooks:true,transaction:_0x1795x11})})[_0xda6f[14]](function(){return _0x1795x9[_0xda6f[23]](204)})[_0xda6f[11]](sequelize.ForeignKeyConstraintError,function(_0x1795xb){_0x1795xb[_0xda6f[41]]= _0xda6f[42];_0x1795xb[_0xda6f[43]]= _0xda6f[44];return handleError(_0x1795x9,_0x1795xb)})[_0xda6f[11]](function(_0x1795xb){return handleError(_0x1795x9,_0x1795xb)})};exports[_0xda6f[46]]= function(_0x1795x8,_0x1795x9){return sequelize[_0xda6f[45]](function(_0x1795x11){return Interval[_0xda6f[39]]({where:{id:_0x1795x8[_0xda6f[15]][_0xda6f[47]]},individualHooks:true,transaction:_0x1795x11})})[_0xda6f[14]](function(){return _0x1795x9[_0xda6f[23]](204)})[_0xda6f[11]](sequelize.ForeignKeyConstraintError,function(_0x1795xb){_0x1795xb[_0xda6f[41]]= _0xda6f[42];_0x1795xb[_0xda6f[43]]= _0xda6f[44];return handleError(_0x1795x9,_0x1795xb)})[_0xda6f[11]](function(_0x1795xb){return handleError(_0x1795x9,_0x1795xb)})};exports[_0xda6f[48]]= function(_0x1795x8,_0x1795x9,_0x1795xa){return Interval[_0xda6f[21]]({method:[_0xda6f[49],_0x1795x8[_0xda6f[25]][_0xda6f[24]]]})[_0xda6f[18]](Util[_0xda6f[16]](_0x1795x8[_0xda6f[15]]))[_0xda6f[14]](function(_0x1795xc){_0x1795x9[_0xda6f[13]](200)[_0xda6f[12]](_0x1795xc)})[_0xda6f[11]](function(_0x1795xb){return handleError(_0x1795x9,_0x1795xb)})};exports[_0xda6f[50]]= function(_0x1795x8,_0x1795x9){return Interval[_0xda6f[39]]({where:{id:_0x1795x8[_0xda6f[25]][_0xda6f[51]]},individualHooks:true})[_0xda6f[14]](function(){return _0x1795x9[_0xda6f[23]](204)})[_0xda6f[11]](sequelize.ForeignKeyConstraintError,function(_0x1795xb){_0x1795xb[_0xda6f[41]]= _0xda6f[42];_0x1795xb[_0xda6f[43]]= _0xda6f[44];return handleError(_0x1795x9,_0x1795xb)})[_0xda6f[11]](function(_0x1795xb){return handleError(_0x1795x9,_0x1795xb)})};exports[_0xda6f[52]]= function(_0x1795x8,_0x1795x9){console[_0xda6f[54]](_0xda6f[53],_0x1795x8[_0xda6f[15]][_0xda6f[47]]);return Interval[_0xda6f[39]]({where:{id:_0x1795x8[_0xda6f[15]][_0xda6f[47]]},individualHooks:true})[_0xda6f[14]](function(){return _0x1795x9[_0xda6f[23]](204)})[_0xda6f[11]](sequelize.ForeignKeyConstraintError,function(_0x1795xb){_0x1795xb[_0xda6f[41]]= _0xda6f[42];_0x1795xb[_0xda6f[43]]= _0xda6f[44];return handleError(_0x1795x9,_0x1795xb)})[_0xda6f[11]](function(_0x1795xb){return handleError(_0x1795x9,_0x1795xb)})};exports[_0xda6f[55]]= function(_0x1795x8,_0x1795x9){return Interval[_0xda6f[26]](_0x1795x8[_0xda6f[25]][_0xda6f[51]])[_0xda6f[14]](function(_0x1795xd){if(!_0x1795xd){return _0x1795x9[_0xda6f[23]](404)};return _0x1795x9[_0xda6f[12]](_0x1795xd)})[_0xda6f[11]](function(_0x1795xb){return handleError(_0x1795x9,_0x1795xb)})};exports[_0xda6f[56]]= function(_0x1795x8,_0x1795x9){_0x1795x8[_0xda6f[28]][_0xda6f[35]]= _0x1795x8[_0xda6f[25]][_0xda6f[24]];return Interval[_0xda6f[27]](_0x1795x8[_0xda6f[28]])[_0xda6f[14]](function(_0x1795xd){return _0x1795x9[_0xda6f[13]](201)[_0xda6f[12]](_0x1795xd)})[_0xda6f[11]](function(_0x1795xb){return handleError(_0x1795x9,_0x1795xb)})};function handleError(_0x1795x9,_0x1795xb){logger[_0xda6f[58]](_0x1795xb[_0xda6f[57]]);return _0x1795x9[_0xda6f[13]](500)[_0xda6f[12]](_0x1795xb)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/interval/interval.events.js b/server/api/interval/interval.events.js index 163442e..66dc905 100644 --- a/server/api/interval/interval.events.js +++ b/server/api/interval/interval.events.js @@ -1 +1 @@ -var _0x832e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x49\x6E\x74\x65\x72\x76\x61\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x832e[0];const EventEmitter=require(_0x832e[1]);const Interval=require(_0x832e[3])[_0x832e[2]];var IntervalEvents= new EventEmitter();IntervalEvents[_0x832e[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x832e[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x832e[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x832e[6]};for(var e in events){var event=events[e];Interval[_0x832e[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x9f7cx8,_0x9f7cx9,_0x9f7cxa){IntervalEvents[_0x832e[10]](event+ _0x832e[8]+ _0x9f7cx8[_0x832e[9]],_0x9f7cx8);IntervalEvents[_0x832e[10]](event,_0x9f7cx8);_0x9f7cxa(null)}}module[_0x832e[11]]= IntervalEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/interval/interval.socket.js b/server/api/interval/interval.socket.js index 815ecfb..66dc905 100644 --- a/server/api/interval/interval.socket.js +++ b/server/api/interval/interval.socket.js @@ -1 +1 @@ -var _0x4a69=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x69\x6E\x74\x65\x72\x76\x61\x6C\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x69\x6E\x74\x65\x72\x76\x61\x6C\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x4a69[0];const IntervalEvents=require(_0x4a69[1]);var events=[_0x4a69[2],_0x4a69[3]];exports[_0x4a69[4]]= function(_0x8692x3){for(var _0x8692x4=0,_0x8692x5=events[_0x4a69[5]];_0x8692x4< _0x8692x5;_0x8692x4++){var _0x8692x6=events[_0x8692x4];var _0x8692x7=createListener(_0x4a69[6]+ _0x8692x6,_0x8692x3);IntervalEvents[_0x4a69[7]](_0x8692x6,_0x8692x7);_0x8692x3[_0x4a69[7]](_0x4a69[8],removeListener(_0x8692x6,_0x8692x7))}};function createListener(_0x8692x6,_0x8692x3){return function(_0x8692x9){_0x8692x3[_0x4a69[9]](_0x8692x6,_0x8692x9)}}function removeListener(_0x8692x6,_0x8692x7){return function(){IntervalEvents[_0x4a69[10]](_0x8692x6,_0x8692x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/jscripty_project/index.js b/server/api/jscripty_project/index.js index a4907e2..66dc905 100644 --- a/server/api/jscripty_project/index.js +++ b/server/api/jscripty_project/index.js @@ -1 +1 @@ -var _0xd685=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x6A\x73\x63\x72\x69\x70\x74\x79\x5F\x70\x72\x6F\x6A\x65\x63\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x4A\x73\x63\x72\x69\x70\x74\x79","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x2F\x3A\x69\x64\x2F\x73\x65\x73\x73\x69\x6F\x6E\x73","\x73\x68\x6F\x77\x53\x65\x73\x73\x69\x6F\x6E\x73","\x2F\x3A\x69\x64\x2F\x73\x65\x73\x73\x69\x6F\x6E\x73\x2F\x3A\x73\x65\x73\x73\x69\x6F\x6E\x49\x64","\x73\x68\x6F\x77\x53\x65\x73\x73\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x71\x75\x65\x73\x74\x69\x6F\x6E\x73\x2F\x3A\x71\x75\x65\x73\x74\x69\x6F\x6E\x49\x64\x2F\x64\x65\x74\x61\x69\x6C","\x73\x68\x6F\x77\x51\x75\x65\x73\x74\x69\x6F\x6E\x44\x65\x74\x61\x69\x6C","\x2F\x3A\x69\x64\x2F\x71\x75\x65\x73\x74\x69\x6F\x6E\x73","\x73\x68\x6F\x77\x51\x75\x65\x73\x74\x69\x6F\x6E\x73","\x2F\x3A\x69\x64\x2F\x71\x75\x65\x73\x74\x69\x6F\x6E\x73\x2F\x73\x75\x6D\x6D\x61\x72\x79","\x73\x68\x6F\x77\x53\x75\x6D\x6D\x61\x72\x79","\x2F\x3A\x69\x64\x2F\x69\x6E\x70\x75\x74\x73","\x73\x68\x6F\x77\x49\x6E\x70\x75\x74\x73","\x2F\x3A\x69\x64\x2F\x71\x75\x65\x73\x74\x69\x6F\x6E\x73\x2F\x64\x65\x74\x61\x69\x6C","\x73\x68\x6F\x77\x44\x65\x74\x61\x69\x6C","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x63\x72\x65\x61\x74\x65\x53\x65\x73\x73\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x73\x65\x73\x73\x69\x6F\x6E\x73\x2F\x3A\x73\x65\x73\x73\x69\x6F\x6E\x49\x64\x2F\x71\x75\x65\x73\x74\x69\x6F\x6E\x73","\x63\x72\x65\x61\x74\x65\x51\x75\x65\x73\x74\x69\x6F\x6E\x73","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x75\x70\x64\x61\x74\x65\x53\x65\x73\x73\x69\x6F\x6E","\x64\x65\x73\x74\x72\x6F\x79\x53\x65\x73\x73\x69\x6F\x6E","\x64\x65\x6C\x65\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0xd685[0];var express=require(_0xd685[1]);var auth=require(_0xd685[2]);var controller=require(_0xd685[3]);var license=require(_0xd685[4]);var router=express.Router();router[_0xd685[13]](_0xd685[5],license[_0xd685[6]](),license[_0xd685[7]](),auth[_0xd685[8]](),auth[_0xd685[11]]([15],[_0xd685[9],_0xd685[10]]),controller[_0xd685[12]]);router[_0xd685[13]](_0xd685[14],license[_0xd685[6]](),license[_0xd685[7]](),auth[_0xd685[8]](),auth[_0xd685[11]]([15],[_0xd685[9]]),controller[_0xd685[15]]);router[_0xd685[13]](_0xd685[16],license[_0xd685[6]](),license[_0xd685[7]](),auth[_0xd685[8]](),auth[_0xd685[11]]([15],[_0xd685[9],_0xd685[10]]),controller[_0xd685[17]]);router[_0xd685[13]](_0xd685[18],license[_0xd685[6]](),license[_0xd685[7]](),auth[_0xd685[8]](),auth[_0xd685[11]]([15],[_0xd685[9]]),controller[_0xd685[19]]);router[_0xd685[13]](_0xd685[20],license[_0xd685[6]](),license[_0xd685[7]](),auth[_0xd685[8]](),auth[_0xd685[11]]([15],[_0xd685[9]]),controller[_0xd685[21]]);router[_0xd685[13]](_0xd685[22],license[_0xd685[6]](),license[_0xd685[7]](),auth[_0xd685[8]](),auth[_0xd685[11]]([15],[_0xd685[9]]),controller[_0xd685[23]]);router[_0xd685[13]](_0xd685[24],license[_0xd685[6]](),license[_0xd685[7]](),auth[_0xd685[8]](),auth[_0xd685[11]]([15],[_0xd685[9]]),controller[_0xd685[25]]);router[_0xd685[13]](_0xd685[26],license[_0xd685[6]](),license[_0xd685[7]](),auth[_0xd685[8]](),auth[_0xd685[11]]([15],[_0xd685[9]]),controller[_0xd685[27]]);router[_0xd685[13]](_0xd685[28],license[_0xd685[6]](),license[_0xd685[7]](),auth[_0xd685[8]](),auth[_0xd685[11]]([15],[_0xd685[9]]),controller[_0xd685[29]]);router[_0xd685[13]](_0xd685[30],license[_0xd685[6]](),license[_0xd685[7]](),auth[_0xd685[8]](),auth[_0xd685[11]]([15],[_0xd685[9]]),controller[_0xd685[31]]);router[_0xd685[33]](_0xd685[5],license[_0xd685[6]](),license[_0xd685[7]](),auth[_0xd685[8]](),auth[_0xd685[11]]([15],[_0xd685[9]]),controller[_0xd685[32]]);router[_0xd685[33]](_0xd685[18],license[_0xd685[6]](),license[_0xd685[7]](),auth[_0xd685[8]](),auth[_0xd685[11]]([15],[_0xd685[9],_0xd685[10]]),controller[_0xd685[34]]);router[_0xd685[33]](_0xd685[35],license[_0xd685[6]](),license[_0xd685[7]](),auth[_0xd685[8]](),auth[_0xd685[11]]([15],[_0xd685[9],_0xd685[10]]),controller[_0xd685[36]]);router[_0xd685[38]](_0xd685[14],license[_0xd685[6]](),license[_0xd685[7]](),auth[_0xd685[8]](),auth[_0xd685[11]]([15],[_0xd685[9]]),controller[_0xd685[37]]);router[_0xd685[38]](_0xd685[20],license[_0xd685[6]](),license[_0xd685[7]](),auth[_0xd685[8]](),auth[_0xd685[11]]([15],[_0xd685[9],_0xd685[10]]),controller[_0xd685[39]]);router[_0xd685[41]](_0xd685[20],license[_0xd685[6]](),license[_0xd685[7]](),auth[_0xd685[8]](),auth[_0xd685[11]]([15],[_0xd685[9]]),controller[_0xd685[40]]);router[_0xd685[41]](_0xd685[5],license[_0xd685[6]](),license[_0xd685[7]](),auth[_0xd685[8]](),auth[_0xd685[11]]([15],[_0xd685[9]]),controller[_0xd685[42]]);router[_0xd685[41]](_0xd685[14],license[_0xd685[6]](),license[_0xd685[7]](),auth[_0xd685[8]](),auth[_0xd685[11]]([15],[_0xd685[9]]),controller[_0xd685[43]]);module[_0xd685[44]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/jscripty_project/jscripty_project.controller.js b/server/api/jscripty_project/jscripty_project.controller.js index 4f29213..66dc905 100644 --- a/server/api/jscripty_project/jscripty_project.controller.js +++ b/server/api/jscripty_project/jscripty_project.controller.js @@ -1 +1 @@ -var _0xbefd=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x78\x6D\x6C\x32\x6A\x73","\x6C\x6F\x64\x61\x73\x68","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x4A\x73\x63\x72\x69\x70\x74\x79\x50\x72\x6F\x6A\x65\x63\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x52\x65\x70\x6F\x72\x74\x4A\x73\x63\x72\x69\x70\x74\x79\x53\x65\x73\x73\x69\x6F\x6E","\x52\x65\x70\x6F\x72\x74\x4A\x73\x63\x72\x69\x70\x74\x79\x51\x75\x65\x73\x74\x69\x6F\x6E","\x52\x65\x70\x6F\x72\x74\x4A\x73\x63\x72\x69\x70\x74\x79\x49\x6E\x70\x75\x74","\x62\x6C\x75\x65\x62\x69\x72\x64","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x73\x68\x6F\x77\x53\x65\x73\x73\x69\x6F\x6E\x73","\x73\x65\x73\x73\x69\x6F\x6E\x73","\x73\x63\x6F\x70\x65","\x73\x68\x6F\x77\x53\x65\x73\x73\x69\x6F\x6E","\x73\x65\x73\x73\x69\x6F\x6E\x49\x64","\x66\x69\x6E\x64","\x73\x68\x6F\x77\x49\x6E\x70\x75\x74\x73","\x72\x6F\x77\x73","\x73\x65\x73\x73\x69\x6F\x6E\x5F\x69\x64","\x71\x75\x65\x73\x74\x69\x6F\x6E\x5F\x69\x64","\x71\x75\x65\x73\x74\x69\x6F\x6E\x5F\x74\x79\x70\x65","\x71\x75\x65\x73\x74\x69\x6F\x6E\x5F\x6C\x61\x62\x65\x6C","\x71\x75\x65\x73\x74\x69\x6F\x6E\x5F\x74\x65\x78\x74","\x69\x6E\x70\x75\x74\x5F\x6C\x61\x62\x65\x6C","\x69\x6E\x70\x75\x74\x5F\x76\x61\x6C\x75\x65","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x63\x6F\x75\x6E\x74","\x6C\x65\x6E\x67\x74\x68","\x69\x6E\x70\x75\x74\x73","\x73\x68\x6F\x77\x51\x75\x65\x73\x74\x69\x6F\x6E\x73","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77\x53\x75\x6D\x6D\x61\x72\x79","\x73\x75\x6D\x6D\x61\x72\x79","\x73\x68\x6F\x77\x51\x75\x65\x73\x74\x69\x6F\x6E\x44\x65\x74\x61\x69\x6C","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x69\x6E\x70\x75\x74","\x67\x72\x6F\x75\x70\x42\x79","\x6D\x61\x70","\x75\x6E\x69\x6F\x6E","\x6C\x61\x73\x74","\x6B\x65\x79\x73","\x6C\x61\x62\x65\x6C\x73","\x63\x68\x6F\x69\x63\x65\x73","\x67\x72\x61\x70\x68\x44\x61\x74\x61","\x67\x72\x61\x70\x68\x4C\x61\x62\x65\x6C\x73","\x62\x61\x72","\x52\x65\x70\x6F\x72\x74\x4A\x73\x63\x72\x69\x70\x74\x79\x49\x6E\x70\x75\x74\x73","\x76\x61\x6C\x75\x65","\x70\x65\x72\x63\x65\x6E\x74\x61\x67\x65","\x71\x75\x65\x73\x74\x69\x6F\x6E\x49\x64","\x63\x6F\x6C","\x66\x6E","\x63\x68\x65\x63\x6B\x62\x6F\x78","\x31","\x69\x6E\x70\x75\x74\x5F\x74\x79\x70\x65","\x71\x75\x65\x73\x74\x69\x6F\x6E","\x70\x69\x65","\x71\x75\x65\x73\x74\x69\x6F\x6E\x5F\x61\x6E\x73\x77\x65\x72","\x71\x75\x65\x73\x74\x69\x6F\x6E\x5F\x6F\x74\x68\x65\x72\x5F\x61\x6E\x73\x77\x65\x72","\x71\x75\x65\x73\x74\x69\x6F\x6E\x5F\x6F\x74\x68\x65\x72\x5F\x6C\x61\x62\x65\x6C","\x71\x75\x65\x73\x74\x69\x6F\x6E\x5F\x6F\x70\x74\x69\x6F\x6E\x73","\x70\x61\x72\x73\x65","\x6F\x70\x74\x69\x6F\x6E\x73","\x6F\x74\x68\x65\x72\x5F\x6F\x70\x74\x69\x6F\x6E","\x71\x75\x65\x73\x74\x69\x6F\x6E\x20\x74\x79\x70\x65\x20\x6E\x6F\x74\x20\x72\x65\x63\x6F\x67\x6E\x69\x7A\x65\x64","\x77\x61\x72\x6E","\x73\x68\x6F\x77\x44\x65\x74\x61\x69\x6C","\x63\x72\x65\x61\x74\x65","\x6E\x61\x6D\x65","\x66\x69\x65\x6C\x64\x73","\x6D\x65\x73\x73\x61\x67\x65","\x50\x72\x6F\x6A\x65\x63\x74\x20\x6E\x61\x6D\x65\x20\x61\x6C\x72\x65\x61\x64\x79\x20\x65\x78\x69\x73\x74\x73","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x64\x4D\x65\x73\x73\x61\x67\x65","\x4D\x45\x53\x53\x41\x47\x45\x5F\x45\x58\x49\x53\x54\x5F\x50\x52\x4F\x4A\x45\x43\x54","\x62\x6F\x64\x79","\x63\x72\x65\x61\x74\x65\x53\x65\x73\x73\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x51\x75\x65\x73\x74\x69\x6F\x6E\x73","\x61\x6C\x6C","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65\x53\x65\x73\x73\x69\x6F\x6E","\x64\x65\x73\x74\x72\x6F\x79\x53\x65\x73\x73\x69\x6F\x6E","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x3B\x20\x66\x69\x6C\x65\x6E\x61\x6D\x65\x3D\x22","\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x2E\x78\x6D\x6C\x22","\x74\x78\x74\x2F\x78\x6D\x6C","\x73\x65\x74","\x70\x72\x6F\x64\x75\x63\x74\x69\x6F\x6E"];_0xbefd[0];var xml=require(_0xbefd[1]);var _=require(_0xbefd[2]);var logger=require(_0xbefd[4])(_0xbefd[3]);var JscriptyProject=require(_0xbefd[6])[_0xbefd[5]];var Util=require(_0xbefd[7]);var sequelize=require(_0xbefd[6])[_0xbefd[8]];var ReportJscriptySession=require(_0xbefd[6])[_0xbefd[9]];var ReportJscriptyQuestion=require(_0xbefd[6])[_0xbefd[10]];var ReportJscriptyInput=require(_0xbefd[6])[_0xbefd[11]];var Promise=require(_0xbefd[12]);function handleError(_0x5727xc,_0x5727xd){logger[_0xbefd[14]](_0x5727xd[_0xbefd[13]]);return _0x5727xc[_0xbefd[16]](500)[_0xbefd[15]](_0x5727xd)}function responseWithResult(_0x5727xc,_0x5727xf){_0x5727xf= _0x5727xf|| 200;return function(_0x5727x10){if(_0x5727x10){_0x5727xc[_0xbefd[16]](_0x5727xf)[_0xbefd[17]](_0x5727x10)}}}function handleEntityNotFound(_0x5727xc){return function(_0x5727x10){if(!_0x5727x10){_0x5727xc[_0xbefd[16]](404)[_0xbefd[18]]();return null};return _0x5727x10}}function saveUpdates(_0x5727x13){return function(_0x5727x10){return _0x5727x10[_0xbefd[20]](_0x5727x13)[_0xbefd[19]](function(_0x5727x14){return _0x5727x14})}}function removeEntity(_0x5727xc){return function(_0x5727x10){if(_0x5727x10){return _0x5727x10[_0xbefd[21]]()[_0xbefd[19]](function(){_0x5727xc[_0xbefd[16]](204)[_0xbefd[18]]()})}}}exports[_0xbefd[22]]= function(_0x5727x16,_0x5727xc,_0x5727x17){return JscriptyProject[_0xbefd[26]](Util[_0xbefd[25]](_0x5727x16[_0xbefd[24]]))[_0xbefd[19]](function(_0x5727x18){_0x5727xc[_0xbefd[16]](200)[_0xbefd[15]](_0x5727x18)})[_0xbefd[23]](function(_0x5727xd){return handleError(_0x5727xc,_0x5727xd)})};exports[_0xbefd[27]]= function(_0x5727x16,_0x5727xc){return JscriptyProject[_0xbefd[31]](_0x5727x16[_0xbefd[30]][_0xbefd[29]])[_0xbefd[19]](function(_0x5727x19){if(!_0x5727x19){return _0x5727xc[_0xbefd[28]](404)};return _0x5727xc[_0xbefd[15]](_0x5727x19)})[_0xbefd[23]](function(_0x5727xd){return handleError(_0x5727xc,_0x5727xd)})};exports[_0xbefd[32]]= function(_0x5727x16,_0x5727xc){return ReportJscriptySession[_0xbefd[34]]({method:[_0xbefd[33],_0x5727x16[_0xbefd[30]][_0xbefd[29]]]})[_0xbefd[26]](Util[_0xbefd[25]](_0x5727x16[_0xbefd[24]]))[_0xbefd[19]](handleEntityNotFound(_0x5727xc))[_0xbefd[19]](responseWithResult(_0x5727xc))[_0xbefd[23]](function(_0x5727xd){return handleError(_0x5727xc,_0x5727xd)})};exports[_0xbefd[35]]= function(_0x5727x16,_0x5727xc){return ReportJscriptySession[_0xbefd[37]]({where:{projectId:_0x5727x16[_0xbefd[30]][_0xbefd[29]],session_id:_0x5727x16[_0xbefd[30]][_0xbefd[36]]},include:[{model:ReportJscriptyQuestion,include:[{model:ReportJscriptyInput}]}]})[_0xbefd[19]](handleEntityNotFound(_0x5727xc))[_0xbefd[19]](responseWithResult(_0x5727xc))[_0xbefd[23]](function(_0x5727xd){return handleError(_0x5727xc,_0x5727xd)})};exports[_0xbefd[38]]= function(_0x5727x16,_0x5727xc){var _0x5727x1a={count:0,rows:[]};return ReportJscriptySession[_0xbefd[34]]({method:[_0xbefd[51],_0x5727x16[_0xbefd[30]][_0xbefd[29]]]})[_0xbefd[26]](Util[_0xbefd[25]](_0x5727x16[_0xbefd[24]]))[_0xbefd[19]](function(_0x5727x1b){_[_0xbefd[48]](_0x5727x1b[_0xbefd[39]],function(_0x5727x1c){var _0x5727x1d=_0x5727x1c[_0xbefd[40]];_[_0xbefd[48]](_0x5727x1c.ReportJscriptyQuestions,function(_0x5727x1e){var _0x5727x1f=_0x5727x1e[_0xbefd[41]];var _0x5727x20=_0x5727x1e[_0xbefd[42]];var _0x5727x21=_0x5727x1e[_0xbefd[43]];var _0x5727x22=_0x5727x1e[_0xbefd[44]];_[_0xbefd[48]](_0x5727x1e.ReportJscriptyInputs,function(_0x5727x23){_0x5727x1a[_0xbefd[39]][_0xbefd[47]]({session_id:_0x5727x1d,question_type:_0x5727x20,question_id:_0x5727x1f,question_label:_0x5727x21,question_text:_0x5727x22,input_label:_0x5727x23[_0xbefd[45]],input_value:_0x5727x23[_0xbefd[46]]})})})});_0x5727x1a[_0xbefd[49]]= _0x5727x1a[_0xbefd[39]][_0xbefd[50]];return _0x5727x1a})[_0xbefd[19]](handleEntityNotFound(_0x5727xc))[_0xbefd[19]](responseWithResult(_0x5727xc))[_0xbefd[23]](function(_0x5727xd){return handleError(_0x5727xc,_0x5727xd)})};exports[_0xbefd[52]]= function(_0x5727x16,_0x5727xc){return ReportJscriptyQuestion[_0xbefd[53]]({where:{projectId:_0x5727x16[_0xbefd[30]][_0xbefd[29]]},include:[{model:ReportJscriptyInput}]})[_0xbefd[19]](function(_0x5727x24){if(!_0x5727x24){return _0x5727xc[_0xbefd[28]](404)};return _0x5727xc[_0xbefd[16]](200)[_0xbefd[15]](_0x5727x24)})[_0xbefd[19]](handleEntityNotFound(_0x5727xc))[_0xbefd[23]](function(_0x5727xd){return handleError(_0x5727xc,_0x5727xd)})};exports[_0xbefd[54]]= function(_0x5727x16,_0x5727xc){return ReportJscriptyQuestion[_0xbefd[34]]({method:[_0xbefd[55],_0x5727x16[_0xbefd[30]][_0xbefd[29]]]})[_0xbefd[26]](Util[_0xbefd[25]](_0x5727x16[_0xbefd[24]]))[_0xbefd[19]](handleEntityNotFound(_0x5727xc))[_0xbefd[19]](function(_0x5727x25){return _0x5727xc[_0xbefd[16]](200)[_0xbefd[15]](_0x5727x25)})[_0xbefd[23]](function(_0x5727xd){return handleError(_0x5727xc,_0x5727xd)})};exports[_0xbefd[56]]= function(_0x5727x16,_0x5727xc){var _0x5727x26={};var _0x5727x24;var _0x5727x27=0;return ReportJscriptyQuestion[_0xbefd[37]]({where:{projectId:_0x5727x16[_0xbefd[30]][_0xbefd[29]],question_id:_0x5727x16[_0xbefd[30]][_0xbefd[72]]},attributes:[_0xbefd[42]]})[_0xbefd[19]](function(_0x5727x28){if(!_0x5727x28){return _0x5727xc[_0xbefd[28]](404)};if(_0x5727x28[_0xbefd[57]][_0xbefd[42]]== _0xbefd[58]){return ReportJscriptyQuestion[_0xbefd[53]]({where:{projectId:_0x5727x16[_0xbefd[30]][_0xbefd[29]],question_id:_0x5727x16[_0xbefd[30]][_0xbefd[72]]},attributes:[_0xbefd[42],_0xbefd[41],_0xbefd[43],_0xbefd[44]],include:[{model:ReportJscriptyInput,where:{$or:[{input_type:_0xbefd[75],input_value:_0xbefd[76]},{input_type:{$ne:_0xbefd[75]},input_value:{$ne:null}}]},attributes:[_0xbefd[45],_0xbefd[46],_0xbefd[77],[sequelize[_0xbefd[74]](_0xbefd[49],sequelize[_0xbefd[73]](_0xbefd[45])),_0xbefd[49]]]}],group:[_0xbefd[41],_0xbefd[45]]})[_0xbefd[19]](function(_0x5727x28){_0x5727x24= _0x5727x28;return ReportJscriptyQuestion[_0xbefd[53]]({where:{projectId:_0x5727x16[_0xbefd[30]][_0xbefd[29]],question_id:_0x5727x16[_0xbefd[30]][_0xbefd[72]],question_type:_0xbefd[58]},attributes:[_0xbefd[41],[sequelize[_0xbefd[74]](_0xbefd[49],sequelize[_0xbefd[73]](_0xbefd[41])),_0xbefd[49]]],group:[_0xbefd[41]]})})[_0xbefd[19]](function(_0x5727x35){_0x5727x27= _0x5727x35[0][_0xbefd[57]][_0xbefd[49]];if(_0x5727x24){var _0x5727x2a=_[_0xbefd[59]](_0x5727x24,_0xbefd[41]);_[_0xbefd[48]](_0x5727x2a,function(_0x5727x36,_0x5727x2b){var _0x5727x31=[];var _0x5727x32=[];var _0x5727x34=[];var _0x5727x37=_0xbefd[68];_[_0xbefd[48]](_0x5727x36,function(_0x5727x2e){if(_0x5727x2e[_0xbefd[69]]){_[_0xbefd[48]](_0x5727x2e.ReportJscriptyInputs,function(_0x5727x23){_0x5727x31[_0xbefd[47]]({checkbox:true,value:_0x5727x23[_0xbefd[45]],count:_0x5727x23[_0xbefd[57]][_0xbefd[49]]})})}});var _0x5727x33=[];for(var _0x5727x38=0;_0x5727x38< _0x5727x31[_0xbefd[50]];_0x5727x38++){_0x5727x33[_0x5727x38]= _0x5727x31[_0x5727x38][_0xbefd[49]];_0x5727x34[_0x5727x38]= _0x5727x31[_0x5727x38][_0xbefd[70]];_0x5727x31[_0x5727x38][_0xbefd[71]]= _0x5727x27?(_0x5727x31[_0x5727x38][_0xbefd[49]]/ _0x5727x27)* 100:0};_0x5727x32[0]= _0x5727x33;_0x5727x26= {total:_0x5727x27,question_type:_[_0xbefd[62]](_0x5727x36)[_0xbefd[42]],question_id:_[_0xbefd[62]](_0x5727x36)[_0xbefd[41]],question_label:_[_0xbefd[62]](_0x5727x36)[_0xbefd[43]],question_text:_[_0xbefd[62]](_0x5727x36)[_0xbefd[44]],choices:_0x5727x31,graphData:_0x5727x32,graphLabels:_0x5727x34,graphType:_0x5727x37}})};return ReportJscriptyQuestion[_0xbefd[53]]({where:{projectId:_0x5727x16[_0xbefd[30]][_0xbefd[29]],question_id:_0x5727x16[_0xbefd[30]][_0xbefd[72]],question_type:_0xbefd[58]},attributes:[_0xbefd[42],_0xbefd[41],_0xbefd[43],_0xbefd[44]],include:[{model:ReportJscriptyInput,attributes:[_0xbefd[45]]}]})})[_0xbefd[19]](function(_0x5727x1a){var _0x5727x29=[];if(_0x5727x1a){var _0x5727x2a=_[_0xbefd[59]](_0x5727x1a,_0xbefd[41]);_[_0xbefd[48]](_0x5727x2a,function(_0x5727x1e,_0x5727x2b){var _0x5727x2c=[];_[_0xbefd[48]](_0x5727x1e,function(_0x5727x2d){_0x5727x2c= _[_0xbefd[61]](_0x5727x2c,_[_0xbefd[60]](_0x5727x2d.ReportJscriptyInputs,_0xbefd[45]))});_0x5727x29[_0xbefd[47]]({question_id:_[_0xbefd[62]](_0x5727x1e)[_0xbefd[41]],labels:_0x5727x2c})});_[_0xbefd[48]](_0x5727x29,function(_0x5727x2e){if(Object[_0xbefd[63]](_0x5727x26)[_0xbefd[50]]){_[_0xbefd[48]](_0x5727x2e[_0xbefd[64]],function(_0x5727x2f){var _0x5727x30=_[_0xbefd[37]](_0x5727x26[_0xbefd[65]],{value:_0x5727x2f});if(!_0x5727x30){_0x5727x26[_0xbefd[65]][_0xbefd[47]]({value:_0x5727x2f,count:0,percentage:0});_0x5727x26[_0xbefd[66]][0][_0xbefd[47]](0);_0x5727x26[_0xbefd[67]][_0xbefd[47]](_0x5727x2f)}})}else {var _0x5727x31=[];var _0x5727x32=[];var _0x5727x33=[];var _0x5727x34=[];_[_0xbefd[48]](_0x5727x2e[_0xbefd[64]],function(_0x5727x2f){_0x5727x31[_0xbefd[47]]({value:_0x5727x2f,count:0,percentage:0});_0x5727x33[_0xbefd[47]](0);_0x5727x34[_0xbefd[47]](_0x5727x2f)});_0x5727x32[_0xbefd[47]](_0x5727x33);var _0x5727x23=_0x5727x1a[0];_0x5727x26= {total:_0x5727x27,question_type:_0x5727x23[_0xbefd[42]],question_id:_0x5727x23[_0xbefd[41]],question_label:_0x5727x23[_0xbefd[43]],question_text:_0x5727x23[_0xbefd[44]],choices:_0x5727x31,graphType:_0xbefd[68],graphData:_0x5727x32,graphLabels:_0x5727x34}}})};return _0x5727xc[_0xbefd[16]](201)[_0xbefd[15]](_0x5727x26)})}else {if(_0x5727x28[_0xbefd[57]][_0xbefd[42]]== _0xbefd[78]){return ReportJscriptyQuestion[_0xbefd[53]]({where:{projectId:_0x5727x16[_0xbefd[30]][_0xbefd[29]],question_id:_0x5727x16[_0xbefd[30]][_0xbefd[72]]},attributes:[_0xbefd[42],_0xbefd[41],_0xbefd[43],_0xbefd[44],_0xbefd[83],_0xbefd[80],[sequelize[_0xbefd[74]](_0xbefd[49],sequelize[_0xbefd[73]](_0xbefd[80])),_0xbefd[49]]],group:[_0xbefd[41],_0xbefd[80]]})[_0xbefd[19]](function(_0x5727x28){_0x5727x24= _0x5727x28;return ReportJscriptyQuestion[_0xbefd[53]]({where:{projectId:_0x5727x16[_0xbefd[30]][_0xbefd[29]],question_id:_0x5727x16[_0xbefd[30]][_0xbefd[72]],question_type:_0xbefd[78],question_other_answer:{$ne:null}},attributes:[_0xbefd[42],_0xbefd[41],_0xbefd[43],_0xbefd[83],_0xbefd[44],_0xbefd[81],_0xbefd[82],[sequelize[_0xbefd[74]](_0xbefd[49],sequelize[_0xbefd[73]](_0xbefd[82])),_0xbefd[49]]],group:[_0xbefd[41],_0xbefd[82]]})})[_0xbefd[19]](function(_0x5727x1b){if(_0x5727x1b){_[_0xbefd[48]](_0x5727x1b,function(_0x5727x2e){_0x5727x24[_0xbefd[47]](_0x5727x2e)})};var _0x5727x2a=_[_0xbefd[59]](_0x5727x24,_0xbefd[41]);_[_0xbefd[48]](_0x5727x2a,function(_0x5727x36,_0x5727x2b){var _0x5727x31=[];var _0x5727x27=0;var _0x5727x32=[];var _0x5727x34=[];var _0x5727x37=_0xbefd[79];_[_0xbefd[48]](_0x5727x36,function(_0x5727x2e){if(_0x5727x2e[_0xbefd[80]]){_0x5727x31[_0xbefd[47]]({value:_0x5727x2e[_0xbefd[80]],count:_0x5727x2e[_0xbefd[57]][_0xbefd[49]]});_0x5727x27= _0x5727x27+ _0x5727x2e[_0xbefd[57]][_0xbefd[49]]};if(_0x5727x2e[_0xbefd[81]]){_0x5727x31[_0xbefd[47]]({other_option:true,value:_0x5727x2e[_0xbefd[82]],count:_0x5727x2e[_0xbefd[57]][_0xbefd[49]]})}});var _0x5727x39=_[_0xbefd[62]](_0x5727x36)[_0xbefd[83]]?JSON[_0xbefd[84]](_[_0xbefd[62]](_0x5727x36)[_0xbefd[83]]):null;if(_0x5727x39){_[_0xbefd[48]](_0x5727x39[_0xbefd[85]],function(_0x5727x3a){var _0x5727x3b=_[_0xbefd[37]](_0x5727x31,{value:_0x5727x3a});if(!_0x5727x3b){_0x5727x31[_0xbefd[47]]({value:_0x5727x3a,count:0,percentage:0})}})};var _0x5727x33=[];var _0x5727x3c=false;for(var _0x5727x38=0;_0x5727x38< _0x5727x31[_0xbefd[50]];_0x5727x38++){if(!_0x5727x31[_0x5727x38][_0xbefd[86]]){_0x5727x32[_0x5727x38]= _0x5727x31[_0x5727x38][_0xbefd[49]];_0x5727x34[_0x5727x38]= _0x5727x31[_0x5727x38][_0xbefd[70]];_0x5727x31[_0x5727x38][_0xbefd[71]]= _0x5727x27?(_0x5727x31[_0x5727x38][_0xbefd[49]]/ _0x5727x27)* 100:0}};_0x5727x26= {total:_0x5727x27,question_type:_[_0xbefd[62]](_0x5727x36)[_0xbefd[42]],question_id:_[_0xbefd[62]](_0x5727x36)[_0xbefd[41]],question_label:_[_0xbefd[62]](_0x5727x36)[_0xbefd[43]],question_text:_[_0xbefd[62]](_0x5727x36)[_0xbefd[44]],choices:_0x5727x31,graphData:_0x5727x32,graphLabels:_0x5727x34,graphType:_0x5727x37}});return _0x5727xc[_0xbefd[16]](201)[_0xbefd[15]](_0x5727x26)})}else {logger[_0xbefd[88]](_0xbefd[87]);return _0x5727xc[_0xbefd[28]](404)}}})[_0xbefd[23]](function(_0x5727xd){return handleError(_0x5727xc,_0x5727xd)})};exports[_0xbefd[89]]= function(_0x5727x16,_0x5727xc){var _0x5727x3d;var _0x5727x24;var _0x5727x3e;var _0x5727x35;return ReportJscriptyQuestion[_0xbefd[53]]({where:{projectId:_0x5727x16[_0xbefd[30]][_0xbefd[29]],question_type:_0xbefd[78]},attributes:[_0xbefd[42],_0xbefd[41],_0xbefd[43],_0xbefd[44],_0xbefd[80],_0xbefd[83],_0xbefd[82],[sequelize[_0xbefd[74]](_0xbefd[49],sequelize[_0xbefd[73]](_0xbefd[80])),_0xbefd[49]]],group:[_0xbefd[41],_0xbefd[80]]})[_0xbefd[19]](function(_0x5727x1b){_0x5727x24= _0x5727x1b;return ReportJscriptyQuestion[_0xbefd[53]]({where:{projectId:_0x5727x16[_0xbefd[30]][_0xbefd[29]],question_type:_0xbefd[78],question_other_answer:{$ne:null}},attributes:[_0xbefd[42],_0xbefd[41],_0xbefd[43],_0xbefd[44],_0xbefd[81],_0xbefd[82],_0xbefd[83],[sequelize[_0xbefd[74]](_0xbefd[49],sequelize[_0xbefd[73]](_0xbefd[81])),_0xbefd[49]]],group:[_0xbefd[41],_0xbefd[81]]})})[_0xbefd[19]](function(_0x5727x1b){_[_0xbefd[48]](_0x5727x1b,function(_0x5727x2e){_0x5727x24[_0xbefd[47]](_0x5727x2e)});var _0x5727x26=[];var _0x5727x37=_0xbefd[79];var _0x5727x2a=_[_0xbefd[59]](_0x5727x24,_0xbefd[41]);_[_0xbefd[48]](_0x5727x2a,function(_0x5727x36,_0x5727x2b){var _0x5727x27=0;var _0x5727x32=[];var _0x5727x34=[];var _0x5727x31=[];_[_0xbefd[48]](_0x5727x36,function(_0x5727x2e){if(_0x5727x2e[_0xbefd[80]]){_0x5727x31[_0xbefd[47]]({value:_0x5727x2e[_0xbefd[80]],count:_0x5727x2e[_0xbefd[57]][_0xbefd[49]]});_0x5727x27= _0x5727x27+ _0x5727x2e[_0xbefd[57]][_0xbefd[49]]};if(_0x5727x2e[_0xbefd[81]]){_0x5727x31[_0xbefd[47]]({other_option:true,value:_0x5727x2e[_0xbefd[81]],count:_0x5727x2e[_0xbefd[57]][_0xbefd[49]]})}});var _0x5727x39=JSON[_0xbefd[84]](_[_0xbefd[62]](_0x5727x36)[_0xbefd[83]]);if(_0x5727x39){_[_0xbefd[48]](_0x5727x39[_0xbefd[85]],function(_0x5727x3a){var _0x5727x3b=_[_0xbefd[37]](_0x5727x31,{value:_0x5727x3a});if(!_0x5727x3b){_0x5727x31[_0xbefd[47]]({value:_0x5727x3a,count:0,percentage:0})}})};for(var _0x5727x38=0;_0x5727x38< _0x5727x31[_0xbefd[50]];_0x5727x38++){if(!_0x5727x31[_0x5727x38][_0xbefd[86]]&& (_0x5727x27!= 0)){_0x5727x31[_0x5727x38][_0xbefd[71]]= (_0x5727x31[_0x5727x38][_0xbefd[49]]/ _0x5727x27)* 100;_0x5727x32[_0xbefd[47]](_0x5727x31[_0x5727x38][_0xbefd[49]]);_0x5727x34[_0xbefd[47]](_0x5727x31[_0x5727x38][_0xbefd[70]])}};_0x5727x26[_0xbefd[47]]({total:_0x5727x27,question_type:_[_0xbefd[62]](_0x5727x36)[_0xbefd[42]],question_id:_[_0xbefd[62]](_0x5727x36)[_0xbefd[41]],question_label:_[_0xbefd[62]](_0x5727x36)[_0xbefd[43]],question_other_label:_[_0xbefd[62]](_0x5727x36)[_0xbefd[82]],question_text:_[_0xbefd[62]](_0x5727x36)[_0xbefd[44]],choices:_0x5727x31,graphData:_0x5727x32,graphLabels:_0x5727x34,graphType:_0x5727x37})});_0x5727x3d= _0x5727x26;return ReportJscriptyQuestion[_0xbefd[53]]({where:{projectId:_0x5727x16[_0xbefd[30]][_0xbefd[29]],question_type:_0xbefd[58]},attributes:[_0xbefd[29],_0xbefd[42],_0xbefd[41],_0xbefd[43],_0xbefd[44],_0xbefd[80]],include:[{model:ReportJscriptyInput,where:{$or:[{input_type:_0xbefd[75],input_value:_0xbefd[76]},{input_type:{$ne:_0xbefd[75]},input_value:{$ne:null}}]},attributes:[_0xbefd[45],_0xbefd[46],_0xbefd[77],[sequelize[_0xbefd[74]](_0xbefd[49],sequelize[_0xbefd[73]](_0xbefd[45])),_0xbefd[49]]]}],group:[_0xbefd[41],_0xbefd[45]]})})[_0xbefd[19]](function(_0x5727x28){_0x5727x24= _0x5727x28;return ReportJscriptyQuestion[_0xbefd[53]]({where:{projectId:_0x5727x16[_0xbefd[30]][_0xbefd[29]],question_type:_0xbefd[58]},attributes:[_0xbefd[41],[sequelize[_0xbefd[74]](_0xbefd[49],sequelize[_0xbefd[73]](_0xbefd[41])),_0xbefd[49]]],group:[_0xbefd[41]]})})[_0xbefd[19]](function(_0x5727x1e){_0x5727x35= _0x5727x1e;var _0x5727x26=[];var _0x5727x2a=_[_0xbefd[59]](_0x5727x24,_0xbefd[41]);_[_0xbefd[48]](_0x5727x2a,function(_0x5727x36,_0x5727x2b){var _0x5727x31=[];var _0x5727x27=0;_0x5727x27= _[_0xbefd[37]](_0x5727x35,function(_0x5727x1e){return _0x5727x1e[_0xbefd[41]]== _[_0xbefd[62]](_0x5727x36)[_0xbefd[41]]})[_0xbefd[57]][_0xbefd[49]];var _0x5727x32=[];var _0x5727x40=[];var _0x5727x34=[];var _0x5727x37=_0xbefd[68];_[_0xbefd[48]](_0x5727x36,function(_0x5727x2e){var _0x5727x41=_0x5727x2e;_[_0xbefd[48]](_0x5727x41.ReportJscriptyInputs,function(_0x5727x23){_0x5727x31[_0xbefd[47]]({checkbox:true,value:_0x5727x23[_0xbefd[45]],count:_0x5727x23[_0xbefd[57]][_0xbefd[49]]})})});var _0x5727x33=[];for(var _0x5727x38=0;_0x5727x38< _0x5727x31[_0xbefd[50]];_0x5727x38++){_0x5727x33[_0x5727x38]= _0x5727x31[_0x5727x38][_0xbefd[49]];_0x5727x31[_0x5727x38][_0xbefd[71]]= (_0x5727x31[_0x5727x38][_0xbefd[49]]/ _0x5727x27)* 100;_0x5727x34[_0x5727x38]= _0x5727x31[_0x5727x38][_0xbefd[70]]};_0x5727x32[0]= _0x5727x33;_0x5727x3d[_0xbefd[47]]({total:_0x5727x27,question_type:_[_0xbefd[62]](_0x5727x36)[_0xbefd[42]],question_id:_[_0xbefd[62]](_0x5727x36)[_0xbefd[41]],question_label:_[_0xbefd[62]](_0x5727x36)[_0xbefd[43]],question_text:_[_0xbefd[62]](_0x5727x36)[_0xbefd[44]],choices:_0x5727x31,graphData:_0x5727x32,graphLabels:_0x5727x34,graphType:_0x5727x37})});return ReportJscriptyQuestion[_0xbefd[53]]({where:{projectId:_0x5727x16[_0xbefd[30]][_0xbefd[29]],question_type:_0xbefd[58]},attributes:[_0xbefd[29],_0xbefd[41],_0xbefd[43],_0xbefd[44],_0xbefd[42]],include:[{model:ReportJscriptyInput,attributes:[_0xbefd[45]]}]})})[_0xbefd[19]](function(_0x5727x1a){var _0x5727x2a=_[_0xbefd[59]](_0x5727x1a,_0xbefd[41]);var _0x5727x3f=[];_[_0xbefd[48]](_0x5727x2a,function(_0x5727x1e,_0x5727x2b){var _0x5727x2c=[];_[_0xbefd[48]](_0x5727x1e,function(_0x5727x2d){_0x5727x2c= _[_0xbefd[61]](_0x5727x2c,_[_0xbefd[60]](_0x5727x2d.ReportJscriptyInputs,_0xbefd[45]))});_0x5727x3f[_0xbefd[47]]({question_text:_[_0xbefd[62]](_0x5727x1e)[_0xbefd[44]],question_type:_[_0xbefd[62]](_0x5727x1e)[_0xbefd[42]],question_label:_[_0xbefd[62]](_0x5727x1e)[_0xbefd[43]],question_id:_[_0xbefd[62]](_0x5727x1e)[_0xbefd[41]],labels:_0x5727x2c})});_[_0xbefd[48]](_0x5727x3f,function(_0x5727x2e){var _0x5727x1e=_[_0xbefd[37]](_0x5727x3d,{"\x71\x75\x65\x73\x74\x69\x6F\x6E\x5F\x69\x64":_0x5727x2e[_0xbefd[41]]});if(_0x5727x1e){_[_0xbefd[48]](_0x5727x2e[_0xbefd[64]],function(_0x5727x2f){var _0x5727x30=_[_0xbefd[37]](_0x5727x1e[_0xbefd[65]],{value:_0x5727x2f});if(!_0x5727x30){_0x5727x1e[_0xbefd[65]][_0xbefd[47]]({value:_0x5727x2f,count:0,percentage:0});_0x5727x1e[_0xbefd[66]][0][_0xbefd[47]](0);_0x5727x1e[_0xbefd[67]][_0xbefd[47]](_0x5727x2f)}})}else {var _0x5727x31=[];var _0x5727x32=[];var _0x5727x33=[];var _0x5727x34=[];_[_0xbefd[48]](_0x5727x2e[_0xbefd[64]],function(_0x5727x2f){_0x5727x31[_0xbefd[47]]({value:_0x5727x2f,count:0,percentage:0})});var _0x5727x27=_[_0xbefd[37]](_0x5727x35,function(_0x5727x1e){return _0x5727x1e[_0xbefd[41]]== _0x5727x2e[_0xbefd[41]]})[_0xbefd[57]][_0xbefd[49]];_0x5727x3d[_0xbefd[47]]({total:_0x5727x27,question_type:_0x5727x2e[_0xbefd[42]],question_id:_0x5727x2e[_0xbefd[41]],question_label:_0x5727x2e[_0xbefd[43]],question_text:_0x5727x2e[_0xbefd[44]],choices:_0x5727x31,graphType:_0xbefd[68],graphData:_0x5727x32,graphLabels:_0x5727x34})}});return _0x5727xc[_0xbefd[16]](201)[_0xbefd[15]](_0x5727x3d)})[_0xbefd[23]](function(_0x5727xd){return handleError(_0x5727xc,_0x5727xd)})};exports[_0xbefd[90]]= function(_0x5727x16,_0x5727xc){return JscriptyProject[_0xbefd[90]](_0x5727x16[_0xbefd[97]])[_0xbefd[19]](function(_0x5727x19){return _0x5727xc[_0xbefd[16]](201)[_0xbefd[15]](_0x5727x19)})[_0xbefd[23]](sequelize.UniqueConstraintError,function(_0x5727xd){if(_0x5727xd[_0xbefd[92]][_0xbefd[91]]){_0x5727xd[_0xbefd[93]]= _0xbefd[94];_0x5727xd[_0xbefd[95]]= _0xbefd[96]};return handleError(_0x5727xc,_0x5727xd)})[_0xbefd[23]](function(_0x5727xd){return handleError(_0x5727xc,_0x5727xd)})};exports[_0xbefd[98]]= function(_0x5727x16,_0x5727xc){return ReportJscriptySession[_0xbefd[90]](_0x5727x16[_0xbefd[97]])[_0xbefd[19]](function(_0x5727x42){return _0x5727xc[_0xbefd[16]](201)[_0xbefd[15]](_0x5727x42)})[_0xbefd[23]](function(_0x5727xd){return handleError(_0x5727xc,_0x5727xd)})};exports[_0xbefd[99]]= function(_0x5727x16,_0x5727xc){return ReportJscriptyQuestion[_0xbefd[21]]({where:{sessionId:_0x5727x16[_0xbefd[30]][_0xbefd[36]]}})[_0xbefd[19]](function(){var _0x5727x43=[];for(var _0x5727x38=0;_0x5727x38< _0x5727x16[_0xbefd[97]][_0xbefd[50]];_0x5727x38++){_0x5727x43[_0x5727x38]= ReportJscriptyQuestion[_0xbefd[90]](_0x5727x16[_0xbefd[97]][_0x5727x38],{include:[{model:ReportJscriptyInput}]})};return Promise[_0xbefd[100]](_0x5727x43)})[_0xbefd[19]](function(_0x5727x28){return _0x5727xc[_0xbefd[28]](201)})[_0xbefd[23]](function(_0x5727xd){return handleError(_0x5727xc,_0x5727xd)})};exports[_0xbefd[101]]= function(_0x5727x16,_0x5727xc){if(_0x5727x16[_0xbefd[97]][_0xbefd[29]]){delete _0x5727x16[_0xbefd[97]][_0xbefd[29]]};return JscriptyProject[_0xbefd[31]](_0x5727x16[_0xbefd[30]][_0xbefd[29]])[_0xbefd[19]](function(_0x5727x19){if(!_0x5727x19){return _0x5727xc[_0xbefd[28]](404)};var _0x5727x14=_[_0xbefd[102]](_0x5727x19,_0x5727x16[_0xbefd[97]]);return _0x5727x14[_0xbefd[103]]()})[_0xbefd[19]](function(_0x5727x19){return _0x5727xc[_0xbefd[16]](200)[_0xbefd[15]](_0x5727x19)})[_0xbefd[23]](function(_0x5727xd){return handleError(_0x5727xc,_0x5727xd)})};exports[_0xbefd[104]]= function(_0x5727x16,_0x5727xc){return ReportJscriptySession[_0xbefd[31]](_0x5727x16[_0xbefd[30]][_0xbefd[36]])[_0xbefd[19]](function(_0x5727x1c){if(!_0x5727x1c){return _0x5727xc[_0xbefd[28]](404)};var _0x5727x14=_[_0xbefd[102]](_0x5727x1c,_0x5727x16[_0xbefd[97]]);return _0x5727x14[_0xbefd[103]]()})[_0xbefd[19]](function(_0x5727x42){return _0x5727xc[_0xbefd[16]](200)[_0xbefd[15]](_0x5727x42)})[_0xbefd[23]](function(_0x5727xd){return handleError(_0x5727xc,_0x5727xd)})};exports[_0xbefd[21]]= function(_0x5727x16,_0x5727xc){return JscriptyProject[_0xbefd[31]](_0x5727x16[_0xbefd[30]][_0xbefd[29]])[_0xbefd[19]](function(_0x5727x19){if(!_0x5727x19){return _0x5727xc[_0xbefd[28]](404)};return _0x5727x19[_0xbefd[21]]()})[_0xbefd[19]](function(){return _0x5727xc[_0xbefd[28]](204)})[_0xbefd[23]](function(_0x5727xd){return handleError(_0x5727xc,_0x5727xd)})};exports[_0xbefd[105]]= function(_0x5727x16,_0x5727xc){return ReportJscriptySession[_0xbefd[37]]({where:{session_id:_0x5727x16[_0xbefd[30]][_0xbefd[36]]}})[_0xbefd[19]](function(_0x5727x1c){if(!_0x5727x1c){return _0x5727xc[_0xbefd[28]](404)};return _0x5727x1c[_0xbefd[21]]()})[_0xbefd[19]](function(){return _0x5727xc[_0xbefd[28]](204)})[_0xbefd[23]](function(_0x5727xd){return handleError(_0x5727xc,_0x5727xd)})};exports[_0xbefd[106]]= function(_0x5727x16,_0x5727xc){return JscriptyProject[_0xbefd[21]]({where:{id:_0x5727x16[_0xbefd[24]][_0xbefd[107]]},individualHooks:true})[_0xbefd[19]](function(){return _0x5727xc[_0xbefd[28]](204)})[_0xbefd[23]](function(_0x5727xd){return handleError(_0x5727xc,_0x5727xd)})};exports[_0xbefd[108]]= function(_0x5727x16,_0x5727xc,_0x5727x17){return JscriptyProject[_0xbefd[31]](_0x5727x16[_0xbefd[30]][_0xbefd[29]])[_0xbefd[19]](function(_0x5727x19){if(!_0x5727x19){return _0x5727xc[_0xbefd[28]](404)};_0x5727xc[_0xbefd[113]]({"\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E":_0xbefd[109]+ _0x5727x16[_0xbefd[24]][_0xbefd[110]]+ _0xbefd[111],"\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65":_0xbefd[112]});return _0x5727xc[_0xbefd[15]](_0x5727x19[_0xbefd[114]])})[_0xbefd[23]](function(_0x5727xd){return handleError(_0x5727xc,_0x5727xd)})} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/jscripty_project/jscripty_project.events.js b/server/api/jscripty_project/jscripty_project.events.js index 5c1b739..66dc905 100644 --- a/server/api/jscripty_project/jscripty_project.events.js +++ b/server/api/jscripty_project/jscripty_project.events.js @@ -1 +1 @@ -var _0x2754=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4A\x73\x63\x72\x69\x70\x74\x79\x50\x72\x6F\x6A\x65\x63\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x2754[0];const EventEmitter=require(_0x2754[1]);const JscriptyProject=require(_0x2754[3])[_0x2754[2]];var JscriptyProjectEvents= new EventEmitter();JscriptyProjectEvents[_0x2754[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x2754[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x2754[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x2754[6]};for(var e in events){var event=events[e];JscriptyProject[_0x2754[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x65e0x8,_0x65e0x9,_0x65e0xa){JscriptyProjectEvents[_0x2754[10]](event+ _0x2754[8]+ _0x65e0x8[_0x2754[9]],_0x65e0x8);JscriptyProjectEvents[_0x2754[10]](event,_0x65e0x8);_0x65e0xa(null)}}module[_0x2754[11]]= JscriptyProjectEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/jscripty_project/jscripty_project.socket.js b/server/api/jscripty_project/jscripty_project.socket.js index a85d50c..66dc905 100644 --- a/server/api/jscripty_project/jscripty_project.socket.js +++ b/server/api/jscripty_project/jscripty_project.socket.js @@ -1 +1 @@ -var _0x3b92=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6A\x73\x63\x72\x69\x70\x74\x79\x5F\x70\x72\x6F\x6A\x65\x63\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6A\x73\x63\x72\x69\x70\x74\x79\x5F\x70\x72\x6F\x6A\x65\x63\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x3b92[0];const JscriptyProjectEvents=require(_0x3b92[1]);var events=[_0x3b92[2],_0x3b92[3]];exports[_0x3b92[4]]= function(_0x937fx3){for(var _0x937fx4=0,_0x937fx5=events[_0x3b92[5]];_0x937fx4< _0x937fx5;_0x937fx4++){var _0x937fx6=events[_0x937fx4];var _0x937fx7=createListener(_0x3b92[6]+ _0x937fx6,_0x937fx3);JscriptyProjectEvents[_0x3b92[7]](_0x937fx6,_0x937fx7);_0x937fx3[_0x3b92[7]](_0x3b92[8],removeListener(_0x937fx6,_0x937fx7))}};function createListener(_0x937fx6,_0x937fx3){return function(_0x937fx9){_0x937fx3[_0x3b92[9]](_0x937fx6,_0x937fx9)}}function removeListener(_0x937fx6,_0x937fx7){return function(){JscriptyProjectEvents[_0x3b92[10]](_0x937fx6,_0x937fx7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/license/index.js b/server/api/license/index.js index ada702d..66dc905 100644 --- a/server/api/license/index.js +++ b/server/api/license/index.js @@ -1 +1 @@ -var _0x8095=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x72\x65\x71\x75\x65\x73\x74","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x72\x65\x71\x75\x65\x73\x74","\x70\x6F\x73\x74","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x8095[0];var express=require(_0x8095[1]);var auth=require(_0x8095[2]);var controller=require(_0x8095[3]);var router=express.Router();router[_0x8095[6]](_0x8095[4],controller[_0x8095[5]]);router[_0x8095[10]](_0x8095[7],auth[_0x8095[8]](),controller[_0x8095[9]]);router[_0x8095[14]](_0x8095[4],auth[_0x8095[8]](),auth[_0x8095[12]]([18],[_0x8095[11]]),controller[_0x8095[13]]);module[_0x8095[15]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/license/license.controller.js b/server/api/license/license.controller.js index b4f0606..66dc905 100644 --- a/server/api/license/license.controller.js +++ b/server/api/license/license.controller.js @@ -1 +1 @@ -var _0x87fa=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x63\x72\x79\x70\x74\x6F","\x6D\x6F\x6D\x65\x6E\x74","\x72\x65\x71\x75\x65\x73\x74\x2D\x70\x72\x6F\x6D\x69\x73\x65","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x4C\x69\x63\x65\x6E\x73\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x53\x65\x74\x74\x69\x6E\x67","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x64\x65\x6D\x6F\x4C\x69\x63\x65\x6E\x73\x65","\x74\x6F\x6B\x65\x6E","\x6C\x69\x63\x65\x6E\x73\x65","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x67\x65\x74\x55\x75\x69\x64","\x6A\x73\x6F\x6E","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x65\x6E\x64","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x6D\x65\x72\x67\x65","\x67\x65\x74\x4C\x69\x63\x65\x6E\x73\x65","\x66\x69\x6E\x64\x42\x79\x49\x64","\x72\x65\x71\x75\x65\x73\x74","\x50\x4F\x53\x54","\x70\x72\x6F\x76\x69\x73\x69\x6F\x6E\x69\x6E\x67","\x2F\x73\x65\x72\x76\x65\x72\x73\x2F","\x2F\x72\x65\x71\x75\x65\x73\x74","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x69\x64","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x73\x61\x76\x65"];_0x87fa[0];var _=require(_0x87fa[1]);var crypto=require(_0x87fa[2]);var moment=require(_0x87fa[3]);var rp=require(_0x87fa[4]);var logger=require(_0x87fa[6])(_0x87fa[5]);var config=require(_0x87fa[7]);var license=require(_0x87fa[8]);var License=require(_0x87fa[10])[_0x87fa[9]];var Setting=require(_0x87fa[10])[_0x87fa[11]];function handleError(_0x16fbxb,_0x16fbxc){_0x16fbxc= _0x16fbxc|| 500;return function(_0x16fbxd){logger[_0x87fa[13]](_0x16fbxd[_0x87fa[12]]);_0x16fbxb[_0x87fa[15]](_0x16fbxc)[_0x87fa[14]](_0x16fbxd)}}function handleEntityNotFound(_0x16fbxb){return function(_0x16fbxf){if(!_0x16fbxf){_0x16fbxf= {dataValues:{license:license[_0x87fa[16]]}};_0x16fbxf[_0x87fa[19]][_0x87fa[18]][_0x87fa[17]]= license[_0x87fa[20]]();_0x16fbxb[_0x87fa[15]](201)[_0x87fa[21]](_0x16fbxf);return null};return _0x16fbxf}}function saveUpdates(_0x16fbx11){return function(_0x16fbxf){return _0x16fbxf[_0x87fa[23]](_0x16fbx11)[_0x87fa[22]](function(_0x16fbx12){return _0x16fbx12})}}function removeEntity(_0x16fbxb){return function(_0x16fbxf){if(_0x16fbxf){return _0x16fbxf[_0x87fa[25]]()[_0x87fa[22]](function(){_0x16fbxb[_0x87fa[15]](204)[_0x87fa[24]]()})}}}exports[_0x87fa[26]]= function(_0x16fbx14,_0x16fbxb,_0x16fbx15){var _0x16fbx16;return Setting[_0x87fa[30]](1,{raw:true})[_0x87fa[22]](function(_0x16fbx18){_0x16fbx16= _0x16fbx18;return license[_0x87fa[29]]()})[_0x87fa[22]](function(_0x16fbx17){_[_0x87fa[28]](_0x16fbx17,_0x16fbx16);_0x16fbxb[_0x87fa[15]](200)[_0x87fa[21]](_0x16fbx17)})[_0x87fa[27]](handleError(_0x16fbxb))};exports[_0x87fa[31]]= function(_0x16fbx14,_0x16fbxb){return rp({method:_0x87fa[32],uri:config[_0x87fa[33]]+ _0x87fa[34]+ license[_0x87fa[20]]()+ _0x87fa[35],body:_0x16fbx14[_0x87fa[36]],json:true})[_0x87fa[22]](function(_0x16fbx19){_0x16fbxb[_0x87fa[15]](201)[_0x87fa[14]](_0x16fbx19)})[_0x87fa[27]](handleError(_0x16fbxb))};exports[_0x87fa[37]]= function(_0x16fbx14,_0x16fbxb){if(_0x16fbx14[_0x87fa[36]][_0x87fa[38]]){delete _0x16fbx14[_0x87fa[36]][_0x87fa[38]]};return License[_0x87fa[30]](1)[_0x87fa[22]](function(license){if(!license){return _0x16fbxb[_0x87fa[39]](404)};var _0x16fbx12=_[_0x87fa[28]](license,_0x16fbx14[_0x87fa[36]]);return _0x16fbx12[_0x87fa[40]]()})[_0x87fa[22]](function(license){return _0x16fbxb[_0x87fa[15]](200)[_0x87fa[14]](license)})[_0x87fa[27]](handleError(_0x16fbxb))} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/list/index.js b/server/api/list/index.js index f43a1df..66dc905 100644 --- a/server/api/list/index.js +++ b/server/api/list/index.js @@ -1 +1 @@ -var _0x4437=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x6C\x69\x73\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x43\x6D","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64\x2F\x63\x75\x73\x74\x6F\x6D\x66\x69\x65\x6C\x64\x73\x2F\x61\x6C\x6C","\x67\x65\x74\x41\x6C\x6C\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64\x73","\x2F\x3A\x6C\x69\x73\x74\x49\x64\x2F\x63\x75\x73\x74\x6F\x6D\x66\x69\x65\x6C\x64\x73\x2F\x3A\x69\x64","\x73\x68\x6F\x77\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64","\x2F\x3A\x69\x64\x2F\x63\x75\x73\x74\x6F\x6D\x66\x69\x65\x6C\x64\x73","\x67\x65\x74\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64\x73","\x2F\x3A\x69\x64\x2F\x61\x67\x65\x6E\x74\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x2F\x3A\x69\x64\x2F\x63\x6F\x6E\x74\x61\x63\x74\x73","\x67\x65\x74\x43\x6F\x6E\x74\x61\x63\x74\x73","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x67\x65\x74\x43\x6F\x6E\x74\x61\x63\x74","\x63\x72\x65\x61\x74\x65\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64","\x75\x70\x64\x61\x74\x65\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64","\x70\x75\x74","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x64\x65\x6C\x65\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x73\x74\x72\x6F\x79","\x72\x65\x6D\x6F\x76\x65\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64","\x2F\x3A\x6C\x69\x73\x74\x49\x64\x2F\x63\x75\x73\x74\x6F\x6D\x66\x69\x65\x6C\x64\x73","\x72\x65\x6D\x6F\x76\x65\x41\x6C\x6C\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64\x73","\x65\x78\x70\x6F\x72\x74\x73"];_0x4437[0];var express=require(_0x4437[1]);var controller=require(_0x4437[2]);var auth=require(_0x4437[3]);var license=require(_0x4437[4]);var router=express.Router();router[_0x4437[12]](_0x4437[5],auth[_0x4437[6]](),license[_0x4437[7]](),auth[_0x4437[10]]([5,16],[_0x4437[8],_0x4437[9]]),controller[_0x4437[11]]);router[_0x4437[12]](_0x4437[13],auth[_0x4437[6]](),license[_0x4437[7]](),auth[_0x4437[10]]([5],[_0x4437[8],_0x4437[9]]),controller[_0x4437[14]]);router[_0x4437[12]](_0x4437[15],auth[_0x4437[6]](),license[_0x4437[7]](),auth[_0x4437[10]]([5],[_0x4437[8],_0x4437[9]]),controller[_0x4437[16]]);router[_0x4437[12]](_0x4437[17],auth[_0x4437[6]](),license[_0x4437[7]](),auth[_0x4437[10]]([5],[_0x4437[8],_0x4437[9]]),controller[_0x4437[18]]);router[_0x4437[12]](_0x4437[19],auth[_0x4437[6]](),license[_0x4437[7]](),auth[_0x4437[10]]([5],[_0x4437[8],_0x4437[9]]),controller[_0x4437[20]]);router[_0x4437[12]](_0x4437[21],auth[_0x4437[6]](),license[_0x4437[7]](),auth[_0x4437[10]]([5],[_0x4437[8],_0x4437[9]]),controller[_0x4437[22]]);router[_0x4437[12]](_0x4437[23],auth[_0x4437[6]](),license[_0x4437[7]](),auth[_0x4437[10]]([5],[_0x4437[8],_0x4437[9]]),controller[_0x4437[24]]);router[_0x4437[26]](_0x4437[5],auth[_0x4437[6]](),license[_0x4437[7]](),auth[_0x4437[10]]([5],[_0x4437[8]]),controller[_0x4437[25]]);router[_0x4437[26]](_0x4437[19],auth[_0x4437[6]](),license[_0x4437[7]](),auth[_0x4437[10]]([5],[_0x4437[8]]),controller[_0x4437[27]]);router[_0x4437[26]](_0x4437[21],auth[_0x4437[6]](),license[_0x4437[7]](),auth[_0x4437[10]]([5],[_0x4437[8],_0x4437[9]]),controller[_0x4437[28]]);router[_0x4437[26]](_0x4437[17],auth[_0x4437[6]](),license[_0x4437[7]](),auth[_0x4437[10]]([5],[_0x4437[8]]),controller[_0x4437[29]]);router[_0x4437[31]](_0x4437[15],auth[_0x4437[6]](),license[_0x4437[7]](),auth[_0x4437[10]]([5],[_0x4437[8]]),controller[_0x4437[30]]);router[_0x4437[31]](_0x4437[23],auth[_0x4437[6]](),license[_0x4437[7]](),auth[_0x4437[10]]([5],[_0x4437[8]]),controller[_0x4437[32]]);router[_0x4437[34]](_0x4437[19],auth[_0x4437[6]](),license[_0x4437[7]](),auth[_0x4437[10]]([5],[_0x4437[8]]),controller[_0x4437[33]]);router[_0x4437[34]](_0x4437[5],auth[_0x4437[6]](),license[_0x4437[7]](),auth[_0x4437[10]]([5],[_0x4437[8]]),controller[_0x4437[35]]);router[_0x4437[34]](_0x4437[23],auth[_0x4437[6]](),license[_0x4437[7]](),auth[_0x4437[10]]([5],[_0x4437[8]]),controller[_0x4437[36]]);router[_0x4437[34]](_0x4437[15],auth[_0x4437[6]](),license[_0x4437[7]](),auth[_0x4437[10]]([5],[_0x4437[8]]),controller[_0x4437[37]]);router[_0x4437[34]](_0x4437[38],auth[_0x4437[6]](),license[_0x4437[7]](),auth[_0x4437[10]]([5],[_0x4437[8]]),controller[_0x4437[39]]);module[_0x4437[40]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/list/list.controller.js b/server/api/list/list.controller.js index 8ca4f62..66dc905 100644 --- a/server/api/list/list.controller.js +++ b/server/api/list/list.controller.js @@ -1 +1 @@ -var _0xe58c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x62\x6C\x75\x65\x62\x69\x72\x64","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4C\x69\x73\x74","\x54\x64\x55\x70\x64\x61\x74\x65","\x55\x73\x65\x72\x48\x61\x73\x4C\x69\x73\x74","\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64","\x43\x6F\x6E\x74\x61\x63\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x69\x64","\x6D\x61\x70","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x63\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64\x73","\x73\x63\x6F\x70\x65","\x67\x65\x74\x4C\x69\x73\x74\x73","\x75\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65","\x67\x65\x74\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64\x73","\x70\x61\x72\x61\x6D\x73","\x67\x65\x74\x41\x6C\x6C\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64\x73","\x67\x65\x74\x43\x6F\x6E\x74\x61\x63\x74","\x62\x6F\x64\x79","\x73\x70\x72\x65\x61\x64","\x66\x69\x6E\x64\x4F\x72\x43\x72\x65\x61\x74\x65","\x67\x65\x74\x43\x6F\x6E\x74\x61\x63\x74\x73","\x70\x68\x6F\x6E\x65","\x6D\x6F\x62\x69\x6C\x65","\x66\x61\x78","\x65\x6D\x61\x69\x6C","\x77\x68\x65\x72\x65","\x25","\x66\x6F\x72\x49\x6E","\x6C\x65\x6E\x67\x74\x68","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x75\x70\x64\x61\x74\x65\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64","\x73\x61\x76\x65","\x63\x72\x65\x61\x74\x65\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64","\x4C\x69\x73\x74\x49\x64","\x41\x4C\x54\x45\x52\x20\x54\x41\x42\x4C\x45\x20\x63\x6D\x5F\x63\x6F\x6E\x74\x61\x63\x74\x73\x20\x41\x44\x44\x20\x43\x4F\x4C\x55\x4D\x4E\x20\x25\x73\x20\x56\x41\x52\x43\x48\x41\x52\x28\x32\x35\x35\x29","\x6E\x61\x6D\x65","\x66\x6F\x72\x6D\x61\x74","\x63\x66\x5F","\x63\x72\x65\x61\x74\x65","\x73\x68\x6F\x77","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x64\x4D\x65\x73\x73\x61\x67\x65","\x4D\x45\x53\x53\x41\x47\x45\x5F\x45\x58\x49\x53\x54\x5F\x4C\x49\x53\x54","\x6D\x65\x73\x73\x61\x67\x65","\x54\x68\x65\x20\x6C\x69\x73\x74\x20\x6E\x61\x6D\x65\x20\x61\x6C\x72\x65\x61\x64\x79\x20\x65\x78\x69\x73\x74\x73","\x6C\x69\x73\x74\x2F\x69\x6E\x73\x65\x72\x74","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65","\x6C\x69\x73\x74\x2F\x75\x70\x64\x61\x74\x65","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x67\x65\x74\x55\x73\x65\x72\x73","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x61\x67\x65\x6E\x74\x73","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x61\x6C\x6C","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x41\x4C\x54\x45\x52\x20\x54\x41\x42\x4C\x45\x20\x63\x6D\x5F\x63\x6F\x6E\x74\x61\x63\x74\x73\x20\x44\x52\x4F\x50\x20\x43\x4F\x4C\x55\x4D\x4E\x20\x25\x73","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x6B\x65\x79\x73","\x64\x65\x73\x63\x72\x69\x62\x65","\x72\x65\x6D\x6F\x76\x65\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64","\x72\x65\x6D\x6F\x76\x65\x41\x6C\x6C\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0xe58c[0];var _=require(_0xe58c[1]);var util=require(_0xe58c[2]);var BPromise=require(_0xe58c[3]);var logger=require(_0xe58c[5])(_0xe58c[4]);var User=require(_0xe58c[7])[_0xe58c[6]];var List=require(_0xe58c[7])[_0xe58c[8]];var TdUpdate=require(_0xe58c[7])[_0xe58c[9]];var UserHasList=require(_0xe58c[7])[_0xe58c[10]];var CustomField=require(_0xe58c[7])[_0xe58c[11]];var Contact=require(_0xe58c[7])[_0xe58c[12]];var Util=require(_0xe58c[13]);var sequelize=require(_0xe58c[7])[_0xe58c[14]];exports[_0xe58c[15]]= function(_0x8550xd,_0x8550xe,_0x8550xf){switch(_0x8550xd[_0xe58c[29]][_0xe58c[32]]){case _0xe58c[31]:return User[_0xe58c[30]](_0x8550xd[_0xe58c[29]][_0xe58c[20]])[_0xe58c[19]](function(_0x8550x14){return _0x8550x14[_0xe58c[28]]()})[_0xe58c[19]](function(_0x8550x12){var _0x8550x13=_[_0xe58c[21]](_0x8550x12,_0xe58c[20]);return List[_0xe58c[27]](_0xe58c[26])[_0xe58c[25]](_[_0xe58c[24]](Util[_0xe58c[23]](_0x8550xd[_0xe58c[22]],{$or:[{defaultEntry:true},{id:_0x8550x13}]}),{distinct:true}))})[_0xe58c[19]](function(_0x8550x11){_0x8550xe[_0xe58c[18]](200)[_0xe58c[17]](_0x8550x11)})[_0xe58c[16]](function(_0x8550x10){return handleError(_0x8550xe,_0x8550x10)});default:return List[_0xe58c[27]](_0xe58c[26])[_0xe58c[25]](_[_0xe58c[24]](Util[_0xe58c[23]](_0x8550xd[_0xe58c[22]]),{distinct:true}))[_0xe58c[19]](function(_0x8550x11){_0x8550xe[_0xe58c[18]](200)[_0xe58c[17]](_0x8550x11)})[_0xe58c[16]](function(_0x8550x10){return handleError(_0x8550xe,_0x8550x10)})}};exports[_0xe58c[33]]= function(_0x8550xd,_0x8550xe){return CustomField[_0xe58c[25]]({where:{ListId:_0x8550xd[_0xe58c[34]][_0xe58c[20]]}})[_0xe58c[19]](function(_0x8550x15){return _0x8550xe[_0xe58c[18]](200)[_0xe58c[17]](_0x8550x15)})[_0xe58c[16]](function(_0x8550x10){return handleError(_0x8550xe,_0x8550x10)})};exports[_0xe58c[35]]= function(_0x8550xd,_0x8550xe){return CustomField[_0xe58c[25]]({where:{$or:[{ListId:_0x8550xd[_0xe58c[34]][_0xe58c[20]]},{ListId:null}]}})[_0xe58c[19]](function(_0x8550x15){return _0x8550xe[_0xe58c[18]](200)[_0xe58c[17]](_0x8550x15)})[_0xe58c[16]](function(_0x8550x10){return handleError(_0x8550xe,_0x8550x10)})};exports[_0xe58c[36]]= function(_0x8550xd,_0x8550xe){var _0x8550x16=_[_0xe58c[24]](_0x8550xd[_0xe58c[37]],{ListId:_0x8550xd[_0xe58c[34]][_0xe58c[20]]});return Contact[_0xe58c[39]]({where:_0x8550x16,default:_0x8550xd[_0xe58c[37]]})[_0xe58c[38]](function(_0x8550x17){return _0x8550xe[_0xe58c[18]](200)[_0xe58c[17]](_0x8550x17)})[_0xe58c[16]](function(_0x8550x10){return handleError(_0x8550xe,_0x8550x10)})};exports[_0xe58c[40]]= function(_0x8550xd,_0x8550xe){var _0x8550x18={where:{ListId:_0x8550xd[_0xe58c[34]][_0xe58c[20]]},attributes:[_0xe58c[41],_0xe58c[42],_0xe58c[43],_0xe58c[44]]};_[_0xe58c[47]](_0x8550xd[_0xe58c[22]],function(_0x8550x19,_0x8550x1a){_0x8550x18[_0xe58c[45]][_0x8550x1a]= {$like:_0xe58c[46]+ _0x8550x19+ _0xe58c[46]}});return Contact[_0xe58c[49]](_0x8550x18)[_0xe58c[19]](function(_0x8550x1b){return _0x8550xe[_0xe58c[18]](200)[_0xe58c[17]]({rows:_0x8550x1b,length:_0x8550x1b[_0xe58c[48]]})})[_0xe58c[16]](function(_0x8550x10){return handleError(_0x8550xe,_0x8550x10)})};exports[_0xe58c[50]]= function(_0x8550xd,_0x8550xe){return CustomField[_0xe58c[30]](_0x8550xd[_0xe58c[34]][_0xe58c[20]])[_0xe58c[19]](function(_0x8550x1c){if(!_0x8550x1c){return _0x8550xe[_0xe58c[51]](404)};return _0x8550xe[_0xe58c[18]](200)[_0xe58c[17]](_0x8550x1c)})[_0xe58c[16]](function(_0x8550x10){return handleError(_0x8550xe,_0x8550x10)})};exports[_0xe58c[52]]= function(_0x8550xd,_0x8550xe){return CustomField[_0xe58c[30]](_0x8550xd[_0xe58c[34]][_0xe58c[20]])[_0xe58c[19]](function(_0x8550x1c){if(!_0x8550x1c){return _0x8550xe[_0xe58c[51]](404)};var _0x8550x1d=_[_0xe58c[24]](_0x8550x1c,_0x8550xd[_0xe58c[37]]);return _0x8550x1d[_0xe58c[53]]()})[_0xe58c[19]](function(_0x8550x1c){return _0x8550xe[_0xe58c[18]](200)[_0xe58c[17]](_0x8550x1c)})[_0xe58c[16]](function(_0x8550x10){return handleError(_0x8550xe,_0x8550x10)})};exports[_0xe58c[54]]= function(_0x8550xd,_0x8550xe){var _0x8550x1e;_0x8550xd[_0xe58c[37]][_0xe58c[55]]= _0x8550xd[_0xe58c[34]][_0xe58c[20]];return CustomField[_0xe58c[60]](_0x8550xd[_0xe58c[37]])[_0xe58c[19]](function(_0x8550x1c){_0x8550x1e= _0x8550x1c;_0x8550x1c[_0xe58c[57]]= _0xe58c[59]+ _0x8550x1c[_0xe58c[20]];return _0x8550x1c[_0xe58c[53]]()})[_0xe58c[19]](function(){return sequelize[_0xe58c[22]](util[_0xe58c[58]](_0xe58c[56],_0x8550x1e[_0xe58c[57]]))})[_0xe58c[19]](function(){return _0x8550xe[_0xe58c[51]](201)})[_0xe58c[16]](function(_0x8550x10){return handleError(_0x8550xe,_0x8550x10)})};exports[_0xe58c[61]]= function(_0x8550xd,_0x8550xe){return List[_0xe58c[30]](_0x8550xd[_0xe58c[34]][_0xe58c[20]])[_0xe58c[19]](function(_0x8550x1f){if(!_0x8550x1f){return _0x8550xe[_0xe58c[51]](404)};return _0x8550xe[_0xe58c[17]](_0x8550x1f)})[_0xe58c[16]](function(_0x8550x10){return handleError(_0x8550xe,_0x8550x10)})};exports[_0xe58c[60]]= function(_0x8550xd,_0x8550xe){var _0x8550x20;return sequelize[_0xe58c[67]](function(_0x8550x21){return List[_0xe58c[60]](_0x8550xd[_0xe58c[37]])[_0xe58c[19]](function(_0x8550x1f){_0x8550x20= _0x8550x1f;return TdUpdate[_0xe58c[60]]({action:_0xe58c[66],listId:_0x8550x20[_0xe58c[20]]})})[_0xe58c[19]](function(){return _0x8550xe[_0xe58c[18]](201)[_0xe58c[17]](_0x8550x20)})})[_0xe58c[16]](sequelize.UniqueConstraintError,function(_0x8550x10){_0x8550x10[_0xe58c[62]]= _0xe58c[63];_0x8550x10[_0xe58c[64]]= _0xe58c[65];return _0x8550xe[_0xe58c[18]](500)[_0xe58c[17]](_0x8550x10)})[_0xe58c[16]](function(_0x8550x10){return handleError(_0x8550xe,_0x8550x10)})};exports[_0xe58c[68]]= function(_0x8550xd,_0x8550xe){var _0x8550x20;return List[_0xe58c[30]](_0x8550xd[_0xe58c[34]][_0xe58c[20]])[_0xe58c[19]](function(_0x8550x1f){if(!_0x8550x1f){return _0x8550xe[_0xe58c[51]](404)};if(_0x8550xd[_0xe58c[37]][_0xe58c[20]]){delete _0x8550xd[_0xe58c[37]][_0xe58c[20]]};var _0x8550x1d=_[_0xe58c[24]](_0x8550x1f,_0x8550xd[_0xe58c[37]]);return _0x8550x1d[_0xe58c[53]]()})[_0xe58c[19]](function(_0x8550x1f){_0x8550x20= _0x8550x1f;return TdUpdate[_0xe58c[60]]({action:_0xe58c[69],listId:_0x8550x20[_0xe58c[20]]})})[_0xe58c[19]](function(){return _0x8550xe[_0xe58c[18]](200)[_0xe58c[17]](_0x8550x20)})[_0xe58c[16]](sequelize.UniqueConstraintError,function(_0x8550x10){_0x8550x10[_0xe58c[62]]= _0xe58c[63];_0x8550x10[_0xe58c[64]]= _0xe58c[65];return _0x8550xe[_0xe58c[18]](500)[_0xe58c[17]](_0x8550x10)})[_0xe58c[16]](function(_0x8550x10){return handleError(_0x8550xe,_0x8550x10)})};exports[_0xe58c[70]]= function(_0x8550xd,_0x8550xe){return List[_0xe58c[30]](_0x8550xd[_0xe58c[34]][_0xe58c[20]])[_0xe58c[19]](function(_0x8550x1f){if(!_0x8550x1f){return _0x8550xe[_0xe58c[51]](404)};return _0x8550x1f[_0xe58c[72]]({where:{role:_0xe58c[31]},attributes:[_0xe58c[20],_0xe58c[57],_0xe58c[71],_0xe58c[44]]})})[_0xe58c[19]](function(_0x8550x22){return _0x8550xe[_0xe58c[18]](200)[_0xe58c[17]]({rows:_0x8550x22,count:_0x8550x22[_0xe58c[48]]})})[_0xe58c[16]](function(_0x8550x10){return handleError(_0x8550xe,_0x8550x10)})};exports[_0xe58c[73]]= function(_0x8550xd,_0x8550xe,_0x8550xf){return User[_0xe58c[49]]({where:{id:_0x8550xd[_0xe58c[37]][_0xe58c[75]]}})[_0xe58c[19]](function(_0x8550x23){var _0x8550x24=_[_0xe58c[21]](_0x8550x23,function(_0x8550x25){return {list:_0x8550xd[_0xe58c[34]][_0xe58c[20]],membername:_0x8550x25[_0xe58c[57]],UserId:_0x8550x25[_0xe58c[20]]}});return UserHasList[_0xe58c[74]](_0x8550x24,{individualHooks:true})})[_0xe58c[19]](function(){return _0x8550xe[_0xe58c[51]](200)})[_0xe58c[16]](function(_0x8550x10){return handleError(_0x8550x10)})};exports[_0xe58c[76]]= function(_0x8550xd,_0x8550xe,_0x8550xf){return UserHasList[_0xe58c[77]]({where:{UserId:_0x8550xd[_0xe58c[22]][_0xe58c[75]],list:_0x8550xd[_0xe58c[34]][_0xe58c[20]]},individualHooks:true})[_0xe58c[19]](function(){return _0x8550xe[_0xe58c[51]](202)})[_0xe58c[16]](function(_0x8550x10){return handleError(_0x8550x10)})};exports[_0xe58c[77]]= function(_0x8550xd,_0x8550xe){return destroyList(_0x8550xd[_0xe58c[34]][_0xe58c[20]],_0x8550xe)};exports[_0xe58c[78]]= function(_0x8550xd,_0x8550xe){return destroyList(_0x8550xd[_0xe58c[22]][_0xe58c[79]],_0x8550xe)};function destroyList(_0x8550x27,_0x8550xe){return delCf(_0x8550x27,_0x8550xe)[_0xe58c[80]]()[_0xe58c[19]](function(){return List[_0xe58c[77]]({where:{id:_0x8550x27},individualHooks:true})})[_0xe58c[19]](function(){return _0x8550xe[_0xe58c[51]](204)})[_0xe58c[16]](function(_0x8550x10){return handleError(_0x8550xe,_0x8550x10)})}function delCf(_0x8550x27,_0x8550xe){var _0x8550x29;return CustomField[_0xe58c[49]]({where:{ListId:_0x8550x27}})[_0xe58c[19]](function(_0x8550x2e){if(!_0x8550x2e){return _0x8550xe[_0xe58c[51]](404)};_0x8550x29= _0x8550x2e;return CustomField[_0xe58c[77]]({where:{id:_0x8550x27}})})[_0xe58c[19]](function(){return Contact[_0xe58c[86]]()})[_0xe58c[19]](function(_0x8550x2d){return _[_0xe58c[85]](_0x8550x2d)})[_0xe58c[19]](function(_0x8550x2a){var _0x8550x2b=[];_[_0xe58c[84]](_0x8550x29,function(_0x8550x2c){if(_[_0xe58c[81]](_0x8550x2a,_0x8550x2c[_0xe58c[57]])){_0x8550x2b[_0xe58c[83]](sequelize[_0xe58c[22]](util[_0xe58c[58]](_0xe58c[82],_0x8550x2c[_0xe58c[57]])))}});return _0x8550x2b})}exports[_0xe58c[87]]= function(_0x8550xd,_0x8550xe){var _0x8550x2f;return CustomField[_0xe58c[30]](_0x8550xd[_0xe58c[34]][_0xe58c[20]])[_0xe58c[19]](function(_0x8550x30){if(!_0x8550x30){return _0x8550xe[_0xe58c[51]](404)};_0x8550x2f= _0x8550x30;return CustomField[_0xe58c[77]]({where:{id:_0x8550xd[_0xe58c[34]][_0xe58c[20]]}})})[_0xe58c[19]](function(){return Contact[_0xe58c[86]]()})[_0xe58c[19]](function(_0x8550x2d){return _[_0xe58c[85]](_0x8550x2d)})[_0xe58c[19]](function(_0x8550x2a){if(_[_0xe58c[81]](_0x8550x2a,_0x8550x2f[_0xe58c[57]])){return sequelize[_0xe58c[22]](util[_0xe58c[58]](_0xe58c[82],_0x8550x2f[_0xe58c[57]]))}})[_0xe58c[19]](function(){return _0x8550xe[_0xe58c[51]](204)})[_0xe58c[16]](function(_0x8550x10){return handleError(_0x8550xe,_0x8550x10)})};exports[_0xe58c[88]]= function(_0x8550xd,_0x8550xe){var _0x8550x29;return CustomField[_0xe58c[49]]({where:{id:_0x8550xd[_0xe58c[22]][_0xe58c[79]]}})[_0xe58c[19]](function(_0x8550x2e){if(!_0x8550x2e){return _0x8550xe[_0xe58c[51]](404)};_0x8550x29= _0x8550x2e;return CustomField[_0xe58c[77]]({where:{id:_0x8550xd[_0xe58c[22]][_0xe58c[79]]}})})[_0xe58c[19]](function(){return Contact[_0xe58c[86]]()})[_0xe58c[19]](function(_0x8550x2d){return _[_0xe58c[85]](_0x8550x2d)})[_0xe58c[19]](function(_0x8550x2a){var _0x8550x2b=[];_0x8550x29[_0xe58c[84]](function(_0x8550x2c){if(_[_0xe58c[81]](_0x8550x2a,_0x8550x2c[_0xe58c[57]])){_0x8550x2b[_0xe58c[83]](sequelize[_0xe58c[22]](util[_0xe58c[58]](_0xe58c[82],_0x8550x2c[_0xe58c[57]])))}});return _0x8550x2b})[_0xe58c[80]]()[_0xe58c[19]](function(){return _0x8550xe[_0xe58c[51]](204)})[_0xe58c[16]](function(_0x8550x10){return handleError(_0x8550xe,_0x8550x10)})};function handleError(_0x8550xe,_0x8550x10){logger[_0xe58c[90]](_0x8550x10[_0xe58c[89]]);return _0x8550xe[_0xe58c[18]](500)[_0xe58c[17]](_0x8550x10)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/list/list.events.js b/server/api/list/list.events.js index 585247b..66dc905 100644 --- a/server/api/list/list.events.js +++ b/server/api/list/list.events.js @@ -1 +1 @@ -var _0xbf59=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4C\x69\x73\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xbf59[0];const EventEmitter=require(_0xbf59[1]);const List=require(_0xbf59[3])[_0xbf59[2]];var ListEvents= new EventEmitter();ListEvents[_0xbf59[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xbf59[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xbf59[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xbf59[6]};for(var e in events){var event=events[e];List[_0xbf59[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x7008x8,_0x7008x9,_0x7008xa){ListEvents[_0xbf59[10]](event+ _0xbf59[8]+ _0x7008x8[_0xbf59[9]],_0x7008x8);ListEvents[_0xbf59[10]](event,_0x7008x8);_0x7008xa(null)}}module[_0xbf59[11]]= ListEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/list/list.socket.js b/server/api/list/list.socket.js index 61ffbab..66dc905 100644 --- a/server/api/list/list.socket.js +++ b/server/api/list/list.socket.js @@ -1 +1 @@ -var _0x2fb5=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6C\x69\x73\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6C\x69\x73\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x2fb5[0];const ListEvents=require(_0x2fb5[1]);var events=[_0x2fb5[2],_0x2fb5[3]];exports[_0x2fb5[4]]= function(_0xbb68x3){for(var _0xbb68x4=0,_0xbb68x5=events[_0x2fb5[5]];_0xbb68x4< _0xbb68x5;_0xbb68x4++){var _0xbb68x6=events[_0xbb68x4];var _0xbb68x7=createListener(_0x2fb5[6]+ _0xbb68x6,_0xbb68x3);ListEvents[_0x2fb5[7]](_0xbb68x6,_0xbb68x7);_0xbb68x3[_0x2fb5[7]](_0x2fb5[8],removeListener(_0xbb68x6,_0xbb68x7))}};function createListener(_0xbb68x6,_0xbb68x3){return function(_0xbb68x9){_0xbb68x3[_0x2fb5[9]](_0xbb68x6,_0xbb68x9)}}function removeListener(_0xbb68x6,_0xbb68x7){return function(){ListEvents[_0x2fb5[10]](_0xbb68x6,_0xbb68x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_account/index.js b/server/api/mail_account/index.js index 13daaf9..66dc905 100644 --- a/server/api/mail_account/index.js +++ b/server/api/mail_account/index.js @@ -1 +1 @@ -var _0x1e62=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x6D\x61\x69\x6C\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x4D\x61\x69\x6C","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x73\x65\x72\x76\x69\x63\x65","\x73\x68\x6F\x77\x53\x65\x72\x76\x69\x63\x65","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x61\x63\x63\x6F\x75\x6E\x74\x2F\x3A\x61\x64\x64\x72\x65\x73\x73","\x73\x68\x6F\x77\x46\x72\x6F\x6D\x41\x64\x64\x72\x65\x73\x73","\x2F\x3A\x69\x64\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x2F\x3A\x69\x64\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73\x2F\x3A\x61\x70\x70\x49\x64","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x72\x6F\x6F\x6D\x73","\x67\x65\x74\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x73","\x2F\x3A\x69\x64\x2F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x67\x65\x74\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x63\x72\x65\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73\x2F\x3A\x64\x69\x73\x70\x49\x64","\x75\x70\x64\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x64\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x64\x65\x73\x74\x72\x6F\x79\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x65\x78\x70\x6F\x72\x74\x73"];_0x1e62[0];var express=require(_0x1e62[1]);var controller=require(_0x1e62[2]);var auth=require(_0x1e62[3]);var license=require(_0x1e62[4]);var router=express.Router();router[_0x1e62[13]](_0x1e62[5],license[_0x1e62[6]](),license[_0x1e62[7]](),auth[_0x1e62[8]](),auth[_0x1e62[11]]([9],[_0x1e62[9],_0x1e62[10]]),controller[_0x1e62[12]]);router[_0x1e62[13]](_0x1e62[14],license[_0x1e62[6]](),auth[_0x1e62[8]](),auth[_0x1e62[11]]([8,9],[_0x1e62[9]]),controller[_0x1e62[15]]);router[_0x1e62[13]](_0x1e62[16],license[_0x1e62[6]](),license[_0x1e62[7]](),auth[_0x1e62[8]](),auth[_0x1e62[11]]([9],[_0x1e62[9],_0x1e62[10]]),controller[_0x1e62[17]]);router[_0x1e62[13]](_0x1e62[18],license[_0x1e62[6]](),license[_0x1e62[7]](),auth[_0x1e62[8]](),auth[_0x1e62[11]]([9],[_0x1e62[9],_0x1e62[10]]),controller[_0x1e62[19]]);router[_0x1e62[13]](_0x1e62[20],license[_0x1e62[6]](),license[_0x1e62[7]](),auth[_0x1e62[8]](),auth[_0x1e62[11]]([9],[_0x1e62[9]]),controller[_0x1e62[21]]);router[_0x1e62[13]](_0x1e62[22],license[_0x1e62[6]](),license[_0x1e62[7]](),auth[_0x1e62[8]](),auth[_0x1e62[11]]([9],[_0x1e62[9]]),controller[_0x1e62[23]]);router[_0x1e62[13]](_0x1e62[24],license[_0x1e62[6]](),license[_0x1e62[7]](),auth[_0x1e62[8]](),auth[_0x1e62[11]]([9],[_0x1e62[9],_0x1e62[10]]),controller[_0x1e62[25]]);router[_0x1e62[13]](_0x1e62[26],license[_0x1e62[6]](),license[_0x1e62[7]](),auth[_0x1e62[8]](),auth[_0x1e62[11]]([9],[_0x1e62[9],_0x1e62[10]]),controller[_0x1e62[27]]);router[_0x1e62[29]](_0x1e62[5],license[_0x1e62[6]](),license[_0x1e62[7]](),auth[_0x1e62[8]](),auth[_0x1e62[11]]([9],[_0x1e62[9]]),controller[_0x1e62[28]]);router[_0x1e62[29]](_0x1e62[20],license[_0x1e62[6]](),license[_0x1e62[7]](),auth[_0x1e62[8]](),auth[_0x1e62[11]]([9],[_0x1e62[9]]),controller[_0x1e62[30]]);router[_0x1e62[29]](_0x1e62[26],license[_0x1e62[6]](),license[_0x1e62[7]](),auth[_0x1e62[8]](),auth[_0x1e62[11]]([9],[_0x1e62[9]]),controller[_0x1e62[31]]);router[_0x1e62[33]](_0x1e62[16],license[_0x1e62[6]](),license[_0x1e62[7]](),auth[_0x1e62[8]](),auth[_0x1e62[11]]([9],[_0x1e62[9]]),controller[_0x1e62[32]]);router[_0x1e62[33]](_0x1e62[20],license[_0x1e62[6]](),license[_0x1e62[7]](),auth[_0x1e62[8]](),auth[_0x1e62[11]]([9],[_0x1e62[9]]),controller[_0x1e62[34]]);router[_0x1e62[33]](_0x1e62[22],license[_0x1e62[6]](),license[_0x1e62[7]](),auth[_0x1e62[8]](),auth[_0x1e62[11]]([9],[_0x1e62[9]]),controller[_0x1e62[35]]);router[_0x1e62[33]](_0x1e62[36],license[_0x1e62[6]](),license[_0x1e62[7]](),auth[_0x1e62[8]](),auth[_0x1e62[11]]([9],[_0x1e62[9]]),controller[_0x1e62[37]]);router[_0x1e62[39]](_0x1e62[5],license[_0x1e62[6]](),license[_0x1e62[7]](),auth[_0x1e62[8]](),auth[_0x1e62[11]]([9],[_0x1e62[9]]),controller[_0x1e62[38]]);router[_0x1e62[39]](_0x1e62[16],license[_0x1e62[6]](),license[_0x1e62[7]](),auth[_0x1e62[8]](),auth[_0x1e62[11]]([9],[_0x1e62[9]]),controller[_0x1e62[40]]);router[_0x1e62[39]](_0x1e62[20],license[_0x1e62[6]](),license[_0x1e62[7]](),auth[_0x1e62[8]](),auth[_0x1e62[11]]([9],[_0x1e62[9]]),controller[_0x1e62[41]]);router[_0x1e62[39]](_0x1e62[22],license[_0x1e62[6]](),license[_0x1e62[7]](),auth[_0x1e62[8]](),auth[_0x1e62[11]]([9],[_0x1e62[9]]),controller[_0x1e62[42]]);router[_0x1e62[39]](_0x1e62[36],license[_0x1e62[6]](),license[_0x1e62[7]](),auth[_0x1e62[8]](),auth[_0x1e62[11]]([9],[_0x1e62[9]]),controller[_0x1e62[43]]);module[_0x1e62[44]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_account/mail_account.controller.js b/server/api/mail_account/mail_account.controller.js index c4064ee..66dc905 100644 --- a/server/api/mail_account/mail_account.controller.js +++ b/server/api/mail_account/mail_account.controller.js @@ -1 +1 @@ -var _0x1139=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x61\x73\x79\x6E\x63","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x4D\x61\x69\x6C\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x4D\x61\x69\x6C\x51\x75\x65\x75\x65","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x49\x6E","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x4F\x75\x74","\x4D\x61\x69\x6C\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x4D\x61\x69\x6C\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x49\x6E\x74\x65\x72\x76\x61\x6C","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x66\x61\x75\x6C\x74","\x73\x63\x6F\x70\x65","\x67\x65\x74\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x73\x75\x62\x6A\x65\x63\x74","\x66\x72\x6F\x6D","\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x74\x61\x67\x73","\x77\x61\x69\x74\x69\x6E\x67","\x6C\x61\x73\x74\x45\x76\x65\x6E\x74","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x75\x70\x64\x61\x74\x65\x64\x41\x74","\x69\x73\x41\x72\x72\x61\x79","\x6C\x65\x6E\x67\x74\x68","\x25","\x3B\x25","\x70\x75\x73\x68","\x24\x61\x6E\x64","\x77\x68\x65\x72\x65","\x6D\x65\x72\x67\x65","\x69\x6E\x63\x6C\x75\x64\x65","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x61\x67\x65\x6E\x74","\x66\x69\x6E\x64","\x55\x73\x65\x72\x49\x64","\x6D\x61\x70","\x71\x75\x65\x75\x65","\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x49\x64","\x69\x6E\x74\x65\x72\x73\x65\x63\x74\x69\x6F\x6E","\x75\x73\x65\x72","\x66\x69\x6E\x64\x41\x6C\x6C","\x67\x65\x74\x4D\x61\x69\x6C\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x67\x65\x74\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73","\x72\x6F\x6C\x65","\x67\x65\x74\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x67\x65\x74\x4D\x61\x69\x6C\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x73\x68\x6F\x77","\x73\x68\x6F\x77\x53\x65\x72\x76\x69\x63\x65","\x66\x69\x6E\x64\x4F\x6E\x65","\x73\x68\x6F\x77\x46\x72\x6F\x6D\x41\x64\x64\x72\x65\x73\x73","\x61\x64\x64\x72\x65\x73\x73","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x6E\x61\x6D\x65","\x6F\x6E\x6C\x69\x6E\x65","\x70\x72\x69\x6F\x72\x69\x74\x79\x20\x41\x53\x43","\x63\x72\x65\x61\x74\x65","\x68\x61\x6E\x64\x6C\x65\x55\x6E\x69\x71\x75\x65\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x65\x72\x72\x6F\x72\x4D\x61\x6E\x61\x67\x65\x72","\x62\x6F\x64\x79","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x70\x72\x69\x6F\x72\x69\x74\x79","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x6D\x61\x78","\x63\x72\x65\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x64\x69\x73\x70\x49\x64","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x66\x6F\x72\x45\x61\x63\x68","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x61\x70\x70\x49\x64","\x64\x65\x73\x74\x72\x6F\x79\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0x1139[0];var _=require(_0x1139[1]);var util=require(_0x1139[2]);var async=require(_0x1139[3]);var Util=require(_0x1139[4]);var logger=require(_0x1139[6])(_0x1139[5]);var sequelize=require(_0x1139[8])[_0x1139[7]];var User=require(_0x1139[8])[_0x1139[9]];var MailAttachment=require(_0x1139[8])[_0x1139[10]];var MailQueue=require(_0x1139[8])[_0x1139[11]];var MailRoom=require(_0x1139[8])[_0x1139[12]];var MailAccount=require(_0x1139[8])[_0x1139[13]];var MailServerIn=require(_0x1139[8])[_0x1139[14]];var MailServerOut=require(_0x1139[8])[_0x1139[15]];var MailApplication=require(_0x1139[8])[_0x1139[16]];var MailDisposition=require(_0x1139[8])[_0x1139[17]];var Interval=require(_0x1139[8])[_0x1139[18]];exports[_0x1139[19]]= function(_0x1999x11,_0x1999x12){return MailAccount[_0x1139[28]]({method:[_0x1139[27],_0x1999x11[_0x1139[24]]]})[_0x1139[26]](Util[_0x1139[25]](_0x1999x11[_0x1139[24]]))[_0x1139[23]](function(_0x1999x14){_0x1999x12[_0x1139[22]](200)[_0x1139[21]](_0x1999x14)})[_0x1139[20]](function(_0x1999x13){return handleError(_0x1999x12,_0x1999x13)})};exports[_0x1139[29]]= function(_0x1999x11,_0x1999x12,_0x1999x15){var _0x1999x16={include:[],where:{MailAccountId:_0x1999x11[_0x1139[31]][_0x1139[30]],$and:[]},attributes:[_0x1139[30],_0x1139[32],_0x1139[33],_0x1139[34],_0x1139[35],_0x1139[36],_0x1139[37],_0x1139[38],_0x1139[39],_0x1139[40]]};if(_0x1999x11[_0x1139[24]]){if(_0x1999x11[_0x1139[24]][_0x1139[36]]){if(_[_0x1139[41]](_0x1999x11[_0x1139[24]][_0x1139[36]])){for(var _0x1999x17=0;_0x1999x17< _0x1999x11[_0x1139[24]][_0x1139[36]][_0x1139[42]];_0x1999x17++){_0x1999x16[_0x1139[47]][_0x1139[46]][_0x1139[45]]({tags:{$like:_0x1139[43]+ _0x1999x11[_0x1139[24]][_0x1139[36]][_0x1999x17]+ _0x1139[44]}})}}else {_0x1999x16[_0x1139[47]][_0x1139[46]][_0x1139[45]]({tags:{$like:_0x1139[43]+ _0x1999x11[_0x1139[24]][_0x1139[36]]+ _0x1139[44]}})};delete _0x1999x11[_0x1139[24]][_0x1139[36]]};_[_0x1139[48]](_0x1999x16[_0x1139[47]],_0x1999x11[_0x1139[24]])};switch(_0x1999x11[_0x1139[58]][_0x1139[63]]){case _0x1139[51]:_0x1999x16[_0x1139[49]][_0x1139[45]]({model:User,attributes:[_0x1139[30]]});var _0x1999x18;var _0x1999x19;var _0x1999x1a;return User[_0x1139[61]](_0x1999x11[_0x1139[58]][_0x1139[30]])[_0x1139[23]](function(_0x1999x1f){if(_0x1999x1f){return _0x1999x1f[_0x1139[62]]()}else {return []}})[_0x1139[23]](function(_0x1999x1e){_0x1999x19= _[_0x1139[54]](_0x1999x1e,_0x1139[30]);return MailAccount[_0x1139[61]](_0x1999x11[_0x1139[31]][_0x1139[30]])})[_0x1139[23]](function(_0x1999x1b){if(!_0x1999x1b){return _0x1999x12[_0x1139[50]](404)};return _0x1999x1b[_0x1139[60]]({where:{$or:[{app:_0x1139[55]},{app:_0x1139[51]}]}})[_0x1139[23]](function(_0x1999x1c){_0x1999x18= _[_0x1139[54]](_[_0x1139[52]](_0x1999x1c,{"\x61\x70\x70":_0x1139[51]}),_0x1139[53]);_0x1999x1a= _[_0x1139[54]](_[_0x1139[52]](_0x1999x1c,{"\x61\x70\x70":_0x1139[55]}),_0x1139[56]);if(_[_0x1139[57]](_0x1999x19,_0x1999x1a)[_0x1139[42]]|| _[_0x1139[57]](_0x1999x18,[_0x1999x11[_0x1139[58]][_0x1139[30]]])[_0x1139[42]]){return MailRoom[_0x1139[59]](_0x1999x16)[_0x1139[23]](function(_0x1999x1d){return _0x1999x12[_0x1139[22]](200)[_0x1139[21]](_0x1999x1d)})[_0x1139[20]](function(_0x1999x13){return handleError(_0x1999x12,_0x1999x13)})}else {return _0x1999x12[_0x1139[22]](200)[_0x1139[21]]([])}})})[_0x1139[20]](function(_0x1999x13){return handleError(_0x1999x12,_0x1999x13)});default:return MailRoom[_0x1139[59]](_0x1999x16)[_0x1139[23]](function(_0x1999x1d){return _0x1999x12[_0x1139[22]](200)[_0x1139[21]](_0x1999x1d)})[_0x1139[20]](function(_0x1999x13){return handleError(_0x1999x12,_0x1999x13)})}};exports[_0x1139[64]]= function(_0x1999x11,_0x1999x12,_0x1999x15){return MailAccount[_0x1139[61]](_0x1999x11[_0x1139[31]][_0x1139[30]])[_0x1139[23]](function(_0x1999x21){if(!_0x1999x21){return _0x1999x12[_0x1139[50]](404)};return _0x1999x21[_0x1139[65]]()})[_0x1139[23]](function(_0x1999x20){return _0x1999x12[_0x1139[22]](200)[_0x1139[21]]({rows:_0x1999x20,count:_0x1999x20[_0x1139[42]]})})[_0x1139[20]](function(_0x1999x13){return handleError(_0x1999x12,_0x1999x13)})};exports[_0x1139[66]]= function(_0x1999x11,_0x1999x12,_0x1999x15){return MailAccount[_0x1139[28]](_0x1139[27])[_0x1139[61]](_0x1999x11[_0x1139[31]][_0x1139[30]])[_0x1139[23]](function(_0x1999x21){if(!_0x1999x21){return _0x1999x12[_0x1139[50]](404)};return _0x1999x12[_0x1139[21]](_0x1999x21)})[_0x1139[20]](function(_0x1999x13){return handleError(_0x1999x12,_0x1999x13)})};exports[_0x1139[67]]= function(_0x1999x11,_0x1999x12,_0x1999x15){return MailAccount[_0x1139[68]]({where:{service:true}})[_0x1139[23]](function(_0x1999x21){if(!_0x1999x21){return _0x1999x12[_0x1139[50]](404)};return _0x1999x12[_0x1139[21]](_0x1999x21)})[_0x1139[20]](function(_0x1999x13){return handleError(_0x1999x12,_0x1999x13)})};exports[_0x1139[69]]= function(_0x1999x11,_0x1999x12,_0x1999x15){return MailAccount[_0x1139[68]]({where:{address:_0x1999x11[_0x1139[31]][_0x1139[70]]}})[_0x1139[23]](function(_0x1999x21){if(!_0x1999x21){return _0x1999x12[_0x1139[50]](404)};return _0x1999x12[_0x1139[21]](_0x1999x21)})[_0x1139[20]](function(_0x1999x13){return handleError(_0x1999x12,_0x1999x13)})};exports[_0x1139[71]]= function(_0x1999x11,_0x1999x12,_0x1999x15){return MailAccount[_0x1139[28]](_0x1139[27])[_0x1139[61]](_0x1999x11[_0x1139[31]][_0x1139[30]])[_0x1139[23]](function(_0x1999x21){if(!_0x1999x21){return _0x1999x12[_0x1139[50]](404)};return _0x1999x21[_0x1139[60]](_[_0x1139[48]](Util[_0x1139[25]](_0x1999x11[_0x1139[24]]),{include:[{model:MailQueue,attributes:[_0x1139[30],_0x1139[72]]},{model:User,attributes:[_0x1139[30],_0x1139[72],_0x1139[73]]},{model:Interval,attributes:[_0x1139[30],_0x1139[72]]}],order:_0x1139[74]}))})[_0x1139[23]](function(_0x1999x22){return _0x1999x12[_0x1139[21]]({count:_0x1999x22[_0x1139[42]],rows:_0x1999x22})})[_0x1139[20]](function(_0x1999x13){return handleError(_0x1999x12,_0x1999x13)})};exports[_0x1139[75]]= function(_0x1999x11,_0x1999x12,_0x1999x15){return sequelize[_0x1139[79]](function(_0x1999x23){return MailAccount[_0x1139[75]](_0x1999x11[_0x1139[78]],{include:[{model:MailServerIn},{model:MailServerOut}],transaction:_0x1999x23})})[_0x1139[23]](function(_0x1999x21){return _0x1999x12[_0x1139[22]](201)[_0x1139[21]](_0x1999x21)})[_0x1139[20]](sequelize.UniqueConstraintError,function(_0x1999x13){return Util[_0x1139[77]][_0x1139[76]](_0x1999x12,_0x1999x13)})[_0x1139[20]](function(_0x1999x13){return handleError(_0x1999x12,_0x1999x13)})};exports[_0x1139[80]]= function(_0x1999x11,_0x1999x12,_0x1999x15){return MailApplication[_0x1139[83]](_0x1139[81],{where:{MailAccountId:_0x1999x11[_0x1139[31]][_0x1139[30]]}})[_0x1139[23]](function(_0x1999x25){_0x1999x11[_0x1139[78]][_0x1139[81]]= _0x1999x25?++_0x1999x25:1;_0x1999x11[_0x1139[78]][_0x1139[82]]= _0x1999x11[_0x1139[31]][_0x1139[30]];return MailApplication[_0x1139[75]](_0x1999x11[_0x1139[78]])})[_0x1139[23]](function(_0x1999x24){return _0x1999x12[_0x1139[22]](201)[_0x1139[21]](_0x1999x24)})[_0x1139[20]](function(_0x1999x13){return handleError(_0x1999x12,_0x1999x13)})};exports[_0x1139[84]]= function(_0x1999x11,_0x1999x12,_0x1999x15){_0x1999x11[_0x1139[78]][_0x1139[82]]= _0x1999x11[_0x1139[31]][_0x1139[30]];return MailDisposition[_0x1139[75]](_0x1999x11[_0x1139[78]])[_0x1139[23]](function(_0x1999x26){return _0x1999x12[_0x1139[22]](201)[_0x1139[21]](_0x1999x26)})[_0x1139[20]](function(_0x1999x13){return handleError(_0x1999x12,_0x1999x13)})};exports[_0x1139[85]]= function(_0x1999x11,_0x1999x12){if(_0x1999x11[_0x1139[78]][_0x1139[30]]){delete _0x1999x11[_0x1139[78]][_0x1139[30]]};return MailAccount[_0x1139[61]](_0x1999x11[_0x1139[31]][_0x1139[30]])[_0x1139[23]](function(_0x1999x21){if(!_0x1999x21){return _0x1999x12[_0x1139[50]](404)};var _0x1999x27=_[_0x1139[48]](_0x1999x21,_0x1999x11[_0x1139[78]]);return _0x1999x27[_0x1139[86]]()})[_0x1139[23]](function(_0x1999x21){return _0x1999x12[_0x1139[22]](200)[_0x1139[21]](_0x1999x21)})[_0x1139[20]](sequelize.UniqueConstraintError,function(_0x1999x13){return Util[_0x1139[77]][_0x1139[76]](_0x1999x12,_0x1999x13)})[_0x1139[20]](function(_0x1999x13){return handleError(_0x1999x12,_0x1999x13)})};exports[_0x1139[87]]= function(_0x1999x11,_0x1999x12){if(_0x1999x11[_0x1139[78]][_0x1139[30]]){delete _0x1999x11[_0x1139[78]][_0x1139[30]]};return MailDisposition[_0x1139[61]](_0x1999x11[_0x1139[31]][_0x1139[88]])[_0x1139[23]](function(_0x1999x28){if(!_0x1999x28){return _0x1999x12[_0x1139[50]](404)};var _0x1999x27=_[_0x1139[48]](_0x1999x28,_0x1999x11[_0x1139[78]]);return _0x1999x27[_0x1139[86]]()})[_0x1139[23]](function(_0x1999x21){return _0x1999x12[_0x1139[22]](200)[_0x1139[21]](_0x1999x21)})[_0x1139[20]](function(_0x1999x13){return handleError(_0x1999x12,_0x1999x13)})};exports[_0x1139[89]]= function(_0x1999x11,_0x1999x12){var _0x1999x29=0;var _0x1999x1c=_0x1999x11[_0x1139[78]];_0x1999x1c[_0x1139[90]](function(_0x1999x2a){delete _0x1999x2a[_0x1139[30]];delete _0x1999x2a[_0x1139[39]];delete _0x1999x2a[_0x1139[40]];_0x1999x2a[_0x1139[81]]= ++_0x1999x29});return sequelize[_0x1139[79]](function(_0x1999x23){return MailApplication[_0x1139[92]]({where:{MailAccountId:_0x1999x11[_0x1139[31]][_0x1139[30]]},individualHooks:true,transaction:_0x1999x23})[_0x1139[23]](function(_0x1999x24){return MailApplication[_0x1139[91]](_0x1999x1c,{individualHooks:true,transaction:_0x1999x23})})})[_0x1139[23]](function(_0x1999x2b){return _0x1999x12[_0x1139[22]](200)[_0x1139[21]]({count:_0x1999x2b[_0x1139[42]],rows:_0x1999x2b})})[_0x1139[20]](function(_0x1999x13){return handleError(_0x1999x12,_0x1999x13)})};exports[_0x1139[92]]= function(_0x1999x11,_0x1999x12,_0x1999x15){return MailAccount[_0x1139[61]](_0x1999x11[_0x1139[31]][_0x1139[30]])[_0x1139[23]](function(_0x1999x21){if(!_0x1999x21){return _0x1999x12[_0x1139[50]](404)};return _0x1999x21[_0x1139[92]]()})[_0x1139[23]](function(){return _0x1999x12[_0x1139[50]](204)})[_0x1139[20]](function(_0x1999x13){return handleError(_0x1999x12,_0x1999x13)})};exports[_0x1139[93]]= function(_0x1999x11,_0x1999x12,_0x1999x15){return MailApplication[_0x1139[61]](_0x1999x11[_0x1139[31]][_0x1139[94]])[_0x1139[23]](function(_0x1999x24){if(!_0x1999x24){return _0x1999x12[_0x1139[50]](404)};return _0x1999x24[_0x1139[92]]()})[_0x1139[23]](function(){return _0x1999x12[_0x1139[50]](204)})[_0x1139[20]](function(_0x1999x13){return handleError(_0x1999x12,_0x1999x13)})};exports[_0x1139[95]]= function(_0x1999x11,_0x1999x12,_0x1999x15){return MailDisposition[_0x1139[61]](_0x1999x11[_0x1139[31]][_0x1139[88]])[_0x1139[23]](function(_0x1999x26){if(!_0x1999x26){return _0x1999x12[_0x1139[50]](404)};return _0x1999x26[_0x1139[92]]()})[_0x1139[23]](function(){return _0x1999x12[_0x1139[50]](204)})[_0x1139[20]](function(_0x1999x13){return handleError(_0x1999x12,_0x1999x13)})};exports[_0x1139[96]]= function(_0x1999x11,_0x1999x12){return MailAccount[_0x1139[92]]({where:{id:_0x1999x11[_0x1139[24]][_0x1139[97]]},individualHooks:true})[_0x1139[23]](function(){return _0x1999x12[_0x1139[50]](204)})[_0x1139[20]](function(_0x1999x13){return handleError(_0x1999x12,_0x1999x13)})};exports[_0x1139[98]]= function(_0x1999x11,_0x1999x12){return MailApplication[_0x1139[92]]({where:{id:_0x1999x11[_0x1139[24]][_0x1139[97]]},individualHooks:true})[_0x1139[23]](function(){return _0x1999x12[_0x1139[50]](204)})[_0x1139[20]](function(_0x1999x13){return handleError(_0x1999x12,_0x1999x13)})};exports[_0x1139[99]]= function(_0x1999x11,_0x1999x12){return MailApplication[_0x1139[61]](_0x1999x11[_0x1139[31]][_0x1139[94]],{include:[{all:true}]})[_0x1139[23]](function(_0x1999x24){if(!_0x1999x24){return _0x1999x12[_0x1139[50]](404)};return _0x1999x12[_0x1139[21]](_0x1999x24)})[_0x1139[20]](function(_0x1999x13){return handleError(_0x1999x12,_0x1999x13)})};exports[_0x1139[100]]= function(_0x1999x11,_0x1999x12){if(_0x1999x11[_0x1139[78]][_0x1139[30]]){delete _0x1999x11[_0x1139[78]][_0x1139[30]]};return MailApplication[_0x1139[61]](_0x1999x11[_0x1139[31]][_0x1139[94]])[_0x1139[23]](function(_0x1999x24){if(!_0x1999x24){return _0x1999x12[_0x1139[50]](404)};var _0x1999x27=_[_0x1139[48]](_0x1999x24,_0x1999x11[_0x1139[78]]);return _0x1999x27[_0x1139[86]]()})[_0x1139[23]](function(_0x1999x24){return _0x1999x12[_0x1139[22]](200)[_0x1139[21]](_0x1999x24)})[_0x1139[20]](function(_0x1999x13){return handleError(_0x1999x12,_0x1999x13)})};function handleError(_0x1999x12,_0x1999x13){logger[_0x1139[102]](_0x1999x13[_0x1139[101]]);return _0x1999x12[_0x1139[22]](500)[_0x1139[21]](_0x1999x13)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_account/mail_account.events.js b/server/api/mail_account/mail_account.events.js index 90b6fcf..66dc905 100644 --- a/server/api/mail_account/mail_account.events.js +++ b/server/api/mail_account/mail_account.events.js @@ -1 +1 @@ -var _0xe1da=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xe1da[0];const EventEmitter=require(_0xe1da[1]);const MailAccount=require(_0xe1da[3])[_0xe1da[2]];var MailAccountEvents= new EventEmitter();MailAccountEvents[_0xe1da[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xe1da[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xe1da[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xe1da[6]};for(var e in events){var event=events[e];MailAccount[_0xe1da[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xbb7cx8,_0xbb7cx9,_0xbb7cxa){MailAccountEvents[_0xe1da[10]](event+ _0xe1da[8]+ _0xbb7cx8[_0xe1da[9]],_0xbb7cx8);MailAccountEvents[_0xe1da[10]](event,_0xbb7cx8);_0xbb7cxa(null)}}module[_0xe1da[11]]= MailAccountEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_account/mail_account.socket.js b/server/api/mail_account/mail_account.socket.js index 2b50a8a..66dc905 100644 --- a/server/api/mail_account/mail_account.socket.js +++ b/server/api/mail_account/mail_account.socket.js @@ -1 +1 @@ -var _0xe795=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6D\x61\x69\x6C\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6D\x61\x69\x6C\x5F\x61\x63\x63\x6F\x75\x6E\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xe795[0];const MailAccountEvents=require(_0xe795[1]);var events=[_0xe795[2],_0xe795[3]];exports[_0xe795[4]]= function(_0x2a10x3){for(var _0x2a10x4=0,_0x2a10x5=events[_0xe795[5]];_0x2a10x4< _0x2a10x5;_0x2a10x4++){var _0x2a10x6=events[_0x2a10x4];var _0x2a10x7=createListener(_0xe795[6]+ _0x2a10x6,_0x2a10x3);MailAccountEvents[_0xe795[7]](_0x2a10x6,_0x2a10x7);_0x2a10x3[_0xe795[7]](_0xe795[8],removeListener(_0x2a10x6,_0x2a10x7))}};function createListener(_0x2a10x6,_0x2a10x3){return function(_0x2a10x9){_0x2a10x3[_0xe795[9]](_0x2a10x6,_0x2a10x9)}}function removeListener(_0x2a10x6,_0x2a10x7){return function(){MailAccountEvents[_0xe795[10]](_0x2a10x6,_0x2a10x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_application/index.js b/server/api/mail_application/index.js index 91f1f0b..66dc905 100644 --- a/server/api/mail_application/index.js +++ b/server/api/mail_application/index.js @@ -1 +1 @@ -var _0x5bec=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x6D\x61\x69\x6C\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x4D\x61\x69\x6C","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x5bec[0];var express=require(_0x5bec[1]);var controller=require(_0x5bec[2]);var auth=require(_0x5bec[3]);var license=require(_0x5bec[4]);var router=express.Router();router[_0x5bec[12]](_0x5bec[5],license[_0x5bec[6]](),license[_0x5bec[7]](),auth[_0x5bec[8]](),auth[_0x5bec[10]]([9],[_0x5bec[9]]),controller[_0x5bec[11]]);router[_0x5bec[12]](_0x5bec[13],license[_0x5bec[6]](),license[_0x5bec[7]](),auth[_0x5bec[8]](),auth[_0x5bec[10]]([9],[_0x5bec[9]]),controller[_0x5bec[14]]);router[_0x5bec[16]](_0x5bec[5],license[_0x5bec[6]](),license[_0x5bec[7]](),auth[_0x5bec[8]](),auth[_0x5bec[10]]([9],[_0x5bec[9]]),controller[_0x5bec[15]]);router[_0x5bec[18]](_0x5bec[13],license[_0x5bec[6]](),license[_0x5bec[7]](),auth[_0x5bec[8]](),auth[_0x5bec[10]]([9],[_0x5bec[9]]),controller[_0x5bec[17]]);router[_0x5bec[20]](_0x5bec[13],license[_0x5bec[6]](),license[_0x5bec[7]](),auth[_0x5bec[8]](),auth[_0x5bec[10]]([9],[_0x5bec[9]]),controller[_0x5bec[19]]);module[_0x5bec[21]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_application/mail_application.controller.js b/server/api/mail_application/mail_application.controller.js index 0d8dbba..66dc905 100644 --- a/server/api/mail_application/mail_application.controller.js +++ b/server/api/mail_application/mail_application.controller.js @@ -1 +1 @@ -var _0x5f6c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x4D\x61\x69\x6C\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x70\x72\x69\x6F\x72\x69\x74\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x6D\x61\x78","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0x5f6c[0];var _=require(_0x5f6c[1]);var logger=require(_0x5f6c[3])(_0x5f6c[2]);var MailApplication=require(_0x5f6c[5])[_0x5f6c[4]];exports[_0x5f6c[6]]= function(_0x6f72x4,_0x6f72x5,_0x6f72x6){return MailApplication[_0x5f6c[13]]({where:_0x6f72x4[_0x5f6c[11]],order:_0x5f6c[12],include:[{all:true}]})[_0x5f6c[10]](function(_0x6f72x8){return _0x6f72x5[_0x5f6c[9]](200)[_0x5f6c[8]](_0x6f72x8)})[_0x5f6c[7]](function(_0x6f72x7){return handleError(_0x6f72x5,_0x6f72x7)})};exports[_0x5f6c[14]]= function(_0x6f72x4,_0x6f72x5,_0x6f72x6){return MailApplication[_0x5f6c[18]](_0x6f72x4[_0x5f6c[17]][_0x5f6c[16]],{include:[{all:true}]})[_0x5f6c[10]](function(_0x6f72x9){if(!_0x6f72x9){return _0x6f72x5[_0x5f6c[15]](404)};return _0x6f72x5[_0x5f6c[8]](_0x6f72x9)})[_0x5f6c[7]](function(_0x6f72x7){return handleError(_0x6f72x5,_0x6f72x7)})};exports[_0x5f6c[19]]= function(_0x6f72x4,_0x6f72x5,_0x6f72x6){return MailApplication[_0x5f6c[22]](_0x5f6c[12],{where:{MailAccountId:_0x6f72x4[_0x5f6c[20]][_0x5f6c[21]]}})[_0x5f6c[10]](function(_0x6f72xa){_0x6f72x4[_0x5f6c[20]][_0x5f6c[12]]= _0x6f72xa?++_0x6f72xa:1;return MailApplication[_0x5f6c[19]](_0x6f72x4[_0x5f6c[20]])})[_0x5f6c[10]](function(_0x6f72x9){return _0x6f72x5[_0x5f6c[9]](201)[_0x5f6c[8]](_0x6f72x9)})[_0x5f6c[7]](function(_0x6f72x7){return handleError(_0x6f72x5,_0x6f72x7)})};exports[_0x5f6c[23]]= function(_0x6f72x4,_0x6f72x5,_0x6f72x6){if(_0x6f72x4[_0x5f6c[20]][_0x5f6c[16]]){delete _0x6f72x4[_0x5f6c[20]][_0x5f6c[16]]};return MailApplication[_0x5f6c[18]](_0x6f72x4[_0x5f6c[17]][_0x5f6c[16]])[_0x5f6c[10]](function(_0x6f72x9){if(!_0x6f72x9){return _0x6f72x5[_0x5f6c[15]](404)};var _0x6f72xb=_[_0x5f6c[24]](_0x6f72x9,_0x6f72x4[_0x5f6c[20]]);return _0x6f72xb[_0x5f6c[25]]()})[_0x5f6c[10]](function(_0x6f72x9){return _0x6f72x5[_0x5f6c[9]](200)[_0x5f6c[8]](_0x6f72x9)})[_0x5f6c[7]](function(_0x6f72x7){return handleError(_0x6f72x5,_0x6f72x7)})};exports[_0x5f6c[26]]= function(_0x6f72x4,_0x6f72x5,_0x6f72x6){return MailApplication[_0x5f6c[18]](_0x6f72x4[_0x5f6c[17]][_0x5f6c[16]])[_0x5f6c[10]](function(_0x6f72x9){if(!_0x6f72x9){return _0x6f72x5[_0x5f6c[15]](404)};return _0x6f72x9[_0x5f6c[26]]()})[_0x5f6c[10]](function(){return _0x6f72x5[_0x5f6c[15]](204)})[_0x5f6c[7]](function(_0x6f72x7){return handleError(_0x6f72x5,_0x6f72x7)})};function handleError(_0x6f72x5,_0x6f72x7){logger[_0x5f6c[28]](_0x6f72x7[_0x5f6c[27]]);return _0x6f72x5[_0x5f6c[9]](500)[_0x5f6c[8]](_0x6f72x7)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_application/mail_application.events.js b/server/api/mail_application/mail_application.events.js index 7efcc92..66dc905 100644 --- a/server/api/mail_application/mail_application.events.js +++ b/server/api/mail_application/mail_application.events.js @@ -1 +1 @@ -var _0x7294=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4D\x61\x69\x6C\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x7294[0];const EventEmitter=require(_0x7294[1]);const MailApplication=require(_0x7294[3])[_0x7294[2]];var MailApplicationEvents= new EventEmitter();MailApplicationEvents[_0x7294[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x7294[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x7294[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x7294[6]};for(var e in events){var event=events[e];MailApplication[_0x7294[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xe7c2x8,_0xe7c2x9,_0xe7c2xa){MailApplicationEvents[_0x7294[10]](event+ _0x7294[8]+ _0xe7c2x8[_0x7294[9]],_0xe7c2x8);MailApplicationEvents[_0x7294[10]](event,_0xe7c2x8);_0xe7c2xa(null)}}module[_0x7294[11]]= MailApplicationEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_application/mail_application.socket.js b/server/api/mail_application/mail_application.socket.js index b0bf7bf..66dc905 100644 --- a/server/api/mail_application/mail_application.socket.js +++ b/server/api/mail_application/mail_application.socket.js @@ -1 +1 @@ -var _0xd297=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6D\x61\x69\x6C\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6D\x61\x69\x6C\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xd297[0];const MailApplicationEvents=require(_0xd297[1]);var events=[_0xd297[2],_0xd297[3]];exports[_0xd297[4]]= function(_0x247ex3){for(var _0x247ex4=0,_0x247ex5=events[_0xd297[5]];_0x247ex4< _0x247ex5;_0x247ex4++){var _0x247ex6=events[_0x247ex4];var _0x247ex7=createListener(_0xd297[6]+ _0x247ex6,_0x247ex3);MailApplicationEvents[_0xd297[7]](_0x247ex6,_0x247ex7);_0x247ex3[_0xd297[7]](_0xd297[8],removeListener(_0x247ex6,_0x247ex7))}};function createListener(_0x247ex6,_0x247ex3){return function(_0x247ex9){_0x247ex3[_0xd297[9]](_0x247ex6,_0x247ex9)}}function removeListener(_0x247ex6,_0x247ex7){return function(){MailApplicationEvents[_0xd297[10]](_0x247ex6,_0x247ex7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_attachment/index.js b/server/api/mail_attachment/index.js index 45d9ce6..66dc905 100644 --- a/server/api/mail_attachment/index.js +++ b/server/api/mail_attachment/index.js @@ -1 +1 @@ -var _0xd6d4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x6D\x61\x69\x6C\x5F\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x4D\x61\x69\x6C","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xd6d4[0];var express=require(_0xd6d4[1]);var controller=require(_0xd6d4[2]);var auth=require(_0xd6d4[3]);var license=require(_0xd6d4[4]);var router=express.Router();router[_0xd6d4[13]](_0xd6d4[5],license[_0xd6d4[6]](),license[_0xd6d4[7]](),auth[_0xd6d4[8]](),auth[_0xd6d4[11]]([9],[_0xd6d4[9],_0xd6d4[10]]),controller[_0xd6d4[12]]);router[_0xd6d4[13]](_0xd6d4[14],license[_0xd6d4[6]](),license[_0xd6d4[7]](),controller[_0xd6d4[15]]);router[_0xd6d4[17]](_0xd6d4[5],license[_0xd6d4[6]](),license[_0xd6d4[7]](),auth[_0xd6d4[8]](),auth[_0xd6d4[11]]([9],[_0xd6d4[9],_0xd6d4[10]]),controller[_0xd6d4[16]]);router[_0xd6d4[19]](_0xd6d4[14],license[_0xd6d4[6]](),license[_0xd6d4[7]](),auth[_0xd6d4[8]](),auth[_0xd6d4[11]]([9],[_0xd6d4[9],_0xd6d4[10]]),controller[_0xd6d4[18]]);router[_0xd6d4[21]](_0xd6d4[14],license[_0xd6d4[6]](),license[_0xd6d4[7]](),auth[_0xd6d4[8]](),auth[_0xd6d4[11]]([9],[_0xd6d4[9],_0xd6d4[10]]),controller[_0xd6d4[20]]);module[_0xd6d4[22]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_attachment/mail_attachment.controller.js b/server/api/mail_attachment/mail_attachment.controller.js index ea5535a..66dc905 100644 --- a/server/api/mail_attachment/mail_attachment.controller.js +++ b/server/api/mail_attachment/mail_attachment.controller.js @@ -1 +1 @@ -var _0x110a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x70\x61\x74\x68","\x66\x73","\x66\x6F\x72\x6D\x69\x64\x61\x62\x6C\x65","\x62\x6C\x75\x65\x62\x69\x72\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x4D\x61\x69\x6C\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x46\x69\x6C\x65","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x75\x70\x6C\x6F\x61\x64\x44\x69\x72","\x72\x6F\x6F\x74","\x73\x65\x72\x76\x65\x72","\x66\x69\x6C\x65\x73","\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x73","\x6A\x6F\x69\x6E","\x6B\x65\x65\x70\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E\x73","\x6D\x75\x6C\x74\x69\x70\x6C\x65\x73","\x68\x61\x73\x68","\x73\x69\x7A\x65","\x66\x69\x6C\x65","\x6E\x61\x6D\x65","\x74\x79\x70\x65","\x62\x61\x73\x65\x6E\x61\x6D\x65","\x70\x61\x72\x73\x65","\x75\x70\x64\x61\x74\x65","\x62\x6F\x64\x79","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x75\x6E\x6C\x69\x6E\x6B","\x70\x72\x6F\x6D\x69\x73\x69\x66\x79","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0x110a[0];var _=require(_0x110a[1]);var path=require(_0x110a[2]);var fs=require(_0x110a[3]);var formidable=require(_0x110a[4]);var Promise=require(_0x110a[5]);var config=require(_0x110a[6]);var logger=require(_0x110a[8])(_0x110a[7]);var MailAttachment=require(_0x110a[10])[_0x110a[9]];exports[_0x110a[11]]= function(_0x849dx9,_0x849dxa,_0x849dxb){return MailAttachment[_0x110a[16]]()[_0x110a[15]](function(_0x849dxd){return _0x849dxa[_0x110a[14]](200)[_0x110a[13]](_0x849dxd)})[_0x110a[12]](function(_0x849dxc){return handleError(_0x849dxa,_0x849dxc)})};exports[_0x110a[17]]= function(_0x849dx9,_0x849dxa,_0x849dxb){return MailAttachment[_0x110a[21]](_0x849dx9[_0x110a[20]][_0x110a[19]])[_0x110a[15]](function(_0x849dxe){return _0x849dxa[_0x110a[18]](_0x849dxe[_0x110a[2]])})[_0x110a[12]](function(_0x849dxc){return handleError(_0x849dxa,_0x849dxc)})};exports[_0x110a[22]]= function(_0x849dx9,_0x849dxa,_0x849dxb){var _0x849dxf= new formidable.IncomingForm();_0x849dxf[_0x110a[23]]= path[_0x110a[28]](config[_0x110a[24]],_0x110a[25],_0x110a[26],_0x110a[27]);_0x849dxf[_0x110a[29]]= true;_0x849dxf[_0x110a[30]]= true;_0x849dxf[_0x110a[31]]= true;_0x849dxf[_0x110a[37]](_0x849dx9,function(_0x849dxc,_0x849dxf,_0x849dx10){if(_0x849dxc){return _0x849dxa[_0x110a[14]](500)[_0x110a[13]](_0x849dxc)};return _0x849dxa[_0x110a[14]](201)[_0x110a[13]]({size:_0x849dx10[_0x110a[33]][_0x110a[32]],path:_0x849dx10[_0x110a[33]][_0x110a[2]],name:_0x849dx10[_0x110a[33]][_0x110a[34]],type:_0x849dx10[_0x110a[33]][_0x110a[35]],basename:path[_0x110a[36]](_0x849dx10[_0x110a[33]][_0x110a[2]])})})};exports[_0x110a[38]]= function(_0x849dx9,_0x849dxa,_0x849dxb){if(_0x849dx9[_0x110a[39]][_0x110a[19]]){delete _0x849dx9[_0x110a[39]][_0x110a[19]]};return MailAttachment[_0x110a[21]](_0x849dx9[_0x110a[20]][_0x110a[19]])[_0x110a[15]](function(_0x849dxe){if(!_0x849dxe){return _0x849dxa[_0x110a[40]](404)};var _0x849dx11=_[_0x110a[41]](_0x849dxe,_0x849dx9[_0x110a[39]]);return _0x849dx11[_0x110a[42]]()})[_0x110a[15]](function(_0x849dxe){return _0x849dxa[_0x110a[14]](200)[_0x110a[13]](_0x849dxe)})[_0x110a[12]](function(_0x849dxc){return handleError(_0x849dxa,_0x849dxc)})};exports[_0x110a[43]]= function(_0x849dx9,_0x849dxa,_0x849dxb){var _0x849dx12=Promise[_0x110a[45]](require(_0x110a[3])[_0x110a[44]]);var _0x849dx13=path[_0x110a[28]](config[_0x110a[24]],_0x110a[25],_0x110a[26],_0x110a[27],_0x849dx9[_0x110a[20]][_0x110a[19]]);return _0x849dx12(_0x849dx13)[_0x110a[15]](function(){return _0x849dxa[_0x110a[40]](204)})[_0x110a[12]](function(_0x849dxc){return handleError(_0x849dxa,_0x849dxc)})};function handleError(_0x849dxa,_0x849dxc){logger[_0x110a[47]](_0x849dxc[_0x110a[46]]);return _0x849dxa[_0x110a[14]](500)[_0x110a[13]](_0x849dxc)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_attachment/mail_attachment.events.js b/server/api/mail_attachment/mail_attachment.events.js index d4aa768..66dc905 100644 --- a/server/api/mail_attachment/mail_attachment.events.js +++ b/server/api/mail_attachment/mail_attachment.events.js @@ -1 +1 @@ -var _0xb9d1=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4D\x61\x69\x6C\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xb9d1[0];const EventEmitter=require(_0xb9d1[1]);const MailAttachment=require(_0xb9d1[3])[_0xb9d1[2]];var MailAttachmentEvents= new EventEmitter();MailAttachmentEvents[_0xb9d1[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xb9d1[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xb9d1[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xb9d1[6]};for(var e in events){var event=events[e];MailAttachment[_0xb9d1[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x7b28x8,_0x7b28x9,_0x7b28xa){MailAttachmentEvents[_0xb9d1[10]](event+ _0xb9d1[8]+ _0x7b28x8[_0xb9d1[9]],_0x7b28x8);MailAttachmentEvents[_0xb9d1[10]](event,_0x7b28x8);_0x7b28xa(null)}}module[_0xb9d1[11]]= MailAttachmentEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_attachment/mail_attachment.socket.js b/server/api/mail_attachment/mail_attachment.socket.js index adf92ae..66dc905 100644 --- a/server/api/mail_attachment/mail_attachment.socket.js +++ b/server/api/mail_attachment/mail_attachment.socket.js @@ -1 +1 @@ -var _0x3d74=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6D\x61\x69\x6C\x5F\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6D\x61\x69\x6C\x5F\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x3d74[0];const MailAttachmentEvents=require(_0x3d74[1]);var events=[_0x3d74[2],_0x3d74[3]];exports[_0x3d74[4]]= function(_0x15e9x3){for(var _0x15e9x4=0,_0x15e9x5=events[_0x3d74[5]];_0x15e9x4< _0x15e9x5;_0x15e9x4++){var _0x15e9x6=events[_0x15e9x4];var _0x15e9x7=createListener(_0x3d74[6]+ _0x15e9x6,_0x15e9x3);MailAttachmentEvents[_0x3d74[7]](_0x15e9x6,_0x15e9x7);_0x15e9x3[_0x3d74[7]](_0x3d74[8],removeListener(_0x15e9x6,_0x15e9x7))}};function createListener(_0x15e9x6,_0x15e9x3){return function(_0x15e9x9){_0x15e9x3[_0x3d74[9]](_0x15e9x6,_0x15e9x9)}}function removeListener(_0x15e9x6,_0x15e9x7){return function(){MailAttachmentEvents[_0x3d74[10]](_0x15e9x6,_0x15e9x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_disposition/index.js b/server/api/mail_disposition/index.js index 7211c93..66dc905 100644 --- a/server/api/mail_disposition/index.js +++ b/server/api/mail_disposition/index.js @@ -1 +1 @@ -var _0x5bad=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x6D\x61\x69\x6C\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x5bad[0];var express=require(_0x5bad[1]);var auth=require(_0x5bad[2]);var controller=require(_0x5bad[3]);var router=express.Router();router[_0x5bad[7]](_0x5bad[4],auth[_0x5bad[5]](),controller[_0x5bad[6]]);router[_0x5bad[7]](_0x5bad[8],auth[_0x5bad[5]](),controller[_0x5bad[9]]);router[_0x5bad[11]](_0x5bad[4],auth[_0x5bad[5]](),controller[_0x5bad[10]]);router[_0x5bad[13]](_0x5bad[8],auth[_0x5bad[5]](),controller[_0x5bad[12]]);router[_0x5bad[14]](_0x5bad[8],auth[_0x5bad[5]](),controller[_0x5bad[12]]);router[_0x5bad[16]](_0x5bad[8],auth[_0x5bad[5]](),controller[_0x5bad[15]]);module[_0x5bad[17]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_disposition/mail_disposition.controller.js b/server/api/mail_disposition/mail_disposition.controller.js index 4ae9985..66dc905 100644 --- a/server/api/mail_disposition/mail_disposition.controller.js +++ b/server/api/mail_disposition/mail_disposition.controller.js @@ -1 +1 @@ -var _0x6160=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x4D\x61\x69\x6C\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65"];_0x6160[0];var _=require(_0x6160[1]);var MailDisposition=require(_0x6160[3])[_0x6160[2]];var logger=require(_0x6160[5])(_0x6160[4]);function handleError(_0x3bf4x5,_0x3bf4x6){_0x3bf4x6= _0x3bf4x6|| 500;return function(_0x3bf4x7){logger[_0x6160[7]](_0x3bf4x7[_0x6160[6]]);_0x3bf4x5[_0x6160[9]](_0x3bf4x6)[_0x6160[8]](_0x3bf4x7)}}function responseWithResult(_0x3bf4x5,_0x3bf4x6){_0x3bf4x6= _0x3bf4x6|| 200;return function(_0x3bf4x9){if(_0x3bf4x9){_0x3bf4x5[_0x6160[9]](_0x3bf4x6)[_0x6160[10]](_0x3bf4x9)}}}function responseWithoutResult(_0x3bf4x5,_0x3bf4x6){_0x3bf4x6= _0x3bf4x6|| 200;return function(){_0x3bf4x5[_0x6160[11]](_0x3bf4x6)}}function handleEntityNotFound(_0x3bf4x5){return function(_0x3bf4x9){if(!_0x3bf4x9){_0x3bf4x5[_0x6160[9]](404)[_0x6160[12]]();return null};return _0x3bf4x9}}function saveUpdates(_0x3bf4xd){return function(_0x3bf4x9){return _0x3bf4x9[_0x6160[14]](_0x3bf4xd)[_0x6160[13]](function(_0x3bf4xe){return _0x3bf4xe})}}function removeEntity(_0x3bf4x5){return function(_0x3bf4x9){if(_0x3bf4x9){return _0x3bf4x9[_0x6160[15]]()[_0x6160[13]](function(){_0x3bf4x5[_0x6160[9]](204)[_0x6160[12]]()})}}}exports[_0x6160[16]]= function(_0x3bf4x10,_0x3bf4x5){MailDisposition[_0x6160[18]]()[_0x6160[13]](responseWithResult(_0x3bf4x5))[_0x6160[17]](handleError(_0x3bf4x5))};exports[_0x6160[19]]= function(_0x3bf4x10,_0x3bf4x5){MailDisposition[_0x6160[22]](_0x3bf4x10[_0x6160[21]][_0x6160[20]])[_0x6160[13]](handleEntityNotFound(_0x3bf4x5))[_0x6160[13]](responseWithResult(_0x3bf4x5))[_0x6160[17]](handleError(_0x3bf4x5))};exports[_0x6160[23]]= function(_0x3bf4x10,_0x3bf4x5){MailDisposition[_0x6160[23]](_0x3bf4x10[_0x6160[24]])[_0x6160[13]](responseWithResult(_0x3bf4x5,201))[_0x6160[17]](handleError(_0x3bf4x5))};exports[_0x6160[25]]= function(_0x3bf4x10,_0x3bf4x5){if(_0x3bf4x10[_0x6160[24]][_0x6160[20]]){delete _0x3bf4x10[_0x6160[24]][_0x6160[20]]};MailDisposition[_0x6160[22]](_0x3bf4x10[_0x6160[21]][_0x6160[20]])[_0x6160[13]](handleEntityNotFound(_0x3bf4x5))[_0x6160[13]](saveUpdates(_0x3bf4x10[_0x6160[24]]))[_0x6160[13]](responseWithResult(_0x3bf4x5))[_0x6160[17]](handleError(_0x3bf4x5))};exports[_0x6160[15]]= function(_0x3bf4x10,_0x3bf4x5){MailDisposition[_0x6160[22]](_0x3bf4x10[_0x6160[21]][_0x6160[20]])[_0x6160[13]](handleEntityNotFound(_0x3bf4x5))[_0x6160[13]](removeEntity(_0x3bf4x5))[_0x6160[17]](handleError(_0x3bf4x5))} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_disposition/mail_disposition.events.js b/server/api/mail_disposition/mail_disposition.events.js index e521d7f..66dc905 100644 --- a/server/api/mail_disposition/mail_disposition.events.js +++ b/server/api/mail_disposition/mail_disposition.events.js @@ -1 +1 @@ -var _0x7abc=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4D\x61\x69\x6C\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x7abc[0];const EventEmitter=require(_0x7abc[1]);const MailDisposition=require(_0x7abc[3])[_0x7abc[2]];var MailDispositionEvents= new EventEmitter();MailDispositionEvents[_0x7abc[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x7abc[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x7abc[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x7abc[6]};for(var e in events){var event=events[e];MailDisposition[_0x7abc[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xb570x8,_0xb570x9,_0xb570xa){MailDispositionEvents[_0x7abc[10]](event+ _0x7abc[8]+ _0xb570x8[_0x7abc[9]],_0xb570x8);MailDispositionEvents[_0x7abc[10]](event,_0xb570x8);_0xb570xa(null)}}module[_0x7abc[11]]= MailDispositionEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_disposition/mail_disposition.socket.js b/server/api/mail_disposition/mail_disposition.socket.js index 1fba6d0..66dc905 100644 --- a/server/api/mail_disposition/mail_disposition.socket.js +++ b/server/api/mail_disposition/mail_disposition.socket.js @@ -1 +1 @@ -var _0x68a2=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6D\x61\x69\x6C\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6D\x61\x69\x6C\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x68a2[0];const MailDispositionEvents=require(_0x68a2[1]);var events=[_0x68a2[2],_0x68a2[3]];exports[_0x68a2[4]]= function(_0xb33fx3){for(var _0xb33fx4=0,_0xb33fx5=events[_0x68a2[5]];_0xb33fx4< _0xb33fx5;_0xb33fx4++){var _0xb33fx6=events[_0xb33fx4];var _0xb33fx7=createListener(_0x68a2[6]+ _0xb33fx6,_0xb33fx3);MailDispositionEvents[_0x68a2[7]](_0xb33fx6,_0xb33fx7);_0xb33fx3[_0x68a2[7]](_0x68a2[8],removeListener(_0xb33fx6,_0xb33fx7))}};function createListener(_0xb33fx6,_0xb33fx3){return function(_0xb33fx9){_0xb33fx3[_0x68a2[9]](_0xb33fx6,_0xb33fx9)}}function removeListener(_0xb33fx6,_0xb33fx7){return function(){MailDispositionEvents[_0x68a2[10]](_0xb33fx6,_0xb33fx7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_message/index.js b/server/api/mail_message/index.js index 08d4ff4..66dc905 100644 --- a/server/api/mail_message/index.js +++ b/server/api/mail_message/index.js @@ -1 +1 @@ -var _0x8ef7=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x6D\x61\x69\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x4D\x61\x69\x6C","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x2F\x64\x65\x6C\x65\x74\x65\x2F\x62\x75\x6C\x6B","\x62\x75\x6C\x6B\x44\x65\x6C\x65\x74\x65","\x2F\x64\x65\x6C\x65\x74\x65\x2F\x3A\x69\x64","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x8ef7[0];var express=require(_0x8ef7[1]);var controller=require(_0x8ef7[2]);var auth=require(_0x8ef7[3]);var license=require(_0x8ef7[4]);var router=express.Router();router[_0x8ef7[13]](_0x8ef7[5],license[_0x8ef7[6]](),license[_0x8ef7[7]](),auth[_0x8ef7[8]](),auth[_0x8ef7[11]]([9],[_0x8ef7[9],_0x8ef7[10]]),controller[_0x8ef7[12]]);router[_0x8ef7[13]](_0x8ef7[14],license[_0x8ef7[6]](),license[_0x8ef7[7]](),auth[_0x8ef7[8]](),auth[_0x8ef7[11]]([9],[_0x8ef7[9]]),controller[_0x8ef7[15]]);router[_0x8ef7[13]](_0x8ef7[16],license[_0x8ef7[6]](),license[_0x8ef7[7]](),auth[_0x8ef7[8]](),auth[_0x8ef7[11]]([9],[_0x8ef7[9],_0x8ef7[10]]),controller[_0x8ef7[17]]);router[_0x8ef7[19]](_0x8ef7[5],license[_0x8ef7[6]](),license[_0x8ef7[7]](),auth[_0x8ef7[8]](),auth[_0x8ef7[11]]([9],[_0x8ef7[9],_0x8ef7[10]]),controller[_0x8ef7[18]]);router[_0x8ef7[21]](_0x8ef7[5],license[_0x8ef7[6]](),license[_0x8ef7[7]](),auth[_0x8ef7[8]](),auth[_0x8ef7[11]]([9],[_0x8ef7[9],_0x8ef7[10]]),controller[_0x8ef7[20]]);router[_0x8ef7[21]](_0x8ef7[22],license[_0x8ef7[6]](),license[_0x8ef7[7]](),auth[_0x8ef7[8]](),auth[_0x8ef7[11]]([9],[_0x8ef7[9]]),controller[_0x8ef7[23]]);router[_0x8ef7[21]](_0x8ef7[24],license[_0x8ef7[6]](),license[_0x8ef7[7]](),auth[_0x8ef7[8]](),auth[_0x8ef7[11]]([9],[_0x8ef7[9]]),controller[_0x8ef7[20]]);router[_0x8ef7[21]](_0x8ef7[16],license[_0x8ef7[6]](),license[_0x8ef7[7]](),auth[_0x8ef7[8]](),auth[_0x8ef7[11]]([9],[_0x8ef7[9],_0x8ef7[10]]),controller[_0x8ef7[20]]);router[_0x8ef7[26]](_0x8ef7[16],license[_0x8ef7[6]](),license[_0x8ef7[7]](),auth[_0x8ef7[8]](),auth[_0x8ef7[11]]([9],[_0x8ef7[9],_0x8ef7[10]]),controller[_0x8ef7[25]]);module[_0x8ef7[27]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_message/mail_message.controller.js b/server/api/mail_message/mail_message.controller.js index e756e02..66dc905 100644 --- a/server/api/mail_message/mail_message.controller.js +++ b/server/api/mail_message/mail_message.controller.js @@ -1 +1 @@ -var _0x40a0=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x61\x73\x79\x6E\x63","\x68\x74\x6D\x6C\x2D\x74\x6F\x2D\x74\x65\x78\x74","\x66\x6F\x72\x6D\x69\x64\x61\x62\x6C\x65","\x6D\x6F\x6D\x65\x6E\x74","\x70\x61\x74\x68","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x4D\x61\x69\x6C\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x43\x6F\x6E\x74\x61\x63\x74\x45\x6D\x61\x69\x6C","\x43\x6F\x6E\x74\x61\x63\x74","\x55\x73\x65\x72","\x69\x6E\x64\x65\x78","\x63\x72\x65\x61\x74\x65\x64\x41\x74\x20\x44\x45\x53\x43","\x77\x68\x65\x72\x65","\x71\x75\x65\x72\x79","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65","\x75\x73\x65\x72","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x55\x73\x65\x72\x49\x64","\x62\x6F\x64\x79","\x75\x73\x65\x72\x4E\x61\x6D\x65","\x75\x73\x65\x72\x46\x75\x6C\x6C\x6E\x61\x6D\x65","\x74\x65\x78\x74","\x68\x74\x6D\x6C","\x66\x72\x6F\x6D\x53\x74\x72\x69\x6E\x67","\x61\x63\x63\x6F\x75\x6E\x74\x49\x64","\x61\x63\x63\x6F\x75\x6E\x74\x4E\x61\x6D\x65","\x66\x72\x6F\x6D","\x73\x75\x62\x6A\x65\x63\x74","\x50\x45\x4E\x44\x49\x4E\x47","\x53\x45\x4E\x44\x49\x4E\x47","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74","\x66\x69\x6E\x64\x4F\x6E\x65","\x75\x70\x64\x61\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x6C\x65\x74\x65","\x54\x52\x41\x53\x48","\x62\x75\x6C\x6B\x55\x70\x64\x61\x74\x65","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0x40a0[0];var _=require(_0x40a0[1]);var async=require(_0x40a0[2]);var htmlToText=require(_0x40a0[3]);var formidable=require(_0x40a0[4]);var moment=require(_0x40a0[5]);var path=require(_0x40a0[6]);var logger=require(_0x40a0[8])(_0x40a0[7]);var config=require(_0x40a0[9]);var sequelize=require(_0x40a0[11])[_0x40a0[10]];var MailMessage=require(_0x40a0[11])[_0x40a0[12]];var MailAttachment=require(_0x40a0[11])[_0x40a0[13]];var MailRoom=require(_0x40a0[11])[_0x40a0[14]];var MailAccount=require(_0x40a0[11])[_0x40a0[15]];var ContactEmail=require(_0x40a0[11])[_0x40a0[16]];var Contact=require(_0x40a0[11])[_0x40a0[17]];var User=require(_0x40a0[11])[_0x40a0[18]];exports[_0x40a0[19]]= function(_0xb327x11,_0xb327x12,_0xb327x13){var _0xb327x14={order:_0x40a0[20],include:[{all:true,include:[{all:true}]}]};switch(_0xb327x11[_0x40a0[26]][_0x40a0[25]]){case _0x40a0[23]:_0xb327x14[_0x40a0[21]]= _0xb327x11[_0x40a0[22]];break;case _0x40a0[24]:break;default:};return MailMessage[_0x40a0[31]](_0xb327x14)[_0x40a0[30]](function(_0xb327x16){return _0xb327x12[_0x40a0[29]](200)[_0x40a0[28]](_0xb327x16)})[_0x40a0[27]](function(_0xb327x15){return handleError(_0xb327x12,_0xb327x15,_0xb327x13)})};exports[_0x40a0[32]]= function(_0xb327x11,_0xb327x12){return MailMessage[_0x40a0[32]]()[_0x40a0[30]](function(_0xb327x17){return _0xb327x12[_0x40a0[29]](200)[_0x40a0[28]](_0xb327x17)})[_0x40a0[27]](function(_0xb327x15){return handleError(_0xb327x12,_0xb327x15)})};exports[_0x40a0[33]]= function(_0xb327x11,_0xb327x12,_0xb327x13){return MailMessage[_0x40a0[40]](_0xb327x11[_0x40a0[36]][_0x40a0[35]],{include:[{model:MailAttachment},{model:User,attributes:[_0x40a0[35],_0x40a0[37],_0x40a0[38],_0x40a0[39]]}]})[_0x40a0[30]](function(_0xb327x18){if(!_0xb327x18){return _0xb327x12[_0x40a0[34]](404)};return _0xb327x12[_0x40a0[28]](_0xb327x18)})[_0x40a0[27]](function(_0xb327x15){return handleError(_0xb327x12,_0xb327x15,_0xb327x13)})};exports[_0x40a0[41]]= function(_0xb327x11,_0xb327x12,_0xb327x13){_0xb327x11[_0x40a0[43]][_0x40a0[42]]= _0xb327x11[_0x40a0[26]][_0x40a0[35]];_0xb327x11[_0x40a0[43]][_0x40a0[44]]= _0xb327x11[_0x40a0[26]][_0x40a0[37]];_0xb327x11[_0x40a0[43]][_0x40a0[45]]= _0xb327x11[_0x40a0[26]][_0x40a0[38]];_0xb327x11[_0x40a0[43]][_0x40a0[46]]= _0xb327x11[_0x40a0[43]][_0x40a0[46]]|| htmlToText[_0x40a0[48]](_0xb327x11[_0x40a0[43]][_0x40a0[47]],{wordwrap:false});return MailAccount[_0x40a0[57]]({where:{address:_0xb327x11[_0x40a0[43]][_0x40a0[51]][0]}})[_0x40a0[30]](function(_0xb327x1a){_0xb327x11[_0x40a0[43]][_0x40a0[49]]= _0xb327x1a[_0x40a0[35]];_0xb327x11[_0x40a0[43]][_0x40a0[50]]= _0xb327x1a[_0x40a0[37]];return MailRoom[_0x40a0[41]]({from:_0xb327x11[_0x40a0[43]][_0x40a0[51]][0],subject:_0xb327x11[_0x40a0[43]][_0x40a0[52]],account:_0xb327x1a[_0x40a0[37]],mailIn:0,mailOut:1,status:_0x40a0[53],openReason:_0x40a0[24],lastEvent:_0x40a0[54],lastEventAt:moment()[_0x40a0[56]](_0x40a0[55]),MailAccountId:_0xb327x1a[_0x40a0[35]],MailMessages:[_0xb327x11[_0x40a0[43]]]},{include:[{model:MailMessage,include:[{model:MailAttachment}]}]})})[_0x40a0[30]](function(_0xb327x19){return _0xb327x12[_0x40a0[29]](201)[_0x40a0[28]](_0xb327x19)})[_0x40a0[27]](function(_0xb327x15){return handleError(_0xb327x12,_0xb327x15)})};exports[_0x40a0[58]]= function(_0xb327x11,_0xb327x12,_0xb327x13){return MailMessage[_0x40a0[40]](_0xb327x11[_0x40a0[36]][_0x40a0[35]],{include:[{all:true}]})[_0x40a0[30]](function(_0xb327x18){if(!_0xb327x18){return _0xb327x12[_0x40a0[34]](404)};return _0xb327x18[_0x40a0[58]](_0xb327x11[_0x40a0[43]])})[_0x40a0[30]](function(_0xb327x18){return _0xb327x12[_0x40a0[29]](200)[_0x40a0[28]](_0xb327x18)})[_0x40a0[27]](function(_0xb327x15){return handleError(_0xb327x12,_0xb327x15,_0xb327x13)})};exports[_0x40a0[59]]= function(_0xb327x11,_0xb327x12,_0xb327x13){return MailMessage[_0x40a0[40]](_0xb327x11[_0x40a0[36]][_0x40a0[35]])[_0x40a0[30]](function(_0xb327x18){if(!_0xb327x18){return _0xb327x12[_0x40a0[34]](404)};return _0xb327x18[_0x40a0[59]]()})[_0x40a0[30]](function(){return _0xb327x12[_0x40a0[34]](204)})[_0x40a0[27]](function(_0xb327x15){return handleError(_0xb327x12,_0xb327x15,_0xb327x13)})};exports[_0x40a0[60]]= function(_0xb327x11,_0xb327x12,_0xb327x13){return MailMessage[_0x40a0[62]]({where:{id:{$in:_0xb327x11[_0x40a0[43]][_0x40a0[35]]}},attributes:{directory:_0x40a0[61]}})[_0x40a0[30]](function(_0xb327x18){if(!_0xb327x18){return _0xb327x12[_0x40a0[34]](404)};return _0xb327x18[_0x40a0[59]]()})[_0x40a0[30]](function(){return _0xb327x12[_0x40a0[34]](204)})[_0x40a0[27]](function(_0xb327x15){return handleError(_0xb327x12,_0xb327x15,_0xb327x13)})};function handleError(_0xb327x12,_0xb327x15,_0xb327x13){logger[_0x40a0[64]](_0xb327x15[_0x40a0[63]]);return _0xb327x12[_0x40a0[29]](500)[_0x40a0[28]](_0xb327x15)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_message/mail_message.events.js b/server/api/mail_message/mail_message.events.js index 19866df..66dc905 100644 --- a/server/api/mail_message/mail_message.events.js +++ b/server/api/mail_message/mail_message.events.js @@ -1 +1 @@ -var _0x7e8b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x7e8b[0];const EventEmitter=require(_0x7e8b[1]);const MailMessage=require(_0x7e8b[3])[_0x7e8b[2]];var MailMessageEvents= new EventEmitter();MailMessageEvents[_0x7e8b[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x7e8b[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x7e8b[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x7e8b[6]};for(var e in events){var event=events[e];MailMessage[_0x7e8b[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x3aacx8,_0x3aacx9,_0x3aacxa){MailMessageEvents[_0x7e8b[10]](event+ _0x7e8b[8]+ _0x3aacx8[_0x7e8b[9]],_0x3aacx8);MailMessageEvents[_0x7e8b[10]](event,_0x3aacx8);_0x3aacxa(null)}}module[_0x7e8b[11]]= MailMessageEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_message/mail_message.socket.js b/server/api/mail_message/mail_message.socket.js index f8c98ba..66dc905 100644 --- a/server/api/mail_message/mail_message.socket.js +++ b/server/api/mail_message/mail_message.socket.js @@ -1 +1 @@ -var _0xd616=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6D\x61\x69\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6D\x61\x69\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xd616[0];const MailMessageEvents=require(_0xd616[1]);var events=[_0xd616[2],_0xd616[2],_0xd616[3]];exports[_0xd616[4]]= function(_0x441cx3){for(var _0x441cx4=0,_0x441cx5=events[_0xd616[5]];_0x441cx4< _0x441cx5;_0x441cx4++){var _0x441cx6=events[_0x441cx4];var _0x441cx7=createListener(_0xd616[6]+ _0x441cx6,_0x441cx3);MailMessageEvents[_0xd616[7]](_0x441cx6,_0x441cx7);_0x441cx3[_0xd616[7]](_0xd616[8],removeListener(_0x441cx6,_0x441cx7))}};function createListener(_0x441cx6,_0x441cx3){return function(_0x441cx9){_0x441cx3[_0xd616[9]](_0x441cx6,_0x441cx9)}}function removeListener(_0x441cx6,_0x441cx7){return function(){MailMessageEvents[_0xd616[10]](_0x441cx6,_0x441cx7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_queue/index.js b/server/api/mail_queue/index.js index 9f61343..66dc905 100644 --- a/server/api/mail_queue/index.js +++ b/server/api/mail_queue/index.js @@ -1 +1 @@ -var _0x8cf6=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x6D\x61\x69\x6C\x5F\x71\x75\x65\x75\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x4D\x61\x69\x6C","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x61\x67\x65\x6E\x74\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x68\x61\x73\x52\x6F\x6C\x65","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x65\x78\x70\x6F\x72\x74\x73"];_0x8cf6[0];var express=require(_0x8cf6[1]);var controller=require(_0x8cf6[2]);var auth=require(_0x8cf6[3]);var license=require(_0x8cf6[4]);var router=express.Router();router[_0x8cf6[12]](_0x8cf6[5],license[_0x8cf6[6]](),license[_0x8cf6[7]](),auth[_0x8cf6[8]](),auth[_0x8cf6[10]]([9],[_0x8cf6[9]]),controller[_0x8cf6[11]]);router[_0x8cf6[12]](_0x8cf6[13],license[_0x8cf6[6]](),license[_0x8cf6[7]](),auth[_0x8cf6[8]](),auth[_0x8cf6[10]]([9],[_0x8cf6[9]]),controller[_0x8cf6[14]]);router[_0x8cf6[12]](_0x8cf6[15],license[_0x8cf6[6]](),license[_0x8cf6[7]](),auth[_0x8cf6[8]](),auth[_0x8cf6[10]]([9],[_0x8cf6[9]]),controller[_0x8cf6[16]]);router[_0x8cf6[19]](_0x8cf6[5],license[_0x8cf6[6]](),license[_0x8cf6[7]](),auth[_0x8cf6[8]](),auth[_0x8cf6[17]](_0x8cf6[9]),controller[_0x8cf6[18]]);router[_0x8cf6[19]](_0x8cf6[15],license[_0x8cf6[6]](),license[_0x8cf6[7]](),auth[_0x8cf6[8]](),auth[_0x8cf6[17]](_0x8cf6[9]),controller[_0x8cf6[20]]);router[_0x8cf6[22]](_0x8cf6[13],license[_0x8cf6[6]](),license[_0x8cf6[7]](),auth[_0x8cf6[8]](),auth[_0x8cf6[17]](_0x8cf6[9]),controller[_0x8cf6[21]]);router[_0x8cf6[24]](_0x8cf6[5],license[_0x8cf6[6]](),license[_0x8cf6[7]](),auth[_0x8cf6[8]](),auth[_0x8cf6[17]](_0x8cf6[9]),controller[_0x8cf6[23]]);router[_0x8cf6[24]](_0x8cf6[13],license[_0x8cf6[6]](),license[_0x8cf6[7]](),auth[_0x8cf6[8]](),auth[_0x8cf6[17]](_0x8cf6[9]),controller[_0x8cf6[25]]);router[_0x8cf6[24]](_0x8cf6[15],license[_0x8cf6[6]](),license[_0x8cf6[7]](),auth[_0x8cf6[8]](),auth[_0x8cf6[17]](_0x8cf6[9]),controller[_0x8cf6[26]]);module[_0x8cf6[27]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_queue/mail_queue.controller.js b/server/api/mail_queue/mail_queue.controller.js index 25e8a48..66dc905 100644 --- a/server/api/mail_queue/mail_queue.controller.js +++ b/server/api/mail_queue/mail_queue.controller.js @@ -1 +1 @@ -var _0xe776=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x61\x69\x6C\x51\x75\x65\x75\x65","\x55\x73\x65\x72","\x55\x73\x65\x72\x48\x61\x73\x4D\x61\x69\x6C\x51\x75\x65\x75\x65","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x69\x64","\x75\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x67\x65\x74\x51\x75\x65\x72\x79","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x66\x61\x75\x6C\x74","\x73\x63\x6F\x70\x65","\x72\x6F\x6C\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x70\x61\x72\x61\x6D\x73","\x63\x72\x65\x61\x74\x65","\x68\x61\x6E\x64\x6C\x65\x55\x6E\x69\x71\x75\x65\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x65\x72\x72\x6F\x72\x4D\x61\x6E\x61\x67\x65\x72","\x61\x67\x65\x6E\x74\x73","\x62\x6F\x64\x79","\x70\x65\x6E\x61\x6C\x74\x79","\x6E\x61\x6D\x65","\x61\x64\x64\x55\x73\x65\x72\x73","\x75\x70\x64\x61\x74\x65","\x73\x61\x76\x65","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x6D\x61\x70","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x72\x65\x6D\x6F\x76\x65\x55\x73\x65\x72\x73","\x64\x65\x73\x74\x72\x6F\x79","\x71\x75\x65\x75\x65","\x68\x61\x6E\x64\x6C\x65\x46\x6F\x72\x65\x69\x67\x6E\x4B\x65\x79\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x6C\x65\x6E\x67\x74\x68","\x61\x67\x65\x6E\x74","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x67\x65\x74\x55\x73\x65\x72\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0xe776[0];var _=require(_0xe776[1]);var util=require(_0xe776[2]);var Util=require(_0xe776[3]);var logger=require(_0xe776[5])(_0xe776[4]);var sequelize=require(_0xe776[7])[_0xe776[6]];var MailQueue=require(_0xe776[7])[_0xe776[8]];var User=require(_0xe776[7])[_0xe776[9]];var UserHasMailQueue=require(_0xe776[7])[_0xe776[10]];exports[_0xe776[11]]= function(_0xd1f3x9,_0xd1f3xa){switch(_0xd1f3x9[_0xe776[19]][_0xe776[26]]){case _0xe776[19]:return User[_0xe776[20]](_0xd1f3x9[_0xe776[19]][_0xe776[18]],{attributes:[_0xe776[18]]})[_0xe776[15]](Util[_0xe776[17]](_0xd1f3x9[_0xe776[16]]))[_0xe776[15]](function(_0xd1f3xc){_0xd1f3xa[_0xe776[14]](200)[_0xe776[13]](_0xd1f3xc)})[_0xe776[12]](function(_0xd1f3xb){return handleError(_0xd1f3xa,_0xd1f3xb)});default:return MailQueue[_0xe776[25]](_0xe776[24])[_0xe776[23]](_[_0xe776[22]](Util[_0xe776[21]](_0xd1f3x9[_0xe776[16]]),{distinct:true}))[_0xe776[15]](function(_0xd1f3xc){_0xd1f3xa[_0xe776[14]](200)[_0xe776[13]](_0xd1f3xc)})[_0xe776[12]](function(_0xd1f3xb){return handleError(_0xd1f3xa,_0xd1f3xb)})}};exports[_0xe776[27]]= function(_0xd1f3x9,_0xd1f3xa){return MailQueue[_0xe776[25]](_0xe776[24])[_0xe776[20]](_0xd1f3x9[_0xe776[29]][_0xe776[18]])[_0xe776[15]](function(_0xd1f3xd){if(!_0xd1f3xd){return _0xd1f3xa[_0xe776[28]](404)};return _0xd1f3xa[_0xe776[13]](_0xd1f3xd)})[_0xe776[12]](function(_0xd1f3xb){return handleError(_0xd1f3xa,_0xd1f3xb)})};exports[_0xe776[30]]= function(_0xd1f3x9,_0xd1f3xa){var _0xd1f3xe;return MailQueue[_0xe776[30]](_0xd1f3x9[_0xe776[34]])[_0xe776[15]](function(_0xd1f3xd){_0xd1f3xe= _0xd1f3xd;if(_0xd1f3x9[_0xe776[34]][_0xe776[33]]){return _0xd1f3xe[_0xe776[37]](_0xd1f3x9[_0xe776[34]][_0xe776[33]],{penalty:_0xd1f3x9[_0xe776[34]][_0xe776[35]]|| 0,queue:_0xd1f3xe[_0xe776[36]]})}})[_0xe776[15]](function(){return _0xd1f3xa[_0xe776[14]](201)[_0xe776[13]](_0xd1f3xe)})[_0xe776[12]](sequelize.UniqueConstraintError,function(_0xd1f3xb){return Util[_0xe776[32]][_0xe776[31]](_0xd1f3xa,_0xd1f3xb)})[_0xe776[12]](function(_0xd1f3xb){return handleError(_0xd1f3xa,_0xd1f3xb)})};exports[_0xe776[38]]= function(_0xd1f3x9,_0xd1f3xa){if(_0xd1f3x9[_0xe776[34]][_0xe776[18]]){delete _0xd1f3x9[_0xe776[34]][_0xe776[18]]};return MailQueue[_0xe776[20]](_0xd1f3x9[_0xe776[29]][_0xe776[18]])[_0xe776[15]](function(_0xd1f3xd){if(!_0xd1f3xd){return _0xd1f3xa[_0xe776[28]](404)};var _0xd1f3xf=_[_0xe776[22]](_0xd1f3xd,_0xd1f3x9[_0xe776[34]]);return _0xd1f3xf[_0xe776[39]]()})[_0xe776[15]](function(_0xd1f3xd){return _0xd1f3xa[_0xe776[14]](200)[_0xe776[13]](_0xd1f3xd)})[_0xe776[12]](sequelize.UniqueConstraintError,function(_0xd1f3xb){return Util[_0xe776[32]][_0xe776[31]](_0xd1f3xa,_0xd1f3xb)})[_0xe776[12]](function(_0xd1f3xb){return handleError(_0xd1f3xa,_0xd1f3xb)})};exports[_0xe776[40]]= function(_0xd1f3x9,_0xd1f3xa,_0xd1f3x10){return MailQueue[_0xe776[20]](_0xd1f3x9[_0xe776[29]][_0xe776[18]])[_0xe776[15]](function(_0xd1f3xd){if(!_0xd1f3xd){return _0xd1f3xa[_0xe776[28]](404)};var _0xd1f3x11=_[_0xe776[41]](_0xd1f3x9[_0xe776[34]][_0xe776[33]],function(_0xd1f3x12){return {UserId:_0xd1f3x12,penalty:_0xd1f3x9[_0xe776[34]][_0xe776[35]],MailQueueId:_0xd1f3xd[_0xe776[18]],queue:_0xd1f3xd[_0xe776[36]]}});return UserHasMailQueue[_0xe776[42]](_0xd1f3x11,{individualHooks:true})})[_0xe776[15]](function(){return _0xd1f3xa[_0xe776[28]](200)})[_0xe776[12]](function(_0xd1f3xb){return handleError(_0xd1f3xa,_0xd1f3xb)})};exports[_0xe776[43]]= function(_0xd1f3x9,_0xd1f3xa){return MailQueue[_0xe776[20]](_0xd1f3x9[_0xe776[29]][_0xe776[18]])[_0xe776[15]](function(_0xd1f3x13){if(!_0xd1f3x13){return _0xd1f3xa[_0xe776[28]](404)};return _0xd1f3x13[_0xe776[44]](_0xd1f3x9[_0xe776[16]][_0xe776[33]],{individualHooks:true})})[_0xe776[15]](function(){return _0xd1f3xa[_0xe776[28]](200)})[_0xe776[12]](function(_0xd1f3xb){return handleError(_0xd1f3xa,_0xd1f3xb)})};exports[_0xe776[45]]= function(_0xd1f3x9,_0xd1f3xa){var _0xd1f3xe;return MailQueue[_0xe776[20]](_0xd1f3x9[_0xe776[29]][_0xe776[18]])[_0xe776[15]](function(_0xd1f3xd){_0xd1f3xe= _0xd1f3xd;if(!_0xd1f3xd){return _0xd1f3xa[_0xe776[28]](404)};return _0xd1f3xd[_0xe776[45]]()})[_0xe776[15]](function(){return _0xd1f3xa[_0xe776[28]](204)})[_0xe776[12]](sequelize.ForeignKeyConstraintError,function(_0xd1f3xb){return Util[_0xe776[32]][_0xe776[47]](_0xd1f3xa,_0xe776[46],_0xd1f3xe[_0xe776[36]],_0xd1f3xb)})[_0xe776[12]](function(_0xd1f3xb){return handleError(_0xd1f3xa,_0xd1f3xb)})};exports[_0xe776[48]]= function(_0xd1f3x9,_0xd1f3xa){return MailQueue[_0xe776[45]]({where:{id:_0xd1f3x9[_0xe776[16]][_0xe776[49]]},individualHooks:true})[_0xe776[15]](function(){return _0xd1f3xa[_0xe776[28]](204)})[_0xe776[12]](function(_0xd1f3xb){return handleError(_0xd1f3xa,_0xd1f3xb)})};exports[_0xe776[50]]= function(_0xd1f3x9,_0xd1f3xa){return MailQueue[_0xe776[20]](_0xd1f3x9[_0xe776[29]][_0xe776[18]])[_0xe776[15]](function(_0xd1f3x13){if(!_0xd1f3x13){return _0xd1f3xa[_0xe776[28]](404)};return _0xd1f3x13[_0xe776[55]]({where:{role:_0xe776[52]},attributes:[_0xe776[18],_0xe776[36],_0xe776[53],_0xe776[54]]})})[_0xe776[15]](function(_0xd1f3x14){return _0xd1f3xa[_0xe776[14]](200)[_0xe776[13]]({rows:_0xd1f3x14,count:_0xd1f3x14[_0xe776[51]]})})[_0xe776[12]](function(_0xd1f3xb){return handleError(_0xd1f3xa,_0xd1f3xb)})};function handleError(_0xd1f3xa,_0xd1f3xb){logger[_0xe776[57]](_0xd1f3xb[_0xe776[56]]);return _0xd1f3xa[_0xe776[14]](500)[_0xe776[13]](_0xd1f3xb)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_queue/mail_queue.events.js b/server/api/mail_queue/mail_queue.events.js index 66a68a3..66dc905 100644 --- a/server/api/mail_queue/mail_queue.events.js +++ b/server/api/mail_queue/mail_queue.events.js @@ -1 +1 @@ -var _0xe9d0=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4D\x61\x69\x6C\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xe9d0[0];const EventEmitter=require(_0xe9d0[1]);const MailQueue=require(_0xe9d0[3])[_0xe9d0[2]];var MailQueueEvents= new EventEmitter();MailQueueEvents[_0xe9d0[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xe9d0[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xe9d0[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xe9d0[6]};for(var e in events){var event=events[e];MailQueue[_0xe9d0[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xc41dx8,_0xc41dx9,_0xc41dxa){MailQueueEvents[_0xe9d0[10]](event+ _0xe9d0[8]+ _0xc41dx8[_0xe9d0[9]],_0xc41dx8);MailQueueEvents[_0xe9d0[10]](event,_0xc41dx8);_0xc41dxa(null)}}module[_0xe9d0[11]]= MailQueueEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_queue/mail_queue.socket.js b/server/api/mail_queue/mail_queue.socket.js index be9a28f..66dc905 100644 --- a/server/api/mail_queue/mail_queue.socket.js +++ b/server/api/mail_queue/mail_queue.socket.js @@ -1 +1 @@ -var _0x4da1=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6D\x61\x69\x6C\x5F\x71\x75\x65\x75\x65\x2E\x65\x76\x65\x6E\x74\x73","\x4D\x61\x69\x6C\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6C\x6F\x64\x61\x73\x68","\x62\x6C\x75\x65\x62\x69\x72\x64","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6D\x61\x69\x6C\x5F\x71\x75\x65\x75\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x72\x6F\x6C\x65","\x61\x64\x6D\x69\x6E","\x6E\x61\x6D\x65","\x6A\x6F\x69\x6E","\x65\x6D\x69\x74","\x6D\x61\x69\x6C\x5F\x71\x75\x65\x75\x65\x3A\x73\x61\x76\x65","\x45\x72\x72\x6F\x72\x20\x66\x69\x6C\x74\x65\x72\x69\x6E\x67\x20\x71\x75\x65\x75\x65\x73\x20\x61\x66\x74\x65\x72\x20\x71\x75\x65\x75\x65\x20\x73\x61\x76\x65","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x74\x68\x65\x6E","\x72\x65\x73\x6F\x6C\x76\x65","\x6D\x61\x69\x6C\x5F\x71\x75\x65\x75\x65\x3A\x75\x70\x64\x61\x74\x65","\x6C\x65\x61\x76\x65","\x6D\x61\x69\x6C\x5F\x71\x75\x65\x75\x65\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x72\x6F\x77\x73","\x6D\x61\x70","\x67\x65\x74\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x75\x73\x65\x72\x49\x64","\x69\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x66\x69\x6E\x64\x41\x6C\x6C"];_0x4da1[0];var MailQueueEvents=require(_0x4da1[1]);var MailQueue=require(_0x4da1[3])[_0x4da1[2]];var User=require(_0x4da1[3])[_0x4da1[4]];var Util=require(_0x4da1[5]);var _=require(_0x4da1[6]);var Promise=require(_0x4da1[7]);var events=[_0x4da1[8],_0x4da1[9]];exports[_0x4da1[10]]= function(_0x1ba7x8){for(var _0x1ba7x9=0,_0x1ba7xa=events[_0x4da1[11]];_0x1ba7x9< _0x1ba7xa;_0x1ba7x9++){var _0x1ba7xb=events[_0x1ba7x9];var _0x1ba7xc=createListener(_0x4da1[12]+ _0x1ba7xb,_0x1ba7x8);MailQueueEvents[_0x4da1[13]](_0x1ba7xb,_0x1ba7xc);_0x1ba7x8[_0x4da1[13]](_0x4da1[14],removeListener(_0x1ba7xb,_0x1ba7xc))}};function createListener(_0x1ba7xb,_0x1ba7x8){return function(_0x1ba7xe){switch(_0x1ba7xb){case _0x4da1[20]:if(_0x1ba7x8[_0x4da1[15]]=== _0x4da1[16]){_0x1ba7x8[_0x4da1[18]](_0x1ba7xe[_0x4da1[17]]);_0x1ba7x8[_0x4da1[19]](_0x1ba7xb,_0x1ba7xe)};break;case _0x4da1[27]:return Promise[_0x4da1[26]]()[_0x4da1[25]](getMailQueues(_0x1ba7x8))[_0x4da1[25]](function(_0x1ba7x10){if(_[_0x4da1[24]](_0x1ba7x10,_0x1ba7xe[_0x4da1[17]])){_0x1ba7x8[_0x4da1[19]](_0x1ba7xb,_0x1ba7xe)}})[_0x4da1[23]](function(_0x1ba7xf){console[_0x4da1[22]](_0x4da1[21],_0x1ba7xf)});break;case _0x4da1[29]:_0x1ba7x8[_0x4da1[28]](_0x1ba7xe[_0x4da1[17]]);_0x1ba7x8[_0x4da1[19]](_0x1ba7xb,_0x1ba7xe);break;default:}}}function removeListener(_0x1ba7xb,_0x1ba7xc){return function(){MailQueueEvents[_0x4da1[30]](_0x1ba7xb,_0x1ba7xc)}}function getMailQueues(_0x1ba7x13){return function(){switch(_0x1ba7x13[_0x4da1[15]]){case _0x4da1[37]:return User[_0x4da1[36]](_0x1ba7x13[_0x4da1[34]],{attributes:[_0x4da1[35]]})[_0x4da1[25]](Util[_0x4da1[33]]())[_0x4da1[25]](function(_0x1ba7x10){return _[_0x4da1[32]](_0x1ba7x10[_0x4da1[31]],_0x4da1[17])});case _0x4da1[16]:return MailQueue[_0x4da1[38]]()[_0x4da1[25]](function(_0x1ba7x14){return {rows:_0x1ba7x14}})[_0x4da1[25]](function(_0x1ba7x10){return _[_0x4da1[32]](_0x1ba7x10[_0x4da1[31]],_0x4da1[17])});default:return []}}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_room/index.js b/server/api/mail_room/index.js index 72f6c98..66dc905 100644 --- a/server/api/mail_room/index.js +++ b/server/api/mail_room/index.js @@ -1 +1 @@ -var _0xebe3=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x6D\x61\x69\x6C\x5F\x72\x6F\x6F\x6D\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x4D\x61\x69\x6C","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x69\x6E\x62\x6F\x78","\x61\x67\x65\x6E\x74","\x69\x6E\x62\x6F\x78","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x64\x61\x73\x68\x62\x6F\x61\x72\x64","\x67\x65\x74\x44\x61\x73\x68\x62\x6F\x61\x72\x64\x56\x61\x6C\x75\x65\x73","\x2F\x61\x67\x65\x6E\x74\x2F\x3A\x69\x64","\x61\x67\x65\x6E\x74\x49\x6E\x64\x65\x78","\x2F\x6D\x65\x73\x73\x61\x67\x65\x73\x2F\x3A\x69\x64","\x67\x65\x74\x52\x6F\x6F\x6D\x42\x79\x4D\x65\x73\x73\x61\x67\x65","\x2F\x3A\x69\x64","\x75\x73\x65\x72","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x61\x67\x65\x6E\x74\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x2F\x3A\x69\x64\x2F\x6D\x65\x73\x73\x61\x67\x65\x73\x2F\x73\x65\x6E\x64","\x73\x65\x6E\x64\x4D\x65\x73\x73\x61\x67\x65","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x75\x70\x64\x61\x74\x65\x50\x61\x74\x63\x68","\x70\x61\x74\x63\x68","\x75\x70\x64\x61\x74\x65\x41\x67\x65\x6E\x74\x73","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0xebe3[0];var express=require(_0xebe3[1]);var controller=require(_0xebe3[2]);var auth=require(_0xebe3[3]);var license=require(_0xebe3[4]);var router=express.Router();router[_0xebe3[12]](_0xebe3[5],license[_0xebe3[6]](),license[_0xebe3[7]](),auth[_0xebe3[8]](),auth[_0xebe3[10]]([9],[_0xebe3[9]]),controller[_0xebe3[11]]);router[_0xebe3[12]](_0xebe3[13],license[_0xebe3[6]](),license[_0xebe3[7]](),auth[_0xebe3[8]](),auth[_0xebe3[10]]([9],[_0xebe3[9],_0xebe3[14]]),controller[_0xebe3[15]]);router[_0xebe3[12]](_0xebe3[16],license[_0xebe3[6]](),license[_0xebe3[7]](),auth[_0xebe3[8]](),auth[_0xebe3[10]]([9],[_0xebe3[9]]),controller[_0xebe3[17]]);router[_0xebe3[12]](_0xebe3[18],license[_0xebe3[6]](),license[_0xebe3[7]](),auth[_0xebe3[8]](),auth[_0xebe3[10]]([9,17],[_0xebe3[9]]),controller[_0xebe3[19]]);router[_0xebe3[12]](_0xebe3[20],license[_0xebe3[6]](),license[_0xebe3[7]](),auth[_0xebe3[8]](),auth[_0xebe3[10]]([9],[_0xebe3[9]]),controller[_0xebe3[21]]);router[_0xebe3[12]](_0xebe3[22],license[_0xebe3[6]](),license[_0xebe3[7]](),auth[_0xebe3[8]](),auth[_0xebe3[10]]([9],[_0xebe3[9],_0xebe3[14]]),controller[_0xebe3[23]]);router[_0xebe3[12]](_0xebe3[24],license[_0xebe3[6]](),license[_0xebe3[7]](),auth[_0xebe3[8]](),auth[_0xebe3[10]]([9],[_0xebe3[9],_0xebe3[25],_0xebe3[14]]),controller[_0xebe3[26]]);router[_0xebe3[12]](_0xebe3[27],license[_0xebe3[6]](),license[_0xebe3[7]](),auth[_0xebe3[8]](),auth[_0xebe3[10]]([9],[_0xebe3[9],_0xebe3[14]]),controller[_0xebe3[28]]);router[_0xebe3[30]](_0xebe3[5],license[_0xebe3[6]](),license[_0xebe3[7]](),auth[_0xebe3[8]](),auth[_0xebe3[10]]([9],[_0xebe3[9]]),controller[_0xebe3[29]]);router[_0xebe3[30]](_0xebe3[31],license[_0xebe3[6]](),license[_0xebe3[7]](),auth[_0xebe3[8]](),auth[_0xebe3[10]]([9],[_0xebe3[9],_0xebe3[14]]),controller[_0xebe3[32]]);router[_0xebe3[34]](_0xebe3[24],license[_0xebe3[6]](),license[_0xebe3[7]](),auth[_0xebe3[8]](),auth[_0xebe3[10]]([9],[_0xebe3[9],_0xebe3[14]]),controller[_0xebe3[33]]);router[_0xebe3[36]](_0xebe3[24],license[_0xebe3[6]](),license[_0xebe3[7]](),auth[_0xebe3[8]](),auth[_0xebe3[10]]([9],[_0xebe3[9],_0xebe3[14]]),controller[_0xebe3[35]]);router[_0xebe3[34]](_0xebe3[27],license[_0xebe3[6]](),license[_0xebe3[7]](),auth[_0xebe3[8]](),auth[_0xebe3[10]]([9],[_0xebe3[9],_0xebe3[14]]),controller[_0xebe3[37]]);router[_0xebe3[39]](_0xebe3[5],license[_0xebe3[6]](),license[_0xebe3[7]](),auth[_0xebe3[8]](),auth[_0xebe3[10]]([9],[_0xebe3[9]]),controller[_0xebe3[38]]);router[_0xebe3[39]](_0xebe3[24],license[_0xebe3[6]](),license[_0xebe3[7]](),auth[_0xebe3[8]](),auth[_0xebe3[10]]([9],[_0xebe3[9]]),controller[_0xebe3[40]]);module[_0xebe3[41]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_room/mail_room.controller.js b/server/api/mail_room/mail_room.controller.js index cdf5fb0..66dc905 100644 --- a/server/api/mail_room/mail_room.controller.js +++ b/server/api/mail_room/mail_room.controller.js @@ -1 +1 @@ -var _0xcc30=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x68\x74\x6D\x6C\x2D\x74\x6F\x2D\x74\x65\x78\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6D\x6F\x6D\x65\x6E\x74","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x43\x6F\x6E\x74\x61\x63\x74","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x53\x74\x61\x74\x75\x73","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x4D\x61\x69\x6C\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x4D\x61\x69\x6C\x51\x75\x65\x75\x65","\x4D\x61\x69\x6C\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x66\x61\x75\x6C\x74","\x73\x63\x6F\x70\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x69\x64","\x6D\x61\x70","\x67\x65\x74\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x72\x6F\x6C\x65","\x70\x65\x6E\x64\x69\x6E\x67","\x50\x45\x4E\x44\x49\x4E\x47","\x64\x61\x79","\x73\x74\x61\x72\x74\x4F\x66","\x6D\x65\x72\x67\x65","\x63\x6F\x75\x6E\x74","\x61\x6C\x6C","\x6E\x65\x77","\x4E\x45\x57","\x6F\x70\x65\x6E","\x4F\x50\x45\x4E","\x63\x6C\x6F\x73\x65\x64","\x43\x4C\x4F\x53\x45\x44","\x69\x6E\x62\x6F\x78","\x53\x45\x4C\x45\x43\x54\x20\x60\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x60\x2E\x60\x69\x64\x60\x2C\x20\x60\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x60\x2E\x60\x73\x75\x62\x6A\x65\x63\x74\x60\x2C\x20\x60\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x60\x2E\x60\x66\x72\x6F\x6D\x60\x2C\x20\x60\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x60\x2E\x60\x61\x63\x63\x6F\x75\x6E\x74\x60\x2C\x20\x60\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x60\x2E\x60\x73\x74\x61\x74\x75\x73\x60\x2C\x20\x60\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x60\x2E\x60\x6C\x61\x73\x74\x45\x76\x65\x6E\x74\x60\x2C\x20\x60\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x60\x2E\x60\x75\x70\x64\x61\x74\x65\x64\x41\x74\x60\x20\x46\x52\x4F\x4D\x20\x60\x6D\x61\x69\x6C\x5F\x72\x6F\x6F\x6D\x73\x60\x20\x41\x53\x20\x60\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x60\x20\x4C\x45\x46\x54\x20\x4F\x55\x54\x45\x52\x20\x4A\x4F\x49\x4E\x20\x28\x60\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6D\x61\x69\x6C\x5F\x72\x6F\x6F\x6D\x73\x60\x20\x41\x53\x20\x60\x55\x73\x65\x72\x73\x2E\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6D\x61\x69\x6C\x5F\x72\x6F\x6F\x6D\x73\x60\x20\x49\x4E\x4E\x45\x52\x20\x4A\x4F\x49\x4E\x20\x60\x75\x73\x65\x72\x73\x60\x20\x41\x53\x20\x60\x55\x73\x65\x72\x73\x60\x20\x4F\x4E\x20\x60\x55\x73\x65\x72\x73\x60\x2E\x60\x69\x64\x60\x20\x3D\x20\x60\x55\x73\x65\x72\x73\x2E\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6D\x61\x69\x6C\x5F\x72\x6F\x6F\x6D\x73\x60\x2E\x60\x55\x73\x65\x72\x49\x64\x60\x29\x20\x4F\x4E\x20\x60\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x60\x2E\x60\x69\x64\x60\x20\x3D\x20\x60\x55\x73\x65\x72\x73\x2E\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6D\x61\x69\x6C\x5F\x72\x6F\x6F\x6D\x73\x60\x2E\x60\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x49\x64\x60\x20\x57\x48\x45\x52\x45\x20\x28\x60\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x60\x2E\x60\x64\x65\x6C\x65\x74\x65\x64\x41\x74\x60\x20\x49\x53\x20\x4E\x55\x4C\x4C\x20\x41\x4E\x44\x20\x28\x60\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x60\x2E\x60\x73\x74\x61\x74\x75\x73\x60\x20\x3D\x20\x3A\x73\x74\x61\x74\x75\x73\x20\x4F\x52\x20\x60\x55\x73\x65\x72\x73\x60\x2E\x60\x69\x64\x60\x20\x3D\x20\x3A\x69\x64\x29\x29","\x55\x4E\x4D\x41\x4E\x41\x47\x45\x44","\x53\x45\x4C\x45\x43\x54","\x51\x75\x65\x72\x79\x54\x79\x70\x65\x73","\x61\x67\x65\x6E\x74","\x53\x45\x4C\x45\x43\x54\x20\x60\x69\x64\x60\x2C\x20\x60\x73\x75\x62\x6A\x65\x63\x74\x60\x2C\x20\x60\x66\x72\x6F\x6D\x60\x2C\x20\x60\x61\x63\x63\x6F\x75\x6E\x74\x60\x2C\x20\x60\x73\x74\x61\x74\x75\x73\x60\x2C\x20\x60\x6C\x61\x73\x74\x45\x76\x65\x6E\x74\x60\x20\x2C\x60\x75\x70\x64\x61\x74\x65\x64\x41\x74\x60\x20\x46\x52\x4F\x4D\x20\x60\x6D\x61\x69\x6C\x5F\x72\x6F\x6F\x6D\x73\x60\x20\x57\x48\x45\x52\x45\x20\x60\x6D\x61\x69\x6C\x5F\x72\x6F\x6F\x6D\x73\x60\x2E\x60\x64\x65\x6C\x65\x74\x65\x64\x41\x74\x60\x20\x49\x53\x20\x4E\x55\x4C\x4C","\x61\x67\x65\x6E\x74\x49\x6E\x64\x65\x78","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x41\x6C\x6C","\x75\x70\x64\x61\x74\x65\x52\x6F\x6F\x6D\x53\x74\x61\x74\x75\x73","\x62\x6F\x64\x79","\x64\x65\x62\x75\x67","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x2C","\x73\x70\x6C\x69\x74","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x75\x70\x64\x61\x74\x65","\x67\x65\x74\x52\x6F\x6F\x6D\x42\x79\x4D\x65\x73\x73\x61\x67\x65","\x65\x6D\x61\x69\x6C","\x67\x65\x74\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x73\x68\x6F\x77","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x69\x6E\x74\x65\x72\x6E\x61\x6C","\x67\x65\x74\x55\x73\x65\x72\x73","\x63\x72\x65\x61\x74\x65","\x73\x65\x6E\x64\x4D\x65\x73\x73\x61\x67\x65","\x55\x73\x65\x72\x49\x64","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x49\x64","\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x4D\x61\x69\x6C\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x73","\x6C\x65\x6E\x67\x74\x68","\x74\x65\x78\x74","\x68\x74\x6D\x6C","\x66\x72\x6F\x6D\x53\x74\x72\x69\x6E\x67","\x61\x63\x63\x6F\x75\x6E\x74\x49\x64","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x61\x63\x63\x6F\x75\x6E\x74\x4E\x61\x6D\x65","\x61\x63\x63\x6F\x75\x6E\x74","\x75\x70\x64\x61\x74\x65\x50\x61\x74\x63\x68","\x75\x70\x64\x61\x74\x65\x41\x67\x65\x6E\x74\x73","\x61\x67\x65\x6E\x74\x73","\x73\x65\x74\x55\x73\x65\x72\x73","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x67\x65\x74\x44\x61\x73\x68\x62\x6F\x61\x72\x64\x56\x61\x6C\x75\x65\x73","\x6B\x65\x79\x42\x79","\x6D\x61\x70\x56\x61\x6C\x75\x65\x73","\x53\x45\x4C\x45\x43\x54\x20\x4C\x4F\x57\x45\x52\x28\x73\x74\x61\x74\x75\x73\x29\x20\x41\x53\x20\x73\x74\x61\x74\x75\x73\x2C\x20\x43\x4F\x55\x4E\x54\x28\x69\x64\x29\x20\x41\x53\x20\x63\x6F\x75\x6E\x74\x20\x46\x52\x4F\x4D\x20\x6D\x61\x69\x6C\x5F\x72\x6F\x6F\x6D\x73\x20\x57\x48\x45\x52\x45\x20\x64\x65\x6C\x65\x74\x65\x64\x41\x74\x20\x49\x53\x20\x4E\x55\x4C\x4C\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x73\x74\x61\x74\x75\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0xcc30[0];var _=require(_0xcc30[1]);var util=require(_0xcc30[2]);var htmlToText=require(_0xcc30[3]);var Util=require(_0xcc30[4]);var moment=require(_0xcc30[5]);var logger=require(_0xcc30[7])(_0xcc30[6]);var sequelize=require(_0xcc30[9])[_0xcc30[8]];var User=require(_0xcc30[9])[_0xcc30[10]];var Agent=require(_0xcc30[9])[_0xcc30[10]];var Contact=require(_0xcc30[9])[_0xcc30[11]];var Status=require(_0xcc30[9])[_0xcc30[12]];var MailRoom=require(_0xcc30[9])[_0xcc30[13]];var MailMessage=require(_0xcc30[9])[_0xcc30[14]];var MailAccount=require(_0xcc30[9])[_0xcc30[15]];var MailApplication=require(_0xcc30[9])[_0xcc30[16]];var MailQueue=require(_0xcc30[9])[_0xcc30[17]];var MailAttachment=require(_0xcc30[9])[_0xcc30[18]];exports[_0xcc30[19]]= function(_0x9350x12,_0x9350x13,_0x9350x14){return MailRoom[_0xcc30[28]](_0xcc30[27])[_0xcc30[26]](Util[_0xcc30[25]](_0x9350x12[_0xcc30[24]]))[_0xcc30[23]](function(_0x9350x16){return _0x9350x13[_0xcc30[22]](200)[_0xcc30[21]](_0x9350x16)})[_0xcc30[20]](function(_0x9350x15){return handleError(_0x9350x13,_0x9350x15)})};exports[_0xcc30[29]]= function(_0x9350x12,_0x9350x13){return MailRoom[_0xcc30[29]]()[_0xcc30[23]](function(_0x9350x17){return _0x9350x13[_0xcc30[22]](200)[_0xcc30[21]](_0x9350x17)})[_0xcc30[20]](function(_0x9350x15){return handleError(_0x9350x13,_0x9350x15)})};function getMailQueues(_0x9350x19){return function(){switch(_0x9350x19[_0xcc30[35]]){case _0xcc30[34]:return User[_0xcc30[33]](_0x9350x19[_0xcc30[30]],{attributes:[_0xcc30[30]]})[_0xcc30[23]](Util[_0xcc30[32]]({},{attributes:[_0xcc30[30]]}))[_0xcc30[23]](function(_0x9350x1a){return {include:{model:MailAccount,include:{model:MailApplication,include:{model:MailQueue,where:{id:_[_0xcc30[31]](_0x9350x1a,_0xcc30[30])}}}}}});default:return {}}}}exports[_0xcc30[36]]= function(_0x9350x12,_0x9350x13){return Promise[_0xcc30[42]]([])[_0xcc30[23]](getMailQueues(_0x9350x12[_0xcc30[34]]))[_0xcc30[23]](function(_0x9350x1c){return MailRoom[_0xcc30[41]](_[_0xcc30[40]](Util[_0xcc30[25]](_0x9350x12[_0xcc30[24]],{status:_0xcc30[37],updatedAt:{$gte:moment()[_0xcc30[39]](_0xcc30[38])}}),_0x9350x1c))})[_0xcc30[23]](function(_0x9350x1b){return _0x9350x13[_0xcc30[22]](200)[_0xcc30[21]]({value:_0x9350x1b})})[_0xcc30[20]](function(_0x9350x15){return handleError(_0x9350x13,_0x9350x15)})};exports[_0xcc30[43]]= function(_0x9350x12,_0x9350x13){return Promise[_0xcc30[42]]([])[_0xcc30[23]](getMailQueues(_0x9350x12[_0xcc30[34]]))[_0xcc30[23]](function(_0x9350x1c){return MailRoom[_0xcc30[41]](_[_0xcc30[40]](Util[_0xcc30[25]](_0x9350x12[_0xcc30[24]],{status:_0xcc30[44],updatedAt:{$gte:moment()[_0xcc30[39]](_0xcc30[38])}}),_0x9350x1c))})[_0xcc30[23]](function(_0x9350x1b){return _0x9350x13[_0xcc30[22]](200)[_0xcc30[21]]({value:_0x9350x1b})})[_0xcc30[20]](function(_0x9350x15){return handleError(_0x9350x13,_0x9350x15)})};exports[_0xcc30[45]]= function(_0x9350x12,_0x9350x13){return Promise[_0xcc30[42]]([])[_0xcc30[23]](getMailQueues(_0x9350x12[_0xcc30[34]]))[_0xcc30[23]](function(_0x9350x1c){return MailRoom[_0xcc30[41]](_[_0xcc30[40]](Util[_0xcc30[25]](_0x9350x12[_0xcc30[24]],{status:_0xcc30[46],updatedAt:{$gte:moment()[_0xcc30[39]](_0xcc30[38])}}),_0x9350x1c))})[_0xcc30[23]](function(_0x9350x1b){return _0x9350x13[_0xcc30[22]](200)[_0xcc30[21]]({value:_0x9350x1b})})[_0xcc30[20]](function(_0x9350x15){return handleError(_0x9350x13,_0x9350x15)})};exports[_0xcc30[47]]= function(_0x9350x12,_0x9350x13){return Promise[_0xcc30[42]]([])[_0xcc30[23]](getMailQueues(_0x9350x12[_0xcc30[34]]))[_0xcc30[23]](function(_0x9350x1c){return MailRoom[_0xcc30[41]](_[_0xcc30[40]](Util[_0xcc30[25]](_0x9350x12[_0xcc30[24]],{status:_0xcc30[48],updatedAt:{$gte:moment()[_0xcc30[39]](_0xcc30[38])}}),_0x9350x1c))})[_0xcc30[23]](function(_0x9350x1b){return _0x9350x13[_0xcc30[22]](200)[_0xcc30[21]]({value:_0x9350x1b})})[_0xcc30[20]](function(_0x9350x15){return handleError(_0x9350x13,_0x9350x15)})};exports[_0xcc30[49]]= function(_0x9350x12,_0x9350x13,_0x9350x14){switch(_0x9350x12[_0xcc30[34]][_0xcc30[35]]){case _0xcc30[54]:return sequelize[_0xcc30[24]](_0xcc30[50],{replacements:{status:_0xcc30[51],id:_0x9350x12[_0xcc30[34]][_0xcc30[30]]},type:sequelize[_0xcc30[53]][_0xcc30[52]]})[_0xcc30[23]](function(_0x9350x16){return _0x9350x13[_0xcc30[22]](200)[_0xcc30[21]](_0x9350x16)})[_0xcc30[20]](function(_0x9350x15){return handleError(_0x9350x13,_0x9350x15)});default:return sequelize[_0xcc30[24]](_0xcc30[55],{replacements:{status:_0xcc30[51],id:_0x9350x12[_0xcc30[34]][_0xcc30[30]]},type:sequelize[_0xcc30[53]][_0xcc30[52]]})[_0xcc30[23]](function(_0x9350x16){return _0x9350x13[_0xcc30[22]](200)[_0xcc30[21]](_0x9350x16)})[_0xcc30[20]](function(_0x9350x15){return handleError(_0x9350x13,_0x9350x15)})}};exports[_0xcc30[56]]= function(_0x9350x12,_0x9350x13,_0x9350x14){return MailRoom[_0xcc30[58]]({where:{UserId:_0x9350x12[_0xcc30[57]][_0xcc30[30]]},include:[{all:true}]})[_0xcc30[23]](function(_0x9350x1d){return _0x9350x13[_0xcc30[22]](200)[_0xcc30[21]](_0x9350x1d)})[_0xcc30[20]](function(_0x9350x15){return handleError(_0x9350x13,_0x9350x15)})};exports[_0xcc30[59]]= function(_0x9350x12,_0x9350x13,_0x9350x14){var _0x9350x1e;var _0x9350x1f=[];logger[_0xcc30[61]](_0x9350x12[_0xcc30[60]]);logger[_0xcc30[61]](_0x9350x12[_0xcc30[57]]);return MailRoom[_0xcc30[68]](_0x9350x12[_0xcc30[60]],{where:{id:_0x9350x12[_0xcc30[57]][_0xcc30[30]][_0xcc30[64]](_0xcc30[63])},individualHooks:true})[_0xcc30[23]](function(){return Status[_0xcc30[67]](_[_0xcc30[31]](_0x9350x12[_0xcc30[57]][_0xcc30[30]][_0xcc30[64]](_0xcc30[63]),function(_0x9350x20){return {status:_0x9350x12[_0xcc30[60]][_0xcc30[22]],data1:_0x9350x12[_0xcc30[34]][_0xcc30[65]],data2:_0x9350x12[_0xcc30[34]][_0xcc30[66]],MailRoomId:_0x9350x20,UserId:_0x9350x12[_0xcc30[34]][_0xcc30[30]]}}))})[_0xcc30[23]](function(_0x9350x1d){return _0x9350x13[_0xcc30[62]](200)})[_0xcc30[20]](function(_0x9350x15){return handleError(_0x9350x13,_0x9350x15)})};exports[_0xcc30[69]]= function(_0x9350x12,_0x9350x13,_0x9350x14){return MailMessage[_0xcc30[33]](_0x9350x12[_0xcc30[57]][_0xcc30[30]])[_0xcc30[23]](function(_0x9350x22){return _0x9350x22[_0xcc30[71]]({include:[{model:MailAccount},{model:MailMessage,include:[{model:MailAttachment},{model:User,attributes:[_0xcc30[30],_0xcc30[65],_0xcc30[66],_0xcc30[70]]}]},{model:User,attributes:[_0xcc30[30],_0xcc30[65],_0xcc30[66],_0xcc30[70]]}]})})[_0xcc30[23]](function(_0x9350x21){return _0x9350x13[_0xcc30[21]](_0x9350x21)})[_0xcc30[20]](function(_0x9350x15){return handleError(_0x9350x13,_0x9350x15)})};exports[_0xcc30[72]]= function(_0x9350x12,_0x9350x13,_0x9350x14){return MailRoom[_0xcc30[28]](_0xcc30[27])[_0xcc30[33]](_0x9350x12[_0xcc30[57]][_0xcc30[30]])[_0xcc30[23]](function(_0x9350x21){if(!_0x9350x21){return _0x9350x13[_0xcc30[62]](404)};return _0x9350x13[_0xcc30[21]](_0x9350x21)})[_0xcc30[20]](function(_0x9350x15){return handleError(_0x9350x13,_0x9350x15)})};exports[_0xcc30[73]]= function(_0x9350x12,_0x9350x13,_0x9350x14){return MailRoom[_0xcc30[33]](_0x9350x12[_0xcc30[57]][_0xcc30[30]])[_0xcc30[23]](function(_0x9350x21){if(!_0x9350x21){return _0x9350x13[_0xcc30[62]](404)};return _0x9350x21[_0xcc30[75]]({attributes:[_0xcc30[30],_0xcc30[65],_0xcc30[66],_0xcc30[70],_0xcc30[35],_0xcc30[74]]})})[_0xcc30[23]](function(_0x9350x23){return _0x9350x13[_0xcc30[21]](_0x9350x23)})[_0xcc30[20]](function(_0x9350x15){return handleError(_0x9350x13,_0x9350x15)})};exports[_0xcc30[76]]= function(_0x9350x12,_0x9350x13,_0x9350x14){return MailRoom[_0xcc30[76]](_0x9350x12[_0xcc30[60]])[_0xcc30[23]](function(_0x9350x21){return _0x9350x13[_0xcc30[22]](201)[_0xcc30[21]](_0x9350x21)})[_0xcc30[20]](function(_0x9350x15){return handleError(_0x9350x13,_0x9350x15)})};exports[_0xcc30[77]]= function(_0x9350x12,_0x9350x13,_0x9350x14){_0x9350x12[_0xcc30[60]][_0xcc30[78]]= _0x9350x12[_0xcc30[34]][_0xcc30[30]];_0x9350x12[_0xcc30[60]][_0xcc30[79]]= _0x9350x12[_0xcc30[57]][_0xcc30[30]];_0x9350x12[_0xcc30[60]][_0xcc30[80]]= (_0x9350x12[_0xcc30[60]][_0xcc30[81]]&& _0x9350x12[_0xcc30[60]][_0xcc30[81]][_0xcc30[82]])?true:false;_0x9350x12[_0xcc30[60]][_0xcc30[83]]= _0x9350x12[_0xcc30[60]][_0xcc30[83]]|| htmlToText[_0xcc30[85]](_0x9350x12[_0xcc30[60]][_0xcc30[84]],{wordwrap:false});return MailRoom[_0xcc30[33]](_0x9350x12[_0xcc30[57]][_0xcc30[30]])[_0xcc30[23]](function(_0x9350x21){_0x9350x12[_0xcc30[60]][_0xcc30[86]]= _0x9350x21[_0xcc30[87]];_0x9350x12[_0xcc30[60]][_0xcc30[88]]= _0x9350x21[_0xcc30[89]];return MailMessage[_0xcc30[76]](_0x9350x12[_0xcc30[60]],{include:[{model:MailAttachment}],user:_0x9350x12[_0xcc30[34]]})})[_0xcc30[23]](function(_0x9350x22){return _0x9350x13[_0xcc30[22]](201)[_0xcc30[21]](_0x9350x22)})[_0xcc30[20]](function(_0x9350x15){return handleError(_0x9350x13,_0x9350x15)})};exports[_0xcc30[68]]= function(_0x9350x12,_0x9350x13,_0x9350x14){return MailRoom[_0xcc30[33]](_0x9350x12[_0xcc30[57]][_0xcc30[30]])[_0xcc30[23]](function(_0x9350x21){if(!_0x9350x21){return _0x9350x13[_0xcc30[62]](404)};return _0x9350x21[_0xcc30[68]](_0x9350x12[_0xcc30[60]])})[_0xcc30[23]](function(_0x9350x21){return _0x9350x13[_0xcc30[22]](200)[_0xcc30[21]](_0x9350x21)})[_0xcc30[20]](function(_0x9350x15){return handleError(_0x9350x13,_0x9350x15)})};exports[_0xcc30[90]]= function(_0x9350x12,_0x9350x13,_0x9350x14){var _0x9350x24={where:{id:_0x9350x12[_0xcc30[57]][_0xcc30[30]][_0xcc30[64]](_0xcc30[63])},user:_0x9350x12[_0xcc30[34]],individualHooks:true};return MailRoom[_0xcc30[68]](_0x9350x12[_0xcc30[60]],_0x9350x24)[_0xcc30[23]](function(_0x9350x1d){if(!_0x9350x1d){return _0x9350x13[_0xcc30[62]](404)};return _0x9350x1d})[_0xcc30[23]](function(_0x9350x1d){return _0x9350x13[_0xcc30[62]](200)})[_0xcc30[20]](function(_0x9350x15){return handleError(_0x9350x13,_0x9350x15)})};exports[_0xcc30[91]]= function(_0x9350x12,_0x9350x13,_0x9350x14){return MailRoom[_0xcc30[33]](_0x9350x12[_0xcc30[57]][_0xcc30[30]])[_0xcc30[23]](function(_0x9350x21){if(!_0x9350x21){return _0x9350x13[_0xcc30[62]](404)};return _0x9350x21[_0xcc30[93]](_0x9350x12[_0xcc30[60]][_0xcc30[92]],{individualHooks:true})})[_0xcc30[23]](function(){return _0x9350x13[_0xcc30[62]](200)})[_0xcc30[20]](function(_0x9350x15){return handleError(_0x9350x13,_0x9350x15)})};exports[_0xcc30[94]]= function(_0x9350x12,_0x9350x13,_0x9350x14){return MailRoom[_0xcc30[33]](_0x9350x12[_0xcc30[57]][_0xcc30[30]])[_0xcc30[23]](function(_0x9350x21){if(!_0x9350x21){return _0x9350x13[_0xcc30[62]](404)};return _0x9350x21[_0xcc30[94]]()})[_0xcc30[23]](function(){return _0x9350x13[_0xcc30[62]](204)})[_0xcc30[20]](function(_0x9350x15){return handleError(_0x9350x13,_0x9350x15)})};exports[_0xcc30[95]]= function(_0x9350x12,_0x9350x13){return MailRoom[_0xcc30[94]]({where:{id:_0x9350x12[_0xcc30[24]][_0xcc30[96]]},individualHooks:true})[_0xcc30[23]](function(){return _0x9350x13[_0xcc30[62]](200)})[_0xcc30[20]](function(_0x9350x15){return handleError(_0x9350x13,_0x9350x15)})};exports[_0xcc30[97]]= function(_0x9350x12,_0x9350x13){return sequelize[_0xcc30[24]](_0xcc30[100],{type:sequelize[_0xcc30[53]][_0xcc30[52]]})[_0xcc30[23]](function(_0x9350x25){var _0x9350x26=_[_0xcc30[40]]({new:0,open:0,pending:0,closed:0},_[_0xcc30[99]](_[_0xcc30[98]](_0x9350x25,_0xcc30[22]),_0xcc30[41]));return _0x9350x13[_0xcc30[22]](200)[_0xcc30[21]](_0x9350x26)})[_0xcc30[20]](function(_0x9350x15){return handleError(_0x9350x13,_0x9350x15)})};function handleError(_0x9350x13,_0x9350x15){logger[_0xcc30[102]](_0x9350x15[_0xcc30[101]]);return _0x9350x13[_0xcc30[22]](500)[_0xcc30[21]](_0x9350x15)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_room/mail_room.events.js b/server/api/mail_room/mail_room.events.js index 7481eb7..66dc905 100644 --- a/server/api/mail_room/mail_room.events.js +++ b/server/api/mail_room/mail_room.events.js @@ -1 +1 @@ -var _0xb903=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xb903[0];const EventEmitter=require(_0xb903[1]);const MailRoom=require(_0xb903[3])[_0xb903[2]];var MailRoomEvents= new EventEmitter();MailRoomEvents[_0xb903[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xb903[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xb903[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xb903[6]};for(var e in events){var event=events[e];MailRoom[_0xb903[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x4e1dx8,_0x4e1dx9,_0x4e1dxa){MailRoomEvents[_0xb903[10]](event+ _0xb903[8]+ _0x4e1dx8[_0xb903[9]],_0x4e1dx8);MailRoomEvents[_0xb903[10]](event,_0x4e1dx8);_0x4e1dxa(null)}}module[_0xb903[11]]= MailRoomEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_room/mail_room.socket.js b/server/api/mail_room/mail_room.socket.js index 98fcf1f..66dc905 100644 --- a/server/api/mail_room/mail_room.socket.js +++ b/server/api/mail_room/mail_room.socket.js @@ -1 +1 @@ -var _0x5b8c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6D\x61\x69\x6C\x5F\x72\x6F\x6F\x6D\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6D\x61\x69\x6C\x5F\x72\x6F\x6F\x6D\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x5b8c[0];const MailRoomEvents=require(_0x5b8c[1]);var events=[_0x5b8c[2],_0x5b8c[2],_0x5b8c[3]];exports[_0x5b8c[4]]= function(_0xf899x3){for(var _0xf899x4=0,_0xf899x5=events[_0x5b8c[5]];_0xf899x4< _0xf899x5;_0xf899x4++){var _0xf899x6=events[_0xf899x4];var _0xf899x7=createListener(_0x5b8c[6]+ _0xf899x6,_0xf899x3);MailRoomEvents[_0x5b8c[7]](_0xf899x6,_0xf899x7);_0xf899x3[_0x5b8c[7]](_0x5b8c[8],removeListener(_0xf899x6,_0xf899x7))}};function createListener(_0xf899x6,_0xf899x3){return function(_0xf899x9){_0xf899x3[_0x5b8c[9]](_0xf899x6,_0xf899x9)}}function removeListener(_0xf899x6,_0xf899x7){return function(){MailRoomEvents[_0x5b8c[10]](_0xf899x6,_0xf899x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_server_in/index.js b/server/api/mail_server_in/index.js index e067545..66dc905 100644 --- a/server/api/mail_server_in/index.js +++ b/server/api/mail_server_in/index.js @@ -1 +1 @@ -var _0xe0a2=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x69\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x4D\x61\x69\x6C","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xe0a2[0];var express=require(_0xe0a2[1]);var controller=require(_0xe0a2[2]);var auth=require(_0xe0a2[3]);var license=require(_0xe0a2[4]);var router=express.Router();router[_0xe0a2[12]](_0xe0a2[5],license[_0xe0a2[6]](),license[_0xe0a2[7]](),auth[_0xe0a2[8]](),auth[_0xe0a2[10]]([9],[_0xe0a2[9]]),controller[_0xe0a2[11]]);router[_0xe0a2[12]](_0xe0a2[13],license[_0xe0a2[6]](),license[_0xe0a2[7]](),auth[_0xe0a2[8]](),auth[_0xe0a2[10]]([9],[_0xe0a2[9]]),controller[_0xe0a2[14]]);router[_0xe0a2[16]](_0xe0a2[5],license[_0xe0a2[6]](),license[_0xe0a2[7]](),auth[_0xe0a2[8]](),auth[_0xe0a2[10]]([9],[_0xe0a2[9]]),controller[_0xe0a2[15]]);router[_0xe0a2[18]](_0xe0a2[13],license[_0xe0a2[6]](),license[_0xe0a2[7]](),auth[_0xe0a2[8]](),auth[_0xe0a2[10]]([9],[_0xe0a2[9]]),controller[_0xe0a2[17]]);router[_0xe0a2[20]](_0xe0a2[13],license[_0xe0a2[6]](),license[_0xe0a2[7]](),auth[_0xe0a2[8]](),auth[_0xe0a2[10]]([9],[_0xe0a2[9]]),controller[_0xe0a2[19]]);module[_0xe0a2[21]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_server_in/mail_server_in.controller.js b/server/api/mail_server_in/mail_server_in.controller.js index 89a1d63..66dc905 100644 --- a/server/api/mail_server_in/mail_server_in.controller.js +++ b/server/api/mail_server_in/mail_server_in.controller.js @@ -1 +1 @@ -var _0xcb48=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x49\x6E","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x68\x61\x6E\x64\x6C\x65\x55\x6E\x69\x71\x75\x65\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x65\x72\x72\x6F\x72\x4D\x61\x6E\x61\x67\x65\x72","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0xcb48[0];var _=require(_0xcb48[1]);var Util=require(_0xcb48[2]);var logger=require(_0xcb48[4])(_0xcb48[3]);var sequelize=require(_0xcb48[6])[_0xcb48[5]];var MailServerIn=require(_0xcb48[6])[_0xcb48[7]];exports[_0xcb48[8]]= function(_0xcd5ex6,_0xcd5ex7){return MailServerIn[_0xcb48[13]]()[_0xcb48[12]](function(_0xcd5ex9){return _0xcd5ex7[_0xcb48[11]](200)[_0xcb48[10]](_0xcd5ex9)})[_0xcb48[9]](function(_0xcd5ex8){return handleError(_0xcd5ex7,_0xcd5ex8)})};exports[_0xcb48[14]]= function(_0xcd5ex6,_0xcd5ex7){return MailServerIn[_0xcb48[18]](_0xcd5ex6[_0xcb48[17]][_0xcb48[16]])[_0xcb48[12]](function(_0xcd5exa){if(!_0xcd5exa){return _0xcd5ex7[_0xcb48[15]](404)};return _0xcd5ex7[_0xcb48[10]](_0xcd5exa)})[_0xcb48[9]](function(_0xcd5ex8){return handleError(_0xcd5ex7,_0xcd5ex8)})};exports[_0xcb48[19]]= function(_0xcd5ex6,_0xcd5ex7){return MailServerIn[_0xcb48[19]](_0xcd5ex6[_0xcb48[22]])[_0xcb48[12]](function(_0xcd5exa){return _0xcd5ex7[_0xcb48[11]](201)[_0xcb48[10]](_0xcd5exa)})[_0xcb48[9]](sequelize.UniqueConstraintError,function(_0xcd5ex8){return Util[_0xcb48[21]][_0xcb48[20]](_0xcd5ex7,_0xcd5ex8)})[_0xcb48[9]](function(_0xcd5ex8){return handleError(_0xcd5ex7,_0xcd5ex8)})};exports[_0xcb48[23]]= function(_0xcd5ex6,_0xcd5ex7){if(_0xcd5ex6[_0xcb48[22]][_0xcb48[16]]){delete _0xcd5ex6[_0xcb48[22]][_0xcb48[16]]};return MailServerIn[_0xcb48[18]](_0xcd5ex6[_0xcb48[17]][_0xcb48[16]])[_0xcb48[12]](function(_0xcd5exa){if(!_0xcd5exa){return _0xcd5ex7[_0xcb48[15]](404)};var _0xcd5exb=_[_0xcb48[24]](_0xcd5exa,_0xcd5ex6[_0xcb48[22]]);return _0xcd5exb[_0xcb48[25]]()})[_0xcb48[12]](function(_0xcd5exa){return _0xcd5ex7[_0xcb48[11]](200)[_0xcb48[10]](_0xcd5exa)})[_0xcb48[9]](sequelize.UniqueConstraintError,function(_0xcd5ex8){return Util[_0xcb48[21]][_0xcb48[20]](_0xcd5ex7,_0xcd5ex8)})[_0xcb48[9]](function(_0xcd5ex8){return handleError(_0xcd5ex7,_0xcd5ex8)})};exports[_0xcb48[26]]= function(_0xcd5ex6,_0xcd5ex7){return MailServerIn[_0xcb48[18]](_0xcd5ex6[_0xcb48[17]][_0xcb48[16]])[_0xcb48[12]](function(_0xcd5exa){if(!_0xcd5exa){return _0xcd5ex7[_0xcb48[15]](404)};return _0xcd5exa[_0xcb48[26]]()})[_0xcb48[9]](function(_0xcd5ex8){return handleError(_0xcd5ex7,_0xcd5ex8)})};function handleError(_0xcd5ex7,_0xcd5ex8){logger[_0xcb48[28]](_0xcd5ex8[_0xcb48[27]]);return _0xcd5ex7[_0xcb48[11]](500)[_0xcb48[10]](_0xcd5ex8)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_server_in/mail_server_in.events.js b/server/api/mail_server_in/mail_server_in.events.js index 7ed8894..66dc905 100644 --- a/server/api/mail_server_in/mail_server_in.events.js +++ b/server/api/mail_server_in/mail_server_in.events.js @@ -1 +1 @@ -var _0x440a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x49\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x440a[0];const EventEmitter=require(_0x440a[1]);const MailServerIn=require(_0x440a[3])[_0x440a[2]];var MailServerInEvents= new EventEmitter();MailServerInEvents[_0x440a[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x440a[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x440a[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x440a[6]};for(var e in events){var event=events[e];MailServerIn[_0x440a[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xfb70x8,_0xfb70x9,_0xfb70xa){MailServerInEvents[_0x440a[10]](event+ _0x440a[8]+ _0xfb70x8[_0x440a[9]],_0xfb70x8);MailServerInEvents[_0x440a[10]](event,_0xfb70x8);_0xfb70xa(null)}}module[_0x440a[11]]= MailServerInEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_server_in/mail_server_in.socket.js b/server/api/mail_server_in/mail_server_in.socket.js index d56997a..66dc905 100644 --- a/server/api/mail_server_in/mail_server_in.socket.js +++ b/server/api/mail_server_in/mail_server_in.socket.js @@ -1 +1 @@ -var _0x34ce=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x69\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x69\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x73\x74\x61\x74\x65","\x63\x68\x61\x6E\x67\x65\x64","\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x69\x6E\x3A\x73\x74\x61\x74\x65","\x65\x6D\x69\x74","\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x69\x6E\x3A\x73\x61\x76\x65","\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x69\x6E\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x34ce[0];const MailServerInEvents=require(_0x34ce[1]);var events=[_0x34ce[2],_0x34ce[3]];exports[_0x34ce[4]]= function(_0x302bx3){for(var _0x302bx4=0,_0x302bx5=events[_0x34ce[5]];_0x302bx4< _0x302bx5;_0x302bx4++){var _0x302bx6=events[_0x302bx4];var _0x302bx7=createListener(_0x34ce[6]+ _0x302bx6,_0x302bx3);MailServerInEvents[_0x34ce[7]](_0x302bx6,_0x302bx7);_0x302bx3[_0x34ce[7]](_0x34ce[8],removeListener(_0x302bx6,_0x302bx7))}};function createListener(_0x302bx6,_0x302bx3){return function(_0x302bx9){switch(_0x302bx6){case _0x34ce[13]:if(_0x302bx9[_0x34ce[10]](_0x34ce[9])){_0x302bx3[_0x34ce[12]](_0x34ce[11],_0x302bx9)}else {_0x302bx3[_0x34ce[12]](_0x34ce[13],_0x302bx9)};break;case _0x34ce[14]:_0x302bx3[_0x34ce[12]](_0x302bx6,_0x302bx9);break;default:}}}function removeListener(_0x302bx6,_0x302bx7){return function(){MailServerInEvents[_0x34ce[15]](_0x302bx6,_0x302bx7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_server_out/index.js b/server/api/mail_server_out/index.js index 92f2548..66dc905 100644 --- a/server/api/mail_server_out/index.js +++ b/server/api/mail_server_out/index.js @@ -1 +1 @@ -var _0xd0ac=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x6F\x75\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x73\x65\x72\x76\x69\x63\x65","\x68\x61\x73\x4D\x61\x69\x6C","\x69\x6E\x64\x65\x78\x53\x65\x72\x76\x69\x63\x65","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x74\x65\x73\x74","\x74\x65\x73\x74","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xd0ac[0];var express=require(_0xd0ac[1]);var controller=require(_0xd0ac[2]);var auth=require(_0xd0ac[3]);var license=require(_0xd0ac[4]);var router=express.Router();router[_0xd0ac[11]](_0xd0ac[5],license[_0xd0ac[6]](),auth[_0xd0ac[7]](),auth[_0xd0ac[9]]([9,61],[_0xd0ac[8]]),controller[_0xd0ac[10]]);router[_0xd0ac[11]](_0xd0ac[12],license[_0xd0ac[6]](),license[_0xd0ac[13]](),auth[_0xd0ac[7]](),auth[_0xd0ac[9]]([9],[_0xd0ac[8]]),controller[_0xd0ac[14]]);router[_0xd0ac[11]](_0xd0ac[15],license[_0xd0ac[6]](),license[_0xd0ac[13]](),auth[_0xd0ac[7]](),auth[_0xd0ac[9]]([9],[_0xd0ac[8]]),controller[_0xd0ac[16]]);router[_0xd0ac[11]](_0xd0ac[17],license[_0xd0ac[6]](),license[_0xd0ac[13]](),auth[_0xd0ac[7]](),auth[_0xd0ac[9]]([9,18],[_0xd0ac[8]]),controller[_0xd0ac[18]]);router[_0xd0ac[20]](_0xd0ac[5],license[_0xd0ac[6]](),license[_0xd0ac[13]](),auth[_0xd0ac[7]](),auth[_0xd0ac[9]]([9],[_0xd0ac[8]]),controller[_0xd0ac[19]]);router[_0xd0ac[22]](_0xd0ac[15],license[_0xd0ac[6]](),license[_0xd0ac[13]](),auth[_0xd0ac[7]](),auth[_0xd0ac[9]]([9],[_0xd0ac[8]]),controller[_0xd0ac[21]]);router[_0xd0ac[24]](_0xd0ac[15],license[_0xd0ac[6]](),license[_0xd0ac[13]](),auth[_0xd0ac[7]](),auth[_0xd0ac[9]]([9],[_0xd0ac[8]]),controller[_0xd0ac[23]]);module[_0xd0ac[25]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_server_out/mail_server_out.controller.js b/server/api/mail_server_out/mail_server_out.controller.js index e73db4f..66dc905 100644 --- a/server/api/mail_server_out/mail_server_out.controller.js +++ b/server/api/mail_server_out/mail_server_out.controller.js @@ -1 +1 @@ -var _0xea3d=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x4F\x75\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x69\x6E\x64\x65\x78\x53\x65\x72\x76\x69\x63\x65","\x6D\x65\x73\x73\x61\x67\x65","\x4D\x61\x69\x6C\x20\x73\x65\x72\x76\x69\x63\x65\x20\x61\x63\x63\x6F\x75\x6E\x74\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64\x2E","\x66\x69\x6E\x64\x4F\x6E\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x73\x68\x6F\x77\x43\x75\x73\x74\x6F\x6D","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x73\x74\x61\x74\x65","\x43\x4F\x4E\x4E\x45\x43\x54\x49\x4E\x47","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x74\x65\x73\x74","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0xea3d[0];var _=require(_0xea3d[1]);var MailServerOut=require(_0xea3d[3])[_0xea3d[2]];var MailMessage=require(_0xea3d[3])[_0xea3d[4]];var MailAccount=require(_0xea3d[3])[_0xea3d[5]];var sequelize=require(_0xea3d[3])[_0xea3d[6]];var Util=require(_0xea3d[7]);var logger=require(_0xea3d[9])(_0xea3d[8]);exports[_0xea3d[10]]= function(_0x35edx8,_0x35edx9,_0x35edxa){return MailServerOut[_0xea3d[17]](Util[_0xea3d[16]](_0x35edx8[_0xea3d[15]]))[_0xea3d[14]](function(_0x35edxc){return _0x35edx9[_0xea3d[13]](200)[_0xea3d[12]](_0x35edxc)})[_0xea3d[11]](function(_0x35edxb){return handleError(_0x35edx9,_0x35edxb)})};exports[_0xea3d[18]]= function(_0x35edx8,_0x35edx9){return MailServerOut[_0xea3d[21]]({where:{service:true}})[_0xea3d[14]](function(_0x35edxd){if(!_0x35edxd){throw new Error(_0xea3d[20])};return _0x35edx9[_0xea3d[13]](200)[_0xea3d[12]](_0x35edxd)})[_0xea3d[11]](function(_0x35edxb){return handleError(_0x35edx9,{message:_0x35edxb[_0xea3d[19]]})})};exports[_0xea3d[22]]= function(_0x35edx8,_0x35edx9){return MailServerOut[_0xea3d[26]](_0x35edx8[_0xea3d[25]][_0xea3d[24]])[_0xea3d[14]](function(_0x35edxd){if(!_0x35edxd){return _0x35edx9[_0xea3d[23]](404)};return _0x35edx9[_0xea3d[12]](_0x35edxd)})[_0xea3d[11]](function(_0x35edxb){return handleError(_0x35edx9,_0x35edxb)})};exports[_0xea3d[27]]= function(_0x35edx8,_0x35edx9,_0x35edxa){return MailAccount[_0xea3d[21]]({where:{custom:true}})[_0xea3d[14]](function(_0x35edxe){if(!_0x35edxe){return _0x35edx9[_0xea3d[23]](404)};return _0x35edx9[_0xea3d[12]](_0x35edxe)})[_0xea3d[11]](function(_0x35edxb){return handleError(_0x35edx9,_0x35edxb)})};exports[_0xea3d[28]]= function(_0x35edx8,_0x35edx9){return MailServerOut[_0xea3d[28]](_0x35edx8[_0xea3d[29]])[_0xea3d[14]](function(_0x35edxd){return _0x35edx9[_0xea3d[13]](201)[_0xea3d[12]](_0x35edxd)})[_0xea3d[11]](function(_0x35edxb){return handleError(_0x35edx9,_0x35edxb)})};exports[_0xea3d[30]]= function(_0x35edx8,_0x35edx9){if(_0x35edx8[_0xea3d[29]][_0xea3d[24]]){delete _0x35edx8[_0xea3d[29]][_0xea3d[24]]};_0x35edx8[_0xea3d[29]][_0xea3d[31]]= _0xea3d[32];return MailServerOut[_0xea3d[26]](_0x35edx8[_0xea3d[25]][_0xea3d[24]])[_0xea3d[14]](function(_0x35edxd){if(!_0x35edxd){return _0x35edx9[_0xea3d[23]](404)};var _0x35edxf=_[_0xea3d[33]](_0x35edxd,_0x35edx8[_0xea3d[29]]);return _0x35edxf[_0xea3d[34]]()})[_0xea3d[14]](function(_0x35edxd){return _0x35edx9[_0xea3d[13]](200)[_0xea3d[12]](_0x35edxd)})[_0xea3d[11]](function(_0x35edxb){return handleError(_0x35edx9,_0x35edxb)})};exports[_0xea3d[35]]= function(_0x35edx8,_0x35edx9){return MailServerOut[_0xea3d[26]](_0x35edx8[_0xea3d[25]][_0xea3d[24]])[_0xea3d[14]](function(_0x35edxd){if(!_0x35edxd){return _0x35edx9[_0xea3d[23]](404)};return _0x35edxd[_0xea3d[35]]()})[_0xea3d[14]](function(){return _0x35edx9[_0xea3d[23]](204)})[_0xea3d[11]](function(_0x35edxb){return handleError(_0x35edx9,_0x35edxb)})};exports[_0xea3d[36]]= function(_0x35edx8,_0x35edx9){var _0x35edx10;var _0x35edx11;return MailServerOut[_0xea3d[26]](_0x35edx8[_0xea3d[25]][_0xea3d[24]])[_0xea3d[14]](function(_0x35edxd){if(!_0x35edxd){return _0x35edx9[_0xea3d[23]](404)};return _0x35edxd[_0xea3d[30]]({state:_0xea3d[32]})})[_0xea3d[14]](function(){return _0x35edx9[_0xea3d[13]](201)[_0xea3d[12]](_0x35edx11)})};function handleError(_0x35edx9,_0x35edxb){logger[_0xea3d[38]](_0x35edxb[_0xea3d[37]]);return _0x35edx9[_0xea3d[13]](500)[_0xea3d[12]](_0x35edxb)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_server_out/mail_server_out.events.js b/server/api/mail_server_out/mail_server_out.events.js index 2213e26..66dc905 100644 --- a/server/api/mail_server_out/mail_server_out.events.js +++ b/server/api/mail_server_out/mail_server_out.events.js @@ -1 +1 @@ -var _0x17d0=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x4F\x75\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x17d0[0];const EventEmitter=require(_0x17d0[1]);const MailServerOut=require(_0x17d0[3])[_0x17d0[2]];var MailServerOutEvents= new EventEmitter();MailServerOutEvents[_0x17d0[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x17d0[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x17d0[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x17d0[6]};for(var e in events){var event=events[e];MailServerOut[_0x17d0[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x2e83x8,_0x2e83x9,_0x2e83xa){MailServerOutEvents[_0x17d0[10]](event+ _0x17d0[8]+ _0x2e83x8[_0x17d0[9]],_0x2e83x8);MailServerOutEvents[_0x17d0[10]](event,_0x2e83x8);_0x2e83xa(null)}}module[_0x17d0[11]]= MailServerOutEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/mail_server_out/mail_server_out.socket.js b/server/api/mail_server_out/mail_server_out.socket.js index 6770e97..66dc905 100644 --- a/server/api/mail_server_out/mail_server_out.socket.js +++ b/server/api/mail_server_out/mail_server_out.socket.js @@ -1 +1 @@ -var _0xff7f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x6F\x75\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x6F\x75\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x73\x74\x61\x74\x65","\x63\x68\x61\x6E\x67\x65\x64","\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x6F\x75\x74\x3A\x73\x74\x61\x74\x65","\x65\x6D\x69\x74","\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x6F\x75\x74\x3A\x73\x61\x76\x65","\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x6F\x75\x74\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xff7f[0];const MailServerOutEvents=require(_0xff7f[1]);var events=[_0xff7f[2],_0xff7f[3]];exports[_0xff7f[4]]= function(_0x9ba9x3){for(var _0x9ba9x4=0,_0x9ba9x5=events[_0xff7f[5]];_0x9ba9x4< _0x9ba9x5;_0x9ba9x4++){var _0x9ba9x6=events[_0x9ba9x4];var _0x9ba9x7=createListener(_0xff7f[6]+ _0x9ba9x6,_0x9ba9x3);MailServerOutEvents[_0xff7f[7]](_0x9ba9x6,_0x9ba9x7);_0x9ba9x3[_0xff7f[7]](_0xff7f[8],removeListener(_0x9ba9x6,_0x9ba9x7))}};function createListener(_0x9ba9x6,_0x9ba9x3){return function(_0x9ba9x9){switch(_0x9ba9x6){case _0xff7f[13]:if(_0x9ba9x9[_0xff7f[10]](_0xff7f[9])){_0x9ba9x3[_0xff7f[12]](_0xff7f[11],_0x9ba9x9)}else {_0x9ba9x3[_0xff7f[12]](_0xff7f[13],_0x9ba9x9)};break;case _0xff7f[14]:_0x9ba9x3[_0xff7f[12]](_0x9ba9x6,_0x9ba9x9);break;default:}}}function removeListener(_0x9ba9x6,_0x9ba9x7){return function(){MailServerOutEvents[_0xff7f[15]](_0x9ba9x6,_0x9ba9x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/metric/index.js b/server/api/metric/index.js index d69708d..66dc905 100644 --- a/server/api/metric/index.js +++ b/server/api/metric/index.js @@ -1 +1 @@ -var _0x3c44=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x6D\x65\x74\x72\x69\x63\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x74\x61\x62\x6C\x65","\x67\x65\x74\x4D\x65\x74\x72\x69\x63\x73\x42\x79\x54\x61\x62\x6C\x65","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x3c44[0];var express=require(_0x3c44[1]);var controller=require(_0x3c44[2]);var auth=require(_0x3c44[3]);var router=express.Router();router[_0x3c44[9]](_0x3c44[4],auth[_0x3c44[5]](),auth[_0x3c44[7]]([17],[_0x3c44[6]]),controller[_0x3c44[8]]);router[_0x3c44[9]](_0x3c44[10],auth[_0x3c44[5]](),auth[_0x3c44[7]]([17],[_0x3c44[6]]),controller[_0x3c44[11]]);router[_0x3c44[9]](_0x3c44[12],auth[_0x3c44[5]](),auth[_0x3c44[7]]([17],[_0x3c44[6]]),controller[_0x3c44[13]]);router[_0x3c44[15]](_0x3c44[4],auth[_0x3c44[5]](),auth[_0x3c44[7]]([17],[_0x3c44[6]]),controller[_0x3c44[14]]);router[_0x3c44[17]](_0x3c44[12],auth[_0x3c44[5]](),auth[_0x3c44[7]]([17],[_0x3c44[6]]),controller[_0x3c44[16]]);router[_0x3c44[18]](_0x3c44[12],auth[_0x3c44[5]](),auth[_0x3c44[7]]([17],[_0x3c44[6]]),controller[_0x3c44[16]]);router[_0x3c44[20]](_0x3c44[4],auth[_0x3c44[5]](),auth[_0x3c44[7]]([17],[_0x3c44[6]]),controller[_0x3c44[19]]);router[_0x3c44[20]](_0x3c44[12],auth[_0x3c44[5]](),auth[_0x3c44[7]]([17],[_0x3c44[6]]),controller[_0x3c44[21]]);module[_0x3c44[22]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/metric/metric.controller.js b/server/api/metric/metric.controller.js index c777c12..66dc905 100644 --- a/server/api/metric/metric.controller.js +++ b/server/api/metric/metric.controller.js @@ -1 +1 @@ -var _0x8817=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x4D\x65\x74\x72\x69\x63","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x67\x65\x74\x4D\x65\x74\x72\x69\x63\x73\x42\x79\x54\x61\x62\x6C\x65","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x6C\x65\x6E\x67\x74\x68","\x74\x61\x62\x6C\x65","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x64\x4D\x65\x73\x73\x61\x67\x65","\x4D\x45\x53\x53\x41\x47\x45\x5F\x45\x58\x49\x53\x54\x5F\x4D\x45\x54\x52\x49\x43","\x6D\x65\x73\x73\x61\x67\x65","\x41\x20\x4D\x65\x74\x72\x69\x63\x20\x77\x69\x74\x68\x20\x74\x68\x61\x74\x20\x6E\x61\x6D\x65\x20\x61\x6C\x72\x65\x61\x64\x79\x20\x65\x78\x69\x73\x74\x73","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0x8817[0];var _=require(_0x8817[1]);var Metric=require(_0x8817[3])[_0x8817[2]];var util=require(_0x8817[4]);var Util=require(_0x8817[5]);var sequelize=require(_0x8817[3])[_0x8817[6]];var logger=require(_0x8817[8])(_0x8817[7]);exports[_0x8817[9]]= function(_0xf1a3x7,_0xf1a3x8,_0xf1a3x9){return Metric[_0x8817[16]](Util[_0x8817[15]](_0xf1a3x7[_0x8817[14]]))[_0x8817[13]](function(_0xf1a3xb){return _0xf1a3x8[_0x8817[12]](200)[_0x8817[11]](_0xf1a3xb)})[_0x8817[10]](function(_0xf1a3xa){return handleError(_0xf1a3x8,_0xf1a3xa)})};exports[_0x8817[17]]= function(_0xf1a3x7,_0xf1a3x8){return Metric[_0x8817[21]]({where:{table:_0xf1a3x7[_0x8817[14]][_0x8817[20]]}})[_0x8817[13]](function(_0xf1a3xc){if(!_0xf1a3xc){return _0xf1a3x8[_0x8817[18]](404)};return _0xf1a3x8[_0x8817[12]](200)[_0x8817[11]]({count:_0xf1a3xc[_0x8817[19]],rows:_0xf1a3xc})})[_0x8817[10]](function(_0xf1a3xa){return handleError(_0xf1a3x8,_0xf1a3xa)})};exports[_0x8817[22]]= function(_0xf1a3x7,_0xf1a3x8){return Metric[_0x8817[25]](_0xf1a3x7[_0x8817[24]][_0x8817[23]])[_0x8817[13]](function(_0xf1a3xd){if(!_0xf1a3xd){return _0xf1a3x8[_0x8817[18]](404)};return _0xf1a3x8[_0x8817[11]](_0xf1a3xd)})[_0x8817[10]](function(_0xf1a3xa){return handleError(_0xf1a3x8,_0xf1a3xa)})};exports[_0x8817[26]]= function(_0xf1a3x7,_0xf1a3x8){return Metric[_0x8817[26]](_0xf1a3x7[_0x8817[31]])[_0x8817[13]](function(_0xf1a3xd){return _0xf1a3x8[_0x8817[12]](201)[_0x8817[11]](_0xf1a3xd)})[_0x8817[10]](sequelize.UniqueConstraintError,function(_0xf1a3xa){_0xf1a3xa[_0x8817[27]]= _0x8817[28];_0xf1a3xa[_0x8817[29]]= _0x8817[30];return _0xf1a3x8[_0x8817[12]](500)[_0x8817[11]](_0xf1a3xa)})[_0x8817[10]](function(_0xf1a3xa){return handleError(_0xf1a3x8,_0xf1a3xa)})};exports[_0x8817[32]]= function(_0xf1a3x7,_0xf1a3x8){return Metric[_0x8817[25]](_0xf1a3x7[_0x8817[24]][_0x8817[23]])[_0x8817[13]](function(_0xf1a3xd){if(!_0xf1a3xd){return _0xf1a3x8[_0x8817[18]](404)};var _0xf1a3xe=_[_0x8817[33]](_0xf1a3xd,_0xf1a3x7[_0x8817[31]]);return _0xf1a3xe[_0x8817[34]]()})[_0x8817[13]](function(){return _0xf1a3x8[_0x8817[18]](200)})[_0x8817[10]](sequelize.UniqueConstraintError,function(_0xf1a3xa){_0xf1a3xa[_0x8817[27]]= _0x8817[28];_0xf1a3xa[_0x8817[29]]= _0x8817[30];return _0xf1a3x8[_0x8817[12]](500)[_0x8817[11]](_0xf1a3xa)})[_0x8817[10]](function(_0xf1a3xa){return handleError(_0xf1a3x8,_0xf1a3xa)})};exports[_0x8817[35]]= function(_0xf1a3x7,_0xf1a3x8){return Metric[_0x8817[25]](_0xf1a3x7[_0x8817[24]][_0x8817[23]])[_0x8817[13]](function(_0xf1a3xd){if(!_0xf1a3xd){return _0xf1a3x8[_0x8817[18]](404)};return _0xf1a3xd[_0x8817[35]]()})[_0x8817[13]](function(){return _0xf1a3x8[_0x8817[18]](204)})[_0x8817[10]](function(_0xf1a3xa){return handleError(_0xf1a3x8,_0xf1a3xa)})};exports[_0x8817[36]]= function(_0xf1a3x7,_0xf1a3x8){return Metric[_0x8817[35]]({where:{id:_0xf1a3x7[_0x8817[14]][_0x8817[37]]},individualHooks:true})[_0x8817[13]](function(){return _0xf1a3x8[_0x8817[18]](204)})[_0x8817[10]](function(_0xf1a3xa){return handleError(_0xf1a3x8,_0xf1a3xa)})};function handleError(_0xf1a3x8,_0xf1a3xa){logger[_0x8817[39]](_0xf1a3xa[_0x8817[38]]);return _0xf1a3x8[_0x8817[12]](500)[_0x8817[11]](_0xf1a3xa)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/metric/metric.events.js b/server/api/metric/metric.events.js index 51047c5..66dc905 100644 --- a/server/api/metric/metric.events.js +++ b/server/api/metric/metric.events.js @@ -1 +1 @@ -var _0x2da6=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4D\x65\x74\x72\x69\x63","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x2da6[0];const EventEmitter=require(_0x2da6[1]);const Metric=require(_0x2da6[3])[_0x2da6[2]];var MetricEvents= new EventEmitter();MetricEvents[_0x2da6[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x2da6[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x2da6[6],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x2da6[7]};for(var e in events){var event=events[e];Metric[_0x2da6[8]](e,emitEvent(event))};function emitEvent(event){return function(_0xbbdcx8,_0xbbdcx9,_0xbbdcxa){MetricEvents[_0x2da6[11]](event+ _0x2da6[9]+ _0xbbdcx8[_0x2da6[10]],_0xbbdcx8);MetricEvents[_0x2da6[11]](event,_0xbbdcx8);_0xbbdcxa(null)}}module[_0x2da6[12]]= MetricEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/metric/metric.socket.js b/server/api/metric/metric.socket.js index e87eaee..66dc905 100644 --- a/server/api/metric/metric.socket.js +++ b/server/api/metric/metric.socket.js @@ -1 +1 @@ -var _0xaedf=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6D\x65\x74\x72\x69\x63\x2E\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x46\x69\x65\x6C\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6D\x65\x74\x72\x69\x63\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x6D\x65\x74\x72\x69\x63\x3A\x73\x61\x76\x65","\x6D\x65\x74\x72\x69\x63\x3A\x75\x70\x64\x61\x74\x65","\x6D\x65\x74\x72\x69\x63\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x6D\x65\x74\x72\x69\x63","\x69\x64","\x75\x70\x64\x61\x74\x65"];_0xaedf[0];const MetricEvents=require(_0xaedf[1]);const ReportField=require(_0xaedf[3])[_0xaedf[2]];var events=[_0xaedf[4],_0xaedf[5]];exports[_0xaedf[6]]= function(_0xf90dx4){for(var _0xf90dx5=0,_0xf90dx6=events[_0xaedf[7]];_0xf90dx5< _0xf90dx6;_0xf90dx5++){var _0xf90dx7=events[_0xf90dx5];var _0xf90dx8=createListener(_0xaedf[8]+ _0xf90dx7,_0xf90dx4);MetricEvents[_0xaedf[9]](_0xf90dx7,_0xf90dx8);_0xf90dx4[_0xaedf[9]](_0xaedf[10],removeListener(_0xf90dx7,_0xf90dx8))}};function createListener(_0xf90dx7,_0xf90dx4){return function(_0xf90dxa){switch(_0xf90dx7){case _0xaedf[12]:_0xf90dx4[_0xaedf[11]](_0xf90dx7,_0xf90dxa);break;case _0xaedf[13]:updateFields(_0xf90dxa);break;case _0xaedf[14]:_0xf90dx4[_0xaedf[11]](_0xf90dx7,_0xf90dxa);break;default:}}}function removeListener(_0xf90dx7,_0xf90dx8){return function(){MetricEvents[_0xaedf[15]](_0xf90dx7,_0xf90dx8)}}function updateFields(_0xf90dxa){return ReportField[_0xaedf[20]]({field:_0xf90dxa[_0xaedf[18]]},{where:{MetricId:_0xf90dxa[_0xaedf[19]]}})[_0xaedf[17]](function(_0xf90dxd){console[_0xaedf[16]](_0xf90dxd)})} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/module/index.js b/server/api/module/index.js index 192c8e8..66dc905 100644 --- a/server/api/module/index.js +++ b/server/api/module/index.js @@ -1 +1 @@ -var _0xfa60=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x6D\x6F\x64\x75\x6C\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x52\x6F\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xfa60[0];var express=require(_0xfa60[1]);var controller=require(_0xfa60[2]);var auth=require(_0xfa60[3]);var router=express.Router();router[_0xfa60[9]](_0xfa60[4],auth[_0xfa60[5]](),auth[_0xfa60[7]](_0xfa60[6]),controller[_0xfa60[8]]);module[_0xfa60[10]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/module/module.controller.js b/server/api/module/module.controller.js index 5c70919..66dc905 100644 --- a/server/api/module/module.controller.js +++ b/server/api/module/module.controller.js @@ -1 +1 @@ -var _0x9d21=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x4D\x6F\x64\x75\x6C\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x75\x62\x6D\x6F\x64\x75\x6C\x65\x73","\x73\x63\x6F\x70\x65","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0x9d21[0];var _=require(_0x9d21[1]);var Module=require(_0x9d21[3])[_0x9d21[2]];var util=require(_0x9d21[4]);var Util=require(_0x9d21[5]);var sequelize=require(_0x9d21[3])[_0x9d21[6]];var logger=require(_0x9d21[8])(_0x9d21[7]);exports[_0x9d21[9]]= function(_0xeaa2x7,_0xeaa2x8,_0xeaa2x9){return Module[_0x9d21[16]](_0x9d21[15])[_0x9d21[14]]()[_0x9d21[13]](function(_0xeaa2xb){return _0xeaa2x8[_0x9d21[12]](200)[_0x9d21[11]](_0xeaa2xb)})[_0x9d21[10]](function(_0xeaa2xa){return handleError(_0xeaa2x8,_0xeaa2xa)})};function handleError(_0xeaa2x8,_0xeaa2xa){logger[_0x9d21[18]](_0xeaa2xa[_0x9d21[17]]);return _0xeaa2x8[_0x9d21[12]](500)[_0x9d21[11]](_0xeaa2xa)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/module/module.events.js b/server/api/module/module.events.js index 98a25ba..66dc905 100644 --- a/server/api/module/module.events.js +++ b/server/api/module/module.events.js @@ -1 +1 @@ -var _0xade0=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4D\x6F\x64\x75\x6C\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xade0[0];const EventEmitter=require(_0xade0[1]);const Module=require(_0xade0[3])[_0xade0[2]];var ModuleEvents= new EventEmitter();ModuleEvents[_0xade0[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xade0[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xade0[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xade0[6]};for(var e in events){var event=events[e];Module[_0xade0[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x71cax8,_0x71cax9,_0x71caxa){ModuleEvents[_0xade0[10]](event+ _0xade0[8]+ _0x71cax8[_0xade0[9]],_0x71cax8);ModuleEvents[_0xade0[10]](event,_0x71cax8);_0x71caxa(null)}}module[_0xade0[11]]= ModuleEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/module/module.socket.js b/server/api/module/module.socket.js index 5950add..66dc905 100644 --- a/server/api/module/module.socket.js +++ b/server/api/module/module.socket.js @@ -1 +1 @@ -var _0x3e8f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6D\x6F\x64\x75\x6C\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6D\x6F\x64\x75\x6C\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x3e8f[0];const ModuleEvents=require(_0x3e8f[1]);var events=[_0x3e8f[2],_0x3e8f[3]];exports[_0x3e8f[4]]= function(_0xa884x3){for(var _0xa884x4=0,_0xa884x5=events[_0x3e8f[5]];_0xa884x4< _0xa884x5;_0xa884x4++){var _0xa884x6=events[_0xa884x4];var _0xa884x7=createListener(_0x3e8f[6]+ _0xa884x6,_0xa884x3);ModuleEvents[_0x3e8f[7]](_0xa884x6,_0xa884x7);_0xa884x3[_0x3e8f[7]](_0x3e8f[8],removeListener(_0xa884x6,_0xa884x7))}};function createListener(_0xa884x6,_0xa884x3){return function(_0xa884x9){_0xa884x3[_0x3e8f[9]](_0xa884x6,_0xa884x9)}}function removeListener(_0xa884x6,_0xa884x7){return function(){ModuleEvents[_0x3e8f[10]](_0xa884x6,_0xa884x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/motionbar/index.js b/server/api/motionbar/index.js index 3237603..66dc905 100644 --- a/server/api/motionbar/index.js +++ b/server/api/motionbar/index.js @@ -1 +1 @@ -var _0x7d78=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x6D\x6F\x74\x69\x6F\x6E\x62\x61\x72\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F\x3A\x61\x63\x74\x69\x6F\x6E\x2F\x3A\x73\x74\x61\x74\x65","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x63\x74\x69\x6F\x6E","\x67\x65\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x7d78[0];var express=require(_0x7d78[1]);var controller=require(_0x7d78[2]);var auth=require(_0x7d78[3]);var router=express.Router();router[_0x7d78[7]](_0x7d78[4],auth[_0x7d78[5]](),controller[_0x7d78[6]]);module[_0x7d78[8]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/motionbar/motionbar.controller.js b/server/api/motionbar/motionbar.controller.js index d6e1957..66dc905 100644 --- a/server/api/motionbar/motionbar.controller.js +++ b/server/api/motionbar/motionbar.controller.js @@ -1 +1 @@ -var _0x866a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x4D\x6F\x74\x69\x6F\x6E\x62\x61\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x61\x63\x74\x69\x6F\x6E","\x75\x73\x65\x72\x49\x64","\x71\x75\x65\x72\x79","\x55\x73\x65\x20\x75\x73\x65\x72\x49\x64","\x55\x73\x65\x72\x49\x64","\x62\x6F\x64\x79","\x70\x61\x72\x61\x6D\x73","\x73\x74\x61\x74\x65","\x41\x64\x6D\x69\x6E\x49\x64","\x69\x64","\x75\x73\x65\x72","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x63\x72\x65\x61\x74\x65","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0x866a[0];var _=require(_0x866a[1]);var Motionbar=require(_0x866a[3])[_0x866a[2]];var logger=require(_0x866a[5])(_0x866a[4]);exports[_0x866a[6]]= function(_0x8b3ex4,_0x8b3ex5){if(!_0x8b3ex4[_0x866a[8]][_0x866a[7]]){return handleError(_0x8b3ex5,{message:_0x866a[9]})};_0x8b3ex4[_0x866a[11]][_0x866a[10]]= parseInt(_0x8b3ex4[_0x866a[8]][_0x866a[7]],10);_0x8b3ex4[_0x866a[11]][_0x866a[6]]= _0x8b3ex4[_0x866a[12]][_0x866a[6]];_0x8b3ex4[_0x866a[11]][_0x866a[13]]= _0x8b3ex4[_0x866a[12]][_0x866a[13]];_0x8b3ex4[_0x866a[11]][_0x866a[14]]= _0x8b3ex4[_0x866a[16]][_0x866a[15]];return Motionbar[_0x866a[21]](_0x8b3ex4[_0x866a[11]])[_0x866a[20]](function(_0x8b3ex7){return _0x8b3ex5[_0x866a[19]](201)[_0x866a[18]](_0x8b3ex7)})[_0x866a[17]](function(_0x8b3ex6){return handleError(_0x8b3ex5,_0x8b3ex6)})};function handleError(_0x8b3ex5,_0x8b3ex6){logger[_0x866a[23]](_0x8b3ex6[_0x866a[22]]);return _0x8b3ex5[_0x866a[19]](500)[_0x866a[18]](_0x8b3ex6)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/motionbar/motionbar.events.js b/server/api/motionbar/motionbar.events.js index 1499599..66dc905 100644 --- a/server/api/motionbar/motionbar.events.js +++ b/server/api/motionbar/motionbar.events.js @@ -1 +1 @@ -var _0x7a18=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4D\x6F\x74\x69\x6F\x6E\x62\x61\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x7a18[0];const EventEmitter=require(_0x7a18[1]);const Motionbar=require(_0x7a18[3])[_0x7a18[2]];var MotionbarEvents= new EventEmitter();MotionbarEvents[_0x7a18[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x7a18[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x7a18[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x7a18[6]};for(var e in events){var event=events[e];Motionbar[_0x7a18[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x83eax8,_0x83eax9,_0x83eaxa){MotionbarEvents[_0x7a18[10]](event+ _0x7a18[8]+ _0x83eax8[_0x7a18[9]],_0x83eax8);MotionbarEvents[_0x7a18[10]](event,_0x83eax8);_0x83eaxa(null)}}module[_0x7a18[11]]= MotionbarEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/motionbar/motionbar.socket.js b/server/api/motionbar/motionbar.socket.js index 79606eb..66dc905 100644 --- a/server/api/motionbar/motionbar.socket.js +++ b/server/api/motionbar/motionbar.socket.js @@ -1 +1 @@ -var _0x6faf=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6D\x6F\x74\x69\x6F\x6E\x62\x61\x72\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6D\x6F\x74\x69\x6F\x6E\x62\x61\x72\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x75\x73\x65\x72\x49\x64","\x55\x73\x65\x72\x49\x64","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x6faf[0];const MotionbarEvents=require(_0x6faf[1]);var events=[_0x6faf[2],_0x6faf[3]];exports[_0x6faf[4]]= function(_0x648cx3){for(var _0x648cx4=0,_0x648cx5=events[_0x6faf[5]];_0x648cx4< _0x648cx5;_0x648cx4++){var _0x648cx6=events[_0x648cx4];var _0x648cx7=createListener(_0x6faf[6]+ _0x648cx6,_0x648cx3);MotionbarEvents[_0x6faf[7]](_0x648cx6,_0x648cx7);_0x648cx3[_0x6faf[7]](_0x6faf[8],removeListener(_0x648cx6,_0x648cx7))}};function createListener(_0x648cx6,_0x648cx3){return function(_0x648cx9){if(_0x648cx3[_0x6faf[9]]== _0x648cx9[_0x6faf[10]]){_0x648cx3[_0x6faf[11]](_0x648cx6,_0x648cx9)}}}function removeListener(_0x648cx6,_0x648cx7){return function(){MotionbarEvents[_0x6faf[12]](_0x648cx6,_0x648cx7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/network_externip/index.js b/server/api/network_externip/index.js index 33893e3..66dc905 100644 --- a/server/api/network_externip/index.js +++ b/server/api/network_externip/index.js @@ -1 +1 @@ -var _0x5a74=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x6E\x65\x74\x77\x6F\x72\x6B\x5F\x65\x78\x74\x65\x72\x6E\x69\x70\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x5a74[0];var express=require(_0x5a74[1]);var auth=require(_0x5a74[2]);var controller=require(_0x5a74[3]);var router=express.Router();router[_0x5a74[9]](_0x5a74[4],auth[_0x5a74[5]](),auth[_0x5a74[7]]([18],[_0x5a74[6]]),controller[_0x5a74[8]]);router[_0x5a74[9]](_0x5a74[10],auth[_0x5a74[5]](),auth[_0x5a74[7]]([18],[_0x5a74[6]]),controller[_0x5a74[11]]);router[_0x5a74[13]](_0x5a74[4],auth[_0x5a74[5]](),auth[_0x5a74[7]]([18],[_0x5a74[6]]),controller[_0x5a74[12]]);router[_0x5a74[15]](_0x5a74[10],auth[_0x5a74[5]](),auth[_0x5a74[7]]([18],[_0x5a74[6]]),controller[_0x5a74[14]]);router[_0x5a74[17]](_0x5a74[4],auth[_0x5a74[5]](),auth[_0x5a74[7]]([18],[_0x5a74[6]]),controller[_0x5a74[16]]);router[_0x5a74[17]](_0x5a74[10],auth[_0x5a74[5]](),auth[_0x5a74[7]]([18],[_0x5a74[6]]),controller[_0x5a74[18]]);module[_0x5a74[19]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/network_externip/network_externip.controller.js b/server/api/network_externip/network_externip.controller.js index 304b822..66dc905 100644 --- a/server/api/network_externip/network_externip.controller.js +++ b/server/api/network_externip/network_externip.controller.js @@ -1 +1 @@ -var _0xd551=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x4E\x65\x74\x77\x6F\x72\x6B","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x65\x78\x74\x65\x72\x6E\x69\x70","\x73\x63\x6F\x70\x65","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x74\x79\x70\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0xd551[0];var _=require(_0xd551[1]);var Util=require(_0xd551[2]);var logger=require(_0xd551[4])(_0xd551[3]);var NetworkExternip=require(_0xd551[6])[_0xd551[5]];function handleError(_0x8787x6,_0x8787x7){_0x8787x7= _0x8787x7|| 500;return function(_0x8787x8){logger[_0xd551[8]](_0x8787x8[_0xd551[7]]);_0x8787x6[_0xd551[10]](_0x8787x7)[_0xd551[9]](_0x8787x8)}}function responseWithResult(_0x8787x6,_0x8787x7){_0x8787x7= _0x8787x7|| 200;return function(_0x8787xa){if(_0x8787xa){_0x8787x6[_0xd551[10]](_0x8787x7)[_0xd551[11]](_0x8787xa)}}}function responseWithoutResult(_0x8787x6,_0x8787x7){_0x8787x7= _0x8787x7|| 204;return function(){_0x8787x6[_0xd551[12]](_0x8787x7)}}function handleEntityNotFound(_0x8787x6){return function(_0x8787xa){if(!_0x8787xa){_0x8787x6[_0xd551[10]](404)[_0xd551[13]]();return null};return _0x8787xa}}function saveUpdates(_0x8787xe){return function(_0x8787xa){return _0x8787xa[_0xd551[15]](_0x8787xe)[_0xd551[14]](function(_0x8787xf){return _0x8787xf})}}function removeEntity(_0x8787x6){return function(_0x8787xa){if(_0x8787xa){return _0x8787xa[_0xd551[16]]()[_0xd551[14]](function(){_0x8787x6[_0xd551[10]](204)[_0xd551[13]]()})}}}exports[_0xd551[17]]= function(_0x8787x11,_0x8787x6){return NetworkExternip[_0xd551[23]](_0xd551[22])[_0xd551[21]](Util[_0xd551[20]](_0x8787x11[_0xd551[19]]))[_0xd551[14]](responseWithResult(_0x8787x6))[_0xd551[18]](handleError(_0x8787x6))};exports[_0xd551[24]]= function(_0x8787x11,_0x8787x6){return NetworkExternip[_0xd551[27]](_0x8787x11[_0xd551[26]][_0xd551[25]])[_0xd551[14]](handleEntityNotFound(_0x8787x6))[_0xd551[14]](responseWithResult(_0x8787x6))[_0xd551[18]](handleError(_0x8787x6))};exports[_0xd551[28]]= function(_0x8787x11,_0x8787x6){_0x8787x11[_0xd551[30]][_0xd551[29]]= _0xd551[22];return NetworkExternip[_0xd551[28]](_0x8787x11[_0xd551[30]])[_0xd551[14]](responseWithResult(_0x8787x6,201))[_0xd551[18]](handleError(_0x8787x6))};exports[_0xd551[31]]= function(_0x8787x11,_0x8787x6){if(_0x8787x11[_0xd551[30]][_0xd551[25]]){delete _0x8787x11[_0xd551[30]][_0xd551[25]]};return NetworkExternip[_0xd551[27]](_0x8787x11[_0xd551[26]][_0xd551[25]])[_0xd551[14]](handleEntityNotFound(_0x8787x6))[_0xd551[14]](saveUpdates(_0x8787x11[_0xd551[30]]))[_0xd551[14]](responseWithResult(_0x8787x6))[_0xd551[18]](handleError(_0x8787x6))};exports[_0xd551[16]]= function(_0x8787x11,_0x8787x6){return NetworkExternip[_0xd551[27]](_0x8787x11[_0xd551[26]][_0xd551[25]])[_0xd551[14]](handleEntityNotFound(_0x8787x6))[_0xd551[14]](removeEntity(_0x8787x6))[_0xd551[18]](handleError(_0x8787x6))};exports[_0xd551[32]]= function(_0x8787x11,_0x8787x6){return NetworkExternip[_0xd551[16]]({where:{id:_0x8787x11[_0xd551[19]][_0xd551[33]]},individualHooks:true})[_0xd551[14]](responseWithoutResult(_0x8787x6))[_0xd551[18]](handleError(_0x8787x6))} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/network_externip/network_externip.events.js b/server/api/network_externip/network_externip.events.js index 73cd2ec..66dc905 100644 --- a/server/api/network_externip/network_externip.events.js +++ b/server/api/network_externip/network_externip.events.js @@ -1 +1 @@ -var _0x4cfc=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4E\x65\x74\x77\x6F\x72\x6B","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x4cfc[0];const EventEmitter=require(_0x4cfc[1]);const Network=require(_0x4cfc[3])[_0x4cfc[2]];var NetworkEvents= new EventEmitter();NetworkEvents[_0x4cfc[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x4cfc[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x4cfc[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x4cfc[6]};for(var e in events){var event=events[e];Network[_0x4cfc[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xa789x8,_0xa789x9,_0xa789xa){NetworkEvents[_0x4cfc[10]](event+ _0x4cfc[8]+ _0xa789x8[_0x4cfc[9]],_0xa789x8);NetworkEvents[_0x4cfc[10]](event,_0xa789x8);_0xa789xa(null)}}module[_0x4cfc[11]]= NetworkEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/network_externip/network_externip.socket.js b/server/api/network_externip/network_externip.socket.js index ba76095..66dc905 100644 --- a/server/api/network_externip/network_externip.socket.js +++ b/server/api/network_externip/network_externip.socket.js @@ -1 +1 @@ -var _0x9c4a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6E\x65\x74\x77\x6F\x72\x6B\x5F\x65\x78\x74\x65\x72\x6E\x69\x70\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6E\x65\x74\x77\x6F\x72\x6B\x5F\x65\x78\x74\x65\x72\x6E\x69\x70\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x9c4a[0];const NetworkExternipEvents=require(_0x9c4a[1]);var events=[_0x9c4a[2],_0x9c4a[3]];exports[_0x9c4a[4]]= function(_0x8f63x3){for(var _0x8f63x4=0,_0x8f63x5=events[_0x9c4a[5]];_0x8f63x4< _0x8f63x5;_0x8f63x4++){var _0x8f63x6=events[_0x8f63x4];var _0x8f63x7=createListener(_0x9c4a[6]+ _0x8f63x6,_0x8f63x3);NetworkExternipEvents[_0x9c4a[7]](_0x8f63x6,_0x8f63x7);_0x8f63x3[_0x9c4a[7]](_0x9c4a[8],removeListener(_0x8f63x6,_0x8f63x7))}};function createListener(_0x8f63x6,_0x8f63x3){return function(_0x8f63x9){_0x8f63x3[_0x9c4a[9]](_0x8f63x6,_0x8f63x9)}}function removeListener(_0x8f63x6,_0x8f63x7){return function(){NetworkExternipEvents[_0x9c4a[10]](_0x8f63x6,_0x8f63x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/network_localnet/index.js b/server/api/network_localnet/index.js index ea5749c..66dc905 100644 --- a/server/api/network_localnet/index.js +++ b/server/api/network_localnet/index.js @@ -1 +1 @@ -var _0x1972=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x6E\x65\x74\x77\x6F\x72\x6B\x5F\x6C\x6F\x63\x61\x6C\x6E\x65\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x1972[0];var express=require(_0x1972[1]);var auth=require(_0x1972[2]);var controller=require(_0x1972[3]);var router=express.Router();router[_0x1972[9]](_0x1972[4],auth[_0x1972[5]](),auth[_0x1972[7]]([18],[_0x1972[6]]),controller[_0x1972[8]]);router[_0x1972[9]](_0x1972[10],auth[_0x1972[5]](),auth[_0x1972[7]]([18],[_0x1972[6]]),controller[_0x1972[11]]);router[_0x1972[13]](_0x1972[4],auth[_0x1972[5]](),auth[_0x1972[7]]([18],[_0x1972[6]]),controller[_0x1972[12]]);router[_0x1972[15]](_0x1972[10],auth[_0x1972[5]](),auth[_0x1972[7]]([18],[_0x1972[6]]),controller[_0x1972[14]]);router[_0x1972[17]](_0x1972[4],auth[_0x1972[5]](),auth[_0x1972[7]]([18],[_0x1972[6]]),controller[_0x1972[16]]);router[_0x1972[17]](_0x1972[10],auth[_0x1972[5]](),auth[_0x1972[7]]([18],[_0x1972[6]]),controller[_0x1972[18]]);module[_0x1972[19]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/network_localnet/network_localnet.controller.js b/server/api/network_localnet/network_localnet.controller.js index 190570c..66dc905 100644 --- a/server/api/network_localnet/network_localnet.controller.js +++ b/server/api/network_localnet/network_localnet.controller.js @@ -1 +1 @@ -var _0xe7ef=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x4E\x65\x74\x77\x6F\x72\x6B","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x6C\x6F\x63\x61\x6C\x6E\x65\x74","\x73\x63\x6F\x70\x65","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x74\x79\x70\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0xe7ef[0];var _=require(_0xe7ef[1]);var Util=require(_0xe7ef[2]);var logger=require(_0xe7ef[4])(_0xe7ef[3]);var NetworkLocalnet=require(_0xe7ef[6])[_0xe7ef[5]];function handleError(_0xeb2ax6,_0xeb2ax7){_0xeb2ax7= _0xeb2ax7|| 500;return function(_0xeb2ax8){logger[_0xe7ef[8]](_0xeb2ax8[_0xe7ef[7]]);_0xeb2ax6[_0xe7ef[10]](_0xeb2ax7)[_0xe7ef[9]](_0xeb2ax8)}}function responseWithResult(_0xeb2ax6,_0xeb2ax7){_0xeb2ax7= _0xeb2ax7|| 200;return function(_0xeb2axa){if(_0xeb2axa){_0xeb2ax6[_0xe7ef[10]](_0xeb2ax7)[_0xe7ef[11]](_0xeb2axa)}}}function responseWithoutResult(_0xeb2ax6,_0xeb2ax7){_0xeb2ax7= _0xeb2ax7|| 204;return function(){_0xeb2ax6[_0xe7ef[12]](_0xeb2ax7)}}function handleEntityNotFound(_0xeb2ax6){return function(_0xeb2axa){if(!_0xeb2axa){_0xeb2ax6[_0xe7ef[10]](404)[_0xe7ef[13]]();return null};return _0xeb2axa}}function saveUpdates(_0xeb2axe){return function(_0xeb2axa){return _0xeb2axa[_0xe7ef[15]](_0xeb2axe)[_0xe7ef[14]](function(_0xeb2axf){return _0xeb2axf})}}function removeEntity(_0xeb2ax6){return function(_0xeb2axa){if(_0xeb2axa){return _0xeb2axa[_0xe7ef[16]]()[_0xe7ef[14]](function(){_0xeb2ax6[_0xe7ef[10]](204)[_0xe7ef[13]]()})}}}exports[_0xe7ef[17]]= function(_0xeb2ax11,_0xeb2ax6){return NetworkLocalnet[_0xe7ef[23]](_0xe7ef[22])[_0xe7ef[21]](Util[_0xe7ef[20]](_0xeb2ax11[_0xe7ef[19]]))[_0xe7ef[14]](responseWithResult(_0xeb2ax6))[_0xe7ef[18]](handleError(_0xeb2ax6))};exports[_0xe7ef[24]]= function(_0xeb2ax11,_0xeb2ax6){return NetworkLocalnet[_0xe7ef[27]](_0xeb2ax11[_0xe7ef[26]][_0xe7ef[25]])[_0xe7ef[14]](handleEntityNotFound(_0xeb2ax6))[_0xe7ef[14]](responseWithResult(_0xeb2ax6))[_0xe7ef[18]](handleError(_0xeb2ax6))};exports[_0xe7ef[28]]= function(_0xeb2ax11,_0xeb2ax6){_0xeb2ax11[_0xe7ef[30]][_0xe7ef[29]]= _0xe7ef[22];return NetworkLocalnet[_0xe7ef[28]](_0xeb2ax11[_0xe7ef[30]])[_0xe7ef[14]](responseWithResult(_0xeb2ax6,201))[_0xe7ef[18]](handleError(_0xeb2ax6))};exports[_0xe7ef[31]]= function(_0xeb2ax11,_0xeb2ax6){if(_0xeb2ax11[_0xe7ef[30]][_0xe7ef[25]]){delete _0xeb2ax11[_0xe7ef[30]][_0xe7ef[25]]};return NetworkLocalnet[_0xe7ef[27]](_0xeb2ax11[_0xe7ef[26]][_0xe7ef[25]])[_0xe7ef[14]](handleEntityNotFound(_0xeb2ax6))[_0xe7ef[14]](saveUpdates(_0xeb2ax11[_0xe7ef[30]]))[_0xe7ef[14]](responseWithResult(_0xeb2ax6))[_0xe7ef[18]](handleError(_0xeb2ax6))};exports[_0xe7ef[16]]= function(_0xeb2ax11,_0xeb2ax6){return NetworkLocalnet[_0xe7ef[27]](_0xeb2ax11[_0xe7ef[26]][_0xe7ef[25]])[_0xe7ef[14]](handleEntityNotFound(_0xeb2ax6))[_0xe7ef[14]](removeEntity(_0xeb2ax6))[_0xe7ef[18]](handleError(_0xeb2ax6))};exports[_0xe7ef[32]]= function(_0xeb2ax11,_0xeb2ax6){return NetworkLocalnet[_0xe7ef[16]]({where:{id:_0xeb2ax11[_0xe7ef[19]][_0xe7ef[33]]},individualHooks:true})[_0xe7ef[14]](responseWithoutResult(_0xeb2ax6))[_0xe7ef[18]](handleError(_0xeb2ax6))} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/network_localnet/network_localnet.events.js b/server/api/network_localnet/network_localnet.events.js index 402b492..66dc905 100644 --- a/server/api/network_localnet/network_localnet.events.js +++ b/server/api/network_localnet/network_localnet.events.js @@ -1 +1 @@ -var _0x1fa6=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4E\x65\x74\x77\x6F\x72\x6B","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x1fa6[0];const EventEmitter=require(_0x1fa6[1]);const Network=require(_0x1fa6[3])[_0x1fa6[2]];var NetworkEvents= new EventEmitter();NetworkEvents[_0x1fa6[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x1fa6[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x1fa6[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x1fa6[6]};for(var e in events){var event=events[e];Network[_0x1fa6[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x2939x8,_0x2939x9,_0x2939xa){NetworkEvents[_0x1fa6[10]](event+ _0x1fa6[8]+ _0x2939x8[_0x1fa6[9]],_0x2939x8);NetworkEvents[_0x1fa6[10]](event,_0x2939x8);_0x2939xa(null)}}module[_0x1fa6[11]]= NetworkEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/network_localnet/network_localnet.socket.js b/server/api/network_localnet/network_localnet.socket.js index e1a562a..66dc905 100644 --- a/server/api/network_localnet/network_localnet.socket.js +++ b/server/api/network_localnet/network_localnet.socket.js @@ -1 +1 @@ -var _0x78cc=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6E\x65\x74\x77\x6F\x72\x6B\x5F\x6C\x6F\x63\x61\x6C\x6E\x65\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6E\x65\x74\x77\x6F\x72\x6B\x5F\x6C\x6F\x63\x61\x6C\x6E\x65\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x78cc[0];const NetworkLocalnetEvents=require(_0x78cc[1]);var events=[_0x78cc[2],_0x78cc[3]];exports[_0x78cc[4]]= function(_0x7a9bx3){for(var _0x7a9bx4=0,_0x7a9bx5=events[_0x78cc[5]];_0x7a9bx4< _0x7a9bx5;_0x7a9bx4++){var _0x7a9bx6=events[_0x7a9bx4];var _0x7a9bx7=createListener(_0x78cc[6]+ _0x7a9bx6,_0x7a9bx3);NetworkLocalnetEvents[_0x78cc[7]](_0x7a9bx6,_0x7a9bx7);_0x7a9bx3[_0x78cc[7]](_0x78cc[8],removeListener(_0x7a9bx6,_0x7a9bx7))}};function createListener(_0x7a9bx6,_0x7a9bx3){return function(_0x7a9bx9){_0x7a9bx3[_0x78cc[9]](_0x7a9bx6,_0x7a9bx9)}}function removeListener(_0x7a9bx6,_0x7a9bx7){return function(){NetworkLocalnetEvents[_0x78cc[10]](_0x7a9bx6,_0x7a9bx7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/openchannel_account/index.js b/server/api/openchannel_account/index.js index e36cffb..66dc905 100644 --- a/server/api/openchannel_account/index.js +++ b/server/api/openchannel_account/index.js @@ -1 +1 @@ -var _0xeb2f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x2F\x3A\x69\x64\x2F\x72\x6F\x6F\x6D\x73","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D\x73","\x2F\x3A\x69\x64\x2F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x67\x65\x74\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x63\x72\x65\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x73\x65\x6E\x64","\x73\x65\x6E\x64\x4D\x65\x73\x73\x61\x67\x65","\x2F\x3A\x69\x64\x2F\x72\x65\x63\x65\x69\x76\x65","\x72\x65\x63\x65\x69\x76\x65\x4D\x65\x73\x73\x61\x67\x65","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x2F\x3A\x69\x64\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73\x2F\x3A\x61\x70\x70\x49\x64","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73\x2F\x3A\x64\x69\x73\x70\x49\x64","\x75\x70\x64\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x64\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x64\x65\x73\x74\x72\x6F\x79\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x65\x78\x70\x6F\x72\x74\x73"];_0xeb2f[0];var express=require(_0xeb2f[1]);var auth=require(_0xeb2f[2]);var controller=require(_0xeb2f[3]);var license=require(_0xeb2f[4]);var router=express.Router();router[_0xeb2f[13]](_0xeb2f[5],license[_0xeb2f[6]](),license[_0xeb2f[7]](),auth[_0xeb2f[8]](),auth[_0xeb2f[11]]([20],[_0xeb2f[9],_0xeb2f[10]]),controller[_0xeb2f[12]]);router[_0xeb2f[13]](_0xeb2f[14],license[_0xeb2f[6]](),license[_0xeb2f[7]](),auth[_0xeb2f[8]](),auth[_0xeb2f[11]]([20],[_0xeb2f[9]]),controller[_0xeb2f[15]]);router[_0xeb2f[13]](_0xeb2f[16],license[_0xeb2f[6]](),license[_0xeb2f[7]](),auth[_0xeb2f[8]](),auth[_0xeb2f[11]]([20],[_0xeb2f[9]]),controller[_0xeb2f[17]]);router[_0xeb2f[13]](_0xeb2f[18],license[_0xeb2f[6]](),license[_0xeb2f[7]](),auth[_0xeb2f[8]](),auth[_0xeb2f[11]]([20],[_0xeb2f[9],_0xeb2f[10]]),controller[_0xeb2f[19]]);router[_0xeb2f[13]](_0xeb2f[20],license[_0xeb2f[6]](),license[_0xeb2f[7]](),auth[_0xeb2f[8]](),auth[_0xeb2f[11]]([20],[_0xeb2f[9],_0xeb2f[10]]),controller[_0xeb2f[21]]);router[_0xeb2f[23]](_0xeb2f[5],license[_0xeb2f[6]](),license[_0xeb2f[7]](),auth[_0xeb2f[8]](),auth[_0xeb2f[11]]([20],[_0xeb2f[9]]),controller[_0xeb2f[22]]);router[_0xeb2f[23]](_0xeb2f[16],license[_0xeb2f[6]](),license[_0xeb2f[7]](),auth[_0xeb2f[8]](),auth[_0xeb2f[11]]([20],[_0xeb2f[9]]),controller[_0xeb2f[24]]);router[_0xeb2f[23]](_0xeb2f[20],license[_0xeb2f[6]](),license[_0xeb2f[7]](),auth[_0xeb2f[8]](),auth[_0xeb2f[11]]([20],[_0xeb2f[9]]),controller[_0xeb2f[25]]);router[_0xeb2f[23]](_0xeb2f[26],license[_0xeb2f[6]](),license[_0xeb2f[7]](),auth[_0xeb2f[8]](),auth[_0xeb2f[11]]([20],[_0xeb2f[9],_0xeb2f[10]]),controller[_0xeb2f[27]]);router[_0xeb2f[23]](_0xeb2f[28],license[_0xeb2f[6]](),controller[_0xeb2f[29]]);router[_0xeb2f[31]](_0xeb2f[14],license[_0xeb2f[6]](),license[_0xeb2f[7]](),auth[_0xeb2f[8]](),auth[_0xeb2f[11]]([20],[_0xeb2f[9]]),controller[_0xeb2f[30]]);router[_0xeb2f[31]](_0xeb2f[16],license[_0xeb2f[6]](),license[_0xeb2f[7]](),auth[_0xeb2f[8]](),auth[_0xeb2f[11]]([20],[_0xeb2f[9]]),controller[_0xeb2f[32]]);router[_0xeb2f[31]](_0xeb2f[33],license[_0xeb2f[6]](),license[_0xeb2f[7]](),auth[_0xeb2f[8]](),auth[_0xeb2f[11]]([20],[_0xeb2f[9]]),controller[_0xeb2f[34]]);router[_0xeb2f[31]](_0xeb2f[35],license[_0xeb2f[6]](),license[_0xeb2f[7]](),auth[_0xeb2f[8]](),auth[_0xeb2f[11]]([20],[_0xeb2f[9]]),controller[_0xeb2f[36]]);router[_0xeb2f[38]](_0xeb2f[14],license[_0xeb2f[6]](),license[_0xeb2f[7]](),auth[_0xeb2f[8]](),auth[_0xeb2f[11]]([20],[_0xeb2f[9]]),auth[_0xeb2f[11]]([20],[_0xeb2f[9]]),controller[_0xeb2f[37]]);router[_0xeb2f[38]](_0xeb2f[16],license[_0xeb2f[6]](),license[_0xeb2f[7]](),auth[_0xeb2f[8]](),auth[_0xeb2f[11]]([20],[_0xeb2f[9]]),controller[_0xeb2f[39]]);router[_0xeb2f[38]](_0xeb2f[33],license[_0xeb2f[6]](),license[_0xeb2f[7]](),auth[_0xeb2f[8]](),auth[_0xeb2f[11]]([20],[_0xeb2f[9]]),controller[_0xeb2f[40]]);router[_0xeb2f[38]](_0xeb2f[35],license[_0xeb2f[6]](),license[_0xeb2f[7]](),auth[_0xeb2f[8]](),auth[_0xeb2f[11]]([20],[_0xeb2f[9]]),controller[_0xeb2f[41]]);module[_0xeb2f[42]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/openchannel_account/openchannel_account.controller.js b/server/api/openchannel_account/openchannel_account.controller.js index 0e686a6..66dc905 100644 --- a/server/api/openchannel_account/openchannel_account.controller.js +++ b/server/api/openchannel_account/openchannel_account.controller.js @@ -1 +1 @@ -var _0xb990=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x55\x73\x65\x72","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x4D\x65\x73\x73\x61\x67\x65","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x43\x6F\x6E\x74\x61\x63\x74","\x49\x6E\x74\x65\x72\x76\x61\x6C","\x62\x6C\x75\x65\x62\x69\x72\x64","\x6D\x6F\x6D\x65\x6E\x74","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x67\x65\x74\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x6C\x65\x6E\x67\x74\x68","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x6E\x61\x6D\x65","\x6F\x6E\x6C\x69\x6E\x65","\x70\x72\x69\x6F\x72\x69\x74\x79\x20\x41\x53\x43","\x6D\x65\x72\x67\x65","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x64\x65\x66\x61\x75\x6C\x74","\x73\x63\x6F\x70\x65","\x63\x72\x65\x61\x74\x65","\x68\x61\x6E\x64\x6C\x65\x55\x6E\x69\x71\x75\x65\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x65\x72\x72\x6F\x72\x4D\x61\x6E\x61\x67\x65\x72","\x62\x6F\x64\x79","\x63\x72\x65\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x73\x65\x6E\x64\x4D\x65\x73\x73\x61\x67\x65","\x55\x73\x65\x72\x49\x64","\x75\x73\x65\x72","\x72\x65\x63\x65\x69\x76\x65\x4D\x65\x73\x73\x61\x67\x65","\x6D\x65\x73\x73\x61\x67\x65","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x4D\x65\x73\x73\x61\x67\x65\x41\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x61\x6D\x69","\x6C\x6F\x63\x61\x6C\x73","\x61\x70\x70","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D\x49\x64","\x52\x45\x43\x45\x49\x56\x45\x44","\x43\x4C\x4F\x53\x45\x44","\x66\x72\x6F\x6D","\x4E\x45\x57","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74","\x4F\x50\x45\x4E","\x73\x79\x73\x74\x65\x6D","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x49\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x41\x63\x63\x6F\x75\x6E\x74\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64","\x64\x65\x62\x75\x67","\x52\x65\x63\x65\x69\x76\x65\x64\x20\x6D\x65\x73\x73\x61\x67\x65\x20\x64\x6F\x65\x73\x20\x6E\x6F\x74\x20\x63\x6F\x6E\x74\x61\x69\x6E\x20\x73\x65\x6E\x64\x65\x72\x20\x49\x64","\x52\x65\x63\x65\x69\x76\x65\x64\x20\x6D\x65\x73\x73\x61\x67\x65\x20\x64\x6F\x65\x73\x20\x6E\x6F\x74\x20\x63\x6F\x6E\x74\x61\x69\x6E\x20\x61\x6E\x79\x20\x62\x6F\x64\x79","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x44\x45\x53\x43","\x66\x69\x6E\x64\x41\x6C\x6C","\x75\x70\x64\x61\x74\x65","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x64\x69\x73\x70\x49\x64","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x75\x70\x64\x61\x74\x65\x64\x41\x74","\x70\x72\x69\x6F\x72\x69\x74\x79","\x66\x6F\x72\x45\x61\x63\x68","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x61\x70\x70\x49\x64","\x64\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x64\x65\x73\x74\x72\x6F\x79\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x69\x64\x73","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D\x73","\x63\x6F\x6E\x74\x61\x63\x74","\x74\x61\x67\x73","\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x6C\x61\x73\x74\x45\x76\x65\x6E\x74","\x69\x73\x41\x72\x72\x61\x79","\x25","\x70\x75\x73\x68","\x24\x61\x6E\x64","\x77\x68\x65\x72\x65","\x69\x6E\x63\x6C\x75\x64\x65","\x61\x67\x65\x6E\x74","\x66\x69\x6E\x64","\x6D\x61\x70","\x71\x75\x65\x75\x65","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x49\x64","\x69\x6E\x74\x65\x72\x73\x65\x63\x74\x69\x6F\x6E","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73","\x72\x6F\x6C\x65","\x63\x72\x65\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x6D\x61\x78"];_0xb990[0];var _=require(_0xb990[1]);var Util=require(_0xb990[2]);var logger=require(_0xb990[4])(_0xb990[3]);var OpenchannelAccount=require(_0xb990[6])[_0xb990[5]];var sequelize=require(_0xb990[6])[_0xb990[7]];var User=require(_0xb990[6])[_0xb990[8]];var OpenchannelQueue=require(_0xb990[6])[_0xb990[9]];var OpenchannelApplication=require(_0xb990[6])[_0xb990[10]];var OpenchannelMessage=require(_0xb990[6])[_0xb990[11]];var OpenchannelRoom=require(_0xb990[6])[_0xb990[12]];var OpenchannelDisposition=require(_0xb990[6])[_0xb990[13]];var OpenchannelAccount=require(_0xb990[6])[_0xb990[5]];var Contact=require(_0xb990[6])[_0xb990[14]];var Interval=require(_0xb990[6])[_0xb990[15]];var Promise=require(_0xb990[16]);var moment=require(_0xb990[17]);function handleError(_0x6f67x11,_0x6f67x12){logger[_0xb990[19]](_0x6f67x12[_0xb990[18]]);return _0x6f67x11[_0xb990[21]](500)[_0xb990[20]](_0x6f67x12)}exports[_0xb990[22]]= function(_0x6f67x13,_0x6f67x11){return OpenchannelAccount[_0xb990[27]](Util[_0xb990[26]](_0x6f67x13[_0xb990[25]]))[_0xb990[24]](function(_0x6f67x14){_0x6f67x11[_0xb990[21]](200)[_0xb990[20]](_0x6f67x14)})[_0xb990[23]](function(_0x6f67x12){return handleError(_0x6f67x11,_0x6f67x12)})};exports[_0xb990[28]]= function(_0x6f67x13,_0x6f67x11){return OpenchannelAccount[_0xb990[32]](_0x6f67x13[_0xb990[31]][_0xb990[30]])[_0xb990[24]](function(_0x6f67x15){if(!_0x6f67x15){return _0x6f67x11[_0xb990[29]](404)};return _0x6f67x11[_0xb990[20]](_0x6f67x15)})[_0xb990[23]](function(_0x6f67x12){return handleError(_0x6f67x11,_0x6f67x12)})};exports[_0xb990[33]]= function(_0x6f67x13,_0x6f67x11,_0x6f67x16){return OpenchannelAccount[_0xb990[32]](_0x6f67x13[_0xb990[31]][_0xb990[30]])[_0xb990[24]](function(_0x6f67x15){if(!_0x6f67x15){return _0x6f67x11[_0xb990[29]](404)};return _0x6f67x15[_0xb990[35]]()})[_0xb990[24]](function(_0x6f67x17){return _0x6f67x11[_0xb990[21]](200)[_0xb990[20]]({rows:_0x6f67x17,count:_0x6f67x17[_0xb990[34]]})})[_0xb990[23]](function(_0x6f67x12){return handleError(_0x6f67x11,_0x6f67x12)})};exports[_0xb990[36]]= function(_0x6f67x13,_0x6f67x11,_0x6f67x16){return OpenchannelAccount[_0xb990[43]](_0xb990[42])[_0xb990[32]](_0x6f67x13[_0xb990[31]][_0xb990[30]])[_0xb990[24]](function(_0x6f67x15){if(!_0x6f67x15){return _0x6f67x11[_0xb990[29]](404)};return _0x6f67x15[_0xb990[41]](_[_0xb990[40]](Util[_0xb990[26]](_0x6f67x13[_0xb990[25]]),{include:[{model:OpenchannelQueue,attributes:[_0xb990[30],_0xb990[37]]},{model:User,attributes:[_0xb990[30],_0xb990[37],_0xb990[38]]},{model:Interval,attributes:[_0xb990[30],_0xb990[37]]}],order:_0xb990[39]}))})[_0xb990[24]](function(_0x6f67x18){return _0x6f67x11[_0xb990[20]]({count:_0x6f67x18[_0xb990[34]],rows:_0x6f67x18})})[_0xb990[23]](function(_0x6f67x12){return handleError(_0x6f67x11,_0x6f67x12)})};exports[_0xb990[44]]= function(_0x6f67x13,_0x6f67x11){return OpenchannelAccount[_0xb990[44]](_0x6f67x13[_0xb990[47]])[_0xb990[24]](function(_0x6f67x15){return _0x6f67x11[_0xb990[21]](201)[_0xb990[20]](_0x6f67x15)})[_0xb990[23]](sequelize.UniqueConstraintError,function(_0x6f67x12){return Util[_0xb990[46]][_0xb990[45]](_0x6f67x11,_0x6f67x12)})[_0xb990[23]](function(_0x6f67x12){return handleError(_0x6f67x11,_0x6f67x12)})};exports[_0xb990[48]]= function(_0x6f67x13,_0x6f67x11,_0x6f67x16){_0x6f67x13[_0xb990[47]][_0xb990[49]]= _0x6f67x13[_0xb990[31]][_0xb990[30]];return OpenchannelDisposition[_0xb990[44]](_0x6f67x13[_0xb990[47]])[_0xb990[24]](function(_0x6f67x19){return _0x6f67x11[_0xb990[21]](201)[_0xb990[20]](_0x6f67x19)})[_0xb990[23]](function(_0x6f67x12){return handleError(_0x6f67x11,_0x6f67x12)})};exports[_0xb990[50]]= function(_0x6f67x13,_0x6f67x11,_0x6f67x16){_0x6f67x13[_0xb990[47]][_0xb990[49]]= _0x6f67x13[_0xb990[31]][_0xb990[30]];_0x6f67x13[_0xb990[47]][_0xb990[51]]= _0x6f67x13[_0xb990[52]][_0xb990[30]];return OpenchannelMessage[_0xb990[44]](_0x6f67x13[_0xb990[47]],{user:_0x6f67x13[_0xb990[52]]})[_0xb990[24]](function(_0x6f67x1a){return _0x6f67x11[_0xb990[21]](201)[_0xb990[20]](_0x6f67x1a)})[_0xb990[23]](function(_0x6f67x12){return handleError(_0x6f67x11,_0x6f67x12)})};exports[_0xb990[53]]= function(_0x6f67x13,_0x6f67x11,_0x6f67x16){if(_0x6f67x13[_0xb990[47]][_0xb990[30]]){delete _0x6f67x13[_0xb990[47]][_0xb990[30]]};var _0x6f67x1b=_0x6f67x13[_0xb990[47]];var _0x6f67x1c;return OpenchannelAccount[_0xb990[32]](_0x6f67x13[_0xb990[31]][_0xb990[30]])[_0xb990[24]](function(_0x6f67x15){if(!_0x6f67x15){throw new Error(_0xb990[70])};_0x6f67x1c= _0x6f67x15;logger[_0xb990[71]](_0x6f67x1b);if(!_0x6f67x1b[_0xb990[62]]){throw new Error(_0xb990[72])};if(!_0x6f67x1b[_0xb990[47]]){throw new Error(_0xb990[73])};return OpenchannelRoom[_0xb990[76]]({limit:1,where:{contact:_0x6f67x1b[_0xb990[62]],OpenchannelAccountId:_0x6f67x1c[_0xb990[30]]},order:[[_0xb990[74],_0xb990[75]]]})})[_0xb990[24]](function(_0x6f67x1f){var _0x6f67x1e=_0x6f67x1f[0];if(!_0x6f67x1e|| _0x6f67x1e[_0xb990[21]]== _0xb990[61]){var _0x6f67x20=_0x6f67x1e?_0x6f67x1e[_0xb990[30]]:null;return OpenchannelRoom[_0xb990[44]]({contact:_0x6f67x1b[_0xb990[62]],OpenchannelAccountId:_0x6f67x1c[_0xb990[30]],status:_0xb990[63],ParentId:_0x6f67x20,lastEvent:_0xb990[60],lastEventAt:moment()[_0xb990[65]](_0xb990[64]),openchannelIn:1})}else {return _0x6f67x1e[_0xb990[69]]({lastEvent:_0xb990[60],lastEventAt:moment()[_0xb990[65]](_0xb990[64]),status:_0xb990[66],openReason:_0xb990[67],openchannelIn:++_0x6f67x1e[_0xb990[68]]})}})[_0xb990[24]](function(_0x6f67x1e){_0x6f67x1b[_0xb990[49]]= _0x6f67x1c[_0xb990[30]];_0x6f67x1b[_0xb990[59]]= _0x6f67x1e[_0xb990[30]];_0x6f67x1b[_0xb990[21]]= _0xb990[60];return OpenchannelMessage[_0xb990[44]](_0x6f67x1b)})[_0xb990[24]](function(_0x6f67x1d){_0x6f67x13[_0xb990[58]][_0xb990[57]][_0xb990[56]][_0xb990[20]]({message:_0xb990[55],doc:_0x6f67x1d});return _0x6f67x11[_0xb990[21]](201)[_0xb990[20]](_0x6f67x1d)})[_0xb990[23]](function(_0x6f67x12){logger[_0xb990[19]](_0x6f67x12[_0xb990[18]]);return _0x6f67x11[_0xb990[21]](500)[_0xb990[20]]({code:500,message:_0x6f67x12[_0xb990[54]]})})};exports[_0xb990[77]]= function(_0x6f67x13,_0x6f67x11){if(_0x6f67x13[_0xb990[47]][_0xb990[30]]){delete _0x6f67x13[_0xb990[47]][_0xb990[30]]};return OpenchannelAccount[_0xb990[32]](_0x6f67x13[_0xb990[31]][_0xb990[30]])[_0xb990[24]](function(_0x6f67x15){if(!_0x6f67x15){return _0x6f67x11[_0xb990[29]](404)};var _0x6f67x21=_[_0xb990[40]](_0x6f67x15,_0x6f67x13[_0xb990[47]]);return _0x6f67x21[_0xb990[78]]()})[_0xb990[24]](function(_0x6f67x15){return _0x6f67x11[_0xb990[21]](200)[_0xb990[20]](_0x6f67x15)})[_0xb990[23]](sequelize.UniqueConstraintError,function(_0x6f67x12){return Util[_0xb990[46]][_0xb990[45]](_0x6f67x11,_0x6f67x12)})[_0xb990[23]](function(_0x6f67x12){return handleError(_0x6f67x11,_0x6f67x12)})};exports[_0xb990[79]]= function(_0x6f67x13,_0x6f67x11){if(_0x6f67x13[_0xb990[47]][_0xb990[30]]){delete _0x6f67x13[_0xb990[47]][_0xb990[30]]};return OpenchannelDisposition[_0xb990[32]](_0x6f67x13[_0xb990[31]][_0xb990[80]])[_0xb990[24]](function(_0x6f67x22){if(!_0x6f67x22){return _0x6f67x11[_0xb990[29]](404)};var _0x6f67x21=_[_0xb990[40]](_0x6f67x22,_0x6f67x13[_0xb990[47]]);return _0x6f67x21[_0xb990[78]]()})[_0xb990[24]](function(_0x6f67x22){return _0x6f67x11[_0xb990[21]](200)[_0xb990[20]](_0x6f67x22)})[_0xb990[23]](function(_0x6f67x12){return handleError(_0x6f67x11,_0x6f67x12)})};exports[_0xb990[81]]= function(_0x6f67x13,_0x6f67x11){var _0x6f67x23=0;var _0x6f67x24=_0x6f67x13[_0xb990[47]];_0x6f67x24[_0xb990[84]](function(_0x6f67x25){delete _0x6f67x25[_0xb990[30]];delete _0x6f67x25[_0xb990[74]];delete _0x6f67x25[_0xb990[82]];_0x6f67x25[_0xb990[83]]= ++_0x6f67x23});return sequelize[_0xb990[87]](function(_0x6f67x27){return OpenchannelApplication[_0xb990[86]]({where:{OpenchannelAccountId:_0x6f67x13[_0xb990[31]][_0xb990[30]]},individualHooks:true,transaction:_0x6f67x27})[_0xb990[24]](function(_0x6f67x28){return OpenchannelApplication[_0xb990[85]](_0x6f67x24,{individualHooks:true,transaction:_0x6f67x27})})})[_0xb990[24]](function(_0x6f67x26){return _0x6f67x11[_0xb990[21]](200)[_0xb990[20]]({count:_0x6f67x26[_0xb990[34]],rows:_0x6f67x26})})[_0xb990[23]](function(_0x6f67x12){return handleError(_0x6f67x11,_0x6f67x12)})};exports[_0xb990[88]]= function(_0x6f67x13,_0x6f67x11){if(_0x6f67x13[_0xb990[47]][_0xb990[30]]){delete _0x6f67x13[_0xb990[47]][_0xb990[30]]};return OpenchannelApplication[_0xb990[32]](_0x6f67x13[_0xb990[31]][_0xb990[89]])[_0xb990[24]](function(_0x6f67x28){if(!_0x6f67x28){return _0x6f67x11[_0xb990[29]](404)};var _0x6f67x21=_[_0xb990[40]](_0x6f67x28,_0x6f67x13[_0xb990[47]]);return _0x6f67x21[_0xb990[78]]()})[_0xb990[24]](function(_0x6f67x28){return _0x6f67x11[_0xb990[21]](200)[_0xb990[20]](_0x6f67x28)})[_0xb990[23]](function(_0x6f67x12){return handleError(_0x6f67x11,_0x6f67x12)})};exports[_0xb990[86]]= function(_0x6f67x13,_0x6f67x11){return OpenchannelAccount[_0xb990[32]](_0x6f67x13[_0xb990[31]][_0xb990[30]])[_0xb990[24]](function(_0x6f67x15){if(!_0x6f67x15){return _0x6f67x11[_0xb990[29]](404)};return _0x6f67x15[_0xb990[86]]()})[_0xb990[24]](function(){return _0x6f67x11[_0xb990[29]](204)})[_0xb990[23]](function(_0x6f67x12){return handleError(_0x6f67x11,_0x6f67x12)})};exports[_0xb990[90]]= function(_0x6f67x13,_0x6f67x11,_0x6f67x16){return OpenchannelApplication[_0xb990[32]](_0x6f67x13[_0xb990[31]][_0xb990[89]])[_0xb990[24]](function(_0x6f67x28){if(!_0x6f67x28){return _0x6f67x11[_0xb990[29]](404)};return _0x6f67x28[_0xb990[86]]()})[_0xb990[24]](function(){return _0x6f67x11[_0xb990[29]](204)})[_0xb990[23]](function(_0x6f67x12){return handleError(_0x6f67x11,_0x6f67x12)})};exports[_0xb990[91]]= function(_0x6f67x13,_0x6f67x11,_0x6f67x16){return OpenchannelDisposition[_0xb990[32]](_0x6f67x13[_0xb990[31]][_0xb990[80]])[_0xb990[24]](function(_0x6f67x19){if(!_0x6f67x19){return _0x6f67x11[_0xb990[29]](404)};return _0x6f67x19[_0xb990[86]]()})[_0xb990[24]](function(){return _0x6f67x11[_0xb990[29]](204)})[_0xb990[23]](function(_0x6f67x12){return handleError(_0x6f67x11,_0x6f67x12)})};exports[_0xb990[92]]= function(_0x6f67x13,_0x6f67x11){return OpenchannelApplication[_0xb990[86]]({where:{id:_0x6f67x13[_0xb990[25]][_0xb990[93]]},individualHooks:true})[_0xb990[24]](function(){return _0x6f67x11[_0xb990[29]](204)})[_0xb990[23]](function(_0x6f67x12){return handleError(_0x6f67x11,_0x6f67x12)})};exports[_0xb990[94]]= function(_0x6f67x13,_0x6f67x11,_0x6f67x16){var _0x6f67x29={where:{OpenchannelAccountId:_0x6f67x13[_0xb990[31]][_0xb990[30]],$and:[]},attributes:[_0xb990[30],_0xb990[95],_0xb990[74],_0xb990[82],_0xb990[96],_0xb990[97],_0xb990[98]],include:[]};if(_0x6f67x13[_0xb990[25]]){if(_0x6f67x13[_0xb990[25]][_0xb990[96]]){if(_[_0xb990[99]](_0x6f67x13[_0xb990[25]][_0xb990[96]])){for(var _0x6f67x2a=0;_0x6f67x2a< _0x6f67x13[_0xb990[25]][_0xb990[96]][_0xb990[34]];_0x6f67x2a++){_0x6f67x29[_0xb990[103]][_0xb990[102]][_0xb990[101]]({tags:{$like:_0xb990[100]+ _0x6f67x13[_0xb990[25]][_0xb990[96]][_0x6f67x2a]+ _0xb990[100]}})}}else {_0x6f67x29[_0xb990[103]][_0xb990[102]][_0xb990[101]]({tags:{$like:_0xb990[100]+ _0x6f67x13[_0xb990[25]][_0xb990[96]]+ _0xb990[100]}})};delete _0x6f67x13[_0xb990[25]][_0xb990[96]]};_[_0xb990[40]](_0x6f67x29[_0xb990[103]],_0x6f67x13[_0xb990[25]])};switch(_0x6f67x13[_0xb990[52]][_0xb990[112]]){case _0xb990[105]:_0x6f67x29[_0xb990[104]][_0xb990[101]]({model:User,attributes:[_0xb990[30]]});var _0x6f67x2b;var _0x6f67x2c;var _0x6f67x2d;return User[_0xb990[32]](_0x6f67x13[_0xb990[52]][_0xb990[30]])[_0xb990[24]](function(_0x6f67x30){if(_0x6f67x30){return _0x6f67x30[_0xb990[111]]()}else {return []}})[_0xb990[24]](function(_0x6f67x2f){_0x6f67x2c= _[_0xb990[107]](_0x6f67x2f,_0xb990[30]);return OpenchannelAccount[_0xb990[32]](_0x6f67x13[_0xb990[31]][_0xb990[30]])})[_0xb990[24]](function(_0x6f67x14){if(!_0x6f67x14){return _0x6f67x11[_0xb990[29]](404)};return _0x6f67x14[_0xb990[41]]({where:{$or:[{app:_0xb990[108]},{app:_0xb990[105]}]}})[_0xb990[24]](function(_0x6f67x24){_0x6f67x2b= _[_0xb990[107]](_[_0xb990[106]](_0x6f67x24,{"\x61\x70\x70":_0xb990[105]}),_0xb990[51]);_0x6f67x2d= _[_0xb990[107]](_[_0xb990[106]](_0x6f67x24,{"\x61\x70\x70":_0xb990[108]}),_0xb990[109]);if(_[_0xb990[110]](_0x6f67x2c,_0x6f67x2d)[_0xb990[34]]|| _[_0xb990[110]](_0x6f67x2b,[_0x6f67x13[_0xb990[52]][_0xb990[30]]])[_0xb990[34]]){return OpenchannelRoom[_0xb990[76]](_0x6f67x29)[_0xb990[24]](function(_0x6f67x2e){return _0x6f67x11[_0xb990[21]](200)[_0xb990[20]](_0x6f67x2e)})[_0xb990[23]](function(_0x6f67x12){return handleError(_0x6f67x11,_0x6f67x12)})}else {return _0x6f67x11[_0xb990[21]](200)[_0xb990[20]]([])}})})[_0xb990[23]](function(_0x6f67x12){return handleError(_0x6f67x11,_0x6f67x12)});default:return OpenchannelRoom[_0xb990[76]](_0x6f67x29)[_0xb990[24]](function(_0x6f67x2e){return _0x6f67x11[_0xb990[21]](200)[_0xb990[20]](_0x6f67x2e)})[_0xb990[23]](function(_0x6f67x12){return handleError(_0x6f67x11,_0x6f67x12)})}};exports[_0xb990[113]]= function(_0x6f67x13,_0x6f67x11,_0x6f67x16){return OpenchannelApplication[_0xb990[114]](_0xb990[83],{where:{OpenchannelAccountId:_0x6f67x13[_0xb990[31]][_0xb990[30]]}})[_0xb990[24]](function(_0x6f67x32){_0x6f67x13[_0xb990[47]][_0xb990[83]]= _0x6f67x32?++_0x6f67x32:1;_0x6f67x13[_0xb990[47]][_0xb990[49]]= _0x6f67x13[_0xb990[31]][_0xb990[30]];return OpenchannelApplication[_0xb990[44]](_0x6f67x13[_0xb990[47]])})[_0xb990[24]](function(_0x6f67x31){return _0x6f67x11[_0xb990[21]](201)[_0xb990[20]](_0x6f67x31)})[_0xb990[23]](function(_0x6f67x12){return handleError(_0x6f67x11,_0x6f67x12)})} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/openchannel_account/openchannel_account.events.js b/server/api/openchannel_account/openchannel_account.events.js index 354816a..66dc905 100644 --- a/server/api/openchannel_account/openchannel_account.events.js +++ b/server/api/openchannel_account/openchannel_account.events.js @@ -1 +1 @@ -var _0x96f8=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x96f8[0];const EventEmitter=require(_0x96f8[1]);const OpenchannelAccount=require(_0x96f8[3])[_0x96f8[2]];var OpenchannelAccountEvents= new EventEmitter();OpenchannelAccountEvents[_0x96f8[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x96f8[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x96f8[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x96f8[6]};for(var e in events){var event=events[e];OpenchannelAccount[_0x96f8[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x6585x8,_0x6585x9,_0x6585xa){OpenchannelAccountEvents[_0x96f8[10]](event+ _0x96f8[8]+ _0x6585x8[_0x96f8[9]],_0x6585x8);OpenchannelAccountEvents[_0x96f8[10]](event,_0x6585x8);_0x6585xa(null)}}module[_0x96f8[11]]= OpenchannelAccountEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/openchannel_account/openchannel_account.socket.js b/server/api/openchannel_account/openchannel_account.socket.js index e370857..66dc905 100644 --- a/server/api/openchannel_account/openchannel_account.socket.js +++ b/server/api/openchannel_account/openchannel_account.socket.js @@ -1 +1 @@ -var _0x84b3=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x61\x63\x63\x6F\x75\x6E\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x84b3[0];const OpenchannelAccountEvents=require(_0x84b3[1]);var events=[_0x84b3[2],_0x84b3[3]];exports[_0x84b3[4]]= function(_0xa029x3){for(var _0xa029x4=0,_0xa029x5=events[_0x84b3[5]];_0xa029x4< _0xa029x5;_0xa029x4++){var _0xa029x6=events[_0xa029x4];var _0xa029x7=createListener(_0x84b3[6]+ _0xa029x6,_0xa029x3);OpenchannelAccountEvents[_0x84b3[7]](_0xa029x6,_0xa029x7);_0xa029x3[_0x84b3[7]](_0x84b3[8],removeListener(_0xa029x6,_0xa029x7))}};function createListener(_0xa029x6,_0xa029x3){return function(_0xa029x9){_0xa029x3[_0x84b3[9]](_0xa029x6,_0xa029x9)}}function removeListener(_0xa029x6,_0xa029x7){return function(){OpenchannelAccountEvents[_0x84b3[10]](_0xa029x6,_0xa029x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/openchannel_application/index.js b/server/api/openchannel_application/index.js index 76cba98..66dc905 100644 --- a/server/api/openchannel_application/index.js +++ b/server/api/openchannel_application/index.js @@ -1 +1 @@ -var _0xe246=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xe246[0];var express=require(_0xe246[1]);var auth=require(_0xe246[2]);var controller=require(_0xe246[3]);var license=require(_0xe246[4]);var router=express.Router();router[_0xe246[11]](_0xe246[5],auth[_0xe246[6]](),license[_0xe246[7]](),auth[_0xe246[9]]([20],[_0xe246[8]]),controller[_0xe246[10]]);router[_0xe246[11]](_0xe246[12],auth[_0xe246[6]](),license[_0xe246[7]](),auth[_0xe246[9]]([20],[_0xe246[8]]),controller[_0xe246[13]]);router[_0xe246[15]](_0xe246[5],auth[_0xe246[6]](),license[_0xe246[7]](),auth[_0xe246[9]]([20],[_0xe246[8]]),controller[_0xe246[14]]);router[_0xe246[17]](_0xe246[12],auth[_0xe246[6]](),license[_0xe246[7]](),auth[_0xe246[9]]([20],[_0xe246[8]]),controller[_0xe246[16]]);router[_0xe246[19]](_0xe246[12],auth[_0xe246[6]](),license[_0xe246[7]](),auth[_0xe246[9]]([20],[_0xe246[8]]),controller[_0xe246[18]]);module[_0xe246[20]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/openchannel_application/openchannel_application.controller.js b/server/api/openchannel_application/openchannel_application.controller.js index 1b32735..66dc905 100644 --- a/server/api/openchannel_application/openchannel_application.controller.js +++ b/server/api/openchannel_application/openchannel_application.controller.js @@ -1 +1 @@ -var _0x7d73=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x70\x72\x69\x6F\x72\x69\x74\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x6D\x61\x78","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79"];_0x7d73[0];var _=require(_0x7d73[1]);var Util=require(_0x7d73[2]);var logger=require(_0x7d73[4])(_0x7d73[3]);var OpenchannelApplication=require(_0x7d73[6])[_0x7d73[5]];function handleError(_0xfec5x6,_0xfec5x7){logger[_0x7d73[8]](_0xfec5x7[_0x7d73[7]]);return _0xfec5x6[_0x7d73[10]](500)[_0x7d73[9]](_0xfec5x7)}exports[_0x7d73[11]]= function(_0xfec5x8,_0xfec5x6){return OpenchannelApplication[_0x7d73[16]]({where:_0xfec5x8[_0x7d73[14]],order:_0x7d73[15],include:[{all:true}]})[_0x7d73[13]](function(_0xfec5x9){return _0xfec5x6[_0x7d73[10]](200)[_0x7d73[9]](_0xfec5x9)})[_0x7d73[12]](function(_0xfec5x7){return handleError(_0xfec5x6,_0xfec5x7)})};exports[_0x7d73[17]]= function(_0xfec5x8,_0xfec5x6){return OpenchannelApplication[_0x7d73[21]](_0xfec5x8[_0x7d73[20]][_0x7d73[19]],{include:[{all:true}]})[_0x7d73[13]](function(_0xfec5xa){if(!_0xfec5xa){return _0xfec5x6[_0x7d73[18]](404)};return _0xfec5x6[_0x7d73[9]](_0xfec5xa)})[_0x7d73[12]](function(_0xfec5x7){return handleError(_0xfec5x6,_0xfec5x7)})};exports[_0x7d73[22]]= function(_0xfec5x8,_0xfec5x6){return OpenchannelApplication[_0x7d73[25]](_0x7d73[15],{where:{OpenchannelAccountId:_0xfec5x8[_0x7d73[23]][_0x7d73[24]]}})[_0x7d73[13]](function(_0xfec5xb){_0xfec5x8[_0x7d73[23]][_0x7d73[15]]= _0xfec5xb?++_0xfec5xb:1;return OpenchannelApplication[_0x7d73[22]](_0xfec5x8[_0x7d73[23]])})[_0x7d73[13]](function(_0xfec5xa){return _0xfec5x6[_0x7d73[10]](201)[_0x7d73[9]](_0xfec5xa)})[_0x7d73[12]](function(_0xfec5x7){return handleError(_0xfec5x6,_0xfec5x7)})};exports[_0x7d73[26]]= function(_0xfec5x8,_0xfec5x6){if(_0xfec5x8[_0x7d73[23]][_0x7d73[19]]){delete _0xfec5x8[_0x7d73[23]][_0x7d73[19]]};return OpenchannelApplication[_0x7d73[21]](_0xfec5x8[_0x7d73[20]][_0x7d73[19]])[_0x7d73[13]](function(_0xfec5xa){if(!_0xfec5xa){return _0xfec5x6[_0x7d73[18]](404)};var _0xfec5xc=_[_0x7d73[27]](_0xfec5xa,_0xfec5x8[_0x7d73[23]]);return _0xfec5xc[_0x7d73[28]]()})[_0x7d73[13]](function(_0xfec5xa){return _0xfec5x6[_0x7d73[10]](200)[_0x7d73[9]](_0xfec5xa)})[_0x7d73[12]](function(_0xfec5x7){return handleError(_0xfec5x6,_0xfec5x7)})};exports[_0x7d73[29]]= function(_0xfec5x8,_0xfec5x6){return OpenchannelApplication[_0x7d73[21]](_0xfec5x8[_0x7d73[20]][_0x7d73[19]])[_0x7d73[13]](function(_0xfec5xa){if(!_0xfec5xa){return _0xfec5x6[_0x7d73[18]](404)};return _0xfec5xa[_0x7d73[29]]()})[_0x7d73[13]](function(){return _0xfec5x6[_0x7d73[18]](204)})[_0x7d73[12]](function(_0xfec5x7){return handleError(_0xfec5x6,_0xfec5x7)})} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/openchannel_application/openchannel_application.events.js b/server/api/openchannel_application/openchannel_application.events.js index 11bc3ee..66dc905 100644 --- a/server/api/openchannel_application/openchannel_application.events.js +++ b/server/api/openchannel_application/openchannel_application.events.js @@ -1 +1 @@ -var _0x2fe1=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x2fe1[0];const EventEmitter=require(_0x2fe1[1]);const OpenchannelApplication=require(_0x2fe1[3])[_0x2fe1[2]];var OpenchannelApplicationEvents= new EventEmitter();OpenchannelApplicationEvents[_0x2fe1[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x2fe1[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x2fe1[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x2fe1[6]};for(var e in events){var event=events[e];OpenchannelApplication[_0x2fe1[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x455dx8,_0x455dx9,_0x455dxa){OpenchannelApplicationEvents[_0x2fe1[10]](event+ _0x2fe1[8]+ _0x455dx8[_0x2fe1[9]],_0x455dx8);OpenchannelApplicationEvents[_0x2fe1[10]](event,_0x455dx8);_0x455dxa(null)}}module[_0x2fe1[11]]= OpenchannelApplicationEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/openchannel_application/openchannel_application.socket.js b/server/api/openchannel_application/openchannel_application.socket.js index ca7c866..66dc905 100644 --- a/server/api/openchannel_application/openchannel_application.socket.js +++ b/server/api/openchannel_application/openchannel_application.socket.js @@ -1 +1 @@ -var _0x8662=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x8662[0];const OpenchannelApplicationEvents=require(_0x8662[1]);var events=[_0x8662[2],_0x8662[3]];exports[_0x8662[4]]= function(_0x8ebbx3){for(var _0x8ebbx4=0,_0x8ebbx5=events[_0x8662[5]];_0x8ebbx4< _0x8ebbx5;_0x8ebbx4++){var _0x8ebbx6=events[_0x8ebbx4];var _0x8ebbx7=createListener(_0x8662[6]+ _0x8ebbx6,_0x8ebbx3);OpenchannelApplicationEvents[_0x8662[7]](_0x8ebbx6,_0x8ebbx7);_0x8ebbx3[_0x8662[7]](_0x8662[8],removeListener(_0x8ebbx6,_0x8ebbx7))}};function createListener(_0x8ebbx6,_0x8ebbx3){return function(_0x8ebbx9){_0x8ebbx3[_0x8662[9]](_0x8ebbx6,_0x8ebbx9)}}function removeListener(_0x8ebbx6,_0x8ebbx7){return function(){OpenchannelApplicationEvents[_0x8662[10]](_0x8ebbx6,_0x8ebbx7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/openchannel_disposition/index.js b/server/api/openchannel_disposition/index.js index e1b6ff0..66dc905 100644 --- a/server/api/openchannel_disposition/index.js +++ b/server/api/openchannel_disposition/index.js @@ -1 +1 @@ -var _0xf050=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xf050[0];var express=require(_0xf050[1]);var controller=require(_0xf050[2]);var auth=require(_0xf050[3]);var router=express.Router();router[_0xf050[7]](_0xf050[4],auth[_0xf050[5]](),controller[_0xf050[6]]);router[_0xf050[7]](_0xf050[8],auth[_0xf050[5]](),controller[_0xf050[9]]);router[_0xf050[11]](_0xf050[4],auth[_0xf050[5]](),controller[_0xf050[10]]);router[_0xf050[13]](_0xf050[8],auth[_0xf050[5]](),controller[_0xf050[12]]);router[_0xf050[14]](_0xf050[8],auth[_0xf050[5]](),controller[_0xf050[12]]);router[_0xf050[16]](_0xf050[8],auth[_0xf050[5]](),controller[_0xf050[15]]);module[_0xf050[17]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/openchannel_disposition/openchannel_disposition.controller.js b/server/api/openchannel_disposition/openchannel_disposition.controller.js index b158ca4..66dc905 100644 --- a/server/api/openchannel_disposition/openchannel_disposition.controller.js +++ b/server/api/openchannel_disposition/openchannel_disposition.controller.js @@ -1 +1 @@ -var _0xc7fd=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65"];_0xc7fd[0];var _=require(_0xc7fd[1]);var Util=require(_0xc7fd[2]);var logger=require(_0xc7fd[4])(_0xc7fd[3]);var OpenchannelDisposition=require(_0xc7fd[6])[_0xc7fd[5]];function handleError(_0x7d88x6,_0x7d88x7){_0x7d88x7= _0x7d88x7|| 500;return function(_0x7d88x8){logger[_0xc7fd[8]](_0x7d88x8[_0xc7fd[7]]);_0x7d88x6[_0xc7fd[10]](_0x7d88x7)[_0xc7fd[9]](_0x7d88x8)}}function responseWithResult(_0x7d88x6,_0x7d88x7){_0x7d88x7= _0x7d88x7|| 200;return function(_0x7d88xa){if(_0x7d88xa){_0x7d88x6[_0xc7fd[10]](_0x7d88x7)[_0xc7fd[11]](_0x7d88xa)}}}function handleEntityNotFound(_0x7d88x6){return function(_0x7d88xa){if(!_0x7d88xa){_0x7d88x6[_0xc7fd[10]](404)[_0xc7fd[12]]();return null};return _0x7d88xa}}function saveUpdates(_0x7d88xd){return function(_0x7d88xa){return _0x7d88xa[_0xc7fd[14]](_0x7d88xd)[_0xc7fd[13]](function(_0x7d88xe){return _0x7d88xe})}}function removeEntity(_0x7d88x6){return function(_0x7d88xa){if(_0x7d88xa){return _0x7d88xa[_0xc7fd[15]]()[_0xc7fd[13]](function(){_0x7d88x6[_0xc7fd[10]](204)[_0xc7fd[12]]()})}}}exports[_0xc7fd[16]]= function(_0x7d88x10,_0x7d88x6){OpenchannelDisposition[_0xc7fd[18]]()[_0xc7fd[13]](responseWithResult(_0x7d88x6))[_0xc7fd[17]](handleError(_0x7d88x6))};exports[_0xc7fd[19]]= function(_0x7d88x10,_0x7d88x6){OpenchannelDisposition[_0xc7fd[22]](_0x7d88x10[_0xc7fd[21]][_0xc7fd[20]])[_0xc7fd[13]](handleEntityNotFound(_0x7d88x6))[_0xc7fd[13]](responseWithResult(_0x7d88x6))[_0xc7fd[17]](handleError(_0x7d88x6))};exports[_0xc7fd[23]]= function(_0x7d88x10,_0x7d88x6){OpenchannelDisposition[_0xc7fd[23]](_0x7d88x10[_0xc7fd[24]])[_0xc7fd[13]](responseWithResult(_0x7d88x6,201))[_0xc7fd[17]](handleError(_0x7d88x6))};exports[_0xc7fd[25]]= function(_0x7d88x10,_0x7d88x6){if(_0x7d88x10[_0xc7fd[24]][_0xc7fd[20]]){delete _0x7d88x10[_0xc7fd[24]][_0xc7fd[20]]};OpenchannelDisposition[_0xc7fd[22]](_0x7d88x10[_0xc7fd[21]][_0xc7fd[20]])[_0xc7fd[13]](handleEntityNotFound(_0x7d88x6))[_0xc7fd[13]](saveUpdates(_0x7d88x10[_0xc7fd[24]]))[_0xc7fd[13]](responseWithResult(_0x7d88x6))[_0xc7fd[17]](handleError(_0x7d88x6))};exports[_0xc7fd[15]]= function(_0x7d88x10,_0x7d88x6){OpenchannelDisposition[_0xc7fd[22]](_0x7d88x10[_0xc7fd[21]][_0xc7fd[20]])[_0xc7fd[13]](handleEntityNotFound(_0x7d88x6))[_0xc7fd[13]](removeEntity(_0x7d88x6))[_0xc7fd[17]](handleError(_0x7d88x6))} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/openchannel_disposition/openchannel_disposition.events.js b/server/api/openchannel_disposition/openchannel_disposition.events.js index 429f685..66dc905 100644 --- a/server/api/openchannel_disposition/openchannel_disposition.events.js +++ b/server/api/openchannel_disposition/openchannel_disposition.events.js @@ -1 +1 @@ -var _0x90b7=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x90b7[0];const EventEmitter=require(_0x90b7[1]);const OpenchannelDisposition=require(_0x90b7[3])[_0x90b7[2]];var OpenchannelDispositionEvents= new EventEmitter();OpenchannelDispositionEvents[_0x90b7[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x90b7[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x90b7[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x90b7[6]};for(var e in events){var event=events[e];OpenchannelDisposition[_0x90b7[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xaeb0x8,_0xaeb0x9,_0xaeb0xa){OpenchannelDispositionEvents[_0x90b7[10]](event+ _0x90b7[8]+ _0xaeb0x8[_0x90b7[9]],_0xaeb0x8);OpenchannelDispositionEvents[_0x90b7[10]](event,_0xaeb0x8);_0xaeb0xa(null)}}module[_0x90b7[11]]= OpenchannelDispositionEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/openchannel_disposition/openchannel_disposition.socket.js b/server/api/openchannel_disposition/openchannel_disposition.socket.js index 4249290..66dc905 100644 --- a/server/api/openchannel_disposition/openchannel_disposition.socket.js +++ b/server/api/openchannel_disposition/openchannel_disposition.socket.js @@ -1 +1 @@ -var _0x323f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x323f[0];const OpenchannelDispositionEvents=require(_0x323f[1]);var events=[_0x323f[2],_0x323f[3]];exports[_0x323f[4]]= function(_0x85f1x3){for(var _0x85f1x4=0,_0x85f1x5=events[_0x323f[5]];_0x85f1x4< _0x85f1x5;_0x85f1x4++){var _0x85f1x6=events[_0x85f1x4];var _0x85f1x7=createListener(_0x323f[6]+ _0x85f1x6,_0x85f1x3);OpenchannelDispositionEvents[_0x323f[7]](_0x85f1x6,_0x85f1x7);_0x85f1x3[_0x323f[7]](_0x323f[8],removeListener(_0x85f1x6,_0x85f1x7))}};function createListener(_0x85f1x6,_0x85f1x3){return function(_0x85f1x9){_0x85f1x3[_0x323f[9]](_0x85f1x6,_0x85f1x9)}}function removeListener(_0x85f1x6,_0x85f1x7){return function(){OpenchannelDispositionEvents[_0x323f[10]](_0x85f1x6,_0x85f1x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/openchannel_message/index.js b/server/api/openchannel_message/index.js index c11c1ae..66dc905 100644 --- a/server/api/openchannel_message/index.js +++ b/server/api/openchannel_message/index.js @@ -1 +1 @@ -var _0x409a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x3A\x69\x64","\x61\x67\x65\x6E\x74","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x62\x75\x6C\x6B\x44\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x409a[0];var express=require(_0x409a[1]);var auth=require(_0x409a[2]);var controller=require(_0x409a[3]);var license=require(_0x409a[4]);var router=express.Router();router[_0x409a[11]](_0x409a[5],auth[_0x409a[6]](),license[_0x409a[7]](),auth[_0x409a[9]]([20],[_0x409a[8]]),controller[_0x409a[10]]);router[_0x409a[11]](_0x409a[12],auth[_0x409a[6]](),license[_0x409a[7]](),auth[_0x409a[9]]([20],[_0x409a[8]]),controller[_0x409a[13]]);router[_0x409a[11]](_0x409a[14],auth[_0x409a[6]](),license[_0x409a[7]](),auth[_0x409a[9]]([20],[_0x409a[8],_0x409a[15]]),controller[_0x409a[16]]);router[_0x409a[18]](_0x409a[5],auth[_0x409a[6]](),license[_0x409a[7]](),auth[_0x409a[9]]([20],[_0x409a[8]]),controller[_0x409a[17]]);router[_0x409a[20]](_0x409a[14],auth[_0x409a[6]](),license[_0x409a[7]](),auth[_0x409a[9]]([20],[_0x409a[8]]),controller[_0x409a[19]]);router[_0x409a[22]](_0x409a[14],auth[_0x409a[6]](),license[_0x409a[7]](),auth[_0x409a[9]]([20],[_0x409a[8]]),controller[_0x409a[21]]);router[_0x409a[22]](_0x409a[5],auth[_0x409a[6]](),license[_0x409a[7]](),auth[_0x409a[9]]([20],[_0x409a[8]]),controller[_0x409a[23]]);module[_0x409a[24]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/openchannel_message/openchannel_message.controller.js b/server/api/openchannel_message/openchannel_message.controller.js index 94c41d7..66dc905 100644 --- a/server/api/openchannel_message/openchannel_message.controller.js +++ b/server/api/openchannel_message/openchannel_message.controller.js @@ -1 +1 @@ -var _0xe672=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x4D\x65\x73\x73\x61\x67\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D","\x55\x73\x65\x72","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x69\x6E\x64\x65\x78","\x63\x72\x65\x61\x74\x65\x64\x41\x74\x20\x44\x45\x53\x43","\x77\x68\x65\x72\x65","\x71\x75\x65\x72\x79","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65","\x75\x73\x65\x72","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x55\x73\x65\x72\x49\x64","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x6C\x65\x74\x65","\x54\x52\x41\x53\x48","\x62\x75\x6C\x6B\x55\x70\x64\x61\x74\x65"];_0xe672[0];var _=require(_0xe672[1]);var Util=require(_0xe672[2]);var logger=require(_0xe672[4])(_0xe672[3]);var OpenchannelMessage=require(_0xe672[6])[_0xe672[5]];var OpenchannelRoom=require(_0xe672[6])[_0xe672[7]];var User=require(_0xe672[6])[_0xe672[8]];function handleError(_0x278cx8,_0x278cx9){logger[_0xe672[10]](_0x278cx9[_0xe672[9]]);return _0x278cx8[_0xe672[12]](500)[_0xe672[11]](_0x278cx9)}exports[_0xe672[13]]= function(_0x278cxa,_0x278cx8){var _0x278cxb={order:_0xe672[14],include:[{all:true,include:[{all:true}]}]};switch(_0x278cxa[_0xe672[20]][_0xe672[19]]){case _0xe672[17]:_0x278cxb[_0xe672[15]]= _0x278cxa[_0xe672[16]];break;case _0xe672[18]:break;default:};return OpenchannelMessage[_0xe672[23]](_0x278cxb)[_0xe672[22]](function(_0x278cxc){return _0x278cx8[_0xe672[12]](200)[_0xe672[11]](_0x278cxc)})[_0xe672[21]](function(_0x278cx9){return handleError(_0x278cx8,_0x278cx9)})};exports[_0xe672[24]]= function(_0x278cxa,_0x278cx8){return OpenchannelMessage[_0xe672[24]]()[_0xe672[22]](function(_0x278cxd){return _0x278cx8[_0xe672[12]](200)[_0xe672[11]](_0x278cxd)})[_0xe672[21]](function(_0x278cx9){return handleError(_0x278cx8,_0x278cx9)})};exports[_0xe672[25]]= function(_0x278cxa,_0x278cx8){return OpenchannelMessage[_0xe672[32]](_0x278cxa[_0xe672[28]][_0xe672[27]],{include:[{model:User,attributes:[_0xe672[27],_0xe672[29],_0xe672[30],_0xe672[31]]}]})[_0xe672[22]](function(_0x278cxe){if(!_0x278cxe){return _0x278cx8[_0xe672[26]](404)};return _0x278cx8[_0xe672[11]](_0x278cxe)})[_0xe672[21]](function(_0x278cx9){return handleError(_0x278cx8,_0x278cx9)})};exports[_0xe672[33]]= function(_0x278cxa,_0x278cx8){_0x278cxa[_0xe672[35]][_0xe672[34]]= _0x278cxa[_0xe672[20]][_0xe672[27]];return OpenchannelMessage[_0xe672[33]](_0x278cxa[_0xe672[35]])[_0xe672[22]](function(_0x278cxe){return _0x278cx8[_0xe672[12]](201)[_0xe672[11]](_0x278cxe)})[_0xe672[21]](function(_0x278cx9){return handleError(_0x278cx8,_0x278cx9)})};exports[_0xe672[36]]= function(_0x278cxa,_0x278cx8){if(_0x278cxa[_0xe672[35]][_0xe672[27]]){delete _0x278cxa[_0xe672[35]][_0xe672[27]]};return OpenchannelMessage[_0xe672[32]](_0x278cxa[_0xe672[28]][_0xe672[27]],{include:[{all:true}]})[_0xe672[22]](function(_0x278cxe){if(!_0x278cxe){return _0x278cx8[_0xe672[26]](404)};var _0x278cxf=_[_0xe672[37]](_0x278cxe,_0x278cxa[_0xe672[35]]);return _0x278cxf[_0xe672[38]]()})[_0xe672[22]](function(_0x278cxf){return _0x278cx8[_0xe672[12]](200)[_0xe672[11]](_0x278cxf)})[_0xe672[21]](function(_0x278cx9){return handleError(_0x278cx8,_0x278cx9)})};exports[_0xe672[39]]= function(_0x278cxa,_0x278cx8){return OpenchannelMessage[_0xe672[32]](_0x278cxa[_0xe672[28]][_0xe672[27]])[_0xe672[22]](function(_0x278cxe){if(!_0x278cxe){return _0x278cx8[_0xe672[26]](404)};return _0x278cxe[_0xe672[39]]()})[_0xe672[22]](function(){return _0x278cx8[_0xe672[26]](204)})[_0xe672[21]](function(_0x278cx9){return handleError(_0x278cx8,_0x278cx9)})};exports[_0xe672[40]]= function(_0x278cxa,_0x278cx8){return OpenchannelMessage[_0xe672[42]]({where:{id:{$in:_0x278cxa[_0xe672[35]][_0xe672[27]]}},attributes:{directory:_0xe672[41]}})[_0xe672[22]](function(_0x278cxe){if(!_0x278cxe){return _0x278cx8[_0xe672[26]](404)};return _0x278cxe[_0xe672[39]]()})[_0xe672[22]](function(){return _0x278cx8[_0xe672[26]](204)})[_0xe672[21]](function(_0x278cx9){return handleError(_0x278cx8,_0x278cx9)})} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/openchannel_message/openchannel_message.events.js b/server/api/openchannel_message/openchannel_message.events.js index 516ef8d..66dc905 100644 --- a/server/api/openchannel_message/openchannel_message.events.js +++ b/server/api/openchannel_message/openchannel_message.events.js @@ -1 +1 @@ -var _0xdec0=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x4D\x65\x73\x73\x61\x67\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xdec0[0];const EventEmitter=require(_0xdec0[1]);const OpenchannelMessage=require(_0xdec0[3])[_0xdec0[2]];var OpenchannelMessageEvents= new EventEmitter();OpenchannelMessageEvents[_0xdec0[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xdec0[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xdec0[6],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xdec0[7]};for(var e in events){var event=events[e];OpenchannelMessage[_0xdec0[8]](e,emitEvent(event))};function emitEvent(event){return function(_0xc992x8,_0xc992x9,_0xc992xa){OpenchannelMessageEvents[_0xdec0[11]](event+ _0xdec0[9]+ _0xc992x8[_0xdec0[10]],_0xc992x8);OpenchannelMessageEvents[_0xdec0[11]](event,_0xc992x8);_0xc992xa(null)}}module[_0xdec0[12]]= OpenchannelMessageEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/openchannel_message/openchannel_message.socket.js b/server/api/openchannel_message/openchannel_message.socket.js index 74c5a64..66dc905 100644 --- a/server/api/openchannel_message/openchannel_message.socket.js +++ b/server/api/openchannel_message/openchannel_message.socket.js @@ -1 +1 @@ -var _0x85e1=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x3A\x73\x61\x76\x65","\x73\x74\x61\x74\x75\x73","\x63\x68\x61\x6E\x67\x65\x64","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x3A\x75\x70\x64\x61\x74\x65","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x85e1[0];const OpenchannelMessageEvents=require(_0x85e1[1]);var events=[_0x85e1[2],_0x85e1[3],_0x85e1[4]];exports[_0x85e1[5]]= function(_0x2d30x3){for(var _0x2d30x4=0,_0x2d30x5=events[_0x85e1[6]];_0x2d30x4< _0x2d30x5;_0x2d30x4++){var _0x2d30x6=events[_0x2d30x4];var _0x2d30x7=createListener(_0x85e1[7]+ _0x2d30x6,_0x2d30x3);OpenchannelMessageEvents[_0x85e1[8]](_0x2d30x6,_0x2d30x7);_0x2d30x3[_0x85e1[8]](_0x85e1[9],removeListener(_0x2d30x6,_0x2d30x7))}};function createListener(_0x2d30x6,_0x2d30x3){return function(_0x2d30x9){switch(_0x2d30x6){case _0x85e1[11]:_0x2d30x3[_0x85e1[10]](_0x2d30x6,_0x2d30x9);break;case _0x85e1[14]:if(_0x2d30x9[_0x85e1[13]](_0x85e1[12])){_0x2d30x3[_0x85e1[10]](_0x2d30x6,_0x2d30x9)};break;case _0x85e1[15]:_0x2d30x3[_0x85e1[10]](_0x2d30x6,_0x2d30x9);break;default:}}}function removeListener(_0x2d30x6,_0x2d30x7){return function(){OpenchannelMessageEvents[_0x85e1[16]](_0x2d30x6,_0x2d30x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/openchannel_queue/index.js b/server/api/openchannel_queue/index.js index 008d0ee..66dc905 100644 --- a/server/api/openchannel_queue/index.js +++ b/server/api/openchannel_queue/index.js @@ -1 +1 @@ -var _0xf5bd=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x71\x75\x65\x75\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x61\x67\x65\x6E\x74\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x68\x61\x73\x52\x6F\x6C\x65","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0xf5bd[0];var express=require(_0xf5bd[1]);var auth=require(_0xf5bd[2]);var controller=require(_0xf5bd[3]);var license=require(_0xf5bd[4]);var router=express.Router();router[_0xf5bd[12]](_0xf5bd[5],license[_0xf5bd[6]](),auth[_0xf5bd[7]](),license[_0xf5bd[8]](),auth[_0xf5bd[10]]([20],[_0xf5bd[9]]),controller[_0xf5bd[11]]);router[_0xf5bd[12]](_0xf5bd[13],license[_0xf5bd[6]](),auth[_0xf5bd[7]](),license[_0xf5bd[8]](),auth[_0xf5bd[10]]([20],[_0xf5bd[9]]),controller[_0xf5bd[14]]);router[_0xf5bd[12]](_0xf5bd[15],license[_0xf5bd[6]](),auth[_0xf5bd[7]](),license[_0xf5bd[8]](),auth[_0xf5bd[10]]([20],[_0xf5bd[9]]),controller[_0xf5bd[16]]);router[_0xf5bd[19]](_0xf5bd[5],license[_0xf5bd[6]](),auth[_0xf5bd[7]](),license[_0xf5bd[8]](),auth[_0xf5bd[17]](_0xf5bd[9]),controller[_0xf5bd[18]]);router[_0xf5bd[19]](_0xf5bd[15],license[_0xf5bd[6]](),auth[_0xf5bd[7]](),license[_0xf5bd[8]](),auth[_0xf5bd[17]](_0xf5bd[9]),controller[_0xf5bd[20]]);router[_0xf5bd[22]](_0xf5bd[13],license[_0xf5bd[6]](),auth[_0xf5bd[7]](),license[_0xf5bd[8]](),auth[_0xf5bd[17]](_0xf5bd[9]),controller[_0xf5bd[21]]);router[_0xf5bd[23]](_0xf5bd[13],license[_0xf5bd[6]](),auth[_0xf5bd[7]](),license[_0xf5bd[8]](),auth[_0xf5bd[17]](_0xf5bd[9]),controller[_0xf5bd[21]]);router[_0xf5bd[25]](_0xf5bd[13],license[_0xf5bd[6]](),auth[_0xf5bd[7]](),license[_0xf5bd[8]](),auth[_0xf5bd[17]](_0xf5bd[9]),controller[_0xf5bd[24]]);router[_0xf5bd[25]](_0xf5bd[15],license[_0xf5bd[6]](),auth[_0xf5bd[7]](),license[_0xf5bd[8]](),auth[_0xf5bd[17]](_0xf5bd[9]),controller[_0xf5bd[26]]);router[_0xf5bd[25]](_0xf5bd[5],license[_0xf5bd[6]](),auth[_0xf5bd[7]](),license[_0xf5bd[8]](),auth[_0xf5bd[17]](_0xf5bd[9]),controller[_0xf5bd[27]]);module[_0xf5bd[28]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/openchannel_queue/openchannel_queue.controller.js b/server/api/openchannel_queue/openchannel_queue.controller.js index 85aa80c..66dc905 100644 --- a/server/api/openchannel_queue/openchannel_queue.controller.js +++ b/server/api/openchannel_queue/openchannel_queue.controller.js @@ -1 +1 @@ -var _0xa946=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x55\x73\x65\x72\x48\x61\x73\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x69\x64","\x75\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x67\x65\x74\x51\x75\x65\x72\x79","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x66\x61\x75\x6C\x74","\x73\x63\x6F\x70\x65","\x72\x6F\x6C\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x70\x61\x72\x61\x6D\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x6C\x65\x6E\x67\x74\x68","\x61\x67\x65\x6E\x74","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x67\x65\x74\x55\x73\x65\x72\x73","\x63\x72\x65\x61\x74\x65","\x68\x61\x6E\x64\x6C\x65\x55\x6E\x69\x71\x75\x65\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x65\x72\x72\x6F\x72\x4D\x61\x6E\x61\x67\x65\x72","\x61\x67\x65\x6E\x74\x73","\x62\x6F\x64\x79","\x70\x65\x6E\x61\x6C\x74\x79","\x61\x64\x64\x55\x73\x65\x72\x73","\x75\x70\x64\x61\x74\x65","\x73\x61\x76\x65","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x6D\x61\x70","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x72\x65\x6D\x6F\x76\x65\x55\x73\x65\x72\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x20\x51\x75\x65\x75\x65\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64","\x64\x65\x73\x74\x72\x6F\x79","\x71\x75\x65\x75\x65","\x68\x61\x6E\x64\x6C\x65\x46\x6F\x72\x65\x69\x67\x6E\x4B\x65\x79\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0xa946[0];var _=require(_0xa946[1]);var Util=require(_0xa946[2]);var logger=require(_0xa946[4])(_0xa946[3]);var OpenchannelQueue=require(_0xa946[6])[_0xa946[5]];var User=require(_0xa946[6])[_0xa946[7]];var sequelize=require(_0xa946[6])[_0xa946[8]];var UserHasOpenchannelQueue=require(_0xa946[6])[_0xa946[9]];function handleError(_0x4da2x9,_0x4da2xa){logger[_0xa946[11]](_0x4da2xa[_0xa946[10]]);return _0x4da2x9[_0xa946[13]](500)[_0xa946[12]](_0x4da2xa)}exports[_0xa946[14]]= function(_0x4da2xb,_0x4da2x9){switch(_0x4da2xb[_0xa946[20]][_0xa946[27]]){case _0xa946[20]:return User[_0xa946[21]](_0x4da2xb[_0xa946[20]][_0xa946[19]],{attributes:[_0xa946[19]]})[_0xa946[16]](Util[_0xa946[18]](_0x4da2xb[_0xa946[17]]))[_0xa946[16]](function(_0x4da2xc){_0x4da2x9[_0xa946[13]](200)[_0xa946[12]](_0x4da2xc)})[_0xa946[15]](function(_0x4da2xa){return handleError(_0x4da2x9,_0x4da2xa)});default:return OpenchannelQueue[_0xa946[26]](_0xa946[25])[_0xa946[24]](_[_0xa946[23]](Util[_0xa946[22]](_0x4da2xb[_0xa946[17]]),{distinct:true}))[_0xa946[16]](function(_0x4da2xc){_0x4da2x9[_0xa946[13]](200)[_0xa946[12]](_0x4da2xc)})[_0xa946[15]](function(_0x4da2xa){return handleError(_0x4da2x9,_0x4da2xa)})}};exports[_0xa946[28]]= function(_0x4da2xb,_0x4da2x9){return OpenchannelQueue[_0xa946[26]](_0xa946[25])[_0xa946[21]](_0x4da2xb[_0xa946[30]][_0xa946[19]])[_0xa946[16]](function(_0x4da2xd){if(!_0x4da2xd){return _0x4da2x9[_0xa946[29]](404)};return _0x4da2x9[_0xa946[12]](_0x4da2xd)})[_0xa946[15]](function(_0x4da2xa){return handleError(_0x4da2x9,_0x4da2xa)})};exports[_0xa946[31]]= function(_0x4da2xb,_0x4da2x9){return OpenchannelQueue[_0xa946[21]](_0x4da2xb[_0xa946[30]][_0xa946[19]])[_0xa946[16]](function(_0x4da2xf){if(!_0x4da2xf){return _0x4da2x9[_0xa946[29]](404)};return _0x4da2xf[_0xa946[37]]({where:{role:_0xa946[33]},attributes:[_0xa946[19],_0xa946[34],_0xa946[35],_0xa946[36]]})})[_0xa946[16]](function(_0x4da2xe){return _0x4da2x9[_0xa946[13]](200)[_0xa946[12]]({rows:_0x4da2xe,count:_0x4da2xe[_0xa946[32]]})})[_0xa946[15]](function(_0x4da2xa){return handleError(_0x4da2x9,_0x4da2xa)})};exports[_0xa946[38]]= function(_0x4da2xb,_0x4da2x9){var _0x4da2x10;return OpenchannelQueue[_0xa946[38]](_0x4da2xb[_0xa946[42]])[_0xa946[16]](function(_0x4da2x11){_0x4da2x10= _0x4da2x11;if(_0x4da2xb[_0xa946[42]][_0xa946[41]]){return _0x4da2x10[_0xa946[44]](_0x4da2xb[_0xa946[42]][_0xa946[41]],{penalty:_0x4da2xb[_0xa946[42]][_0xa946[43]]|| 0,queue:_0x4da2x10[_0xa946[34]]})}})[_0xa946[16]](function(){return _0x4da2x9[_0xa946[13]](201)[_0xa946[12]](_0x4da2x10)})[_0xa946[15]](sequelize.UniqueConstraintError,function(_0x4da2xa){return Util[_0xa946[40]][_0xa946[39]](_0x4da2x9,_0x4da2xa)})[_0xa946[15]](function(_0x4da2xa){return handleError(_0x4da2x9,_0x4da2xa)})};exports[_0xa946[45]]= function(_0x4da2xb,_0x4da2x9){if(_0x4da2xb[_0xa946[42]][_0xa946[19]]){delete _0x4da2xb[_0xa946[42]][_0xa946[19]]};return OpenchannelQueue[_0xa946[21]](_0x4da2xb[_0xa946[30]][_0xa946[19]])[_0xa946[16]](function(_0x4da2xd){if(!_0x4da2xd){return _0x4da2x9[_0xa946[29]](404)};var _0x4da2x12=_[_0xa946[23]](_0x4da2xd,_0x4da2xb[_0xa946[42]]);return _0x4da2x12[_0xa946[46]]()})[_0xa946[16]](function(_0x4da2xd){return _0x4da2x9[_0xa946[13]](200)[_0xa946[12]](_0x4da2xd)})[_0xa946[15]](sequelize.UniqueConstraintError,function(_0x4da2xa){return Util[_0xa946[40]][_0xa946[39]](_0x4da2x9,_0x4da2xa)})[_0xa946[15]](function(_0x4da2xa){return handleError(_0x4da2x9,_0x4da2xa)})};exports[_0xa946[47]]= function(_0x4da2xb,_0x4da2x9,_0x4da2x13){return OpenchannelQueue[_0xa946[21]](_0x4da2xb[_0xa946[30]][_0xa946[19]])[_0xa946[16]](function(_0x4da2xd){if(!_0x4da2xd){return _0x4da2x9[_0xa946[29]](404)};var _0x4da2x14=_[_0xa946[48]](_0x4da2xb[_0xa946[42]][_0xa946[41]],function(_0x4da2x15){return {UserId:_0x4da2x15,penalty:_0x4da2xb[_0xa946[42]][_0xa946[43]],OpenchannelQueueId:_0x4da2xd[_0xa946[19]],queue:_0x4da2xd[_0xa946[34]]}});return UserHasOpenchannelQueue[_0xa946[49]](_0x4da2x14,{individualHooks:true})})[_0xa946[16]](function(){return _0x4da2x9[_0xa946[29]](200)})[_0xa946[15]](function(_0x4da2xa){return handleError(_0x4da2x9,_0x4da2xa)})};exports[_0xa946[50]]= function(_0x4da2xb,_0x4da2x9){return OpenchannelQueue[_0xa946[21]](_0x4da2xb[_0xa946[30]][_0xa946[19]])[_0xa946[16]](function(_0x4da2xd){if(_0x4da2xd){return _0x4da2xd[_0xa946[51]](_0x4da2xb[_0xa946[17]][_0xa946[41]],{individualHooks:true})}else {throw new Error(_0xa946[52])}})[_0xa946[16]](function(){return _0x4da2x9[_0xa946[29]](202)})[_0xa946[15]](function(_0x4da2xa){return handleError(_0x4da2x9,_0x4da2xa)})};exports[_0xa946[53]]= function(_0x4da2xb,_0x4da2x9){var _0x4da2x16;return OpenchannelQueue[_0xa946[21]](_0x4da2xb[_0xa946[30]][_0xa946[19]])[_0xa946[16]](function(_0x4da2xd){_0x4da2x16= _0x4da2xd;if(!_0x4da2xd){return _0x4da2x9[_0xa946[29]](404)};return _0x4da2xd[_0xa946[53]]()})[_0xa946[16]](function(){return _0x4da2x9[_0xa946[29]](204)})[_0xa946[15]](sequelize.ForeignKeyConstraintError,function(_0x4da2xa){return Util[_0xa946[40]][_0xa946[55]](_0x4da2x9,_0xa946[54],_0x4da2x16[_0xa946[34]],_0x4da2xa)})[_0xa946[15]](function(_0x4da2xa){return handleError(_0x4da2x9,_0x4da2xa)})};exports[_0xa946[56]]= function(_0x4da2xb,_0x4da2x9){return OpenchannelQueue[_0xa946[53]]({where:{id:_0x4da2xb[_0xa946[17]][_0xa946[57]]},individualHooks:true})[_0xa946[16]](function(){return _0x4da2x9[_0xa946[29]](204)})[_0xa946[15]](function(_0x4da2xa){return handleError(_0x4da2x9,_0x4da2xa)})} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/openchannel_queue/openchannel_queue.events.js b/server/api/openchannel_queue/openchannel_queue.events.js index 4169ae1..66dc905 100644 --- a/server/api/openchannel_queue/openchannel_queue.events.js +++ b/server/api/openchannel_queue/openchannel_queue.events.js @@ -1 +1 @@ -var _0x378c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x378c[0];const EventEmitter=require(_0x378c[1]);const OpenchannelQueue=require(_0x378c[3])[_0x378c[2]];var OpenchannelQueueEvents= new EventEmitter();OpenchannelQueueEvents[_0x378c[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x378c[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x378c[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x378c[6]};for(var e in events){var event=events[e];OpenchannelQueue[_0x378c[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xac0bx8,_0xac0bx9,_0xac0bxa){OpenchannelQueueEvents[_0x378c[10]](event+ _0x378c[8]+ _0xac0bx8[_0x378c[9]],_0xac0bx8);OpenchannelQueueEvents[_0x378c[10]](event,_0xac0bx8);_0xac0bxa(null)}}module[_0x378c[11]]= OpenchannelQueueEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/openchannel_queue/openchannel_queue.socket.js b/server/api/openchannel_queue/openchannel_queue.socket.js index 1c9611c..66dc905 100644 --- a/server/api/openchannel_queue/openchannel_queue.socket.js +++ b/server/api/openchannel_queue/openchannel_queue.socket.js @@ -1 +1 @@ -var _0x4a14=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x71\x75\x65\x75\x65\x2E\x65\x76\x65\x6E\x74\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6C\x6F\x64\x61\x73\x68","\x62\x6C\x75\x65\x62\x69\x72\x64","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x71\x75\x65\x75\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x72\x6F\x6C\x65","\x61\x64\x6D\x69\x6E","\x6E\x61\x6D\x65","\x6A\x6F\x69\x6E","\x65\x6D\x69\x74","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x71\x75\x65\x75\x65\x3A\x73\x61\x76\x65","\x45\x72\x72\x6F\x72\x20\x66\x69\x6C\x74\x65\x72\x69\x6E\x67\x20\x71\x75\x65\x75\x65\x73\x20\x61\x66\x74\x65\x72\x20\x71\x75\x65\x75\x65\x20\x73\x61\x76\x65","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x74\x68\x65\x6E","\x72\x65\x73\x6F\x6C\x76\x65","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x71\x75\x65\x75\x65\x3A\x75\x70\x64\x61\x74\x65","\x6C\x65\x61\x76\x65","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x71\x75\x65\x75\x65\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x72\x6F\x77\x73","\x6D\x61\x70","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x75\x73\x65\x72\x49\x64","\x69\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x66\x69\x6E\x64\x41\x6C\x6C"];_0x4a14[0];var OpenchannelQueueEvents=require(_0x4a14[1]);var OpenchannelQueue=require(_0x4a14[3])[_0x4a14[2]];var User=require(_0x4a14[3])[_0x4a14[4]];var Util=require(_0x4a14[5]);var _=require(_0x4a14[6]);var Promise=require(_0x4a14[7]);var events=[_0x4a14[8],_0x4a14[9]];exports[_0x4a14[10]]= function(_0xbbadx8){for(var _0xbbadx9=0,_0xbbadxa=events[_0x4a14[11]];_0xbbadx9< _0xbbadxa;_0xbbadx9++){var _0xbbadxb=events[_0xbbadx9];var _0xbbadxc=createListener(_0x4a14[12]+ _0xbbadxb,_0xbbadx8);OpenchannelQueueEvents[_0x4a14[13]](_0xbbadxb,_0xbbadxc);_0xbbadx8[_0x4a14[13]](_0x4a14[14],removeListener(_0xbbadxb,_0xbbadxc))}};function createListener(_0xbbadxb,_0xbbadx8){return function(_0xbbadxe){switch(_0xbbadxb){case _0x4a14[20]:if(_0xbbadx8[_0x4a14[15]]=== _0x4a14[16]){_0xbbadx8[_0x4a14[18]](_0xbbadxe[_0x4a14[17]]);_0xbbadx8[_0x4a14[19]](_0xbbadxb,_0xbbadxe)};break;case _0x4a14[27]:return Promise[_0x4a14[26]]()[_0x4a14[25]](getOpenchannelQueues(_0xbbadx8))[_0x4a14[25]](function(_0xbbadx10){if(_[_0x4a14[24]](_0xbbadx10,_0xbbadxe[_0x4a14[17]])){_0xbbadx8[_0x4a14[19]](_0xbbadxb,_0xbbadxe)}})[_0x4a14[23]](function(_0xbbadxf){console[_0x4a14[22]](_0x4a14[21],_0xbbadxf)});break;case _0x4a14[29]:_0xbbadx8[_0x4a14[28]](_0xbbadxe[_0x4a14[17]]);_0xbbadx8[_0x4a14[19]](_0xbbadxb,_0xbbadxe);break;default:}}}function removeListener(_0xbbadxb,_0xbbadxc){return function(){OpenchannelQueueEvents[_0x4a14[30]](_0xbbadxb,_0xbbadxc)}}function getOpenchannelQueues(_0xbbadx13){return function(){switch(_0xbbadx13[_0x4a14[15]]){case _0x4a14[37]:return User[_0x4a14[36]](_0xbbadx13[_0x4a14[34]],{attributes:[_0x4a14[35]]})[_0x4a14[25]](Util[_0x4a14[33]]())[_0x4a14[25]](function(_0xbbadx10){return _[_0x4a14[32]](_0xbbadx10[_0x4a14[31]],_0x4a14[17])});case _0x4a14[16]:return OpenchannelQueue[_0x4a14[38]]()[_0x4a14[25]](function(_0xbbadx14){return {rows:_0xbbadx14}})[_0x4a14[25]](function(_0xbbadx10){return _[_0x4a14[32]](_0xbbadx10[_0x4a14[31]],_0x4a14[17])});default:return []}}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/openchannel_room/index.js b/server/api/openchannel_room/index.js index 766bc15..66dc905 100644 --- a/server/api/openchannel_room/index.js +++ b/server/api/openchannel_room/index.js @@ -1 +1 @@ -var _0x7b56=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x72\x6F\x6F\x6D\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x61\x73\x68\x62\x6F\x61\x72\x64","\x67\x65\x74\x44\x61\x73\x68\x62\x6F\x61\x72\x64\x56\x61\x6C\x75\x65\x73","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x3A\x69\x64\x2F\x61\x67\x65\x6E\x74\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x2F\x6D\x65\x73\x73\x61\x67\x65\x73\x2F\x3A\x69\x64","\x67\x65\x74\x52\x6F\x6F\x6D\x42\x79\x4D\x65\x73\x73\x61\x67\x65","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x2F\x3A\x69\x64\x2F\x6D\x65\x73\x73\x61\x67\x65\x73","\x63\x72\x65\x61\x74\x65\x4D\x65\x73\x73\x61\x67\x65","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x75\x70\x64\x61\x74\x65\x41\x67\x65\x6E\x74\x73","\x75\x70\x64\x61\x74\x65\x50\x61\x74\x63\x68","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x7b56[0];var express=require(_0x7b56[1]);var auth=require(_0x7b56[2]);var controller=require(_0x7b56[3]);var license=require(_0x7b56[4]);var router=express.Router();router[_0x7b56[13]](_0x7b56[5],license[_0x7b56[6]](),license[_0x7b56[7]](),auth[_0x7b56[8]](),auth[_0x7b56[11]]([20],[_0x7b56[9],_0x7b56[10]]),controller[_0x7b56[12]]);router[_0x7b56[13]](_0x7b56[14],license[_0x7b56[6]](),license[_0x7b56[7]](),auth[_0x7b56[8]](),auth[_0x7b56[11]]([20,17],[_0x7b56[9]]),controller[_0x7b56[15]]);router[_0x7b56[13]](_0x7b56[16],license[_0x7b56[6]](),license[_0x7b56[7]](),auth[_0x7b56[8]](),auth[_0x7b56[11]]([20],[_0x7b56[9],_0x7b56[10]]),controller[_0x7b56[17]]);router[_0x7b56[13]](_0x7b56[18],license[_0x7b56[6]](),license[_0x7b56[7]](),auth[_0x7b56[8]](),auth[_0x7b56[11]]([20],[_0x7b56[9]]),controller[_0x7b56[19]]);router[_0x7b56[13]](_0x7b56[20],license[_0x7b56[6]](),license[_0x7b56[7]](),auth[_0x7b56[8]](),auth[_0x7b56[11]]([20],[_0x7b56[9],_0x7b56[10]]),controller[_0x7b56[21]]);router[_0x7b56[13]](_0x7b56[22],license[_0x7b56[6]](),license[_0x7b56[7]](),auth[_0x7b56[8]](),auth[_0x7b56[11]]([20],[_0x7b56[9],_0x7b56[10]]),controller[_0x7b56[23]]);router[_0x7b56[25]](_0x7b56[5],license[_0x7b56[6]](),license[_0x7b56[7]](),auth[_0x7b56[8]](),auth[_0x7b56[11]]([20],[_0x7b56[9]]),controller[_0x7b56[24]]);router[_0x7b56[25]](_0x7b56[26],license[_0x7b56[6]](),license[_0x7b56[7]](),auth[_0x7b56[8]](),auth[_0x7b56[11]]([20],[_0x7b56[9]]),controller[_0x7b56[27]]);router[_0x7b56[29]](_0x7b56[16],license[_0x7b56[6]](),license[_0x7b56[7]](),auth[_0x7b56[8]](),auth[_0x7b56[11]]([20],[_0x7b56[9],_0x7b56[10]]),controller[_0x7b56[28]]);router[_0x7b56[29]](_0x7b56[20],license[_0x7b56[6]](),license[_0x7b56[7]](),auth[_0x7b56[8]](),auth[_0x7b56[11]]([20],[_0x7b56[9],_0x7b56[10]]),controller[_0x7b56[30]]);router[_0x7b56[32]](_0x7b56[16],license[_0x7b56[6]](),license[_0x7b56[7]](),auth[_0x7b56[8]](),auth[_0x7b56[11]]([20],[_0x7b56[9],_0x7b56[10]]),controller[_0x7b56[31]]);router[_0x7b56[34]](_0x7b56[16],license[_0x7b56[6]](),license[_0x7b56[7]](),auth[_0x7b56[8]](),auth[_0x7b56[11]]([20],[_0x7b56[9]]),controller[_0x7b56[33]]);router[_0x7b56[34]](_0x7b56[5],license[_0x7b56[6]](),license[_0x7b56[7]](),auth[_0x7b56[8]](),auth[_0x7b56[11]]([20],[_0x7b56[9]]),controller[_0x7b56[35]]);module[_0x7b56[36]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/openchannel_room/openchannel_room.controller.js b/server/api/openchannel_room/openchannel_room.controller.js index a0911fc..66dc905 100644 --- a/server/api/openchannel_room/openchannel_room.controller.js +++ b/server/api/openchannel_room/openchannel_room.controller.js @@ -1 +1 @@ -var _0x3412=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x6D\x6F\x6D\x65\x6E\x74","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x4D\x65\x73\x73\x61\x67\x65","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x55\x73\x65\x72","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x66\x61\x75\x6C\x74","\x61\x67\x65\x6E\x74","\x69\x64","\x75\x73\x65\x72","\x73\x63\x6F\x70\x65","\x72\x6F\x6C\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x6D\x61\x70","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x70\x65\x6E\x64\x69\x6E\x67","\x50\x45\x4E\x44\x49\x4E\x47","\x64\x61\x79","\x73\x74\x61\x72\x74\x4F\x66","\x6D\x65\x72\x67\x65","\x63\x6F\x75\x6E\x74","\x61\x6C\x6C","\x6E\x65\x77","\x4E\x45\x57","\x6F\x70\x65\x6E","\x4F\x50\x45\x4E","\x63\x6C\x6F\x73\x65\x64","\x43\x4C\x4F\x53\x45\x44","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x70\x61\x72\x61\x6D\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x69\x6E\x74\x65\x72\x6E\x61\x6C","\x67\x65\x74\x55\x73\x65\x72\x73","\x67\x65\x74\x52\x6F\x6F\x6D\x42\x79\x4D\x65\x73\x73\x61\x67\x65","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x63\x72\x65\x61\x74\x65\x4D\x65\x73\x73\x61\x67\x65","\x55\x73\x65\x72\x49\x64","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D\x49\x64","\x75\x70\x64\x61\x74\x65","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65\x41\x67\x65\x6E\x74\x73","\x61\x67\x65\x6E\x74\x73","\x73\x65\x74\x55\x73\x65\x72\x73","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x67\x65\x74\x44\x61\x73\x68\x62\x6F\x61\x72\x64\x56\x61\x6C\x75\x65\x73","\x6B\x65\x79\x42\x79","\x6D\x61\x70\x56\x61\x6C\x75\x65\x73","\x53\x45\x4C\x45\x43\x54\x20\x4C\x4F\x57\x45\x52\x28\x73\x74\x61\x74\x75\x73\x29\x20\x41\x53\x20\x73\x74\x61\x74\x75\x73\x2C\x20\x43\x4F\x55\x4E\x54\x28\x69\x64\x29\x20\x41\x53\x20\x63\x6F\x75\x6E\x74\x20\x46\x52\x4F\x4D\x20\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x72\x6F\x6F\x6D\x73\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x73\x74\x61\x74\x75\x73","\x53\x45\x4C\x45\x43\x54","\x51\x75\x65\x72\x79\x54\x79\x70\x65\x73","\x75\x70\x64\x61\x74\x65\x50\x61\x74\x63\x68","\x2C","\x73\x70\x6C\x69\x74"];_0x3412[0];var _=require(_0x3412[1]);var Util=require(_0x3412[2]);var sequelize=require(_0x3412[4])[_0x3412[3]];var moment=require(_0x3412[5]);var logger=require(_0x3412[7])(_0x3412[6]);var OpenchannelRoom=require(_0x3412[4])[_0x3412[8]];var OpenchannelMessage=require(_0x3412[4])[_0x3412[9]];var OpenchannelAccount=require(_0x3412[4])[_0x3412[10]];var OpenchannelQueue=require(_0x3412[4])[_0x3412[11]];var OpenchannelApplication=require(_0x3412[4])[_0x3412[12]];var User=require(_0x3412[4])[_0x3412[13]];function handleError(_0xa3c8xd,_0xa3c8xe){logger[_0x3412[15]](_0xa3c8xe[_0x3412[14]]);return _0xa3c8xd[_0x3412[17]](500)[_0x3412[16]](_0xa3c8xe)}exports[_0x3412[18]]= function(_0xa3c8xf,_0xa3c8xd){switch(_0xa3c8xf[_0x3412[27]][_0x3412[29]]){case _0x3412[25]:return OpenchannelRoom[_0x3412[28]](_0x3412[24],{method:[_0x3412[25],_0xa3c8xf[_0x3412[27]][_0x3412[26]]]})[_0x3412[23]](Util[_0x3412[22]](_0xa3c8xf[_0x3412[21]]))[_0x3412[20]](function(_0xa3c8x10){return _0xa3c8xd[_0x3412[17]](200)[_0x3412[16]](_0xa3c8x10)})[_0x3412[19]](function(_0xa3c8xe){return handleError(_0xa3c8xd,_0xa3c8xe)});default:return OpenchannelRoom[_0x3412[28]](_0x3412[24])[_0x3412[23]](Util[_0x3412[22]](_0xa3c8xf[_0x3412[21]]))[_0x3412[20]](function(_0xa3c8x10){return _0xa3c8xd[_0x3412[17]](200)[_0x3412[16]](_0xa3c8x10)})[_0x3412[19]](function(_0xa3c8xe){return handleError(_0xa3c8xd,_0xa3c8xe)})}};exports[_0x3412[30]]= function(_0xa3c8xf,_0xa3c8xd){return OpenchannelRoom[_0x3412[30]]()[_0x3412[20]](function(_0xa3c8x11){return _0xa3c8xd[_0x3412[17]](200)[_0x3412[16]](_0xa3c8x11)})[_0x3412[19]](function(_0xa3c8xe){return handleError(_0xa3c8xd,_0xa3c8xe)})};function getOpenchannelQueues(_0xa3c8x13){return function(){switch(_0xa3c8x13[_0x3412[29]]){case _0x3412[27]:return User[_0x3412[33]](_0xa3c8x13[_0x3412[26]],{attributes:[_0x3412[26]]})[_0x3412[20]](Util[_0x3412[32]]({},{attributes:[_0x3412[26]],include:[{raw:true,model:User,attributes:[_0x3412[26]]}]}))[_0x3412[20]](function(_0xa3c8x14){return {include:{model:OpenchannelAccount,include:{model:OpenchannelApplication,include:{model:OpenchannelQueue,where:{id:_[_0x3412[31]](_0xa3c8x14,_0x3412[26])}}}}}});default:return {}}}}exports[_0x3412[34]]= function(_0xa3c8xf,_0xa3c8xd){return Promise[_0x3412[40]]([])[_0x3412[20]](getOpenchannelQueues(_0xa3c8xf[_0x3412[27]]))[_0x3412[20]](function(_0xa3c8x16){return OpenchannelRoom[_0x3412[39]](_[_0x3412[38]](Util[_0x3412[22]](_0xa3c8xf[_0x3412[21]],{status:_0x3412[35],updatedAt:{$gte:moment()[_0x3412[37]](_0x3412[36])}}),_0xa3c8x16))})[_0x3412[20]](function(_0xa3c8x15){return _0xa3c8xd[_0x3412[17]](200)[_0x3412[16]]({value:_0xa3c8x15})})[_0x3412[19]](function(_0xa3c8xe){return handleError(_0xa3c8xd,_0xa3c8xe)})};exports[_0x3412[41]]= function(_0xa3c8xf,_0xa3c8xd){return Promise[_0x3412[40]]([])[_0x3412[20]](getOpenchannelQueues(_0xa3c8xf[_0x3412[27]]))[_0x3412[20]](function(_0xa3c8x16){return OpenchannelRoom[_0x3412[39]](_[_0x3412[38]](Util[_0x3412[22]](_0xa3c8xf[_0x3412[21]],{status:_0x3412[42],updatedAt:{$gte:moment()[_0x3412[37]](_0x3412[36])}}),_0xa3c8x16))})[_0x3412[20]](function(_0xa3c8x15){return _0xa3c8xd[_0x3412[17]](200)[_0x3412[16]]({value:_0xa3c8x15})})[_0x3412[19]](function(_0xa3c8xe){return handleError(_0xa3c8xd,_0xa3c8xe)})};exports[_0x3412[43]]= function(_0xa3c8xf,_0xa3c8xd){return Promise[_0x3412[40]]([])[_0x3412[20]](getOpenchannelQueues(_0xa3c8xf[_0x3412[27]]))[_0x3412[20]](function(_0xa3c8x16){return OpenchannelRoom[_0x3412[39]](_[_0x3412[38]](Util[_0x3412[22]](_0xa3c8xf[_0x3412[21]],{status:_0x3412[44],updatedAt:{$gte:moment()[_0x3412[37]](_0x3412[36])}}),_0xa3c8x16))})[_0x3412[20]](function(_0xa3c8x15){return _0xa3c8xd[_0x3412[17]](200)[_0x3412[16]]({value:_0xa3c8x15})})[_0x3412[19]](function(_0xa3c8xe){return handleError(_0xa3c8xd,_0xa3c8xe)})};exports[_0x3412[45]]= function(_0xa3c8xf,_0xa3c8xd){return Promise[_0x3412[40]]([])[_0x3412[20]](getOpenchannelQueues(_0xa3c8xf[_0x3412[27]]))[_0x3412[20]](function(_0xa3c8x16){return OpenchannelRoom[_0x3412[39]](_[_0x3412[38]](Util[_0x3412[22]](_0xa3c8xf[_0x3412[21]],{status:_0x3412[46],updatedAt:{$gte:moment()[_0x3412[37]](_0x3412[36])}}),_0xa3c8x16))})[_0x3412[20]](function(_0xa3c8x15){return _0xa3c8xd[_0x3412[17]](200)[_0x3412[16]]({value:_0xa3c8x15})})[_0x3412[19]](function(_0xa3c8xe){return handleError(_0xa3c8xd,_0xa3c8xe)})};exports[_0x3412[47]]= function(_0xa3c8xf,_0xa3c8xd){return OpenchannelRoom[_0x3412[28]](_0x3412[24])[_0x3412[33]](_0xa3c8xf[_0x3412[49]][_0x3412[26]])[_0x3412[20]](function(_0xa3c8x17){if(!_0xa3c8x17){return _0xa3c8xd[_0x3412[48]](404)};return _0xa3c8xd[_0x3412[16]](_0xa3c8x17)})[_0x3412[19]](function(_0xa3c8xe){return handleError(_0xa3c8xd,_0xa3c8xe)})};exports[_0x3412[50]]= function(_0xa3c8xf,_0xa3c8xd,_0xa3c8x18){return OpenchannelRoom[_0x3412[33]](_0xa3c8xf[_0x3412[49]][_0x3412[26]])[_0x3412[20]](function(_0xa3c8x17){if(!_0xa3c8x17){return _0xa3c8xd[_0x3412[48]](404)};return _0xa3c8x17[_0x3412[55]]({attributes:[_0x3412[26],_0x3412[51],_0x3412[52],_0x3412[53],_0x3412[29],_0x3412[54]]})})[_0x3412[20]](function(_0xa3c8x19){return _0xa3c8xd[_0x3412[16]](_0xa3c8x19)})[_0x3412[19]](function(_0xa3c8xe){return handleError(_0xa3c8xd,_0xa3c8xe)})};exports[_0x3412[56]]= function(_0xa3c8xf,_0xa3c8xd,_0xa3c8x18){return OpenchannelMessage[_0x3412[33]](_0xa3c8xf[_0x3412[49]][_0x3412[26]])[_0x3412[20]](function(_0xa3c8x1a){return _0xa3c8x1a[_0x3412[57]]({include:[{model:OpenchannelAccount},{model:OpenchannelMessage,include:[{model:User,attributes:[_0x3412[26],_0x3412[51],_0x3412[52],_0x3412[53]]}]},{model:User,attributes:[_0x3412[26],_0x3412[51],_0x3412[52],_0x3412[53]]}]})})[_0x3412[20]](function(_0xa3c8x17){return _0xa3c8xd[_0x3412[16]](_0xa3c8x17)})[_0x3412[19]](function(_0xa3c8xe){return handleError(_0xa3c8xd,_0xa3c8xe)})};exports[_0x3412[58]]= function(_0xa3c8xf,_0xa3c8xd){return OpenchannelRoom[_0x3412[58]](_0xa3c8xf[_0x3412[59]])[_0x3412[20]](function(_0xa3c8x1a){return _0xa3c8xd[_0x3412[17]](201)[_0x3412[16]](_0xa3c8x1a)})[_0x3412[19]](function(_0xa3c8xe){return handleError(_0xa3c8xd,_0xa3c8xe)})};exports[_0x3412[60]]= function(_0xa3c8xf,_0xa3c8xd,_0xa3c8x18){_0xa3c8xf[_0x3412[59]][_0x3412[61]]= _0xa3c8xf[_0x3412[27]][_0x3412[26]];_0xa3c8xf[_0x3412[59]][_0x3412[62]]= _0xa3c8xf[_0x3412[49]][_0x3412[26]];return OpenchannelMessage[_0x3412[58]](_0xa3c8xf[_0x3412[59]])[_0x3412[20]](function(_0xa3c8x1a){return _0xa3c8xd[_0x3412[17]](201)[_0x3412[16]](_0xa3c8x1a)})[_0x3412[19]](function(_0xa3c8xe){return handleError(_0xa3c8xd,_0xa3c8xe)})};exports[_0x3412[63]]= function(_0xa3c8xf,_0xa3c8xd){if(_0xa3c8xf[_0x3412[59]][_0x3412[26]]){delete _0xa3c8xf[_0x3412[59]][_0x3412[26]]};return OpenchannelRoom[_0x3412[33]](_0xa3c8xf[_0x3412[49]][_0x3412[26]])[_0x3412[20]](function(_0xa3c8x17){if(!_0xa3c8x17){return _0xa3c8xd[_0x3412[48]](404)};var _0xa3c8x1b=_[_0x3412[38]](_0xa3c8x17,_0xa3c8xf[_0x3412[59]]);return _0xa3c8x1b[_0x3412[64]]()})[_0x3412[20]](function(_0xa3c8x17){return _0xa3c8xd[_0x3412[17]](200)[_0x3412[16]](_0xa3c8x17)})[_0x3412[19]](function(_0xa3c8xe){return handleError(_0xa3c8xd,_0xa3c8xe)})};exports[_0x3412[65]]= function(_0xa3c8xf,_0xa3c8xd,_0xa3c8x18){return OpenchannelRoom[_0x3412[33]](_0xa3c8xf[_0x3412[49]][_0x3412[26]])[_0x3412[20]](function(_0xa3c8x17){if(!_0xa3c8x17){return _0xa3c8xd[_0x3412[48]](404)};return _0xa3c8x17[_0x3412[67]](_0xa3c8xf[_0x3412[59]][_0x3412[66]],{individualHooks:true})})[_0x3412[20]](function(){return _0xa3c8xd[_0x3412[48]](200)})[_0x3412[19]](function(_0xa3c8xe){return handleError(_0xa3c8xd,_0xa3c8xe)})};exports[_0x3412[68]]= function(_0xa3c8xf,_0xa3c8xd){return OpenchannelRoom[_0x3412[33]](_0xa3c8xf[_0x3412[49]][_0x3412[26]])[_0x3412[20]](function(_0xa3c8x17){if(!_0xa3c8x17){return _0xa3c8xd[_0x3412[48]](404)};return _0xa3c8x17[_0x3412[68]]()})[_0x3412[20]](function(){return _0xa3c8xd[_0x3412[48]](204)})[_0x3412[19]](function(_0xa3c8xe){return handleError(_0xa3c8xd,_0xa3c8xe)})};exports[_0x3412[69]]= function(_0xa3c8xf,_0xa3c8xd){return OpenchannelRoom[_0x3412[68]]({where:{id:_0xa3c8xf[_0x3412[21]][_0x3412[70]]},individualHooks:true})[_0x3412[20]](function(){return _0xa3c8xd[_0x3412[48]](200)})[_0x3412[19]](function(_0xa3c8xe){return handleError(_0xa3c8xd,_0xa3c8xe)})};exports[_0x3412[71]]= function(_0xa3c8xf,_0xa3c8xd){return sequelize[_0x3412[21]](_0x3412[74],{type:sequelize[_0x3412[76]][_0x3412[75]]})[_0x3412[20]](function(_0xa3c8x1c){var _0xa3c8x1d=_[_0x3412[38]]({new:0,open:0,pending:0,closed:0},_[_0x3412[73]](_[_0x3412[72]](_0xa3c8x1c,_0x3412[17]),_0x3412[39]));return _0xa3c8xd[_0x3412[17]](200)[_0x3412[16]](_0xa3c8x1d)})[_0x3412[19]](function(_0xa3c8xe){return handleError(_0xa3c8xd,_0xa3c8xe)})};exports[_0x3412[77]]= function(_0xa3c8xf,_0xa3c8xd,_0xa3c8x18){var _0xa3c8x1e={where:{id:_0xa3c8xf[_0x3412[49]][_0x3412[26]][_0x3412[79]](_0x3412[78])},user:_0xa3c8xf[_0x3412[27]],individualHooks:true};return OpenchannelRoom[_0x3412[63]](_0xa3c8xf[_0x3412[59]],_0xa3c8x1e)[_0x3412[20]](function(_0xa3c8x1f){if(!_0xa3c8x1f){return _0xa3c8xd[_0x3412[48]](404)};return _0xa3c8x1f})[_0x3412[20]](function(_0xa3c8x1f){return _0xa3c8xd[_0x3412[48]](200)})[_0x3412[19]](function(_0xa3c8xe){return handleError(_0xa3c8xd,_0xa3c8xe)})} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/openchannel_room/openchannel_room.events.js b/server/api/openchannel_room/openchannel_room.events.js index da5a64e..66dc905 100644 --- a/server/api/openchannel_room/openchannel_room.events.js +++ b/server/api/openchannel_room/openchannel_room.events.js @@ -1 +1 @@ -var _0x56ea=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x56ea[0];const EventEmitter=require(_0x56ea[1]);const OpenchannelRoom=require(_0x56ea[3])[_0x56ea[2]];var OpenchannelRoomEvents= new EventEmitter();OpenchannelRoomEvents[_0x56ea[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x56ea[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x56ea[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x56ea[6]};for(var e in events){var event=events[e];OpenchannelRoom[_0x56ea[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x3683x8,_0x3683x9,_0x3683xa){OpenchannelRoomEvents[_0x56ea[10]](event+ _0x56ea[8]+ _0x3683x8[_0x56ea[9]],_0x3683x8);OpenchannelRoomEvents[_0x56ea[10]](event,_0x3683x8);_0x3683xa(null)}}module[_0x56ea[11]]= OpenchannelRoomEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/openchannel_room/openchannel_room.socket.js b/server/api/openchannel_room/openchannel_room.socket.js index a40be84..66dc905 100644 --- a/server/api/openchannel_room/openchannel_room.socket.js +++ b/server/api/openchannel_room/openchannel_room.socket.js @@ -1 +1 @@ -var _0x4904=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x72\x6F\x6F\x6D\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x72\x6F\x6F\x6D\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x4904[0];const OpenchannelRoomEvents=require(_0x4904[1]);var events=[_0x4904[2],_0x4904[2],_0x4904[3]];exports[_0x4904[4]]= function(_0xb2bfx3){for(var _0xb2bfx4=0,_0xb2bfx5=events[_0x4904[5]];_0xb2bfx4< _0xb2bfx5;_0xb2bfx4++){var _0xb2bfx6=events[_0xb2bfx4];var _0xb2bfx7=createListener(_0x4904[6]+ _0xb2bfx6,_0xb2bfx3);OpenchannelRoomEvents[_0x4904[7]](_0xb2bfx6,_0xb2bfx7);_0xb2bfx3[_0x4904[7]](_0x4904[8],removeListener(_0xb2bfx6,_0xb2bfx7))}};function createListener(_0xb2bfx6,_0xb2bfx3){return function(_0xb2bfx9){_0xb2bfx3[_0x4904[9]](_0xb2bfx6,_0xb2bfx9)}}function removeListener(_0xb2bfx6,_0xb2bfx7){return function(){OpenchannelRoomEvents[_0x4904[10]](_0xb2bfx6,_0xb2bfx7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/pause/index.js b/server/api/pause/index.js index 90aa23d..66dc905 100644 --- a/server/api/pause/index.js +++ b/server/api/pause/index.js @@ -1 +1 @@ -var _0xedef=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x70\x61\x75\x73\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0xedef[0];var express=require(_0xedef[1]);var auth=require(_0xedef[2]);var controller=require(_0xedef[3]);var router=express.Router();router[_0xedef[10]](_0xedef[4],auth[_0xedef[5]](),auth[_0xedef[8]]([6,13],[_0xedef[6],_0xedef[7]]),controller[_0xedef[9]]);router[_0xedef[10]](_0xedef[11],auth[_0xedef[5]](),auth[_0xedef[8]]([13],[_0xedef[6]]),controller[_0xedef[12]]);router[_0xedef[14]](_0xedef[4],auth[_0xedef[5]](),auth[_0xedef[8]]([13],[_0xedef[6]]),controller[_0xedef[13]]);router[_0xedef[16]](_0xedef[11],auth[_0xedef[5]](),auth[_0xedef[8]]([13],[_0xedef[6]]),controller[_0xedef[15]]);router[_0xedef[18]](_0xedef[4],auth[_0xedef[5]](),auth[_0xedef[8]]([13],[_0xedef[6]]),controller[_0xedef[17]]);router[_0xedef[18]](_0xedef[11],auth[_0xedef[5]](),auth[_0xedef[8]]([13],[_0xedef[6]]),controller[_0xedef[19]]);module[_0xedef[20]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/pause/pause.controller.js b/server/api/pause/pause.controller.js index e189022..66dc905 100644 --- a/server/api/pause/pause.controller.js +++ b/server/api/pause/pause.controller.js @@ -1 +1 @@ -var _0x66e6=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x50\x61\x75\x73\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64\x73","\x6C\x69\x6D\x69\x74","\x6F\x66\x66\x73\x65\x74","\x6F\x72\x64\x65\x72","\x77\x68\x65\x72\x65","\x25","\x66\x6F\x72\x45\x61\x63\x68"];_0x66e6[0];var _=require(_0x66e6[1]);var Util=require(_0x66e6[2]);var logger=require(_0x66e6[4])(_0x66e6[3]);var Pause=require(_0x66e6[6])[_0x66e6[5]];function handleError(_0x6a83x6,_0x6a83x7){_0x6a83x7= _0x6a83x7|| 500;return function(_0x6a83x8){logger[_0x66e6[8]](_0x6a83x8[_0x66e6[7]]);_0x6a83x6[_0x66e6[10]](_0x6a83x7)[_0x66e6[9]](_0x6a83x8)}}function responseWithResult(_0x6a83x6,_0x6a83x7){_0x6a83x7= _0x6a83x7|| 200;return function(_0x6a83xa){if(_0x6a83xa){_0x6a83x6[_0x66e6[10]](_0x6a83x7)[_0x66e6[11]](_0x6a83xa)}}}function handleEntityNotFound(_0x6a83x6){return function(_0x6a83xa){if(!_0x6a83xa){_0x6a83x6[_0x66e6[10]](404)[_0x66e6[12]]();return null};return _0x6a83xa}}function saveUpdates(_0x6a83xd){return function(_0x6a83xa){return _0x6a83xa[_0x66e6[14]](_0x6a83xd)[_0x66e6[13]](function(_0x6a83xe){return _0x6a83xe})}}function removeEntity(_0x6a83x6){return function(_0x6a83xa){if(_0x6a83xa){return _0x6a83xa[_0x66e6[15]]()[_0x66e6[13]](function(){_0x6a83x6[_0x66e6[10]](204)[_0x66e6[12]]()})}}}exports[_0x66e6[16]]= function(_0x6a83x10,_0x6a83x6){return Pause[_0x66e6[20]](Util[_0x66e6[19]](_0x6a83x10[_0x66e6[18]]))[_0x66e6[13]](function(_0x6a83x11){_0x6a83x6[_0x66e6[10]](200)[_0x66e6[9]](_0x6a83x11)})[_0x66e6[17]](function(_0x6a83x8){return handleError(_0x6a83x6,_0x6a83x8)})};exports[_0x66e6[21]]= function(_0x6a83x10,_0x6a83x6){return Pause[_0x66e6[24]](_0x6a83x10[_0x66e6[23]][_0x66e6[22]])[_0x66e6[13]](handleEntityNotFound(_0x6a83x6))[_0x66e6[13]](responseWithResult(_0x6a83x6))[_0x66e6[17]](handleError(_0x6a83x6))};exports[_0x66e6[25]]= function(_0x6a83x10,_0x6a83x6){return Pause[_0x66e6[25]](_0x6a83x10[_0x66e6[26]])[_0x66e6[13]](responseWithResult(_0x6a83x6,201))[_0x66e6[17]](handleError(_0x6a83x6))};exports[_0x66e6[27]]= function(_0x6a83x10,_0x6a83x6){if(_0x6a83x10[_0x66e6[26]][_0x66e6[22]]){delete _0x6a83x10[_0x66e6[26]][_0x66e6[22]]};return Pause[_0x66e6[24]](_0x6a83x10[_0x66e6[23]][_0x66e6[22]])[_0x66e6[13]](handleEntityNotFound(_0x6a83x6))[_0x66e6[13]](saveUpdates(_0x6a83x10[_0x66e6[26]]))[_0x66e6[13]](responseWithResult(_0x6a83x6))[_0x66e6[17]](handleError(_0x6a83x6))};exports[_0x66e6[15]]= function(_0x6a83x10,_0x6a83x6){return Pause[_0x66e6[24]](_0x6a83x10[_0x66e6[23]][_0x66e6[22]])[_0x66e6[13]](handleEntityNotFound(_0x6a83x6))[_0x66e6[13]](removeEntity(_0x6a83x6))[_0x66e6[17]](handleError(_0x6a83x6))};exports[_0x66e6[28]]= function(_0x6a83x10,_0x6a83x6){return Pause[_0x66e6[15]]({where:{id:_0x6a83x10[_0x66e6[18]][_0x66e6[30]]},individualHooks:true})[_0x66e6[13]](function(){return _0x6a83x6[_0x66e6[29]](204)})[_0x66e6[17]](handleError(_0x6a83x6))};function getQuery(_0x6a83x13){var _0x6a83x14={where:{}};_[_0x66e6[36]](_0x6a83x13,function(_0x6a83x15,_0x6a83x16){switch(_0x6a83x16){case _0x66e6[31]:;case _0x66e6[32]:;case _0x66e6[33]:_0x6a83x14[_0x6a83x16]= _0x6a83x15;break;default:_0x6a83x14[_0x66e6[34]][_0x6a83x16]= {$like:_0x66e6[35]+ _0x6a83x15+ _0x66e6[35]}}});return _0x6a83x14} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/pause/pause.events.js b/server/api/pause/pause.events.js index edfaff0..66dc905 100644 --- a/server/api/pause/pause.events.js +++ b/server/api/pause/pause.events.js @@ -1 +1 @@ -var _0x86a5=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x50\x61\x75\x73\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x86a5[0];const EventEmitter=require(_0x86a5[1]);const Pause=require(_0x86a5[3])[_0x86a5[2]];var PauseEvents= new EventEmitter();PauseEvents[_0x86a5[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x86a5[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x86a5[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x86a5[6]};for(var e in events){var event=events[e];Pause[_0x86a5[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x7781x8,_0x7781x9,_0x7781xa){PauseEvents[_0x86a5[10]](event+ _0x86a5[8]+ _0x7781x8[_0x86a5[9]],_0x7781x8);PauseEvents[_0x86a5[10]](event,_0x7781x8);_0x7781xa(null)}}module[_0x86a5[11]]= PauseEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/pause/pause.socket.js b/server/api/pause/pause.socket.js index ed42580..66dc905 100644 --- a/server/api/pause/pause.socket.js +++ b/server/api/pause/pause.socket.js @@ -1 +1 @@ -var _0xe8b9=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x70\x61\x75\x73\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x70\x61\x75\x73\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xe8b9[0];const PauseEvents=require(_0xe8b9[1]);var events=[_0xe8b9[2],_0xe8b9[3]];exports[_0xe8b9[4]]= function(_0xa09ex3){for(var _0xa09ex4=0,_0xa09ex5=events[_0xe8b9[5]];_0xa09ex4< _0xa09ex5;_0xa09ex4++){var _0xa09ex6=events[_0xa09ex4];var _0xa09ex7=createListener(_0xe8b9[6]+ _0xa09ex6,_0xa09ex3);PauseEvents[_0xe8b9[7]](_0xa09ex6,_0xa09ex7);_0xa09ex3[_0xe8b9[7]](_0xe8b9[8],removeListener(_0xa09ex6,_0xa09ex7))}};function createListener(_0xa09ex6,_0xa09ex3){return function(_0xa09ex9){_0xa09ex3[_0xe8b9[9]](_0xa09ex6,_0xa09ex9)}}function removeListener(_0xa09ex6,_0xa09ex7){return function(){PauseEvents[_0xe8b9[10]](_0xa09ex6,_0xa09ex7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_agent/index.js b/server/api/report_agent/index.js index 30803dd..66dc905 100644 --- a/server/api/report_agent/index.js +++ b/server/api/report_agent/index.js @@ -1 +1 @@ -var _0x9ac5=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x61\x63\x74\x69\x76\x65\x2F\x63\x61\x6C\x6C\x73","\x61\x63\x74\x69\x76\x65\x43\x61\x6C\x6C\x73","\x65\x78\x70\x6F\x72\x74\x73"];_0x9ac5[0];var express=require(_0x9ac5[1]);var controller=require(_0x9ac5[2]);var auth=require(_0x9ac5[3]);var router=express.Router();router[_0x9ac5[10]](_0x9ac5[4],auth[_0x9ac5[5]](),auth[_0x9ac5[8]]([17],[_0x9ac5[6],_0x9ac5[7]]),controller[_0x9ac5[9]]);router[_0x9ac5[10]](_0x9ac5[11],auth[_0x9ac5[5]](),auth[_0x9ac5[8]]([17],[_0x9ac5[6]]),controller[_0x9ac5[12]]);router[_0x9ac5[10]](_0x9ac5[13],auth[_0x9ac5[5]](),auth[_0x9ac5[8]]([17],[_0x9ac5[6],_0x9ac5[7]]),controller[_0x9ac5[14]]);module[_0x9ac5[15]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_agent/report_agent.controller.js b/server/api/report_agent/report_agent.controller.js index 80d9a3c..66dc905 100644 --- a/server/api/report_agent/report_agent.controller.js +++ b/server/api/report_agent/report_agent.controller.js @@ -1 +1 @@ -var _0x6478=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x52\x65\x70\x6F\x72\x74\x41\x67\x65\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x52\x65\x70\x6F\x72\x74\x41\x67\x65\x6E\x74\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x69\x6E\x64\x65\x78","\x72\x6F\x6C\x65","\x75\x73\x65\x72","\x61\x67\x65\x6E\x74","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x6E\x61\x6D\x65","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x72\x6F\x77\x73","\x6D\x61\x70","\x67\x65\x74\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x69\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x67\x65\x74\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73","\x66\x69\x6E\x64\x41\x6C\x6C","\x61\x63\x74\x69\x76\x65\x43\x61\x6C\x6C\x73","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x6C\x65\x6E\x67\x74\x68","\x6D\x65\x72\x67\x65","\x61\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0x6478[0];var _=require(_0x6478[1]);var ReportAgent=require(_0x6478[3])[_0x6478[2]];var User=require(_0x6478[3])[_0x6478[4]];var VoiceQueue=require(_0x6478[3])[_0x6478[5]];var ReportAgentHistory=require(_0x6478[3])[_0x6478[7]][_0x6478[6]];var Util=require(_0x6478[8]);var logger=require(_0x6478[10])(_0x6478[9]);exports[_0x6478[11]]= function(_0x584fx8,_0x584fx9,_0x584fxa){var _0x584fxb={};if(_0x584fx8[_0x6478[13]][_0x6478[12]]=== _0x6478[14]){_0x584fxb[_0x6478[15]]= _0x584fx8[_0x6478[13]][_0x6478[16]]};return ReportAgent[_0x6478[23]](Util[_0x6478[22]](_0x584fx8[_0x6478[21]],_0x584fxb))[_0x6478[20]](function(_0x584fxd){return _0x584fx9[_0x6478[19]](200)[_0x6478[18]](_0x584fxd)})[_0x6478[17]](function(_0x584fxc){return handleError(_0x584fx9,_0x584fxc)})};function getVoiceQueues(_0x584fxf){return function(){switch(_0x584fxf[_0x6478[12]]){case _0x6478[13]:return User[_0x6478[28]](_0x584fxf[_0x6478[27]],{attributes:[_0x6478[27]]})[_0x6478[20]](Util[_0x6478[26]]())[_0x6478[20]](function(_0x584fx10){return _[_0x6478[25]](_0x584fx10[_0x6478[24]],_0x6478[16])});case _0x6478[14]:return User[_0x6478[28]](_0x584fxf[_0x6478[27]])[_0x6478[20]](function(_0x584fx11){return _0x584fx11[_0x6478[29]]({attributes:[_0x6478[16]]})})[_0x6478[20]](function(_0x584fx10){return _[_0x6478[25]](_0x584fx10,_0x6478[16])});default:return VoiceQueue[_0x6478[30]]()[_0x6478[20]](function(_0x584fx12){return {rows:_0x584fx12}})[_0x6478[20]](function(_0x584fx10){return _[_0x6478[25]](_0x584fx10[_0x6478[24]],_0x6478[16])})}}}exports[_0x6478[31]]= function(_0x584fx8,_0x584fx9){var _0x584fxb={};if(_0x584fx8[_0x6478[13]][_0x6478[12]]=== _0x6478[14]){_0x584fxb[_0x6478[15]]= _0x584fx8[_0x6478[13]][_0x6478[32]]};return Promise[_0x6478[35]]([])[_0x6478[20]](getVoiceQueues(_0x584fx8[_0x6478[13]]))[_0x6478[20]](function(_0x584fx10){return ReportAgent[_0x6478[30]](Util[_0x6478[22]](_0x584fx8[_0x6478[21]],_[_0x6478[34]](_0x584fxb,{agentcomplete:false,agentringnoanswer:false,agentdump:false})))})[_0x6478[20]](function(_0x584fx13){return _0x584fx9[_0x6478[19]](200)[_0x6478[18]]({rows:_0x584fx13,count:_0x584fx13[_0x6478[33]]})})[_0x6478[17]](function(_0x584fxc){return handleError(_0x584fx9,_0x584fxc)})};exports[_0x6478[36]]= function(_0x584fx8,_0x584fx9){return ReportAgentHistory[_0x6478[36]]()[_0x6478[20]](function(_0x584fx14){return _0x584fx9[_0x6478[19]](200)[_0x6478[18]](_0x584fx14)})[_0x6478[17]](function(_0x584fxc){return handleError(_0x584fx9,_0x584fxc)})};function handleError(_0x584fx9,_0x584fxc){logger[_0x6478[38]](_0x584fxc[_0x6478[37]]);return _0x584fx9[_0x6478[19]](500)[_0x6478[18]](_0x584fxc)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_agent/report_agent.events.js b/server/api/report_agent/report_agent.events.js index 33776e2..66dc905 100644 --- a/server/api/report_agent/report_agent.events.js +++ b/server/api/report_agent/report_agent.events.js @@ -1 +1 @@ -var _0x8701=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x41\x67\x65\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x8701[0];const EventEmitter=require(_0x8701[1]);const ReportAgent=require(_0x8701[3])[_0x8701[2]];var ReportAgentEvents= new EventEmitter();ReportAgentEvents[_0x8701[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x8701[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x8701[6],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x8701[7]};for(var e in events){var event=events[e];ReportAgent[_0x8701[8]](e,emitEvent(event))};function emitEvent(event){return function(_0x230bx8,_0x230bx9,_0x230bxa){ReportAgentEvents[_0x8701[11]](event+ _0x8701[9]+ _0x230bx8[_0x8701[10]],_0x230bx8);ReportAgentEvents[_0x8701[11]](event,_0x230bx8);_0x230bxa(null)}}module[_0x8701[12]]= ReportAgentEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_agent/report_agent.socket.js b/server/api/report_agent/report_agent.socket.js index d106d72..66dc905 100644 --- a/server/api/report_agent/report_agent.socket.js +++ b/server/api/report_agent/report_agent.socket.js @@ -1 +1 @@ -var _0xc943=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x6E\x61\x6D\x65","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x72\x6F\x6C\x65","\x61\x64\x6D\x69\x6E","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xc943[0];const ReportAgentEvents=require(_0xc943[1]);var events=[_0xc943[2],_0xc943[3],_0xc943[4]];exports[_0xc943[5]]= function(_0x33aex3){for(var _0x33aex4=0,_0x33aex5=events[_0xc943[6]];_0x33aex4< _0x33aex5;_0x33aex4++){var _0x33aex6=events[_0x33aex4];var _0x33aex7=createListener(_0xc943[7]+ _0x33aex6,_0x33aex3);ReportAgentEvents[_0xc943[8]](_0x33aex6,_0x33aex7);_0x33aex3[_0xc943[8]](_0xc943[9],removeListener(_0x33aex6,_0x33aex7))}};function createListener(_0x33aex6,_0x33aex3){return function(_0x33aex9){if(_0x33aex3[_0xc943[10]]=== _0x33aex9[_0xc943[11]]|| _0x33aex3[_0xc943[12]]=== _0xc943[13]){_0x33aex3[_0xc943[14]](_0x33aex6,_0x33aex9)}}}function removeListener(_0x33aex6,_0x33aex7){return function(){ReportAgentEvents[_0xc943[15]](_0x33aex6,_0x33aex7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_call/index.js b/server/api/report_call/index.js index 4966efa..66dc905 100644 --- a/server/api/report_call/index.js +++ b/server/api/report_call/index.js @@ -1 +1 @@ -var _0x73cd=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x64\x61\x73\x68\x62\x6F\x61\x72\x64","\x75\x73\x65\x72","\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x4F\x75\x74\x62\x6F\x75\x6E\x64","\x2F\x6D\x61\x6E\x75\x61\x6C\x6F\x75\x74\x62\x6F\x75\x6E\x64","\x61\x67\x65\x6E\x74","\x6D\x61\x6E\x75\x61\x6C\x4F\x75\x74\x62\x6F\x75\x6E\x64","\x2F\x6D\x61\x6E\x75\x61\x6C\x6F\x75\x74\x62\x6F\x75\x6E\x64\x67\x6C\x6F\x62\x61\x6C\x64\x75\x72\x61\x74\x69\x6F\x6E","\x6D\x61\x6E\x75\x61\x6C\x4F\x75\x74\x62\x6F\x75\x6E\x64\x47\x6C\x6F\x62\x61\x6C\x44\x75\x72\x61\x74\x69\x6F\x6E","\x2F\x6D\x61\x6E\x75\x61\x6C\x6F\x75\x74\x62\x6F\x75\x6E\x64\x61\x76\x67\x64\x75\x72\x61\x74\x69\x6F\x6E","\x6D\x61\x6E\x75\x61\x6C\x4F\x75\x74\x62\x6F\x75\x6E\x64\x41\x76\x67\x44\x75\x72\x61\x74\x69\x6F\x6E","\x2F\x6D\x61\x6E\x75\x61\x6C\x6F\x75\x74\x62\x6F\x75\x6E\x64\x61\x6E\x73\x77\x65\x72\x65\x64","\x6D\x61\x6E\x75\x61\x6C\x4F\x75\x74\x62\x6F\x75\x6E\x64\x41\x6E\x73\x77\x65\x72\x65\x64","\x2F\x6D\x61\x6E\x75\x61\x6C\x6F\x75\x74\x62\x6F\x75\x6E\x64\x61\x6E\x73\x77\x65\x72\x72\x61\x74\x65","\x6D\x61\x6E\x75\x61\x6C\x4F\x75\x74\x62\x6F\x75\x6E\x64\x41\x6E\x73\x77\x65\x72\x52\x61\x74\x65","\x2F\x3A\x75\x6E\x69\x71\x75\x65\x69\x64","\x73\x68\x6F\x77","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x73cd[0];var express=require(_0x73cd[1]);var auth=require(_0x73cd[2]);var controller=require(_0x73cd[3]);var router=express.Router();router[_0x73cd[9]](_0x73cd[4],auth[_0x73cd[5]](),auth[_0x73cd[7]]([17],[_0x73cd[6]]),controller[_0x73cd[8]]);router[_0x73cd[9]](_0x73cd[10],auth[_0x73cd[5]](),auth[_0x73cd[7]]([17],[_0x73cd[6]]),controller[_0x73cd[11]]);router[_0x73cd[9]](_0x73cd[12],auth[_0x73cd[5]](),auth[_0x73cd[7]]([2],[_0x73cd[6],_0x73cd[13]]),controller[_0x73cd[14]]);router[_0x73cd[9]](_0x73cd[15],auth[_0x73cd[5]](),auth[_0x73cd[7]]([1],[_0x73cd[6],_0x73cd[16]]),controller[_0x73cd[17]]);router[_0x73cd[9]](_0x73cd[18],auth[_0x73cd[5]](),auth[_0x73cd[7]]([1],[_0x73cd[6],_0x73cd[16]]),controller[_0x73cd[19]]);router[_0x73cd[9]](_0x73cd[20],auth[_0x73cd[5]](),auth[_0x73cd[7]]([1],[_0x73cd[6],_0x73cd[16]]),controller[_0x73cd[21]]);router[_0x73cd[9]](_0x73cd[22],auth[_0x73cd[5]](),auth[_0x73cd[7]]([1],[_0x73cd[6],_0x73cd[16]]),controller[_0x73cd[23]]);router[_0x73cd[9]](_0x73cd[24],auth[_0x73cd[5]](),auth[_0x73cd[7]]([1],[_0x73cd[6],_0x73cd[16]]),controller[_0x73cd[25]]);router[_0x73cd[9]](_0x73cd[26],auth[_0x73cd[5]](),auth[_0x73cd[7]]([17],[_0x73cd[6],_0x73cd[16]]),controller[_0x73cd[27]]);router[_0x73cd[29]](_0x73cd[26],auth[_0x73cd[5]](),auth[_0x73cd[7]]([1],[_0x73cd[6],_0x73cd[16]]),controller[_0x73cd[28]]);module[_0x73cd[30]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_call/report_call.controller.js b/server/api/report_call/report_call.controller.js index 2b6d38a..66dc905 100644 --- a/server/api/report_call/report_call.controller.js +++ b/server/api/report_call/report_call.controller.js @@ -1 +1 @@ -var _0x66e3=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x52\x65\x70\x6F\x72\x74\x43\x61\x6C\x6C","\x52\x65\x70\x6F\x72\x74\x43\x61\x6C\x6C\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6D\x6F\x6D\x65\x6E\x74","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x75\x70\x64\x61\x74\x65","\x69\x64","\x62\x6F\x64\x79","\x75\x6E\x69\x71\x75\x65\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x4F\x6E\x65","\x73\x68\x6F\x77","\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x4F\x75\x74\x62\x6F\x75\x6E\x64","\x6F\x75\x74\x62\x6F\x75\x6E\x64","\x66\x69\x6C\x74\x65\x72","\x74\x69\x67\x65\x72\x64\x69\x61\x6C","\x74\x6F\x74\x61\x6C","\x6C\x65\x6E\x67\x74\x68","\x61\x6E\x73\x77\x65\x72\x65\x64","\x41\x4E\x53\x57\x45\x52\x45\x44","\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x63\x6F\x75\x6E\x74\x42\x79","\x73\x75\x6D\x44\x75\x72\x61\x74\x69\x6F\x6E","\x62\x69\x6C\x6C\x61\x62\x6C\x65\x73\x65\x63\x6F\x6E\x64\x73","\x73\x75\x6D\x42\x79","\x61\x76\x67\x44\x75\x72\x61\x74\x69\x6F\x6E","\x72\x6F\x75\x6E\x64","\x61\x6E\x73\x77\x65\x72\x52\x61\x74\x65","\x64\x61\x79","\x73\x74\x61\x72\x74\x4F\x66","\x74\x79\x70\x65","\x66\x69\x6E\x64\x41\x6C\x6C","\x6D\x61\x6E\x75\x61\x6C\x4F\x75\x74\x62\x6F\x75\x6E\x64","\x63\x6F\x75\x6E\x74","\x6D\x61\x6E\x75\x61\x6C\x4F\x75\x74\x62\x6F\x75\x6E\x64\x47\x6C\x6F\x62\x61\x6C\x44\x75\x72\x61\x74\x69\x6F\x6E","\x76\x61\x6C\x75\x65","\x53\x45\x4C\x45\x43\x54\x20\x53\x45\x43\x5F\x54\x4F\x5F\x54\x49\x4D\x45\x28\x53\x55\x4D\x28\x64\x75\x72\x61\x74\x69\x6F\x6E\x29\x29\x20\x61\x73\x20\x76\x61\x6C\x75\x65\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x20\x57\x48\x45\x52\x45\x20\x74\x79\x70\x65\x3D\x22\x6F\x75\x74\x62\x6F\x75\x6E\x64\x22","\x53\x45\x4C\x45\x43\x54","\x51\x75\x65\x72\x79\x54\x79\x70\x65\x73","\x6D\x61\x6E\x75\x61\x6C\x4F\x75\x74\x62\x6F\x75\x6E\x64\x41\x76\x67\x44\x75\x72\x61\x74\x69\x6F\x6E","\x53\x45\x4C\x45\x43\x54\x20\x53\x45\x43\x5F\x54\x4F\x5F\x54\x49\x4D\x45\x28\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x64\x75\x72\x61\x74\x69\x6F\x6E\x29\x2C\x20\x30\x29\x29\x20\x61\x73\x20\x76\x61\x6C\x75\x65\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x20\x57\x48\x45\x52\x45\x20\x74\x79\x70\x65\x3D\x22\x6F\x75\x74\x62\x6F\x75\x6E\x64\x22","\x6D\x61\x6E\x75\x61\x6C\x4F\x75\x74\x62\x6F\x75\x6E\x64\x41\x6E\x73\x77\x65\x72\x65\x64","\x6D\x61\x6E\x75\x61\x6C\x4F\x75\x74\x62\x6F\x75\x6E\x64\x41\x6E\x73\x77\x65\x72\x52\x61\x74\x65","\x53\x45\x4C\x45\x43\x54\x20\x52\x4F\x55\x4E\x44\x28\x53\x55\x4D\x28\x49\x46\x28\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3D\x22\x41\x4E\x53\x57\x45\x52\x45\x44\x22\x2C\x20\x31\x2C\x20\x30\x29\x29\x20\x2F\x20\x43\x4F\x55\x4E\x54\x28\x2A\x29\x20\x2A\x20\x31\x30\x30\x2C\x20\x31\x29\x20\x61\x73\x20\x76\x61\x6C\x75\x65\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x20\x57\x48\x45\x52\x45\x20\x74\x79\x70\x65\x3D\x22\x6F\x75\x74\x62\x6F\x75\x6E\x64\x22","\x64\x65\x73\x63\x72\x69\x62\x65"];_0x66e3[0];var _=require(_0x66e3[1]);var logger=require(_0x66e3[3])(_0x66e3[2]);var sequelize=require(_0x66e3[5])[_0x66e3[4]];var ReportCall=require(_0x66e3[5])[_0x66e3[6]];var ReportCallHistory=require(_0x66e3[5])[_0x66e3[8]][_0x66e3[7]];var Util=require(_0x66e3[9]);var moment=require(_0x66e3[10]);function handleError(_0x5a9cx9,_0x5a9cxa){_0x5a9cxa= _0x5a9cxa|| 500;return function(_0x5a9cxb){logger[_0x66e3[12]](_0x5a9cxb[_0x66e3[11]]);_0x5a9cx9[_0x66e3[14]](_0x5a9cxa)[_0x66e3[13]](_0x5a9cxb)}}function responseWithResult(_0x5a9cx9,_0x5a9cxa){_0x5a9cxa= _0x5a9cxa|| 200;return function(_0x5a9cxd){if(_0x5a9cxd){_0x5a9cx9[_0x66e3[14]](_0x5a9cxa)[_0x66e3[15]](_0x5a9cxd)}}}function handleEntityNotFound(_0x5a9cx9){return function(_0x5a9cxd){if(!_0x5a9cxd){_0x5a9cx9[_0x66e3[14]](404)[_0x66e3[16]]();return null};return _0x5a9cxd}}function saveUpdates(_0x5a9cx10){return function(_0x5a9cxd){return _0x5a9cxd[_0x66e3[18]](_0x5a9cx10)[_0x66e3[17]](function(_0x5a9cx11){return _0x5a9cx11})}}function removeEntity(_0x5a9cx9){return function(_0x5a9cxd){if(_0x5a9cxd){return _0x5a9cxd[_0x66e3[19]]()[_0x66e3[17]](function(){_0x5a9cx9[_0x66e3[14]](204)[_0x66e3[16]]()})}}}exports[_0x66e3[20]]= function(_0x5a9cx13,_0x5a9cx9,_0x5a9cx14){return ReportCall[_0x66e3[24]](Util[_0x66e3[23]](_0x5a9cx13[_0x66e3[22]]))[_0x66e3[17]](function(_0x5a9cx15){return _0x5a9cx9[_0x66e3[14]](200)[_0x66e3[13]](_0x5a9cx15)})[_0x66e3[21]](handleError(_0x5a9cx9))};exports[_0x66e3[25]]= function(_0x5a9cx13,_0x5a9cx9){if(_0x5a9cx13[_0x66e3[27]][_0x66e3[26]]){delete _0x5a9cx13[_0x66e3[27]][_0x66e3[26]]};return ReportCall[_0x66e3[30]]({where:{uniqueid:_0x5a9cx13[_0x66e3[29]][_0x66e3[28]]}})[_0x66e3[17]](handleEntityNotFound(_0x5a9cx9))[_0x66e3[17]](saveUpdates(_0x5a9cx13[_0x66e3[27]]))[_0x66e3[17]](responseWithResult(_0x5a9cx9))[_0x66e3[21]](handleError(_0x5a9cx9))};exports[_0x66e3[31]]= function(_0x5a9cx13,_0x5a9cx9){return ReportCall[_0x66e3[30]]({where:{uniqueid:_0x5a9cx13[_0x66e3[29]][_0x66e3[28]]}})[_0x66e3[17]](handleEntityNotFound(_0x5a9cx9))[_0x66e3[17]](responseWithResult(_0x5a9cx9))[_0x66e3[21]](handleError(_0x5a9cx9))};exports[_0x66e3[32]]= function(_0x5a9cx13,_0x5a9cx9){return ReportCall[_0x66e3[51]]({where:{type:[_0x66e3[33],_0x66e3[35]],createdAt:{$gte:moment()[_0x66e3[49]](_0x66e3[48])}},attributes:[_0x66e3[50],_0x66e3[40],_0x66e3[43]],raw:true})[_0x66e3[17]](function(_0x5a9cx16){var _0x5a9cx17={};var _0x5a9cx18=_[_0x66e3[34]](_0x5a9cx16,{type:_0x66e3[33]});var _0x5a9cx19=_[_0x66e3[34]](_0x5a9cx16,{type:_0x66e3[35]});_0x5a9cx17[_0x66e3[36]]= _0x5a9cx18[_0x66e3[37]];_0x5a9cx17[_0x66e3[35]]= _0x5a9cx19[_0x66e3[37]];_0x5a9cx17[_0x66e3[38]]= _[_0x66e3[41]](_0x5a9cx18,_0x66e3[40])[_0x66e3[39]]|| 0;_0x5a9cx17[_0x66e3[42]]= _[_0x66e3[44]](_0x5a9cx18,_0x66e3[43]);_0x5a9cx17[_0x66e3[45]]= _0x5a9cx17[_0x66e3[38]]?_[_0x66e3[46]]((_[_0x66e3[44]](_0x5a9cx18,_0x66e3[43])/ _0x5a9cx17[_0x66e3[38]])):0;_0x5a9cx17[_0x66e3[47]]= _0x5a9cx17[_0x66e3[38]]?_[_0x66e3[46]](_0x5a9cx17[_0x66e3[38]]/ _0x5a9cx17[_0x66e3[36]]* 100,1):0;return _0x5a9cx9[_0x66e3[14]](200)[_0x66e3[13]](_0x5a9cx17)})[_0x66e3[21]](handleError(_0x5a9cx9))};exports[_0x66e3[52]]= function(_0x5a9cx13,_0x5a9cx9){return ReportCall[_0x66e3[53]]({where:{type:_0x66e3[33]}})[_0x66e3[17]](function(_0x5a9cx16){return _0x5a9cx9[_0x66e3[14]](200)[_0x66e3[13]]({value:_0x5a9cx16})})[_0x66e3[21]](handleError(_0x5a9cx9))};exports[_0x66e3[54]]= function(_0x5a9cx13,_0x5a9cx9){return sequelize[_0x66e3[22]](_0x66e3[56],{type:sequelize[_0x66e3[58]][_0x66e3[57]]})[_0x66e3[17]](function(_0x5a9cx16){return _0x5a9cx9[_0x66e3[14]](200)[_0x66e3[13]]({value:_0x5a9cx16[0][_0x66e3[55]]})})[_0x66e3[21]](handleError(_0x5a9cx9))};exports[_0x66e3[59]]= function(_0x5a9cx13,_0x5a9cx9){return sequelize[_0x66e3[22]](_0x66e3[60],{type:sequelize[_0x66e3[58]][_0x66e3[57]]})[_0x66e3[17]](function(_0x5a9cx16){return _0x5a9cx9[_0x66e3[14]](200)[_0x66e3[13]]({value:_0x5a9cx16[0][_0x66e3[55]]})})[_0x66e3[21]](handleError(_0x5a9cx9))};exports[_0x66e3[61]]= function(_0x5a9cx13,_0x5a9cx9){return ReportCall[_0x66e3[53]]({where:{disposition:_0x66e3[39],type:_0x66e3[33]}})[_0x66e3[17]](function(_0x5a9cx16){return _0x5a9cx9[_0x66e3[14]](200)[_0x66e3[13]]({value:_0x5a9cx16})})[_0x66e3[21]](handleError(_0x5a9cx9))};exports[_0x66e3[62]]= function(_0x5a9cx13,_0x5a9cx9){return sequelize[_0x66e3[22]](_0x66e3[63],{type:sequelize[_0x66e3[58]][_0x66e3[57]]})[_0x66e3[17]](function(_0x5a9cx16){return _0x5a9cx9[_0x66e3[14]](200)[_0x66e3[13]]({value:_0x5a9cx16[0][_0x66e3[55]]})})[_0x66e3[21]](handleError(_0x5a9cx9))};exports[_0x66e3[64]]= function(_0x5a9cx13,_0x5a9cx9){return ReportCallHistory[_0x66e3[64]]()[_0x66e3[17]](function(_0x5a9cx1a){return _0x5a9cx9[_0x66e3[14]](200)[_0x66e3[13]](_0x5a9cx1a)})[_0x66e3[21]](handleError(_0x5a9cx9))} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_call/report_call.events.js b/server/api/report_call/report_call.events.js index 9f0a986..66dc905 100644 --- a/server/api/report_call/report_call.events.js +++ b/server/api/report_call/report_call.events.js @@ -1 +1 @@ -var _0x8c05=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x43\x61\x6C\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x8c05[0];const EventEmitter=require(_0x8c05[1]);const ReportCall=require(_0x8c05[3])[_0x8c05[2]];var ReportCallEvents= new EventEmitter();ReportCallEvents[_0x8c05[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x8c05[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x8c05[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x8c05[6]};for(var e in events){var event=events[e];ReportCall[_0x8c05[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x3e67x8,_0x3e67x9,_0x3e67xa){ReportCallEvents[_0x8c05[10]](event+ _0x8c05[8]+ _0x3e67x8[_0x8c05[9]],_0x3e67x8);ReportCallEvents[_0x8c05[10]](event,_0x3e67x8);_0x3e67xa(null)}}module[_0x8c05[11]]= ReportCallEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_call/report_call.socket.js b/server/api/report_call/report_call.socket.js index 12e948f..66dc905 100644 --- a/server/api/report_call/report_call.socket.js +++ b/server/api/report_call/report_call.socket.js @@ -1 +1 @@ -var _0x7821=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x7821[0];const ReportCallEvents=require(_0x7821[1]);var events=[_0x7821[2],_0x7821[3]];exports[_0x7821[4]]= function(_0x4de6x3){for(var _0x4de6x4=0,_0x4de6x5=events[_0x7821[5]];_0x4de6x4< _0x4de6x5;_0x4de6x4++){var _0x4de6x6=events[_0x4de6x4];var _0x4de6x7=createListener(_0x7821[6]+ _0x4de6x6,_0x4de6x3);ReportCallEvents[_0x7821[7]](_0x4de6x6,_0x4de6x7);_0x4de6x3[_0x7821[7]](_0x7821[8],removeListener(_0x4de6x6,_0x4de6x7))}};function createListener(_0x4de6x6,_0x4de6x3){return function(_0x4de6x9){_0x4de6x3[_0x7821[9]](_0x4de6x6,_0x4de6x9)}}function removeListener(_0x4de6x6,_0x4de6x7){return function(){ReportCallEvents[_0x7821[10]](_0x4de6x6,_0x4de6x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_chat/index.js b/server/api/report_chat/index.js index 4ba3803..66dc905 100644 --- a/server/api/report_chat/index.js +++ b/server/api/report_chat/index.js @@ -1 +1 @@ -var _0xc338=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x43\x68\x61\x74","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64\x2F\x61\x63\x63\x65\x70\x74\x2F\x3A\x75\x6E\x69\x71\x75\x65\x69\x64","\x68\x61\x73\x52\x6F\x6C\x65","\x61\x63\x63\x65\x70\x74","\x2F\x3A\x69\x64\x2F\x72\x65\x6A\x65\x63\x74","\x72\x65\x6A\x65\x63\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xc338[0];var express=require(_0xc338[1]);var controller=require(_0xc338[2]);var auth=require(_0xc338[3]);var license=require(_0xc338[4]);var router=express.Router();router[_0xc338[12]](_0xc338[5],auth[_0xc338[6]](),license[_0xc338[7]](),auth[_0xc338[10]]([17],[_0xc338[8],_0xc338[9]]),controller[_0xc338[11]]);router[_0xc338[12]](_0xc338[13],auth[_0xc338[6]](),license[_0xc338[7]](),auth[_0xc338[14]](_0xc338[9]),controller[_0xc338[15]]);router[_0xc338[12]](_0xc338[16],auth[_0xc338[6]](),license[_0xc338[7]](),auth[_0xc338[14]](_0xc338[9]),controller[_0xc338[17]]);module[_0xc338[18]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_chat/report_chat.controller.js b/server/api/report_chat/report_chat.controller.js index e980e4c..66dc905 100644 --- a/server/api/report_chat/report_chat.controller.js +++ b/server/api/report_chat/report_chat.controller.js @@ -1 +1 @@ -var _0xcb79=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x64\x35","\x6D\x6F\x6D\x65\x6E\x74","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x52\x65\x70\x6F\x72\x74\x43\x68\x61\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x43\x68\x61\x74\x56\x69\x73\x69\x74\x6F\x72","\x55\x73\x65\x72","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x61\x63\x63\x65\x70\x74","\x2E","\x73\x70\x6C\x69\x74","\x75\x6E\x69\x71\x75\x65\x69\x64","\x70\x61\x72\x61\x6D\x73","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x61\x63\x63\x65\x70\x74\x65\x64","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x66\x69\x6E\x64\x42\x79\x49\x64","\x62\x61\x73\x65\x36\x34","\x69\x64","\x75\x73\x65\x72","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x4F\x50\x45\x4E","\x75\x70\x64\x61\x74\x65","\x61\x64\x64\x55\x73\x65\x72","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x64\x65\x73\x74\x72\x6F\x79","\x72\x65\x6A\x65\x63\x74","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0xcb79[0];var _=require(_0xcb79[1]);var md5=require(_0xcb79[2]);var moment=require(_0xcb79[3]);var logger=require(_0xcb79[5])(_0xcb79[4]);var ReportChat=require(_0xcb79[7])[_0xcb79[6]];var ChatRoom=require(_0xcb79[7])[_0xcb79[8]];var ChatVisitor=require(_0xcb79[7])[_0xcb79[9]];var Agent=require(_0xcb79[7])[_0xcb79[10]];var sequelize=require(_0xcb79[7])[_0xcb79[11]];var Util=require(_0xcb79[12]);exports[_0xcb79[13]]= function(_0x1fa2xb,_0x1fa2xc,_0x1fa2xd){return ReportChat[_0xcb79[20]](Util[_0xcb79[19]](_0x1fa2xb[_0xcb79[18]]))[_0xcb79[17]](function(_0x1fa2xf){_0x1fa2xc[_0xcb79[16]](200)[_0xcb79[15]](_0x1fa2xf)})[_0xcb79[14]](function(_0x1fa2xe){return handleError(_0x1fa2xc,_0x1fa2xe)})};exports[_0xcb79[21]]= function(_0x1fa2xb,_0x1fa2xc){var _0x1fa2x10=_0x1fa2xb[_0xcb79[25]][_0xcb79[24]][_0xcb79[23]](_0xcb79[22])[1];var _0x1fa2x11;return ReportChat[_0xcb79[30]](_0x1fa2xb[_0xcb79[25]][_0xcb79[32]])[_0xcb79[17]](function(_0x1fa2x15){if(!_0x1fa2x15){return _0x1fa2xc[_0xcb79[26]](404)};var _0x1fa2x13=_[_0xcb79[28]](_0x1fa2x15,{connectid:_0x1fa2xb[_0xcb79[25]][_0xcb79[24]]});return _0x1fa2x13[_0xcb79[29]]()})[_0xcb79[17]](function(){return ChatRoom[_0xcb79[30]](_0x1fa2x10)})[_0xcb79[17]](function(_0x1fa2x14){_0x1fa2x11= _0x1fa2x14;return _0x1fa2x11[_0xcb79[37]](_0x1fa2xb[_0xcb79[33]][_0xcb79[32]],{individualHooks:true})})[_0xcb79[17]](function(){return _0x1fa2x11[_0xcb79[36]]({token:md5(JSON[_0xcb79[34]]([_0x1fa2xb[_0xcb79[33]][_0xcb79[32]]])).toString(_0xcb79[31]),status:_0xcb79[35]})})[_0xcb79[17]](function(){return ChatVisitor[_0xcb79[30]](_0x1fa2x11.ChatVisitorId)})[_0xcb79[17]](function(_0x1fa2x12){if(!_0x1fa2x12){return _0x1fa2xc[_0xcb79[26]](404)};var _0x1fa2x13=_[_0xcb79[28]](_0x1fa2x12,{status:_0xcb79[27]});return _0x1fa2x13[_0xcb79[29]]()})[_0xcb79[17]](function(){return _0x1fa2xc[_0xcb79[26]](200)})[_0xcb79[14]](sequelize.UniqueConstraintError,function(_0x1fa2xe){return _0x1fa2xc[_0xcb79[26]](504)})[_0xcb79[14]](function(_0x1fa2xe){return handleError(_0x1fa2xc,_0x1fa2xe)})};exports[_0xcb79[38]]= function(_0x1fa2xb,_0x1fa2xc){return ReportChat[_0xcb79[38]](_0x1fa2xb[_0xcb79[39]])[_0xcb79[17]](function(_0x1fa2x15){return _0x1fa2xc[_0xcb79[16]](201)[_0xcb79[15]](_0x1fa2x15)})[_0xcb79[14]](function(_0x1fa2xe){return handleError(_0x1fa2xc,_0x1fa2xe)})};exports[_0xcb79[36]]= function(_0x1fa2xb,_0x1fa2xc,_0x1fa2xd){if(_0x1fa2xb[_0xcb79[39]][_0xcb79[32]]){delete _0x1fa2xb[_0xcb79[39]][_0xcb79[32]]};return ReportChat[_0xcb79[30]](_0x1fa2xb[_0xcb79[25]][_0xcb79[32]])[_0xcb79[17]](function(_0x1fa2x15){if(!_0x1fa2x15){return _0x1fa2xc[_0xcb79[26]](404)};var _0x1fa2x13=_[_0xcb79[28]](_0x1fa2x15,_0x1fa2xb[_0xcb79[39]]);return _0x1fa2x13[_0xcb79[29]]()})[_0xcb79[17]](function(_0x1fa2x15){return _0x1fa2xc[_0xcb79[16]](200)[_0xcb79[15]](_0x1fa2x15)})[_0xcb79[14]](sequelize.ValidationError,function(_0x1fa2xe){return handleError(_0x1fa2xc,_0x1fa2xe)})[_0xcb79[14]](function(_0x1fa2xe){return handleError(_0x1fa2xc,_0x1fa2xe)})};exports[_0xcb79[40]]= function(_0x1fa2xb,_0x1fa2xc){return ReportChat[_0xcb79[30]](_0x1fa2xb[_0xcb79[25]][_0xcb79[32]])[_0xcb79[17]](function(_0x1fa2x15){if(!_0x1fa2x15){return _0x1fa2xc[_0xcb79[26]](404)};return _0x1fa2x15[_0xcb79[40]]()})[_0xcb79[17]](function(){return _0x1fa2xc[_0xcb79[26]](204)})[_0xcb79[14]](function(_0x1fa2xe){return handleError(_0x1fa2xc,_0x1fa2xe)})};exports[_0xcb79[41]]= function(_0x1fa2xb,_0x1fa2xc){return ReportChat[_0xcb79[30]](_0x1fa2xb[_0xcb79[25]][_0xcb79[32]])[_0xcb79[17]](function(_0x1fa2x15){if(!_0x1fa2x15){return _0x1fa2xc[_0xcb79[26]](404)};var _0x1fa2x13=_[_0xcb79[28]](_0x1fa2x15,{rejectedAt:moment()[_0xcb79[43]](_0xcb79[42])});return _0x1fa2x13[_0xcb79[29]]()})[_0xcb79[17]](function(){return _0x1fa2xc[_0xcb79[26]](200)})[_0xcb79[14]](function(_0x1fa2xe){return handleError(_0x1fa2xc,_0x1fa2xe)})};function handleError(_0x1fa2xc,_0x1fa2xe){logger[_0xcb79[45]](_0x1fa2xe[_0xcb79[44]]);return _0x1fa2xc[_0xcb79[16]](500)[_0xcb79[15]](_0x1fa2xe)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_chat/report_chat.events.js b/server/api/report_chat/report_chat.events.js index 41d05bd..66dc905 100644 --- a/server/api/report_chat/report_chat.events.js +++ b/server/api/report_chat/report_chat.events.js @@ -1 +1 @@ -var _0xbf3f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x43\x68\x61\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xbf3f[0];const EventEmitter=require(_0xbf3f[1]);const ReportChat=require(_0xbf3f[3])[_0xbf3f[2]];var ReportChatEvents= new EventEmitter();ReportChatEvents[_0xbf3f[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xbf3f[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xbf3f[6],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xbf3f[7]};for(var e in events){var event=events[e];ReportChat[_0xbf3f[8]](e,emitEvent(event))};function emitEvent(event){return function(_0x535bx8,_0x535bx9,_0x535bxa){ReportChatEvents[_0xbf3f[11]](event+ _0xbf3f[9]+ _0x535bx8[_0xbf3f[10]],_0x535bx8);ReportChatEvents[_0xbf3f[11]](event,_0x535bx8);_0x535bxa(null)}}module[_0xbf3f[12]]= ReportChatEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_chat/report_chat.socket.js b/server/api/report_chat/report_chat.socket.js index e205d07..66dc905 100644 --- a/server/api/report_chat/report_chat.socket.js +++ b/server/api/report_chat/report_chat.socket.js @@ -1 +1 @@ -var _0x24c4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x3A\x73\x61\x76\x65","\x6E\x61\x6D\x65","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x72\x6F\x6C\x65","\x61\x64\x6D\x69\x6E","\x65\x6D\x69\x74","\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x3A\x75\x70\x64\x61\x74\x65","\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x24c4[0];const ReportChatEvents=require(_0x24c4[1]);var events=[_0x24c4[2],_0x24c4[3]];exports[_0x24c4[4]]= function(_0x4473x3){for(var _0x4473x4=0,_0x4473x5=events[_0x24c4[5]];_0x4473x4< _0x4473x5;_0x4473x4++){var _0x4473x6=events[_0x4473x4];var _0x4473x7=createListener(_0x24c4[6]+ _0x4473x6,_0x4473x3);ReportChatEvents[_0x24c4[7]](_0x4473x6,_0x4473x7);_0x4473x3[_0x24c4[7]](_0x24c4[8],removeListener(_0x4473x6,_0x4473x7))}};function createListener(_0x4473x6,_0x4473x3){return function(_0x4473x9){switch(_0x4473x6){case _0x24c4[9]:;case _0x24c4[15]:if(_0x4473x3[_0x24c4[10]]=== _0x4473x9[_0x24c4[11]]|| _0x4473x3[_0x24c4[12]]=== _0x24c4[13]){_0x4473x3[_0x24c4[14]](_0x4473x6,_0x4473x9)};break;case _0x24c4[16]:_0x4473x3[_0x24c4[14]](_0x4473x6,_0x4473x9);break;default:}}}function removeListener(_0x4473x6,_0x4473x7){return function(){ReportChatEvents[_0x24c4[17]](_0x4473x6,_0x4473x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_chat_session/index.js b/server/api/report_chat_session/index.js index 6db7d3e..66dc905 100644 --- a/server/api/report_chat_session/index.js +++ b/server/api/report_chat_session/index.js @@ -1 +1 @@ -var _0x5511=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x5F\x73\x65\x73\x73\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x43\x68\x61\x74","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x64\x61\x73\x68\x62\x6F\x61\x72\x64","\x68\x61\x73\x53\x6D\x73","\x67\x65\x74\x44\x61\x73\x68\x62\x6F\x61\x72\x64\x56\x61\x6C\x75\x65\x73","\x2F\x77\x61\x69\x74\x69\x6E\x67\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x61\x67\x65\x6E\x74","\x77\x61\x69\x74\x69\x6E\x67\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x65\x78\x70\x6F\x72\x74\x73"];_0x5511[0];var express=require(_0x5511[1]);var controller=require(_0x5511[2]);var auth=require(_0x5511[3]);var license=require(_0x5511[4]);var router=express.Router();router[_0x5511[12]](_0x5511[5],license[_0x5511[6]](),auth[_0x5511[7]](),license[_0x5511[8]](),auth[_0x5511[10]]([17],[_0x5511[9]]),controller[_0x5511[11]]);router[_0x5511[12]](_0x5511[13],license[_0x5511[6]](),auth[_0x5511[7]](),license[_0x5511[8]](),auth[_0x5511[10]]([17],[_0x5511[9]]),controller[_0x5511[14]]);router[_0x5511[12]](_0x5511[15],license[_0x5511[6]](),auth[_0x5511[7]](),license[_0x5511[16]](),controller[_0x5511[17]]);router[_0x5511[12]](_0x5511[18],license[_0x5511[6]](),auth[_0x5511[7]](),license[_0x5511[8]](),auth[_0x5511[10]]([8],[_0x5511[9],_0x5511[19]]),controller[_0x5511[20]]);module[_0x5511[21]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_chat_session/report_chat_session.controller.js b/server/api/report_chat_session/report_chat_session.controller.js index 36d553e..66dc905 100644 --- a/server/api/report_chat_session/report_chat_session.controller.js +++ b/server/api/report_chat_session/report_chat_session.controller.js @@ -1 +1 @@ -var _0xd344=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x52\x65\x70\x6F\x72\x74\x43\x68\x61\x74\x53\x65\x73\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x52\x65\x70\x6F\x72\x74\x43\x68\x61\x74\x53\x65\x73\x73\x69\x6F\x6E\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x62\x6C\x75\x65\x62\x69\x72\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6D\x6F\x6D\x65\x6E\x74","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x69\x64","\x6D\x61\x70","\x75\x6E\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x72\x6F\x77\x73","\x67\x65\x74\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x67\x65\x74\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65","\x77\x61\x69\x74\x69\x6E\x67\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6C\x6C","\x61\x6C\x6C","\x6F\x70\x65\x6E","\x64\x61\x79","\x73\x74\x61\x72\x74\x4F\x66","\x63\x6F\x75\x6E\x74","\x77\x61\x69\x74\x69\x6E\x67","\x63\x6C\x6F\x73\x65\x64","\x74\x69\x6D\x65\x6F\x75\x74","\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64","\x67\x65\x74\x44\x61\x73\x68\x62\x6F\x61\x72\x64\x56\x61\x6C\x75\x65\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0xd344[0];var _=require(_0xd344[1]);var ReportChatSession=require(_0xd344[3])[_0xd344[2]];var User=require(_0xd344[3])[_0xd344[4]];var ReportChatSessionHistory=require(_0xd344[3])[_0xd344[6]][_0xd344[5]];var Promise=require(_0xd344[7]);var Util=require(_0xd344[8]);var moment=require(_0xd344[9]);var logger=require(_0xd344[11])(_0xd344[10]);exports[_0xd344[12]]= function(_0xc57ax9,_0xc57axa,_0xc57axb){return ReportChatSession[_0xd344[19]](Util[_0xd344[18]](_0xc57ax9[_0xd344[17]]))[_0xd344[16]](function(_0xc57axd){_0xc57axa[_0xd344[15]](200)[_0xd344[14]](_0xc57axd)})[_0xd344[13]](function(_0xc57axc){return handleError(_0xc57axa,_0xc57axc)})};exports[_0xd344[20]]= function(_0xc57ax9,_0xc57axa){return ReportChatSessionHistory[_0xd344[20]]()[_0xd344[16]](function(_0xc57axe){return _0xc57axa[_0xd344[15]](200)[_0xd344[14]](_0xc57axe)})[_0xd344[13]](function(_0xc57axc){return handleError(_0xc57axa,_0xc57axc)})};function getChatQueues(_0xc57ax10){return function(){switch(_0xc57ax10[_0xd344[31]]){case _0xd344[28]:return User[_0xd344[27]](_0xc57ax10[_0xd344[21]],{attributes:[_0xd344[21]]})[_0xd344[16]](Util[_0xd344[26]]({},{attributes:[_0xd344[21]],include:[{raw:true,model:User,attributes:[_0xd344[21]]}]}))[_0xd344[16]](function(_0xc57ax11){var _0xc57ax12=[];_0xc57ax11[_0xd344[25]][_0xd344[24]](function(_0xc57ax13){_0xc57ax12= _[_0xd344[23]](_0xc57ax12,_[_0xd344[22]](_0xc57ax13.Users,_0xd344[21]))});return {$or:{queue:_[_0xd344[22]](_0xc57ax11[_0xd344[25]],_0xd344[21]),memberid:_0xc57ax12}}});case _0xd344[30]:return User[_0xd344[27]](_0xc57ax10[_0xd344[21]],{attributes:[_0xd344[21]]})[_0xd344[16]](function(_0xc57ax14){return _0xc57ax14[_0xd344[29]]({attributes:[_0xd344[21]]})})[_0xd344[16]](function(_0xc57ax11){return {$or:{queue:_[_0xd344[22]](_0xc57ax11,_0xd344[21]),memberid:_0xc57ax10[_0xd344[21]]}}});default:return {}}}}exports[_0xd344[32]]= function(_0xc57ax9,_0xc57axa){return Promise[_0xd344[35]]([])[_0xd344[16]](getChatQueues(_0xc57ax9[_0xd344[28]]))[_0xd344[16]](function(_0xc57ax16){return ReportChatSession[_0xd344[34]](Util[_0xd344[18]](_0xc57ax9[_0xd344[17]],_[_0xd344[33]]({leaveAt:null},_0xc57ax16)))})[_0xd344[16]](function(_0xc57ax15){return _0xc57axa[_0xd344[15]](200)[_0xd344[14]]({rows:_0xc57ax15})})[_0xd344[13]](function(_0xc57axc){return handleError(_0xc57axa,_0xc57axc)})};exports[_0xd344[36]]= function(_0xc57ax9,_0xc57axa){return Promise[_0xd344[35]]([])[_0xd344[16]](getChatQueues(_0xc57ax9[_0xd344[28]]))[_0xd344[16]](function(_0xc57ax16){return ReportChatSession[_0xd344[39]](Util[_0xd344[18]](_0xc57ax9[_0xd344[17]],_[_0xd344[33]]({leaveAt:{$ne:null},complete:null,abandon:null,timeout:null,createdAt:{$gte:moment()[_0xd344[38]](_0xd344[37])}},_0xc57ax16)))})[_0xd344[16]](function(_0xc57ax15){return _0xc57axa[_0xd344[15]](200)[_0xd344[14]]({value:_0xc57ax15})})[_0xd344[13]](function(_0xc57axc){return handleError(_0xc57axa,_0xc57axc)})};exports[_0xd344[40]]= function(_0xc57ax9,_0xc57axa){return Promise[_0xd344[35]]([])[_0xd344[16]](getChatQueues(_0xc57ax9[_0xd344[28]]))[_0xd344[16]](function(_0xc57ax16){return ReportChatSession[_0xd344[39]](Util[_0xd344[18]](_0xc57ax9[_0xd344[17]],_[_0xd344[33]]({leaveAt:null,createdAt:{$gte:moment()[_0xd344[38]](_0xd344[37])}},_0xc57ax16)))})[_0xd344[16]](function(_0xc57ax15){return _0xc57axa[_0xd344[15]](200)[_0xd344[14]]({value:_0xc57ax15})})[_0xd344[13]](function(_0xc57axc){return handleError(_0xc57axa,_0xc57axc)})};exports[_0xd344[41]]= function(_0xc57ax9,_0xc57axa){return Promise[_0xd344[35]]([])[_0xd344[16]](getChatQueues(_0xc57ax9[_0xd344[28]]))[_0xd344[16]](function(_0xc57ax16){return ReportChatSession[_0xd344[39]](Util[_0xd344[18]](_0xc57ax9[_0xd344[17]],_[_0xd344[33]]({complete:true,createdAt:{$gte:moment()[_0xd344[38]](_0xd344[37])}},_0xc57ax16)))})[_0xd344[16]](function(_0xc57ax15){return _0xc57axa[_0xd344[15]](200)[_0xd344[14]]({value:_0xc57ax15})})[_0xd344[13]](function(_0xc57axc){return handleError(_0xc57axa,_0xc57axc)})};exports[_0xd344[42]]= function(_0xc57ax9,_0xc57axa){return Promise[_0xd344[35]]([])[_0xd344[16]](getChatQueues(_0xc57ax9[_0xd344[28]]))[_0xd344[16]](function(_0xc57ax16){return ReportChatSession[_0xd344[39]](Util[_0xd344[18]](_0xc57ax9[_0xd344[17]],_[_0xd344[33]]({timeout:true,createdAt:{$gte:moment()[_0xd344[38]](_0xd344[37])}},_0xc57ax16)))})[_0xd344[16]](function(_0xc57ax15){return _0xc57axa[_0xd344[15]](200)[_0xd344[14]]({value:_0xc57ax15})})[_0xd344[13]](function(_0xc57axc){return handleError(_0xc57axa,_0xc57axc)})};exports[_0xd344[43]]= function(_0xc57ax9,_0xc57axa){return Promise[_0xd344[35]]([])[_0xd344[16]](getChatQueues(_0xc57ax9[_0xd344[28]]))[_0xd344[16]](function(_0xc57ax16){return ReportChatSession[_0xd344[39]](Util[_0xd344[18]](_0xc57ax9[_0xd344[17]],_[_0xd344[33]]({abandon:true,createdAt:{$gte:moment()[_0xd344[38]](_0xd344[37])}},_0xc57ax16)))})[_0xd344[16]](function(_0xc57ax15){return _0xc57axa[_0xd344[15]](200)[_0xd344[14]]({value:_0xc57ax15})})[_0xd344[13]](function(_0xc57axc){return handleError(_0xc57axa,_0xc57axc)})};exports[_0xd344[44]]= function(_0xc57ax9,_0xc57axa){var _0xc57ax17={timeout:0,waiting:0};return ReportChatSession[_0xd344[39]]({where:{leaveAt:null,createdAt:{$gte:moment()[_0xd344[38]](_0xd344[37])}}})[_0xd344[16]](function(_0xc57axd){if(_0xc57axd){_0xc57ax17[_0xd344[40]]= _0xc57axd};return ReportChatSession[_0xd344[39]]({where:{timeout:true,createdAt:{$gte:moment()[_0xd344[38]](_0xd344[37])}}})})[_0xd344[16]](function(_0xc57axd){if(_0xc57axd){_0xc57ax17[_0xd344[42]]= _0xc57axd};return _0xc57axa[_0xd344[15]](200)[_0xd344[14]](_0xc57ax17)})[_0xd344[13]](function(_0xc57axc){return handleError(_0xc57axa,_0xc57axc)})};function handleError(_0xc57axa,_0xc57axc){logger[_0xd344[46]](_0xc57axc[_0xd344[45]]);return _0xc57axa[_0xd344[15]](500)[_0xd344[14]](_0xc57axc)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_chat_session/report_chat_session.events.js b/server/api/report_chat_session/report_chat_session.events.js index 50d8058..66dc905 100644 --- a/server/api/report_chat_session/report_chat_session.events.js +++ b/server/api/report_chat_session/report_chat_session.events.js @@ -1 +1 @@ -var _0x8685=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x43\x68\x61\x74\x53\x65\x73\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x8685[0];const EventEmitter=require(_0x8685[1]);const ReportChatSession=require(_0x8685[3])[_0x8685[2]];var ReportChatSessionEvents= new EventEmitter();ReportChatSessionEvents[_0x8685[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x8685[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x8685[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x8685[6]};for(var e in events){var event=events[e];ReportChatSession[_0x8685[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x3995x8,_0x3995x9,_0x3995xa){ReportChatSessionEvents[_0x8685[10]](event+ _0x8685[8]+ _0x3995x8[_0x8685[9]],_0x3995x8);ReportChatSessionEvents[_0x8685[10]](event,_0x3995x8);_0x3995xa(null)}}module[_0x8685[11]]= ReportChatSessionEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_chat_session/report_chat_session.socket.js b/server/api/report_chat_session/report_chat_session.socket.js index d842833..66dc905 100644 --- a/server/api/report_chat_session/report_chat_session.socket.js +++ b/server/api/report_chat_session/report_chat_session.socket.js @@ -1 +1 @@ -var _0x533f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x5F\x73\x65\x73\x73\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x43\x68\x61\x74\x53\x65\x73\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6C\x6F\x64\x61\x73\x68","\x62\x6C\x75\x65\x62\x69\x72\x64","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x5F\x73\x65\x73\x73\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x69\x64","\x6D\x61\x70","\x75\x6E\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x72\x6F\x77\x73","\x74\x68\x65\x6E","\x67\x65\x74\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x75\x73\x65\x72\x49\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x67\x65\x74\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65","\x45\x72\x72\x6F\x72\x20\x66\x69\x6C\x74\x65\x72\x69\x6E\x67\x20\x72\x65\x70\x6F\x72\x74\x20\x63\x68\x61\x74\x20\x73\x65\x73\x73\x69\x6F\x6E\x73\x20\x61\x66\x74\x65\x72\x20\x73\x61\x76\x65","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x61\x64\x6D\x69\x6E","\x6D\x65\x6D\x62\x65\x72\x69\x64","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x71\x75\x65\x75\x65","\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x5F\x73\x65\x73\x73\x69\x6F\x6E\x3A\x73\x61\x76\x65","\x65\x6D\x69\x74","\x61\x6C\x6C","\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x5F\x73\x65\x73\x73\x69\x6F\x6E\x3A\x72\x65\x6D\x6F\x76\x65"];_0x533f[0];const ReportChatSessionEvents=require(_0x533f[1]);const ReportChatSession=require(_0x533f[3])[_0x533f[2]];const User=require(_0x533f[3])[_0x533f[4]];const Util=require(_0x533f[5]);const _=require(_0x533f[6]);const Promise=require(_0x533f[7]);var events=[_0x533f[8],_0x533f[9]];exports[_0x533f[10]]= function(_0xa857x8){for(var _0xa857x9=0,_0xa857xa=events[_0x533f[11]];_0xa857x9< _0xa857xa;_0xa857x9++){var _0xa857xb=events[_0xa857x9];var _0xa857xc=createListener(_0x533f[12]+ _0xa857xb,_0xa857x8);ReportChatSessionEvents[_0x533f[13]](_0xa857xb,_0xa857xc);_0xa857x8[_0x533f[13]](_0x533f[14],removeListener(_0xa857xb,_0xa857xc))}};function createListener(_0xa857xb,_0xa857x8){return function(_0xa857xe){onSave(_0xa857x8,_0xa857xe)}}function removeListener(_0xa857xb,_0xa857xc){return function(){ReportChatSessionEvents[_0x533f[15]](_0xa857xb,_0xa857xc)}}function getChatQueues(_0xa857x11){return function(){switch(_0xa857x11[_0x533f[28]]){case _0x533f[25]:return User[_0x533f[24]](_0xa857x11[_0x533f[23]],{attributes:[_0x533f[16]]})[_0x533f[21]](Util[_0x533f[22]]({},{attributes:[_0x533f[16]],include:[{raw:true,model:User,attributes:[_0x533f[16]]}]}))[_0x533f[21]](function(_0xa857x12){var _0xa857x13=[];_0xa857x12[_0x533f[20]][_0x533f[19]](function(_0xa857x14){_0xa857x13= _[_0x533f[18]](_0xa857x13,_[_0x533f[17]](_0xa857x14.Users,_0x533f[16]))});return {queue:_[_0x533f[17]](_0xa857x12[_0x533f[20]],_0x533f[16]),memberid:_0xa857x13}});case _0x533f[27]:return User[_0x533f[24]](_0xa857x11[_0x533f[23]],{attributes:[_0x533f[16]]})[_0x533f[21]](function(_0xa857x15){return _0xa857x15[_0x533f[26]]({attributes:[_0x533f[16]]})})[_0x533f[21]](function(_0xa857x12){return {queue:_[_0x533f[17]](_0xa857x12,_0x533f[16]),memberid:_0xa857x11[_0x533f[23]]}});default:return {}}}}function onSave(_0xa857x8,_0xa857xe,_0xa857x17){return Promise[_0x533f[38]]([])[_0x533f[21]](getChatQueues(_0xa857x8))[_0x533f[21]](function(_0xa857x19){if(_0xa857x8[_0x533f[28]]=== _0x533f[32]|| _[_0x533f[34]](_0xa857x19[_0x533f[33]],_0xa857xe[_0x533f[33]])|| _[_0x533f[34]](_0xa857x19[_0x533f[35]],_0xa857xe[_0x533f[35]])){_0xa857x8[_0x533f[37]](_0x533f[36],_0xa857xe)}})[_0x533f[31]](function(_0xa857x18){console[_0x533f[30]](_0x533f[29],_0xa857x18)})}function onRemove(_0xa857x8,_0xa857xe,_0xa857x17){_0xa857x8[_0x533f[37]](_0x533f[39],_0xa857xe)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_dial/index.js b/server/api/report_dial/index.js index 3c4876f..66dc905 100644 --- a/server/api/report_dial/index.js +++ b/server/api/report_dial/index.js @@ -1 +1 @@ -var _0xec17=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x64\x69\x61\x6C\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x61\x63\x74\x69\x76\x65\x2F\x63\x61\x6C\x6C\x73","\x61\x63\x74\x69\x76\x65\x43\x61\x6C\x6C\x73","\x65\x78\x70\x6F\x72\x74\x73"];_0xec17[0];var express=require(_0xec17[1]);var auth=require(_0xec17[2]);var controller=require(_0xec17[3]);var router=express.Router();router[_0xec17[10]](_0xec17[4],auth[_0xec17[5]](),auth[_0xec17[8]]([17],[_0xec17[6],_0xec17[7]]),controller[_0xec17[9]]);router[_0xec17[10]](_0xec17[11],auth[_0xec17[5]](),auth[_0xec17[8]]([17],[_0xec17[6]]),controller[_0xec17[12]]);router[_0xec17[10]](_0xec17[13],auth[_0xec17[5]](),auth[_0xec17[8]]([7],[_0xec17[6],_0xec17[7]]),controller[_0xec17[14]]);module[_0xec17[15]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_dial/report_dial.controller.js b/server/api/report_dial/report_dial.controller.js index f7ad5c5..66dc905 100644 --- a/server/api/report_dial/report_dial.controller.js +++ b/server/api/report_dial/report_dial.controller.js @@ -1 +1 @@ -var _0x9b4b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x52\x65\x70\x6F\x72\x74\x44\x69\x61\x6C","\x52\x65\x70\x6F\x72\x74\x44\x69\x61\x6C\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x72\x6F\x6C\x65","\x75\x73\x65\x72","\x61\x67\x65\x6E\x74","\x72\x6F\x77\x73","\x63\x68\x61\x6E\x6E\x65\x6C","\x73\x70\x6C\x69\x74","\x6E\x61\x6D\x65","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x6C\x65\x6E\x67\x74\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x61\x63\x74\x69\x76\x65\x43\x61\x6C\x6C\x73","\x66\x69\x6E\x64\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65"];_0x9b4b[0];var _=require(_0x9b4b[1]);var logger=require(_0x9b4b[3])(_0x9b4b[2]);var sequelize=require(_0x9b4b[5])[_0x9b4b[4]];var ReportDial=require(_0x9b4b[5])[_0x9b4b[6]];var ReportDialHistory=require(_0x9b4b[5])[_0x9b4b[8]][_0x9b4b[7]];var Util=require(_0x9b4b[9]);function handleError(_0xa478x8,_0xa478x9){_0xa478x9= _0xa478x9|| 500;return function(_0xa478xa){logger[_0x9b4b[11]](_0xa478xa[_0x9b4b[10]]);_0xa478x8[_0x9b4b[13]](_0xa478x9)[_0x9b4b[12]](_0xa478xa)}}function responseWithResult(_0xa478x8,_0xa478x9){_0xa478x9= _0xa478x9|| 200;return function(_0xa478xc){if(_0xa478xc){_0xa478x8[_0x9b4b[13]](_0xa478x9)[_0x9b4b[14]](_0xa478xc)}}}function handleEntityNotFound(_0xa478x8){return function(_0xa478xc){if(!_0xa478xc){_0xa478x8[_0x9b4b[13]](404)[_0x9b4b[15]]();return null};return _0xa478xc}}function saveUpdates(_0xa478xf){return function(_0xa478xc){return _0xa478xc[_0x9b4b[17]](_0xa478xf)[_0x9b4b[16]](function(_0xa478x10){return _0xa478x10})}}function removeEntity(_0xa478x8){return function(_0xa478xc){if(_0xa478xc){return _0xa478xc[_0x9b4b[18]]()[_0x9b4b[16]](function(){_0xa478x8[_0x9b4b[13]](204)[_0x9b4b[15]]()})}}}exports[_0x9b4b[19]]= function(_0xa478x12,_0xa478x8,_0xa478x13){return ReportDial[_0x9b4b[33]](Util[_0x9b4b[32]](_0xa478x12[_0x9b4b[31]]))[_0x9b4b[16]](function(_0xa478x14){if(_0xa478x12[_0x9b4b[22]][_0x9b4b[21]]=== _0x9b4b[23]){var _0xa478x15=[];_[_0x9b4b[29]](_0xa478x14[_0x9b4b[24]],function(_0xa478x16){if(_0xa478x16[_0x9b4b[25]]&& _0xa478x16[_0x9b4b[25]][_0x9b4b[26]](/\/|-/)[1]=== _0xa478x12[_0x9b4b[22]][_0x9b4b[27]]){_0xa478x15[_0x9b4b[28]](_0xa478x16)}});return {rows:_0xa478x15,count:_0xa478x15[_0x9b4b[30]]}};return _0xa478x14})[_0x9b4b[16]](function(_0xa478x14){return _0xa478x8[_0x9b4b[13]](200)[_0x9b4b[12]](_0xa478x14)})[_0x9b4b[20]](handleError(_0xa478x8))};exports[_0x9b4b[34]]= function(_0xa478x12,_0xa478x8){return ReportDial[_0x9b4b[35]](Util[_0x9b4b[32]](_0xa478x12[_0x9b4b[31]],{endtime:null}))[_0x9b4b[16]](function(_0xa478x14){return _0xa478x8[_0x9b4b[13]](200)[_0x9b4b[12]]({rows:_0xa478x14,count:_0xa478x14[_0x9b4b[30]]})})[_0x9b4b[20]](handleError(_0xa478x8))};exports[_0x9b4b[36]]= function(_0xa478x12,_0xa478x8){return ReportDialHistory[_0x9b4b[36]]()[_0x9b4b[16]](function(_0xa478x17){return _0xa478x8[_0x9b4b[13]](200)[_0x9b4b[12]](_0xa478x17)})[_0x9b4b[20]](handleError(_0xa478x8))} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_dial/report_dial.events.js b/server/api/report_dial/report_dial.events.js index 1029c61..66dc905 100644 --- a/server/api/report_dial/report_dial.events.js +++ b/server/api/report_dial/report_dial.events.js @@ -1 +1 @@ -var _0x25aa=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x44\x69\x61\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x25aa[0];const EventEmitter=require(_0x25aa[1]);const ReportDial=require(_0x25aa[3])[_0x25aa[2]];var ReportDialEvents= new EventEmitter();ReportDialEvents[_0x25aa[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x25aa[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x25aa[6],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x25aa[7]};for(var e in events){var event=events[e];ReportDial[_0x25aa[8]](e,emitEvent(event))};function emitEvent(event){return function(_0x4e36x8,_0x4e36x9,_0x4e36xa){ReportDialEvents[_0x25aa[11]](event+ _0x25aa[9]+ _0x4e36x8[_0x25aa[10]],_0x4e36x8);ReportDialEvents[_0x25aa[11]](event,_0x4e36x8);_0x4e36xa(null)}}module[_0x25aa[12]]= ReportDialEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_dial/report_dial.socket.js b/server/api/report_dial/report_dial.socket.js index 6c9f47b..66dc905 100644 --- a/server/api/report_dial/report_dial.socket.js +++ b/server/api/report_dial/report_dial.socket.js @@ -1 +1 @@ -var _0xdae4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x64\x69\x61\x6C\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x64\x69\x61\x6C\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x72\x6F\x6C\x65","\x61\x64\x6D\x69\x6E","\x63\x68\x61\x6E\x6E\x65\x6C","\x73\x70\x6C\x69\x74","\x6E\x61\x6D\x65","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xdae4[0];const ReportDialEvents=require(_0xdae4[1]);var events=[_0xdae4[2],_0xdae4[3],_0xdae4[4]];exports[_0xdae4[5]]= function(_0x1313x3){for(var _0x1313x4=0,_0x1313x5=events[_0xdae4[6]];_0x1313x4< _0x1313x5;_0x1313x4++){var _0x1313x6=events[_0x1313x4];var _0x1313x7=createListener(_0xdae4[7]+ _0x1313x6,_0x1313x3);ReportDialEvents[_0xdae4[8]](_0x1313x6,_0x1313x7);_0x1313x3[_0xdae4[8]](_0xdae4[9],removeListener(_0x1313x6,_0x1313x7))}};function createListener(_0x1313x6,_0x1313x3){return function(_0x1313x9){if(_0x1313x3[_0xdae4[10]]=== _0xdae4[11]|| (_0x1313x9[_0xdae4[12]]&& _0x1313x9[_0xdae4[12]][_0xdae4[13]](/\/|-/)[1]=== _0x1313x3[_0xdae4[14]])){_0x1313x3[_0xdae4[15]](_0x1313x6,_0x1313x9)}}}function removeListener(_0x1313x6,_0x1313x7){return function(){ReportDialEvents[_0xdae4[16]](_0x1313x6,_0x1313x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_fax/index.js b/server/api/report_fax/index.js index ab1b194..66dc905 100644 --- a/server/api/report_fax/index.js +++ b/server/api/report_fax/index.js @@ -1 +1 @@ -var _0x6ca6=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x46\x61\x78","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64\x2F\x61\x63\x63\x65\x70\x74\x2F\x3A\x75\x6E\x69\x71\x75\x65\x69\x64","\x68\x61\x73\x52\x6F\x6C\x65","\x61\x63\x63\x65\x70\x74","\x2F\x3A\x69\x64\x2F\x72\x65\x6A\x65\x63\x74","\x72\x65\x6A\x65\x63\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x6ca6[0];var express=require(_0x6ca6[1]);var controller=require(_0x6ca6[2]);var auth=require(_0x6ca6[3]);var license=require(_0x6ca6[4]);var router=express.Router();router[_0x6ca6[12]](_0x6ca6[5],auth[_0x6ca6[6]](),license[_0x6ca6[7]](),auth[_0x6ca6[10]]([17],[_0x6ca6[8],_0x6ca6[9]]),controller[_0x6ca6[11]]);router[_0x6ca6[12]](_0x6ca6[13],auth[_0x6ca6[6]](),license[_0x6ca6[7]](),auth[_0x6ca6[14]](_0x6ca6[9]),controller[_0x6ca6[15]]);router[_0x6ca6[12]](_0x6ca6[16],auth[_0x6ca6[6]](),license[_0x6ca6[7]](),auth[_0x6ca6[14]](_0x6ca6[9]),controller[_0x6ca6[17]]);module[_0x6ca6[18]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_fax/report_fax.controller.js b/server/api/report_fax/report_fax.controller.js index e92d7ce..66dc905 100644 --- a/server/api/report_fax/report_fax.controller.js +++ b/server/api/report_fax/report_fax.controller.js @@ -1 +1 @@ -var _0x6ce6=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x46\x61\x78\x52\x6F\x6F\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x46\x61\x78\x52\x6F\x6F\x6D\x53\x74\x61\x74\x75\x73","\x52\x65\x70\x6F\x72\x74\x46\x61\x78","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x61\x63\x63\x65\x70\x74","\x2E","\x73\x70\x6C\x69\x74","\x75\x6E\x69\x71\x75\x65\x69\x64","\x70\x61\x72\x61\x6D\x73","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x4F\x50\x45\x4E","\x61\x67\x65\x6E\x74","\x75\x73\x65\x72","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x69\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x72\x65\x6A\x65\x63\x74","\x52\x45\x4A\x45\x43\x54","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x72\x6F\x6F\x6D\x69\x64","\x63\x72\x65\x61\x74\x65","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0x6ce6[0];var _=require(_0x6ce6[1]);var moment=require(_0x6ce6[2]);var logger=require(_0x6ce6[4])(_0x6ce6[3]);var FaxRoom=require(_0x6ce6[6])[_0x6ce6[5]];var FaxRoomStatus=require(_0x6ce6[6])[_0x6ce6[7]];var ReportFax=require(_0x6ce6[6])[_0x6ce6[8]];var sequelize=require(_0x6ce6[6])[_0x6ce6[9]];var Agent=require(_0x6ce6[6])[_0x6ce6[10]];var Util=require(_0x6ce6[11]);exports[_0x6ce6[12]]= function(_0x50dfxa,_0x50dfxb,_0x50dfxc){return ReportFax[_0x6ce6[19]](Util[_0x6ce6[18]](_0x50dfxa[_0x6ce6[17]]))[_0x6ce6[16]](function(_0x50dfxe){_0x50dfxb[_0x6ce6[15]](200)[_0x6ce6[14]](_0x50dfxe)})[_0x6ce6[13]](function(_0x50dfxd){return handleError(_0x50dfxb,_0x50dfxd)})};exports[_0x6ce6[20]]= function(_0x50dfxa,_0x50dfxb){var _0x50dfxf=_0x50dfxa[_0x6ce6[24]][_0x6ce6[23]][_0x6ce6[22]](_0x6ce6[21])[1];return ReportFax[_0x6ce6[33]](_0x50dfxa[_0x6ce6[24]][_0x6ce6[32]])[_0x6ce6[16]](function(_0x50dfx10){if(!_0x50dfx10){return _0x50dfxb[_0x6ce6[25]](404)};var _0x50dfx11=_[_0x6ce6[30]](_0x50dfx10,{connectid:_0x50dfxa[_0x6ce6[24]][_0x6ce6[23]]});return _0x50dfx11[_0x6ce6[31]]()})[_0x6ce6[16]](function(){return FaxRoom[_0x6ce6[29]]({status:_0x6ce6[26],openReason:_0x6ce6[27]},{where:{id:_0x50dfxf},user:_0x50dfxa[_0x6ce6[28]],individualHooks:true})})[_0x6ce6[16]](function(){return _0x50dfxb[_0x6ce6[25]](200)})[_0x6ce6[13]](sequelize.UniqueConstraintError,function(_0x50dfxd){return _0x50dfxb[_0x6ce6[25]](504)})[_0x6ce6[13]](function(_0x50dfxd){return handleError(_0x50dfxb,_0x50dfxd)})};exports[_0x6ce6[34]]= function(_0x50dfxa,_0x50dfxb){var _0x50dfx12;return ReportFax[_0x6ce6[33]](_0x50dfxa[_0x6ce6[24]][_0x6ce6[32]])[_0x6ce6[16]](function(_0x50dfx13){_0x50dfx12= _0x50dfx13;if(!_0x50dfx13){return _0x50dfxb[_0x6ce6[25]](404)};var _0x50dfx11=_[_0x6ce6[30]](_0x50dfx13,{rejectedAt:moment()[_0x6ce6[41]](_0x6ce6[40])});return _0x50dfx11[_0x6ce6[31]]()})[_0x6ce6[16]](function(){return FaxRoomStatus[_0x6ce6[39]]({status:_0x6ce6[35],data1:_0x50dfxa[_0x6ce6[28]][_0x6ce6[36]],data2:_0x50dfxa[_0x6ce6[28]][_0x6ce6[37]],UserId:_0x50dfxa[_0x6ce6[28]][_0x6ce6[32]],FaxRoomId:_0x50dfx12[_0x6ce6[38]]})})[_0x6ce6[16]](function(){return _0x50dfxb[_0x6ce6[25]](200)})[_0x6ce6[13]](function(_0x50dfxd){return handleError(_0x50dfxb,_0x50dfxd)})};function handleError(_0x50dfxb,_0x50dfxd){logger[_0x6ce6[43]](_0x50dfxd[_0x6ce6[42]]);return _0x50dfxb[_0x6ce6[15]](500)[_0x6ce6[14]](_0x50dfxd)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_fax/report_fax.events.js b/server/api/report_fax/report_fax.events.js index c6e34f4..66dc905 100644 --- a/server/api/report_fax/report_fax.events.js +++ b/server/api/report_fax/report_fax.events.js @@ -1 +1 @@ -var _0x63c2=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x46\x61\x78","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x63c2[0];const EventEmitter=require(_0x63c2[1]);const ReportFax=require(_0x63c2[3])[_0x63c2[2]];var ReportFaxEvents= new EventEmitter();ReportFaxEvents[_0x63c2[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x63c2[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x63c2[6],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x63c2[7]};for(var e in events){var event=events[e];ReportFax[_0x63c2[8]](e,emitEvent(event))};function emitEvent(event){return function(_0x804dx8,_0x804dx9,_0x804dxa){ReportFaxEvents[_0x63c2[11]](event+ _0x63c2[9]+ _0x804dx8[_0x63c2[10]],_0x804dx8);ReportFaxEvents[_0x63c2[11]](event,_0x804dx8);_0x804dxa(null)}}module[_0x63c2[12]]= ReportFaxEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_fax/report_fax.socket.js b/server/api/report_fax/report_fax.socket.js index f075010..66dc905 100644 --- a/server/api/report_fax/report_fax.socket.js +++ b/server/api/report_fax/report_fax.socket.js @@ -1 +1 @@ -var _0x15de=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x3A\x73\x61\x76\x65","\x6E\x61\x6D\x65","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x72\x6F\x6C\x65","\x61\x67\x65\x6E\x74","\x65\x6D\x69\x74","\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x3A\x75\x70\x64\x61\x74\x65","\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x15de[0];const ReportFaxEvents=require(_0x15de[1]);var events=[_0x15de[2],_0x15de[3],_0x15de[4]];exports[_0x15de[5]]= function(_0xe6b7x3){for(var _0xe6b7x4=0,_0xe6b7x5=events[_0x15de[6]];_0xe6b7x4< _0xe6b7x5;_0xe6b7x4++){var _0xe6b7x6=events[_0xe6b7x4];var _0xe6b7x7=createListener(_0x15de[7]+ _0xe6b7x6,_0xe6b7x3);ReportFaxEvents[_0x15de[8]](_0xe6b7x6,_0xe6b7x7);_0xe6b7x3[_0x15de[8]](_0x15de[9],removeListener(_0xe6b7x6,_0xe6b7x7))}};function createListener(_0xe6b7x6,_0xe6b7x3){return function(_0xe6b7x9){switch(_0xe6b7x6){case _0x15de[10]:;case _0x15de[16]:if(_0xe6b7x3[_0x15de[11]]=== _0xe6b7x9[_0x15de[12]]|| _0xe6b7x3[_0x15de[13]]!== _0x15de[14]){_0xe6b7x3[_0x15de[15]](_0xe6b7x6,_0xe6b7x9)};break;case _0x15de[17]:_0xe6b7x3[_0x15de[15]](_0xe6b7x6,_0xe6b7x9);break;default:}}}function removeListener(_0xe6b7x6,_0xe6b7x7){return function(){ReportFaxEvents[_0x15de[18]](_0xe6b7x6,_0xe6b7x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_fax_session/index.js b/server/api/report_fax_session/index.js index af748d4..66dc905 100644 --- a/server/api/report_fax_session/index.js +++ b/server/api/report_fax_session/index.js @@ -1 +1 @@ -var _0x1de1=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x5F\x73\x65\x73\x73\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x46\x61\x78","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x64\x61\x73\x68\x62\x6F\x61\x72\x64","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x67\x65\x74\x44\x61\x73\x68\x62\x6F\x61\x72\x64\x56\x61\x6C\x75\x65\x73","\x2F\x77\x61\x69\x74\x69\x6E\x67\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x61\x67\x65\x6E\x74","\x77\x61\x69\x74\x69\x6E\x67\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x65\x78\x70\x6F\x72\x74\x73"];_0x1de1[0];var express=require(_0x1de1[1]);var auth=require(_0x1de1[2]);var controller=require(_0x1de1[3]);var license=require(_0x1de1[4]);var router=express.Router();router[_0x1de1[11]](_0x1de1[5],auth[_0x1de1[6]](),license[_0x1de1[7]](),auth[_0x1de1[9]]([17],[_0x1de1[8]]),controller[_0x1de1[10]]);router[_0x1de1[11]](_0x1de1[12],auth[_0x1de1[6]](),license[_0x1de1[7]](),auth[_0x1de1[9]]([17],[_0x1de1[8]]),controller[_0x1de1[13]]);router[_0x1de1[11]](_0x1de1[14],license[_0x1de1[15]](),auth[_0x1de1[6]](),license[_0x1de1[7]](),auth[_0x1de1[9]]([17],[_0x1de1[8]]),controller[_0x1de1[16]]);router[_0x1de1[11]](_0x1de1[17],auth[_0x1de1[6]](),license[_0x1de1[7]](),auth[_0x1de1[9]]([10],[_0x1de1[8],_0x1de1[18]]),controller[_0x1de1[19]]);module[_0x1de1[20]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_fax_session/report_fax_session.controller.js b/server/api/report_fax_session/report_fax_session.controller.js index a674953..66dc905 100644 --- a/server/api/report_fax_session/report_fax_session.controller.js +++ b/server/api/report_fax_session/report_fax_session.controller.js @@ -1 +1 @@ -var _0xd89d=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6D\x6F\x6D\x65\x6E\x74","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x52\x65\x70\x6F\x72\x74\x46\x61\x78\x53\x65\x73\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x52\x65\x70\x6F\x72\x74\x46\x61\x78\x53\x65\x73\x73\x69\x6F\x6E\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x55\x73\x65\x72","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x74\x69\x6D\x65\x6F\x75\x74","\x64\x61\x79","\x73\x74\x61\x72\x74\x4F\x66","\x6D\x65\x72\x67\x65","\x63\x6F\x75\x6E\x74","\x75\x73\x65\x72","\x61\x6C\x6C","\x77\x61\x69\x74\x69\x6E\x67","\x77\x61\x69\x74\x69\x6E\x67\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x67\x65\x74\x44\x61\x73\x68\x62\x6F\x61\x72\x64\x56\x61\x6C\x75\x65\x73","\x6D\x61\x70","\x75\x6E\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x72\x6F\x77\x73","\x67\x65\x74\x46\x61\x78\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x67\x65\x74\x46\x61\x78\x51\x75\x65\x75\x65\x73","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65"];_0xd89d[0];var _=require(_0xd89d[1]);var Util=require(_0xd89d[2]);var moment=require(_0xd89d[3]);var logger=require(_0xd89d[5])(_0xd89d[4]);var ReportFaxSession=require(_0xd89d[7])[_0xd89d[6]];var ReportFaxSessionHistory=require(_0xd89d[7])[_0xd89d[9]][_0xd89d[8]];var User=require(_0xd89d[7])[_0xd89d[10]];function handleError(_0x22acx9,_0x22acxa){_0x22acxa= _0x22acxa|| 500;return function(_0x22acxb){logger[_0xd89d[12]](_0x22acxb[_0xd89d[11]]);_0x22acx9[_0xd89d[14]](_0x22acxa)[_0xd89d[13]](_0x22acxb)}}function responseWithResult(_0x22acx9,_0x22acxa){_0x22acxa= _0x22acxa|| 200;return function(_0x22acxd){if(_0x22acxd){_0x22acx9[_0xd89d[14]](_0x22acxa)[_0xd89d[15]](_0x22acxd)}}}function responseWithoutResult(_0x22acx9,_0x22acxa){_0x22acxa= _0x22acxa|| 204;return function(){_0x22acx9[_0xd89d[16]](_0x22acxa)}}function handleEntityNotFound(_0x22acx9){return function(_0x22acxd){if(!_0x22acxd){_0x22acx9[_0xd89d[14]](404)[_0xd89d[17]]();return null};return _0x22acxd}}function saveUpdates(_0x22acx11){return function(_0x22acxd){return _0x22acxd[_0xd89d[19]](_0x22acx11)[_0xd89d[18]](function(_0x22acx12){return _0x22acx12})}}function removeEntity(_0x22acx9){return function(_0x22acxd){if(_0x22acxd){return _0x22acxd[_0xd89d[20]]()[_0xd89d[18]](function(){_0x22acx9[_0xd89d[14]](204)[_0xd89d[17]]()})}}}exports[_0xd89d[21]]= function(_0x22acx14,_0x22acx9){return ReportFaxSession[_0xd89d[25]](Util[_0xd89d[24]](_0x22acx14[_0xd89d[23]]))[_0xd89d[18]](responseWithResult(_0x22acx9))[_0xd89d[22]](handleError(_0x22acx9))};exports[_0xd89d[26]]= function(_0x22acx14,_0x22acx9){return ReportFaxSession[_0xd89d[29]](_0x22acx14[_0xd89d[28]][_0xd89d[27]])[_0xd89d[18]](handleEntityNotFound(_0x22acx9))[_0xd89d[18]](responseWithResult(_0x22acx9))[_0xd89d[22]](handleError(_0x22acx9))};exports[_0xd89d[30]]= function(_0x22acx14,_0x22acx9){return ReportFaxSession[_0xd89d[30]](_0x22acx14[_0xd89d[31]])[_0xd89d[18]](responseWithResult(_0x22acx9,201))[_0xd89d[22]](handleError(_0x22acx9))};exports[_0xd89d[32]]= function(_0x22acx14,_0x22acx9){if(_0x22acx14[_0xd89d[31]][_0xd89d[27]]){delete _0x22acx14[_0xd89d[31]][_0xd89d[27]]};return ReportFaxSession[_0xd89d[29]](_0x22acx14[_0xd89d[28]][_0xd89d[27]])[_0xd89d[18]](handleEntityNotFound(_0x22acx9))[_0xd89d[18]](saveUpdates(_0x22acx14[_0xd89d[31]]))[_0xd89d[18]](responseWithResult(_0x22acx9))[_0xd89d[22]](handleError(_0x22acx9))};exports[_0xd89d[20]]= function(_0x22acx14,_0x22acx9){return ReportFaxSession[_0xd89d[29]](_0x22acx14[_0xd89d[28]][_0xd89d[27]])[_0xd89d[18]](handleEntityNotFound(_0x22acx9))[_0xd89d[18]](removeEntity(_0x22acx9))[_0xd89d[22]](handleError(_0x22acx9))};exports[_0xd89d[33]]= function(_0x22acx14,_0x22acx9){return ReportFaxSessionHistory[_0xd89d[33]]()[_0xd89d[18]](function(_0x22acx15){return _0x22acx9[_0xd89d[14]](200)[_0xd89d[13]](_0x22acx15)})[_0xd89d[22]](handleError(_0x22acx9))};exports[_0xd89d[34]]= function(_0x22acx14,_0x22acx9){return Promise[_0xd89d[40]]([])[_0xd89d[18]](getFaxQueues(_0x22acx14[_0xd89d[39]]))[_0xd89d[18]](function(_0x22acx17){return ReportFaxSession[_0xd89d[38]](Util[_0xd89d[24]](_0x22acx14[_0xd89d[23]],_[_0xd89d[37]]({timeout:true,createdAt:{$gte:moment()[_0xd89d[36]](_0xd89d[35])}},_0x22acx17)))})[_0xd89d[18]](function(_0x22acx16){return _0x22acx9[_0xd89d[14]](200)[_0xd89d[13]]({value:_0x22acx16})})[_0xd89d[22]](handleError(_0x22acx9))};exports[_0xd89d[41]]= function(_0x22acx14,_0x22acx9){return Promise[_0xd89d[40]]([])[_0xd89d[18]](getFaxQueues(_0x22acx14[_0xd89d[39]]))[_0xd89d[18]](function(_0x22acx17){return ReportFaxSession[_0xd89d[38]](Util[_0xd89d[24]](_0x22acx14[_0xd89d[23]],_[_0xd89d[37]]({leaveAt:null,createdAt:{$gte:moment()[_0xd89d[36]](_0xd89d[35])}},_0x22acx17)))})[_0xd89d[18]](function(_0x22acx16){return _0x22acx9[_0xd89d[14]](200)[_0xd89d[13]]({value:_0x22acx16})})[_0xd89d[22]](handleError(_0x22acx9))};exports[_0xd89d[42]]= function(_0x22acx14,_0x22acx9){return Promise[_0xd89d[40]]([])[_0xd89d[18]](getFaxQueues(_0x22acx14[_0xd89d[39]]))[_0xd89d[18]](function(_0x22acx17){return ReportFaxSession[_0xd89d[25]](Util[_0xd89d[24]](_0x22acx14[_0xd89d[23]],_[_0xd89d[37]]({leaveAt:null},_0x22acx17)))})[_0xd89d[18]](function(_0x22acx16){return _0x22acx9[_0xd89d[14]](200)[_0xd89d[13]]({rows:_0x22acx16})})[_0xd89d[22]](handleError(_0x22acx9))};exports[_0xd89d[43]]= function(_0x22acx14,_0x22acx9){var _0x22acx18={waiting:0,timeout:0};return ReportFaxSession[_0xd89d[38]]({where:{leaveAt:null,createdAt:{$gte:moment()[_0xd89d[36]](_0xd89d[35])}}})[_0xd89d[18]](function(_0x22acx19){if(_0x22acx19){_0x22acx18[_0xd89d[41]]= _0x22acx19};return ReportFaxSession[_0xd89d[38]]({where:{timeout:true,createdAt:{$gte:moment()[_0xd89d[36]](_0xd89d[35])}}})})[_0xd89d[18]](function(_0x22acx19){if(_0x22acx19){_0x22acx18[_0xd89d[34]]= _0x22acx19};return _0x22acx9[_0xd89d[14]](200)[_0xd89d[13]](_0x22acx18)})[_0xd89d[22]](handleError(_0x22acx9))};function getFaxQueues(_0x22acx1b){return function(){switch(_0x22acx1b[_0xd89d[51]]){case _0xd89d[39]:return User[_0xd89d[29]](_0x22acx1b[_0xd89d[27]],{attributes:[_0xd89d[27]]})[_0xd89d[18]](Util[_0xd89d[48]]({},{attributes:[_0xd89d[27]],include:[{raw:true,model:User,attributes:[_0xd89d[27]]}]}))[_0xd89d[18]](function(_0x22acx1c){var _0x22acx1d=[];_0x22acx1c[_0xd89d[47]][_0xd89d[46]](function(_0x22acx1e){_0x22acx1d= _[_0xd89d[45]](_0x22acx1d,_[_0xd89d[44]](_0x22acx1e.Users,_0xd89d[27]))});return {$or:{queue:_[_0xd89d[44]](_0x22acx1c[_0xd89d[47]],_0xd89d[27]),memberid:_0x22acx1d}}});case _0xd89d[50]:return User[_0xd89d[29]](_0x22acx1b[_0xd89d[27]],{attributes:[_0xd89d[27]]})[_0xd89d[18]](function(_0x22acx1f){return _0x22acx1f[_0xd89d[49]]({attributes:[_0xd89d[27]]})})[_0xd89d[18]](function(_0x22acx1c){return {$or:{queue:_[_0xd89d[44]](_0x22acx1c,_0xd89d[27]),memberid:_0x22acx1b[_0xd89d[27]]}}});default:return {}}}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_fax_session/report_fax_session.events.js b/server/api/report_fax_session/report_fax_session.events.js index 153d5d5..66dc905 100644 --- a/server/api/report_fax_session/report_fax_session.events.js +++ b/server/api/report_fax_session/report_fax_session.events.js @@ -1 +1 @@ -var _0xcf34=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x46\x61\x78\x53\x65\x73\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xcf34[0];const EventEmitter=require(_0xcf34[1]);const ReportFaxSession=require(_0xcf34[3])[_0xcf34[2]];var ReportFaxSessionEvents= new EventEmitter();ReportFaxSessionEvents[_0xcf34[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xcf34[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xcf34[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xcf34[6]};for(var e in events){var event=events[e];ReportFaxSession[_0xcf34[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x376cx8,_0x376cx9,_0x376cxa){ReportFaxSessionEvents[_0xcf34[10]](event+ _0xcf34[8]+ _0x376cx8[_0xcf34[9]],_0x376cx8);ReportFaxSessionEvents[_0xcf34[10]](event,_0x376cx8);_0x376cxa(null)}}module[_0xcf34[11]]= ReportFaxSessionEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_fax_session/report_fax_session.socket.js b/server/api/report_fax_session/report_fax_session.socket.js index 483cdf6..66dc905 100644 --- a/server/api/report_fax_session/report_fax_session.socket.js +++ b/server/api/report_fax_session/report_fax_session.socket.js @@ -1 +1 @@ -var _0xf471=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x5F\x73\x65\x73\x73\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6C\x6F\x64\x61\x73\x68","\x62\x6C\x75\x65\x62\x69\x72\x64","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x5F\x73\x65\x73\x73\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x45\x72\x72\x6F\x72\x20\x66\x69\x6C\x74\x65\x72\x69\x6E\x67\x20\x72\x65\x70\x6F\x72\x74\x20\x66\x61\x78\x20\x73\x65\x73\x73\x69\x6F\x6E\x73\x20\x61\x66\x74\x65\x72\x20\x73\x61\x76\x65","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x72\x6F\x6C\x65","\x61\x64\x6D\x69\x6E","\x6D\x65\x6D\x62\x65\x72\x69\x64","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x71\x75\x65\x75\x65","\x65\x6D\x69\x74","\x74\x68\x65\x6E","\x61\x6C\x6C","\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x5F\x73\x65\x73\x73\x69\x6F\x6E\x3A\x73\x61\x76\x65","\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x5F\x73\x65\x73\x73\x69\x6F\x6E\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x69\x64","\x6D\x61\x70","\x75\x6E\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x72\x6F\x77\x73","\x67\x65\x74\x46\x61\x78\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x75\x73\x65\x72\x49\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x67\x65\x74\x46\x61\x78\x51\x75\x65\x75\x65\x73","\x61\x67\x65\x6E\x74"];_0xf471[0];const ReportFaxSession=require(_0xf471[1]);const User=require(_0xf471[3])[_0xf471[2]];const Util=require(_0xf471[4]);const _=require(_0xf471[5]);const Promise=require(_0xf471[6]);var events=[_0xf471[7],_0xf471[8]];exports[_0xf471[9]]= function(_0xa074x7){for(var _0xa074x8=0,_0xa074x9=events[_0xf471[10]];_0xa074x8< _0xa074x9;_0xa074x8++){var _0xa074xa=events[_0xa074x8];var _0xa074xb=createListener(_0xf471[11]+ _0xa074xa,_0xa074x7);ReportFaxSession[_0xf471[12]](_0xa074xa,_0xa074xb);_0xa074x7[_0xf471[12]](_0xf471[13],removeListener(_0xa074xa,_0xa074xb))}};function createListener(_0xa074xa,_0xa074x7){return function(_0xa074xd){switch(_0xa074xa){case _0xf471[25]:return Promise[_0xf471[24]]([])[_0xf471[23]](getFaxQueues(_0xa074x7))[_0xf471[23]](function(_0xa074xf){if(_0xa074x7[_0xf471[17]]=== _0xf471[18]|| _[_0xf471[20]](_0xa074xf[_0xf471[19]],_0xa074xd[_0xf471[19]])|| _[_0xf471[20]](_0xa074xf[_0xf471[21]],_0xa074xd[_0xf471[21]])){_0xa074x7[_0xf471[22]](_0xa074xa,_0xa074xd)}})[_0xf471[16]](function(_0xa074xe){console[_0xf471[15]](_0xf471[14],_0xa074xe)});case _0xf471[26]:_0xa074x7[_0xf471[22]](_0xa074xa,_0xa074xd);break;default:}}}function removeListener(_0xa074xa,_0xa074xb){return function(){ReportFaxSession[_0xf471[27]](_0xa074xa,_0xa074xb)}}function getFaxQueues(_0xa074x12){return function(){switch(_0xa074x12[_0xf471[17]]){case _0xf471[36]:return User[_0xf471[35]](_0xa074x12[_0xf471[34]],{attributes:[_0xf471[28]]})[_0xf471[23]](Util[_0xf471[33]]({},{attributes:[_0xf471[28]],include:[{raw:true,model:User,attributes:[_0xf471[28]]}]}))[_0xf471[23]](function(_0xa074x13){var _0xa074x14=[];_0xa074x13[_0xf471[32]][_0xf471[31]](function(_0xa074x15){_0xa074x14= _[_0xf471[30]](_0xa074x14,_[_0xf471[29]](_0xa074x15.Users,_0xf471[28]))});return {queue:_[_0xf471[29]](_0xa074x13[_0xf471[32]],_0xf471[28]),memberid:_0xa074x14}});case _0xf471[38]:return User[_0xf471[35]](_0xa074x12[_0xf471[34]],{attributes:[_0xf471[28]]})[_0xf471[23]](function(_0xa074x16){return _0xa074x16[_0xf471[37]]({attributes:[_0xf471[28]]})})[_0xf471[23]](function(_0xa074x13){return {queue:_[_0xf471[29]](_0xa074x13,_0xf471[28]),memberid:_0xa074x12[_0xf471[34]]}});default:return {}}}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_integration/index.js b/server/api/report_integration/index.js index 60273c3..66dc905 100644 --- a/server/api/report_integration/index.js +++ b/server/api/report_integration/index.js @@ -1 +1 @@ -var _0x67d0=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x2F\x3A\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x65\x78\x70\x6F\x72\x74\x73"];_0x67d0[0];var express=require(_0x67d0[1]);var controller=require(_0x67d0[2]);var auth=require(_0x67d0[3]);var router=express.Router();router[_0x67d0[9]](_0x67d0[4],auth[_0x67d0[5]](),auth[_0x67d0[7]]([17],[_0x67d0[6]]),controller[_0x67d0[8]]);router[_0x67d0[9]](_0x67d0[10],auth[_0x67d0[5]](),auth[_0x67d0[7]]([17],[_0x67d0[6]]),controller[_0x67d0[11]]);router[_0x67d0[13]](_0x67d0[4],controller[_0x67d0[12]]);router[_0x67d0[13]](_0x67d0[14],controller[_0x67d0[12]]);module[_0x67d0[15]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_integration/report_integration.controller.js b/server/api/report_integration/report_integration.controller.js index 51cb66c..66dc905 100644 --- a/server/api/report_integration/report_integration.controller.js +++ b/server/api/report_integration/report_integration.controller.js @@ -1 +1 @@ -var _0xdd95=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x52\x65\x70\x6F\x72\x74\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x52\x65\x70\x6F\x72\x74\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x75\x74\x69\x6C","\x6D\x6F\x6D\x65\x6E\x74","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x63\x72\x65\x61\x74\x65","\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x70\x61\x72\x61\x6D\x73","\x62\x6F\x64\x79","\x74\x69\x63\x6B\x65\x74\x49\x64","\x69\x64\x5F\x73\x70\x6F\x6F\x6C\x65\x72","\x65\x76\x65\x6E\x74\x43\x68\x61\x6E\x6E\x65\x6C","\x76\x6F\x69\x63\x65","\x64\x65\x73\x74\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x75\x6D","\x6E\x75\x6D\x62\x65\x72","\x71\x75\x65\x75\x65","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x6C\x69\x6E\x6B\x65\x64\x5F\x63\x68\x61\x6E\x6E\x65\x6C","\x73\x70\x6C\x69\x74","\x63\x68\x61\x6E\x6E\x65\x6C","\x61\x67\x65\x6E\x74\x63\x6F\x6E\x6E\x65\x63\x74\x41\x74","\x74\x69\x6D\x65\x73\x74\x61\x6D\x70","\x72\x65\x70\x6F\x72\x74\x5F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x3A\x74\x64\x44\x69\x73\x70\x6F\x73\x61\x6C","\x65\x6D\x69\x74","\x61\x67\x65\x6E\x74\x3A\x25\x73","\x66\x6F\x72\x6D\x61\x74","\x74\x6F","\x69\x6F","\x6C\x6F\x63\x61\x6C\x73","\x61\x70\x70","\x74\x64\x44\x69\x73\x70\x6F\x73\x61\x6C","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0xdd95[0];var _=require(_0xdd95[1]);var ReportIntegration=require(_0xdd95[3])[_0xdd95[2]];var ReportIntegrationHistory=require(_0xdd95[3])[_0xdd95[5]][_0xdd95[4]];var Util=require(_0xdd95[6]);var util=require(_0xdd95[7]);var moment=require(_0xdd95[8]);var logger=require(_0xdd95[10])(_0xdd95[9]);exports[_0xdd95[11]]= function(_0xa009x8,_0xa009x9,_0xa009xa){return ReportIntegration[_0xdd95[18]](Util[_0xdd95[17]](_0xa009x8[_0xdd95[16]]))[_0xdd95[15]](function(_0xa009xc){return _0xa009x9[_0xdd95[14]](200)[_0xdd95[13]](_0xa009xc)})[_0xdd95[12]](function(_0xa009xb){return handleError(_0xa009x9,_0xa009xb)})};exports[_0xdd95[19]]= function(_0xa009x8,_0xa009x9){return ReportIntegrationHistory[_0xdd95[19]]()[_0xdd95[15]](function(_0xa009xd){return _0xa009x9[_0xdd95[14]](200)[_0xdd95[13]](_0xa009xd)})[_0xdd95[12]](function(_0xa009xb){return handleError(_0xa009x9,_0xa009xb)})};exports[_0xdd95[20]]= function(_0xa009x8,_0xa009x9){if(_0xa009x8[_0xdd95[22]][_0xdd95[21]]){_0xa009x8[_0xdd95[23]][_0xdd95[21]]= _0xa009x8[_0xdd95[22]][_0xdd95[21]];switch(_0xa009x8[_0xdd95[22]][_0xdd95[21]]){case _0xdd95[45]:_0xa009x8[_0xdd95[23]][_0xdd95[24]]= _0xa009x8[_0xdd95[23]][_0xdd95[25]];_0xa009x8[_0xdd95[23]][_0xdd95[26]]= _0xdd95[27];_0xa009x8[_0xdd95[23]][_0xdd95[28]]= _0xa009x8[_0xdd95[23]][_0xdd95[29]];if(_0xa009x8[_0xdd95[23]][_0xdd95[30]]){_0xa009x8[_0xdd95[23]][_0xdd95[31]]= _0xa009x8[_0xdd95[23]][_0xdd95[32]]?_0xa009x8[_0xdd95[23]][_0xdd95[32]][_0xdd95[33]](/\/|-/)[1]:null}else {_0xa009x8[_0xdd95[23]][_0xdd95[31]]= _0xa009x8[_0xdd95[23]][_0xdd95[34]]?_0xa009x8[_0xdd95[23]][_0xdd95[34]][_0xdd95[33]](/\/|-/)[1]:null};_0xa009x8[_0xdd95[23]][_0xdd95[35]]= moment(_0xa009x8[_0xdd95[23]][_0xdd95[36]]);_0xa009x8[_0xdd95[44]][_0xdd95[43]][_0xdd95[42]][_0xdd95[41]](util[_0xdd95[40]](_0xdd95[39],_0xa009x8[_0xdd95[23]][_0xdd95[31]]))[_0xdd95[38]](_0xdd95[37],_0xa009x8[_0xdd95[23]]);break;default:return _0xa009x9[_0xdd95[46]](404)}};return ReportIntegration[_0xdd95[20]](_0xa009x8[_0xdd95[23]])[_0xdd95[15]](function(_0xa009xe){return _0xa009x9[_0xdd95[14]](201)[_0xdd95[13]](_0xa009xe)})[_0xdd95[12]](function(_0xa009xb){return handleError(_0xa009x9,_0xa009xb)})};function handleError(_0xa009x9,_0xa009xb){logger[_0xdd95[48]](_0xa009xb[_0xdd95[47]]);return _0xa009x9[_0xdd95[14]](500)[_0xdd95[13]](_0xa009xb)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_integration/report_integration.events.js b/server/api/report_integration/report_integration.events.js index ed73cb9..66dc905 100644 --- a/server/api/report_integration/report_integration.events.js +++ b/server/api/report_integration/report_integration.events.js @@ -1 +1 @@ -var _0x17b8=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x17b8[0];const EventEmitter=require(_0x17b8[1]);const ReportIntegration=require(_0x17b8[3])[_0x17b8[2]];var ReportIntegrationEvents= new EventEmitter();ReportIntegrationEvents[_0x17b8[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x17b8[5]};for(var e in events){var event=events[e];ReportIntegration[_0x17b8[6]](e,emitEvent(event))};function emitEvent(event){return function(_0xbef9x8,_0xbef9x9,_0xbef9xa){ReportIntegrationEvents[_0x17b8[9]](event+ _0x17b8[7]+ _0xbef9x8[_0x17b8[8]],_0xbef9x8);ReportIntegrationEvents[_0x17b8[9]](event,_0xbef9x8);_0xbef9xa(null)}}module[_0x17b8[10]]= ReportIntegrationEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_integration/report_integration.socket.js b/server/api/report_integration/report_integration.socket.js index 0fe9b20..66dc905 100644 --- a/server/api/report_integration/report_integration.socket.js +++ b/server/api/report_integration/report_integration.socket.js @@ -1 +1 @@ -var _0x2e80=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x75\x74\x69\x6C","\x73\x61\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x6E\x61\x6D\x65","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x72\x65\x70\x6F\x72\x74\x5F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x3A\x25\x73","\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x66\x6F\x72\x6D\x61\x74","\x65\x6D\x69\x74","\x74\x64\x44\x69\x73\x70\x6F\x73\x61\x6C","\x72\x65\x70\x6F\x72\x74\x5F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x3A\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x2e80[0];const ReportIntegrationEvents=require(_0x2e80[1]);const util=require(_0x2e80[2]);var events=[_0x2e80[3]];exports[_0x2e80[4]]= function(_0xa1acx4){for(var _0xa1acx5=0,_0xa1acx6=events[_0x2e80[5]];_0xa1acx5< _0xa1acx6;_0xa1acx5++){var _0xa1acx7=events[_0xa1acx5];var _0xa1acx8=createListener(_0x2e80[6]+ _0xa1acx7,_0xa1acx4);ReportIntegrationEvents[_0x2e80[7]](_0xa1acx7,_0xa1acx8);_0xa1acx4[_0x2e80[7]](_0x2e80[8],removeListener(_0xa1acx7,_0xa1acx8))}};function createListener(_0xa1acx7,_0xa1acx4){return function(_0xa1acxa){switch(_0xa1acx7){case _0x2e80[16]:if(_0xa1acx4[_0x2e80[9]]=== _0xa1acxa[_0x2e80[10]]){switch(_0xa1acxa[_0x2e80[12]]){case _0x2e80[15]:_0xa1acx4[_0x2e80[14]](util[_0x2e80[13]](_0x2e80[11],_0xa1acxa[_0x2e80[12]]),_0xa1acxa);break;default:}};break;default:}}}function removeListener(_0xa1acx7,_0xa1acx8){return function(){ReportIntegrationEvents[_0x2e80[17]](_0xa1acx7,_0xa1acx8)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_mail/index.js b/server/api/report_mail/index.js index aaa2754..66dc905 100644 --- a/server/api/report_mail/index.js +++ b/server/api/report_mail/index.js @@ -1 +1 @@ -var _0xc708=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x4D\x61\x69\x6C","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64\x2F\x61\x63\x63\x65\x70\x74\x2F\x3A\x75\x6E\x69\x71\x75\x65\x69\x64","\x68\x61\x73\x52\x6F\x6C\x65","\x61\x63\x63\x65\x70\x74","\x2F\x3A\x69\x64\x2F\x72\x65\x6A\x65\x63\x74","\x72\x65\x6A\x65\x63\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xc708[0];var express=require(_0xc708[1]);var controller=require(_0xc708[2]);var auth=require(_0xc708[3]);var license=require(_0xc708[4]);var router=express.Router();router[_0xc708[12]](_0xc708[5],auth[_0xc708[6]](),license[_0xc708[7]](),auth[_0xc708[10]]([17],[_0xc708[8],_0xc708[9]]),controller[_0xc708[11]]);router[_0xc708[12]](_0xc708[13],auth[_0xc708[6]](),license[_0xc708[7]](),auth[_0xc708[14]](_0xc708[9]),controller[_0xc708[15]]);router[_0xc708[12]](_0xc708[16],auth[_0xc708[6]](),license[_0xc708[7]](),auth[_0xc708[14]](_0xc708[9]),controller[_0xc708[17]]);module[_0xc708[18]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_mail/report_mail.controller.js b/server/api/report_mail/report_mail.controller.js index 21d5860..66dc905 100644 --- a/server/api/report_mail/report_mail.controller.js +++ b/server/api/report_mail/report_mail.controller.js @@ -1 +1 @@ -var _0x2a23=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x52\x65\x70\x6F\x72\x74\x4D\x61\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x53\x74\x61\x74\x75\x73","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x69\x6E\x64\x65\x78","\x72\x6F\x6C\x65","\x75\x73\x65\x72","\x61\x67\x65\x6E\x74","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x6E\x61\x6D\x65","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x61\x63\x63\x65\x70\x74","\x2E","\x73\x70\x6C\x69\x74","\x75\x6E\x69\x71\x75\x65\x69\x64","\x70\x61\x72\x61\x6D\x73","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x4F\x50\x45\x4E","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x69\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x72\x65\x6A\x65\x63\x74","\x52\x45\x4A\x45\x43\x54","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x72\x6F\x6F\x6D\x69\x64","\x63\x72\x65\x61\x74\x65","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0x2a23[0];var _=require(_0x2a23[1]);var moment=require(_0x2a23[2]);var Report=require(_0x2a23[4])[_0x2a23[3]];var Room=require(_0x2a23[4])[_0x2a23[5]];var Status=require(_0x2a23[4])[_0x2a23[6]];var sequelize=require(_0x2a23[4])[_0x2a23[7]];var Util=require(_0x2a23[8]);var logger=require(_0x2a23[10])(_0x2a23[9]);exports[_0x2a23[11]]= function(_0xced7x9,_0xced7xa,_0xced7xb){var _0xced7xc={};if(_0xced7x9[_0x2a23[13]][_0x2a23[12]]=== _0x2a23[14]){_0xced7xc[_0x2a23[15]]= _0xced7x9[_0x2a23[13]][_0x2a23[16]]};return Report[_0x2a23[23]](Util[_0x2a23[22]](_0xced7x9[_0x2a23[21]],_0xced7xc))[_0x2a23[20]](function(_0xced7xe){_0xced7xa[_0x2a23[19]](200)[_0x2a23[18]](_0xced7xe)})[_0x2a23[17]](function(_0xced7xd){return handleError(_0xced7xa,_0xced7xd)})};exports[_0x2a23[24]]= function(_0xced7x9,_0xced7xa){var _0xced7xf=_0xced7x9[_0x2a23[28]][_0x2a23[27]][_0x2a23[26]](_0x2a23[25])[1];return Report[_0x2a23[35]](_0xced7x9[_0x2a23[28]][_0x2a23[34]])[_0x2a23[20]](function(_0xced7x10){if(!_0xced7x10){return _0xced7xa[_0x2a23[29]](404)};var _0xced7x11=_[_0x2a23[32]](_0xced7x10,{connectid:_0xced7x9[_0x2a23[28]][_0x2a23[27]]});return _0xced7x11[_0x2a23[33]]()})[_0x2a23[20]](function(){return Room[_0x2a23[31]]({status:_0x2a23[30],openReason:_0x2a23[14]},{where:{id:_0xced7xf},user:_0xced7x9[_0x2a23[13]],individualHooks:true})})[_0x2a23[20]](function(){return _0xced7xa[_0x2a23[29]](200)})[_0x2a23[17]](sequelize.UniqueConstraintError,function(_0xced7xd){return _0xced7xa[_0x2a23[29]](504)})[_0x2a23[17]](function(_0xced7xd){return handleError(_0xced7xa,_0xced7xd)})};exports[_0x2a23[36]]= function(_0xced7x9,_0xced7xa){var _0xced7x12;return Report[_0x2a23[35]](_0xced7x9[_0x2a23[28]][_0x2a23[34]])[_0x2a23[20]](function(_0xced7x13){_0xced7x12= _0xced7x13;if(!_0xced7x12){return _0xced7xa[_0x2a23[29]](404)};var _0xced7x11=_[_0x2a23[32]](_0xced7x13,{rejectedAt:moment()[_0x2a23[42]](_0x2a23[41])});return _0xced7x11[_0x2a23[33]]()})[_0x2a23[20]](function(){return Status[_0x2a23[40]]({status:_0x2a23[37],data1:_0xced7x9[_0x2a23[13]][_0x2a23[16]],data2:_0xced7x9[_0x2a23[13]][_0x2a23[38]],UserId:_0xced7x9[_0x2a23[13]][_0x2a23[34]],MailRoomId:_0xced7x12[_0x2a23[39]]})})[_0x2a23[20]](function(){return _0xced7xa[_0x2a23[29]](200)})[_0x2a23[17]](function(_0xced7xd){return handleError(_0xced7xa,_0xced7xd)})};function handleError(_0xced7xa,_0xced7xd){logger[_0x2a23[44]](_0xced7xd[_0x2a23[43]]);return _0xced7xa[_0x2a23[19]](500)[_0x2a23[18]](_0xced7xd)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_mail/report_mail.events.js b/server/api/report_mail/report_mail.events.js index 0ab9491..66dc905 100644 --- a/server/api/report_mail/report_mail.events.js +++ b/server/api/report_mail/report_mail.events.js @@ -1 +1 @@ -var _0x231a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x4D\x61\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x231a[0];const EventEmitter=require(_0x231a[1]);const ReportMail=require(_0x231a[3])[_0x231a[2]];var ReportMailEvents= new EventEmitter();ReportMailEvents[_0x231a[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x231a[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x231a[6],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x231a[7]};for(var e in events){var event=events[e];ReportMail[_0x231a[8]](e,emitEvent(event))};function emitEvent(event){return function(_0x5094x8,_0x5094x9,_0x5094xa){ReportMailEvents[_0x231a[11]](event+ _0x231a[9]+ _0x5094x8[_0x231a[10]],_0x5094x8);ReportMailEvents[_0x231a[11]](event,_0x5094x8);_0x5094xa(null)}}module[_0x231a[12]]= ReportMailEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_mail/report_mail.socket.js b/server/api/report_mail/report_mail.socket.js index 7705bfc..66dc905 100644 --- a/server/api/report_mail/report_mail.socket.js +++ b/server/api/report_mail/report_mail.socket.js @@ -1 +1 @@ -var _0x9a85=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x3A\x73\x61\x76\x65","\x6E\x61\x6D\x65","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x72\x6F\x6C\x65","\x61\x64\x6D\x69\x6E","\x65\x6D\x69\x74","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x3A\x75\x70\x64\x61\x74\x65","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x9a85[0];const ReportMailEvents=require(_0x9a85[1]);var events=[_0x9a85[2],_0x9a85[3],_0x9a85[4]];exports[_0x9a85[5]]= function(_0xc82dx3){for(var _0xc82dx4=0,_0xc82dx5=events[_0x9a85[6]];_0xc82dx4< _0xc82dx5;_0xc82dx4++){var _0xc82dx6=events[_0xc82dx4];var _0xc82dx7=createListener(_0x9a85[7]+ _0xc82dx6,_0xc82dx3);ReportMailEvents[_0x9a85[8]](_0xc82dx6,_0xc82dx7);_0xc82dx3[_0x9a85[8]](_0x9a85[9],removeListener(_0xc82dx6,_0xc82dx7))}};function createListener(_0xc82dx6,_0xc82dx3){return function(_0xc82dx9){switch(_0xc82dx6){case _0x9a85[10]:;case _0x9a85[16]:if(_0xc82dx3[_0x9a85[11]]=== _0xc82dx9[_0x9a85[12]]|| _0xc82dx3[_0x9a85[13]]=== _0x9a85[14]){_0xc82dx3[_0x9a85[15]](_0xc82dx6,_0xc82dx9)};break;case _0x9a85[17]:_0xc82dx3[_0x9a85[15]](_0xc82dx6,_0xc82dx9);break;default:}}}function removeListener(_0xc82dx6,_0xc82dx7){return function(){ReportMailEvents[_0x9a85[18]](_0xc82dx6,_0xc82dx7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_mail_session/index.js b/server/api/report_mail_session/index.js index d36fad2..66dc905 100644 --- a/server/api/report_mail_session/index.js +++ b/server/api/report_mail_session/index.js @@ -1 +1 @@ -var _0xd994=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x4D\x61\x69\x6C","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x64\x61\x73\x68\x62\x6F\x61\x72\x64","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x67\x65\x74\x44\x61\x73\x68\x62\x6F\x61\x72\x64\x56\x61\x6C\x75\x65\x73","\x2F\x77\x61\x69\x74\x69\x6E\x67\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x61\x67\x65\x6E\x74","\x77\x61\x69\x74\x69\x6E\x67\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x65\x78\x70\x6F\x72\x74\x73"];_0xd994[0];var express=require(_0xd994[1]);var controller=require(_0xd994[2]);var auth=require(_0xd994[3]);var license=require(_0xd994[4]);var router=express.Router();router[_0xd994[11]](_0xd994[5],auth[_0xd994[6]](),license[_0xd994[7]](),auth[_0xd994[9]]([17],[_0xd994[8]]),controller[_0xd994[10]]);router[_0xd994[11]](_0xd994[12],auth[_0xd994[6]](),license[_0xd994[7]](),auth[_0xd994[9]]([17],[_0xd994[8]]),controller[_0xd994[13]]);router[_0xd994[11]](_0xd994[14],license[_0xd994[15]](),auth[_0xd994[6]](),license[_0xd994[7]](),auth[_0xd994[9]]([17],[_0xd994[8]]),controller[_0xd994[16]]);router[_0xd994[11]](_0xd994[17],auth[_0xd994[6]](),license[_0xd994[7]](),auth[_0xd994[9]]([9],[_0xd994[8],_0xd994[18]]),controller[_0xd994[19]]);module[_0xd994[20]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_mail_session/report_mail_session.controller.js b/server/api/report_mail_session/report_mail_session.controller.js index e945a4d..66dc905 100644 --- a/server/api/report_mail_session/report_mail_session.controller.js +++ b/server/api/report_mail_session/report_mail_session.controller.js @@ -1 +1 @@ -var _0x4509=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x52\x65\x70\x6F\x72\x74\x4D\x61\x69\x6C\x53\x65\x73\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x52\x65\x70\x6F\x72\x74\x4D\x61\x69\x6C\x53\x65\x73\x73\x69\x6F\x6E\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x55\x73\x65\x72","\x62\x6C\x75\x65\x62\x69\x72\x64","\x6D\x6F\x6D\x65\x6E\x74","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x69\x64","\x6D\x61\x70","\x75\x6E\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x72\x6F\x77\x73","\x67\x65\x74\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x67\x65\x74\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65","\x74\x69\x6D\x65\x6F\x75\x74","\x64\x61\x79","\x73\x74\x61\x72\x74\x4F\x66","\x6D\x65\x72\x67\x65","\x63\x6F\x75\x6E\x74","\x61\x6C\x6C","\x77\x61\x69\x74\x69\x6E\x67","\x77\x61\x69\x74\x69\x6E\x67\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x66\x69\x6E\x64\x41\x6C\x6C","\x67\x65\x74\x44\x61\x73\x68\x62\x6F\x61\x72\x64\x56\x61\x6C\x75\x65\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0x4509[0];var _=require(_0x4509[1]);var ReportMailSession=require(_0x4509[3])[_0x4509[2]];var ReportMailSessionHistory=require(_0x4509[3])[_0x4509[5]][_0x4509[4]];var Util=require(_0x4509[6]);var User=require(_0x4509[3])[_0x4509[7]];var Promise=require(_0x4509[8]);var moment=require(_0x4509[9]);var logger=require(_0x4509[11])(_0x4509[10]);exports[_0x4509[12]]= function(_0x7a46x9,_0x7a46xa,_0x7a46xb){return ReportMailSession[_0x4509[19]](Util[_0x4509[18]](_0x7a46x9[_0x4509[17]]))[_0x4509[16]](function(_0x7a46xd){_0x7a46xa[_0x4509[15]](200)[_0x4509[14]](_0x7a46xd)})[_0x4509[13]](function(_0x7a46xc){return handleError(_0x7a46xa,_0x7a46xc)})};exports[_0x4509[20]]= function(_0x7a46x9,_0x7a46xa){return ReportMailSession[_0x4509[20]]()[_0x4509[16]](function(_0x7a46xe){return _0x7a46xa[_0x4509[15]](200)[_0x4509[14]](_0x7a46xe)})[_0x4509[13]](function(_0x7a46xc){return handleError(_0x7a46xa,_0x7a46xc)})};function getMailQueues(_0x7a46x10){return function(){switch(_0x7a46x10[_0x4509[31]]){case _0x4509[28]:return User[_0x4509[27]](_0x7a46x10[_0x4509[21]],{attributes:[_0x4509[21]]})[_0x4509[16]](Util[_0x4509[26]]({},{attributes:[_0x4509[21]],include:[{raw:true,model:User,attributes:[_0x4509[21]]}]}))[_0x4509[16]](function(_0x7a46x11){var _0x7a46x12=[];_0x7a46x11[_0x4509[25]][_0x4509[24]](function(_0x7a46x13){_0x7a46x12= _[_0x4509[23]](_0x7a46x12,_[_0x4509[22]](_0x7a46x13.Users,_0x4509[21]))});return {$or:{queue:_[_0x4509[22]](_0x7a46x11[_0x4509[25]],_0x4509[21]),memberid:_0x7a46x12}}});case _0x4509[30]:return User[_0x4509[27]](_0x7a46x10[_0x4509[21]],{attributes:[_0x4509[21]]})[_0x4509[16]](function(_0x7a46x14){return _0x7a46x14[_0x4509[29]]({attributes:[_0x4509[21]]})})[_0x4509[16]](function(_0x7a46x11){return {$or:{queue:_[_0x4509[22]](_0x7a46x11,_0x4509[21]),memberid:_0x7a46x10[_0x4509[21]]}}});default:return {}}}}exports[_0x4509[32]]= function(_0x7a46x9,_0x7a46xa){return Promise[_0x4509[37]]([])[_0x4509[16]](getMailQueues(_0x7a46x9[_0x4509[28]]))[_0x4509[16]](function(_0x7a46x16){return ReportMailSession[_0x4509[36]](Util[_0x4509[18]](_0x7a46x9[_0x4509[17]],_[_0x4509[35]]({timeout:true,createdAt:{$gte:moment()[_0x4509[34]](_0x4509[33])}},_0x7a46x16)))})[_0x4509[16]](function(_0x7a46x15){return _0x7a46xa[_0x4509[15]](200)[_0x4509[14]]({value:_0x7a46x15})})[_0x4509[13]](function(_0x7a46xc){return handleError(_0x7a46xa,_0x7a46xc)})};exports[_0x4509[38]]= function(_0x7a46x9,_0x7a46xa){return Promise[_0x4509[37]]([])[_0x4509[16]](getMailQueues(_0x7a46x9[_0x4509[28]]))[_0x4509[16]](function(_0x7a46x16){return ReportMailSession[_0x4509[36]](Util[_0x4509[18]](_0x7a46x9[_0x4509[17]],_[_0x4509[35]]({leaveAt:null,createdAt:{$gte:moment()[_0x4509[34]](_0x4509[33])}},_0x7a46x16)))})[_0x4509[16]](function(_0x7a46x15){return _0x7a46xa[_0x4509[15]](200)[_0x4509[14]]({value:_0x7a46x15})})[_0x4509[13]](function(_0x7a46xc){return handleError(_0x7a46xa,_0x7a46xc)})};exports[_0x4509[39]]= function(_0x7a46x9,_0x7a46xa){return Promise[_0x4509[37]]([])[_0x4509[16]](getMailQueues(_0x7a46x9[_0x4509[28]]))[_0x4509[16]](function(_0x7a46x16){return ReportMailSession[_0x4509[40]](Util[_0x4509[18]](_0x7a46x9[_0x4509[17]],_[_0x4509[35]]({leaveAt:null},_0x7a46x16)))})[_0x4509[16]](function(_0x7a46x15){return _0x7a46xa[_0x4509[15]](200)[_0x4509[14]]({rows:_0x7a46x15})})[_0x4509[13]](function(_0x7a46xc){return handleError(_0x7a46xa,_0x7a46xc)})};exports[_0x4509[41]]= function(_0x7a46x9,_0x7a46xa){var _0x7a46x17={waiting:0,timeout:0};return ReportMailSession[_0x4509[36]]({where:{leaveAt:null,createdAt:{$gte:moment()[_0x4509[34]](_0x4509[33])}}})[_0x4509[16]](function(_0x7a46xd){if(_0x7a46xd){_0x7a46x17[_0x4509[38]]= _0x7a46xd};return ReportMailSession[_0x4509[36]]({where:{timeout:true,createdAt:{$gte:moment()[_0x4509[34]](_0x4509[33])}}})})[_0x4509[16]](function(_0x7a46xd){if(_0x7a46xd){_0x7a46x17[_0x4509[32]]= _0x7a46xd};return _0x7a46xa[_0x4509[15]](200)[_0x4509[14]](_0x7a46x17)})[_0x4509[13]](function(_0x7a46xc){return handleError(_0x7a46xa,_0x7a46xc)})};function handleError(_0x7a46xa,_0x7a46xc){logger[_0x4509[43]](_0x7a46xc[_0x4509[42]]);return _0x7a46xa[_0x4509[15]](500)[_0x4509[14]](_0x7a46xc)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_mail_session/report_mail_session.events.js b/server/api/report_mail_session/report_mail_session.events.js index da89d07..66dc905 100644 --- a/server/api/report_mail_session/report_mail_session.events.js +++ b/server/api/report_mail_session/report_mail_session.events.js @@ -1 +1 @@ -var _0xa385=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x4D\x61\x69\x6C\x53\x65\x73\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xa385[0];const EventEmitter=require(_0xa385[1]);const ReportMailSession=require(_0xa385[3])[_0xa385[2]];var ReportMailSessionEvents= new EventEmitter();ReportMailSessionEvents[_0xa385[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xa385[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xa385[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xa385[6]};for(var e in events){var event=events[e];ReportMailSession[_0xa385[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xf799x8,_0xf799x9,_0xf799xa){ReportMailSessionEvents[_0xa385[10]](event+ _0xa385[8]+ _0xf799x8[_0xa385[9]],_0xf799x8);ReportMailSessionEvents[_0xa385[10]](event,_0xf799x8);_0xf799xa(null)}}module[_0xa385[11]]= ReportMailSessionEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_mail_session/report_mail_session.socket.js b/server/api/report_mail_session/report_mail_session.socket.js index 88702c3..66dc905 100644 --- a/server/api/report_mail_session/report_mail_session.socket.js +++ b/server/api/report_mail_session/report_mail_session.socket.js @@ -1 +1 @@ -var _0xc9fc=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6C\x6F\x64\x61\x73\x68","\x62\x6C\x75\x65\x62\x69\x72\x64","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x45\x72\x72\x6F\x72\x20\x66\x69\x6C\x74\x65\x72\x69\x6E\x67\x20\x72\x65\x70\x6F\x72\x74\x20\x6D\x61\x69\x6C\x20\x73\x65\x73\x73\x69\x6F\x6E\x73\x20\x61\x66\x74\x65\x72\x20\x73\x61\x76\x65","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x72\x6F\x6C\x65","\x61\x64\x6D\x69\x6E","\x6D\x65\x6D\x62\x65\x72\x69\x64","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x71\x75\x65\x75\x65","\x65\x6D\x69\x74","\x74\x68\x65\x6E","\x61\x6C\x6C","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E\x3A\x73\x61\x76\x65","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x69\x64","\x6D\x61\x70","\x75\x6E\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x72\x6F\x77\x73","\x67\x65\x74\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x75\x73\x65\x72\x49\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x67\x65\x74\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73","\x61\x67\x65\x6E\x74"];_0xc9fc[0];const ReportMailSessionEvents=require(_0xc9fc[1]);const User=require(_0xc9fc[3])[_0xc9fc[2]];const Util=require(_0xc9fc[4]);const _=require(_0xc9fc[5]);const Promise=require(_0xc9fc[6]);var events=[_0xc9fc[7],_0xc9fc[8]];exports[_0xc9fc[9]]= function(_0x152dx7){for(var _0x152dx8=0,_0x152dx9=events[_0xc9fc[10]];_0x152dx8< _0x152dx9;_0x152dx8++){var _0x152dxa=events[_0x152dx8];var _0x152dxb=createListener(_0xc9fc[11]+ _0x152dxa,_0x152dx7);ReportMailSessionEvents[_0xc9fc[12]](_0x152dxa,_0x152dxb);_0x152dx7[_0xc9fc[12]](_0xc9fc[13],removeListener(_0x152dxa,_0x152dxb))}};function createListener(_0x152dxa,_0x152dx7){return function(_0x152dxd){switch(_0x152dxa){case _0xc9fc[25]:return Promise[_0xc9fc[24]]([])[_0xc9fc[23]](getMailQueues(_0x152dx7))[_0xc9fc[23]](function(_0x152dxf){if(_0x152dx7[_0xc9fc[17]]=== _0xc9fc[18]|| _[_0xc9fc[20]](_0x152dxf[_0xc9fc[19]],_0x152dxd[_0xc9fc[19]])|| _[_0xc9fc[20]](_0x152dxf[_0xc9fc[21]],_0x152dxd[_0xc9fc[21]])){_0x152dx7[_0xc9fc[22]](_0x152dxa,_0x152dxd)}})[_0xc9fc[16]](function(_0x152dxe){console[_0xc9fc[15]](_0xc9fc[14],_0x152dxe)});case _0xc9fc[26]:_0x152dx7[_0xc9fc[22]](_0x152dxa,_0x152dxd);break;default:}}}function removeListener(_0x152dxa,_0x152dxb){return function(){ReportMailSessionEvents[_0xc9fc[27]](_0x152dxa,_0x152dxb)}}function getMailQueues(_0x152dx12){return function(){switch(_0x152dx12[_0xc9fc[17]]){case _0xc9fc[36]:return User[_0xc9fc[35]](_0x152dx12[_0xc9fc[34]],{attributes:[_0xc9fc[28]]})[_0xc9fc[23]](Util[_0xc9fc[33]]({},{attributes:[_0xc9fc[28]],include:[{raw:true,model:User,attributes:[_0xc9fc[28]]}]}))[_0xc9fc[23]](function(_0x152dx13){var _0x152dx14=[];_0x152dx13[_0xc9fc[32]][_0xc9fc[31]](function(_0x152dx15){_0x152dx14= _[_0xc9fc[30]](_0x152dx14,_[_0xc9fc[29]](_0x152dx15.Users,_0xc9fc[28]))});return {queue:_[_0xc9fc[29]](_0x152dx13[_0xc9fc[32]],_0xc9fc[28]),memberid:_0x152dx14}});case _0xc9fc[38]:return User[_0xc9fc[35]](_0x152dx12[_0xc9fc[34]],{attributes:[_0xc9fc[28]]})[_0xc9fc[23]](function(_0x152dx16){return _0x152dx16[_0xc9fc[37]]({attributes:[_0xc9fc[28]]})})[_0xc9fc[23]](function(_0x152dx13){return {queue:_[_0xc9fc[29]](_0x152dx13,_0xc9fc[28]),memberid:_0x152dx12[_0xc9fc[34]]}});default:return {}}}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_member/index.js b/server/api/report_member/index.js index dfa1967..66dc905 100644 --- a/server/api/report_member/index.js +++ b/server/api/report_member/index.js @@ -1 +1 @@ -var _0x4c1a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6D\x65\x6D\x62\x65\x72\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x4c1a[0];var express=require(_0x4c1a[1]);var controller=require(_0x4c1a[2]);var auth=require(_0x4c1a[3]);var router=express.Router();router[_0x4c1a[9]](_0x4c1a[4],auth[_0x4c1a[5]](),auth[_0x4c1a[7]]([17],[_0x4c1a[6]]),controller[_0x4c1a[8]]);router[_0x4c1a[9]](_0x4c1a[10],auth[_0x4c1a[5]](),auth[_0x4c1a[7]]([17],[_0x4c1a[6]]),controller[_0x4c1a[11]]);module[_0x4c1a[12]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_member/report_member.controller.js b/server/api/report_member/report_member.controller.js index 05e1952..66dc905 100644 --- a/server/api/report_member/report_member.controller.js +++ b/server/api/report_member/report_member.controller.js @@ -1 +1 @@ -var _0x27e6=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x52\x65\x70\x6F\x72\x74\x4D\x65\x6D\x62\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x52\x65\x70\x6F\x72\x74\x4D\x65\x6D\x62\x65\x72\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0x27e6[0];var _=require(_0x27e6[1]);var ReportMember=require(_0x27e6[3])[_0x27e6[2]];var ReportMemberHistory=require(_0x27e6[3])[_0x27e6[5]][_0x27e6[4]];var Util=require(_0x27e6[6]);var logger=require(_0x27e6[8])(_0x27e6[7]);exports[_0x27e6[9]]= function(_0xa5c2x6,_0xa5c2x7,_0xa5c2x8){return ReportMember[_0x27e6[16]](Util[_0x27e6[15]](_0xa5c2x6[_0x27e6[14]]))[_0x27e6[13]](function(_0xa5c2xa){return _0xa5c2x7[_0x27e6[12]](200)[_0x27e6[11]](_0xa5c2xa)})[_0x27e6[10]](function(_0xa5c2x9){return handleError(_0xa5c2x7,_0xa5c2x9)})};exports[_0x27e6[17]]= function(_0xa5c2x6,_0xa5c2x7){return ReportMemberHistory[_0x27e6[17]]()[_0x27e6[13]](function(_0xa5c2xb){return _0xa5c2x7[_0x27e6[12]](200)[_0x27e6[11]](_0xa5c2xb)})[_0x27e6[10]](function(_0xa5c2x9){return handleError(_0xa5c2x7,_0xa5c2x9)})};function handleError(_0xa5c2x7,_0xa5c2x9){logger[_0x27e6[19]](_0xa5c2x9[_0x27e6[18]]);return _0xa5c2x7[_0x27e6[12]](500)[_0x27e6[11]](_0xa5c2x9)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_member/report_member.events.js b/server/api/report_member/report_member.events.js index d70f481..66dc905 100644 --- a/server/api/report_member/report_member.events.js +++ b/server/api/report_member/report_member.events.js @@ -1 +1 @@ -var _0x42bd=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x4D\x65\x6D\x62\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x42bd[0];const EventEmitter=require(_0x42bd[1]);const ReportMember=require(_0x42bd[3])[_0x42bd[2]];var ReportMemberEvents= new EventEmitter();ReportMemberEvents[_0x42bd[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x42bd[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x42bd[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x42bd[6]};for(var e in events){var event=events[e];ReportMember[_0x42bd[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x693cx8,_0x693cx9,_0x693cxa){ReportMemberEvents[_0x42bd[10]](event+ _0x42bd[8]+ _0x693cx8[_0x42bd[9]],_0x693cx8);ReportMemberEvents[_0x42bd[10]](event,_0x693cx8);_0x693cxa(null)}}module[_0x42bd[11]]= ReportMemberEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_member/report_member.socket.js b/server/api/report_member/report_member.socket.js index af3c1b3..66dc905 100644 --- a/server/api/report_member/report_member.socket.js +++ b/server/api/report_member/report_member.socket.js @@ -1 +1 @@ -var _0xaf29=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6D\x65\x6D\x62\x65\x72\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x65\x6D\x62\x65\x72\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x6E\x61\x6D\x65","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x72\x6F\x6C\x65","\x61\x64\x6D\x69\x6E","\x65\x6D\x69\x74","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x65\x6D\x62\x65\x72\x3A\x73\x61\x76\x65","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x65\x6D\x62\x65\x72\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xaf29[0];const ReportMemberEvents=require(_0xaf29[1]);var events=[_0xaf29[2],_0xaf29[3]];exports[_0xaf29[4]]= function(_0xd988x3){for(var _0xd988x4=0,_0xd988x5=events[_0xaf29[5]];_0xd988x4< _0xd988x5;_0xd988x4++){var _0xd988x6=events[_0xd988x4];var _0xd988x7=createListener(_0xaf29[6]+ _0xd988x6,_0xd988x3);ReportMemberEvents[_0xaf29[7]](_0xd988x6,_0xd988x7);_0xd988x3[_0xaf29[7]](_0xaf29[8],removeListener(_0xd988x6,_0xd988x7))}};function createListener(_0xd988x6,_0xd988x3){return function(_0xd988x9){switch(_0xd988x6){case _0xaf29[14]:if(_0xd988x3[_0xaf29[9]]=== _0xd988x9[_0xaf29[10]]|| _0xd988x3[_0xaf29[11]]=== _0xaf29[12]){_0xd988x3[_0xaf29[13]](_0xd988x6,_0xd988x9)};break;case _0xaf29[15]:_0xd988x3[_0xaf29[13]](_0xd988x6,_0xd988x9);break;default:}}}function removeListener(_0xd988x6,_0xd988x7){return function(){ReportMemberEvents[_0xaf29[16]](_0xd988x6,_0xd988x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_openchannel/index.js b/server/api/report_openchannel/index.js index 654de84..66dc905 100644 --- a/server/api/report_openchannel/index.js +++ b/server/api/report_openchannel/index.js @@ -1 +1 @@ -var _0x8e13=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64\x2F\x61\x63\x63\x65\x70\x74\x2F\x3A\x75\x6E\x69\x71\x75\x65\x69\x64","\x68\x61\x73\x52\x6F\x6C\x65","\x61\x63\x63\x65\x70\x74","\x2F\x3A\x69\x64\x2F\x72\x65\x6A\x65\x63\x74","\x72\x65\x6A\x65\x63\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x8e13[0];var express=require(_0x8e13[1]);var controller=require(_0x8e13[2]);var auth=require(_0x8e13[3]);var license=require(_0x8e13[4]);var router=express.Router();router[_0x8e13[12]](_0x8e13[5],auth[_0x8e13[6]](),license[_0x8e13[7]](),auth[_0x8e13[10]]([17],[_0x8e13[8],_0x8e13[9]]),controller[_0x8e13[11]]);router[_0x8e13[12]](_0x8e13[13],auth[_0x8e13[6]](),license[_0x8e13[7]](),auth[_0x8e13[14]](_0x8e13[9]),controller[_0x8e13[15]]);router[_0x8e13[12]](_0x8e13[16],auth[_0x8e13[6]](),license[_0x8e13[7]](),auth[_0x8e13[14]](_0x8e13[9]),controller[_0x8e13[17]]);module[_0x8e13[18]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_openchannel/report_openchannel.controller.js b/server/api/report_openchannel/report_openchannel.controller.js index 3507079..66dc905 100644 --- a/server/api/report_openchannel/report_openchannel.controller.js +++ b/server/api/report_openchannel/report_openchannel.controller.js @@ -1 +1 @@ -var _0xe73f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x52\x65\x70\x6F\x72\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6D\x6F\x6D\x65\x6E\x74","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x61\x63\x63\x65\x70\x74","\x2E","\x73\x70\x6C\x69\x74","\x75\x6E\x69\x71\x75\x65\x69\x64","\x70\x61\x72\x61\x6D\x73","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x4F\x50\x45\x4E","\x61\x67\x65\x6E\x74","\x75\x73\x65\x72","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x69\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x43\x4C\x4F\x53\x45\x44","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D\x73","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x43\x61\x70\x61\x63\x69\x74\x79","\x72\x65\x6A\x65\x63\x74","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74"];_0xe73f[0];var _=require(_0xe73f[1]);var ReportOpenchannel=require(_0xe73f[3])[_0xe73f[2]];var OpenchannelRoom=require(_0xe73f[3])[_0xe73f[4]];var sequelize=require(_0xe73f[3])[_0xe73f[5]];var Agent=require(_0xe73f[3])[_0xe73f[6]];var Util=require(_0xe73f[7]);var moment=require(_0xe73f[8]);var logger=require(_0xe73f[10])(_0xe73f[9]);function handleError(_0x633bxa,_0x633bxb){logger[_0xe73f[12]](_0x633bxb[_0xe73f[11]]);return _0x633bxa[_0xe73f[14]](500)[_0xe73f[13]](_0x633bxb)}exports[_0xe73f[15]]= function(_0x633bxc,_0x633bxa){return ReportOpenchannel[_0xe73f[20]](Util[_0xe73f[19]](_0x633bxc[_0xe73f[18]]))[_0xe73f[17]](function(_0x633bxd){_0x633bxa[_0xe73f[14]](200)[_0xe73f[13]](_0x633bxd)})[_0xe73f[16]](function(_0x633bxb){return handleError(_0x633bxa,_0x633bxb)})};exports[_0xe73f[21]]= function(_0x633bxc,_0x633bxa){var _0x633bxe;var _0x633bxf=_0x633bxc[_0xe73f[25]][_0xe73f[24]][_0xe73f[23]](_0xe73f[22])[1];return Agent[_0xe73f[34]](_0x633bxc[_0xe73f[29]][_0xe73f[33]],{attributes:[_0xe73f[33],_0xe73f[37]]})[_0xe73f[17]](function(_0x633bx13){_0x633bxe= _0x633bx13;return _0x633bx13[_0xe73f[36]]({where:{status:{$ne:_0xe73f[35]},id:{$ne:_0x633bxf}},attributes:[_0xe73f[33]]})})[_0xe73f[17]](function(_0x633bx12){return ReportOpenchannel[_0xe73f[34]](_0x633bxc[_0xe73f[25]][_0xe73f[33]])})[_0xe73f[17]](function(_0x633bx10){if(!_0x633bx10){return _0x633bxa[_0xe73f[26]](404)};var _0x633bx11=_[_0xe73f[31]](_0x633bx10,{connectid:_0x633bxc[_0xe73f[25]][_0xe73f[24]]});return _0x633bx11[_0xe73f[32]]()})[_0xe73f[17]](function(){return OpenchannelRoom[_0xe73f[30]]({status:_0xe73f[27],openReason:_0xe73f[28]},{where:{id:_0x633bxf},user:_0x633bxc[_0xe73f[29]],individualHooks:true})})[_0xe73f[17]](function(){return _0x633bxa[_0xe73f[26]](200)})[_0xe73f[16]](sequelize.UniqueConstraintError,function(_0x633bxb){return _0x633bxa[_0xe73f[26]](504)})[_0xe73f[16]](function(_0x633bxb){return handleError(_0x633bxa,_0x633bxb)})};exports[_0xe73f[38]]= function(_0x633bxc,_0x633bxa){return ReportOpenchannel[_0xe73f[34]](_0x633bxc[_0xe73f[25]][_0xe73f[33]])[_0xe73f[17]](function(_0x633bx10){if(!_0x633bx10){return _0x633bxa[_0xe73f[26]](404)};var _0x633bx11=_[_0xe73f[31]](_0x633bx10,{rejectedAt:moment()[_0xe73f[40]](_0xe73f[39])});return _0x633bx11[_0xe73f[32]]()})[_0xe73f[17]](function(){return _0x633bxa[_0xe73f[26]](200)})[_0xe73f[16]](function(_0x633bxb){return handleError(_0x633bxa,_0x633bxb)})} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_openchannel/report_openchannel.events.js b/server/api/report_openchannel/report_openchannel.events.js index a73d6eb..66dc905 100644 --- a/server/api/report_openchannel/report_openchannel.events.js +++ b/server/api/report_openchannel/report_openchannel.events.js @@ -1 +1 @@ -var _0x8303=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x8303[0];const EventEmitter=require(_0x8303[1]);const ReportOpenchannel=require(_0x8303[3])[_0x8303[2]];var ReportOpenchannelEvents= new EventEmitter();ReportOpenchannelEvents[_0x8303[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x8303[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x8303[6],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x8303[7]};for(var e in events){var event=events[e];ReportOpenchannel[_0x8303[8]](e,emitEvent(event))};function emitEvent(event){return function(_0x78bcx8,_0x78bcx9,_0x78bcxa){ReportOpenchannelEvents[_0x8303[11]](event+ _0x8303[9]+ _0x78bcx8[_0x8303[10]],_0x78bcx8);ReportOpenchannelEvents[_0x8303[11]](event,_0x78bcx8);_0x78bcxa(null)}}module[_0x8303[12]]= ReportOpenchannelEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_openchannel/report_openchannel.socket.js b/server/api/report_openchannel/report_openchannel.socket.js index 6a3e878..66dc905 100644 --- a/server/api/report_openchannel/report_openchannel.socket.js +++ b/server/api/report_openchannel/report_openchannel.socket.js @@ -1 +1 @@ -var _0xbdae=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x3A\x73\x61\x76\x65","\x6E\x61\x6D\x65","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x72\x6F\x6C\x65","\x61\x64\x6D\x69\x6E","\x65\x6D\x69\x74","\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x3A\x75\x70\x64\x61\x74\x65","\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xbdae[0];const ReportOpenchannelEvents=require(_0xbdae[1]);var events=[_0xbdae[2],_0xbdae[3],_0xbdae[4]];exports[_0xbdae[5]]= function(_0x7535x3){for(var _0x7535x4=0,_0x7535x5=events[_0xbdae[6]];_0x7535x4< _0x7535x5;_0x7535x4++){var _0x7535x6=events[_0x7535x4];var _0x7535x7=createListener(_0xbdae[7]+ _0x7535x6,_0x7535x3);ReportOpenchannelEvents[_0xbdae[8]](_0x7535x6,_0x7535x7);_0x7535x3[_0xbdae[8]](_0xbdae[9],removeListener(_0x7535x6,_0x7535x7))}};function createListener(_0x7535x6,_0x7535x3){return function(_0x7535x9){switch(_0x7535x6){case _0xbdae[10]:;case _0xbdae[16]:if(_0x7535x3[_0xbdae[11]]=== _0x7535x9[_0xbdae[12]]|| _0x7535x3[_0xbdae[13]]=== _0xbdae[14]){_0x7535x3[_0xbdae[15]](_0x7535x6,_0x7535x9)};break;case _0xbdae[17]:_0x7535x3[_0xbdae[15]](_0x7535x6,_0x7535x9);break;default:}}}function removeListener(_0x7535x6,_0x7535x7){return function(){ReportOpenchannelEvents[_0xbdae[18]](_0x7535x6,_0x7535x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_openchannel_session/index.js b/server/api/report_openchannel_session/index.js index c42409b..66dc905 100644 --- a/server/api/report_openchannel_session/index.js +++ b/server/api/report_openchannel_session/index.js @@ -1 +1 @@ -var _0x1d2d=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x64\x61\x73\x68\x62\x6F\x61\x72\x64","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x67\x65\x74\x44\x61\x73\x68\x62\x6F\x61\x72\x64\x56\x61\x6C\x75\x65\x73","\x2F\x77\x61\x69\x74\x69\x6E\x67\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x77\x61\x69\x74\x69\x6E\x67\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x65\x78\x70\x6F\x72\x74\x73"];_0x1d2d[0];var express=require(_0x1d2d[1]);var controller=require(_0x1d2d[2]);var auth=require(_0x1d2d[3]);var license=require(_0x1d2d[4]);var router=express.Router();router[_0x1d2d[11]](_0x1d2d[5],auth[_0x1d2d[6]](),license[_0x1d2d[7]](),auth[_0x1d2d[9]]([20],[_0x1d2d[8]]),controller[_0x1d2d[10]]);router[_0x1d2d[11]](_0x1d2d[12],auth[_0x1d2d[6]](),license[_0x1d2d[7]](),auth[_0x1d2d[9]]([20],[_0x1d2d[8]]),controller[_0x1d2d[13]]);router[_0x1d2d[11]](_0x1d2d[14],license[_0x1d2d[15]](),auth[_0x1d2d[6]](),license[_0x1d2d[7]](),auth[_0x1d2d[9]]([17],[_0x1d2d[8]]),controller[_0x1d2d[16]]);router[_0x1d2d[11]](_0x1d2d[17],auth[_0x1d2d[6]](),license[_0x1d2d[7]](),controller[_0x1d2d[18]]);module[_0x1d2d[19]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_openchannel_session/report_openchannel_session.controller.js b/server/api/report_openchannel_session/report_openchannel_session.controller.js index 12da63d..66dc905 100644 --- a/server/api/report_openchannel_session/report_openchannel_session.controller.js +++ b/server/api/report_openchannel_session/report_openchannel_session.controller.js @@ -1 +1 @@ -var _0x3613=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x52\x65\x70\x6F\x72\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x53\x65\x73\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x52\x65\x70\x6F\x72\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x53\x65\x73\x73\x69\x6F\x6E\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x55\x73\x65\x72","\x62\x6C\x75\x65\x62\x69\x72\x64","\x6D\x6F\x6D\x65\x6E\x74","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x69\x64","\x6D\x61\x70","\x75\x6E\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x72\x6F\x77\x73","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65","\x74\x69\x6D\x65\x6F\x75\x74","\x64\x61\x79","\x73\x74\x61\x72\x74\x4F\x66","\x6D\x65\x72\x67\x65","\x63\x6F\x75\x6E\x74","\x61\x6C\x6C","\x77\x61\x69\x74\x69\x6E\x67","\x67\x65\x74\x44\x61\x73\x68\x62\x6F\x61\x72\x64\x56\x61\x6C\x75\x65\x73","\x77\x61\x69\x74\x69\x6E\x67\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0x3613[0];var _=require(_0x3613[1]);var ReportOpenchannelSession=require(_0x3613[3])[_0x3613[2]];var ReportOpenchannelSessionHistory=require(_0x3613[3])[_0x3613[5]][_0x3613[4]];var Util=require(_0x3613[6]);var User=require(_0x3613[3])[_0x3613[7]];var Promise=require(_0x3613[8]);var moment=require(_0x3613[9]);var logger=require(_0x3613[11])(_0x3613[10]);exports[_0x3613[12]]= function(_0x69c7x9,_0x69c7xa,_0x69c7xb){return ReportOpenchannelSession[_0x3613[19]](Util[_0x3613[18]](_0x69c7x9[_0x3613[17]]))[_0x3613[16]](function(_0x69c7xd){_0x69c7xa[_0x3613[15]](200)[_0x3613[14]](_0x69c7xd)})[_0x3613[13]](function(_0x69c7xc){return handleError(_0x69c7xa,_0x69c7xc)})};exports[_0x3613[20]]= function(_0x69c7x9,_0x69c7xa){return ReportOpenchannelSessionHistory[_0x3613[20]]()[_0x3613[16]](function(_0x69c7xe){return _0x69c7xa[_0x3613[15]](200)[_0x3613[14]](_0x69c7xe)})[_0x3613[13]](function(_0x69c7xc){return handleError(_0x69c7xa,_0x69c7xc)})};function getOpenchannelQueues(_0x69c7x10){return function(){switch(_0x69c7x10[_0x3613[31]]){case _0x3613[28]:return User[_0x3613[27]](_0x69c7x10[_0x3613[21]],{attributes:[_0x3613[21]]})[_0x3613[16]](Util[_0x3613[26]]({},{attributes:[_0x3613[21]],include:[{raw:true,model:User,attributes:[_0x3613[21]]}]}))[_0x3613[16]](function(_0x69c7x11){var _0x69c7x12=[];_0x69c7x11[_0x3613[25]][_0x3613[24]](function(_0x69c7x13){_0x69c7x12= _[_0x3613[23]](_0x69c7x12,_[_0x3613[22]](_0x69c7x13.Users,_0x3613[21]))});return {$or:{queue:_[_0x3613[22]](_0x69c7x11[_0x3613[25]],_0x3613[21]),memberid:_0x69c7x12}}});case _0x3613[30]:return User[_0x3613[27]](_0x69c7x10[_0x3613[21]],{attributes:[_0x3613[21]]})[_0x3613[16]](function(_0x69c7x14){return _0x69c7x14[_0x3613[29]]({attributes:[_0x3613[21]]})})[_0x3613[16]](function(_0x69c7x11){return {$or:{queue:_[_0x3613[22]](_0x69c7x11,_0x3613[21]),memberid:_0x69c7x10[_0x3613[21]]}}});default:return {}}}}exports[_0x3613[32]]= function(_0x69c7x9,_0x69c7xa){return Promise[_0x3613[37]]([])[_0x3613[16]](getOpenchannelQueues(_0x69c7x9[_0x3613[28]]))[_0x3613[16]](function(_0x69c7x16){return ReportOpenchannelSession[_0x3613[36]](Util[_0x3613[18]](_0x69c7x9[_0x3613[17]],_[_0x3613[35]]({timeout:true,createdAt:{$gte:moment()[_0x3613[34]](_0x3613[33])}},_0x69c7x16)))})[_0x3613[16]](function(_0x69c7x15){return _0x69c7xa[_0x3613[15]](200)[_0x3613[14]]({value:_0x69c7x15})})[_0x3613[13]](function(_0x69c7xc){return handleError(_0x69c7xa,_0x69c7xc)})};exports[_0x3613[38]]= function(_0x69c7x9,_0x69c7xa){return Promise[_0x3613[37]]([])[_0x3613[16]](getOpenchannelQueues(_0x69c7x9[_0x3613[28]]))[_0x3613[16]](function(_0x69c7x16){return ReportOpenchannelSession[_0x3613[36]](Util[_0x3613[18]](_0x69c7x9[_0x3613[17]],_[_0x3613[35]]({leaveAt:null,createdAt:{$gte:moment()[_0x3613[34]](_0x3613[33])}},_0x69c7x16)))})[_0x3613[16]](function(_0x69c7x15){return _0x69c7xa[_0x3613[15]](200)[_0x3613[14]]({value:_0x69c7x15})})[_0x3613[13]](function(_0x69c7xc){return handleError(_0x69c7xa,_0x69c7xc)})};exports[_0x3613[39]]= function(_0x69c7x9,_0x69c7xa){var _0x69c7x17={waiting:0,timeout:0};return ReportOpenchannelSession[_0x3613[36]]({where:{leaveAt:null,createdAt:{$gte:moment()[_0x3613[34]](_0x3613[33])}}})[_0x3613[16]](function(_0x69c7xd){if(_0x69c7xd){_0x69c7x17[_0x3613[38]]= _0x69c7xd};return ReportOpenchannelSession[_0x3613[36]]({where:{timeout:true,createdAt:{$gte:moment()[_0x3613[34]](_0x3613[33])}}})})[_0x3613[16]](function(_0x69c7xd){if(_0x69c7xd){_0x69c7x17[_0x3613[32]]= _0x69c7xd};return _0x69c7xa[_0x3613[15]](200)[_0x3613[14]](_0x69c7x17)})[_0x3613[13]](function(_0x69c7xc){return handleError(_0x69c7xa,_0x69c7xc)})};exports[_0x3613[40]]= function(_0x69c7x9,_0x69c7xa){return Promise[_0x3613[37]]([])[_0x3613[16]](getOpenchannelQueues(_0x69c7x9[_0x3613[28]]))[_0x3613[16]](function(_0x69c7x16){return ReportOpenchannelSession[_0x3613[41]](Util[_0x3613[18]](_0x69c7x9[_0x3613[17]],_[_0x3613[35]]({leaveAt:null},_0x69c7x16)))})[_0x3613[16]](function(_0x69c7x15){return _0x69c7xa[_0x3613[15]](200)[_0x3613[14]]({rows:_0x69c7x15})})[_0x3613[13]](function(_0x69c7xc){return handleError(_0x69c7xa,_0x69c7xc)})};function handleError(_0x69c7xa,_0x69c7xc){logger[_0x3613[43]](_0x69c7xc[_0x3613[42]]);return _0x69c7xa[_0x3613[15]](500)[_0x3613[14]](_0x69c7xc)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_openchannel_session/report_openchannel_session.events.js b/server/api/report_openchannel_session/report_openchannel_session.events.js index 0093bfe..66dc905 100644 --- a/server/api/report_openchannel_session/report_openchannel_session.events.js +++ b/server/api/report_openchannel_session/report_openchannel_session.events.js @@ -1 +1 @@ -var _0x6bf3=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x53\x65\x73\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x6bf3[0];const EventEmitter=require(_0x6bf3[1]);const ReportOpenchannelSession=require(_0x6bf3[3])[_0x6bf3[2]];var ReportOpenchannelSessionEvents= new EventEmitter();ReportOpenchannelSessionEvents[_0x6bf3[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x6bf3[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x6bf3[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x6bf3[6]};for(var e in events){var event=events[e];ReportOpenchannelSession[_0x6bf3[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xd9b4x8,_0xd9b4x9,_0xd9b4xa){ReportOpenchannelSessionEvents[_0x6bf3[10]](event+ _0x6bf3[8]+ _0xd9b4x8[_0x6bf3[9]],_0xd9b4x8);ReportOpenchannelSessionEvents[_0x6bf3[10]](event,_0xd9b4x8);_0xd9b4xa(null)}}module[_0x6bf3[11]]= ReportOpenchannelSessionEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_openchannel_session/report_openchannel_session.socket.js b/server/api/report_openchannel_session/report_openchannel_session.socket.js index 502dd7b..66dc905 100644 --- a/server/api/report_openchannel_session/report_openchannel_session.socket.js +++ b/server/api/report_openchannel_session/report_openchannel_session.socket.js @@ -1 +1 @@ -var _0x2604=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x52\x65\x70\x6F\x72\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x53\x65\x73\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6C\x6F\x64\x61\x73\x68","\x62\x6C\x75\x65\x62\x69\x72\x64","\x72\x65\x67\x69\x73\x74\x65\x72","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79","\x69\x64","\x6D\x61\x70","\x75\x6E\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x72\x6F\x77\x73","\x74\x68\x65\x6E","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x75\x73\x65\x72\x49\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65","\x45\x72\x72\x6F\x72\x20\x66\x69\x6C\x74\x65\x72\x69\x6E\x67\x20\x72\x65\x70\x6F\x72\x74\x20\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x20\x73\x65\x73\x73\x69\x6F\x6E\x73\x20\x61\x66\x74\x65\x72\x20\x73\x61\x76\x65","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x61\x64\x6D\x69\x6E","\x6D\x65\x6D\x62\x65\x72\x69\x64","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x71\x75\x65\x75\x65","\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E\x3A\x73\x61\x76\x65","\x65\x6D\x69\x74","\x61\x6C\x6C","\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E\x3A\x72\x65\x6D\x6F\x76\x65"];_0x2604[0];var ReportOpenchannelSession=require(_0x2604[2])[_0x2604[1]];var User=require(_0x2604[2])[_0x2604[3]];var Util=require(_0x2604[4]);var _=require(_0x2604[5]);var Promise=require(_0x2604[6]);exports[_0x2604[7]]= function(_0xede4x6){ReportOpenchannelSession[_0x2604[8]](function(_0xede4x7){onSave(_0xede4x6,_0xede4x7)});ReportOpenchannelSession[_0x2604[9]](function(_0xede4x7){onSave(_0xede4x6,_0xede4x7)});ReportOpenchannelSession[_0x2604[10]](function(_0xede4x7){onRemove(_0xede4x6,_0xede4x7)})};function getOpenchannelQueues(_0xede4x9){return function(){switch(_0xede4x9[_0x2604[23]]){case _0x2604[20]:return User[_0x2604[19]](_0xede4x9[_0x2604[18]],{attributes:[_0x2604[11]]})[_0x2604[16]](Util[_0x2604[17]]({},{attributes:[_0x2604[11]],include:[{raw:true,model:User,attributes:[_0x2604[11]]}]}))[_0x2604[16]](function(_0xede4xa){var _0xede4xb=[];_0xede4xa[_0x2604[15]][_0x2604[14]](function(_0xede4xc){_0xede4xb= _[_0x2604[13]](_0xede4xb,_[_0x2604[12]](_0xede4xc.Users,_0x2604[11]))});return {queue:_[_0x2604[12]](_0xede4xa[_0x2604[15]],_0x2604[11]),memberid:_0xede4xb}});case _0x2604[22]:return User[_0x2604[19]](_0xede4x9[_0x2604[18]],{attributes:[_0x2604[11]]})[_0x2604[16]](function(_0xede4xd){return _0xede4xd[_0x2604[21]]({attributes:[_0x2604[11]]})})[_0x2604[16]](function(_0xede4xa){return {queue:_[_0x2604[12]](_0xede4xa,_0x2604[11]),memberid:_0xede4x9[_0x2604[18]]}});default:return {}}}}function onSave(_0xede4x6,_0xede4x7,_0xede4xf){return Promise[_0x2604[33]]([])[_0x2604[16]](getOpenchannelQueues(_0xede4x6))[_0x2604[16]](function(_0xede4x11){if(_0xede4x6[_0x2604[23]]=== _0x2604[27]|| _[_0x2604[29]](_0xede4x11[_0x2604[28]],_0xede4x7[_0x2604[28]])|| _[_0x2604[29]](_0xede4x11[_0x2604[30]],_0xede4x7[_0x2604[30]])){_0xede4x6[_0x2604[32]](_0x2604[31],_0xede4x7)}})[_0x2604[26]](function(_0xede4x10){console[_0x2604[25]](_0x2604[24],_0xede4x10)})}function onRemove(_0xede4x6,_0xede4x7,_0xede4xf){_0xede4x6[_0x2604[32]](_0x2604[34],_0xede4x7)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_queue/index.js b/server/api/report_queue/index.js index d5546af..66dc905 100644 --- a/server/api/report_queue/index.js +++ b/server/api/report_queue/index.js @@ -1 +1 @@ -var _0xfd89=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x64\x61\x73\x68\x62\x6F\x61\x72\x64","\x64\x61\x73\x68\x62\x6F\x61\x72\x64","\x2F\x77\x61\x69\x74\x69\x6E\x67","\x61\x67\x65\x6E\x74","\x77\x61\x69\x74\x69\x6E\x67","\x2F\x70\x61\x72\x61\x6D\x65\x74\x65\x72\x73","\x71\x75\x65\x75\x65\x50\x61\x72\x61\x6D\x65\x74\x65\x72\x73","\x2F\x77\x61\x69\x74\x69\x6E\x67\x2F\x63\x61\x6C\x6C\x73","\x77\x61\x69\x74\x69\x6E\x67\x43\x61\x6C\x6C\x73","\x2F\x61\x63\x74\x69\x76\x65","\x61\x63\x74\x69\x76\x65","\x2F\x61\x6E\x73\x77\x65\x72\x65\x64","\x61\x6E\x73\x77\x65\x72\x65\x64","\x2F\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64","\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64","\x2F\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64\x2F\x61\x6C\x6C","\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64\x41\x6C\x6C","\x2F\x61\x76\x67\x61\x6E\x73\x77\x65\x72\x74\x69\x6D\x65","\x61\x76\x67\x61\x6E\x73\x77\x65\x72\x74\x69\x6D\x65","\x2F\x61\x76\x67\x74\x61\x6C\x6B\x74\x69\x6D\x65","\x61\x76\x67\x74\x61\x6C\x6B\x74\x69\x6D\x65","\x2F\x61\x6E\x73\x77\x65\x72\x72\x61\x74\x65","\x61\x6E\x73\x77\x65\x72\x72\x61\x74\x65","\x2F\x61\x62\x61\x6E\x64\x6F\x6E\x72\x61\x74\x65","\x61\x62\x61\x6E\x64\x6F\x6E\x72\x61\x74\x65","\x2F\x74\x6F\x74\x61\x6C\x6F\x66\x66\x65\x72\x65\x64","\x74\x6F\x74\x61\x6C\x6F\x66\x66\x65\x72\x65\x64","\x2F\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64","\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64","\x2F\x3A\x71\x75\x65\x75\x65","\x73\x68\x6F\x77","\x2F\x3A\x69\x64","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xfd89[0];var express=require(_0xfd89[1]);var controller=require(_0xfd89[2]);var auth=require(_0xfd89[3]);var router=express.Router();router[_0xfd89[9]](_0xfd89[4],auth[_0xfd89[5]](),auth[_0xfd89[7]]([17],[_0xfd89[6]]),controller[_0xfd89[8]]);router[_0xfd89[9]](_0xfd89[10],auth[_0xfd89[5]](),auth[_0xfd89[7]]([17],[_0xfd89[6]]),controller[_0xfd89[11]]);router[_0xfd89[9]](_0xfd89[12],auth[_0xfd89[5]](),auth[_0xfd89[7]]([1],[_0xfd89[6]]),controller[_0xfd89[13]]);router[_0xfd89[9]](_0xfd89[14],auth[_0xfd89[5]](),auth[_0xfd89[7]]([1],[_0xfd89[6],_0xfd89[15]]),controller[_0xfd89[16]]);router[_0xfd89[9]](_0xfd89[17],auth[_0xfd89[5]](),auth[_0xfd89[7]]([1],[_0xfd89[6]]),controller[_0xfd89[18]]);router[_0xfd89[9]](_0xfd89[19],auth[_0xfd89[5]](),auth[_0xfd89[7]]([7],[_0xfd89[6],_0xfd89[15]]),controller[_0xfd89[20]]);router[_0xfd89[9]](_0xfd89[21],auth[_0xfd89[5]](),auth[_0xfd89[7]]([1],[_0xfd89[6],_0xfd89[15]]),controller[_0xfd89[22]]);router[_0xfd89[9]](_0xfd89[23],auth[_0xfd89[5]](),auth[_0xfd89[7]]([1],[_0xfd89[6],_0xfd89[15]]),controller[_0xfd89[24]]);router[_0xfd89[9]](_0xfd89[25],auth[_0xfd89[5]](),auth[_0xfd89[7]]([1],[_0xfd89[6],_0xfd89[15]]),controller[_0xfd89[26]]);router[_0xfd89[9]](_0xfd89[27],auth[_0xfd89[5]](),auth[_0xfd89[7]]([7],[_0xfd89[6],_0xfd89[15]]),controller[_0xfd89[28]]);router[_0xfd89[9]](_0xfd89[29],auth[_0xfd89[5]](),auth[_0xfd89[7]]([1],[_0xfd89[6],_0xfd89[15]]),controller[_0xfd89[30]]);router[_0xfd89[9]](_0xfd89[31],auth[_0xfd89[5]](),auth[_0xfd89[7]]([1],[_0xfd89[6],_0xfd89[15]]),controller[_0xfd89[32]]);router[_0xfd89[9]](_0xfd89[33],auth[_0xfd89[5]](),auth[_0xfd89[7]]([1],[_0xfd89[6],_0xfd89[15]]),controller[_0xfd89[34]]);router[_0xfd89[9]](_0xfd89[35],auth[_0xfd89[5]](),auth[_0xfd89[7]]([1],[_0xfd89[6],_0xfd89[15]]),controller[_0xfd89[36]]);router[_0xfd89[9]](_0xfd89[37],auth[_0xfd89[5]](),auth[_0xfd89[7]]([1],[_0xfd89[6],_0xfd89[15]]),controller[_0xfd89[38]]);router[_0xfd89[9]](_0xfd89[39],auth[_0xfd89[5]](),auth[_0xfd89[7]]([1],[_0xfd89[6],_0xfd89[15]]),controller[_0xfd89[40]]);router[_0xfd89[9]](_0xfd89[41],auth[_0xfd89[5]](),controller[_0xfd89[42]]);router[_0xfd89[45]](_0xfd89[43],auth[_0xfd89[5]](),controller[_0xfd89[44]]);module[_0xfd89[46]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_queue/report_queue.controller.js b/server/api/report_queue/report_queue.controller.js index c676b85..66dc905 100644 --- a/server/api/report_queue/report_queue.controller.js +++ b/server/api/report_queue/report_queue.controller.js @@ -1 +1 @@ -var _0x24a7=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x75\x65","\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x75\x65\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x62\x6C\x75\x65\x62\x69\x72\x64","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x75\x70\x64\x61\x74\x65","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x62\x6F\x64\x79","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x61\x73\x68\x62\x6F\x61\x72\x64","\x63\x6F\x6D\x70\x6C\x65\x74\x65","\x6C\x65\x6E\x67\x74\x68","\x68\x6F\x6C\x64\x74\x69\x6D\x65","\x73\x75\x6D\x42\x79","\x72\x6F\x75\x6E\x64","\x74\x61\x6C\x6B\x74\x69\x6D\x65","\x75\x6E\x69\x78","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x41\x74","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6C\x65\x61\x76\x65\x41\x74","\x66\x6F\x72\x45\x61\x63\x68","\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64","\x64\x61\x79","\x73\x74\x61\x72\x74\x4F\x66","\x66\x69\x6E\x64\x41\x6C\x6C","\x61\x62\x61\x6E\x64\x6F\x6E","\x63\x6F\x75\x6E\x74","\x61\x63\x74\x69\x76\x65","\x77\x61\x69\x74\x69\x6E\x67","\x75\x73\x65\x72","\x61\x6C\x6C","\x72\x6F\x77\x73","\x6E\x61\x6D\x65","\x6D\x61\x70","\x67\x65\x74\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x67\x65\x74\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65","\x71\x75\x65\x75\x65\x50\x61\x72\x61\x6D\x65\x74\x65\x72\x73","\x6C\x69\x6D\x69\x74","\x6F\x66\x66\x73\x65\x74","\x61\x6E\x73\x77\x65\x72\x65\x64\x5F\x75\x69\x46\x72\x6F\x6D","\x61\x6E\x73\x77\x65\x72\x65\x64\x5F\x75\x69\x54\x6F","\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64\x5F\x75\x69\x46\x72\x6F\x6D","\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64\x5F\x75\x69\x54\x6F","\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64\x5F\x75\x69\x46\x72\x6F\x6D","\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64\x5F\x75\x69\x54\x6F","\x73\x70\x72\x65\x61\x64","\x66\x69\x6E\x64","\x74\x6F\x74\x61\x6C\x63\x61\x6C\x6C\x73","\x5F\x61\x6E\x73\x77\x65\x72\x65\x64\x46\x72\x6F\x6D","\x61\x6E\x73\x77\x65\x72\x65\x64","\x5F\x61\x6E\x73\x77\x65\x72\x65\x64\x54\x6F","\x5F\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64\x46\x72\x6F\x6D","\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64","\x5F\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64\x54\x6F","\x5F\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64\x46\x72\x6F\x6D","\x5F\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64\x54\x6F","\x5F\x6E\x61\x6D\x65","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x72\x65\x64\x75\x63\x65","\x66\x69\x6C\x74\x65\x72","\x5F\x6C\x69\x6D\x69\x74","\x76\x61\x6C\x75\x65","\x74\x61\x6B\x65","\x73\x6C\x69\x63\x65","\x30\x30\x3A\x30\x30\x3A\x30\x30","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x20\x41\x53\x20\x27\x6E\x61\x6D\x65\x27\x2C\x43\x4F\x55\x4E\x54\x28\x64\x69\x73\x74\x69\x6E\x63\x74\x20\x75\x6E\x69\x71\x75\x65\x69\x64\x29\x20\x61\x73\x20\x74\x6F\x74\x61\x6C\x63\x61\x6C\x6C\x73\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x20\x57\x48\x45\x52\x45\x20\x71\x75\x65\x75\x65\x20\x49\x4E\x20\x28\x27","\x27\x2C\x27","\x6A\x6F\x69\x6E","\x27\x29\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x71\x75\x65\x75\x65","\x53\x45\x4C\x45\x43\x54","\x51\x75\x65\x72\x79\x54\x79\x70\x65\x73","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x20\x41\x53\x20\x27\x6E\x61\x6D\x65\x27\x2C\x53\x45\x43\x5F\x54\x4F\x5F\x54\x49\x4D\x45\x28\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x74\x61\x6C\x6B\x74\x69\x6D\x65\x29\x2C\x20\x30\x29\x29\x20\x61\x73\x20\x74\x61\x6C\x6B\x74\x69\x6D\x65\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x20\x57\x48\x45\x52\x45\x20\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x20\x3D\x20\x31\x20\x41\x4E\x44\x20\x71\x75\x65\x75\x65\x20\x49\x4E\x20\x28\x27","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x20\x41\x53\x20\x27\x6E\x61\x6D\x65\x27\x2C\x53\x45\x43\x5F\x54\x4F\x5F\x54\x49\x4D\x45\x28\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x68\x6F\x6C\x64\x74\x69\x6D\x65\x29\x2C\x20\x30\x29\x29\x20\x61\x73\x20\x68\x6F\x6C\x64\x74\x69\x6D\x65\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x20\x57\x48\x45\x52\x45\x20\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x20\x3D\x20\x31\x20\x41\x4E\x44\x20\x71\x75\x65\x75\x65\x20\x49\x4E\x20\x28\x27","\x71\x75\x65\x75\x65","\x43\x4F\x55\x4E\x54","\x63\x6F\x6C","\x66\x6E","\x77\x61\x69\x74\x69\x6E\x67\x43\x61\x6C\x6C\x73","\x71\x75\x65\x75\x65\x46\x69\x6C\x74\x65\x72","\x73\x63\x6F\x70\x65","\x61\x76\x67\x61\x6E\x73\x77\x65\x72\x74\x69\x6D\x65","\x53\x45\x4C\x45\x43\x54\x20\x53\x45\x43\x5F\x54\x4F\x5F\x54\x49\x4D\x45\x28\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x68\x6F\x6C\x64\x74\x69\x6D\x65\x29\x2C\x20\x30\x29\x29\x20\x61\x73\x20\x76\x61\x6C\x75\x65\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x20\x57\x48\x45\x52\x45\x20\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x20\x3D\x20\x31\x20\x41\x4E\x44\x20\x71\x75\x65\x75\x65\x20\x49\x4E\x20\x28\x27","\x27\x29","\x61\x76\x67\x74\x61\x6C\x6B\x74\x69\x6D\x65","\x53\x45\x4C\x45\x43\x54\x20\x53\x45\x43\x5F\x54\x4F\x5F\x54\x49\x4D\x45\x28\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x74\x61\x6C\x6B\x74\x69\x6D\x65\x29\x2C\x20\x30\x29\x29\x20\x61\x73\x20\x76\x61\x6C\x75\x65\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x20\x57\x48\x45\x52\x45\x20\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x20\x3D\x20\x31\x20\x41\x4E\x44\x20\x71\x75\x65\x75\x65\x20\x49\x4E\x20\x28\x27","\x61\x6E\x73\x77\x65\x72\x72\x61\x74\x65","\x53\x45\x4C\x45\x43\x54\x20\x52\x4F\x55\x4E\x44\x28\x53\x55\x4D\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x29\x20\x2F\x20\x28\x53\x55\x4D\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x29\x20\x2B\x20\x53\x55\x4D\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x29\x29\x20\x2A\x20\x31\x30\x30\x2C\x20\x31\x29\x20\x61\x73\x20\x76\x61\x6C\x75\x65\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x20\x57\x48\x45\x52\x45\x20\x71\x75\x65\x75\x65\x20\x49\x4E\x20\x28\x27","\x61\x62\x61\x6E\x64\x6F\x6E\x72\x61\x74\x65","\x53\x45\x4C\x45\x43\x54\x20\x52\x4F\x55\x4E\x44\x28\x53\x55\x4D\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x29\x20\x2F\x20\x28\x53\x55\x4D\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x29\x20\x2B\x20\x53\x55\x4D\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x29\x29\x20\x2A\x20\x31\x30\x30\x2C\x20\x31\x29\x20\x61\x73\x20\x76\x61\x6C\x75\x65\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x20\x57\x48\x45\x52\x45\x20\x71\x75\x65\x75\x65\x20\x49\x4E\x20\x28\x27","\x74\x6F\x74\x61\x6C\x6F\x66\x66\x65\x72\x65\x64","\x53\x45\x4C\x45\x43\x54\x20\x43\x4F\x55\x4E\x54\x28\x64\x69\x73\x74\x69\x6E\x63\x74\x20\x75\x6E\x69\x71\x75\x65\x69\x64\x29\x20\x61\x73\x20\x76\x61\x6C\x75\x65\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x20\x57\x48\x45\x52\x45\x20\x71\x75\x65\x75\x65\x20\x49\x4E\x20\x28\x27","\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0x24a7[0];var _=require(_0x24a7[1]);var moment=require(_0x24a7[2]);var sequelize=require(_0x24a7[4])[_0x24a7[3]];var Agent=require(_0x24a7[4])[_0x24a7[5]];var ReportQueue=require(_0x24a7[4])[_0x24a7[6]];var VoiceQueue=require(_0x24a7[4])[_0x24a7[7]];var ReportQueueHistory=require(_0x24a7[4])[_0x24a7[9]][_0x24a7[8]];var Util=require(_0x24a7[10]);var Promise=require(_0x24a7[11]);var logger=require(_0x24a7[13])(_0x24a7[12]);exports[_0x24a7[14]]= function(_0x6f6bxb,_0x6f6bxc,_0x6f6bxd){return ReportQueue[_0x24a7[21]](Util[_0x24a7[20]](_0x6f6bxb[_0x24a7[19]]))[_0x24a7[18]](function(_0x6f6bxf){return _0x6f6bxc[_0x24a7[17]](200)[_0x24a7[16]](_0x6f6bxf)})[_0x24a7[15]](function(_0x6f6bxe){return handleError(_0x6f6bxc,_0x6f6bxe)})};exports[_0x24a7[22]]= function(_0x6f6bxb,_0x6f6bxc){return ReportQueue[_0x24a7[29]](_0x6f6bxb[_0x24a7[28]][_0x24a7[27]])[_0x24a7[18]](function(_0x6f6bx10){if(!_0x6f6bx10){return _0x6f6bxc[_0x24a7[23]](404)};var _0x6f6bx11=_[_0x24a7[25]](_0x6f6bx10,_0x6f6bxb[_0x24a7[24]]);return _0x6f6bx11[_0x24a7[26]]()})[_0x24a7[18]](function(_0x6f6bx10){return _0x6f6bxc[_0x24a7[17]](200)[_0x24a7[16]](_0x6f6bx10)})[_0x24a7[15]](function(_0x6f6bxe){return handleError(_0x6f6bxc,_0x6f6bxe)})};exports[_0x24a7[30]]= function(_0x6f6bxb,_0x6f6bxc){return ReportQueueHistory[_0x24a7[30]]()[_0x24a7[18]](function(_0x6f6bx12){return _0x6f6bxc[_0x24a7[17]](200)[_0x24a7[16]](_0x6f6bx12)})[_0x24a7[15]](function(_0x6f6bxe){return handleError(_0x6f6bxc,_0x6f6bxe)})};exports[_0x24a7[31]]= function(_0x6f6bxb,_0x6f6bxc){var _0x6f6bx13,_0x6f6bx14={};return Promise[_0x24a7[51]]([])[_0x24a7[18]](getVoiceQueues(_0x6f6bxb[_0x24a7[50]]))[_0x24a7[18]](function(_0x6f6bx17){_0x6f6bx13= _0x6f6bx17;return ReportQueue[_0x24a7[47]]({where:{queuecallerleaveAt:null,queuecallerexit:false,queue:_0x6f6bx13,createdAt:{$gte:moment()[_0x24a7[44]](_0x24a7[43])}}})})[_0x24a7[18]](function(_0x6f6bx15){_0x6f6bx14[_0x24a7[49]]= _0x6f6bx15;return ReportQueue[_0x24a7[47]]({where:{queuecallerexit:false,queuecallerabandon:false,queuecallercomplete:false,queuecallerleaveAt:{$ne:null},queue:_0x6f6bx13,createdAt:{$gte:moment()[_0x24a7[44]](_0x24a7[43])}}})})[_0x24a7[18]](function(_0x6f6bx15){_0x6f6bx14[_0x24a7[48]]= _0x6f6bx15;return ReportQueue[_0x24a7[47]]({where:{queuecallerabandon:true,queue:_0x6f6bx13,createdAt:{$gte:moment()[_0x24a7[44]](_0x24a7[43])}}})})[_0x24a7[18]](function(_0x6f6bx15){_0x6f6bx14[_0x24a7[46]]= _0x6f6bx15;return ReportQueue[_0x24a7[47]]({where:{queuecallerexit:true,queue:_0x6f6bx13,createdAt:{$gte:moment()[_0x24a7[44]](_0x24a7[43])}}})})[_0x24a7[18]](function(_0x6f6bx15){_0x6f6bx14[_0x24a7[42]]= _0x6f6bx15;return ReportQueue[_0x24a7[45]]({where:{queuecallercomplete:true,queue:_0x6f6bx13,createdAt:{$gte:moment()[_0x24a7[44]](_0x24a7[43])}},raw:true})})[_0x24a7[18]](function(_0x6f6bx15){_0x6f6bx14[_0x24a7[32]]= _0x6f6bx15[_0x24a7[33]];_0x6f6bx14[_0x24a7[34]]= _[_0x24a7[36]](_[_0x24a7[35]](_0x6f6bx15,_0x24a7[34]));_0x6f6bx14[_0x24a7[37]]= 0;_[_0x24a7[41]](_0x6f6bx15,function(_0x6f6bx16){_0x6f6bx14[_0x24a7[37]]+= moment(_0x6f6bx16[_0x24a7[39]])[_0x24a7[38]]()- moment(_0x6f6bx16[_0x24a7[40]])[_0x24a7[38]]()});return _0x6f6bxc[_0x24a7[17]](200)[_0x24a7[16]](_0x6f6bx14)})[_0x24a7[15]](function(_0x6f6bxe){return handleError(_0x6f6bxc,_0x6f6bxe)})};exports[_0x24a7[49]]= function(_0x6f6bxb,_0x6f6bxc){return Promise[_0x24a7[51]]([])[_0x24a7[18]](getVoiceQueues(_0x6f6bxb[_0x24a7[50]]))[_0x24a7[18]](function(_0x6f6bx17){return ReportQueue[_0x24a7[47]]({where:{queuecallerleaveAt:null,queuecallerexit:false,queue:_0x6f6bx17}})})[_0x24a7[18]](function(_0x6f6bx15){return _0x6f6bxc[_0x24a7[17]](200)[_0x24a7[16]]({value:_0x6f6bx15})})[_0x24a7[15]](function(_0x6f6bxe){return handleError(_0x6f6bxc,_0x6f6bxe)})};function getVoiceQueues(_0x6f6bx19){return function(){switch(_0x6f6bx19[_0x24a7[58]]){case _0x24a7[50]:return Agent[_0x24a7[29]](_0x6f6bx19[_0x24a7[27]],{attributes:[_0x24a7[27]]})[_0x24a7[18]](Util[_0x24a7[55]]())[_0x24a7[18]](function(_0x6f6bx17){return _[_0x24a7[54]](_0x6f6bx17[_0x24a7[52]],_0x24a7[53])});case _0x24a7[57]:return Agent[_0x24a7[29]](_0x6f6bx19[_0x24a7[27]])[_0x24a7[18]](function(_0x6f6bx1a){return _0x6f6bx1a[_0x24a7[56]]({attributes:[_0x24a7[53]]})})[_0x24a7[18]](function(_0x6f6bx17){return _[_0x24a7[54]](_0x6f6bx17,_0x24a7[53])});default:return VoiceQueue[_0x24a7[45]]()[_0x24a7[18]](function(_0x6f6bx1b){return {rows:_0x6f6bx1b}})[_0x24a7[18]](function(_0x6f6bx17){return _[_0x24a7[54]](_0x6f6bx17[_0x24a7[52]],_0x24a7[53])})}}}exports[_0x24a7[59]]= function(_0x6f6bxb,_0x6f6bxc){var _0x6f6bx1c={_limit:_0x6f6bxb[_0x24a7[19]][_0x24a7[60]]?_0x6f6bxb[_0x24a7[19]][_0x24a7[60]]:null,_offset:_0x6f6bxb[_0x24a7[19]][_0x24a7[61]]?_0x6f6bxb[_0x24a7[19]][_0x24a7[61]]:0,_name:_0x6f6bxb[_0x24a7[19]][_0x24a7[53]]|| undefined,_answeredFrom:_0x6f6bxb[_0x24a7[19]][_0x24a7[62]]|| _0x6f6bxb[_0x24a7[19]][_0x24a7[62]]=== 0?_0x6f6bxb[_0x24a7[19]][_0x24a7[62]]:undefined,_answeredTo:_0x6f6bxb[_0x24a7[19]][_0x24a7[63]]|| _0x6f6bxb[_0x24a7[19]][_0x24a7[63]]=== 0?_0x6f6bxb[_0x24a7[19]][_0x24a7[63]]:undefined,_abandonedFrom:_0x6f6bxb[_0x24a7[19]][_0x24a7[64]]|| _0x6f6bxb[_0x24a7[19]][_0x24a7[64]]=== 0?_0x6f6bxb[_0x24a7[19]][_0x24a7[64]]:undefined,_abandonedTo:_0x6f6bxb[_0x24a7[19]][_0x24a7[65]]|| _0x6f6bxb[_0x24a7[19]][_0x24a7[65]]=== 0?_0x6f6bxb[_0x24a7[19]][_0x24a7[65]]:undefined,_unmanagedFrom:_0x6f6bxb[_0x24a7[19]][_0x24a7[66]]|| _0x6f6bxb[_0x24a7[19]][_0x24a7[66]]=== 0?_0x6f6bxb[_0x24a7[19]][_0x24a7[66]]:undefined,_unmanagedTo:_0x6f6bxb[_0x24a7[19]][_0x24a7[67]]|| _0x6f6bxb[_0x24a7[19]][_0x24a7[67]]=== 0?_0x6f6bxb[_0x24a7[19]][_0x24a7[67]]:undefined};var _0x6f6bx1d,_0x6f6bx13,_0x6f6bx1e,_0x6f6bx1f;delete _0x6f6bxb[_0x24a7[19]][_0x24a7[60]];delete _0x6f6bxb[_0x24a7[19]][_0x24a7[61]];delete _0x6f6bxb[_0x24a7[19]][_0x24a7[62]];delete _0x6f6bxb[_0x24a7[19]][_0x24a7[63]];delete _0x6f6bxb[_0x24a7[19]][_0x24a7[64]];delete _0x6f6bxb[_0x24a7[19]][_0x24a7[65]];delete _0x6f6bxb[_0x24a7[19]][_0x24a7[66]];delete _0x6f6bxb[_0x24a7[19]][_0x24a7[67]];return Promise[_0x24a7[51]]([])[_0x24a7[18]](getVoiceQueues(_0x6f6bxb[_0x24a7[50]]))[_0x24a7[18]](function(_0x6f6bx17){_0x6f6bx13= _0x6f6bx17;_0x6f6bx1d= _[_0x24a7[54]](_0x6f6bx17,function(_0x6f6bx23){return {name:_0x6f6bx23}});return ReportQueue[_0x24a7[45]]({where:{queuecallerleaveAt:null,queue:_0x6f6bx13},group:_0x24a7[97],attributes:[[_0x24a7[97],_0x24a7[53]],[sequelize[_0x24a7[100]](_0x24a7[98],sequelize[_0x24a7[99]](_0x24a7[27])),_0x24a7[49]]]})})[_0x24a7[18]](function(_0x6f6bx35){_0x6f6bx35= _[_0x24a7[54]](_0x6f6bx35,_0x24a7[95]);_0x6f6bx1d[_0x24a7[41]](function(_0x6f6bx23,_0x6f6bx36){var _0x6f6bx24=_[_0x24a7[69]](_0x6f6bx35,{name:_0x6f6bx23[_0x24a7[53]]});_0x6f6bx23[_0x24a7[49]]= _0x6f6bx24?_0x6f6bx24[_0x24a7[49]]:0});return ReportQueue[_0x24a7[45]]({where:{queuecallerexit:false,queuecallerabandon:false,queuecallercomplete:false,queuecallerleaveAt:{$ne:null},queue:_0x6f6bx13},group:_0x24a7[97],attributes:[[_0x24a7[97],_0x24a7[53]],[sequelize[_0x24a7[100]](_0x24a7[98],sequelize[_0x24a7[99]](_0x24a7[27])),_0x24a7[48]]]})})[_0x24a7[18]](function(_0x6f6bx34){_0x6f6bx34= _[_0x24a7[54]](_0x6f6bx34,_0x24a7[95]);_0x6f6bx1d[_0x24a7[41]](function(_0x6f6bx23){var _0x6f6bx24=_[_0x24a7[69]](_0x6f6bx34,{name:_0x6f6bx23[_0x24a7[53]]});_0x6f6bx23[_0x24a7[48]]= _0x6f6bx24?_0x6f6bx24[_0x24a7[48]]:0});return ReportQueue[_0x24a7[45]]({where:{queuecallercomplete:true,queue:_0x6f6bx13},group:_0x24a7[97],attributes:[[_0x24a7[97],_0x24a7[53]],[sequelize[_0x24a7[100]](_0x24a7[98],sequelize[_0x24a7[99]](_0x24a7[27])),_0x24a7[72]]]})})[_0x24a7[18]](function(_0x6f6bx33){_0x6f6bx33= _[_0x24a7[54]](_0x6f6bx33,_0x24a7[95]);_0x6f6bx1d[_0x24a7[41]](function(_0x6f6bx23){var _0x6f6bx24=_[_0x24a7[69]](_0x6f6bx33,{name:_0x6f6bx23[_0x24a7[53]]});_0x6f6bx23[_0x24a7[72]]= _0x6f6bx24?_0x6f6bx24[_0x24a7[72]]:0});return ReportQueue[_0x24a7[45]]({where:{queuecallerabandon:true,queue:_0x6f6bx13},group:_0x24a7[97],attributes:[[_0x24a7[97],_0x24a7[53]],[sequelize[_0x24a7[100]](_0x24a7[98],sequelize[_0x24a7[99]](_0x24a7[27])),_0x24a7[75]]]})})[_0x24a7[18]](function(_0x6f6bx32){_0x6f6bx32= _[_0x24a7[54]](_0x6f6bx32,_0x24a7[95]);_0x6f6bx1d[_0x24a7[41]](function(_0x6f6bx23){var _0x6f6bx24=_[_0x24a7[69]](_0x6f6bx32,{name:_0x6f6bx23[_0x24a7[53]]});_0x6f6bx23[_0x24a7[75]]= _0x6f6bx24?_0x6f6bx24[_0x24a7[75]]:0});return ReportQueue[_0x24a7[45]]({where:{queuecallerexit:true,queue:_0x6f6bx13},group:_0x24a7[97],attributes:[[_0x24a7[97],_0x24a7[53]],[sequelize[_0x24a7[100]](_0x24a7[98],sequelize[_0x24a7[99]](_0x24a7[27])),_0x24a7[42]]]})})[_0x24a7[18]](function(_0x6f6bx31){_0x6f6bx31= _[_0x24a7[54]](_0x6f6bx31,_0x24a7[95]);_0x6f6bx1d[_0x24a7[41]](function(_0x6f6bx23){var _0x6f6bx24=_[_0x24a7[69]](_0x6f6bx31,{name:_0x6f6bx23[_0x24a7[53]]});_0x6f6bx23[_0x24a7[42]]= _0x6f6bx24?_0x6f6bx24[_0x24a7[42]]:0});return sequelize[_0x24a7[19]](_0x24a7[96]+ _0x6f6bx13[_0x24a7[90]](_0x24a7[89])+ _0x24a7[91],{type:sequelize[_0x24a7[93]][_0x24a7[92]]})})[_0x24a7[18]](function(_0x6f6bx30){_0x6f6bx1d[_0x24a7[41]](function(_0x6f6bx23){var _0x6f6bx24=_[_0x24a7[69]](_0x6f6bx30,{name:_0x6f6bx23[_0x24a7[53]]});_0x6f6bx23[_0x24a7[34]]= _0x6f6bx24?_0x6f6bx24[_0x24a7[34]]:_0x24a7[87]});return sequelize[_0x24a7[19]](_0x24a7[94]+ _0x6f6bx13[_0x24a7[90]](_0x24a7[89])+ _0x24a7[91],{type:sequelize[_0x24a7[93]][_0x24a7[92]]})})[_0x24a7[18]](function(_0x6f6bx2f){_0x6f6bx1d[_0x24a7[41]](function(_0x6f6bx23){var _0x6f6bx24=_[_0x24a7[69]](_0x6f6bx2f,{name:_0x6f6bx23[_0x24a7[53]]});_0x6f6bx23[_0x24a7[37]]= _0x6f6bx24?_0x6f6bx24[_0x24a7[37]]:_0x24a7[87]});return sequelize[_0x24a7[19]](_0x24a7[88]+ _0x6f6bx13[_0x24a7[90]](_0x24a7[89])+ _0x24a7[91],{type:sequelize[_0x24a7[93]][_0x24a7[92]]})})[_0x24a7[18]](function(_0x6f6bx22){_0x6f6bx1d[_0x24a7[41]](function(_0x6f6bx23){var _0x6f6bx24=_[_0x24a7[69]](_0x6f6bx22,{name:_0x6f6bx23[_0x24a7[53]]});_0x6f6bx23[_0x24a7[70]]= _0x6f6bx24?_0x6f6bx24[_0x24a7[70]]:0});var _0x6f6bx25=_(_[_0x24a7[82]](_0x6f6bx1d,function(_0x6f6bx23){var _0x6f6bx26=_0x6f6bx1c[_0x24a7[71]]?(_0x6f6bx23[_0x24a7[72]]>= Number(_0x6f6bx1c._answeredFrom)):true;var _0x6f6bx27=_0x6f6bx1c[_0x24a7[73]]?(_0x6f6bx23[_0x24a7[72]]<= Number(_0x6f6bx1c._answeredTo)):true;var _0x6f6bx28=_0x6f6bx1c[_0x24a7[74]]?(_0x6f6bx23[_0x24a7[75]]>= Number(_0x6f6bx1c._abandonedFrom)):true;var _0x6f6bx29=_0x6f6bx1c[_0x24a7[76]]?(_0x6f6bx23[_0x24a7[75]]<= Number(_0x6f6bx1c._abandonedTo)):true;var _0x6f6bx2a=_0x6f6bx1c[_0x24a7[77]]?(_0x6f6bx23[_0x24a7[42]]>= Number(_0x6f6bx1c._unmanagedFrom)):true;var _0x6f6bx2b=_0x6f6bx1c[_0x24a7[78]]?(_0x6f6bx23[_0x24a7[42]]<= Number(_0x6f6bx1c._unmanagedTo)):true;var _0x6f6bx2c=_0x6f6bx1c[_0x24a7[79]]?_[_0x24a7[80]](_0x6f6bx23[_0x24a7[53]],_0x6f6bx1c._name):true;return _[_0x24a7[81]]([_0x6f6bx26,_0x6f6bx27,_0x6f6bx28,_0x6f6bx29,_0x6f6bx2a,_0x6f6bx2b,_0x6f6bx2c],function(_0x6f6bx2d,_0x6f6bx2e){return _0x6f6bx2d&& _0x6f6bx2e})}));if(_0x6f6bx1c[_0x24a7[83]]){_0x6f6bx25= _0x6f6bx25[_0x24a7[86]](_0x6f6bx1c._offset)[_0x24a7[85]](_0x6f6bx1c._limit)[_0x24a7[84]]()};return [_0x6f6bx1d[_0x24a7[33]],_0x6f6bx25]})[_0x24a7[68]](function(_0x6f6bx20,_0x6f6bx21){return _0x6f6bxc[_0x24a7[17]](200)[_0x24a7[16]]({rows:_0x6f6bx21,count:_0x6f6bx20})})[_0x24a7[15]](function(_0x6f6bxe){return handleError(_0x6f6bxc,_0x6f6bxe)})};exports[_0x24a7[101]]= function(_0x6f6bxb,_0x6f6bxc){var _0x6f6bx37={};return Promise[_0x24a7[51]]([])[_0x24a7[18]](getVoiceQueues(_0x6f6bxb[_0x24a7[50]]))[_0x24a7[18]](function(_0x6f6bx17){return ReportQueue[_0x24a7[103]](_0x24a7[49],{method:[_0x24a7[102],_0x6f6bx17]})[_0x24a7[45]](Util[_0x24a7[20]](_0x6f6bxb[_0x24a7[19]],_0x6f6bx37))})[_0x24a7[18]](function(_0x6f6bx15){return _0x6f6bxc[_0x24a7[17]](200)[_0x24a7[16]]({rows:_0x6f6bx15,count:_0x6f6bx15[_0x24a7[33]]})})[_0x24a7[15]](function(_0x6f6bxe){return handleError(_0x6f6bxc,_0x6f6bxe)})};exports[_0x24a7[48]]= function(_0x6f6bxb,_0x6f6bxc){return Promise[_0x24a7[51]]([])[_0x24a7[18]](getVoiceQueues(_0x6f6bxb[_0x24a7[50]]))[_0x24a7[18]](function(_0x6f6bx17){return ReportQueue[_0x24a7[47]]({where:{queuecallerexit:false,queuecallerabandon:false,queuecallercomplete:false,queuecallerleaveAt:{$ne:null},queue:_0x6f6bx17}})})[_0x24a7[18]](function(_0x6f6bx15){return _0x6f6bxc[_0x24a7[17]](200)[_0x24a7[16]]({value:_0x6f6bx15})})[_0x24a7[15]](function(_0x6f6bxe){return handleError(_0x6f6bxc,_0x6f6bxe)})};exports[_0x24a7[72]]= function(_0x6f6bxb,_0x6f6bxc){return Promise[_0x24a7[51]]([])[_0x24a7[18]](getVoiceQueues(_0x6f6bxb[_0x24a7[50]]))[_0x24a7[18]](function(_0x6f6bx17){return ReportQueue[_0x24a7[47]]({where:{queuecallercomplete:true,queue:_0x6f6bx17}})})[_0x24a7[18]](function(_0x6f6bx15){return _0x6f6bxc[_0x24a7[17]](200)[_0x24a7[16]]({value:_0x6f6bx15})})[_0x24a7[15]](function(_0x6f6bxe){return handleError(_0x6f6bxc,_0x6f6bxe)})};exports[_0x24a7[75]]= function(_0x6f6bxb,_0x6f6bxc){return Promise[_0x24a7[51]]([])[_0x24a7[18]](getVoiceQueues(_0x6f6bxb[_0x24a7[50]]))[_0x24a7[18]](function(_0x6f6bx17){return ReportQueue[_0x24a7[47]]({where:{queuecallerabandon:true,queue:_0x6f6bx17}})})[_0x24a7[18]](function(_0x6f6bx15){return _0x6f6bxc[_0x24a7[17]](200)[_0x24a7[16]]({value:_0x6f6bx15})})[_0x24a7[15]](function(_0x6f6bxe){return handleError(_0x6f6bxc,_0x6f6bxe)})};exports[_0x24a7[104]]= function(_0x6f6bxb,_0x6f6bxc){return Promise[_0x24a7[51]]([])[_0x24a7[18]](getVoiceQueues(_0x6f6bxb[_0x24a7[50]]))[_0x24a7[18]](function(_0x6f6bx17){return sequelize[_0x24a7[19]](_0x24a7[105]+ _0x6f6bx17[_0x24a7[90]](_0x24a7[89])+ _0x24a7[106],{type:sequelize[_0x24a7[93]][_0x24a7[92]]})})[_0x24a7[18]](function(_0x6f6bx15){return _0x6f6bxc[_0x24a7[17]](200)[_0x24a7[16]]({value:_0x6f6bx15[0][_0x24a7[84]]})})[_0x24a7[15]](function(_0x6f6bxe){return handleError(_0x6f6bxc,_0x6f6bxe)})};exports[_0x24a7[107]]= function(_0x6f6bxb,_0x6f6bxc){return Promise[_0x24a7[51]]([])[_0x24a7[18]](getVoiceQueues(_0x6f6bxb[_0x24a7[50]]))[_0x24a7[18]](function(_0x6f6bx17){return sequelize[_0x24a7[19]](_0x24a7[108]+ _0x6f6bx17[_0x24a7[90]](_0x24a7[89])+ _0x24a7[106],{type:sequelize[_0x24a7[93]][_0x24a7[92]]})})[_0x24a7[18]](function(_0x6f6bx15){return _0x6f6bxc[_0x24a7[17]](200)[_0x24a7[16]]({value:_0x6f6bx15[0][_0x24a7[84]]})})[_0x24a7[15]](function(_0x6f6bxe){return handleError(_0x6f6bxc,_0x6f6bxe)})};exports[_0x24a7[109]]= function(_0x6f6bxb,_0x6f6bxc){return Promise[_0x24a7[51]]([])[_0x24a7[18]](getVoiceQueues(_0x6f6bxb[_0x24a7[50]]))[_0x24a7[18]](function(_0x6f6bx17){return sequelize[_0x24a7[19]](_0x24a7[110]+ _0x6f6bx17[_0x24a7[90]](_0x24a7[89])+ _0x24a7[106],{type:sequelize[_0x24a7[93]][_0x24a7[92]]})})[_0x24a7[18]](function(_0x6f6bx15){return _0x6f6bxc[_0x24a7[17]](200)[_0x24a7[16]]({value:_0x6f6bx15[0][_0x24a7[84]]})})[_0x24a7[15]](function(_0x6f6bxe){return handleError(_0x6f6bxc,_0x6f6bxe)})};exports[_0x24a7[111]]= function(_0x6f6bxb,_0x6f6bxc){return Promise[_0x24a7[51]]([])[_0x24a7[18]](getVoiceQueues(_0x6f6bxb[_0x24a7[50]]))[_0x24a7[18]](function(_0x6f6bx17){return sequelize[_0x24a7[19]](_0x24a7[112]+ _0x6f6bx17[_0x24a7[90]](_0x24a7[89])+ _0x24a7[106],{type:sequelize[_0x24a7[93]][_0x24a7[92]]})})[_0x24a7[18]](function(_0x6f6bx15){return _0x6f6bxc[_0x24a7[17]](200)[_0x24a7[16]]({value:_0x6f6bx15[0][_0x24a7[84]]})})[_0x24a7[15]](function(_0x6f6bxe){return handleError(_0x6f6bxc,_0x6f6bxe)})};exports[_0x24a7[113]]= function(_0x6f6bxb,_0x6f6bxc){return Promise[_0x24a7[51]]([])[_0x24a7[18]](getVoiceQueues(_0x6f6bxb[_0x24a7[50]]))[_0x24a7[18]](function(_0x6f6bx17){return sequelize[_0x24a7[19]](_0x24a7[114]+ _0x6f6bx17[_0x24a7[90]](_0x24a7[89])+ _0x24a7[106],{type:sequelize[_0x24a7[93]][_0x24a7[92]]})})[_0x24a7[18]](function(_0x6f6bx15){return _0x6f6bxc[_0x24a7[17]](200)[_0x24a7[16]]({value:_0x6f6bx15[0][_0x24a7[84]]})})[_0x24a7[15]](function(_0x6f6bxe){return handleError(_0x6f6bxc,_0x6f6bxe)})};exports[_0x24a7[42]]= function(_0x6f6bxb,_0x6f6bxc){return Promise[_0x24a7[51]]([])[_0x24a7[18]](getVoiceQueues(_0x6f6bxb[_0x24a7[50]]))[_0x24a7[18]](function(_0x6f6bx17){return ReportQueue[_0x24a7[47]]({where:{queuecallerexit:true,queue:_0x6f6bx17}})})[_0x24a7[18]](function(_0x6f6bx15){return _0x6f6bxc[_0x24a7[17]](200)[_0x24a7[16]]({value:_0x6f6bx15})})[_0x24a7[15]](function(_0x6f6bxe){return handleError(_0x6f6bxc,_0x6f6bxe)})};exports[_0x24a7[115]]= function(_0x6f6bxb,_0x6f6bxc){return Promise[_0x24a7[51]]([])[_0x24a7[18]](getVoiceQueues(_0x6f6bxb[_0x24a7[50]]))[_0x24a7[18]](function(_0x6f6bx17){return ReportQueue[_0x24a7[21]]({where:{queuecallerabandon:true,queue:_0x6f6bx17}})})[_0x24a7[18]](function(_0x6f6bx15){return _0x6f6bxc[_0x24a7[17]](200)[_0x24a7[16]](_0x6f6bx15)})[_0x24a7[15]](function(_0x6f6bxe){return handleError(_0x6f6bxc,_0x6f6bxe)})};exports[_0x24a7[116]]= function(_0x6f6bxb,_0x6f6bxc){return ReportQueue[_0x24a7[45]]({where:{queue:_0x6f6bxb[_0x24a7[28]][_0x24a7[97]]}})[_0x24a7[18]](function(_0x6f6bx38){if(!_0x6f6bx38){return _0x6f6bxc[_0x24a7[23]](404)};return _0x6f6bxc[_0x24a7[16]]({count:_0x6f6bx38[_0x24a7[33]],rows:_0x6f6bx38})})[_0x24a7[15]](function(_0x6f6bxe){return handleError(_0x6f6bxc,_0x6f6bxe)})};function handleError(_0x6f6bxc,_0x6f6bxe){logger[_0x24a7[118]](_0x6f6bxe[_0x24a7[117]]);return _0x6f6bxc[_0x24a7[17]](500)[_0x24a7[16]](_0x6f6bxe)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_queue/report_queue.events.js b/server/api/report_queue/report_queue.events.js index 271434c..66dc905 100644 --- a/server/api/report_queue/report_queue.events.js +++ b/server/api/report_queue/report_queue.events.js @@ -1 +1 @@ -var _0x699f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x699f[0];const EventEmitter=require(_0x699f[1]);const ReportQueue=require(_0x699f[3])[_0x699f[2]];var ReportQueueEvents= new EventEmitter();ReportQueueEvents[_0x699f[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x699f[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x699f[6],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x699f[7]};for(var e in events){var event=events[e];ReportQueue[_0x699f[8]](e,emitEvent(event))};function emitEvent(event){return function(_0x7d9bx8,_0x7d9bx9,_0x7d9bxa){ReportQueueEvents[_0x699f[11]](event+ _0x699f[9]+ _0x7d9bx8[_0x699f[10]],_0x7d9bx8);ReportQueueEvents[_0x699f[11]](event,_0x7d9bx8);_0x7d9bxa(null)}}module[_0x699f[12]]= ReportQueueEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_queue/report_queue.socket.js b/server/api/report_queue/report_queue.socket.js index eeabda4..66dc905 100644 --- a/server/api/report_queue/report_queue.socket.js +++ b/server/api/report_queue/report_queue.socket.js @@ -1 +1 @@ -var _0xf459=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x2E\x65\x76\x65\x6E\x74\x73","\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6C\x6F\x64\x61\x73\x68","\x62\x6C\x75\x65\x62\x69\x72\x64","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x3A\x73\x61\x76\x65","\x45\x72\x72\x6F\x72\x20\x66\x69\x6C\x74\x65\x72\x69\x6E\x67\x20\x71\x75\x65\x75\x65\x73\x20\x61\x66\x74\x65\x72\x20\x71\x75\x65\x75\x65\x20\x73\x61\x76\x65","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x71\x75\x65\x75\x65","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x65\x6D\x69\x74","\x74\x68\x65\x6E","\x61\x6C\x6C","\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x3A\x75\x70\x64\x61\x74\x65","\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x72\x6F\x77\x73","\x6E\x61\x6D\x65","\x6D\x61\x70","\x67\x65\x74\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x75\x73\x65\x72\x49\x64","\x69\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x67\x65\x74\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73","\x61\x67\x65\x6E\x74","\x73\x63\x6F\x70\x65","\x66\x69\x6E\x64\x41\x6C\x6C","\x72\x6F\x6C\x65"];_0xf459[0];const ReportQueueEvents=require(_0xf459[1]);const VoiceQueue=require(_0xf459[3])[_0xf459[2]];const User=require(_0xf459[3])[_0xf459[4]];const Util=require(_0xf459[5]);const _=require(_0xf459[6]);const Promise=require(_0xf459[7]);var events=[_0xf459[8],_0xf459[9],_0xf459[10]];exports[_0xf459[11]]= function(_0xa970x8){for(var _0xa970x9=0,_0xa970xa=events[_0xf459[12]];_0xa970x9< _0xa970xa;_0xa970x9++){var _0xa970xb=events[_0xa970x9];var _0xa970xc=createListener(_0xf459[13]+ _0xa970xb,_0xa970x8);ReportQueueEvents[_0xf459[14]](_0xa970xb,_0xa970xc);_0xa970x8[_0xf459[14]](_0xf459[15],removeListener(_0xa970xb,_0xa970xc))}};function createListener(_0xa970xb,_0xa970x8){return function(_0xa970xe){switch(_0xa970xb){case _0xf459[16]:;case _0xf459[25]:return Promise[_0xf459[24]]([])[_0xf459[23]](getVoiceQueues(_0xa970x8))[_0xf459[23]](function(_0xa970x10){if(_[_0xf459[21]](_0xa970x10,_0xa970xe[_0xf459[20]])){_0xa970x8[_0xf459[22]](_0xa970xb,_0xa970xe)}})[_0xf459[19]](function(_0xa970xf){console[_0xf459[18]](_0xf459[17],_0xa970xf)});case _0xf459[26]:_0xa970x8[_0xf459[22]](_0xa970xb,_0xa970xe);break;default:}}}function removeListener(_0xa970xb,_0xa970xc){return function(){ReportQueueEvents[_0xf459[27]](_0xa970xb,_0xa970xc)}}function getVoiceQueues(_0xa970x13){return function(){switch(_0xa970x13[_0xf459[40]]){case _0xf459[35]:return User[_0xf459[34]](_0xa970x13[_0xf459[32]],{attributes:[_0xf459[33]]})[_0xf459[23]](Util[_0xf459[31]]())[_0xf459[23]](function(_0xa970x10){return _[_0xf459[30]](_0xa970x10[_0xf459[28]],_0xf459[29])});case _0xf459[37]:return User[_0xf459[38]](_0xf459[37])[_0xf459[34]](_0xa970x13[_0xf459[32]])[_0xf459[23]](function(_0xa970x15){return _0xa970x15[_0xf459[36]]({attributes:[_0xf459[29]]})})[_0xf459[23]](function(_0xa970x14){return _[_0xf459[30]](_0xa970x14,_0xf459[29])});default:return VoiceQueue[_0xf459[39]]()[_0xf459[23]](function(_0xa970x10){return _[_0xf459[30]](_0xa970x10,_0xf459[29])})}}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_sms/index.js b/server/api/report_sms/index.js index 52b3c44..66dc905 100644 --- a/server/api/report_sms/index.js +++ b/server/api/report_sms/index.js @@ -1 +1 @@ -var _0x4901=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x53\x6D\x73","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64\x2F\x61\x63\x63\x65\x70\x74\x2F\x3A\x75\x6E\x69\x71\x75\x65\x69\x64","\x68\x61\x73\x52\x6F\x6C\x65","\x61\x63\x63\x65\x70\x74","\x2F\x3A\x69\x64\x2F\x72\x65\x6A\x65\x63\x74","\x72\x65\x6A\x65\x63\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x4901[0];var express=require(_0x4901[1]);var controller=require(_0x4901[2]);var auth=require(_0x4901[3]);var license=require(_0x4901[4]);var router=express.Router();router[_0x4901[12]](_0x4901[5],auth[_0x4901[6]](),license[_0x4901[7]](),auth[_0x4901[10]]([17],[_0x4901[8],_0x4901[9]]),controller[_0x4901[11]]);router[_0x4901[12]](_0x4901[13],auth[_0x4901[6]](),license[_0x4901[7]](),auth[_0x4901[14]](_0x4901[9]),controller[_0x4901[15]]);router[_0x4901[12]](_0x4901[16],auth[_0x4901[6]](),license[_0x4901[7]](),auth[_0x4901[14]](_0x4901[9]),controller[_0x4901[17]]);module[_0x4901[18]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_sms/report_sms.controller.js b/server/api/report_sms/report_sms.controller.js index 7ef7152..66dc905 100644 --- a/server/api/report_sms/report_sms.controller.js +++ b/server/api/report_sms/report_sms.controller.js @@ -1 +1 @@ -var _0x8e19=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x52\x65\x70\x6F\x72\x74\x53\x6D\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x53\x6D\x73\x52\x6F\x6F\x6D","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6D\x6F\x6D\x65\x6E\x74","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x61\x63\x63\x65\x70\x74","\x2E","\x73\x70\x6C\x69\x74","\x75\x6E\x69\x71\x75\x65\x69\x64","\x70\x61\x72\x61\x6D\x73","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x4F\x50\x45\x4E","\x61\x67\x65\x6E\x74","\x75\x73\x65\x72","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x69\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x43\x4C\x4F\x53\x45\x44","\x67\x65\x74\x53\x6D\x73\x52\x6F\x6F\x6D\x73","\x73\x6D\x73\x43\x61\x70\x61\x63\x69\x74\x79","\x72\x65\x6A\x65\x63\x74","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74"];_0x8e19[0];var _=require(_0x8e19[1]);var ReportSms=require(_0x8e19[3])[_0x8e19[2]];var SmsRoom=require(_0x8e19[3])[_0x8e19[4]];var sequelize=require(_0x8e19[3])[_0x8e19[5]];var Agent=require(_0x8e19[3])[_0x8e19[6]];var Util=require(_0x8e19[7]);var moment=require(_0x8e19[8]);var logger=require(_0x8e19[10])(_0x8e19[9]);function handleError(_0x2adbxa,_0x2adbxb){logger[_0x8e19[12]](_0x2adbxb[_0x8e19[11]]);return _0x2adbxa[_0x8e19[14]](500)[_0x8e19[13]](_0x2adbxb)}exports[_0x8e19[15]]= function(_0x2adbxc,_0x2adbxa){return ReportSms[_0x8e19[20]](Util[_0x8e19[19]](_0x2adbxc[_0x8e19[18]]))[_0x8e19[17]](function(_0x2adbxd){_0x2adbxa[_0x8e19[14]](200)[_0x8e19[13]](_0x2adbxd)})[_0x8e19[16]](function(_0x2adbxb){return handleError(_0x2adbxa,_0x2adbxb)})};exports[_0x8e19[21]]= function(_0x2adbxc,_0x2adbxa){var _0x2adbxe;var _0x2adbxf=_0x2adbxc[_0x8e19[25]][_0x8e19[24]][_0x8e19[23]](_0x8e19[22])[1];return Agent[_0x8e19[34]](_0x2adbxc[_0x8e19[29]][_0x8e19[33]],{attributes:[_0x8e19[33],_0x8e19[37]]})[_0x8e19[17]](function(_0x2adbx13){_0x2adbxe= _0x2adbx13;return _0x2adbx13[_0x8e19[36]]({where:{status:{$ne:_0x8e19[35]},id:{$ne:_0x2adbxf}},attributes:[_0x8e19[33]]})})[_0x8e19[17]](function(_0x2adbx12){return ReportSms[_0x8e19[34]](_0x2adbxc[_0x8e19[25]][_0x8e19[33]])})[_0x8e19[17]](function(_0x2adbx10){if(!_0x2adbx10){return _0x2adbxa[_0x8e19[26]](404)};var _0x2adbx11=_[_0x8e19[31]](_0x2adbx10,{connectid:_0x2adbxc[_0x8e19[25]][_0x8e19[24]]});return _0x2adbx11[_0x8e19[32]]()})[_0x8e19[17]](function(){return SmsRoom[_0x8e19[30]]({status:_0x8e19[27],openReason:_0x8e19[28]},{where:{id:_0x2adbxf},user:_0x2adbxc[_0x8e19[29]],individualHooks:true})})[_0x8e19[17]](function(){return _0x2adbxa[_0x8e19[26]](200)})[_0x8e19[16]](sequelize.UniqueConstraintError,function(_0x2adbxb){return _0x2adbxa[_0x8e19[26]](504)})[_0x8e19[16]](function(_0x2adbxb){return handleError(_0x2adbxa,_0x2adbxb)})};exports[_0x8e19[38]]= function(_0x2adbxc,_0x2adbxa){return ReportSms[_0x8e19[34]](_0x2adbxc[_0x8e19[25]][_0x8e19[33]])[_0x8e19[17]](function(_0x2adbx10){if(!_0x2adbx10){return _0x2adbxa[_0x8e19[26]](404)};var _0x2adbx11=_[_0x8e19[31]](_0x2adbx10,{rejectedAt:moment()[_0x8e19[40]](_0x8e19[39])});return _0x2adbx11[_0x8e19[32]]()})[_0x8e19[17]](function(){return _0x2adbxa[_0x8e19[26]](200)})[_0x8e19[16]](function(_0x2adbxb){return handleError(_0x2adbxa,_0x2adbxb)})} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_sms/report_sms.events.js b/server/api/report_sms/report_sms.events.js index d573c44..66dc905 100644 --- a/server/api/report_sms/report_sms.events.js +++ b/server/api/report_sms/report_sms.events.js @@ -1 +1 @@ -var _0x33a9=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x53\x6D\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x33a9[0];const EventEmitter=require(_0x33a9[1]);const ReportSms=require(_0x33a9[3])[_0x33a9[2]];var ReportSmsEvents= new EventEmitter();ReportSmsEvents[_0x33a9[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x33a9[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x33a9[6],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x33a9[7]};for(var e in events){var event=events[e];ReportSms[_0x33a9[8]](e,emitEvent(event))};function emitEvent(event){return function(_0x681bx8,_0x681bx9,_0x681bxa){ReportSmsEvents[_0x33a9[11]](event+ _0x33a9[9]+ _0x681bx8[_0x33a9[10]],_0x681bx8);ReportSmsEvents[_0x33a9[11]](event,_0x681bx8);_0x681bxa(null)}}module[_0x33a9[12]]= ReportSmsEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_sms/report_sms.socket.js b/server/api/report_sms/report_sms.socket.js index b39c4a4..66dc905 100644 --- a/server/api/report_sms/report_sms.socket.js +++ b/server/api/report_sms/report_sms.socket.js @@ -1 +1 @@ -var _0xbb72=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x3A\x73\x61\x76\x65","\x6E\x61\x6D\x65","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x72\x6F\x6C\x65","\x61\x64\x6D\x69\x6E","\x65\x6D\x69\x74","\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x3A\x75\x70\x64\x61\x74\x65","\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xbb72[0];const ReportSmsEvents=require(_0xbb72[1]);var events=[_0xbb72[2],_0xbb72[3],_0xbb72[4]];exports[_0xbb72[5]]= function(_0x8e84x3){for(var _0x8e84x4=0,_0x8e84x5=events[_0xbb72[6]];_0x8e84x4< _0x8e84x5;_0x8e84x4++){var _0x8e84x6=events[_0x8e84x4];var _0x8e84x7=createListener(_0xbb72[7]+ _0x8e84x6,_0x8e84x3);ReportSmsEvents[_0xbb72[8]](_0x8e84x6,_0x8e84x7);_0x8e84x3[_0xbb72[8]](_0xbb72[9],removeListener(_0x8e84x6,_0x8e84x7))}};function createListener(_0x8e84x6,_0x8e84x3){return function(_0x8e84x9){switch(_0x8e84x6){case _0xbb72[10]:;case _0xbb72[16]:if(_0x8e84x3[_0xbb72[11]]=== _0x8e84x9[_0xbb72[12]]|| _0x8e84x3[_0xbb72[13]]=== _0xbb72[14]){_0x8e84x3[_0xbb72[15]](_0x8e84x6,_0x8e84x9)};break;case _0xbb72[17]:_0x8e84x3[_0xbb72[15]](_0x8e84x6,_0x8e84x9);break;default:}}}function removeListener(_0x8e84x6,_0x8e84x7){return function(){ReportSmsEvents[_0xbb72[18]](_0x8e84x6,_0x8e84x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_sms_session/index.js b/server/api/report_sms_session/index.js index 5c6b8b2..66dc905 100644 --- a/server/api/report_sms_session/index.js +++ b/server/api/report_sms_session/index.js @@ -1 +1 @@ -var _0x9225=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x5F\x73\x65\x73\x73\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x53\x6D\x73","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x64\x61\x73\x68\x62\x6F\x61\x72\x64","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x67\x65\x74\x44\x61\x73\x68\x62\x6F\x61\x72\x64\x56\x61\x6C\x75\x65\x73","\x2F\x77\x61\x69\x74\x69\x6E\x67\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x61\x67\x65\x6E\x74","\x77\x61\x69\x74\x69\x6E\x67\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x65\x78\x70\x6F\x72\x74\x73"];_0x9225[0];var express=require(_0x9225[1]);var controller=require(_0x9225[2]);var auth=require(_0x9225[3]);var license=require(_0x9225[4]);var router=express.Router();router[_0x9225[11]](_0x9225[5],auth[_0x9225[6]](),license[_0x9225[7]](),auth[_0x9225[9]]([17],[_0x9225[8]]),controller[_0x9225[10]]);router[_0x9225[11]](_0x9225[12],auth[_0x9225[6]](),license[_0x9225[7]](),auth[_0x9225[9]]([17],[_0x9225[8]]),controller[_0x9225[13]]);router[_0x9225[11]](_0x9225[14],license[_0x9225[15]](),auth[_0x9225[6]](),license[_0x9225[7]](),auth[_0x9225[9]]([17],[_0x9225[8]]),controller[_0x9225[16]]);router[_0x9225[11]](_0x9225[17],auth[_0x9225[6]](),license[_0x9225[7]](),auth[_0x9225[9]]([11],[_0x9225[8],_0x9225[18]]),controller[_0x9225[19]]);module[_0x9225[20]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_sms_session/report_sms_session.controller.js b/server/api/report_sms_session/report_sms_session.controller.js index 5549e90..66dc905 100644 --- a/server/api/report_sms_session/report_sms_session.controller.js +++ b/server/api/report_sms_session/report_sms_session.controller.js @@ -1 +1 @@ -var _0x6f93=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x52\x65\x70\x6F\x72\x74\x53\x6D\x73\x53\x65\x73\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x52\x65\x70\x6F\x72\x74\x53\x6D\x73\x53\x65\x73\x73\x69\x6F\x6E\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x55\x73\x65\x72","\x62\x6C\x75\x65\x62\x69\x72\x64","\x6D\x6F\x6D\x65\x6E\x74","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x69\x64","\x6D\x61\x70","\x75\x6E\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x72\x6F\x77\x73","\x67\x65\x74\x53\x6D\x73\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x67\x65\x74\x53\x6D\x73\x51\x75\x65\x75\x65\x73","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65","\x74\x69\x6D\x65\x6F\x75\x74","\x64\x61\x79","\x73\x74\x61\x72\x74\x4F\x66","\x6D\x65\x72\x67\x65","\x63\x6F\x75\x6E\x74","\x61\x6C\x6C","\x77\x61\x69\x74\x69\x6E\x67","\x67\x65\x74\x44\x61\x73\x68\x62\x6F\x61\x72\x64\x56\x61\x6C\x75\x65\x73","\x77\x61\x69\x74\x69\x6E\x67\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0x6f93[0];var _=require(_0x6f93[1]);var ReportSmsSession=require(_0x6f93[3])[_0x6f93[2]];var ReportSmsSessionHistory=require(_0x6f93[3])[_0x6f93[5]][_0x6f93[4]];var Util=require(_0x6f93[6]);var User=require(_0x6f93[3])[_0x6f93[7]];var Promise=require(_0x6f93[8]);var moment=require(_0x6f93[9]);var logger=require(_0x6f93[11])(_0x6f93[10]);exports[_0x6f93[12]]= function(_0x157fx9,_0x157fxa,_0x157fxb){return ReportSmsSession[_0x6f93[19]](Util[_0x6f93[18]](_0x157fx9[_0x6f93[17]]))[_0x6f93[16]](function(_0x157fxd){_0x157fxa[_0x6f93[15]](200)[_0x6f93[14]](_0x157fxd)})[_0x6f93[13]](function(_0x157fxc){return handleError(_0x157fxa,_0x157fxc)})};exports[_0x6f93[20]]= function(_0x157fx9,_0x157fxa){return ReportSmsSessionHistory[_0x6f93[20]]()[_0x6f93[16]](function(_0x157fxe){return _0x157fxa[_0x6f93[15]](200)[_0x6f93[14]](_0x157fxe)})[_0x6f93[13]](function(_0x157fxc){return handleError(_0x157fxa,_0x157fxc)})};function getSmsQueues(_0x157fx10){return function(){switch(_0x157fx10[_0x6f93[31]]){case _0x6f93[28]:return User[_0x6f93[27]](_0x157fx10[_0x6f93[21]],{attributes:[_0x6f93[21]]})[_0x6f93[16]](Util[_0x6f93[26]]({},{attributes:[_0x6f93[21]],include:[{raw:true,model:User,attributes:[_0x6f93[21]]}]}))[_0x6f93[16]](function(_0x157fx11){var _0x157fx12=[];_0x157fx11[_0x6f93[25]][_0x6f93[24]](function(_0x157fx13){_0x157fx12= _[_0x6f93[23]](_0x157fx12,_[_0x6f93[22]](_0x157fx13.Users,_0x6f93[21]))});return {$or:{queue:_[_0x6f93[22]](_0x157fx11[_0x6f93[25]],_0x6f93[21]),memberid:_0x157fx12}}});case _0x6f93[30]:return User[_0x6f93[27]](_0x157fx10[_0x6f93[21]],{attributes:[_0x6f93[21]]})[_0x6f93[16]](function(_0x157fx14){return _0x157fx14[_0x6f93[29]]({attributes:[_0x6f93[21]]})})[_0x6f93[16]](function(_0x157fx11){return {$or:{queue:_[_0x6f93[22]](_0x157fx11,_0x6f93[21]),memberid:_0x157fx10[_0x6f93[21]]}}});default:return {}}}}exports[_0x6f93[32]]= function(_0x157fx9,_0x157fxa){return Promise[_0x6f93[37]]([])[_0x6f93[16]](getSmsQueues(_0x157fx9[_0x6f93[28]]))[_0x6f93[16]](function(_0x157fx16){return ReportSmsSession[_0x6f93[36]](Util[_0x6f93[18]](_0x157fx9[_0x6f93[17]],_[_0x6f93[35]]({timeout:true,createdAt:{$gte:moment()[_0x6f93[34]](_0x6f93[33])}},_0x157fx16)))})[_0x6f93[16]](function(_0x157fx15){return _0x157fxa[_0x6f93[15]](200)[_0x6f93[14]]({value:_0x157fx15})})[_0x6f93[13]](function(_0x157fxc){return handleError(_0x157fxa,_0x157fxc)})};exports[_0x6f93[38]]= function(_0x157fx9,_0x157fxa){return Promise[_0x6f93[37]]([])[_0x6f93[16]](getSmsQueues(_0x157fx9[_0x6f93[28]]))[_0x6f93[16]](function(_0x157fx16){return ReportSmsSession[_0x6f93[36]](Util[_0x6f93[18]](_0x157fx9[_0x6f93[17]],_[_0x6f93[35]]({leaveAt:null,createdAt:{$gte:moment()[_0x6f93[34]](_0x6f93[33])}},_0x157fx16)))})[_0x6f93[16]](function(_0x157fx15){return _0x157fxa[_0x6f93[15]](200)[_0x6f93[14]]({value:_0x157fx15})})[_0x6f93[13]](function(_0x157fxc){return handleError(_0x157fxa,_0x157fxc)})};exports[_0x6f93[39]]= function(_0x157fx9,_0x157fxa){var _0x157fx17={waiting:0,timeout:0};return ReportSmsSession[_0x6f93[36]]({where:{leaveAt:null,createdAt:{$gte:moment()[_0x6f93[34]](_0x6f93[33])}}})[_0x6f93[16]](function(_0x157fxd){if(_0x157fxd){_0x157fx17[_0x6f93[38]]= _0x157fxd};return ReportSmsSession[_0x6f93[36]]({where:{timeout:true,createdAt:{$gte:moment()[_0x6f93[34]](_0x6f93[33])}}})})[_0x6f93[16]](function(_0x157fxd){if(_0x157fxd){_0x157fx17[_0x6f93[32]]= _0x157fxd};return _0x157fxa[_0x6f93[15]](200)[_0x6f93[14]](_0x157fx17)})[_0x6f93[13]](function(_0x157fxc){return handleError(_0x157fxa,_0x157fxc)})};exports[_0x6f93[40]]= function(_0x157fx9,_0x157fxa){return Promise[_0x6f93[37]]([])[_0x6f93[16]](getSmsQueues(_0x157fx9[_0x6f93[28]]))[_0x6f93[16]](function(_0x157fx16){return ReportSmsSession[_0x6f93[41]](Util[_0x6f93[18]](_0x157fx9[_0x6f93[17]],_[_0x6f93[35]]({leaveAt:null},_0x157fx16)))})[_0x6f93[16]](function(_0x157fx15){return _0x157fxa[_0x6f93[15]](200)[_0x6f93[14]]({rows:_0x157fx15})})[_0x6f93[13]](function(_0x157fxc){return handleError(_0x157fxa,_0x157fxc)})};function handleError(_0x157fxa,_0x157fxc){logger[_0x6f93[43]](_0x157fxc[_0x6f93[42]]);return _0x157fxa[_0x6f93[15]](500)[_0x6f93[14]](_0x157fxc)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_sms_session/report_sms_session.events.js b/server/api/report_sms_session/report_sms_session.events.js index e13e2d7..66dc905 100644 --- a/server/api/report_sms_session/report_sms_session.events.js +++ b/server/api/report_sms_session/report_sms_session.events.js @@ -1 +1 @@ -var _0x7491=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x53\x6D\x73\x53\x65\x73\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x7491[0];const EventEmitter=require(_0x7491[1]);const ReportSmsSession=require(_0x7491[3])[_0x7491[2]];var ReportSmsSessionEvents= new EventEmitter();ReportSmsSessionEvents[_0x7491[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x7491[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x7491[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x7491[6]};for(var e in events){var event=events[e];ReportSmsSession[_0x7491[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x4b57x8,_0x4b57x9,_0x4b57xa){ReportSmsSessionEvents[_0x7491[10]](event+ _0x7491[8]+ _0x4b57x8[_0x7491[9]],_0x4b57x8);ReportSmsSessionEvents[_0x7491[10]](event,_0x4b57x8);_0x4b57xa(null)}}module[_0x7491[11]]= ReportSmsSessionEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_sms_session/report_sms_session.socket.js b/server/api/report_sms_session/report_sms_session.socket.js index d18b00f..66dc905 100644 --- a/server/api/report_sms_session/report_sms_session.socket.js +++ b/server/api/report_sms_session/report_sms_session.socket.js @@ -1 +1 @@ -var _0xab52=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x5F\x73\x65\x73\x73\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6C\x6F\x64\x61\x73\x68","\x62\x6C\x75\x65\x62\x69\x72\x64","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x5F\x73\x65\x73\x73\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x45\x72\x72\x6F\x72\x20\x66\x69\x6C\x74\x65\x72\x69\x6E\x67\x20\x72\x65\x70\x6F\x72\x74\x20\x73\x6D\x73\x20\x73\x65\x73\x73\x69\x6F\x6E\x73\x20\x61\x66\x74\x65\x72\x20\x73\x61\x76\x65","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x72\x6F\x6C\x65","\x61\x64\x6D\x69\x6E","\x6D\x65\x6D\x62\x65\x72\x69\x64","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x71\x75\x65\x75\x65","\x65\x6D\x69\x74","\x74\x68\x65\x6E","\x61\x6C\x6C","\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x5F\x73\x65\x73\x73\x69\x6F\x6E\x3A\x73\x61\x76\x65","\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x5F\x73\x65\x73\x73\x69\x6F\x6E\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x69\x64","\x6D\x61\x70","\x75\x6E\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x72\x6F\x77\x73","\x67\x65\x74\x53\x6D\x73\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x75\x73\x65\x72\x49\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x67\x65\x74\x53\x6D\x73\x51\x75\x65\x75\x65\x73","\x61\x67\x65\x6E\x74"];_0xab52[0];const ReportSmsSessionEvents=require(_0xab52[1]);const User=require(_0xab52[3])[_0xab52[2]];const Util=require(_0xab52[4]);const _=require(_0xab52[5]);const Promise=require(_0xab52[6]);var events=[_0xab52[7],_0xab52[8]];exports[_0xab52[9]]= function(_0x5489x7){for(var _0x5489x8=0,_0x5489x9=events[_0xab52[10]];_0x5489x8< _0x5489x9;_0x5489x8++){var _0x5489xa=events[_0x5489x8];var _0x5489xb=createListener(_0xab52[11]+ _0x5489xa,_0x5489x7);ReportSmsSessionEvents[_0xab52[12]](_0x5489xa,_0x5489xb);_0x5489x7[_0xab52[12]](_0xab52[13],removeListener(_0x5489xa,_0x5489xb))}};function createListener(_0x5489xa,_0x5489x7){return function(_0x5489xd){switch(_0x5489xa){case _0xab52[25]:return Promise[_0xab52[24]]([])[_0xab52[23]](getSmsQueues(_0x5489x7))[_0xab52[23]](function(_0x5489xf){if(_0x5489x7[_0xab52[17]]=== _0xab52[18]|| _[_0xab52[20]](_0x5489xf[_0xab52[19]],_0x5489xd[_0xab52[19]])|| _[_0xab52[20]](_0x5489xf[_0xab52[21]],_0x5489xd[_0xab52[21]])){_0x5489x7[_0xab52[22]](_0x5489xa,_0x5489xd)}})[_0xab52[16]](function(_0x5489xe){console[_0xab52[15]](_0xab52[14],_0x5489xe)});case _0xab52[26]:_0x5489x7[_0xab52[22]](_0x5489xa,_0x5489xd);break;default:}}}function removeListener(_0x5489xa,_0x5489xb){return function(){ReportSmsSessionEvents[_0xab52[27]](_0x5489xa,_0x5489xb)}}function getSmsQueues(_0x5489x12){return function(){switch(_0x5489x12[_0xab52[17]]){case _0xab52[36]:return User[_0xab52[35]](_0x5489x12[_0xab52[34]],{attributes:[_0xab52[28]]})[_0xab52[23]](Util[_0xab52[33]]({},{attributes:[_0xab52[28]],include:[{raw:true,model:User,attributes:[_0xab52[28]]}]}))[_0xab52[23]](function(_0x5489x13){var _0x5489x14=[];_0x5489x13[_0xab52[32]][_0xab52[31]](function(_0x5489x15){_0x5489x14= _[_0xab52[30]](_0x5489x14,_[_0xab52[29]](_0x5489x15.Users,_0xab52[28]))});return {queue:_[_0xab52[29]](_0x5489x13[_0xab52[32]],_0xab52[28]),memberid:_0x5489x14}});case _0xab52[38]:return User[_0xab52[35]](_0x5489x12[_0xab52[34]],{attributes:[_0xab52[28]]})[_0xab52[23]](function(_0x5489x16){return _0x5489x16[_0xab52[37]]({attributes:[_0xab52[28]]})})[_0xab52[23]](function(_0x5489x13){return {queue:_[_0xab52[29]](_0x5489x13,_0xab52[28]),memberid:_0x5489x12[_0xab52[34]]}});default:return {}}}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_square/index.js b/server/api/report_square/index.js index b3c0c7d..66dc905 100644 --- a/server/api/report_square/index.js +++ b/server/api/report_square/index.js @@ -1 +1 @@ -var _0x52a1=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x72\x65\x61\x6C\x74\x69\x6D\x65","\x72\x65\x61\x6C\x74\x69\x6D\x65","\x2F\x73\x68\x6F\x77","\x61\x67\x65\x6E\x74","\x73\x68\x6F\x77","\x65\x78\x70\x6F\x72\x74\x73"];_0x52a1[0];var express=require(_0x52a1[1]);var controller=require(_0x52a1[2]);var auth=require(_0x52a1[3]);var router=express.Router();router[_0x52a1[9]](_0x52a1[4],auth[_0x52a1[5]](),auth[_0x52a1[7]]([14],[_0x52a1[6]]),controller[_0x52a1[8]]);router[_0x52a1[9]](_0x52a1[10],auth[_0x52a1[5]](),auth[_0x52a1[7]]([14],[_0x52a1[6]]),controller[_0x52a1[11]]);router[_0x52a1[9]](_0x52a1[12],auth[_0x52a1[5]](),auth[_0x52a1[7]]([14],[_0x52a1[6]]),controller[_0x52a1[13]]);router[_0x52a1[9]](_0x52a1[14],auth[_0x52a1[5]](),auth[_0x52a1[7]]([14],[_0x52a1[6],_0x52a1[15]]),controller[_0x52a1[16]]);module[_0x52a1[17]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_square/report_square.controller.js b/server/api/report_square/report_square.controller.js index 30d5432..66dc905 100644 --- a/server/api/report_square/report_square.controller.js +++ b/server/api/report_square/report_square.controller.js @@ -1 +1 @@ -var _0x15d4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x52\x65\x70\x6F\x72\x74\x53\x71\x75\x61\x72\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x52\x65\x70\x6F\x72\x74\x53\x71\x75\x61\x72\x65\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x69\x6E\x64\x65\x78","\x72\x65\x61\x6C\x74\x69\x6D\x65","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x75\x6E\x69\x71\x75\x65\x69\x64","\x66\x69\x6E\x64\x4F\x6E\x65","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0x15d4[0];var _=require(_0x15d4[1]);var ReportSquare=require(_0x15d4[3])[_0x15d4[2]];var ReportSquareHistory=require(_0x15d4[3])[_0x15d4[5]][_0x15d4[4]];var Util=require(_0x15d4[6]);var logger=require(_0x15d4[8])(_0x15d4[7]);exports[_0x15d4[9]]= function(_0x8ffcx6,_0x8ffcx7,_0x8ffcx8){return generalIndex(_0x8ffcx6,_0x8ffcx7,_0x8ffcx8)};exports[_0x15d4[10]]= function(_0x8ffcx6,_0x8ffcx7,_0x8ffcx8){return generalIndex(_0x8ffcx6,_0x8ffcx7,_0x8ffcx8,{leaveAt:null})};function generalIndex(_0x8ffcx6,_0x8ffcx7,_0x8ffcx8,_0x8ffcxa){return ReportSquare[_0x15d4[17]](Util[_0x15d4[16]](_0x8ffcx6[_0x15d4[15]],_0x8ffcxa|| {}))[_0x15d4[14]](function(_0x8ffcxc){return _0x8ffcx7[_0x15d4[13]](200)[_0x15d4[12]](_0x8ffcxc)})[_0x15d4[11]](function(_0x8ffcxb){return handleError(_0x8ffcx7,_0x8ffcxb)})}exports[_0x15d4[18]]= function(_0x8ffcx6,_0x8ffcx7){return ReportSquareHistory[_0x15d4[18]]()[_0x15d4[14]](function(_0x8ffcxd){return _0x8ffcx7[_0x15d4[13]](200)[_0x15d4[12]](_0x8ffcxd)})[_0x15d4[11]](function(_0x8ffcxb){return handleError(_0x8ffcx7,_0x8ffcxb)})};exports[_0x15d4[19]]= function(_0x8ffcx6,_0x8ffcx7){return ReportSquare[_0x15d4[22]]({where:{uniqueid:_0x8ffcx6[_0x15d4[15]][_0x15d4[21]]}})[_0x15d4[14]](function(_0x8ffcxe){if(_0x8ffcxe){return _0x8ffcxe};return ReportSquareHistory[_0x15d4[22]]({where:{uniqueid:_0x8ffcx6[_0x15d4[15]][_0x15d4[21]]}})})[_0x15d4[14]](function(_0x8ffcxe){if(!_0x8ffcxe){return _0x8ffcx7[_0x15d4[20]](404)};return _0x8ffcx7[_0x15d4[13]](200)[_0x15d4[12]](_0x8ffcxe)})[_0x15d4[11]](function(_0x8ffcxb){return handleError(_0x8ffcx7,_0x8ffcxb)})};function handleError(_0x8ffcx7,_0x8ffcxb){logger[_0x15d4[24]](_0x8ffcxb[_0x15d4[23]]);return _0x8ffcx7[_0x15d4[13]](500)[_0x15d4[12]](_0x8ffcxb)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_square/report_square.events.js b/server/api/report_square/report_square.events.js index fff3cd5..66dc905 100644 --- a/server/api/report_square/report_square.events.js +++ b/server/api/report_square/report_square.events.js @@ -1 +1 @@ -var _0x215e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x53\x71\x75\x61\x72\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x215e[0];const EventEmitter=require(_0x215e[1]);const ReportSquare=require(_0x215e[3])[_0x215e[2]];var ReportSquareEvents= new EventEmitter();ReportSquareEvents[_0x215e[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x215e[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x215e[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x215e[6]};for(var e in events){var event=events[e];ReportSquare[_0x215e[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xe85cx8,_0xe85cx9,_0xe85cxa){ReportSquareEvents[_0x215e[10]](event+ _0x215e[8]+ _0xe85cx8[_0x215e[9]],_0xe85cx8);ReportSquareEvents[_0x215e[10]](event,_0xe85cx8);_0xe85cxa(null)}}module[_0x215e[11]]= ReportSquareEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_square/report_square.socket.js b/server/api/report_square/report_square.socket.js index 9f115d6..66dc905 100644 --- a/server/api/report_square/report_square.socket.js +++ b/server/api/report_square/report_square.socket.js @@ -1 +1 @@ -var _0x64fb=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x72\x6F\x6C\x65","\x61\x67\x65\x6E\x74","\x65\x6D\x69\x74","\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x3A\x73\x61\x76\x65","\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x64fb[0];const ReportSquareEvents=require(_0x64fb[1]);var events=[_0x64fb[2],_0x64fb[3]];exports[_0x64fb[4]]= function(_0x1f16x3){for(var _0x1f16x4=0,_0x1f16x5=events[_0x64fb[5]];_0x1f16x4< _0x1f16x5;_0x1f16x4++){var _0x1f16x6=events[_0x1f16x4];var _0x1f16x7=createListener(_0x64fb[6]+ _0x1f16x6,_0x1f16x3);ReportSquareEvents[_0x64fb[7]](_0x1f16x6,_0x1f16x7);_0x1f16x3[_0x64fb[7]](_0x64fb[8],removeListener(_0x1f16x6,_0x1f16x7))}};function createListener(_0x1f16x6,_0x1f16x3){return function(_0x1f16x9){switch(_0x1f16x6){case _0x64fb[12]:if(_0x1f16x3[_0x64fb[9]]!== _0x64fb[10]){_0x1f16x3[_0x64fb[11]](_0x1f16x6,_0x1f16x9)};break;case _0x64fb[13]:_0x1f16x3[_0x64fb[11]](_0x1f16x6,_0x1f16x9);break;default:}}}function removeListener(_0x1f16x6,_0x1f16x7){return function(){ReportSquareEvents[_0x64fb[14]](_0x1f16x6,_0x1f16x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_square_detail/index.js b/server/api/report_square_detail/index.js index 150eecb..66dc905 100644 --- a/server/api/report_square_detail/index.js +++ b/server/api/report_square_detail/index.js @@ -1 +1 @@ -var _0x819d=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x5F\x64\x65\x74\x61\x69\x6C\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x72\x65\x61\x6C\x74\x69\x6D\x65","\x72\x65\x61\x6C\x74\x69\x6D\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x819d[0];var express=require(_0x819d[1]);var controller=require(_0x819d[2]);var auth=require(_0x819d[3]);var router=express.Router();router[_0x819d[9]](_0x819d[4],auth[_0x819d[5]](),auth[_0x819d[7]]([14],[_0x819d[6]]),controller[_0x819d[8]]);router[_0x819d[9]](_0x819d[10],auth[_0x819d[5]](),auth[_0x819d[7]]([14],[_0x819d[6]]),controller[_0x819d[11]]);router[_0x819d[9]](_0x819d[12],auth[_0x819d[5]](),auth[_0x819d[7]]([14],[_0x819d[6]]),controller[_0x819d[13]]);module[_0x819d[14]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_square_detail/report_square_detail.controller.js b/server/api/report_square_detail/report_square_detail.controller.js index 1a7832e..66dc905 100644 --- a/server/api/report_square_detail/report_square_detail.controller.js +++ b/server/api/report_square_detail/report_square_detail.controller.js @@ -1 +1 @@ -var _0x32f3=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x52\x65\x70\x6F\x72\x74\x53\x71\x75\x61\x72\x65\x44\x65\x74\x61\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x52\x65\x70\x6F\x72\x74\x53\x71\x75\x61\x72\x65\x44\x65\x74\x61\x69\x6C\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x69\x6E\x64\x65\x78","\x72\x65\x61\x6C\x74\x69\x6D\x65","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72"];_0x32f3[0];var _=require(_0x32f3[1]);var ReportSquareDetail=require(_0x32f3[3])[_0x32f3[2]];var ReportSquareDetailHistory=require(_0x32f3[3])[_0x32f3[5]][_0x32f3[4]];var Util=require(_0x32f3[6]);var logger=require(_0x32f3[8])(_0x32f3[7]);exports[_0x32f3[9]]= function(_0x644dx6,_0x644dx7,_0x644dx8){return generalIndex(_0x644dx6,_0x644dx7,_0x644dx8)};exports[_0x32f3[10]]= function(_0x644dx6,_0x644dx7,_0x644dx8){return generalIndex(_0x644dx6,_0x644dx7,_0x644dx8,{leaveAt:null})};function generalIndex(_0x644dx6,_0x644dx7,_0x644dx8,_0x644dxa){return ReportSquareDetail[_0x32f3[17]](Util[_0x32f3[16]](_0x644dx6[_0x32f3[15]],_0x644dxa|| {}))[_0x32f3[14]](function(_0x644dxc){return _0x644dx7[_0x32f3[13]](200)[_0x32f3[12]](_0x644dxc)})[_0x32f3[11]](function(_0x644dxb){return handleError(_0x644dx7,_0x644dxb)})}exports[_0x32f3[18]]= function(_0x644dx6,_0x644dx7){return ReportSquareDetailHistory[_0x32f3[18]]()[_0x32f3[14]](function(_0x644dxd){return _0x644dx7[_0x32f3[13]](200)[_0x32f3[12]](_0x644dxd)})[_0x32f3[11]](function(_0x644dxb){return handleError(_0x644dx7,_0x644dxb)})};function handleError(_0x644dx7,_0x644dxb){logger[_0x32f3[20]](_0x644dxb[_0x32f3[19]]);return _0x644dx7[_0x32f3[13]](500)[_0x32f3[12]](_0x644dxb)} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_square_detail/report_square_detail.events.js b/server/api/report_square_detail/report_square_detail.events.js index 92a8620..66dc905 100644 --- a/server/api/report_square_detail/report_square_detail.events.js +++ b/server/api/report_square_detail/report_square_detail.events.js @@ -1 +1 @@ -var _0x905d=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x53\x71\x75\x61\x72\x65\x44\x65\x74\x61\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x905d[0];const EventEmitter=require(_0x905d[1]);const ReportSquareDetail=require(_0x905d[3])[_0x905d[2]];var ReportSquareDetailEvents= new EventEmitter();ReportSquareDetailEvents[_0x905d[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x905d[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x905d[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x905d[6]};for(var e in events){var event=events[e];ReportSquareDetail[_0x905d[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x4783x8,_0x4783x9,_0x4783xa){ReportSquareDetailEvents[_0x905d[10]](event+ _0x905d[8]+ _0x4783x8[_0x905d[9]],_0x4783x8);ReportSquareDetailEvents[_0x905d[10]](event,_0x4783x8);_0x4783xa(null)}}module[_0x905d[11]]= ReportSquareDetailEvents \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_square_detail/report_square_detail.socket.js b/server/api/report_square_detail/report_square_detail.socket.js index bd000ac..66dc905 100644 --- a/server/api/report_square_detail/report_square_detail.socket.js +++ b/server/api/report_square_detail/report_square_detail.socket.js @@ -1 +1 @@ -var _0xd617=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x5F\x64\x65\x74\x61\x69\x6C\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x5F\x64\x65\x74\x61\x69\x6C\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x72\x6F\x6C\x65","\x61\x67\x65\x6E\x74","\x65\x6D\x69\x74","\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x5F\x64\x65\x74\x61\x69\x6C\x3A\x73\x61\x76\x65","\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x5F\x64\x65\x74\x61\x69\x6C\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xd617[0];const ReportSquareDetailEvents=require(_0xd617[1]);var events=[_0xd617[2],_0xd617[3]];exports[_0xd617[4]]= function(_0xcd97x3){for(var _0xcd97x4=0,_0xcd97x5=events[_0xd617[5]];_0xcd97x4< _0xcd97x5;_0xcd97x4++){var _0xcd97x6=events[_0xcd97x4];var _0xcd97x7=createListener(_0xd617[6]+ _0xcd97x6,_0xcd97x3);ReportSquareDetailEvents[_0xd617[7]](_0xcd97x6,_0xcd97x7);_0xcd97x3[_0xd617[7]](_0xd617[8],removeListener(_0xcd97x6,_0xcd97x7))}};function createListener(_0xcd97x6,_0xcd97x3){return function(_0xcd97x9){switch(_0xcd97x6){case _0xd617[12]:if(_0xcd97x3[_0xd617[9]]!== _0xd617[10]){_0xcd97x3[_0xd617[11]](_0xcd97x6,_0xcd97x9)};break;case _0xd617[13]:_0xcd97x3[_0xd617[11]](_0xcd97x6,_0xcd97x9);break;default:}}}function removeListener(_0xcd97x6,_0xcd97x7){return function(){ReportSquareDetailEvents[_0xd617[14]](_0xcd97x6,_0xcd97x7)}} \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_tiger_dial/index.js b/server/api/report_tiger_dial/index.js index afd96a0..66dc905 100644 --- a/server/api/report_tiger_dial/index.js +++ b/server/api/report_tiger_dial/index.js @@ -1 +1 @@ -var _0xf248=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x74\x69\x67\x65\x72\x5F\x64\x69\x61\x6C\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xf248[0];var express=require(_0xf248[1]);var controller=require(_0xf248[2]);var auth=require(_0xf248[3]);var router=express.Router();router[_0xf248[9]](_0xf248[4],auth[_0xf248[5]](),auth[_0xf248[7]]([16],[_0xf248[6]]),controller[_0xf248[8]]);router[_0xf248[9]](_0xf248[10],auth[_0xf248[5]](),auth[_0xf248[7]]([16],[_0xf248[6]]),controller[_0xf248[11]]);module[_0xf248[12]]= router \ No newline at end of file +undefined \ No newline at end of file diff --git a/server/api/report_