[Q] Removing unwanted applications from rom - Galaxy S II Q&A, Help & Troubleshooting

The cookers of roms are by default including bunch of applications to ROM which i dont want to have and each time flash new version i need to manually remove them (like all google applications which takes quite a while and i am quite successfull at missing some). The rom is a zip file so i could make a program to kick apks out of rom automatically and repack it which isnt much of work to do but i am worried if such rom would still work. There is also a second problem, the digital signature which from expirience produces the yellow warning triangle at boot, i dont have problem with creating my own public/private keys and signing the rom but again i have no clue where the signature should be and where to register a private key (or maybe the samsung one is known?).
Is there some document on this topic or someone is prepared to help me out?

takes 20-30 seconds to open titanium and do a batch uninstall of the apps you dont need

Hmm... i dont use it but i will try, although i would still rather do a batch remove of all unwanted applications on my own before they even get installed. And adding a new application to install first also wouldnt be a bad idea (LBE privacy guard)

You can just extract the rom zip and from that delete the apks you dont want from the System --> App folders or Data --> App folders if there is anything in there. You could also use this 'opportunity' to choose which Kernel and Modem etc you wanted if you plan on changing / flashing different ones later. Re-zip and flash!
I will say this though, in the past i've done this and for some reason certain apps that I left in the zipped rom didn't install, no biggy though

Ok, this was the answer i was searching for. One more thing, what to do with digital signature?

Custom rom .
Open with Win Rar do not extract.
Open System Open Apps
Delete whatever you dont want and is safe to do so .
Close Win Rar and flash rom .
jje

Hmm, i am just playing with one thought, if the android is tied to apk extension for installing, the changing of zip header (actually from historical reasons it is footer ) to rename the apk to ap_ for unwanted application would acctually kill it from installing without ever unpacking it... and the code is actually even more trivial, search and replace...

Related

Edited HtcDialer.apk, logcat SIGNATURE error and apk won't run

Modding a 2.1 Sense UI rom (Hero Based.... but more of a hybrid)
Hey, I've edited the AndroidManifest.xml of the HtcDialer.apk, repackaged, sign and first tried to adb push it to my phone - didn't work, tried adb install - parser error, so I repackaged the entire update.zip and reflashed - still didn't work.
Logcat shows this:
Package com.android.htcdialer has no signatures that match those in shared user android.uid.shared; ignoring!
Click to expand...
Click to collapse
I tried popping into recovery and running "fix apk uid errors" but it still throws the same logcat and the dialer won't open.
How do I fix this?
EDIT: I've got this problem, facebook sync and camera/video to fix, then I'll be releasing the fastest SenseUI rom you guys have EVER seen. No joke.
OK, I'm grasping at straws here - so I've also tried, through ADB, completely uninstalling it and rm'ing any traces, then I tried to adb install it and it still won't work, I get an ADB error:
INSTALL_FAILED_UPDATE_INCOMPATIBLE
But everything should be deleted! It shouldn't matter that the old and new signatures don't match, its an entirely fresh install!
I've also noticed that when I adb pu****, I get a list of the HTC apps that share that uid.shared - and at one point they all said "uid=10011" - now they all say "uid=10010". I'm trying to fix this back to he original to see if this is part of the problem, but I can't find this anywhere in the androidmanifest.xml for any off these apps (like contacts, phone, etc).
I know HTC has this shared id stuff for all of their apps, but there must be an easy way to update JUSt an androidmanifest.xml file with a single line to give it vibrate permission. Is there any way I can resign the modified .apk AS Htc?
I have a similar problem (probably the same), does anyone know anything that might help?
Take what was edited and open the original apk with 7zip just drag the edited files in the 7zip window it will ask if you want to add the files, click yes then close out 7zip now pack it up in a update.zip and sign.......Do not sign the apk leave the original signature in there.
Flash adn that should take care of it.

[Q] adding applications to custom rom questions

