# LuckPerms Language File
# Locale: en_US (English)
# Author: Luck

prefix: "&7&l[&b&lL&3&lP&7&l] &c"
empty: "{0}"
player-online: "&aOnline"
player-offline: "&cOffline"
loading-error: "&cPermissions data could not be loaded. Please try again later."
op-disabled: "&bThe vanilla OP system is disabled on this server."
op-disabled-sponge: "&2Please note that Server Operator status has no effect on Sponge permission checks when a permission plugin is installed. Please edit user data directly."
log-info: "&7&l[&bL&3P&7&l] &3{0}"
log-warn: "&7&l[&bLuck&3Perms&7&l] &c[WARN] {0}"
log-error: "&7&l[&bLuck&3Perms&7&l] &4[ERROR] {0}"
log: "&3LOG &3&l> {0}"
verbose-log: "&3VB &3&l> {0}"
export-log: "&3EXPORT &3&l> &f{0}"
export-log-progress: "&3EXPORT &3&l> &7{0}"
migration-log: "&3MIGRATION &7[&3{0}&7] &3&l> &f{1}"
migration-log-progress: "&3MIGRATION &7[&3{0}&7] &3&l> &7{1}"
command-not-recognised: "&cCommand not recognised."
command-no-permission: "&cYou do not have permission to use this command!"
user-not-found: "&cA user for &4{0}&c could not be found."
user-not-online: "&aUser &b{0}&a is not online."
user-save-error: "&cThere was an error whilst saving user data for &4{0}&c."
group-not-found: "&cA group named &4{0}&c could not be found."
group-save-error: "&cThere was an error whilst saving group data for &4{0}&c."
track-not-found: "&cA track named &4{0}&c could not be found."
track-save-error: "&cThere was an error whilst saving track data for &4{0}&c."
user-invalid-entry: "&4{0}&c is not a valid username/uuid."
group-invalid-entry: "&4{0}&c is not a valid group name."
track-invalid-entry: "&4{0}&c is not a valid track name."
server-world-invalid-entry: "&cServer/world names can only contain alphanumeric characters and cannot exceed 36 characters in length."
verbose-invalid-filter: "&4{0}&c is not a valid verbose filter."
verbose-on: "&bVerbose logging &aenabled &bfor checks matching &aANY&b."
verbose-on-query: "&bVerbose logging &aenabled &bfor checks matching &a{0}&b."
verbose-off: "&bVerbose logging &cdisabled&b."
verbose-recording-on: "&bVerbose recording &aenabled &bfor checks matching &aANY&b."
verbose-recording-on-query: "&bVerbose recording &aenabled &bfor checks matching &a{0}&b."
verbose-upload-start: "&bVerbose logging &cdisabled&b. Uploading results..."
verbose-results-url: "&aVerbose results URL:"
tree-upload-start: "&bGenerating permission tree..."
tree-empty: "&cUnable to generate tree. No results were found."
tree-url: "&aPermission tree URL:"
search-searching: "&aSearching for users and groups with &b{0}&a..."
search-searching-members: "&aSearching for users and groups who inherit from &b{0}&a..."
search-result: "&aFound &b{0}&a entries from &b{1}&a users and &b{2}&a groups."
search-showing-users: "&bShowing user entries:"
search-showing-groups: "&bShowing group entries:"
search-showing-users-with-page: "&bShowing user entries:  {0}"
search-showing-groups-with-page: "&bShowing group entries:  {0}"
apply-edits-invalid-code: "&cInvalid code. &7({0})"
apply-edits-unable-to-read: "&cUnable to read data using the given code. &7({0})"
apply-edits-no-target: "&cUnable to parse the target of the edit. Please supply it as an extra argument."
apply-edits-target-group-not-exists: "&cTarget group &4{0}&c does not exist."
apply-edits-target-user-not-uuid: "&cTarget user &4{0}&c is not a valid uuid."
apply-edits-target-user-unable-to-load: "&cUnable to load target user &4{0}&c."
apply-edits-target-unknown: "&cInvalid target. &7({0})"
apply-edits-success: "&aWeb editor data was applied to &b{0}&a successfully."
apply-edits-success-summary: "&7(&a{0} &7{1} and &c{2} &7{3})"
apply-edits-diff-added: "&a+  &f{0}"
apply-edits-diff-removed: "&c-  &f{0}"
editor-upload-failure: "&cUnable to upload permission data to the editor."
editor-url: "&aEditor URL:"
check-result: "&aPermission check result on user &b{0}&a for permission &b{1}&a: &f{2}"
create-success: "&b{0}&a was successfully created."
delete-success: "&b{0}&a was successfully deleted."
rename-success: "&b{0}&a was successfully renamed to &b{1}&a."
clone-success: "&b{0}&a was successfully cloned onto &b{1}&a."
already-inherits: "&b{0}&a already inherits from &b{1}&a in context {2}&a."
does-not-inherit: "&b{0}&a does not inherit from &b{1}&a in context {2}&a."
already-temp-inherits: "&b{0}&a already temporarily inherits from &b{1}&a in context {2}&a."
does-not-temp-inherit: "&b{0}&a does not temporarily inherit from &b{1}&a in context {2}&a."
track-already-contains: "&b{0}&a already contains &b{1}&a."
track-does-not-contain: "&b{0}&a doesn't contain &b{1}&a."
track-ambiguous-call: "&4{0}&c is a member of multiple groups on this track. Unable to determine their location."
already-exists: "&4{0}&c already exists!"
does-not-exist: "&4{0}&c does not exist!"
group-load-error: "&cAn unexpected error occurred. Group not loaded."
groups-load-error: "&cAn unexpected error occurred. Unable to load all groups."
track-load-error: "&cAn unexpected error occurred. Track not loaded."
tracks-load-error: "&cAn unexpected error occurred. Unable to load all tracks."
track-empty: "&4{0}&c cannot be used as it is empty or contains only one group."
update-task-request: "&bAn update task has been requested. Please wait..."
update-task-complete: "&aUpdate task complete."
update-task-complete-network: "&aUpdate task complete. Now attempting to push to other servers."
update-task-push-success: "&aOther servers were notified via &b{0} Messaging &asuccessfully."
update-task-push-failure: "&cError whilst pushing changes to other servers."
update-task-push-failure-not-setup: "&cError whilst pushing changes to other servers. &7(a messaging service has not been configured)"
reload-config-success: "&aThe configuration file was reloaded. &7(some options will only apply after the server has restarted)"
info-top: >
  {PREFIX}&2Running &bLuckPerms v{0}&2 by &bLuck&2.\n
  {PREFIX}&f-  &3Platform: &f{1}\n
  {PREFIX}&f-  &3Server Brand: &f{2}\n
  {PREFIX}&f-  &3Server Version: &f{3}
