Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. .Net Core self-contained

.Net Core self-contained

Scheduled Pinned Locked Moved The Lounge
csharpasp-netdotnetcomperformance
30 Posts 12 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • N Offline
    N Offline
    Nelek
    wrote on last edited by
    #1

    I have been reading Application publishing - .NET Core | Microsoft Docs[^] I find the option of the App being self-contained pretty interesting, since once of the biggest problems with big companies is the allowance to install something, the delay with the updates and / or the mandatory updates (for yesterady of course) when they decide something has to be done (even when it might bring breaking changes with it). I will play with both to experience myself and maybe do some detailed comparisons, but I am interested in your experiences too. Are you using the self-contained option? If, not...why? It looks very promising. Is the difference in size really that big? Have you noticed performance differences when using one or the other? And I don't mean the startup-time described in the "ReadyToStart" option, I mean while in the middle of the execution. Topic open to discussion :)

    M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you Rating helpful answers is nice, but saying thanks can be even nicer.

    S L C D R 6 Replies Last reply
    0
    • N Nelek

      I have been reading Application publishing - .NET Core | Microsoft Docs[^] I find the option of the App being self-contained pretty interesting, since once of the biggest problems with big companies is the allowance to install something, the delay with the updates and / or the mandatory updates (for yesterady of course) when they decide something has to be done (even when it might bring breaking changes with it). I will play with both to experience myself and maybe do some detailed comparisons, but I am interested in your experiences too. Are you using the self-contained option? If, not...why? It looks very promising. Is the difference in size really that big? Have you noticed performance differences when using one or the other? And I don't mean the startup-time described in the "ReadyToStart" option, I mean while in the middle of the execution. Topic open to discussion :)

      M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you Rating helpful answers is nice, but saying thanks can be even nicer.

      S Offline
      S Offline
      Shao Voon Wong
      wrote on last edited by
      #2

      Hopefully, the .NET team can take a leaf from the Visual C++ team to get the executable size down. C++ does not link the unused classes and remove the methods not called at all (directly or indirectly) from the executable. I was thinking I was only calling a few jQuery methods on my webpage but my users have to download all jQuery even 99% of functionality is not used. What a waste of bandwidth!

      H N C D 4 Replies Last reply
      0
      • S Shao Voon Wong

        Hopefully, the .NET team can take a leaf from the Visual C++ team to get the executable size down. C++ does not link the unused classes and remove the methods not called at all (directly or indirectly) from the executable. I was thinking I was only calling a few jQuery methods on my webpage but my users have to download all jQuery even 99% of functionality is not used. What a waste of bandwidth!

        H Offline
        H Offline
        honey the codewitch
        wrote on last edited by
        #3

        A long time ago I did this weird "site on a business card CD**" where the javascript was gzipped and decompressed itself (and all the HTML content as well) - I suppose you could do something like that, but these days it's probably not worth the effort. ** not sure if you've ever seen these - it's a partial CD roughly the size of a business card and will spin in most CD trays. The inner tracks have space for enough data to fit a small bit of media or even an app on.

        Real programmers use butterflies

        J 1 Reply Last reply
        0
        • H honey the codewitch

          A long time ago I did this weird "site on a business card CD**" where the javascript was gzipped and decompressed itself (and all the HTML content as well) - I suppose you could do something like that, but these days it's probably not worth the effort. ** not sure if you've ever seen these - it's a partial CD roughly the size of a business card and will spin in most CD trays. The inner tracks have space for enough data to fit a small bit of media or even an app on.

          Real programmers use butterflies

          J Offline
          J Offline
          Johnny J
          wrote on last edited by
          #4

          50 Mb?[^] - Holy Batman! The possibilities are endless! :omg:

          Anything that is unrelated to elephants is irrelephant
          Anonymous
          -----
          The problem with quotes on the internet is that you can never tell if they're genuine
          Winston Churchill, 1944
          -----
          Never argue with a fool. Onlookers may not be able to tell the difference.
          Mark Twain

          H C 2 Replies Last reply
          0
          • J Johnny J

            50 Mb?[^] - Holy Batman! The possibilities are endless! :omg:

            Anything that is unrelated to elephants is irrelephant
            Anonymous
            -----
            The problem with quotes on the internet is that you can never tell if they're genuine
            Winston Churchill, 1944
            -----
            Never argue with a fool. Onlookers may not be able to tell the difference.
            Mark Twain

            H Offline
            H Offline
            honey the codewitch
            wrote on last edited by
            #5

            I thought it was less. Oh well, it has been a long time.

            Real programmers use butterflies

            1 Reply Last reply
            0
            • N Nelek

              I have been reading Application publishing - .NET Core | Microsoft Docs[^] I find the option of the App being self-contained pretty interesting, since once of the biggest problems with big companies is the allowance to install something, the delay with the updates and / or the mandatory updates (for yesterady of course) when they decide something has to be done (even when it might bring breaking changes with it). I will play with both to experience myself and maybe do some detailed comparisons, but I am interested in your experiences too. Are you using the self-contained option? If, not...why? It looks very promising. Is the difference in size really that big? Have you noticed performance differences when using one or the other? And I don't mean the startup-time described in the "ReadyToStart" option, I mean while in the middle of the execution. Topic open to discussion :)

              M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you Rating helpful answers is nice, but saying thanks can be even nicer.

              L Offline
              L Offline
              Lost User
              wrote on last edited by
              #6

              If it's a UWP app, you can distribute it (corporately) through the Windows store, including forced updates.

              It was only in wine that he laid down no limit for himself, but he did not allow himself to be confused by it. ― Confucian Analects: Rules of Confucius about his food

              N 1 Reply Last reply
              0
              • S Shao Voon Wong

                Hopefully, the .NET team can take a leaf from the Visual C++ team to get the executable size down. C++ does not link the unused classes and remove the methods not called at all (directly or indirectly) from the executable. I was thinking I was only calling a few jQuery methods on my webpage but my users have to download all jQuery even 99% of functionality is not used. What a waste of bandwidth!

                N Offline
                N Offline
                Nelek
                wrote on last edited by
                #7

                Shao Voon Wong wrote:

                Hopefully, the .NET team can take a leaf from the Visual C++ team to get the executable size down. C++ does not link the unused classes and remove the methods not called at all (directly or indirectly) from the executable.

                I think they have already done that dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true **/p:PublishTrimmed=true**That should deprecate what is not used. In a simple hello world console reduces the memory needs from 69 to 29 Mb

                M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you Rating helpful answers is nice, but saying thanks can be even nicer.

                S 1 Reply Last reply
                0
                • L Lost User

                  If it's a UWP app, you can distribute it (corporately) through the Windows store, including forced updates.

                  It was only in wine that he laid down no limit for himself, but he did not allow himself to be confused by it. ― Confucian Analects: Rules of Confucius about his food

                  N Offline
                  N Offline
                  Nelek
                  wrote on last edited by
                  #8

                  I am not concerned about the dustribution of "my" app, but the distribution of the windows updates and / or frameworks that could break the proper functioning of the app. If everything needed is included in the exe, then the App should still be able to run, even when i.e. the .Net Framework was deinstalled or changed We had the situation that the IT just rolled out a new version of the Java runtime and a couple of things stopped working, then the java guy had to run to make that work again. I see the problem if a lot of software did this, but for a single App... I personally find it a real improvement. There are downsides too i.e.

                  Quote:

                  .NET Core will update critical security patches as needed for the framework library in the machine that your app runs on. You are responsible for end to end validation for this security patch scenario.

                  but that happens with separated runtime too.

                  M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you Rating helpful answers is nice, but saying thanks can be even nicer.

                  L 1 Reply Last reply
                  0
                  • N Nelek

                    Shao Voon Wong wrote:

                    Hopefully, the .NET team can take a leaf from the Visual C++ team to get the executable size down. C++ does not link the unused classes and remove the methods not called at all (directly or indirectly) from the executable.

                    I think they have already done that dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true **/p:PublishTrimmed=true**That should deprecate what is not used. In a simple hello world console reduces the memory needs from 69 to 29 Mb

                    M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you Rating helpful answers is nice, but saying thanks can be even nicer.

                    S Offline
                    S Offline
                    Shao Voon Wong
                    wrote on last edited by
                    #9

                    29MB is still too much for a Hello World program. That PublishTrimmed=true should be made mandatory, not as opt-in.

                    L N 2 Replies Last reply
                    0
                    • N Nelek

                      I have been reading Application publishing - .NET Core | Microsoft Docs[^] I find the option of the App being self-contained pretty interesting, since once of the biggest problems with big companies is the allowance to install something, the delay with the updates and / or the mandatory updates (for yesterady of course) when they decide something has to be done (even when it might bring breaking changes with it). I will play with both to experience myself and maybe do some detailed comparisons, but I am interested in your experiences too. Are you using the self-contained option? If, not...why? It looks very promising. Is the difference in size really that big? Have you noticed performance differences when using one or the other? And I don't mean the startup-time described in the "ReadyToStart" option, I mean while in the middle of the execution. Topic open to discussion :)

                      M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you Rating helpful answers is nice, but saying thanks can be even nicer.

                      C Offline
                      C Offline
                      CodeWraith
                      wrote on last edited by
                      #10

                      The big question is what 'self contained' is supposed to mean. I doubt that they will go as far as letting you throw the program plus a generic bootloader on a computer without any OS installed. That could be done, but it would mean that you have to include a minimal OS and drivers. That would put you only one step away from the good old hardware dependency hell. Both updating hell and framework hell are only additional circles of DLL hell. The only solution has always been to include required DLLs into the program and not use whatever versions are installed. That defeats many purposes of dynamic linking and may put you in some other hells, but it's the only way out. I guess, 'self contained' will only mean independency from any installed .NET frameworks and not more. So framework and update hell get a little better, but you the other circles of DLL hell also get a little more interesting again. This is not progress. It's the admission of defeat.

                      I have lived with several Zen masters - all of them were cats. His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.

                      N R D 3 Replies Last reply
                      0
                      • N Nelek

                        I am not concerned about the dustribution of "my" app, but the distribution of the windows updates and / or frameworks that could break the proper functioning of the app. If everything needed is included in the exe, then the App should still be able to run, even when i.e. the .Net Framework was deinstalled or changed We had the situation that the IT just rolled out a new version of the Java runtime and a couple of things stopped working, then the java guy had to run to make that work again. I see the problem if a lot of software did this, but for a single App... I personally find it a real improvement. There are downsides too i.e.

                        Quote:

                        .NET Core will update critical security patches as needed for the framework library in the machine that your app runs on. You are responsible for end to end validation for this security patch scenario.

                        but that happens with separated runtime too.

                        M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you Rating helpful answers is nice, but saying thanks can be even nicer.

                        L Offline
                        L Offline
                        Lost User
                        wrote on last edited by
                        #11

                        Your app's manifest says what Windows builds and frameworks it supports. Your app doesn't get automatically updated to a newer version. The Java Runtime is another matter and not part of any typical .NET distribution. Same goes for any third part library that needs to be "shared". You have a Java Runtime distribution problem; not a .NET "app" problem.

                        It was only in wine that he laid down no limit for himself, but he did not allow himself to be confused by it. ― Confucian Analects: Rules of Confucius about his food

                        N 1 Reply Last reply
                        0
                        • J Johnny J

                          50 Mb?[^] - Holy Batman! The possibilities are endless! :omg:

                          Anything that is unrelated to elephants is irrelephant
                          Anonymous
                          -----
                          The problem with quotes on the internet is that you can never tell if they're genuine
                          Winston Churchill, 1944
                          -----
                          Never argue with a fool. Onlookers may not be able to tell the difference.
                          Mark Twain

                          C Offline
                          C Offline
                          CodeWraith
                          wrote on last edited by
                          #12

                          For us perhaps. For real Javascriptors that may or may not be enough for Hello World. :-)

                          I have lived with several Zen masters - all of them were cats. His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.

                          1 Reply Last reply
                          0
                          • N Nelek

                            I have been reading Application publishing - .NET Core | Microsoft Docs[^] I find the option of the App being self-contained pretty interesting, since once of the biggest problems with big companies is the allowance to install something, the delay with the updates and / or the mandatory updates (for yesterady of course) when they decide something has to be done (even when it might bring breaking changes with it). I will play with both to experience myself and maybe do some detailed comparisons, but I am interested in your experiences too. Are you using the self-contained option? If, not...why? It looks very promising. Is the difference in size really that big? Have you noticed performance differences when using one or the other? And I don't mean the startup-time described in the "ReadyToStart" option, I mean while in the middle of the execution. Topic open to discussion :)

                            M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you Rating helpful answers is nice, but saying thanks can be even nicer.

                            D Offline
                            D Offline
                            Dan Neely
                            wrote on last edited by
                            #13

                            I dislike the idea. Shared libraries mean a vulnerability only needs to be patched once and then distributed by centralized patch management systems. If every application has its own copy of the affected library, every one will need to be patched, and have its patch installed, separately. The inevitable result will be much higher work loads for IT in the best case; and an increase in foreverday bugs in the realistic case.                                                                                             X| X| X| X| X|                         X| X| X| X| X| X|                             X| X| X| X| X| X| X| X| X|               X| X|                             X| X|                X| X| X| X| X| X| X| X| X| X| X| X|           X|                                                X|      X| X| X| X| X| X| X| X| X| X| X| X| X| X|      X|                                                     X| X| X| X| X| X| X| X| X| X| X| X| X

                            N 1 Reply Last reply
                            0
                            • S Shao Voon Wong

                              29MB is still too much for a Hello World program. That PublishTrimmed=true should be made mandatory, not as opt-in.

                              L Offline
                              L Offline
                              lmoelleb
                              wrote on last edited by
                              #14

                              Reflection makes it somewhat difficult to make this mandatory. Stuff like "Register all classes in this assembly/namespace with the DI container, "deserialize this JSON looking up the types based on the $type property" is all over the place. So at least they need to add the option to specify what always needs to be included, and this would need to work across dependencies. Not impossible, but I can see how it would end up in the "something for the next version" pile. At least they can keep the signature of the classes they stripped out, so any reflection code hitting them could give a meaningful error. A proper error message is worth more than 1MB or two in my book. :) And I guess when the choice was between the comments saying "this does not work" and "this is too big", they chose the latter in the default settings. Can't say I blame them...

                              1 Reply Last reply
                              0
                              • S Shao Voon Wong

                                29MB is still too much for a Hello World program. That PublishTrimmed=true should be made mandatory, not as opt-in.

                                N Offline
                                N Offline
                                Nelek
                                wrote on last edited by
                                #15

                                Shao Voon Wong wrote:

                                29MB is still too much for a Hello World program.

                                Maybe there are 28.5 Mb Framework and only 500kb "Hello World", that's actually the point of it.

                                M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you Rating helpful answers is nice, but saying thanks can be even nicer.

                                1 Reply Last reply
                                0
                                • C CodeWraith

                                  The big question is what 'self contained' is supposed to mean. I doubt that they will go as far as letting you throw the program plus a generic bootloader on a computer without any OS installed. That could be done, but it would mean that you have to include a minimal OS and drivers. That would put you only one step away from the good old hardware dependency hell. Both updating hell and framework hell are only additional circles of DLL hell. The only solution has always been to include required DLLs into the program and not use whatever versions are installed. That defeats many purposes of dynamic linking and may put you in some other hells, but it's the only way out. I guess, 'self contained' will only mean independency from any installed .NET frameworks and not more. So framework and update hell get a little better, but you the other circles of DLL hell also get a little more interesting again. This is not progress. It's the admission of defeat.

                                  I have lived with several Zen masters - all of them were cats. His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.

                                  N Offline
                                  N Offline
                                  Nelek
                                  wrote on last edited by
                                  #16

                                  CodeWraith wrote:

                                  This is not progress. It's the admission of defeat.

                                  Interesting point fo view. I suppose I will learn it in the bad way. Because I am thinking on using it in my next project. It is to try it and make it as much portable as possible and "future oriented" or to do it in the lowest .Net Framework that I find in a big serie of non-standard PCs in small isolated local networks which might still be a pretty old version of the .Net Framework.:~

                                  M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you Rating helpful answers is nice, but saying thanks can be even nicer.

                                  C 1 Reply Last reply
                                  0
                                  • D Dan Neely

                                    I dislike the idea. Shared libraries mean a vulnerability only needs to be patched once and then distributed by centralized patch management systems. If every application has its own copy of the affected library, every one will need to be patched, and have its patch installed, separately. The inevitable result will be much higher work loads for IT in the best case; and an increase in foreverday bugs in the realistic case.                                                                                             X| X| X| X| X|                         X| X| X| X| X| X|                             X| X| X| X| X| X| X| X| X|               X| X|                             X| X|                X| X| X| X| X| X| X| X| X| X| X| X|           X|                                                X|      X| X| X| X| X| X| X| X| X| X| X| X| X| X|      X|                                                     X| X| X| X| X| X| X| X| X| X| X| X| X

                                    N Offline
                                    N Offline
                                    Nelek
                                    wrote on last edited by
                                    #17

                                    That's a good argument, thanks.

                                    Dan Neely wrote:

                                    If every application has its own copy of the affected library,

                                    It would be not "every" it would be "only one". The point is that we have a requirement "to avoid having to install things" (and yeah, for them, the .Net Framework would be something to be avoided if possible) So... it is a bit like if I do... bad, but if I don't do... worse. X| X|

                                    M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you Rating helpful answers is nice, but saying thanks can be even nicer.

                                    D 1 Reply Last reply
                                    0
                                    • N Nelek

                                      I have been reading Application publishing - .NET Core | Microsoft Docs[^] I find the option of the App being self-contained pretty interesting, since once of the biggest problems with big companies is the allowance to install something, the delay with the updates and / or the mandatory updates (for yesterady of course) when they decide something has to be done (even when it might bring breaking changes with it). I will play with both to experience myself and maybe do some detailed comparisons, but I am interested in your experiences too. Are you using the self-contained option? If, not...why? It looks very promising. Is the difference in size really that big? Have you noticed performance differences when using one or the other? And I don't mean the startup-time described in the "ReadyToStart" option, I mean while in the middle of the execution. Topic open to discussion :)

                                      M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you Rating helpful answers is nice, but saying thanks can be even nicer.

                                      L Offline
                                      L Offline
                                      Lost User
                                      wrote on last edited by
                                      #18

                                      Nelek wrote:

                                      Have you noticed performance differences when using one or the other? And I don't mean the startup-time

                                      Well..

                                      Nelek wrote:

                                      Topic open to discussion :)

                                      Apperently not. May you find the answers that do please you.

                                      Bastard Programmer from Hell :suss: "If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.

                                      1 Reply Last reply
                                      0
                                      • N Nelek

                                        That's a good argument, thanks.

                                        Dan Neely wrote:

                                        If every application has its own copy of the affected library,

                                        It would be not "every" it would be "only one". The point is that we have a requirement "to avoid having to install things" (and yeah, for them, the .Net Framework would be something to be avoided if possible) So... it is a bit like if I do... bad, but if I don't do... worse. X| X|

                                        M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you Rating helpful answers is nice, but saying thanks can be even nicer.

                                        D Offline
                                        D Offline
                                        Dan Neely
                                        wrote on last edited by
                                        #19

                                        I know that feeling. About a decade ago, a customer decided they wanted to offer a capability my then employer helped create to a third party; but they were terrified of being reverse engineered. We ended up not just all in one packing (via a 3rd party tool) a winform app; but running it through an obfuscate and encrypt tool as well. Before we managed to convince their paranoids to sign off on that, we'd been contemplating having to port the entire application to C++/MFC like the rest of the tools that were part of the package being offered. 🤮

                                        Did you ever see history portrayed as an old man with a wise brow and pulseless heart, weighing all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt

                                        1 Reply Last reply
                                        0
                                        • N Nelek

                                          CodeWraith wrote:

                                          This is not progress. It's the admission of defeat.

                                          Interesting point fo view. I suppose I will learn it in the bad way. Because I am thinking on using it in my next project. It is to try it and make it as much portable as possible and "future oriented" or to do it in the lowest .Net Framework that I find in a big serie of non-standard PCs in small isolated local networks which might still be a pretty old version of the .Net Framework.:~

                                          M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you Rating helpful answers is nice, but saying thanks can be even nicer.

                                          C Offline
                                          C Offline
                                          CodeWraith
                                          wrote on last edited by
                                          #20

                                          Nelek wrote:

                                          I suppose I will learn it in the bad way. Because I am thinking on using it in my next project.

                                          Go ahead and do that. I just don't expect it to help very much. You can't eliminate DLL hell without forfeiting the benefits of dynamically linked libraries.

                                          I have lived with several Zen masters - all of them were cats. His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.

                                          N 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups