Sonos bricking devices intentionally


  • area_can

    I like dropping support for stuff. I don't like it when people drop support for my stuff.


  • Notification Spam Recipient

    @polygeekery said in Sonos bricking devices intentionally:

    @tsaukpaetra said in Sonos bricking devices intentionally:

    @polygeekery said in Sonos bricking devices intentionally:

    @lolwhat said in Sonos bricking devices intentionally:

    @polygeekery said in Sonos bricking devices intentionally:

    @lolwhat they aren't meant to last that long.

    Well, maybe they should make them last that long, and fuck 'em if they don't. 👿

    Dude...they are technology devices. Are you still running the same computer, or phone, or tablet that you did 10 years ago?

    ... 👋....

    ...I should have considered you.

    You are the exception that proves the rule.

    It's good to have purpose.



  • @polygeekery said in Sonos bricking devices intentionally:

    @remi said in Sonos bricking devices intentionally:

    I strongly dislike having to buy a new phone every two years

    Why do you? I am going on 3 years now and the only compelling and immediate reason I see to update is that I am soon changing carriers.

    I do because that's what work will subsidize! (used to be 18mos, then updated to 2yrs.)



  • @polygeekery said in Sonos bricking devices intentionally:

    @remi said in Sonos bricking devices intentionally:

    I strongly dislike having to buy a new phone every two years

    Why do you? I am going on 3 years now and the only compelling and immediate reason I see to update is that I am soon changing carriers.

    The last time I changed, my previous phone was starting to not hold its charge for very long, the memory was full and refusing to update apps (and it's not that I installed tens of apps, it just seems that each app uses more and more space as time goes on, with no easy way to shrink them back), the system itself was not being updated (ha! that's ironic that I complain about that given the rest of the thread, but this meant that some apps did not work correctly any more, which is what I'm complaining about), and the whole thing started to become slower and slower for no obvious reason (I'm guessing part of it is that apps simply don't care about less powerful devices...).

    Individually, I guess all of those could have been fixed, but given the prevalent mindset, it's easier to simply buy a new one rather than struggle with a system not designed properly for a long life. And by "system" I mean both the actual software, but also the mentality around everything, e.g. I could not easily find a replacement battery (and I was lucky enough to have a phone where the battery could be changed without any tools in the first place!)...

    For the current phone, I have decided to go slightly higher in specs than for the previous one, in hope that it will hold a bit longer, but I'm not really holding my breath. You may remind a discussion that I started here about getting a phone that lasts, and while there are anecdotal evidence of phones holding for 5 years, statistically most people change every 2-3 years max...



  • @polygeekery said in Sonos bricking devices intentionally:

    Why do you? I am going on 3 years now and the only compelling and immediate reason I see to update is that I am soon changing carriers.

    Also, why should changing carriers be a compelling reason to change the hardware? (I know, you will get a sweet deal while changing)

    If someone told you that you should buy a new fridge when switching electricity provider, you would think they are insane, and if an electricity provider was offering heavily discounted fridges, you would think that's weird. And yet for phones, this is exactly how the market works...



  • @polygeekery said in Sonos bricking devices intentionally:

    @lolwhat said in Sonos bricking devices intentionally:

    @polygeekery said in Sonos bricking devices intentionally:

    @lolwhat they aren't meant to last that long.

    Well, maybe they should make them last that long, and fuck 'em if they don't. 👿

    Dude...they are technology devices. Are you still running the same computer, or phone, or tablet that you did 10 years ago?

    No, but I only recently replaced the PC that I bought nearly seven years ago, and the printer I replaced a year ago was, at that time, ten years old. I only replaced it because the ink cartridges were no longer easily available.

    But I suppose that might actually be an argument against what Sonos is doing. The printer was still working, but it was functionally bricked by an lack of consumables.



  • @polygeekery said in Sonos bricking devices intentionally:

    But sending out an update that will intentionally brick the product seems like a pretty dick move on their part.

    I predicted something like this a long time ago and didn't buy any Sonos gear for that reason. They always seemed Apple-style controlling and dodgy.

    Squeezebox was a cheaper and superior product. It's a shame Logitech killed it. Since mine died and I can't buy replacements I still don't have a synchronised music listening solution. Chromecast is as close as it gets.


  • Grade A Premium Asshole

    @another_sam Volumio might be what you want if you want to roll your own.



  • @polygeekery said in Sonos bricking devices intentionally:

    If I ever get a large amount of fuck off time I have the idea in my head for an open source hardware and software project which would take a Raspberry Pi and replace the relevant parts of Sonos.

    Maybe start here?


  • Java Dev

    @steve_the_cynic said in Sonos bricking devices intentionally:

    The printer was still working, but it was functionally bricked by an lack of consumables.

    For a completely non-IT equivalent of that, what about vacuum cleaners for which collection bags are no longer sold?


  • Java Dev

    @polygeekery Maybe I can be the runner-up to @Tsaukpaetra, considering the platform that my computer uses will have been released 10 years ago this year. My computer is only 8 years old, though, having been purchased in 2010.


  • Grade A Premium Asshole

    @atazhaia said in Sonos bricking devices intentionally:

    the platform that my computer uses will have been released 10 years ago this year

    ???

    That doesn't immediately ring any bells for me.


  • Java Dev

    @polygeekery X58, so first gen Core i7/Xeon HEDT chipset. Which is a weird chipset come to think of it.



  • @pleegwat said in Sonos bricking devices intentionally:

    @steve_the_cynic said in Sonos bricking devices intentionally:

    The printer was still working, but it was functionally bricked by an lack of consumables.

    For a completely non-IT equivalent of that, what about vacuum cleaners for which collection bags are no longer sold?

    Perhaps. At least you can get some use(1) out of it if you feel like trying to clean all the crud out of the bags. Until you manage to tear or puncture the last one.

    (1) It won't work at maximum effectiveness because you'll never get the finest dust out of the skin of the bag.

    Perhaps that's the equivalent of refilling the cartridges, but life's too short to be fucking about with that. And the new printer is faster, available on the network, AND it prints double-sided.



  • @pleegwat said in Sonos bricking devices intentionally:

    For a completely non-IT equivalent of that, what about vacuum cleaners for which collection bags are no longer sold?

    Note that for those (as for printers, in theory, as long as there is no fuckery with chips embedded into the cartridge), there is the possibility -- which is not just theoretical, it does exist for vacuums -- for a third-party to step in and easily produce a replacement item, if there is some demand for it.

    Unless an IoT/software/electronics company releases enough information (which basically in that case means making their firmware and/or software public), it's unlikely to ever be the case for these. There are a few examples of either this happening, or more often a dedicated community working hard to disassemble the thing and work it out, but they are rare enough to show that this is not a model that will apply at large to the whole industry.


  • Winner of the 2016 Presidential Election

    @remi said in Sonos bricking devices intentionally:

    When we started having ubiquitous internet and computers, all the talk was about how wonderful it was to be able to store everything, every version of every book, and be able to access it from anywhere.

    dreikin looks at all his Kindle books with device limits

    Hell, we can't even keep that promise.


  • Winner of the 2016 Presidential Election

    @powerlord said in Sonos bricking devices intentionally:

    @dreikin I kind of understood why they made the decision to kill off the older addon API (security), but at the same time... the Firefox devs do realize that's what set them apart from Chrome, right?

    I don't know. I lost faith in the Firefox team to make useful improvement a long time ago. At least as far back as when I was getting regular OOM crashes because it was a single-process 32-bit application while Chrome was perfectly stable, despite also being 32-bit. And then they decided to copy Chrome's look instead of its multi-process functionality.

    Although I think the loss of faith may have started back before Chrome came out, when I found out Firefox used a custom malloc implementation (because I was trying to figure out the OOM problem yet again).

    Anyway, I booted Chrome Firefox up to use DownThemAll (which I assume is the download manager you mentioned), found out it no longer worked, and immediately downloaded and installed the previous LTS release. That would be version 52.

    Yep, and that was exactly my solution too.


  • Winner of the 2016 Presidential Election

    @dreikin said in Sonos bricking devices intentionally:

    @powerlord said in Sonos bricking devices intentionally:

    @dreikin I kind of understood why they made the decision to kill off the older addon API (security), but at the same time... the Firefox devs do realize that's what set them apart from Chrome, right?

    I don't know. I lost faith in the Firefox team to make useful improvement a long time ago. At least as far back as when I was getting regular OOM crashes because it was a single-process 32-bit application while Chrome was perfectly stable, despite also being 32-bit. And then they decided to copy Chrome's look instead of its multi-process functionality.

    Although I think the loss of faith may have started back before Chrome came out, when I found out Firefox used a custom malloc implementation (because I was trying to figure out the OOM problem yet again).

    Anyway, I booted Chrome Firefox up to use DownThemAll (which I assume is the download manager you mentioned), found out it no longer worked, and immediately downloaded and installed the previous LTS release. That would be version 52.

    Yep, and that was exactly my solution too.

    Speaking of browser stuff, a little sidebar in the Sidebar:

    After the latest Chrome update, my mouse cursor has been flashing the busy signal every few seconds while chrome is open. This is rather annoying, although it doesn't seem to affect anything. Trying to find out what the problem could be (did an extension go bad, maybe?) I found this thread on the Google support forums:

    Apparently it was the update itself. Causing opening gmail (maybe only if you have chat enable in settings) to launch and kill a video capture service. Every five seconds.

    This PC doesn't even have any video cameras attached to it, and never has.

    Fun.


  • Winner of the 2016 Presidential Election

    @lolwhat said in Sonos bricking devices intentionally:

    @benjamin-hall said in Sonos bricking devices intentionally:

    active bricking

    No. Never. Not even when they're "unsafe." The correct thing to do is to issue a recall and let the owners make the determination.

    No. There are some instances where "unsafe" can also mean "deadly to people who have no say on your choice to ignore the recall". The Note 7s had the potential to start unattended fires, which could occur in a building that may have occupants other than the person who decided they wanted to keep using the device despite the risk. I do think a reasonable notification/recall/replacement period should exist if at all possible, but I'm also completely fine with bricking actually, physically dangerous devices after that period. About the only thing I'd debate that on are medical devices or other critical devices iff the risk associated with bricking meets or exceeds the risk of not bricking.


  • Winner of the 2016 Presidential Election

    @remi said in Sonos bricking devices intentionally:

    Bricking stuff is a breaking a moral principle that when I buy something, I own that thing. It says "you paid good money for that, but actually, the thing still is ours and we can break it and force you to buy another one whenever we feel like". That is breaching a fundamental trust between seller and buyer.

    (*) A recall has a side-effect of being very costly to the company compared to issuing a simple update that bricks stuff, but I believe that this is a good thing as this will force companies to make sure they properly test their stuff and don't ever need to do a recall! Anything we can do to force electronic stuff to be less crappy is a good thing...

    In relation to my last post, I also agree with this. Bricking because of danger should be an exception with a really good reason, not the norm. A device so bricked should still be able to be sent in for replacement/exchange/money in the recall too.


  • Winner of the 2016 Presidential Election

    @pleegwat said in Sonos bricking devices intentionally:

    @steve_the_cynic said in Sonos bricking devices intentionally:

    The printer was still working, but it was functionally bricked by an lack of consumables.

    For a completely non-IT equivalent of that, what about vacuum cleaners for which collection bags are no longer sold?

    I use a commercial vacuum for work pretty much every workday, but I've never had to replace the bag in the several years we've had it.


  • And then the murders began.

    @dreikin said in Sonos bricking devices intentionally:

    I use a commercial vacuum for work pretty much every workday, but I've never had to replace the bag in the several years we've had it.

    Not the type of vacuum under discussion; they're referring to the typical home vacuum, where the bags are disposable, not reusable.


  • Notification Spam Recipient

    @unperverted-vixen said in Sonos bricking devices intentionally:

    @dreikin said in Sonos bricking devices intentionally:

    I use a commercial vacuum for work pretty much every workday, but I've never had to replace the bag in the several years we've had it.

    Not the type of vacuum under discussion; they're referring to the typical home vacuum, where the bags are disposable, not reusable.

    Typical vacuums are trending towards Bayless canisters though. Much more economical if I don't have to replace the damn bag every month...



  • @tsaukpaetra said in Sonos bricking devices intentionally:

    Bayless canisters

    I have had Dysons for about 15 years. For any other vacuum "bagless" really just means the bag is inside-out, there's still a filter element to replace. Dyson vacuums use cyclonic filtration. There's a secondary element that needs a clean every six months but the vast majority of the filtration is done in the cyclonic chambers.



  • @dreikin said in Sonos bricking devices intentionally:

    device so bricked shouldmust still be able to be sent in for replacement/exchange/money in the recall too.

    If I bought something from you and then you go ahead and break it, for any reason whatsoever, the absolute minimum I expect is that you provide an equivalent replacement1. This is not optional, or "good service", it's just minimal basic decency. Anything else is, basically, theft.

    1 A full refund might be acceptable in particular circumstances when providing an equivalent replacement is not reasonably feasible.


  • Notification Spam Recipient

    @another_sam said in Sonos bricking devices intentionally:

    still a filter element to replace

    Sure. But how often do you really need to replace it? For me, that ratio is perhaps 134 times smaller than with a traditional bag.



  • @polygeekery said in Sonos bricking devices intentionally:

    Dude...they are technology devices. Are you still running the same computer, or phone, or tablet that you did 10 years ago?

    Well, I am still running the same [make and model] computer that I was back in 1972 :)

    Also still have a Win 3.11 machine that I use Visual C++ 1.52 on :) :)


  • Grade A Premium Asshole

    @thecpuwizard said in Sonos bricking devices intentionally:

    Well, I am still running the same [make and model] computer that I was back in 1972

    I did not think that there was a web browser for the AS400.

    @thecpuwizard said in Sonos bricking devices intentionally:

    Also still have a Win 3.11 machine that I use Visual C++ 1.52 on

    Why?



  • @polygeekery Because he can. He didn't say it's his primary computer.


  • Grade A Premium Asshole

    @hardwaregeek said in Sonos bricking devices intentionally:

    Because he can.

    Well, yeah, but I assume there is some special use case for such an old machine.



  • @polygeekery I'm guessing old computers are a hobby. Hobbies often do not have logical reasons.


  • Grade A Premium Asshole

    @hardwaregeek we could stop guessing and let @TheCPUWizard answer. Just a thought.



  • @polygeekery Why would we do that, when our shoulder aliens can give much more interesting answers?


  • Grade A Premium Asshole

    @hardwaregeek that's your idea of interesting? Interesting is that @TheCPUWizard started working on doomsday software in 1993 and refuses to change his toolchain and is determined to complete it.



  • @polygeekery said in Sonos bricking devices intentionally:

    I did not think that there was a web browser for the AS400.

    You can install Linux on it, so you could run Lynx


  • Grade A Premium Asshole

    @timebandit you could, if one were that self-loathing.


  • Winner of the 2016 Presidential Election

    @unperverted-vixen said in Sonos bricking devices intentionally:

    @dreikin said in Sonos bricking devices intentionally:

    I use a commercial vacuum for work pretty much every workday, but I've never had to replace the bag in the several years we've had it.

    Not the type of vacuum under discussion; they're referring to the typical home vacuum, where the bags are disposable, not reusable.

    It seemed like a good example of the contrary approaches being talked about in the overall thread.

    Also, maybe just being contrarian.


  • Winner of the 2016 Presidential Election

    @ixvedeusi said in Sonos bricking devices intentionally:

    @dreikin said in Sonos bricking devices intentionally:

    device so bricked shouldmust still be able to be sent in for replacement/exchange/money in the recall too.

    If I bought something from you and then you go ahead and break it, for any reason whatsoever, the absolute minimum I expect is that you provide an equivalent replacement1. This is not optional, or "good service", it's just minimal basic decency. Anything else is, basically, theft.

    1 A full refund might be acceptable in particular circumstances when providing an equivalent replacement is not reasonably feasible.

    Your edit is the same as what I meant (they read the same to me, but I can see how others would read "should" as more suggestive than imperative. I should review that standard, wherever it is.)


  • Grade A Premium Asshole

    @dreikin said in Sonos bricking devices intentionally:

    I can see how others would read "should" as more suggestive than imperative.

    Have I ever told you guys about the company I took over managing and found they had just signed a contract that said "should" instead of "shall" where the payment terms were defined?

    That was a clusterfuck.


  • Winner of the 2016 Presidential Election

    @polygeekery said in Sonos bricking devices intentionally:

    @dreikin said in Sonos bricking devices intentionally:

    I can see how others would read "should" as more suggestive than imperative.

    Have I ever told you guys about the company I took over managing and found they had just signed a contract that said "should" instead of "shall" where the payment terms were defined?

    That was a clusterfuck.

    Wow, that sounds like quite a disaster.

    🍿 Do tell.


  • Grade A Premium Asshole

    @dreikin getting late in the evening and I am on mobile. Remind me tomorrow.



  • @polygeekery said in Sonos bricking devices intentionally:

    Remind me tomorrow.

    This is your friendly reminder that you setup yesterday.

    Thank you for using our service !


  • Grade A Premium Asshole

    @timebandit you fellows have great timing. The wife just told me the rugrat is ready to go to daycare. I should be back in my office around noon Eastern time.

    Service currently unavailable, try again later.



  • @polygeekery said in Sonos bricking devices intentionally:

    I should be back in my office around noon Eastern time.

    It's now noon + 2122 minutes.


  • Grade A Premium Asshole

    @timebandit @Dreikin

    When the financial crisis hit I have mentioned before how I left a job that I loved and went through a few more jobs before I decided to start an IT business. Well, I left the job that I loved and took a job to have less responsibility. I just wanted to operate machinery for a while, ride out the storm, regroup when the economy did. So I took a job running a dozer doing a lot of laser and GPS final grading. That was fun, like a video game with a 200hp diesel engine and big metal tracks. Before long they fired some supervisor and asked me to run a crew. That all went well until one day I call for fuel and the supplier told me we were on a cash only basis now, which meant we had a high balance and we were not paying out bills. A week later I had a paycheck bounce and I quit.

    A friend of mine tells me that he has a good friend who owns a smallish company that is in big financial trouble. Asks me if I can help them out. They are willing to do anything to save the company. I go meet with them. They seem nice enough and after looking over the books, making a few calls and looking over the operation I agree to take the job. In retrospect that was kind of dumb because I just quit a job because a paycheck bounced and I went right to a job where a paycheck could bounce in the near future. They were literally about 90 days from bankruptcy by my estimates.

    They had just landed one pretty decent sized job though. With what should have been good margins (if the negotiated unit prices had been right, but their estimator was a big fat lazy bastard who half-assed everything, but that's another story). When I agreed to take the job I had not yet looked over the contract though. This little escapade is part of what makes me hammer contracts and agreements in to everyone's head who wants to start a business. It is why I post this video fairly frequently:

    https://vimeo.com/22053820

    As part of my due diligence after I take the job and before we start that project I look over the contract. I mull over the unit costs and they are all fucked up. I bring that up and the estimator rebuffs me.

    "Those don't matter. The total job cost is right and that is all that matters."
    polygeekery "No, there are options in here. They can game those options and fuck us."
    "They won't do that. I've been doing this a long time."

    Yeah, whatever, but as I said that is another story.

    Then I get to payment terms and there is something that stands out to me like a sore thumb. To someone who has looked over a lot of contracts and who has only caught sneaky shit like this before because we always redlined our contracts before printing and signing them it might as well have had a klaxon and a rotating beacon on it.

    Owner should pay invoices within 15 days of delivery by contractor.

    Should? Should? Should?! They intentionally changed it from "shall". "Should" is a suggestion. "Shall" is a declarative. I had someone try this with me before. I had a lawyer explain it to me. Changing "shall" to "should" meant they could pay whenever the hell they wanted to and there was nothing we could really do about it. That one word change even nullified all liability that was in the contract for late payments, because they could not pay late.

    I bring it up. They think I am overreacting. (Spoiler alert: I wasn't.) The big fat bastard estimator rebuffs me again. He is the one who did the final look over of the contract. I pull the owner aside later and explain it all to him and ask him to have his lawyer take a look at it. He does. The lawyer agrees with me.

    So they ask me what we can do about it. Basically...nothing. Just hope they don't fuck us too much. Do the job and hope for the best.

    There is a point in a job that is delineated in the contract and referred to as "substantial completion". It is usually the point that most of the money on the job will be paid out. It is the point in a job that puts you in the black for the project. For a pipe project like this was it is when all the pipe is in and tested. At that point you should have 90-95% of the contract price paid out (some is left as "retainage" to make sure you do all punchout work, landscaping, seeding, cleanup, etc.)

    Up to that point we had mostly been paid on time. Mostly. Usually about a week late. Could be worse. It is also worth noting that this was a municipal job funded by state infrastructure improvement money. If we get an invoice to them by Thursday they have the money in their account the next Thursday. They are not even paying with their money. But the leader of the town board is a real superbitch. I am not overstating that. She has the personality of a bear trap and is roughly as easy to work with.

    We get to substantial completion, submit our invoice and crickets. At the three week mark we check in. Nothing. They keep saying they will have her call us back and she never does. We hit substantial completion, we had cleaned up, demobilized (which was another separate charge that they also had not paid) and done everything but some final grading and seeding. But we had run in to winter so that was not going to get done until spring.

    Finally we decide to just go hunt her down. This is a small town. They don't even have a stoplight. Everyone knows where she lives. So we knock on her door. She answers and is aghast that we would do such a thing. She tells us to meet her at the...whatever...city hall? It is too small to be a city hall and it looks like an old auctioneers building that could fall over at any time.

    Now, you should have some idea who the owner's of the company I am working for are. This business was in the middle of cornfields outside another town that does not have a stoplight. His hobbies are machining and stock car racing. He is a good ole' boy, by which I mean that he is a redneck and easily angered when he feels he has been slighted. Let's call him "Roscoe" because I feel that paints the proper mental picture.

    We ask her if she has received our invoice, she says yes. We ask her when she is going to pay. She looks right at both of us and tells us that she will sign off on disbursement of the funds when she feels like it and she does not want to until everything is done, including landscaping. I try to reason with her and tell her that is what the retainage is for. She tells me she doesn't care, she will pay when she wants because the contract says "should" instead of "shall".

    I cannot see Roscoe as she says this. He is standing behind me. I cannot see him, but I feel him puff up behind me. Shit is about to get confrontational if he stays in the room. I tell him to go to the truck, let me take care of it. It took a little convincing, but he does. Disaster averted. Roscoe is not the type to strike a woman but the business he built from the ground up is currently hinging on this woman turning loose of funds that she does not have to. We need that money to pay our suppliers and stay on their good side. We need it to pay payroll next week. We need it to stay afloat. He may not be the type to hit a woman...but he is getting close.

    An ex girlfriend of mine was working for the state DOT at the time. I had asked her to confirm that the money had been paid out on our invoice. She did and told me the exact date it occurred. I bring this up to SuperBitch. I tell her that I understand she is trying to show her muscle but she is backing me in to a corner. We need paid or I am going to have to use the same connections I used to find out that information from the DOT to make her life difficult and make it hard for her to get further funding. (This is all a bluff by the way, but I assumed that knowing what I did would lead her to believe I had some connections at the DOT) She doesn't exactly capitulate, but she agrees to pay the invoice right away. I think it was one of those situations where we were both bluffing and neither wanted to find out how far it would go.

    So yeah..."should" and "shall" have very different defintions in regard to contract law. Keep an eye out for them. The only time someone will change them is if they intend to fuck you.

    Epilogue to the story: That company was ~90 days from bankruptcy when I took over. ~45 days later I had it stable, I had stopped the bleeding. A few months after that they let me go because they said "they could not afford me". I told them they could not afford to not have me. Six months after that they were bankrupt. True shit. Now 10 years later we are all friends again. He was the guy I borrowed the Caterpillar CTL from to do my patio with. He is also letting me borrow a Kubota tractor to regrade my yard with once things dry up in the spring.


  • Grade A Premium Asshole

    @hardwaregeek said in Sonos bricking devices intentionally:

    @polygeekery said in Sonos bricking devices intentionally:

    I should be back in my office around noon Eastern time.

    It's now noon + 2122 minutes.

    I was typing at the time. :P

    My good stories are always walls of text. They take a while.


  • Winner of the 2016 Presidential Election

    @polygeekery

    Yep, that was a story worth the popcorn. 👍


  • Grade A Premium Asshole

    @dreikin said in Sonos bricking devices intentionally:

    Yep, that was a story worth the popcorn.

    Good. It took a while to type. Long enough that @HardwareGeek called me out while I was already typing.



  • @dreikin But was it worth quoting the whole dang post?


  • Discourse touched me in a no-no place

    @polygeekery said in Sonos bricking devices intentionally:

    This little escapade is part of what makes me hammer contracts and agreements in to everyone's head who wants to start a business.

    It's a really good one. The points apply to anyone even remotely involved in business contracts, even if all the parties involved are big corporations: possibility of non-fulfilment is always a key concept when working out how good a contract is.


Log in to reply