info-middle: >
  {PREFIX}&f-  &bMessaging Type: &f{0}\n
  {PREFIX}&f-  &bInstance:\n
  {PREFIX}&f-     &3Server Name: &f{1}\n
  {PREFIX}&f-     &3Online Players: &a{2}\n
  {PREFIX}&f-     &3Unique Connections: &a{3}\n
  {PREFIX}&f-     &3Uptime: &7{4}\n
  {PREFIX}&f-     &3Local Data: &a{5} &7users, &a{6} &7groups, &a{7} &7tracks\n
  {PREFIX}&f-     &3Context Calculators: &a{8}\n
  {PREFIX}&f-     &3Known permissions: &a{9}\n
  {PREFIX}&f-     &3Active processors: &7{10}
create-error: "&cThere was an error whilst creating &4{0}&c."
delete-error: "&cThere was an error whilst deleting &4{0}&c."
delete-group-error-default: "&cYou cannot delete the default group."
groups-list: "&aGroups: &7(name, weight, tracks)"
groups-list-entry: "&f-  &3{0} &7- &b{1}"
groups-list-entry-with-tracks: "&f-  &3{0} &7- &b{1} &7- [&3{2}&7]"
tracks-list: "&aTracks: {0}"
listnodes: "&b{0}'s Permissions:"
listnodes-with-page: "&b{0}'s Permissions:  {1}"
listnodes-temp: "&b{0}'s Temporary Permissions:"
listnodes-temp-with-page: "&b{0}'s Temporary Permissions:  {1}"
listparents: "&b{0}'s Parent Groups:"
listparents-temp: "&b{0}'s Temporary Parent Groups:"
list-tracks: >
  &b{0}'s Tracks:\n
  {1}