Hi
in I have 3 questions about apps on custom roms
1: in some topics i read that people tried to put them in data/app or system/app . I guess system apps are not removable (or are partialy protected against uninstall). Or I am totaly wrong ... So what is the difference, where should i put the apps i wish to install ???
2: for some funny reason, some apps are installed, some not and some are visible but doesn't work .... What should i do to be sure that each app will work ??? should i first Zipalign or Deodex them ???
3: some apps require some configuration (for example i would like to add setcpu with profiling enabled to set the cpu at minimum when the display is off)
but how can i set this configuration in THE ROM so that i don't need to do it once the rom is installed ???
I don't remember off the top of my head, and I don't have access to my netbook with my data on it, but have you tried making a nandroid backup of your customized rom and pulling the ROM.zip file from within the backup and comparing your customized files between the backup rom.zip and the rom from your kitchen?
Edit; this was in reference to question three.

[GUIDE]Solution to recover some apps like IM,swype etc. mostly missing in custom ROMs

I am not sure if this is already known or has been discussed before. Search did not yield any relevant results. Please post your feedback.
Introduction
In most custom ICS ROM's, you might have noticed some apps like the Polaris office, Photo editor, IM or even Swype missing. These are not even there in many of the "Stock unmodified" versions released either. Surprisingly, they are very well present if you flash the original ROM through Odin. So where do these apps go? They are actually installed on first boot only if you flash from Odin.
Usual missing apps
KiesAir
OceanWeather and WindyWeather live wallpapers
Polaris Office
Photo Editor
Samsung IM
Swype
Vlingo
For those who do not want to go through this procedure and straight away want the CWM package of these missing files, you can download it from here...
How to extract them?
I am assuming the most common method ROM cooks use maybe using dsixda's kitchen (thanks to his fantastic scripts!).
When extracting and de-odexing the ROM, you may have noticed a file called hidden.img in the original ROM file which is usually ignored in this process. this file contains the above apps and they are installed to the /data/app folder. The hidden.img file is not readable using regular softwares, just like factoryfs.img.
Extract this hidden.img file from the original ROM image and paste it in the original_update folder of dsixda's kitchen (xxx.tar.md5 can be renamed to xxx.tar and opened in softwares like winrar)
Rename the hidden.img file to factoryfs.img.
Close any existing kitchen tasks and restart the kitchen.
Select option 1 to set working folder.
Make a backup of your existing working directory.
When prompted, choose the factoryfs.img option to proceed with (option 3).
You will get a message saying the file is being converted to a format for extraction.
The ext2fs program should automatically be launched.
Select open file in the program and choose the ext_factoryfs.img file (which is actually the converted from of the renamed hidden.img file).
Right click on the left pane where the opened file is listed and select Save.
Save it to the root folder of your working directory.
Now you will have a folder called data in your working directory with the missing apps. Include extraction of this folder in your updater script and you are done
If the tutorial wasn't clear, feel free to post questions on the thread.
Hope this was helpful, Cheers...
ajayjohn said:
In most custom ICS ROM's, you might have noticed some apps like the Polaris office, Photo editor, IM or even Swype missing.
Click to expand...
Click to collapse
It seems to be missing in all Deodexed ROM
Photo editor not working. Also there isn't new gallery app in official ROm???
nikki2325 said:
Photo editor not working. Also there isn't new gallery app in official ROm???
Click to expand...
Click to collapse
Photo editor works fine for me. Did you try clearing your cache?
Also, Samsung still uses the old GingerBread gallery.
Couldn't someone just extract the apps then post them here.
thecrater said:
Couldn't someone just extract the apps then post them here.
Click to expand...
Click to collapse
You can get them in a zipped file from here
Unzip and use the app you want.
ajayjohn said:
In most custom ICS ROM's, you might have noticed some apps like the Polaris office, Photo editor, IM or even Swype missing. These are not even there in many of the "Stock unmodified" versions released either. Surprisingly, they are very well present if you flash the original ROM through Odin. So where do these apps go? They are actually installed on first boot only if you flash from Odin.
Click to expand...
Click to collapse
Why not make a custom rom .tar? install with odin? or mobile odin?
If I wanted to flash this hidden.img in heimdall what should i do ? Meaning where should i put it ?
Sent from my GT-I9100 using XDA
Custom roms apps missing i just open the zip with win rar go to system /apps and ADD required apps or even delete apps not wanted close and flash .
Thats open not unzip .
jje
sachs said:
Why not make a custom rom .tar? install with odin? or mobile odin?
Click to expand...
Click to collapse
JJEgan said:
Custom roms apps missing i just open the zip with win rar go to system /apps and ADD required apps or even delete apps not wanted close and flash .
Thats open not unzip .
jje
Click to expand...
Click to collapse
That is definitely a way to do it.
But since these apps get installed to /data/app when installed via odin. Hence, to replicate that (not needed), i mentioned unzipping and installing as a regular apk.
Another option is to open the zip as you said and place these in a /data/app folder and flash it.
But primarily, this thread was created because i have found people asking on many rom threads about missing these apps, without getting a reply...
ajayjohn said:
But since these apps get installed to /data/app when installed via odin. Hence, to replicate that (not needed), i mentioned unzipping and installing as a regular apk.
Another option is to open the zip as you said and place these in a /data/app folder and flash it.
Its just the missing stock apps i put in system /apps i do not add apps to data s that is hit and miss unless the script is edited .
I also remove stuff i dont want from custom roms and add my own wallpaper ringtones boot CSC etc by the same method .
jje
Click to expand...
Click to collapse
Very nice and simple guide.Thank you :good:
since it s not mentioned, I advice to add the libs missing for polaris office and swype etc..
U can retrieve them opening the apks and check out the lib folder.
These have to be pasted into /system/lib to avoid FCs.
It s an important step, mention it into OP.
i'm trying to get stock swype for a galaxy ace s5830 installed on my custom rom. So far without succes. I have pasted swype.apk (extracted from stock rom!) into /system/app and libswypecore.so into /system/lib. Both with permissions: 6-4-4.
When I try to use swype I get an error that this swype version was intended to use on a different device. result: I can swype but nothing happens (no words are entered, though the different dictionairies are present in the swype.apk).
I'm wondering what I should do now. (besides checking the build.prop file for differences).
DutchArjo said:
i'm trying to get stock swype for a galaxy ace s5830 installed on my custom rom. So far without succes. I have pasted swype.apk (extracted from stock rom!) into /system/app and libswypecore.so into /system/lib. Both with permissions: 6-4-4.
When I try to use swype I get an error that this swype version was intended to use on a different device. result: I can swype but nothing happens (no words are entered, though the different dictionairies are present in the swype.apk).
I'm wondering what I should do now. (besides checking the build.prop file for differences).
Click to expand...
Click to collapse
It's galaxy s2 theard, ask in galaxy ace
Ganjax said:
It's galaxy s2 theard, ask in galaxy ace
Click to expand...
Click to collapse
sorry. I thought as it are both samsung devices, It would be the same for Ace, but I will ask in Ace forum.

