Workaround for viewing Arabic web pages without ROOT - Droid Incredible Themes and Apps

I created a prototype Andorid application that can be used as a workaround for viewing web pages with Arabic content.
The application is a viewer for clipboard content, with basic support for displaying Arabic letters without requiring ROOT access, or the installation of any Arabic fonts.
To use the application, go to the page with Arabic content, then select the text that you are interested in, and copy it to the clipboard, then start the "Arabic Clippings" application, and you should see Arabic rendering of the text that you copied, without any ? or any squares.
Once the application is running, an easier way to switch back and forth between it and the browser is to hold the "Home" button a little bit long, and that should show a list of recent applications, so you can switch back and forth between the two apps.
Notes:
- The basic premise behind the app is that the user can select and copy the Arabic text. This means that the user should have a relatively new Android phone (eclair and above?).
- The cut-n-past functionality is added in recent Android SDKs, but not all apps support it. For example, you can't do this on the GMail app or Facebook. So to use this app with these apps, you have to go to the corresponding web site in the browser.
- The logic for reshaping and joining the Arabic letters is reused from the Better Arabic Reshaper project (http://bar.amr-gawish.com).
- The application doesn't need a special font, because I already packaged a custom Arabic font. I chose one of the free fonts from http://freearabicfonts.com/
As you can see, this is intended mainly as a workaround. It is good for the occasional viewing of Arabic pages, especially when on the go and away from a desktop machine.
To take a look at the app, follow this link from your Android phone, and chose to open it with the Android Market application (this works only from the phone):
http://market.android.com/details?id=com.firassonline.clipboardViewer
Alternatively, you can search for "Arabic Clippings"

Good work, works well on my Incredible. Will forward it to Arab friends who need a workaround and can't get the arabic fonts working.

Also I'm sure you're aware of this but the terminal forms of the letters are non-functional; the medial letter forms appear in their place.

Related

Jataayu - Mobile Web Browser for PPC & Smartphone

Jataayu's endeavour is to make the vision of ubiquitous mobile web access a reality - by enabling its Truly Mobile browser -jB5 with ART® technology - on the widest range of feature phones.
More about jB5
Rich Heritage
jB5 - the truly mobile web browser, has been evolving continuously over the last 6 years and more, right from the time the first WAP browser made its appearance in year 2000. jB5 is architected to extend the excellence of its earlier WAP1x and WAP2 browsers to the HTML world.
Award-Winning Technology
jB5 with its Adaptive Rendering - ART® has evoked tremendous interest in the mobile devices technology marketplace. Within 9 months of its launch, jB5 with ART® has won for Jataayu the ZDNet Asian Top Techno Visionary 2006 award.
Multi-mode adaptation
jB5 provides ART based, very usable, fit-to-display-width rendering which allows page viewing without horizontal scrolling at all. It also provides Natural mode rendering to see screens in a Virtual Desktop view. jB5 also has a Text Only mode which allows some very quick browsing without taking either the time or the bandwidth to download images, when they are not required by the user. ART provides full flexibility to add more rendering modes, as and when, device characteristics make them necessary
What’s special about ART®
ART –or Adaptive Rendering Technology, provides the most usable adaptation of web pages for mobile phones. ART provides the flexibility to select the rendering mechanism best suited for the variety of device capabilities in use today and provides for a continuous enhancement of adaptation algorithms. ART enables a new level of content presentation ultimately making it easier for users to access content and services than before.
Some Useful tools
Bookmark Imports
JB5 provides you the facility to import all your bookmarks/favorites from your Desktop PC using the Import Bookmark feature. This provides desktop users the power of getting all their favorites/bookmarks into their jB5 quickly.
Personalize Wizard
allows you to preserve values entered in form fields for future use. Thus pages containing form fields that need to be filled in frequently like login pages, query pages, etc, can be saved once and accessed without having to re-enter these fields again. Pages stored using Personalize Wizard will take you directly to the resulting page, thus bypassing the initial page where these fields would otherwise have to be entered.
Exclusive features of jB5 for Win Mobile 5.0
Home Screen Favorite
jB5 has a unique feature where you can move some of your really favorite links to the home screen. This creates a separate entry on the home screen with a specific icon if available. Clicking on this link will directly launch jB5 and fetch the page. A maximum of 3 links can be configured on the home screen.
WAP Push
jB5 supports WAP Push messages. Two types of push messages – SI (Service Indication) and SL (Service Loading) are currently supported. The push inbox is integrated with the messaging application as an independent account type. Thus on installation of jB5 you will see a new messaging component called WAP Push among other components such as SMS, Email and MMS in the application.
It is better than the previous version as there have been a few bug fixes and addition of a few good features.
Some of the features included on the Windows Mobile platform are SSL support, exit option, option to attach files, Selectable User Agent to represent jB5 as either a jB5 browser or a Mozilla browser, import bookmarks from Pocket IE, shortcut key to change the display mode and a text only mode.
Played with it a bit. The scrolling is not so hot.
When "pushing" the page around, you can either do horizontal or vertical - not both. That's somewhat annoying once you get used to Picsel (or Opera).
Also, the "Page down" feature of the scroll bar (tapping between the arrow to the thumb handle) does not work - it scrolls a single line only.
The only nice thing I have seen so far is that rendering is pretty darn fast when compared to my other 3 browsers..
It'll be updated to remove the bugs.
Hi mushipkw!
I like the browser - it has now moved to my second favourite browser. Opera mobile 8.65 is still my favourite because:
- tabbed view of open windows makes moving between windows really easy
- use of the "grab" to move the page around with the stylus is a very natural navigation tool. I might get used to the Auto-scroll function at some stage, but at the moment I like using my stylus.
- context sensitive menu. I like to be able to open a link in a new window by holding down the stylus on a link and then having appropriate options. Also, being able to get out of full screen mode via the context menus would also be good.
But I still prefer yours to Picsel, PIE, Minimo, ....
Mike
mushipkw said:
It'll be updated to remove the bugs.
Click to expand...
Click to collapse
Great to see it's, at last, updated further. The version I tested for my Smartphone Web Browing Bible ( http://forum.xda-developers.com/showthread.php?t=323651 ) was still pretty buggy and, back then, it seemed the project was put on a hold.
trying PPC version. Installation works but when I try to run it, I get:
The Device Locale you are using is not supported in this version. Please use English (United States) for running jB5
skrat64 said:
trying PPC version. Installation works but when I try to run it, I get:
The Device Locale you are using is not supported in this version. Please use English (United States) for running jB5
Click to expand...
Click to collapse
Which language are you using now in ur PPC
I am using Czech localized WM6. But I have never seen message like this.. and every other english speaking application is running perfectly. So?
Pretty nice. Tried it for about 2 minutes and every page that has a login screen, after entering my user/pass it wont let me click the "Login" button. Tried it on 3 different web pages and the same result each time.
skrat64 said:
I am using Czech localized WM6. But I have never seen message like this.. and every other english speaking application is running perfectly. So?
Click to expand...
Click to collapse
Maybe this app wil only work with English.
I made a greek translation of the program. The most have finnised, I will update the file when is ready.
Just unzip and put it in program's folder!

I've managed to enable copying text from Opera Mini on ALL mobile platforms!!

As has been pointed out in all of my articles dedicated to the excellent, lightweight browser Opera Mini, in addition to the lack of italic characters, probably the biggest problem with it has always been the lack of support for copying text from a Web page.
Now, this is fixed. While the way I've enabled copying is certainly inferior to the excellent copy capabilities of Teashark (see THIS), it's certainly working and, at last, enables anyone to copy anything out of any Web page, regardless of the platform you use. Yeah, it IS revolutionary.
How it works? Pretty easy: I've created a Web application that you need to pass the address (the URL) of the page you'd like to copy contents from. After entering (copying) the address, it presents you the contents of the page in a text area, which is already copy-enabled; that is, you can copy anything from them to your device's clipboard.
As mobile devices, in general, are only able to handle small(er) chunks of text in a text area, the dialog you're presented uses 2000-char-long chunks of text. You can easily switch between the block you're reading by just clicking the appropriate block link (0, 1, 2 etc.) There's also a way to force the application to display the entire page at once; note that, with pages over 10-15 kilochars, this may result in Opera Mini's slowing to crawl. That is, use it if you're absolutely sure your particular model / operating system lets for putting larger texts in an editable text area.
Now, let's see how this all works in practice.
1. add the Web page http://menneisyys.s156.eatj.com to your favorites in Opera Mini (the easiest way of doing this is reading this article in Opera Mini and clicking the link)
2. when you're on a(nother) page you'd like to copy something from, copy the address of the page you'd like to copy text from to the clipboard of your device. This needs to be done in the following way:
a. on Windows Mobile Pocket PC's (but not touchscreen-less Smartphones, where you need an additional app for copying):
a-1: press #1 (if your phone has a hardware dialpad) or go to Menu (left softkey) / Enter Address
a-2: If you haven’t disabled the new auto-completion address input field (the Auto-complete address input checkbox in Settings), press Down and go to Insert symbol… by pressing Up; and select it; you’ll be taken to the address input field of your Java environment. (You’re taken straight here if you disable the new, Opera Mini-specific address input field.)
a-3: select Menu (right softkey) / Current Address
a-4: As you can see, the address of the current page is displayed. Just copy it: highlight it entirely (under Jbed, to do this, click Shift, Ctrl and, finally, the left arrow on the on-screen keyboard) and press Ctrl-C on the virtual keyboard.
b. on Blackberry phones:
b-1: press #1 (if your phone has a hardware dialpad) or go to Menu / Enter Address
b-2: If you haven’t disabled the new auto-completion address input field (the Auto-complete address input checkbox in Settings), roll the trackball down, and, then, up, until you get to Insert symbol…. Now, you'll be taken to the address input field of your Java environment. (You’re taken straight here if you disable the new, Opera Mini-specific address input field.)
b-3: press the Shift button and roll the trackball down until the entire (current) address is selected
b-4: press Menu and select the (default) Copy.
b-5: to exit this dialog, press Back twice.
3. now that you've copied the address of the current page, switch to the previously (in bullet 1) stored page. When it loads, copy the URL of the previous page (the one you'd like to copy text from) to the "Enter the URL to convert" textfield. To do this, start editing the field and,
- on Blackberries, press the hardware Menu button and go down to Paste.
- on Windows Mobile devices, bring up the virtual keyboard and click Ctl, and, then, V
- on Symbian devices, long-press the Pen button until "Paste" is shown over the right softkey. Not releasing the Pen button, press the right softkey.
After some conversion, a new page is displayed, with a huge text area displaying the textual contents of the Web page. If the contents of the page is longer than 2000 characters, only the first 2000 is displayed (not to overburden the phone) and you can select the later ones by clicking 1, 2, ... n at the top of the page. You can also make the system display the entire content entirely, without cutting it in chunks, by clicking the "Click here to see the entire page!" link. Again, use this feature with caution - again, your phone may slow to a crawl, if the midlet manager's text area component is able to edit so huge blocks of text at all).
Finally, if you absolutely don't see anything and/or you'd like to see the entire markup of the page, click "Click this to switch to tag-enabled mode if you don't see anything".
After you've stepped into editing the text area displaying the (given chunk of) text, just look for the expression / URL etc. to copy to the clipboard. Once you've found it, highlight it and copy to the clipboard. This operation is supported on all the major smartphone operating systems and done in the same way as copying the address of the current page to the clipboard.
Hosting
Currently, the converter is hosted on a free JSP server that needs to be manually restarted every six hour (to force people to purchase a real Web package). That is, when you do check it out, it might not work at all. I will surely move it to another page / service provider if I don't find anyone else to voluntarily host it, depending on the price / conditions. (Currently, I don't really need a JSP/PHP-capable Webpage and, consequently, I've only subscribed to a static one for my database/picture/file back-end at http://www.winmobiletech.com/ ; this is why I can't currently host it myself.)
If you have the bandwidth and you'd like to help Opera Mini users, feel free to host the files yourself. If you have a JSP engine (Tomcat et al.), you'll find the web application (WAR) file HERE. If you only have a PHP or ASP engine, and don't want to struggle with porting the Java app into PHP or ASP, let me know and I convert it instead.
Source
The source of my converter is really-really small. The two, related files HERE and HERE, should you want to know how it works. The first is the main "landing" page you need to paste the URL to paste text from (it's a static HTML page as there is no need for any dynamic content in it); the second is the actual JSP page doing the work.
I've updated my eatj.com account: subscribed to a one-month plan (for $10). Now, the service should start working in 12 hours. There will be no pauses from now on. Feel free to use the service - and don't forget to provide me feedback on what you would welcome.
Also free to provide me with commonly visited pages (CNN etc.) that you think I could provide a more sophisticated engine - for example, only displaying article text and not displaying other stuff.
All in all, feel free to (publicly! NOT IN PRIVATE MESSAGES, they will all be ignored!) ask me to provide new functionality and/or site-based custom processing.
UPDATE:
In the meantime, based on public feedback (see selurus' and yitzy's requests on Wednesday, 3. June 2009, 18:13:35 and 23:30:15, respectively, at http://my.opera.com/community/forums/topic.dml?id=277592&t=1244154046 ), I've added the following two front-end pages:
http://menneisyys.s156.eatj.com/i2.html : if you paste the source page URL to this page, you'll be presented by all blocks in order. This way, you'll see (based on the text already visible in the beginning of each textarea) right away in which block you need to look. selurus reported it caused no slowdown on his handset; your mileage, on other handset models / operating systems may vary. That is, if you don't need this kind of breakup and/or it causes too much slowdown and you're sure you can find a given part of the text faster using the traditional links, use the first version instead. (Feedback is welcome!)
http://menneisyys.s156.eatj.com/i3.html : this displays UTF-8 pages properly (most oriental languages like Chinese / Japanese; Hebrew etc.). I've tested it with http://www.haaretz.co.il/hasite/spages/1090414.html (Hebrew) and http://fi.wikipedia.org/wiki/Romanit (Finnish; check out the letter "ž" in word gudžarati after "urdu, hindi, sanskrit ja"). NOTE: it's for UTF-8 source pages ONLY. Do not try to decode e.g. East-European languages using 8859-X with it. I plan to release a version compatible with these traditional, 8-bit encodings as well when I have the time so that charset setting becomes automatic.
As you can see, these front-ends 1. offer an alternative view (displaying the content of the entire page in multiple text areas, keeping in mind the text area editing limits) and 2. allow for copying from UTF-8-encoded pages.
------------------------------------------
Also in the Opera Mini Community forum, there's a nice tip posted by Yeswap: use "bookmarklets" to speed up invoking the converter. To do this, do the following:
1. from Opera Mini, go to http://o.yeswap.com/
2. click Tools or scroll down to Tools
3. click Copy Page Text
4. (seemingly) the same page reloads; NOW bookmark it as a standard bookmark (Menu / Tools / Add Bookmark or #7 if you have hardware buttons). However, don't save the bookmark yet - just open it for editing!
5. remove "http://o.yeswap.com/?" from the URL so that it becomes javascript:location.href='http://menneisyys.s156.eatj.com/om.jsp?q='+encodeURIComponent(location.href)+'&blocknr=0'
6. now, you can already save the edited bookmark.
7. you can quickly invoke the new bookmark: when you're on a Web page you'd like to copy to the contents to an editable text area (so that you can, later, copy text from), just go to your bookmarks (Menu / Bookmarks or, if you have hardware keys, #2) and click the just-added "Copy Page Text" entry. You'll be immediately taken to the target page - that is, no manual URL pasting is necessary any more! As you can see, this has really made all this very simple.
Note that you can safely change "om.jsp" to either "om2.jsp" or "om3.jsp" in the URL you bookmark (so that it becomes javascript:location.href='http://menneisyys.s156.eatj.com/om2.jsp?q='+encodeURIComponent(location.href)+'&blocknr=0' and javascript:location.href='http://menneisyys.s156.eatj.com/om3.jsp?q='+encodeURIComponent(location.href)+'&blocknr=0', respectively), should you want to have a direct link to the two new, alternative pages (display all the pages and use UTF-8) I've just added.
Also note that, strictly, you don't have to go to http://o.yeswap.com/ to add the bookmarklets. You can do the same by adding a new bookmark with the above contents (e.g., javascript:location.href='http://menneisyys.s156.eatj.com/om2.jsp?q='+encodeURIComponent(location.href)+'&blocknr=0' ). Also, you can name your bookmark anything - not strictly Copy Page Text.
I've implemented PDF support.
After a lengthy and careful evaluation of the current Java libraries used for PDF parsing, I've decided to choose Adobe's own one.
To use it,
1. navigate to http://menneisyys.s156.eatj.com/pdf.html and paste the URL to the PDF there.
2. if someone else has some seconds ago checked translated the document, you'll be presented its textual contents, in the usual multiple text areas (see http://menneisyys.s156.eatj.com/i2.html ) right away.
3. if it's the first time in the last few seconds that the document has been converted, you'll be dispatched to Adobe's page. After some 10-20-30 seconds of waiting, the conversion is finished and you'll be shown the textual version of the page.
4. NOW, just press Back until you get back to http://menneisyys.s156.eatj.com/pdf.html . Press the Submit button again. Now that it was just some seconds ago that you made Adobe convert your document, you'll be presented it, already in the text areas.
It's a bit convoluted but "hiding" the Adobe interface and make it even easier would have taken me too much time / effort.
Hope you'll like it
Thank you for all you useful information!

[Q] [IDEA] Am I the only one having the idea of this app?

Well, now that you have opened this thread, please have a look at what I want to say.
I am new to HTC Sensation and I have tried some apps which claim to add words from text file to Custom Dictionary. But there are some devices on which it does not work, and, unfortunately this does not work on Sensation either. So, I am having idea of an app which does the task in a new way:
All it should do is to 'read' words one by one from our given text file and then 'type' it in a text editor like New Message. But before it presses 'space', it should touch the first suggestion given above the keyboard. First suggestion is always the word that we originally type, no matter whether it is in dictionary or not. Touching it will add the word to dictionary. I believe that this is easier to apply as this is a manual method and does not require editing database file.
Second method (a bit more technical):
Open given text in a text editor like New Message or New Gmail email (gmail, because it also underlines words which are not in dictionary and supports big number of words). Then touch every word one by one. If a pop-up menu appears on a word then it must select the 'second-last' option. This is 'add to dictionary' button.
I am not a developer, if I were, I would have made this app myself. So I can only give theory.
If this can be applied, it can be useful for many users who use transliteration method to type in their languages.

[APP][3.0+] LectureNotes - help resources

There are several videos and instructions by LectureNotes' users concerning different aspects of the app (besides the searchable help page that comes with the app, select `Help´ in any of the main menus), so I thought that it might be helpful to collect links to them here in a single thread. Please feel invited to post additional ones!
Videos:
http://www.youtube.com/watch?v=U-c4DI2Tr5Y
http://www.youtube.com/watch?v=ZhW1Mwmmp-k
http://www.youtube.com/watch?v=39z4R_2DUj0
http://www.youtube.com/watch?v=F5KrP-ccwg0
http://www.youtube.com/watch?v=e_eDpWhu058
Instructions:
http://www.instructables.com/member/milessthomas/
There are separate threads with examples for custom paper pattern coded in JavaScript http://forum.xda-developers.com/showthread.php?t=1870639 and custom drawing tools coded in JavaScript http://forum.xda-developers.com/showthread.php?t=2610695.
There is a video by a German user:
http://www.youtube.com/watch?v=R8sM7uJkIJw
A short video how to combine audio and video stream produced by LectureVideos into a single MKV container file
http://www.youtube.com/watch?v=kTTc-2EtPAw
I havent figured out how to set custom page when creating a notebook. The presets are A4 and Letter, but what would be setting for A5 and B5 portrait on Note 1 (800 x 1280 I think)?
@nbog: What should be the difference between A4 and A5? Both formats have the same aspect ratio.
[emoji15]
Cutter non-standard clipboard
I was wondering if there was a way to set the nonstandard clip board to just hold a couple of .png files. I want to put circuit elements to use when doing circuit analysis so I don't have to keep drawing them.
@caffeinatedinsanity: The non-standard clipboard displays material from numerous sources, including recent imports, the standard Android clipboard and various non-standard clipboards, and content located in the `DCIM´, `Download´, and `Pictures´ directories. If you place your content in any of the latter directories (for instance in a subdirectory in the `Pictures´ directory), it will appear in the non-standard clipboard overview.
acadoid is best developer
Thank you so much for such quick and helpful responses. I was wondering if there was a way to move the menu so that it is on the left side of the screen instead of the top. That would just personally make it easier for me to use the different options with my off-hand so I can streamline my use of different features.
@caffeinatedinsanity: The so-called action bar is at the top in Android standard UI.
Would it be possible to
Would it be possible to set a default option for the fill function of the cutter? it seems like a small thing but would make the fill function much more useful and streamlined at least in my opinion because I only ever find myself using one so being able to set a default would make it much quicker.
I have a question about the extensions.
Does Lecturevideos only take a video recording of your screen? or could it be used with a webcam to record a professor's lecture and have that included in your notebook beside the notes? becasue i would love to get that be able to have a video along with my notes of the lecture.
@acadoid Is it possible to export a few pages to pdf from a notebook? Like I know I can do either the entire notebook or one page, but I can't seem to find a way to do it for a number of pages between 1 and the total number.
@caffeinatedinsanity: You can export a subset of pages to PDF by opening the notebook in notebook overview (either directly from the notebooks board by long-clicking on the notebook and selecting `Notebook overview´ in the popup menu, or by opening the notebook normally and selecting `Notebook overview´ in the main menu), click on the `tag´ icon to active tag mode, click on the pages to tag them, and select `Export tagged pages to PDF´ in the main menu.
Is there a way to save an item to the special clipboard permanently? like just pinning it there somehow? or even just being able to use an image as a drawing tool would work even better.
@caffeinatedinsanity: LectureNotes looks in several directories for content, including ‘Download’ and ‘Pictures’ (Android access restrictions apply).
Hi there! Is there any plan to port LN to ChromeOS? I'm a paid user of LN and I'm using LN on my Chromebook tablet (hp x2 11). However, the copy/paste is tedious without being able to copy/paste everything between ChromeOS apps like Google Keep. Thanks.
@testrider: I do not understand. What exactly is ‘tedious’? What did you do? What happened? Was there an error message?
@acadoid What I meant was, I could easily copy text & images from a web site and paste them into Keep when doing research. That's not easy or possible to do with LectureNotes. For ex, to transfer an image from a web page to LectureNotes I had to save the image as a file, then go to LectureNotes and import it. Many more steps than doing Ctrl-C, then Ctrl-V to Keep without having to save into a file.
@testrider: This is not LectureNotes' fault, images copied in Chrome for Android can be pasted in LectureNotes.
Text copied in Chrome for ChromeOS appears in Android's clipboard (as it should) and you can paste it in LectureNotes, while images copied in Chrome for ChromeOS do not (which is weird). I found this behavior on all Chromebooks that I tested. I doubt whether this is intentionally, it rather seems like a bug in Chrome for ChromeOS or ChromeOS itself.
Did something change recently because I can no longer import pdfs to my lectureNotes that section of the settings is greyed out.
Please help because this takes LectureNotes from my all in 1 solution for notes to basically useless for my class notes
@caffeinatedinsanity: Did you uninstall PDFView?
If PDFView is still installed, then Android probably put PDFView 'on ice'. Newer versions of Android put apps 'on ice' if they were not launched by the user for some time. Simply launch PDFView (it will display a dialog box), that will 'de-ice' PDFView.
Restart LectureNotes after (re)installing/'de-icing' PDFView, then the menu entries and the settings for PDF import will be accessible again.

Extract UI strings from firmware / device

Hi.
Before I start with my question, just a little background. I work in a user guide development firm, and mainly work on Galaxy devices.
One of the most time-consuming process in my work is to match all UI strings (app names, menu text, labels, etc) of the actual device with the user guide.
This is currently being done with human power, with a staff looking at the user guide, check the device if this is correct, and annotate the draft PDF if the UI strings don't match.
If this was for just one language, it's doable. But with 40 or so languages (including Arabic, Cyrillic, Chinese), it definitely makes me want to puke.
This is a very tiring, eye-straining work that I'm trying to resolve, for everyone's sake.
I tried decompressing the Galaxy firmware myself, but the XML data is encoded into binary(for what reason I have no idea), and is not readable.
So now I'm turning to the masters and hope for any luck.
What I would like to know is ...
Hack the Galaxy firmware(md5), and extract UI strings for all language and save in spreadsheet or something, or
Mirror the device's screen on the desktop, copy the desired UI string, and paste it to a desktop application(e.g. Adobe Acrobat).
If the first option is possible, then I can utilize the data for some sort of automation, and would be the best.
If the second option is possible, then I would no longer have to type all kinds of foreign characters(this is also a very time-consuming work), and make some progress in timeline.
If all options are not possible, and there's absolutely no way of automating this process, then well... I guess I'll go see the eye doctor more often than now.
Any ideas or helps would be great.
Thank you.

Categories

Resources