list-tracks-empty: "&b{0}&a is not on any tracks."
context-pair-inline: "&3{0}=&b{1}"
context-pair--global-inline: "&eglobal"
context-pair-sep: "&a, "
context-pair: "&8(&7{0}=&f{1}&8)"
check-permission: "&b{0}&a has permission &b{1}&a set to {2}&a in context {3}&a."
check-inherits-permission: "&b{0}&a has permission &b{1}&a set to {2}&a in context {3}&a. &7(inherited from &a{4}&7)"
setpermission-success: "&aSet &b{0}&a to &b{1}&a for &b{2}&a in context {3}&a."
already-haspermission: "&b{0}&a already has &b{1}&a set in context {2}&a."
setpermission-temp-success: "&aSet &b{0}&a to &b{1}&a for &b{2}&a for a duration of &b{3}&a in context {4}&a."
already-has-temp-permission: "&b{0}&a already has &b{1}&a set temporarily in context {2}&a."
unsetpermission-success: "&aUnset &b{0}&a for &b{1}&a in context {2}&a."
does-not-have-permission: "&b{0}&a does not have &b{1}&a set in context {2}&a."
unset-temp-permission-success: "&aUnset temporary permission &b{0}&a for &b{1}&a in context {2}&a."
does-not-have-temp-permission: "&b{0}&a does not have &b{1}&a set temporarily in context {2}&a."
set-inherit-success: "&b{0}&a now inherits permissions from &b{1}&a in context {2}&a."
set-temp-inherit-success: "&b{0}&a now inherits permissions from &b{1}&a for a duration of &b{2}&a in context {3}&a."
set-parent-success: "&b{0}&a had their existing parent groups cleared, and now only inherits &b{1}&a in context {2}&a."
set-track-parent-success: "&b{0}&a had their existing parent groups on track &b{1}&a cleared, and now only inherits &b{2}&a in context {3}&a."
unset-inherit-success: "&b{0}&a no longer inherits permissions from &b{1}&a in context {2}&a."
unset-temp-inherit-success: "&b{0}&a no longer temporarily inherits permissions from &b{1}&a in context {2}&a."
clear-success: "&b{0}&a's permissions were cleared in context {1}&a. (&b{2}&a nodes were removed.)"
clear-success-singular: "&b{0}&a's permissions were cleared in context {1}&a. (&b{2}&a node was removed.)"
parent-clear-success: "&b{0}&a's parents were cleared in context {1}&a. (&b{2}&a nodes were removed.)"
parent-clear-success-singular: "&b{0}&a's parents were cleared in context {1}&a. (&b{2}&a node was removed.)"
parent-clear-track-success: "&b{0}&a's parents on track &b{1}&a were cleared in context {2}&a. (&b{3}&a nodes were removed.)"
parent-clear-track-success-singular: "&b{0}&a's parents on track &b{1}&a were cleared in context {2}&a. (&b{3}&a node was removed.)"
meta-clear-success: "&b{0}&a's meta matching type &b{1}&a was cleared in context {2}&a. (&b{3}&a nodes were removed.)"
meta-clear-success-singular: "&b{0}&a's meta matching type &b{1}&a was cleared in context {2}&a. (&b{3}&a node was removed.)"
illegal-date-error: "&cCould not parse date &4{0}&c."
past-date-error: "&cYou cannot set a date in the past!"
chat-meta-prefix-header: "&b{0}'s Prefixes"
chat-meta-suffix-header: "&b{0}'s Suffixes"
meta-header: "&b{0}'s Meta"
chat-meta-entry: "&b-> {0} &f- &f'{1}&f' &8(&7inherited from &a{2}&8)"
chat-meta-entry-with-context: "&b-> {0} &f- &f'{1}&f' &8(&7inherited from &a{2}&8){3}"
meta-entry: "&b-> &a{0} &f= &f'{1}&f' &8(&7inherited from &a{2}&8)"
meta-entry-with-context: "&b-> &a{0} &f= &f'{1}&f' &8(&7inherited from &a{2}&8){3}"
chat-meta-prefix-none: "&b{0} has no prefixes."
chat-meta-suffix-none: "&b{0} has no suffixes."
meta-none: "&b{0} has no meta."
meta-invalid-priority: "&cInvalid priority &4{0}&c. Expected a number."
already-has-chat-meta: "&b{0}&a already has {1} &f'{2}&f'&a set at a priority of &b{3}&a in context {4}&a."
already-has-temp-chat-meta: "&b{0}&a already has {1} &f'{2}&f'&a set temporarily at a priority of &b{3}&a in context {4}&a."
does-not-have-chat-meta: "&b{0}&a doesn't have {1} &f'{2}&f'&a set at a priority of &b{3}&a in context {4}&a."
does-not-have-temp-chat-meta: "&b{0}&a doesn't have {1} &f'{2}&f'&a set temporarily at a priority of &b{3}&a in context {4}&a."
add-chatmeta-success: "&b{0}&a had {1} &f'{2}&f'&a set at a priority of &b{3}&a in context {4}&a."
add-temp-chatmeta-success: "&b{0}&a had {1} &f'{2}&f'&a set at a priority of &b{3}&a for a duration of &b{4}&a in context {5}&a."
remove-chatmeta-success: "&b{0}&a had {1} &f'{2}&f'&a at priority &b{3}&a removed in context {4}&a."
bulk-remove-chatmeta-success: "&b{0}&a had all {1}es at priority &b{2}&a removed in context {3}&a."
remove-temp-chatmeta-success: "&b{0}&a had temporary {1} &f'{2}&f'&a at priority &b{3}&a removed in context {4}&a."
bulk-remove-temp-chatmeta-success: "&b{0}&a had all temporary {1}es at priority &b{2}&a removed in context {3}&a."
already-has-meta: "&b{0}&a already has meta key &f'{1}&f'&a set to &f'{2}&f'&a in context {3}&a."
already-has-temp-meta: "&b{0}&a already has meta key &f'{1}&f'&a temporarily set to &f'{2}&f'&a in context {3}&a."
doesnt-have-meta: "&b{0}&a doesn't have meta key &f'{1}&f'&a set in context {2}&a."
doesnt-have-temp-meta: "&b{0}&a doesn't have meta key &f'{1}&f'&a set temporarily in context {2}&a."
set-meta-success: "&aSet meta key &f'{0}&f'&a to &f'{1}&f'&a for &b{2}&a in context {3}&a."
set-meta-temp-success: "&aSet meta key &f'{0}&f'&a to &f'{1}&f'&a for &b{2}&a for a duration of &b{3}&a in context {4}&a."
unset-meta-success: "&aUnset meta key &f'{0}&f'&a for &b{1}&a in context {2}&a."
unset-meta-temp-success: "&aUnset temporary meta key &f'{0}&f'&a for &b{1}&a in context {2}&a."
bulk-update-invalid-data-type: "&cInvalid type. Was expecting 'all', 'users' or 'groups'."
bulk-update-invalid-constraint: "&cInvalid constraint &4{0}&c. Constraints should be in the format '&f<field> <comparison operator> <value>&c'."
bulk-update-invalid-comparison: "&cInvalid comparison operator '&4{0}&c'. Expected one of the following: &f==  !=  ~~  ~!"
bulk-update-queued: "&aBulk update operation was queued. &7(&f{0}&7)"
bulk-update-confirm: "&aRun &b/{0} bulkupdate confirm {1} &ato execute the update."
bulk-update-unknown-id: "&aOperation with id &b{0}&a does not exist or has expired."
bulk-update-starting: "&aRunning bulk update."
bulk-update-success: "&bBulk update completed successfully."
bulk-update-failure: "&cBulk update failed. Check the console for errors."
user-info-general: >
  {PREFIX}&b&l> &bUser Info: &f{0}\n
  {PREFIX}&f- &3UUID: &f{1}\n
  {PREFIX}&f- &3Status: {2}\n
  {PREFIX}&f- &3Primary Group: &f{3}\n
  {PREFIX}&f- &aCounts:\n
  {PREFIX}&f-    &3Nodes: &a{4}\n
  {PREFIX}&f-    &3Permissions: &a{5}\n
  {PREFIX}&f-    &3Prefixes: &a{6}\n
  {PREFIX}&f-    &3Suffixes: &a{7}\n
  {PREFIX}&f-    &3Meta: &a{8}
