Linux vmi284606.contaboserver.net 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64
Apache/2.4.57 (Ubuntu)
: 167.86.127.34 | : 216.73.217.1
Cant Read [ /etc/named.conf ]
7.2.24-0ubuntu0.18.04.17
root
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
var /
www /
html /
moodle /
message /
amd /
build /
[ HOME SHELL ]
Name
Size
Permission
Action
.pkexec
[ DIR ]
drwxr-xr-x
GCONV_PATH=.
[ DIR ]
drwxr-xr-x
.mad-root
0
B
-rw-r--r--
message_drawer.min.js
6.98
KB
-rwxrwxrwx
message_drawer.min.js.map
18.02
KB
-rwxrwxrwx
message_drawer_events.min.js
1.55
KB
-rwxrwxrwx
message_drawer_events.min.js.m...
3.36
KB
-rwxrwxrwx
message_drawer_helper.min.js
880
B
-rwxrwxrwx
message_drawer_helper.min.js.m...
3
KB
-rwxrwxrwx
message_drawer_lazy_load_list....
3.42
KB
-rwxrwxrwx
message_drawer_lazy_load_list....
12.31
KB
-rwxrwxrwx
message_drawer_router.min.js
4.11
KB
-rwxrwxrwx
message_drawer_router.min.js.m...
13.75
KB
-rwxrwxrwx
message_drawer_routes.min.js
568
B
-rwxrwxrwx
message_drawer_routes.min.js.m...
1.62
KB
-rwxrwxrwx
message_drawer_view_contact.mi...
1.02
KB
-rwxrwxrwx
message_drawer_view_contact.mi...
3.81
KB
-rwxrwxrwx
message_drawer_view_contacts.m...
3.1
KB
-rwxrwxrwx
message_drawer_view_contacts.m...
9.22
KB
-rwxrwxrwx
message_drawer_view_contacts_s...
2.68
KB
-rwxrwxrwx
message_drawer_view_contacts_s...
8.66
KB
-rwxrwxrwx
message_drawer_view_contacts_s...
1.98
KB
-rwxrwxrwx
message_drawer_view_contacts_s...
6.06
KB
-rwxrwxrwx
message_drawer_view_conversati...
41.56
KB
-rwxrwxrwx
message_drawer_view_conversati...
119.9
KB
-rwxrwxrwx
message_drawer_view_conversati...
5.96
KB
-rwxrwxrwx
message_drawer_view_conversati...
11.6
KB
-rwxrwxrwx
message_drawer_view_conversati...
20.67
KB
-rwxrwxrwx
message_drawer_view_conversati...
69.68
KB
-rwxrwxrwx
message_drawer_view_conversati...
24.72
KB
-rwxrwxrwx
message_drawer_view_conversati...
86.55
KB
-rwxrwxrwx
message_drawer_view_conversati...
11.14
KB
-rwxrwxrwx
message_drawer_view_conversati...
40.58
KB
-rwxrwxrwx
message_drawer_view_group_info...
2.27
KB
-rwxrwxrwx
message_drawer_view_group_info...
7.88
KB
-rwxrwxrwx
message_drawer_view_overview.m...
4.33
KB
-rwxrwxrwx
message_drawer_view_overview.m...
14.37
KB
-rwxrwxrwx
message_drawer_view_overview_s...
15.53
KB
-rwxrwxrwx
message_drawer_view_overview_s...
44.95
KB
-rwxrwxrwx
message_drawer_view_search.min...
14.13
KB
-rwxrwxrwx
message_drawer_view_search.min...
44.02
KB
-rwxrwxrwx
message_drawer_view_settings.m...
4.55
KB
-rwxrwxrwx
message_drawer_view_settings.m...
15.39
KB
-rwxrwxrwx
message_notification_preferenc...
1.02
KB
-rwxrwxrwx
message_notification_preferenc...
2.81
KB
-rwxrwxrwx
message_popover.min.js
1.46
KB
-rwxrwxrwx
message_popover.min.js.map
4.67
KB
-rwxrwxrwx
message_preferences.min.js
2.25
KB
-rwxrwxrwx
message_preferences.min.js.map
6.19
KB
-rwxrwxrwx
message_repository.min.js
12.94
KB
-rwxrwxrwx
message_repository.min.js.map
47.72
KB
-rwxrwxrwx
message_send_bulk.min.js
2.37
KB
-rwxrwxrwx
message_send_bulk.min.js.map
4.83
KB
-rwxrwxrwx
message_user_button.min.js
1.67
KB
-rwxrwxrwx
message_user_button.min.js.map
5.23
KB
-rwxrwxrwx
notification_preference.min.js
2.53
KB
-rwxrwxrwx
notification_preference.min.js...
7.47
KB
-rwxrwxrwx
notification_processor.min.js
1.4
KB
-rwxrwxrwx
notification_processor.min.js....
3.83
KB
-rwxrwxrwx
notification_processor_setting...
4.63
KB
-rwxrwxrwx
notification_processor_setting...
13.88
KB
-rwxrwxrwx
preferences_notifications_list...
3.6
KB
-rwxrwxrwx
preferences_notifications_list...
9.06
KB
-rwxrwxrwx
preferences_processor_form.min...
1.42
KB
-rwxrwxrwx
preferences_processor_form.min...
4.29
KB
-rwxrwxrwx
pwnkit
10.99
KB
-rwxr-xr-x
toggle_contact_button.min.js
2.12
KB
-rwxrwxrwx
toggle_contact_button.min.js.m...
7.91
KB
-rwxrwxrwx
Delete
Unzip
Zip
${this.title}
Close
Code Editor : message_repository.min.js.map
{"version":3,"file":"message_repository.min.js","sources":["../src/message_repository.js"],"sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see <http://www.gnu.org/licenses/>.\n\n/**\n * Retrieves messages from the server.\n *\n * @module core_message/message_repository\n * @class message_repository\n * @package message\n * @copyright 2016 Ryan Wyllie <ryan@moodle.com>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine(\n[\n 'jquery',\n 'core/ajax',\n 'core/notification',\n 'core_message/message_drawer_view_conversation_constants'\n], function(\n $,\n Ajax,\n Notification,\n Constants) {\n\n var CONVERSATION_TYPES = Constants.CONVERSATION_TYPES;\n\n /**\n * Retrieve a list of messages from the server.\n *\n * @param {object} args The request arguments:\n * @return {object} jQuery promise\n */\n var query = function(args) {\n // Normalise the arguments to use limit/offset rather than limitnum/limitfrom.\n if (typeof args.limit === 'undefined') {\n args.limit = 0;\n }\n\n if (typeof args.offset === 'undefined') {\n args.offset = 0;\n }\n\n if (typeof args.type === 'undefined') {\n args.type = null;\n }\n\n if (typeof args.favouritesonly === 'undefined') {\n args.favouritesonly = false;\n }\n\n args.limitfrom = args.offset;\n args.limitnum = args.limit;\n\n delete args.limit;\n delete args.offset;\n\n var request = {\n methodname: 'core_message_data_for_messagearea_conversations',\n args: args\n };\n\n var promise = Ajax.call([request])[0];\n\n promise.fail(Notification.exception);\n\n return promise;\n };\n\n /**\n * Count the number of unread conversations (one or more messages from a user)\n * for a given user.\n *\n * @param {object} args The request arguments:\n * @return {object} jQuery promise\n */\n var countUnreadConversations = function(args) {\n var request = {\n methodname: 'core_message_get_unread_conversations_count',\n args: args\n };\n\n var promise = Ajax.call([request])[0];\n\n promise.fail(Notification.exception);\n\n return promise;\n };\n\n /**\n * Mark all of unread messages for a user as read.\n *\n * @param {object} args The request arguments:\n * @return {object} jQuery promise\n */\n var markAllAsRead = function(args) {\n var request = {\n methodname: 'core_message_mark_all_messages_as_read',\n args: args\n };\n\n var promise = Ajax.call([request])[0];\n\n promise.fail(Notification.exception);\n\n return promise;\n };\n\n /**\n * Get contacts for given user.\n *\n * @param {int} userId The user id\n * @param {int} limit Limit for results\n * @param {int} offset Offset for results\n * @return {object} jQuery promise\n */\n var getContacts = function(userId, limit, offset) {\n var args = {\n userid: userId\n };\n\n if (typeof limit !== 'undefined') {\n args.limitnum = limit;\n }\n\n if (typeof offset !== 'undefined') {\n args.limitfrom = offset;\n }\n\n var request = {\n methodname: 'core_message_get_user_contacts',\n args: args\n };\n\n return Ajax.call([request])[0];\n };\n\n /**\n * Request profile information as a user for a given user.\n *\n * @param {int} userId The requesting user\n * @param {int} profileUserId The id of the user who's profile is being requested\n * @return {object} jQuery promise\n */\n var getProfile = function(userId, profileUserId) {\n var request = {\n methodname: 'core_message_data_for_messagearea_get_profile',\n args: {\n currentuserid: userId,\n otheruserid: profileUserId\n }\n };\n\n return Ajax.call([request])[0];\n };\n\n /**\n * Block a user.\n *\n * @param {int} userId The requesting user\n * @param {int} blockedUserId Id of user to block\n * @return {object} jQuery promise\n */\n var blockUser = function(userId, blockedUserId) {\n var requests = [\n {\n methodname: 'core_message_block_user',\n args: {\n userid: userId,\n blockeduserid: blockedUserId\n }\n },\n {\n methodname: 'core_message_get_member_info',\n args: {\n referenceuserid: userId,\n userids: [blockedUserId],\n includecontactrequests: true,\n includeprivacyinfo: true\n }\n }\n ];\n\n // Wrap both requests in a single promise so that we can catch an error\n // from either request.\n return $.when.apply(null, Ajax.call(requests)).then(function(reponse1, profiles) {\n // Only return the profile.\n return profiles.length ? profiles[0] : {};\n });\n };\n\n /**\n * Unblock a user.\n *\n * @param {int} userId The requesting user\n * @param {int} unblockedUserId Id of user to unblock\n * @return {object} jQuery promise\n */\n var unblockUser = function(userId, unblockedUserId) {\n var requests = [\n {\n methodname: 'core_message_unblock_user',\n args: {\n userid: userId,\n unblockeduserid: unblockedUserId\n }\n },\n {\n methodname: 'core_message_get_member_info',\n args: {\n referenceuserid: userId,\n userids: [unblockedUserId],\n includecontactrequests: true,\n includeprivacyinfo: true\n }\n }\n ];\n\n // Wrap both requests in a single promise so that we can catch an error\n // from either request.\n return $.when.apply(null, Ajax.call(requests)).then(function(reponse1, profiles) {\n // Only return the profile.\n return profiles.length ? profiles[0] : {};\n });\n };\n\n /**\n * Create a request to add a user as a contact.\n *\n * @param {int} userId The requesting user\n * @param {int[]} requestUserIds List of user ids to add\n * @return {object} jQuery promise\n */\n var createContactRequest = function(userId, requestUserIds) {\n var request = {\n methodname: 'core_message_create_contact_request',\n args: {\n userid: userId,\n requesteduserid: requestUserIds\n }\n };\n\n return Ajax.call([request])[0];\n };\n\n /**\n * Remove a list of users as contacts.\n *\n * @param {int} userId The requesting user\n * @param {int[]} contactUserIds List of user ids to add\n * @return {object} jQuery promise\n */\n var deleteContacts = function(userId, contactUserIds) {\n var requests = [\n {\n methodname: 'core_message_delete_contacts',\n args: {\n userid: userId,\n userids: contactUserIds\n }\n },\n {\n methodname: 'core_message_get_member_info',\n args: {\n referenceuserid: userId,\n userids: contactUserIds,\n includecontactrequests: true,\n includeprivacyinfo: true\n }\n }\n ];\n\n return $.when.apply(null, Ajax.call(requests)).then(function(response1, profiles) {\n // Return all of the profiles as an array.\n return profiles;\n });\n };\n\n /**\n * Get messages between two users.\n *\n * @param {int} currentUserId The requesting user\n * @param {int} conversationId Other user in the conversation\n * @param {int} limit Limit for results\n * @param {int} offset Offset for results\n * @param {bool} newestFirst Order results by newest first\n * @param {int} timeFrom Only return messages after this timestamp\n * @return {object} jQuery promise\n */\n var getMessages = function(currentUserId, conversationId, limit, offset, newestFirst, timeFrom) {\n var args = {\n currentuserid: currentUserId,\n convid: conversationId,\n newest: newestFirst ? true : false\n };\n\n if (typeof limit !== 'undefined') {\n args.limitnum = limit;\n }\n\n if (typeof offset !== 'undefined') {\n args.limitfrom = offset;\n }\n\n if (typeof timeFrom !== 'undefined') {\n args.timefrom = timeFrom;\n }\n\n var request = {\n methodname: 'core_message_get_conversation_messages',\n args: args\n };\n return Ajax.call([request])[0];\n };\n\n /**\n * Search for users.\n *\n * @param {int} userId The requesting user\n * @param {string} searchString Search string\n * @param {int} limit Limit for results\n * @param {int} offset Offset for results\n * @return {object} jQuery promise\n */\n var searchUsers = function(userId, searchString, limit, offset) {\n var args = {\n userid: userId,\n search: searchString\n };\n\n if (typeof limit !== 'undefined') {\n args.limitnum = limit;\n }\n\n if (typeof offset !== 'undefined') {\n args.limitfrom = offset;\n }\n\n var request = {\n methodname: 'core_message_message_search_users',\n args: args\n };\n\n return Ajax.call([request])[0];\n };\n\n /**\n * Search for messages.\n *\n * @param {int} userId The requesting user\n * @param {string} searchString Search string\n * @param {int} limit Limit for results\n * @param {int} offset Offset for results\n * @return {object} jQuery promise\n */\n var searchMessages = function(userId, searchString, limit, offset) {\n var args = {\n userid: userId,\n search: searchString\n };\n\n if (typeof limit !== 'undefined') {\n args.limitnum = limit;\n }\n\n if (typeof offset !== 'undefined') {\n args.limitfrom = offset;\n }\n\n var request = {\n methodname: 'core_message_data_for_messagearea_search_messages',\n args: args\n };\n\n return Ajax.call([request])[0];\n };\n\n /**\n * Send a list of messages to a user.\n *\n * @param {int} toUserId The recipient user id\n * @param {string[]} messages List of messages to send\n * @return {object} jQuery promise\n */\n var sendMessagesToUser = function(toUserId, messages) {\n var formattedMessages = messages.map(function(message) {\n return {\n touserid: toUserId,\n text: message\n };\n });\n var request = {\n methodname: 'core_message_send_instant_messages',\n args: {\n messages: formattedMessages\n }\n };\n\n return Ajax.call([request])[0]\n .then(function(results) {\n // Error handling for the weird way the old function works.\n var errors = results.reduce(function(carry, result) {\n if (result.errormessage) {\n carry.push(result.errormessage);\n }\n\n return carry;\n }, []);\n if (errors.length) {\n throw new Error(errors.join(\"\\n\"));\n }\n\n return results;\n })\n .then(function(results) {\n // Format the results to match the other send message function.\n return results.map(function(result) {\n return {\n id: result.msgid,\n text: result.text,\n timecreated: result.timecreated,\n useridfrom: result.useridfrom,\n conversationid: result.conversationid,\n candeletemessagesforallusers: result.candeletemessagesforallusers\n };\n });\n });\n };\n\n /**\n * Send a single message to a user.\n *\n * @param {int} toUserId The recipient user id\n * @param {string} text The message text\n * @return {object} jQuery promise\n */\n var sendMessageToUser = function(toUserId, text) {\n return sendMessagesToUser(toUserId, [text])\n .then(function(results) {\n return results[0];\n });\n };\n\n /**\n * Send messages to a conversation.\n *\n * @param {int} conversationId The conversation id\n * @param {string[]} messages List of messages to send\n * @return {object} jQuery promise\n */\n var sendMessagesToConversation = function(conversationId, messages) {\n var formattedMessages = messages.map(function(message) {\n return {\n text: message\n };\n });\n var request = {\n methodname: 'core_message_send_messages_to_conversation',\n args: {\n conversationid: conversationId,\n messages: formattedMessages\n }\n };\n\n return Ajax.call([request])[0];\n };\n\n /**\n * Send a message to a conversation.\n *\n * @param {int} conversationId The conversation id\n * @param {string} text The message text\n * @return {object} jQuery promise\n */\n var sendMessageToConversation = function(conversationId, text) {\n return sendMessagesToConversation(conversationId, [text])\n .then(function(result) {\n return result[0];\n });\n };\n\n /**\n * Save message preferences.\n *\n * @param {int} userId The owner of the preferences\n * @param {object[]} preferences New preferences values\n * @return {object} jQuery promise\n */\n var savePreferences = function(userId, preferences) {\n var request = {\n methodname: 'core_user_update_user_preferences',\n args: {\n userid: userId,\n preferences: preferences\n }\n };\n return Ajax.call([request])[0];\n };\n\n /**\n * Get the user's preferences.\n *\n * @param {int} userId The target user\n * @return {object} jQuery promise\n */\n var getPreferences = function(userId) {\n var request = {\n methodname: 'core_user_get_user_preferences',\n args: {\n userid: userId\n }\n };\n return Ajax.call([request])[0];\n };\n\n /**\n * Delete a list of messages.\n *\n * @param {int} userId The user to delete messages for\n * @param {int[]} messageIds List of message ids to delete\n * @return {object} jQuery promise\n */\n var deleteMessages = function(userId, messageIds) {\n return $.when.apply(null, Ajax.call(messageIds.map(function(messageId) {\n return {\n methodname: 'core_message_delete_message',\n args: {\n messageid: messageId,\n userid: userId\n }\n };\n })));\n };\n\n /**\n * Delete a list of messages for all users.\n *\n * @param {int} userId The user to delete messages for\n * @param {int[]} messageIds List of message ids to delete\n * @return {object} jQuery promise\n */\n var deleteMessagesForAllUsers = function(userId, messageIds) {\n return $.when.apply(null, Ajax.call(messageIds.map(function(messageId) {\n return {\n methodname: 'core_message_delete_message_for_all_users',\n args: {\n messageid: messageId,\n userid: userId\n }\n };\n })));\n };\n\n /**\n * Delete a conversation between two users.\n *\n * @param {int} userId The user to delete messages for\n * @param {int} conversationId The id of the conversation\n * @return {object} jQuery promise\n */\n var deleteConversation = function(userId, conversationId) {\n var request = {\n methodname: 'core_message_delete_conversations_by_id',\n args: {\n userid: userId,\n conversationids: [conversationId]\n }\n };\n return Ajax.call([request])[0];\n };\n\n /**\n * Get the list of contact requests for a user.\n *\n * @param {int} userId The user id\n * @return {object} jQuery promise\n */\n var getContactRequests = function(userId) {\n var request = {\n methodname: 'core_message_get_contact_requests',\n args: {\n userid: userId\n }\n };\n return Ajax.call([request])[0];\n };\n\n /**\n * Accept a contact request.\n *\n * @param {int} sendingUserId The user that sent the request\n * @param {int} recipientUserId The user that received the request\n * @return {object} jQuery promise\n */\n var acceptContactRequest = function(sendingUserId, recipientUserId) {\n var requests = [\n {\n methodname: 'core_message_confirm_contact_request',\n args: {\n userid: sendingUserId,\n requesteduserid: recipientUserId\n }\n },\n {\n methodname: 'core_message_get_member_info',\n args: {\n referenceuserid: recipientUserId,\n userids: [sendingUserId],\n includecontactrequests: true,\n includeprivacyinfo: true\n }\n }\n ];\n\n // Wrap both requests in a single promise so that we can catch an error\n // from either request.\n return $.when.apply(null, Ajax.call(requests)).then(function(reponse1, profiles) {\n // Only return the profile.\n return profiles.length ? profiles[0] : {};\n });\n };\n\n /**\n * Decline a contact request.\n *\n * @param {int} sendingUserId The user that sent the request\n * @param {int} recipientUserId The user that received the request\n * @return {object} jQuery promise\n */\n var declineContactRequest = function(sendingUserId, recipientUserId) {\n var requests = [\n {\n methodname: 'core_message_decline_contact_request',\n args: {\n userid: sendingUserId,\n requesteduserid: recipientUserId\n }\n },\n {\n methodname: 'core_message_get_member_info',\n args: {\n referenceuserid: recipientUserId,\n userids: [sendingUserId],\n includecontactrequests: true,\n includeprivacyinfo: true\n }\n }\n ];\n\n // Wrap both requests in a single promise so that we can catch an error\n // from either request.\n return $.when.apply(null, Ajax.call(requests)).then(function(reponse1, profiles) {\n // Only return the profile.\n return profiles.length ? profiles[0] : {};\n });\n };\n\n /**\n * Get a conversation.\n *\n * @param {int} loggedInUserId The logged in user\n * @param {int} conversationId The conversation id\n * @param {bool} includeContactRequests Incldue contact requests between members\n * @param {bool} includePrivacyInfo Include privacy info for members\n * @param {int} memberLimit Limit for members\n * @param {int} memberOffset Offset for members\n * @param {int} messageLimit Limit for messages\n * @param {int} messageOffset Offset for messages\n * @param {bool} newestMessagesFirst Order the messages by newest first\n * @return {object} jQuery promise\n */\n var getConversation = function(\n loggedInUserId,\n conversationId,\n includeContactRequests,\n includePrivacyInfo,\n memberLimit,\n memberOffset,\n messageLimit,\n messageOffset,\n newestMessagesFirst\n ) {\n var args = {\n userid: loggedInUserId,\n conversationid: conversationId\n };\n\n if (typeof includeContactRequests != 'undefined' && includeContactRequests !== null) {\n args.includecontactrequests = includeContactRequests;\n }\n\n if (typeof includePrivacyInfo != 'undefined' && includePrivacyInfo !== null) {\n args.includeprivacyinfo = includePrivacyInfo;\n }\n\n if (typeof memberLimit != 'undefined' && memberLimit !== null) {\n args.memberlimit = memberLimit;\n }\n\n if (typeof memberOffset != 'undefined' && memberOffset !== null) {\n args.memberoffset = memberOffset;\n }\n\n if (typeof messageLimit != 'undefined' && messageLimit !== null) {\n args.messagelimit = messageLimit;\n }\n\n if (typeof messageOffset != 'undefined' && messageOffset !== null) {\n args.messageoffset = messageOffset;\n }\n\n if (typeof newestMessagesFirst != 'undefined' && newestMessagesFirst !== null) {\n args.newestmessagesfirst = newestMessagesFirst;\n }\n\n var request = {\n methodname: 'core_message_get_conversation',\n args: args\n };\n\n return Ajax.call([request])[0];\n };\n\n /**\n * Get a conversation between users.\n *\n * @param {int} loggedInUserId The logged in user\n * @param {int} otherUserId The other user id\n * @param {bool} includeContactRequests Incldue contact requests between members\n * @param {bool} includePrivacyInfo Include privacy info for members\n * @param {int} memberLimit Limit for members\n * @param {int} memberOffset Offset for members\n * @param {int} messageLimit Limit for messages\n * @param {int} messageOffset Offset for messages\n * @param {bool} newestMessagesFirst Order the messages by newest first\n * @return {object} jQuery promise\n */\n var getConversationBetweenUsers = function(\n loggedInUserId,\n otherUserId,\n includeContactRequests,\n includePrivacyInfo,\n memberLimit,\n memberOffset,\n messageLimit,\n messageOffset,\n newestMessagesFirst\n ) {\n var args = {\n userid: loggedInUserId,\n otheruserid: otherUserId\n };\n\n if (typeof includeContactRequests != 'undefined' && includeContactRequests !== null) {\n args.includecontactrequests = includeContactRequests;\n }\n\n if (typeof includePrivacyInfo != 'undefined' && includePrivacyInfo !== null) {\n args.includeprivacyinfo = includePrivacyInfo;\n }\n\n if (typeof memberLimit != 'undefined' && memberLimit !== null) {\n args.memberlimit = memberLimit;\n }\n\n if (typeof memberOffset != 'undefined' && memberOffset !== null) {\n args.memberoffset = memberOffset;\n }\n\n if (typeof messageLimit != 'undefined' && messageLimit !== null) {\n args.messagelimit = messageLimit;\n }\n\n if (typeof messageOffset != 'undefined' && messageOffset !== null) {\n args.messageoffset = messageOffset;\n }\n\n if (typeof newestMessagesFirst != 'undefined' && newestMessagesFirst !== null) {\n args.newestmessagesfirst = newestMessagesFirst;\n }\n\n var request = {\n methodname: 'core_message_get_conversation_between_users',\n args: args\n };\n\n return Ajax.call([request])[0];\n };\n\n /**\n * Get a self-conversation.\n *\n * @param {int} loggedInUserId The logged in user\n * @param {int} messageLimit Limit for messages\n * @param {int} messageOffset Offset for messages\n * @param {bool} newestMessagesFirst Order the messages by newest first\n * @return {object} jQuery promise\n */\n var getSelfConversation = function(\n loggedInUserId,\n messageLimit,\n messageOffset,\n newestMessagesFirst\n ) {\n var args = {\n userid: loggedInUserId\n };\n\n if (typeof messageLimit != 'undefined' && messageLimit !== null) {\n args.messagelimit = messageLimit;\n }\n\n if (typeof messageOffset != 'undefined' && messageOffset !== null) {\n args.messageoffset = messageOffset;\n }\n\n if (typeof newestMessagesFirst != 'undefined' && newestMessagesFirst !== null) {\n args.newestmessagesfirst = newestMessagesFirst;\n }\n\n var request = {\n methodname: 'core_message_get_self_conversation',\n args: args\n };\n\n return Ajax.call([request])[0];\n };\n\n /**\n * Get the conversations for a user.\n *\n * @param {int} userId The logged in user\n * @param {int|null} type The type of conversation to get\n * @param {int} limit Limit for results\n * @param {int} offset Offset for results\n * @param {bool|null} favourites If favourites should be included or not\n * @return {object} jQuery promise\n */\n var getConversations = function(\n userId,\n type,\n limit,\n offset,\n favourites,\n mergeself\n ) {\n var args = {\n userid: userId,\n type: type\n };\n\n if (typeof limit != 'undefined' && limit !== null) {\n args.limitnum = limit;\n }\n\n if (typeof offset != 'undefined' && offset !== null) {\n args.limitfrom = offset;\n }\n\n if (typeof favourites != 'undefined' && favourites !== null) {\n args.favourites = favourites;\n }\n\n if (typeof mergeself != 'undefined' && mergeself !== null) {\n args.mergeself = mergeself;\n }\n\n var request = {\n methodname: 'core_message_get_conversations',\n args: args\n };\n\n return Ajax.call([request])[0]\n .then(function(result) {\n if (result.conversations.length) {\n result.conversations = result.conversations.map(function(conversation) {\n if (conversation.type == CONVERSATION_TYPES.PRIVATE || conversation.type == CONVERSATION_TYPES.SELF) {\n var otherUser = conversation.members.length ? conversation.members[0] : null;\n\n if (otherUser) {\n conversation.name = conversation.name ? conversation.name : otherUser.fullname;\n conversation.imageurl = conversation.imageurl ? conversation.imageurl : otherUser.profileimageurl;\n }\n }\n\n return conversation;\n });\n }\n\n return result;\n });\n };\n\n /**\n * Get the conversations for a user.\n *\n * @param {int} conversationId The conversation id\n * @param {int} loggedInUserId The logged in user\n * @param {int} limit Limit for results\n * @param {int} offset Offset for results\n * @param {bool} includeContactRequests If contact requests should be included in result\n * @return {object} jQuery promise\n */\n var getConversationMembers = function(conversationId, loggedInUserId, limit, offset, includeContactRequests) {\n var args = {\n userid: loggedInUserId,\n conversationid: conversationId\n };\n\n if (typeof limit != 'undefined' && limit !== null) {\n args.limitnum = limit;\n }\n\n if (typeof offset != 'undefined' && offset !== null) {\n args.limitfrom = offset;\n }\n\n if (typeof includeContactRequests != 'undefined' && includeContactRequests !== null) {\n args.includecontactrequests = includeContactRequests;\n }\n\n var request = {\n methodname: 'core_message_get_conversation_members',\n args: args\n };\n\n return Ajax.call([request])[0];\n };\n\n /**\n * Set a list of conversations to set as favourites for the given user.\n *\n * @param {int} userId The user id\n * @param {array} conversationIds List of conversation ids to set as favourite\n * @return {object} jQuery promise\n */\n var setFavouriteConversations = function(userId, conversationIds) {\n\n var request = {\n methodname: 'core_message_set_favourite_conversations',\n args: {\n userid: userId,\n conversations: conversationIds\n }\n };\n return Ajax.call([request])[0];\n };\n\n /**\n * Set a list of conversations to unset as favourites for the given user.\n *\n * @param {int} userId The user id\n * @param {array} conversationIds List of conversation ids to unset as favourite\n * @return {object} jQuery promise\n */\n var unsetFavouriteConversations = function(userId, conversationIds) {\n\n var request = {\n methodname: 'core_message_unset_favourite_conversations',\n args: {\n userid: userId,\n conversations: conversationIds\n }\n };\n return Ajax.call([request])[0];\n };\n\n /**\n * Set a list of conversations to set as muted for the given user.\n *\n * @param {int} userId The user id\n * @param {array} conversationIds List of conversation ids to set as favourite\n * @return {object} jQuery promise\n */\n var setMutedConversations = function(userId, conversationIds) {\n var request = {\n methodname: 'core_message_mute_conversations',\n args: {\n userid: userId,\n conversationids: conversationIds\n }\n };\n return Ajax.call([request])[0];\n };\n\n /**\n * Set a list of conversations to unset as muted for the given user.\n *\n * @param {int} userId The user id\n * @param {array} conversationIds List of conversation ids to unset as favourite\n * @return {object} jQuery promise\n */\n var unsetMutedConversations = function(userId, conversationIds) {\n var request = {\n methodname: 'core_message_unmute_conversations',\n args: {\n userid: userId,\n conversationids: conversationIds\n }\n };\n return Ajax.call([request])[0];\n };\n\n /**\n * Get a list of user's member info.\n *\n * @param {int} referenceUserId The user id\n * @param {array} userIds List of user ids to get\n * @param {bool} includeContactRequests Include contact requests between users in response\n * @param {bool} includePrivacyInfo Include privacy info for reference user in response\n * @return {object} jQuery promise\n */\n var getMemberInfo = function(referenceUserId, userIds, includeContactRequests, includePrivacyInfo) {\n var args = {\n referenceuserid: referenceUserId,\n userids: userIds\n };\n\n if (typeof includeContactRequests != 'undefined') {\n args.includecontactrequests = includeContactRequests;\n }\n\n if (typeof includePrivacyInfo != 'undefined') {\n args.includeprivacyinfo = includePrivacyInfo;\n }\n\n var request = {\n methodname: 'core_message_get_member_info',\n args: args\n };\n return Ajax.call([request])[0];\n };\n\n /**\n * Get a list of user's member info.\n *\n * @param {int} userId The user id to mark as read for\n * @param {int} conversationId The conversation to mark as read\n * @return {object} jQuery promise\n */\n var markAllConversationMessagesAsRead = function(userId, conversationId) {\n\n var request = {\n methodname: 'core_message_mark_all_conversation_messages_as_read',\n args: {\n userid: userId,\n conversationid: conversationId\n }\n };\n return Ajax.call([request])[0];\n };\n\n /**\n * Get the user's message preferences.\n *\n * @param {int} userId The user id to load preferences for\n * @return {object} jQuery promise\n */\n var getUserMessagePreferences = function(userId) {\n var request = {\n methodname: 'core_message_get_user_message_preferences',\n args: {\n userid: userId\n }\n };\n return Ajax.call([request])[0];\n };\n\n /**\n * The the count of the user's conversations grouped by type.\n *\n * @param {Number} userId The user's id.\n * @return {Object} jQuery promise.\n */\n var getTotalConversationCounts = function(userId) {\n var request = {\n methodname: 'core_message_get_conversation_counts',\n args: {\n userid: userId\n }\n };\n return Ajax.call([request])[0];\n };\n\n /**\n * The the count of the user's unread conversations grouped by type.\n *\n * @param {Number} userId The user's id.\n * @return {Object} jQuery promise.\n */\n var getUnreadConversationCounts = function(userId) {\n var request = {\n methodname: 'core_message_get_unread_conversation_counts',\n args: {\n userid: userId\n }\n };\n return Ajax.call([request])[0];\n };\n\n /**\n * Get both the unread and total conversation counts in a single request.\n *\n * @param {Number} userId The user's id.\n * @return {Object} jQuery promise.\n */\n var getAllConversationCounts = function(userId) {\n var requests = [\n {\n methodname: 'core_message_get_conversation_counts',\n args: {\n userid: userId\n }\n },\n {\n methodname: 'core_message_get_unread_conversation_counts',\n args: {\n userid: userId\n }\n },\n ];\n return $.when.apply(null, Ajax.call(requests)).then(function(total, unread) {\n return {\n total: total,\n unread: unread\n };\n });\n };\n\n return {\n query: query,\n countUnreadConversations: countUnreadConversations,\n markAllAsRead: markAllAsRead,\n getContacts: getContacts,\n getProfile: getProfile,\n blockUser: blockUser,\n unblockUser: unblockUser,\n createContactRequest: createContactRequest,\n deleteContacts: deleteContacts,\n getMessages: getMessages,\n searchUsers: searchUsers,\n searchMessages: searchMessages,\n sendMessagesToUser: sendMessagesToUser,\n sendMessageToUser: sendMessageToUser,\n sendMessagesToConversation: sendMessagesToConversation,\n sendMessageToConversation: sendMessageToConversation,\n savePreferences: savePreferences,\n getPreferences: getPreferences,\n deleteMessages: deleteMessages,\n deleteMessagesForAllUsers: deleteMessagesForAllUsers,\n deleteConversation: deleteConversation,\n getContactRequests: getContactRequests,\n acceptContactRequest: acceptContactRequest,\n declineContactRequest: declineContactRequest,\n getConversation: getConversation,\n getConversationBetweenUsers: getConversationBetweenUsers,\n getSelfConversation: getSelfConversation,\n getConversations: getConversations,\n getConversationMembers: getConversationMembers,\n setFavouriteConversations: setFavouriteConversations,\n setMutedConversations: setMutedConversations,\n unsetFavouriteConversations: unsetFavouriteConversations,\n unsetMutedConversations: unsetMutedConversations,\n getMemberInfo: getMemberInfo,\n markAllConversationMessagesAsRead: markAllConversationMessagesAsRead,\n getUserMessagePreferences: getUserMessagePreferences,\n getTotalConversationCounts: getTotalConversationCounts,\n getUnreadConversationCounts: getUnreadConversationCounts,\n getAllConversationCounts: getAllConversationCounts\n };\n});\n"],"names":["define","$","Ajax","Notification","Constants","CONVERSATION_TYPES","sendMessagesToUser","toUserId","messages","request","methodname","args","map","message","touserid","text","call","then","results","errors","reduce","carry","result","errormessage","push","length","Error","join","id","msgid","timecreated","useridfrom","conversationid","candeletemessagesforallusers","sendMessagesToConversation","conversationId","query","limit","offset","type","favouritesonly","limitfrom","limitnum","promise","fail","exception","countUnreadConversations","markAllAsRead","getContacts","userId","userid","getProfile","profileUserId","currentuserid","otheruserid","blockUser","blockedUserId","requests","blockeduserid","referenceuserid","userids","includecontactrequests","includeprivacyinfo","when","apply","reponse1","profiles","unblockUser","unblockedUserId","unblockeduserid","createContactRequest","requestUserIds","requesteduserid","deleteContacts","contactUserIds","response1","getMessages","currentUserId","newestFirst","timeFrom","convid","newest","timefrom","searchUsers","searchString","search","searchMessages","sendMessageToUser","sendMessageToConversation","savePreferences","preferences","getPreferences","deleteMessages","messageIds","messageId","messageid","deleteMessagesForAllUsers","deleteConversation","conversationids","getContactRequests","acceptContactRequest","sendingUserId","recipientUserId","declineContactRequest","getConversation","loggedInUserId","includeContactRequests","includePrivacyInfo","memberLimit","memberOffset","messageLimit","messageOffset","newestMessagesFirst","memberlimit","memberoffset","messagelimit","messageoffset","newestmessagesfirst","getConversationBetweenUsers","otherUserId","getSelfConversation","getConversations","favourites","mergeself","conversations","conversation","PRIVATE","SELF","otherUser","members","name","fullname","imageurl","profileimageurl","getConversationMembers","setFavouriteConversations","conversationIds","setMutedConversations","unsetFavouriteConversations","unsetMutedConversations","getMemberInfo","referenceUserId","userIds","markAllConversationMessagesAsRead","getUserMessagePreferences","getTotalConversationCounts","getUnreadConversationCounts","getAllConversationCounts","total","unread"],"mappings":";;;;;;;;;AAwBAA,yCACA,CACI,SACA,YACA,oBACA,4DACD,SACCC,EACAC,KACAC,aACAC,eAEIC,mBAAqBD,UAAUC,mBAuW/BC,mBAAqB,SAASC,SAAUC,cAOpCC,QAAU,CACVC,WAAY,qCACZC,KAAM,CACFH,SATgBA,SAASI,KAAI,SAASC,eACnC,CACHC,SAAUP,SACVQ,KAAMF,qBAUPX,KAAKc,KAAK,CAACP,UAAU,GACvBQ,MAAK,SAASC,aAEPC,OAASD,QAAQE,QAAO,SAASC,MAAOC,eACpCA,OAAOC,cACPF,MAAMG,KAAKF,OAAOC,cAGfF,QACR,OACCF,OAAOM,aACD,IAAIC,MAAMP,OAAOQ,KAAK,cAGzBT,WAEVD,MAAK,SAASC,gBAEJA,QAAQN,KAAI,SAASU,cACjB,CACHM,GAAIN,OAAOO,MACXd,KAAMO,OAAOP,KACbe,YAAaR,OAAOQ,YACpBC,WAAYT,OAAOS,WACnBC,eAAgBV,OAAOU,eACvBC,6BAA8BX,OAAOW,qCA2BrDC,2BAA6B,SAASC,eAAgB3B,cAMlDC,QAAU,CACVC,WAAY,6CACZC,KAAM,CACFqB,eAAgBG,eAChB3B,SATgBA,SAASI,KAAI,SAASC,eACnC,CACHE,KAAMF,qBAWPX,KAAKc,KAAK,CAACP,UAAU,UAypBzB,CACH2B,MAzkCQ,SAASzB,WAES,IAAfA,KAAK0B,QACZ1B,KAAK0B,MAAQ,QAGU,IAAhB1B,KAAK2B,SACZ3B,KAAK2B,OAAS,QAGO,IAAd3B,KAAK4B,OACZ5B,KAAK4B,KAAO,WAGmB,IAAxB5B,KAAK6B,iBACZ7B,KAAK6B,gBAAiB,GAG1B7B,KAAK8B,UAAY9B,KAAK2B,OACtB3B,KAAK+B,SAAW/B,KAAK0B,aAEd1B,KAAK0B,aACL1B,KAAK2B,WAER7B,QAAU,CACVC,WAAY,kDACZC,KAAMA,MAGNgC,QAAUzC,KAAKc,KAAK,CAACP,UAAU,UAEnCkC,QAAQC,KAAKzC,aAAa0C,WAEnBF,SAyiCPG,yBA/hC2B,SAASnC,UAChCF,QAAU,CACVC,WAAY,8CACZC,KAAMA,MAGNgC,QAAUzC,KAAKc,KAAK,CAACP,UAAU,UAEnCkC,QAAQC,KAAKzC,aAAa0C,WAEnBF,SAshCPI,cA7gCgB,SAASpC,UACrBF,QAAU,CACVC,WAAY,yCACZC,KAAMA,MAGNgC,QAAUzC,KAAKc,KAAK,CAACP,UAAU,UAEnCkC,QAAQC,KAAKzC,aAAa0C,WAEnBF,SAogCPK,YAz/Bc,SAASC,OAAQZ,MAAOC,YAClC3B,KAAO,CACPuC,OAAQD,aAGS,IAAVZ,QACP1B,KAAK+B,SAAWL,YAGE,IAAXC,SACP3B,KAAK8B,UAAYH,YAGjB7B,QAAU,CACVC,WAAY,iCACZC,KAAMA,aAGHT,KAAKc,KAAK,CAACP,UAAU,IAw+B5B0C,WA99Ba,SAASF,OAAQG,mBAC1B3C,QAAU,CACVC,WAAY,gDACZC,KAAM,CACF0C,cAAeJ,OACfK,YAAaF,uBAIdlD,KAAKc,KAAK,CAACP,UAAU,IAs9B5B8C,UA58BY,SAASN,OAAQO,mBACzBC,SAAW,CACX,CACI/C,WAAY,0BACZC,KAAM,CACFuC,OAAQD,OACRS,cAAeF,gBAGvB,CACI9C,WAAY,+BACZC,KAAM,CACFgD,gBAAiBV,OACjBW,QAAS,CAACJ,eACVK,wBAAwB,EACxBC,oBAAoB,YAOzB7D,EAAE8D,KAAKC,MAAM,KAAM9D,KAAKc,KAAKyC,WAAWxC,MAAK,SAASgD,SAAUC,iBAE5DA,SAASzC,OAASyC,SAAS,GAAK,OAq7B3CC,YA16Bc,SAASlB,OAAQmB,qBAC3BX,SAAW,CACX,CACI/C,WAAY,4BACZC,KAAM,CACFuC,OAAQD,OACRoB,gBAAiBD,kBAGzB,CACI1D,WAAY,+BACZC,KAAM,CACFgD,gBAAiBV,OACjBW,QAAS,CAACQ,iBACVP,wBAAwB,EACxBC,oBAAoB,YAOzB7D,EAAE8D,KAAKC,MAAM,KAAM9D,KAAKc,KAAKyC,WAAWxC,MAAK,SAASgD,SAAUC,iBAE5DA,SAASzC,OAASyC,SAAS,GAAK,OAm5B3CI,qBAx4BuB,SAASrB,OAAQsB,oBACpC9D,QAAU,CACVC,WAAY,sCACZC,KAAM,CACFuC,OAAQD,OACRuB,gBAAiBD,wBAIlBrE,KAAKc,KAAK,CAACP,UAAU,IAg4B5BgE,eAt3BiB,SAASxB,OAAQyB,oBAC9BjB,SAAW,CACX,CACI/C,WAAY,+BACZC,KAAM,CACFuC,OAAQD,OACRW,QAASc,iBAGjB,CACIhE,WAAY,+BACZC,KAAM,CACFgD,gBAAiBV,OACjBW,QAASc,eACTb,wBAAwB,EACxBC,oBAAoB,YAKzB7D,EAAE8D,KAAKC,MAAM,KAAM9D,KAAKc,KAAKyC,WAAWxC,MAAK,SAAS0D,UAAWT,iBAE7DA,aAi2BXU,YAl1Bc,SAASC,cAAe1C,eAAgBE,MAAOC,OAAQwC,YAAaC,cAC9EpE,KAAO,CACP0C,cAAewB,cACfG,OAAQ7C,eACR8C,SAAQH,kBAGS,IAAVzC,QACP1B,KAAK+B,SAAWL,YAGE,IAAXC,SACP3B,KAAK8B,UAAYH,aAGG,IAAbyC,WACPpE,KAAKuE,SAAWH,cAGhBtE,QAAU,CACVC,WAAY,yCACZC,KAAMA,aAEHT,KAAKc,KAAK,CAACP,UAAU,IA4zB5B0E,YAhzBc,SAASlC,OAAQmC,aAAc/C,MAAOC,YAChD3B,KAAO,CACPuC,OAAQD,OACRoC,OAAQD,mBAGS,IAAV/C,QACP1B,KAAK+B,SAAWL,YAGE,IAAXC,SACP3B,KAAK8B,UAAYH,YAGjB7B,QAAU,CACVC,WAAY,oCACZC,KAAMA,aAGHT,KAAKc,KAAK,CAACP,UAAU,IA8xB5B6E,eAlxBiB,SAASrC,OAAQmC,aAAc/C,MAAOC,YACnD3B,KAAO,CACPuC,OAAQD,OACRoC,OAAQD,mBAGS,IAAV/C,QACP1B,KAAK+B,SAAWL,YAGE,IAAXC,SACP3B,KAAK8B,UAAYH,YAGjB7B,QAAU,CACVC,WAAY,oDACZC,KAAMA,aAGHT,KAAKc,KAAK,CAACP,UAAU,IAgwB5BH,mBAAoBA,mBACpBiF,kBAnsBoB,SAAShF,SAAUQ,aAChCT,mBAAmBC,SAAU,CAACQ,OAChCE,MAAK,SAASC,gBACJA,QAAQ,OAisBvBgB,2BAA4BA,2BAC5BsD,0BA/pB4B,SAASrD,eAAgBpB,aAC9CmB,2BAA2BC,eAAgB,CAACpB,OAC9CE,MAAK,SAASK,eACJA,OAAO,OA6pBtBmE,gBAlpBkB,SAASxC,OAAQyC,iBAC/BjF,QAAU,CACVC,WAAY,oCACZC,KAAM,CACFuC,OAAQD,OACRyC,YAAaA,qBAGdxF,KAAKc,KAAK,CAACP,UAAU,IA2oB5BkF,eAloBiB,SAAS1C,YACtBxC,QAAU,CACVC,WAAY,iCACZC,KAAM,CACFuC,OAAQD,gBAGT/C,KAAKc,KAAK,CAACP,UAAU,IA4nB5BmF,eAlnBiB,SAAS3C,OAAQ4C,mBAC3B5F,EAAE8D,KAAKC,MAAM,KAAM9D,KAAKc,KAAK6E,WAAWjF,KAAI,SAASkF,iBACjD,CACHpF,WAAY,8BACZC,KAAM,CACFoF,UAAWD,UACX5C,OAAQD,eA6mBpB+C,0BAhmB4B,SAAS/C,OAAQ4C,mBACtC5F,EAAE8D,KAAKC,MAAM,KAAM9D,KAAKc,KAAK6E,WAAWjF,KAAI,SAASkF,iBACjD,CACHpF,WAAY,4CACZC,KAAM,CACFoF,UAAWD,UACX5C,OAAQD,eA2lBpBgD,mBA9kBqB,SAAShD,OAAQd,oBAClC1B,QAAU,CACVC,WAAY,0CACZC,KAAM,CACFuC,OAAQD,OACRiD,gBAAiB,CAAC/D,yBAGnBjC,KAAKc,KAAK,CAACP,UAAU,IAukB5B0F,mBA9jBqB,SAASlD,YAC1BxC,QAAU,CACVC,WAAY,oCACZC,KAAM,CACFuC,OAAQD,gBAGT/C,KAAKc,KAAK,CAACP,UAAU,IAwjB5B2F,qBA9iBuB,SAASC,cAAeC,qBAC3C7C,SAAW,CACX,CACI/C,WAAY,uCACZC,KAAM,CACFuC,OAAQmD,cACR7B,gBAAiB8B,kBAGzB,CACI5F,WAAY,+BACZC,KAAM,CACFgD,gBAAiB2C,gBACjB1C,QAAS,CAACyC,eACVxC,wBAAwB,EACxBC,oBAAoB,YAOzB7D,EAAE8D,KAAKC,MAAM,KAAM9D,KAAKc,KAAKyC,WAAWxC,MAAK,SAASgD,SAAUC,iBAE5DA,SAASzC,OAASyC,SAAS,GAAK,OAuhB3CqC,sBA5gBwB,SAASF,cAAeC,qBAC5C7C,SAAW,CACX,CACI/C,WAAY,uCACZC,KAAM,CACFuC,OAAQmD,cACR7B,gBAAiB8B,kBAGzB,CACI5F,WAAY,+BACZC,KAAM,CACFgD,gBAAiB2C,gBACjB1C,QAAS,CAACyC,eACVxC,wBAAwB,EACxBC,oBAAoB,YAOzB7D,EAAE8D,KAAKC,MAAM,KAAM9D,KAAKc,KAAKyC,WAAWxC,MAAK,SAASgD,SAAUC,iBAE5DA,SAASzC,OAASyC,SAAS,GAAK,OAqf3CsC,gBAnekB,SAClBC,eACAtE,eACAuE,uBACAC,mBACAC,YACAC,aACAC,aACAC,cACAC,yBAEIrG,KAAO,CACPuC,OAAQuD,eACRzE,eAAgBG,gBAGhB,MAAOuE,yBACP/F,KAAKkD,uBAAyB6C,wBAG9B,MAAOC,qBACPhG,KAAKmD,mBAAqB6C,oBAG1B,MAAOC,cACPjG,KAAKsG,YAAcL,aAGnB,MAAOC,eACPlG,KAAKuG,aAAeL,cAGpB,MAAOC,eACPnG,KAAKwG,aAAeL,cAGpB,MAAOC,gBACPpG,KAAKyG,cAAgBL,eAGrB,MAAOC,sBACPrG,KAAK0G,oBAAsBL,yBAG3BvG,QAAU,CACVC,WAAY,gCACZC,KAAMA,aAGHT,KAAKc,KAAK,CAACP,UAAU,IAmb5B6G,4BAla8B,SAC9Bb,eACAc,YACAb,uBACAC,mBACAC,YACAC,aACAC,aACAC,cACAC,yBAEIrG,KAAO,CACPuC,OAAQuD,eACRnD,YAAaiE,aAGb,MAAOb,yBACP/F,KAAKkD,uBAAyB6C,wBAG9B,MAAOC,qBACPhG,KAAKmD,mBAAqB6C,oBAG1B,MAAOC,cACPjG,KAAKsG,YAAcL,aAGnB,MAAOC,eACPlG,KAAKuG,aAAeL,cAGpB,MAAOC,eACPnG,KAAKwG,aAAeL,cAGpB,MAAOC,gBACPpG,KAAKyG,cAAgBL,eAGrB,MAAOC,sBACPrG,KAAK0G,oBAAsBL,yBAG3BvG,QAAU,CACVC,WAAY,8CACZC,KAAMA,aAGHT,KAAKc,KAAK,CAACP,UAAU,IAkX5B+G,oBAtWsB,SACtBf,eACAK,aACAC,cACAC,yBAEIrG,KAAO,CACPuC,OAAQuD,gBAGR,MAAOK,eACPnG,KAAKwG,aAAeL,cAGpB,MAAOC,gBACPpG,KAAKyG,cAAgBL,eAGrB,MAAOC,sBACPrG,KAAK0G,oBAAsBL,yBAG3BvG,QAAU,CACVC,WAAY,qCACZC,KAAMA,aAGHT,KAAKc,KAAK,CAACP,UAAU,IA4U5BgH,iBA/TmB,SACnBxE,OACAV,KACAF,MACAC,OACAoF,WACAC,eAEIhH,KAAO,CACPuC,OAAQD,OACRV,KAAMA,MAGN,MAAOF,QACP1B,KAAK+B,SAAWL,OAGhB,MAAOC,SACP3B,KAAK8B,UAAYH,QAGjB,MAAOoF,aACP/G,KAAK+G,WAAaA,YAGlB,MAAOC,YACPhH,KAAKgH,UAAYA,eAGjBlH,QAAU,CACVC,WAAY,iCACZC,KAAMA,aAGHT,KAAKc,KAAK,CAACP,UAAU,GACvBQ,MAAK,SAASK,eACPA,OAAOsG,cAAcnG,SACrBH,OAAOsG,cAAgBtG,OAAOsG,cAAchH,KAAI,SAASiH,iBACjDA,aAAatF,MAAQlC,mBAAmByH,SAAWD,aAAatF,MAAQlC,mBAAmB0H,KAAM,KAC7FC,UAAYH,aAAaI,QAAQxG,OAASoG,aAAaI,QAAQ,GAAK,KAEpED,YACAH,aAAaK,KAAOL,aAAaK,KAAOL,aAAaK,KAAOF,UAAUG,SACtEN,aAAaO,SAAWP,aAAaO,SAAWP,aAAaO,SAAWJ,UAAUK,wBAInFR,iBAIRvG,WA6QfgH,uBA/PyB,SAASnG,eAAgBsE,eAAgBpE,MAAOC,OAAQoE,4BAC7E/F,KAAO,CACPuC,OAAQuD,eACRzE,eAAgBG,gBAGhB,MAAOE,QACP1B,KAAK+B,SAAWL,OAGhB,MAAOC,SACP3B,KAAK8B,UAAYH,QAGjB,MAAOoE,yBACP/F,KAAKkD,uBAAyB6C,4BAG9BjG,QAAU,CACVC,WAAY,wCACZC,KAAMA,aAGHT,KAAKc,KAAK,CAACP,UAAU,IAyO5B8H,0BA/N4B,SAAStF,OAAQuF,qBAEzC/H,QAAU,CACVC,WAAY,2CACZC,KAAM,CACFuC,OAAQD,OACR2E,cAAeY,yBAGhBtI,KAAKc,KAAK,CAACP,UAAU,IAuN5BgI,sBA1LwB,SAASxF,OAAQuF,qBACrC/H,QAAU,CACVC,WAAY,kCACZC,KAAM,CACFuC,OAAQD,OACRiD,gBAAiBsC,yBAGlBtI,KAAKc,KAAK,CAACP,UAAU,IAmL5BiI,4BA9M8B,SAASzF,OAAQuF,qBAE3C/H,QAAU,CACVC,WAAY,6CACZC,KAAM,CACFuC,OAAQD,OACR2E,cAAeY,yBAGhBtI,KAAKc,KAAK,CAACP,UAAU,IAsM5BkI,wBA1K0B,SAAS1F,OAAQuF,qBACvC/H,QAAU,CACVC,WAAY,oCACZC,KAAM,CACFuC,OAAQD,OACRiD,gBAAiBsC,yBAGlBtI,KAAKc,KAAK,CAACP,UAAU,IAmK5BmI,cAvJgB,SAASC,gBAAiBC,QAASpC,uBAAwBC,wBACvEhG,KAAO,CACPgD,gBAAiBkF,gBACjBjF,QAASkF,cAGwB,IAA1BpC,yBACP/F,KAAKkD,uBAAyB6C,6BAGD,IAAtBC,qBACPhG,KAAKmD,mBAAqB6C,wBAG1BlG,QAAU,CACVC,WAAY,+BACZC,KAAMA,aAEHT,KAAKc,KAAK,CAACP,UAAU,IAsI5BsI,kCA5HoC,SAAS9F,OAAQd,oBAEjD1B,QAAU,CACVC,WAAY,sDACZC,KAAM,CACFuC,OAAQD,OACRjB,eAAgBG,wBAGjBjC,KAAKc,KAAK,CAACP,UAAU,IAoH5BuI,0BA3G4B,SAAS/F,YACjCxC,QAAU,CACVC,WAAY,4CACZC,KAAM,CACFuC,OAAQD,gBAGT/C,KAAKc,KAAK,CAACP,UAAU,IAqG5BwI,2BA5F6B,SAAShG,YAClCxC,QAAU,CACVC,WAAY,uCACZC,KAAM,CACFuC,OAAQD,gBAGT/C,KAAKc,KAAK,CAACP,UAAU,IAsF5ByI,4BA7E8B,SAASjG,YACnCxC,QAAU,CACVC,WAAY,8CACZC,KAAM,CACFuC,OAAQD,gBAGT/C,KAAKc,KAAK,CAACP,UAAU,IAuE5B0I,yBA9D2B,SAASlG,YAChCQ,SAAW,CACX,CACI/C,WAAY,uCACZC,KAAM,CACFuC,OAAQD,SAGhB,CACIvC,WAAY,8CACZC,KAAM,CACFuC,OAAQD,iBAIbhD,EAAE8D,KAAKC,MAAM,KAAM9D,KAAKc,KAAKyC,WAAWxC,MAAK,SAASmI,MAAOC,cACzD,CACHD,MAAOA,MACPC,OAAQA"}
Close