The infamous ROM: MIUI. Theme problems. Reverting back to default.

Hola guys. To all of you. Particularly the ones who are familiar with MIUI. I will just stick to the point. If you ARE familiar with miui then you must have come across those flashy themes. You must also have found out the way to bypass the infamous theme policy WSM tools and Xposed and all. But I recently started taking interest in those flashy themes. You know that once you download a theme from the default Themes app the mtz file starts getting downloaded and as soon as the downloading has finished it gets unpacked into bits (com.android.contacts, com.miui.home, icons, lock_wallpaper, locksreen and so on) and gets copied to the MIUI folder in main storage and again into data/system/theme. This is the first problem. I can't copy the whole mtz file to a safe place because it gets unpacked as soon as it has been downloaded which is basically a zip file containing several other zip files that is, the 'bits' I was talking about. Second thing. the default themes app does not recognize mtz files downloaded from the official miui themes website. It declares them as third party themes. What I did was, took some of those 'bits' and replaced some XML files inside them and some png elements and put them back into data/system/theme. But miui has a way to prevent this from happening. As soon as it detects a modified file present in data/system/theme it reverts back to the default plain theme by deleting all files from data/system/theme. My guess is it keeps checking out verifying in regular intervals the checksums that it must have generated earlier. The same thing happens if I just replace a bit in the mentioned directory with a bit from another theme. So my questions are:
1. Is there a way to preserve the mtz file downloaded from within the default Themes app as a whole mtz file?
2. Can I make changes to just the Themes app so that it would apply any mtz file?
3. Is there a way to prevent miui from continuously checking or verifying the checksums that it has generated? (just a guess but I reckon thats what it actually does) because for an hour or so after replacing or modifying the 'bits' everything works fine but the reverting process takes place in an hour or so.
Thats all folks! jk. Any help or suggestion would be really appreciated because I think a thread like this was long since needed here. And dont talk about visiting MIUI's official forums. Most of the guys there don't know half the things that is really worth discussing. Thank you guys.
note- dont want to use WSM tools nor can I find one for miui7.
note2- if I change the permissions of the folder (data/system/theme) to 444 allowing READ permissions only, the phone would just reboot without warning and continue to reboot until the permissions are changed back to normal (755).
come on guys. seriously? not a single guy on XDA who has ever come across this problem?