user-info-data: >
  {PREFIX}&f- &aCached Data:\n
  {PREFIX}&f-    &3Has contextual data: {0}\n
  {PREFIX}&f-    &3Current Contexts: {1}\n
  {PREFIX}&f-    &3Current Prefix: {2}\n
  {PREFIX}&f-    &3Current Suffix: {3}
info-parent-header: "&f- &aParent Groups:"
info-temp-parent-header: "&f- &aTemporary Parent Groups:"
user-removegroup-error-primary: "&aYou cannot remove a user from their primary group."
user-primarygroup-success: "&b{0}&a's primary group was set to &b{1}&a."
user-primarygroup-warn-option: "&aWarning: The primary group calculation method being used by this server &7({0}) &amay not reflect this change."
user-primarygroup-error-alreadyhas: "&b{0}&a already has &b{1}&a set as their primary group."
user-primarygroup-error-notmember: "&b{0}&a was not already a member of &b{1}&a, adding them now."
user-track-error-not-contain-group: "&b{0}&a isn't already in any groups on &b{1}&a."
user-track-added-to-first: "&b{0}&a isn't in any groups on this track, so they were added to the first group, &b{1}&a in context {2}&a."
user-promote-success: "&aPromoting &b{0}&a along track &b{1}&a from &b{2}&a to &b{3}&a in context {4}&a."
user-promote-error-endoftrack: "&aThe end of track &b{0}&a was reached. Unable to promote &b{1}&a."
user-promote-error-malformed: >
  {PREFIX}&aThe next group on the track, &b{0}&a, no longer exists. Unable to promote user.\n
  {PREFIX}&aEither create the group, or remove it from the track and try again.
user-demote-success: "&aDemoting &b{0}&a along track &b{1}&a from &b{2}&a to &b{3}&a in context {4}&a."
user-demote-endoftrack: "&aThe end of track &b{0}&a was reached, so &b{1}&a was removed from &b{2}&a."
user-demote-error-malformed: >
  {PREFIX}&aThe previous group on the track, &b{0}&a, no longer exists. Unable to demote user.\n
  {PREFIX}&aEither create the group, or remove it from the track and try again.
