Inactive [ADMN/DEV] Permissions 3.1.6 - The Plugin of Tomorrow [935]

Discussion in 'Inactive/Unsupported Plugins' started by rcjrrjcr, May 24, 2011.

Thread Status:
Not open for further replies.
  1. Offline


    Permissions 3.1.6 (Yeti)

    Latest Stable (3.1.6) : Full Zip | Main Jar Only | SQL Interface Jar Only

    Previous Versions:
    3.1.5 (JAR|SQL) | 3.1.4 (JAR|SQL) | 3.1.3 (JAR|SQL) | 3.1.2 (JAR|SQL) | 3.1.1 (JAR) | 3.1 (JAR) | More older versions

    Feel free to comment and give suggestions.


    • Revamp commands
    Known plugins that cause IllegalAccessError(s):

    • Help (not fixed yet)
    Temp Fix for IAEs (open)

    1. Open Help's JAR with 7zip.
    2. Find MANIFEST.MF (it can be in the root folder or in the META-INF folder, or both).
    3. Open the MANIFEST.MF file in a text editor
    4. Look for a line that starts with "Class-Path:".
    5. Delete "Permissions.jar" from that line.
    6. Save the manifest.
    7. 7zip will prompt you to save changes back into the archive. Accept.
    8. Restart server.

    Plugin Authors: How to hook into Permissions

    Due to @TheYeti being busy in RL for now, I have created a new thread for Permissions 3.x. TheYeti is still part of the Permissions team.

    Permissions... Reborn.
    This is a continuation of the work that was originally done by Nijikokun. All original credit goes to them as without their work this plugin would not have been possible. This plugin does not provide any commands or additional functionality beyond what is described in this post. That means that you need another plugin to provide colored names, chat prefixes, and op commands such as /give and /time.​

    The Permissions Team

    The team consists of myself @rcjrrjcr and @TheYeti currently with contributions from @Nijikokun as well on occasion. There are also several other members of the community who frequently assist with providing code changes, bug fixes, patches, support, feedback, and beta testing. Special thanks to @flames and the Dynmap & Wormhole X-Treme teams for the hosting of Permissions on their Jenkins server.

    What's new in 3.x?

    Taken from the GitHub page:
    1. In-game commands. For a long time, users have been pestering, nagging, demanding and/or screaming for an way to manage Permissions via commands. Now, in 3.0, in-game commands are available to manage permissions and groups.
    2. SQL storage. This allows web interfaces to manage Permissions by updating the SQL database Permissions uses.
    3. Promotion/demotion tracks. With a simple command, users can be promoted/demoted along a preconfigured track, allowing RP servers with ranks to promote the player along a class track and other possibilities.
    4. Multigroup.
    5. Weightage. Plugins are able to compare users via their weight, which is inherited from their groups. For example, SlapPlugin can check if Player A is higher-weighted than Player B when A tries to slap B (Not IRL, obviously).
    6. Improved world mirroring. Config files are now split into a group file and a user file. Also, by editing storageconfig.yml, you can configure the mirroring of entire worlds, or just its users/groups. You also do not have to create files for worlds that mirror another world. Also, two different worlds can use different storage types, like YAML and SQL.
    7. Global permissions. Instead of having to resort to cross-world group inheritance, now all worlds inherit groups and users from the global permissions file. Also, the inherited groups/users can be overridden via editing the specific world's file.
    Upgrading from 2.x to 3.x

    I have written a guide on GitHub. This demonstrates how to convert 2.x-style configs to 3.0. The YAML-to-SQL converter are still in testing, but it can be downloaded from here. It's written in Perl. @Zgred has created a web version of the script located here. @omgneeq is working on an Web UI for SQL databases (Sorry about the previous statement that he was making a converter.)​

    Install (open)
    For the admins

    In case you missed the link above, the Setup Guide on GitHub will help you quite a bit

    Samkio has updated his tutorial for P3:

    First thing that you will need to do is download the plugin. Place it in your plugins/ folder and unzip it. This should create the folder Permissions and a Permissions.jar file in your plugins folder. Next, go into Permissions/ and create a folder named the same as your world. So if your world name from is Foo you will need to create the folder plugins/Permissions/Foo. You MUST rename it to whatever your world's name is or it will not work.

    Note, if you have your server maps all saved into a single directory then the initial setup will be somewhat different. Say your maps are arranged in the main directory like so: bukkit/mapfolder/world1, bukkit/mapfolder/world2, etc. Then inside of the plugin/Permissions directory you will need to create a folder called mapfolder and inside of that put the directories containing users.yml and groups.yml in there.

    Next, you will need to go in and add yourself to the users, just replace the user that is in there with your name. Make any other modifications that you need to. While making modifications make sure that you do NOT use tabs. These will break the YAML format and cause issues. Instead, each indent should be four spaces. If you want people who aren't in the Admin group to be able to reload the permissions plugin you need to give them 'permissions.reload' permissions within the config file.

    Permissions gives server admins great control, mostly in-game reloading. More info about commands can be found here.

    FAQ (open)


    [Q] What is with the version numbers? I can't keep up, it seems like every time I look there is a new version!
    [A] I use the GNU versioning system for my version numbers. So what this means is the version number should be read as Major.Minor.Revision. So for version 2.5.2 this would mean it is the 2nd Major version, the 5th Minor release in this version, and the 2nd revision. I tend to release bug fixes and anything that doesn't add functionality or will not break things as revisions. So generally you should be safe with just watching the major & minor numbers and only getting the revision if it fixes a bug specific to you. Technically 2.5.2 should have been released as 2.6 as it did add functionality, but this was below even a minor change so I released it as a revision.

    [Q] I am getting an error that it can't pass BLOCK_PLACED or BLOCK _BREAK events to Permissions. Fix it!
    [A] That's not a question. The reason why it can't place these is probably because the syntax of your Permissions file is all whacked out, or it is a different world and you don't have a config file for that world.

    [Q] What am I suppose to name the config file?
    [A] You need to name it the same as your world. So if you look in at "level-name" you will see a world name there. Rename your config file to the same thing as that. Make sure you keep the .yml extension at the end.

    [Q] Permissions are broken. Why can no one use commands? Why am I not an admin?
    [A] First off, make sure that your formatting is correct. Look at the format that the default config file uses. Yours should look like that. Do NOT use tabs. Use 4 spaces (IE. " " <-- Four of those things.). Also, whichever group you give the permission '*' to, do not have that group inherit permissions from anyone else. That is called overloading and it will break things. Also, this.

    [Q] Which one am I suppose to download and unzip to install this?
    [A] Download the main package, not the JAR only. Unzip the ZIP file. The JAR only downloads are simply there for people who are UPGRADING and do not need the default config file.

    [Q] I have done all of this and this doesn't work! I'm going back to GroupManager!
    [A] Well, there is probably the problem. Make sure that you delete EssentialsGroupManager.jar and EssentialsGroupBridge.jar as these don't play well with Permissions and will cause headache.

    [Q] When are you going to add <blah> <feature/command> into this already? You suck! Do what I want NAU PL0X!
    [A] Feature requests should be posted on the GitHub tracker. Stupid suggestions like adding teleportation functionality and other less ludicrous stuff will be rejected.

    • 3.1.6
      • Major fixes.
      • Simplify tracks
    Changelog (open)

    • 3.1.5
      • Fix several minor bugs.
      • Autoconvert 2.x/GM format (only works if you split them into groups.yml and users.yml, but leave the rest untouched)
    • 3.1.4
      • Fix YAML locking bugs.
    • 3.1.3
      • Fix another SQL data and inheritance issue.
    • 3.1.2
      • Fix SQL data issues.
      • Added user/group name autocomplete
      • Separated SQL interface into separate plugin
    • 3.1.1
      • Fix prefix/suffix issues.
      • Added ON UPDATE CASCADE to the SQL foreign [/SIZE]
    • 3.1
      • Tons of fixes.
    • 3.0.6
      • Fix SQLite issues due to misimplementation of methods.
    • 3.0.5
      • Fix cache-related NPEs
      • Fixed quoted worlds (thanks again @Jeyge !)
    • 3.0.4
      • Fix LinkageError caused by ServiceManager not unloading the PermissionHandler class.
      • Added cache
      • Fix index not being incremented when promoting (thanks @Jeyge !)
    • 3.0.3
      • Fixed another getGroup bug.
    • 3.0.2
      • Fixed getGroup bug.
    • 3.0.1
      • Fixed some NPE bugs.
    • 3.0
      • Total overhaul of Permissions. Adds many new features (see What's new in 3.0?).
    • 2.7.4
      • Added overload of has() and permissions() for plugin devs
    • 2.7.3
      • Fixed negate node add/remove bug.
    • 2.7.2
      • Fix for small subtle bug introduced in last minor version.
    • 2.7.1
      • Commit by DThielke to fix several bugs with programmatic modifications of user permissions.
    • 2.7
      • Further commits by rcjrrjcr
        • Removed negatedNode checks
        • Temp fix for NULL issue
        • WorldConfigurationModification to save only modified configs
        • Fix for cache problems

    Credits (open)

    Nijikokun - Without their original work this plugin would not be possible.​
    All of the members of the community that regularly provide support in this thread for Permissions​
    Rigby, Kainzo, DThielke, GoMySQL, sk89q, RightLegRed - For hanging out with me in IRC, tons of testing, and pushing me to improve on the code constantly and make changes to make this plugin constantly better and better, and in general being entertaining.​
    Everyone else on here and in IRC who provides support, feedback, assistance, plugins that have continued to support and integrate this, and in general makes my life a bit easier, THANK YOU!​

    I would like to thank Joy , jamesg and omgneeq for staying in #permissions for long periods of time to test out 3.0, and help me find many coding mistakes I made, patiently waiting for the next build while I fixed the bugs. I appreciate SvenBrnn 's and GoMySQL(Geoff Winans on this forum) 's help that allow me to design and code the SQL interface, and the HeroCraft coding team for providing support and some priceless IRC quotes (Dgco). Also, I would like to thank Lycano for helping me in many different aspects. Last but not least, I would like to thank Nijikokun and TheYeti for developing P2, which was one of my core plugins when I was still a 14-year-old server admin that didn't understand Java, and was the base for 3.0. Without these people, 3.0 would never be possible.​

    If after reading through all of that you are still having issues do one of two things. If it is a provable bug, and you have things like screenshots or copies of startup, steps to reproduce, your craftbukkit build and the version this is running along with your config files then submit the bug on the issue tracker. If it is general help or support you are needing then post a reply to this thread and someone will try to help you.

    Old thread: Permissions v2.7.4
  2. Offline


    It's okay, I just forgot to save changes to the config file so it didn't make me an admin
  3. Offline


  4. Offline


    Post all of you permissions yml files.
  5. Offline


    Ok, Im about to through alot at you helpful people, so be warned. Im getting a LOT of errors when trying to set up Bukkit #1000 with Permissions 3.1.6 Ill post all of my CraftBukkit files through pastebin.

    Terminal Output:

    Permissions YML: ( No permissions for anyone other than admin for now, want to get one working before the rest )

    Global Users --

    Global Groups --

    Users.yml (from permissions/WORLD/)

    Groups.yml (from permissions/WORLD/)

    If you guys need anymore info on files, let me know, but could someone PLEASE tell me what im doing wrong, you can see all of the errors in the Terminal Output, which (to the best of my understanding) shows that because permissions is screwed up, some of my mods wont work. (ex. AntiHack: 18:25:56 [SEVERE] Error occurred while enabling AntiHack v2.1 (Is it up to date?): com/nijikokun/bukkit/Permissions/Permissions)

    Due to recent posts, i saw that some things wrong might be the spacing, I tried to fix it, but (as you can tell) Im sort of a newb ;).

    Thank You!

  6. Offline


    I would suggest starting with the sample files in the zip download and adding your permissions from there. As you can already tell, you have a lot of spacing problems and formatting issues in general. Starting from the samples will get you heading in the right direction at least. One thing to keep in mind is that YAML is a positional language so left justifying your permissions will completely break everything.

    Another thing to look at is your permissions.yml file. You only use that if you are going to use the built in permissions with Bukkit.

    If you really want to try to save your files, then I would start by deleting your global files as you don't need them for now. For your users.yml and groups.yml, I would try to follow the standards set by the sample files and try to fix everything. Once you get close, then post your files again and someone can take a look at them.
  7. Offline


    Will do!

    One question, can i delete the permissions.yml file then? Never mind, i just deleted the text inside.

    EDIT: Ok, I replaced with the sample files, and started formatting (ugh!) Ive gone from the bottom up with enabling my (admin) permissions.

    Could someone make sure im formatting it right ( look toward the bottom of 25CentStudios permissions, you will see like the final 6 in a different format. Will I have to use that format for each permission? It will take forever! Any shortcuts?
  8. Offline


    Is it possible to have 2 worlds and have different permissions for the same rank in each world?
  9. Offline


    Yep, it will be recreated empty the next time you start your server.

    It is and you can even have the same user in both worlds with the same rank by using Example 2 in the Global vs World topic from the wiki. Just set up each groups.yml file in your plugins\permissions\<world> directories with the permissions for each world.

    Users.yml overrides groups.yml so if you grant a group "foo.*" and want to remove "" from one user, you would add "- ''" to that one user.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
    Last edited by a moderator: Sep 9, 2018
  10. Offline


  11. Offline


    That looks much better. The error is saying that you used a tab somewhere on or near line 85. I have some information in the wiki FAQ on how to set up Notepad++ to prevent/fix tabs.
  12. Offline


    I fixed it and now EVERYTHING WORKS PERFECTLY! THANK YOU SO MUCH!!!!!!!!!! :D

    Now the next step: Creating all the help pages.
  13. Offline


    i was wondering that myself when I went through the log. It seems to happen even if I'm not running permissions and it seems harmless because those plugins are not effected and everything else works fine. I'm not sure what it could be.:
  14. Offline


    So, "Users.yml" permissions is overridden by "Groups.yml", correct? I'm trying to revoke a certain permission from a single user in a group, however, it won't work if I add the permission to the users.yml file under their name.

    Any tips?
  15. Offline


    I have group manager and im upgrading to this because it looks way better! Everything works + essentials but I get this error trying to use the /pr commands!

    2011-07-29 00:16:23 [SEVERE] null
    org.bukkit.command.CommandException: Unhandled exception executing command 'pr' in plugin Permissions v3.1.6
    at org.bukkit.command.PluginCommand.execute(
    at org.bukkit.command.SimpleCommandMap.dispatch(
    at org.bukkit.craftbukkit.CraftServer.dispatchCommand(
    at net.minecraft.server.NetServerHandler.handleCommand(
    at net.minecraft.server.NetServerHandler.a(
    at net.minecraft.server.Packet3Chat.a(
    at net.minecraft.server.NetworkManager.b(
    at net.minecraft.server.NetServerHandler.a(
    at net.minecraft.server.NetworkListenThread.a(SourceFile:105)
    at net.minecraft.server.MinecraftServer.h(
    Caused by: java.lang.NullPointerException
    at java.util.HashSet.<init>(Unknown Source)
    at com.nijiko.permissions.PermissionWorld.getTracks(
    at com.nijiko.permissions.ModularControl.getTracks(
    at com.nijikokun.bukkit.Permissions.Permissions.onCommand(
    at org.bukkit.command.PluginCommand.execute(
    ... 12 more
  16. Offline


    Is there a tutorial or sth like that for permissions with mysql​
  17. Offline


    I just recently upgraded to a 24/7 server and now the permissions that was installed previously doesn't work anymore. Do I have to do something to the Global files or something?
  18. Offline


    Looks like you were trying to promote/demote someone but you don't have your tracks set up. If this is so, then at the end of the Chat Commands topic is a link to the tracks topic which will help.
    There is a writeup a couple pages back on how to use the SQL version of Permissions.
    There shouldn't be anything special you have to do for a 24/7 server.
  19. Offline


    How come when i sets peoples group to member with builder status ON and no inheriting the defult group they still cant build?
  20. Offline


    @Jeyge Thanks SO much! It works 100% but it all crashes with region market for some reason, oh well! (If you can fix it let me know!)
  21. Offline


    So whats this i hear permissions 3.1.6 might be dropped. Someone please tell me i am wrong.
  22. Offline


    does Permissions now work on mysql?
    I tried it but I got a Problem. I changed the YAML to SQL with the web converter.
    He changed all, but the Script will write all the Permissions Notes into a table called "PrGroups " or "PrGroups Permissions". But the 2 tables don't exist on my Database?!
    INSERT INTO PrGroupPermissions (gid, permstring) VALUES (2, 'essentials.list');
    Where must I put the Groups Permissions in?
  23. Please please PLEASE update to 1000 from 935. I really need Permissions on my new server. Thanks
  24. Offline


    It work on CB #1000 without Problems ...
    How to add a Group to default true by using mysql?
  25. Offline


  26. Offline


    PLEASE HELP :( my permissions isnt loading my permissions config file for the world "world". the world name is "world" (without quotes), the storage config is YAML, and i have only ichat but i dont know why permissions cannot load the config "world". (i used notepad++ to config the file and i dont kno how to use the YAML parser)\


    When i start up and do /permissions -reload world i get this:

    2011-07-29 10:09:36 [INFO] Starting minecraft server version Beta 1.7.3
    2011-07-29 10:09:36 [INFO] Loading properties
    2011-07-29 10:09:36 [INFO] Starting Minecraft server on *:25565
    2011-07-29 10:09:36 [INFO] This server is running Craftbukkit version git-Bukkit-0.0.0-945-g73697a4-b1000jnks (MC: 1.7.3)
    2011-07-29 10:09:37 [SEVERE] while scanning for the next token; found character '\t' that cannot start any token initializing Permissions v3.1.6 (Is it up to date?)
    while scanning for the next token
    found character '\t' that cannot start any token
    in "<reader>", line 3, column 1:
    type: YAML

    at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(
    at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(
    at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingValue.produce(
    at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(
    at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(
    at org.yaml.snakeyaml.composer.Composer.composeNode(
    at org.yaml.snakeyaml.composer.Composer.composeMappingNode(
    at org.yaml.snakeyaml.composer.Composer.composeNode(
    at org.yaml.snakeyaml.composer.Composer.composeMappingNode(
    at org.yaml.snakeyaml.composer.Composer.composeNode(
    at org.yaml.snakeyaml.composer.Composer.composeDocument(
    at org.yaml.snakeyaml.composer.Composer.getSingleNode(
    at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(
    at org.yaml.snakeyaml.Yaml.load(
    at org.bukkit.util.config.Configuration.load(
    at com.nijikokun.bukkit.Permissions.Permissions.onLoad(
    at org.bukkit.craftbukkit.CraftServer.loadPlugins(
    at org.bukkit.craftbukkit.CraftServer.<init>(
    at net.minecraft.server.ServerConfigurationManager.<init>(
    at net.minecraft.server.MinecraftServer.init(
    2011-07-29 10:09:37 [INFO] [Permissions] version [3.1.6] (Yeti) loaded
    2011-07-29 10:09:37 [INFO] Preparing level "world"
    2011-07-29 10:09:37 [INFO] Preparing start region for level 0 (Seed: -5371689880797896992)
    2011-07-29 10:09:38 [INFO] Preparing spawn area: 85%
    2011-07-29 10:09:38 [INFO] Preparing start region for level 1 (Seed: -961368758197840833)
    2011-07-29 10:09:39 [SEVERE] java.lang.NullPointerException
    2011-07-29 10:09:39 [SEVERE] at com.nijikokun.bukkit.Permissions.PrWorldListener.onWorldLoad(
    2011-07-29 10:09:39 [SEVERE] at$53.execute(
    2011-07-29 10:09:39 [SEVERE] at org.bukkit.plugin.RegisteredListener.callEvent(
    2011-07-29 10:09:39 [SEVERE] at org.bukkit.plugin.SimplePluginManager.callEvent(
    2011-07-29 10:09:39 [SEVERE] at net.minecraft.server.MinecraftServer.a(
    2011-07-29 10:09:39 [SEVERE] at net.minecraft.server.MinecraftServer.init(
    2011-07-29 10:09:39 [SEVERE] at
    2011-07-29 10:09:39 [SEVERE] at
    2011-07-29 10:09:39 [SEVERE] java.lang.NullPointerException
    2011-07-29 10:09:39 [SEVERE] at com.nijikokun.bukkit.Permissions.PrWorldListener.onWorldLoad(
    2011-07-29 10:09:39 [SEVERE] at$53.execute(
    2011-07-29 10:09:39 [SEVERE] at org.bukkit.plugin.RegisteredListener.callEvent(
    2011-07-29 10:09:39 [SEVERE] at org.bukkit.plugin.SimplePluginManager.callEvent(
    2011-07-29 10:09:39 [SEVERE] at net.minecraft.server.MinecraftServer.a(
    2011-07-29 10:09:39 [SEVERE] at net.minecraft.server.MinecraftServer.init(
    2011-07-29 10:09:39 [SEVERE] at
    2011-07-29 10:09:39 [SEVERE] at
    2011-07-29 10:09:39 [INFO] [iChat] Found Permissions (v3.1.6)
    2011-07-29 10:09:39 [INFO] iChat (v2.3.3-p3) enabled
    2011-07-29 10:09:39 [INFO] Server permissions file permissions.yml is empty, ignoring it
    2011-07-29 10:09:39 [INFO] Done (0.213s)! For help, type "help" or "?"
    2011-07-29 10:09:48 [INFO] [Permissions] Permissions was unable to load data during server load.
    2011-07-29 10:09:48 [INFO] [Permissions] Please post the the portion of your server log since the server start/reload in the forums thread.
    2011-07-29 10:09:51 [INFO] Stopping the server..
    2011-07-29 10:09:51 [INFO] Stopping server
    2011-07-29 10:09:51 [INFO] [Permissions] (Yeti) saving data...
    2011-07-29 10:09:51 [SEVERE] Error occurred while disabling Permissions v3.1.6 (Is it up to date?): null
    at com.nijikokun.bukkit.Permissions.Permissions.onDisable(
    at org.bukkit.plugin.SimplePluginManager.disablePlugin(
    at org.bukkit.plugin.SimplePluginManager.disablePlugins(
    at org.bukkit.craftbukkit.CraftServer.disablePlugins(
    at net.minecraft.server.MinecraftServer.stop(
    2011-07-29 10:09:51 [INFO] [iChat] iChat Disabled
    2011-07-29 10:09:51 [INFO] Saving chunks
    2011-07-29 10:09:51 [INFO] Stopping server
    2011-07-29 10:09:51 [INFO] Saving chunks
  27. Offline


    There is some information on why people can't build in the wiki FAQ. Take a look at that and if it doesn't help fix things, then post your server.log and permissions yml files.
    That isn't anything I've heard but I do know there are devs out there that would love to see it disappear.
    The Permissions SQL version is working but the converter isn't. That PrGroupPermissions is coming from the converter.
    You and the 20 or so other people who are looking for it to be updated to 1000 will need to list what is broken for it to be updated. Otherwise, it should work for you just like it has for everyone else. Also, take a peek at the wiki FAQ if you are wondering what versions it works for.
    See Issue #142 for why the default group isn't working in MySQL and a workaround.
    You don't have any users that would require conversion so I'm guessing that isn't all of your files. Please zip up your plugins\permissions directory and post that.
    You have a tab on or around line 3 in your storageconfig.yml file. YAML doesn't support tabs so you will need to remove it and all others. See the wiki FAQ for information on how to set up Notepad++ to remove the tabs and/or prevent them in the future.
  28. Offline


    Anything but the new bukkit permissions.
  29. Offline


    what do you mean, this are my 2 files for my world
  30. Offline


    How do I add this to my permissions so it wont STOP the server. People might type /stop and it stops the server. I am trying to prevent that.

    Permissions :
    - '-minecraft.stop'

    None of those commands work in the permissions. If they are not mod or admin,
    they cannot use the /STOP command. But OPs who are good OPs sometimes makes
    mistakes when they type /stop. So I am trying to find a way to prevent it.

    Anyone got any ideas that ACTUALLY work ?
  31. Offline


    Don't you have your globalgroups.yml and globalusers.yml? How about your nether world files? Any other worlds? Please zip up your directory and post that.

    Builder is inheriting from Default but you changed Default to Guest. You also have some users assigned to some really funky groups. The strange looking Admins and Moderator at the bottom of your groups is cause by an error in your users.yml file.

    The rest looks good so far.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
    Last edited by a moderator: Oct 10, 2018
Thread Status:
Not open for further replies.

Share This Page