Flashing ZIP Folder Containing APK's via TWRP Recovery

Hi
I've started around three other threads here on XDA but I never seem*to get anyone answering my questions for something that should be so simple.
Anyway I've been trying to flash a ZIP folder containing third party APK files via TWRP to go alongside my fresh install of Lineage OS. All of the user apps install perfectly fine to the '/data/app' directory, however, system apps that are installing to the '/system/app' directory are only getting half installed. Basically when I boot into the ROM I can see all of the system apps in the app launcher, and even navigating through the phone with a root explorer I can see that I can see the correctly copied folder and file from inside the ZIP folder. For example the Google Snapseed app is stored as the following:-
/system/app/com.niksoftware.snapseed
>niksoftware.snapseed.apk
What's weird is that if I open the apk file and install it with the Package Installer*successfully*installs it but with a '1' suffixed to the end and two folders and a re-named apk file
/data/app/com.niksoftware.snapseed-1
> lib
> oat
> base.apk
For a little test I moved the 'niksoftware.snapseed-1' folder from '/data/app' to '/system/app', deleted the original 'niksoftware.snapseed'*folder and rebooted my phone. As expected the app continued to work perfectly fine with no force crashes.
If you're wondering why I'm installing the apps under a system app, it's because the user(s) I'll be passing the phone onto will be non-technical Android users. When the user needs to do a factory reset, the apps I pre-installed will survive if they're installed as system apps compared user apps that will get wiped.
There is literally nothing on any forums anywhere explaining how to flash system apps via recovery taking the more recent Android the OS' that have been released in the last few years. Could someone please help me out here?
Many thanks
Will
willowen100 said:
Hi
...
Will
Click to expand...
Click to collapse
Personally I never tried to install third party apps like that , but it could be interesting to test this out .
But I think you've made a mistake while trying to create the system folder :
You created this :
/system/app/com/niksoftware.snapseed
But the /com is not needed , I mean it maybe the reason of you issue .
So try to remove the /com :
/system/app/niksoftware.snapseed
Let me know if it worked
RaiZProduction said:
Personally I never tried to install third party apps like that , but it could be interesting to test this out .
But I think you've made a mistake while trying to create the system folder :
You created this :
/system/app/com/niksoftware.snapseed
But the /com is not needed , I mean it maybe the reason of you issue .
So try to remove the /com :
/system/app/niksoftware.snapseed
Let me know if it worked
Click to expand...
Click to collapse
Hi
Thank you for your reply. I've only just realised there is a typo in the directory. The 'com/' should be 'com.' However, I will give removing 'com' altogether to see if that makes any difference.
willowen100 said:
Hi
Thank you for your reply. I've only just realised there is a typo in the directory. The 'com/' should be 'com.' However, I will give removing 'com' altogether to see if that makes any difference.
Click to expand...
Click to collapse
Let me know if it worked , happy to see I helped :highfive:
RaiZProduction said:
Let me know if it worked , happy to see I helped :highfive:
Click to expand...
Click to collapse
I renamed all of the folders inside the zip folder so there is no '.' (dots) in the folder and file names and unfortunately the apps still crash. It's a shame there is no command that extracts the .APK files into their correct directories. I'd love to know how the OpenGApps package works because that basically does the same thing as my ZIP folder.
Sent from my LG-H930 using Tapatalk
willowen100 said:
I renamed all of the folders inside the zip folder so there is no '.' (dots) in the folder and file names and unfortunately the apps still crash. It's a shame there is no command that extracts the .APK files into their correct directories. I'd love to know how the OpenGApps package works because that basically does the same thing as my ZIP folder.
Click to expand...
Click to collapse
GApps does the same thing .
Basically it's a zip file with a script that copy all the file and the directories to the root directory of your phone.
I think the problem is the signature used bybthe third party apps. But that's just an hypothesis , I could be wrong I'll let you search more deep on that subject with Google , hope this helped a bit
:highfive:
RaiZProduction said:
GApps does the same thing .
Basically it's a zip file with a script that copy all the file and the directories to the root directory of your phone.
I think the problem is the signature used bybthe third party apps. But that's just an hypothesis , I could be wrong I'll let you search more deep on that subject with Google , hope this helped a bit
:highfive:
Click to expand...
Click to collapse
I've found a couple of APK/ZIP folder signing utilities but unfortunately they've made no difference.
The part that's going wrong somewhere is the folders that should be created alongside the APK files are not being created.
Sent from my LG-H930 using Tapatalk
I made some videos explaining the situation.
The first video shows the app crashing on launch. The APK file is installed at
Code:
/system/app/Snapseed
I then proceed to install it which is successful and installs itself as a user app found at
Code:
/data/app/com.niksoftware.snapseed-1
Next I rename it and move it to system directory and delete the original directory so there isn't a clash of identical apps. Finally I reboot the phone.
https://youtu.be/mL6ePOMnDQw
The second video I show that it opens up perfectly fine. To show that the two folders inside the
Code:
/system/app/com.niksoftware.snapseed
directory are important, I move them to the internal storage Downloads folder and then relaunch the app. It now crashes. I restore the folders and then app once again works again.
https://youtu.be/hL60APHTV7Q
Will
willowen100 said:
I made some videos explaining the situation.
...
Will
Click to expand...
Click to collapse
Hi , the videos you made made me understand better your issue , but I've a question , when you moved the oat and lib folders to the system , you opened the Snapseed app successfully without any bugs isn't it ?
And because the installation folders are in the system , the factory reset won't affect them .
So is your problem solved ?
RaiZProduction said:
Hi , the videos you made made me understand better your issue , but I've a question , when you moved the oat and lib folders to the system , you opened the Snapseed app successfully without any bugs isn't it ?
And because the installation folders are in the system , the factory reset won't affect them .
So is your problem solved ?
Click to expand...
Click to collapse
Yes you could say I have solved the problem but it's not the solution I'm looking for. I want to be able to install the apps in bulk during the flashing stage using a custom recovery like TWRP I'm using. The order I would flash would be:-
1) Flash Lineage OS
2) Flash OpenGApps
3) Flash additional apps (essentially third party apps from the Google Play Store)
Sent from my LG-H930 using Tapatalk
willowen100 said:
Yes you could say I have solved the problem but it's not the solution I'm looking for. I want to be able to install the apps in bulk during the flashing stage using a custom recovery like TWRP I'm using. The order I would flash would be:-
1) Flash Lineage OS
2) Flash OpenGApps
3) Flash additional apps (essentially third party apps from the Google Play Store)
Click to expand...
Click to collapse
Ok , now flashable zips are field so I can help you
If you want me to do it for you , just upload those files to Google drive and send me the link , I'll make your flashable zip and upload it to Dropbox so you can download it :good:.
The files you should upload :
• Libs folder of every third party apps you want to install
• Oat Folder of every third party apps you want to install
• Base.apk file of every third party apps you want to install
If you want to do it yourself , I'll make you a guide on how to do it ( you require a PC to do it with RAR and Notepad++ or another text editor installed on it )
RaiZProduction said:
Ok , now flashable zips are field so I can help you
If you want me to do it for you , just upload those files to Google drive and send me the link , I'll make your flashable zip and upload it to Dropbox so you can download it :good:.
The files you should upload :
• Libs folder of every third party apps you want to install
• Oat Folder of every third party apps you want to install
• Base.apk file of every third party apps you want to install
If you want to do it yourself , I'll make you a guide on how to do it ( you require a PC to do it with RAR and Notepad++ or another text editor installed on it )
Click to expand...
Click to collapse
I'd rather do it myself please if that's okay with you creating a guide, as I would like to learn how to do it for future reference? I use Notepad++ quite frequently and I use 7-zip to archive everything so I'm all setup there.
This is going to sound stupid but where do I get the Libs and Oat folders from except for copying them from Android? I am aware you can open the APK files themselves but I've never seen the Oat folders inside.
Many thanks again for your help so far.
Will
Sent from my LG-H930 using Tapatalk
willowen100 said:
I'd rather do it myself
...
Will
Click to expand...
Click to collapse
I meant I need the Content of this folder for each apps you want to install as system apps:
/data/app/com.niksoftware.snapseed-1
> lib
> oat
> base.apk
Click to expand...
Click to collapse
You will need this to make the flashable zip.
Copy and paste those files to your download folder ( Internal storage ) , then transfer those folders (and the APK file to your PC in order to use it .
I'm preparing the guide and I'll post it in around 10 min , don't forget to press the thank button on the posts
willowen100 said:
I'd rather do it myself please if that's okay with you creating a guide
...
Sent from my LG-H930 using Tapatalk
Click to expand...
Click to collapse
So , let's start with what you need :
- The folder /data/app/com.niksoftware.snapseed-1 and its content on your desktop
Now what you should do :
1) Extract the 2 folders in the template I made you
2) Open the system folder and create a folder called "app" into it
3) Copy the com.niksoftware.snapseed-1 folder (with the content inside it) and paste it into the app folder newly created
4) Repeate the step above for each and every app you want to install as system app
5) Exit the folders
6) Select the META-INF folder and the system folder and compress them with 7-Zip
7) You are ready to flash the zip to your phone !
My Advice is to do this in your Desktop in first place, because it's more easy to see what you're doing.
When you get used to this, you may do it everywhere (even on your phone).
Don't forget to disable signature verification in TWRP ( if there is the option , I don't remember well)
And make a backup of your phone before every modification , we never know what can happen (but in this case, it'll be okay since we're modifying nothing)
Hope this helped you , don't forget to press the thank button
RaiZProduction said:
I meant I need the Content of this folder for each apps you want to install as system apps:
You will need this to make the flashable zip.
Copy and paste those files to your download folder ( Internal storage ) , then transfer those folders (and the APK file to your PC in order to use it .
I'm preparing the guide and I'll post it in around 10 min , don't forget to press the thank button on the posts
Click to expand...
Click to collapse
I'm just trying to find out if there a more time saving tool that will extract the the lib, oat and base.apk from the containing .apk file so I can do it in bulk on a PC.
The problem I have is that I have about 20+ APK's that will be flashed additionally on top of the Lineage OS ROM and OpenGApps. Thinking how long it took to do one installing it as a user app, renaming it, moving it to the system partition, I would have to do that for everyone. Even if I was to do this method the contents I extracted for one Android architecture (CPU chipset type) used on one device may be completely incompatible on another.
Sent from my LG-H930 using Tapatalk
willowen100 said:
I'm just trying to find out if there a more time saving tool that will extract the the
...
on one device may be completely incompatible on another.
Click to expand...
Click to collapse
Unfortunately I don't know any tool able to do that.
And for the architecture , that's not really a problem
Because there are only 4 architecture :
x86 (rare)
x86_64 (very rare , mostly used on emulators)
arm (most common)
arm64 (common)
And the arm APKs work for arm64 devices , so you just have to do this for arm APKs and it'll be okay for almost every Android device . (Edit 1 : Not really sure of this info, should be good but I can't certify it 100%)
And I know myself that doing that takes time , but if you really want to do that , that's the only way I can suggest.
Do as you feel it , I hope my answers were clear and useful for you.
Let me know what's your decision,
Have a nice day
RaiZProduction said:
Unfortunately I don't know any tool able to do that.
And for the architecture , that's not really a problem
Because there are only 4 architecture :
x86 (rare)
x86_64 (very rare , mostly used on emulators)
arm (most common)
arm64 (common)
And the arm APKs work for arm64 devices , so you just have to do this for arm APKs and it'll be okay for almost every Android device . (Edit 1 : Not really sure of this info, should be good but I can't certify it 100%)
And I know myself that doing that takes time , but if you really want to do that , that's the only way I can suggest.
Do as you feel it , I hope my answers were clear and useful for you.
Let me know what's your decision,
Have a nice day
Click to expand...
Click to collapse
I'm going to go ahead with it. Like you said ARM will work for ARM64. Even if the apps become slightly outdated if I were to flash my ZIP onto future devices, as soon as the Play Store is installed it will hopefully update anyway.
Sent from my LG-H930 using Tapatalk
willowen100 said:
I'm going to go ahead with it. Like you said ARM will work for ARM64. Even if the apps become slightly outdated if I were to flash my ZIP onto future devices, as soon as the Play Store is installed it will hopefully update anyway.
Click to expand...
Click to collapse
Good luck my friend

Categories

Resources