group-info-general: >
  {PREFIX}&b&l> &bGroup Info: &f{0}\n
  {PREFIX}&f- &3Display Name: &f{1}\n
  {PREFIX}&f- &3Weight: &f{2}\n
  {PREFIX}&f- &aCounts:\n
  {PREFIX}&f-    &3Nodes: &a{3}\n
  {PREFIX}&f-    &3Permissions: &a{4}\n
  {PREFIX}&f-    &3Prefixes: &a{5}\n
  {PREFIX}&f-    &3Suffixes: &a{6}\n
  {PREFIX}&f-    &3Meta: &a{7}
group-set-weight: "&aSet weight to &b{0}&a for group &b{1}&a."
group-set-display-name-doesnt-have: "&b{0}&a doesn't have a display name set."
group-set-display-name-already-has: "&b{0}&a already has a display name of &b{1}&a."
group-set-display-name-already-in-use: "&aThe display name &b{0}&a is already being used by &b{1}&a."
group-set-display-name: "&aSet display name to &b{0}&a for group &b{1}&a."
group-set-display-name-removed: "&aRemoved display name for group &b{0}&a."
track-info: >
  {PREFIX}&b&l> &bShowing Track: &f{0}\n
  {PREFIX}&f- &7Path: &f{1}
track-clear: "&b{0}&a's groups track was cleared."
track-append-success: "&aGroup &b{0}&a was appended to track &b{1}&a."
track-insert-success: "&aGroup &b{0}&a was inserted into track &b{1}&a at position &b{2}&a."
track-insert-error-number: "&cExpected number but instead received: {0}"
track-insert-error-invalid-pos: "&cUnable to insert at position &4{0}&c. &7(invalid position)"
track-remove-success: "&aGroup &b{0}&a was removed from track &b{1}&a."
log-load-error: "&cThe log could not be loaded."
log-invalid-page: "&cInvalid page number."
log-invalid-page-range: "&cInvalid page number. Please enter a value between &41&c and &4{0}&c."
log-no-entries: "&bNo log entries to show."
log-entry: "&b#{0} -> &8(&7{1} ago&8) {2}"
log-notify-console: "&cCannot toggle notifications for console."
log-notify-toggle-on: "&aEnabled&b logging output."
log-notify-toggle-off: "&cDisabled&b logging output."
log-notify-already-on: "&cYou are already receiving notifications."
log-notify-already-off: "&cYou aren't currently receiving notifications."
log-notify-unknown: "&cState unknown. Expecting \"on\" or \"off\"."
log-search-header: "&aShowing recent actions for query &b{0} &a(page &f{1}&a of &f{2}&a)"
log-recent-header: "&aShowing recent actions (page &f{0}&a of &f{1}&a)"
log-recent-by-header: "&aShowing recent actions by &b{0} &a(page &f{1}&a of &f{2}&a)"
log-history-user-header: "&aShowing history for user &b{0} &a(page &f{1}&a of &f{2}&a)"
log-history-group-header: "&aShowing history for group &b{0} &a(page &f{1}&a of &f{2}&a)"
log-history-track-header: "&aShowing history for track &b{0} &a(page &f{1}&a of &f{2}&a)"
log-export-already-exists: "&cError: File &4{0}&c already exists."
log-export-not-writable: "&cError: File &4{0}&c is not writable."
log-export-empty: "&cThe log is empty and therefore cannot be exported."
log-export-failure: "&cAn unexpected error occured whilst writing to the file."
log-export-success: "&aSuccessfully exported the log to &b{0}&a."
import-already-running: "&cAnother import process is already running. Please wait for it to finish and try again."
export-already-running: "&cAnother export process is already running. Please wait for it to finish and try again."
import-log-doesnt-exist: "&cError: File &4{0}&c does not exist."
import-log-not-readable: "&cError: File &4{0}&c is not readable."
import-log-failure: "&cAn unexpected error occured whilst reading from the log file."
import-progress: "&b(Import) &b-> &f{0}&f% complete &7- &b{1}&f/&b{2} &foperations complete with &c{3} &ferrors."
import-progress-sin: "&b(Import) &b-> &f{0}&f% complete &7- &b{1}&f/&b{2} &foperations complete with &c{3} &ferror."
import-start: "&b(Import) &b-> &fStarting import process."
import-end-complete: "&b(Import) &a&lCOMPLETED &7- took &b{0} &7seconds - &7No errors."
import-end-complete-err: "&b(Import) &a&lCOMPLETED &7- took &b{0} &7seconds - &c{1} errors."
import-end-complete-err-sin: "&b(Import) &a&lCOMPLETED &7- took &b{0} &7seconds - &c{1} error."
import-end-error-header: >
  {PREFIX}&b(Import) &7------------> &fShowing Error #&b{0} &7<------------\n
  {PREFIX}&b(Import) &fWhilst executing: &3Command #{1}\n
  {PREFIX}&b(Import) &fCommand: &7{2}\n
  {PREFIX}&b(Import) &fType: &3{3}\n
  {PREFIX}&b(Import) &fOutput:
import-end-error-content: "&b(Import) &b-> &c{0}"
import-end-error-footer: "&b(Import) &7<------------------------------------------>"

command-specs:
  user:
    description: "User commands"
    usage: "/%s user <user>"
  group:
    description: "Group commands"
    usage: "/%s group <group>"
  track:
    description: "Track commands"
    usage: "/%s track <track>"
  log:
    description: "Log commands"
    usage: "/%s log"
  sync:
    description: "Sync changes with the storage"
    usage: "/%s sync"
  info:
    description: "Print general plugin info"
    usage: "/%s info"
  verbose:
    description: "Manage verbose permission checking"
    usage: "/%s verbose <true|false> [filter]"
    args:
      "on|record|off|paste": "whether to enable/disable logging, or to paste the logged output"
      "filter": "the filter to match entries against"
      "--slim": "add \"--slim\" to exclude trace data from the pasted output"
  tree:
    description: "Generate a tree view of permissions"
    usage: "/%s tree [selection] [max level] [player]"
    args:
      "selection": "the root of the tree. specify \".\" to include all permissions"
      "max level": "how many branch levels should be returned"
      "player": "the name of an online player to check against"
  search:
    description: "Search for users/groups with a specific permission"
    usage: "/%s search <permission>"
    args:
      "permission": "the permission to search for"
      "page": "the page to view"
  check:
    description: "Perform a standard permission check on an online player"
    usage: "/%s check <user> <permission>"
    args:
      "user": "the user to check"
      "permission": "the permission to check for"
  network-sync:
    description: "Sync changes with the storage and request that all other servers on the network do the same"
    usage: "/%s networksync"
  import:
    description: "Import data from a file"
    usage: "/%s import <file>"
    args:
      "file": "the file to import from"
  export:
    description: "Export data to a file"
    usage: "/%s export <file>"
    args:
      "file": "the file to export to"
  reload-config:
    description: "Reload some of the config options"
    usage: "/%s reloadconfig"
  bulk-update:
    description: "Execute bulk change queries on all data"
    usage: "/%s bulkupdate"
    args:
      "data type": "the type of data being changed. ('all', 'users' or 'groups')"
      "action": "the action to perform on the data. ('update' or 'delete')"
      "action field": "the field to act upon. only required for 'update'. ('permission', 'server' or 'world')"
      "action value": "the value to replace with. only required for 'update'."
      "constraint...": "the constraints required for the update"
  migration:
    description: "Migration commands"
    usage: "/%s migration"
  apply-edits:
    description: "Applies permission changes made from the web editor"
    usage: "/%s applyedits <code> [target]"
    args:
      "code": "the unique code for the data"
      "target": "who to apply the data to"
  create-group:
    description: "Create a new group"
    usage: "/%s creategroup <group>"
    args:
      "name": "the name of the group"
  delete-group:
    description: "Delete a group"
    usage: "/%s deletegroup <group>"
    args:
      "name": "the name of the group"
  list-groups:
    description: "List all groups on the platform"
    usage: "/%s listgroups"
  create-track:
    description: "Create a new track"
    usage: "/%s createtrack <track>"
    args:
      "name": "the name of the track"
  delete-track:
    description: "Delete a track"
    usage: "/%s deletetrack <track>"
    args:
      "name": "the name of the track"
  list-tracks:
    description: "List all tracks on the platform"
    usage: "/%s listtracks"
  user-info:
    description: "Shows info about the user"
  user-switchprimarygroup:
    description: "Switches the user's primary group"
    args:
      "group": "the group to switch to"
  user-promote:
    description: "Promotes the user up a track"
    args:
      "track": "the track to promote the user up"
      "context...": "the contexts to promote the user in"
  user-demote:
    description: "Demotes the user down a track"
    args:
      "track": "the track to demote the user down"
      "context...": "the contexts to demote the user in"
  group-info:
    description: "Gives info about the group"
  group-listmembers:
    description: "Show the users/groups who inherit from this group"
    args:
      "page": "the page to view"
  group-setweight:
    description: "Set the groups weight"
    args:
      "weight": "the weight to set"
  group-rename:
    description: "Rename the group"
    args:
      "name": "the new name"
  group-clone:
    description: "Clone the group"
    args:
      "name": "the name of the group to clone onto"
  holder-editor:
    description: "Opens the web permission editor"
  holder-showtracks:
    description: "Lists the tracks that the object is on"
  holder-clear:
    description: "Removes all permissions, parents and meta"
    args:
      "context...": "the contexts to filter by"
  permission:
    description: "Edit permissions"
  parent:
    description: "Edit inheritances"
  meta:
    description: "Edit metadata values"
  permission-info:
    description: "Lists the permission nodes the object has"
    args:
      "page": "the page to view"
      "filter": "the string to filter by"
  permission-set:
    description: "Sets a permission for the object"
    args:
      "node": "the permission node to set"
      "true|false": "the value of the node"
      "context...": "the contexts to add the permission in"
  permission-unset:
    description: "Unsets a permission for the object"
    args:
      "node": "the permission node to unset"
      "context...": "the contexts to remove the permission in"
  permission-settemp:
    description: "Sets a permission for the object temporarily"
    args:
      "node": "the permission node to set"
      "true|false": "the value of the node"
      "duration": "the duration until the permission node expires"
      "context...": "the contexts to add the permission in"
  permission-unsettemp:
    description: "Unsets a temporary permission for the object"
    args:
      "node": "the permission node to unset"
      "context...": "the contexts to remove the permission in"
  permission-check:
    description: "Checks to see if the object has a certain permission node"
    args:
      "node": "the permission node to check for"
      "context...": "the contexts to check in"
  permission-check-inherits:
    description: "Checks to see if the object inherits a certain permission node"
    args:
      "node": "the permission node to check for"
      "context...": "the contexts to check in"
  parent-info:
    description: "Lists the groups that this object inherits from"
  parent-set:
    description: "Removes all other groups the object inherits already and adds them to the one given"
    args:
      "group": "the group to set to"
      "context...": "the contexts to set the group in"
  parent-add:
    description: "Sets another group for the object to inherit permissions from"
    args:
      "group": "the group to inherit from"
      "context...": "the contexts to inherit the group in"
  parent-remove:
    description: "Removes a previously set inheritance rule"
    args:
      "group": "the group to remove"
      "context...": "the contexts to remove the group in"
  parent-set-track:
    description: "Removes all other groups the object inherits from already on the given track and adds them to the one given"
    args:
      "track": "the track to set on"
      "group": "the group to set to, or a number relating to the position of the group on the given track"
      "context...": "the contexts to set the group in"
  parent-add-temp:
    description: "Sets another group for the object to inherit permissions from temporarily"
    args:
      "group": "the group to inherit from"
      "duration": "the duration of the group membership"
      "context...": "the contexts to inherit the group in"
  parent-remove-temp:
    description: "Removes a previously set temporary inheritance rule"
    args:
      "group": "the group to remove"
      "context...": "the contexts to remove the group in"
  parent-clear:
    description: "Clears all parents"
    args:
      "context...": "the contexts to filter by"
  parent-clear-track:
    description: "Clears all parents on a given track"
    args:
      "track": "the track to remove on"
      "context...": "the contexts to filter by"
  meta-info:
    description: "Shows all chat meta"
  meta-set:
    description: "Sets a meta value"
    args:
      "key": "the key to set"
      "value": "the value to set"
      "context...": "the contexts to add the meta pair in"
  meta-unset:
    description: "Unsets a meta value"
    args:
      "key": "the key to unset"
      "context...": "the contexts to remove the meta pair in"
  meta-settemp:
    description: "Sets a meta value temporarily"
    args:
      "key": "the key to set"
      "value": "the value to set"
      "duration": "the duration until the meta value expires"
      "context...": "the contexts to add the meta pair in"
  meta-unsettemp:
    description: "Unsets a temporary meta value"
    args:
      "key": "the key to unset"
      "context...": "the contexts to remove the meta pair in"
  meta-addprefix:
    description: "Adds a prefix"
    args:
      "priority": "the priority to add the prefix at"
      "prefix": "the prefix string"
      "context...": "the contexts to add the prefix in"
  meta-addsuffix:
    description: "Adds a suffix"
    args:
      "priority": "the priority to add the suffix at"
      "suffix": "the suffix string"
      "context...": "the contexts to add the suffix in"
  meta-removeprefix:
    description: "Removes a prefix"
    args:
      "priority": "the priority to remove the prefix at"
      "prefix": "the prefix string"
      "context...": "the contexts to remove the prefix in"
  meta-removesuffix:
    description: "Removes a suffix"
    args:
      "priority": "the priority to remove the suffix at"
      "suffix": "the suffix string"
      "context...": "the contexts to remove the suffix in"
  meta-addtemp-prefix:
    description: "Adds a prefix temporarily"
    args:
      "priority": "the priority to add the prefix at"
      "prefix": "the prefix string"
      "duration": "the duration until the prefix expires"
      "context...": "the contexts to add the prefix in"
  meta-addtemp-suffix:
    description: "Adds a suffix temporarily"
    args:
      "priority": "the priority to add the suffix at"
      "suffix": "the suffix string"
      "duration": "the duration until the suffix expires"
      "context...": "the contexts to add the suffix in"
  meta-removetemp-prefix:
    description: "Removes a temporary prefix"
    args:
      "priority": "the priority to remove the prefix at"
      "prefix": "the prefix string"
      "context...": "the contexts to remove the prefix in"
  meta-removetemp-suffix:
    description: "Removes a temporary suffix"
    args:
      "priority": "the priority to remove the suffix at"
      "suffix": "the suffix string"
      "context...": "the contexts to remove the suffix in"
  meta-clear:
    description: "Clears all meta"
    args:
      "type": "the type of meta to remove"
      "context...": "the contexts to filter by"
  track-info:
    description: "Gives info about the track"
  track-append:
    description: "Appends a group onto the end of the track"
    args:
      "group": "the group to append"
  track-insert:
    description: "Inserts a group at a given position along the track"
    args:
      "group": "the group to insert"
      "position": "the position to insert the group at (the first position on the track is 1)"
  track-remove:
    description: "Removes a group from the track"
    args:
      "group": "the group to remove"
  track-clear:
    description: "Clears the groups on the track"
  track-rename:
    description: "Rename the track"
    args:
      "name": "the new name"
  track-clone:
    description: "Clone the track"
    args:
      "name": "the name of the track to clone onto"
  log-recent:
    description: "View recent actions"
    args:
      "user": "the name/uuid of the user to filter by"
      "page": "the page number to view"
  log-search:
    description: "Search the log for an entry"
    args:
      "query": "the query to search by"
      "page": "the page number to view"
  log-notify:
    description: "Toggle log notifications"
    args:
      "on|off": "whether to toggle on or off"
  log-user-history:
    description: "View a user's history"
    args:
      "user": "the name/uuid of the user"
      "page": "the page number to view"
  log-group-history:
    description: "View an group's history"
    args:
      "group": "the name of the group"
      "page": "the page number to view"
  log-track-history:
    description: "View a track's history"
    args:
      "track": "the name of the track"
      "page": "the page number to view"
  sponge:
    description: "Edit extra Sponge data"
    usage: "/%s sponge <collection> <subject>"
    args:
      "collection": "the collection to query"
      "subject": "the subject to modify"
  sponge-permission-info:
    description: "Shows info about the subject's permissions"
    args:
      "contexts...": "the contexts to filter by"
  sponge-permission-set:
    description: "Sets a permission for the Subject"
    args:
      "node": "the permission node to set"
      "tristate": "the value to set the permission to"
      "contexts...": "the contexts to set the permission in"
  sponge-permission-clear:
    description: "Clears the Subjects permissions"
    args:
      "contexts...": "the contexts to clear permissions in"
  sponge-parent-info:
    description: "Shows info about the subject's parents"
    args:
      "contexts...": "the contexts to filter by"
  sponge-parent-add:
    description: "Adds a parent to the Subject"
    args:
      "collection": "the subject collection where the parent Subject is"
      "subject": "the name of the parent Subject"
      "contexts...": "the contexts to add the parent in"
  sponge-parent-remove:
    description: "Removes a parent from the Subject"
    args:
      "collection": "the subject collection where the parent Subject is"
      "subject": "the name of the parent Subject"
      "contexts...": "the contexts to remove the parent in"
  sponge-parent-clear:
    description: "Clears the Subjects parents"
    args:
      "contexts...": "the contexts to clear parents in"
  sponge-option-info:
    description: "Shows info about the subject's options"
    args:
      "contexts...": "the contexts to filter by"
  sponge-option-set:
    description: "Sets an option for the Subject"
    args:
      "key": "the key to set"
      "value": "the value to set the key to"
      "contexts...": "the contexts to set the option in"
  sponge-option-unset:
    description: "Unsets an option for the Subject"
    args:
      "key": "the key to unset"
      "contexts...": "the contexts to unset the key in"
  sponge-option-clear:
    description: "Clears the Subjects options"
    args:
      "contexts...": "the contexts to clear options in"
  migration-command:
    description: "Migration command"
  migration-groupmanager:
    description: "Migration command"
    args:
      "migrate as global": "if world permissions should be ignored, and just migrated as global"
  migration-powerfulperms:
    description: "Migration command"
    args:
      "address": "the address of the PP database"
      "database": "the name of the PP database"
      "username": "the username to log into the DB"
      "password": "the password to log into the DB"
      "db table": "the name of the PP table where player data is stored"
